From 007d7b056b9ea14b1588c15a9f3505d556f0df1e Mon Sep 17 00:00:00 2001 From: Humanitec Builder Bot <44195688+HumanitecBot@users.noreply.github.com> Date: Thu, 5 Sep 2024 11:54:50 +0100 Subject: [PATCH] Update client (#75) Co-authored-by: johanneswuerbach <864578+johanneswuerbach@users.noreply.github.com> --- client/client.gen.go | 247 ++++++++++++++++++++++++++++++++++++++++++- docs/openapi.json | 219 +++++++++++++++++++++++++++++++++++++- 2 files changed, 459 insertions(+), 7 deletions(-) diff --git a/client/client.gen.go b/client/client.gen.go index 729b5c7..2b8fce8 100644 --- a/client/client.gen.go +++ b/client/client.gen.go @@ -21,6 +21,13 @@ import ( openapi_types "github.com/oapi-codegen/runtime/types" ) +// Defines values for ClusterConnectionCheckResultConditionStatus. +const ( + ClusterConnectionCheckResultConditionStatusFalse ClusterConnectionCheckResultConditionStatus = "False" + ClusterConnectionCheckResultConditionStatusTrue ClusterConnectionCheckResultConditionStatus = "True" + ClusterConnectionCheckResultConditionStatusUnknown ClusterConnectionCheckResultConditionStatus = "Unknown" +) + // Defines values for PipelineApprovalRequestStatus. const ( Approved PipelineApprovalRequestStatus = "approved" @@ -67,11 +74,11 @@ const ( // Defines values for RuntimeInfoStatusClass. const ( - Failure RuntimeInfoStatusClass = "Failure" - Stopped RuntimeInfoStatusClass = "Stopped" - Success RuntimeInfoStatusClass = "Success" - Unknown RuntimeInfoStatusClass = "Unknown" - Warning RuntimeInfoStatusClass = "Warning" + RuntimeInfoStatusClassFailure RuntimeInfoStatusClass = "Failure" + RuntimeInfoStatusClassStopped RuntimeInfoStatusClass = "Stopped" + RuntimeInfoStatusClassSuccess RuntimeInfoStatusClass = "Success" + RuntimeInfoStatusClassUnknown RuntimeInfoStatusClass = "Unknown" + RuntimeInfoStatusClassWarning RuntimeInfoStatusClass = "Warning" ) // Defines values for ScoreHumanitecExtensionsDeploySuccess. @@ -518,6 +525,72 @@ type CheckResourceAccountField struct { Value string `json:"value"` } +// ClusterConnectionCheckRequest Detailed needed to test a Kubernetes cluster connection +type ClusterConnectionCheckRequest struct { + // AppId The application Id to test + AppId string `json:"app_id"` + + // EnvId The environment Id to test + EnvId string `json:"env_id"` + + // EnvType The environment type to test + EnvType string `json:"env_type"` +} + +// ClusterConnectionCheckResourceSummary defines model for ClusterConnectionCheckResourceSummary. +type ClusterConnectionCheckResourceSummary struct { + // Class The resource class that was provisioned + Class string `json:"class"` + + // DefId The resource definition that was used to provision the resource + DefId string `json:"def_id"` + + // DefVersionId The resource definition version that was used to provision the resource + DefVersionId string `json:"def_version_id"` + + // DependsOn The list of globally unique resource identifiers that must be provisioned before this resource + DependsOn []string `json:"depends_on"` + + // DriverType The driver type used by the resource definition, some driver types cannot be checked. + DriverType string `json:"driver_type"` + + // GuResId The globally unique resource identifier for the resource + GuResId string `json:"gu_res_id"` + + // ResId The resource id that was provisioned + ResId string `json:"res_id"` + + // Type The resource type that was provisioned + Type string `json:"type"` +} + +// ClusterConnectionCheckResult The result of testing the Kubernetes cluster connection +type ClusterConnectionCheckResult struct { + // Conditions A list of success or failure conditions contributing to the result + Conditions []ClusterConnectionCheckResultCondition `json:"conditions"` + + // ResourceSummaries A list of resources provisioned for the test + ResourceSummaries []ClusterConnectionCheckResourceSummary `json:"resource_summaries"` + + // Success Whether the test completed successfully + Success bool `json:"success"` +} + +// ClusterConnectionCheckResultCondition A condition associated with a test result. The condition +type ClusterConnectionCheckResultCondition struct { + // Message A message explaining the cause of this condition. + Message string `json:"message"` + + // Status The status of the condition. True is the nominal value, False contributes to a failed result, Unknown is rare but indicates that a retry may be necessary or the condition could not be checked. + Status ClusterConnectionCheckResultConditionStatus `json:"status"` + + // Type The enum-name for the condition. + Type string `json:"type"` +} + +// ClusterConnectionCheckResultConditionStatus The status of the condition. True is the nominal value, False contributes to a failed result, Unknown is rare but indicates that a retry may be necessary or the condition could not be checked. +type ClusterConnectionCheckResultConditionStatus string + // ClusterSecretRequest ClusterSecret represents Kubernetes secret reference. type ClusterSecretRequest struct { // Namespace Namespace to look for the Kubernetes secret definition in. @@ -1526,6 +1599,9 @@ type PatchResourceDefinitionRequestRequest struct { // Name (Optional) Resource display name Name *string `json:"name,omitempty"` + // Proposed (Optional) If true, the new definition version should be created as "proposed" version (not active). + Proposed *bool `json:"proposed,omitempty"` + // Provision (Optional) A map where the keys are resType#resId (if resId is omitted, the same id of the current resource definition is used) of the resources that should be provisioned when the current resource is provisioned. This also specifies if the resources have a dependency on the current resource or if they have the same dependent resources. Provision *map[string]ProvisionDependenciesRequest `json:"provision,omitempty"` } @@ -2225,6 +2301,12 @@ type ResourceDefinitionVersion struct { // Action The action that generated the Resource Definition Version. Might be one of `created`, `updated` or `deleted`. Action string `json:"action"` + // Active Specifies if the version is active (i.e. is being used if target version is not specified for a resource or a context). + Active bool `json:"active"` + + // Archived Specifies if the version is archived (i.e. can't be used for a new resource). + Archived bool `json:"archived"` + // CreatedAt The timestamp of when this record has been created. CreatedAt time.Time `json:"created_at"` @@ -2252,6 +2334,9 @@ type ResourceDefinitionVersion struct { // OrgId The Organization ID. OrgId string `json:"org_id"` + // Proposed Specifies if the version is proposed (i.e. is newer than the active version). + Proposed bool `json:"proposed"` + // Provision (Optional) A map where the keys are resType#resId (if resId is omitted, the same id of the current resource definition is used) of the resources that should be provisioned when the current resource is provisioned. This also specifies if the resources have a dependency on the current resource. Provision map[string]ProvisionDependenciesResponse `json:"provision"` @@ -2680,6 +2765,9 @@ type UpdateResourceDefinitionRequestRequest struct { // Name The display name. Name string `json:"name"` + // Proposed (Optional) If true, the new definition version should be created as "proposed" version (not active). + Proposed *bool `json:"proposed,omitempty"` + // Provision (Optional) A map where the keys are resType#resId (if resId is omitted, the same id of the current resource definition is used) of the resources that should be provisioned when the current resource is provisioned. This also specifies if the resources have a dependency on the current resource or if they have the same dependent resources. Provision *map[string]ProvisionDependenciesRequest `json:"provision,omitempty"` } @@ -4124,6 +4212,9 @@ type CreateResourceClassJSONRequestBody = ResourceClassRequest // UpdateResourceClassJSONRequestBody defines body for UpdateResourceClass for application/json ContentType. type UpdateResourceClassJSONRequestBody = UpdateResourceClassRequest +// CheckClusterConnectivityJSONRequestBody defines body for CheckClusterConnectivity for application/json ContentType. +type CheckClusterConnectivityJSONRequestBody = ClusterConnectionCheckRequest + // PostOrgsOrgIdSecretstoresJSONRequestBody defines body for PostOrgsOrgIdSecretstores for application/json ContentType. type PostOrgsOrgIdSecretstoresJSONRequestBody = CreateSecretStorePayloadRequest @@ -5572,6 +5663,11 @@ type ClientInterface interface { UpdateResourceClass(ctx context.Context, orgId string, typeId string, classId string, body UpdateResourceClassJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // CheckClusterConnectivityWithBody request with any body + CheckClusterConnectivityWithBody(ctx context.Context, orgId OrgIdPathParam, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + CheckClusterConnectivity(ctx context.Context, orgId OrgIdPathParam, body CheckClusterConnectivityJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) + // GetOrgsOrgIdSecretstores request GetOrgsOrgIdSecretstores(ctx context.Context, orgId string, reqEditors ...RequestEditorFn) (*http.Response, error) @@ -8611,6 +8707,30 @@ func (c *Client) UpdateResourceClass(ctx context.Context, orgId string, typeId s return c.Client.Do(req) } +func (c *Client) CheckClusterConnectivityWithBody(ctx context.Context, orgId OrgIdPathParam, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCheckClusterConnectivityRequestWithBody(c.Server, orgId, contentType, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + +func (c *Client) CheckClusterConnectivity(ctx context.Context, orgId OrgIdPathParam, body CheckClusterConnectivityJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewCheckClusterConnectivityRequest(c.Server, orgId, body) + if err != nil { + return nil, err + } + req = req.WithContext(ctx) + if err := c.applyEditors(ctx, req, reqEditors); err != nil { + return nil, err + } + return c.Client.Do(req) +} + func (c *Client) GetOrgsOrgIdSecretstores(ctx context.Context, orgId string, reqEditors ...RequestEditorFn) (*http.Response, error) { req, err := NewGetOrgsOrgIdSecretstoresRequest(c.Server, orgId) if err != nil { @@ -19708,6 +19828,53 @@ func NewUpdateResourceClassRequestWithBody(server string, orgId string, typeId s return req, nil } +// NewCheckClusterConnectivityRequest calls the generic CheckClusterConnectivity builder with application/json body +func NewCheckClusterConnectivityRequest(server string, orgId OrgIdPathParam, body CheckClusterConnectivityJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewCheckClusterConnectivityRequestWithBody(server, orgId, "application/json", bodyReader) +} + +// NewCheckClusterConnectivityRequestWithBody generates requests for CheckClusterConnectivity with any type of body +func NewCheckClusterConnectivityRequestWithBody(server string, orgId OrgIdPathParam, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "orgId", runtime.ParamLocationPath, orgId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/orgs/%s/runtime/actions/check-connectivity", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + // NewGetOrgsOrgIdSecretstoresRequest generates requests for GetOrgsOrgIdSecretstores func NewGetOrgsOrgIdSecretstoresRequest(server string, orgId string) (*http.Request, error) { var err error @@ -21587,6 +21754,11 @@ type ClientWithResponsesInterface interface { UpdateResourceClassWithResponse(ctx context.Context, orgId string, typeId string, classId string, body UpdateResourceClassJSONRequestBody, reqEditors ...RequestEditorFn) (*UpdateResourceClassResponse, error) + // CheckClusterConnectivityWithBodyWithResponse request with any body + CheckClusterConnectivityWithBodyWithResponse(ctx context.Context, orgId OrgIdPathParam, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CheckClusterConnectivityResponse, error) + + CheckClusterConnectivityWithResponse(ctx context.Context, orgId OrgIdPathParam, body CheckClusterConnectivityJSONRequestBody, reqEditors ...RequestEditorFn) (*CheckClusterConnectivityResponse, error) + // GetOrgsOrgIdSecretstoresWithResponse request GetOrgsOrgIdSecretstoresWithResponse(ctx context.Context, orgId string, reqEditors ...RequestEditorFn) (*GetOrgsOrgIdSecretstoresResponse, error) @@ -25957,6 +26129,28 @@ func (r UpdateResourceClassResponse) StatusCode() int { return 0 } +type CheckClusterConnectivityResponse struct { + Body []byte + HTTPResponse *http.Response + JSON200 *ClusterConnectionCheckResult +} + +// Status returns HTTPResponse.Status +func (r CheckClusterConnectivityResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r CheckClusterConnectivityResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + type GetOrgsOrgIdSecretstoresResponse struct { Body []byte HTTPResponse *http.Response @@ -28656,6 +28850,23 @@ func (c *ClientWithResponses) UpdateResourceClassWithResponse(ctx context.Contex return ParseUpdateResourceClassResponse(rsp) } +// CheckClusterConnectivityWithBodyWithResponse request with arbitrary body returning *CheckClusterConnectivityResponse +func (c *ClientWithResponses) CheckClusterConnectivityWithBodyWithResponse(ctx context.Context, orgId OrgIdPathParam, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CheckClusterConnectivityResponse, error) { + rsp, err := c.CheckClusterConnectivityWithBody(ctx, orgId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCheckClusterConnectivityResponse(rsp) +} + +func (c *ClientWithResponses) CheckClusterConnectivityWithResponse(ctx context.Context, orgId OrgIdPathParam, body CheckClusterConnectivityJSONRequestBody, reqEditors ...RequestEditorFn) (*CheckClusterConnectivityResponse, error) { + rsp, err := c.CheckClusterConnectivity(ctx, orgId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseCheckClusterConnectivityResponse(rsp) +} + // GetOrgsOrgIdSecretstoresWithResponse request returning *GetOrgsOrgIdSecretstoresResponse func (c *ClientWithResponses) GetOrgsOrgIdSecretstoresWithResponse(ctx context.Context, orgId string, reqEditors ...RequestEditorFn) (*GetOrgsOrgIdSecretstoresResponse, error) { rsp, err := c.GetOrgsOrgIdSecretstores(ctx, orgId, reqEditors...) @@ -35586,6 +35797,32 @@ func ParseUpdateResourceClassResponse(rsp *http.Response) (*UpdateResourceClassR return response, nil } +// ParseCheckClusterConnectivityResponse parses an HTTP response from a CheckClusterConnectivityWithResponse call +func ParseCheckClusterConnectivityResponse(rsp *http.Response) (*CheckClusterConnectivityResponse, error) { + bodyBytes, err := io.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &CheckClusterConnectivityResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200: + var dest ClusterConnectionCheckResult + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSON200 = &dest + + } + + return response, nil +} + // ParseGetOrgsOrgIdSecretstoresResponse parses an HTTP response from a GetOrgsOrgIdSecretstoresWithResponse call func ParseGetOrgsOrgIdSecretstoresResponse(rsp *http.Response) (*GetOrgsOrgIdSecretstoresResponse, error) { bodyBytes, err := io.ReadAll(rsp.Body) diff --git a/docs/openapi.json b/docs/openapi.json index 95a3cc6..edde721 100644 --- a/docs/openapi.json +++ b/docs/openapi.json @@ -2,7 +2,7 @@ "openapi": "3.0.0", "info": { "title": "Humanitec API", - "version": "0.26.14", + "version": "0.26.16", "description": "# Introduction\nThe *Humanitec API* allows you to automate and integrate Humanitec into your developer and operational workflows.\nThe API is a REST based API. It is based around a set of concepts:\n\n* Core\n* External Resources\n* Sets and Deltas\n\n## Authentication\n\nAlmost all requests made to the Humanitec API require Authentication. See our [Developer Docs on API Authentication](https://developer.humanitec.com/platform-orchestrator/reference/api-references/#authentication) for instructions.\n\n## Content Types\nThe Humanitec API, unless explicitly specified, only accepts content types of `application/json` and will always return valid `application/json` or an empty response.\n\n## Response Codes\n### Success\nAny response code in the `2xx` range should be regarded as success.\n\n| **Code** | **Meaning** |\n|----------|-------------------------------------|\n| `200` | Success |\n| `201` | Success, a new resource was created |\n| `204` | Success, but no content in response |\n\n_Note: We plan to simplify the interface by replacing 201 with 200 status codes._\n\n### Failure\nAny response code in the `4xx` range should be regarded as an error that can be rectified by the client. `5xx` error codes indicate errors that cannot be corrected by the client.\n\n| **Code** | **Meaning** |\n|----------|-----------------------------------------------------------------------------------------------------------------------|\n| `400` | General error. (Body will contain details) |\n| `401` | Attempt to access protected resource without `Authorization` Header. |\n| `403` | The `Bearer` or `JWT` does not grant access to the requested resource. |\n| `404` | Resource not found. |\n| `405` | Method not allowed |\n| `409` | Conflict. Usually indicated a resource with that ID already exists. |\n| `422` | Unprocessable Entity. The body was not valid JSON, was empty or contained an object different from what was expected. |\n| `429` | Too many requests - request rate limit has been reached. |\n| `500` | Internal Error. If it occurs repeatedly, contact support. |\n", "contact": { "name": "Humanitec Support", @@ -8942,6 +8942,44 @@ } } }, + "/orgs/{orgId}/runtime/actions/check-connectivity": { + "post": { + "tags": [ + "public", + "RuntimeInfo" + ], + "operationId": "checkClusterConnectivity", + "summary": "Provision and check the cluster connectivity in an environment", + "parameters": [ + { + "$ref": "#/components/parameters/orgIdPathParam" + } + ], + "requestBody": { + "description": "Parameters required to start a cluster provisioning and connection check.", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClusterConnectionCheckRequest" + } + } + } + }, + "responses": { + "200": { + "description": "The cluster connectivity test returned a result", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClusterConnectionCheckResult" + } + } + } + } + } + } + }, "/orgs/{orgId}/secretstores": { "get": { "tags": [ @@ -13004,6 +13042,7 @@ "id": { "description": "The ID which refers to a specific application.", "pattern": "^[a-z0-9](?:-?[a-z0-9]+)+$", + "maxLength": 50, "type": "string" }, "name": { @@ -13363,6 +13402,7 @@ "id": { "description": "The ID the Environment is referenced as.", "pattern": "^[a-z0-9](?:-?[a-z0-9]+)+$", + "maxLength": 50, "type": "string" }, "name": { @@ -13422,6 +13462,7 @@ "id": { "description": "The ID the Environment is referenced as.", "pattern": "^[a-z0-9](?:-?[a-z0-9]+)+$", + "maxLength": 50, "type": "string" }, "name": { @@ -17445,6 +17486,10 @@ }, "description": "(Optional) A map where the keys are resType#resId (if resId is omitted, the same id of the current resource definition is used) of the resources that should be provisioned when the current resource is provisioned. This also specifies if the resources have a dependency on the current resource or if they have the same dependent resources.", "type": "object" + }, + "proposed": { + "description": "(Optional) If true, the new definition version should be created as \"proposed\" version (not active).", + "type": "boolean" } }, "type": "object" @@ -17735,7 +17780,10 @@ }, "created_at": "2020-05-23T12:32:16Z", "created_by": "a.user@example.com", - "action": "created" + "action": "created", + "archived": false, + "active": true, + "proposed": false }, "properties": { "id": { @@ -17781,6 +17829,18 @@ "type": "string", "description": "The action that generated the Resource Definition Version. Might be one of `created`, `updated` or `deleted`." }, + "archived": { + "type": "boolean", + "description": "Specifies if the version is archived (i.e. can't be used for a new resource)." + }, + "active": { + "type": "boolean", + "description": "Specifies if the version is active (i.e. is being used if target version is not specified for a resource or a context)." + }, + "proposed": { + "type": "boolean", + "description": "Specifies if the version is proposed (i.e. is newer than the active version)." + }, "created_at": { "description": "The timestamp of when this record has been created.", "example": "2020-06-22T09:37:23.523Z", @@ -17804,6 +17864,9 @@ "driver_inputs", "provision", "action", + "archived", + "active", + "proposed", "created_at", "created_by" ], @@ -18244,6 +18307,10 @@ }, "description": "(Optional) A map where the keys are resType#resId (if resId is omitted, the same id of the current resource definition is used) of the resources that should be provisioned when the current resource is provisioned. This also specifies if the resources have a dependency on the current resource or if they have the same dependent resources.", "type": "object" + }, + "proposed": { + "description": "(Optional) If true, the new definition version should be created as \"proposed\" version (not active).", + "type": "boolean" } }, "required": [ @@ -18756,6 +18823,154 @@ } } }, + "ClusterConnectionCheckRequest": { + "description": "Detailed needed to test a Kubernetes cluster connection", + "type": "object", + "required": [ + "app_id", + "env_id", + "env_type" + ], + "properties": { + "app_id": { + "description": "The application Id to test", + "type": "string", + "example": "sample-app" + }, + "env_id": { + "description": "The environment Id to test", + "type": "string", + "example": "sample-env" + }, + "env_type": { + "description": "The environment type to test", + "type": "string", + "example": "development" + } + } + }, + "ClusterConnectionCheckResult": { + "description": "The result of testing the Kubernetes cluster connection", + "type": "object", + "required": [ + "success", + "conditions", + "resource_summaries" + ], + "properties": { + "success": { + "description": "Whether the test completed successfully", + "type": "boolean", + "example": true + }, + "resource_summaries": { + "description": "A list of resources provisioned for the test", + "type": "array", + "items": { + "$ref": "#/components/schemas/ClusterConnectionCheckResourceSummary" + } + }, + "conditions": { + "description": "A list of success or failure conditions contributing to the result", + "type": "array", + "items": { + "$ref": "#/components/schemas/ClusterConnectionCheckResultCondition" + } + } + } + }, + "ClusterConnectionCheckResourceSummary": { + "type": "object", + "required": [ + "type", + "class", + "res_id", + "gu_res_id", + "def_id", + "def_version_id", + "driver_type", + "depends_on" + ], + "properties": { + "type": { + "description": "The resource type that was provisioned", + "type": "string", + "example": "k8s-cluster" + }, + "class": { + "description": "The resource class that was provisioned", + "type": "string", + "example": "default" + }, + "res_id": { + "description": "The resource id that was provisioned", + "type": "string", + "example": "k8s-cluster" + }, + "gu_res_id": { + "description": "The globally unique resource identifier for the resource", + "type": "string", + "example": "0123456789abcdef0123456789abcdef" + }, + "depends_on": { + "description": "The list of globally unique resource identifiers that must be provisioned before this resource", + "type": "array", + "items": { + "type": "string" + }, + "example": [ + "0123456789abcdef0123456789abcdee", + "0123456789abcdef0123456789abcded" + ] + }, + "def_id": { + "description": "The resource definition that was used to provision the resource", + "type": "string", + "example": "sample-definition" + }, + "def_version_id": { + "description": "The resource definition version that was used to provision the resource", + "type": "string", + "example": "01234567-89ab-cdef-0123-456789abcdef" + }, + "driver_type": { + "description": "The driver type used by the resource definition, some driver types cannot be checked.", + "type": "string", + "example": "humanitec/echo" + } + } + }, + "ClusterConnectionCheckResultCondition": { + "description": "A condition associated with a test result. The condition", + "type": "object", + "required": [ + "type", + "status", + "message" + ], + "properties": { + "type": { + "description": "The enum-name for the condition.", + "type": "string", + "example": "GraphCanProvision" + }, + "status": { + "description": "The status of the condition. True is the nominal value, False contributes to a failed result, Unknown is rare but indicates that a retry may be necessary or the condition could not be checked.", + "type": "string", + "enum": [ + "True", + "False", + "Unknown" + ], + "example": "True" + }, + "message": { + "description": "A message explaining the cause of this condition.", + "type": "string", + "example": "A sample message." + } + } + }, "AWSAuthRequest": { "description": "Credentials to authenticate AWS Secret Manager.", "properties": {