Ref. Ares(2013)131450 - 01/02/2013 ICT-2011.1.2 Cloud Computing, of Services & Advanced Software Engineering, FP7-ICT-2011-8

“Open-Source, Web-Based, Framework for Integrating Applications with Services and Personal Cloudlets”

Deliverable D2.1 Cloud-based Services Analysis

Workpackage: WP2 – Use Cases Analysis and Requirements Specification

Iosif Alvertis (NTUA), Michael Petychakis (NTUA), Fenareti Authors: Lampathaki (NTUA), Sotiris Koussouris (NTUA), George Gionis

(NTUA), Dónal McCarthy (TSSG), Susana Ortega (CGI)

Status: Final

Date: 31/01/2013

Version: 1.0

Classification: Public

Disclaimer: The OPENi project is co-funded by the European Commission under the 7th Framework Programme. This document reflects only authors’ views. EC is not liable for any use that may be done of the information contained therein. D2.1 Cloud-based Services Analysis

OPENi Project Profile

Contract No.: FP7-ICT-317883

Acronym: OPENi

Open-Source, Web-Based, Framework for Integrating Applications Title: with Social Media Services and Personal Cloudlets

URL: www.openi-ict.eu

Start Date: 01/10/2012

Duration: 30 months

Partners

Waterford Institute of Technology Ireland Coordinator

National Technical University of Athens (NTUA), Greece Decision Support Systems Laboratory, DSSLab

Fraunhofer-Gesellschaft Zur Foerderung Der Germany Angewandten Forschung E.V

INFORMATICA GESFOR SA (CGI) Spain

AMBIESENSE LTD UK

VELTI SA Greece

BETAPOND LIMITED Ireland

2

D2.1 Cloud-based Services Analysis

Document History

Version Date Author (Partner) Remarks

0.10 10/11/2012 Iosif Alvertis, Fenareti Initial table of contents Lampathaki (NTUA)

0.20 13/11/2012 Iosif Alvertis (NTUA) Initial draft of Section 3.1

0.30 20/11/2012 Iosif Alvertis, Sotiris Koussouris, Initial draft of Section 3.2. Updating section 3.1 George Gionis, Fenareti incorporating comments for additional services Lampathaki (NTUA) received by Lukasz Radziwonowicz (FOKUS)

0.40 12/12/2012 Iosif Alvertis, Fenareti Initial draft of Sections 1 and 3 incorporating Lampathaki (NTUA) preliminary inputs on 3.3.1, 3.3.4, 3.3.5, 3.3.6, 3.3.10, 3.3.11 from Dónal McCarthy (TSSG) and on 3.3.9, 3.3.12, 3.3.15, 3.3.17 from Susana Ortega (CGI) and comments for additional services from Hans Myrhaug (AmbieSense), Theodoros Michalareas and Timotheos Kastrinogiannis (VELTI) and Peter Elger (BETAPOND)

0.50 20/01/2012 Iosif Alvertis, Michael Petychakis Updated draft revising Section 3 (NTUA)

0.60 27/01/2012 Iosif Alvertis, Fenareti Updated draft incorporating Section 1, 2, 4 and Lampathaki (NTUA) 5 and circulated for final internal technical review

0.70 30/01/2012 Fenareti Lampathaki, Iosif Updated draft addressing comments received Alvertis (NTUA) from Theodoros Michalareas and Timotheos Kastrinogiannis (VELTI)

0.80 31/01/2012 Fenareti Lampathaki (NTUA) Updated draft addressing comments received from Robert Kleinfeld (FOKUS)

1.0 31/01/2012 Eric Robson (TSSG) Final version to be submitted to the EC

3

D2.1 Cloud-based Services Analysis

Executive Summary The present report aims at analyzing the underlying state of the art of the cloud-based services in order to provide concrete recommendations and guidelines to drive the forthcoming design and implementation of the OPENi Framework. The work carried out for the present State of the Art Analysis included the following steps:

Pillar I – Baseline Analysis  Analysis of the background of the Cloud-based Services. The core methods and protocols for designing web services (i.e. Web Services (WS-*), RESTful Web Services, Remote Procedure Call (RPC), JavaScript APIs and XMPP), the most prominent data formats and frameworks were studied. Patterns and guidelines for the APIs design have been analyzed together with protocols and schemas like ActivityStreams and the OpenGraph protocol. A set of FP7 research projects investigating the APIs landscape have been recognized with a purpose to identify common research directions and potential synergies.

Pillar II – Identification of the Landscape  Definition of the scope with a set of criteria that render a Cloud-based Service of interest to OPENi, i.e.: o The availability of APIs externalizing the functionality of a Cloud-based Service. o The added value of each Cloud-based Service to a developer. o The usefulness of each Cloud-based Service to the consumer. o The popularity of each Cloud-based Service (by the number of mash-ups utilizing it and the number of users it has attracted). o The coverage of a broad spectrum of functionality by each Cloud-based Service. o Whether a Cloud-based Service captures emerging trends in order to provide potential new ideas to the OPENi Use Cases.  Iterative identification, classification and validation of relevant Cloud-based Services with an approach as inclusive as possible through empirical research over the web. Since there was no research work (papers) on the categorization of cloud-based services found, the categorization proposed by developers’ reference portals (e.g. Programmable Web APIs Directory, Mashape APIs, etc.) as well as the categorization adopted by the biggest mobile apps marketplaces, where the focus of developers and the appraisal from users meet one another (i.e. App Store, Play - Android Marketplace) were meticulously studied. Finally, the future trends according to analysts (e.g. Gartner Mobile Trends 2012, Appcelerator and IDC surveys) provided additional insights on the types of Cloud-based Services that are anticipated to dominate the market.  Prioritization of the Cloud-based Services based on multi-criteria decision analysis. The categories have been filtered on the basis of their alignment and proximity to the OPENi Use Cases. A set of criteria have been also defined and assigned with specific weight in each category in order to identify which are the predominant services and which are the trends in cloud-based services. Indicative criteria that have been set are the Registered Users, the

4

D2.1 Cloud-based Services Analysis

Monthly Active Users and the Alexa Reach Ranking. Figure 0-1 depicts the cloud-based services that gathered the highest evaluation score.

Figure 0-1: OPENi Landscape of Cloud-based Services for In-depth Analysis

Pillar III – Investigation of the Landscape  In depth Analysis of the APIs available by the existing Cloud-based Services. During this step, a complete documentation of the APIs including their protocols, libraries, limitations and data formats has been conducted. The functionalities provided by each API have been studied in detail and mapped on the basis of the objects involved in each category and according to a common agreed terminology. Finally, the degree of the API exposure has been evaluated and summarizes the main points and lessons learnt from the analysis.

Pillar IV – Conclusions & Key Take-Aways  Elaboration on the OPENi Generic APIs. In order to proceed to the identification of the generic functionality for each category of cloud-based services, a detailed map containing all Cloud-based Services and their functionalities offered has been constructed. Upon obtaining a clear overview of the complete set of functionalities (irrespectively of the category to which each service belongs), the main objects and activities involved are identified based on the

5

D2.1 Cloud-based Services Analysis

concepts of state-of-the art standards (like ActivityStreams) leading to the draft conceptualization of a set of Generic APIs to be put forward by OPENi. Seven (7) Generic APIs that combine cloud-based functionalities in a set of functionalities that are similar to Phone SDKs, and existing phone applications or functionalities have been proposed: o Activity API referring to a social, health, behavioural activity log as reflected in multiple cloud-based services ranging from Social, Photo and Video Sharing to Health and Location-based Services. It includes all the social and personal activities of a user, and is related with the logging activity of a device. o Communication API for conveying real-time information through the exchange of , or calls. It is related with the Phone and Messaging application of a smartphone. o Location API enabling location awareness through Checkins, Direction, Events, Reviews and Tips. It is a strong contextual API with location, which can be extracted by a GPS sensor and can be mapped on a map. o Media API bringing together photo, music and video sharing services with file transfer and syncing functionalities. It is related with the Gallery Application and the file system of a device. o Products & Services API embracing Analytics, , Payments and Shopping services. It is related with the store application of a Phone. o Profiles API extrapolating information about persons based on Analytics, Advertising, , Gaming, Health, Location-based Services, Messaging & Chat, Music, Social, etc. services. It is directly related to the Agenda application of a smartphone. o Search API in order to find and retrieve information from the cloud-based services. It is related to the search functionality found in a Phone OS. Such APIs bring together the functionality offered in four (4) to twelve (12) categories, as well as multiple and diverse objects and existing APIs.  Drawing Future Perspectives and Key Lessons Learnt from the investigation of the state-of the art, indicatively: o Creating a classification of the cloud-based services’ territory was not a trivial task and could have gone a long way if a concrete methodology was not applied from beginning to end. o Research in a highly dynamic and evolving field is particularly challenging taking into account the novel cloud-based services that continuously arise and may eventually dominate the market. o Continuously tracking the emerging services, disruptive technologies and market developments with regard to the APIs and introducing the necessary changes in the OPENi wiki is considered as an effective way to keep the results tuned to the end users’ needs.

6

D2.1 Cloud-based Services Analysis

Table of Contents

1 Introduction ...... 11 1.1 Purpose and Objectives ...... 11 1.2 Methodological Approach ...... 12 1.3 Structure of the Document ...... 14 2 Core Theoretical & Technological Background of Cloud-based Services ...... 15 2.1 Services Design ...... 15 2.1.1 Methods & Protocols ...... 15 2.1.2 Data Formats ...... 17 2.1.3 Web Application Frameworks ...... 17 2.2 APIs Design ...... 18 2.2.1 Patterns ...... 19 2.2.2 Guidelines ...... 21 2.2.3 Protocols & Schemas ...... 22 2.2.4 Research Projects ...... 24 3 Cloud-based Services Review ...... 26 3.1 Services Landscape ...... 26 3.2 Services Prioritization ...... 34 3.3 APIs In-depth Analysis ...... 37 3.3.1 Advertising - API in-depth Analysis ...... 38 3.3.1.1 Documentation ...... 38 3.3.1.2 Functionalities ...... 39 3.3.1.3 Assessment ...... 41 3.3.2 Analytics – API in-depth Analysis ...... 42 3.3.2.1 Documentation ...... 42 3.3.2.2 Functionalities ...... 43 3.3.2.3 Assessment ...... 44 3.3.3 Contacts - API in-depth Analysis ...... 45 3.3.3.1 Documentation ...... 45 3.3.3.2 Functionalities ...... 46 3.3.3.3 Assessment ...... 47 3.3.4 File Transfer & Syncing - API in-depth Analysis ...... 48 3.3.4.1 Documentation ...... 48 3.3.4.2 Functionalities ...... 49

7

D2.1 Cloud-based Services Analysis

3.3.4.3 Assessment ...... 50 3.3.5 Gaming - API in-depth Analysis ...... 51 3.3.5.1 Documentation ...... 51 3.3.5.2 Functionalities ...... 52 3.3.5.3 Assessment ...... 52 3.3.6 Health - API in-depth Analysis ...... 53 3.3.6.1 Documentation ...... 53 3.3.6.2 Functionalities ...... 54 3.3.6.3 Assessment ...... 56 3.3.7 Location-based Services - API in-depth Analysis ...... 57 3.3.7.1 Documentation ...... 57 3.3.7.2 Functionalities ...... 58 3.3.7.3 Assessment ...... 60 3.3.8 Mapping - API in-depth Analysis ...... 61 3.3.8.1 Documentation ...... 61 3.3.8.2 Functionalities ...... 62 3.3.8.3 Assessment ...... 62 3.3.9 Messaging - API in-depth Analysis ...... 63 3.3.9.1 Documentation ...... 63 3.3.9.2 Functionalities ...... 64 3.3.9.3 Assessment ...... 66 3.3.10 Music - API in-depth Analysis ...... 67 3.3.10.1 Documentation ...... 67 3.3.10.2 Functionalities ...... 68 3.3.10.3 Assessment ...... 69 3.3.11 News - API in-depth Analysis ...... 70 3.3.11.1 Documentation ...... 70 3.3.11.2 Functionalities ...... 70 3.3.11.3 Assessment ...... 71 3.3.12 Payments - API in-depth Analysis ...... 72 3.3.12.1 Documentation ...... 72 3.3.12.2 Functionalities ...... 73 3.3.12.3 Assessment ...... 74 3.3.13 Photo - API in-depth Analysis ...... 75 3.3.13.1 Documentation ...... 75 3.3.13.2 Functionalities ...... 76 3.3.13.3 Assessment ...... 78

8

D2.1 Cloud-based Services Analysis

3.3.14 Search - API in-depth Analysis ...... 79 3.3.14.1 Documentation ...... 79 3.3.14.2 Functionalities ...... 80 3.3.14.3 Assessment ...... 80 3.3.15 Shopping - API in-depth Analysis ...... 81 3.3.15.1 Documentation ...... 81 3.3.15.2 Functionalities ...... 82 3.3.15.3 Assessment ...... 85 3.3.16 Social - API in-depth Analysis ...... 86 3.3.16.1 Documentation ...... 86 3.3.16.2 Functionalities ...... 87 3.3.16.3 Assessment ...... 89 3.3.17 Telephony - API in-depth Analysis ...... 90 3.3.17.1 Documentation ...... 90 3.3.17.2 Functionalities ...... 91 3.3.17.3 Assessment ...... 92 3.3.18 Video - API in-depth Analysis ...... 93 3.3.18.1 Documentation ...... 93 3.3.18.2 Functionalities ...... 94 3.3.18.3 Assessment ...... 95 4 Towards the OPENi Cloud-based Services ...... 96 4.1 Mapping between the Existing Cloud-based Services APIs ...... 96 4.2 Preliminary OPENi Generic APIs ...... 119 5 Conclusions and Key Take-Aways ...... 127

Annex I: References ...... 133

Annex II: Complete List of Services Prioritization ...... 135

9

D2.1 Cloud-based Services Analysis

List of Figures

Figure 0-1: OPENi Landscape of Cloud-based Services for In-depth Analysis ...... 5 Figure 1-1: Contribution of T2.1 to the overall OPENi Concept (in DoW) ...... 12 Figure 1-2: Main Pillars of an Iterative Methodological Approach ...... 14 Figure 2-1: Contrasting SOAP and RESTful mechanisms for web services [Source: (PwC, 2012)] ..... 16 Figure 2-2: Distribution of API Protocols and Styles [Source: (Musser, 2012)] ...... 19 Figure 2-3: APIs Business Models [Source: (Musser, 2012)] ...... 20 Figure 3-1: OPENi to close the gap of business perspective between developers and mobile industry ...... 26 Figure 3-2: Steps to categorize and create a pool of services ...... 27 Figure 3-3: Interrelating categories in a meaningful graph that described how they are mainly combined ...... 29 Figure 5-1: APIs Growth Rate [Source: (Musser, 2012)] ...... 128 Figure 5-2: OPENi Landscape of Cloud-based Services for In-depth Analysis ...... 129 Figure 5-3: Predominant Protocols and Data Formats in Analyzed APIs ...... 132

List of

Table 2-1: FP7 Research Projects targeting APIs ...... 24 Table 3-1: Steps to identify categorization of cloud-based services ...... 28 Table 3-2: Initial Selection of services for every recognized category ...... 30 Table 3-3: Criteria for Prioritization of Cloud-based Services ...... 34 Table 3-4: Selected services per category ...... 35 Table 4-1: OPENi Generic APIs Definition...... 119 Table 4-2: OPENi Generic APIs Overview ...... 121 Table 5-1: Draft Prioritization of existing APIs appearing in the OPENi Generic APIs ...... 130

10

D2.1 Cloud-based Services Analysis

1 Introduction

1.1 Purpose and Objectives Today, cloud-based services featuring a broad scale of functionalities (from location based services and photo sharing, to social networking) have revolutionized the way we communicate, connect, share and eventually conduct business. An emerging trend to expose such functionalities through publicly available APIs (Application Programming Interfaces) has not only redefined how software and services are delivered, but also indicates how business value is moving towards a thriving high-paced mobile application ecosystem. Along these lines, OPENi aims at delivering a consumer-centric, open source mobile cloud applications solution that will be the catalyst for mobile application innovation advancement. The OPENi focal research contribution lies on two main axes:  Incorporating an open API framework that will be capable of interoperating with any cloud- based service, abstracting the integration challenges to a single open standard without losing any service features.  Reducing the fragmentation and duplication of consumers’ data through personal Cloudlets that enable them to manage what information is available to each application and for what purpose. In this context, the present report aims at analysing and classifying into categories the landscape of existing cloud-based services today and their publicly available APIs. It is released in the context of Task 2.1 «Cloud-based services analysis» and falls within the scope of Work Package 2: Use Cases Analysis and Requirements Specification. According to the DoW, task T2.1 has the following targeted objectives:  To identify and classify existing, proven and popular, cloud-based services based on a set of criteria from the developers’ and consumers’ perspective.  To analyze in depth the available APIs – offered publicly, at no cost – for each identified service category of relevance to OPENi.  To define the generic functionality for each category of cloud-based services to initiate the conceptualization of the OPENi Generic APIs. This report eventually provides the baseline for the Cloud-based Services that should be taken forward in the Design and Development phases. To this direction, it actually creates a robust framework for the OPENi APIs Specification in Task 3.1 and for the Social media services framework implementation in Task 4.1. Figure 1-1 depicts how the present report contributes to the overall OPENi concept.

11

D2.1 Cloud-based Services Analysis

Figure 1-1: Contribution of T2.1 to the overall OPENi Concept (in DoW)

1.2 Methodological Approach With the main objective to study the cloud-based services landscape that will be taken into account during the OPENi APIs Framework definition, the work carried out for the present State of the Art Analysis bears the following steps:

Pillar I – Baseline Analysis Step 1. Analyzing the background of the Cloud-based Services with regard to standards, guidelines and technologies that are typically applied during the design of services or APIs.

Pillar II – Identification of the Landscape Step 2. Defining the scope. During this step, the criteria that render a Cloud-based Service of interest to OPENi were elaborated and debated. In essence, the following parameters have delimited the OPENi landscape of Cloud-based Services:  The availability of APIs externalizing the functionality of a Cloud-based Service.  The added value of each Cloud-based Service to a developer.  The usefulness of each Cloud-based Service to the consumer.  The popularity of each Cloud-based Service (by the number of mash-ups utilizing it and the number of users it has attracted).  The coverage of a broad spectrum of functionality by each Cloud-based Service.  Whether a Cloud-based Service captures emerging trends in order to provide potential new ideas to the OPENi Use Cases.

Step 3. Identifying relevant Cloud-based Services with an approach as inclusive as possible

12

D2.1 Cloud-based Services Analysis

through empirical research over the web (from developers’ reference portals and blogs to search engines and apps marketplaces).

Step 4. Initiating the categorization of Cloud-based Services based on the Cloud-based Services retrieved in Step 3.

Step 5. Validating and iteratively updating the draft categorization of Cloud-based Services and the list of relevant Cloud-based Services through desk-based research. Since there was no research work (papers) on the categorization of cloud-based services found, the categorization proposed by developers’ reference portals (e.g. Programmable Web APIs Directory (2012), Mashape APIs (2012), Verious APIs for mobile apps (2012)) as well as the categorization adopted by the biggest mobile apps marketplaces, where the focus of developers and the appraisal from users meet one another (i.e. App Store, - Android Marketplace) were meticulously studied. Finally, the future trends according to analysts (e.g. Gartner Mobile Trends 2012, Appcelerator and IDC surveys, Cameron (2010), Musser (2011)) provided additional insights on the types of Cloud-based Services that are anticipated to dominate the market.

Step 6. Prioritizing the Cloud-based Services based on multi-criteria decision analysis. The categories have been filtered on the basis of their alignment and proximity to the OPENi Use Cases. A set of criteria have been also defined and assigned with specific weight in each category in order to identify which are the predominant services and which are the trends in cloud-based services. Indicative criteria that have been set are the Registered Users, the Monthly Active Users and the Alexa Reach Ranking.

Step 7. Validating the categorization and selection of Cloud-based Services within the consortium in order to ensure that the necessary representative set of services to inspire the use cases and identify the functionality of the OPENi Generic APIs has been identified.

Pillar III – Investigation of the Landscape Step 8. Analyzing in depth the APIs available by the existing Cloud-based Services. During this step, a complete documentation of the APIs including their protocols, limitations and data formats has been conducted. The functionalities provided by each API have been studied in detail and mapped on the basis of the objects involved in each category and according to a common agreed terminology. Finally, the degree of the API exposure has been evaluated and summarizes the main points and lessons learnt from the analysis.

Pillar IV – Conclusions & Key Take-Aways Step 9. Elaborating on the OPENi Generic APIs. In order to proceed to the identification of the generic functionality for each category of cloud-based services, a detailed map containing all Cloud- based Services and their functionalities offered has been constructed. Upon obtaining a clear overview of the complete set of functionalities (irrespectively of the category to which each service belongs), the main objects and activities involved are identified based on the concepts of state-of-the art standards (like ActivityStreams) leading to the draft conceptualization of a set of Generic APIs to be put forward by OPENi.

13

D2.1 Cloud-based Services Analysis

Step 10. Analyzing Perspectives and Key Lessons Learnt from the investigation of the state-of the art.

Figure 1-2: Main Pillars of an Iterative Methodological Approach

1.3 Structure of the Document The structure of the document is as follows:  Section 2 introduces the core theoretical and technological background for the design of cloud-based services and their corresponding APIs.  Section 3 describes in detail the services categorization and prioritization and proceeds to the analysis of the APIs of the selected set of cloud-based services.  Section 4 brings forward the functionality required from the OPENi Generic APIs.  Section 5 concludes this cloud-based services analysis with key challenges and next steps.  Annex I cites the relevant references.  Annex II presents the exact criteria for the services prioritization per category.

14

D2.1 Cloud-based Services Analysis

2 Core Theoretical & Technological Background of Cloud- based Services

In view of the OPENi API Framework, a state-of-the art analysis is conducted in this section in order briefly present the theoretical and technological baseline background necessary for the design of services and APIs.

2.1 Services Design In the context of a service-oriented architecture, the term service refers to a set of related software functionalities that can be reused for different purposes, together with the policies that should control its usage. According to the OASIS Reference Architecture Foundation for Service Oriented Architecture (OASIS, 2012), a service as is defined a mechanism to enable access to one or more capabilities (that satisfy users’ needs), where the access is provided using a well-defined interface and is exercised consistent with constraints and policies as specified by the service description. Services design in alignment with the principles of flexibility and reusability has attracted the interest of researchers, enterprises, and standardization organizations as demonstrated from the plethora of approaches and standards that have emerged during the last years.

2.1.1 Methods & Protocols Typically, the main approaches followed during the service design can be classified as:  Web Services (WS-*). According to W3C (2004a, 2004b), a Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP- messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards. o REST-compliant Web services, in which the primary purpose of the service is to manipulate XML representations of Web resources using a uniform set of "stateless" operations; and o Arbitrary Web services, in which the service may expose an arbitrary set of operations. Both classes of Web services use URIs to identify resources and use Web protocols (such as HTTP and SOAP 1.2) and XML data formats for messaging.  RESTful Web Services that focus on a system's resources, including how resource states are addressed and transferred over HTTP by a wide range of clients written in different languages. A concrete implementation of a REST Web service follows four basic design principles (IBM, 2008): o Use HTTP methods explicitly (i.e. To create a resource on the server, use POST; To retrieve a resource, use GET; To change the state of a resource or to update it, use PUT; To remove or delete a resource, use DELETE). o Be stateless.

15

D2.1 Cloud-based Services Analysis

o Expose directory structure-like URIs. o Transfer XML, JavaScript Object Notation (JSON), or both.  Remote Procedure Call (RPC) as an inter-process communication that allows a computer program to cause a subroutine or procedure to execute in another address space (commonly on another computer on a shared network) without the programmer explicitly coding the details for this remote interaction. The RPC protocol can be differentiated into: XML-RPC if it uses XML to encode its calls and HTTP as a transport mechanism, and JSON-RPC when it uses JSON-encoded messages.  JavaScript APIs built on JavaScript (JS), an open source -side scripting language, and allowing access via HTTP (through a browser or a server HTTP connection) by making a call to a script on another server. They are typically client-side script APIs, for use in browsers and similar user agents.

Figure 2-1: Contrasting SOAP and RESTful mechanisms for web services [Source: (PwC, 2012)]

Today, a paradigm shift in service design towards REST is noticed through its adoption by mainstream Web 2.0 service providers—including Yahoo, Google, and —who have deprecated or passed on SOAP and WSDL-based web services in favour of an easier-to-use, resource- oriented model to expose their services. When it comes to real-time communication through a message-oriented middleware, an additional protocol, the Extensible Messaging and Presence Protocol (XMPP), comes to the foreground. XMPP (XMPP Standards Foundation, 2013) is an open technology for real-time communication, which powers a wide range of applications including instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. Designed to be extensible, the protocol has also been used for publish-subscribe systems; signalling for VoIP, video, and file transfer; gaming; Internet of Things applications such as the smart grid; and Social networking services.

16

D2.1 Cloud-based Services Analysis

WebSockets is also a technology providing for bi-directional, full-duplex communications channels, over a single Transmission Control Protocol (TCP) socket. It is designed to be implemented in web browsers and web servers but it can be used by any client or server application. The WebSocket API establishing "socket" connections between a and a server is being standardized by the W3C (2013) and the WebSocket protocol is being standardized by the IETF. As far as Real-Time Communications (RTC) capabilities are concerned, WebRTC (2013) is a free, open project that enables web browsers with via simple JavasScript APIs. It offers web application developers the ability to write rich, real-time multimedia applications (think video chat) on the web, without requiring plugins, downloads or installs, that work across multiple web browsers, across multiple platforms. It needs to be noted that cloud frameworks and authentication protocols for web services are not in the scope of this state-of-the art exercise since they are investigated in depth in other OPENi tasks (i.e. T2.2 Mobile cloud analysis and T2.3 Security and Privacy analysis).

2.1.2 Data Formats The predominant data formats utilized for data modelling and exchange in web services are:  Extensible (XML) defined in the W3C XML 1.0 Specification (2008) as a markup language that defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. Each XML document has both a logical and a physical structure. Physically, the document is composed of units called entities and logically, it is composed of declarations, elements, comments, character references, and processing instructions, all of which are indicated in the document by explicit mark-up.  JSON (JavaScript Object Notation), a lightweight data-interchange format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages. Based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition (December 1999), JSON is built on two structures: a collection of name/value pairs and an ordered list of values.

2.1.3 Web Application Frameworks Web Application Frameworks are designed to support the development of dynamic , web applications and web services. They aim at alleviating the overhead associated with common activities performed in Web development. Most Web Application Frameworks follow the model–view–controller (MVC) architectural pattern to separate the data model with business rules from the . This is generally considered a good practice as it modularizes code, promotes code reuse, and allows multiple interfaces to be applied. A comparison among Web Application Frameworks along multiple dimensions is available in (, 2013). Depending on the language to which they are written, notable Web Application Frameworks include:  Node.js, a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it

17

D2.1 Cloud-based Services Analysis

lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.  Django, a high-level Python that encourages rapid development and clean, pragmatic design based on the model–view–controller architectural pattern. Django's primary goal is to ease the creation of complex, database-driven websites. Django emphasizes reusability and "pluggability" of components, rapid development, and the principle of don't repeat yourself.  , a scalable, non-blocking web server and web application framework written in Python.  Ruby on Rails, an open source full-stack web application framework for the Ruby programming language. It is a full-stack framework, and emphasizes the use of well-known software engineering patterns and principles, such as Active record pattern, Convention over Configuration, Don't Repeat Yourself and Model-View-Controller.  Spring, an open source application framework and Inversion of Control container for the Java platform. The core features of the Spring Framework can be used by any Java application, but there are extensions for building web applications on top of the Java EE platform.  ASP.NET MVC Framework, including many features that enable fast, TDD-friendly development for creating sophisticated applications that use the latest .  as an open source set of tools, that allows web developers to create and maintain complex JavaScript front-end applications in Java. It emphasizes reusable, efficient solutions to recurring Ajax challenges, namely asynchronous remote procedure calls, history management, bookmarking, UI abstraction, internationalization and cross-browser portability.

2.2 APIs Design An Application Programming Interface (API) is the specification for how software programs are able to exchange information with each other even if designed and run by different organizations over a network (predominantly the Internet) using a common language that they both understand. APIs are defined on the basis of the following logic (Jacobson et al., 2011):

 The API provider describes exactly what functionality the API will offer.  The API provider describes when the functionality will be available and when it might change in an incompatible way.  The API provider may outline additional technical constraints within the API, such as rate limits that control how many times a particular application or end user is allowed to use the API in a given hour, day or month.  The API provider may outline additional legal or business constraints when using the API, such as branding limitations, types of use and so on.  Developers agree to use the API as described, to use only the APIs that are described and to follow the rules set out by the API provider.

18

D2.1 Cloud-based Services Analysis

2.2.1 Patterns A Web API (Application Programming Interface) is typically a defined set of HTTP request messages along with a definition of the structure of response messages, typically expressed in JSON or more rarely in XML. While "web API" is sometimes considered a synonym for web service, the Web 2.0 applications typically have moved away from SOAP-based web services towards more direct REST- style communications (Benslimane et al, 2008). Web APIs allow the combination of multiple services into new, added-value applications known as service mashups, and help to meet integration requirements that are critical to building systems where data can be easily combined (mashups) and to extend or build on a set of base, RESTful services into something much bigger and complex.

Figure 2-2: Distribution of API Protocols and Styles [Source: (Musser, 2012)]

Three main types of APIs have dominated today: Private (used internally to facilitate the integration of different applications and systems used by a company), Partner (used to facilitate the communication and integration of software between a company and its partners) and Public (allowing companies to publicly expose internal information and functionalities of their systems to third parties). With APIs literally leading to entirely new business opportunities, determining the appropriate business model sheds light into the value of the API to an organisation. As depicted in Figure 2-3, 19 business models (ranging from Free and Developer Pays to Developer Gets Paid and Indirect) and have been noticed in the market in 2012.

19

D2.1 Cloud-based Services Analysis

Figure 2-3: APIs Business Models [Source: (Musser, 2012)]

20

D2.1 Cloud-based Services Analysis

2.2.2 Guidelines Today, over a relatively short period of time, the number of different APIs that have been published has grown at an exponential pace. Despite following the same or similar standards when it comes to the protocols and data formats utilized, each API has adopted its own conventions and approach that increase the difficulty to properly understand and easily reuse it. In order to avoid fragmentation in the design of APIs, concrete guidelines on how to design APIs have been proposed by various notable initiatives as following:  Web API Design Cookbook. In 2012, W3C released a working group note (W3C, 2012a) to capture common practices in designing APIs that fit well into the Web platform as a whole, using WebIDL. Such practices range from naming conventions (casing, namespaces and prefixes) and tips on how to use attributes and when to be asynchronous, to WebIDL constructs (i.e. dictionaries, interfaces, constants, methods, exceptions, callbacks, etc.). Common patterns for specifying callbacks have been drawn while additional patterns for specifying events and for feature detection are under development. o WebIDL (W3C, 2012b) is a powerful and flexible schema language for APIs that aims at ensuring that APIs can be defined in interoperable way without each and every one of them needing to repeat all manners of behavioural specifics.  ’s Web API Design as a collection of design practices that have been developed in collaboration with leading API teams around the world, as they craft their API strategy through an Apigee design workshop. It adopts a “pragmatic REST” point of view in API design as it places the success of the developer over and above any other design principle. In order to maximize developer productivity and success, a set of principles and best practices have been compiled including naming conventions (use of concrete names and nouns instead of verbs), handling errors, versioning, search, exceptional behavior, multiple requests, complementing with an SDK, etc. From an architecture perspective, the API façade pattern is proposed as the optimal solution that provides a virtual layer between the interface and the API implementation. Implementing an API façade pattern involves three basic steps: o Design the ideal API – design the URLs, request parameters and responses, payloads, headers, query parameters, and so on. The API design should be self- consistent. o Implement the design with data stubs. This allows application developers to use your API and give you feedback even before your API is connected to internal systems. o Mediate or integrate between the façade and the systems.  Practical API Design by Tulach (2012) shares findings about rules of proper API Design by describing adventures of the NetBeans project. It provides concrete API design patterns with examples that focus on evolution, as well as a collection of advices on how to bugfix, evolve and maintain an API.  APIs: A Strategy Guide by Jacobson, D., Brail, G., Woods, D. (2011) explains in detail how to build strategies for designing, implementing, and marketing an API, which best practices and key design principles to comply with, how to devise an effective process for security and user management, how to address legal issues, and how to determine the metrics you need to measure your API’s success

21

D2.1 Cloud-based Services Analysis

 The Little Manual of API Design based on the experiences of Trolltech, a Nokia company (Blanchette, 2008). It breaks down the procedure of designing a new API or extending an existing API in steps and provides a set of naming, semantics and structural guidelines to be followed. Additional tips provided by blogs (i.e. Vermorel (2010)) focus on the full API stack ownership, the minimalistic approach, Idempotence and Explicit input/output limitations as key lessons learnt. Such guidelines agree with (Bloch, 2007) that the properties of good APIs are: Easy to learn; Easy to use, even without documentation; Hard to misuse; Easy to read and maintain code that uses it; Sufficiently powerful to satisfy requirements; Easy to extend; and Appropriate to audience. Finally, invaluable aspects that contribute to characterizing an API as good include:  Mechanisms to access the API and understand its terms of use and business model.  API Reference / Documentation to aid in understanding the API.  Resources such as code examples, FAQ, documentation forums, and blogs for developer communities to support those using the API.  Operational information about the health of the API and how much use it is getting.  A clearly articulated roadmap for the API focusing not only on technical but also (where possible) on business aspects. Such a roadmap engages users of the API in conversation on what might be important to them.

2.2.3 Protocols & Schemas ActivityStreams is an open format specification for protocols, which are used to syndicate activities taken in applications and services. Building on the concepts of the Activity Theory, the activity in ActivityStreams is a description of an action that was performed (the verb) at some instant in time by someone or something (the actor) against some kind of person, place, or thing (the object). There may also be a target (like a photo album or wish list) involved. ActivityStreams is recognized today as one of the fastest-moving technologies according to the Gartner 2012 Hype Cycle for Emerging Technologies (Gartner, 2012b). It represents a community effort to unify the social web and objects like payments or songs and allows interaction with different social platforms using a common vocabulary and properties that appear in the Activity Base Schema (Draft) (2012), as well as to the JSON and Activity Streams 1.0.  Despite the fact that an activity stream is a publish-and-subscribe notification mechanism and conversation space typically found in social networking, the study of the ActivityStreams protocol in OPENi is particularly useful to describe the envisaged social platform services in an interoperable way, but also to design the OPENi Generic APIs in a better way.

The OpenGraph Protocol, originally created at Facebook and inspired by the Dublin Core Metadata Initiative, link-rel canonical, Microformats, and RDFa, enables any web page and app to become a rich object in a . Through the OpenGraph protocol, developers can integrate their pages into the social graph by adding metadata, thus gaining the functionality of other graph objects including profile links and stream updates for connected users.

22

D2.1 Cloud-based Services Analysis

 The OpenGraph protocol has changed the design of the Facebook API and the semantics that a developer expects to interact with on Facebook. It will be taken into consideration during the study of APIs offered by different cloud-based services, as well as during the OPENi Generic APIs definition.

OpenSocial is a set of APIs for building social applications that run on the web. OpenSocial's goal is to make more apps available to more users, by providing a common API that can be used in many different contexts. The OpenSocial APIs expose methods for accessing information about , their friends, and their data, within the context of a container, i.e. when running an application on , you'll be interacting with your Orkut friends, while running the same application on MySpace lets you interact with your MySpace friends. OpenSocial was initially developed (by Google and MySpace) for accessing functionality but it is now endorsed by several other cloud- based service providers such as .com, 99factors.com, MySpace, LinkedIn, Orkut, , Sonico.com, , , and Yahoo. OpenSocial promotes a platform-independent approach by adopting web technologies such as HTML5 and JavaScript to define its APIs and has been used, integrated and hosted in lightweight and open standards based extendible platforms, such as or the new Apache Rave. Yet, OpenSocial, is based on an “egalitarian eco-system” approach, meaning that it asks from service providers to endorse and implement its APIs. As a result several of the so called “big fish” providers such as Facebook, , etc as well as the very small ones (that can’t afford it) do not endorse its APIs.  The OpenSocial Specification and APIs will provide significant insights and lessons learnt for the OPENi Generic APIs elaboration phase.

The Friend of a Friend (FOAF) project is creating a Web of machine-readable pages describing people, the links between them and the things they create and do. FOAF uses W3C's RDF technology to share and use information about people and their activities (eg. photos, calendars, weblogs), to transfer information between Web sites, and to automatically extend, merge and re-use it online. According to the FOAF Vocabulary Specification 0.98 (2010), FOAF integrates three kinds of networks: social networks of human collaboration, friendship and association; representational networks that describe a simplified view of a cartoon universe in factual terms, and information networks that use Web-based linking to share independently published descriptions of this inter- connected world. FOAF is defined as a dictionary of terms, each of which is either a class or a property, that are grouped in broad categories: Core (describing characteristics of people and social groups that are independent of time and technology), Social Web (used when describing Internet accounts, address books and other Web-based activities) and Linked Data utilities. FOAF descriptions are themselves published as linked documents.  With its approach to link information from multiple sites / networks in a non-proprietary format, FOAF provides a semantic background to be taken into account during the OPENi Generic APIs Design.

23

D2.1 Cloud-based Services Analysis

2.2.4 Research Projects A set of FP7 projects mainly in the area of Software and Services have followed research pathways related to APIs design or specification as depicted in the following table.

Table 2-1: FP7 Research Projects targeting APIs

Project Description APIs-related Research

CloudSpaces - The CloudSpaces project advocates for a paradigm shift from CloudSpaces will define open APIs Open Service application-centric to person-centric models where users will retake and standard formats to share Platform for the the control of their information. CloudSpaces aims to create the information between Personal Next Generation next generation of open Personal Clouds using three main building Clouds but also to export and of Personal clouds blocks: CloudSpaces Share, CloudSpaces Storage and CloudSpaces import data from heterogeneous Services. CloudSpaces Share will deal with Interoperability and providers. privacy issues. CloudSpaces Storage takes care of scalable data management of heterogeneous storage resources. Finally, CloudSpaces Services provides a high level service infrastructure for third-party applications that can benefit from the Personal Cloud model. mOSAIC - Open- The mOSAIC project aims to develop an open-source platform that The mOSAIC API will be a Cloud- Source API and enables applications to negotiate Cloud services as requested by based language-and platform- Platform for their users. Using the Cloud ontology, applications will be able to independent application Multiple Clouds specify their service requirements and communicate them to the programming interface that platform via an API. The platform will implement a multi-agent extends the existing language- or brokering mechanism that will search for services matching the platform-dependent API applications’ request, and possibly compose the requested service if capabilities with composite no direct hit is found. The platform will facilitate competition features based on usage patterns. between Cloud providers, who, in return, will be able to reach customers they could not reach before.

PADGETS - Policy PADGETS aims at bringing together two well established domains, PADGETS has conducted a Gadgets Mashing the mashup architectural approach of web 2.0 for creating web thorough study of the current Underlying Group applications (gadgets) and the methodology of system dynamics in APIs of the social media platforms Knowledge in Web analyzing complex system behaviour. The objective is to design, that constitute immediate targets 2.0 Media develop and deploy a prototype toolset that will allow policy makers of the PADGETS system. This to graphically create web applications that will be deployed in the study aimed at identifying the environment of underlying knowledge in Web 2.0 media. For this publicly available methods that its reason, the project introduces the concept of Policy Gadget API exposes in order to allow (Padget) – similarly to the approach of gadget applications in web automated (application to 2.0 – to represent a micro web application that combines a policy application) interaction between message with underlying group knowledge in social media (in the the social platforms and form of content and user activities) and interacts with end users in independent (external popular locations (such as social networks, blogs, forums, news applications). sites, etc) in order to get and convey their input to policy makers.

SocIoS - SocIoS will pave the way for building qualitative, functional and SocIoS will enable common users Exploiting Social usable business applications exploiting the User Created Content to access SNs and their Networks for (UCC) and the Social Graph of users in Social Networks. By applications as well as services Building the providing tools for cross-platform application development and created by other users through a Future Internet of deployment, support for SLAs and QoS, tools for UCC and social single API and combine them in

24

D2.1 Cloud-based Services Analysis

Project Description APIs-related Research Services graph management, and – most importantly – a usable framework order to create a new application to build services in and through Social Networks, SocIoS will provide with enhanced functionality incentives for the development of business applications. tailored to their needs. SocIoS has delivered an ontology, an object model and an architecture leveraging SN APIs. webinos - Secure The webinos project will define and deliver an Open Source Platform webinos is a federated web Web Operating and software components for the Future Internet in the form of web runtime that offers a common set System runtime extensions, to enable web applications and services to be of APIs to allow applications easy Application used and shared consistently and securely over a broad spectrum of access to cross-user cross-service Delivery converged and connected devices, including mobile, PC, home cross-device functionality in an Environment media (TV) and in-car units. open yet secure manner. Webinos is aligned to earlier or ongoing standardization activities, e.g. within W3C and WAC. The webinos APIs have been specified according to W3C Web IDL and can be divided into a number of categories, i.e. Application Data APIs, Communication APIs, and context APIs, Security and Privacy APIs.

25

D2.1 Cloud-based Services Analysis

3 Cloud-based Services Review

In this section, proven and popular, cloud-based services will be identified, documented, categorized and analyzed relatively to the APIs and the functionalities they expose. These services are primarily public and free services, but in case high added value for developers is recognized, non-free services may be included in the analysis as well. For each category, the selected services are analysed based on the functionalities that are available. The current chapter is the preliminary work for the OPENi Generic API Framework design and the supported third party services.

3.1 Services Landscape The area of public available services through APIs is a fast growing field, with more and more platforms offering their services publicly with or without a price. The need for a mutually supported community of users and developers who consume and add new features relatively, allowing a platform to keep and use the exchanged data and increase in user basis, has forced more and more platforms to export their services through APIs. It was back in 2005, when Paul Rademacher (DuVander, 2010) hacked the service based on responses he got from different URL calls, and data he could crawl from Craiglist, and created the first mashup service. Since then, more and more platforms have been convinced to expose their data instead of keeping them under strict legal schemas. By January 2013, 8482 Services have been documented on Programmable Web (2012) making their analysis complex enough. In this context, OPENi had to meet a challenging task and use a hybrid approach to combine collective choices of the development community, the market forces that drive the cloud-based industry and the experience of the project partners to drive the project to the selection of the proper third party services. Thus, this paragraph tries to map the direction of the API development community since 2005, the trends emerging by the mobile vendors after the release of the first iPhone in 2007 (i.e. one year after it was hacked to force Apple allow third party applications), that allowed programmable mobile phones, and towards 2020, in order to map the direction that OPENi will take to lead the development community, support it with more available resources, speed the mobile software development and reduce its cost, in order to reach the fast grown business value built over the mobile phone market [Figure 3-1].

Figure 3-1: OPENi to close the gap of business perspective between developers and mobile industry

26

D2.1 Cloud-based Services Analysis

In this direction, this deliverable followed a series of steps to generate a competitive, valuable and promising pool of cloud-based services, which was analysed in order to make an appropriate selection and prioritization. The general principle was driven by the categorization of the services landscape to cover as many functionalities as possible, and then with the use of similar criteria to choose the services that will be analysed under the project. The analysis focused on mobile services, or relative features that mobile phones support (i.e. camera, location awareness, phone capabilities etc.).

Figure 3-2: Steps to categorize and create a pool of services

In particular, as shown on [Figure 3-2], (a) the Programmable Web site was initially studied to identify the most popular categories used by developers. Then, (b) references from business and technological reports or analyses (i.e. TechCrunch, IT-business, ReadWriteWeb) have been used to supplement the initial results with trending services and categories. Next, (c) the results were circulated to the whole consortium to comment and contribute based on their knowledge about trending services, and combine them with project’s perspectives so that no category required for pilots is excluded. As a next step, as it will also be presented in [Section 0], (d) the process analyzed selected services for functionalities; in case a service did not meet project’s goals, or it was not enough to describe the complete category and generate the generic API, categories (e.g. Analytics) or services (e.g. most of the advertising) were added to have a more complete pool of services (e). This process will even continue to run even after the end of this work, updating the pool of services with ones that meet project’s goals or reflect market advancements (f). Based on this approach, the following categories where recognized as shown in Error! Reference source not found.; with green colour the categories that were selected are indicated, with red the excluded categories and with orange the modified or merged ones.

27

D2.1 Cloud-based Services Analysis

Table 3-1: Steps to identify categorization of cloud-based services

Step Step Description Recognized Categories No

1 Programmable Web In order to choose the most popular  Mapping (3,262 APIs services for every category, the list of the used) most popular APIs from Programmable  Social (1,504) Web has been used (by November 2012).  Search (1,130) On the right column, they categories in  Photos (898) descending order are visible, with the  Shopping (838) number of mashups that have used at  Video (831) least an API from the certain category.  Music (502) The complete list of categories could not  Telephony (447) be used, as it is a very large number and  Internet (441) some of the categories are quite niche,  Messaging (SMS, IM, out-dated or too specific. Next steps will email) (342) identify any additional category.

2 Market & Tech analyses Latest analyses from ReadWriteWeb  Advertising (Cameron, 2010), ITbusinessEdge (2012)  Location based services and Business Insider (2012) have been  Payments used to identity emerging trends.  File Transfer & Syncing Additionally, the categories with services  Utilities used by popular Mobile application Stores  Events & Calendar (i.e. App Store, Google Play) were used to  Contacts identify other popular categories. The  Cloud results are shown on the right column. The suggested categories, where modified, unselected or merged on the next step (below).

3 Task Partners & Project While working the current document,  Analytics Consortium different opinions and needs emerged.  Gaming This task was the result of all these  Health internal processes of the project.  News Advertising needed the support of  Utilities Analytics, a category that relatively was  Internet merged with the Internet Category.  Events & Calendar Gaming also is a powerful industry in mobile devices. Health and Lifestyle applications are trending more and more lately, while News where needed to support relative pilot applications. Utilities category was more application specific and not services oriented, thus it was excluded, while Internet was merged in some extend with Analytics.

28

D2.1 Cloud-based Services Analysis

The excluded categories can be seen also in the graph of Figure 3-3: Interrelating categories in a meaningful graph that described how they are mainly combinedFigure 3-3. Events and calendars were merged with location based services (events) or where not a part of this analysis (calendars).

An initial, empirical approach than suggests the way services from different categories are combined, can be seen in Figure 3-3. Circles address the categories and arrows the way they are connected with each other.

Video Store Cloud Mapping Get

News Get Search Internet Visualize Sync Location Get Based Services Share Share Analytics Personalize Store File Transfer & Share Syncing Gaming Get Share Sync Social Store Share Sync Music Sync Sync Share Share

Get

Contacts Get Photos Personalize Identify Health

Customize Shopping Utilities Promote Advertising Messaging Extend Operate Telephony

Payment

Figure 3-3: Interrelating categories in a meaningful graph that described how they are mainly combined

Using the same approach and steps as described in Table 3-1, for the selected categories the relevant popular and addressable services have been identified, as shown in Table 3-2. This is an initial

29

D2.1 Cloud-based Services Analysis

collection of services that were either collected by ProgrammableWeb, mentioned in articles or known among the consortium partners. In some categories, subcategories were identified, some of them were primary, other services were supportive with contextual data or secondary services.

Table 3-2: Initial Selection of services for every recognized category

Number of identified No Category Selected Services for first Prioritization Services

1 Advertising 35  Amazon Product Advertising  Google  CityGrid  Facebook ads  AirPush (Push Notifications ad.network)  TapJoy advertising  Medialets  Millenia Media  CrispMedia  IAB About Ads (behavioural targeting principles)  Amobee (ad.marketplace)  Google AdSense  Google AdWords  Google Affiliate Network  RadiumOne  iAd  AdRoll (retargeting)  Personalyze (site )  AdTruth (fingerprinting)  LinkedIn ad.network  Auditude (fingerprinting)  Jumptap  Ad.Marver (ad.exchange)  PointRoll (ad.network)  TrustE  Network Advertising Initiative, NAI  AdSafe -> Integral  Youtube.com (ad.network)  MADS (ad.network)  Ad Triple (ad.network)  Niobium (Push Notifications) 2 Analytics 6  Flurry  InMobi  Localytics  App Annie   Mixpanel 3 Cloud 9  Amazon EC2  Amazon S3  Amazon SimpleDB  GitHub   Heroku  Rovi Cloud Services 4 Contacts 3  ActiveSync   Plaxo  iCloud Contacts

30

D2.1 Cloud-based Services Analysis

Number of identified No Category Selected Services for first Prioritization Services

5 File Transfer & 4  Box.net  Dropbox Syncing  SkyDrive  SugarSync 6 Gaming 3  Heyzap  Joyrack  Zynga 7 Health 5  Fitocracy  Foodspotting  Nike+  RunKeeper  8 Internet 12  Alexa Web Information Service  Compete  Google Analytics  Bit.ly  Dapper   Netvibes  Yahoo Query Language  uClassify  hostip.info  MaxMind GeoIP  Trynt 9 Location-based 6  Brightkite  Foursquare Services  Google Places  Yahoo Local Search  Yelp Supporting  geocoder  GeoNames 10 Mapping 9  Bing Maps   Google Maps  MapLarge  MapQuest  OpenLayers  OpenStreetMap  Yahoo! Maps  Nokia Maps 11 Messaging 10 Chat services  411Sync  AOL Instant Messenger  Facebook Chat   MSN Messenger  Yahoo Mail SMS services  Nexmo Wholesale SMS  Twilio SMS  Tropo email services  MailChimp  SendGrid

31

D2.1 Cloud-based Services Analysis

Number of identified No Category Selected Services for first Prioritization Services

12 Music 14  Echo Nest  Grooveshark  Last.fm  Mixcloud  MusicBrainz  Rhapsody  SoundCloud  iTunes Connect  MTV  Pandora  SeeqPod  Spotify  Turntable Supporting  Lyricsfly  LyricWiki 13 News 9  Digg   FanFeedr sports news  Feedburner  Superfeedr Supporting  Ergast  NOAA National Weather Service  Weather channel  WeatherBug   Yahoo stocks 14 Payments 5  Amazon FPS   Paypal  Stripe  Apple - In App Purchase 15 Photos 11   Google  ImageLoop   Photobucket  Smugmug  TwitPic  Yahoo Image Search  iStockPhoto  GettyImages 16 Search 18  Bing  OpenCalais  CrunchBase  DBpedia  Freebase  Google Custom Search  HotelsCombined  indeed  Kayak  New York Times Article Search  Oodle  SImply Hired Jobs  Technorati  Trulia

32

D2.1 Cloud-based Services Analysis

Number of identified No Category Selected Services for first Prioritization Services  Wikipedia  Yahoo BOSS  Zillow  Amazon A9 OpenSearch 17 Shopping 16  Best Buy BBYOpen Products  CNET  eBay  Etsy  Groupon  Shopping.com  Shopzilla  Zazzle  TESCO  Yahoo Shopping  8coupons Supporting  FedEx  GEPIR  UPC Database  UPS  US Postal Service B2B only  Amazon MarketPlace Web Service  .com 18 Social 16  AddThis Menu  Del.icio.us  Disqus  Facebook  Google+  Klout  LinkedIn  MySpace   Reddit  Tumblr  Twitter  Yahoo Answers   Tripadvisor 19 Telephony 4  Skype  Twilio   ooVoo 20 Utilities 13  Basecamp  COLOURlovers  Eventful  Eventora   Google Chart  Google Documents List  Google Spreadsheets   Google Visualization  Upcoming.com  Xero  Zvents

33

D2.1 Cloud-based Services Analysis

Number of identified No Category Selected Services for first Prioritization Services

21 Video 13  AOL Video  BBC  Dailymotion  Livestream  LiveVideo  Ustream  Vimeo  Yahoo Video Search  YouTube Supporting  IMDb  Netflix  Rotten Tomatoes

After the identification of the services, it was spotted that the Cloud category was more relative to Task 2.2 where the connection with different repositories is studied. Thus the Cloud category was excluded from further analysis. In the next paragraph, specific criteria are described, for every category, in order to end up with a handy and complete set of services that will be used to setup the OPENi Generic APIs.

3.2 Services Prioritization Table 3-3 depicts a template table about how each category will be analyzed. So far, we have recognized a set of indicative generic criteria from the consumer perspective. For popular services that did not provide any official numbers and only estimations existed, the trend of every service was studied. For that reason, the tendency of visitors to look for information in a of a service, even if this service has an interface mainly through an application (e.g. Dropbox or Instagram), implies the increased popularity of a service. Thus it was used as a criterion in many cases, but with a small weight. In case weighting has been used to end up with decisions, it is pointed out with a number next to the name of the criterion [Table 3-3]. It needs to be noted that in Annex II, an extensive documentation of the process and results that allowed current work to end up with a set of services that will be further analysed is provided.

Table 3-3: Criteria for Prioritization of Cloud-based Services Category Criteria Advertising  Support for advertisers  Support for publishers  Apps Network  Active Users Analytics  Monitoring APIs Contacts  Available API File Transfer & Syncing • Unique Visitors (0,8) • Trend (0,2) Gaming  Available API Health  Available API Location-based Services • Unique Visitors • API support

34

D2.1 Cloud-based Services Analysis

Category Criteria Mapping • Included services Messaging • Active Users /type (IM, SMS, email) ~Telephony Messaging SMS • Active Users /type (IM, SMS, email) ~Telephony Music • Unique Visitors (0,9) • Trend (0,1) News • Unique Visitors (0,9) • Trend (0,1) +Types Payments  Available API Photos • Registered users (0,5) • Unique Visitors (0,4) • Trend (0,1) Search • Number of source types (0,8) • Free Limit (0,2) Shopping • Unique Visitors (0,9) • Trend (0,1) & All B2B subcategory services Social • Monthly Active Users (0,7) • Facebook Likes (0,1) • Trend (0,2) Telephony • Registered Users • API support Video • Unique Visitors (0,9) • Trend (0,1)

In Table 3-4, the selected categories along with the selected services for further analysis are presented. In total 44 services have been discovered and they will be further analysed in the next section to find common functionalities.

Table 3-4: Selected services per category

Category Selected Services for further API analysis Advertising 1. Amazon Product Advertising 2. Google Admob 3. CityGrid Contacts 4. Google Contacts File Transfer & Syncing 5. Dropbox 6. Skydrive Gaming 7. Heyzap Health 8. FitBit 9. Runkeeper Location-based 10. Foursquare Services 11. Google Places 12. Yelp Mapping 13. Google Maps 14. Bing Maps Messaging 15. Facebook Chat 16. Google Talk Messaging SMS 17. Facebook Chat 18. Google Talk 19. Skype 20. Nexmo Wholesale SMS 21. Twilio SMS Music 22. SoundCloud 23. Last.fm News 24. 25. Tumblr

35

D2.1 Cloud-based Services Analysis

Category Selected Services for further API analysis Payments 26. Amazon FPS 27. Google Checkout 28. Paypal Photos 29. Instagram 30. Picasa 31. Flickr Search 32. Freebase 33. Google Custom Search Shopping 34. eBay 35. Etsy 36. Amazon MarketPlace Web Serv. 37. Salesforce.com Social 38. Facebook 39. Twitter 40. LinkedIn Telephony 41. Skype 42. Twilio Video 43. YouTube 44. Dailymotion

36

D2.1 Cloud-based Services Analysis

3.3 APIs In-depth Analysis In this paragraph, a complete analysis is provided for each identified service; the analysis covers a wide range of issues from technical specifications and limitations to common functionalities that different services offer for each identified category. The goals of this work are (a) to identify functionalities and create a flexible documentation that will be used for development reasons, and (b) to identify common functionalities and objects among different categories, to allow OPENi to unify and merge different functionalities in its Generic APIs.

For every category, the services are documented in three different levels: (a) Documentation: A complete description of an API featuring a set of core metadata (i.e. where is the documentation available online, what is the name and the version of the API, the communication protocols and the data formats supported, a description about the API, any call limitations and the programming libraries that have been developed by the service itself) is provided. In every documentation, a unique ID to refer from now on to an API for the OPENi purposes has been allocated. (b) Functionalities: The methods which each API offers with different names have been grouped under the same functionalities, to easily compare the different APIs. Additionally, the dictionary of HTTP methods is used to describe which actions are available for each functionality. So, POST implies uploading resources, PUT updating (even if it is not used by most frameworks as such), GET to retrieve resources and DELETE to remove online resources. In many cases the APIs are RESTful, and the methods match the functionalities. In other cases, the different use of methods is documented inside parentheses. (c) Assessment: At the end of each API analysis, lessons learnt and insights are briefly summarized in an overview assessment. The level up to which third party developers can reproduce each service through its API is actually documented. Any limitation on calls that may make the usage of the API not functional is also taken into consideration.

37

D2.1 Cloud-based Services Analysis

3.3.1 Advertising - API in-depth Analysis In this category, four different services are analyzed as the importance of this field for the project needed a greater analysis. The services analysed are (a) Amazon Product Advertising API which allows the presentation of products relative to the content of an application, (b) Google Admob which is a powerful linking different platforms, (c) CityGrid a innovative location-based, micro-advertising network and (d) Facebook with its proprietary but powerful network to get visibility inside Facebook.

3.3.1.1 Documentation

Category Advertising Advertising Advertising Advertising

Service Name Amazon Google Admob CityGrid Facebook Ads

API Name Amazon Product Advertising API AdMob API Ads byCityGrid Ads API

Version 2 2 2.3 -

API OPENi Code OI-AVRT-01 OI-AVRT-02 OI-AVRT-03 OI-AVRT-04

Description Product Advertising API Google AdMob Ads SDK allows Ad APIs to tap into CityGrid’s MUST BE WHITELISTED operations open the doors to developers to easily incorporate massive local ad network. Serve The Ads API allows creating, Amazon's databases so that you mobile-friendly text and image targeted local ads that drive managing and measuring all of can take advantage of Amazon's banners as well as rich, full- users to advertiser place pages Facebook ads via an API. sophisticated e-commerce data screen web apps known as within your own experience or and functionality. interstitials. custom landing pages designed and managed by us.

Documentation http://docs.amazonwebservices. http://mm.admob.com/web/pdf/ http://docs.citygridmedia.com/di https://developers.facebook.com com/AWSECommerceService/lat AdMob_API_Documentation. splay/citygridv2/CityGrid+APIs /docs/reference/ads-/ est/DG/ProgrammingGuide.

Protocol REST/SOAP REST REST REST

Data Format Atom JSON JSON, XML, CSV JSON

38

D2.1 Cloud-based Services Analysis

Category Advertising Advertising Advertising Advertising

Service Name Amazon Google Admob CityGrid Facebook Ads

Available Libraries Java iOS iOS - Android .NET 7 Android PHP Java Python

Objective-C

Call Limitation Hourly request limit per account - - Must be patner = 2,000 + 500 * [Average associate revenue driven per day over the past 30 days period]/24

Authentication AWS Signature Version 2 Google AdMob Ads SDK CityGrid Authentication API OAuth 2.0 Method (HTTPS / username-password )

3.3.1.2 Functionalities

Service Function Advertising Advertising Advertising Advertising

API Name Description Amazon Product Advertising Google Admob CityGrid Facebook Ads API API

Advertisement The ad object. GET(ItemLookup) GET/POST/ GET(web)/GET(mobil GET GET(Interstitials)/GET e) (Mediation)

Search Advertisement Searching for ads GET(ItemSearch)/ GET GET GET(:custom - (similar) Ads/where)/ GET(:custom

39

D2.1 Cloud-based Services Analysis

Ads/latlong)

Account An account for managing ads - - GET (budget) GET

Account Group A group for managing access to - - - GET/POST/PUT/D ad accounts ELETE/GET

(Users)/PUT (Users)/ DELETE (Users)/ GET (Accounts)/PUT (Accounts)/ DELETE (Accounts)

Campaign A campaign for managing ads - GET - GET/POST/PUT/D ELETE

Campaign Search Search for campaigns - GET - -

Creative An Ad Creative object is an - - - GET/POST/PUT/D instance of a specific Creative ELETE which is being used to define the creative of one or more Ad groups.

Group Ads A group of ads - GET - GET/POST/PUT/D ELETE

User An Ad User is a user who - - - POST/DELETE/GE chooses to create Ads T

Statistics Ad Statistics are available via the - GET(group)/GET(ads) GET GET Ads API /GET(campaigns)

Cart Once customers find items from POST/PUT/GET/DELETE/POS - - - ads they want to purchase, they T (clear)

40

D2.1 Cloud-based Services Analysis

put them in a shopping cart.

Site A site promoted - GET - -

Search Site Sites owned by the user - GET - -

Site Statistics Statistics for the API - GET - -

Place Ads Places with content, that if user - - POST/GET - interacts, developer gets paid.

3.3.1.3 Assessment

Services API Exposure Comments

Amazon Low Only search for relative products from the service

Google AdMob Medium Open to multiple platforms, needs SDK integration, and returns multiple types of advertisements

CityGrid Medium Only get ready, but location enhanced and screen adaptable advertisements.

Facebook Ad High Get and manage your Facebook campaigns, limited inside the platform.

41

D2.1 Cloud-based Services Analysis

3.3.2 Analytics – API in-depth Analysis Evert Analytics APIs need libraries to be installed inside the applications to track data. Nevertheless this group of APIs studies the services that are exposed through the Internet, and not dedicated platforms. Thus, the analyzed Analytics API are used to access and monitor analytics data, campaigns and payments.

3.3.2.1 Documentation

Category Analytics Analytics Analytics

Service Name Flurry Google Analytics Mixpanel

API Name Flurry API Google Analytics Management API Mixpanel API- Data export libraries

Version 1 3 2

API OPENi Code OI-ANLTC-01 OI-ANLTC-02 OI-ANLTC-03

Description Flurry has a number of APIs to allow you to The Google Analytics Platform lets you The API to manage the data collected export your data. Based on standard formats measure user interactions with your business from Mixpanel. Mixpanel can be setup such as XML and JSON, these APIs can be across various devices and environments. on iOS, Android but also Server-side integrated into web dashboards, data The platform provides all the computing applications. warehouses and any other system you might resources to collect, store, process, and use for managing your business. report on these user-interactions. The management API allows to control an account.

Documentation http://support.flurry.com/index.php?title=AP https://developers.google.com/analytics/dev https://mixpanel.com/docs/api- I guides/config/mgmt/v3/ documentation/a-tutorial-on-exporting- data

Protocol REST REST REST

Data Format XML, JSON JSON JSON

Available Libraries - .NET Python Dart PHP

42

D2.1 Cloud-based Services Analysis

Go Ruby GWT JavaScript Java JavaScript Objective-C PHP Python Ruby

Call Limitation The rate limit for the API is 1 request per - - second. Authentication API Key Authentication API Key Authentication API Key Authentication Method

3.3.2.2 Functionalities

Service Function Analytics Analytics Analytics

API Name Description Flurry Google Analytics Mixpanel

Application Metrics The metrics for an application GET POST(collect)/GET -

Application The application owned by a GET(info)/GET(all) GET (web property) - company List of Application A group of applications owned - GET - by a company/account Application Event An event on an application, GET - GET/GET(top)/GET(names)/GET(p specified by the developer roperties)/GET(properties/values)/ GET(numeric)/GET(sum)

Account The top object that controls an - GET - analytics object Account List An application can request a list - GET - of accounts available to the use

43

D2.1 Cloud-based Services Analysis

Profile Controlled by Accounts, different - GET - users can have access to an account to manage the analytics Profile List A list of profiles for an account - GET -

Goal A goal set by profiles for an - GET GET(funnels) application Custom Data Data uploaded from an external - GET - data source. List of Custom Data List of custom data uploaded by - GET - user Segment Analytics for a specific period of - GET GET/POST time List of Segment List of segment - GET -

Report Queries on analytics to generate - GET GET(retention) reports User The user of the application - - GET/GET(engage)

User Analytics Analytics for a specific user - - GET

3.3.2.3 Assessment

Services API Exposure Comments

Flurry Low Only access on the application is allowed

Google Analytics Medium Access in various analytics, and reporting is allowed

Mixpanel High Access on events, event on users’ engagement is allowed. In extend, the API can setup segments.

44

D2.1 Cloud-based Services Analysis

3.3.3 Contacts - API in-depth Analysis Google Contacts is the only open, qualified service to be analysed. Nevertheless it is expected to be supported by various profiling API methods, like Facebook Users. Thus Google Contacts is documented just as a template API.

3.3.3.1 Documentation

Category Contacts

Service Name Google Contacts

API Name Google Contacts API

Version 3

API OPENi Code OI-CONTACTS-01

Description The Google Contacts API allows client applications to view and update a user's contacts. Contacts are stored in the user's ; most Google services have access to the contact list.

Documentation https://developers.google.com/google-apps/contacts/v3/

Protocol REST

Data Format JSON, Atom

Available Libraries .NET Dart Go GWT Java JavaScript Objective-C PHP Python

45

D2.1 Cloud-based Services Analysis

Category Contacts

Service Name Google Contacts Ruby

Call Limitation (no declared limit)

Authentication OAuth 2.0 Method

3.3.3.2 Functionalities

Service Function Google Contacts

API Name Description Google Contacts

Contact Entry The Google Contacts API allows manipulation of Contact Entry implementing the GData POST/GET/PUT/DELETE/POST (batch) Contact kind element.

Full Contact List Retrieve all of a user's contacts, send an authorized GET request to the following UR GET

Contact Query The Contacts Data API lets you request a set of contacts that match specified criteria, GET such as requesting contacts created or updated in a given date range, or published by a particular author.

Contact Photo A contact's photo GET/POST/PUT/DELETE

Contact Groups Contacts can be placed into user-defined groups. You can create, retrieve, update, and GET/POST/PUT/DELETE/POST (batch) delete these groups using the Contacts Data API, and you can add contacts to a group or remove contacts from a group.

46

D2.1 Cloud-based Services Analysis

3.3.3.3 Assessment Google Contacts is the only service analyzed. It is expected to combine it with other Services, like Facebook Graph API for “friends” of a user.

Services API Exposure Comments

Google Contacts High The Service can be replicated fully through its API

47

D2.1 Cloud-based Services Analysis

3.3.4 File Transfer & Syncing - API in-depth Analysis The most popular services, covering different type of file syncing, are covered here. Dropbox syncs mainly through folders, while Skydrive is mostly used through Microsoft’s Offfice and allows co-editing of office documents.

3.3.4.1 Documentation

Category File Transfer & Syncing File Transfer & Syncing

Service Name Dropbox Skydrive

API Name Dropbox API SkyDrive API (Live Connect)

Version 1 1

API OPENi Code OI-FILE-01 OI-FILE-02

Description The API provides methods to read and write from Dropbox securely, so Your apps can use the Live Connect APIs to work with a Microsoft SkyDrive your users can bring all their important files with them to your app. Any user's folders, files, albums, photos, videos, audio, tags, and comments in changes they make will be saved back to all their computers, tablets these ways. and mobile phones. You'll also have access to unique and powerful features such as simple sharing, search, and restoring files to past revisions.

Documentation https://www.dropbox.com/developers/reference/api http://msdn.microsoft.com/en-us/library/live/hh826521.aspx

Protocol REST REST

Data Format JSON JSON

Available Libraries Python Windows 8 Android Windows Phone iOS iOS Ruby Android Java OS X

48

D2.1 Cloud-based Services Analysis

Call Limitation Rate limits exist but aren't specified, site says 'The limits are high Unspecified enough that any reasonable use of the APIs shouldn't come close to hitting them.'

Authentication API Key Authentication OAuth 2.0, XMPP Method

3.3.4.2 Functionalities

Service Function Dropbox Skydrive

API Name Description Dropbox API SkyDrive API (Live Connect)

Account Retrieves information about the user's GET GET (objects), GET (quota), GET account. (recent_docs)

Files Uploads files, copy, delete and move files PUT(:/chunked_upload)+POST(:/commit_chunked_ GET (properties)/PUT/ GET (content)/PUT upload), POST (:/fileops/copy), / POST or POST (upload)/DELETE/MOVE (:/fileops/delete), POST (:fileops/move). GET(metadata)

Folder Creates and manages a folder POST (:/fileops/create_folder), POST POST/DELETE/PUT/GET (properties)/MOVE (:/fileops/copy), / POST (:/fileops/delete), POST (:fileops/move)/GET (metadata)

Sync A way to find changes, versions and return POST(:/delta), GET(:/revisions)/ POST (:/restore) - to previous ones.

Search Returns metadata for all files and folders GET/POST - whose filename contains the given search string as a substring.

Links Share links, share links with media players POST (:/shares)/POST (:/media) /GET(:thumbnails)/ GET embedded, get the file thumbnails, copy a GET (:copy_ref)

49

D2.1 Cloud-based Services Analysis

file to paste it in another folder.

Comments Manage comments on a document - POST/GET/DELETE

Media Special type of files - POST/GET/PUT/DELETE

Album Special type of folders for media files - POST/GET/PUT/DELETE

Tags Special type of comment - POST/GET/DELETE

3.3.4.3 Assessment

Services API Exposure Comments

Dropbox High Expansive API, does allow also to check versions and sync status of a document, but it does not specify the rate limits is concerning

Skydrive Medium It gives full access on file management, but there is no method on syncing functionalities. Again no rate limit specified.

50

D2.1 Cloud-based Services Analysis

3.3.5 Gaming - API in-depth Analysis In the Gaming category, Heyzap is quite a powerful API providing gamers’ contextual data. Zynga also was a selection, but its API became unavailable.

3.3.5.1 Documentation

Category Gaming

Service Name Heyzap

API Name Heyzap SDK

Version 1

API OPENi Code OI-GAME-01

Description The API gives you access to most of the data Heyzap makes available on our Android and iOS applications, including games, activity and users on the Heyzap network.

Documentation Requires a heyzap account (http://developers.heyzap.com/api/ )

Protocol REST

Data Format JSON

Available Libraries iOS SDK Android SDK Android NDK 3D Marmalade

Call Limitation 5,000 requests per IP per hour. Remaining request provided through custom header.

Authentication Http Basic/ SSL Support Method

51

D2.1 Cloud-based Services Analysis

3.3.5.2 Functionalities

Service Function Heyzap

API Name Description Heyzap

Game Information about games GET (trending games)/GET (details)/ GET (activity)/ GET (players)/ GET (activity)

Users Information about users GET (User Details)/ GET (User Activity)/ GET (User's Games)/GET (User's Network)

Badge GET (User's Badges)

Search Games Search for games and users GET

Search Users GET

3.3.5.3 Assessment

Services API Exposure Comments

Heyzap Medium Exposes a great number of GET functionalities, but no one can change properties on the service through its API.

52

D2.1 Cloud-based Services Analysis

3.3.6 Health - API in-depth Analysis It is a trending attitude of users to track their daily activities. Runkeeper is a mobile based Service, that uses phone’s sensors to track excercises, while Fibit requires its own device. Both of them expose powerful APIs.

3.3.6.1 Documentation

Category Health Health

Service Name Runkeeper Fitbit

API Name healthgraph Fitbit API

Version 1 1

API OPENi Code OI-HTH-01 OI-HTH-02

Description The Health Graph captures a user's fitness activities and health The Fitbit API is a set of protocols that can be used to read and write measurements over time. Each activity and measurement is a time- data for a user's tracker collections, profile data, social resources, stamped node, and each node is linked to those other nodes closest fetch status of devices and statistical data. in time. Devices can add new nodes to the graph by submitting health measurements; applications can follow the links in the graph from node to node to extract a user's progress towards his or her fitness goals.

Documentation http://developer.runkeeper.com/healthgraph/ https://wiki.fitbit.com/display/API/Fitbit+API

Protocol REST REST

Data Format JSON JSON, XML

53

D2.1 Cloud-based Services Analysis

Category Health Health

Service Name Runkeeper Fitbit

Available Libraries "iOS Java Java PHP .NET .NET Node.js PHP Python Ruby

Call Limitation 5,000 requests in a 24-hour period per user, per application The current rate limiting quota is set at 150 calls per hour, based on either CLIENT+VIEWER (unique quota for each of the application's authorized users) or CLIENT (one for each application) as the determinant for the count of calls.

Authentication OAuth 2.0 OAuth Method

3.3.6.2 Functionalities

Service Function Runkeeper Fitbit

API Name Description healthgraph Fitbit API

Users A user resource identifies the available GET/ GET(settings)/ PUT (settings)/ GET GET/ GET (profile) /PUT (profile) resources for a specific user and the URIs for (profile) /PUT (profile) accessing them.

Fitness Activities (feed) Fitness activities appear in a user’s fitness GET/ PUT (past activity)/ POST (start GET/POST/DELETE

54

D2.1 Cloud-based Services Analysis

feed on the service. activity)/POST (update or finish activity) / DELETE

Favorite Activities The favorite activities of the user. - GET/POST/DELETE

Strength Training Strength training activities appear in a user's GET/ PUT (past activity)/ POST (start - Activities fitness feed alongside cardio activities. activity)/POST (update or finish activity) / DELETE

Background Activities Background activities describe physical GET/ PUT (past activity)/ POST (start - activity that occurs normally throughout the activity)/POST (update or finish activity) / day, such has calories burned or total steps DELETE taken.

Sleep Sleep measurements capture such statistics GET/ POST/PUT/DELETE GET/POST/DELETE as the length of time spent in various stages of sleep and the number of times awoken during the night for a user.

Nutrition Nutrition measurements capture statistics GET/ POST/PUT/DELETE GET (water, food, goals) about a user's diet.

Search Food Search for food - GET

Weight Weight measurements capture statistics GET/ POST/PUT/DELETE GET/POST/DELETE about a user's weight and body mass

General Body General measurements capture statistics GET/ POST/PUT/DELETE GET Measurements about a user that do not fit into any other category

Diabetes Diabetes measurements capture statistics GET/ POST/PUT/DELETE GET/POST

55

D2.1 Cloud-based Services Analysis

Measurements about a user's blood glucose and hormone (Glucose) levels.

Heart Rate The heart rate - GET/POST/DELETE

Blood Pressure The blood pressure - GET/POST/DELETE

Personal Records Personal records indicate a user’s personal GET - best activity.

Badges Rewards for meeting goals or missions. - GET

Friends A user's friend network GET/POST(invite) GET/POST(invite/accept)

Leaderboard Friends’ leaderboard - GET/POST (config)

Comment Threads Remarks left by other users on an activity. GET/POST -

Devices Devices the user uses - GET

3.3.6.3 Assessment

Services API Exposure Comments

RunKeeper High All the reasonable services are exported through its API

FitBit High All the reasonable services are exported through its API

56

D2.1 Cloud-based Services Analysis

3.3.7 Location-based Services - API in-depth Analysis Location-based services show great characteristics of variation. Foursquare is a gaming-like paltform, Google Places is a strict and closed to social activities service, while Yelp is a place-reviewing service.

3.3.7.1 Documentation

Category Location-based Location-based Location-based

Service Name Foursquare Google Places Yelp

API Name Core API Google Places API Yelp v2.0 API

Version 2 1 2

API OPENi Code OI-LCTN-01 OI-LCTN-02 OI-LCTN-03

Description Integrate into the core foursquare experience, The Google Places API allows the developer to The Yelp v2.0 API enables access to more making it easier for foursquare users to use query for detailed place information on a relevant search results that more closely match and discover an app. variety of categories, such as: establishments, the results on Yelp. It uses a standard and prominent points of interest, geographic secure authorization protocol (OAuth 1.0a, locations, and more. xAuth).

Documentation https://developer.foursquare.com/overview/ https://developers.google.com/places/ http://www.yelp.com/developers/documentatio n/v2/overview

Protocol REST REST REST

Data Format JSON JSON JSON

Available Libraries - JavaScript ( and all Google libraries supporting - the JavaScript library )

Call Limitation 500 requests/hour ( 12.000 per day) 1000 requests/day 100 requests/day

Authentication OAuth 1.0 API Key Authentication OAuth 1.0 Method

57

D2.1 Cloud-based Services Analysis

3.3.7.2 Functionalities

Service Function Foursquare Google Places Yelp

API Name Description Core API Google Places API Yelp v2.0 API

Users Profile information for a user GET (:/userid/ASPECTS)/ GET - - (:leaderboard)/POST (:update - photo)/ POST (:setpings - notifications) / GET (:venues/managed)

Search Users Search for Users GET or POST - -

Friendships The connections among users GET (:/requests) / GET(:/pending)/ - - POST (:unfriend)/ POST (:approve)/ POST (:deny)/ POST (:request)

[authenticated user-centric]

Badges Awards given to Users for meeting their GET (:/userid/badges) - - goals

Places (Venues) An location enhanced object (POI) POST (:add)/ GET GET/ GET(details)/ POST GET / GET (category) / GET (:venues/categories)/ GET (supplement) / POST (delete (neighborhood) (:trending) /GET (:timeseries)/ – only if the application POST (:edit)/ POST (:flag – created it) incorrect) / POST (:marktodo) / POST (:proposeanedit) / GET(:venue_id/ASPECTS)

Search Places Search for places GET (:venues/explore) / GET GET (nearby, radar, text GET (search) / GET

58

D2.1 Cloud-based Services Analysis

(:venues/ suggestcompletion) search) (business)

Groups of Places A group of venues GET/GET(:timeseries)/POST/POST - - (:delete)/ POST (:edit) /POST (:update)/POST(:removevenue)

Like /Favourite The action of approving, liking or marking as POST (:venue_id/like) / POST - - aware for an action (:checkin_id/like) /POST (:tip_id/like)

Check-ins The validation of visiting a place POST/ GET (:recent –from friends) POST (bump) -

Tips A public comment to a place POST (:done)/ POST (:add) / POST - - (:flag) / POST (:markdone) / POST (:marktodo)/ POST (:unmark)

Search Tips Search for Tips GET - -

Comments Small text that provides more information or POST (:checkin_id/addcomment)/ - - opinions POST (:checkin_id/deletecomment)

Events A timeframe for a gathering to a place GET (:categories)/ POST POST, POST(delete)/ GET/ - POST (bump)

Search Events Search for events GET - -

Offers (Specials) The award for a specific action or goals that POST / GET (:list) - - the service sets

Search Offers (specials) Searching for offers GET - -

Campaigns Running a campaign for a user POST/POST(:delete)/POST(:start)/P - - OST(:end)/GET(:timeseries)

Photos A photo relative to a place; not the profile POST/ GET GET - picture, but

59

D2.1 Cloud-based Services Analysis

3.3.7.3 Assessment

Services API Exposure Comments

Foursquare High Foursquare exposes most of its functionalities through its API.

Google Places Medium Even if Google Places do not allow a check-in, but more like a proof for commenting (less social), it offers a decent API. The rest of the functionalities (e.g. users) can be derived from other APIs. Nevertheless it has quite limited functionalities

Yelp Low Yelp allows only to search an area for places, no POST activity or more information.

60

D2.1 Cloud-based Services Analysis

3.3.8 Mapping - API in-depth Analysis Mapping services can be used by native applications through the SDK of the device. Nevertheless, for web based applications the functionalities of two of the most popular and functional services are analysed.

3.3.8.1 Documentation

Category Mapping Mapping

Service Name Google Maps Bing Maps

API Name Google Maps Api V3 Bing Map App SDK

Version 3 1

API OPENi Code OI-MAP-01 OI-MAP-02

Description Google Maps has a wide array of APIs that let the debeloper embed the Bing Maps gives the developers a rich set of tools to help them robust functionality and everyday usefulness of Google Maps into their create amazing map experiences. own website and applications, and overlay their own data on top of them.

Documentation https://developers.google.com/maps/documentation/ http://www.microsoft.com/maps/developers/web.aspx http://connect.microsoft.com/bingmapapps

Protocol REST REST

Data Format JSON JSON

Available Libraries JavaScript ( and all Google libraries supporting the JavaScript library ) Ajax, .NET

Call Limitation 25.000 requests/day 10.000 requests/day ( 3 months trial )

Authentication API Key Authentication SSL, API Key Authentication Method

61

D2.1 Cloud-based Services Analysis

3.3.8.2 Functionalities

Service Function Google Maps Bing Maps

API Name Description Google Maps Api V3 Bing Map App SDK

Map The map service GET, GET(map type), GET (Rotate), GET GET, GET (Rotate), GET (zoom), GET (Pan), GET(Zoom), GET (Scale), GET (Tilt), (scale) GET (Market), GET (Streetview), GET (elevation)

Directions Give directions on a map, from one point to GET - another

Geocoder A service for converting between an address GET - and a LatLng.

Polygone A polygon (like a polyline) defines a series of GET - connected coordinates in an ordered sequence; additionally, polygons form a closed loop and define a filled region.

Travel The valid travel modes that can be specified GET, GET (Disctance), GET (duration), GET - in a DirectionsRequest as well as the travel (time), GET (Transit) modes returned in a DirectionsStep.

Traffic A traffic layer. GET -

3.3.8.3 Assessment

Services API Exposure Comments

Google Maps High Google Maps allows to use most of its service through its API, with call limitations

Bing Maps Medium Bing Maps offers access to the API, with fewer add-on services (e.g. services) and smaller call limit.

62

D2.1 Cloud-based Services Analysis

3.3.9 Messaging - API in-depth Analysis This category shows great differences, from type of the service (i.e. SMS vs. Chatting), to protocols (i.e. XMPP vs. REST) and proprietary APIs (i.e. Skype).

3.3.9.1 Documentation

Category Messaging Messaging Messaging Messaging Messaging

Service Name Twilio Nexmo Facebook Chat Google Talk Skype

API Name Twilio REST API Nexmo Wholesale SMS API Facebook chat API Google talk API Skype Desktop Api

Version 1/04/2010 - 1.0 - Protocol 7

API OPENi Code OI-MSG-01 OI-MSG-02 OI-MSG-03 OI-MSG-04 OI-MSG-05

Description The Twilio REST API allows Nexmo is a simple API to You can integrate Facebook Google Talk is an The Skype API provides a you to query -data push SMS at wholesale rates Chat into your Web-based, instant messaging mechanism for 3rd party about your account, phone with high deliverability. desktop, or mobile instant service built on open scripts, applications and numbers, calls, text Reach over 4 billion mobiles messaging products. Your protocols. Google has devices to control Skype UI messages, and recordings. in more than 200 countries. instant messaging client opened its IM service functions and implement You can also do some connects to Facebook Chat via so that you can hook additional or improved fancy things like initiate the Jabber/XMPP service. This your own client features to complement the outbound calls and send document describes the features applications into the Skype. text messages. and limitations of Facebook Google Talk service, or Chat's XMPP protocol for the you can connect developer who intends to (federate) your service implement a Facebook Chat with ours client.

Documentation http://www.twilio.com/doc http://nexmo.com/document http://developers.facebook.com/ https://developers.goog https://developer.skype.com/d s/api/rest ation/api/index.html docs/chat/ le.com/talk/ esktop-api-reference-index

Protocol REST REST XMPP XMPP/Jingle Skype Proprietary

63

D2.1 Cloud-based Services Analysis

Category Messaging Messaging Messaging Messaging Messaging

Service Name Twilio Nexmo Facebook Chat Google Talk Skype

Data Format XML/CSV XML XML/JSON XML/JSON Atom JSON JSON JS(JSON-P)

Available Java, Python, C#, Ruby, Python,Perl Java PHP, JavaScript, Android, iOS Java, Python Java (community) Libraries PHP Ruby, PHP, node.js, C#,

Call Limitation - Unlimited - - (no declared limit)

Authentication REST Auth Token SSL, API Key Authentication XMPP XMPP Skype Login Method Authorization (username/password )

3.3.9.2 Functionalities

Service Function Twilio Nexmo Facebook Chat Google Talk Skype

API Name Description Twilio REST API Nexmo Wholesale Facebook chat API Google talk API Skype Proprietary SMS API

Account Information about the GET/ POST or PUT GET (balance)/ GET - - - user’s account settings (update)/ GET (list)/ (pricing)/ POST POST (subaccount) (update)/ GET (top- up)

Phone numbers The numbers interrelated GET GET / GET - GET (PROFILE) to an account. (AvailablePhoneNumbers (available) / POST )/ GET/ POST or PUT (cancel) / POST

64

D2.1 Cloud-based Services Analysis

(update)/DELETE (update)

SMS An SMS Message POST/GET (id) /GET POST/GET - - POST (ALTER SMS instance resource (list) SEND)/DELETE/SET (as represents an inbound or seen)/ PUT(SET SMS outbound SMS message. BODY) / PUT(SET SMS with an account. TARGET_NUMBERS)

Search SMS Search for SMSs - - - - GET (SEARCH)/ GET (MISSEDSMSS)

Notifications Returns a list of SMS GET/DELETE - - - - messages associated with your account. The list includes paging information and is sorted by DateSent, with most recent messages first.t

Number/Contact The "object" to contact GET/POST/PUST/DELET GET/POST GET/POST GET/POST - E

Chat Message Sending instant chat - - GET/POST GET/POST POST(CREATE)/ messages inside the POST(CHATMESSAGE)/ platform PUT(SETTOPIC)/ PUT(LEAVE)/ GET(CHATMESSAGES)/ GET(RECENTCHATMESSAG ES)/ PUT(SEEN)/ PUT(BODY)/ PUT(JOIN)/ PUT(ACCEPTADD)

65

D2.1 Cloud-based Services Analysis

Voicechat Voice over GET/POST communication

Videochat Video interaction - - - GET/POST GET (device info) /PUT between users of the (alter call to video) platform

Groupchat A user created group of - - - GET/POST PUT (ADDMEMBERS)/ people chatting GET(MEMBEROBJECTS)/ GET(CHATMEMBER)

File Send Exchanging files between - - - - GET (FILETRANSFER) users

3.3.9.3 Assessment

Services API Exposure Comments

Facebook Chat Medium Facebook Chat should be compatible with every XMPP client, but is not a full XMPP server. It should be thought of as a proxy into the world of Facebook Chat on www.facebook.com. As a result, it has several behaviors that differ slightly from what you would expect from a traditional XMPP service

Google Talk Medium Google Talk supports many of the required functions, it is also XMPP based. It is easily connected through existing XMPP plugins.

Nexmo Wholesale SMS Medium Nexmo is a quite handy SMS service, enough exposed, but Twilio that is a competitive service export more functionalities (even notifications).

Twilio SMS High Most of the functionalities for sending SMS, even managing accounts and setup phone numbers, are supported. But the service is not free

Skype Low Skype has a closed, desktop based, proprietary API, that even if it supports quite many functionalities is not very handy.

66

D2.1 Cloud-based Services Analysis

3.3.10 Music - API in-depth Analysis Music APIs are quite limited in their access from different geographic areas. Thus, popular services like Pandora are mainly US based. Last.fm also shows limited access in some cases in various countries, because of copyrights. SoundCloud is an open platform, but mainly supported by the community.

3.3.10.1 Documentation

Category Music Music

Service Name SoundCloud Last.fm

API Name SoundCloud API Last.fm API

Version - 2

API OPENi Code OI- MUSC OI- MUSC -01 -02

Description SoundCloud API allow for playing and uploading sounds and takes Allows anyone to build their own programs using Last.fm data, whether advantage of SoundCloud's many social features. they're on the web, the desktop or mobile devices.

Documentation http://developers.soundcloud.com/docs/api/ http://www.last.fm/api/intro

Protocol REST REST

Data Format XML XML JSON JSON JS(JSON-P)

67

D2.1 Cloud-based Services Analysis

Category Music Music

Service Name SoundCloud Last.fm

Available Libraries Python C++ Ruby Java PHP .NET Java Python iOS Ruby JavaScript PHP Actionscript C# Perl Javascript Objective-C

Call Limitation Follow/unfollow actions limited to 250 per day for premium users 5 requests per originating IP address per second, averaged over a 5 minute and 100 per day for free users period

Authentication OAuth 2.0 API Key Authentication Method

3.3.10.2 Functionalities

Service Function SoundCloud Last.fm

API Name Description SoundCloud API Last.fm API

Media Interacting with a piece of GET/POST/DELETE GET/POST/DELETE sound/track/audio

68

D2.1 Cloud-based Services Analysis

Stream Sound Getting currently played music GET GET

Share Sound Sharing with friends or with other social POST POST media platforms

Artist Information regarding a specific artist and - GET/PUT/POST his tracks

User User profile GET GET/PUT/POST

Group Group of users - GET

Geo All events regarding a specific location - GET

Event Information about an event - GET/PUT/POST

Chart Statistical information about the most - GET popular tracks and artists

Track Track information and handling GET/PUT/POST GET/PUT/POST

3.3.10.3 Assessment

Services API Exposure Comments

SoundCloud High SoundCloud makes most of its services available relative to the music, but it does not support the social activities. Neverthelss access to media content has not location restrictions.

Last.fm Medium Last.fm gives a useful API, but it has limited for certain regions (e.g. Greece).

69

D2.1 Cloud-based Services Analysis

3.3.11 News - API in-depth Analysis News sites expose their articles through RSS resources that can be read using RSS readers. In this study, blog services where users can even create content are studied.

3.3.11.1 Documentation

Category News News

Service Name Blogger Tumblr

API Name Blogger API Tumblr API

Version 3 2

API OPENi Code OI-NWS-01 OI-NWS-02

Description The Blogger API v3 allows client applications to view and update Blogger An API to manage Tumblr resources. content.

Documentation https://developers.google.com/blogger/ http://www.tumblr.com/docs/en/api/v2

Protocol REST REST

Data Format JSON JSON

Available Libraries Java, .NET, PHP, Python, JavaScript, Objective-C -

Call Limitation 10,000 requests/day (not specified)

Authentication OAuth 2.0 OAuth 1.0 Method

3.3.11.2 Functionalities

Service Function Analytics Tumblr

API Name Description Blogger Tumblr API

70

D2.1 Cloud-based Services Analysis

Blog The blog, owned by a user GET/GET(listByUser) POST(collect)/GET

Post (article) The formatted text document that GET/GET(list)/POST/PUT/PATCH/DELETE GET/POST/POST(edit)/POST(reblog)/POST(delete) represents an entry Search Article Search for a post GET -

Photo A post can be made directly as a photo - GET/POST/POST(edit)/POST(reblog)/POST(delete)

Video A post can be made directly as a video - GET/POST/POST(edit)/POST(reblog)/POST(delete) file Chat Message A post can be made directly as a chat - GET/POST/POST(edit)/POST(reblog)/POST(delete) message Audio A post can be made directly as a audio - GET/POST/POST(edit)/POST(reblog)/POST(delete) file Link A post can be made directly as a link - GET/POST/POST(edit)/POST(reblog)/POST(delete) resource Comment A text leaving opinion on an object GET/GET(list) POST(reblog)

User The profile of the user GET/ GET(page)/GET(page/list) GET (avatar)/ GET(info)

Follower Users that are subscribed to a blog - GET

Following GET (user/following)/POST/POST(unfollow)

Like Favorites on posts - GET/GET(user/likes)/POST/POST(unlike)

Tag on posts - GET()

Dashboard/Activity The view of a user - GET(user/dashboard)

3.3.11.3 Assessment

Services API Exposure Comments

Blogger Medium Blogger hides most of its functionalities, it only allows to post a new article and get most of its resources.

Tumblr High Every functionality is covered, no limitation is described, thus Tumblr can be used as a source of references and a posting target

71

D2.1 Cloud-based Services Analysis

3.3.12 Payments - API in-depth Analysis For this category, the selected services are interrelated with project specific context: (a) Amazon FPS is the service to pay inside Amazon, one of the greatest online shops, (b) Google Checkout is a mobile payment service over Android, and (c) Paypal is a quite interoperable service supports by most of the transactions online.

3.3.12.1 Documentation

Category Payments Payments Payments

Service Name Amazon FPS Google Checkout Paypal

API Name Amazon FPS API Google Checkout XML API version 2.5 Paypal API

Version 28/08/2010 2/05/2012 -

API OPENi Code OI- PAY-01 OI- PAY -02 OI- PAY-03

Description AmazonFlexible Payments Service facilitates the Google Checkout is a checkout process that you PayPal is a global e-commerce business digital transfer of money between any two integrate with your website, enabling your allowing payments and money transfers to be entities, humans or computers. customers to buy from you quickly and made through the Internet. Online money securely, using a single username and transfers serve as electronic alternatives to password. Once they do, you can use Google paying with traditional paper methods, such Checkout to charge their credit cards, process as checks and money orders. their orders, and receive payment in your bank account.

Documentation http://docs.amazonwebservices.com/AmazonFP https://developers.google.com/checkout/develo https://www.x.com/developers/paypal/docume S/latest/FPSAPIReference/Welcome.html per/Google_Checkout_XML_API_Processing?hl ntation-tools/api/PayPalSOAPAPIArchitecture =es

Protocol SOAP, REST REST SOAP, NVP

Data Format XML XML

72

D2.1 Cloud-based Services Analysis

Category Payments Payments Payments

Service Name Amazon FPS Google Checkout Paypal

Available Libraries PHP, Ruby, C#, Java, iOS, Android JavaScript JavaScript

Call Limitation - - -

Authentication SSL, HTTP Basic Authentication, AWS libraries SSL, HTTP Basic Authentication SSL, HTTP Basic Authentication, PayPal NVP Method with signature version 2 ( https ) authentication interface

3.3.12.2 Functionalities

Service Function Amazon FPS Google Checkout Paypal

API Name Description Amazon FPS API Google Checkout XML API Paypal API version 2.5

Account The credit of the user GET (GetAccountActivity)/ GET - GET (GetBalance) (GetAccountBalance)

Pay Moves funds from a sender to a recipient POST (Pay)/POST (Cancel) / GET POST POST (GetPrepaidBalance)/ GET (DoExpressCheckoutPayment (GetDebtBalance) / GET (GetTransactionDetails) / GET (TransactionSearch)/ POST(ManagePendingTransa ctionStatus)

Refund Refunds all or part of a payment POST (Refund ) - POST (RefundTransaction.)/ GET (RefundTransaction)

Reserve Reserves the total price of a purchase POST/GET - - against the sender's payment instrument

73

D2.1 Cloud-based Services Analysis

Verify Signature Verify Signature POST/GET - -

Invoice Create, send, update, cancel or set state - - POST (CreateInvoice)/ GET (GetInvoice )

3.3.12.3 Assessment

Services API Exposure Comments

Amazon FPS Medium Great number of functionalities exposed, but narrowed down to Amazon related payments

Google Checkout Medium Valuable resource, as it is mobile payment for Android phones, but with limited functions except from making a payment.

Paypal High Useful and popular service, exposed in great level.

74

D2.1 Cloud-based Services Analysis

3.3.13 Photo - API in-depth Analysis Two traditional Photo Services, such as Google Picasa & Flickr, compared with a mobile service with bold social characteristics, Instagram.

3.3.13.1 Documentation

Category Photo Photo Photo

Service Name Google Picasa Instagram Flickr

API Name Instagram API Flickr API

Version 2 1 1

API OPENi Code OI-PHT-01 OI-PHT-02 OI-PHT-03

Description The Picasa Web Albums Data API allows for The first version of the Instagram API is an API of Flickr, available only for non-commercial websites and programs to integrate with Picasa exciting step forward towards making it easier reasons Web Albums, enabling users to create albums, for users to have open access to their data. upload and retrieve photos, comment on photos, and more

Documentation https://developers.google.com/picasa-web/ http://instagram.com/developer/ http://www.flickr.com/services/api/ JSON call: https://developers.google.com/gdata/docs/json

Protocol XML/HTTP REST REST

Data Format Atom JSON JSON

75

D2.1 Cloud-based Services Analysis

Category Photo Photo Photo

Service Name Google Picasa Instagram Flickr

Available Libraries Java Python ActionScript .NET Ruby C PHP Go Python Java Objective-C .NET Objective-C Perl PHP Python Ruby

Call Limitation (no declared limit) 5000 requests per hour 3600 queries per key per hour

Authentication OAuth 1.0, AuthSub, ClientLogin OAuth API Key Authentication Method

3.3.13.2 Functionalities

Service Function Google Picasa Instagram Flickr

API Name Description Picasa Web Albums Data API Instagram API v1 Flickr API

Media The (specified) media resource (photo at POST/GET/PUT/DELETE GET POST/GET/PUT/DELETE least) that is stored, edited and retrieved

Media Search Capability to search for a resource GET GET GET

Media Popular (or Any suggestions that the platform returns, to - GET GET Suggestions) create a social buzz and allow more content

76

D2.1 Cloud-based Services Analysis

Service Function Google Picasa Instagram Flickr

API Name Description Picasa Web Albums Data API Instagram API v1 Flickr API consuming

Album/Collections Any collection of photos (album) that tries to POST/GET/PUT/DELETE - POST/GET/PUT/DELETE organize photos on folders

Comments Comments of text posted on photos POST/GET/DELETE POST/GET/DELETE POST/GET/DELETE

Likes/Favourites positive marking on a photo - POST/GET/DELETE POST/GET/DELETE

Tags Semantic categorization of a photo POST/GET/DELETE POST/GET/DELETE POST/GET/DELETE

Tag People Tagging users on a photo, in case a face is - - POST/DELETE visible

Photo Location The location a photo has been taken - GET POST/GET

Location Recent Retrieve photos for a specific location - GET -

Relationship Any connection among users, mutual - POST/GET GET (frienship) or one-way (follow)

User A signed up person on the platform - GET GET

User Search the capability to search for users - GET GET

User Recent the recent activity of a user GET GET GET

User Feed the recent activity of user's friends - GET GET (connections)

Geography Recent The activity on a wider location (Instagram - GET - specific)

Groups Groups of users with the same interests - - GET (Flickr specific)

77

D2.1 Cloud-based Services Analysis

Service Function Google Picasa Instagram Flickr

API Name Description Picasa Web Albums Data API Instagram API v1 Flickr API

Groups Join The capability to enter and leave a group for - - POST/DELETE the authenticated user

3.3.13.3 Assessment

Services API Exposure Comments

Picasa High Media can be handled as used by original service.

Instagram Medium Media cannot be posted or edited, as Instagram is mainly a mobile service. On the other hand every other resource can be browsed or even changed. Activities are related to the authenticated user.

Flickr High Flickr gives the capability to simulate its functionality, accept for specific functionalities that do not effect the photo storage process (e.g. groups).

78

D2.1 Cloud-based Services Analysis

3.3.14 Search - API in-depth Analysis The Search API was quite fuzzy; requesting the service was based on the called properties, and not the services. Thus together with the most popular search service Google, Freebase API with strong semantics was included.

3.3.14.1 Documentation

Category Search Search

Service Name Freebase

API Name Query API Google Custom Search

API OPENi Code OI-SRCH-01 OI-SRCH-02

Description An entity graph of people, places and things, built by a The Google Custom Search API lets you develop websites and programs to retrieve community that works on open data. and display search results from Google Custom Search programmatically

Documentation http://wiki.freebase.com/wiki/API https://developers.google.com/custom-search/v1/overview

Protocol REST REST

Data Format JSON JSON/Atom

Available Libraries Go .NET Java Dart Javascript Go .NET GWT Objective C Java PHP JavaScript Python Objective-C Ruby PHP Python Ruby

79

D2.1 Cloud-based Services Analysis

Category Search Search

Service Name Freebase Google Search

Call Limitation read: 100k API calls per day 100 search queries per day for free write: 10k writes per day

Authentication API Key Authentication Oauth 2.0 Method

3.3.14.2 Functionalities

Service Function Freebase Google Search

API Name Description Query API Google Custom Search

Search Web Resource Search through the web for a specific list of results regarding a topic GET/POST GET

Search Photo Search through the web for a specific list photos of results regarding a GET GET topic

3.3.14.3 Assessment

Services API Exposure Comments

Freebase High With big call limits, semantic search, even uploading resources, Freebase API owned also by Google is a valuable resource

Google Custom Search Low Low free plan and expensive API that makes the service almost not functional.

80

D2.1 Cloud-based Services Analysis

3.3.15 Shopping - API in-depth Analysis In this category, the selected services show a great variation, from bidding to handcraft-products shopping, easy shopping and a CRM. But that diversity allows better documentation.

3.3.15.1 Documentation

Category Shopping Shopping Shopping Shopping

Service Name eBay Etsy Amazon Market Place Web Service Salesforce.com

API Name eBay Shopping API Etsy API v2 Amazon WS Feeds API REST API, SOAP API

Version 801 2 1/10/2009 26

API OPENi Code OI-SHP-01 OI-SHP-02 OI-SHP-03 OI-SHP-04

Description Also called eBay Shopping Web Currently the Etsy API provides Helps sellers automate listings, The Force.com REST API lets you Services, the eBay Shopping API access to public information such as orders, payments, reports, and integrate with Force.com offers access to public read-only item listings and shop information more. By exchanging data, sellers applications using simple HTTP data such as searching for items, that you would find on the Etsy can integrate Amazon marketplace methods, in either XML or JSON products, reviews, and eBay website. For example, you can use into their current applications and formats, making this an ideal API member profiles. The eBay the API to inquire about product workflow for developing mobile applications Shopping API can be used in search information, get information about a or external clients. Force.com also tools and other buyer-focused seller's shop or to see publicly supports Apex REST, which lets you applications viewable favorite items or shops create Web services on Force.com . using Apex.

Documentation https://www.x.com/developers/eba http://www.etsy.com/developers https://sellercentral.amazon.com/gp http://wiki.developerforce.com/page y/products/shopping-api /mws/index.html /Data_Integration#Open_APIs http://www.salesforce.com/us/devel oper/docs/api_rest/index.htm http://www.salesforce.com/us/devel oper/docs/api/index.htm

Protocol REST,SOAP REST REST REST,SOAP

81

D2.1 Cloud-based Services Analysis

Category Shopping Shopping Shopping Shopping

Service Name eBay Etsy Amazon Market Place Web Service Salesforce.com

Data Format XML, Name Value, JSON JSON, JSONP XML JSON, XML

Available Libraries PHP - PHP, C#, Java Java, Ruby, PHP, Javascript, Android, iOS

Call Limitation 5,000 requests per IP per day Using public (api key-based) - - authentication, clients are allowed 10,000 requests per 24-hour period, with a limit of 10 queries per second; Restricted API keys: Clients are allowed 5,000 requests per 24-hour period, with a limit of 5 queries per second requests per 24-hour period, with a limit of 10 queries per second.

Authentication XML/HTTPS API authentication OAuth 1.0 Custom method OAuth 1.0, OAuth 2.0 Method (token based )

3.3.15.2 Functionalities

Service Function Ebay Etsy Amazon Salesforce

API Name Description eBay Shopping API Etsy API v2 Amazon WS Feeds -

Account Account Information - GET(getUserChargesMetad ata) /

82

D2.1 Cloud-based Services Analysis

Service Function Ebay Etsy Amazon Salesforce

API Name Description eBay Shopping API Etsy API v2 Amazon WS Feeds - GET(findAllUserCharges) / GET(getUserBillingOvervie w) / GET(findAllUserPayments)

Product An item in stock or not, sold in the store GET or POST GET GET/POST GET/POST (GetSingleItem, GetItemStatus, GetMultipleItems)

Popular Products Returns the most popular products GET or POST - - - (FindPopularItems)

Product Search Searches for stock catalogue information GET or POST - - - for products (getSearchKeywordsReco mmendation, findItemsByKeywords, findItemsByCategory, findItemsAdvanced, findItemsByProduct, findItemsIneBayStores)

Review/Feedback Information regarding reviews and GET or POST GET (feedback) - - feedback for a specific product (FindReviewsandGuides)

Category Retrieve high-level category information GET (GetCategoryInfo, GET - - for a specified category getHistograms)

Product List/ Retrieves publicly available data for one GET or POST/ POST GET/POST/PUT/DELETE GET - Favourite List or more listings

83

D2.1 Cloud-based Services Analysis

Service Function Ebay Etsy Amazon Salesforce

API Name Description eBay Shopping API Etsy API v2 Amazon WS Feeds -

Coupon Offers for purchase - GET/POST/PUT/ DELETE - -

Shop A places where a user can sell his GET/POST/PUT/ DELETE - - products

Shipping This is one of the ways a buyer or seller GET or POST(XML) GET/POST/PUT/DELETE GET/POST - can obtain shipping cost information for (GetShippingCost) an existing item (for which the caller is either the buyer or seller) at any point in the life of of the listing, before or after a buyer has committed to purchasing the item(s).

User Retrieves public user information based GET (profile)/POST(XML) GET/POST/POST (upload GET - on the user ID you specify. The response photo) contains detailed information about a user.

Friendship Mutual connection between users - GET/DELETE/POST - -

Group of Users/ Team A Group of users - GET - -

Cart Represents a shopping cart - GET/POST/PUT/DELETE - -

Order Represents a collection of listings - GET - GET purchased by a user on a specific date and time

Transaction/Purchase A bought product, not delivered or not - GET - - shipped yet.

Shop Represents a shop with listings for sale. - GET/POST/PUT/DELETE - - Each shop is owned by one user.

84

D2.1 Cloud-based Services Analysis

Service Function Ebay Etsy Amazon Salesforce

API Name Description eBay Shopping API Etsy API v2 Amazon WS Feeds - Shop

Currency Providing information for a specific GET GET GET - currency asked by user

Analytics Providing analytics over an object GET or POST (Research - - - API)

Tag Tag - GET - -

3.3.15.3 Assessment

Services API Exposure Comments eBay Medium Powerful search engines, edit processes, but some functionalities are not provided through the API

Etsy High Access in every functionality, allowing to setup similar functionalities. A great API with growing community.

Amazon MarketPlace Web Service Low Focused on B2B services only.

Salesforce.com Low Limited functionality, with access to products and orders only.

85

D2.1 Cloud-based Services Analysis

3.3.16 Social - API in-depth Analysis The platforms qualified to be analysed, i.e. Facebook, Twitter and LinkedIn, were expected to be selected because of their popularity.

3.3.16.1 Documentation

Category Social Social Social

Service Name Facebook Twitter LinkedIn

API Name Facebook Graph Api REST API version 1.1 LinkedIn API

API OPENi Code OI-SOCIAL-01 OI-SOCIAL-02 OI-SOCIAL-03

Description The Graph API is the primary way to get data The most recent version of the Twitter The REST API provides a simple, in and out of Facebook's social graph. It's a REST API. consistent representation of people, low-level HTTP-based API that you can use to companies, jobs, and the interactions query data, post new , create check-ins and relationships between them.. or any of the other tasks that an app might need to do.

Documentation https://developers.facebook.com/docs/referenc https://dev.twitter.com/docs/api/1.1 https://developer.linkedin.com/apis e/api/

Protocol REST/Javascript REST REST/Javascript

Data Format JSON JSON JSON

Available Libraries /Php/Python javascript/Java/Php/Python javascript/Java/Php/Python

Call Limitation Not specified 350 requests/hour 100k requests/day

Authentication OAuth 2.0 OAuth 2.0 OAuth 1.0 Method

86

D2.1 Cloud-based Services Analysis

3.3.16.2 Functionalities

Service Function Facebook Twitter LinkedIn

API Name Description Facebook Graph Api REST API version 1.1 LinkedIn API

Search Searching specific resources provided by - GET/POST GET the user’s preferences (:/saved_search/create) (jobs,company) /POST (:/saved_search/destro y)

Favorites Declaring some favourites entities - POST/GET/POST - (destroy)

Achievements Achieving specific goals and tasks and POST/re-POST/DELETE/GET - - share those stats with other users inside the platform

Application User enabled applications GET/ GET(review) - -

Album User created albums with images GET/(only upload photos) - -

Checkin Declaring attendance in a specific event POST (via "post" GET - and/or place message)/DELETE/GET

Comment Comment POST/GET/DELETE POST/GET/DELETE

Event Profile for a specific event where people GET/POST/re-POST/DELETE - - can attend

Feed/Homeline The main page for a user where he can GET GET GET review his and his friends activity

Friends/Connections Mutually declared and accepted friendship GET(:/user/friends) - - inside a specific platform

87

D2.1 Cloud-based Services Analysis

Service Function Facebook Twitter LinkedIn

API Name Description Facebook Graph Api REST API version 1.1 LinkedIn API

Following Users that a person follows - GET/POST/DELETE -

Followers Users that follow a specific person - GET -

Friendlist/lists User created list of persons to classify his POST/DELETE/ GET/POST - friends POST(:/members)/DELETE(:/me (:/create)/POST mbers) (:/destroy)

Group User created groups of person for specific POST/re- - GET purposes POST/GET/DELETE/GET(:/membe rs)/POST(:/members)/DELETE(:/ members)

Insights/ Analytics Analytics of users activity with a specific GET - - object

Link A url for a specific resource GET - -

Message Message between users GET/POST(https://developers.fac POST/GET/POST(:/dest POST ebook.com/docs/reference/dialog roy) s/send/)

Note Note object GET/POST/DELETE - -

Order Order GET/re-POST - -

Page/Company Fan page for specific purpose GET/re-POST/GET(:/feed) - GET

88

D2.1 Cloud-based Services Analysis

Service Function Facebook Twitter LinkedIn

API Name Description Facebook Graph Api REST API version 1.1 LinkedIn API

representing a company, person or a specific idea

Photo Photo object GET/POST/DELETE/re-POST - -

Pictures Photo’s of a user GET

Places/Geo Location based Entities - Places GET GET/POST -

Question Poll about a topic POST/GET/DELETE - -

Status Message A declaration of a user’s current POST/GET/DELETE POST/GET/DELETE - status/attitude

Trends The most popular statuses and concepts - GET -

User User profile GET GET/POST(update) GET

User Search Search for a user profile - GET GET

Video Video Object POST/GET/DELETE - -

3.3.16.3 Assessment

Services API Exposure Comments

Facebook High Facebook Graph API is one of the best implementations, with great exposure but related to the authenticated user. No Search functionality has ever been exposed.

Twitter High Twitter is an quite open API, but with strict limits.

LinkedIn Low This API is used only as a reference for job information. Very few functionalities.

89

D2.1 Cloud-based Services Analysis

3.3.17 Telephony - API in-depth Analysis In this group two services with different orientation, tech stack and business model are analysed; Skype has a proprietary format for API, is more B2C oriented and allows free usage, while Twilio is RESTful, B2B oriented and is not free.

3.3.17.1 Documentation

Category Telephony Telephony

Service Name Skype Twillio

API Name Skype Desktop Api Twilio Rest API

Version Protocol 7 1/04/2010

API OPENi Code OI-TEL-01 OI-TEL-02

Description The Skype API provides a mechanism for 3rd party scripts, The Twilio REST API allows you to query meta-data about your applications and devices to control Skype UI functions and implement account, phone numbers, calls, text messages, and recordings. additional or improved features to complement the Skype. You can also do some fancy things like initiate outbound calls and send text messages.

Documentation https://developer.skype.com/desktop-api-reference-index http://www.twilio.com/docs/api/rest

Protocol Skype Proprietary REST

Data Format Atom XML,CSV

Available Libraries Java (community) Java, PHP, Ruby, Node.js, C++, Python, .NET

Call Limitation (no declared limit) (no declared limit)

Authentication Skype Login ( username/password ) HTTP Basic and Digest Authentication Method

90

D2.1 Cloud-based Services Analysis

3.3.17.2 Functionalities

Service Function Skype Twilio

API Name Description Skype Desktop API Twilio Rest API

Account Information about the user’s account - GET/ POST or PUT (update)/ GET (list)/ POST settings (subaccount)/ GET (conferences)

User User GET/SET

Group of Users User created groups to organize GET GROUP USERS (Contacts) contacts GET GROUP VISIBLE GET GROUP EXPANDED GET GROUP DISPLAYNAME SET GROUP DISPLAYNAME GET GROUP TYPE CREATE GROUP DELETE GROUP ALTER GROUP ADDUSER ALTER GROUP REMOVEUSER

Call A Call instance resource represents a POST /GET/ PUT (finish)/ PUT POST/GET/GET (call_list)/POST(modify call) connection between a telephone and (onhold) Twilio. This may be inbound, when a person calls your application, or outbound, when your application initiates the call

Outgoing Caller ID An OutgoingCallerId instance - GET/POST or PUT /DELETE (Account) resource represents a single verified number that may be used as a caller

91

D2.1 Cloud-based Services Analysis

Service Function Skype Twilio

API Name Description Skype Desktop API Twilio Rest API ID when making outgoing calls

Recording This resource represents an individual - GET/DELETE/ GET (transcriptions) recording.

Recording List Returns a list of Recording resource - GET/ GET (transcriptions list) representations, each representing a recording generated during the course of a phone call. The list includes paging information.

Group Call This resource represents an individual PUT (JOIN CONFERENCE) GET/ GET (participant) / POST (participant) (Conference) conference instance. Each conference that starts and ends is considered a unique conference instance. There

can be many conference instances that share the same FriendlyName, but only one can be in-progress at any given time.

Voicemail GET/ POST /GET/ PUT -

3.3.17.3 Assessment

Services API Exposure Comments

Skype Medium Skype allow to control full it functionalities, but only through its dedicated desktop API.

Twilio High All the available functionalities are exposed.

92

D2.1 Cloud-based Services Analysis

3.3.18 Video - API in-depth Analysis The main service in this category is YouTube, with the Dailymotion to act more supportive.

3.3.18.1 Documentation

Category Video Video

Service Name YouTube Dailymotion

API Name YouTube Data API Dailymotion Graph API

Version "2 3 (v.3 experimental)"

API OPENi Code OI-VD-01 OI-VD-02

Description The YouTube Data API allows applications to perform functions The Graph API is a way to access, publish and modify data on normally executed on the YouTube website. The API enables an Dailymotion. The Graph API presents a simple, consistent view of the application to search for YouTube videos and to retrieve standard video Dailymotion objects (e.g., users, videos, playlists, etc.) and feeds, comments and video responses. In addition, the API lets an connections between them (e.g., friend relationship, user’s posted application upload videos to YouTube or update existing videos. The videos, videos in groups/playlits, etc.). application can also retrieve playlists, subscriptions, user profiles and more. Finally, your application can submit authorized requests to enable users to create playlists, subscriptions, contacts and other account- specific entities.

Documentation https://developers.google.com/youtube/ http://www.dailymotion.com/doc/api/graph-api.html

Protocol XML/HTTP REST

Data Format Atom JSON (JSON can be requested inside a script tag)

93

D2.1 Cloud-based Services Analysis

Category Video Video

Service Name YouTube Dailymotion

Available Libraries Java JavaScript .NET PHP PHP Objective-C Python Objective-C JavaScript

Call Limitation 5,000,000 units/day -

Authentication OAuth 2.0 OAuth 2.0 Method

3.3.18.2 Functionalities

Service Function Youtube Dailymotion

API Name Description YouTube Data API Dailymotion Graph API

Media The (specified) media resource (photo at GET/POST/DELETE GET/POST/DELETE least) that is stored, edited and retrieved

User Get information about a user profile GET GET

Playlist Interact with a specific playlist GET/PUT/POST/DELETE GET/PUT/POST/DELETE

Player A specific api for creating embedded GET/POST/DELETE GET/POST/DELETE players with all the functionalities provided from the specific resources ( play/pause/next, etc. )

94

D2.1 Cloud-based Services Analysis

Service Function Youtube Dailymotion

API Name Description YouTube Data API Dailymotion Graph API

Subscriptions The numbers of subscribers on a channel GET -

Comment All information about comments regarding GET/POST/DELETE - a specific media object

Rating Information about the rating GET -

3.3.18.3 Assessment

Services API Exposure Comments

YouTube High Handy API with all the functions that do not generate spam activities.

Dailymotion Medium Allow Video Methods, but limited social activities

95

D2.1

Cloud-based Services Analysis

4 Towards the OPENi Cloud-based Services

In this section, the roadmap to identify the OPENi Generic APIs is provided. All identified APIs will be merged and compared in order to be used as a basis for the generic OPENi APIs definition.

4.1 Mapping between the Existing Cloud-based Services APIs On section 3.3, there is a complete in-depth analysis of all the APIs, for different categories. Nevertheless, there are many objects and functionalities that are repeated for different categories; for example most of the platforms have a form of social activity, like commenting or liking a resource. It is very common also to give different names to similar methodologies, or allow various functionalities or for historical reasons (cannot change the name), marketing reasons or compatibility issues with previous API versions. This paragraph extends the work presented on the previous chapter, and groups the services exposed by API platforms based on the objects that appeared in all the categories. During that process the semantic meaning and the properties of the objects were studied and an iterative work was done until a reasonable set of objects was extracted. The work is based on the objects of Activity Streams, and the allowed activities are mentioned again with the GET,POST,DELETE,PUT methods that have been previously identified.

During the grouping, some assumptions were made: (a) the result of search for various objects was identified as separate object and not as an activity; the reason for that was the power a search engine has the perspective of a unified Search API that will be semantically enhanced with multiple platforms (i.e. see paragraph 4.2 for the description of the Search API). (b) The grouping of different objects is identified as different objects, as well as (c) different types of the same object have been initially studied separately (e.g. voicecall, call and videocall).

Object Applications

Platform Methods

Service Facebook GET/GET (review)

Skype GET

Object Map

Platform Methods

Service Bing Maps GET, GET (Rotate), GET (zoom), GET (scale)

Google Maps GET, GET(map type), GET (Rotate), GET (Pan), GET(Zoom), GET (Scale), GET (Tilt), GET (Market), GET (Streetview), GET (elevation)

96

D2.1

Cloud-based Services Analysis

Object Directions

Platform Methods

Service Google Maps GET, GET (Disctance), GET (duration), GET (time), GET (Transit)

Object Geocoder Returns address infor for given destinations

Platform Methods

Service Google Maps GET

Object Polygone

Platform Methods

Service Google Maps GET

Object Traffic

Platform Methods

Service Google Maps GET

Object Payment

Platform Methods

Service Google Checkout POST

POST(DoExpressCheckoutPayment) / GET(GetTransactionDetails) Paypal /GET(TransactionSearch)/POST(ManagePendingTransactionStatus)

Amazon FPS POST/POST(Cancel)/GET(GetPrepaidBalance)/GET(GetDebtBalance)

Object Refund

Platform Methods

Service Paypal POST (RefundTransaction.)/ GET (RefundTransaction)

Amazon FPS POST/GET

Object Reserve

Platform Methods

Service Paypal POST (RefundTransaction.)/ GET (RefundTransaction)

97

D2.1

Cloud-based Services Analysis

Amazon FPS POST/GET

Object Signature

Platform Methods

Service Amazon FPS POST/GET

Object Invoice

Platform Methods

Service Paypal POST (CreateInvoice)/ GET (GetInvoice )

Object Account

Platform Methods

Service Dropbox GET

Nexmo GET (balance)/ GET (pricing)/ POST (update)/ GET (top-up)

Amazon FPS GET (GetAccountActivity)/ GET (GetAccountBalance(

Paypal GET (GetBalance)

Skydrive GET (objects), GET (quota), GET (recent_docs)

GET(getUserChargesMetadata) / GET(findAllUserCharges) / Etsy GET(getUserBillingOverview) / GET(findAllUserPayments)

Twilio GET/ POST or PUT (update)/ GET (list)/ POST (subaccount)

CityGrid GET (budget)

Facebook Ads API GET

Object Account Group

Platform Methods

Facebook Ads GET/POST/PUT/DELETE/GET (Users)/PUT (Users)/ DELETE (Users)/ API GET (Accounts)/PUT (Accounts)/ DELETE (Accounts)

Object SMS

Platform Methods

98

D2.1

Cloud-based Services Analysis

Service POST (ALTER SMS SEND)/DELETE/SET (as seen)/ PUT(SET SMS Skype BODY) / PUT(SET SMS TARGET_NUMBERS)

Nexmo POST/GET

Twilio POST/GET/GET (list)

Object SMS Search

Platform Methods

Service Skype GET (SEARCH)/ GET (MISSEDSMSS)

Object Notification

Platform Methods

Service Twilio GET/DELETE

Object Phone number

Platform Methods

Service Skype GET (PROFILE)

Nexmo GET / GET (available) / POST (cancel) / POST (update)

Twilio GET(AvailablePhoneNumbers)

Object Chat Message

Platform Methods

Service Facebook Graph GET/POST(:/dialogs/send/)

LinkedIn POST

Skype POST(CREATE)/ POST(CHATMESSAGE)/

Twitter POST/GET/POST(:/destroy)

PUT(LEAVE)/ GET(CHATMESSAGES)/ Google talk GET(RECENTCHATMESSAGES)/

Facebook Chat PUT(SETTOPIC)/ POST/GET/DELETE

Tumblr GET/POST/POST(edit)/POST(reblog)/POST(delete)

Object Voicechat

Platform Methods

99

D2.1

Cloud-based Services Analysis

Service Google Talk POST/GET

Object GroupChat

Platform Methods

Service Google Talk POST/GET

PUT(ADDMEMBERS)/ GET(MEMBEROBJECTS)/ Skype GET(CHATMEMBER)

Object Videochat

Platform Methods

Service Google Talk POST/GET

Skype GET (device info) /PUT (alter call to video)

Object File Transfer

Platform Methods

Service Skype GET (FILETRANSFER)

Object Call

Platform Methods

Service Twilio POST/GET/GET (call_list)/POST(modify call)

Skype POST /GET/ PUT (finish)/ PUT (onhold)

Object Group Call

Platform Methods

Service Twilio GET/ GET (participant) / POST (participant)

Skype PUT (JOIN CONFERENCE)

Object Voice Call

Platform Methods

Service Skype GET/ POST /GET/ PUT

100

D2.1

Cloud-based Services Analysis

Object Recording

Platform Methods

Service Twilio GET/DELETE/ GET (transcriptions)

Object Recording List

Platform Methods

Service Twilio GET/DELETE/ GET (transcriptions)

Object Album/Collection

Platform Methods

Service Facebook GET/(only upload photos)

Google Picasa POST/GET/PUT/DELETE

Flickr POST/GET/PUT/DELETE

Skydrive POST/GET/PUT/DELETE

Object Like/Favorite

Platform Methods

Service Foursquare POST (:venue_id/like) / POST (:checkin_id/like) /POST (:tip_id/like)

Instagram POST/GET/DELETE

Flickr POST/GET/DELETE

Twitter POST/GET/POST (destroy)

Tumblr GET/GET(user/likes)/POST/POST(unlike)

Object Tag

Platform Methods

Service Etsy GET

Google Picasa POST/GET/DELETE

Instagram POST/GET/DELETE

Flickr POST/GET/DELETE

Skydrive POST/GET/DELETE

101

D2.1

Cloud-based Services Analysis

Tumblr GET(tagged)

Object People Tag

Platform Methods

Service Flickr POST/DELETE

Object Photo Location Get photos in a specific area

Platform Methods

Service Instagram GET

Flickr POST/GET

Object Location Recent

Platform Methods

Service Instagram GET

Object User

Platform Methods

Service Flickr GET

Instagram GET

Facebook GET

YouTube GET

SoundCloud GET

LinkedIn GET

Amazon GET

FitBit GET

GET (:/userid/ASPECTS)/ GET (:leaderboard)/POST (:update - photo)/ POST (:setpings -notifications) / GET Foursquare (:venues/managed)

eBay GET (profile)/POST(XML)

GET (User Details)/ GET (User Activity)/ GET (User's Heyzap Games)/GET (User's Network) / GET (User's activity)

Runkeeper GET/ GET(settings)/ PUT (settings)

102

D2.1

Cloud-based Services Analysis

Twitter GET/POST(update)

Etsy GET/POST/POST (upload photo)

Last.fm GET/PUT/POST

Facebook Ads POST/DELETE/GET

Blogger GET/ GET(page)/GET(page/list) Tumblr GET (avatar)/ GET(info)

Object Search User

Platform Methods

Service Flickr GET

Instagram GET

LinkedIn GET

Heyzap GET

Twitter GET Foursquare GET (:/userid/ASPECTS)/ GET (:leaderboard)/POST (:update - photo)/ POST (:setpings -notifications) / GET (:venues/managed)

Object User Recent

Platform Methods

Service Google Picasa GET

Flickr GET

Instagram GET

Object User Feed

Platform Methods

Service Flickr GET

Instagram GET

LinkedIn GET

Twitter GET

Facebook GET

Tumblr GET(user/dashboard)

103

D2.1

Cloud-based Services Analysis

Object User Group

Platform Methods

Service Flickr GET/POST(join)/DELETE(leave)

Etsy GET

Last.fm GET

Skype GET GROUP USERS GET GROUP VISIBLE GET GROUP EXPANDED GET GROUP DISPLAYNAME SET GROUP DISPLAYNAME GET GROUP TYPE CREATE GROUP DELETE GROUP ALTER GROUP ADDUSER ALTER GROUP REMOVEUSER

LinkedIn GET

Facebook POST/re- POST/GET/DELETE/GET(:/members)/POST(:/members)/DELETE( :/members)

Object Product

Platform Methods

Service Etsy GET

eBay GET or POST (GetSingleItem, GetItemStatus,

GetMultipleItems)

Amazon GET/POST

Salesforce GET/POST

Object Product List

Platform Methods

Service Amazon GET

104

D2.1

Cloud-based Services Analysis

eBay GET or POST/ POST

Etsy GET/POST/PUT/DELETE

Object Popular Product

Platform Methods

eBay GET or POST (FindPopularItems)

Object Search Product

Platform Methods

eBay GET or POST (getSearchKeywordsRecommendation, findItemsByKeywords, findItemsByCategory, findItemsAdvanced, findItemsByProduct,

findItemsIneBayStores)

Object Coupon

Platform Methods

Service Etsy GET/POST/PUT/ DELETE

Foursquare POST / GET (:list)

Object Search Coupon

Platform Methods

Service Foursquare POST / GET (:list)

Object Campaign

Platform Methods

Service Foursquare POST/POST(:delete)/POST(:start)/POST(:end)/GET(:time series)

Google Admob GET

Facebook Ads GET/POST/PUT/DELETE

105

D2.1

Cloud-based Services Analysis

API

Object Search Campaign

Platform Methods

Service Google Admob GET

Object Review

Platform Methods

Service Etsy GET (feedback)

Ebay GET or POST (FindReviewsandGuides)

Object Category

Platform Methods

Service Etsy GET

Ebay GET

Twitter GET (trends)

Object Shipping

Platform Methods

Service eBay GET

Amazon GET/POST

Etsy GET/POST/PUT/DELETE

Object Cart

Platform Methods

Service Etsy GET/POST/PUT/DELETE

Amazon Product POST/PUT/GET/DELETE/POST (clear) Advertising

106

D2.1

Cloud-based Services Analysis

Object Order

Platform Methods

Service Etsy GET

Salesforce GET

Facebook GET/re-POST

Object Transaction

Platform Methods

Service Etsy GET

Object Shop

Platform Methods

Service Etsy GET/POST/PUT/DELETE

Object Challenge

Platform Methods

Service Heyzap GET/POST

Object File

Platform Methods

Service Skydrive GET (properties)/PUT/ GET (content)/PUT or POST (upload)/DELETE/MOVE Dropbox PUT(:/chunked_upload)+POST(:/commit_chunked_upload), POST (:/fileops/copy), / POST (:/fileops/delete), POST (:fileops/move). GET(metadata), POST(:/delta), GET(:/revisions)/ POST (:/restore)

Object File Search

Platform Methods

Dropbox GET/POST

107

D2.1

Cloud-based Services Analysis

Object Folder

Platform Methods

Service Skydrive POST/DELETE/PUT/GET (properties)/MOVE

Dropbox POST (:/fileops/create_folder), POST (:/fileops/copy), / POST (:/fileops/delete), POST (:fileops/move)/GET (metadata)

Object Link

Platform Methods

Service Skydrive GET

Dropbox POST (:/shares)/POST (:/media) /GET(:thumbnails)/ GET (:copy_ref)

Facebook GET/POST/DELETE

Tumblr GET/POST/POST(edit)/POST(reblog)/POST(delete)

Object Thumbnail

Platform Methods

Service Skydrive GET

Dropbox GET

Object Search Web Resource

Platform Methods

Service Google Custom GET Search

Freebase GET/POST

Object Search Photo

Platform Methods

Service Google Picasa GET

Instagram GET

Flickr GET

Google Custom GET

108

D2.1

Cloud-based Services Analysis

Search

Freebase GET

Object Activity

Platform Methods

Service Heyzap GET

RunKeeper GET/ PUT (past activity)/ POST (start activity)/POST (update or finish activity) / DELETE [fitness, strength, background)

FitBit GET/POST/DELETE

Object Favorite Activity

Platform Methods

Service FitBit GET/POST/DELETE

Object Sleep

Platform Methods

Service RunKeeper GET/ POST/PUT/DELETE

FitBit GET/POST/DELETE

Object Nutrition

Platform Methods

Service RunKeeper GET/ POST/PUT/DELETE

FitBit GET (water, food, goals)

Object Search Food

Platform Methods

Service FitBit GET

Object Weight

Platform Methods

Service RunKeeper GET/ POST/PUT/DELETE

109

D2.1

Cloud-based Services Analysis

FitBit GET/POST/DELETE

Object General Body Measurement

Platform Methods

Service RunKeeper GET/ POST/PUT/DELETE

FitBit GET

Object Diabetes Measurements (Glucose)

Platform Methods

Service RunKeeper GET/ POST/PUT/DELETE

FitBit GET/ POST

Object Heart Rate

Platform Methods

Service FitBit GET/POST/DELETE

Object Blood Pressure

Platform Methods

Service FitBit GET/POST/DELETE

Object Record

Platform Methods

Service RunKeeper GET

Object Leaderboard

Platform Methods

Service Heyzap GET

FitBit GET/POST (config)

110

D2.1

Cloud-based Services Analysis

Object Badge

Platform Methods

Service FitBit GET

Foursquare GET (:/userid/badges)

Heyzap GET (User's Badges)

Facebook POST/re-POST/DELETE/GET

Object Tip

Platform Methods

Service Foursquare POST (:done)/ POST (:add) / POST (:flag) / POST (:markdone) / POST (:marktodo)/ POST (:unmark)

Object Search Tip

Platform Methods

Service Foursquare GET

Object Comment

Platform Methods

Services RunKeeper GET/POST (on an activity)

YouTube GET/POST/DELETE

Foursquare POST (:checkin_id/addcomment)/ POST (:checkin_id/deletecomment)

Twitter POST/GET/DELETE

Facebook POST/GET/DELETE

Google Picasa POST/GET/DELETE

Instagram POST/GET/DELETE

Flickr POST/GET/DELETE

Blogger GET/GET(list)

Tumblr POST(reblog)

Object Event

111

D2.1

Cloud-based Services Analysis

Platform Methods

Services Foursquare GET (:categories)/ POST

Facebook GET/POST/re-POST/DELETE

Last.fm GET/PUT/POST

Google Places POST, POST(delete)/ GET/ POST (bump)

Object Following

Platform Methods

Services YouTube GET

Twitter POST/GET/DELETE/POST(:/update)

Tumblr GET (user/following)/POST/POST(unfollow)

Object Followers

Platform Methods

Services Twitter GET

Tumblr GET

Object Friends

Platform Methods

Services Flickr GET

Foursquare GET (:/requests) / GET(:/pending)/ POST (:unfriend)/ POST (:approve)/ POST (:deny)/ POST (:request)

Facebook GET(:/user/friends)

Etsy GET/DELETE/POST

Runkeeper GET/POST(invite)

FitBit GET/POST(invite/accept)

Instagram POST/GET

Object Friendlist

Platform Methods

112

D2.1

Cloud-based Services Analysis

Services Twitter GET/POST (:/create)/POST (:/destroy)

Facebook POST/DELETE/ POST(:/members)/DELETE(:/members)

Object Note

Platform Methods

Services Facebook GET/POST/DELETE

Object Company/Page

Platform Methods

Services LinkedIn GET

Facebook GET/re-POST/GET(:/feed)

Object Photo

Platform Methods

Services Instagram GET

Google Places GET

Google Picasa GET/POST/DELETE/PUT

Flickr GET/POST/DELETE/PUT

Dropbox GET/POST/DELETE/PUT

Skydrive GET/POST/DELETE/PUT

Facebook GET/POST/DELETE/re-POST

Foursquare POST/ GET

Tumblr GET/POST/POST(edit)/POST(reblog)/POST(delete)

Object Popular Photo

Platform Methods

Services Instagram GET

Flickr GET

Object Place

113

D2.1

Cloud-based Services Analysis

Platform Methods

Services Facebook GET

Last.fm GET

Yelp GET / GET (category) / GET (neighborhood)

Google Places GET/ GET(details)/ POST (supplement) / POST (delete – only if the application created it)

Twitter GET/POST

Foursquare POST (:add)/ GET (:venues/categories)/ GET (:trending) /GET (:timeseries)/ POST (:edit)/ POST (:flag –incorrect) / POST (:marktodo) / POST (:proposeanedit) / GET(:venue_id/ASPECTS)

Object Group of Places

Platform Methods

Service Google Places GET/GET(:timeseries)/POST/POST (:delete)/ POST (:edit) /POST (:update)/POST(:removevenue)

Object Question

Platform Methods

Service Facebook POST/GET/DELETE

Object Status Message

Platform Methods

Services Last.fm POST

SoundCloud POST

Twitter POST/GET /DELETE

Facebook POST/GET/DELETE

Object Video

Platform Methods

114

D2.1

Cloud-based Services Analysis

Services Dropbox GET/POST/DELETE

Dailymotion GET/POST/DELETE

YouTube GET/POST/DELETE

Facebook POST/GET/DELETE

Tumblr GET/POST/POST(edit)/POST(reblog)/POST(delete)

Object Video Search

Platform Methods

Service Dailymotion GET/POST

YouTube GET/POST

Object Playlist

Platform Methods

Services YouTube GET/PUT/POST/DELETE

Dailymotion GET/PUT/POST/DELETE

Object Sound

Platform Methods

Services SoundCloud GET/PUT/POST

Last.fm GET/PUT/POST

Tumblr GET/POST/POST(edit)/POST(reblog)/POST(delete)

Object Sound Stream

Platform Methods

Services SoundCloud GET

Last.fm GET

Object Device

Platform Methods

Service FitBit GET

115

D2.1

Cloud-based Services Analysis

Object Game

Platform Methods

Service Heyzap GET (trending games)/GET (details)/ GET (activity)/ GET (players)

Object Search Game

Platform Methods

Service Heyzap GET

Object Search Status

Platform Methods

Service Twitter GET/POST (:/saved_search/create) /POST (:/saved_search/destroy)

Object Search Job

Platform Methods

Service LinkedIn GET

Object Search Company

Platform Methods

Service LinkedIn GET

Object Analytics

Platform Methods

Service Facebook GET

Last.fm GET

CityGrid GET

Facebook Ads GET API

eBay GET or POST (Research API)

Google Admob GET(group)/GET(ads)/GET(campaigns)

116

D2.1

Cloud-based Services Analysis

Object Advertisement

Platform Methods

Service Facebook Ads GET API

Amazon Product GET(ItemLookup) Advertising

CityGrid GET(web)/GET(mobile)/GET(place)

Google Admob GET/POST/ GET(Interstitials)/GET (Mediation)

Object Search Advertisement

Platform Methods

Service Amazon Product GET(ItemSearch)/ GET (similar) Advertising

CityGrid GET(:custom Ads/where)/ GET(:custom Ads/latlong)

Google Admob GET

Object Group of Advertisement

Platform Methods

Service Facebook Ads GET/POST/PUT/DELETE API

Google Admob GET

Object Creative

Platform Methods

Service Facebook Ads GET/POST/PUT/DELETE API

Object Site

Platform Methods

Service Google AdMob GET

117

D2.1

Cloud-based Services Analysis

Object Search Site

Platform Methods

Service Google AdMob GET

Object Blog

Platform Methods

Service Blogger GET/GET(listByUser)

Tumblr POST(collect)/GET

Object Article

Platform Methods

Service Blogger GET/GET(list)/POST/PUT/PATCH/DELETE

Tumblr GET/POST/POST(edit)/POST(reblog)/POST(delete)

Object Article Search

Platform Methods

Service Blogger GET

118

D2.1

Cloud-based Services Analysis

4.2 Preliminary OPENi Generic APIs In this section, the converging categories, where services analysed before and functionalities documented in section 4.1, can be combined in order to start shaping the OPENi Generic APIs. As already identified, there are various functionalities that are not limited in specific categories; for example Facebook supports photos or check-ins. Thus, in order to fully document the generic APIs, a smaller set of platform APIs may be used without losing any of the anticipated functionalities. For example, photo, video and music are grouped below the umbrella of the Media API, as other platforms like Foursquare, Facebook or Dropbox support such files. The main vision behind the selection of the Generic APIs is to be directly connected with functionalities provided by mobile phones; functionalities that make smartphones unique devices. These capabilities are: the phone application, the messaging application, the GPS sensor, the Phone Agenda, the Gallery, the device Logging system and the Search inside a device. These strong mobile characteristics can identified also as strong functionalities provided by cloud-based services. On the contrary, gestures or gyroscope that are supported services on smartphones cannot yet be interrelated with any cloud-based platform. Table 4-1 introduces the preliminary OPENi Generic APIs along with their definition and a reference to the OPENi-API Categories to which the OPENi Generic API is related, as well as to the OPENi Use Cases.

Table 4-1: OPENi Generic APIs Definition

Generic API Definition OPENi-API Category Relevant OPENi Use Cases

Activity Every platform shows a level of social Gaming MyLife characteristics; YouTube allows Health Personalized Advertising commenting, shopping allows sharing Location-based Services Personal In-Store Shopping a purchase, users are connected in a Music way with its other. Photo This API is supplementary to every other API, and is directly connected Shopping with the Profiles API. It can describe Social any activity a user can have on an Video object that connects her with other users (i.e. discussing a topic instantly connects two strangers and makes the topic a social object). Additionally, this API includes the personal activity of a user, actions she had done even if it does not include a target object and it is a passive action. In conclusion, this API includes all the social and personal activities of a user, and is related with the logging activity of a device.

119

D2.1

Cloud-based Services Analysis

Generic API Definition OPENi-API Category Relevant OPENi Use Cases

Communication This API gives the capability of Messaging & Chat MyLife telecommunication; phoning, texting, Location-based Services emailing, in various ways and formats. Social This API is related with the Phone and Telephony Messaging application of a smartphone.

Location This API has been separate from Mapping MyLife Activity because it is directly connected Location-based Services Personalized Advertising with the space dimension; information Social Personal In-Store Shopping is always connected with location, Music which can be extracted by a GPS sensor and can be mapped on a map. Location is a strong contextual API in any case.

Media This API is the central resource storage File Transfer & Syncing MyLife center; every file object, in various Location-based Services formats (e.g. photo, video, text, Music audio), can be handled with this News Generic API. Photo This APi is related with the Gallery Application and the file system of a Social device. Video

Products & The special case of commercialization Analytics MyLife Services of objects, requires a strong API with Advertising Personalized Advertising transactional capabilities, with Location-based Services Personal In-Store Shopping enhanced security. Payments This API is related with the store Shopping application of a Phone. Social

Profiles People can be represented in various Analytics MyLife ways, with multiple profiles. This API Advertising Personalized Advertising brings all that information together: Contacts Personal In-Store Shopping avatars, profiles, contacts and Gaming accounts. It will interrelate different profiles, in different services. Health This API is directly related to the Location-based Services Agenda application of a smartphone. Messaging & Chat Music Payments Photo Shopping

120

D2.1

Cloud-based Services Analysis

Generic API Definition OPENi-API Category Relevant OPENi Use Cases Social Telephony Video

Search The capability to search for objects Advertising MyLife with semantic capability (i.e. identify Contacts Personal In-Store Shopping the object types and group them File Transfer & Syncing relatively), is quite valuable. This API Games brings together existing search engines with distributed search functionalities Health among various platforms. Location-based Services This API is related to the search News functionality found in a Phone OS. Photo Places Search Shopping Social Video

In the table below, an overview of the OPENi Generic APIs is provided as following:  Generic API: the general APIs where OPENi will be built  Main Objects: Every initial OPENi category supports various objects, as analyzed in sections 3.3 and 4.1. Thus for every Generic API there is a list of (activity streams-based terminology) objects where the Generic API will be based.  Platform APIs: Every object is matched to the relevant platform API to which the Generic APIs refers. In other words, for every Generic API, an overlapping list of existing APIs will be used, with certain functionalities.  Supported Functionalities: the general functionalities of every Generic API will be identified. It needs to be noted that for every platform API, and supported object, the detailed functionalities have been already documented. The main categories for each Generic API are highlighted with bold to indicate services that will not be omitted, but also the related platform APIs that must be documented.

Table 4-2: OPENi Generic APIs Overview

Generic API Main Objects & Functions Key Functionalities Platform APIs

Activity Background Activity Get Activity Dailymotion Badge Get Badge Etsy Blood Pressure Create Badge Facebook Challenge Create Comment FitBit

121

D2.1

Cloud-based Services Analysis

Generic API Main Objects & Functions Key Functionalities Platform APIs Comment Edit Comment Flickr Diabetes Measurement Delete Comment Foursquare Favorite Activity Edit Biometrics Google Picasa Feed Get Feed Heyzap Fitness Activity Follow Instagram Follower Unfollow Last.fm Following Get Followers LinkedIn Friend Get Following RunKeeper Game Activity Friend SoundCloud General Body Measurement Validate Friend Tumblr Heart Rate Unfriend Twitter Leaderboard Get Leaderboard YouTube Like/Favorite Like Nutrition Unlike Personal Record Get Record Question Create Question Sleep Select Answer Status Delete Answer Strength Activity Delete Question Trend Create Status User Recent Reply Status Weight Delete Status Get Nutrition Get Recent

Communication Campaign Send SMS Facebook Chat Chat Message Send Group SMS Twilio Group Chat Send Chat Message Skype Group Phone Call Start Call Google Talk Notification Forward Foursquare Phone Call Drop Call Twitter Recording Stop Call LinkeIn Recording List Hold Call SMS Get VoiceMail Video Chat Start Recording Voice Chat Pause Recording VoiceMail Stop Recording Get Recording Delete Recording

122

D2.1

Cloud-based Services Analysis

Generic API Main Objects & Functions Key Functionalities Platform APIs Start Group Call Start Video Call Create Group Chat Get Notification

Location Checkin Create Checkin Bing Maps Direction Delete Checkin Facebook Event Post Tip Foursquare Map Delete Tip Google Maps Place Post Comment Google Places Polygone Edit Comment Last.fm Recent Delete Comment Twitter Review Create Place Yelp Tip Edit Place Traffic Delete Place Travel Get Direction Get Map Create Event Edit Event Delete Event Send RSVP Accept RSVP Decline RSVP

Media Album Upload File Blogger Article Get File Info Dailymotion Blog Edit File Dropbox File Sync File Facebook File Sync Delete File Flickr File Transfer Comment File Foursquare Folder Share File Google Places Media Player Like File Instagram Link Unlike File Last.fm Note Create Folder Picasa Photo Get Folder Info SkyDrive Playlist Upload to Folder Skype Popular Edit Folder Tumblr Sound Stream Delete Folder SoundCloud Suggestion Comment Folder YouTube Tag Create List

123

D2.1

Cloud-based Services Analysis

Generic API Main Objects & Functions Key Functionalities Platform APIs Thumbnail Edit List Video Delete List Add Tag Remove Tag

Products & Ads Edit Cart Amazon Services Application Metrics Get Company Amazon Application Get Category Advertising Application Event Get Coupon Amazon FPS List of Application Create Coupon CityGrid Cart Make Payment eBay Category Get Payment Etsy Company/Page Cancel Payment Facebook Coupon Get Product Facebook Ads Currency Get Popular Product Flurry Invoice Get Invoice Foursquare Order Create Shop Google Admob Payment Edit Shop Google Analytics Popular Get Shop Google Product Get Analytics Checkout Product List Get Report LinkedIn Refund Create Product List Mixpanel Reserve Edit Product List Paypal Review Get Product List Salesforce Shipping Delete Product List

Shop Get Shipping

Signature Get Review

Transaction Get Goal Goal Get Ad Custom Data Create Campaign List of Custom Data Start Campaign Segment Stop Campaign List of Segment Get Campaign Report Delete Campaign

Profiles Account Get Profile Amazon Application Edit Profile Amazon FPS Contact Upload Contact Blogger

124

D2.1

Cloud-based Services Analysis

Generic API Main Objects & Functions Key Functionalities Platform APIs Contact Group Sync Contact Dropbox Contact List Get Contacts eBay Contact Photo Edit Contact Etsy Device Delete Contact Facebook Phone number Create Group FitBit Profile Get Group Flickr User Edit Group Flurry Users Group Delete Group Foursquare Get Group Google Analytics Get Device Google Contacts Get Account Google Talk Update Account Heyzap Delete Account Instagram Get Phone Number Last.fm Edit Phone Number Mixpanel Delete Phone Number Nexmo Get Application Paypal Delete Application RunKeeper Skydrive Skype SoundCloud Tumblr Twilio Twitter YouTube

Search Ads Get Object Amazon Article Upload Object Advertising Company Blogger Coupon CityGrid Event Dailymotion File Dropbox Food eBay Food Etsy Group of Ads FitBit Game Flickr Job Foursquare Music Freebase Photo Google Admob

125

D2.1

Cloud-based Services Analysis

Generic API Main Objects & Functions Key Functionalities Platform APIs Place Google Contacts Product Google Search SMS Heyzap Status Instagram Tip LinkedIn User Tumblr Video Twitter Web resource YouTube

126

D2.1

Cloud-based Services Analysis

5 Conclusions and Key Take-Aways

The purpose of this report has been to analyze the underlying state of the art in the cloud-based services landscape in order to provide concrete recommendations and guidelines to drive the forthcoming design and implementation of the OPENi APIs Framework. The report’s objective arises from the need to support easy integration of a broad spectrum of existing cloud-based functionality in a platform-independent way and to frame the OPENi APIs offerings. According to the methodology set for this report, the following results have been achieved:  By visiting the core theoretical and technological background related to services, specific patterns and concrete guidelines have been studied leading to an understanding of do’s and don’ts for the APIs design. Through an analysis of ongoing FP7 projects, potential synergies with initiatives investigating or delivering relevant outcomes have been also recognized.  Through multiple iterative steps, a map of available cloud-based services along multiple dimensions has been designed in an effort to bring together the APIs offerings with the needs of developers and end-users.  Through appropriate criteria per category, a prioritization of the available cloud-based services has been conducted giving way to an in-depth analysis of the APIs offered. Each API has been documented with regard to its core metadata (i.e. API Name, Version, Description, Protocol, Data Format, Available Libraries, etc.), the functionalities offered have been compared and cross-analyzed per category, and a preliminary assessment of the corresponding API’s exposure has been completed.  A complete mapping between the selected APIs and the functionalities offered across all categories has been conducted. In this way, features already provided by the APIs that thematically belong to other categories than the one to which they have been assigned have been brought forward.  A preliminary identification of the OPENi Generic APIs together with their associated objects, functionalities and relations to existing cloud-based services has been put together. In summary, the study of the state of the art has led to the following conclusions and lessons learnt:

Key Take-Away 1 [APIs Market Proliferation]. Today, APIs play a pivotal role in a thriving (mobile) app ecosystem by unlocking latent value in data and information of cloud-based services. According to PwC (2012), APIs are the building blocks of the digital economy by empowering enterprises to systematically embrace emerging technology trends and eventually end- users to benefit from the accelerating information value offerings and next generation user experiences. As indicated in Figure 5-1, the APIs growth rate has accelerated at an exponential pace during the last months and is not expected to slow down at the years to come.

127

D2.1

Cloud-based Services Analysis

Figure 5-1: APIs Growth Rate [Source: (Musser, 2012)]

Key Take-Away 2 [OPENi Classification & Landscape]. Creating a classification of the cloud- based services’ territory was not a trivial task and could have gone a long way if a concrete methodology was not applied from beginning to end. Despite the plethora of cloud- based services, there is no unanimous classification in the international bibliography. Through a well- defined approach based on the hints provided in developers’ portals (i.e. Programmable Web) and in market predictions by analysts and in accordance with the OPENi project needs and requirements, a classification of cloud-based services has been constructed step-by-step bearing 21 categories out of which 18 were selected for in depth-analysis, i.e. Advertising, Analytics, Contacts, File Transfer & Syncing, Gaming, Health, Location-based Services, Mapping, Messaging, Music, News, Payments, Photo, Search, Shopping, Social, telephony, Video. In order to maintain focus on the OPENi scope, iterative prioritizations of the cloud-based services have been conducted for the initial selection of services on the basis of criteria like the availability of APIs, the added value to a developer and the usefulness to the consumer, as well as for the in-depth analysis based on criteria like popularity and trends. In the cloud-based services landscape studied in this report as depicted in Figure 5-2, overlapping functionalities among different categories are the rule rather than the exception, with a set of emerging directions being recognized as following:  Despite the category they may be classified into, cloud-based services exhibit strong social characteristics by building circles of friends, posting comments, indicating likes/favorites, etc.  Media files (from photos to videos and music) represent popular objects that are shared from multiple services.  Location context emerges and is associated with practically any activity a user may perform across various services.

128

D2.1

Cloud-based Services Analysis

 Advertising is mainly library dependent for mobile development where integration with services is supported by SDKs available for mobile handset vendor platforms.  Marketing functionalities (coupons, offers, tips) that use personalized information (for example user location) are available to a diverse set of services (shopping, location based services).  Key players in the APIs market are: Facebook (which apart from the multiple functionalities offered aims at integrating and personalizing the web through its Open Graph approach), and Google that offers a full suite of cloud-based services.  When it comes to real-time communication (telephony, messaging), XMPP is a de facto standard utilized by the relevant cloud-based services.  APIs can be grouped in various ways, giving multiple names for some categories. Thus it was quite difficult to identify, name and group all these categories. The semantically enhanced dictionary of Activity Streams allows us to build on light semantics.  Core phone functionalities can be found on the cloud, by combining various services even from different categories.

Figure 5-2: OPENi Landscape of Cloud-based Services for In-depth Analysis

129

D2.1

Cloud-based Services Analysis

Key Take-Away 3 [Generic APIs]. Seven (7) Generic APIs that combine cloud-based functionalities in a set of functionalities that are similar to Phone SDKs, and existing phone applications or functionalities have been proposed:  Activity API referring to a social, health, behavioural activity log as reflected in multiple cloud-based services ranging from Social, Photo and Video Sharing to Health and Location-based Services. It includes all the social and personal activities of a user, and is related with the logging activity of a device.  Communication API for conveying real-time information through the exchange of messages, or calls. It is related with the Phone and Messaging application of a smartphone.  Location API enabling location awareness through Checkins, Direction, Events, Reviews and Tips. It is a strong contextual API with location, which can be extracted by a GPS sensor and can be mapped on a map.  Media API bringing together photo, music and video sharing services with file transfer and syncing functionalities. It is related with the Gallery Application and the file system of a device.  Products & Services API embracing Analytics, Advertising, Payments and Shopping services. It is related with the store application of a Phone.  Profiles API extrapolating information about persons based on Analytics, Advertising, Contacts, Gaming, Health, Location-based Services, Messaging & Chat, Music, Social, etc. services. It is directly related to the Agenda application of a smartphone.  Search API in order to find and retrieve information from the cloud-based services. It is related to the search functionality found in a Phone OS. Such APIs bring together the functionality offered in four (4) to twelve (12) categories, as well as multiple and diverse objects and APIs (already presented in Tables 4-1 and 4-2). Table 5-1 identifies the number of occurrences of each API in the OPENi Generic APIs and suggests a level of priority for implementation taking into account the API exposure and its relevance to the OPENi Use Cases.

Table 5-1: Draft Prioritization of existing APIs appearing in the OPENi Generic APIs Generic Platform API Occurrences API Exposure Relevance to OPENi Use Cases Suggested API No. in API Priority MyLife Person. Person. Generic APIs Advert. Shopp. Activity Twitter 6 High High Medium High High Facebook 5 High High Medium High High LinkedIn 4 Low Medium Low Low Low FitBit 3 High High Medium Low Medium Heyzap 3 Medium Low Low Low Low RunKeeper 2 High High Medium Low Medium Communi- Skype 2 Low (SMS)- High Low Low Medium cation Medium (Telephony) Google Talk 2 Medium High Low Low Medium Twilio 2 High High Low Low Medium Facebook Chat 1 Medium High Low Low Low

130

D2.1

Cloud-based Services Analysis

Generic Platform API Occurrences API Exposure Relevance to OPENi Use Cases Suggested API No. in API Priority MyLife Person. Person. Generic APIs Advert. Shopp. Nexmo 1 Medium High Low Low Low Location Foursquare 7 High High High High High Google Places 2 Medium High High High High Bing Maps 1 Medium High High Medium Low Google Maps 1 High High High Medium High Yelp 1 Low High High High Medium Media Flickr 4 High High Low Medium High Instagram 4 Medium High Low Medium High Last.fm 4 Medium High Low Low Medium YouTube 4 High Medium Low Low Medium Tumblr 4 High High Low Medium High Blogger 3 Low High Low Medium High Dailymotion 3 Medium Medium Low Low Medium SoundCloud 3 High Medium Low Low Medium Dropbox 2 High Medium Low Low Medium SkyDrive 2 Medium Medium Low Low Medium Google Picasa 2 High High Low Medium Medium Products & Etsy 4 High Low Low High High Services eBay 3 Medium Low Low High High Amazon Marketplace 2 Low Low Low High Medium Amazon Advertising 2 Low Low High Low Medium Amazon FPS 2 Medium High Low High High CityGrid 2 Medium Low High High High Flurry 2 Low Low High Medium High Google Admob 2 Medium Low High High High Google Analytics 2 Medium Low High Medium Medium Mixpanel 2 High Low High Medium High Paypal 2 High High High High High Google Checkout 1 Medium High Low Medium Medium Salesforce 1 Low Low High Medium Medium Facebook Ads 1 High Low Medium Medium Medium Profiles Google Contacts 2 High High High High High Search Freebase 1 High High Low Medium High Google Search 1 Low High Low Medium Medium

Key Take-Away 4 [APIs Design]. During the APIs design, particular care needs to be given to ensure adherence to key guidelines to make a good API, i.e.:  Provide a valuable service  Have a plan and a business model  Make it simple and flexible  It should be managed and measured

131

D2.1

Cloud-based Services Analysis

 Provide great developer support  Manage efficiently API changes of cloud-based services OPENi shall contribute significantly to the underlying state of the art by designing its APIs in accordance with the ActivityStreams protocol to ensure a common terminology, shared semantics and eventually interoperability among different cloud-based platforms. For example, in the next phases of the OPENi project (i.e. Task T3.1 OPENi APIs Specification), all existing cloud-based services and the OPEN Generic APIs will be mapped against the objects and verbs proposed by the ActivityStreams protocol and an identification of the OPENi generic methods will be conducted. From a technology perspective, the OPENi APIs Framework shall follow the trend towards REST and JSON like the services that have been analyzed in Section 3 as depicted in Figure 5-3. The API specification will be aligned to ongoing standardization activities, i.e. the Web API Design Cookbook and WebIDL. With regard to authentication, an API key approach is the most recommended way to follow, in accordance with the services studied. It is indeed the most popular approach, because of its simplicity of implementation, the security it provides and the easiness to control the privacy settings. A protocol following an API Key Authentication method, probably OAuth 2.0, should be thus considered for implementation.

Figure 5-3: Predominant Protocols and Data Formats in Analyzed APIs

Key Take-Away 5 [Next Steps]. Keep the OPENi ambition high, but be realistic (for implementation-wise purposes) and ready for change. The OPENi research directions are positioned in a highly dynamic and evolving field, at the intersection of social and mobile computing. With each passing moment, new cloud-based services arise and may eventually dominate the market. To this end, OPENi shall continue tracking the emerging services, disruptive technologies and market developments with regard to the APIs and may introduce the necessary changes and adaptations to this report whenever necessary as it proceeds towards implementation. In order to keep the APIs analysis up to date, the outcomes reported in this deliverable will become available and maintained through the OPENi wiki.

132

D2.1

Cloud-based Services Analysis

Annex I: References

ActivityStreams Specification. Retrieved on November 13th, 2012 from: http://activitystrea.ms/specs/ APIGEE Web API Design: Crafting Interfaces that Developers Love. Retrieved on November 13th, 2012 from: http://info.apigee.com/Portals/62317/docs/web%20api.pdf Appcelerator / IDC Q4 2012 Mobile Developer Report. Voice of the Next-Generation Mobile Developer. Retrieved on November 13th, 2012 from http://www.appcelerator.com/thinkmobile/surveys Appcelerator / IDC Q3 2012 Mobile Developer Report. Voice of the Next-Generation Mobile Developer. Retrieved on November 13th, 2012 from http://www.appcelerator.com/thinkmobile/surveys Benslimane, D., Dustdar, S., Sheth, A. (2008). Services Mashups: The New Generation of Web Applications. IEEE Internet Computing 12 (5), pp. 13–15. Blanchette, J. (2008) The Little Manual of API Design. Jasmin Trolltech, a Nokia company. Retreived on November 13th, 2012 from: http://chaos.troll.no/~shausman/api-design/api-design.pdf Bloch, J. (2007) How to Design a Good API and Why It Matters. Google Tech Talk. Retrieved on November 13th, 2013 from: http://www.youtube.com/watch?v=heh4OeB9A-c&feature=gv Business Insider. The APP 100: The World's Greatest Apps. http://www.businessinsider.com/100- best-apps-2012-8#productivity-1 Cameron, C. (2010) Picking the Most Important Features & APIs for Your Mobile App. Retrieved on November 13th, 2012 from http://readwrite.com/2010/09/27/picking-the-most-important- features-apis-for-your-mobile-app DuVander, A. (2010) 5 Years Ago Today the Web Mashup Was Born. Retrieved on January 20th, 2013 from: http://blog.programmableweb.com/2010/04/08/the-fifth-anniversary-of-map-mashups-on- the-web/ FOAF Vocabulary Specification 0.98 (2010) Namespace Document 9 August 2010 - Edition. Retrieved on November 13th, 2012 from http://xmlns.com/foaf/spec/ Gartner (2012a) Mobile Trends 2012. Retrieved on November 13th, 2012 from http://www.itbusinessedge.com/slideshows/show.aspx?c=87261 Gartner (2012b) 2012 Hype Cycle for Emerging Technologies Identifies "Tipping Point" Technologies That Will Unlock Long-Awaited Technology Scenarios. Press Release. Retrieved on December 5th, 2012 from: http://www.gartner.com/ Object room/id/2124315 IBM (2008) RESTful Web services: The basics. Retrieved on November 13th, 2012 from http://www.ibm.com/developerworks/webservices/library/ws-restful/ IT Business Edge. 10 Cutting-edge Mobile Application Trends for 2012 http://www.itbusinessedge.com/slideshows/show.aspx?c=87261 Jacobson, D., Brail, G., Woods, D. (2011) APIs: A Strategy Guide. O'Reilly Media. JSON (2013). Retrieved on November 13th from: http://www.json.org/ Mashape APIs (2012) https://www.mashape.com/ Musser, J. (2011) Open APIs - State of the Market 2011. Retrieved on November 13th, 2012 from: http://www.slideshare.net/jmusser/open-apis-state-of-the-market-2011

133

D2.1

Cloud-based Services Analysis

Musser, J. (2012) Open APIs: What's Hot, What's Not?. Retrieved on November 13th, 2012 from: http://www.slideshare.net/jmusser/j-musser-apishotnotgluecon2012 OASIS (2012) Reference Architecture Foundation for Service Oriented Architecture Version 1.0. Committee Specification 01. 04 December 2012. Retrieved on January 18th, 2013 from: http://docs.oasis-open.org/soa-rm/soa-ra/v1.0/cs01/soa-ra-v1.0-cs01.html OpenGraph Protocol. Retrieved on November 13th, 2012 from: http://ogp.me/ OpenSocial Specification 2.5.0. Retrieved on November 13th, 2012 from: http://opensocial- resources.googlecode.com/svn/spec/2.5/OpenSocial-Specification. Programmable Web APIs Directory (2012) http://www.programmableweb.com/apis/directory/1?sort=mashups PwC (2012) The business value of APIs. Technology Forecast 2012. Issue 2. Tulach, J. (2012) Practical API Design: Confessions of a Java Framework Architect. Apress. Verious APIs for mobile apps (2012) http://www.verious.com/apis/ Vermorel, J. (2010) A few tips for Web API design. Retrieved on November 13th, 2012 from: http://vermorel.com/journal/2010/12/22/a-few-tips-for-web-api-design.html WebRTC (2013). http://www.webrtc.org/ Wikipedia (2013) Comparison of web application frameworks. Retrieved on December 10th, 2012 from: http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks W3C (2004a) Web Services Architecture. W3C Working Group Note 11 February 2004. Retrieved on November 13th, 2012 from: http://www.w3.org/TR/ws-arch/ W3C (2004b) Web Services Glossary. W3C Working Group Note 11 February 2004. Retrieved on November 13th, 2012 from: http://www.w3.org/TR/ws-gloss/ W3C (2008) Extensible Markup Language (XML) 1.0 (Fifth Edition). W3C Recommendation 26 November 2008. Retrieved on November 13th, 2012 from: http://www.w3.org/TR/2008/REC- xml-20081126/ W3C (2012a) Web API Design Cookbook. W3C Working Group Note 02 October 2012. Retrieved on November 13th, 2012 from: http://www.w3.org/TR/api-design/ W3C (2012b) Web IDL. W3C Candidate Recommendation 19 April 2012. Retrieved on November 13th, 2012 from: http://www.w3.org/TR/WebIDL/ W3C (2013) The WebSocket API. Editor's Draft 30 January 2013. . Retrieved on January 31st, 2013 from: http://dev.w3.org/html5/websockets/ XMPP Standards Foundation (2013). http://xmpp.org/

134

D2.1

Cloud-based Services Analysis

Annex II: Complete List of Services Prioritization

Advertising – Services Prioritization Note: Advertising is considered a very important category, thus all the recognized services that have a mobile end point and an API have been selected.

Type Description advertisers publishers Apps Active Users Comments

Search for Amazon Amazon Product products to promote Advertising Ad.Network them on an app yes yes deep mobile integration and high level of interaction and Google Admob Ad.Network Advertising on mobile no yes awareness many different sdks and api support. deep Advertising network on mobile CityGrid Ad.Network web & mobile apps integration Partnership of Facebook with Developers to create plugins for Facebook Pages. Optimize social plugins, manage ad campaigns, measure performance and develop effective Facebook ads marketing strategies (retargeting) Ad.Network for Facebook. yes yes 1.000.000.000 AirPush (Push no API, Notifications only ad.network) Ad.Network yes yes 77.748 libraries no API, TapJoy only advertising Ad.Network yes yes 20.000 110.000.000 libraries Medialets Private Marketplace is a buying platform that lets advertisers directly plan, buy, execute and measure brand advertising on the world’s top publishers’ Medialets Ad.Network mobile properties. yes yes Millennial Media is a mobile advertising platform. It exports an Server API with Millenia Media Ad.Network statistics yes yes CrispMedia Ad.Network mobile in-browser ads yes yes IAB About Ads Ad.Network advertising yes yes

135

D2.1

Cloud-based Services Analysis

Type Description advertisers publishers Apps Active Users Comments

(behavioural targeting principles) a mobile advertising technology company with mobile advertising solutions to mobile no Data network operators, Export API, Amobee publishers, and just embed (ad.marketplace) Ad.Network advertisers. yes yes Adv no meaning for OPENi Google AdSense yes no apps no meaning for OPENi Google AdWords no yes apps no meaning Google Affiliate for OPENi Network yes yes apps RadiumOne no API only iOS iAd based AdRoll (retargeting) no API Personalyze (site no service personalization) found AdTruth (fingerprinting) no API only share LinkedIn to a site ad.network 175.000.000 API Auditude Adobe Video (fingerprinting) Advertising no API Jumptap yes yes no API in Browser Ad.Marver advertising (ad.exchange) Advertise in opera-mini network PointRoll Flash API (ad.network) Ad.Network for content still only web and no API for Data export has been TrustE Optout organization for privacy yes yes spotted

Network Initiative to stop Advertising participating on Initiative, NAI Optout Behavioral Advertising No API

136

D2.1

Cloud-based Services Analysis

Type Description advertisers publishers Apps Active Users Comments

They are integral to the buying and selling of quality digital media. Their data and solution set works within all phases of an advertising campaign, from planning, to execution and optimization, to AdSafe -> measurement and price Integral Optout analysis. Market API

no API for ads inside the feed or video, only Youtube.com guidelines for 3rd party (ad.network) Ad.Network ads no API no analytics API MADS Ads only (ad.network) Ad.Network mobile advertising with SDK Mobile Advertising with Ad Triple focus on Spanish (ad.network) Ad.Network publishers no API Niobium (Push Mobile development Notifications) company no API

Analytics – Services Prioritization

Service Type Description Comments

Flurry Analytics Mobile Analytics and advertising network (analytics)

Mixpanel Analytics

Google Analytics Analytics

InMobi Analytics Apps SDK only (analytics)

Localytics Analytics Localytics is built to measure apps. closed data, not available in 3rd party The mobile app analytics platform resources (analytics) provides real-time data and the insights with light footprint. App Annie Analytics no API (analytics)

137

D2.1

Cloud-based Services Analysis

Contacts – Services Prioritization Note: ActiveSync needs a license from Microsoft to work on devices. For that phase of the project, we will focus on publicly available resources, like Google Contacts that can sync with and Android Users. In order to be capable to work on a generalization of the Contacts API and test it on different services, the W3C standard API will be taken into account.

Type Selected Commnet

ActiveSync Address book Needs Licence Google Contacts Address book x Plaxo Social address book no API iCloud Contacts Address book no web API

File Transfer & Syncing – Services Prioritization Note: It was not possible to find the number of subscribed users for every service. Nevertheless, every one of the certain services has also a web interface in order to control the files exchanged and synced. Thus, the unique visitors have been selected as the main criterion. On the same time, it is a category where users are moving based on the offers and the needs of storage space. For that reason we also took into consideration the trend for every service, with a greater than usual weight (0,2) in order to count that transition.

Unique Visitors Trend (0,2) (0,8)* (US *Alexa Reach visitors Type based on Score Selected measured by graph for max Compete for time October of 2012) Box.net enterprise oriented file sharing 85.520 -1 -0,19 Dropbox file syncing & collaboration 4.867.876 1 0,97 x SkyDrive file syncing & collaboration 5.050.905 -1 0,6 x SugarSync file syncing & collaboration 104.687 0 0,02

Gaming – Services Prioritization

Type registered users Selected Comments Games Heyzap recommendations x Flash games, not accessible on iOS Joyrack devices Zynga Games 50.000.000 x Discontinued

Health – Services Prioritization

Type price model Availability Comments social characteristics Fitocracy and motivation 5 dollars/month available worldwide no official API social characteristics for Foodspotting selecting places to eat free available worldwide only for diet habit Nike+ no API

138

D2.1

Cloud-based Services Analysis

social characteristics RunKeeper and motivation free available worldwide

social characteristics FitBit and motivation free need separate device

Location-Based Services – Services Prioritization Note: Geoinformation services have been grouped separately. From the remaining services, we were able to identify the venues that a service was providing based on Google Search Results for specific URL path. Nevertheless Google Places has not a unique path for venues, but they are accessible through Google Maps. For the same reason we were not able to measure the Trend for Google Places. At the end we excluded Google Places because of its limited API capabilities to create new venues. As a reference of places, nevertheless, it is recommended because it has validated venues and may be an option of the demo process to include it.

Unique Visitors* Venues (US visitors Trend *Alexa (extracted measured Reach based Type from Selected Comments by on graph for Google Compete max time Search) for October of 2012) Brightkite 1.408 down site:foursquare.com location based inurl:/v/ on Google Foursquare social network 16.900.000 2.400.338 -1 x Search

visitors through google maps or reference; no standalone API to submit a place; It is a search- only API, for that reason it will be studied as a Google Places places info 64.425.068 Google Search Service Yahoo Local Search 14.677.362 -1 US only

site:yelp.com inurl:www.yelp.com/biz/; Yelp places reviews 73.500.000 19.861.350 1 x not worldwide cover

Supporting geocoder geo info GeoNames geo info

139

D2.1

Cloud-based Services Analysis

Mapping – Services Prioritization Note: Searching for quality factors (accuracy, speed, updated) on maps was not feasible. For that reason we focused on the supplementary services attached to a mapping service. Such services provide better user experience and indicate the popularity and usefulness of a mapping service. Additionally, a visualization service has been indicated with yellow, in case that it will be needed for a demo.

Included services Type Selected Services Bing Maps Geocoding map services x Transit Traffic Directions Places Street View Venue View Different Map View Google Earth Multiple Views map services Sky view Google Maps Directions map services x Places Street View Different Map View Traffic Transit Geocoding MapLarge visualize big data bigdata visualization on maps MapQuest Geocoding map services Directions Traffic Different Map View Places OpenLayers Geocoding map services Different Map View OpenStreetMap Geocoding map services Cycle Map Transit Yahoo! Maps Geocoding map services SHUTTING Traffic DOWN Different Map View Directions Places Nokia Maps Geocoding map services Places Different map View Directions

Messaging – Services Prioritization Note: Messaging may have different forms. It may be IM, SMS or email. Nevertheless there is a level of interoperability that redirects messages respectively. Thus we separated existing services in three new categories: emailing was not an option. For IM, Facebook and Google have the biggest community. Facebook also offers a different XMPP API for chatting. For SMS services, Nexmo was the most popular service, while Twilio is another option for b2b solutions, directly connected to the telephony category.

140

D2.1

Cloud-based Services Analysis

Type Active Users Selected Comments

411Sync no API available AOL Instant http://venturebeat.com/2012/07/26/aol- Messenger IM 24.000.000 mail-redesign/ Facebook Chat IM 1.000.000.000 x Google Talk IM 425.000.000 x Jaiku dicontinued MSN Messenger IM 360.000.000 hotmail accounts Yahoo Mail IM/email 298.000.000

SMS services Nexmo Wholesale reach 5b phones globally SMS SMS service 5.000.000.000 x http://nexmo.com/ As it has been chosen already for Twilio SMS SMS Service x telephony Tropo SMS Service

email services (not chosen as they can be replaced from services above) MailChimp multiple mail SendGrid mail delivery

Music – Services Prioritization Note: Registered users could not be found for every service, even if unique visitors imply the size. Thus we were based on the unique visitors, aka the audience, and on the trend of the service.

Unique Visitors (0,9)* (US visitors Trend (0,1) measured by *Alexa Reach Compete for based on October of graph for max

Type 2012) time Score Selected Comments Echo Nest Music Database 6.795 0 0,00 Grooveshark Music Streaming 1.376.374 -1 0,27 Last.fm Broadcast music 2.797.188 -1 0,64 x Mixcloud Broadcast music 89.876 1 0,12 MusicBrainz Music Encyclopedia 17.436 0 0,00 Rhapsody Broadcast music 826.066 -1 0,12 SoundCloud Share music 3.383.385 1 1,00 x iTunes Connect no web API MTV not available Pandora Broadcast music 17.034.893 -1 US only SeeqPod stopped mobile only, limited countries, web API brings catalogue of Spotify 2.393.108 1 songs Turntable US only

141

D2.1

Cloud-based Services Analysis

Supporting Lyricsfly Lyrics LyricWiki Lyrics

News – Services Prioritization

Unique Visitors Trend (0,9)* (US (0,1) visitors *Alexa measured by Reach Compete for based on October of graph for

Type 2012) max time score selected Comments Social Digg Bookmarking 434.583 -1 -0,09 FanFeedr sports news Sports 0,00 discontinued Feedburner Aggregator 1.327.670 -1 -0,05 not supported Superfeedr Aggregator 3.429 -1 -0,10 content agnostic

Tumblr Blog 26.348.000 1 1,00 x Blogger Blog 3.054.000 -1 0,00 X Supporting Ergast Sports only as API available NOAA National Weather Service Weather US only Weather channel Weather 35.991.023 1 WeatherBug Weather 3.186.688 1 Google Finance Finance Yahoo stocks Finance

Payments – Services Prioritization

Addressing Comments Services

amazon account required, but great distribution through web and Amazon FPS Amazon amazon store

google account required, but great distribution through web. Google Checkout Android Does not support currency for many countries, mostly USA used

142

D2.1

Cloud-based Services Analysis

Addressing Comments Services

Paypal eBay support for a major variety of international customers

Stripe mostly available on web, small mobile impact Apple - In App Purchase only in app development, no web API

Photos – Services Prioritization Note: Registered users have a priority, because storing a photo requires an initial account. Thus, services with more registered users get a priority. Unique visitors are also important, as users upload their pictures to share them with friends or public. The trend of the service, is also important, to identify migration of users from one service to another. Unique Visitors (0,4)* (US Trend (0,1) visitors *Alexa Registered measured Reach based Score Selected Comments users (0,5) by on graph for Compete max time for October of 2012) We choose Flickr as a third option, in order to make better API mapping. Flickr even if it declines as a service, it has both storage characteristics (closer to Picasa) and some social ones (closer to Instagram). Thus, it is a good alternative in order to describe the APIs, even if it is not going to be Flickr 50.000.000 15.794.041 -1 0,36 x used in first case. users are considered the Google+ Google Picasa 400.000.000 626.739 -1 0,42 x subscribed ImageLoop 0,00 no API Instagram 100.000.000 11.573.097 1 0,52 x now starts to be web available Panoramio widget only API http://blog.photobucket.com/blog/ Photobucket 100.000.000 13.852.514 -1 0,38 2012/04/photobucketpixlr.html Smugmug 2.356.200 0 0,06 TwitPic Twitter now supports photo Yahoo Image Search Deprecated For buying and selling stock photos. API functionality for: full search capabilities, file downloading, lightbox iStockPhoto unknown 686,556 x management, member statistics,

143

D2.1

Cloud-based Services Analysis

Unique Visitors (0,4)* (US Trend (0,1) visitors *Alexa Registered measured Reach based Score Selected Comments users (0,5) by on graph for Compete max time for October of 2012) contributor portfolio management, image uploading For buying and selling stock photos. API for Search and GettyImages unknown 4000000 x metadata

Search – Services Prioritization Note: Search engines cannot be evaluated for their popularity, as in OPENi they will be used by a developer to enhance search capabilities on apps. For that reason focus has been given on practical criteria, like the different sources where a search applies (semantics), the limit for transactions as many engines are very expensive and the trend for every service measured by Alexa. Freebase seems the best choice, but Google Search could not be omitted. Yahoo has been chosen as a third option, because Freebase is more semantically oriented and may not be that functional in some cases.

Trend (0,1) number Free Limit *Alexa of (transactions Reach Selected Source Types source Type Score /month) based on Services types (0,2) graph for (0,8) max time Web Images News Videos Travel Related Search Bing Spelling Suggestions 7 5.000 Web Search 0 0,45 news articles blog posts Semantic OpenCalais research reports 3 1.500.000 Search -1 0,13 companies people CrunchBase investors 3 7.200.000 Tech Search -1 0,29 Semantic DBpedia Wikipedia articles 1 - Content 0 0,26 Featured Data Arts & Entertainment Commons Products & Services Science & Technology Society Special Interests Sports System Time & Space Semantic Freebase Transportation 11 3.000.000 Search -1 0,68 x

144

D2.1

Cloud-based Services Analysis

Trend (0,1) number Free Limit *Alexa of (transactions Reach Selected Source Types source Type Score /month) based on Services types (0,2) graph for (0,8) max time Web Photo Video Blogs Applications Books Google Custom Patent Search Discussions 8 3.000 Web Search 0 0,51 x Travel HotelsCombined Hotels 1 Search 1 indeed Jobs 1 - Job Search 1 0,36 Kayak Tickets 1 New York Times Article Search News 1 0 0,26 newspapers eBay ForRent.com Oodle Myspace 4 - Classifier -1 0,35 SImply Hired Jobs Jobs 1 Blog Technorati Blogs 1 aggregator -1 Real Estate Trulia Homes 1 150.000 Search 1 0,17 Wikipedia Articles 1 Web Images Video Local Shopping Apps News Blog Yahoo BOSS Sports 9 0 Web Search -1 0,47 x Real Estate Zillow Homes 1 30000 Search 0 0,06 Custom Search for Amazon A9 other OpenSearch Products 1 0 domains 1 0,16

Shopping – Services Prioritization Note: Shopping initially was split in three categories. The retail one, supporting services to ship or identify a product, and b2b services. The B2B services were selected automatically. The retail services were based on unique visitors an trend for the service; a popular shopping service on audience is possible to bring more customers.

145

D2.1

Cloud-based Services Analysis

Unique Visitors (0,9)* (US visitors Trend (0,1) *Alexa measured by Type Reach based on Rating Selected Comments

Compete for graph for max time October of 2012) Best Buy BBYOpen online only for America Products 20.786.614 Products 0 0,23 x (South & North) Product CNET 13.933.391 reviews -1 0,06 eBay 80.192.718 Auctions 0 0,90 x Handmade Etsy 9.833.000 Products 1 0,21 Groupon 13.825.000 Offers -1 0,06 Shopping.com 7.805.510 Products -1 -0,01 Shopzilla 8.826.082 Deals -1 0,00 Custom Zazzle 5.310.954 products 0 0,06 TESCO API down Yahoo Shopping Discontinued Mashup 8coupons Offers -1 US only

Supporting FedEx Shipping 0 Barcode GEPIR DB 1 Barcode UPC Database DB 0 UPS Shipping 0 US Postal Service Shipping -1

B2B only Amazon MarketPlace Data for trend refers to Web Service sellers 1 x amazon.com Salesforce.com CRM 1 x

Social – Services Prioritization Note: On Social Services, trends are more important than static metrics (registered users), as users tend to change services more often. For that reason Trend has a greater weight (0,2), a social factor has been taken into account (facebook likes) and monthly active users are our main criteria.

146

D2.1

Cloud-based Services Analysis

Monthly Trend (0,2) Active Users *Alexa (0,7) * Facebook Reach websites and Likes Ranking Type Score Selected services

market (0,1) based on analysis graph for reports max time Del.icio.us 13130 -1 Bookmarking -0,25 Disqus 91.506.436 5736 1 Social Q&A 0,30 Facebook 1.000.000.000 80.604.228 1 Social Network 0,84 x Google+ 100.000.000 125059 1 Social Network 0,30 Klout 100.000.000 360072 0 Social Ranking 0,05 LinkedIn 187.000.000 160757 1 Business Network 0,35 x MySpace 3.800.000 1052830 -1 Social Network -0,25 Path 2.000.000 26135 1 Social Network 0,25 Pinterest 25.000.000 2403139 1 Social Network 0,26 Reddit 46.800.000 247397 -1 Social Q&A -0,22 Tumblr 79.000.000 1611952 1 Blogging 0,29 Twitter 637.000.000 9290624 0 0,35 x Yahoo Answers 200.000.000 52064 -1 Social Q&A -0,14 Posterous 16.000.000 4748 -1 Blogging -0,24

Telephony – Services Prioritization Note: When trying to reach another VoIP user, the size of the community is one of the first options. Inevitably Skype was the primary selection. Google Voice even if it could be the second option, it does not offer an official API yet. As a second choice, Twilio was selected because of its broad business-clients base. It does not offer a client, thus users cannot be counted, but it is a popular B2B solution.

3rd party Registered API premium Selected Users Developers Price Model support subscription Services Skype 280.000.000 credit based system yes yes x Twilio 150.000 credit based system yes no x Google Voice 425.000.000 credit based system yes no ooVoo 50.000.000 credit based system yes no

Video – Services Prioritization Note: Registered users could not be found for every service, even if unique visitors imply the size. Thus we were based on the unique visitors, aka the audience, and on the trend of the service.

147

D2.1

Cloud-based Services Analysis

Unique Visitors Trend (0,1) (0,9)* (US *Alexa Registered visitors Reach Type Score Selected Comments users measured by based on Compete for graph for October of max time 2012) AOL Video no API available BBC no API available Dailymotion Share Video 10.150.795 0 0,06 x Livestream Stream Video 1.646.437 -1 -0,99 LiveVideo 0,00 off Ustream Stream Video 1.742 -1 -1,00 Vimeo Share Video 8.000.000 9.547.636 0 0,05 Yahoo Video Search 0,00 deprecated https://www.go ogle.com/adplan ner/?pli=1#siteS YouTube Share Video 390.000.000 157.838.341 1 1,00 x earch

Supporting IMDb Movies Database 20.437.374 -1 Movies Netflix Recommendation 36.382.093 1 Rotten Tomatoes Movies Database 1.978.523 -1

148