src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

deserializers.go (58109B)


      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 }