Monday, 31 August 2009

Beta Tesco API NOT Yet Ready - Waiting for 'Martini' Readiness

Dear Tesco API Developer

This is an update to let you know the status of the beta edition of the Tesco API is not quite ready.

The underlying ‘Martini’ grocery platform on which the beta API relies is still being tuned up, and the side effect of this work is that the sand keeps shifting beneath the beta API’s feet.

Of course we need to make sure that the new grocery service is not only fully functional but performs really well, so these final adjustments are vital before we start moving customer accounts across. The grocery web service is core to so you can imagine that every member of the production team is involved.

Until the ‘sands stop shifting’ there is little I can do to launch the beta API. However I can still tempt you: If you would like to take a look at the new objects available (or rather, existing objects with many new extended properties), you can. Using your SOAP client such as Visual Studio 2008 (free Express, Standard or Pro editions), set up a new service endpoint at where the nightly builds are being tested. Don't try and log anyone in though - nobody is on 'Martini' just yet so it won't work.

Have a look particularly at the new product object which should satisfy just about any product information desire:

.ProductId =262612635
.BaseProductID =61358077
.Name =Flora Buttery 500g
.ProductType =QuantityOnlyProduct
.ExtendedDescription =(manufacturer can enthuse about product here)
.ImagePath =
.NoteForPersonalShopper = (when sending to basket this note is shown to shopper)
.OfferPromotion =Buy 1 Get 1 FREE
.OfferValidity =valid from 26/8/2009 until 1/9/2009
.Price =1.5
.PriceDescription =(£3.00/kg)
.Quantity =1
.Rating =0
.StorageInfo =
.UnitPrice =3
.UnitType =kg
Nutrients count: 19
Nutrient =Energy
SampleDescription =Typical values per 10g
SampleSize =261kJ/63kcal
ServingDescription =-
ServingSize =-
Nutrient =Protein
SampleDescription =Typical values per 10g
SampleSize =trace
ServingDescription =-
ServingSize =-
Nutrient =Carbohydrate
SampleDescription =Typical values per 10g
SampleSize =0.1g
ServingDescription =-
ServingSize =-
Nutrient = - of which Sugars
SampleDescription =Typical values per 10g
SampleSize =0.1g
ServingDescription =-
ServingSize =-
Nutrient =Fat
SampleDescription =Typical values per 10g
SampleSize =7.0g
ServingDescription =-
ServingSize =-
Nutrient = - of which Saturates
SampleDescription =Typical values per 10g
SampleSize =1.6g
ServingDescription =-
ServingSize =-
Nutrient = - monounsaturates
SampleDescription =Typical values per 10g
SampleSize =2.0g
ServingDescription =-
ServingSize =-
Nutrient = - polyunsaturates
SampleDescription =Typical values per 10g
SampleSize =3.4g
ServingDescription =-
ServingSize =-
Nutrient =- omega 3 fatty acids*
SampleDescription =Typical values per 10g
SampleSize =0.6g
ServingDescription =-
ServingSize =-
Nutrient =- omega 6 fatty acids
SampleDescription =Typical values per 10g
SampleSize =2.8g
ServingDescription =-
ServingSize =-
Nutrient =Fibre
SampleDescription =Typical values per 10g
SampleSize =0g
ServingDescription =-
ServingSize =-
Nutrient =Sodium
SampleDescription =Typical values per 10g
SampleSize =0.1g
ServingDescription =-
ServingSize =-
Nutrient =Salt (based on sodium)
SampleDescription =Typical values per 10g
SampleSize =0.2g
ServingDescription =-
ServingSize =-
Nutrient =Vitamin A
SampleDescription =Typical values per 10g
SampleSize =(10% RDA) 80 µg
ServingDescription =-
ServingSize =-
Nutrient =Vitamin D
SampleDescription =Typical values per 10g
SampleSize =(15%) RDA) 0.75 µg
ServingDescription =-
ServingSize =-
Nutrient =Vitamin E
SampleDescription =Typical values per 10g
SampleSize =(20% RDA) 2 mg
ServingDescription =-
ServingSize =-
Nutrient =Vitamin B6
SampleDescription =Typical values per 10g
SampleSize =(25%) RDA) 0.5 mg
ServingDescription =-
ServingSize =-
Nutrient =Folic Acid
SampleDescription =Typical values per 10g
SampleSize =(25%) RDA) 50 µg
ServingDescription =-
ServingSize =-
Nutrient =Vitamin B12
SampleDescription =Typical values per 10g
SampleSize =(25% RDA) 0.25 µg
ServingDescription =-
ServingSize =-
Ingredients count: 12
Ingredient =Water
Ingredient =Buttermilk (10.5%)
Ingredient =Salt (1.5%)
Ingredient =Lecithin
Ingredient =Flavourings
Ingredient =Citric Acid
Ingredient =Vitamin E
Ingredient =Vitamin B6
Ingredient =Colour: Beta-Carotene
Ingredient =Vitamin A
Ingredient =Folic Acid
Ingredient =Vitamins D and B12

Now the second piece of news is that I am now on holiday, returning 14th September, by which time we will, I’m sure, be in a much better place concerning the API. I'm going to hurl myself around on a mountain-bike in the Wicklow mountains (south of Dublin), a beautiful part of Ireland where they seem to have forgotten to install any mobile phone masts.

Before I return to the UK, though, I am hoping to have available for you a set of test accounts linked to the new service which you can use to actually try out the beta service. These test accounts, when they become available, will be announced in the Forum and you can try them at the above endpoint.

Once the beta API service is fully ready for action, it will be hosted on and our Microsoft Azure endpoint at

In the meantime, you can use these latter endpoints for your application development using the CTP API (documented at - you’ll just get ‘more’ once the beta API is working and we’ve moved customer accounts across to it.

So, apologies for any inconvenience but let’s end on some good news: If you signed up at TJAM to join the Tesco affiliates scheme, we are now ready to accept your registration - see the Forum for instructions:

Monday, 24 August 2009 to create its own iPhone Grocery application

I thought we should let you know that our leadership team have asked us to look into creating an iPhone application of our own. Since TJAM, they have been really excited by the ideas and opportunities that have arisen and feel that we should also give our internal developers the opportunity to learn how to program for the iPhone.

We haven't taken this decision lightly now that we are fostering a developer community and we would still welcome some healthy competition from you - we're aiming to create a simple application that can do the basics of grocery shopping well, so there will still be plenty of opportunities for other third party iPhone applications to use the Tesco API to explore grocery shopping in a more fun and imaginative way.

There is some good news for third-party developers though - we have been given the go ahead to invest in a 'deep link' secure checkout web page designed for mobile use that will enable customers to checkout with confidence. All third party developers will have access to this checkout page.

We haven't agreed the scope yet, but we're expecting that the Tesco-owned grocery application will allow the customer to search for products from categories, and by text searching. It will also access the customer's favourites list and manage their basket. The software will use the forthcoming beta API and has no secret privileged access to our service so will not present an 'unfair advantage' over third party apps.

We have never said 'never' when it comes to writing applications ourselves but we don't want to discourage anyone from writing their own. However, occasionally we will want to reserve the right to step into a marketplace ourselves with a 'basic' application.

We have only just made this decision and we wanted to let Tesco API developers know immediately so they know where they stand. All I ask is that developers rise to the challenge and take on our application, now I've described it, with something better.

Wednesday, 19 August 2009 TJAM - The Video

Here is a 4-minute YouTube-hosted music video of what happened at our recent TJAM event.

A ''draft' version of this video was shown to the developers at the start of the evening event. Time and a spot of decent re-editing has made the video smoother and more interesting (I hope...).

You can either watch the video here, or (better) click on the video image to watch it in a bigger window on YouTube (press the 'HQ 'buttton for better quality playback if watching on YouTube).

My music choice for this video is an edited version of a Utah Saints track - they have remixed Kate Bush's lyric "I just know that something good is going to happen". See what I did there?

So my music collection is over-influenced by the Gaydar Radio playlist. Whatever!

Monday, 17 August 2009 API will be adopting 'OAuth' standard.

The API will be adopting the 'OAuth Core 1.0 Revision A' standard for third-party web access to customer accounts using the Grocery API Beta Edition from Phase 2 onwards.

OAuth, short for 'Open Authorization', is an open protocol to allow secure API authorisation in a simple and standard method from desktop and web applications.

Why is this good? Quite simply, customers will not have to give third party web sites their grocery login email address and password in order for that web site to have access to that customer's product range and basket. Instead, customers will give permission using a 'key' linked to their account. The key can be withdrawn at any time without the customer having to reset their password.

From the OAuth web site (
"The OAuth protocol enables websites or applications (Consumers) to access Protected Resources from a web service (Service Provider) via an API, without requiring Users to disclose their Service Provider credentials to the Consumers. More generally, OAuth creates a freely-implementable and generic methodology for API authentication.".

OAuth will be built into phase 2 of the forthcoming beta version of the API over the coming months. Until then, third party web sites wishing to use the forthcoming beta API (due for release at the end of August) can continue to use the current authorisation method of requesting username and password.

We will need to make sure that using OAuth is as painless for the customer as possible but there are several very good implementations out there so I'm confident that we can find the right balance between security and ease of use.

Third party web sites should keep in touch with the Tesco API Innovation Forum at for more information about switching over to the OAuth mechanism.
We will make sure that the implementation will require only a tiny change to third party web applications principally around use of the 'Login()' method (in the AccountClient class). Applications that call Login() get returned an instance of the Session class that is used as a token when calling all the other methods in the API for that customer. We'll make sure this behaves as it does today so you don't have to re-code your application beyond using Login() itself.

Client applications that are built for consumer devices can continue to use the current authorisation mechanism without having to make any changes to their applications and will not need to use OAuth (unless they wish to). This is because these apps will talk directly with the Tesco API and don't go via a third-party server.

We do reserve the right to provide new authorisation mechanisms and deprecate old methods as technology moves forward, but 'old and new' mechanisms will sit side-by-side for a while to give reasonable time for developers to update their sites to adopt the new service.

And if you didn't understand a word of this blog entry, relax;
I'll return to my usual higher-level writing shortly!

Saturday, 8 August 2009

Tesco API TJAM - What happened and what's next?

Wednesday's TJAM event definitely falls into my 'unforgettable' category for two reasons above all others - the generation of 800 decent, coherent ideas from customers generated throughout the day, and the buzz of anticipation from developers as we showed some of our customer insight and explored the extra features of the forthcoming Beta addition of the Tesco API.

The day started at 8am for both ourselves and the innovation agency 'Happen' as the auditorium was prepared to meet customers, invited from our regular online grocery shoppers.
The customers themselves (numbering around 70) arrived for 11am and after some introductions they were invited to join one of six groups representing 'challenge briefs' for grocery, each group headed by a staff member to provided background to the brief, and a Happen 'agent' to work with the group to build and maintain mental energy levels, keep some focus to the brief and make sure group members were happy and enjoying the experience.
The challenge briefs were:
1. How to make the online shopping experience better than in store
2. How to help customers spend less on their weekly grocery shop
3. How to harness the potential of Mobile and emerging technologies such as smart phones, Internet TV, Set Top boxes etc
4. How to give customers inspiration for their weekly grocery shop
5. How to harness the power of social networking
6. How to help customers shop more quickly and easily

The first stage for each of the groups was 'sparking' - generation of ideas based around that group's challenge brief. This generated an astonishing 800 coherent ideas.

The next stage (after lunch) was to build one (or a group) of ideas into more coherent 'walkthrough' concepts such as an imagined way of using the service online or collaborating with family and friends when building an order. However the original ideas were not lost as some could be used in more than one concept.

The final stage was for customers to vote on the best concepts across all groups to find out the best of idea of the day. The winner was an imagined device called a "T-Scanner" that a customer could have on their keyring. The T-Scanner would contain a barcode scanner which would be used to 'collect' barcodes of grocery products they liked as they went about their daily lives. They would then insert the scanner into a USB slot on their computer and upload all the product ideas to a Tesco grocery list for final selection. There were plenty of other good ideas requiring applications rather than hardware, and amongst the favourites were a mobile phone app (for their mobile phone whatever make and model) and the desire for a 3D virtual Tesco grocery store.

The customers left at 4pm and we reset the auditorium for the developers even that started at 7pm. They took time out (over pizza and beer) to read the both concepts and individual ideas. At 8pm we took the developers through a learning curve on the types of customer who use our site so they could aim to make applications that would really be used.

They then learned about the new facilities of the forthcoming beta edition of the Tesco API - including the ability to search on nutrition and send 'ideas' to the customers 'ideas inbox'.
'Ideas' in the API's context are best described as 'media fragments' such as text, images, audio, video, or HTML snippets that the customer wishes to capture as they think of a product - but not yet linked to a particular grocery item. For example, an application could be used by a customer who is enjoying the wine they are drinking in a restaurant and they take a photo of it on the camera phone which is uploaded to their Ideas inbox. They might say the word 'carrots' into their mobile phone which becomes a compressed sound file which also gets uploaded. When it comes to place the order, the customer can examine their Ideas inbox and search for real grocery items - or allow the help of a 3rd party application which they give permission to plug-in to their inbox and use the specialist intelligence to suggest products based on media items. Examples might be a speech recgnition service or a site that specialises in deciphering wine labels or photographed barcodes.

Next, developers learned about the affiliates scheme, allowing them to earn awards based on attracting new customers and the contribution their application makes to a customer's checked-out grocery order.

Finally there was a Q&A session where developers asked questions covering such subjects as security, the interface syntax for our API (currently using SOAP but soon to have REST interface too), and how the business saw the future of the API.
AT 9pm we finished the conference!

Available for playing on throughout the day was a Microsoft Surface table computer, O2 Joggler and Wayve 'fourth-screen' devices - specialist hardware that customers might use now or in the future when it comes to online shopping.

So what's next? Mainly its us putting in the work to deliver the Beta API! Our timelines are:
1) Delivering the beta version of the Tesco API's SOAP interface by end of August.
2) Delivering the beta version of the Tesco API's REST interface by mid September.
3) Delivering phase 2 beta (the 'Ideas' system) around October - although this will be ongoing work.
4) Working with developers to improve the API for best practice for in terms of syntax, performance, security and more ongoing features.
5) Once everyone (developers and the our business) are 'happy' - lock down any changes to the API and deliver the blueprint to our production software developers during 2010 and finally deliver a working API to run on our main web site.

A caveat to this final point is simply one where we need to be sure that the business is happy. The Tesco API is a research project for good reason: this has not happened in grocery before and needs to be sure we don't have something that runs out of control in some way (financially, legally, security-wise). So this project will take slow, careful steps so we do not rush into the unknown.

Notwithstanding this, we feel we are going in a great direction and I am, by this message, stating publicly that we guarantee the Beta Tesco API's existence and performance levels for at least the next two years. That is of course our 'worst case scenario' - best case is that we get the API into permanent production during 2010 so that the beta API is retired for the best of reasons: it's then a reliable production application!

Finally, I have assumed from 'day-one' of our API project that our competitors will look into the API concept. After all, it's a natural extension of web services and I'm looking forward to seeing what API they offer developers. Perhaps they are watching our project to see what happens...

Monday, 3 August 2009

Two days until TJAM

With just two days to go to TJAM, I have emailed all the attendees with the following message. Since that message is now in the public domain I recreate it here.

I am getting quite a few bounce-backs from mail servers saying that some email addresses are not valid or that the mailbox is full. TJAM'ers please check your mailboxes!

I really could have filled TJAM at least twice over, so apologies to those who could not get an invite. I even did the 'airline' thing and and went 10% over in case there are some no-shows. So if you haven't received written confirmation from me then please don't try and gate-crash, or try and tag along with someone who has received confirmation. Next time we'll book Wembley...!

Dear TJAM'er

So there's only two days to go to TJAM and I hope you're as excited as we are to welcoming you to the evening event!

We're just putting the finishing touches to our presentations and confirmed everything with our affiliates team to welcome you aboard.

I’ve got some important items of news for you about:
1) The affiliates scheme and how it will work;
2) The fact we’re going to be unable to lift our ‘price comparison’ bar at the moment;
3) The opening of the Tesco API Developers Forum

Affiliate scheme
We have now agreed the mechanics of operation of the affiliate scheme for Tesco API developers. To join the affiliates scheme you will need to join up at TJAM. You will need to bring proof of your ID (e.g. driving licence, passport, household bill) in order to sign up. You cannot sign up for anyone else, or sign up twice or more!

I’ll expand on the scheme greatly at TJAM, but you can see the full description in the Tesco API Developers Forum under 'The Affiliates System' entry. I will assume you have read this by the time you arrive at TJAM. Forum web address further down this message.

Price Comparison
We’ve decided to delay lifting the bar on the terms and conditions for using the Tesco API for price-comparison for a few more months.

The reason is that, until our new ‘Project Martini’ grocery application reaches full-speed, we will still have to show guide prices for all our products.

Part of ‘Martini’s’ new strength is that it will be able to get the realtime price from our mainframe for every product - that is, the price it is right this moment. However the system to do that is still not quite ready, so we will have to show the highest possible price for that product for a few more months (that is, the highest it has been and could be for the foreseeable future). That way we won’t anger customers by making them pay a possible higher price - it will either be the same, or lower.

We accept we’re not doing ourselves any favours by showing products that might be more expensive than they actually are, but until we have tested and tested the realtime link for every eventuality - then tested some more - we just prefer it this way. Getting it wrong has serious consequences that starts with angry customers and ends with legal issues. At least with guide prices customers get pleasant surprises when they receive a delivery.

As soon as ‘Martini’s’ realtime link is working to the satisfaction of the most paranoid of us, then we’ll lift the bar. Then I’ll even put together a workshop for price comparison sites so we can work with them to get them the most current data. Until then, grocery price comparison sites will be barred from using the Tesco API.

Tesco API Developers Forum
The Tesco API Developers forum is now up and running. Do take a moment to register and go and meet with fellow developers. There will be support for the API so this is definitely your one-stop shop for help. The web site address is:

See you at TJAM!