src

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

deserializers.go (58422B)


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