Search the Omeda Knowledge Base
Email Deployment Approval Lookup
Summary
The Deployment Approval Lookup API provides the ability to retrieve the approval queue information such as tests, users and comments .
Base Resource URI
Production: https://ows.omeda.com/webservices/rest/brand/{brandAbbreviation}/omail/deployment/approvals/{trackId}/* Testing: https://ows.omedastaging.com/webservices/rest/brand/{brandAbbreviation}/omail/deployment/approvals/{trackId}/*
brandAbbreviationis the abbreviation for the brandtrackIdis the unique identifier for the deployment being requested.
Technical Requirements
The HTTP header must contain the following elements: x-omeda-appid a unique id provided to you by Omeda to access your data. The request will fail without a valid id.content-typea content type supported by this resource. See Supported Content Types for more details. If omitted, the default content type is application/json.
Supported Content Types
If omitted, the default content type is application/json.JSONapplication/json
JSON is the preferred data exchange format, because it is lightweight and, in most cases, faster to process and utilizes less bandwidth. There are many available open-source JSON libraries available. See json.org for details.
Supported HTTP Methods
There is one HTTP method supported:GETSee W3C’s GET specs for details.
Field Definition
The following table describes the hierarchical data elements.
Approval Lookup Elements Returned
Base Lookup Elements
Attribute Name | Required? | Data Type | Description |
---|---|---|---|
ScheduledDate | conditional | date | This will give the scheduled date if the deployment has been scheduled to send Example: ‘2015-04-24 15:10:11’ (Central Standard Time) |
RequestedDate | required | date | The preliminary date given when the Deployment was created Example: ‘2015-04-23 15:10:11’ (Central Standard Time) |
SplitCount | required | integer | The number of deployment splits. This will correspond to the number of splits found in the Omail Message Content pleat. |
Status | required | string | The current status of the deployment. Valid values are : ‘Cancelled’, ‘New’, ‘Sending’,’Scheduled’,’Sent’,’Waiting Review’,’Not Accepted’,’Accepted’,’Submitted’, and ‘Approved’. |
ApprovalDate | conditional | date | If the deployment has been approved, this will be the date it was approved to send. Example: ‘2015-04-24 12:10:11’ (Central Standard Time) |
FinalApproverUserId | required | string | The Final Approver for the deployment. This is specified when the deployment is created. |
Tests | required | array | The tests that have been sent the deployment. If 2 tests have been sent, the Tests array will have a size of 2. Please see Tests Array Element below. |
Tests Array Element
Attribute Name | Required? | Data Type | Description |
---|---|---|---|
TestNumber | required | integer | The first test sent is test 1, the second is test 2, etc. |
SentDate | required | date | The date that the test was sent. |
SentStatus | required | string | The status of the test. Valid values are Ready, Sending, or Sent. |
ApprovalStatusCode | required | string | The approval status code of the test, description for each field is found in the ApprovalStatusDescription field below. Valid values are ‘NEW’, ‘WAITING’, ‘APPROVED’,’DISAPPROVED’, and FINAL_APPROVED’. |
ApprovalStatusDescription | required | string | The approval status description of the test. Valid values are ‘Not Sent’, ‘Waiting for response’, ‘All Testers Approved’,’Rejected’, and ‘Final Approver Approved’. |
TestSplits | required | array | Each deployment test can have one or many test splits depending on the number of splits that the deployment base deployment has. For example if the deployment has 3 splits, tests array object will contain a TestSplits array of size 3. See TestSplits Array element below. |
TestSplits Array Element
Attribute Name | Required? | Data Type | Description |
---|---|---|---|
SplitNumber | required | integer | The first split is split 1, the second is split 2, etc. |
Id | required | integer | The test split id – unique identifier – also used to lookup the html or text content of the deployment (See HtmlTestContentUrl and TextTestContentUrl below). |
FromName | required | string | The ‘From’ name that will be used for this particular split. |
FromEmail | required | string | The Email Address that the deployment email will be from. |
Subject | required | string | The deployment email subject for this test split. |
HtmlSpamScore | conditional | double | The SpammAssassin spam score for the html content of this test split. Only available if the deployment has html content. |
TextSpamScore | conditional | double | The SpammAssassin spam score for the text content of this test split. Only available if the deployment has a text content. |
HtmlSpamReport | conditional | string | The SpammAssassin analysis of the deployment html content. Only available if the deployment has a htmlcontent. |
TextSpamReport | conditional | string | The SpammAssassin analysis of the deployment text content. Only available if the deployment has a text content. |
HtmlTestContentUrl | conditional | string | The Deployment Test Content Lookup Api Url to lookup the html content of the split that was sent for this test. Only available if the split has html content.Example: https://ows.omedastaging.com/webservices/rest/brand/OTB/omail/deployment/test/content/lookup/html/20632822/* where 20632822 is the Id field returned above. |
TextTestContentUrl | conditional | string | The Deployment Test Content Lookup Api Url to lookup the text content of the split that was sent for this test. Only available if the split has text content.Example: https://ows.omedastaging.com/webservices/rest/brand/OTB/omail/deployment/test/content/lookup/text/20632822/* where 20632822 is the Id field returned above. |
SplitStatus | required | string | Either ‘OPEN’ or ‘CLOSED’. A test split is CLOSED if the deployment has been scheduled to send or if a new test has been sent. Otherwise the test split will be OPEN. |
SplitApprovalStatusCode | required | string | The approval status code of the test split, description for each field is found in the SplitApprovalStatusDescriptionfield below. Valid values are ‘NEW’, ‘WAITING’, ‘APPROVED’,’DISAPPROVED’, and FINAL_APPROVED’. |
SplitApprovalStatusDescription | required | string | The approval status description of the test split. Valid values are ‘Not Sent’, ‘Waiting for response’, ‘All Testers Approved’,’Rejected’, and ‘Final Approver Approved’. |
MessageType | required | string | Valid values are ‘Text’, ‘Html’, or ‘Both’. |
ApprovalDate | conditional | date | If the split has been approved – this field will hold the date it was approved. |
Testers | required | array | Each Test Split element will have an array of Testers. Each element in the testers array gives important information, such as whether the test reached the tester successfully, the number of opens, whether they approved the test, any comments they have on the test, etc. Please see Testers Array Element below. |
Testers Array Element
Attribute Name | Required? | Data Type | Description |
---|---|---|---|
Opens | required | integer | The number of times the tester has opened this particular deployment test split. This tracking is only available for html deployments. |
TesterDeliveryEmail | required | The email address that the test was sent to. | |
SentDate | conditional | date | If the test has been sent, this field will give the date that the test was sent to this particular tester. |
TextTestApprovalStatusCode | conditional | string | The approval status code of the tester. Valid values are ‘APPROVED’, ‘DISAPPROVED’, ‘WAITING’. Element is only available if there is text content in the deployment split. |
HtmlTestApprovalStatusCode | conditional | string | The approval status code of the tester. Valid values are ‘APPROVED’, ‘DISAPPROVED’, ‘WAITING’. Element is only available if there is htmlcontent in the deployment split. |
TextTestResponseDate | conditional | date | The date the tester responded to the test for this test split. This field is only available if the tester has responded to this test split and the deployment split has text content. |
HtmlTestResponseDate | conditional | date | The date the tester responded to the test for this test split. This field is only available if the tester has responded to this test split and the deployment split has html content. |
TextDeliveryStatus | conditional | text | If there was a problem sending the text version to the test recipient, this field will provide a short description. This field is only available if there is an error delivering the test to the recipients inbox and if the deployment split has text content. |
HtmlDeliveryStatus | conditional | text | If there was a problem sending the html verion to the test recipient, this field will provide a short description. This field is only available if there is an error delivering the test to the recipients inbox and if the deployment split has htmlcontent. |
IsFinalApprover | required | boolean | Whether this particular tester is the designated Final Approver of the deployment. Valid values are ‘true’ / ‘false’. |
FirstOpenDate | conditional | date | If the tester has opened the test email for this test split, this field will give the first date that the test split email was opened. |
LastOpenDate | conditional | date | If the tester has opened the test email for this test split, this field will give the last date that the test split email was opened. |
TesterName | required | string | The First and Last name of the tester. |
TesterComments | conditional | array | Each Testers Array element will have an array of TesterComments if the tester has left a comment for a particular test split. Please see TesterComments Array Element below. |
TesterComments Array Element
Attribute Name | Required? | Data Type | Description |
---|---|---|---|
HtmlTestComment | conditional | string | The comment the tester made regarding the html content of the split. Only available if the tester has left a comment and the test split contains html content. |
HtmlTestCommentDate | conditional | date | The date the tester made the comment regarding the html content of the split. Only available if the tester has left a comment and the test split contains html content. |
TextTestComment | conditional | string | The comment the tester made regarding the text content of the split. Only available if the tester has left a comment and the test split contains text content. |
TextTestCommentDate | conditional | date | The date the tester made the comment regarding the text content of the split. Only available if the tester has left a comment and the test split contains text content. |
Response Example
JSON Example – 1 split – 1 test sent – James Smith did not approve the text version and left comments – final approver has not responded to tests
{ "OwnerUserId": "johndoe", "Tests": [{ "SentDate": "2010-04-29 13:46:18", "ApprovalStatusCode": "WAITING", "SentStatus": "Sent", "TestSplits": [{ "FromEmail": "postmaster@renewals.marketing.com", "Testers": [ { "Opens": "3", "TesterDeliveryEmail": "james.smith@marketing.com", "SentDate": "2010-04-29 13:46:25", "TextTestApprovalStatusCode": "DISAPPROVED", "HtmlTestResponseDate": "2010-04-29 13:56:27", "HtmlTestApprovalStatusCode": "WAITING", "FirstOpenDate": "2010-04-29 13:47:12", "LastOpenDate": "2010-04-29 13:47:16", "TextTestResponseDate": "2010-04-29 13:55:28", "TesterName": "James Smith", "IsFinalApprover": false, "TesterComments": [ { "HtmlTestComment": "Profile Preference Link doesn't work", "HtmlTestCommentDate": "2010-04-29 13:56:27" }, { "HtmlTestComment": "Renew Now link needs to have the reader number embedded to prepopulate the sub form.", "HtmlTestCommentDate": "2010-04-29 13:56:06" }, { "TextTestComment": "Profile Preference link doesn't work.", "TextTestCommentDate": "2010-04-29 13:55:28" }, { "TextTestComment": "The link for "if this email was forwarded to you...."doesn't work", "TextTestCommentDate": "2010-04-29 13:55:10" }, { "TextTestComment": "Renew Now link doesn't go anywhere - need it to go to the sub page with prepopulated info.", "TextTestCommentDate": "2010-04-29 13:54:14" } ] }, { "Opens": "1", "TesterDeliveryEmail": "john.doe@marketing.com", "SentDate": "2010-04-29 13:46:22", "TextTestApprovalStatusCode": "WAITING", "HtmlTestApprovalStatusCode": "WAITING", "FirstOpenDate": "2010-04-29 13:59:03", "LastOpenDate": "2010-04-29 13:59:03", "TesterName": "John Doe", "IsFinalApprover": true } ], "Subject": "Marketing Renewal", "HtmlTestContentUrl": "https://ows.omedastaging.com/webservices/rest/brand/OTB/omail/deployment/test/content/lookup/html/20632822/*", "TextTestContentUrl": "https://ows.omedastaging.com/webservices/rest/brand/OTB/omail/deployment/test/content/lookup/text/20632822/*", "HtmlSpamScore": 2.69, "SplitApprovalStatusDescription": "Rejected", "SplitStatus": "OPEN", "TextSpamReport": "Content analysis details: (2.4 points)nn pts rule name descriptionn---- ---------------------- --------------------------------------------------n 2.4 URG_BIZ BODY: Contains urgent matter ", "SplitNumber": 1, "HtmlSpamReport": "Content analysis details: (2.7 points)nn pts rule name descriptionn---- ---------------------- --------------------------------------------------n 2.4 URG_BIZ BODY: Contains urgent mattern 0.2 HTML_IMAGE_RATIO_08 BODY: HTML has a low ratio of text to image arean 0.0 HTML_MESSAGE BODY: HTML included in messagen 0.1 MIME_HTML_ONLY BODY: Message only has text/html MIME parts ", "FromName": "Renewal Marketing", "SplitApprovalStatusCode": "DISAPPROVED", "TextSpamScore": 2.38, "Id": 16001633, "MessageType": "Both" }], "ApprovalStatusDescription": "Waiting For Response", "TestNumber": 1 }], "TrackId": "OTB100429002", "DeploymentName": "Marketing Renewal Deployment 1", "RequestedDate": "2010-04-30 16:00:00", "SplitCount": 1, "FinalApproverUserId": "johndoe" }
JSON Example – 1 split – 2 tests sent – Jan Smith found problems with the text and html version for the first test – a second test was sent and she approved the html and text version – John Doe approved the second test
{ "OwnerUserId": "johndoe", "Tests": [ { "SentDate": "2015-03-04 13:06:51", "ApprovalStatusCode": "WAITING", "SentStatus": "Sent", "TestSplits": [{ "FromEmail": "renewals@marketing.com", "Testers": [ { "Opens": "5", "TesterDeliveryEmail": "jansmith@marketing.com", "SentDate": "2015-03-04 13:06:59", "TextTestApprovalStatusCode": "DISAPPROVED", "HtmlTestResponseDate": "2015-03-04 13:31:50", "HtmlTestApprovalStatusCode": "DISAPPROVED", "FirstOpenDate": "2015-03-04 13:23:12", "LastOpenDate": "2015-03-04 13:33:53", "TextTestResponseDate": "2015-03-04 13:28:34", "TesterName": "Jan Smith", "IsFinalApprover": false, "TesterComments": [ { "HtmlTestComment": "Please confirm if the link for "www.marketing.com" works. The TEXT and HTML versions both go to a 404 page, but when you view the newsletter in a web browser, the link is fine. The "www.marketing.com" link should direct to: http://www.marketing.com/landing/", "HtmlTestCommentDate": "2015-03-04 13:31:50" }, { "TextTestComment": "Please confirm if the link for "www.marketing.com" works. The TEXT and HTML versions both go to a 404 page, but when you view the newsletter in a web browser, the link is fine. The "www.marketing.com" link should direct to: http://www.marketing.com/landingtext/", "TextTestCommentDate": "2015-03-04 13:28:34" }, { "TextTestComment": "Please make sure that the text "New Subscriber" and "Existing Subscribers" are on two separate lines. The TEXT version has the two phrases running together.", "TextTestCommentDate": "2015-03-04 13:27:10" } ] }, { "Opens": "2", "TesterDeliveryEmail": "john.doe@marketing.com", "SentDate": "2015-03-04 13:07:02", "TextTestApprovalStatusCode": "WAITING", "HtmlTestApprovalStatusCode": "WAITING", "FirstOpenDate": "2015-03-04 13:33:26", "LastOpenDate": "2015-03-04 13:54:46", "TesterName": "John Doe", "IsFinalApprover": true } ], "Subject": "Get your renewals today!", "HtmlSpamScore": 3.3, "SplitApprovalStatusDescription": "Waiting For Response", "SplitStatus": "OPEN", "TextSpamReport": "Content analysis details: (1.1 points)nn pts rule name descriptionn---- ---------------------- --------------------------------------------------n 1.1 HS_INDEX_PARAM URI: Link contains a common tracker pattern. ", "SplitNumber": 1, "HtmlSpamReport": "Content analysis details: (3.3 points)nn pts rule name descriptionn---- ---------------------- --------------------------------------------------n 1.1 HS_INDEX_PARAM URI: Link contains a common tracker pattern.n 2.1 HTML_IMAGE_RATIO_04 BODY: HTML has a low ratio of text to image arean 0.0 HTML_MESSAGE BODY: HTML included in messagen 0.1 MIME_HTML_ONLY BODY: Message only has text/html MIME parts ", "HtmlTestContentUrl": "https://ows.omedastaging.com/webservices/rest/brand/OTB/omail/deployment/test/content/lookup/html/2063282/*", "TextTestContentUrl": "https://ows.omedastaging.com/webservices/rest/brand/OTB/omail/deployment/test/content/lookup/text/2063282/*", "FromName": "Marketing.com", "SplitApprovalStatusCode": "WAITING", "TextSpamScore": 1.11, "Id": 157376491622, "MessageType": "Both" }], "ApprovalStatusDescription": "Waiting For Response", "TestNumber": 1 }, { "SentDate": "2015-03-04 13:36:03", "ApprovalStatusCode": "FINAL_APPROVED", "SentStatus": "Sent", "TestSplits": [{ "FromEmail": "renewals@marketing.com", "Testers": [ { "Opens": "1", "TesterDeliveryEmail": "jansmith@marketing.com", "SentDate": "2015-03-04 13:36:10", "TextTestApprovalStatusCode": "APPROVED", "HtmlTestResponseDate": "2015-03-04 13:41:57", "HtmlTestApprovalStatusCode": "APPROVED", "FirstOpenDate": "2015-03-04 13:40:31", "LastOpenDate": "2015-03-04 13:40:31", "TextTestResponseDate": "2015-03-04 13:41:33", "TesterName": "Jan Smith", "IsFinalApprover": false, "TesterComments": [ { "HtmlTestComment": "Again, links work now. Thanks for the prompt response!", "HtmlTestCommentDate": "2015-03-04 13:41:57" }, { "TextTestComment": "Links work. Thank you!", "TextTestCommentDate": "2015-03-04 13:41:33" } ] }, { "Opens": "2", "TesterDeliveryEmail": "john.doe@marketing.com", "SentDate": "2015-03-04 13:36:08", "TextTestApprovalStatusCode": "APPROVED", "HtmlTestApprovalStatusCode": "APPROVED", "TesterName": "John Doe", "IsFinalApprover": true } ], "Subject": "Connect with Icom at IWCE - Booth 621", "HtmlSpamScore": 3.3, "SplitApprovalStatusDescription": "Final Approver Approved", "SplitStatus": "OPEN", "TextSpamReport": "Content analysis details: (1.1 points)nn pts rule name descriptionn---- ---------------------- --------------------------------------------------n 1.1 HS_INDEX_PARAM URI: Link contains a common tracker pattern. ", "SplitNumber": 1, "HtmlSpamReport": "Content analysis details: (3.3 points)nn pts rule name descriptionn---- ---------------------- --------------------------------------------------n 1.1 HS_INDEX_PARAM URI: Link contains a common tracker pattern.n 2.1 HTML_IMAGE_RATIO_04 BODY: HTML has a low ratio of text to image arean 0.0 HTML_MESSAGE BODY: HTML included in messagen 0.1 MIME_HTML_ONLY BODY: Message only has text/html MIME parts ", "FromName": "marketing.com", "SplitApprovalStatusCode": "FINAL_APPROVED", "TextSpamScore": 1.11, "Id": 15737649212, "MessageType": "Both" }], "ApprovalStatusDescription": "Final Approver Approved", "TestNumber": 2 } ], "TrackId": "OTB150454009", "DeploymentName": "Marketing Renewals March", "RequestedDate": "2015-03-06 09:00:00", "SplitCount": 1, "FinalApproverUserId": "johndoe" }
Failed Submission
A failed GET submission may be due to several factors:
Status | Description |
---|---|
400 Bad Request | Typically, this error occurs when the request does not follow the specifications. In the case of an update, this can occur if an HTTP PUT request is submitted without a TrackId element in the submitted json data. |
403 Forbidden | Typically, this error occurs when the credentials are erroneous. Potentially, an incorrect x-omeda-appid. |
404 Not Found | Typically, this error occurs with a malformed URL or the resource that is searched for is not found. This can occur if a BrandAbbreviation submitted is not found in our system. |
405 Method Not Allowed | Typically, this error occurs when the resource accessed is not allowed by the HTTP Method utilized. Make sure you employ the correct HTTP Method (POST) for this request. |
This is not an exhaustive list of errors, but common ones. If an error occurs repeatedly, please contact your Omeda representative.
JSON Example
{ "SubmissionId" : "C95AE90C-BEC6-41F2-91E2-2BA9168D1D1F", "Errors" : [ { "Error": "The AppId submitted is forbidden access." } ] }