{
    "smithy": "1.0",
    "metadata": {
        "suppressions": [
            {
                "id": "HttpMethodSemantics",
                "namespace": "*"
            },
            {
                "id": "HttpResponseCodeSemantics",
                "namespace": "*"
            },
            {
                "id": "PaginatedTrait",
                "namespace": "*"
            },
            {
                "id": "HttpHeaderTrait",
                "namespace": "*"
            },
            {
                "id": "HttpUriConflict",
                "namespace": "*"
            },
            {
                "id": "Service",
                "namespace": "*"
            }
        ]
    },
    "shapes": {
        "com.amazonaws.workmailmessageflow#GetRawMessageContent": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.workmailmessageflow#GetRawMessageContentRequest"
            },
            "output": {
                "target": "com.amazonaws.workmailmessageflow#GetRawMessageContentResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.workmailmessageflow#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Retrieves the raw content of an in-transit email message, in MIME format.</p>",
                "smithy.api#http": {
                    "method": "GET",
                    "uri": "/messages/{messageId}",
                    "code": 200
                }
            }
        },
        "com.amazonaws.workmailmessageflow#GetRawMessageContentRequest": {
            "type": "structure",
            "members": {
                "messageId": {
                    "target": "com.amazonaws.workmailmessageflow#messageIdType",
                    "traits": {
                        "smithy.api#documentation": "<p>The identifier of the email message to retrieve.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.workmailmessageflow#GetRawMessageContentResponse": {
            "type": "structure",
            "members": {
                "messageContent": {
                    "target": "com.amazonaws.workmailmessageflow#messageContentBlob",
                    "traits": {
                        "smithy.api#documentation": "<p>The raw content of the email message, in MIME format.</p>",
                        "smithy.api#httpPayload": {},
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.workmailmessageflow#GiraffeMessageInTransitService": {
            "type": "service",
            "version": "2019-05-01",
            "operations": [
                {
                    "target": "com.amazonaws.workmailmessageflow#GetRawMessageContent"
                },
                {
                    "target": "com.amazonaws.workmailmessageflow#PutRawMessageContent"
                }
            ],
            "traits": {
                "aws.api#service": {
                    "sdkId": "WorkMailMessageFlow",
                    "arnNamespace": "workmailmessageflow",
                    "cloudFormationName": "WorkMailMessageFlow",
                    "cloudTrailEventSource": "workmailmessageflow.amazonaws.com",
                    "endpointPrefix": "workmailmessageflow"
                },
                "aws.auth#sigv4": {
                    "name": "workmailmessageflow"
                },
                "aws.protocols#restJson1": {},
                "smithy.api#documentation": "<p>The WorkMail Message Flow API provides access to email messages as they are\n      being\n      sent and received by\n      a\n      WorkMail organization.</p>",
                "smithy.api#title": "Amazon WorkMail Message Flow"
            }
        },
        "com.amazonaws.workmailmessageflow#InvalidContentLocation": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.workmailmessageflow#errorMessage"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>WorkMail could not access the updated email content. Possible reasons:</p>\n         <ul>\n            <li>\n               <p>You made the request in a region other than your S3 bucket region.</p>\n            </li>\n            <li>\n               <p>The <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-owner-condition.html\">S3 bucket owner</a> is not the \n        same as the calling AWS account.</p>\n            </li>\n            <li>\n               <p>You have an incomplete or missing S3 bucket policy. For more information about policies, see \n        <a href=\"https://docs.aws.amazon.com/workmail/latest/adminguide/update-with-lambda.html\">\n          Updating message content with AWS Lambda\n        </a> in the <i>WorkMail Administrator\n          Guide</i>.</p>\n            </li>\n         </ul>",
                "smithy.api#error": "client"
            }
        },
        "com.amazonaws.workmailmessageflow#MessageFrozen": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.workmailmessageflow#errorMessage"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The requested email is not eligible for update. This is usually the case for a redirected email.</p>",
                "smithy.api#error": "client"
            }
        },
        "com.amazonaws.workmailmessageflow#MessageRejected": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.workmailmessageflow#errorMessage"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The requested email could not be updated due to an error in the MIME content. Check the error message for more information about \n      what caused the error.</p>",
                "smithy.api#error": "client"
            }
        },
        "com.amazonaws.workmailmessageflow#PutRawMessageContent": {
            "type": "operation",
            "input": {
                "target": "com.amazonaws.workmailmessageflow#PutRawMessageContentRequest"
            },
            "output": {
                "target": "com.amazonaws.workmailmessageflow#PutRawMessageContentResponse"
            },
            "errors": [
                {
                    "target": "com.amazonaws.workmailmessageflow#InvalidContentLocation"
                },
                {
                    "target": "com.amazonaws.workmailmessageflow#MessageFrozen"
                },
                {
                    "target": "com.amazonaws.workmailmessageflow#MessageRejected"
                },
                {
                    "target": "com.amazonaws.workmailmessageflow#ResourceNotFoundException"
                }
            ],
            "traits": {
                "smithy.api#documentation": "<p>Updates the raw content of an in-transit email message, in MIME format.</p>\n         <p>This example describes how to update in-transit email message. For more information and examples for using this API, see \n      <a href=\"https://docs.aws.amazon.com/workmail/latest/adminguide/update-with-lambda.html\">\n        Updating message content with AWS Lambda</a>.</p>\n           \n      \n         <note>\n            <p>Updates to an in-transit message only appear when you call <code>PutRawMessageContent</code> from an AWS Lambda function \n      configured with a  synchronous <a href=\"https://docs.aws.amazon.com/workmail/latest/adminguide/lambda.html#synchronous-rules\">\n        Run Lambda</a> rule. If you call <code>PutRawMessageContent</code> on a delivered or sent message, the message remains unchanged,\n      even though <a href=\"https://docs.aws.amazon.com/workmail/latest/APIReference/API_messageflow_GetRawMessageContent.html\">GetRawMessageContent</a> returns an updated \n        message.\n    </p>\n         </note>",
                "smithy.api#http": {
                    "method": "POST",
                    "uri": "/messages/{messageId}",
                    "code": 200
                }
            }
        },
        "com.amazonaws.workmailmessageflow#PutRawMessageContentRequest": {
            "type": "structure",
            "members": {
                "messageId": {
                    "target": "com.amazonaws.workmailmessageflow#messageIdType",
                    "traits": {
                        "smithy.api#documentation": "<p>The identifier of the email message being updated.</p>",
                        "smithy.api#httpLabel": {},
                        "smithy.api#required": {}
                    }
                },
                "content": {
                    "target": "com.amazonaws.workmailmessageflow#RawMessageContent",
                    "traits": {
                        "smithy.api#documentation": "<p>Describes the raw message content of the updated email message.</p>",
                        "smithy.api#required": {}
                    }
                }
            }
        },
        "com.amazonaws.workmailmessageflow#PutRawMessageContentResponse": {
            "type": "structure",
            "members": {}
        },
        "com.amazonaws.workmailmessageflow#RawMessageContent": {
            "type": "structure",
            "members": {
                "s3Reference": {
                    "target": "com.amazonaws.workmailmessageflow#S3Reference",
                    "traits": {
                        "smithy.api#documentation": "<p>The S3 reference of an email message.</p>",
                        "smithy.api#required": {}
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>Provides the MIME content of the updated email message as an S3 object. All MIME content must meet the following criteria:</p>\n         <ul>\n            <li>\n               <p>Each part of a multipart MIME message must be formatted properly.</p>\n            </li>\n            <li>\n               <p>Attachments must be of a content type that Amazon SES supports. For more information, see \n        <a href=\"https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mime-types-appendix.html\">Unsupported Attachment Types</a>.</p>\n            </li>\n            <li>\n               <p>If any of the MIME parts in a message contain content that is outside of the 7-bit ASCII character range, we recommend \n        encoding that content.</p>\n            </li>\n            <li>\n               <p>Per <a href=\"https://tools.ietf.org/html/rfc5321#section-4.5.3.1.6\">RFC 5321</a>, the maximum length of each line of \n        text, including the <CRLF>, must not exceed 1,000 characters.</p>\n            </li>\n            <li>\n               <p>The message must contain all the required header fields. Check the returned error message for more information.</p>\n            </li>\n            <li>\n               <p>The value of immutable headers must remain unchanged. Check the returned error message for more information.</p>\n            </li>\n            <li>\n               <p>Certain unique headers can only appear once. Check the returned error message for more information.</p>\n            </li>\n         </ul>"
            }
        },
        "com.amazonaws.workmailmessageflow#ResourceNotFoundException": {
            "type": "structure",
            "members": {
                "message": {
                    "target": "com.amazonaws.workmailmessageflow#errorMessage"
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>The requested email message is not found.</p>",
                "smithy.api#error": "client",
                "smithy.api#httpError": 404
            }
        },
        "com.amazonaws.workmailmessageflow#S3Reference": {
            "type": "structure",
            "members": {
                "bucket": {
                    "target": "com.amazonaws.workmailmessageflow#s3BucketIdType",
                    "traits": {
                        "smithy.api#documentation": "<p>The S3 bucket name.</p>",
                        "smithy.api#required": {}
                    }
                },
                "key": {
                    "target": "com.amazonaws.workmailmessageflow#s3KeyIdType",
                    "traits": {
                        "smithy.api#documentation": "<p>The S3 key object name.</p>",
                        "smithy.api#required": {}
                    }
                },
                "objectVersion": {
                    "target": "com.amazonaws.workmailmessageflow#s3VersionType",
                    "traits": {
                        "smithy.api#documentation": "<p>If you enable versioning for the bucket, you can specify the object version.</p>"
                    }
                }
            },
            "traits": {
                "smithy.api#documentation": "<p>Amazon S3 object representing the updated message content, in MIME format.</p>\n         <note>\n            <p>The region for the S3 bucket containing the S3 object must match the region used for WorkMail operations. Also, for WorkMail to process \n      an S3 object, it must have permission to access that object. For more information, see \n      <a href=\"https://docs.aws.amazon.com/workmail/latest/adminguide/update-with-lambda.html\">\n        Updating message content with AWS Lambda</a>.</p>\n         </note>"
            }
        },
        "com.amazonaws.workmailmessageflow#errorMessage": {
            "type": "string"
        },
        "com.amazonaws.workmailmessageflow#messageContentBlob": {
            "type": "blob",
            "traits": {
                "smithy.api#streaming": {}
            }
        },
        "com.amazonaws.workmailmessageflow#messageIdType": {
            "type": "string",
            "traits": {
                "smithy.api#length": {
                    "min": 1,
                    "max": 120
                },
                "smithy.api#pattern": "[a-z0-9\\-]*"
            }
        },
        "com.amazonaws.workmailmessageflow#s3BucketIdType": {
            "type": "string",
            "traits": {
                "smithy.api#length": {
                    "min": 3,
                    "max": 63
                },
                "smithy.api#pattern": "^[a-z0-9][a-z0-9\\-]*"
            }
        },
        "com.amazonaws.workmailmessageflow#s3KeyIdType": {
            "type": "string",
            "traits": {
                "smithy.api#length": {
                    "min": 1,
                    "max": 1024
                },
                "smithy.api#pattern": "[a-zA-Z0-9\\-/]*"
            }
        },
        "com.amazonaws.workmailmessageflow#s3VersionType": {
            "type": "string",
            "traits": {
                "smithy.api#length": {
                    "min": 1,
                    "max": 1024
                },
                "smithy.api#pattern": ".+"
            }
        }
    }
}
