deserializers.go raw

   1  // Code generated by smithy-go-codegen DO NOT EDIT.
   2  
   3  package ssooidc
   4  
   5  import (
   6  	"bytes"
   7  	"context"
   8  	"encoding/json"
   9  	"fmt"
  10  	"github.com/aws/aws-sdk-go-v2/aws/protocol/restjson"
  11  	"github.com/aws/aws-sdk-go-v2/service/ssooidc/types"
  12  	smithy "github.com/aws/smithy-go"
  13  	smithyio "github.com/aws/smithy-go/io"
  14  	"github.com/aws/smithy-go/middleware"
  15  	"github.com/aws/smithy-go/ptr"
  16  	"github.com/aws/smithy-go/tracing"
  17  	smithyhttp "github.com/aws/smithy-go/transport/http"
  18  	"io"
  19  	"strings"
  20  )
  21  
  22  type awsRestjson1_deserializeOpCreateToken struct {
  23  }
  24  
  25  func (*awsRestjson1_deserializeOpCreateToken) ID() string {
  26  	return "OperationDeserializer"
  27  }
  28  
  29  func (m *awsRestjson1_deserializeOpCreateToken) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
  30  	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
  31  ) {
  32  	out, metadata, err = next.HandleDeserialize(ctx, in)
  33  	if err != nil {
  34  		return out, metadata, err
  35  	}
  36  
  37  	_, span := tracing.StartSpan(ctx, "OperationDeserializer")
  38  	endTimer := startMetricTimer(ctx, "client.call.deserialization_duration")
  39  	defer endTimer()
  40  	defer span.End()
  41  	response, ok := out.RawResponse.(*smithyhttp.Response)
  42  	if !ok {
  43  		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
  44  	}
  45  
  46  	if response.StatusCode < 200 || response.StatusCode >= 300 {
  47  		return out, metadata, awsRestjson1_deserializeOpErrorCreateToken(response, &metadata)
  48  	}
  49  	output := &CreateTokenOutput{}
  50  	out.Result = output
  51  
  52  	var buff [1024]byte
  53  	ringBuffer := smithyio.NewRingBuffer(buff[:])
  54  
  55  	body := io.TeeReader(response.Body, ringBuffer)
  56  
  57  	decoder := json.NewDecoder(body)
  58  	decoder.UseNumber()
  59  	var shape interface{}
  60  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
  61  		var snapshot bytes.Buffer
  62  		io.Copy(&snapshot, ringBuffer)
  63  		err = &smithy.DeserializationError{
  64  			Err:      fmt.Errorf("failed to decode response body, %w", err),
  65  			Snapshot: snapshot.Bytes(),
  66  		}
  67  		return out, metadata, err
  68  	}
  69  
  70  	err = awsRestjson1_deserializeOpDocumentCreateTokenOutput(&output, shape)
  71  	if err != nil {
  72  		var snapshot bytes.Buffer
  73  		io.Copy(&snapshot, ringBuffer)
  74  		return out, metadata, &smithy.DeserializationError{
  75  			Err:      fmt.Errorf("failed to decode response body with invalid JSON, %w", err),
  76  			Snapshot: snapshot.Bytes(),
  77  		}
  78  	}
  79  
  80  	span.End()
  81  	return out, metadata, err
  82  }
  83  
  84  func awsRestjson1_deserializeOpErrorCreateToken(response *smithyhttp.Response, metadata *middleware.Metadata) error {
  85  	var errorBuffer bytes.Buffer
  86  	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
  87  		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
  88  	}
  89  	errorBody := bytes.NewReader(errorBuffer.Bytes())
  90  
  91  	errorCode := "UnknownError"
  92  	errorMessage := errorCode
  93  
  94  	headerCode := response.Header.Get("X-Amzn-ErrorType")
  95  	if len(headerCode) != 0 {
  96  		errorCode = restjson.SanitizeErrorCode(headerCode)
  97  	}
  98  
  99  	var buff [1024]byte
 100  	ringBuffer := smithyio.NewRingBuffer(buff[:])
 101  
 102  	body := io.TeeReader(errorBody, ringBuffer)
 103  	decoder := json.NewDecoder(body)
 104  	decoder.UseNumber()
 105  	jsonCode, message, err := restjson.GetErrorInfo(decoder)
 106  	if err != nil {
 107  		var snapshot bytes.Buffer
 108  		io.Copy(&snapshot, ringBuffer)
 109  		err = &smithy.DeserializationError{
 110  			Err:      fmt.Errorf("failed to decode response body, %w", err),
 111  			Snapshot: snapshot.Bytes(),
 112  		}
 113  		return err
 114  	}
 115  
 116  	errorBody.Seek(0, io.SeekStart)
 117  	if len(headerCode) == 0 && len(jsonCode) != 0 {
 118  		errorCode = restjson.SanitizeErrorCode(jsonCode)
 119  	}
 120  	if len(message) != 0 {
 121  		errorMessage = message
 122  	}
 123  
 124  	switch {
 125  	case strings.EqualFold("AccessDeniedException", errorCode):
 126  		return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody)
 127  
 128  	case strings.EqualFold("AuthorizationPendingException", errorCode):
 129  		return awsRestjson1_deserializeErrorAuthorizationPendingException(response, errorBody)
 130  
 131  	case strings.EqualFold("ExpiredTokenException", errorCode):
 132  		return awsRestjson1_deserializeErrorExpiredTokenException(response, errorBody)
 133  
 134  	case strings.EqualFold("InternalServerException", errorCode):
 135  		return awsRestjson1_deserializeErrorInternalServerException(response, errorBody)
 136  
 137  	case strings.EqualFold("InvalidClientException", errorCode):
 138  		return awsRestjson1_deserializeErrorInvalidClientException(response, errorBody)
 139  
 140  	case strings.EqualFold("InvalidGrantException", errorCode):
 141  		return awsRestjson1_deserializeErrorInvalidGrantException(response, errorBody)
 142  
 143  	case strings.EqualFold("InvalidRequestException", errorCode):
 144  		return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody)
 145  
 146  	case strings.EqualFold("InvalidScopeException", errorCode):
 147  		return awsRestjson1_deserializeErrorInvalidScopeException(response, errorBody)
 148  
 149  	case strings.EqualFold("SlowDownException", errorCode):
 150  		return awsRestjson1_deserializeErrorSlowDownException(response, errorBody)
 151  
 152  	case strings.EqualFold("UnauthorizedClientException", errorCode):
 153  		return awsRestjson1_deserializeErrorUnauthorizedClientException(response, errorBody)
 154  
 155  	case strings.EqualFold("UnsupportedGrantTypeException", errorCode):
 156  		return awsRestjson1_deserializeErrorUnsupportedGrantTypeException(response, errorBody)
 157  
 158  	default:
 159  		genericError := &smithy.GenericAPIError{
 160  			Code:    errorCode,
 161  			Message: errorMessage,
 162  		}
 163  		return genericError
 164  
 165  	}
 166  }
 167  
 168  func awsRestjson1_deserializeOpDocumentCreateTokenOutput(v **CreateTokenOutput, value interface{}) error {
 169  	if v == nil {
 170  		return fmt.Errorf("unexpected nil of type %T", v)
 171  	}
 172  	if value == nil {
 173  		return nil
 174  	}
 175  
 176  	shape, ok := value.(map[string]interface{})
 177  	if !ok {
 178  		return fmt.Errorf("unexpected JSON type %v", value)
 179  	}
 180  
 181  	var sv *CreateTokenOutput
 182  	if *v == nil {
 183  		sv = &CreateTokenOutput{}
 184  	} else {
 185  		sv = *v
 186  	}
 187  
 188  	for key, value := range shape {
 189  		switch key {
 190  		case "accessToken":
 191  			if value != nil {
 192  				jtv, ok := value.(string)
 193  				if !ok {
 194  					return fmt.Errorf("expected AccessToken to be of type string, got %T instead", value)
 195  				}
 196  				sv.AccessToken = ptr.String(jtv)
 197  			}
 198  
 199  		case "expiresIn":
 200  			if value != nil {
 201  				jtv, ok := value.(json.Number)
 202  				if !ok {
 203  					return fmt.Errorf("expected ExpirationInSeconds to be json.Number, got %T instead", value)
 204  				}
 205  				i64, err := jtv.Int64()
 206  				if err != nil {
 207  					return err
 208  				}
 209  				sv.ExpiresIn = int32(i64)
 210  			}
 211  
 212  		case "idToken":
 213  			if value != nil {
 214  				jtv, ok := value.(string)
 215  				if !ok {
 216  					return fmt.Errorf("expected IdToken to be of type string, got %T instead", value)
 217  				}
 218  				sv.IdToken = ptr.String(jtv)
 219  			}
 220  
 221  		case "refreshToken":
 222  			if value != nil {
 223  				jtv, ok := value.(string)
 224  				if !ok {
 225  					return fmt.Errorf("expected RefreshToken to be of type string, got %T instead", value)
 226  				}
 227  				sv.RefreshToken = ptr.String(jtv)
 228  			}
 229  
 230  		case "tokenType":
 231  			if value != nil {
 232  				jtv, ok := value.(string)
 233  				if !ok {
 234  					return fmt.Errorf("expected TokenType to be of type string, got %T instead", value)
 235  				}
 236  				sv.TokenType = ptr.String(jtv)
 237  			}
 238  
 239  		default:
 240  			_, _ = key, value
 241  
 242  		}
 243  	}
 244  	*v = sv
 245  	return nil
 246  }
 247  
 248  type awsRestjson1_deserializeOpCreateTokenWithIAM struct {
 249  }
 250  
 251  func (*awsRestjson1_deserializeOpCreateTokenWithIAM) ID() string {
 252  	return "OperationDeserializer"
 253  }
 254  
 255  func (m *awsRestjson1_deserializeOpCreateTokenWithIAM) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
 256  	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
 257  ) {
 258  	out, metadata, err = next.HandleDeserialize(ctx, in)
 259  	if err != nil {
 260  		return out, metadata, err
 261  	}
 262  
 263  	_, span := tracing.StartSpan(ctx, "OperationDeserializer")
 264  	endTimer := startMetricTimer(ctx, "client.call.deserialization_duration")
 265  	defer endTimer()
 266  	defer span.End()
 267  	response, ok := out.RawResponse.(*smithyhttp.Response)
 268  	if !ok {
 269  		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
 270  	}
 271  
 272  	if response.StatusCode < 200 || response.StatusCode >= 300 {
 273  		return out, metadata, awsRestjson1_deserializeOpErrorCreateTokenWithIAM(response, &metadata)
 274  	}
 275  	output := &CreateTokenWithIAMOutput{}
 276  	out.Result = output
 277  
 278  	var buff [1024]byte
 279  	ringBuffer := smithyio.NewRingBuffer(buff[:])
 280  
 281  	body := io.TeeReader(response.Body, ringBuffer)
 282  
 283  	decoder := json.NewDecoder(body)
 284  	decoder.UseNumber()
 285  	var shape interface{}
 286  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
 287  		var snapshot bytes.Buffer
 288  		io.Copy(&snapshot, ringBuffer)
 289  		err = &smithy.DeserializationError{
 290  			Err:      fmt.Errorf("failed to decode response body, %w", err),
 291  			Snapshot: snapshot.Bytes(),
 292  		}
 293  		return out, metadata, err
 294  	}
 295  
 296  	err = awsRestjson1_deserializeOpDocumentCreateTokenWithIAMOutput(&output, shape)
 297  	if err != nil {
 298  		var snapshot bytes.Buffer
 299  		io.Copy(&snapshot, ringBuffer)
 300  		return out, metadata, &smithy.DeserializationError{
 301  			Err:      fmt.Errorf("failed to decode response body with invalid JSON, %w", err),
 302  			Snapshot: snapshot.Bytes(),
 303  		}
 304  	}
 305  
 306  	span.End()
 307  	return out, metadata, err
 308  }
 309  
 310  func awsRestjson1_deserializeOpErrorCreateTokenWithIAM(response *smithyhttp.Response, metadata *middleware.Metadata) error {
 311  	var errorBuffer bytes.Buffer
 312  	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
 313  		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
 314  	}
 315  	errorBody := bytes.NewReader(errorBuffer.Bytes())
 316  
 317  	errorCode := "UnknownError"
 318  	errorMessage := errorCode
 319  
 320  	headerCode := response.Header.Get("X-Amzn-ErrorType")
 321  	if len(headerCode) != 0 {
 322  		errorCode = restjson.SanitizeErrorCode(headerCode)
 323  	}
 324  
 325  	var buff [1024]byte
 326  	ringBuffer := smithyio.NewRingBuffer(buff[:])
 327  
 328  	body := io.TeeReader(errorBody, ringBuffer)
 329  	decoder := json.NewDecoder(body)
 330  	decoder.UseNumber()
 331  	jsonCode, message, err := restjson.GetErrorInfo(decoder)
 332  	if err != nil {
 333  		var snapshot bytes.Buffer
 334  		io.Copy(&snapshot, ringBuffer)
 335  		err = &smithy.DeserializationError{
 336  			Err:      fmt.Errorf("failed to decode response body, %w", err),
 337  			Snapshot: snapshot.Bytes(),
 338  		}
 339  		return err
 340  	}
 341  
 342  	errorBody.Seek(0, io.SeekStart)
 343  	if len(headerCode) == 0 && len(jsonCode) != 0 {
 344  		errorCode = restjson.SanitizeErrorCode(jsonCode)
 345  	}
 346  	if len(message) != 0 {
 347  		errorMessage = message
 348  	}
 349  
 350  	switch {
 351  	case strings.EqualFold("AccessDeniedException", errorCode):
 352  		return awsRestjson1_deserializeErrorAccessDeniedException(response, errorBody)
 353  
 354  	case strings.EqualFold("AuthorizationPendingException", errorCode):
 355  		return awsRestjson1_deserializeErrorAuthorizationPendingException(response, errorBody)
 356  
 357  	case strings.EqualFold("ExpiredTokenException", errorCode):
 358  		return awsRestjson1_deserializeErrorExpiredTokenException(response, errorBody)
 359  
 360  	case strings.EqualFold("InternalServerException", errorCode):
 361  		return awsRestjson1_deserializeErrorInternalServerException(response, errorBody)
 362  
 363  	case strings.EqualFold("InvalidClientException", errorCode):
 364  		return awsRestjson1_deserializeErrorInvalidClientException(response, errorBody)
 365  
 366  	case strings.EqualFold("InvalidGrantException", errorCode):
 367  		return awsRestjson1_deserializeErrorInvalidGrantException(response, errorBody)
 368  
 369  	case strings.EqualFold("InvalidRequestException", errorCode):
 370  		return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody)
 371  
 372  	case strings.EqualFold("InvalidRequestRegionException", errorCode):
 373  		return awsRestjson1_deserializeErrorInvalidRequestRegionException(response, errorBody)
 374  
 375  	case strings.EqualFold("InvalidScopeException", errorCode):
 376  		return awsRestjson1_deserializeErrorInvalidScopeException(response, errorBody)
 377  
 378  	case strings.EqualFold("SlowDownException", errorCode):
 379  		return awsRestjson1_deserializeErrorSlowDownException(response, errorBody)
 380  
 381  	case strings.EqualFold("UnauthorizedClientException", errorCode):
 382  		return awsRestjson1_deserializeErrorUnauthorizedClientException(response, errorBody)
 383  
 384  	case strings.EqualFold("UnsupportedGrantTypeException", errorCode):
 385  		return awsRestjson1_deserializeErrorUnsupportedGrantTypeException(response, errorBody)
 386  
 387  	default:
 388  		genericError := &smithy.GenericAPIError{
 389  			Code:    errorCode,
 390  			Message: errorMessage,
 391  		}
 392  		return genericError
 393  
 394  	}
 395  }
 396  
 397  func awsRestjson1_deserializeOpDocumentCreateTokenWithIAMOutput(v **CreateTokenWithIAMOutput, value interface{}) error {
 398  	if v == nil {
 399  		return fmt.Errorf("unexpected nil of type %T", v)
 400  	}
 401  	if value == nil {
 402  		return nil
 403  	}
 404  
 405  	shape, ok := value.(map[string]interface{})
 406  	if !ok {
 407  		return fmt.Errorf("unexpected JSON type %v", value)
 408  	}
 409  
 410  	var sv *CreateTokenWithIAMOutput
 411  	if *v == nil {
 412  		sv = &CreateTokenWithIAMOutput{}
 413  	} else {
 414  		sv = *v
 415  	}
 416  
 417  	for key, value := range shape {
 418  		switch key {
 419  		case "accessToken":
 420  			if value != nil {
 421  				jtv, ok := value.(string)
 422  				if !ok {
 423  					return fmt.Errorf("expected AccessToken to be of type string, got %T instead", value)
 424  				}
 425  				sv.AccessToken = ptr.String(jtv)
 426  			}
 427  
 428  		case "awsAdditionalDetails":
 429  			if err := awsRestjson1_deserializeDocumentAwsAdditionalDetails(&sv.AwsAdditionalDetails, value); err != nil {
 430  				return err
 431  			}
 432  
 433  		case "expiresIn":
 434  			if value != nil {
 435  				jtv, ok := value.(json.Number)
 436  				if !ok {
 437  					return fmt.Errorf("expected ExpirationInSeconds to be json.Number, got %T instead", value)
 438  				}
 439  				i64, err := jtv.Int64()
 440  				if err != nil {
 441  					return err
 442  				}
 443  				sv.ExpiresIn = int32(i64)
 444  			}
 445  
 446  		case "idToken":
 447  			if value != nil {
 448  				jtv, ok := value.(string)
 449  				if !ok {
 450  					return fmt.Errorf("expected IdToken to be of type string, got %T instead", value)
 451  				}
 452  				sv.IdToken = ptr.String(jtv)
 453  			}
 454  
 455  		case "issuedTokenType":
 456  			if value != nil {
 457  				jtv, ok := value.(string)
 458  				if !ok {
 459  					return fmt.Errorf("expected TokenTypeURI to be of type string, got %T instead", value)
 460  				}
 461  				sv.IssuedTokenType = ptr.String(jtv)
 462  			}
 463  
 464  		case "refreshToken":
 465  			if value != nil {
 466  				jtv, ok := value.(string)
 467  				if !ok {
 468  					return fmt.Errorf("expected RefreshToken to be of type string, got %T instead", value)
 469  				}
 470  				sv.RefreshToken = ptr.String(jtv)
 471  			}
 472  
 473  		case "scope":
 474  			if err := awsRestjson1_deserializeDocumentScopes(&sv.Scope, value); err != nil {
 475  				return err
 476  			}
 477  
 478  		case "tokenType":
 479  			if value != nil {
 480  				jtv, ok := value.(string)
 481  				if !ok {
 482  					return fmt.Errorf("expected TokenType to be of type string, got %T instead", value)
 483  				}
 484  				sv.TokenType = ptr.String(jtv)
 485  			}
 486  
 487  		default:
 488  			_, _ = key, value
 489  
 490  		}
 491  	}
 492  	*v = sv
 493  	return nil
 494  }
 495  
 496  type awsRestjson1_deserializeOpRegisterClient struct {
 497  }
 498  
 499  func (*awsRestjson1_deserializeOpRegisterClient) ID() string {
 500  	return "OperationDeserializer"
 501  }
 502  
 503  func (m *awsRestjson1_deserializeOpRegisterClient) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
 504  	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
 505  ) {
 506  	out, metadata, err = next.HandleDeserialize(ctx, in)
 507  	if err != nil {
 508  		return out, metadata, err
 509  	}
 510  
 511  	_, span := tracing.StartSpan(ctx, "OperationDeserializer")
 512  	endTimer := startMetricTimer(ctx, "client.call.deserialization_duration")
 513  	defer endTimer()
 514  	defer span.End()
 515  	response, ok := out.RawResponse.(*smithyhttp.Response)
 516  	if !ok {
 517  		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
 518  	}
 519  
 520  	if response.StatusCode < 200 || response.StatusCode >= 300 {
 521  		return out, metadata, awsRestjson1_deserializeOpErrorRegisterClient(response, &metadata)
 522  	}
 523  	output := &RegisterClientOutput{}
 524  	out.Result = output
 525  
 526  	var buff [1024]byte
 527  	ringBuffer := smithyio.NewRingBuffer(buff[:])
 528  
 529  	body := io.TeeReader(response.Body, ringBuffer)
 530  
 531  	decoder := json.NewDecoder(body)
 532  	decoder.UseNumber()
 533  	var shape interface{}
 534  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
 535  		var snapshot bytes.Buffer
 536  		io.Copy(&snapshot, ringBuffer)
 537  		err = &smithy.DeserializationError{
 538  			Err:      fmt.Errorf("failed to decode response body, %w", err),
 539  			Snapshot: snapshot.Bytes(),
 540  		}
 541  		return out, metadata, err
 542  	}
 543  
 544  	err = awsRestjson1_deserializeOpDocumentRegisterClientOutput(&output, shape)
 545  	if err != nil {
 546  		var snapshot bytes.Buffer
 547  		io.Copy(&snapshot, ringBuffer)
 548  		return out, metadata, &smithy.DeserializationError{
 549  			Err:      fmt.Errorf("failed to decode response body with invalid JSON, %w", err),
 550  			Snapshot: snapshot.Bytes(),
 551  		}
 552  	}
 553  
 554  	span.End()
 555  	return out, metadata, err
 556  }
 557  
 558  func awsRestjson1_deserializeOpErrorRegisterClient(response *smithyhttp.Response, metadata *middleware.Metadata) error {
 559  	var errorBuffer bytes.Buffer
 560  	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
 561  		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
 562  	}
 563  	errorBody := bytes.NewReader(errorBuffer.Bytes())
 564  
 565  	errorCode := "UnknownError"
 566  	errorMessage := errorCode
 567  
 568  	headerCode := response.Header.Get("X-Amzn-ErrorType")
 569  	if len(headerCode) != 0 {
 570  		errorCode = restjson.SanitizeErrorCode(headerCode)
 571  	}
 572  
 573  	var buff [1024]byte
 574  	ringBuffer := smithyio.NewRingBuffer(buff[:])
 575  
 576  	body := io.TeeReader(errorBody, ringBuffer)
 577  	decoder := json.NewDecoder(body)
 578  	decoder.UseNumber()
 579  	jsonCode, message, err := restjson.GetErrorInfo(decoder)
 580  	if err != nil {
 581  		var snapshot bytes.Buffer
 582  		io.Copy(&snapshot, ringBuffer)
 583  		err = &smithy.DeserializationError{
 584  			Err:      fmt.Errorf("failed to decode response body, %w", err),
 585  			Snapshot: snapshot.Bytes(),
 586  		}
 587  		return err
 588  	}
 589  
 590  	errorBody.Seek(0, io.SeekStart)
 591  	if len(headerCode) == 0 && len(jsonCode) != 0 {
 592  		errorCode = restjson.SanitizeErrorCode(jsonCode)
 593  	}
 594  	if len(message) != 0 {
 595  		errorMessage = message
 596  	}
 597  
 598  	switch {
 599  	case strings.EqualFold("InternalServerException", errorCode):
 600  		return awsRestjson1_deserializeErrorInternalServerException(response, errorBody)
 601  
 602  	case strings.EqualFold("InvalidClientMetadataException", errorCode):
 603  		return awsRestjson1_deserializeErrorInvalidClientMetadataException(response, errorBody)
 604  
 605  	case strings.EqualFold("InvalidRedirectUriException", errorCode):
 606  		return awsRestjson1_deserializeErrorInvalidRedirectUriException(response, errorBody)
 607  
 608  	case strings.EqualFold("InvalidRequestException", errorCode):
 609  		return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody)
 610  
 611  	case strings.EqualFold("InvalidScopeException", errorCode):
 612  		return awsRestjson1_deserializeErrorInvalidScopeException(response, errorBody)
 613  
 614  	case strings.EqualFold("SlowDownException", errorCode):
 615  		return awsRestjson1_deserializeErrorSlowDownException(response, errorBody)
 616  
 617  	case strings.EqualFold("UnsupportedGrantTypeException", errorCode):
 618  		return awsRestjson1_deserializeErrorUnsupportedGrantTypeException(response, errorBody)
 619  
 620  	default:
 621  		genericError := &smithy.GenericAPIError{
 622  			Code:    errorCode,
 623  			Message: errorMessage,
 624  		}
 625  		return genericError
 626  
 627  	}
 628  }
 629  
 630  func awsRestjson1_deserializeOpDocumentRegisterClientOutput(v **RegisterClientOutput, value interface{}) error {
 631  	if v == nil {
 632  		return fmt.Errorf("unexpected nil of type %T", v)
 633  	}
 634  	if value == nil {
 635  		return nil
 636  	}
 637  
 638  	shape, ok := value.(map[string]interface{})
 639  	if !ok {
 640  		return fmt.Errorf("unexpected JSON type %v", value)
 641  	}
 642  
 643  	var sv *RegisterClientOutput
 644  	if *v == nil {
 645  		sv = &RegisterClientOutput{}
 646  	} else {
 647  		sv = *v
 648  	}
 649  
 650  	for key, value := range shape {
 651  		switch key {
 652  		case "authorizationEndpoint":
 653  			if value != nil {
 654  				jtv, ok := value.(string)
 655  				if !ok {
 656  					return fmt.Errorf("expected URI to be of type string, got %T instead", value)
 657  				}
 658  				sv.AuthorizationEndpoint = ptr.String(jtv)
 659  			}
 660  
 661  		case "clientId":
 662  			if value != nil {
 663  				jtv, ok := value.(string)
 664  				if !ok {
 665  					return fmt.Errorf("expected ClientId to be of type string, got %T instead", value)
 666  				}
 667  				sv.ClientId = ptr.String(jtv)
 668  			}
 669  
 670  		case "clientIdIssuedAt":
 671  			if value != nil {
 672  				jtv, ok := value.(json.Number)
 673  				if !ok {
 674  					return fmt.Errorf("expected LongTimeStampType to be json.Number, got %T instead", value)
 675  				}
 676  				i64, err := jtv.Int64()
 677  				if err != nil {
 678  					return err
 679  				}
 680  				sv.ClientIdIssuedAt = i64
 681  			}
 682  
 683  		case "clientSecret":
 684  			if value != nil {
 685  				jtv, ok := value.(string)
 686  				if !ok {
 687  					return fmt.Errorf("expected ClientSecret to be of type string, got %T instead", value)
 688  				}
 689  				sv.ClientSecret = ptr.String(jtv)
 690  			}
 691  
 692  		case "clientSecretExpiresAt":
 693  			if value != nil {
 694  				jtv, ok := value.(json.Number)
 695  				if !ok {
 696  					return fmt.Errorf("expected LongTimeStampType to be json.Number, got %T instead", value)
 697  				}
 698  				i64, err := jtv.Int64()
 699  				if err != nil {
 700  					return err
 701  				}
 702  				sv.ClientSecretExpiresAt = i64
 703  			}
 704  
 705  		case "tokenEndpoint":
 706  			if value != nil {
 707  				jtv, ok := value.(string)
 708  				if !ok {
 709  					return fmt.Errorf("expected URI to be of type string, got %T instead", value)
 710  				}
 711  				sv.TokenEndpoint = ptr.String(jtv)
 712  			}
 713  
 714  		default:
 715  			_, _ = key, value
 716  
 717  		}
 718  	}
 719  	*v = sv
 720  	return nil
 721  }
 722  
 723  type awsRestjson1_deserializeOpStartDeviceAuthorization struct {
 724  }
 725  
 726  func (*awsRestjson1_deserializeOpStartDeviceAuthorization) ID() string {
 727  	return "OperationDeserializer"
 728  }
 729  
 730  func (m *awsRestjson1_deserializeOpStartDeviceAuthorization) HandleDeserialize(ctx context.Context, in middleware.DeserializeInput, next middleware.DeserializeHandler) (
 731  	out middleware.DeserializeOutput, metadata middleware.Metadata, err error,
 732  ) {
 733  	out, metadata, err = next.HandleDeserialize(ctx, in)
 734  	if err != nil {
 735  		return out, metadata, err
 736  	}
 737  
 738  	_, span := tracing.StartSpan(ctx, "OperationDeserializer")
 739  	endTimer := startMetricTimer(ctx, "client.call.deserialization_duration")
 740  	defer endTimer()
 741  	defer span.End()
 742  	response, ok := out.RawResponse.(*smithyhttp.Response)
 743  	if !ok {
 744  		return out, metadata, &smithy.DeserializationError{Err: fmt.Errorf("unknown transport type %T", out.RawResponse)}
 745  	}
 746  
 747  	if response.StatusCode < 200 || response.StatusCode >= 300 {
 748  		return out, metadata, awsRestjson1_deserializeOpErrorStartDeviceAuthorization(response, &metadata)
 749  	}
 750  	output := &StartDeviceAuthorizationOutput{}
 751  	out.Result = output
 752  
 753  	var buff [1024]byte
 754  	ringBuffer := smithyio.NewRingBuffer(buff[:])
 755  
 756  	body := io.TeeReader(response.Body, ringBuffer)
 757  
 758  	decoder := json.NewDecoder(body)
 759  	decoder.UseNumber()
 760  	var shape interface{}
 761  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
 762  		var snapshot bytes.Buffer
 763  		io.Copy(&snapshot, ringBuffer)
 764  		err = &smithy.DeserializationError{
 765  			Err:      fmt.Errorf("failed to decode response body, %w", err),
 766  			Snapshot: snapshot.Bytes(),
 767  		}
 768  		return out, metadata, err
 769  	}
 770  
 771  	err = awsRestjson1_deserializeOpDocumentStartDeviceAuthorizationOutput(&output, shape)
 772  	if err != nil {
 773  		var snapshot bytes.Buffer
 774  		io.Copy(&snapshot, ringBuffer)
 775  		return out, metadata, &smithy.DeserializationError{
 776  			Err:      fmt.Errorf("failed to decode response body with invalid JSON, %w", err),
 777  			Snapshot: snapshot.Bytes(),
 778  		}
 779  	}
 780  
 781  	span.End()
 782  	return out, metadata, err
 783  }
 784  
 785  func awsRestjson1_deserializeOpErrorStartDeviceAuthorization(response *smithyhttp.Response, metadata *middleware.Metadata) error {
 786  	var errorBuffer bytes.Buffer
 787  	if _, err := io.Copy(&errorBuffer, response.Body); err != nil {
 788  		return &smithy.DeserializationError{Err: fmt.Errorf("failed to copy error response body, %w", err)}
 789  	}
 790  	errorBody := bytes.NewReader(errorBuffer.Bytes())
 791  
 792  	errorCode := "UnknownError"
 793  	errorMessage := errorCode
 794  
 795  	headerCode := response.Header.Get("X-Amzn-ErrorType")
 796  	if len(headerCode) != 0 {
 797  		errorCode = restjson.SanitizeErrorCode(headerCode)
 798  	}
 799  
 800  	var buff [1024]byte
 801  	ringBuffer := smithyio.NewRingBuffer(buff[:])
 802  
 803  	body := io.TeeReader(errorBody, ringBuffer)
 804  	decoder := json.NewDecoder(body)
 805  	decoder.UseNumber()
 806  	jsonCode, message, err := restjson.GetErrorInfo(decoder)
 807  	if err != nil {
 808  		var snapshot bytes.Buffer
 809  		io.Copy(&snapshot, ringBuffer)
 810  		err = &smithy.DeserializationError{
 811  			Err:      fmt.Errorf("failed to decode response body, %w", err),
 812  			Snapshot: snapshot.Bytes(),
 813  		}
 814  		return err
 815  	}
 816  
 817  	errorBody.Seek(0, io.SeekStart)
 818  	if len(headerCode) == 0 && len(jsonCode) != 0 {
 819  		errorCode = restjson.SanitizeErrorCode(jsonCode)
 820  	}
 821  	if len(message) != 0 {
 822  		errorMessage = message
 823  	}
 824  
 825  	switch {
 826  	case strings.EqualFold("InternalServerException", errorCode):
 827  		return awsRestjson1_deserializeErrorInternalServerException(response, errorBody)
 828  
 829  	case strings.EqualFold("InvalidClientException", errorCode):
 830  		return awsRestjson1_deserializeErrorInvalidClientException(response, errorBody)
 831  
 832  	case strings.EqualFold("InvalidRequestException", errorCode):
 833  		return awsRestjson1_deserializeErrorInvalidRequestException(response, errorBody)
 834  
 835  	case strings.EqualFold("SlowDownException", errorCode):
 836  		return awsRestjson1_deserializeErrorSlowDownException(response, errorBody)
 837  
 838  	case strings.EqualFold("UnauthorizedClientException", errorCode):
 839  		return awsRestjson1_deserializeErrorUnauthorizedClientException(response, errorBody)
 840  
 841  	default:
 842  		genericError := &smithy.GenericAPIError{
 843  			Code:    errorCode,
 844  			Message: errorMessage,
 845  		}
 846  		return genericError
 847  
 848  	}
 849  }
 850  
 851  func awsRestjson1_deserializeOpDocumentStartDeviceAuthorizationOutput(v **StartDeviceAuthorizationOutput, value interface{}) error {
 852  	if v == nil {
 853  		return fmt.Errorf("unexpected nil of type %T", v)
 854  	}
 855  	if value == nil {
 856  		return nil
 857  	}
 858  
 859  	shape, ok := value.(map[string]interface{})
 860  	if !ok {
 861  		return fmt.Errorf("unexpected JSON type %v", value)
 862  	}
 863  
 864  	var sv *StartDeviceAuthorizationOutput
 865  	if *v == nil {
 866  		sv = &StartDeviceAuthorizationOutput{}
 867  	} else {
 868  		sv = *v
 869  	}
 870  
 871  	for key, value := range shape {
 872  		switch key {
 873  		case "deviceCode":
 874  			if value != nil {
 875  				jtv, ok := value.(string)
 876  				if !ok {
 877  					return fmt.Errorf("expected DeviceCode to be of type string, got %T instead", value)
 878  				}
 879  				sv.DeviceCode = ptr.String(jtv)
 880  			}
 881  
 882  		case "expiresIn":
 883  			if value != nil {
 884  				jtv, ok := value.(json.Number)
 885  				if !ok {
 886  					return fmt.Errorf("expected ExpirationInSeconds to be json.Number, got %T instead", value)
 887  				}
 888  				i64, err := jtv.Int64()
 889  				if err != nil {
 890  					return err
 891  				}
 892  				sv.ExpiresIn = int32(i64)
 893  			}
 894  
 895  		case "interval":
 896  			if value != nil {
 897  				jtv, ok := value.(json.Number)
 898  				if !ok {
 899  					return fmt.Errorf("expected IntervalInSeconds to be json.Number, got %T instead", value)
 900  				}
 901  				i64, err := jtv.Int64()
 902  				if err != nil {
 903  					return err
 904  				}
 905  				sv.Interval = int32(i64)
 906  			}
 907  
 908  		case "userCode":
 909  			if value != nil {
 910  				jtv, ok := value.(string)
 911  				if !ok {
 912  					return fmt.Errorf("expected UserCode to be of type string, got %T instead", value)
 913  				}
 914  				sv.UserCode = ptr.String(jtv)
 915  			}
 916  
 917  		case "verificationUri":
 918  			if value != nil {
 919  				jtv, ok := value.(string)
 920  				if !ok {
 921  					return fmt.Errorf("expected URI to be of type string, got %T instead", value)
 922  				}
 923  				sv.VerificationUri = ptr.String(jtv)
 924  			}
 925  
 926  		case "verificationUriComplete":
 927  			if value != nil {
 928  				jtv, ok := value.(string)
 929  				if !ok {
 930  					return fmt.Errorf("expected URI to be of type string, got %T instead", value)
 931  				}
 932  				sv.VerificationUriComplete = ptr.String(jtv)
 933  			}
 934  
 935  		default:
 936  			_, _ = key, value
 937  
 938  		}
 939  	}
 940  	*v = sv
 941  	return nil
 942  }
 943  
 944  func awsRestjson1_deserializeErrorAccessDeniedException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
 945  	output := &types.AccessDeniedException{}
 946  	var buff [1024]byte
 947  	ringBuffer := smithyio.NewRingBuffer(buff[:])
 948  
 949  	body := io.TeeReader(errorBody, ringBuffer)
 950  	decoder := json.NewDecoder(body)
 951  	decoder.UseNumber()
 952  	var shape interface{}
 953  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
 954  		var snapshot bytes.Buffer
 955  		io.Copy(&snapshot, ringBuffer)
 956  		err = &smithy.DeserializationError{
 957  			Err:      fmt.Errorf("failed to decode response body, %w", err),
 958  			Snapshot: snapshot.Bytes(),
 959  		}
 960  		return err
 961  	}
 962  
 963  	err := awsRestjson1_deserializeDocumentAccessDeniedException(&output, shape)
 964  
 965  	if err != nil {
 966  		var snapshot bytes.Buffer
 967  		io.Copy(&snapshot, ringBuffer)
 968  		err = &smithy.DeserializationError{
 969  			Err:      fmt.Errorf("failed to decode response body, %w", err),
 970  			Snapshot: snapshot.Bytes(),
 971  		}
 972  		return err
 973  	}
 974  
 975  	errorBody.Seek(0, io.SeekStart)
 976  
 977  	return output
 978  }
 979  
 980  func awsRestjson1_deserializeErrorAuthorizationPendingException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
 981  	output := &types.AuthorizationPendingException{}
 982  	var buff [1024]byte
 983  	ringBuffer := smithyio.NewRingBuffer(buff[:])
 984  
 985  	body := io.TeeReader(errorBody, ringBuffer)
 986  	decoder := json.NewDecoder(body)
 987  	decoder.UseNumber()
 988  	var shape interface{}
 989  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
 990  		var snapshot bytes.Buffer
 991  		io.Copy(&snapshot, ringBuffer)
 992  		err = &smithy.DeserializationError{
 993  			Err:      fmt.Errorf("failed to decode response body, %w", err),
 994  			Snapshot: snapshot.Bytes(),
 995  		}
 996  		return err
 997  	}
 998  
 999  	err := awsRestjson1_deserializeDocumentAuthorizationPendingException(&output, shape)
1000  
1001  	if err != nil {
1002  		var snapshot bytes.Buffer
1003  		io.Copy(&snapshot, ringBuffer)
1004  		err = &smithy.DeserializationError{
1005  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1006  			Snapshot: snapshot.Bytes(),
1007  		}
1008  		return err
1009  	}
1010  
1011  	errorBody.Seek(0, io.SeekStart)
1012  
1013  	return output
1014  }
1015  
1016  func awsRestjson1_deserializeErrorExpiredTokenException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1017  	output := &types.ExpiredTokenException{}
1018  	var buff [1024]byte
1019  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1020  
1021  	body := io.TeeReader(errorBody, ringBuffer)
1022  	decoder := json.NewDecoder(body)
1023  	decoder.UseNumber()
1024  	var shape interface{}
1025  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1026  		var snapshot bytes.Buffer
1027  		io.Copy(&snapshot, ringBuffer)
1028  		err = &smithy.DeserializationError{
1029  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1030  			Snapshot: snapshot.Bytes(),
1031  		}
1032  		return err
1033  	}
1034  
1035  	err := awsRestjson1_deserializeDocumentExpiredTokenException(&output, shape)
1036  
1037  	if err != nil {
1038  		var snapshot bytes.Buffer
1039  		io.Copy(&snapshot, ringBuffer)
1040  		err = &smithy.DeserializationError{
1041  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1042  			Snapshot: snapshot.Bytes(),
1043  		}
1044  		return err
1045  	}
1046  
1047  	errorBody.Seek(0, io.SeekStart)
1048  
1049  	return output
1050  }
1051  
1052  func awsRestjson1_deserializeErrorInternalServerException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1053  	output := &types.InternalServerException{}
1054  	var buff [1024]byte
1055  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1056  
1057  	body := io.TeeReader(errorBody, ringBuffer)
1058  	decoder := json.NewDecoder(body)
1059  	decoder.UseNumber()
1060  	var shape interface{}
1061  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1062  		var snapshot bytes.Buffer
1063  		io.Copy(&snapshot, ringBuffer)
1064  		err = &smithy.DeserializationError{
1065  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1066  			Snapshot: snapshot.Bytes(),
1067  		}
1068  		return err
1069  	}
1070  
1071  	err := awsRestjson1_deserializeDocumentInternalServerException(&output, shape)
1072  
1073  	if err != nil {
1074  		var snapshot bytes.Buffer
1075  		io.Copy(&snapshot, ringBuffer)
1076  		err = &smithy.DeserializationError{
1077  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1078  			Snapshot: snapshot.Bytes(),
1079  		}
1080  		return err
1081  	}
1082  
1083  	errorBody.Seek(0, io.SeekStart)
1084  
1085  	return output
1086  }
1087  
1088  func awsRestjson1_deserializeErrorInvalidClientException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1089  	output := &types.InvalidClientException{}
1090  	var buff [1024]byte
1091  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1092  
1093  	body := io.TeeReader(errorBody, ringBuffer)
1094  	decoder := json.NewDecoder(body)
1095  	decoder.UseNumber()
1096  	var shape interface{}
1097  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1098  		var snapshot bytes.Buffer
1099  		io.Copy(&snapshot, ringBuffer)
1100  		err = &smithy.DeserializationError{
1101  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1102  			Snapshot: snapshot.Bytes(),
1103  		}
1104  		return err
1105  	}
1106  
1107  	err := awsRestjson1_deserializeDocumentInvalidClientException(&output, shape)
1108  
1109  	if err != nil {
1110  		var snapshot bytes.Buffer
1111  		io.Copy(&snapshot, ringBuffer)
1112  		err = &smithy.DeserializationError{
1113  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1114  			Snapshot: snapshot.Bytes(),
1115  		}
1116  		return err
1117  	}
1118  
1119  	errorBody.Seek(0, io.SeekStart)
1120  
1121  	return output
1122  }
1123  
1124  func awsRestjson1_deserializeErrorInvalidClientMetadataException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1125  	output := &types.InvalidClientMetadataException{}
1126  	var buff [1024]byte
1127  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1128  
1129  	body := io.TeeReader(errorBody, ringBuffer)
1130  	decoder := json.NewDecoder(body)
1131  	decoder.UseNumber()
1132  	var shape interface{}
1133  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1134  		var snapshot bytes.Buffer
1135  		io.Copy(&snapshot, ringBuffer)
1136  		err = &smithy.DeserializationError{
1137  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1138  			Snapshot: snapshot.Bytes(),
1139  		}
1140  		return err
1141  	}
1142  
1143  	err := awsRestjson1_deserializeDocumentInvalidClientMetadataException(&output, shape)
1144  
1145  	if err != nil {
1146  		var snapshot bytes.Buffer
1147  		io.Copy(&snapshot, ringBuffer)
1148  		err = &smithy.DeserializationError{
1149  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1150  			Snapshot: snapshot.Bytes(),
1151  		}
1152  		return err
1153  	}
1154  
1155  	errorBody.Seek(0, io.SeekStart)
1156  
1157  	return output
1158  }
1159  
1160  func awsRestjson1_deserializeErrorInvalidGrantException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1161  	output := &types.InvalidGrantException{}
1162  	var buff [1024]byte
1163  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1164  
1165  	body := io.TeeReader(errorBody, ringBuffer)
1166  	decoder := json.NewDecoder(body)
1167  	decoder.UseNumber()
1168  	var shape interface{}
1169  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1170  		var snapshot bytes.Buffer
1171  		io.Copy(&snapshot, ringBuffer)
1172  		err = &smithy.DeserializationError{
1173  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1174  			Snapshot: snapshot.Bytes(),
1175  		}
1176  		return err
1177  	}
1178  
1179  	err := awsRestjson1_deserializeDocumentInvalidGrantException(&output, shape)
1180  
1181  	if err != nil {
1182  		var snapshot bytes.Buffer
1183  		io.Copy(&snapshot, ringBuffer)
1184  		err = &smithy.DeserializationError{
1185  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1186  			Snapshot: snapshot.Bytes(),
1187  		}
1188  		return err
1189  	}
1190  
1191  	errorBody.Seek(0, io.SeekStart)
1192  
1193  	return output
1194  }
1195  
1196  func awsRestjson1_deserializeErrorInvalidRedirectUriException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1197  	output := &types.InvalidRedirectUriException{}
1198  	var buff [1024]byte
1199  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1200  
1201  	body := io.TeeReader(errorBody, ringBuffer)
1202  	decoder := json.NewDecoder(body)
1203  	decoder.UseNumber()
1204  	var shape interface{}
1205  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1206  		var snapshot bytes.Buffer
1207  		io.Copy(&snapshot, ringBuffer)
1208  		err = &smithy.DeserializationError{
1209  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1210  			Snapshot: snapshot.Bytes(),
1211  		}
1212  		return err
1213  	}
1214  
1215  	err := awsRestjson1_deserializeDocumentInvalidRedirectUriException(&output, shape)
1216  
1217  	if err != nil {
1218  		var snapshot bytes.Buffer
1219  		io.Copy(&snapshot, ringBuffer)
1220  		err = &smithy.DeserializationError{
1221  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1222  			Snapshot: snapshot.Bytes(),
1223  		}
1224  		return err
1225  	}
1226  
1227  	errorBody.Seek(0, io.SeekStart)
1228  
1229  	return output
1230  }
1231  
1232  func awsRestjson1_deserializeErrorInvalidRequestException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1233  	output := &types.InvalidRequestException{}
1234  	var buff [1024]byte
1235  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1236  
1237  	body := io.TeeReader(errorBody, ringBuffer)
1238  	decoder := json.NewDecoder(body)
1239  	decoder.UseNumber()
1240  	var shape interface{}
1241  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1242  		var snapshot bytes.Buffer
1243  		io.Copy(&snapshot, ringBuffer)
1244  		err = &smithy.DeserializationError{
1245  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1246  			Snapshot: snapshot.Bytes(),
1247  		}
1248  		return err
1249  	}
1250  
1251  	err := awsRestjson1_deserializeDocumentInvalidRequestException(&output, shape)
1252  
1253  	if err != nil {
1254  		var snapshot bytes.Buffer
1255  		io.Copy(&snapshot, ringBuffer)
1256  		err = &smithy.DeserializationError{
1257  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1258  			Snapshot: snapshot.Bytes(),
1259  		}
1260  		return err
1261  	}
1262  
1263  	errorBody.Seek(0, io.SeekStart)
1264  
1265  	return output
1266  }
1267  
1268  func awsRestjson1_deserializeErrorInvalidRequestRegionException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1269  	output := &types.InvalidRequestRegionException{}
1270  	var buff [1024]byte
1271  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1272  
1273  	body := io.TeeReader(errorBody, ringBuffer)
1274  	decoder := json.NewDecoder(body)
1275  	decoder.UseNumber()
1276  	var shape interface{}
1277  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1278  		var snapshot bytes.Buffer
1279  		io.Copy(&snapshot, ringBuffer)
1280  		err = &smithy.DeserializationError{
1281  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1282  			Snapshot: snapshot.Bytes(),
1283  		}
1284  		return err
1285  	}
1286  
1287  	err := awsRestjson1_deserializeDocumentInvalidRequestRegionException(&output, shape)
1288  
1289  	if err != nil {
1290  		var snapshot bytes.Buffer
1291  		io.Copy(&snapshot, ringBuffer)
1292  		err = &smithy.DeserializationError{
1293  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1294  			Snapshot: snapshot.Bytes(),
1295  		}
1296  		return err
1297  	}
1298  
1299  	errorBody.Seek(0, io.SeekStart)
1300  
1301  	return output
1302  }
1303  
1304  func awsRestjson1_deserializeErrorInvalidScopeException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1305  	output := &types.InvalidScopeException{}
1306  	var buff [1024]byte
1307  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1308  
1309  	body := io.TeeReader(errorBody, ringBuffer)
1310  	decoder := json.NewDecoder(body)
1311  	decoder.UseNumber()
1312  	var shape interface{}
1313  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1314  		var snapshot bytes.Buffer
1315  		io.Copy(&snapshot, ringBuffer)
1316  		err = &smithy.DeserializationError{
1317  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1318  			Snapshot: snapshot.Bytes(),
1319  		}
1320  		return err
1321  	}
1322  
1323  	err := awsRestjson1_deserializeDocumentInvalidScopeException(&output, shape)
1324  
1325  	if err != nil {
1326  		var snapshot bytes.Buffer
1327  		io.Copy(&snapshot, ringBuffer)
1328  		err = &smithy.DeserializationError{
1329  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1330  			Snapshot: snapshot.Bytes(),
1331  		}
1332  		return err
1333  	}
1334  
1335  	errorBody.Seek(0, io.SeekStart)
1336  
1337  	return output
1338  }
1339  
1340  func awsRestjson1_deserializeErrorSlowDownException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1341  	output := &types.SlowDownException{}
1342  	var buff [1024]byte
1343  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1344  
1345  	body := io.TeeReader(errorBody, ringBuffer)
1346  	decoder := json.NewDecoder(body)
1347  	decoder.UseNumber()
1348  	var shape interface{}
1349  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1350  		var snapshot bytes.Buffer
1351  		io.Copy(&snapshot, ringBuffer)
1352  		err = &smithy.DeserializationError{
1353  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1354  			Snapshot: snapshot.Bytes(),
1355  		}
1356  		return err
1357  	}
1358  
1359  	err := awsRestjson1_deserializeDocumentSlowDownException(&output, shape)
1360  
1361  	if err != nil {
1362  		var snapshot bytes.Buffer
1363  		io.Copy(&snapshot, ringBuffer)
1364  		err = &smithy.DeserializationError{
1365  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1366  			Snapshot: snapshot.Bytes(),
1367  		}
1368  		return err
1369  	}
1370  
1371  	errorBody.Seek(0, io.SeekStart)
1372  
1373  	return output
1374  }
1375  
1376  func awsRestjson1_deserializeErrorUnauthorizedClientException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1377  	output := &types.UnauthorizedClientException{}
1378  	var buff [1024]byte
1379  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1380  
1381  	body := io.TeeReader(errorBody, ringBuffer)
1382  	decoder := json.NewDecoder(body)
1383  	decoder.UseNumber()
1384  	var shape interface{}
1385  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1386  		var snapshot bytes.Buffer
1387  		io.Copy(&snapshot, ringBuffer)
1388  		err = &smithy.DeserializationError{
1389  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1390  			Snapshot: snapshot.Bytes(),
1391  		}
1392  		return err
1393  	}
1394  
1395  	err := awsRestjson1_deserializeDocumentUnauthorizedClientException(&output, shape)
1396  
1397  	if err != nil {
1398  		var snapshot bytes.Buffer
1399  		io.Copy(&snapshot, ringBuffer)
1400  		err = &smithy.DeserializationError{
1401  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1402  			Snapshot: snapshot.Bytes(),
1403  		}
1404  		return err
1405  	}
1406  
1407  	errorBody.Seek(0, io.SeekStart)
1408  
1409  	return output
1410  }
1411  
1412  func awsRestjson1_deserializeErrorUnsupportedGrantTypeException(response *smithyhttp.Response, errorBody *bytes.Reader) error {
1413  	output := &types.UnsupportedGrantTypeException{}
1414  	var buff [1024]byte
1415  	ringBuffer := smithyio.NewRingBuffer(buff[:])
1416  
1417  	body := io.TeeReader(errorBody, ringBuffer)
1418  	decoder := json.NewDecoder(body)
1419  	decoder.UseNumber()
1420  	var shape interface{}
1421  	if err := decoder.Decode(&shape); err != nil && err != io.EOF {
1422  		var snapshot bytes.Buffer
1423  		io.Copy(&snapshot, ringBuffer)
1424  		err = &smithy.DeserializationError{
1425  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1426  			Snapshot: snapshot.Bytes(),
1427  		}
1428  		return err
1429  	}
1430  
1431  	err := awsRestjson1_deserializeDocumentUnsupportedGrantTypeException(&output, shape)
1432  
1433  	if err != nil {
1434  		var snapshot bytes.Buffer
1435  		io.Copy(&snapshot, ringBuffer)
1436  		err = &smithy.DeserializationError{
1437  			Err:      fmt.Errorf("failed to decode response body, %w", err),
1438  			Snapshot: snapshot.Bytes(),
1439  		}
1440  		return err
1441  	}
1442  
1443  	errorBody.Seek(0, io.SeekStart)
1444  
1445  	return output
1446  }
1447  
1448  func awsRestjson1_deserializeDocumentAccessDeniedException(v **types.AccessDeniedException, value interface{}) error {
1449  	if v == nil {
1450  		return fmt.Errorf("unexpected nil of type %T", v)
1451  	}
1452  	if value == nil {
1453  		return nil
1454  	}
1455  
1456  	shape, ok := value.(map[string]interface{})
1457  	if !ok {
1458  		return fmt.Errorf("unexpected JSON type %v", value)
1459  	}
1460  
1461  	var sv *types.AccessDeniedException
1462  	if *v == nil {
1463  		sv = &types.AccessDeniedException{}
1464  	} else {
1465  		sv = *v
1466  	}
1467  
1468  	for key, value := range shape {
1469  		switch key {
1470  		case "error":
1471  			if value != nil {
1472  				jtv, ok := value.(string)
1473  				if !ok {
1474  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
1475  				}
1476  				sv.Error_ = ptr.String(jtv)
1477  			}
1478  
1479  		case "error_description":
1480  			if value != nil {
1481  				jtv, ok := value.(string)
1482  				if !ok {
1483  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1484  				}
1485  				sv.Error_description = ptr.String(jtv)
1486  			}
1487  
1488  		case "reason":
1489  			if value != nil {
1490  				jtv, ok := value.(string)
1491  				if !ok {
1492  					return fmt.Errorf("expected AccessDeniedExceptionReason to be of type string, got %T instead", value)
1493  				}
1494  				sv.Reason = types.AccessDeniedExceptionReason(jtv)
1495  			}
1496  
1497  		default:
1498  			_, _ = key, value
1499  
1500  		}
1501  	}
1502  	*v = sv
1503  	return nil
1504  }
1505  
1506  func awsRestjson1_deserializeDocumentAuthorizationPendingException(v **types.AuthorizationPendingException, value interface{}) error {
1507  	if v == nil {
1508  		return fmt.Errorf("unexpected nil of type %T", v)
1509  	}
1510  	if value == nil {
1511  		return nil
1512  	}
1513  
1514  	shape, ok := value.(map[string]interface{})
1515  	if !ok {
1516  		return fmt.Errorf("unexpected JSON type %v", value)
1517  	}
1518  
1519  	var sv *types.AuthorizationPendingException
1520  	if *v == nil {
1521  		sv = &types.AuthorizationPendingException{}
1522  	} else {
1523  		sv = *v
1524  	}
1525  
1526  	for key, value := range shape {
1527  		switch key {
1528  		case "error":
1529  			if value != nil {
1530  				jtv, ok := value.(string)
1531  				if !ok {
1532  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
1533  				}
1534  				sv.Error_ = ptr.String(jtv)
1535  			}
1536  
1537  		case "error_description":
1538  			if value != nil {
1539  				jtv, ok := value.(string)
1540  				if !ok {
1541  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1542  				}
1543  				sv.Error_description = ptr.String(jtv)
1544  			}
1545  
1546  		default:
1547  			_, _ = key, value
1548  
1549  		}
1550  	}
1551  	*v = sv
1552  	return nil
1553  }
1554  
1555  func awsRestjson1_deserializeDocumentAwsAdditionalDetails(v **types.AwsAdditionalDetails, value interface{}) error {
1556  	if v == nil {
1557  		return fmt.Errorf("unexpected nil of type %T", v)
1558  	}
1559  	if value == nil {
1560  		return nil
1561  	}
1562  
1563  	shape, ok := value.(map[string]interface{})
1564  	if !ok {
1565  		return fmt.Errorf("unexpected JSON type %v", value)
1566  	}
1567  
1568  	var sv *types.AwsAdditionalDetails
1569  	if *v == nil {
1570  		sv = &types.AwsAdditionalDetails{}
1571  	} else {
1572  		sv = *v
1573  	}
1574  
1575  	for key, value := range shape {
1576  		switch key {
1577  		case "identityContext":
1578  			if value != nil {
1579  				jtv, ok := value.(string)
1580  				if !ok {
1581  					return fmt.Errorf("expected IdentityContext to be of type string, got %T instead", value)
1582  				}
1583  				sv.IdentityContext = ptr.String(jtv)
1584  			}
1585  
1586  		default:
1587  			_, _ = key, value
1588  
1589  		}
1590  	}
1591  	*v = sv
1592  	return nil
1593  }
1594  
1595  func awsRestjson1_deserializeDocumentExpiredTokenException(v **types.ExpiredTokenException, value interface{}) error {
1596  	if v == nil {
1597  		return fmt.Errorf("unexpected nil of type %T", v)
1598  	}
1599  	if value == nil {
1600  		return nil
1601  	}
1602  
1603  	shape, ok := value.(map[string]interface{})
1604  	if !ok {
1605  		return fmt.Errorf("unexpected JSON type %v", value)
1606  	}
1607  
1608  	var sv *types.ExpiredTokenException
1609  	if *v == nil {
1610  		sv = &types.ExpiredTokenException{}
1611  	} else {
1612  		sv = *v
1613  	}
1614  
1615  	for key, value := range shape {
1616  		switch key {
1617  		case "error":
1618  			if value != nil {
1619  				jtv, ok := value.(string)
1620  				if !ok {
1621  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
1622  				}
1623  				sv.Error_ = ptr.String(jtv)
1624  			}
1625  
1626  		case "error_description":
1627  			if value != nil {
1628  				jtv, ok := value.(string)
1629  				if !ok {
1630  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1631  				}
1632  				sv.Error_description = ptr.String(jtv)
1633  			}
1634  
1635  		default:
1636  			_, _ = key, value
1637  
1638  		}
1639  	}
1640  	*v = sv
1641  	return nil
1642  }
1643  
1644  func awsRestjson1_deserializeDocumentInternalServerException(v **types.InternalServerException, value interface{}) error {
1645  	if v == nil {
1646  		return fmt.Errorf("unexpected nil of type %T", v)
1647  	}
1648  	if value == nil {
1649  		return nil
1650  	}
1651  
1652  	shape, ok := value.(map[string]interface{})
1653  	if !ok {
1654  		return fmt.Errorf("unexpected JSON type %v", value)
1655  	}
1656  
1657  	var sv *types.InternalServerException
1658  	if *v == nil {
1659  		sv = &types.InternalServerException{}
1660  	} else {
1661  		sv = *v
1662  	}
1663  
1664  	for key, value := range shape {
1665  		switch key {
1666  		case "error":
1667  			if value != nil {
1668  				jtv, ok := value.(string)
1669  				if !ok {
1670  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
1671  				}
1672  				sv.Error_ = ptr.String(jtv)
1673  			}
1674  
1675  		case "error_description":
1676  			if value != nil {
1677  				jtv, ok := value.(string)
1678  				if !ok {
1679  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1680  				}
1681  				sv.Error_description = ptr.String(jtv)
1682  			}
1683  
1684  		default:
1685  			_, _ = key, value
1686  
1687  		}
1688  	}
1689  	*v = sv
1690  	return nil
1691  }
1692  
1693  func awsRestjson1_deserializeDocumentInvalidClientException(v **types.InvalidClientException, value interface{}) error {
1694  	if v == nil {
1695  		return fmt.Errorf("unexpected nil of type %T", v)
1696  	}
1697  	if value == nil {
1698  		return nil
1699  	}
1700  
1701  	shape, ok := value.(map[string]interface{})
1702  	if !ok {
1703  		return fmt.Errorf("unexpected JSON type %v", value)
1704  	}
1705  
1706  	var sv *types.InvalidClientException
1707  	if *v == nil {
1708  		sv = &types.InvalidClientException{}
1709  	} else {
1710  		sv = *v
1711  	}
1712  
1713  	for key, value := range shape {
1714  		switch key {
1715  		case "error":
1716  			if value != nil {
1717  				jtv, ok := value.(string)
1718  				if !ok {
1719  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
1720  				}
1721  				sv.Error_ = ptr.String(jtv)
1722  			}
1723  
1724  		case "error_description":
1725  			if value != nil {
1726  				jtv, ok := value.(string)
1727  				if !ok {
1728  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1729  				}
1730  				sv.Error_description = ptr.String(jtv)
1731  			}
1732  
1733  		default:
1734  			_, _ = key, value
1735  
1736  		}
1737  	}
1738  	*v = sv
1739  	return nil
1740  }
1741  
1742  func awsRestjson1_deserializeDocumentInvalidClientMetadataException(v **types.InvalidClientMetadataException, value interface{}) error {
1743  	if v == nil {
1744  		return fmt.Errorf("unexpected nil of type %T", v)
1745  	}
1746  	if value == nil {
1747  		return nil
1748  	}
1749  
1750  	shape, ok := value.(map[string]interface{})
1751  	if !ok {
1752  		return fmt.Errorf("unexpected JSON type %v", value)
1753  	}
1754  
1755  	var sv *types.InvalidClientMetadataException
1756  	if *v == nil {
1757  		sv = &types.InvalidClientMetadataException{}
1758  	} else {
1759  		sv = *v
1760  	}
1761  
1762  	for key, value := range shape {
1763  		switch key {
1764  		case "error":
1765  			if value != nil {
1766  				jtv, ok := value.(string)
1767  				if !ok {
1768  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
1769  				}
1770  				sv.Error_ = ptr.String(jtv)
1771  			}
1772  
1773  		case "error_description":
1774  			if value != nil {
1775  				jtv, ok := value.(string)
1776  				if !ok {
1777  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1778  				}
1779  				sv.Error_description = ptr.String(jtv)
1780  			}
1781  
1782  		default:
1783  			_, _ = key, value
1784  
1785  		}
1786  	}
1787  	*v = sv
1788  	return nil
1789  }
1790  
1791  func awsRestjson1_deserializeDocumentInvalidGrantException(v **types.InvalidGrantException, value interface{}) error {
1792  	if v == nil {
1793  		return fmt.Errorf("unexpected nil of type %T", v)
1794  	}
1795  	if value == nil {
1796  		return nil
1797  	}
1798  
1799  	shape, ok := value.(map[string]interface{})
1800  	if !ok {
1801  		return fmt.Errorf("unexpected JSON type %v", value)
1802  	}
1803  
1804  	var sv *types.InvalidGrantException
1805  	if *v == nil {
1806  		sv = &types.InvalidGrantException{}
1807  	} else {
1808  		sv = *v
1809  	}
1810  
1811  	for key, value := range shape {
1812  		switch key {
1813  		case "error":
1814  			if value != nil {
1815  				jtv, ok := value.(string)
1816  				if !ok {
1817  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
1818  				}
1819  				sv.Error_ = ptr.String(jtv)
1820  			}
1821  
1822  		case "error_description":
1823  			if value != nil {
1824  				jtv, ok := value.(string)
1825  				if !ok {
1826  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1827  				}
1828  				sv.Error_description = ptr.String(jtv)
1829  			}
1830  
1831  		default:
1832  			_, _ = key, value
1833  
1834  		}
1835  	}
1836  	*v = sv
1837  	return nil
1838  }
1839  
1840  func awsRestjson1_deserializeDocumentInvalidRedirectUriException(v **types.InvalidRedirectUriException, value interface{}) error {
1841  	if v == nil {
1842  		return fmt.Errorf("unexpected nil of type %T", v)
1843  	}
1844  	if value == nil {
1845  		return nil
1846  	}
1847  
1848  	shape, ok := value.(map[string]interface{})
1849  	if !ok {
1850  		return fmt.Errorf("unexpected JSON type %v", value)
1851  	}
1852  
1853  	var sv *types.InvalidRedirectUriException
1854  	if *v == nil {
1855  		sv = &types.InvalidRedirectUriException{}
1856  	} else {
1857  		sv = *v
1858  	}
1859  
1860  	for key, value := range shape {
1861  		switch key {
1862  		case "error":
1863  			if value != nil {
1864  				jtv, ok := value.(string)
1865  				if !ok {
1866  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
1867  				}
1868  				sv.Error_ = ptr.String(jtv)
1869  			}
1870  
1871  		case "error_description":
1872  			if value != nil {
1873  				jtv, ok := value.(string)
1874  				if !ok {
1875  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1876  				}
1877  				sv.Error_description = ptr.String(jtv)
1878  			}
1879  
1880  		default:
1881  			_, _ = key, value
1882  
1883  		}
1884  	}
1885  	*v = sv
1886  	return nil
1887  }
1888  
1889  func awsRestjson1_deserializeDocumentInvalidRequestException(v **types.InvalidRequestException, value interface{}) error {
1890  	if v == nil {
1891  		return fmt.Errorf("unexpected nil of type %T", v)
1892  	}
1893  	if value == nil {
1894  		return nil
1895  	}
1896  
1897  	shape, ok := value.(map[string]interface{})
1898  	if !ok {
1899  		return fmt.Errorf("unexpected JSON type %v", value)
1900  	}
1901  
1902  	var sv *types.InvalidRequestException
1903  	if *v == nil {
1904  		sv = &types.InvalidRequestException{}
1905  	} else {
1906  		sv = *v
1907  	}
1908  
1909  	for key, value := range shape {
1910  		switch key {
1911  		case "error":
1912  			if value != nil {
1913  				jtv, ok := value.(string)
1914  				if !ok {
1915  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
1916  				}
1917  				sv.Error_ = ptr.String(jtv)
1918  			}
1919  
1920  		case "error_description":
1921  			if value != nil {
1922  				jtv, ok := value.(string)
1923  				if !ok {
1924  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1925  				}
1926  				sv.Error_description = ptr.String(jtv)
1927  			}
1928  
1929  		case "reason":
1930  			if value != nil {
1931  				jtv, ok := value.(string)
1932  				if !ok {
1933  					return fmt.Errorf("expected InvalidRequestExceptionReason to be of type string, got %T instead", value)
1934  				}
1935  				sv.Reason = types.InvalidRequestExceptionReason(jtv)
1936  			}
1937  
1938  		default:
1939  			_, _ = key, value
1940  
1941  		}
1942  	}
1943  	*v = sv
1944  	return nil
1945  }
1946  
1947  func awsRestjson1_deserializeDocumentInvalidRequestRegionException(v **types.InvalidRequestRegionException, value interface{}) error {
1948  	if v == nil {
1949  		return fmt.Errorf("unexpected nil of type %T", v)
1950  	}
1951  	if value == nil {
1952  		return nil
1953  	}
1954  
1955  	shape, ok := value.(map[string]interface{})
1956  	if !ok {
1957  		return fmt.Errorf("unexpected JSON type %v", value)
1958  	}
1959  
1960  	var sv *types.InvalidRequestRegionException
1961  	if *v == nil {
1962  		sv = &types.InvalidRequestRegionException{}
1963  	} else {
1964  		sv = *v
1965  	}
1966  
1967  	for key, value := range shape {
1968  		switch key {
1969  		case "endpoint":
1970  			if value != nil {
1971  				jtv, ok := value.(string)
1972  				if !ok {
1973  					return fmt.Errorf("expected Location to be of type string, got %T instead", value)
1974  				}
1975  				sv.Endpoint = ptr.String(jtv)
1976  			}
1977  
1978  		case "error":
1979  			if value != nil {
1980  				jtv, ok := value.(string)
1981  				if !ok {
1982  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
1983  				}
1984  				sv.Error_ = ptr.String(jtv)
1985  			}
1986  
1987  		case "error_description":
1988  			if value != nil {
1989  				jtv, ok := value.(string)
1990  				if !ok {
1991  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
1992  				}
1993  				sv.Error_description = ptr.String(jtv)
1994  			}
1995  
1996  		case "region":
1997  			if value != nil {
1998  				jtv, ok := value.(string)
1999  				if !ok {
2000  					return fmt.Errorf("expected Region to be of type string, got %T instead", value)
2001  				}
2002  				sv.Region = ptr.String(jtv)
2003  			}
2004  
2005  		default:
2006  			_, _ = key, value
2007  
2008  		}
2009  	}
2010  	*v = sv
2011  	return nil
2012  }
2013  
2014  func awsRestjson1_deserializeDocumentInvalidScopeException(v **types.InvalidScopeException, value interface{}) error {
2015  	if v == nil {
2016  		return fmt.Errorf("unexpected nil of type %T", v)
2017  	}
2018  	if value == nil {
2019  		return nil
2020  	}
2021  
2022  	shape, ok := value.(map[string]interface{})
2023  	if !ok {
2024  		return fmt.Errorf("unexpected JSON type %v", value)
2025  	}
2026  
2027  	var sv *types.InvalidScopeException
2028  	if *v == nil {
2029  		sv = &types.InvalidScopeException{}
2030  	} else {
2031  		sv = *v
2032  	}
2033  
2034  	for key, value := range shape {
2035  		switch key {
2036  		case "error":
2037  			if value != nil {
2038  				jtv, ok := value.(string)
2039  				if !ok {
2040  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
2041  				}
2042  				sv.Error_ = ptr.String(jtv)
2043  			}
2044  
2045  		case "error_description":
2046  			if value != nil {
2047  				jtv, ok := value.(string)
2048  				if !ok {
2049  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
2050  				}
2051  				sv.Error_description = ptr.String(jtv)
2052  			}
2053  
2054  		default:
2055  			_, _ = key, value
2056  
2057  		}
2058  	}
2059  	*v = sv
2060  	return nil
2061  }
2062  
2063  func awsRestjson1_deserializeDocumentScopes(v *[]string, value interface{}) error {
2064  	if v == nil {
2065  		return fmt.Errorf("unexpected nil of type %T", v)
2066  	}
2067  	if value == nil {
2068  		return nil
2069  	}
2070  
2071  	shape, ok := value.([]interface{})
2072  	if !ok {
2073  		return fmt.Errorf("unexpected JSON type %v", value)
2074  	}
2075  
2076  	var cv []string
2077  	if *v == nil {
2078  		cv = []string{}
2079  	} else {
2080  		cv = *v
2081  	}
2082  
2083  	for _, value := range shape {
2084  		var col string
2085  		if value != nil {
2086  			jtv, ok := value.(string)
2087  			if !ok {
2088  				return fmt.Errorf("expected Scope to be of type string, got %T instead", value)
2089  			}
2090  			col = jtv
2091  		}
2092  		cv = append(cv, col)
2093  
2094  	}
2095  	*v = cv
2096  	return nil
2097  }
2098  
2099  func awsRestjson1_deserializeDocumentSlowDownException(v **types.SlowDownException, value interface{}) error {
2100  	if v == nil {
2101  		return fmt.Errorf("unexpected nil of type %T", v)
2102  	}
2103  	if value == nil {
2104  		return nil
2105  	}
2106  
2107  	shape, ok := value.(map[string]interface{})
2108  	if !ok {
2109  		return fmt.Errorf("unexpected JSON type %v", value)
2110  	}
2111  
2112  	var sv *types.SlowDownException
2113  	if *v == nil {
2114  		sv = &types.SlowDownException{}
2115  	} else {
2116  		sv = *v
2117  	}
2118  
2119  	for key, value := range shape {
2120  		switch key {
2121  		case "error":
2122  			if value != nil {
2123  				jtv, ok := value.(string)
2124  				if !ok {
2125  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
2126  				}
2127  				sv.Error_ = ptr.String(jtv)
2128  			}
2129  
2130  		case "error_description":
2131  			if value != nil {
2132  				jtv, ok := value.(string)
2133  				if !ok {
2134  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
2135  				}
2136  				sv.Error_description = ptr.String(jtv)
2137  			}
2138  
2139  		default:
2140  			_, _ = key, value
2141  
2142  		}
2143  	}
2144  	*v = sv
2145  	return nil
2146  }
2147  
2148  func awsRestjson1_deserializeDocumentUnauthorizedClientException(v **types.UnauthorizedClientException, value interface{}) error {
2149  	if v == nil {
2150  		return fmt.Errorf("unexpected nil of type %T", v)
2151  	}
2152  	if value == nil {
2153  		return nil
2154  	}
2155  
2156  	shape, ok := value.(map[string]interface{})
2157  	if !ok {
2158  		return fmt.Errorf("unexpected JSON type %v", value)
2159  	}
2160  
2161  	var sv *types.UnauthorizedClientException
2162  	if *v == nil {
2163  		sv = &types.UnauthorizedClientException{}
2164  	} else {
2165  		sv = *v
2166  	}
2167  
2168  	for key, value := range shape {
2169  		switch key {
2170  		case "error":
2171  			if value != nil {
2172  				jtv, ok := value.(string)
2173  				if !ok {
2174  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
2175  				}
2176  				sv.Error_ = ptr.String(jtv)
2177  			}
2178  
2179  		case "error_description":
2180  			if value != nil {
2181  				jtv, ok := value.(string)
2182  				if !ok {
2183  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
2184  				}
2185  				sv.Error_description = ptr.String(jtv)
2186  			}
2187  
2188  		default:
2189  			_, _ = key, value
2190  
2191  		}
2192  	}
2193  	*v = sv
2194  	return nil
2195  }
2196  
2197  func awsRestjson1_deserializeDocumentUnsupportedGrantTypeException(v **types.UnsupportedGrantTypeException, value interface{}) error {
2198  	if v == nil {
2199  		return fmt.Errorf("unexpected nil of type %T", v)
2200  	}
2201  	if value == nil {
2202  		return nil
2203  	}
2204  
2205  	shape, ok := value.(map[string]interface{})
2206  	if !ok {
2207  		return fmt.Errorf("unexpected JSON type %v", value)
2208  	}
2209  
2210  	var sv *types.UnsupportedGrantTypeException
2211  	if *v == nil {
2212  		sv = &types.UnsupportedGrantTypeException{}
2213  	} else {
2214  		sv = *v
2215  	}
2216  
2217  	for key, value := range shape {
2218  		switch key {
2219  		case "error":
2220  			if value != nil {
2221  				jtv, ok := value.(string)
2222  				if !ok {
2223  					return fmt.Errorf("expected Error to be of type string, got %T instead", value)
2224  				}
2225  				sv.Error_ = ptr.String(jtv)
2226  			}
2227  
2228  		case "error_description":
2229  			if value != nil {
2230  				jtv, ok := value.(string)
2231  				if !ok {
2232  					return fmt.Errorf("expected ErrorDescription to be of type string, got %T instead", value)
2233  				}
2234  				sv.Error_description = ptr.String(jtv)
2235  			}
2236  
2237  		default:
2238  			_, _ = key, value
2239  
2240  		}
2241  	}
2242  	*v = sv
2243  	return nil
2244  }
2245