System and method for authorizing and connecting application developers and users

Information

  • Patent Grant
  • 9336500
  • Patent Number
    9,336,500
  • Date Filed
    Friday, September 21, 2012
    11 years ago
  • Date Issued
    Tuesday, May 10, 2016
    7 years ago
Abstract
A system and method for authorizing application use of a user that can include creating a developer account associated with an application of an application platform; receiving an authorization request to authorize the application to act on a user account; creating a subaccount of a user, wherein the subaccount is associated with the developer account; creating an authorization record, that includes setting a permission profile for the subaccount; and returning a subaccount identifier to the developer.
Description
TECHNICAL FIELD

This invention relates generally to the telephony field, and more specifically to a new and useful system and method for authorizing and connecting application developers and users in the telephony field.


BACKGROUND

In recent years, there has been an explosion of interest in customized application software executable on one or more types of devices, including personal computers and mobile devices. In the telephony market, however, the development of an application ecosystem has been stunted in part by the lack of an efficient system and/or method for managing relationships between the software developers and the application users. In particular, given that many telephony services are priced at variable rates, many talented software developers are trying their hand creating easier-to-manage flat-fee applications for sale. In effect, the complexities of telephonic billing act as an artificial barrier to entry against application developers, who lack the resources and desire to compete with established telecommunications players in the commercial domain of the latter. Given the importance of communications, however, there is a great need for attracting more developers and applications into the telephony marketplace. Thus, there is a need in the telephony field to create a new and useful system and method for authorizing and connecting application developers and users. This invention provides such a new and useful system and method.





BRIEF DESCRIPTION OF THE FIGURES


FIG. 1 is a schematic block diagram of a system according to a preferred embodiment of the present invention;



FIG. 2 is a schematic block diagram of another aspect of the system of the preferred embodiment of the present invention;



FIGS. 3A, 3B, 3C, and 4 are schematic block diagrams of another aspect of the system 10 of the preferred embodiment of the present invention;



FIG. 5 is a schematic block diagram of another aspect of the system of the preferred embodiment of the present invention;



FIG. 6 is a schematic block diagram of another aspect of the system of the preferred embodiment of the present invention;



FIG. 7 is a schematic block diagram of a method according to a preferred embodiment of the invention;



FIG. 8 is a detailed flowchart a subaccount creation process of a method according to a preferred embodiment of the invention;



FIG. 9 is a detailed schematic block diagram of allowing subaccount usage of an application a method according to a preferred embodiment of the invention; and



FIG. 10 is a flowchart depicting additional aspects of the method according to the preferred embodiment of the present invention.





DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of the preferred embodiments of the invention is not intended to limit the invention to these preferred embodiments, but rather to enable any person skilled in the art to make and use this invention.


1. System for Authorizing and Connecting Application Developers and Users



FIG. 1 is a schematic block diagram of a system 10 for authorizing and connecting application developers and users in accordance with one or more preferred embodiments described below. FIG. 1 also illustrates an operating environment of the system 10 of the preferred embodiment, which can include for example an Application Programming Interface (API) of the type generally available from the assignee of the present application. As used herein, the term API should be understood to mean any combination of software, firmware, and/or hardware that allows two or more software applications (i.e., machine-readable instructions) to communicate with one another. The system is preferably used in combination with an application platform with an API. The application platform preferably enables developer creation of applications utilizing at least some features of the platform. In one variation the application platform is a communication platform used for voice, video, or messaging. An example API can be configured as a telephony platform such as one substantially similar to the one described in published U.S. Patent Application No. 2009/0252159, titled “SYSTEM AND METHOD FOR PROCESSING TELEPHONY SESSIONS”, assigned to the assignee of the present application, and hereby incorporated in its entirety by this reference.


As shown in FIG. 1, the API 12 of the preferred embodiment functions to permit one or more developers 14 (DEV A, DEV B, DEV C) to independently and efficiently create software programs for telephonic applications 16, including, but not limited to telephony-based voice calls, internet based voice calls, video calls, video streams, video sessions, screen sharing, screen sharing streams, screen sharing sessions, SMS messaging, MMS messaging, IP-based messaging, proprietary messaging, alternative messaging, or any suitable form of communication. The applications 16 can be stored and retrievable in a database or databases (not shown) and made accessible to one or more users or purchasers. Applications may be stored in the database as a Uniform Resource Identifier (URI) reference to an application hosted by the developer or alternative. The URI will preferably reference the application located on a server maintained by the developer. Preferably, the applications 16 (APP A, APP B, APP C) created by the developers 14 can be associated with a user account of each respective developer. In one variation of the system 10 of the preferred embodiment, each application 16 can be uniquely identified according to its own user account. Alternatively, each application can be uniquely identifiable, but remain associated with one or more user accounts of the respective developer.


The system 10 of the preferred embodiment can further accommodate one or more users 20 (USER 1, USER 2), who can be independent third parties including individuals or businesses that desire to use a selected application for a particular purpose. A user preferably has an account. As shown in FIG. 1, the users 20 of the system 10 of the preferred embodiment can be associated with the applications 16 through one or more subaccounts 18 (APP A′, APP B′, APP C′). A user may additionally be associated with a plurality of subaccounts for various applications as shown for USER 2. Thus a single user can use a single user account to use multiple applications developed by different developers. Subaccounts 18 are preferably child accounts linked to a main account of the user 20. The subaccounts may alternatively be defined within parameters of the user account. Subaccounts are preferably associated with an application 16 provided by a developer account. Alternatively, the subaccounts 18 can be uniquely associated with each application 16, or each developer 14, or any suitable combination thereof. In another alternative, the subaccounts 18 can be configured as partitions or uniquely identifiable portions of the parent account application 16. In one variation of the system 10 of the preferred embodiment, each application 16 can be associated with a unique developer account on the one hand and one or more unique user subaccounts on the other hand, such that each developer can create an application/account associated with multiple users/subaccounts.


As shown in FIG. 1, the system 10 of the preferred embodiment can facilitate management and interaction between the developers 14 and the users 20 through the creation of the subaccounts 18 and through a delegation process 22 and a user authorization process 24 described in more detail below. Permissions are preferably granted for an application or developer account to operate on a user account. These permissions are preferably defined with respect to the subaccount of the user associated with the particular application. Preferably, the developer 14 can create a list of delegable items or permissions, such as for example read-only access to the API (e.g., log access, event or message access), full access to the API (e.g., making calls, sending SMS messages, purchasing or modifying phone numbers) and access to all caller ids. In other words, permissions preferably can define how an application may access data or act on behalf of a subaccount of a user. The subaccounts may additionally be configured for customized use of an application. In one variation the system and method of a preferred embodiment may be integrated with a system or method substantially similar to the one described in published U.S. Patent Application No. 2011/0283259, titled “METHOD AND SYSTEM FOR CREATING A PLATFORM APPLICATION WITH MULTIPLE APPLETS”, filed 14 Jun. 2011, assigned to the assignee of the present application, and hereby incorporated in its entirety by this reference.


As used herein, API configuration/s are preferably RESTful in nature, and the applications 16 also preferably observe the principles of a RESTful design. RESTful is understood in this document to describe a Representational State Transfer architecture as is known in the art. The RESTful HTTP requests are preferably stateless, thus each message communicated from the call router to the application server preferably contains all necessary information for operation of the application server and response generation of the application server. Hardware communications elements such as routers and servers preferably do not need to remember or store previous communications to be aware of the state. Documents, media, and application state are preferably viewed as addressable resources, combined with data provide to the resource via request parameter, such as HTTP GET or HTTP POST parameters, or request body contents. Such request data may include an updated representation of the call resource, or other call state data generated as a result of call router operation, such as digits pressed on the keypad or audio recordings generated.


State information included with each request can include a unique call identifier, call status data such as whether the call is in-progress or completed, the caller ID of the caller, the phone number called, geographic data about the callers, and/or any suitable data. Alternatively, a varying level of a RESTful communication (statelessness) can be used, such as by using cookies, session tracking, or any suitable devices to simulate a normal website visitor model. Preferably, data sent with each request can fully enable the application server to determine the next state of the call to execute. RESTfulness preferably does not preclude using external datasource, such as a database, to lookup additional data to log call meta data, or determine application logic.



FIG. 2 is another schematic block diagram illustrating additional aspects of the system 10 of the preferred embodiment. As shown, a user 20 can interface with a developer website 32 in order to discover and/or acquire an application 16 of the type described above. In one variation of the system 10 of the preferred embodiment, the developer website 32 can be configured to redirect the user 20 to a separate website 34, such as that of the assignee of the present application. At the separate website 34, the user can authenticate and/or create a user account to delegate API access or other permissions for a subaccount associated with an application. Alternatively, the developer website 32 may utilize an API to cooperatively communicate with an application platform to authenticate and/or create a user account. As shown in FIG. 2, the developer 14 can create and/or store his or her application 16 in an application database 36 affiliated or associated with the website 34, such that when as user 20 requests access to an application 16 he or she is redirected to a centralized or quasi-centralized repository of applications 16 configured for interfacing with the API 12. As described above, the application database 36 may be a URI reference to an application or application assets hosted on an outside server or device.


In other variations of the system 10 of the preferred embodiment, the website 34 can request or require of the user 20 the creation of a separate user account 18, which can be configured as a subaccount 18 associated with the developer's account/application 16 as described above. The subaccount 18 of the preferred embodiment can be configured with one or more permissions, restrictions, delegations and the like for establishing the boundaries of the application's permitted usage of the subaccount 18. The permitted usage preferably specifies the ways in which the application associated with the subaccount can interact with or on behalf of the user account. Alternatively or additionally, the permitted usage may determine what actions or features of the application a subaccount may use. FIGS. 3A, 3B and 3C schematically represent variations of the system 10 of the preferred embodiment. As shown in FIGS. 3A, 3B, and 3C, multiple independent applications can be simultaneously authorized, and the use of subaccounts prevents data sharing between the applications. As an example, the respective applications will not have access to call records, SMS records, or phone numbers of other developer-authorized applications.


In one variation of the system 10 of the preferred embodiment, data flow (call records, SMS records, phone records) between an account 16 and a subaccount 18 can be asymmetrical and/or restricted in that data relating to the subaccount 18 can be accessed by the account 16. Alternatively, certain permissions can allow for the flow of data (in whole or in part) from the account 16 to one or more subaccounts 18, or between sibling subaccounts 18. In another alternative, access to all caller ids as shown in FIG. 3C lets an application use a phone number of a parent account or sibling subaccount as the caller ID for a phone call or message placed by the subaccount affiliated with the application. In another alternative, the owner of the account 16 can reconfigure or redefine the permission profile of the subaccount 18, including expanding or limiting the permissions and authorizations of the subaccount 18 as well as complete revocation or termination of the subaccount 18.


As shown in FIG. 4, another variation of the system 10 of the preferred embodiment can include an account ID module 60 that functions to receive one or more passwords (or secure IDs) 62 and correlate the received passwords 62 to one or more permission sets 64. Preferably, the account ID module 60 can be disposed at or in communication with the API 12 and/or an account database 70. Preferably, the account ID module 60 can be stateless and receive the passwords 62, pass the passwords to the account database 70, and receive any associated permissions 64 in response thereto. The receipt and transmission of the passwords 62 and the associated permissions 64 can be accomplished through HTTP, HTTPS, or any other suitable transport layer protocol/s. Preferably, all account data is maintained in a secured and/or encrypted format, and the account ID module 60 does not have to encrypt/decrypt any transmitted data. For example, the passwords 62 can include one or more tokens containing unique or quasi-unique identifying information that can be passed through the preferred system 10 with little risk of compromising the information contained therein. Similarly, the permissions 64 associated with the passwords 62 can include a second token or a hash of the password token and the permission set data, which can also be passed through the preferred system 10 in the same manner. As shown in FIG. 4, there is preferably a one-to-one correlation between the password 62 and its associated permissions 64. Moreover, there is not necessarily the same correlation between a user account 18 and the permissions 64, as the user account 18 can include a single user ID having multiple passwords 62, each of which is associated with a set of permissions 64. As an example, each of the subaccount users shown in FIGS. 3A, 3B, and 3C can be associated with a different password for the user account 18. Accordingly, upon entry of each password 62, the users are associated with one or more features or aspects of the subaccounts through the corresponding set of permissions 64.



FIG. 5 is a schematic block diagram depicting additional aspects of the system 10 of the preferred embodiment. As shown, a developer account 40 or parent account can be associated with two or more authorized subaccounts, such as SUBACCT A 42 and SUBACCT B 44 with distinct permissions (read-only, read-write, callerid, and the like.) Each of the subaccounts preferably has their usage individually metered. This usage preferably does not count against the developer account of the other subaccount. This usage is preferably stored and can be used in determining compensation required from a user account. Similarly, limits on the amount of usage for a subaccount may be set. As an example, metering and/or compensation for the subaccount access or usage can be based on minutes, data consumption, SMS message allotment, permissions, restrictions, authorizations or any suitable combination thereof. Accordingly, if the application 16 in question is a voice communication application, then the user 20 can create a subaccount 18 containing a certain number of minutes/megabytes of usage on that particular account. Similarly, in an enterprise context, more than one subaccount 18 can have callerid-type access to a group of potential phone numbers associated with the primary account and/or the several other subaccounts 18.


Additional aspects of the system 10 of the preferred embodiment are shown in FIG. 6, which is a schematic block diagram illustrating one example environment in which users, developers and API providers can create, sell, and use applications of the type described above. As shown, a control module 50 or market can interface with one or more developers 14 attempting to create and/or distribute their application content. Preferably, the control module 50 functions to distribute and account for one or more applications 16 created by the developers 14. The control module 50 of the preferred embodiment can include one or more computers, servers, or a distributed network of computers and servers accessible by one or more users. Alternatively, the control module 50 can reside entirely in a cloud system. The control module 50 of the preferred embodiment can also include software development assistance. As an example, the control module 50 can include for example Twilio brand customized software solutions configured to assist developers 14 in the creation of applications suited for use with one or more Twilio brand APIs.


The system 10 of the preferred embodiment can also include a server 50A or storage system (such as a cloud-based storage system) for one or more applications 16 (shown A-D) created by the developers 14 and hosted by the control module 50. The server 50A of the system 10 of the preferred embodiment functions to host and/or electronically distribute the applications 16 to users 20. In one variation of the system 10 of the preferred embodiment, the control module 50 can be integrated with the server 50A. Alternatively, the control module 50 can include a front-end developer interface and backend accounting and system management module/s separate and distinct from the server 50A.


In the system 10 of the preferred embodiment shown in FIG. 6, users A through D 20 can be individual and/or corporate consumers of telephony applications of the type described above. For example, the users 20 might have interests in applications 16 relating to voice or SMS communications, customer relations management, enterprise communications, or any other suitable application for which the API 12 is suited. While the developers 14 associated with the applications 16 might have a strong affinity for software development, the commercial management and widespread distribution of an application might not interest all developers 14. As such, the system 10 of the preferred embodiment shown in FIG. 6 permits the users 20 to pay one or more variable rate type fees (i.e., fees based on allocated minutes, data, permissions, restrictions, and the like) to the control module 50, which is more readily adapted for management of such a complex commercial environment. The fees may be collected for usage of a specific subaccount of an application or more preferably for the consolidated usage of all subaccounts and the user account. For example a user account may use two different applications (i.e., has two subaccounts) and may additionally have its own application using the platform, and the user account can pay a single fee. The control module 50 can then compensate the developers 14 in response to the variable rate fees received from the users 20 for the usage of the various applications 16. The compensation may be in credit or as a monetary transaction). In one alternative, the control module 50 can compensate the developers 14 in proportion to the number of applications 16 hosted on the server 50A. Alternatively, the control module 50 can compensate the developers 14 in proportion to the amount of variable rate fees consumed by the users 20 of the respective applications 16. As an example, if user A pays $20.00 per month to the control module 50 for data consumption related to application A, then the control module 50 can compensate the developer of application A in some proportional amount, i.e., a fixed or variable percentage of the fees received per application.


Aspects of the system 10 of the preferred embodiment can be configured in a computer-readable medium storing computer-readable instructions. The instructions are preferably executed by computer-executable components that are preferably integrated with the API 12, the application/s 16, the subaccount/s 18, the control module 50 and/or server 50A. The computer-readable medium can be stored on any suitable computer readable media such as RAMs, ROMs, flash memory, EEPROMs, optical devices (CD or DVD), hard drives, floppy drives, or any suitable device. The computer-executable component is preferably a processor but the instructions can alternatively or additionally be executed by any suitable dedicated hardware device.


2. Methods for Authorizing and Connecting Application Developers and Users


The system 10 of the preferred embodiment, in its various aspects and variations, can be configured to perform one or more methods of the preferred embodiment. As shown in FIG. 7, a method for authorizing and connecting application developers and users of a preferred embodiment can include creating a developer account associated with an application S110, receiving an authorization request to authorize the application to act on a user account S120, creating a subaccount for a user, wherein the subaccount is associated with the developer account S130, creating an authorization record associated with a subaccount S140, and returning a subaccount identifier S150. The method functions to enable app developers on an application platform to allow users with their own account to use an instance of the developer's application. The use of subaccounts has many benefits such as segregating user data, enabling varying levels of functionality according to a permission profile, easier fee management, and other benefits. One benefit of the system and methods of the preferred embodiments is conferred by the use of subaccounts, which permits a user to distribute his or her authorizations and/or application to a number of developers while protecting against the inadvertent sharing of application-related information. If a developer authorizes multiple independent applications, the user of sub-accounts prevents data such as call records, SMS records, and phone numbers that are used by one application from being seen or modified by another application. The method is preferably performed by a system as described above at an application platform, and the application platform is preferably a telephony application platform such as the one provided by the assignee of the present application.


Step S110, which includes creating a developer account associated with an application, functions to assist in hosting, distributing, and accounting for any application/s created by a developer. The developer account is preferably the account mechanism within an application platform from which a developer may manage account settings and application settings. A developer account may be substantially similar to a user account, but a developer account is distinguished by including an application that may include subaccounts. In one variation of the method of the preferred embodiment, the developer account can itself be a subaccount of a second developer account (i.e., the developer account is a user subaccount of the second developer account). Thus a developer can nest different applications/subaccounts within a larger account framework. Creating a developer account can additionally include setting subaccount settings for a developer account. The subaccount settings may determine permission profiles, resources to support subaccount creation process, and any suitable parameter of an application. The resources to support subaccount creation process preferably include URIs for the application, authorization callbacks, deauthorize callbacks, and/or any suitable URIs of the application. As described later, the application platform preferably returns the authorization record to the authorization callback URI of the developer. As noted above, suitable applications can include for example software or other machine-executable instructions that use an API 12 of the type described above. Example applications can include, but are not limited to telephony-based voice calls, internet based voice calls, video calls, video streams, video sessions, screen sharing, screen sharing streams, screen sharing sessions, SMS messaging, MMS messaging, alternative messaging, or any suitable form of communication. Applications of the method of the preferred embodiment can include targeted and/or selected access to a REST API of the type described herein; and the applications preferably obey the principles of RESTful design described in detail above.


Step S120, which includes receiving an authorization request to authorize the application to act on a user account, functions to initialize the subaccount creation process. The authorization request may be formed as a request to create a subaccount of an application. The authorization request is preferably initialized by receiving an HTTP request at the application platform. The authorization request preferably includes an application or developer identifier, and may additionally include user account information. The developer account or application to associate with the received subaccount creation request may alternatively be determined in any suitable manner. A user action preferably initiates the sending of the subaccount creation request. In one variation of the method of the preferred embodiment, the user can locate an application on a website or other service provided by the application developer. Alternatively, the user can access the developer application on a centralized server, market, or control module associated with the API of the type described above.


The interface presented to the user during the authorization/subaccount creation process can be through an interface provided by the application platform or alternatively through a third party site or application. In one variation, a user will click on or activate a link from a developer website which will open or redirect the user to a page of the application platform. In this variation, the application platform will be visible to the user. In another variation, a user will interact with an application or site of the developer, and the developer site will use an API to programmatically communicate with the application platform and to begin the authorization process. In this variation, the application platform and the authorization process can be transparent to the user.


Step S130, which includes creating a subaccount for a user, wherein the subaccount is associated with the developer account, functions to create a subaccount of the user account and associate the user and the subaccount with an application. Creating a subaccount further functions to separate the functional authorizations of the user from those of the main account (developer account or application) thereby permitting a developer to partition and commercialize his or her application using the API. In a variation of associating the subaccount with the developer account, the subaccount may be associated with an application of the developer account.


The subaccount can be uniquely associated with a user account. As used herein, the term user can include any individual, corporation or artificial entity, acting either individually or collectively that is interested in the operation and/or consumption of one or more applications. In the application platform, a user preferably has a user account or will have a user account created on behalf of the user. Alternatively, the subaccount may be the only account record in the application platform for a particular user. Preferably, the user expresses an interest in acquiring access to an application. The user, the application, developer account or any suitable entity will initiate a the authorization process by submitting an authorization request in Step S120. As a result a subaccount can be created. The application platform or developer site may perform any suitable form of user authentication/authorization. In the case where the application platform has usage fees, payment information may be collected from the user. As shown in FIG. 8, the subaccount creation process can include authorizing, creating a user account, creating an authorization record, creating a subaccount, and/or any suitable subaccount step. The steps of creating a subaccount can be performed in any suitable order with using any suitable step to gate proceeding to the next step. Similarly, the steps may alternatively be performed substantially simultaneously.


Step S140, which includes creating an authorization record associated with the subaccount, functions to create a mechanism that a developer can use to act on behalf of a subaccount or enable a subaccount application. Preferably, a user or client on behalf of a user (e.g., developer site) completes the steps necessary for the application platform to authorize the user to the application and/or developer. The authorization record can include a user identification, an application identification, and a permission profile including any one or more permissions granted to the user for the identified application. The authorization record can additionally include the password or secure ID (SID) that acts as a token to later authorize subaccount actions. Preferably, the authorization record can be stored on the application server in a separate database. Alternatively, the authorization record can be stored in any suitable location, including in a server or market type environment of the type described above.


Additionally, Step S140 preferably includes setting a permission profile associated with the subaccount, which functions to establish the boundaries of the application's permitted usage of the user's subaccount. A permission profile of a subaccount or listing of requested and/or potential permissions can be directly associated with the application. Suitable and/or possible permissions can include for example read-only access, full read/write access (making calls, sending SMS messages, purchasing or modifying phone numbers) and/or access to all caller ids. Read-write access in some variations may allow an application to perform metered API calls on behalf of a user account. For example, in a telephony platform, an application may make phone calls that will count against the usage of the user account and not the developer account. In one variation of the method of the preferred embodiment, data flow (call records, SMS records, phone records) between a developer account and a subaccount can be asymmetrical and/or restricted in that data relating to the subaccount can be accessed by the account. Alternatively, certain permissions can allow for the flow of data (in whole or in part) from the account to one or more subaccounts, or between sibling subaccounts. In another alternative, access to all caller ids lets an application use a phone number of a parent account or sibling subaccount as the caller ID for a phone call or message placed by the subaccount affiliated with the application. In another alternative, permissions may set usage limits or set parameters that determine characteristics of how permissions are interpreted when being enforced. For example, a number for how many usage based API calls can be made by an application may be set. As a result the application can preferably make no more than that number of API calls on behalf of the subaccount. The permission profile may be specified in the subaccount creation request, default to a particular setting, require user input in an interface, use permission profile specified for the application/developer account, and/or be determined in any suitable manner. Permissions may be set as a group either allowing all requested permissions for an application or denying all permissions. Alternatively, permissions may be set individually allowing a user to set permissions in a piecemeal fashion.


In one alternative variation, a permission profile for the application or a developer account can be used in setting a permission profile of a subaccount. A developer permission profile is preferably created when creating or editing the settings of an application of a developer account. A developer permission profile may be used in combination with a subaccount permission profile. In one variation, the permission profile created for an application may be the permission profile used for all subaccounts associated with the application. In another variation, the intersection of permission profiles for an application and a subaccount may be the permissions used for a subaccount. For example, an application may allow API calls of the type A, B and C, and a user may set a subaccount to allow API calls of type A, B and D. As a result the subaccount will be allowed to use API calls of type A and B. The permission profile can function to determine the scope and boundaries of an application's access to a user's account and thus define the functional and commercial relationship between the developer/application and the user. Other permission limits may additionally be included in the permission profile such as usage limits (e.g., number of phone calls) or whitelisted or blacklisted actions for a subaccount.


Step S150, which includes returning a subaccount identifier, functions to verify and confirm to the developer that the user has been granted access and/or asserted permissions relating to the developer account. The subaccount identifier is preferably transmitted electronically to the developer as confirmation of the user authorization/permission access. The subaccount identification can be transmitted to a developer website through an authorization callback URI. Preferably, the authorization record or at least a portion of the authorization record, the SID, acts as the subaccount identifier. The SID is preferably returned as a parameter transmitted to the authorization callback URI. A developer will preferably retrieve the authorization record or SID and store that for application use. The subaccount identifier may alternatively be stored for access by the developer account or communicated for use by the developer in any suitable manner. The subaccount identifier can preferably be used by the developer to enable the subaccount to use their application with the privileges and permissions established for the subaccount.


As shown in FIG. 9, a method of a preferred embodiment may additionally include allowing subaccount usage by an application in accordance with the authorization record S160. Use of the subaccount resources by an application is preferably limited by the permission profile for the subaccount, the application, and/or the user account. Use of the application preferably includes receiving an API request made on behalf of a subaccount associated with an application. The subaccount identifier and more preferably the SID is used in combination with an application or developer account password or authentication token to permit the subaccount to utilize the designated REST API resources associated with the permissions and application. As shown in FIG. 4, a SID in combination with an authentication token can be used to determine the permissions for that request. A server of the application platform preferably verifies that the given application has been granted authorization to the resource or permission to perform an action. For example, an analytics application may make REST API GET requests for a call list, specifying account auth token and the SID of the subaccount of interest. If the permission profile of the subaccount allows access to the call list of the user account, then the analytics application receives the call list resources. As another example, a telephony application may make REST API requests to send a SMS message on behalf of a user specifying account auth token and the SID of the subaccount of interest. If the permission profile of the subaccount allows write/write access to send an SMS message on behalf of the user account, then the telephony platform will send the message.


A method of a preferred embodiment may additionally include facilitating a marketplace control as shown in FIG. 6, which functions to manage the marketplace operational tasks that can be associated with subaccount usage. Facilitating marketplace control preferably includes retrieving market fees and dispersing fees to a developer account. A control module preferably schedules or carries out fee retrieval routines. Fees may be collected from user accounts and/or developer accounts. According to any compensation arrangements, the control module can transfer fees to the developers. As the subaccounts are separate from the developer account, the usage and metering of the subaccounts preferably occurs independently from the developer account, such that each subaccount may be held accountable for individual use of the application. Moreover, as the subaccounts are owned by the user, the usage and metering of the subaccounts preferably is included in the usage accrued by the user account.


In another variation of the method of the preferred embodiment, the user can revoke and/or modify the permission profile for an application previously authorized, thereby preventing further usage of the REST API resources by the designated application. In another variation of the method of the preferred embodiment, the method can further include verifying at a server, such as the application server, that the permissions were properly granted by the user and properly asserted by the application.



FIG. 10 is a flowchart depicting additional aspects of the method of the preferred embodiment as viewed from a potential user. As shown, block S200 recites finding an application of interest by a user. In one variation of the method of the preferred embodiment, the application is of the type described above and created by a developer. As noted above, the developer can assign or define a permission profile to the application. In another variation of the method of the preferred embodiment, the application can be associated with a unique identifier and stored in a database. Alternatively, the application can be designated with a unique or quasi-unique identifier and stored in one or more databases, including a database or marketplace of the type described above.


Decision block S202 of the method of the preferred embodiment queries whether the user has authorized the application to access his or her account. If the response is affirmative, then, as shown in FIG. 10, the method of the preferred embodiment proceeds to block S216 in which the application is assigned a unique identification representing a subaccount of the user account. If the response to decision block S202 is negative, then the method of the preferred embodiment proceeds to block S204, in which the user is engaged to sign up with the API provider. The dialogue between the user and the API provider, which can be the assignee of the present application, can occur through any suitable communication means, including on the API developer website or on a dedicated portion or link from the developer's website. When the dialogue occurs on the developer's website the developer preferably communicates with the API provider site through an API enabling the creation and assignment of subaccounts. As previously noted, the user may come across the application on a third party or developer website, through a developer communication such as an email, or on another commercial store for applications. In such an event, the third party vendor (developer or otherwise) can redirect the user to the website of the API provider for proper authentication and registration of the user.


As shown in FIG. 10, in these variations of the method of the preferred embodiment if the user does not have an existing account (for identification, delegation and authorization purposes), then he or she is asked to create such an account in block S208. Conversely, if the user does have an existing account, then the method of the preferred embodiment invites him or her to login at block S210 thereby accessing his or her identification, delegation and authorization profile. In another variation of the method of the preferred embodiment, a user login can be conditioned upon one or more application conditions, such as for example whether the application requires an incoming phone number for operation. In such a case, the method of the preferred embodiment can require that the user either purchase a phone number for use with the application or select an existing phone number to be associated with the use of the application.


Following a login by the user, block S212 of the method of the preferred embodiment queries whether the requested permissions have been granted to the application by the user, that is, whether the application possesses the proper authorization to access the user account in the manner requested. In another variation of the method of the preferred embodiment, block S212 can additionally include comparing a permission profile established by the developer with a permission profile asserted by the user. As shown in FIG. 10, if the response to the query in block S212 is negative, then the user session is terminated at block S214. Alternatively, the user can be referred to another opportunity to upgrade his or her permission profile to meet those required by the application. For example, if the user has only purchased a read-only permission but the application requires full read-write, then the method of the preferred embodiment can offer the user the opportunity to upgrade his or her account to access the desired application.


An alternative embodiment preferably implements the above methods in a computer-readable medium storing computer-readable instructions. The instructions are preferably executed by computer-executable components preferably integrated with a system of an application platform API provider. The computer-readable medium may be stored on any suitable computer readable media such as RAMs, ROMs, flash memory, EEPROMs, optical devices (CD or DVD), hard drives, floppy drives, or any suitable device. The computer-executable component is preferably a processor but the instructions may alternatively or additionally be executed by any suitable dedicated hardware device.


As a person skilled in the art will recognize from the previous detailed description and from the figures and claims, modifications and changes can be made to the preferred embodiments of the invention without departing from the scope of this invention defined in the following claims.

Claims
  • 1. A method for authorizing application use for a user comprising: at a communication application platform system: creating a set of developer accounts in the communication application platform system, wherein each developer account in the set of the developer accounts is associated with at least one application of the communication application platform system, each developer account having account settings for at least one application, account settings for each application including at least a Uniform Resource Identifier (URI) for the application, an authorization callback URI of the application, and a de-authorization URI of the application;receiving a user-initiated request of a user to create a subaccount of a user account of the user at the application platform system, the user-initiated request authorizing an application of a developer account in the application platform system to act on the subaccount of the user account, the request identifying the application associated with a developer account;creating the subaccount of the user account and associating the created subaccount with the application identified by the user-initiated request, wherein the subaccount of the user account includes segregated data in the application platform system;creating an authorization record of the subaccount of the user account that includes an application identification of the application identified by the request, a permission profile for the subaccount of the user account, and a secure identifier (SID) to be used by the application to access a communication application programming interface (API) of the application platform system on behalf of the subaccount; andallowing usage of the application of the developer account by the subaccount of the user account in accordance with the authorization record, wherein allowing usage of the application comprises returning a subaccount identifier of the subaccount of the user account to a system of the developer account via an authorization callback URI of the application that is included in the account settings of the developer account, the subaccount identifier including at least the SID of the authorization record,wherein the communication API is accessible by the application of the developer account and the subaccount of the user account; andwherein the method further comprises individually metering API calls of the communication API made by the application on behalf of the subaccount in accordance with the permission profile,wherein metered API calls include at least one of: API calls for access of the segregated data of the subaccount; andAPI calls for telephony communication by using the communication application platform system.
  • 2. The method of claim 1, wherein creating the developer account and creating the subaccount occurs at the communication application platform system, and the API of the communication application platform system includes a telephony voice application API.
  • 3. The method of claim 1, wherein creating the developer account and creating the subaccount occurs at the communication application platform system, and the API of the communication application platform system includes a telephony messaging API.
  • 4. The method of claim 1, wherein the permission profile determines read-only and read-write API access permissions of the application to operate on the segregated data of the subaccount.
  • 5. The method of claim 1, wherein the metered API calls include making a telephony call and sending a text message.
  • 6. The method of claim 1, wherein the permission profile defines application usage limits by metered API calls.
  • 7. The method of claim 1, wherein the developer account is a subaccount associated with a second developer account.
  • 8. The method of claim 1, further comprising receiving compensation according to the metered communication application platform API calls of the subaccount.
  • 9. The method of claim 1, wherein allowing usage of the application comprises receiving application programming interface (API) requests authenticated by the subaccount; and permitting utilization of API resources as permitted by the permission profile.
  • 10. The method of claim 9, wherein permitting utilization of API resources as permitted by the permissions profile comprises permitting read only access to a first set of API resources and permitting read and write access to a second set of API resources.
  • 11. The method of claim 1, wherein the user account is distinct from the developer account.
  • 12. The method of claim 11, wherein a second subaccount is associated with the user account; wherein the permission profile determines API access permissions wherein the API access permissions define permissions to access data of the second subaccount of the user account.
  • 13. The method of claim 1, wherein the communication application platform API is a telephony communication API.
  • 14. The method of claim 1, wherein authorizing the application of the developer account to act on the subaccount of the user account comprises: authorizing the application to access the API of the application platform on behalf of the subaccount.
  • 15. The method of claim 11, wherein creating a subaccount comprises if the user account with the communication application platform is created, executing a login of the user account; if the user account is not created, creating the user account and executing a login of the user account; and wherein the application is authorized to act on the logged in user account.
  • 16. The method of claim 15, wherein creating the subaccount further includes upgrading the user account if the user account does not satisfy requirements of the application.
  • 17. The method of claim 16, wherein upgrading the user account comprises assigning a telephony endpoint to the user account.
  • 18. The method of claim 15, wherein receiving the user-initiated request occurs at a communication application platform website.
  • 19. The method of claim 15, wherein receiving the user-initiated request occurs through at least one API.
  • 20. The method of claim 11, wherein setting a permission profile includes determining user approval of authorization granted to the developer account; and if user approval is denied, canceling creation of the subaccount and the authorization record.
  • 21. The method of claim 11, further comprising at the communication application platform system, retrieving market fees from the user account and dispersing market fees to the developer account.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No. 61/537,207, titled “SYSTEM AND METHOD OF AUTHORIZATION AND CONNECTION BETWEEN APPLICATION DEVELOPERS AND USERS”, filed 21 Sep. 2011, and U.S. Provisional Application No. 61/621,867, titled “SYSTEM AND METHOD OF AUTHORIZATION AND CONNECTION BETWEEN APPLICATION DEVELOPERS AND USERS”, filed 9 Apr. 2012, which are incorporated in their entirety by this reference.

US Referenced Citations (510)
Number Name Date Kind
5274700 Gechter et al. Dec 1993 A
5526416 Dezonno et al. Jun 1996 A
5581608 Jreij et al. Dec 1996 A
5598457 Foladare et al. Jan 1997 A
5867495 Elliott et al. Feb 1999 A
5934181 Adamczewski Aug 1999 A
6026440 Shrader et al. Feb 2000 A
6094681 Shaffer et al. Jul 2000 A
6138143 Gigliotti et al. Oct 2000 A
6185565 Meubus et al. Feb 2001 B1
6192123 Grunsted et al. Feb 2001 B1
6206564 Adamczewski Mar 2001 B1
6223287 Douglas et al. Apr 2001 B1
6232979 Shochet May 2001 B1
6269336 Ladd et al. Jul 2001 B1
6317137 Rosasco Nov 2001 B1
6373836 Deryugin et al. Apr 2002 B1
6425012 Trovato et al. Jul 2002 B1
6426995 Kim et al. Jul 2002 B1
6430175 Echols et al. Aug 2002 B1
6434528 Sanders Aug 2002 B1
6445694 Swartz Sep 2002 B1
6445776 Shank et al. Sep 2002 B1
6459913 Cloutier Oct 2002 B2
6493558 Bernhart et al. Dec 2002 B1
6496500 Nance et al. Dec 2002 B2
6501739 Cohen Dec 2002 B1
6501832 Saylor et al. Dec 2002 B1
6507875 Mellen-Garnett et al. Jan 2003 B1
6577721 Vainio et al. Jun 2003 B1
6600736 Ball et al. Jul 2003 B1
6606596 Zirngibl et al. Aug 2003 B1
6614783 Sonesh et al. Sep 2003 B1
6625258 Ram et al. Sep 2003 B1
6625576 Kochanski et al. Sep 2003 B2
6636504 Albers et al. Oct 2003 B1
6662231 Drosset et al. Dec 2003 B1
6704785 Koo et al. Mar 2004 B1
6707889 Saylor et al. Mar 2004 B1
6711129 Bauer et al. Mar 2004 B1
6711249 Weissman et al. Mar 2004 B2
6738738 Henton May 2004 B2
6757365 Bogard Jun 2004 B1
6765997 Zirngibl et al. Jul 2004 B1
6768788 Langseth et al. Jul 2004 B1
6778653 Kallas et al. Aug 2004 B1
6785266 Swartz Aug 2004 B2
6788768 Saylor et al. Sep 2004 B1
6792086 Saylor et al. Sep 2004 B1
6792093 Barak et al. Sep 2004 B2
6798867 Zirngibl et al. Sep 2004 B1
6807529 Johnson et al. Oct 2004 B2
6807574 Partovi et al. Oct 2004 B1
6819667 Brusilovsky et al. Nov 2004 B1
6820260 Flockhart et al. Nov 2004 B1
6829334 Zirngibl et al. Dec 2004 B1
6834265 Balasuriya Dec 2004 B2
6836537 Zirngibl et al. Dec 2004 B1
6842767 Partovi et al. Jan 2005 B1
6850603 Eberle et al. Feb 2005 B1
6870830 Schuster et al. Mar 2005 B1
6873952 Bailey et al. Mar 2005 B1
6874084 Dobner et al. Mar 2005 B1
6885737 Gao et al. Apr 2005 B1
6888929 Saylor et al. May 2005 B1
6895084 Saylor et al. May 2005 B1
6898567 Balasuriya May 2005 B2
6912581 Johnson et al. Jun 2005 B2
6922411 Taylor Jul 2005 B1
6931405 El-Shimi et al. Aug 2005 B2
6937699 Schuster et al. Aug 2005 B1
6940953 Eberle et al. Sep 2005 B1
6941268 Porter et al. Sep 2005 B2
6947417 Laursen et al. Sep 2005 B2
6947988 Saleh Sep 2005 B1
6961330 Cattan et al. Nov 2005 B1
6964012 Zirngibl et al. Nov 2005 B1
6970915 Partovi et al. Nov 2005 B1
6977992 Zirngibl et al. Dec 2005 B2
6985862 Stroem et al. Jan 2006 B2
6999576 Sacra Feb 2006 B2
7003464 Ferrans et al. Feb 2006 B2
7006606 Cohen et al. Feb 2006 B1
7010586 Allavarpu et al. Mar 2006 B1
7020685 Chen et al. Mar 2006 B1
7039165 Saylor et al. May 2006 B1
7062709 Cheung Jun 2006 B2
7076037 Gonen et al. Jul 2006 B1
7076428 Anastasakos et al. Jul 2006 B2
7089310 Ellerman et al. Aug 2006 B1
7103003 Brueckheimer et al. Sep 2006 B2
7103171 Annadata et al. Sep 2006 B1
7106844 Holland Sep 2006 B1
7111163 Haney Sep 2006 B1
7140004 Kunins et al. Nov 2006 B1
7143039 Stifelman et al. Nov 2006 B1
7197331 Anastasakos et al. Mar 2007 B2
7197461 Eberle et al. Mar 2007 B1
7197462 Takagi et al. Mar 2007 B2
7197544 Wang et al. Mar 2007 B2
7225232 Elberse May 2007 B2
7227849 Raesaenen Jun 2007 B1
7260208 Cavalcanti Aug 2007 B2
7266181 Zirngibl et al. Sep 2007 B1
7269557 Bailey et al. Sep 2007 B1
7272212 Eberle et al. Sep 2007 B2
7272564 Phillips et al. Sep 2007 B2
7277851 Henton Oct 2007 B1
7283515 Fowler Oct 2007 B2
7286521 Jackson et al. Oct 2007 B1
7287248 Adeeb Oct 2007 B1
7289453 Riedel et al. Oct 2007 B2
7296739 Mo et al. Nov 2007 B1
7298732 Cho Nov 2007 B2
7308085 Weissman Dec 2007 B2
7308408 Stifelman et al. Dec 2007 B1
7324633 Gao et al. Jan 2008 B2
7324942 Mahowald et al. Jan 2008 B1
7328263 Sadjadi Feb 2008 B1
7330463 Bradd et al. Feb 2008 B1
7330890 Partovi et al. Feb 2008 B1
7340040 Saylor et al. Mar 2008 B1
7349714 Lee et al. Mar 2008 B2
7369865 Gabriel et al. May 2008 B2
7373660 Guichard et al. May 2008 B1
7376223 Taylor et al. May 2008 B2
7376586 Partovi et al. May 2008 B1
7376733 Connelly et al. May 2008 B2
7376740 Porter et al. May 2008 B1
7412525 Cafarella et al. Aug 2008 B2
7418090 Reding et al. Aug 2008 B2
7428302 Zirngibl et al. Sep 2008 B2
7440898 Eberle et al. Oct 2008 B1
7447299 Partovi et al. Nov 2008 B1
7454459 Kapoor et al. Nov 2008 B1
7457249 Baldwin et al. Nov 2008 B2
7457397 Saylor et al. Nov 2008 B1
7473872 Takimoto Jan 2009 B2
7486780 Zirngibl et al. Feb 2009 B2
7496054 Taylor Feb 2009 B2
7500249 Kampe et al. Mar 2009 B2
7505951 Thompson et al. Mar 2009 B2
7519359 Chiarulli et al. Apr 2009 B2
7522711 Stein et al. Apr 2009 B1
7536454 Balasuriya May 2009 B2
7552054 Stifelman et al. Jun 2009 B1
7571226 Partovi et al. Aug 2009 B1
7613287 Stifelman et al. Nov 2009 B1
7623648 Oppenheim et al. Nov 2009 B1
7630900 Strom Dec 2009 B1
7631310 Henzinger Dec 2009 B1
7644000 Strom Jan 2010 B1
7657433 Chang Feb 2010 B1
7657434 Thompson et al. Feb 2010 B2
7668157 Weintraub et al. Feb 2010 B2
7672295 Andhare et al. Mar 2010 B1
7675857 Chesson Mar 2010 B1
7676221 Roundtree et al. Mar 2010 B2
7715547 Ibbotson et al. May 2010 B2
7742499 Erskine et al. Jun 2010 B1
7779065 Gupta et al. Aug 2010 B2
7875836 Imura et al. Jan 2011 B2
7882253 Pardo-Castellote et al. Feb 2011 B2
7920866 Bosch et al. Apr 2011 B2
7926099 Chakravarty et al. Apr 2011 B1
7936867 Hill et al. May 2011 B1
7962644 Ezerzer et al. Jun 2011 B1
7979555 Rothstein et al. Jul 2011 B2
8023425 Raleigh Sep 2011 B2
8069096 Ballaro et al. Nov 2011 B1
8081958 Soederstroem et al. Dec 2011 B2
8103725 Gupta et al. Jan 2012 B2
8126128 Hicks, III et al. Feb 2012 B1
8149716 Ramanathan et al. Apr 2012 B2
8150918 Edelman et al. Apr 2012 B1
8156213 Deng et al. Apr 2012 B1
8185619 Maiocco et al. May 2012 B1
8196133 Kakumani et al. Jun 2012 B2
8233611 Zettner Jul 2012 B1
8238533 Blackwell et al. Aug 2012 B2
8243889 Taylor et al. Aug 2012 B2
8266327 Kumar et al. Sep 2012 B2
8295272 Boni et al. Oct 2012 B2
8306021 Lawson et al. Nov 2012 B2
8326805 Arous et al. Dec 2012 B1
8346630 McKeown Jan 2013 B1
8355394 Taylor et al. Jan 2013 B2
8417817 Jacobs Apr 2013 B1
8429827 Wetzel Apr 2013 B1
8438315 Tao et al. May 2013 B1
8462670 Chien et al. Jun 2013 B2
8467502 Sureka et al. Jun 2013 B2
8503639 Reding et al. Aug 2013 B2
8503650 Reding et al. Aug 2013 B2
8509068 Begall et al. Aug 2013 B2
8532686 Schmidt et al. Sep 2013 B2
8542805 Agranovsky et al. Sep 2013 B2
8582450 Robesky Nov 2013 B1
8594626 Woodson et al. Nov 2013 B1
8601136 Fahlgren et al. Dec 2013 B1
8611338 Lawson et al. Dec 2013 B2
8613102 Nath Dec 2013 B2
8649268 Lawson et al. Feb 2014 B2
8667056 Proulx et al. Mar 2014 B1
8675493 Buddhikot et al. Mar 2014 B2
8755376 Lawson et al. Jun 2014 B2
8767925 Sureka et al. Jul 2014 B2
8806024 Francis et al. Aug 2014 B1
8837465 Lawson et al. Sep 2014 B2
8838707 Lawson et al. Sep 2014 B2
8861510 Fritz Oct 2014 B1
8948356 Nowack et al. Feb 2015 B2
8964726 Lawson et al. Feb 2015 B2
9014664 Kim et al. Apr 2015 B2
9015702 Bhat Apr 2015 B2
20010038624 Greenberg et al. Nov 2001 A1
20010043684 Guedalia et al. Nov 2001 A1
20010051996 Cooper et al. Dec 2001 A1
20020006124 Jimenez et al. Jan 2002 A1
20020006125 Josse et al. Jan 2002 A1
20020006193 Rodenbusch et al. Jan 2002 A1
20020064267 Martin et al. May 2002 A1
20020067823 Walker et al. Jun 2002 A1
20020077833 Arons et al. Jun 2002 A1
20020126813 Partovi et al. Sep 2002 A1
20020136391 Armstrong Sep 2002 A1
20020165957 Devoe et al. Nov 2002 A1
20020176378 Hamilton et al. Nov 2002 A1
20020198941 Gavrilescu et al. Dec 2002 A1
20030006137 Wei et al. Jan 2003 A1
20030014665 Anderson et al. Jan 2003 A1
20030018830 Chen et al. Jan 2003 A1
20030023672 Vaysman Jan 2003 A1
20030026426 Wright et al. Feb 2003 A1
20030046366 Pardikar et al. Mar 2003 A1
20030051037 Sundaram et al. Mar 2003 A1
20030058884 Kallner et al. Mar 2003 A1
20030059020 Meyerson et al. Mar 2003 A1
20030060188 Gidron et al. Mar 2003 A1
20030061317 Brown et al. Mar 2003 A1
20030061404 Atwal et al. Mar 2003 A1
20030088421 Maes et al. May 2003 A1
20030097447 Johnston May 2003 A1
20030103620 Brown et al. Jun 2003 A1
20030123640 Roelle et al. Jul 2003 A1
20030195990 Greenblat Oct 2003 A1
20030196076 Zabarski et al. Oct 2003 A1
20030211842 Kempf et al. Nov 2003 A1
20030231647 Petrovykh Dec 2003 A1
20040008635 Nelson et al. Jan 2004 A1
20040011690 Marfino et al. Jan 2004 A1
20040044953 Watkins Mar 2004 A1
20040052349 Creamer et al. Mar 2004 A1
20040071275 Bowater et al. Apr 2004 A1
20040101122 Da Palma et al. May 2004 A1
20040102182 Reith et al. May 2004 A1
20040165569 Sweatman et al. Aug 2004 A1
20040172482 Weissman et al. Sep 2004 A1
20040205689 Ellens et al. Oct 2004 A1
20040213400 Golitsin et al. Oct 2004 A1
20040218748 Fisher Nov 2004 A1
20040228469 Andrews et al. Nov 2004 A1
20040240649 Goel Dec 2004 A1
20050005200 Matena et al. Jan 2005 A1
20050010483 Ling Jan 2005 A1
20050021626 Prajapat et al. Jan 2005 A1
20050025303 Hostetler Feb 2005 A1
20050038772 Colrain Feb 2005 A1
20050043952 Sharma et al. Feb 2005 A1
20050047579 Salame Mar 2005 A1
20050060411 Coulombe et al. Mar 2005 A1
20050091572 Gavrilescu et al. Apr 2005 A1
20050125251 Berger et al. Jun 2005 A1
20050128961 Miloslavsky et al. Jun 2005 A1
20050135578 Ress et al. Jun 2005 A1
20050141500 Bhandari Jun 2005 A1
20050147088 Bao et al. Jul 2005 A1
20050177635 Schmidt et al. Aug 2005 A1
20050181835 Lau et al. Aug 2005 A1
20050228680 Malik Oct 2005 A1
20050238153 Chevalier Oct 2005 A1
20050240659 Taylor Oct 2005 A1
20050243977 Creamer et al. Nov 2005 A1
20050246176 Creamer et al. Nov 2005 A1
20050289222 Sahim Dec 2005 A1
20060008073 Yoshizawa et al. Jan 2006 A1
20060015467 Morken et al. Jan 2006 A1
20060047666 Bedi et al. Mar 2006 A1
20060067506 Flockhart et al. Mar 2006 A1
20060129638 Deakin Jun 2006 A1
20060143007 Koh et al. Jun 2006 A1
20060168334 Potti et al. Jul 2006 A1
20060203979 Jennings Sep 2006 A1
20060209695 Archer et al. Sep 2006 A1
20060212865 Vincent Sep 2006 A1
20060215824 Mitby et al. Sep 2006 A1
20060217823 Hussey Sep 2006 A1
20060217978 Mitby et al. Sep 2006 A1
20060222166 Ramakrishna et al. Oct 2006 A1
20060256816 Yarlagadda et al. Nov 2006 A1
20060262915 Marascio et al. Nov 2006 A1
20060270386 Yu et al. Nov 2006 A1
20060285489 Francisco et al. Dec 2006 A1
20070002744 Mewhinney et al. Jan 2007 A1
20070036143 Alt et al. Feb 2007 A1
20070050306 Mcqueen Mar 2007 A1
20070070906 Thakur Mar 2007 A1
20070070980 Phelps et al. Mar 2007 A1
20070071223 Lee et al. Mar 2007 A1
20070074174 Thornton Mar 2007 A1
20070121651 Casey et al. May 2007 A1
20070127691 Lert Jun 2007 A1
20070127703 Siminoff Jun 2007 A1
20070130260 Weintraub et al. Jun 2007 A1
20070133771 Stifelman et al. Jun 2007 A1
20070149166 Turcotte et al. Jun 2007 A1
20070153711 Dykas et al. Jul 2007 A1
20070167170 Fitchett et al. Jul 2007 A1
20070192629 Saito Aug 2007 A1
20070208862 Fox et al. Sep 2007 A1
20070232284 Mason et al. Oct 2007 A1
20070242626 Altberg et al. Oct 2007 A1
20070265073 Novi et al. Nov 2007 A1
20070286180 Marquette et al. Dec 2007 A1
20070291905 Halliday et al. Dec 2007 A1
20070293200 Roundtree et al. Dec 2007 A1
20070295803 Levine et al. Dec 2007 A1
20080005275 Overton et al. Jan 2008 A1
20080025320 Bangalore et al. Jan 2008 A1
20080037715 Prozeniuk et al. Feb 2008 A1
20080037746 Dufrene et al. Feb 2008 A1
20080040484 Yardley Feb 2008 A1
20080052395 Wright et al. Feb 2008 A1
20080091843 Kulkarni Apr 2008 A1
20080101571 Harlow et al. May 2008 A1
20080104348 Kabzinski et al. May 2008 A1
20080134049 Gupta et al. Jun 2008 A1
20080139166 Agarwal et al. Jun 2008 A1
20080146268 Gandhi et al. Jun 2008 A1
20080152101 Griggs Jun 2008 A1
20080154601 Stifelman et al. Jun 2008 A1
20080155029 Helbling et al. Jun 2008 A1
20080162482 Ahern et al. Jul 2008 A1
20080165708 Moore et al. Jul 2008 A1
20080177883 Hanai et al. Jul 2008 A1
20080201426 Darcie Aug 2008 A1
20080209050 Li Aug 2008 A1
20080222656 Lyman Sep 2008 A1
20080229421 Hudis et al. Sep 2008 A1
20080232574 Baluja et al. Sep 2008 A1
20080235230 Maes Sep 2008 A1
20080256224 Kaji et al. Oct 2008 A1
20080275741 Loeffen Nov 2008 A1
20080310599 Purnadi et al. Dec 2008 A1
20080313318 Vermeulen et al. Dec 2008 A1
20080316931 Qiu et al. Dec 2008 A1
20080317222 Griggs et al. Dec 2008 A1
20080317232 Couse et al. Dec 2008 A1
20080317233 Rey et al. Dec 2008 A1
20090046838 Andreasson Feb 2009 A1
20090052437 Taylor et al. Feb 2009 A1
20090052641 Taylor et al. Feb 2009 A1
20090059894 Jackson et al. Mar 2009 A1
20090063502 Coimbatore et al. Mar 2009 A1
20090074159 Goldfarb et al. Mar 2009 A1
20090075684 Cheng et al. Mar 2009 A1
20090083155 Tudor et al. Mar 2009 A1
20090089165 Sweeney Apr 2009 A1
20090089352 Davis et al. Apr 2009 A1
20090089699 Saha et al. Apr 2009 A1
20090093250 Jackson et al. Apr 2009 A1
20090125608 Werth et al. May 2009 A1
20090129573 Gavan et al. May 2009 A1
20090136011 Goel May 2009 A1
20090170496 Bourque Jul 2009 A1
20090171659 Pearce et al. Jul 2009 A1
20090171669 Engelsma et al. Jul 2009 A1
20090171752 Galvin et al. Jul 2009 A1
20090182896 Patterson et al. Jul 2009 A1
20090217293 Wolber et al. Aug 2009 A1
20090220057 Waters Sep 2009 A1
20090221310 Chen et al. Sep 2009 A1
20090222341 Belwadi et al. Sep 2009 A1
20090225748 Taylor Sep 2009 A1
20090225763 Forsberg et al. Sep 2009 A1
20090232289 Drucker et al. Sep 2009 A1
20090234965 Viveganandhan et al. Sep 2009 A1
20090235349 Lai et al. Sep 2009 A1
20090252159 Lawson et al. Oct 2009 A1
20090276771 Nickolov et al. Nov 2009 A1
20090288012 Hertel et al. Nov 2009 A1
20090288165 Qiu et al. Nov 2009 A1
20090300194 Ogasawara Dec 2009 A1
20090316687 Kruppa Dec 2009 A1
20090318112 Vasten Dec 2009 A1
20100037204 Lin et al. Feb 2010 A1
20100070424 Monk Mar 2010 A1
20100082513 Liu Apr 2010 A1
20100087215 Gu et al. Apr 2010 A1
20100088187 Courtney et al. Apr 2010 A1
20100088698 Krishnamurthy Apr 2010 A1
20100115041 Hawkins et al. May 2010 A1
20100142516 Lawson et al. Jun 2010 A1
20100150139 Lawson et al. Jun 2010 A1
20100167689 Sepehri-Nik et al. Jul 2010 A1
20100188979 Thubert et al. Jul 2010 A1
20100191915 Spencer Jul 2010 A1
20100208881 Kawamura Aug 2010 A1
20100217837 Ansari et al. Aug 2010 A1
20100217982 Brown et al. Aug 2010 A1
20100232594 Lawson et al. Sep 2010 A1
20100235539 Carter et al. Sep 2010 A1
20100251329 Wei Sep 2010 A1
20100251340 Martin Sep 2010 A1
20100281108 Cohen Nov 2010 A1
20100291910 Sanding Nov 2010 A1
20110029882 Jaisinghani Feb 2011 A1
20110029981 Jaisinghani Feb 2011 A1
20110053555 Cai et al. Mar 2011 A1
20110078278 Cui et al. Mar 2011 A1
20110081008 Lawson et al. Apr 2011 A1
20110083179 Lawson et al. Apr 2011 A1
20110093516 Geng et al. Apr 2011 A1
20110096673 Stevenson et al. Apr 2011 A1
20110110366 Moore et al. May 2011 A1
20110131293 Mori Jun 2011 A1
20110167172 Roach et al. Jul 2011 A1
20110170505 Rajasekar et al. Jul 2011 A1
20110176537 Lawson et al. Jul 2011 A1
20110211679 Mezhibovsky et al. Sep 2011 A1
20110251921 Kassaei Oct 2011 A1
20110253693 Lyons et al. Oct 2011 A1
20110255675 Jasper et al. Oct 2011 A1
20110265168 Lucovsky et al. Oct 2011 A1
20110265172 Sharma et al. Oct 2011 A1
20110267985 Wilkinson et al. Nov 2011 A1
20110274111 Narasappa et al. Nov 2011 A1
20110276892 Jensen-Horne et al. Nov 2011 A1
20110276951 Jain Nov 2011 A1
20110280390 Lawson et al. Nov 2011 A1
20110283259 Lawson et al. Nov 2011 A1
20110289126 Aikas et al. Nov 2011 A1
20110299672 Chiu et al. Dec 2011 A1
20110310902 Xu Dec 2011 A1
20110320449 Gudlavenkatasiva Dec 2011 A1
20110320550 Lawson et al. Dec 2011 A1
20120000903 Baarman et al. Jan 2012 A1
20120011274 Moreman Jan 2012 A1
20120017222 May Jan 2012 A1
20120023544 Li et al. Jan 2012 A1
20120028602 Lisi et al. Feb 2012 A1
20120036574 Heithcock et al. Feb 2012 A1
20120039202 Song Feb 2012 A1
20120059709 Lieberman et al. Mar 2012 A1
20120079066 Li et al. Mar 2012 A1
20120083266 VanSwol et al. Apr 2012 A1
20120089572 Raichstein et al. Apr 2012 A1
20120094637 Jeyaseelan et al. Apr 2012 A1
20120110564 Ran et al. May 2012 A1
20120114112 Rauschenberger et al. May 2012 A1
20120149404 Beattie et al. Jun 2012 A1
20120170726 Schwartz Jul 2012 A1
20120173610 Bleau et al. Jul 2012 A1
20120174095 Natchadalingam et al. Jul 2012 A1
20120179907 Byrd et al. Jul 2012 A1
20120180021 Byrd et al. Jul 2012 A1
20120180029 Hill et al. Jul 2012 A1
20120198004 Watte Aug 2012 A1
20120201238 Lawson et al. Aug 2012 A1
20120208495 Lawson et al. Aug 2012 A1
20120226579 Ha et al. Sep 2012 A1
20120239757 Firstenberg et al. Sep 2012 A1
20120254828 Aiylam et al. Oct 2012 A1
20120281536 Gell et al. Nov 2012 A1
20120288082 Segall Nov 2012 A1
20120290706 Lin et al. Nov 2012 A1
20120304245 Lawson et al. Nov 2012 A1
20120304275 Ji et al. Nov 2012 A1
20120316809 Egolf Dec 2012 A1
20120321070 Smith et al. Dec 2012 A1
20130029629 Lindholm et al. Jan 2013 A1
20130031158 Salsburg Jan 2013 A1
20130047232 Tuchman et al. Feb 2013 A1
20130054684 Brazier et al. Feb 2013 A1
20130058262 Parreira Mar 2013 A1
20130067448 Sannidhanam et al. Mar 2013 A1
20130097298 Ting et al. Apr 2013 A1
20130156024 Burg Jun 2013 A1
20130179942 Caplis et al. Jul 2013 A1
20130201909 Bosch et al. Aug 2013 A1
20130204786 Mattes et al. Aug 2013 A1
20130212603 Cooke et al. Aug 2013 A1
20130244632 Spence et al. Sep 2013 A1
20140064467 Lawson et al. Mar 2014 A1
20140105372 Nowack et al. Apr 2014 A1
20140106704 Cooke et al. Apr 2014 A1
20140123187 Reisman May 2014 A1
20140129363 Lorah et al. May 2014 A1
20140153565 Lawson et al. Jun 2014 A1
20140185490 Holm et al. Jul 2014 A1
20140254600 Shibata et al. Sep 2014 A1
20140274086 Boerjesson et al. Sep 2014 A1
20140282473 Saraf et al. Sep 2014 A1
20140355600 Lawson et al. Dec 2014 A1
20140379670 Kuhr Dec 2014 A1
20150004932 Kim et al. Jan 2015 A1
20150004933 Kim et al. Jan 2015 A1
20150023251 Giakoumelis et al. Jan 2015 A1
20150066865 Yara et al. Mar 2015 A1
20150181631 Lee et al. Jun 2015 A1
Foreign Referenced Citations (19)
Number Date Country
1684587 Mar 1971 DE
0282126 Sep 1988 EP
1464418 Oct 2004 EP
1522922 Apr 2005 EP
1770586 Apr 2007 EP
2134107 Sep 1999 ES
10294788 Apr 1998 JP
2004166000 Jun 2004 JP
2004220118 Aug 2004 JP
2006319914 Nov 2006 JP
9732448 Sep 1997 WO
02087804 Nov 2002 WO
2006037492 Apr 2006 WO
2009018489 Feb 2009 WO
2009124223 Oct 2009 WO
2010037064 Apr 2010 WO
2010040010 Apr 2010 WO
2010101935 Sep 2010 WO
2011091085 Jul 2011 WO
Non-Patent Literature Citations (6)
Entry
Complaint for Patent Infringement, Telinit Technologies, LLC v. Twilio Inc., dated Oct. 12, 2012.
RFC 3986: Uniform Resource Identifier (URI): Generic Syntax; T. Berners-Lee, R. Fielding, L. Masinter; Jan. 2005; The Internet Society.
Kim et al. “In-service Feedback QoE Framework” 2010 Third International Conference on Communication Theory. Reliability and Quality of Service. pp. 135-138. 2010.
Matos et al. “Quality of Experience-based Routing in Multi-Service Wireless Mesh Networks” Realizing Advanced Video Optimized Wireless Networks. IEEE. pp. 7060-7065. 2012.
Tran et al. “User to User adaptive routing based on QoE” ICNS 2011: The Seventh International Conference on Networking and Services. pp. 170-177. 2011.
Wu et al. “Quality Evaluation in Peer-to-Peer IPTV Services” Data Traffic and Monitoring Analysis, LNCS 7754. pp. 302-319. 2013.
Related Publications (1)
Number Date Country
20130072160 A1 Mar 2013 US
Provisional Applications (2)
Number Date Country
61537207 Sep 2011 US
61621867 Apr 2012 US