ezp builder integration guide & api documentation
TRANSCRIPT
Ezp Builder Integration Guide & API Documentation
Table of Contents
Ezp Builder Integration Guide & API Documentation.........................................................................1 Ezp builder Overview.................................................................................................................1
Basic Requirements...............................................................................................................1 How long does it take to integrate the builder? .........................................................................1 Getting a Deployment Key .....................................................................................................2 Ezp builder Best Practices ......................................................................................................2
Using ezp Builder ......................................................................................................................2 Basic Installation Example......................................................................................................2
API Reference and Examples ......................................................................................................4 Including ezp Builder .............................................................................................................4 CreateTemplateApp...............................................................................................................4 SetPhoto..............................................................................................................................9 getCurrentProduct...............................................................................................................11 Save .................................................................................................................................12 getProjectInfo.....................................................................................................................12 load...................................................................................................................................13 setSku...............................................................................................................................14 setSkin ..............................................................................................................................14
Product List ............................................................................................................................15 Fulfilling Orders: Posting Order XML to EZ Prints .........................................................................22 Final Thoughts........................................................................................................................23
Ezp builder Overview This document covers the process of installing ezp builder into your website quickly and easily. It also
goes into the details of the extensive API so that you can get the most out of your integration. Please
note that this document is aimed at web developers with some HTML and JavaScript knowledge.
Basic Requirements
Installing and using ezp builder is very simple, in many cases the builder can be installed by simply
adding a few lines of JavaScript code to an HTML page. The application runs in the Adobe Flash runtime
and thus will work in any web browser that supports Flash. Ezp builder currently requires Flash 9 and it
will take care of detecting the flash version and suggesting an upgrade if necessary – you do not need to
do any work to detect flash outside the builder.
How long does it take to integrate the builder?
Ezp builder is designed to be embedded into a web page on your existing site. Integration time will vary
depending on how much you want to customize. The most basic integration can be complete in minutes
and a complete customization typically takes less than a day. In some cases you may wish to configure
your ecommerce website with new products or photo handlers that pass photos into the builder. In these
cases integration may take longer. The ezprints team is always eager to help so if you run into problems
please email your integration support contact.
Getting a Deployment Key
Ezp Builder requires a deployment key to run in a production environment. The deployment key allows
you to have custom settings for each website where you deploy the builder. To obtain a key simply
email your integration support contact.
Ezp builder Best Practices
Before you get started review these best practices for deploying the builder.
Use medium resolution images
Why: Speed matters – customers buy more when the process is fast and easy. On ezprints.com our
medium resolution files are about 100 Kb, these download 20 times faster than a full resolution 2
Mb photo.
How: Use images that are less than 600 pixels wide and use the printResWidth and printResHeight
parameters to tell us the resolution of the full resolution image. See page 7 of our integration guide
for more details
Use the media picker when multiple photos are available
Why: The media picker is very customizable and allows your customers to quickly find photos use
drag and drop to place them onto the product.
How: The media picker is initialized in your create call and takes simple XML. See the complete
documentation in the API Reference under the createTemplateApp function.
Use the built in upload functionality
Why: Customers often shop before they upload. Using the upload functionality in ezp builder
increases conversion by keeping customers in the ordering flow with a product they have already
chosen.
How: Just tell the builder what URL on your site to post to and what parameters to pass with the
upload. If you are using the media picker the builder will send the current collectionId as a field in
the POST. See the complete documentation in the API Reference under the createTemplateApp
function.
Make it bigger
Why: ezp builder will scale the edit area to fill up all the room that you give it. Customers like to
see the details of the product they are building and preparing to buy. A larger preview allows
customers to see more detail which increases their confidence that they will get what they want.
How: The createTemplateApp call allows you to pass in the width and height you would like the
builder to appear. Increase these until you get the look you want. See the complete documentation
in the API Reference
Use the built in “Add to Cart” button
Why: The built in “Add to Cart” button is a highly visible call to action designed to help drive
conversion. It also checks to make sure the project is complete and will provide instructions to the
user if the need to do more to complete their project.
How: Simply add “addToCartCallback“ as a parameter in you create call. We will return the
projectid, sku, and thumburl to your callback function.
Using ezp Builder
Basic Installation Example
Copy this simple 4 step example to setup ezp builder in an environment that you can play around with.
This can be done on your local computer or on a web server.
1) Create an HTML document where you can install the builder. Here is a sample:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Your Page Title Here</title>
</head>
<body>
<h2>Simple Installation Example</h2>
<p>
Please use your browsers <b>View-Source</b>
feature to see the code.
</p>
</body>
</html>
2) Copy the following code immediately above the <body> tag.
<script type="text/javascript" src="http://apps.ezprints.com/home/demo-builder-key.ezp"> </script>
<script type="text/javascript">
// fires when the application is ready for use
var readyHandler = function()
{
}
var app = ezp.apps.createTemplateApp(
{
elementId: 'appDiv',
width: 700,
height: 500,
readyCallback: readyHandler
});
</script>
3) Copy the following code onto your web page where you would like the app to appear.
<div id="appDiv">
<a href="http://www.adobe.com/go/getflashplayer">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"
alt="Get Adobe Flash player" />
</a>
</div>
4) Setup your cross-domain policy file to allow “apps.ezprints.com” to access your media.
By default, Flash applications cannot access images and other media that is hosted on other web sites
without receiving explicit permission to those resources. This permission is given using a cross domain
policy file. To give apps.ezprints.com permission to access your media, save the following into a file
called crossdomain.xml.
<cross-domain-policy>
<allow-access-from domain="apps.ezprints.com"/>
</cross-domain-policy>
Make sure that the resulting crossdomain.xml file is available at the root of your website. For example,
if your site is site.com, the cross domain policy file should be available at site.com/crossdomain.xml.
There are more advanced aspects to the cross domain policy file. To learn more on cross domain policy
files please visit the following link.
http://livedocs.adobe.com/flex/3/html/help.html?content=security2_04.html
At this point, you should be able to see the application running on your site! Next we will discuss how to
interact with the application using the JavaScript API.
API Reference and Examples
Ezp builder API gives you the power to interact with and customize the application to your specifications.
In this section, we will go over the details of the API with examples. Required fields are denoted with a
red asterisk (*).
Including ezp Builder
You need to include a reference to the builder scrip on every page where you want the builder to run.
This script contains the JavaScript API and flash detection code. You will need to use the deployment key
issued to you by ezprints. If you need a key simply email your ezprints integration contact.
<script type="text/javascript" src="http://apps.ezprints.com/home/[Your Deployment Key].ezp">
</script>
CreateTemplateApp
Function
ezp.apps.createTemplateApp(config: Object) – Creates an instance of the application.
Returns
An instance of the application.
Parameters
config: Object *
Contains all configuration objects for this application instance. Its properties are as follows.
elementId: String *
Defines the Id of the html element where the application should go.
sku: String *
The sku of the product to load. A complete list of available products is included at the end of
this document.
width: Mixed
Defines the width of the application in pixels. The minimum recommended width is 400 pixels.
The value default is 100% of the width of the container element with id of elementId and can be a number in pixels or string representing a percent such as "80%".
height: Mixed
Defines the height of the application in pixels. The minimum recommended height is 400 pixels.
The value default is 100% of the height of the container element with id of elementId and can
be a number in pixels or string representing a percent such as "80%".
projectId: String
Defines the project id of a previously saved project. This will reload the specified project and
any media defined within that project.
readyCallback: Function
A JavaScript function to call when the application is fully loaded and ready for interactions.
loadCallback: Function
A JavaScript function to call when the application has finished loading a project.
saveCallback: Function
A JavaScript function to call when the application has finished saving a project. The parameters
passed to this function when it is called are the project id as a string and the thumb preview URL as a string if a thumbnail was requested.
errorCallback: Function
A JavaScript function to call when the application encounters an error. The parameter passed to this function when it is called is a string indicating the error encountered.
templateLoadCallback: Function
A JavaScript function to call when the widget loads a template. This is useful when you want to perform a certain action when a template is loaded.
addToCartCallback: Function
A JavaScript function to call when the internal application “Add to Cart” button is pressed. The
parameters passed to this function when it is called are the project id as a string, the SKU of
the product that was personalized and the thumb preview URL as a string if a thumbnail was
requested. The advantage of using this button is that it validates that the product has been correctly created before proceeding with saving the project.
scope: Object
The object that should be used as the "this" object when performing any of the callbacks. Defaults to null.
mediaPickerSources: [Object]
This takes an array of media picker source objects that define the available options in the
application’s media picker. Excluding this parameter will hide the media picker. Each source
can as the following properties.
id: String *
A unique identified for the source.
title: String *
The name of the source as it should appear in the media picker.
iconUri: String *
A URL to an image to use as the visual icon for this source.
collectionsUri: String *
A URL to a page containing all collections defined for this source. If we used passed to this parameter http://site.com/source.xml, the data contained in such a file is as follows.
<Source Id="1" Title="Source 1" IconUri="http://www.domain.com/cover.png">
<CollectionUri Format="xml|json" Id="1234">
http://site.com/collection.xml
</CollectionUri>
<Collection Id="1234" IconUri="http://www.domain.com/cover.jpg"
Title="Album 1" Description="" Size="">
collection details (detailed below) go here ...
</Collection>
</Source >
Each collection can be provided verbosely using the Collection node or via a
CollectionUri. In the verbose method, all details of the collection must be provided. In
the CollectionUri method, only the basic details are required with the remaining data stored at the specified URI. An example CollectionUri file has the following format.
<Collection Id="1234" Title="" Description="" Size=""
IconUri ="http://www.domain.com/cover.jpg">
<AssetUri Id="" Format="xml|json">
http://site.com/asset.xml
</AssetUri>
<Asset verbose asset definition (detailed below) go here ... />
<AssetsUri Format="xml|json">
http://site.com/assets.xml
</AssetsUri>
</Collection>
Collection XML is similarly comprised of AssetUri or verbose Asset nodes. A single asset
in its own file degrades performance so it is not recommended. However, an example
AssetUri file has the following format.
<Asset Id="" Title="" Description="" Size=""
PrintResWidth="" PrintResHeight=""
PrintResUri="http://site.com/src.jpg"
ScreenResUri="http://site.com/med.jpg"
IconUri="http://site.com/thumb.jpg" />
A more useful option is AssetsUri node which defines groups of in a file. This is useful in
situations where a collection has a prohibitively large number of assets by allowing the
media picker to load the assets in manageable chunks. An example AssetsUri file has the
following format.
<Assets>
<Asset Id="" Title="" Description="" Size=""
PrintResWidth="" PrintResHeight=""
PrintResUri="http://site.com/src.jpg"
ScreenResUri="http://site.com/med.jpg"
IconUri="http://site.com/thumb.jpg"
/>
<Asset Id="" Title="" Description="" Size=""
PrintResWidth="" PrintResHeight=""
PrintResUri="http://site.com/src.jpg"
ScreenResUri="http://site.com/med.jpg"
IconUri="http://site.com/thumb.jpg"
/>
more assets would go here ...
</Assets>
multiUploadUri: String
If specified, this enables multi-upload within the media picker. The supplied URL must be
capable of handling form posts containing binary image data and return at a minimum, a
HTTP status code of 200 to indicate success or a code of 500 to indicate failure. Also note that that the media picker will send one request per file in the multi-image uploader screen.
singleUploadUri: String
If specified, this in conjunction with the singleMediaUploadEnabled parameter enables
single-upload within the media picker. The supplied URL must be capable of handling form
posts containing binary image data and return XML data with information about the
uploaded image. The format of the returned XML must be as follows.
<Asset Id="12345" PrintResWidth="500" PrintResHeight="333"
PrintResUri="http://site.com/12345.jpg"
ScreenResUri="http://site.com/12345_screen.jpg"
IconUri="http:// site.com/12345_icon.jpg" />
singleMediaUploadEnabled: Boolean
Enables (true) or disables (false) the “add photo” feature of the application. By default, this is
enabled and connected to our internal upload service. If one or more media picker sources are
configured to support single media upload, the active source’s singleUploadUri will be used. Setting this to false ignores any media picker source settings you may have.
comboTrayInitialAssetCollectionUri: String
By using this parameter, you are indicating that you want the new style media picker instead of
the older tabbed style. This parameter looks for a uri that contains XML formatted as an <Asset> list. You can also provide the keyword “EMPTY” to load the builder with an empty tray.
skinUri: String
This will override the default style of the application. Specifications for creating a custom skin are forthcoming.
Example
function onAppReady()
{
alert("Application is ready to be used.");
}
function onProjectLoaded()
{
alert("The project was loaded");
}
function onSave(projectId, thumbUrl)
{
alert("The project was saved with project id " + projectId + ".");
alert("A thumbnail was saved for this project at this url: " + thumbUrl + ".");
}
function onError(err)
{
alert("An error has occurred: " + err);
}
function addToCartComplete(projectId, productSku, thumbUrl)
{
alert("The project was saved with project id " + projectId + " and the sku " + productSku);
alert("A thumbnail was saved for this project at this url: " + thumbUrl + ".");
}
function onTemplateLoaded()
{
alert("A template was loaded into the application");
}
var configObject = {
elementId: "appDiv" // a div by this name exists on the page
,width: 500
,height: 400
,readyCallback: onAppReady
,loadCallback: onProjectLoaded
,saveCallback: onSave
,errorCallback: onError
,templateLoadCallback: onTemplateLoaded
};
var myApp = ezp.apps.createTemplateApp(configObject);
Remarks
The returned object representing your instance of the application is the access point to all other
functions of the API. In the example above, a call to the setPhoto API call (defined below) would be
made by typing myApp.setPhoto(object).
Flow Diagram
SetPhoto
Function
setPhoto(photo: Object) – sets the current photo region’s photo.
Product
Builder Flash
Object
Product
Builder Web
Service
Browser
JavaScript 1. create() 2a. Load Products
2b. Load Templates
4. Load 1st Template
3. readyCallback()
5. templateLoadCallback()
Parameters
photo: Object
Represents a photo to place in the current photo region, the details of which are described below.
screenResUri: String *
The screen resolution version of the photo. If this is the only parameter you intend to
provide, it can be provided as the single string parameter to the function. (See Example 1)
id: String
The id for this photo, can be used later for replacement of screen resolution images with print
resolution images when submitting order.
printResUri: String
The URI for the print resolution of the photo which will be used when printing.
printResWidth: Number
The width of the print resolution image. This is used to calculate resolution to display resolution
warnings. If not provided, the resolution of the image specified by printResUri will be used.
printResHeight: Number
The height of the print resolution image. This is used to calculate resolution to display resolution warnings. If not provided, the resolution of the image specified by printResUri will be used.
pageId: String
The PageId from the template of the page that the PhotoRegion that the content is for. If this is
not provided, the current PhotoRegion on the current page of the project will get the photo specified.
regionId: String
The RegionId from the template of the PhotoRegion that the photo is for. If this is not provided,
and pageId is, the first PhotoRegion on the page with the specified pageId will get the photo specified.
placementMode: “Fit” or “Crop” (case-sensitive)
The placement mode decides whether the photo should be placed into the photo region in Fit or Crop mode. Please note that 'Fit' will be ignored if the template does not allow fit.
Example 1: Simple method of passing a screenResUri only.
myApp.setPhoto("http://farm4.static.flickr.com/3378/3319846806_5dc9789940_o.jpg");
Example 2: Passing more detailed information about the media.
var myMediaObject = {
id: “1234”
,screenResUri: "http://farm4.static.flickr.com/3378/3319846806_5dc9789940_o.jpg”
,printResWidth: 1249,
,printResHeight: 814
);
myApp.setPhoto(myMediaObject);
Remarks
A common issue experienced by first-time users of our builder is that the Flash application throws
errors when they try to use this function. Often, this is caused by an improperly configured cross
domain policy file. Please make sure your policy file is setup properly, as described in the “Getting
Started: Installing ezp builder” section of this document.
Flow Diagram
getCurrentProduct
Function
getCurrentProduct() – returns a simple object containing the current product.
Returns
A JavaScript object containing the product id, name and sku, all with type String.
Parameters
None
Example: Gets the current product in a JavaScript object and displays a message with the details.
var myProduct = myApp.getCurrentProduct();
alert("ID: " + myProduct.id + ", Name: " + myProduct.name + " Sku: " + myProduct.sku);
Remarks
Product Builder
Flash Object
(shows the
image or
throws
security error)
Browser
JavaScript setPhoto() Photo
Host
Server
Check cross-domain policy
Cross-domain policy response
If success, request image
Image data
None
Save
Function
save() – asynchronously saves the project.
Returns
By way of an asynchronous callback, returns to the saveCallback function defined for the current
application instance, a projectId String and a thumbnailUrl String.
Parameters
None
Example: Issues a save command, and upon success uses the results.
// This must be the function passed as the “saveCallback” parameter of createTemplateApp
var onSaveComplete = function(projectId, thumbnailUrl)
{
// Displays the current current project Id in an alert
alert(“Successfully saved with project id: “ + projectId + “.”);
// Show the thumbnail (assumes you have an image element with id “thumbnail”)
document.getElementById("thumbnail").src = thumbnailUrl;
}
myApp.save();
Remarks
None
Flow Diagram
getProjectInfo
Function
getProjectInfo()
Returns
Product Builder
Flash Object
Product Builder
Web
Service
Browser
JavaScript save()
Save XML and Thumbnail Data
ProjectId (guid) saveCallback() with a project id and image url to thumb image.
projectInfo Object with two properties: requiredPhotoRegionsCompleted and
requiredTextRegionsCompleted . Each property will be “true” if all required regions in the product
or template have been filled in. By default all photo regions are required and all text regions are
optional.
Parameters
None
Example
function getProjectInfo()
{
var projInfo = widget.getProjectInfo();
alert("required photos completed? " + projInfo.requiredPhotoRegionsCompleted);
alert("required text completed? " + projInfo.requiredTextRegionsCompleted);
}
Remarks
getProjectInfo can be used to get a javascript object with valuable statistics about the project.
More stats will be added over time, but for now, the two pieces of information available are
requiredPhotoRegionsCompleted and requiredTextRegionsCompleted which are Boolean values
indicating completion of photo and text regions respectively.
load
Function
load(projectId: String) – asynchronously loads the specified project.
Returns
None, but does call the loadCallback function defined for the current application instance so that
further action can be taken upon a successful load.
Parameters
None
Example
myApp.load('123456-7890-abcd-ef12-34567890abc');
Remarks
None
Flow Diagram
setSku
Function
setSku(sku: String) – sets the current sku visible in the application.
Returns
Not Applicable
Parameters
sku: String
The sku to load into the application. For a full list of available products please see the “Available
Products” section of this document.
Example
// sets the current sku to a glossy 4x6 print
myApp.setSku('10040');
Remarks
Using this function effectively destroys any unsaved project data currently loaded in the application
by loading a new project using the new product sku.
setSkin
Function
setSkin(skinSwfUrl: String) – sets the current skin of the application.
Returns
Not Applicable
Parameters
skinSwfUrl: String
The URL to the compiled CSS (as a SWF). The CSS will be is applied at runtime.
Example
Product
Builder Flash
Object
Product
Builder Web
Service
Browser
JavaScript load(projectId)
get XML by project Id
XML representing the project
loadCallback()
// sets the current skin to the style defined in newStyle.swf
myApp.setSkin('http://www.site.com/newStyle.swf');
Remarks
Specifications for creating a custom skin are forthcoming.
Product List
The following is a comprehensive list of available products. Please note that this list is updated often
with new products as they become available within ezp builder.
Product Sku Description
Apron
10180 Apron
Buttons
85110 3 Inch Button
85100 4 Inch Button
Calendars
70300 12 Month Calendar
70305 18 Month Calendar
Cards
70201 5x7 Cards
70250 3x5 Cards
30540 4x8 Cards
Coasters
10109 4 Unique 4" Coasters
10113 4 Pack 4" Coasters
Eco Stationary
74000 Notepad - Eco Friendly
74001 Refrigerator notepad - Eco Friendly
74009 Small Notebook - Eco Friendly
74003 25 4 x 5 Note Cards - Eco Friendly
74004 25 5 x 7 Folded Card - Eco Friendly
Framed Canvas
82100 11x14 Framed Canvas - Black
82101 16x20 Framed Canvas - Black
82102 12x18 Framed Canvas - Black
82103 16x16 Framed Canvas - Black
82104 36x36 Framed Canvas - Black
82105 10x25 Framed Canvas - Black
82106 16x40 Framed Canvas - Black
82107 30x30 Framed Canvas - Black
82108 20x30 Framed Canvas - Black
82109 24x24 Framed Canvas - Black
82110 24x36 Framed Canvas - Black
82111 30x40 Framed Canvas - Black
82112 22x55 Framed Canvas - Black
82113 24x60 Framed Canvas - Black
82114 30x45 Framed Canvas - Black
82115 11x14 Framed Canvas – Chocolate
82116 16x20 Framed Canvas – Chocolate
82117 12x18 Framed Canvas – Chocolate
82118 16x16 Framed Canvas – Chocolate
82119 36x36 Framed Canvas – Chocolate
82120 10x25 Framed Canvas – Chocolate
82121 16x40 Framed Canvas – Chocolate
82122 30x30 Framed Canvas – Chocolate
82123 20x30 Framed Canvas – Chocolate
82124 24x24 Framed Canvas – Chocolate
82125 24x36 Framed Canvas – Chocolate
82126 30x40 Framed Canvas – Chocolate
82127 22x55 Framed Canvas – Chocolate
82128 24x60 Framed Canvas – Chocolate
82129 30x45 Framed Canvas – Chocolate
82130 11x14 Framed Canvas - Leming
82131 16x20 Framed Canvas - Leming
82132 12x18 Framed Canvas - Leming
82133 16x16 Framed Canvas - Leming
82134 36x36 Framed Canvas - Leming
82135 10x25 Framed Canvas - Leming
82136 16x40 Framed Canvas - Leming
82137 30x30 Framed Canvas - Leming
82138 20x30 Framed Canvas - Leming
82139 24x24 Framed Canvas - Leming
82140 24x36 Framed Canvas - Leming
82141 30x40 Framed Canvas - Leming
82142 22x55 Framed Canvas - Leming
82143 24x60 Framed Canvas - Leming
82144 30x45 Framed Canvas - Leming
Framed Poster
82200 11x14 Poster Stock Frame - Black
82201 16x20 Poster Stock Frame - Black
82202 12x18 Poster Stock Frame - Black
82203 16x16 Poster Stock Frame - Black
82204 36x36 Poster Stock Frame - Black
82205 10x25 Poster Stock Frame - Black
82206 16x40 Poster Stock Frame - Black
82207 30x30 Poster Stock Frame - Black
82208 20x30 Poster Stock Frame - Black
82209 24x24 Poster Stock Frame - Black
82210 24x36 Poster Stock Frame - Black
82211 30x40 Poster Stock Frame - Black
82212 22x55 Poster Stock Frame - Black
82213 24x60 Poster Stock Frame - Black
82214 30x45 Poster Stock Frame - Black
82215 11x14 Poster Stock Frame – Chocolate
82216 16x20 Poster Stock Frame – Chocolate
82217 12x18 Poster Stock Frame – Chocolate
82218 16x16 Poster Stock Frame – Chocolate
82219 36x36 Poster Stock Frame – Chocolate
82220 10x25 Poster Stock Frame – Chocolate
82221 16x40 Poster Stock Frame – Chocolate
82222 30x30 Poster Stock Frame – Chocolate
82223 20x30 Poster Stock Frame – Chocolate
82224 24x24 Poster Stock Frame – Chocolate
82225 24x36 Poster Stock Frame – Chocolate
82226 30x40 Poster Stock Frame – Chocolate
82227 22x55 Poster Stock Frame – Chocolate
82228 24x60 Poster Stock Frame – Chocolate
82229 30x45 Poster Stock Frame – Chocolate
82230 11x14 Poster Stock Frame - Leming
82231 16x20 Poster Stock Frame - Leming
82232 12x18 Poster Stock Frame - Leming
82233 16x16 Poster Stock Frame - Leming
82234 36x36 Poster Stock Frame - Leming
82235 10x25 Poster Stock Frame - Leming
82236 16x40 Poster Stock Frame - Leming
82237 30x30 Poster Stock Frame - Leming
82238 20x30 Poster Stock Frame - Leming
82239 24x24 Poster Stock Frame - Leming
82240 24x36 Poster Stock Frame - Leming
82241 30x40 Poster Stock Frame - Leming
82242 22x55 Poster Stock Frame - Leming
82243 24x60 Poster Stock Frame - Leming
82244 30x45 Poster Stock Frame - Leming
Keepsake Box and Desk Organizer
10240 Keepsake Boxes
10241 Desk Organizer
Key Tags and Luggage Tags
10118 Key Tag
10117 Luggage Tag
Magnets
10195 2.5x3.5 Photo Magnet
10196 3.5x5 Photo Magnet
Mounted Prints
83030 11x14 Glossy Mounting
83033 11x14 Glossy Mounting with hanging kit
83031 11x14 Luster Mounting
83004 11x14 Luster Mounting with hanging kit
83006 12x12 Glossy Mounting
83009 12x12 Glossy Mounting with hanging kit
83007 12x12 Luster Mounting
83034 12x12 Luster Mounting with hanging kit
83008 12x12 Metallic Mounting
83011 12x12 Metallic Mounting with hanging kit
83012 16x20 Glossy Mounting
83015 16x20 Glossy Mounting with hanging Kit
83013 16x20 Luster Mounting
83016 16x20 Luster Mounting with hanging kit
83014 16x20 Metallic Mounting
83017 16x20 Metallic Mounting with hanging kit
83018 20x20 Glossy Mounting
83021 20x20 Glossy Mounting with hanging kit
83019 20x20 Luster Mounting
83022 20x20 Luster Mounting with hanging kit
83020 20x20 Metallic Mounting
83023 20x20 Metallic Mounting with hanging kit
83024 20x30 Glossy Mounting
83027 20x30 Glossy Mounting with hanging kit
83025 20x30 Luster Mounting
83028 20x30 Luster Mounting with hanging kit
83026 20x30 Metallic Mounting
83029 20x30 Metallic Mounting with hanging kit
Mousepads
10101 Mousepad
Mugs
10102T 11oz Mug, White
10190 11oz Mug, Black
10112T 15oz Mug, White
10115 16 oz Stainless Steel Travel Mug
Ornaments
10137 Star Ornament
10138 Round Ornament
Photo Panels
10570 5x7 Photo Panel
10571 8x10 Photo Panel
10573 11x14 Photo Panel
Playing Cards
70002 Playing Cards
Post Cards
10041 4x6 Glossy Post Card
10047 4x6 Matte Post Card
Posters
71150 11x17 Post-It Poster
Premium Rolled Canvas
90102 10x10 Premium Rolled Canvas
90103 10x15 Premium Rolled Canvas
90305 10x25 Premium Rolled Canvas
90020 11x14 Premium Rolled Canvas
90023 12x12 Premium Rolled Canvas
90117 12x18 Premium Rolled Canvas
90303 16x16 Premium Rolled Canvas
90030 16x20 Premium Rolled Canvas
90122 16x24 Premium Rolled Canvas
90306 16x40 Premium Rolled Canvas
90129 20x20 Premium Rolled Canvas
90050 20x30 Premium Rolled Canvas
90312 22x55 Premium Rolled Canvas
90045 24x24 Premium Rolled Canvas
90070 24x36 Premium Rolled Canvas
90313 24x60 Premium Rolled Canvas
90307 30x30 Premium Rolled Canvas
90080 30x40 Premium Rolled Canvas
90314 30x45 Premium Rolled Canvas
90085 36x36 Premium Rolled Canvas
90010 8x10 Premium Rolled Canvas
90101 8x12 Premium Rolled Canvas
Premium Rolled Poster
90405 10x25 Premium Rolled Poster
90400 11x14 Premium Rolled Poster
90402 12x18 Premium Rolled Poster
90403 16x16 Premium Rolled Poster
90401 16x20 Premium Rolled Poster
90406 16x40 Premium Rolled Poster
90408 20x30 Premium Rolled Poster
90412 22x55 Premium Rolled Poster
90409 24x24 Premium Rolled Poster
90410 24x36 Premium Rolled Poster
90413 24x60 Premium Rolled Poster
90407 30x30 Premium Rolled Poster
90411 30x40 Premium Rolled Poster
90414 30x45 Premium Rolled Poster
90404 36x36 Premium Rolled Poster
Prints
11500 Wallet Prints (4) – Glossy
11510 Wallet Prints (4) – Lustre
11505 Wallet Prints (4) – Matte
10020 3.5x5 Print – Glossy
10023 3.5x5 Print – Lustre
10021 3.5x5 Print – Matte
11000 4D Print – Glossy
11002 4D Print – Lustre
11001 4D Print – Matte
10030 4x5 Print – Glossy
10032 4x5 Print – Lustre
10031 4x5 Print – Matte
10040 4x6 Print – Glossy
10048 4x6 Print – Lustre
10043 4x6 Print – Matte
100404 4x6 Print – Metallic
10027 4x8 Print – Lustre
10026 4x8 Print – Matte
10025 4x8 Print Glossy
11010 5D Print – Glossy
11012 5D Print – Lustre
11011 5D Print – Matte
10035 5x5 Print – Glossy
10037 5x5 Print – Lustre
10036 5x5 Print – Matte
10050 5x7 Print – Glossy
10061 5x7 Print – Lustre
10053 5x7 Print – Matte
100504 5x7 Print – Metallic
10074 8.5x11 Print – Glossy
10076 8.5x11 Print – Lustre
10075 8.5x11 Print – Matte
11020 8D Print – Glossy
11022 8D Print – Lustre
11021 8D Print – Matte
10080 8x10 Print – Glossy
10090 8x10 Print – Lustre
10083 8x10 Print – Matte
100804 8x10 Print – Metallic
10087 8x12 Print – Glossy
10089 8x12 Print – Lustre
10088 8x12 Print – Matte
100874 8x12 Print – Metallic
10070 8x8 Print – Glossy
10073 8x8 Print – Lustre
10072 8x8 Print – Matte
10096 9x12 Print – Glossy
10098 9x12 Print – Lustre
10097 9x12 Print – Matte
10077 10x10 Print – Glossy
10079 10x10 Print – Lustre
10078 10x10 Print – Matte
50037 10x12 Print – Glossy
50039 10x12 Print – Lustre
50038 10x12 Print – Matte
50040 10x15 Print – Glossy
50042 10x15 Print – Lustre
50041 10x15 Print – Matte
10093 11x14 Print – Matte
10091 11x14 Print – Glossy
10094 11x14 Print – Lustre
100914 11x14 Print – Metallic
11700 12x12 Print – Glossy
11710 12x12 Print – Lustre
11705 12x12 Print – Matte
50050 12x18 Print – Glossy
50052 12x18 Print – Lustre
50051 12x18 Print – Matte
500504 12x18 Print – Metallic
50100 16x20 Print – Glossy
50102 16x20 Print – Lustre
50101 16x20 Print – Matte
501004 16x20 Print – Metallic
50140 16x24 Print – Glossy
50142 16x24 Print – Lustre
50141 16x24 Print – Matte
50200 18x24 Print – Glossy
50202 18x24 Print – Lustre
50201 18x24 Print – Matte
502004 18x24 Print – Metallic
50380 20x20 Print – Glossy
50382 20x20 Print – Lustre
50381 20x20 Print – Matte
50340 20x24 Print – Glossy
50342 20x24 Print – Lustre
50341 20x24 Print – Matte
50300 20x30 Print – Glossy
50302 20x30 Print – Lustre
50301 20x30 Print – Matte
503004 20x30 Print – Metallic
50520 24x36 Print – Glossy
50525 24x36 Print – Matte
505204 24x36 Print – Metallic
50540 30x40 Print – Glossy
50545 30x40 Print – Matte
505404 30x40 Print – Metallic
Puzzles
10127 Puzzle
Stickers + Address Labels
73005 Rectangle Sticker
73000 Square Sticker
73015 28 Pack Address Labels
Tiles
10121 6" Ceramic Tile
10120 Ceramic Tile Mural (Six 4 inch Tiles)
Tote Bags
10185 Tote Bag
T-Shirts
10200 Youth Small T-Shirt
10205 Youth Medium T-Shirt
10210 Youth Large T-Shirt
10215 Youth XL T-Shirt
10103 Adult Small T-Shirt
10104 Adult Medium T-Shirt
10105 Adult Large T-Shirt
10106 Adult XL T-Shirt
10107 Adult XXL T-Shirt
10225 Adult Small XLI T-Shirt
10226 Adult Medium XLI T-Shirt
10227 Adult Large XLI T-Shirt
10228 Adult XL XLI T-Shirt
10229 Adult XXL XLI T-Shirt
Wrapped Canvas
90100 8x10 Premium Canvas - Gallery Wrapped
90011 8x12 Premium Canvas - Gallery Wrapped
90012 10x10 Premium Canvas - Gallery Wrapped
90013 10x15 Premium Canvas - Gallery Wrapped
90110 11x14 Premium Canvas - Gallery Wrapped
90026 12x18 Premium Canvas - Gallery Wrapped
90215 12x12 Premium Canvas - Gallery Wrapped
90120 16x20 Premium Canvas - Gallery Wrapped
90031 16x24 Premium Canvas - Gallery Wrapped
90039 20x20 Premium Canvas - Gallery Wrapped
90140 20x30 Premium Canvas - Gallery Wrapped
90160 24x36 Premium Canvas - Gallery Wrapped
90170 30x40 Premium Canvas - Gallery Wrapped
90275 36x36 Premium Canvas - Gallery Wrapped
Fulfilling Orders: Posting Order XML to EZ Prints
As an existing partner, you have already worked through the process of placing orders with EZ Prints.
This document is meant to augment your knowledge with ezp builder specific changes you need to make
to use this new technology. If at any time you need a refresher in the order XML process, you can visit
our XML Order Specifications page. Also please note that this document makes certain changes to the
existing process. Wherever a conflict exists between the old and new ways of doing things, the new
method takes precedence.
Updating Your Order XML
This method does not require you to specify a productid or imageid for each orderline. The ProjectId
attribute takes care of all those details for you! The ProjectId is the return value of the save() API call
you will need to store in your systems, and pass back to us when posting your order XML.
<orders partnerid="x" version="1">
<ordersession>
...
<order>
...
<orderline ProjectId="aaaa-1245-cccc-a0aa-b6gsj-11111">
<quantity>1</quantity>
</orderline>
...
</order>
...
</ordersession>
</orders>
Automatic Content Replacement
For security and performance reasons, it often makes sense not to give the application your print quality
resolution image client side. In such cases you will need a method to swap out the screen resolution
image with a larger, print ready version at order time. All you have to do is add the
ReplacementContent element on the <orderline> node as shown below.
...
<orderline ProjectId="aaaa-1245-cccc-a0aa-b6gsj-11111">
<ReplacementContent>
<!-- Method 1: Replace using a URI -->
<Replacement
Uri="http://www.my-domain.com/12345_for_screen.jpg"
ReplacementUri="http://www.my-domain.com/12345_for_print.jpg" />
<!-- Method 2: Replace using an ID (passed using the “setPhoto” call -->
<Replacement
Id="23456"
ReplacementUri="http://www.mydomain.com/12345_for_print.jpg "/>
</ReplacementContent>
<quantity>1</quantity>
</orderline>
...
To determine what images are in use in a project, a web service is available that can be called with the
ProjectId that will return all of the user’s media content. The web service is available at
http://apps.ezprints.com/service/1.4/Project.asmx. The data can alternately be retrieved at
http://apps.ezprints.com/service/1.4/Project.asmx/GetContentForProject?ProjectId=ABCD where
“ABCD” is the project id of the project for which data is being requested.
Back Printing
Our regular prints allow an image title to be printed on the back. Our systems support a maximum of 40
characters. We support all alpha-numeric characters, parenthesis, dashes, and underscores. All other
characters will be changed to underscores.
If a back-print is desired, when using ezp builder (or any project or template based product that does
not include an imageid attribute on the orderline element), the back-print information, if desired, should
be provided in an attribute called “backprint” on the <orderline> element.
...
<orderline ProjectId="aaa-145-ccc-a0a" backprint="appears on the back of the print”>
<quantity>1</quantity>
</orderline>
...
Final Thoughts At this point, you should have everything you need to enable your customers to build more satisfying
creations on your web site. Our builders are constantly improving with more products and more
features so be sure to stay abreast of all the latest developments.