404 Not Found


nginx
beegazpacho.com - GrazzMean
Uname: Linux in-mum-web1557.main-hosting.eu 5.14.0-611.42.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 24 05:30:20 EDT 2026 x86_64
Software: LiteSpeed
PHP version: 8.2.30 [ PHP INFO ] PHP os: Linux
Server Ip: 93.127.173.37
Your Ip: 216.73.216.168
User: u848900432 (848900432) | Group: o51372345 (1051372345)
Safe Mode: OFF
Disable Function:
NONE

name : api.go
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.

package ssmsap

import (
	"fmt"
	"time"

	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awsutil"
	"github.com/aws/aws-sdk-go/aws/request"
	"github.com/aws/aws-sdk-go/private/protocol"
	"github.com/aws/aws-sdk-go/private/protocol/restjson"
)

const opDeleteResourcePermission = "DeleteResourcePermission"

// DeleteResourcePermissionRequest generates a "aws/request.Request" representing the
// client's request for the DeleteResourcePermission operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeleteResourcePermission for more information on using the DeleteResourcePermission
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeleteResourcePermissionRequest method.
//	req, resp := client.DeleteResourcePermissionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/DeleteResourcePermission
func (c *SsmSap) DeleteResourcePermissionRequest(input *DeleteResourcePermissionInput) (req *request.Request, output *DeleteResourcePermissionOutput) {
	op := &request.Operation{
		Name:       opDeleteResourcePermission,
		HTTPMethod: "POST",
		HTTPPath:   "/delete-resource-permission",
	}

	if input == nil {
		input = &DeleteResourcePermissionInput{}
	}

	output = &DeleteResourcePermissionOutput{}
	req = c.newRequest(op, input, output)
	return
}

// DeleteResourcePermission API operation for AWS Systems Manager for SAP.
//
// Removes permissions associated with the target database.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation DeleteResourcePermission for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/DeleteResourcePermission
func (c *SsmSap) DeleteResourcePermission(input *DeleteResourcePermissionInput) (*DeleteResourcePermissionOutput, error) {
	req, out := c.DeleteResourcePermissionRequest(input)
	return out, req.Send()
}

// DeleteResourcePermissionWithContext is the same as DeleteResourcePermission with the addition of
// the ability to pass a context and additional request options.
//
// See DeleteResourcePermission for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) DeleteResourcePermissionWithContext(ctx aws.Context, input *DeleteResourcePermissionInput, opts ...request.Option) (*DeleteResourcePermissionOutput, error) {
	req, out := c.DeleteResourcePermissionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opDeregisterApplication = "DeregisterApplication"

// DeregisterApplicationRequest generates a "aws/request.Request" representing the
// client's request for the DeregisterApplication operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See DeregisterApplication for more information on using the DeregisterApplication
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the DeregisterApplicationRequest method.
//	req, resp := client.DeregisterApplicationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/DeregisterApplication
func (c *SsmSap) DeregisterApplicationRequest(input *DeregisterApplicationInput) (req *request.Request, output *DeregisterApplicationOutput) {
	op := &request.Operation{
		Name:       opDeregisterApplication,
		HTTPMethod: "POST",
		HTTPPath:   "/deregister-application",
	}

	if input == nil {
		input = &DeregisterApplicationInput{}
	}

	output = &DeregisterApplicationOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// DeregisterApplication API operation for AWS Systems Manager for SAP.
//
// Deregister an SAP application with AWS Systems Manager for SAP. This action
// does not affect the existing setup of your SAP workloads on Amazon EC2.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation DeregisterApplication for usage and error information.
//
// Returned Error Types:
//
//   - UnauthorizedException
//     The request is not authorized.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/DeregisterApplication
func (c *SsmSap) DeregisterApplication(input *DeregisterApplicationInput) (*DeregisterApplicationOutput, error) {
	req, out := c.DeregisterApplicationRequest(input)
	return out, req.Send()
}

// DeregisterApplicationWithContext is the same as DeregisterApplication with the addition of
// the ability to pass a context and additional request options.
//
// See DeregisterApplication for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) DeregisterApplicationWithContext(ctx aws.Context, input *DeregisterApplicationInput, opts ...request.Option) (*DeregisterApplicationOutput, error) {
	req, out := c.DeregisterApplicationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetApplication = "GetApplication"

// GetApplicationRequest generates a "aws/request.Request" representing the
// client's request for the GetApplication operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetApplication for more information on using the GetApplication
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetApplicationRequest method.
//	req, resp := client.GetApplicationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/GetApplication
func (c *SsmSap) GetApplicationRequest(input *GetApplicationInput) (req *request.Request, output *GetApplicationOutput) {
	op := &request.Operation{
		Name:       opGetApplication,
		HTTPMethod: "POST",
		HTTPPath:   "/get-application",
	}

	if input == nil {
		input = &GetApplicationInput{}
	}

	output = &GetApplicationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetApplication API operation for AWS Systems Manager for SAP.
//
// Gets an application registered with AWS Systems Manager for SAP. It also
// returns the components of the application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation GetApplication for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/GetApplication
func (c *SsmSap) GetApplication(input *GetApplicationInput) (*GetApplicationOutput, error) {
	req, out := c.GetApplicationRequest(input)
	return out, req.Send()
}

// GetApplicationWithContext is the same as GetApplication with the addition of
// the ability to pass a context and additional request options.
//
// See GetApplication for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) GetApplicationWithContext(ctx aws.Context, input *GetApplicationInput, opts ...request.Option) (*GetApplicationOutput, error) {
	req, out := c.GetApplicationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetComponent = "GetComponent"

// GetComponentRequest generates a "aws/request.Request" representing the
// client's request for the GetComponent operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetComponent for more information on using the GetComponent
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetComponentRequest method.
//	req, resp := client.GetComponentRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/GetComponent
func (c *SsmSap) GetComponentRequest(input *GetComponentInput) (req *request.Request, output *GetComponentOutput) {
	op := &request.Operation{
		Name:       opGetComponent,
		HTTPMethod: "POST",
		HTTPPath:   "/get-component",
	}

	if input == nil {
		input = &GetComponentInput{}
	}

	output = &GetComponentOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetComponent API operation for AWS Systems Manager for SAP.
//
// Gets the component of an application registered with AWS Systems Manager
// for SAP.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation GetComponent for usage and error information.
//
// Returned Error Types:
//
//   - UnauthorizedException
//     The request is not authorized.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/GetComponent
func (c *SsmSap) GetComponent(input *GetComponentInput) (*GetComponentOutput, error) {
	req, out := c.GetComponentRequest(input)
	return out, req.Send()
}

// GetComponentWithContext is the same as GetComponent with the addition of
// the ability to pass a context and additional request options.
//
// See GetComponent for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) GetComponentWithContext(ctx aws.Context, input *GetComponentInput, opts ...request.Option) (*GetComponentOutput, error) {
	req, out := c.GetComponentRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetDatabase = "GetDatabase"

// GetDatabaseRequest generates a "aws/request.Request" representing the
// client's request for the GetDatabase operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetDatabase for more information on using the GetDatabase
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetDatabaseRequest method.
//	req, resp := client.GetDatabaseRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/GetDatabase
func (c *SsmSap) GetDatabaseRequest(input *GetDatabaseInput) (req *request.Request, output *GetDatabaseOutput) {
	op := &request.Operation{
		Name:       opGetDatabase,
		HTTPMethod: "POST",
		HTTPPath:   "/get-database",
	}

	if input == nil {
		input = &GetDatabaseInput{}
	}

	output = &GetDatabaseOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetDatabase API operation for AWS Systems Manager for SAP.
//
// Gets the SAP HANA database of an application registered with AWS Systems
// Manager for SAP.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation GetDatabase for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/GetDatabase
func (c *SsmSap) GetDatabase(input *GetDatabaseInput) (*GetDatabaseOutput, error) {
	req, out := c.GetDatabaseRequest(input)
	return out, req.Send()
}

// GetDatabaseWithContext is the same as GetDatabase with the addition of
// the ability to pass a context and additional request options.
//
// See GetDatabase for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) GetDatabaseWithContext(ctx aws.Context, input *GetDatabaseInput, opts ...request.Option) (*GetDatabaseOutput, error) {
	req, out := c.GetDatabaseRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetOperation = "GetOperation"

// GetOperationRequest generates a "aws/request.Request" representing the
// client's request for the GetOperation operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetOperation for more information on using the GetOperation
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetOperationRequest method.
//	req, resp := client.GetOperationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/GetOperation
func (c *SsmSap) GetOperationRequest(input *GetOperationInput) (req *request.Request, output *GetOperationOutput) {
	op := &request.Operation{
		Name:       opGetOperation,
		HTTPMethod: "POST",
		HTTPPath:   "/get-operation",
	}

	if input == nil {
		input = &GetOperationInput{}
	}

	output = &GetOperationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetOperation API operation for AWS Systems Manager for SAP.
//
// Gets the details of an operation by specifying the operation ID.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation GetOperation for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/GetOperation
func (c *SsmSap) GetOperation(input *GetOperationInput) (*GetOperationOutput, error) {
	req, out := c.GetOperationRequest(input)
	return out, req.Send()
}

// GetOperationWithContext is the same as GetOperation with the addition of
// the ability to pass a context and additional request options.
//
// See GetOperation for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) GetOperationWithContext(ctx aws.Context, input *GetOperationInput, opts ...request.Option) (*GetOperationOutput, error) {
	req, out := c.GetOperationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opGetResourcePermission = "GetResourcePermission"

// GetResourcePermissionRequest generates a "aws/request.Request" representing the
// client's request for the GetResourcePermission operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See GetResourcePermission for more information on using the GetResourcePermission
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the GetResourcePermissionRequest method.
//	req, resp := client.GetResourcePermissionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/GetResourcePermission
func (c *SsmSap) GetResourcePermissionRequest(input *GetResourcePermissionInput) (req *request.Request, output *GetResourcePermissionOutput) {
	op := &request.Operation{
		Name:       opGetResourcePermission,
		HTTPMethod: "POST",
		HTTPPath:   "/get-resource-permission",
	}

	if input == nil {
		input = &GetResourcePermissionInput{}
	}

	output = &GetResourcePermissionOutput{}
	req = c.newRequest(op, input, output)
	return
}

// GetResourcePermission API operation for AWS Systems Manager for SAP.
//
// Gets permissions associated with the target database.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation GetResourcePermission for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/GetResourcePermission
func (c *SsmSap) GetResourcePermission(input *GetResourcePermissionInput) (*GetResourcePermissionOutput, error) {
	req, out := c.GetResourcePermissionRequest(input)
	return out, req.Send()
}

// GetResourcePermissionWithContext is the same as GetResourcePermission with the addition of
// the ability to pass a context and additional request options.
//
// See GetResourcePermission for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) GetResourcePermissionWithContext(ctx aws.Context, input *GetResourcePermissionInput, opts ...request.Option) (*GetResourcePermissionOutput, error) {
	req, out := c.GetResourcePermissionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opListApplications = "ListApplications"

// ListApplicationsRequest generates a "aws/request.Request" representing the
// client's request for the ListApplications operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListApplications for more information on using the ListApplications
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListApplicationsRequest method.
//	req, resp := client.ListApplicationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/ListApplications
func (c *SsmSap) ListApplicationsRequest(input *ListApplicationsInput) (req *request.Request, output *ListApplicationsOutput) {
	op := &request.Operation{
		Name:       opListApplications,
		HTTPMethod: "POST",
		HTTPPath:   "/list-applications",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListApplicationsInput{}
	}

	output = &ListApplicationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListApplications API operation for AWS Systems Manager for SAP.
//
// Lists all the applications registered with AWS Systems Manager for SAP.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation ListApplications for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/ListApplications
func (c *SsmSap) ListApplications(input *ListApplicationsInput) (*ListApplicationsOutput, error) {
	req, out := c.ListApplicationsRequest(input)
	return out, req.Send()
}

// ListApplicationsWithContext is the same as ListApplications with the addition of
// the ability to pass a context and additional request options.
//
// See ListApplications for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) ListApplicationsWithContext(ctx aws.Context, input *ListApplicationsInput, opts ...request.Option) (*ListApplicationsOutput, error) {
	req, out := c.ListApplicationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListApplicationsPages iterates over the pages of a ListApplications operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListApplications method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a ListApplications operation.
//	pageNum := 0
//	err := client.ListApplicationsPages(params,
//	    func(page *ssmsap.ListApplicationsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *SsmSap) ListApplicationsPages(input *ListApplicationsInput, fn func(*ListApplicationsOutput, bool) bool) error {
	return c.ListApplicationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListApplicationsPagesWithContext same as ListApplicationsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) ListApplicationsPagesWithContext(ctx aws.Context, input *ListApplicationsInput, fn func(*ListApplicationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListApplicationsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListApplicationsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*ListApplicationsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opListComponents = "ListComponents"

// ListComponentsRequest generates a "aws/request.Request" representing the
// client's request for the ListComponents operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListComponents for more information on using the ListComponents
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListComponentsRequest method.
//	req, resp := client.ListComponentsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/ListComponents
func (c *SsmSap) ListComponentsRequest(input *ListComponentsInput) (req *request.Request, output *ListComponentsOutput) {
	op := &request.Operation{
		Name:       opListComponents,
		HTTPMethod: "POST",
		HTTPPath:   "/list-components",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListComponentsInput{}
	}

	output = &ListComponentsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListComponents API operation for AWS Systems Manager for SAP.
//
// Lists all the components registered with AWS Systems Manager for SAP.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation ListComponents for usage and error information.
//
// Returned Error Types:
//
//   - UnauthorizedException
//     The request is not authorized.
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/ListComponents
func (c *SsmSap) ListComponents(input *ListComponentsInput) (*ListComponentsOutput, error) {
	req, out := c.ListComponentsRequest(input)
	return out, req.Send()
}

// ListComponentsWithContext is the same as ListComponents with the addition of
// the ability to pass a context and additional request options.
//
// See ListComponents for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) ListComponentsWithContext(ctx aws.Context, input *ListComponentsInput, opts ...request.Option) (*ListComponentsOutput, error) {
	req, out := c.ListComponentsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListComponentsPages iterates over the pages of a ListComponents operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListComponents method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a ListComponents operation.
//	pageNum := 0
//	err := client.ListComponentsPages(params,
//	    func(page *ssmsap.ListComponentsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *SsmSap) ListComponentsPages(input *ListComponentsInput, fn func(*ListComponentsOutput, bool) bool) error {
	return c.ListComponentsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListComponentsPagesWithContext same as ListComponentsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) ListComponentsPagesWithContext(ctx aws.Context, input *ListComponentsInput, fn func(*ListComponentsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListComponentsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListComponentsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*ListComponentsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opListDatabases = "ListDatabases"

// ListDatabasesRequest generates a "aws/request.Request" representing the
// client's request for the ListDatabases operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListDatabases for more information on using the ListDatabases
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListDatabasesRequest method.
//	req, resp := client.ListDatabasesRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/ListDatabases
func (c *SsmSap) ListDatabasesRequest(input *ListDatabasesInput) (req *request.Request, output *ListDatabasesOutput) {
	op := &request.Operation{
		Name:       opListDatabases,
		HTTPMethod: "POST",
		HTTPPath:   "/list-databases",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListDatabasesInput{}
	}

	output = &ListDatabasesOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListDatabases API operation for AWS Systems Manager for SAP.
//
// Lists the SAP HANA databases of an application registered with AWS Systems
// Manager for SAP.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation ListDatabases for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/ListDatabases
func (c *SsmSap) ListDatabases(input *ListDatabasesInput) (*ListDatabasesOutput, error) {
	req, out := c.ListDatabasesRequest(input)
	return out, req.Send()
}

// ListDatabasesWithContext is the same as ListDatabases with the addition of
// the ability to pass a context and additional request options.
//
// See ListDatabases for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) ListDatabasesWithContext(ctx aws.Context, input *ListDatabasesInput, opts ...request.Option) (*ListDatabasesOutput, error) {
	req, out := c.ListDatabasesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListDatabasesPages iterates over the pages of a ListDatabases operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListDatabases method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a ListDatabases operation.
//	pageNum := 0
//	err := client.ListDatabasesPages(params,
//	    func(page *ssmsap.ListDatabasesOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *SsmSap) ListDatabasesPages(input *ListDatabasesInput, fn func(*ListDatabasesOutput, bool) bool) error {
	return c.ListDatabasesPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListDatabasesPagesWithContext same as ListDatabasesPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) ListDatabasesPagesWithContext(ctx aws.Context, input *ListDatabasesInput, fn func(*ListDatabasesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListDatabasesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListDatabasesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*ListDatabasesOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opListOperations = "ListOperations"

// ListOperationsRequest generates a "aws/request.Request" representing the
// client's request for the ListOperations operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListOperations for more information on using the ListOperations
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListOperationsRequest method.
//	req, resp := client.ListOperationsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/ListOperations
func (c *SsmSap) ListOperationsRequest(input *ListOperationsInput) (req *request.Request, output *ListOperationsOutput) {
	op := &request.Operation{
		Name:       opListOperations,
		HTTPMethod: "POST",
		HTTPPath:   "/list-operations",
		Paginator: &request.Paginator{
			InputTokens:     []string{"NextToken"},
			OutputTokens:    []string{"NextToken"},
			LimitToken:      "MaxResults",
			TruncationToken: "",
		},
	}

	if input == nil {
		input = &ListOperationsInput{}
	}

	output = &ListOperationsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListOperations API operation for AWS Systems Manager for SAP.
//
// Lists the operations performed by AWS Systems Manager for SAP.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation ListOperations for usage and error information.
//
// Returned Error Types:
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/ListOperations
func (c *SsmSap) ListOperations(input *ListOperationsInput) (*ListOperationsOutput, error) {
	req, out := c.ListOperationsRequest(input)
	return out, req.Send()
}

// ListOperationsWithContext is the same as ListOperations with the addition of
// the ability to pass a context and additional request options.
//
// See ListOperations for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) ListOperationsWithContext(ctx aws.Context, input *ListOperationsInput, opts ...request.Option) (*ListOperationsOutput, error) {
	req, out := c.ListOperationsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// ListOperationsPages iterates over the pages of a ListOperations operation,
// calling the "fn" function with the response data for each page. To stop
// iterating, return false from the fn function.
//
// See ListOperations method for more information on how to use this operation.
//
// Note: This operation can generate multiple requests to a service.
//
//	// Example iterating over at most 3 pages of a ListOperations operation.
//	pageNum := 0
//	err := client.ListOperationsPages(params,
//	    func(page *ssmsap.ListOperationsOutput, lastPage bool) bool {
//	        pageNum++
//	        fmt.Println(page)
//	        return pageNum <= 3
//	    })
func (c *SsmSap) ListOperationsPages(input *ListOperationsInput, fn func(*ListOperationsOutput, bool) bool) error {
	return c.ListOperationsPagesWithContext(aws.BackgroundContext(), input, fn)
}

// ListOperationsPagesWithContext same as ListOperationsPages except
// it takes a Context and allows setting request options on the pages.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) ListOperationsPagesWithContext(ctx aws.Context, input *ListOperationsInput, fn func(*ListOperationsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListOperationsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListOperationsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}

	for p.Next() {
		if !fn(p.Page().(*ListOperationsOutput), !p.HasNextPage()) {
			break
		}
	}

	return p.Err()
}

const opListTagsForResource = "ListTagsForResource"

// ListTagsForResourceRequest generates a "aws/request.Request" representing the
// client's request for the ListTagsForResource operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See ListTagsForResource for more information on using the ListTagsForResource
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the ListTagsForResourceRequest method.
//	req, resp := client.ListTagsForResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/ListTagsForResource
func (c *SsmSap) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
	op := &request.Operation{
		Name:       opListTagsForResource,
		HTTPMethod: "GET",
		HTTPPath:   "/tags/{resourceArn}",
	}

	if input == nil {
		input = &ListTagsForResourceInput{}
	}

	output = &ListTagsForResourceOutput{}
	req = c.newRequest(op, input, output)
	return
}

// ListTagsForResource API operation for AWS Systems Manager for SAP.
//
// Lists all tags on an SAP HANA application and/or database registered with
// AWS Systems Manager for SAP.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation ListTagsForResource for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - ConflictException
//     A conflict has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/ListTagsForResource
func (c *SsmSap) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
	req, out := c.ListTagsForResourceRequest(input)
	return out, req.Send()
}

// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
// the ability to pass a context and additional request options.
//
// See ListTagsForResource for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
	req, out := c.ListTagsForResourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opPutResourcePermission = "PutResourcePermission"

// PutResourcePermissionRequest generates a "aws/request.Request" representing the
// client's request for the PutResourcePermission operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See PutResourcePermission for more information on using the PutResourcePermission
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the PutResourcePermissionRequest method.
//	req, resp := client.PutResourcePermissionRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/PutResourcePermission
func (c *SsmSap) PutResourcePermissionRequest(input *PutResourcePermissionInput) (req *request.Request, output *PutResourcePermissionOutput) {
	op := &request.Operation{
		Name:       opPutResourcePermission,
		HTTPMethod: "POST",
		HTTPPath:   "/put-resource-permission",
	}

	if input == nil {
		input = &PutResourcePermissionInput{}
	}

	output = &PutResourcePermissionOutput{}
	req = c.newRequest(op, input, output)
	return
}

// PutResourcePermission API operation for AWS Systems Manager for SAP.
//
// Adds permissions to the target database.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation PutResourcePermission for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/PutResourcePermission
func (c *SsmSap) PutResourcePermission(input *PutResourcePermissionInput) (*PutResourcePermissionOutput, error) {
	req, out := c.PutResourcePermissionRequest(input)
	return out, req.Send()
}

// PutResourcePermissionWithContext is the same as PutResourcePermission with the addition of
// the ability to pass a context and additional request options.
//
// See PutResourcePermission for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) PutResourcePermissionWithContext(ctx aws.Context, input *PutResourcePermissionInput, opts ...request.Option) (*PutResourcePermissionOutput, error) {
	req, out := c.PutResourcePermissionRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opRegisterApplication = "RegisterApplication"

// RegisterApplicationRequest generates a "aws/request.Request" representing the
// client's request for the RegisterApplication operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See RegisterApplication for more information on using the RegisterApplication
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the RegisterApplicationRequest method.
//	req, resp := client.RegisterApplicationRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/RegisterApplication
func (c *SsmSap) RegisterApplicationRequest(input *RegisterApplicationInput) (req *request.Request, output *RegisterApplicationOutput) {
	op := &request.Operation{
		Name:       opRegisterApplication,
		HTTPMethod: "POST",
		HTTPPath:   "/register-application",
	}

	if input == nil {
		input = &RegisterApplicationInput{}
	}

	output = &RegisterApplicationOutput{}
	req = c.newRequest(op, input, output)
	return
}

// RegisterApplication API operation for AWS Systems Manager for SAP.
//
// Register an SAP application with AWS Systems Manager for SAP. You must meet
// the following requirements before registering.
//
// The SAP application you want to register with AWS Systems Manager for SAP
// is running on Amazon EC2.
//
// AWS Systems Manager Agent must be setup on an Amazon EC2 instance along with
// the required IAM permissions.
//
// Amazon EC2 instance(s) must have access to the secrets created in AWS Secrets
// Manager to manage SAP applications and components.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation RegisterApplication for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - ConflictException
//     A conflict has occurred.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/RegisterApplication
func (c *SsmSap) RegisterApplication(input *RegisterApplicationInput) (*RegisterApplicationOutput, error) {
	req, out := c.RegisterApplicationRequest(input)
	return out, req.Send()
}

// RegisterApplicationWithContext is the same as RegisterApplication with the addition of
// the ability to pass a context and additional request options.
//
// See RegisterApplication for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) RegisterApplicationWithContext(ctx aws.Context, input *RegisterApplicationInput, opts ...request.Option) (*RegisterApplicationOutput, error) {
	req, out := c.RegisterApplicationRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opStartApplicationRefresh = "StartApplicationRefresh"

// StartApplicationRefreshRequest generates a "aws/request.Request" representing the
// client's request for the StartApplicationRefresh operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See StartApplicationRefresh for more information on using the StartApplicationRefresh
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the StartApplicationRefreshRequest method.
//	req, resp := client.StartApplicationRefreshRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/StartApplicationRefresh
func (c *SsmSap) StartApplicationRefreshRequest(input *StartApplicationRefreshInput) (req *request.Request, output *StartApplicationRefreshOutput) {
	op := &request.Operation{
		Name:       opStartApplicationRefresh,
		HTTPMethod: "POST",
		HTTPPath:   "/start-application-refresh",
	}

	if input == nil {
		input = &StartApplicationRefreshInput{}
	}

	output = &StartApplicationRefreshOutput{}
	req = c.newRequest(op, input, output)
	return
}

// StartApplicationRefresh API operation for AWS Systems Manager for SAP.
//
// Refreshes a registered application.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation StartApplicationRefresh for usage and error information.
//
// Returned Error Types:
//
//   - UnauthorizedException
//     The request is not authorized.
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - ConflictException
//     A conflict has occurred.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/StartApplicationRefresh
func (c *SsmSap) StartApplicationRefresh(input *StartApplicationRefreshInput) (*StartApplicationRefreshOutput, error) {
	req, out := c.StartApplicationRefreshRequest(input)
	return out, req.Send()
}

// StartApplicationRefreshWithContext is the same as StartApplicationRefresh with the addition of
// the ability to pass a context and additional request options.
//
// See StartApplicationRefresh for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) StartApplicationRefreshWithContext(ctx aws.Context, input *StartApplicationRefreshInput, opts ...request.Option) (*StartApplicationRefreshOutput, error) {
	req, out := c.StartApplicationRefreshRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opTagResource = "TagResource"

// TagResourceRequest generates a "aws/request.Request" representing the
// client's request for the TagResource operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See TagResource for more information on using the TagResource
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the TagResourceRequest method.
//	req, resp := client.TagResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/TagResource
func (c *SsmSap) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
	op := &request.Operation{
		Name:       opTagResource,
		HTTPMethod: "POST",
		HTTPPath:   "/tags/{resourceArn}",
	}

	if input == nil {
		input = &TagResourceInput{}
	}

	output = &TagResourceOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// TagResource API operation for AWS Systems Manager for SAP.
//
// Creates tag for a resource by specifying the ARN.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation TagResource for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - ConflictException
//     A conflict has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/TagResource
func (c *SsmSap) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
	req, out := c.TagResourceRequest(input)
	return out, req.Send()
}

// TagResourceWithContext is the same as TagResource with the addition of
// the ability to pass a context and additional request options.
//
// See TagResource for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
	req, out := c.TagResourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUntagResource = "UntagResource"

// UntagResourceRequest generates a "aws/request.Request" representing the
// client's request for the UntagResource operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UntagResource for more information on using the UntagResource
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UntagResourceRequest method.
//	req, resp := client.UntagResourceRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/UntagResource
func (c *SsmSap) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
	op := &request.Operation{
		Name:       opUntagResource,
		HTTPMethod: "DELETE",
		HTTPPath:   "/tags/{resourceArn}",
	}

	if input == nil {
		input = &UntagResourceInput{}
	}

	output = &UntagResourceOutput{}
	req = c.newRequest(op, input, output)
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}

// UntagResource API operation for AWS Systems Manager for SAP.
//
// Delete the tags for a resource.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation UntagResource for usage and error information.
//
// Returned Error Types:
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - ConflictException
//     A conflict has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/UntagResource
func (c *SsmSap) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
	req, out := c.UntagResourceRequest(input)
	return out, req.Send()
}

// UntagResourceWithContext is the same as UntagResource with the addition of
// the ability to pass a context and additional request options.
//
// See UntagResource for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
	req, out := c.UntagResourceRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

const opUpdateApplicationSettings = "UpdateApplicationSettings"

// UpdateApplicationSettingsRequest generates a "aws/request.Request" representing the
// client's request for the UpdateApplicationSettings operation. The "output" return
// value will be populated with the request's response once the request completes
// successfully.
//
// Use "Send" method on the returned Request to send the API call to the service.
// the "output" return value is not valid until after Send returns without error.
//
// See UpdateApplicationSettings for more information on using the UpdateApplicationSettings
// API call, and error handling.
//
// This method is useful when you want to inject custom logic or configuration
// into the SDK's request lifecycle. Such as custom headers, or retry logic.
//
//	// Example sending a request using the UpdateApplicationSettingsRequest method.
//	req, resp := client.UpdateApplicationSettingsRequest(params)
//
//	err := req.Send()
//	if err == nil { // resp is now filled
//	    fmt.Println(resp)
//	}
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/UpdateApplicationSettings
func (c *SsmSap) UpdateApplicationSettingsRequest(input *UpdateApplicationSettingsInput) (req *request.Request, output *UpdateApplicationSettingsOutput) {
	op := &request.Operation{
		Name:       opUpdateApplicationSettings,
		HTTPMethod: "POST",
		HTTPPath:   "/update-application-settings",
	}

	if input == nil {
		input = &UpdateApplicationSettingsInput{}
	}

	output = &UpdateApplicationSettingsOutput{}
	req = c.newRequest(op, input, output)
	return
}

// UpdateApplicationSettings API operation for AWS Systems Manager for SAP.
//
// Updates the settings of an application registered with AWS Systems Manager
// for SAP.
//
// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
// with awserr.Error's Code and Message methods to get detailed information about
// the error.
//
// See the AWS API reference guide for AWS Systems Manager for SAP's
// API operation UpdateApplicationSettings for usage and error information.
//
// Returned Error Types:
//
//   - UnauthorizedException
//     The request is not authorized.
//
//   - ResourceNotFoundException
//     The resource is not available.
//
//   - ValidationException
//     The input fails to satisfy the constraints specified by an AWS service.
//
//   - ConflictException
//     A conflict has occurred.
//
//   - InternalServerException
//     An internal error has occurred.
//
// See also, https://docs.aws.amazon.com/goto/WebAPI/ssm-sap-2018-05-10/UpdateApplicationSettings
func (c *SsmSap) UpdateApplicationSettings(input *UpdateApplicationSettingsInput) (*UpdateApplicationSettingsOutput, error) {
	req, out := c.UpdateApplicationSettingsRequest(input)
	return out, req.Send()
}

// UpdateApplicationSettingsWithContext is the same as UpdateApplicationSettings with the addition of
// the ability to pass a context and additional request options.
//
// See UpdateApplicationSettings for details on how to use this API operation.
//
// The context must be non-nil and will be used for request cancellation. If
// the context is nil a panic will occur. In the future the SDK may create
// sub-contexts for http.Requests. See https://golang.org/pkg/context/
// for more information on using Contexts.
func (c *SsmSap) UpdateApplicationSettingsWithContext(ctx aws.Context, input *UpdateApplicationSettingsInput, opts ...request.Option) (*UpdateApplicationSettingsOutput, error) {
	req, out := c.UpdateApplicationSettingsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}

// An SAP application registered with AWS Systems Manager for SAP.
type Application struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the Application Registry.
	AppRegistryArn *string `type:"string"`

	// The Amazon Resource Name (ARN) of the application.
	Arn *string `type:"string"`

	// The components of the application.
	Components []*string `type:"list"`

	// The latest discovery result for the application.
	DiscoveryStatus *string `type:"string" enum:"ApplicationDiscoveryStatus"`

	// The ID of the application.
	Id *string `type:"string"`

	// The time at which the application was last updated.
	LastUpdated *time.Time `type:"timestamp"`

	// The status of the application.
	Status *string `type:"string" enum:"ApplicationStatus"`

	// The status message.
	StatusMessage *string `type:"string"`

	// The type of the application.
	Type *string `type:"string" enum:"ApplicationType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Application) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Application) GoString() string {
	return s.String()
}

// SetAppRegistryArn sets the AppRegistryArn field's value.
func (s *Application) SetAppRegistryArn(v string) *Application {
	s.AppRegistryArn = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *Application) SetArn(v string) *Application {
	s.Arn = &v
	return s
}

// SetComponents sets the Components field's value.
func (s *Application) SetComponents(v []*string) *Application {
	s.Components = v
	return s
}

// SetDiscoveryStatus sets the DiscoveryStatus field's value.
func (s *Application) SetDiscoveryStatus(v string) *Application {
	s.DiscoveryStatus = &v
	return s
}

// SetId sets the Id field's value.
func (s *Application) SetId(v string) *Application {
	s.Id = &v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *Application) SetLastUpdated(v time.Time) *Application {
	s.LastUpdated = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Application) SetStatus(v string) *Application {
	s.Status = &v
	return s
}

// SetStatusMessage sets the StatusMessage field's value.
func (s *Application) SetStatusMessage(v string) *Application {
	s.StatusMessage = &v
	return s
}

// SetType sets the Type field's value.
func (s *Application) SetType(v string) *Application {
	s.Type = &v
	return s
}

// The credentials of your SAP application.
type ApplicationCredential struct {
	_ struct{} `type:"structure"`

	// The type of the application credentials.
	//
	// CredentialType is a required field
	CredentialType *string `type:"string" required:"true" enum:"CredentialType"`

	// The name of the SAP HANA database.
	//
	// DatabaseName is a required field
	DatabaseName *string `min:"1" type:"string" required:"true"`

	// The secret ID created in AWS Secrets Manager to store the credentials of
	// the SAP application.
	//
	// SecretId is a sensitive parameter and its value will be
	// replaced with "sensitive" in string returned by ApplicationCredential's
	// String and GoString methods.
	//
	// SecretId is a required field
	SecretId *string `min:"1" type:"string" required:"true" sensitive:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ApplicationCredential) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ApplicationCredential) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ApplicationCredential) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ApplicationCredential"}
	if s.CredentialType == nil {
		invalidParams.Add(request.NewErrParamRequired("CredentialType"))
	}
	if s.DatabaseName == nil {
		invalidParams.Add(request.NewErrParamRequired("DatabaseName"))
	}
	if s.DatabaseName != nil && len(*s.DatabaseName) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("DatabaseName", 1))
	}
	if s.SecretId == nil {
		invalidParams.Add(request.NewErrParamRequired("SecretId"))
	}
	if s.SecretId != nil && len(*s.SecretId) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("SecretId", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetCredentialType sets the CredentialType field's value.
func (s *ApplicationCredential) SetCredentialType(v string) *ApplicationCredential {
	s.CredentialType = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *ApplicationCredential) SetDatabaseName(v string) *ApplicationCredential {
	s.DatabaseName = &v
	return s
}

// SetSecretId sets the SecretId field's value.
func (s *ApplicationCredential) SetSecretId(v string) *ApplicationCredential {
	s.SecretId = &v
	return s
}

// The summary of the SAP application registered with AWS Systems Manager for
// SAP.
type ApplicationSummary struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the application.
	Arn *string `type:"string"`

	// The status of the latest discovery.
	DiscoveryStatus *string `type:"string" enum:"ApplicationDiscoveryStatus"`

	// The ID of the application.
	Id *string `type:"string"`

	// The tags on the application.
	Tags map[string]*string `type:"map"`

	// The type of the application.
	Type *string `type:"string" enum:"ApplicationType"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ApplicationSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ApplicationSummary) GoString() string {
	return s.String()
}

// SetArn sets the Arn field's value.
func (s *ApplicationSummary) SetArn(v string) *ApplicationSummary {
	s.Arn = &v
	return s
}

// SetDiscoveryStatus sets the DiscoveryStatus field's value.
func (s *ApplicationSummary) SetDiscoveryStatus(v string) *ApplicationSummary {
	s.DiscoveryStatus = &v
	return s
}

// SetId sets the Id field's value.
func (s *ApplicationSummary) SetId(v string) *ApplicationSummary {
	s.Id = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ApplicationSummary) SetTags(v map[string]*string) *ApplicationSummary {
	s.Tags = v
	return s
}

// SetType sets the Type field's value.
func (s *ApplicationSummary) SetType(v string) *ApplicationSummary {
	s.Type = &v
	return s
}

// Describes the properties of the associated host.
type AssociatedHost struct {
	_ struct{} `type:"structure"`

	// The ID of the Amazon EC2 instance.
	Ec2InstanceId *string `type:"string"`

	// The name of the host.
	Hostname *string `type:"string"`

	// The IP addresses of the associated host.
	IpAddresses []*IpAddressMember `type:"list"`

	// The version of the operating system.
	OsVersion *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociatedHost) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s AssociatedHost) GoString() string {
	return s.String()
}

// SetEc2InstanceId sets the Ec2InstanceId field's value.
func (s *AssociatedHost) SetEc2InstanceId(v string) *AssociatedHost {
	s.Ec2InstanceId = &v
	return s
}

// SetHostname sets the Hostname field's value.
func (s *AssociatedHost) SetHostname(v string) *AssociatedHost {
	s.Hostname = &v
	return s
}

// SetIpAddresses sets the IpAddresses field's value.
func (s *AssociatedHost) SetIpAddresses(v []*IpAddressMember) *AssociatedHost {
	s.IpAddresses = v
	return s
}

// SetOsVersion sets the OsVersion field's value.
func (s *AssociatedHost) SetOsVersion(v string) *AssociatedHost {
	s.OsVersion = &v
	return s
}

// Configuration parameters for AWS Backint Agent for SAP HANA. You can backup
// your SAP HANA database with AWS Backup or Amazon S3.
type BackintConfig struct {
	_ struct{} `type:"structure"`

	// AWS service for your database backup.
	//
	// BackintMode is a required field
	BackintMode *string `type:"string" required:"true" enum:"BackintMode"`

	// EnsureNoBackupInProcess is a required field
	EnsureNoBackupInProcess *bool `type:"boolean" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BackintConfig) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s BackintConfig) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *BackintConfig) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "BackintConfig"}
	if s.BackintMode == nil {
		invalidParams.Add(request.NewErrParamRequired("BackintMode"))
	}
	if s.EnsureNoBackupInProcess == nil {
		invalidParams.Add(request.NewErrParamRequired("EnsureNoBackupInProcess"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetBackintMode sets the BackintMode field's value.
func (s *BackintConfig) SetBackintMode(v string) *BackintConfig {
	s.BackintMode = &v
	return s
}

// SetEnsureNoBackupInProcess sets the EnsureNoBackupInProcess field's value.
func (s *BackintConfig) SetEnsureNoBackupInProcess(v bool) *BackintConfig {
	s.EnsureNoBackupInProcess = &v
	return s
}

// The SAP component of your application.
type Component struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	ApplicationId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the component.
	Arn *string `type:"string"`

	// The associated host of the component.
	AssociatedHost *AssociatedHost `type:"structure"`

	// The child components of a highly available environment. For example, in a
	// highly available SAP on AWS workload, the child component consists of the
	// primary and secondar instances.
	ChildComponents []*string `type:"list"`

	// The ID of the component.
	ComponentId *string `type:"string"`

	// The type of the component.
	ComponentType *string `type:"string" enum:"ComponentType"`

	// The connection specifications for the database of the component.
	DatabaseConnection *DatabaseConnection `type:"structure"`

	// The SAP HANA databases of the component.
	Databases []*string `type:"list"`

	// The SAP HANA version of the component.
	HdbVersion *string `type:"string"`

	// The hosts of the component.
	//
	// Deprecated: This shape is no longer used. Please use AssociatedHost.
	Hosts []*Host `deprecated:"true" type:"list"`

	// The time at which the component was last updated.
	LastUpdated *time.Time `type:"timestamp"`

	// The parent component of a highly available environment. For example, in a
	// highly available SAP on AWS workload, the parent component consists of the
	// entire setup, including the child components.
	ParentComponent *string `type:"string"`

	// The primary host of the component.
	//
	// Deprecated: This shape is no longer used. Please use AssociatedHost.
	PrimaryHost *string `deprecated:"true" type:"string"`

	// Details of the SAP HANA system replication for the component.
	Resilience *Resilience `type:"structure"`

	// The SAP feature of the component.
	SapFeature *string `type:"string"`

	// The hostname of the component.
	SapHostname *string `type:"string"`

	// The kernel version of the component.
	SapKernelVersion *string `type:"string"`

	// The SAP System Identifier of the application component.
	Sid *string `type:"string"`

	// The status of the component.
	//
	//    * ACTIVATED - this status has been deprecated.
	//
	//    * STARTING - the component is in the process of being started.
	//
	//    * STOPPED - the component is not running.
	//
	//    * STOPPING - the component is in the process of being stopped.
	//
	//    * RUNNING - the component is running.
	//
	//    * RUNNING_WITH_ERROR - one or more child component(s) of the parent component
	//    is not running. Call GetComponent (https://docs.aws.amazon.com/ssmsap/latest/APIReference/API_GetComponent.html)
	//    to review the status of each child component.
	//
	//    * UNDEFINED - AWS Systems Manager for SAP cannot provide the component
	//    status based on the discovered information. Verify your SAP application.
	Status *string `type:"string" enum:"ComponentStatus"`

	// The SAP system number of the application component.
	SystemNumber *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Component) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Component) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *Component) SetApplicationId(v string) *Component {
	s.ApplicationId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *Component) SetArn(v string) *Component {
	s.Arn = &v
	return s
}

// SetAssociatedHost sets the AssociatedHost field's value.
func (s *Component) SetAssociatedHost(v *AssociatedHost) *Component {
	s.AssociatedHost = v
	return s
}

// SetChildComponents sets the ChildComponents field's value.
func (s *Component) SetChildComponents(v []*string) *Component {
	s.ChildComponents = v
	return s
}

// SetComponentId sets the ComponentId field's value.
func (s *Component) SetComponentId(v string) *Component {
	s.ComponentId = &v
	return s
}

// SetComponentType sets the ComponentType field's value.
func (s *Component) SetComponentType(v string) *Component {
	s.ComponentType = &v
	return s
}

// SetDatabaseConnection sets the DatabaseConnection field's value.
func (s *Component) SetDatabaseConnection(v *DatabaseConnection) *Component {
	s.DatabaseConnection = v
	return s
}

// SetDatabases sets the Databases field's value.
func (s *Component) SetDatabases(v []*string) *Component {
	s.Databases = v
	return s
}

// SetHdbVersion sets the HdbVersion field's value.
func (s *Component) SetHdbVersion(v string) *Component {
	s.HdbVersion = &v
	return s
}

// SetHosts sets the Hosts field's value.
func (s *Component) SetHosts(v []*Host) *Component {
	s.Hosts = v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *Component) SetLastUpdated(v time.Time) *Component {
	s.LastUpdated = &v
	return s
}

// SetParentComponent sets the ParentComponent field's value.
func (s *Component) SetParentComponent(v string) *Component {
	s.ParentComponent = &v
	return s
}

// SetPrimaryHost sets the PrimaryHost field's value.
func (s *Component) SetPrimaryHost(v string) *Component {
	s.PrimaryHost = &v
	return s
}

// SetResilience sets the Resilience field's value.
func (s *Component) SetResilience(v *Resilience) *Component {
	s.Resilience = v
	return s
}

// SetSapFeature sets the SapFeature field's value.
func (s *Component) SetSapFeature(v string) *Component {
	s.SapFeature = &v
	return s
}

// SetSapHostname sets the SapHostname field's value.
func (s *Component) SetSapHostname(v string) *Component {
	s.SapHostname = &v
	return s
}

// SetSapKernelVersion sets the SapKernelVersion field's value.
func (s *Component) SetSapKernelVersion(v string) *Component {
	s.SapKernelVersion = &v
	return s
}

// SetSid sets the Sid field's value.
func (s *Component) SetSid(v string) *Component {
	s.Sid = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Component) SetStatus(v string) *Component {
	s.Status = &v
	return s
}

// SetSystemNumber sets the SystemNumber field's value.
func (s *Component) SetSystemNumber(v string) *Component {
	s.SystemNumber = &v
	return s
}

// The summary of the component.
type ComponentSummary struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	ApplicationId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the component summary.
	Arn *string `type:"string"`

	// The ID of the component.
	ComponentId *string `type:"string"`

	// The type of the component.
	ComponentType *string `type:"string" enum:"ComponentType"`

	// The tags of the component.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ComponentSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ComponentSummary) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *ComponentSummary) SetApplicationId(v string) *ComponentSummary {
	s.ApplicationId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *ComponentSummary) SetArn(v string) *ComponentSummary {
	s.Arn = &v
	return s
}

// SetComponentId sets the ComponentId field's value.
func (s *ComponentSummary) SetComponentId(v string) *ComponentSummary {
	s.ComponentId = &v
	return s
}

// SetComponentType sets the ComponentType field's value.
func (s *ComponentSummary) SetComponentType(v string) *ComponentSummary {
	s.ComponentType = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *ComponentSummary) SetTags(v map[string]*string) *ComponentSummary {
	s.Tags = v
	return s
}

// A conflict has occurred.
type ConflictException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConflictException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ConflictException) GoString() string {
	return s.String()
}

func newErrorConflictException(v protocol.ResponseMetadata) error {
	return &ConflictException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ConflictException) Code() string {
	return "ConflictException"
}

// Message returns the exception's message.
func (s *ConflictException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ConflictException) OrigErr() error {
	return nil
}

func (s *ConflictException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ConflictException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ConflictException) RequestID() string {
	return s.RespMetadata.RequestID
}

// The SAP HANA database of the application registered with AWS Systems Manager
// for SAP.
type Database struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	ApplicationId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the database.
	Arn *string `type:"string"`

	// The ID of the component.
	ComponentId *string `type:"string"`

	// The credentials of the database.
	Credentials []*ApplicationCredential `type:"list"`

	// The ID of the SAP HANA database.
	DatabaseId *string `type:"string"`

	// The name of the database.
	DatabaseName *string `type:"string"`

	// The type of the database.
	DatabaseType *string `type:"string" enum:"DatabaseType"`

	// The time at which the database was last updated.
	LastUpdated *time.Time `type:"timestamp"`

	// The primary host of the database.
	PrimaryHost *string `type:"string"`

	// The SQL port of the database.
	SQLPort *int64 `type:"integer"`

	// The status of the database.
	Status *string `type:"string" enum:"DatabaseStatus"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Database) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Database) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *Database) SetApplicationId(v string) *Database {
	s.ApplicationId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *Database) SetArn(v string) *Database {
	s.Arn = &v
	return s
}

// SetComponentId sets the ComponentId field's value.
func (s *Database) SetComponentId(v string) *Database {
	s.ComponentId = &v
	return s
}

// SetCredentials sets the Credentials field's value.
func (s *Database) SetCredentials(v []*ApplicationCredential) *Database {
	s.Credentials = v
	return s
}

// SetDatabaseId sets the DatabaseId field's value.
func (s *Database) SetDatabaseId(v string) *Database {
	s.DatabaseId = &v
	return s
}

// SetDatabaseName sets the DatabaseName field's value.
func (s *Database) SetDatabaseName(v string) *Database {
	s.DatabaseName = &v
	return s
}

// SetDatabaseType sets the DatabaseType field's value.
func (s *Database) SetDatabaseType(v string) *Database {
	s.DatabaseType = &v
	return s
}

// SetLastUpdated sets the LastUpdated field's value.
func (s *Database) SetLastUpdated(v time.Time) *Database {
	s.LastUpdated = &v
	return s
}

// SetPrimaryHost sets the PrimaryHost field's value.
func (s *Database) SetPrimaryHost(v string) *Database {
	s.PrimaryHost = &v
	return s
}

// SetSQLPort sets the SQLPort field's value.
func (s *Database) SetSQLPort(v int64) *Database {
	s.SQLPort = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Database) SetStatus(v string) *Database {
	s.Status = &v
	return s
}

// The connection specifications for the database.
type DatabaseConnection struct {
	_ struct{} `type:"structure"`

	// The IP address for connection.
	ConnectionIp *string `type:"string"`

	// The Amazon Resource Name of the connected SAP HANA database.
	DatabaseArn *string `type:"string"`

	// The method of connection.
	DatabaseConnectionMethod *string `type:"string" enum:"DatabaseConnectionMethod"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DatabaseConnection) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DatabaseConnection) GoString() string {
	return s.String()
}

// SetConnectionIp sets the ConnectionIp field's value.
func (s *DatabaseConnection) SetConnectionIp(v string) *DatabaseConnection {
	s.ConnectionIp = &v
	return s
}

// SetDatabaseArn sets the DatabaseArn field's value.
func (s *DatabaseConnection) SetDatabaseArn(v string) *DatabaseConnection {
	s.DatabaseArn = &v
	return s
}

// SetDatabaseConnectionMethod sets the DatabaseConnectionMethod field's value.
func (s *DatabaseConnection) SetDatabaseConnectionMethod(v string) *DatabaseConnection {
	s.DatabaseConnectionMethod = &v
	return s
}

// The summary of the database.
type DatabaseSummary struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	ApplicationId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the database.
	Arn *string `type:"string"`

	// The ID of the component.
	ComponentId *string `type:"string"`

	// The ID of the database.
	DatabaseId *string `type:"string"`

	// The type of the database.
	DatabaseType *string `type:"string" enum:"DatabaseType"`

	// The tags of the database.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DatabaseSummary) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DatabaseSummary) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *DatabaseSummary) SetApplicationId(v string) *DatabaseSummary {
	s.ApplicationId = &v
	return s
}

// SetArn sets the Arn field's value.
func (s *DatabaseSummary) SetArn(v string) *DatabaseSummary {
	s.Arn = &v
	return s
}

// SetComponentId sets the ComponentId field's value.
func (s *DatabaseSummary) SetComponentId(v string) *DatabaseSummary {
	s.ComponentId = &v
	return s
}

// SetDatabaseId sets the DatabaseId field's value.
func (s *DatabaseSummary) SetDatabaseId(v string) *DatabaseSummary {
	s.DatabaseId = &v
	return s
}

// SetDatabaseType sets the DatabaseType field's value.
func (s *DatabaseSummary) SetDatabaseType(v string) *DatabaseSummary {
	s.DatabaseType = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *DatabaseSummary) SetTags(v map[string]*string) *DatabaseSummary {
	s.Tags = v
	return s
}

type DeleteResourcePermissionInput struct {
	_ struct{} `type:"structure"`

	// Delete or restore the permissions on the target database.
	ActionType *string `type:"string" enum:"PermissionActionType"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `type:"string" required:"true"`

	// The Amazon Resource Name (ARN) of the source resource.
	SourceResourceArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteResourcePermissionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteResourcePermissionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeleteResourcePermissionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeleteResourcePermissionInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActionType sets the ActionType field's value.
func (s *DeleteResourcePermissionInput) SetActionType(v string) *DeleteResourcePermissionInput {
	s.ActionType = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *DeleteResourcePermissionInput) SetResourceArn(v string) *DeleteResourcePermissionInput {
	s.ResourceArn = &v
	return s
}

// SetSourceResourceArn sets the SourceResourceArn field's value.
func (s *DeleteResourcePermissionInput) SetSourceResourceArn(v string) *DeleteResourcePermissionInput {
	s.SourceResourceArn = &v
	return s
}

type DeleteResourcePermissionOutput struct {
	_ struct{} `type:"structure"`

	// The policy that removes permissions on the target database.
	Policy *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteResourcePermissionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeleteResourcePermissionOutput) GoString() string {
	return s.String()
}

// SetPolicy sets the Policy field's value.
func (s *DeleteResourcePermissionOutput) SetPolicy(v string) *DeleteResourcePermissionOutput {
	s.Policy = &v
	return s
}

type DeregisterApplicationInput struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	//
	// ApplicationId is a required field
	ApplicationId *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeregisterApplicationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeregisterApplicationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *DeregisterApplicationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "DeregisterApplicationInput"}
	if s.ApplicationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ApplicationId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicationId sets the ApplicationId field's value.
func (s *DeregisterApplicationInput) SetApplicationId(v string) *DeregisterApplicationInput {
	s.ApplicationId = &v
	return s
}

type DeregisterApplicationOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeregisterApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s DeregisterApplicationOutput) GoString() string {
	return s.String()
}

// A specific result obtained by specifying the name, value, and operator.
type Filter struct {
	_ struct{} `type:"structure"`

	// The name of the filter. Filter names are case-sensitive.
	//
	// Name is a required field
	Name *string `min:"1" type:"string" required:"true"`

	// The operator for the filter.
	//
	// Operator is a required field
	Operator *string `type:"string" required:"true" enum:"FilterOperator"`

	// The filter values. Filter values are case-sensitive. If you specify multiple
	// values for a filter, the values are joined with an OR, and the request returns
	// all results that match any of the specified values
	//
	// Value is a required field
	Value *string `min:"1" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Filter) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Filter) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *Filter) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "Filter"}
	if s.Name == nil {
		invalidParams.Add(request.NewErrParamRequired("Name"))
	}
	if s.Name != nil && len(*s.Name) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
	}
	if s.Operator == nil {
		invalidParams.Add(request.NewErrParamRequired("Operator"))
	}
	if s.Value == nil {
		invalidParams.Add(request.NewErrParamRequired("Value"))
	}
	if s.Value != nil && len(*s.Value) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Value", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetName sets the Name field's value.
func (s *Filter) SetName(v string) *Filter {
	s.Name = &v
	return s
}

// SetOperator sets the Operator field's value.
func (s *Filter) SetOperator(v string) *Filter {
	s.Operator = &v
	return s
}

// SetValue sets the Value field's value.
func (s *Filter) SetValue(v string) *Filter {
	s.Value = &v
	return s
}

type GetApplicationInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the application registry.
	AppRegistryArn *string `type:"string"`

	// The Amazon Resource Name (ARN) of the application.
	ApplicationArn *string `type:"string"`

	// The ID of the application.
	ApplicationId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetApplicationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetApplicationInput) GoString() string {
	return s.String()
}

// SetAppRegistryArn sets the AppRegistryArn field's value.
func (s *GetApplicationInput) SetAppRegistryArn(v string) *GetApplicationInput {
	s.AppRegistryArn = &v
	return s
}

// SetApplicationArn sets the ApplicationArn field's value.
func (s *GetApplicationInput) SetApplicationArn(v string) *GetApplicationInput {
	s.ApplicationArn = &v
	return s
}

// SetApplicationId sets the ApplicationId field's value.
func (s *GetApplicationInput) SetApplicationId(v string) *GetApplicationInput {
	s.ApplicationId = &v
	return s
}

type GetApplicationOutput struct {
	_ struct{} `type:"structure"`

	// Returns all of the metadata of an application registered with AWS Systems
	// Manager for SAP.
	Application *Application `type:"structure"`

	// The tags of a registered application.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetApplicationOutput) GoString() string {
	return s.String()
}

// SetApplication sets the Application field's value.
func (s *GetApplicationOutput) SetApplication(v *Application) *GetApplicationOutput {
	s.Application = v
	return s
}

// SetTags sets the Tags field's value.
func (s *GetApplicationOutput) SetTags(v map[string]*string) *GetApplicationOutput {
	s.Tags = v
	return s
}

type GetComponentInput struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	//
	// ApplicationId is a required field
	ApplicationId *string `type:"string" required:"true"`

	// The ID of the component.
	//
	// ComponentId is a required field
	ComponentId *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetComponentInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetComponentInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetComponentInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetComponentInput"}
	if s.ApplicationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ApplicationId"))
	}
	if s.ComponentId == nil {
		invalidParams.Add(request.NewErrParamRequired("ComponentId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicationId sets the ApplicationId field's value.
func (s *GetComponentInput) SetApplicationId(v string) *GetComponentInput {
	s.ApplicationId = &v
	return s
}

// SetComponentId sets the ComponentId field's value.
func (s *GetComponentInput) SetComponentId(v string) *GetComponentInput {
	s.ComponentId = &v
	return s
}

type GetComponentOutput struct {
	_ struct{} `type:"structure"`

	// The component of an application registered with AWS Systems Manager for SAP.
	Component *Component `type:"structure"`

	// The tags of a component.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetComponentOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetComponentOutput) GoString() string {
	return s.String()
}

// SetComponent sets the Component field's value.
func (s *GetComponentOutput) SetComponent(v *Component) *GetComponentOutput {
	s.Component = v
	return s
}

// SetTags sets the Tags field's value.
func (s *GetComponentOutput) SetTags(v map[string]*string) *GetComponentOutput {
	s.Tags = v
	return s
}

type GetDatabaseInput struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	ApplicationId *string `type:"string"`

	// The ID of the component.
	ComponentId *string `type:"string"`

	// The Amazon Resource Name (ARN) of the database.
	DatabaseArn *string `type:"string"`

	// The ID of the database.
	DatabaseId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDatabaseInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDatabaseInput) GoString() string {
	return s.String()
}

// SetApplicationId sets the ApplicationId field's value.
func (s *GetDatabaseInput) SetApplicationId(v string) *GetDatabaseInput {
	s.ApplicationId = &v
	return s
}

// SetComponentId sets the ComponentId field's value.
func (s *GetDatabaseInput) SetComponentId(v string) *GetDatabaseInput {
	s.ComponentId = &v
	return s
}

// SetDatabaseArn sets the DatabaseArn field's value.
func (s *GetDatabaseInput) SetDatabaseArn(v string) *GetDatabaseInput {
	s.DatabaseArn = &v
	return s
}

// SetDatabaseId sets the DatabaseId field's value.
func (s *GetDatabaseInput) SetDatabaseId(v string) *GetDatabaseInput {
	s.DatabaseId = &v
	return s
}

type GetDatabaseOutput struct {
	_ struct{} `type:"structure"`

	// The SAP HANA database of an application registered with AWS Systems Manager
	// for SAP.
	Database *Database `type:"structure"`

	// The tags of a database.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDatabaseOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetDatabaseOutput) GoString() string {
	return s.String()
}

// SetDatabase sets the Database field's value.
func (s *GetDatabaseOutput) SetDatabase(v *Database) *GetDatabaseOutput {
	s.Database = v
	return s
}

// SetTags sets the Tags field's value.
func (s *GetDatabaseOutput) SetTags(v map[string]*string) *GetDatabaseOutput {
	s.Tags = v
	return s
}

type GetOperationInput struct {
	_ struct{} `type:"structure"`

	// The ID of the operation.
	//
	// OperationId is a required field
	OperationId *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetOperationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetOperationInput"}
	if s.OperationId == nil {
		invalidParams.Add(request.NewErrParamRequired("OperationId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetOperationId sets the OperationId field's value.
func (s *GetOperationInput) SetOperationId(v string) *GetOperationInput {
	s.OperationId = &v
	return s
}

type GetOperationOutput struct {
	_ struct{} `type:"structure"`

	// Returns the details of an operation.
	Operation *Operation `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetOperationOutput) GoString() string {
	return s.String()
}

// SetOperation sets the Operation field's value.
func (s *GetOperationOutput) SetOperation(v *Operation) *GetOperationOutput {
	s.Operation = v
	return s
}

type GetResourcePermissionInput struct {
	_ struct{} `type:"structure"`

	ActionType *string `type:"string" enum:"PermissionActionType"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetResourcePermissionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetResourcePermissionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *GetResourcePermissionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetResourcePermissionInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActionType sets the ActionType field's value.
func (s *GetResourcePermissionInput) SetActionType(v string) *GetResourcePermissionInput {
	s.ActionType = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *GetResourcePermissionInput) SetResourceArn(v string) *GetResourcePermissionInput {
	s.ResourceArn = &v
	return s
}

type GetResourcePermissionOutput struct {
	_ struct{} `type:"structure"`

	Policy *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetResourcePermissionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s GetResourcePermissionOutput) GoString() string {
	return s.String()
}

// SetPolicy sets the Policy field's value.
func (s *GetResourcePermissionOutput) SetPolicy(v string) *GetResourcePermissionOutput {
	s.Policy = &v
	return s
}

// Describes the properties of the Dedicated Host.
type Host struct {
	_ struct{} `type:"structure"`

	// The ID of Amazon EC2 instance.
	EC2InstanceId *string `type:"string"`

	// The IP address of the Dedicated Host.
	HostIp *string `type:"string"`

	// The name of the Dedicated Host.
	HostName *string `type:"string"`

	// The role of the Dedicated Host.
	HostRole *string `type:"string" enum:"HostRole"`

	// The instance ID of the instance on the Dedicated Host.
	InstanceId *string `type:"string"`

	// The version of the operating system.
	OsVersion *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Host) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Host) GoString() string {
	return s.String()
}

// SetEC2InstanceId sets the EC2InstanceId field's value.
func (s *Host) SetEC2InstanceId(v string) *Host {
	s.EC2InstanceId = &v
	return s
}

// SetHostIp sets the HostIp field's value.
func (s *Host) SetHostIp(v string) *Host {
	s.HostIp = &v
	return s
}

// SetHostName sets the HostName field's value.
func (s *Host) SetHostName(v string) *Host {
	s.HostName = &v
	return s
}

// SetHostRole sets the HostRole field's value.
func (s *Host) SetHostRole(v string) *Host {
	s.HostRole = &v
	return s
}

// SetInstanceId sets the InstanceId field's value.
func (s *Host) SetInstanceId(v string) *Host {
	s.InstanceId = &v
	return s
}

// SetOsVersion sets the OsVersion field's value.
func (s *Host) SetOsVersion(v string) *Host {
	s.OsVersion = &v
	return s
}

// An internal error has occurred.
type InternalServerException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServerException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s InternalServerException) GoString() string {
	return s.String()
}

func newErrorInternalServerException(v protocol.ResponseMetadata) error {
	return &InternalServerException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *InternalServerException) Code() string {
	return "InternalServerException"
}

// Message returns the exception's message.
func (s *InternalServerException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *InternalServerException) OrigErr() error {
	return nil
}

func (s *InternalServerException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *InternalServerException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *InternalServerException) RequestID() string {
	return s.RespMetadata.RequestID
}

// Provides information of the IP address.
type IpAddressMember struct {
	_ struct{} `type:"structure"`

	// The type of allocation for the IP address.
	AllocationType *string `type:"string" enum:"AllocationType"`

	// The IP address.
	IpAddress *string `type:"string"`

	// The primary IP address.
	Primary *bool `type:"boolean"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IpAddressMember) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s IpAddressMember) GoString() string {
	return s.String()
}

// SetAllocationType sets the AllocationType field's value.
func (s *IpAddressMember) SetAllocationType(v string) *IpAddressMember {
	s.AllocationType = &v
	return s
}

// SetIpAddress sets the IpAddress field's value.
func (s *IpAddressMember) SetIpAddress(v string) *IpAddressMember {
	s.IpAddress = &v
	return s
}

// SetPrimary sets the Primary field's value.
func (s *IpAddressMember) SetPrimary(v bool) *IpAddressMember {
	s.Primary = &v
	return s
}

type ListApplicationsInput struct {
	_ struct{} `type:"structure"`

	// The filter of name, value, and operator.
	Filters []*Filter `min:"1" type:"list"`

	// The maximum number of results to return with a single call. To retrieve the
	// remaining results, make another call with the returned nextToken value.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListApplicationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListApplicationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListApplicationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListApplicationsInput"}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetFilters sets the Filters field's value.
func (s *ListApplicationsInput) SetFilters(v []*Filter) *ListApplicationsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListApplicationsInput) SetMaxResults(v int64) *ListApplicationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListApplicationsInput) SetNextToken(v string) *ListApplicationsInput {
	s.NextToken = &v
	return s
}

type ListApplicationsOutput struct {
	_ struct{} `type:"structure"`

	// The applications registered with AWS Systems Manager for SAP.
	Applications []*ApplicationSummary `type:"list"`

	// The token to use to retrieve the next page of results. This value is null
	// when there are no more results to return.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListApplicationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListApplicationsOutput) GoString() string {
	return s.String()
}

// SetApplications sets the Applications field's value.
func (s *ListApplicationsOutput) SetApplications(v []*ApplicationSummary) *ListApplicationsOutput {
	s.Applications = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListApplicationsOutput) SetNextToken(v string) *ListApplicationsOutput {
	s.NextToken = &v
	return s
}

type ListComponentsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	ApplicationId *string `type:"string"`

	// The maximum number of results to return with a single call. To retrieve the
	// remaining results, make another call with the returned nextToken value.
	//
	// If you do not specify a value for MaxResults, the request returns 50 items
	// per page by default.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListComponentsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListComponentsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListComponentsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListComponentsInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicationId sets the ApplicationId field's value.
func (s *ListComponentsInput) SetApplicationId(v string) *ListComponentsInput {
	s.ApplicationId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListComponentsInput) SetMaxResults(v int64) *ListComponentsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListComponentsInput) SetNextToken(v string) *ListComponentsInput {
	s.NextToken = &v
	return s
}

type ListComponentsOutput struct {
	_ struct{} `type:"structure"`

	// List of components registered with AWS System Manager for SAP.
	Components []*ComponentSummary `type:"list"`

	// The token to use to retrieve the next page of results. This value is null
	// when there are no more results to return.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListComponentsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListComponentsOutput) GoString() string {
	return s.String()
}

// SetComponents sets the Components field's value.
func (s *ListComponentsOutput) SetComponents(v []*ComponentSummary) *ListComponentsOutput {
	s.Components = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListComponentsOutput) SetNextToken(v string) *ListComponentsOutput {
	s.NextToken = &v
	return s
}

type ListDatabasesInput struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	ApplicationId *string `type:"string"`

	// The ID of the component.
	ComponentId *string `type:"string"`

	// The maximum number of results to return with a single call. To retrieve the
	// remaining results, make another call with the returned nextToken value. If
	// you do not specify a value for MaxResults, the request returns 50 items per
	// page by default.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDatabasesInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDatabasesInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListDatabasesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListDatabasesInput"}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicationId sets the ApplicationId field's value.
func (s *ListDatabasesInput) SetApplicationId(v string) *ListDatabasesInput {
	s.ApplicationId = &v
	return s
}

// SetComponentId sets the ComponentId field's value.
func (s *ListDatabasesInput) SetComponentId(v string) *ListDatabasesInput {
	s.ComponentId = &v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListDatabasesInput) SetMaxResults(v int64) *ListDatabasesInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDatabasesInput) SetNextToken(v string) *ListDatabasesInput {
	s.NextToken = &v
	return s
}

type ListDatabasesOutput struct {
	_ struct{} `type:"structure"`

	// The SAP HANA databases of an application.
	Databases []*DatabaseSummary `type:"list"`

	// The token to use to retrieve the next page of results. This value is null
	// when there are no more results to return.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDatabasesOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListDatabasesOutput) GoString() string {
	return s.String()
}

// SetDatabases sets the Databases field's value.
func (s *ListDatabasesOutput) SetDatabases(v []*DatabaseSummary) *ListDatabasesOutput {
	s.Databases = v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListDatabasesOutput) SetNextToken(v string) *ListDatabasesOutput {
	s.NextToken = &v
	return s
}

type ListOperationsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	//
	// ApplicationId is a required field
	ApplicationId *string `type:"string" required:"true"`

	// The filters of an operation.
	Filters []*Filter `min:"1" type:"list"`

	// The maximum number of results to return with a single call. To retrieve the
	// remaining results, make another call with the returned nextToken value. If
	// you do not specify a value for MaxResults, the request returns 50 items per
	// page by default.
	MaxResults *int64 `min:"1" type:"integer"`

	// The token for the next page of results.
	NextToken *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListOperationsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListOperationsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListOperationsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListOperationsInput"}
	if s.ApplicationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ApplicationId"))
	}
	if s.Filters != nil && len(s.Filters) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Filters", 1))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if s.Filters != nil {
		for i, v := range s.Filters {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Filters", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicationId sets the ApplicationId field's value.
func (s *ListOperationsInput) SetApplicationId(v string) *ListOperationsInput {
	s.ApplicationId = &v
	return s
}

// SetFilters sets the Filters field's value.
func (s *ListOperationsInput) SetFilters(v []*Filter) *ListOperationsInput {
	s.Filters = v
	return s
}

// SetMaxResults sets the MaxResults field's value.
func (s *ListOperationsInput) SetMaxResults(v int64) *ListOperationsInput {
	s.MaxResults = &v
	return s
}

// SetNextToken sets the NextToken field's value.
func (s *ListOperationsInput) SetNextToken(v string) *ListOperationsInput {
	s.NextToken = &v
	return s
}

type ListOperationsOutput struct {
	_ struct{} `type:"structure"`

	// The token to use to retrieve the next page of results. This value is null
	// when there are no more results to return.
	NextToken *string `type:"string"`

	// List of operations performed by AWS Systems Manager for SAP.
	Operations []*Operation `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListOperationsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListOperationsOutput) GoString() string {
	return s.String()
}

// SetNextToken sets the NextToken field's value.
func (s *ListOperationsOutput) SetNextToken(v string) *ListOperationsOutput {
	s.NextToken = &v
	return s
}

// SetOperations sets the Operations field's value.
func (s *ListOperationsOutput) SetOperations(v []*Operation) *ListOperationsOutput {
	s.Operations = v
	return s
}

type ListTagsForResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *ListTagsForResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
	s.ResourceArn = &v
	return s
}

type ListTagsForResourceOutput struct {
	_ struct{} `type:"structure"`

	Tags map[string]*string `locationName:"tags" type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ListTagsForResourceOutput) GoString() string {
	return s.String()
}

// SetTags sets the Tags field's value.
func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput {
	s.Tags = v
	return s
}

// The operations performed by AWS Systems Manager for SAP.
type Operation struct {
	_ struct{} `type:"structure"`

	// The end time of the operation.
	EndTime *time.Time `type:"timestamp"`

	// The ID of the operation.
	Id *string `type:"string"`

	// The time at which the operation was last updated.
	LastUpdatedTime *time.Time `type:"timestamp"`

	// The properties of the operation.
	Properties map[string]*string `type:"map"`

	// The Amazon Resource Name (ARN) of the operation.
	ResourceArn *string `type:"string"`

	// The resource ID of the operation.
	ResourceId *string `min:"1" type:"string"`

	// The resource type of the operation.
	ResourceType *string `min:"1" type:"string"`

	// The start time of the operation.
	StartTime *time.Time `type:"timestamp"`

	// The status of the operation.
	Status *string `type:"string" enum:"OperationStatus"`

	// The status message of the operation.
	StatusMessage *string `type:"string"`

	// The type of the operation.
	Type *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Operation) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Operation) GoString() string {
	return s.String()
}

// SetEndTime sets the EndTime field's value.
func (s *Operation) SetEndTime(v time.Time) *Operation {
	s.EndTime = &v
	return s
}

// SetId sets the Id field's value.
func (s *Operation) SetId(v string) *Operation {
	s.Id = &v
	return s
}

// SetLastUpdatedTime sets the LastUpdatedTime field's value.
func (s *Operation) SetLastUpdatedTime(v time.Time) *Operation {
	s.LastUpdatedTime = &v
	return s
}

// SetProperties sets the Properties field's value.
func (s *Operation) SetProperties(v map[string]*string) *Operation {
	s.Properties = v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *Operation) SetResourceArn(v string) *Operation {
	s.ResourceArn = &v
	return s
}

// SetResourceId sets the ResourceId field's value.
func (s *Operation) SetResourceId(v string) *Operation {
	s.ResourceId = &v
	return s
}

// SetResourceType sets the ResourceType field's value.
func (s *Operation) SetResourceType(v string) *Operation {
	s.ResourceType = &v
	return s
}

// SetStartTime sets the StartTime field's value.
func (s *Operation) SetStartTime(v time.Time) *Operation {
	s.StartTime = &v
	return s
}

// SetStatus sets the Status field's value.
func (s *Operation) SetStatus(v string) *Operation {
	s.Status = &v
	return s
}

// SetStatusMessage sets the StatusMessage field's value.
func (s *Operation) SetStatusMessage(v string) *Operation {
	s.StatusMessage = &v
	return s
}

// SetType sets the Type field's value.
func (s *Operation) SetType(v string) *Operation {
	s.Type = &v
	return s
}

type PutResourcePermissionInput struct {
	_ struct{} `type:"structure"`

	// ActionType is a required field
	ActionType *string `type:"string" required:"true" enum:"PermissionActionType"`

	// ResourceArn is a required field
	ResourceArn *string `type:"string" required:"true"`

	// SourceResourceArn is a required field
	SourceResourceArn *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutResourcePermissionInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutResourcePermissionInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *PutResourcePermissionInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "PutResourcePermissionInput"}
	if s.ActionType == nil {
		invalidParams.Add(request.NewErrParamRequired("ActionType"))
	}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.SourceResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("SourceResourceArn"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetActionType sets the ActionType field's value.
func (s *PutResourcePermissionInput) SetActionType(v string) *PutResourcePermissionInput {
	s.ActionType = &v
	return s
}

// SetResourceArn sets the ResourceArn field's value.
func (s *PutResourcePermissionInput) SetResourceArn(v string) *PutResourcePermissionInput {
	s.ResourceArn = &v
	return s
}

// SetSourceResourceArn sets the SourceResourceArn field's value.
func (s *PutResourcePermissionInput) SetSourceResourceArn(v string) *PutResourcePermissionInput {
	s.SourceResourceArn = &v
	return s
}

type PutResourcePermissionOutput struct {
	_ struct{} `type:"structure"`

	Policy *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutResourcePermissionOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s PutResourcePermissionOutput) GoString() string {
	return s.String()
}

// SetPolicy sets the Policy field's value.
func (s *PutResourcePermissionOutput) SetPolicy(v string) *PutResourcePermissionOutput {
	s.Policy = &v
	return s
}

type RegisterApplicationInput struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	//
	// ApplicationId is a required field
	ApplicationId *string `type:"string" required:"true"`

	// The type of the application.
	//
	// ApplicationType is a required field
	ApplicationType *string `type:"string" required:"true" enum:"ApplicationType"`

	// The credentials of the SAP application.
	Credentials []*ApplicationCredential `type:"list"`

	// The Amazon Resource Name of the SAP HANA database.
	DatabaseArn *string `type:"string"`

	// The Amazon EC2 instances on which your SAP application is running.
	//
	// Instances is a required field
	Instances []*string `min:"1" type:"list" required:"true"`

	// The SAP instance number of the application.
	SapInstanceNumber *string `type:"string"`

	// The System ID of the application.
	Sid *string `type:"string"`

	// The tags to be attached to the SAP application.
	Tags map[string]*string `type:"map"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterApplicationInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterApplicationInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *RegisterApplicationInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "RegisterApplicationInput"}
	if s.ApplicationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ApplicationId"))
	}
	if s.ApplicationType == nil {
		invalidParams.Add(request.NewErrParamRequired("ApplicationType"))
	}
	if s.Instances == nil {
		invalidParams.Add(request.NewErrParamRequired("Instances"))
	}
	if s.Instances != nil && len(s.Instances) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("Instances", 1))
	}
	if s.Credentials != nil {
		for i, v := range s.Credentials {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Credentials", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicationId sets the ApplicationId field's value.
func (s *RegisterApplicationInput) SetApplicationId(v string) *RegisterApplicationInput {
	s.ApplicationId = &v
	return s
}

// SetApplicationType sets the ApplicationType field's value.
func (s *RegisterApplicationInput) SetApplicationType(v string) *RegisterApplicationInput {
	s.ApplicationType = &v
	return s
}

// SetCredentials sets the Credentials field's value.
func (s *RegisterApplicationInput) SetCredentials(v []*ApplicationCredential) *RegisterApplicationInput {
	s.Credentials = v
	return s
}

// SetDatabaseArn sets the DatabaseArn field's value.
func (s *RegisterApplicationInput) SetDatabaseArn(v string) *RegisterApplicationInput {
	s.DatabaseArn = &v
	return s
}

// SetInstances sets the Instances field's value.
func (s *RegisterApplicationInput) SetInstances(v []*string) *RegisterApplicationInput {
	s.Instances = v
	return s
}

// SetSapInstanceNumber sets the SapInstanceNumber field's value.
func (s *RegisterApplicationInput) SetSapInstanceNumber(v string) *RegisterApplicationInput {
	s.SapInstanceNumber = &v
	return s
}

// SetSid sets the Sid field's value.
func (s *RegisterApplicationInput) SetSid(v string) *RegisterApplicationInput {
	s.Sid = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *RegisterApplicationInput) SetTags(v map[string]*string) *RegisterApplicationInput {
	s.Tags = v
	return s
}

type RegisterApplicationOutput struct {
	_ struct{} `type:"structure"`

	// The application registered with AWS Systems Manager for SAP.
	Application *Application `type:"structure"`

	// The ID of the operation.
	OperationId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterApplicationOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s RegisterApplicationOutput) GoString() string {
	return s.String()
}

// SetApplication sets the Application field's value.
func (s *RegisterApplicationOutput) SetApplication(v *Application) *RegisterApplicationOutput {
	s.Application = v
	return s
}

// SetOperationId sets the OperationId field's value.
func (s *RegisterApplicationOutput) SetOperationId(v string) *RegisterApplicationOutput {
	s.OperationId = &v
	return s
}

// Details of the SAP HANA system replication for the instance.
type Resilience struct {
	_ struct{} `type:"structure"`

	// The cluster status of the component.
	ClusterStatus *string `type:"string" enum:"ClusterStatus"`

	// Indicates if or not enqueue replication is enabled for the ASCS component.
	EnqueueReplication *bool `type:"boolean"`

	// The operation mode of the component.
	HsrOperationMode *string `type:"string" enum:"OperationMode"`

	// The replication mode of the component.
	HsrReplicationMode *string `type:"string" enum:"ReplicationMode"`

	// The tier of the component.
	HsrTier *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Resilience) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s Resilience) GoString() string {
	return s.String()
}

// SetClusterStatus sets the ClusterStatus field's value.
func (s *Resilience) SetClusterStatus(v string) *Resilience {
	s.ClusterStatus = &v
	return s
}

// SetEnqueueReplication sets the EnqueueReplication field's value.
func (s *Resilience) SetEnqueueReplication(v bool) *Resilience {
	s.EnqueueReplication = &v
	return s
}

// SetHsrOperationMode sets the HsrOperationMode field's value.
func (s *Resilience) SetHsrOperationMode(v string) *Resilience {
	s.HsrOperationMode = &v
	return s
}

// SetHsrReplicationMode sets the HsrReplicationMode field's value.
func (s *Resilience) SetHsrReplicationMode(v string) *Resilience {
	s.HsrReplicationMode = &v
	return s
}

// SetHsrTier sets the HsrTier field's value.
func (s *Resilience) SetHsrTier(v string) *Resilience {
	s.HsrTier = &v
	return s
}

// The resource is not available.
type ResourceNotFoundException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ResourceNotFoundException) GoString() string {
	return s.String()
}

func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
	return &ResourceNotFoundException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ResourceNotFoundException) Code() string {
	return "ResourceNotFoundException"
}

// Message returns the exception's message.
func (s *ResourceNotFoundException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ResourceNotFoundException) OrigErr() error {
	return nil
}

func (s *ResourceNotFoundException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ResourceNotFoundException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ResourceNotFoundException) RequestID() string {
	return s.RespMetadata.RequestID
}

type StartApplicationRefreshInput struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	//
	// ApplicationId is a required field
	ApplicationId *string `type:"string" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartApplicationRefreshInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartApplicationRefreshInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *StartApplicationRefreshInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "StartApplicationRefreshInput"}
	if s.ApplicationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ApplicationId"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicationId sets the ApplicationId field's value.
func (s *StartApplicationRefreshInput) SetApplicationId(v string) *StartApplicationRefreshInput {
	s.ApplicationId = &v
	return s
}

type StartApplicationRefreshOutput struct {
	_ struct{} `type:"structure"`

	// The ID of the operation.
	OperationId *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartApplicationRefreshOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s StartApplicationRefreshOutput) GoString() string {
	return s.String()
}

// SetOperationId sets the OperationId field's value.
func (s *StartApplicationRefreshOutput) SetOperationId(v string) *StartApplicationRefreshOutput {
	s.OperationId = &v
	return s
}

type TagResourceInput struct {
	_ struct{} `type:"structure"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// The tags on a resource.
	//
	// Tags is a required field
	Tags map[string]*string `locationName:"tags" type:"map" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *TagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.Tags == nil {
		invalidParams.Add(request.NewErrParamRequired("Tags"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTags sets the Tags field's value.
func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
	s.Tags = v
	return s
}

type TagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s TagResourceOutput) GoString() string {
	return s.String()
}

// The request is not authorized.
type UnauthorizedException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnauthorizedException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UnauthorizedException) GoString() string {
	return s.String()
}

func newErrorUnauthorizedException(v protocol.ResponseMetadata) error {
	return &UnauthorizedException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *UnauthorizedException) Code() string {
	return "UnauthorizedException"
}

// Message returns the exception's message.
func (s *UnauthorizedException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *UnauthorizedException) OrigErr() error {
	return nil
}

func (s *UnauthorizedException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *UnauthorizedException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *UnauthorizedException) RequestID() string {
	return s.RespMetadata.RequestID
}

type UntagResourceInput struct {
	_ struct{} `type:"structure" nopayload:"true"`

	// The Amazon Resource Name (ARN) of the resource.
	//
	// ResourceArn is a required field
	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`

	// Adds/updates or removes credentials for applications registered with AWS
	// Systems Manager for SAP.
	//
	// TagKeys is a required field
	TagKeys []*string `location:"querystring" locationName:"tagKeys" type:"list" required:"true"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UntagResourceInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
	if s.ResourceArn == nil {
		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
	}
	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
	}
	if s.TagKeys == nil {
		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetResourceArn sets the ResourceArn field's value.
func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
	s.ResourceArn = &v
	return s
}

// SetTagKeys sets the TagKeys field's value.
func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
	s.TagKeys = v
	return s
}

type UntagResourceOutput struct {
	_ struct{} `type:"structure"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UntagResourceOutput) GoString() string {
	return s.String()
}

type UpdateApplicationSettingsInput struct {
	_ struct{} `type:"structure"`

	// The ID of the application.
	//
	// ApplicationId is a required field
	ApplicationId *string `type:"string" required:"true"`

	// Installation of AWS Backint Agent for SAP HANA.
	Backint *BackintConfig `type:"structure"`

	// The credentials to be added or updated.
	CredentialsToAddOrUpdate []*ApplicationCredential `type:"list"`

	// The credentials to be removed.
	CredentialsToRemove []*ApplicationCredential `type:"list"`

	// The Amazon Resource Name of the SAP HANA database that replaces the current
	// SAP HANA connection with the SAP_ABAP application.
	DatabaseArn *string `type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationSettingsInput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationSettingsInput) GoString() string {
	return s.String()
}

// Validate inspects the fields of the type to determine if they are valid.
func (s *UpdateApplicationSettingsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "UpdateApplicationSettingsInput"}
	if s.ApplicationId == nil {
		invalidParams.Add(request.NewErrParamRequired("ApplicationId"))
	}
	if s.Backint != nil {
		if err := s.Backint.Validate(); err != nil {
			invalidParams.AddNested("Backint", err.(request.ErrInvalidParams))
		}
	}
	if s.CredentialsToAddOrUpdate != nil {
		for i, v := range s.CredentialsToAddOrUpdate {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CredentialsToAddOrUpdate", i), err.(request.ErrInvalidParams))
			}
		}
	}
	if s.CredentialsToRemove != nil {
		for i, v := range s.CredentialsToRemove {
			if v == nil {
				continue
			}
			if err := v.Validate(); err != nil {
				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CredentialsToRemove", i), err.(request.ErrInvalidParams))
			}
		}
	}

	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}

// SetApplicationId sets the ApplicationId field's value.
func (s *UpdateApplicationSettingsInput) SetApplicationId(v string) *UpdateApplicationSettingsInput {
	s.ApplicationId = &v
	return s
}

// SetBackint sets the Backint field's value.
func (s *UpdateApplicationSettingsInput) SetBackint(v *BackintConfig) *UpdateApplicationSettingsInput {
	s.Backint = v
	return s
}

// SetCredentialsToAddOrUpdate sets the CredentialsToAddOrUpdate field's value.
func (s *UpdateApplicationSettingsInput) SetCredentialsToAddOrUpdate(v []*ApplicationCredential) *UpdateApplicationSettingsInput {
	s.CredentialsToAddOrUpdate = v
	return s
}

// SetCredentialsToRemove sets the CredentialsToRemove field's value.
func (s *UpdateApplicationSettingsInput) SetCredentialsToRemove(v []*ApplicationCredential) *UpdateApplicationSettingsInput {
	s.CredentialsToRemove = v
	return s
}

// SetDatabaseArn sets the DatabaseArn field's value.
func (s *UpdateApplicationSettingsInput) SetDatabaseArn(v string) *UpdateApplicationSettingsInput {
	s.DatabaseArn = &v
	return s
}

type UpdateApplicationSettingsOutput struct {
	_ struct{} `type:"structure"`

	// The update message.
	Message *string `type:"string"`

	// The IDs of the operations.
	OperationIds []*string `type:"list"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationSettingsOutput) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s UpdateApplicationSettingsOutput) GoString() string {
	return s.String()
}

// SetMessage sets the Message field's value.
func (s *UpdateApplicationSettingsOutput) SetMessage(v string) *UpdateApplicationSettingsOutput {
	s.Message = &v
	return s
}

// SetOperationIds sets the OperationIds field's value.
func (s *UpdateApplicationSettingsOutput) SetOperationIds(v []*string) *UpdateApplicationSettingsOutput {
	s.OperationIds = v
	return s
}

// The input fails to satisfy the constraints specified by an AWS service.
type ValidationException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`

	Message_ *string `locationName:"Message" type:"string"`
}

// String returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationException) String() string {
	return awsutil.Prettify(s)
}

// GoString returns the string representation.
//
// API parameter values that are decorated as "sensitive" in the API will not
// be included in the string output. The member name will be present, but the
// value will be replaced with "sensitive".
func (s ValidationException) GoString() string {
	return s.String()
}

func newErrorValidationException(v protocol.ResponseMetadata) error {
	return &ValidationException{
		RespMetadata: v,
	}
}

// Code returns the exception type name.
func (s *ValidationException) Code() string {
	return "ValidationException"
}

// Message returns the exception's message.
func (s *ValidationException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}

// OrigErr always returns nil, satisfies awserr.Error interface.
func (s *ValidationException) OrigErr() error {
	return nil
}

func (s *ValidationException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}

// Status code returns the HTTP status code for the request's response error.
func (s *ValidationException) StatusCode() int {
	return s.RespMetadata.StatusCode
}

// RequestID returns the service's response RequestID for request.
func (s *ValidationException) RequestID() string {
	return s.RespMetadata.RequestID
}

const (
	// AllocationTypeVpcSubnet is a AllocationType enum value
	AllocationTypeVpcSubnet = "VPC_SUBNET"

	// AllocationTypeElasticIp is a AllocationType enum value
	AllocationTypeElasticIp = "ELASTIC_IP"

	// AllocationTypeOverlay is a AllocationType enum value
	AllocationTypeOverlay = "OVERLAY"

	// AllocationTypeUnknown is a AllocationType enum value
	AllocationTypeUnknown = "UNKNOWN"
)

// AllocationType_Values returns all elements of the AllocationType enum
func AllocationType_Values() []string {
	return []string{
		AllocationTypeVpcSubnet,
		AllocationTypeElasticIp,
		AllocationTypeOverlay,
		AllocationTypeUnknown,
	}
}

const (
	// ApplicationDiscoveryStatusSuccess is a ApplicationDiscoveryStatus enum value
	ApplicationDiscoveryStatusSuccess = "SUCCESS"

	// ApplicationDiscoveryStatusRegistrationFailed is a ApplicationDiscoveryStatus enum value
	ApplicationDiscoveryStatusRegistrationFailed = "REGISTRATION_FAILED"

	// ApplicationDiscoveryStatusRefreshFailed is a ApplicationDiscoveryStatus enum value
	ApplicationDiscoveryStatusRefreshFailed = "REFRESH_FAILED"

	// ApplicationDiscoveryStatusRegistering is a ApplicationDiscoveryStatus enum value
	ApplicationDiscoveryStatusRegistering = "REGISTERING"

	// ApplicationDiscoveryStatusDeleting is a ApplicationDiscoveryStatus enum value
	ApplicationDiscoveryStatusDeleting = "DELETING"
)

// ApplicationDiscoveryStatus_Values returns all elements of the ApplicationDiscoveryStatus enum
func ApplicationDiscoveryStatus_Values() []string {
	return []string{
		ApplicationDiscoveryStatusSuccess,
		ApplicationDiscoveryStatusRegistrationFailed,
		ApplicationDiscoveryStatusRefreshFailed,
		ApplicationDiscoveryStatusRegistering,
		ApplicationDiscoveryStatusDeleting,
	}
}

const (
	// ApplicationStatusActivated is a ApplicationStatus enum value
	ApplicationStatusActivated = "ACTIVATED"

	// ApplicationStatusStarting is a ApplicationStatus enum value
	ApplicationStatusStarting = "STARTING"

	// ApplicationStatusStopped is a ApplicationStatus enum value
	ApplicationStatusStopped = "STOPPED"

	// ApplicationStatusStopping is a ApplicationStatus enum value
	ApplicationStatusStopping = "STOPPING"

	// ApplicationStatusFailed is a ApplicationStatus enum value
	ApplicationStatusFailed = "FAILED"

	// ApplicationStatusRegistering is a ApplicationStatus enum value
	ApplicationStatusRegistering = "REGISTERING"

	// ApplicationStatusDeleting is a ApplicationStatus enum value
	ApplicationStatusDeleting = "DELETING"

	// ApplicationStatusUnknown is a ApplicationStatus enum value
	ApplicationStatusUnknown = "UNKNOWN"
)

// ApplicationStatus_Values returns all elements of the ApplicationStatus enum
func ApplicationStatus_Values() []string {
	return []string{
		ApplicationStatusActivated,
		ApplicationStatusStarting,
		ApplicationStatusStopped,
		ApplicationStatusStopping,
		ApplicationStatusFailed,
		ApplicationStatusRegistering,
		ApplicationStatusDeleting,
		ApplicationStatusUnknown,
	}
}

const (
	// ApplicationTypeHana is a ApplicationType enum value
	ApplicationTypeHana = "HANA"

	// ApplicationTypeSapAbap is a ApplicationType enum value
	ApplicationTypeSapAbap = "SAP_ABAP"
)

// ApplicationType_Values returns all elements of the ApplicationType enum
func ApplicationType_Values() []string {
	return []string{
		ApplicationTypeHana,
		ApplicationTypeSapAbap,
	}
}

const (
	// BackintModeAwsbackup is a BackintMode enum value
	BackintModeAwsbackup = "AWSBackup"
)

// BackintMode_Values returns all elements of the BackintMode enum
func BackintMode_Values() []string {
	return []string{
		BackintModeAwsbackup,
	}
}

const (
	// ClusterStatusOnline is a ClusterStatus enum value
	ClusterStatusOnline = "ONLINE"

	// ClusterStatusStandby is a ClusterStatus enum value
	ClusterStatusStandby = "STANDBY"

	// ClusterStatusMaintenance is a ClusterStatus enum value
	ClusterStatusMaintenance = "MAINTENANCE"

	// ClusterStatusOffline is a ClusterStatus enum value
	ClusterStatusOffline = "OFFLINE"

	// ClusterStatusNone is a ClusterStatus enum value
	ClusterStatusNone = "NONE"
)

// ClusterStatus_Values returns all elements of the ClusterStatus enum
func ClusterStatus_Values() []string {
	return []string{
		ClusterStatusOnline,
		ClusterStatusStandby,
		ClusterStatusMaintenance,
		ClusterStatusOffline,
		ClusterStatusNone,
	}
}

const (
	// ComponentStatusActivated is a ComponentStatus enum value
	ComponentStatusActivated = "ACTIVATED"

	// ComponentStatusStarting is a ComponentStatus enum value
	ComponentStatusStarting = "STARTING"

	// ComponentStatusStopped is a ComponentStatus enum value
	ComponentStatusStopped = "STOPPED"

	// ComponentStatusStopping is a ComponentStatus enum value
	ComponentStatusStopping = "STOPPING"

	// ComponentStatusRunning is a ComponentStatus enum value
	ComponentStatusRunning = "RUNNING"

	// ComponentStatusRunningWithError is a ComponentStatus enum value
	ComponentStatusRunningWithError = "RUNNING_WITH_ERROR"

	// ComponentStatusUndefined is a ComponentStatus enum value
	ComponentStatusUndefined = "UNDEFINED"
)

// ComponentStatus_Values returns all elements of the ComponentStatus enum
func ComponentStatus_Values() []string {
	return []string{
		ComponentStatusActivated,
		ComponentStatusStarting,
		ComponentStatusStopped,
		ComponentStatusStopping,
		ComponentStatusRunning,
		ComponentStatusRunningWithError,
		ComponentStatusUndefined,
	}
}

const (
	// ComponentTypeHana is a ComponentType enum value
	ComponentTypeHana = "HANA"

	// ComponentTypeHanaNode is a ComponentType enum value
	ComponentTypeHanaNode = "HANA_NODE"

	// ComponentTypeAbap is a ComponentType enum value
	ComponentTypeAbap = "ABAP"

	// ComponentTypeAscs is a ComponentType enum value
	ComponentTypeAscs = "ASCS"

	// ComponentTypeDialog is a ComponentType enum value
	ComponentTypeDialog = "DIALOG"

	// ComponentTypeWebdisp is a ComponentType enum value
	ComponentTypeWebdisp = "WEBDISP"

	// ComponentTypeWd is a ComponentType enum value
	ComponentTypeWd = "WD"

	// ComponentTypeErs is a ComponentType enum value
	ComponentTypeErs = "ERS"
)

// ComponentType_Values returns all elements of the ComponentType enum
func ComponentType_Values() []string {
	return []string{
		ComponentTypeHana,
		ComponentTypeHanaNode,
		ComponentTypeAbap,
		ComponentTypeAscs,
		ComponentTypeDialog,
		ComponentTypeWebdisp,
		ComponentTypeWd,
		ComponentTypeErs,
	}
}

const (
	// CredentialTypeAdmin is a CredentialType enum value
	CredentialTypeAdmin = "ADMIN"
)

// CredentialType_Values returns all elements of the CredentialType enum
func CredentialType_Values() []string {
	return []string{
		CredentialTypeAdmin,
	}
}

const (
	// DatabaseConnectionMethodDirect is a DatabaseConnectionMethod enum value
	DatabaseConnectionMethodDirect = "DIRECT"

	// DatabaseConnectionMethodOverlay is a DatabaseConnectionMethod enum value
	DatabaseConnectionMethodOverlay = "OVERLAY"
)

// DatabaseConnectionMethod_Values returns all elements of the DatabaseConnectionMethod enum
func DatabaseConnectionMethod_Values() []string {
	return []string{
		DatabaseConnectionMethodDirect,
		DatabaseConnectionMethodOverlay,
	}
}

const (
	// DatabaseStatusRunning is a DatabaseStatus enum value
	DatabaseStatusRunning = "RUNNING"

	// DatabaseStatusStarting is a DatabaseStatus enum value
	DatabaseStatusStarting = "STARTING"

	// DatabaseStatusStopped is a DatabaseStatus enum value
	DatabaseStatusStopped = "STOPPED"

	// DatabaseStatusWarning is a DatabaseStatus enum value
	DatabaseStatusWarning = "WARNING"

	// DatabaseStatusUnknown is a DatabaseStatus enum value
	DatabaseStatusUnknown = "UNKNOWN"

	// DatabaseStatusError is a DatabaseStatus enum value
	DatabaseStatusError = "ERROR"
)

// DatabaseStatus_Values returns all elements of the DatabaseStatus enum
func DatabaseStatus_Values() []string {
	return []string{
		DatabaseStatusRunning,
		DatabaseStatusStarting,
		DatabaseStatusStopped,
		DatabaseStatusWarning,
		DatabaseStatusUnknown,
		DatabaseStatusError,
	}
}

const (
	// DatabaseTypeSystem is a DatabaseType enum value
	DatabaseTypeSystem = "SYSTEM"

	// DatabaseTypeTenant is a DatabaseType enum value
	DatabaseTypeTenant = "TENANT"
)

// DatabaseType_Values returns all elements of the DatabaseType enum
func DatabaseType_Values() []string {
	return []string{
		DatabaseTypeSystem,
		DatabaseTypeTenant,
	}
}

const (
	// FilterOperatorEquals is a FilterOperator enum value
	FilterOperatorEquals = "Equals"

	// FilterOperatorGreaterThanOrEquals is a FilterOperator enum value
	FilterOperatorGreaterThanOrEquals = "GreaterThanOrEquals"

	// FilterOperatorLessThanOrEquals is a FilterOperator enum value
	FilterOperatorLessThanOrEquals = "LessThanOrEquals"
)

// FilterOperator_Values returns all elements of the FilterOperator enum
func FilterOperator_Values() []string {
	return []string{
		FilterOperatorEquals,
		FilterOperatorGreaterThanOrEquals,
		FilterOperatorLessThanOrEquals,
	}
}

const (
	// HostRoleLeader is a HostRole enum value
	HostRoleLeader = "LEADER"

	// HostRoleWorker is a HostRole enum value
	HostRoleWorker = "WORKER"

	// HostRoleStandby is a HostRole enum value
	HostRoleStandby = "STANDBY"

	// HostRoleUnknown is a HostRole enum value
	HostRoleUnknown = "UNKNOWN"
)

// HostRole_Values returns all elements of the HostRole enum
func HostRole_Values() []string {
	return []string{
		HostRoleLeader,
		HostRoleWorker,
		HostRoleStandby,
		HostRoleUnknown,
	}
}

const (
	// OperationModePrimary is a OperationMode enum value
	OperationModePrimary = "PRIMARY"

	// OperationModeLogreplay is a OperationMode enum value
	OperationModeLogreplay = "LOGREPLAY"

	// OperationModeDeltaDatashipping is a OperationMode enum value
	OperationModeDeltaDatashipping = "DELTA_DATASHIPPING"

	// OperationModeLogreplayReadaccess is a OperationMode enum value
	OperationModeLogreplayReadaccess = "LOGREPLAY_READACCESS"

	// OperationModeNone is a OperationMode enum value
	OperationModeNone = "NONE"
)

// OperationMode_Values returns all elements of the OperationMode enum
func OperationMode_Values() []string {
	return []string{
		OperationModePrimary,
		OperationModeLogreplay,
		OperationModeDeltaDatashipping,
		OperationModeLogreplayReadaccess,
		OperationModeNone,
	}
}

const (
	// OperationStatusInprogress is a OperationStatus enum value
	OperationStatusInprogress = "INPROGRESS"

	// OperationStatusSuccess is a OperationStatus enum value
	OperationStatusSuccess = "SUCCESS"

	// OperationStatusError is a OperationStatus enum value
	OperationStatusError = "ERROR"
)

// OperationStatus_Values returns all elements of the OperationStatus enum
func OperationStatus_Values() []string {
	return []string{
		OperationStatusInprogress,
		OperationStatusSuccess,
		OperationStatusError,
	}
}

const (
	// PermissionActionTypeRestore is a PermissionActionType enum value
	PermissionActionTypeRestore = "RESTORE"
)

// PermissionActionType_Values returns all elements of the PermissionActionType enum
func PermissionActionType_Values() []string {
	return []string{
		PermissionActionTypeRestore,
	}
}

const (
	// ReplicationModePrimary is a ReplicationMode enum value
	ReplicationModePrimary = "PRIMARY"

	// ReplicationModeNone is a ReplicationMode enum value
	ReplicationModeNone = "NONE"

	// ReplicationModeSync is a ReplicationMode enum value
	ReplicationModeSync = "SYNC"

	// ReplicationModeSyncmem is a ReplicationMode enum value
	ReplicationModeSyncmem = "SYNCMEM"

	// ReplicationModeAsync is a ReplicationMode enum value
	ReplicationModeAsync = "ASYNC"
)

// ReplicationMode_Values returns all elements of the ReplicationMode enum
func ReplicationMode_Values() []string {
	return []string{
		ReplicationModePrimary,
		ReplicationModeNone,
		ReplicationModeSync,
		ReplicationModeSyncmem,
		ReplicationModeAsync,
	}
}
© 2026 GrazzMean
Beegazpacho


Let’s  Start  Your  Online  Journey  with  Beegazpacho 

Welcome to Beegazpacho,
where creativity meets strategy,
and innovation drives success.


Contact
Now


OUR CLIENTS

WhatsApp-Image-2021-12-06.png
Untitled-design-11.png
niaf-logo.png
20220406-163308-scaled.jpg
karchi-logo.png
20220405-171252.png
20220405-171309.png
20220321-161603.png
20220321-161611.png
20220321-161628.png
20220321-161244.png
20220321-161256.png
20220321-161450.png
20220321-161205.png
20220226-170222.png
20220321-161051.png
20211202-170852.png
Untitled-design-9
pidilite-png-logo-colour
logo-black-e1706125740216-qisosldqhzgcaerhdt6n4t3m4s50jr0iik48z0h5vk
Fraikin-Dayim-logo-1
hpcl-logo-2-1
services

Transforming Ideas into
Success

.01
Digital Marketing

We drive growth through data-driven strategies and cutting-edge techniques.

Learn More

.02
SEO

Improve your online visibility and rank higher on search engines with our expert SEO services.

Learn More

.03
Website Designing

We design websites that are not only visually stunning but also user-centric, ensuring seamless navigation and enhanced user experience.

Learn More

.04
App Development

Our apps are crafted to be intuitive, engaging, and functional, providing your users with an exceptional mobile experience.

Learn More

.05
Social Media Ads

Target the right audience with precision and creativity to maximize engagement and conversions.

Learn More

.06
Google Ads

Maximize ROI with precision-targeted campaigns on Google’s powerful ad platform.

Learn More

.07
Google My Business

Optimize your local presence with strategies that put your business on the map and attract more customers.

Learn More

.08
Graphic Designing

Our designs tell your brand’s story in a visually compelling way.

Learn More

.09
3D Videos

Bring your product to life with immersive and dynamic 3D explainer videos.

Learn More

about BEEGAZPACHO

creating special Things
For special brands

Join the ranks of successful brands by partnering with Beegazpacho

00+

Happy Customer

00+

Continents

Our vision is not just to be a service provider but to be your partner in growth. We see ourselves as an extension of your team, working tirelessly to ensure that your brand not only meets its goals but surpasses them.

Explore
more

Our Recent Work

Crafted with Passion and Precision

Connect now


Web Design
Design, Development & Identity

Logo Design
Design, Development & Identity

Creative Brand design
Design, Development & Identity

Product Design Marketing
Design, Development & Identity

DIGITAL MARKETING
SEO
WEBSITE DESIGNING
APP DEVELOPMENT
SOCIAL MEDIA ADS
GOOGLE ADS
GOOGLE MY BUSINESS
GRAPHIC DESINING
3D VIDEOS
Client Stories

Hear It from Those Who Know Us Best

Our clients’ success stories speak volumes about our commitment to excellence. Don’t just take our word for it—hear directly from the brands we’ve partnered with. Their testimonials highlight our ability to bring visions to life and create a lasting impact on their businesses.

“Beegazpacho feels like an extension of our team. Their content marketing and social media expertise have elevated our brand. They listen, adapt, and always deliver on time. We look forward to continuing this partnership.”

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

“Beegazpacho’s data-driven strategies helped us improve our online ads, optimize our website, and enhance branding. We’ve seen great ROI and increased visibility. Their professionalism is unmatched.”

— Arvind Shah

CEO, InnovateTech Solutions

“Partnering with Beegazpacho has been a game-changer for our brand. Their creative ad campaigns and SEO services have boosted our online presence and significantly increased leads and sales. We couldn’t ask for a better partner!”

— Rina Kapoor

Marketing Director, Luxury Home Interiors

“Beegazpacho feels like an extension of our team. Their content marketing and social media expertise have elevated our brand. They listen, adapt, and always deliver on time. We look forward to continuing this partnership.”

— Sarah Williams

Head of Marketing, GreenPlanet Apparel

“Beegazpacho’s data-driven strategies helped us improve our online ads, optimize our website, and enhance branding. We’ve seen great ROI and increased visibility. Their professionalism is unmatched.”

— Arvind Shah

CEO, InnovateTech Solutions

“Partnering with Beegazpacho has been a game-changer for our brand. Their creative ad campaigns and SEO services have boosted our online presence and significantly increased leads and sales. We couldn’t ask for a better partner!”

— Rina Kapoor

Marketing Director, Luxury Home Interiors