openapi: 3.2.0 info: description: 'The Config API provides standard HTTP/JSON REST endpoints for creating, reading, updating, deleting, and listing configurable Chronosphere resources. Use this link to download the raw Swagger specification: /api/v1/config/swagger.json' title: Config V1 Synthetic Test API version: v1 servers: - url: https://{tenant}.chronosphere.io variables: tenant: default: tenant description: tenant ID assigned by the service provider security: - ApiKeyAuth: [] tags: - name: SyntheticTest paths: /api/v1/config/synthetic-tests: get: operationId: ListSyntheticTests parameters: - description: 'Sets the preferred number of items to return per page. If set to `0`, the server will use its default value. Regardless of the value specified, clients must never assume how many items will be returned.' in: query name: page.max_size schema: format: int64 type: integer - description: 'An opaque page token that identifies which page the client should request. An empty value indicates the first page.' in: query name: page.token schema: type: string - description: Filters results by slug, where any SyntheticTest with a matching slug in the given list (and matches all other filters) will be returned. in: query name: slugs schema: items: type: string type: array - description: Filters results by name, where any SyntheticTest with a matching name in the given list (and matches all other filters) will be returned. in: query name: names schema: items: type: string type: array - description: Filters results by test_type, where any SyntheticTest with a matching test_type in the given list (and matches all other filters) will be returned. in: query name: test_types schema: items: enum: - HTTP - DNS - TCP - TLS type: string type: array - in: query name: statuses schema: items: enum: - ENABLED - PAUSED type: string type: array - description: Filter returned tests by the collections that own them. in: query name: collection_slugs schema: items: type: string type: array - description: Filter returned tests by the teams that own the collections they belong to. in: query name: team_slugs schema: items: type: string type: array responses: '200': content: application/json: schema: $ref: '#/components/schemas/configv1ListSyntheticTestsResponse' description: A successful response. '500': content: application/json: schema: $ref: '#/components/schemas/apiError' description: An unexpected error response. default: content: application/json: schema: $ref: '#/components/schemas/genericError' description: An undefined error response. tags: - SyntheticTest summary: List synthetic tests x-summary-source: derived post: operationId: CreateSyntheticTest requestBody: content: application/json: schema: $ref: '#/components/schemas/configv1CreateSyntheticTestRequest' required: true x-originalParamName: body responses: '200': content: application/json: schema: $ref: '#/components/schemas/configv1CreateSyntheticTestResponse' description: A successful response containing the created SyntheticTest. '400': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot create the SyntheticTest because the request is invalid. '409': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot create the SyntheticTest because there is a conflict with an existing SyntheticTest. '500': content: application/json: schema: $ref: '#/components/schemas/apiError' description: An unexpected error response. default: content: application/json: schema: $ref: '#/components/schemas/genericError' description: An undefined error response. tags: - SyntheticTest summary: Create synthetic test x-summary-source: derived /api/v1/config/synthetic-tests/{slug}: delete: operationId: DeleteSyntheticTest parameters: - in: path name: slug required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/configv1DeleteSyntheticTestResponse' description: A successful response. '400': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot delete the SyntheticTest because it is in use. '404': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot delete the SyntheticTest because the slug does not exist. '500': content: application/json: schema: $ref: '#/components/schemas/apiError' description: An unexpected error response. default: content: application/json: schema: $ref: '#/components/schemas/genericError' description: An undefined error response. tags: - SyntheticTest summary: Delete synthetic test x-summary-source: derived get: operationId: ReadSyntheticTest parameters: - in: path name: slug required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/configv1ReadSyntheticTestResponse' description: A successful response. '404': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot read the SyntheticTest because the slug does not exist. '500': content: application/json: schema: $ref: '#/components/schemas/apiError' description: An unexpected error response. default: content: application/json: schema: $ref: '#/components/schemas/genericError' description: An undefined error response. tags: - SyntheticTest summary: Read synthetic test x-summary-source: derived put: operationId: UpdateSyntheticTest parameters: - in: path name: slug required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/ConfigV1UpdateSyntheticTestBody' required: true x-originalParamName: body responses: '200': content: application/json: schema: $ref: '#/components/schemas/configv1UpdateSyntheticTestResponse' description: A successful response containing the updated SyntheticTest. '400': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot update the SyntheticTest because the request is invalid. '404': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot update the SyntheticTest because the slug does not exist. '409': content: application/json: schema: $ref: '#/components/schemas/apiError' description: Cannot update the SyntheticTest because there is a conflict with an existing SyntheticTest. '500': content: application/json: schema: $ref: '#/components/schemas/apiError' description: An unexpected error response. default: content: application/json: schema: $ref: '#/components/schemas/genericError' description: An undefined error response. tags: - SyntheticTest summary: Update synthetic test x-summary-source: derived components: schemas: SyntheticTestConnectionAssertion: description: 'Asserts on the outcome of the TCP connection attempt. Only the `EQUALS` operator is supported, for example a target of `ESTABLISHED`.' properties: operator: $ref: '#/components/schemas/SyntheticTestConnectionAssertionOperator' target: $ref: '#/components/schemas/ConnectionAssertionConnectionStatus' type: object SyntheticTestTlsTestConfig: properties: accept_self_signed: description: 'If `true`, a self-signed certificate passes verification. If `false`, a self-signed certificate fails the test. Default: `false`.' type: boolean assertions: description: 'Conditions the handshake and certificate must satisfy for the test to pass.' items: $ref: '#/components/schemas/SyntheticTestTlsTestConfigAssertion' type: array authentication: allOf: - $ref: '#/components/schemas/TlsTestConfigTlsAuth' description: Credentials presented during the handshake. fail_on_incomplete_chain: description: 'If `true`, a certificate chain that omits intermediates fails the test. If false, an incomplete chain passes. Default: `false`.' type: boolean host: description: Host the test connects to. example: api.example.com type: string port: description: Port the test connects to, from 1 to 65535. format: int64 type: integer server_name: description: 'Server Name Indication (SNI) value sent during the handshake. Default: the value of `host`.' type: string required: - host - port type: object SyntheticTestTestType: enum: - HTTP - DNS - TCP - TLS type: string BodyJSONSchemaAssertionSchemaDraft: enum: - DRAFT_06 - DRAFT_07 type: string SyntheticTestBodyJSONPathAssertionOperator: enum: - CONTAINS - NOT_CONTAINS - EQUALS - NOT_EQUALS - REGEX_EQUALS - REGEX_NOT_EQUALS - LESS_THAN - GREATER_THAN - IS_UNDEFINED type: string HttpTestConfigHeader: description: 'Single HTTP request header. Headers are sent in the order listed. Duplicate names are rejected, ignoring case.' properties: name: type: string value: type: string type: object SyntheticTestBodyHashAssertion: description: Asserts that a hash of the response body equals the target. properties: algorithm: $ref: '#/components/schemas/BodyHashAssertionAlgorithm' target: type: string type: object SyntheticTestHeaderAssertion: description: Asserts that the named response header satisfies the operator. properties: name: type: string operator: $ref: '#/components/schemas/SyntheticTestHeaderAssertionOperator' target: type: string type: object BodyJSONPathAssertionMatchType: enum: - FIRST_ELEMENT - EVERY_ELEMENT - AT_LEAST_ONE_ELEMENT - SERIALIZATION type: string TlsVersionAssertionVersion: enum: - TLS_1_0 - TLS_1_1 - TLS_1_2 - TLS_1_3 type: string SyntheticTestCertificatePropertyAssertion: description: 'Asserts on a named property of the leaf certificate, for example `subject`, `issuer`, or a Subject Alternative Name (SAN).' properties: operator: $ref: '#/components/schemas/SyntheticTestCertificatePropertyAssertionOperator' property: type: string target: type: string type: object configv1CollectionReferenceType: enum: - SIMPLE - SERVICE title: Type values must match entitiespb.Collection.CollectionType. type: string DnsRecordAssertionMatchScope: enum: - EVERY_AVAILABLE - AT_LEAST_ONE type: string SyntheticTestTcpTestConfig: properties: assertions: description: Conditions the connection must satisfy for the test to pass. items: $ref: '#/components/schemas/SyntheticTestTcpTestConfigAssertion' type: array host: description: Host the test connects to. example: db.example.com type: string port: description: Port the test connects to, from 1 to 65535. format: int64 type: integer required: - host - port type: object configv1OAuth2ClientCredentials: description: Configures the OAuth 2.0 client-credentials grant. properties: client_id: description: Client identifier issued to the test. type: string client_secret: description: Client secret issued to the test. type: string common: allOf: - $ref: '#/components/schemas/configv1OAuth2Common' description: Token-endpoint parameters for the grant. required: - client_id - client_secret - common type: object HttpTestConfigHttpMethod: enum: - GET - POST type: string SyntheticTestMonitorConfig: description: 'Alerting configuration for the test. An alert fires when at least `min_failing_locations` locations fail simultaneously within the `failing_duration_secs` window. Alerts resolve automatically, and there is no separate resolve duration.' properties: annotations: additionalProperties: type: string description: Annotations attached to the generated alert. type: object failing_duration_secs: description: 'Failure-duration window, in seconds. 0 alerts on the first failure. Any other value must be at least `interval_secs`.' format: int32 type: integer min_failing_locations: description: 'Peak number of locations failing simultaneously within the window that is required to fire an alert. Must be between 1 and the number of test locations.' format: int32 type: integer notification_policy_slug: description: Slug of the notification policy that routes the generated alert. type: string required: - failing_duration_secs - min_failing_locations - notification_policy_slug type: object HttpTestConfigContentType: description: 'Content type sent with the request, mapped to a `Content-Type` request header. Setting both this field and an explicit `Content-Type` header returns an error.' enum: - CONTENT_TYPE_APPLICATION_JSON - CONTENT_TYPE_APPLICATION_X_WWW_FORM_URLENCODED - CONTENT_TYPE_TEXT_PLAIN - CONTENT_TYPE_TEXT_XML - CONTENT_TYPE_TEXT_HTML - CONTENT_TYPE_MULTIPART_FORM_DATA - CONTENT_TYPE_APPLICATION_OCTET_STREAM - CONTENT_TYPE_GRAPHQL type: string SyntheticTestHttpTestConfigAssertion: description: 'Assertion types valid for HTTP tests. Set exactly one assertion field per entry.' properties: body_assertion: $ref: '#/components/schemas/SyntheticTestBodyAssertion' body_hash_assertion: $ref: '#/components/schemas/SyntheticTestBodyHashAssertion' body_json_path_assertion: $ref: '#/components/schemas/SyntheticTestBodyJSONPathAssertion' body_json_schema_assertion: $ref: '#/components/schemas/SyntheticTestBodyJSONSchemaAssertion' body_xpath_assertion: $ref: '#/components/schemas/SyntheticTestBodyXPathAssertion' header_assertion: $ref: '#/components/schemas/SyntheticTestHeaderAssertion' response_time_assertion: $ref: '#/components/schemas/SyntheticTestResponseTimeAssertion' status_code_assertion: $ref: '#/components/schemas/SyntheticTestStatusCodeAssertion' type: object TlsVersionAssertionBound: enum: - MAX - MIN type: string SyntheticTestDnsRecordAssertionOperator: enum: - CONTAINS - EQUALS - REGEX_EQUALS - REGEX_NOT_EQUALS type: string DnsRecordAssertionRecordType: enum: - A - AAAA - CNAME - MX - NS - TXT - SOA - SRV type: string SyntheticTestTestLocation: enum: - GCP_US_OREGON - GCP_US_VIRGINIA - GCP_BR_SAO_PAULO - GCP_SG_SINGAPORE - GCP_AU_SYDNEY - GCP_IN_MUMBAI - GCP_JP_TOKYO - GCP_GB_LONDON - GCP_DE_FRANKFURT - GCP_ZA_JOHANNESBURG - GCP_ID_JAKARTA - GCP_CA_MONTREAL - GCP_KR_SEOUL - GCP_IT_MILAN - GCP_QA_DOHA - GCP_JP_OSAKA - GCP_FR_PARIS type: string SyntheticTestHeaderAssertionOperator: enum: - CONTAINS - NOT_CONTAINS - EQUALS - NOT_EQUALS - REGEX_EQUALS - REGEX_NOT_EQUALS - NOT_EXISTS - LESS_THAN - LESS_THAN_OR_EQUAL - GREATER_THAN - GREATER_THAN_OR_EQUAL type: string SyntheticTestNetworkHopsAssertion: description: Asserts on the number of network hops to the target. properties: operator: $ref: '#/components/schemas/SyntheticTestNetworkHopsAssertionOperator' target: format: int32 type: integer type: object TlsTestConfigTlsAuth: description: Credentials presented during the TLS handshake. properties: client_certificate: $ref: '#/components/schemas/configv1ClientCertificate' type: object SyntheticTestResponseTimeAssertionOperator: enum: - LESS_THAN type: string SyntheticTestRetryConfig: description: 'Per-location retry behavior after a failed attempt. When unset, the test doesn''t retry.' properties: max_retries: description: 'Number of retries after the initial failed attempt, from 0 to 3. A value of `0` disables retries.' format: int32 type: integer retry_interval_ms: description: 'Delay between attempts, in milliseconds, up to 5000. Applies only when `max_retries` is set. Default: `300`.' format: int32 type: integer type: object BodyHashAssertionAlgorithm: enum: - MD5 - SHA1 - SHA256 type: string ResponseTimeAssertionScope: enum: - INCLUDING_DNS - WITHOUT_DNS type: string SyntheticTestStatusCodeAssertion: description: 'Asserts that the HTTP response status code matches the target. The `target` field accepts a literal code such as `200`, or a regular expression such as `2..` when the operator is `REGEX_EQUALS` or `REGEX_NOT_EQUALS`.' properties: operator: $ref: '#/components/schemas/SyntheticTestStatusCodeAssertionOperator' target: type: string type: object SyntheticTestTlsVersionAssertionOperator: enum: - EQUALS - LESS_THAN - LESS_THAN_OR_EQUAL - GREATER_THAN - GREATER_THAN_OR_EQUAL type: string SyntheticTestHttpTestConfig: properties: allow_insecure_tls: description: 'If `true`, the test skips TLS certificate verification for HTTPS requests. If `false`, an invalid certificate fails the test. Default: `false`.' type: boolean assertions: description: Conditions the response must satisfy for the test to pass. items: $ref: '#/components/schemas/SyntheticTestHttpTestConfigAssertion' type: array authentication: allOf: - $ref: '#/components/schemas/HttpTestConfigHttpAuth' description: Credentials presented with the request. content_type: allOf: - $ref: '#/components/schemas/HttpTestConfigContentType' description: Content type sent with the request. cookies: description: Cookies sent with the request. items: $ref: '#/components/schemas/HttpTestConfigCookie' type: array do_not_save_response_body_on_failure: description: 'If `true`, the response body captured on a failed execution isn''t stored. If `false`, the captured body is stored with the failed execution. Default: `false`.' type: boolean follow_redirects: description: 'If `true`, the test follows HTTP redirects up to `max_redirects`. If `false, the test doesn''t follow redirects. Default: `false`.' type: boolean headers: description: Headers sent with the request. items: $ref: '#/components/schemas/HttpTestConfigHeader' type: array http_version: allOf: - $ref: '#/components/schemas/HttpTestConfigHttpVersion' description: HTTP protocol version used for the request. max_redirects: description: 'Maximum number of redirects to follow, from 0 to 10. Applies only when `follow_redirects` is `true`. Default: `10`.' format: int32 type: integer max_response_body_bytes: description: 'Maximum size of the captured response body, in bytes, up to 51200. A value of `0` lets the probe apply its own capture limit.' format: int64 type: integer method: allOf: - $ref: '#/components/schemas/HttpTestConfigHttpMethod' description: HTTP method used for the request. Must be `GET` or `POST`. query_params: additionalProperties: type: string description: Query parameters appended to the URL. type: object request_body: description: Body sent with the request. format: byte type: string url: description: URL the test requests. example: https://api.example.com/health type: string required: - method - url type: object SyntheticTestCertificatePropertyAssertionOperator: enum: - CONTAINS - NOT_CONTAINS - EQUALS - NOT_EQUALS - REGEX_EQUALS - REGEX_NOT_EQUALS type: string SyntheticTestBodyJSONSchemaAssertion: description: Asserts that the JSON response body conforms to a JSON schema. properties: draft: $ref: '#/components/schemas/BodyJSONSchemaAssertionSchemaDraft' schema: type: string type: object SyntheticTestCertificateAssertion: description: Asserts on the leaf certificate's expiration window, in days. properties: operator: $ref: '#/components/schemas/SyntheticTestCertificateAssertionOperator' target_days: format: int32 type: integer type: object configv1UpdateSyntheticTestResponse: properties: synthetic_test: $ref: '#/components/schemas/configv1SyntheticTest' type: object SyntheticTestTlsTestConfigAssertion: description: 'Assertion types valid for TLS tests. Set exactly one assertion field per entry.' properties: cert_property_assertion: $ref: '#/components/schemas/SyntheticTestCertificatePropertyAssertion' certificate_assertion: $ref: '#/components/schemas/SyntheticTestCertificateAssertion' response_time_assertion: $ref: '#/components/schemas/SyntheticTestResponseTimeAssertion' tls_version_assertion: $ref: '#/components/schemas/SyntheticTestTlsVersionAssertion' type: object genericError: additionalProperties: true type: object SyntheticTestBodyXPathAssertionOperator: enum: - CONTAINS - NOT_CONTAINS - EQUALS - NOT_EQUALS - REGEX_EQUALS - REGEX_NOT_EQUALS - LESS_THAN - GREATER_THAN - IS_UNDEFINED type: string configv1PageResult: properties: next_token: description: 'An opaque page token that identifies the next page of items that the client should request. An empty value indicates that there are no more items to return.' type: string type: object configv1SyntheticTest: properties: collection: allOf: - $ref: '#/components/schemas/configv1CollectionReference' description: Collection that owns the test. Required if `collection_slug` isn't set. collection_slug: description: 'Slug of the collection that owns the test. Required if `collection` isn''t set.' type: string created_at: description: Timestamp of when the SyntheticTest was created. Cannot be set by clients. format: date-time readOnly: true type: string description: description: Description of what the test verifies. type: string dns_test: allOf: - $ref: '#/components/schemas/SyntheticTestDnsTestConfig' description: Configuration for a DNS test. Set only when `test_type` is `DNS`. http_test: allOf: - $ref: '#/components/schemas/SyntheticTestHttpTestConfig' description: Configuration for an HTTP test. Set only when `test_type` is `HTTP`. interval_secs: description: How often each location runs the test, in seconds. example: '60' format: int32 type: integer labels: additionalProperties: type: string description: Labels attached to the test, used to filter the synthetic test list. type: object locations: description: Probe locations that run the test. Specify at least one. items: $ref: '#/components/schemas/SyntheticTestTestLocation' type: array monitor_config: allOf: - $ref: '#/components/schemas/SyntheticTestMonitorConfig' description: 'Alerting configuration. Every synthetic test alerts through a managed monitor, so set this field on create and update.' name: description: The name of the SyntheticTest. You can modify this value after the SyntheticTest is created. type: string retry_config: allOf: - $ref: '#/components/schemas/SyntheticTestRetryConfig' description: 'Retry behavior after a failed attempt. When unset, the test doesn''t retry.' slug: description: The unique identifier of the SyntheticTest. If a `slug` isn't provided, one is generated based on the `name` field. You can't modify this field after the SyntheticTest is created. type: string status: allOf: - $ref: '#/components/schemas/SyntheticTestTestStatus' description: 'Whether the test runs on its schedule. `ENABLED` runs the test, and `PAUSED` stops execution without deleting the test.' tcp_test: allOf: - $ref: '#/components/schemas/SyntheticTestTcpTestConfig' description: Configuration for a TCP test. Set only when `test_type` is `TCP`. test_type: allOf: - $ref: '#/components/schemas/SyntheticTestTestType' description: 'Protocol the test exercises. Determines which of the `http_test`, `dns_test`, `tcp_test`, and `tls_test` configurations you must set.' timeout_secs: description: 'How long a single execution can run before it times out, in seconds, from 1 to 60. Default: `60`.' format: int32 type: integer tls_test: allOf: - $ref: '#/components/schemas/SyntheticTestTlsTestConfig' description: Configuration for a TLS test. Set only when `test_type` is `TLS`. updated_at: description: Timestamp of when the SyntheticTest was last updated. Cannot be set by clients. format: date-time readOnly: true type: string required: - interval_secs - locations - monitor_config - name - test_type type: object configv1CollectionReference: properties: slug: type: string type: $ref: '#/components/schemas/configv1CollectionReferenceType' type: object configv1ListSyntheticTestsResponse: properties: page: $ref: '#/components/schemas/configv1PageResult' synthetic_tests: items: $ref: '#/components/schemas/configv1SyntheticTest' type: array type: object SyntheticTestTlsVersionAssertion: description: 'Asserts on the negotiated TLS version. The `bound` field selects whether the assertion constrains the maximum or the minimum acceptable version.' properties: bound: $ref: '#/components/schemas/TlsVersionAssertionBound' operator: $ref: '#/components/schemas/SyntheticTestTlsVersionAssertionOperator' target: $ref: '#/components/schemas/TlsVersionAssertionVersion' type: object configv1OAuth2Common: description: OAuth 2.0 token-endpoint parameters shared by the OAuth 2.0 grant types. properties: access_token_url: description: URL of the token endpoint that issues the access token. example: https://auth.example.com/oauth2/token type: string audience: description: Intended recipient of the access token. type: string resource: description: Resource the access token grants access to. type: string scopes: description: Scopes requested with the access token. items: type: string type: array token_auth_method: $ref: '#/components/schemas/configv1OAuth2TokenAuthMethod' required: - access_token_url type: object configv1OAuth2ResourceOwnerPassword: description: 'Configures the OAuth 2.0 resource-owner password-credentials grant. Set `client_id` and `client_secret` when the token endpoint also authenticates the client.' properties: client_id: description: Client identifier issued to the test. type: string client_secret: description: Client secret issued to the test. type: string common: allOf: - $ref: '#/components/schemas/configv1OAuth2Common' description: Token-endpoint parameters for the grant. password: description: Password of the resource owner. type: string username: description: User name of the resource owner. type: string required: - common - password - username type: object configv1APITokenAuth: description: 'Configures static API-token authentication. Each request carries a `key: token` header. The whole token is treated as a secret.' properties: key: description: 'Name of the header that carries the token. Must be a valid HTTP header name.' example: Authorization type: string token: description: Full value of the header, including any scheme prefix. example: Bearer TOKEN type: string required: - key - token type: object SyntheticTestTcpTestConfigAssertion: description: 'Assertion types valid for TCP tests. Set exactly one assertion field per entry.' properties: connection_assertion: $ref: '#/components/schemas/SyntheticTestConnectionAssertion' network_hops_assertion: $ref: '#/components/schemas/SyntheticTestNetworkHopsAssertion' response_time_assertion: $ref: '#/components/schemas/SyntheticTestResponseTimeAssertion' type: object configv1CreateSyntheticTestRequest: properties: dry_run: description: If `true`, validates the specified configuration without creating the SyntheticTest. If the specified configuration is valid, the endpoint returns a partial response without the SyntheticTest. If the specified configuration is invalid, the endpoint returns an error. type: boolean synthetic_test: allOf: - $ref: '#/components/schemas/configv1SyntheticTest' description: The SyntheticTest to create. type: object SyntheticTestStatusCodeAssertionOperator: enum: - EQUALS - NOT_EQUALS - REGEX_EQUALS - REGEX_NOT_EQUALS type: string ConfigV1UpdateSyntheticTestBody: properties: create_if_missing: description: If `true`, the SyntheticTest will be created if it does not already exist, identified by `slug`. If `false`, an error will be returned if the SyntheticTest does not already exist. type: boolean dry_run: description: If `true`, validates the specified configuration without creating or updating the SyntheticTest. If the specified configuration is valid, the endpoint returns a partial response without the SyntheticTest. If the specified configuration is invalid, the endpoint returns an error. type: boolean synthetic_test: allOf: - $ref: '#/components/schemas/configv1SyntheticTest' description: The SyntheticTest to update. type: object SyntheticTestDnsTestConfig: properties: assertions: description: Conditions the response must satisfy for the test to pass. items: $ref: '#/components/schemas/SyntheticTestDnsTestConfigAssertion' type: array dns_server: description: 'Nameserver to query. When unset, the test uses the default resolver for the probe location.' type: string dns_server_port: description: 'Port of the nameserver in `dns_server`, from 1 to 65535. Required when `dns_server` is set, and rejected when it isn''t.' format: int64 type: integer domain: description: Domain the test resolves. example: api.example.com type: string required: - domain type: object HttpTestConfigHttpAuth: description: 'Authentication applied to the request. Set any combination of these methods. Each method you set must carry its own required fields.' properties: api_token_auth: $ref: '#/components/schemas/configv1APITokenAuth' basic_auth: $ref: '#/components/schemas/configv1BasicAuth' client_certificate: $ref: '#/components/schemas/configv1ClientCertificate' oauth2_client_credentials: $ref: '#/components/schemas/configv1OAuth2ClientCredentials' oauth2_resource_owner_password: $ref: '#/components/schemas/configv1OAuth2ResourceOwnerPassword' type: object SyntheticTestBodyJSONPathAssertion: description: 'Asserts that a value extracted with JSONPath matches the target. The `match_type` field controls how multiple matches are evaluated.' properties: json_path: type: string match_type: $ref: '#/components/schemas/BodyJSONPathAssertionMatchType' operator: $ref: '#/components/schemas/SyntheticTestBodyJSONPathAssertionOperator' target: type: string type: object HttpTestConfigHttpVersion: description: 'HTTP protocol version used for the request. When unset, the request negotiates HTTP/2 and falls back to HTTP/1.1.' enum: - HTTP_VERSION_HTTP_1_1 - HTTP_VERSION_HTTP_2 type: string SyntheticTestCertificateAssertionOperator: enum: - EXPIRES_IN_MORE_THAN_DAYS - EXPIRES_IN_LESS_THAN_DAYS type: string SyntheticTestDnsTestConfigAssertion: description: 'Assertion types valid for DNS tests. Set exactly one assertion field per entry.' properties: dns_record_assertion: $ref: '#/components/schemas/SyntheticTestDnsRecordAssertion' response_time_assertion: $ref: '#/components/schemas/SyntheticTestResponseTimeAssertion' type: object configv1DeleteSyntheticTestResponse: type: object configv1ReadSyntheticTestResponse: properties: synthetic_test: $ref: '#/components/schemas/configv1SyntheticTest' type: object SyntheticTestBodyAssertionOperator: enum: - CONTAINS - NOT_CONTAINS - EQUALS - NOT_EQUALS - REGEX_EQUALS - REGEX_NOT_EQUALS type: string SyntheticTestNetworkHopsAssertionOperator: enum: - EQUALS - LESS_THAN - LESS_THAN_OR_EQUAL - GREATER_THAN - GREATER_THAN_OR_EQUAL type: string configv1BasicAuth: description: HTTP basic authentication credentials used by a synthetic test. properties: password: description: Password sent with the request. type: string username: description: User name sent with the request. type: string required: - password - username type: object SyntheticTestConnectionAssertionOperator: enum: - EQUALS type: string configv1OAuth2TokenAuthMethod: description: 'Selects how client credentials are sent to the OAuth 2.0 token endpoint. When unset, credentials are sent in an HTTP basic authentication header, as described in RFC 6749 section 2.3.1.' enum: - OTAM_BASIC_AUTH_HEADER - OTAM_REQUEST_BODY type: string SyntheticTestBodyAssertion: description: Asserts that the raw response body matches the target string. properties: operator: $ref: '#/components/schemas/SyntheticTestBodyAssertionOperator' target: type: string type: object configv1ClientCertificate: description: Certificate presented during the TLS handshake for mutual TLS (mTLS). properties: certificate: description: PEM leaf certificate plus any intermediates. type: string private_key: description: 'Matching unencrypted PEM key, in PKCS#8, PKCS#1, or SEC1 format. This field is write-only: reads return `**REDACTED**`, and writing that sentinel value back preserves the stored key.' type: string required: - certificate - private_key type: object SyntheticTestBodyXPathAssertion: description: Asserts that a value extracted with XPath 1.0 matches the target. properties: operator: $ref: '#/components/schemas/SyntheticTestBodyXPathAssertionOperator' target: type: string xpath: type: string type: object apiError: properties: message: description: An error message describing what went wrong. type: string type: object SyntheticTestResponseTimeAssertion: description: 'Asserts that the request response time is below the target, in milliseconds. The `scope` field selects whether DNS resolution time is included, and doesn''t apply to DNS tests.' properties: operator: $ref: '#/components/schemas/SyntheticTestResponseTimeAssertionOperator' scope: $ref: '#/components/schemas/ResponseTimeAssertionScope' target_ms: format: int32 type: integer type: object SyntheticTestDnsRecordAssertion: description: 'Asserts on DNS records returned for the query. The `match_scope` field selects whether the operator must hold for every record of `record_type` or for at least one. The `SOA` and `SRV` record types are valid only with `AT_LEAST_ONE`.' properties: match_scope: $ref: '#/components/schemas/DnsRecordAssertionMatchScope' operator: $ref: '#/components/schemas/SyntheticTestDnsRecordAssertionOperator' record_type: $ref: '#/components/schemas/DnsRecordAssertionRecordType' target: type: string type: object configv1CreateSyntheticTestResponse: properties: synthetic_test: $ref: '#/components/schemas/configv1SyntheticTest' type: object SyntheticTestTestStatus: enum: - ENABLED - PAUSED type: string ConnectionAssertionConnectionStatus: enum: - ESTABLISHED - REFUSED - TIMEOUT type: string HttpTestConfigCookie: description: 'Single cookie sent with the request. All cookies are combined in order into one `Cookie` request header, such as `name=value; name2=value2`. Duplicate names are rejected. Unlike header names, cookie names are matched with case sensitivity. Setting cookies alongside an explicit `Cookie` header returns an error.' properties: name: type: string value: type: string type: object securitySchemes: ApiKeyAuth: description: Chronosphere API token in: header name: API-Token type: apiKey