func (s *ListAccountsOutput) SetAccountList(v []*AccountInfo) *ListAccountsOutput {
	s.AccountList = v
	return s
}
SetAccountList sets the AccountList field's value.
package sso
import (
	"fmt"
	"github.com/aws/aws-sdk-go/aws"
	"github.com/aws/aws-sdk-go/aws/awsutil"
	"github.com/aws/aws-sdk-go/aws/credentials"
	"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 opGetRoleCredentials = "GetRoleCredentials"
func (c *SSO) GetRoleCredentialsRequest(input *GetRoleCredentialsInput) (req *request.Request, output *GetRoleCredentialsOutput) {
	op := &request.Operation{
		Name:       opGetRoleCredentials,
		HTTPMethod: "GET",
		HTTPPath:   "/federation/credentials",
	}
	if input == nil {
		input = &GetRoleCredentialsInput{}
	}
	output = &GetRoleCredentialsOutput{}
	req = c.newRequest(op, input, output)
	req.Config.Credentials = credentials.AnonymousCredentials
	return
}
func (c *SSO) GetRoleCredentials(input *GetRoleCredentialsInput) (*GetRoleCredentialsOutput, error) {
	req, out := c.GetRoleCredentialsRequest(input)
	return out, req.Send()
}
func (c *SSO) GetRoleCredentialsWithContext(ctx aws.Context, input *GetRoleCredentialsInput, opts ...request.Option) (*GetRoleCredentialsOutput, error) {
	req, out := c.GetRoleCredentialsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}
const opListAccountRoles = "ListAccountRoles"
func (c *SSO) ListAccountRolesRequest(input *ListAccountRolesInput) (req *request.Request, output *ListAccountRolesOutput) {
	op := &request.Operation{
		Name:       opListAccountRoles,
		HTTPMethod: "GET",
		HTTPPath:   "/assignment/roles",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}
	if input == nil {
		input = &ListAccountRolesInput{}
	}
	output = &ListAccountRolesOutput{}
	req = c.newRequest(op, input, output)
	req.Config.Credentials = credentials.AnonymousCredentials
	return
}
func (c *SSO) ListAccountRoles(input *ListAccountRolesInput) (*ListAccountRolesOutput, error) {
	req, out := c.ListAccountRolesRequest(input)
	return out, req.Send()
}
func (c *SSO) ListAccountRolesWithContext(ctx aws.Context, input *ListAccountRolesInput, opts ...request.Option) (*ListAccountRolesOutput, error) {
	req, out := c.ListAccountRolesRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}
func (c *SSO) ListAccountRolesPages(input *ListAccountRolesInput, fn func(*ListAccountRolesOutput, bool) bool) error {
	return c.ListAccountRolesPagesWithContext(aws.BackgroundContext(), input, fn)
}
func (c *SSO) ListAccountRolesPagesWithContext(ctx aws.Context, input *ListAccountRolesInput, fn func(*ListAccountRolesOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListAccountRolesInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListAccountRolesRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}
	for p.Next() {
		if !fn(p.Page().(*ListAccountRolesOutput), !p.HasNextPage()) {
			break
		}
	}
	return p.Err()
}
const opListAccounts = "ListAccounts"
func (c *SSO) ListAccountsRequest(input *ListAccountsInput) (req *request.Request, output *ListAccountsOutput) {
	op := &request.Operation{
		Name:       opListAccounts,
		HTTPMethod: "GET",
		HTTPPath:   "/assignment/accounts",
		Paginator: &request.Paginator{
			InputTokens:     []string{"nextToken"},
			OutputTokens:    []string{"nextToken"},
			LimitToken:      "maxResults",
			TruncationToken: "",
		},
	}
	if input == nil {
		input = &ListAccountsInput{}
	}
	output = &ListAccountsOutput{}
	req = c.newRequest(op, input, output)
	req.Config.Credentials = credentials.AnonymousCredentials
	return
}
func (c *SSO) ListAccounts(input *ListAccountsInput) (*ListAccountsOutput, error) {
	req, out := c.ListAccountsRequest(input)
	return out, req.Send()
}
func (c *SSO) ListAccountsWithContext(ctx aws.Context, input *ListAccountsInput, opts ...request.Option) (*ListAccountsOutput, error) {
	req, out := c.ListAccountsRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}
func (c *SSO) ListAccountsPages(input *ListAccountsInput, fn func(*ListAccountsOutput, bool) bool) error {
	return c.ListAccountsPagesWithContext(aws.BackgroundContext(), input, fn)
}
func (c *SSO) ListAccountsPagesWithContext(ctx aws.Context, input *ListAccountsInput, fn func(*ListAccountsOutput, bool) bool, opts ...request.Option) error {
	p := request.Pagination{
		NewRequest: func() (*request.Request, error) {
			var inCpy *ListAccountsInput
			if input != nil {
				tmp := *input
				inCpy = &tmp
			}
			req, _ := c.ListAccountsRequest(inCpy)
			req.SetContext(ctx)
			req.ApplyOptions(opts...)
			return req, nil
		},
	}
	for p.Next() {
		if !fn(p.Page().(*ListAccountsOutput), !p.HasNextPage()) {
			break
		}
	}
	return p.Err()
}
const opLogout = "Logout"
func (c *SSO) LogoutRequest(input *LogoutInput) (req *request.Request, output *LogoutOutput) {
	op := &request.Operation{
		Name:       opLogout,
		HTTPMethod: "POST",
		HTTPPath:   "/logout",
	}
	if input == nil {
		input = &LogoutInput{}
	}
	output = &LogoutOutput{}
	req = c.newRequest(op, input, output)
	req.Config.Credentials = credentials.AnonymousCredentials
	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
	return
}
func (c *SSO) Logout(input *LogoutInput) (*LogoutOutput, error) {
	req, out := c.LogoutRequest(input)
	return out, req.Send()
}
func (c *SSO) LogoutWithContext(ctx aws.Context, input *LogoutInput, opts ...request.Option) (*LogoutOutput, error) {
	req, out := c.LogoutRequest(input)
	req.SetContext(ctx)
	req.ApplyOptions(opts...)
	return out, req.Send()
}
type AccountInfo struct {
	_ struct{} `type:"structure"`
	AccountId *string `locationName:"accountId" type:"string"`
	AccountName *string `locationName:"accountName" type:"string"`
	EmailAddress *string `locationName:"emailAddress" min:"1" type:"string"`
}
func (s AccountInfo) String() string {
	return awsutil.Prettify(s)
}
func (s AccountInfo) GoString() string {
	return s.String()
}
func (s *AccountInfo) SetAccountId(v string) *AccountInfo {
	s.AccountId = &v
	return s
}
func (s *AccountInfo) SetAccountName(v string) *AccountInfo {
	s.AccountName = &v
	return s
}
func (s *AccountInfo) SetEmailAddress(v string) *AccountInfo {
	s.EmailAddress = &v
	return s
}
type GetRoleCredentialsInput struct {
	_ struct{} `type:"structure"`
	AccessToken *string `location:"header" locationName:"x-amz-sso_bearer_token" type:"string" required:"true" sensitive:"true"`
	AccountId *string `location:"querystring" locationName:"account_id" type:"string" required:"true"`
	RoleName *string `location:"querystring" locationName:"role_name" type:"string" required:"true"`
}
func (s GetRoleCredentialsInput) String() string {
	return awsutil.Prettify(s)
}
func (s GetRoleCredentialsInput) GoString() string {
	return s.String()
}
func (s *GetRoleCredentialsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "GetRoleCredentialsInput"}
	if s.AccessToken == nil {
		invalidParams.Add(request.NewErrParamRequired("AccessToken"))
	}
	if s.AccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountId"))
	}
	if s.RoleName == nil {
		invalidParams.Add(request.NewErrParamRequired("RoleName"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}
func (s *GetRoleCredentialsInput) SetAccessToken(v string) *GetRoleCredentialsInput {
	s.AccessToken = &v
	return s
}
func (s *GetRoleCredentialsInput) SetAccountId(v string) *GetRoleCredentialsInput {
	s.AccountId = &v
	return s
}
func (s *GetRoleCredentialsInput) SetRoleName(v string) *GetRoleCredentialsInput {
	s.RoleName = &v
	return s
}
type GetRoleCredentialsOutput struct {
	_ struct{} `type:"structure"`
	RoleCredentials *RoleCredentials `locationName:"roleCredentials" type:"structure"`
}
func (s GetRoleCredentialsOutput) String() string {
	return awsutil.Prettify(s)
}
func (s GetRoleCredentialsOutput) GoString() string {
	return s.String()
}
func (s *GetRoleCredentialsOutput) SetRoleCredentials(v *RoleCredentials) *GetRoleCredentialsOutput {
	s.RoleCredentials = v
	return s
}
type InvalidRequestException struct {
	_            struct{}                  `type:"structure"`
	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
	Message_ *string `locationName:"message" type:"string"`
}
func (s InvalidRequestException) String() string {
	return awsutil.Prettify(s)
}
func (s InvalidRequestException) GoString() string {
	return s.String()
}
func newErrorInvalidRequestException(v protocol.ResponseMetadata) error {
	return &InvalidRequestException{
		RespMetadata: v,
	}
}
func (s *InvalidRequestException) Code() string {
	return "InvalidRequestException"
}
func (s *InvalidRequestException) Message() string {
	if s.Message_ != nil {
		return *s.Message_
	}
	return ""
}
func (s *InvalidRequestException) OrigErr() error {
	return nil
}
func (s *InvalidRequestException) Error() string {
	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
}
func (s *InvalidRequestException) StatusCode() int {
	return s.RespMetadata.StatusCode
}
func (s *InvalidRequestException) RequestID() string {
	return s.RespMetadata.RequestID
}
type ListAccountRolesInput struct {
	_ struct{} `type:"structure"`
	AccessToken *string `location:"header" locationName:"x-amz-sso_bearer_token" type:"string" required:"true" sensitive:"true"`
	AccountId *string `location:"querystring" locationName:"account_id" type:"string" required:"true"`
	MaxResults *int64 `location:"querystring" locationName:"max_result" min:"1" type:"integer"`
	NextToken *string `location:"querystring" locationName:"next_token" type:"string"`
}
func (s ListAccountRolesInput) String() string {
	return awsutil.Prettify(s)
}
func (s ListAccountRolesInput) GoString() string {
	return s.String()
}
func (s *ListAccountRolesInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAccountRolesInput"}
	if s.AccessToken == nil {
		invalidParams.Add(request.NewErrParamRequired("AccessToken"))
	}
	if s.AccountId == nil {
		invalidParams.Add(request.NewErrParamRequired("AccountId"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}
func (s *ListAccountRolesInput) SetAccessToken(v string) *ListAccountRolesInput {
	s.AccessToken = &v
	return s
}
func (s *ListAccountRolesInput) SetAccountId(v string) *ListAccountRolesInput {
	s.AccountId = &v
	return s
}
func (s *ListAccountRolesInput) SetMaxResults(v int64) *ListAccountRolesInput {
	s.MaxResults = &v
	return s
}
func (s *ListAccountRolesInput) SetNextToken(v string) *ListAccountRolesInput {
	s.NextToken = &v
	return s
}
type ListAccountRolesOutput struct {
	_ struct{} `type:"structure"`
	NextToken *string `locationName:"nextToken" type:"string"`
	RoleList []*RoleInfo `locationName:"roleList" type:"list"`
}
func (s ListAccountRolesOutput) String() string {
	return awsutil.Prettify(s)
}
func (s ListAccountRolesOutput) GoString() string {
	return s.String()
}
func (s *ListAccountRolesOutput) SetNextToken(v string) *ListAccountRolesOutput {
	s.NextToken = &v
	return s
}
func (s *ListAccountRolesOutput) SetRoleList(v []*RoleInfo) *ListAccountRolesOutput {
	s.RoleList = v
	return s
}
type ListAccountsInput struct {
	_ struct{} `type:"structure"`
	AccessToken *string `location:"header" locationName:"x-amz-sso_bearer_token" type:"string" required:"true" sensitive:"true"`
	MaxResults *int64 `location:"querystring" locationName:"max_result" min:"1" type:"integer"`
	NextToken *string `location:"querystring" locationName:"next_token" type:"string"`
}
func (s ListAccountsInput) String() string {
	return awsutil.Prettify(s)
}
func (s ListAccountsInput) GoString() string {
	return s.String()
}
func (s *ListAccountsInput) Validate() error {
	invalidParams := request.ErrInvalidParams{Context: "ListAccountsInput"}
	if s.AccessToken == nil {
		invalidParams.Add(request.NewErrParamRequired("AccessToken"))
	}
	if s.MaxResults != nil && *s.MaxResults < 1 {
		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	}
	return nil
}
func (s *ListAccountsInput) SetAccessToken(v string) *ListAccountsInput {
	s.AccessToken = &v
	return s
}
func (s *ListAccountsInput) SetMaxResults(v int64) *ListAccountsInput {
	s.MaxResults = &v
	return s
}
func (s *ListAccountsInput) SetNextToken(v string) *ListAccountsInput {
	s.NextToken = &v
	return s
}
type ListAccountsOutput struct {
	_ struct{} `type:"structure"`
	AccountList []*AccountInfo `locationName:"accountList" type:"list"`
	NextToken *string `locationName:"nextToken" type:"string"`
}
func (s ListAccountsOutput) String() string {
	return awsutil.Prettify(s)
}
func (s ListAccountsOutput) GoString() string {
	return s.String()
}