JP2022016303A - 機械学習を用いる自動化されたapiアクセス - Google Patents

機械学習を用いる自動化されたapiアクセス Download PDF

Info

Publication number
JP2022016303A
JP2022016303A JP2021095374A JP2021095374A JP2022016303A JP 2022016303 A JP2022016303 A JP 2022016303A JP 2021095374 A JP2021095374 A JP 2021095374A JP 2021095374 A JP2021095374 A JP 2021095374A JP 2022016303 A JP2022016303 A JP 2022016303A
Authority
JP
Japan
Prior art keywords
api
page
sign
given
pages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021095374A
Other languages
English (en)
Inventor
パーク・ジュンヒ
Junhee Park
チェン・ウェイ-ペン
Wei-Peng Chen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JP2022016303A publication Critical patent/JP2022016303A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0807Network architectures or network communication protocols for network security for authentication of entities using tickets, e.g. Kerberos
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9577Optimising the visualization of content, e.g. distillation of HTML documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/20Network architectures or network communication protocols for network security for managing network security; network security policies in general
    • H04L63/205Network architectures or network communication protocols for network security for managing network security; network security policies in general involving negotiation or determination of the one or more network security mechanisms to be used, e.g. by negotiation between the client and the server or between peers or by selection according to the capabilities of the entities involved
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Mathematical Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Automation & Control Theory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

Figure 2022016303000001
【課題】 機械学習を用いる自動化されたAPIアクセスを提供する。
【解決手段】 一方法が、複数のアプリケーションプログラミングインターフェース(API)にわたり反復して複数のAPIの認証タイプを抽出するステップを含む。該方法は、中央リポジトリから、複数のAPIのうち所与のAPIへのアクセスのために新しいユーザを自動的に登録するステップをさらに含んでもよい。該方法は、所与のAPIの認証タイプに基づいて認証データを取得するステップと、認証データを記憶するステップをさらに含んでもよい。該方法は、記憶された認証データを使用して所与のAPIにアクセスするステップをさらに含んでもよい。
【選択図】 図1

Description

本開示の実施形態は、機械学習を用いる自動化されたアプリケーションプログラミングインターフェース(API)アクセスに関する。
APIは、リモート位置における機能性にアクセスし及び/又は該機能性をソフトウェアプロジェクトに組み込むことができる便利なメカニズムである。しかしながら、多数のAPIが導入されており、これは、ソフトウェア開発者がプロジェクトでどのAPIを使用するか選択することを困難にする可能性がある。
本開示の1つ以上の実施形態が、複数のアプリケーションプログラミングインターフェース(API)にわたり反復して複数のAPIの認証タイプを抽出するステップを含む、方法を含み得る。該方法は、中央リポジトリから、複数のAPIのうち所与のAPIへのアクセスのために新しいユーザを自動的に登録するステップをさらに含んでもよい。該方法は、所与のAPIの認証タイプに基づいて認証データを取得するステップと、認証データを記憶するステップをさらに含んでもよい。該方法は、記憶された認証データを使用して所与のAPIにアクセスするステップをさらに含んでもよい。
実施形態の目的及び利点は、少なくとも特許請求の範囲において特に指し示された要素、特徴、及び組み合わせにより実現され、達成される。
前述の一般的な説明及び以下の詳細な説明の双方が単に例であり、説明的であり、限定的でないことが理解されるべきである。
例示的な実施形態が、添付図面の使用を通してさらなる特定性及び詳細と共に記載され、説明される。
機械学習を用いる自動化されたAPIアクセスのための一例示的なシステムを示す図である。 機械学習を用いる自動化されたAPIアクセスの一例示的な方法の例示的なフローチャートを示す。 新しいユーザを登録する一例示的な方法の例示的なフローチャートを示す。 サインアップページの識別に対する検索エンジンベースのアプローチの一例示的な方法の例示的なフローチャートを示す。 モデルを生成及び/又は訓練する一例示的な方法の例示的なフローチャートを示す。 サインアップページの識別に対する機械学習ベースのアプローチの一例示的な方法の例示的なフローチャートを示す。 サインアップページのサインアップフォームに自動的に記入する一例示的な方法の例示的なフローチャートを示す。 サインインページの識別に対する機械学習ベースのアプローチの一例示的な方法の例示的なフローチャートを示す。 アプリケーションを登録する一例示的な方法の例示的なフローチャートを示す。 API鍵を抽出する一例示的な方法の例示的なフローチャートを示す。 OAuthクレデンシャルの解決及び/又は更新の一例示的な方法の例示的なフローチャートを示す。 アプリケーションを登録する際の第1の例示的な状態のセットを示す。 アプリケーションを登録する際の第2の例示的な状態のセットを示す。 アプリケーションを登録する際の第3の例示的な状態のセットを示す。 アプリケーションを登録する際の第4の例示的な状態のセットを示す。 アプリケーションを登録する際の第6の例示的な状態のセットを示す。 一例示的なコンピューティングシステムを示す。
本開示は、機械学習を用いたAPIへの自動可されたアクセスに関する。例えば、APIマーケットプレースは、比較及びレビューすることができる様々なAPIをしばしば収集する。しかしながら、個々のAPIの各々へのアクセスの付与は、典型的にはPIホストにより制御され、標準化されておらず、一様でもない。APIホストに対して参照が行われるが、APIホストは、所与のAPIへのアクセスを開発しており、ホストし、及び/又はその他の方法で制御するエンティティ又はコンピューティングシステムを参照し得る。様々な潜在的なアクセス制限の例として、あるAPIホストは、ある情報セットを用いたアカウントの作成を要することがあり、次いで、API鍵にアクセスするためのクレデンシャルを取り出すためにAPIホストシステムで作成されたアカウントにログインするよう、ユーザに求めることがある。一方、別のAPIホストは、異なる情報セットを用いたアカウントの作成を要することがあり、クレデンシャルへのアクセスが付与される前に特定のプロジェクトのAPIホストへの登録を要することがある。また、別のAPIホストは、APIにアクセスするためのクレデンシャルを取得するために、個人情報を伴うリクエストを要することがある。様々なAPIに対してアクセスが制限される、様々な方法のため、APIを使用するとき、開発プロセスに相当なオーバーヘッドがかけられる可能性があり、なぜならば、異なるAPIの選択又は試行は、異なるAPIホストのサイトの各々に行く、アクセスを獲得する等のために相当な作業を要し得るためである。このオーバーヘッドは、いくつかの選択肢からAPIを選択しようとするとき、試されるべき各APIについてプロセスが繰り返される場合に、特に負担となる可能性がある。さらに、そのような情報を集めるよう試みるAPIマーケットプレースでは、アクセス要件及び/又はプロセスが様々なAPIに対して変化する可能性があり、それにより、集められた情報でさえも時代遅れになり又は不正確である可能性がある。さらに、APIにアクセスするためのクレデンシャルは短い有効期間を有することがあり、それにより、APIマーケットプレースが1回クレデンシャルを獲得したとしても、マーケットプレースのユーザがAPIにアクセスするよう試みるときまでにクレデンシャルが時代遅れになる可能性があり、これは、クレデンシャルをリフレッシュするためにAPIホストのサイトを再び訪問することを必要とする可能性がある。
アクセスの付与を合理化するために、本開示は、様々なAPIを用いた自動的なユーザ登録を提供することができ、APIにアクセスするため(OAuth及び/又はAPI鍵認証アプローチのためのものを含む)のクレデンシャルを自動的に獲得することができ、予め登録されたAPI鍵を利用し、又はOAuthアクセストークンを更新することができ、ユーザがAPIに迅速にアクセスし、試すことができるようにするAPIプラットフォームを含む。本明細書で用いられるとき、OAuthという用語は、OAuth2.0と、OAuthの前の又は将来のバージョン、例えば1.0、1.1などを含む。これらのプロセスの各々は、自動化することができ、機械学習又は他のインテリジェントシステムを利用して、様々なAPIへのアクセスを付与するAPIホスト間のバリエーションをナビゲートすることができ、ユーザ入力なし又は限られたユーザ入力のみで生じることができる。
いくつかの状況において、本開示の実施形態は、本開示の教示を適用することにより、コンピュータの性能の向上を容易にし得る。例えば、単一のインターフェースからアクセスできる異なるAPIホストの複数の異なるAPIをインテリジェントにトラバースし、該APIへのアクセスを獲得することができる単一のシステムを提供することによる。さらに、これは、各APIホストから手動でアクセスクレデンシャルを取り出す際に、さもなければ費やさなければならない相当な労力を除去することにより、ソフトウェア開発のオーバーヘッドを低減し得る。さらに、本開示は、以前は不可能であったコンピューティングシステムによるタスクの実行、すなわち、単一のインターフェースからのAPIアクセスクレデンシャルの自動化された獲得及びその更新を可能にし得る。別の例としては、本開示は、本開示の少なくともいくつかの実施形態によるAPIプラットフォームが、複数のAPIホストと対話する際のユーザのためのプロキシとして動作できることを可能にし得る。
1つ以上の例示的な実施形態が、添付の図面を参照して説明される。
図1は、本開示の1つ以上の実施形態による、機械学習を使用する自動化されたAPIアクセスのための一例示的なシステム100を示す図である。システム100は、クライアント110、APIプラットフォーム120、及び1つ以上のAPIホスト130(APIホスト130a、130b、130c、及び/又は130dなど)を含んでもよく、これらは全て、ネットワーク140を介して通信することができる。クライアント110は、APIプラットフォーム120にアクセスして、APIホスト130によりホストされるAPI132(API132a、132b、132c、及び/又は132dなど)などの様々なAPIを閲覧、検討、及び/又は分析することができる。APIプラットフォーム120は、クライアント110にAPIホスト130に直接コンタクトするよう求めることなく、APIプラットフォーム120を介してクライアント110のユーザにAPI132のうち1つ以上へのアクセスを自動的に付与することができる。様々なAPIへのアクセスの付与に対する自動化されたプロセスの例が、図2~図12Eを参照してより完全に説明され得る。
クライアント110は、APIを利用し得る任意のコンピューティングデバイス又はシステムを含んでもよい。いくつかの実施形態において、クライアント110のユーザは、そのソフトウェアプロジェクトにどれを組み込むべきかを判断するために複数のAPIを見ているソフトウェア開発者であり得る。いくつかの実施形態において、クライアント110のユーザは、あまり経験なくAPIプラットフォーム120を介して異なるAPIを探索している初心者ユーザであり得る。これらの実施形態の各々において、APIプラットフォーム120は、APIホスト130によりホストされる様々なAPI132へのアクセスを提供することができ得る。
APIプラットフォーム120は、API132へのアクセス及び/又は洞察を提供する任意のシステム、デバイス、又はこれらの組み合わせを含んでもよい。例えば、APIプラットフォーム120は、クライアント110のユーザが特定のソフトウェアプロジェクト、ウェブサイト等にAPIを組み込むよう見ているとき特定の機能性、デベロッパ等について検索することができるマーケットプレースを含んでもよい。いくつかの実施形態において、APIプラットフォーム120は、APIマーケットプレース又は中央リポジトリとして動作することができ、そこからユーザは、複数のAPIを選択し、閲読し、あるいはその他の方法で観察し、試し、又は取得することができる。いくつかの実施形態において、APIプラットフォーム120は、APIホスト130をトラバースし(traverse)、クロールし(crawl)、又はその他の方法でAPIホスト130にアクセスして、APIホスト130によりホストされるAPI132に関する情報を獲得及び/又は取得するように構成されてもよい。いくつかの実施形態において、APIプラットフォーム120は、その機能を実行する際に、例えば図2~図12Eを参照して説明されるように、機械学習アプローチを利用してもよい。
APIホスト130は、API132をホストする任意のシステム、デバイス、又はこれらの組み合わせを含んでもよい。所与のAPIホスト130は、それぞれのAPI132に関連するページ又はサイトなどの複数のコンテンツをホストするように構成され得る。例えば、APIホスト130は、API132へのアクセスを受けるためにユーザがサインアップすることができるサインアップページ;ユーザがAPI132に関連する情報、クレデンシャル等を取得するためにAPI132に関連づけられたアカウントにサインインすることができるサインインページ;ユーザがサインインした後に到達するランディングページ;ユーザのためにAPI鍵が記憶されているAPI鍵ページ;API132の能力、API132の入力、API132の出力、API132に関連づけられた他のページの位置、API132の認証タイプ等に関する情報を含み得るAPIドキュメンテーションページ;APIホスト130及び/又はAPI132に関連づけられたホームページ;及び/又は、API132及び/又はAPIホスト130に関連づけられた任意の他のページを含んでもよい。いくつかの実施形態において、APIホスト130は、API132のデベロッパでもよく、あるいはAPI132及び/又はAPI132に関連する関連情報及び/又はページをホストするサードパーティでもよい。
ネットワーク140は、クライアント110、APIプラットフォーム120、及び/又はAPIホスト130のうち1つ以上の間の通信を提供するように構成された任意のデバイス、システム、コンポーネント、又はこれらの組み合わせを含んでもよい。例として、ネットワーク140は、1つ以上のワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)などを含んでもよい。いくつかの実施形態において、ネットワーク140は、複数のWAN及び/又はLAN間の論理的及び物理的接続により形成されるグローバルなインターネットワークを含むインターネットを含んでもよい。代替的又は追加的に、ネットワーク140は、1つ以上のセルラーRFネットワーク及び/又は1つ以上の有線及び/又は無線ネットワーク、例えば、これらに限られないが802.xxネットワーク、Bluetooth(登録商標)アクセスポイント、無線アクセスポイント、IPベースネットワークなどを含んでもよい。ネットワーク140は、あるタイプのネットワークが別のタイプのネットワークとインターフェースすることを可能にするサーバ、サブステーション、又は他の接続デバイスをさらに含んでもよい。追加的又は代替的に、ネットワーク140は、イントラネット、又は、組織内で又はその他のセキュアな方法で通信する1つ以上のコンピューティングデバイスを含んでもよい。
本開示の範囲から逸脱することなく、システム100に修正、追加、又は省略がなされてもよい。例えば、いくつかの実施形態において、システム100は、明示的に図示又は説明されない可能性のある任意の数の他のコンポーネントを含んでもよい。別の例として、4つのAPIホスト130が示されているが、数百、数千、又はそれ以上の任意の数が考えられる。
図2~図11は、本開示による様々な例示的な方法の様々なフローチャートを示す。図2~図11に示される様々な方法の1つ以上の動作は、クライアント110、APIプラットフォーム120、及び/又はAPIホスト130、及び/又は図13のコンピューティングシステム1300などの、システム若しくはデバイス又はこれらの組み合わせにより実行されてもよい。別個のブロックとして示されているが、図2~図11に示される方法の様々なブロックは、所望の実装に依存してさらなるブロックに分割されてもよく、より少ないブロックに組み合わせられてもよく、あるいは削除されてもよい。
図2は、本開示の1つ以上の実施形態による、機械学習を使用する自動化されたAPIアクセスの一例示的な方法200の例示的なフローチャートを示す。例えば、図2は、クライアント(図1のクライアント110など)にAPIへのアクセスを提供するためにAPIプラットフォーム(図1のAPIプラットフォーム120など)により請け負われ得る動作の一例を示し得る。
ブロック205において、APIプラットフォームが、複数のAPIにわたり反復して(iterate over)複数のAPIの各々についてメタデータ及び/又は認証タイプを抽出し得る。例えば、APIプラットフォームは、APIドキュメンテーションページ又はAPIの各々のための他の情報ソース、例えば、APIリポジトリ又はAPIに関する情報を集約する1つ以上の他のサービスなどをクロール、トラバース、ハイパーテキストマークアップ言語(HTML)スクレープ(scrape)等することができる。そうするために、APIプラットフォームは、複数の異なるAPIホスティングサーバと対話してもよく、あるいはそうでなくてもよい。追加的又は代替的に、そのようなタスクを実行するために、APIプラットフォームは、セレニウム(Selenium)などのウェブ自動化ツールを利用してもよい。いくつかの実施形態において、APIにわたり反復するとき、APIプラットフォームは、APIがどのタイプの認証を使用するか、例えば、OAuth、API鍵などを示す情報を取得してもよい。追加的又は代替的に、APIプラットフォームは、所与のAPIのタイトル(title)、所与のAPIのホスト(例えば、ホストのIPアドレス、ホストのエンティティ名など)、APIドキュメンテーションページの位置(ドキュメンテーションページのユニフォームリソースロケータ(URL)など)などを取得してもよい。いくつかの実施形態において、特定の入力データセットが準備されて、ユーザ登録及び/又は認証分類を容易にしてもよい。
ブロック210において、新しいユーザが、所与のAPIへのアクセスを容易にするためにAPIに登録され得る。例えば、APIプラットフォームは、新しいユーザのアカウントを自動的に作成し、登録することができる。いくつかの実施形態において、APIプラットフォームは、APIのサインアップページのためのフォームを自動的に識別し、かつ/あるいは記入する(fill in)ことができる。追加的又は代替的に、APIプラットフォームは、APIに自動的にサインインしてアカウント作成を立証してもよい。ブロック210の動作のいくつかの例は、図3(新しいユーザアカウントを登録する例)、図4(検索エンジンベースのアプローチを使用して所与のAPIのためのサインアップページを識別する例)、図5(機械学習システムのためのモデルを生成及び/又は訓練する例)、図6(機械学習ベースのアプローチを使用して所与のAPIのためのサインアップページを識別する例)、図7(サインアップページのフォームに自動的に記入する例)、及び/又は図8(サインインページを自動的に識別する例)を参照してより詳細に図示及び説明され得る。
ブロック215において、所与のAPIが認証タイプとしてAPI鍵を使用してアクセスされるか又はOAuth(例えば、OAuth2.0)を使用してアクセスされるかについて、判定が行われ得る。例えば、APIプラットフォームは、ブロック205におけるトラバースを介して認証のタイプに関する情報を取得することができる。認証タイプがOAuthであると判定された場合、方法200はブロック220に進み得る。認証タイプがAPI鍵であると判定された場合、方法200はブロック225に進み得る。
ブロック220において、アプリケーション又はプロジェクトが、OAuthクレデンシャルを導出するためにAPIホストに登録され得る。例えば、APIプラットフォームは、API登録ページを識別し、アクセスすることができ、APIホストにプロジェクトを登録するプロセスを自動的にトラバースすることができる。アプリケーション又はプロジェクトを登録すると、APIプラットフォームは、OAuthクレデンシャルとして使用され得るクライアント識別子、クライアントシークレット(client secret)などの情報を取得することができる。追加的又は代替的に、OAuthクレデンシャルとして、OAuth認可コードが取得されてもよい。APIプラットフォームがアプリケーション又はプロジェクトを登録するために利用し得るプロセスの一例を図9に示す。
ブロック225において、API鍵が抽出され得る。例えば、APIプラットフォームは、APIホストにサインインすることができ、APIホストのページを自動的にトラバースしてAPI鍵ページに到達することができる。API鍵は、API鍵ページから、例えば、特定のHTML要素を識別することと、関連づけられたテキスト及び/又は要素を抽出することにより抽出されてもよい。APIプラットフォームがAPI鍵を抽出するために利用し得るプロセスの一例を図10に示す。
ブロック230において、認証データが、所与のAPIのために記憶され得る。例えば、APIプラットフォームはAPI鍵を記憶することができる。別の例として、APIプラットフォームは、クライアント識別子及び/又はクライアントシークレットを記憶してもよい。さらなる例として、APIプラットフォームは、OAuth認可コードを記憶してもよい。これら及び他の実施形態において、APIプラットフォームは、OAuth認可コード、クライアント識別子、及び/又はクライアントシークレットを利用して、認証データとして記憶され得るOAuthアクセストークンを取得及び/又は更新することができる。APIプラットフォームがOAuthアクセストークンを取得及び/又は更新するために利用し得るプロセスの一例を図11に示す。
ブロック235において、所与のAPIが、記憶された認証データに基づいてアクセスされ得る。例えば、ユーザはAPIプラットフォームを介して、API鍵、OAuthアクセストークン等を使用して所与のAPIにアクセスすることができ、それにより、ユーザはAPIを利用することができる。いくつかの実施形態において、そのようなアクセスは、サンプルデータを使用して得られてもよく、それにより、ユーザは、使用のためにAPIをサブスクライブし又はその他の方法でより永続的に選択すべきか否かを判断するときAPIを試すことができる。これら及び他の実施形態において、ユーザは、APIホストのページを個人的に訪問することなく、所与のAPIへのアクセスを付与されることが可能でもよい。例えば、APIプラットフォームは、APIホストサイトに自動的にアクセスして認証データを取得してもよく、それにより、ユーザはAPIにアクセスすることができる。
図3は、本開示の1つ以上の実施形態による、新しいユーザを登録する一例示的な方法300の例示的なフローチャートを示す。図3は、新しいユーザをAPIホストに登録するためにAPIプラットフォームにより利用されるプロセスの一例である。
ブロック310において、所与のAPIのためのサインアップページが、検索エンジンベースの検出又は機械学習ベースの検出を使用して自動的に検出され得る。例えば、APIプラットフォームは、APIドキュメンテーションデータ又は他の取得されたデータ(図2のブロック205で得られるものなど)に基づいて検索エンジンベースの検出又は機械学習ベースの検出を利用して、所与のAPIのためのサインアップページの位置を決定することができる。いくつかの実施形態において、検索エンジンベースの検出は、機械学習アプローチが所与のAPIのためのサインアップページを識別するのに失敗した場合に利用されてもよい。追加的又は代替的に、検索エンジンベースの検出は、機械学習ベースの検出のための訓練において使用されるサンプルサインアップページを識別するために使用されてもよい。いくつかの実施形態において、機械学習ベースの検出は、APIドキュメンテーションページを開始点として使用することができ、幅優先探索(BFS)アプローチ及び予め訓練されたモデルを使用してページをトラバースしてサインアップページを見つけることができる。検索エンジンベースの検出アプローチの一例を図4に示し、機械学習ベースの検出アプローチの一例を図6に示す。
ブロック320において、所与のAPIのためのサインアップページのフォームフィールドが自動的に記入され得る。例えば、APIプラットフォームは、フォームフィールドを自動的にトラバースし、適切なデータを識別し、適切なデータをフォームフィールドに入力することができる。いくつかの実施形態において、入力されるデータは、前にAPIプラットフォームに提供された、ユーザに特有のデータでもよい。追加的又は代替的に、APIプラットフォームは、汎用的な、ランダムな、又は他のサンプルデータを利用してもよく、それにより、入力された情報は、ユーザに明示的に結び付けられない(例えば、ユーザ名=hello;電子メール=hello@hello.com)。APIプラットフォームがサインアップページのフィールドに自動的に記入するために利用し得るプロセスの一例を図7に示す。
ブロック330において、アカウントクレデンシャルが、サインアップページの記入されたフォームに基づいて取得され得る。例えば、所与のAPIのためのサインアップページ上のフォームフィールドの全てに記入した後、アカウントクレデンシャルが、所与のAPIを有するアカウントに対して取得されてもよい。いくつかの実施形態において、アカウントクレデンシャルは、サインアップページ上で記入されたフィールドの1つ以上でもよい。いくつかの実施形態において、アカウントクレデンシャルは、フォームフィールドが記入されたことに応答して、所与のAPIのAPIホストからの通信を介して電子メールアカウントから取り出されてもよい。
図4は、本開示の1つ以上の実施形態による、サインアップページの識別に対する検索エンジンベースのアプローチの一例示的な方法400の例示的なフローチャートを示す。例えば、図4は、図3のブロック310の一実装を示し得る。
ブロック405において、所与のAPIのための1つ以上の潜在的なサインアップページを識別するために、クエリが生成され得る。例えば、APIプラットフォームは、所与のAPIのタイトルと、所与のAPIのプロバイダ、デベロッパ、及び/又はホストとの組み合わせを検索タームとして利用することができる。追加的又は代替的に、「サインアップ」、「アカウント」、「登録」など、他のキーワードがクエリに追加されてもよい。
ブロック410において、ブロック405で生成されたクエリを使用して、インターネット検索が実行され得る。例えば、APIプラットフォームは、クエリをサブミットすることができる。いくつかの実施形態において、セレニウムなどのウェブ自動化技術が、インターネットクエリをサブミットするために使用されてもよい。
ブロック415において、ブロック410で実行された検索の検索結果から、1つ以上のリンクが抽出され得る。例えば、APIプラットフォームは、Web自動化ツールを利用して検索結果からリンクを抽出することができる。いくつかの実施形態において、検索結果のHTMLコード内の「a」タグが抽出されてもよい。追加的又は代替的に、複数のレイヤを通しての後続ページ(例えば、リンクを辿ったとき到達されるページ)のHTMLコード内の「a」タグが抽出されてもよい。
ブロック420において、抽出されたリンクのコンテンツ(及び/又は抽出されたリンクの後続コンテンツ)が、コンテンツ上のフォームフィールドを辞書内のターム(terms)と相関させることにより、コンテンツ上のサインアップフォームを検出するために反復的に検索され得る。例えば、APIプラットフォームは、BFS検索を利用し、クエリ結果からの第1のリンクを用いて開始してもよい。APIプラットフォームは、第1のリンクを開き、ページ上の記入可能な(fillable)フォームについて検索し、記入可能なフィールドを辞書内のフィールド及び/又は情報と比較してこのページの類似度スコアを生成することができる。これら及び他の実施形態において、第1のリンクのページの分析(例えば、類似度スコア)は、閾値と比較されてもよい。閾値を下回る場合、APIプラットフォームは次のリンクに進み、次のページ等を分析してもよい。検索クエリからの第1のページセット(例えば、最初の10個の結果、最初の20個の結果など)がサインアップページを識別しない場合、APIプラットフォームは、次のページレイヤを分析することができる。例えば、APIプラットフォームは、第1のリンクのページで開始し、そのページからハイパーリンク(例えば、「a」タグ)を抽出してもよく、これらのリンクのページを分析してもよい。これらのページがサインアップページとして識別されない場合、APIプラットフォームは、第2の結果上のハイパーリンクのページなどを分析することができる。次のページレイヤのうちいずれも、サインアップページとして識別されない場合、APIプラットフォームは、次のレイヤ等に進んでもよい。
いくつかの実施形態において、APIプラットフォームは、辞書を構築することができる。例えば、APIプラットフォームは、設定された数のサンプルサインアップページ(例えば、5つの既知のサインアップページ)を識別することができ、設定された数の属性を選択してページの各々から抽出することができる(例えば、ID、名前(Name)、タイプ(Type)、及びプレースホルダ(Placeholder))。ページの属性の値は、カテゴリごとに別個のファイルに記憶されてもよい。複数のページにわたる重複は、除去されてもよい。以下の表は、4つの属性にわたる値の例を示す。
Figure 2022016303000002
Figure 2022016303000003
Figure 2022016303000004
Figure 2022016303000005
いくつかの実施形態において、APIプラットフォームは、自然言語ツールキット(例えば、NLTK)を利用して辞書内のエントリをトークン化し、クリーニングすることができる。例えば、全ての記号が、スペースで置き換えられてもよい(例えば、「Register_DOB_day」は、「Register DOB day」に変換され得る)。別の例として、タームは、例えば、「Full Name」を単一のフレーズとしてトークン化することにより、(例えば、予め訓練されたPunktモデルを使用して)トークン化されてもよい。さらなる例として、単一の文字及び/又は数字は除去されてもよい。
いくつかの実施形態において、APIプラットフォームは、複数単語の連結を別個の単語に分離することができる。例えば、頻度ごと単語モデル(words-by-frequency model)を使用して、「Useraccount」などのフレーズを「User account」に分離してもよい。いくつかの実施形態において、頻度ごと単語モデルは、さらなるサインアップページからの新しいデータに基づいて適合されるコスト辞書(例えば、ジップの法則(Zipf’s law)を使用し、ここで、コスト=-log(確率)連結が別個の単語であることの)を利用することができる。
所与のページを辞書と比較するとき、APIプラットフォームは、ページ上の属性を識別することができ、辞書内の全てのタームを抽出された属性と比較して類似度スコアを計算することができる。各属性について、最も高い類似度スコアを選択することができ、抽出された属性の全てにわたって平均類似度スコアを計算することができる。例えば、抽出された属性が「Password」(9.99の類似度スコアを生じる)、「User」(7.66の類似度スコアを生じる)、及び「login」(6.33の類似度スコアを生じる)であった場合、ページの全体類似度スコアは7.99であり得る。そのスコアは、所与のページがサインアップページであるか否かを検出するために、閾値との比較において使用されてもよい。
ブロック425において、フォームフィールドと辞書内のタームとの間の相関が閾値を超えていることに基づき、コンテンツの1つが所与のAPIのサインアップページとして識別され得る。例えば、相関を表す全体類似度スコア(上記の例では7.99)が閾値(例えば、7.75)を超えている場合、所与のページが、所与のAPIのためのサインアップページとしてAPIプラットフォームにより識別されてもよい。
ブロック430において、識別されたサインアップページのロケータ(locator)が記憶され得る。例えば、APIプラットフォームは、サインアップページのURLを所与のAPIのためのレコードに記憶することができ、それにより、ユーザが所与のAPIへのアクセスを要求したとき、APIプラットフォームはサインアップページのアドレスを認識している。
いくつかの実施形態において、サインアップページを識別するプロセス(例えば、図3のブロック310、図4の方法400、及び/又は図5の方法)は、所与のAPIに対して1回実行されてもよく、次いで、APIプラットフォームは、どれほど多くのユーザが所与のAPIへのアクセスを要求するかにかかわらず、所与のAPIのためのサインアップページを記憶していてもよい。追加的又は代替的に、サインアップページは、ユーザがアクセスを要求するたび識別されてもよく、あるいは、サインアップページの位置(例えば、サインアップページのURL)が依然として同じであることを確認するために周期的に(例えば、月に1回など)アップデートされてもよい。
図5は、本開示の1つ以上の実施形態による、モデルを生成及び/又は訓練する一例示的な方法500の例示的なフローチャートを示す。方法500は、予め訓練されたモデル又は分類器を生成するための、本開示全体を通して繰り返し使用されるプロセスを表し得る。例えば、図6のブロック610、図7のブロック710、図8のブロック810、図9のブロック915、図10のブロック1010などは、訓練されたモデル又は分類器を生成する際に図5の方法500で示されているものに類似又は相当するプロセスを利用することができる。
ブロック510において、訓練データがベクトル化され(vectorized)得る。訓練データは、訓練されるモデル又は分類器に依存して、任意の取得されたデータでもよい。例えば、訓練データは、既知のサインアップページ、既知のサインインページ、既知の記入可能フォームなど、及び/又はそれらから抽出されたデータ又はメタデータでもよい。例えば、所与のサインアップページについて、そのページの全ての属性及びラベルテキストが抽出されてもよい。いくつかの実施形態において、特定の属性(例えば、onclick、style、data-bind)は除外されてもよい。
ブロック520において、ベクトルがページに対してどれほど重要かを定量化するために、ベクトルの各々に対するターム頻度-逆文書頻度(term frequency-inverse document frequency、TF-IDF)を使用して正規化が実行され得る。TF-IDFが記載されているが、これは、本開示と矛盾しない機械学習モデルのための訓練データを生成及び/又は適用する単なる一例であり、任意のそのようなアプローチが、本開示の実施形態のいずれにおいても利用されてよいことが理解されるであろう。例えば、TF-IDFの代わりに、予め訓練されたモデルを適用して、所与のAPIに関連づけられた様々なページ内の訓練データの埋め込みの判定を容易にしてもよい。
ブロック530において、ランダムフォレスト(RF)分類器モデルが訓練され得る。例えば、APIプラットフォームは、ブロック510でベクトル化された訓練データ及び結果(例えば、これらのタームのベクトルは特定の特性に対応する)の態様をRFモデルに提供することができる。RF分類器が記載されているが、これは、本開示に従って利用され得る機械学習モデルの単なる一例であり、任意の機械学習モデルが、本開示の実施形態のいずれにおいても使用されてよいことが理解されるであろう。例えば、ランダムフォレストモデルの代わりに、ニューラルネットワーク、ディープラーニングモデルなどの他の機械学習モデルを使用することができる。
ブロック540において、ブロック530で訓練されたモデルが交差検証され得る。例えば、APIプラットフォームは、基準を満たすことがわかっている別のデータセットをRFモデルに提供することができ、RFモデルの性能を観察することができる。いくつかの実施形態において、評価は、5分割層化交差検証(five-fold stratified cross-validation)手法を利用してもよく、適合率(precision)、再現率(recall)、F1スコア、正解率(accuracy)などが、訓練されたモデルについて検証されてもよい。
ブロック550において、モデルの正解率が閾値を上回るかどうか判定が行われ得る。正解率がモデルの閾値を超える場合、方法500はブロック560に進み得る。正解率が閾値を下回る場合、方法500はブロック530に戻り、モデルをさらに訓練し得る。例えば、さらなる訓練データがモデルに提供されてもよい。追加的又は代替的に、RFモデルの他のパラメータ又は設定が修正されてもよい。
図6は、本開示の1つ以上の実施形態による、サインアップページの識別に対する機械学習ベースのアプローチの一例示的な方法600の例示的なフローチャートを示す。例えば、図6は、図3のブロック310の一例示的な実装を示す。図6は、訓練部分(ブロック605及び610)及びライブ使用(live usage)部分(ブロック650~670)を含む。
ブロック605(訓練部分内)において、収集されたサインアップページからデータが抽出され得る。例えば、APIプラットフォームは、検索エンジンベースのアプローチを利用して複数のAPIサインアップページを識別することができ、訓練データとして使用されるこれらのAPIページを収集することができる。追加的又は代替的に、ユーザが、APIプラットフォームに対して既知のサインアップページを手動で選択し、識別し、あるいはその他の方法で提供してもよい。
ブロック610において、機械学習プロセスにより使用されるように、サインアップページの訓練モデルが生成され得る。例えば、APIプラットフォームは、ブロック605からのデータを訓練データとして使用して、図5に示されるものなどのプロセスを利用することができる。
ブロック650(ライブ使用部分内)において、新しいAPIについてAPIドキュメンテーションページが取得され得る。例えば、APIドキュメンテーションページは、(図2のブロック205のように)APIプラットフォームにより識別されてもよい。
ブロック655において、APIドキュメンテーションページからリンクが抽出され得る。例えば、APIプラットフォームは、全ての「a」タグを抽出することができ、ハイパーリンクの構造(例えば、http://*.*)について検索することができる。
ブロック660において、抽出されたページが、所与の抽出されたページからデータを抽出すること及び抽出されたデータを予め訓練されたモデルと比較することにより、所与の抽出されたページが所与のAPIのためのサインアップページであるか否かを検出するために、反復的に分析される。例えば、所与の抽出されたページについて、APIプラットフォームは、ブロック605に類似又は相当する方法で全ての属性値及びラベルテキストを抽出することができる。この例を続けると、抽出されたデータは、図5のブロック510及び520のものに類似又は相当する方法でベクトル化及び/又は正規化されてもよく、データは、ブロック610で生成された訓練モデルに提供されてもよい。
ブロック665において、予め訓練されたモデルとの比較に基づき、所与のページが、所与のAPIのためのサインアップページとして識別され得る。例えば、APIプラットフォームにより抽出されたデータに訓練されたモデルを適用することで、所与のページが所与のAPIのためのサインアップページであることを示すことができる。所与のページがサインアップページとして識別されない場合、APIプラットフォームは、抽出されたページ及び/又は後続ページ(リンク先ページ上のリンクなど)を反復的に分析し続けてもよい。
ブロック670において、識別されたサインアップページのロケータが記憶され得る。例えば、APIプラットフォームは、所与のAPIに関連づけられたリポジトリにサインアップページを記憶することができる。追加的又は代替的に、識別されたサインアップページをモデルの訓練に提供して、モデルをさらにチューニング及び/又は訓練してもよい。
図7は、本開示の1つ以上の実施形態による、サインアップページのサインアップフォームに自動的に記入する一例示的な方法700の例示的なフローチャートを示す。図7は、訓練部分(ブロック705及び710)及びライブ使用部分(ブロック750~790)を含む。
ブロック705(訓練部分)において、抽出されたデータが代表的な入力フィールドにカテゴライズされ得る。例えば、サインアップページを識別するために使用される既知のサインアップページの各々についてブロック605で抽出されたデータが抽出されてもよく、例えば、入力タグ属性値及び/又はラベルテキストの全てである。
ブロック710において、フィールドの各々について代表的な分類器を作成するために、ブロック710の抽出されたデータが使用され得る。例えば、代表的な入力フィールドのセットが識別されてもよく、各々がその独自の分類器を生成されてもよい。このような代表的なフィールドには、ID、電子メール、ユーザ名、パスワードなどを含んでもよい。代表的なフィールドは、既知のサインアップページを分析することにより、又はそのようなフィールドのユーザ選択若しくは識別から、APIプラットフォームにより自動的に生成されてもよい。
ブロック750(使用部分)において、サインアップページが取得され得る。例えば、APIプラットフォームは、リポジトリからサインアップページのためのURLを識別することができ、サインアップページにナビゲートすることができる。
ブロック755において、サインアップページ上の記入可能フィールドの各々を識別するために、サインアップページからデータが抽出され得る。例えば、APIプラットフォームは、全ての入力タグ属性値を抽出することができる。
ブロック760において、所与の記入可能フィールドについて、分類されたフィールド内のフィールドに対するマッチがあるかどうか判定が行われ得る。例えば、APIプラットフォームは、異なるクラスについての訓練モデルを利用して、ブロック710からの代表的なフィールド内にマッチがあるかどうかを決定することができる(例えば、分析されている所与のページ上にフィールド「パスワード」があり、訓練されたモデルが「パスワード」をマッチであるとして識別する代表的なフィールド「パスワード」が存在する)。マッチがある場合、方法700はブロック770に進み得る。マッチがない場合(例えば、分類器が失敗する(例えば、訓練されたモデルのいずれも肯定的な結果を返さない)場合、又は複数の代表的なフィールド間に矛盾がある(例えば、複数の訓練されたモデルが肯定的な結果を返す)場合)、方法700はブロック765に進み得る。
ブロック765において、最も近いマッチが識別され得る。例えば、最も近い代表的なフィールドを識別するために、辞書を用いた類似度スコアが利用されてもよく、例えば、図4を参照して説明した辞書及び類似度スコアなどである。
ブロック770において、所与のAPIへの一時的なアクセスを提供してサインアップクレデンシャルを受け取るために、フィールドにサンプル値が入力され得る。例えば、サンプル値は、APIプラットフォームに関連づけられた汎用的なターム又はサンプルタームでもよく、それにより、APIプラットフォームのユーザに一時的なアクセスが提供され得る。
ブロック775において、システムが進行するのにその能力を制限されているかどうか判定がなされ得る。例えば、キャプチャ(captcha)フィールド、又は、APIプラットフォームが継続して記入可能なフォームに情報を入力し又は記入されたフォームをサブミットすることを妨げる他のコンポーネントがある場合、システムが進行するのを可能にすることに制限があり得る。いくつかの実施形態において、制限は、最も近いマッチなどの識別されたフィールド及び/又は入力されている不適切なデータの間のミスマッチにより引き起こされるエラー又は失敗であり得る。制限がある場合、方法700はブロック780に進み得る。制限がない場合、方法700はブロック785に進み得る。いくつかの実施形態において、ブロック775の動作は、方法700及び/又は他の方法全体を通して進行する動作でもよい。例えば、サインアップ、サインイン、プロジェクトの登録などの間にキャプチャフィールドが生じる場合、APIプラットフォームは、進行する前にユーザに入力を促す(prompt)ことができる。
ブロック780において、ユーザは入力を促され得る。例えば、ユーザは、キャプチャリクエストに従うように、又はAPIプラットフォームがAPIへのサインアップを続行する能力に対する制限をトリガしているエラーを訂正するように促されてもよい。
ブロック785において、ユーザが所与のAPIを採用するとき、サンプル値を確立された値に変更するために、ユーザ入力が受け取られ得る。例えば、ユーザは、APIを試し、自身がそのソフトウェアプロジェクトで所与のAPIを使用したいと判断した後、自身の個人情報及び/又は自身のプロジェクトに関する情報をサブミットすることができてもよい。いくつかの実施形態において、ブロック785は、エラーを訂正し、又は記入可能なフォームフィールドに対して正しい情報を入力するユーザフィードバックなどの、任意のユーザフィードバックを表すことができる。
ブロック790において、ブロック710の訓練モデルが、アップデート及び/又は再訓練され、あるいはフォームに記入する間に生じた変更を組み込み得る。例えば、ユーザが記入可能なフォームフィールドの分類におけるエラーを訂正した場合、又は特定のサンプルデータがエラーをトリガした場合、モデルは、訂正を考慮に入れる(account for)ことができ、それにより、異なるAPI(又は、同じ所与のAPI)に対する将来のAPIのサインアップについて、APIとの自動的なサインアップが、ユーザ入力のフィードバックを使用することにより、より合理化された及び/又は中断されない方法で生じ得る。いくつかの実施形態において、ユーザにより入力された訂正されたサンプル値は、他の対応する記入可能フィールドに使用するためのサンプル値として保存されてもよい。
図8は、本開示の1つ以上の実施形態による、サインインページの識別及びサインインに対する機械学習ベースのアプローチの一例示的な方法800の例示的なフローチャートを示す。いくつかの実施形態において、方法800に従って、実行されたサインアップ、例えば、図7の方法700に従うことにより行われたサインアップなどの成功を立証することができる。図8は、訓練部分(ブロック805及び810)及びライブ使用部分(ブロック850~880)を含む。
ブロック805において、様々なAPIのための収集されたサインインページからデータが抽出され得る。例えば、APIプラットフォームは、属性値及び/又はラベルを抽出することができる。
ブロック810において、機械学習プロセスにより使用されるように、サインインページの訓練モデルが生成され得る。例えば、ブロック810は、図5に示すプロセスに従ってサインインページのモデルをベクトル化し、訓練し、検証することができる。
ブロック850において、所与のAPIのためのサインインページが取得され得る。例えば、サインインページは、(図4又は図6に示される方法を使用するなどで)事前に識別されてもよい。
ブロック855において、サインインページからリンクが抽出され得る。ブロック855は、ブロック655に類似又は相当してもよい。
ブロック860において、抽出されたページが、所与の抽出されたページからデータを抽出すること及び抽出されたデータを予め訓練されたモデルと比較することにより、所与の抽出されたページがAPIプラットフォームがサインアップした所与のAPIのためのサインインページであるか否かを検出するために、反復的に分析され得る。例えば、所与の抽出されたページについて、APIプラットフォームは、ブロック605に類似又は相当する方法で全ての属性値及びラベルテキストを抽出することができる。この例を続けると、抽出されたデータは、図5のブロック510及び520のものに類似又は相当する方法でベクトル化及び/又は正規化されてもよく、データは、ブロック810で生成された訓練モデルに提供されてもよい。
ブロック865において、予め訓練されたモデルとの比較に基づき、所与のページが、所与のAPIのためのサインインページとして識別され得る。例えば、APIプラットフォームにより抽出されたデータに訓練されたモデルを適用することで、所与のページが所与のAPIのためのサインインページであることを示すことができる。所与のページがサインインページとして識別されない場合、APIプラットフォームは、抽出されたページ及び/又は後続ページ(リンク先ページ上のリンクなど)を反復的に分析し続けてもよい。
ブロック870において、サインインフィールドが、所与のAPIのためにサインアップするとき使用されるクレデンシャルを用いて自動的に記入され得る。例えば、図7に示すサインアッププロセスに使用されるユーザ名、電子メール、パスワードなどの対応するフィールドが、同じラベルを有するサインインページの入力ラベル付きフィールドに自動的に記入されてもよい。いくつかの実施形態において、クレデンシャル記入ルーチンは、フィールドの抽出、最も近いマッチの識別、サンプル値の提供など、所与のAPIのために自動的にサインアップするために使用されるもの(例えば、図7の方法700)に類似又は相当するルーチンに従ってもよい。
ブロック875において、サインインが成功したかどうか判定が行われ得る。サインインが成功した場合、方法800はブロック880に進み得る。サインインが成功しなかった場合、方法800はブロック850に戻り得る。例えば、APIプラットフォームは、誤ったサインインページが前に識別された場合、代替サインインページを識別しようとしてもよい。いくつかの実施形態において、APIプラットフォームは、失敗したサインインに対して、ユーザに入力を促すことができる。例えば、ユーザは、失敗したサインインを引き起こした記入可能なフィールドに対応する適切なサンプル値を識別するように求められてもよい。
ブロック880において、サインインの結果及び関連データが記憶され得る。例えば、APIプラットフォームは、成功のサインインの間に使用されたサインインページのURL、サインインクレデンシャル、それらの対応するフィールドなどを記憶することができる。
図9は、本開示の1つ以上の実施形態による、アプリケーション又はプロジェクトを登録する一例示的な方法900の例示的なフローチャートを示す。例えば、所与のAPIが認証アプローチとしてOAuth(例えば、OAuth2.0)を利用する場合、APIホストは、プロジェクトをAPIホストに登録する前にAPIへのアクセスを妨げる可能性がある。図9は、訓練部分(ブロック905~920)及びライブ使用部分(ブロック950~975)を含む。
ブロック905(訓練部分)において、アプリケーション登録ページが取得され得る。例えば、既知のアプリケーション登録プロセスについて、APIプラットフォームは、アプリケーション登録プロセス全体を通じての様々な状態の複数の代表的な例を取得することができる。いくつかの実施形態において、ページの各々は、より良く理解され、及び/又はモデルに組み込まれるために、前処理されてもよい。例えば、所与のページについて、生のテキスト記述が、トークン化プロセスを通じて単語、キーワード等に分割されてもよい。別の例として、トークン化されたテキストは、同じ単語の異なる語形変化を組み合わせることができるレンマ化プロセスを受けてもよく、それにより、それらは単一のアイテムとして分析することができる(例えば、「am」、「are」、「is」を「be」に変換すること、又は「car」、「cars」、「car’s」、「cars’」をcarとして変換することなど)。さらなる例として、ストップワードは無視されてもよい(例えば、「the」、「is」、「at」、「which」、「a」、「an」など)。別の例として、連結されたトークンは、ブロック520を参照して説明されるものと類似のアプローチを使用して別個の単語に分割されてもよい(例えば、ターム「UserID」は、「User」及び「ID」に分けられてもよい)。
ブロック910において、代表的な状態(representative state)に関するユーザアノテーション付き(user-annotated)データが取得され得る。例えば、APIプラットフォームは、様々な代表的な状態を識別するアプリケーション登録プロセスのために、既知のページのセットにユーザアノテーションを提供するようにユーザに促すことができる。別の例として、ユーザは、他の場所で異なるページにアノテーションを付けてもよく、アノテーション付きバージョンをAPIプラットフォームに直接提供してもよい。
ブロック915において、アノテーション付きデータに基づいて、代表的な状態の各々について分類器/モデルが訓練され得る。ブロック915は、図5を参照して説明したものと類似のアプローチに従ってもよい。いくつかの実施形態において、ブロック915は、異なるベクトル化器(vectorizer)を利用してもよく、なぜならば、語彙が、訓練されている他のモデルに対してよりもより広い可能性があるためである。これら及び他の実施形態において、ベクトル長を低減し、モデルの訓練及び/又はモデルの適用に関連して処理コストを減らすために、ハッシュベクトル化器を使用して、ターム頻度値のハッシュを提供してもよい。
ブロック920において、予め定義された状態の各々に関連づけられた予め定義されたアクションのセットが識別され得る。例えば、ユーザアノテーション付きデータは、所与の状態からどのアクションが取られ得るかを示すことができる。別の例として、APIプラットフォームが、状態間の遷移、及び既知のアプリケーション登録ページの遷移を引き起こすために取られるアクションを決定することにより、どのステップが状態間で最もしばしば取られるかを決定してもよい。
ブロック950(ライブ使用部分)において、所与のAPIについて、APIのためのドキュメントページが取得され得る。例えば、ドキュメントページは、APIホストとの成功のサインインの後のランディングページを含むことができる。別の例として、ドキュメントページは、所与のAPIのためのホームページを含んでもよい。さらなる例として、ドキュメントページは、アプリケーション登録プロセスが始まり得る任意のページでもよい。
ブロック955において、現在の状態が決定され得る。例えば、ブロック955は、APIプラットフォームが現在のページのテキストデータを抽出することができ、それを代表的な状態の各々についてのモデルの各々と比較することができる、本明細書に記載される他のプロセスと類似のプロセスに従うことができる。マッチを有するモデルに基づき(例えば、1つのモデルのみが肯定的な結果を返す)、現在の状態は、マッチするモデルに関連づけられた代表的な状態に対応し得る。複数のモデルが肯定的な結果を返すか、又はどのモデルも肯定的な結果を返さない場合、最も近いマッチが現在の状態として取得されてもよい。
ブロック960において、登録プロセスが完了しているかどうか判定が行われ得る。登録プロセスが完了していない場合、方法900はブロック965に進み得る。登録プロセスが完了している場合、方法900はブロック970に進み得る。
ブロック965において、APIプラットフォームが、現在の状態から次の状態に遷移するために現在の状態にあるとき利用可能なアクションを取ることができ、その後、方法900は、ブロック955に戻って現在の状態を識別し得る。いくつかの実施形態において、状態遷移は、システムが現在の状態から特定の潜在的な次の状態に遷移する確率が表されるマルコフモデルにより表されてもよい。例えば、状態の各々を表す確率の行列が準備されてもよい(例えば、N個の状態では、ある状態から別の状態に遷移する確率のN×N行列)。これら及び他の実施形態において、どのアクションを取るべきか/どの遷移を辿るべきかを選択するとき、APIプラットフォームは、(例えば、numpy.random.choiceアルゴリズムを使用することにより)確率により知らされる次の状態のランダムな選択を行ってもよい。
いくつかの実施形態において、状態遷移は、遷移された状態が正しい状態であることを立証するためのチェックを含むことができる。例えば、アクションの後の新しい状態は、新しい状態が予期された状態であるかを確認するためにチェックされてもよい。予期された状態が新しい状態でない場合、APIプラットフォームは、前の状態に逆戻りし、異なるアクションを選択してもよい。
潜在的な状態、それらの間で遷移するアクションなどに関して、図12A~図12Eは、代表的な状態、それらの間の遷移、及びそれらに関連づけられた潜在的な確率の例示を含む。これらの例は、決して限定的なものでなく、単に本開示の原理を伝えるための例示の役割を果たす。
ブロック970において、クライアントOAuthクレデンシャルが抽出され得る。例えば、アプリケーション及び/又はプロジェクトが登録プロセスを完了した後、クライアント識別子、クライアントシークレット等がOAuthクレデンシャルとして抽出されてもよい。追加的又は代替的に、OAuth認可コード及び/又はアクセストークンがOAuthクレデンシャルとして抽出されてもよい。
ブロック975において、抽出されたOAuthクレデンシャルが記憶され得る。例えば、APIプラットフォームは、OAuthクレデンシャルを所与のAPIに関連づけられたものとして記憶することができる。これら及び他の実施形態において、OAuthクレデンシャルは、それらを使用して所与のAPIにアクセスする、所与のAPIにアクセスするためのユーザの承認を確認する等ができるように、記憶されてもよい。
図10は、本開示の1つ以上の実施形態による、API鍵を抽出する一例示的な方法1000の例示的なフローチャートを示す。例えば、所与のAPIが認可のためにAPI鍵を利用するプロジェクトについて、APIプラットフォームは、サインアップの後に方法1000に従ってAPI鍵を抽出することができる。図10は、訓練部分(ブロック1005及び1010)及びライブ使用部分(ブロック1050~1070)を含む。
ブロック1005において、様々なAPIのための収集されたAPI鍵ページからデータが抽出され得る。例えば、APIプラットフォームは、属性値及び/又はラベルを抽出することができる。
ブロック1010において、機械学習プロセスにより使用されるように、API鍵ページの訓練モデルが生成され得る。例えば、ブロック1010は、図5に示すプロセスに従い、API鍵ページのモデルをベクトル化し、訓練し、検証することができる。
ブロック1050において、所与のAPIについてのAPIドキュメントページが取得され得る。例えば、ドキュメントページは、APIホストとの成功のサインインの後のランディングページを含んでもよい。別の例として、ドキュメントページは、所与のAPIのためのホームページを含んでもよい。
ブロック1055において、APIドキュメントページからリンクが抽出され得る。ブロック1055は、ブロック655に類似又は相当してもよい。
ブロック1060において、抽出されたページが、所与の抽出されたページがAPIプラットフォームがサインアップした所与のAPIのためのAPI鍵ページであるか否かを検出するために、反復的に分析され得る。ブロック1060は、部分的に、所与の抽出されたページからデータを抽出し、抽出されたデータを予め訓練されたモデルと比較することにより実行されてもよい。例えば、所与の抽出されたページについて、APIプラットフォームは、ブロック605に類似又は相当する方法で全ての属性値及びラベルテキストを抽出することができる。この例を続けると、抽出されたデータは、図5のブロック510及び/又は520のものに類似又は相当する方法でベクトル化及び/又は正規化されてもよく、データは、ブロック1010で生成された訓練モデルに提供されてもよい。
ブロック1065において、予め訓練されたモデルとの比較に基づき、所与のページが所与のAPIのためのAPI鍵ページとして識別され得る。例えば、APIプラットフォームにより抽出されたデータに訓練されたモデルを適用することで、所与のページが所与のAPIのためのAPI鍵ページであることを示すことができる。所与のページがAPI鍵ページとして識別されない場合、APIプラットフォームは、抽出されたページ及び/又は後続ページ(リンク先ページ上のリンクなど)を反復的に分析し続けてもよい。追加的又は代替的に、APIプラットフォームは、API鍵ページ上のAPI鍵を識別及び/又は抽出してもよい。例えば、API鍵はAPI鍵ページ上のデータフィールド又はテキストフィールドでもよく、そのフィールド内のテキストが抽出されてもよい。
ブロック1070において、API鍵が記憶され得る。例えば、APIプラットフォームは、APIに関連してAPI鍵を、所与のAPIのアクセスを得ようとするときに使用されるクレデンシャルとして記憶することができる。
図11は、本開示の1つ以上の実施形態による、OAuthクレデンシャルの解決及び/又は更新の一例示的な方法1100の例示的なフローチャートを示す。APIプラットフォームのユーザが所与のAPIへのアクセスを得ようとするとき、APIプラットフォームは、所与のAPIがアクセスを付与するためにOAuthを利用するか又はAPI鍵を利用するかを判定することができる。それがAPI鍵である場合、APIプラットフォームは、記憶された鍵(例えば、図10の方法1000に従って記憶された鍵)を取り出すことができる。それがOAuthセキュリティプロセスである場合、APIプラットフォームは、OAuthクレデンシャルを解決及び/又は更新することができ、それにより、ユーザはAPIにアクセスすることができる。
ブロック1105において、記憶されたOAuth情報が取り出され得る。例えば、OAuthクレデンシャルを要求する位置に関する情報である。別の例として、情報は、APIへのアクセスのためのリクエストをサブミットし、又は該アクセスを要求するプロセスを開始するために使用される、クレデンシャル、関連ソフトウェアアプリケーション/プロジェクト等を含んでもよい。
ブロック1110において、情報がPOSTリクエストとしてアップロードされ得る。例えば、APIプラットフォームは、この情報をサブミットして、所与のAPIへのアクセスを要求するプロセスを開始することができる。
ブロック1115において、OAuthオブジェクトが初期化され得る。例えば、APIプラットフォームに関連づけられたセカンダリサーバ(APIプラットフォームのサブシステムを含む)が、APIへのアクセスを要求するためにOAuthオブジェクトを初期化してもよい。
ブロック1120において、APIプラットフォームにおけるブラウザが、APIへのアクセスのリクエストをトリガし得るOAuthリゾルバを開くことができる。いくつかの実施形態において、OAuthリゾルバは、登録されたアプリケーション/プロジェクトに関連づけられているものとして表現されてもよい。
ブロック1125において、OAuthリゾルバを開いたことに基づき、セカンダリサーバが、APIホストからの認可コードを要求することができる。応答して、APIホストは、アプリケーションを介してAPIにアクセスする許可が付与されているかをアプリケーション/プロジェクトの登録者に問い合わせることができる。
ブロック1130において、APIプラットフォームが、アプリケーションを介してAPIにアクセスする許可のリクエストを受信することができる。
ブロック1135において、APIプラットフォームが、ログインクレデンシャルをサブミットすることができる。例えば、ログインクレデンシャルは、クライアント識別子、クライアントシークレットなどを含んでもよい。
ブロック1140において、APIホストが、ブロック1135でサブミットされたログインクレデンシャルの承認に基づいて、セカンダリサーバにアクセスコードを返すことができる。
ブロック1145において、セカンダリサーバが、アクセストークンを要求することができる。例えば、セカンダリサーバは、アクセスコードを使用してアクセストークンを要求してもよい。別の例として、セカンダリサーバは、アクセスコードを使用してAPIコールをサブミットしてもよい。
ブロック1150において、セカンダリサーバが、APIホストからアクセストークンを取り出すことができる。例えば、APIホストは、ブロック1145におけるリクエストに基づいてアクセストークンをPOSTしてもよい。追加的又は代替的に、APIホストは、アクセストークンをセカンダリサーバに直接通信してもよい。
ブロック1155において、APIプラットフォームが、セカンダリサーバからのレスポンスに基づいてHTMLを作成することができる。例えば、APIプラットフォームは、登録されたアプリケーション/プロジェクトの一部として受信され、かつAPI応答データを提示するHTMLを作成してもよい。
ブロック1160において、APIプラットフォームが、作成されたページからアクセストークンを抽出することができる。例えば、セカンダリサーバから受信したデータは、OAuthのためのアクセストークンを含んでもよい。
ブロック1165において、アクセストークンがAPIプラットフォームにより記憶され得る。例えば、APIプラットフォームは、所与のAPIに関連してOAuthアクセストークンを記憶することができ、それにより、ユーザが、所与のAPIにアクセスすること及び/又は所与のAPIの使用を観察することを望む場合、クレデンシャルは、そうするためにOAuthアクセストークンを介して利用可能である。いくつかの実施形態において、OAuthアクセストークンは、期限切れ日付/時刻、又はアクセスが求められた場合にOAuthアクセストークンが更新されるべき経過期間と共に記憶されてもよい。
いくつかの実施形態において、方法1100は、ユーザがアクセスのリクエストの一部としてサンプル使用を用いることによりAPIを試すよう試みるとき従ってもよい。
本開示の範囲から逸脱することなく、方法200~1100のいずれかに修正、追加、又は省略がなされてもよい。例えば、方法200~1100のいずれかの動作は、異なる順序で実施されてもよい。追加的又は代替的に、2つ以上の動作が同時に実行されてもよい。さらに、概説された動作及びアクションは例として提供されており、動作及びアクションのいくつかは、開示される実施形態の本質を損なうことなく任意でもよく、より少ない動作及びアクションに組み合わせられてもよく、あるいはさらなる動作及びアクションに拡張されてもよい。
図12A~図12Eは、状態図の様々な状態及び/又は状態間の遷移を示す。図12Aは、3つの一般状態を有する全体的なプロセスを示し、図12B~図12Eは、図12Aの3つの状態をトラバースするときの状態間の様々な遷移を示す。状態の各々の間で遷移するためにアクションが取られる。いくつかの状況において、図12A~図12Eは、ある状態から別の状態に遷移するためにそれぞれのアクションが取られる例示的な確率を示す。
図12Aは、本開示の1つ以上の実施形態による、アプリケーションを登録する際の第1の例示的な状態のセット1200aを示す。
状態1210は、所与のAPIに関連づけられたページ、例えば、APIホストのホームページ、サインイン後のランディングページ、所与のAPIのためのドキュメンテーションページなどに一般的に到達することを表し得る。追加的又は代替的に、状態1210は、APIホストサイトへのログイン及び/又はアプリケーション登録プロセスへの着手に関連づけられた状態を表してもよい。
アクション1250は、認証開発者ページからアプリケーション登録プロセスに進むために取られるアクションを表し得る。
状態1220は、アプリケーション登録プロセスを表し得る。
アクション1260は、アプリケーション登録プロセスからクレデンシャル取り出し状態に進むために取られるアクションを表し得る。
状態1230は、クレデンシャル取り出し状態を表し得る。クレデンシャル取り出し状態1230は、状態1220からの登録されたアプリケーションに関連づけられたクレデンシャルがAPIプラットフォームにより取り出し及び記憶され得る状態を表すことができる。
図12Bは、本開示の1つ以上の実施形態による、アプリケーションを登録する際の第2の例示的な状態のセット1200bを示す。図12Bに示される状態は、図12Aの状態1210のサブ状態を表す。
状態1212は、APIドキュメントページに存在する状態を表し得る。例えば、APIドキュメントページは、所与のAPIに関連するAPIホストシステムにサインインした後のランディングページを表してもよい。
状態1214は、潜在的に認証ドキュメントであるもの、換言すれば、アプリケーション登録がアクセスされる元のページに存在する状態を表し得る。
状態1212と状態1214との間で遷移するアクション(及び、状態1214に残るアクション)は、現在の状態に関連づけられた現在のページ内のリンクを抽出することと、タイトルが「authorize」、「authentication」、「authorizing」、「authenticating」、「authorize」、「authenticate」等に類似するAPI名及び単語を含むか否かを立証することを含む。いくつかの実施形態において、そのようなアクションは、各リンクを反復的に分析するために、図6のブロック660のプロセスに類似又は相当してもよい。これら及び他の実施形態において、別のリンクをチェックする各反復が、状態1214に留まる矢印により表されてもよい。
図示の例では、認証ドキュメントとして当初カテゴライズされた認証ドキュメント(状態1214)がさらなるページ(リンク及び/又はページに相当する第2又は第3のレイヤなど)の分析を含み得る確率は、23%であり得る。さらに、この例を続けると、認証ドキュメントがアプリケーション登録プロセスを開始するためのボタンを含む確率は、9%の機会を含むことができ、ログインが登録プロセスの前の初期状態である確率は、68%の機会である。
状態1214(認証ドキュメント)と状態1218(ログイン)との間で遷移するアクションは、クリーニング及びトークン化の後に「create」、「application」、「register」、「oauth」、「authenticate」、「client id」、「client secret」、「authorization」などのタームを含む、関連する属性テキスト/ラベルを有するリンクを抽出することを含む。例えば、そのような情報を含む、識別されたリンクは、ログイン状態1218への遷移を結果としてもたらし得る。いくつかの実施形態において、そのようなアクションは、各リンクを反復的に分析するために、図6のブロック660のプロセスに類似又は相当してもよい。これら及び他の実施形態において、別のリンクをチェックする各反復が、状態1214に留まる矢印により表されてもよい。
状態1216は、ボタン要素を表し得る。いくつかの実施形態において、ログイン状態1218に到達するための単なるリンクではなく、APIホストサイト構造は、アプリケーション登録プロセスに到達するためにクリックされるボタンを含んでもよい。これら及び他の実施形態において、状態1216から状態1218への遷移は、「create」、「application」、「register」、「oauth」、「authenticate」、「client id」、「client secret」、「authorization」などのタームを含む属性テキストラベルを有するボタンをクリックすることを含む。
ログイン状態1218は、クレデンシャルを入力する状態を表してもよく、それにより、プロジェクト又はアプリケーション登録プロセスは開始することができる。
これら及び他の実施形態において、状態間の遷移は、サインインページ、サインアップページなどを識別及び/又は検出するプロセスに類似又は相当してもよい。
図12Cは、本開示の1つ以上の実施形態による、アプリケーションを登録する際の第3の例示的な状態のセット1200cを示す。図12Cは、図12Aの状態1220のサブ状態のより詳細な図を示す。図12Dは、図12Cの状態のサブ状態のより詳細な図を示す。図12Eは、図12Aの状態1230のサブ状態のより詳細な図を示す。
ログイン(状態1218)の後、APIホストが開発者登録を有する確率は、6%の機会であり、94%の機会は、APIホストがアプリケーション/プロジェクトが登録され得るプロジェクト作成(状態1222)に直接進むことである。プロジェクト作成(状態1222)の後、クレデンシャルが作成され得る(状態1230)。いくつかの実施形態において、開発者登録(状態1224)の後、12%の確率でクレデンシャルを作成することができ(状態1230)、そうでなければ、APIホストプロセスは開発者登録の後にプロジェクト作成を含むことができる。
図12Dは、本開示の1つ以上の実施形態による、アプリケーションを登録する際の第4の例示的な状態のセット1200dを示す。例えば、ログイン(状態1218)がプロジェクト登録に直接進むとき、状態は、状態1225で開始し得る。別の例として、ログイン(状態1218)が開発者登録(状態1224)に進むとき、状態は、図12Dに示されるように状態1224で開始し得る。
状態1224において、アプリケーション/プロジェクトの開発者に関する情報が入力され得る。いくつかの実施形態において、そのような情報の入力は、図7に示されたAPIに対するサインアップのための記入可能なフォームへの自動的な記入を参照して説明されたものと類似の自動化された方法で進めてもよい。
状態1225において、所与のAPI及び/又はAPIホストに関連づけられたサービス規約(terms of service)が、レビューのために利用可能であり得る。いくつかの実施形態において、APIプラットフォームは、サービス規約のコピーを所与のAPIに関連づけられたものとしてサービス規約ストレージ1280に記憶することができる。状態1225(サービス規約の閲覧)からプロジェクト登録(状態1226)に遷移するために、アクションは、サービス規約を承認するためにリンク又はボタンを識別及びクリックすることを含んでもよい。例えば、class「button」、「accept」のid、及び「href」属性又は類似若しくは相当するもののプロパティを有する要素を識別するプロセスに従って、サービス規約を承認するためのボタン又はリンクを見つけてもよい。
状態1226において、アプリケーション/プロジェクトに関する情報を入力することにより、プロジェクトが登録され得る。いくつかの実施形態において、そのような情報の入力は、図7に示されたAPIに対するサインアップのための記入可能なフォームへの自動的な記入を参照して説明されたものと類似の自動化された方法で進めてもよい。状態1226(プロジェクト登録)から状態1227(プロジェクト選択)に遷移するために、アクションは、プロジェクトを作成するためにリンク又はボタンを識別及びクリックすることを含んでもよい。例えば、class「button」、「create」のid、及び「href」属性又は類似若しくは相当するもののプロパティを有する要素を識別するプロセスに従って、プロジェクトを作成するためのボタン又はリンクを見つけてもよい。
状態1227において、作成されたプロジェクトが選択され得る。いくつかの実施形態において、そのような情報の入力は、図7に示されたAPIに対するサインアップのための記入可能なフォームへの自動的な記入を参照して説明されたものと類似の自動化された方法で進めてもよい。いくつかの実施形態において、そのような選択は、状態1226で作成されたプロジェクトを選択することを含んでもよい。状態1227(プロジェクト選択)から状態1230(クレデンシャル作成)に遷移するために、アクションは、状態1226で登録されたプロジェクト選択するリンク又はボタンを識別及びクリックすることを含んでもよい。例えば、class「mat-button」、「credentials」のid、及び「href」属性又は類似若しくは相当するもののプロパティを有する要素を識別するプロセスに従って、登録されたプロジェクトのクレデンシャルを作成するためのボタン又はリンクを見つけてもよい。
図12Eは、本開示の1つ以上の実施形態による、アプリケーションを登録する際の第5の例示的な状態のセット1200eを示す。
図12A及び/又は12Dに示されるように状態1230に到達したとき、いくつかの実施形態において、状態は6%の確率で状態1237(クレデンシャル登録)に直接遷移し、いくつかの実施形態において、状態1231(クレデンシャルタイプの選択)に遷移する。
状態1231は、クレデンシャルタイプを選択することを表す。例えば、ページが、選択を行うことができる複数の認証タイプのドロップダウンメニューを含んでもよい。いくつかの実施形態において、クレデンシャルタイプの選択は、APIプラットフォームにより自動的に実行されてもよい。例えば、図2のブロック215を参照して説明されたものに類似又は相当するプロセスが適用されてもよい。いくつかの実施形態において、APIプラットフォームは、OAuthを自動的に選択してもよい。状態1231から状態1233に遷移するアクションは、クレデンシャルタイプの選択を含むことができる。
状態1233は、アプリケーションタイプを選択することを表し得る。例えば、ページが、選択を行うことができるアプリケーションタイプを有するラジオボタンのセットを含んでもよい。例えば、タイプは、Webアプリケーション、Android(登録商標)アプリケーション、Chrome(登録商標)アプリケーション、iOS(登録商標)アプリケーション、PlayStation(登録商標)アプリケーションなどを含んでもよい。いくつかの実施形態において、アプリケーションタイプの選択は、APIプラットフォームにより自動的に実行されてもよい。例えば、図2のブロック215を参照して説明されたものに類似又は相当するプロセスが適用されてもよい。状態1233から状態1235に遷移するアクションは、アプリケーションタイプの選択を含んでもよい。例えば、class「button」、「next」のid、及び「href」属性又は類似若しくは相当するもののプロパティを有する要素を識別するプロセスに従って、アプリケーションタイプを選択してもよい。
状態1235は、同意画面を表し得る。例えば、同意画面は、ユーザが承諾することを示すボタンと共に、プロジェクトが特定の要件に準拠すること、及び/又は特定の制限若しくは保証の不足等があることを示すメッセージを有するページを含んでもよい。状態1235から状態1237に遷移するアクションは、同意の確認を含むことができる。例えば、class「button」、「accept」のid、及び「href」属性又は類似若しくは相当するもののプロパティを有する要素を識別するプロセスに従って、同意を確認してもよい。
状態1237は、クレデンシャルを登録するために記入可能なフォームのセットを含み得る。例えば、クレデンシャルの登録に関連づけられたクライアントシークレット、クライアントアイデンティティ等に関する情報が、状態1237で入力されてもよい。いくつかの実施形態において、そのような情報の入力は、図7に示されたAPIに対するサインアップのための記入可能なフォームへの自動的な記入を参照して説明されたものと類似の自動化された方法で進めてもよい。
本開示の範囲から逸脱することなく、図12A~図12Eに示される状態セット1200a~1200eに修正、追加、又は省略がなされてもよい。例えば、記載の方法における異なる要素の指定は、本明細書に記載される概念の説明を助けることが意図され、制限するものではない。さらに、状態セット1200a~1200eは、任意の数の他の要素を含んでもよく、あるいは記載されたもの以外のシステム又はコンテキスト内で実装されてもよい。特定の状態遷移及び確率が示されているが、図示されていないものを含む任意の数の状態遷移が、図示されたもの以外の確率で生じ得ることが理解されるであろう。例えば、アプリケーションタイプを選択した(状態1233)後、状態は、状態1235を完全にバイパスして状態1237に直接遷移してもよい。
図13は、本開示に記載される少なくとも1つの実施形態による、機械学習を使用してAPIへのアクセスを容易にする一例示的なコンピューティングシステム1300を示す。コンピューティングシステム1300は、プロセッサ1310、メモリ1320、データ記憶装置1330、及び/又は通信ユニット1340を含んでもよく、これらは全て通信上結合されてもよい。図2~図11の方法200~方法1100の動作のいずれも、コンピューティングシステム1300と矛盾しないコンピューティングシステムにより実行されてもよい。例えば、コンピューティングシステム1300は、ユーザをAPIへのアクセスに自動的に登録し、かつ/あるいは彼らにAPIへのアクセスを付与してもよい。
一般に、プロセッサ1310は、様々なコンピュータハードウェア又はソフトウェアモジュールを含む、任意の適切な専用若しくは汎用コンピュータ、コンピューティングエンティティ、又は処理デバイスを含んでもよく、任意の適用可能なコンピュータ読取可能記憶媒体に記憶された命令を実行するように構成されてもよい。例えば、プロセッサ1310は、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、又はプログラム命令を解釈及び/又は実行するよう及び/又はデータを処理するように構成された任意の他のデジタル若しくはアナログ回路を含んでもよい。
図13において単一のプロセッサとして示されているが、プロセッサ1310は、本開示に記載の任意の数の動作を個々又は集合的に実行するように構成された、任意の数のネットワーク又は物理位置にわたり分散された任意の数のプロセッサを含んでもよい。いくつかの実施形態において、プロセッサ1310は、メモリ1320、データ記憶装置1330、又はメモリ1320及びデータ記憶装置1330に記憶されたプログラム命令を解釈及び/又は実行し、かつ/あるいはデータを処理してもよい。いくつかの実施形態において、プロセッサ1310は、データ記憶装置1330からプログラム命令を取り出し、プログラム命令をメモリ1320にロードしてもよい。
プログラム命令がメモリ1320にロードされた後、プロセッサ1310は、プログラム命令、例えば、図2~図11それぞれの方法200~方法1100のうち任意のものを実行する命令などを実行することができる。例えば、プロセッサ1310は、ユーザをAPIへのアクセスに自動的に登録し、かつ/あるいは彼らにAPIへのアクセスを付与することに関する命令を取得してもよい。
メモリ1320及びデータ記憶装置1330は、記憶されたコンピュータ実行可能命令又はデータ構造を搬送し又は有するコンピュータ読取可能記憶媒体又は1つ以上のコンピュータ読取可能記憶媒体を含むことができる。そのようなコンピュータ読取可能記憶媒体は、プロセッサ1310などの汎用又は専用コンピュータによりアクセスされ得る任意の利用可能な媒体でもよい。いくつかの実施形態において、コンピューティングシステム1300は、メモリ1320及びデータ記憶装置1330のいずれかを含んでもよく、あるいは含まなくてもよい。
限定でなく例として、そのようなコンピュータ読取可能記憶媒体は、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、コンパクトディスク読取専用メモリ(CD‐ROM)若しくは他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶デバイス、フラッシュメモリデバイス(例えば、ソリッドステートメモリデバイス)、又はコンピュータ実行可能命令又はデータ構造の形式で所望のプログラムコードを搬送又は記憶するために使用でき、かつ汎用又は専用コンピュータによりアクセスできる任意の他の記憶媒体を含む、非一時的なコンピュータ読取可能記憶媒体を含んでもよい。上記の組み合わせもまた、コンピュータ読取可能記憶媒体の範囲内に含まれてもよい。コンピュータ実行可能命令は、例えば、プロセッサ1310に特定の動作又は動作のグループを実行させるように構成された命令及びデータを含んでもよい。
通信ユニット1340は、ネットワークを介して情報を送信又は受信するように構成された任意のコンポーネント、デバイス、システム、又はこれらの組み合わせを含んでもよい。いくつかの実施形態において、通信ユニット1340は、他の場所、同じ場所における他のデバイス、又はさらには同じシステム内の他のコンポーネントと通信してもよい。例えば、通信ユニット1340は、モデム、ネットワークカード(無線又は有線)、光通信装置、赤外線通信装置、無線通信装置(アンテナなど)、及び/又はチップセット(Bluetooth(登録商標)装置、802.6装置(メトロポリタンエリアネットワーク(MAN)など)、WiFi装置、WiMax(登録商標)装置、セルラー通信設備等)などを含んでもよい。通信ユニット1340は、ネットワーク及び/又は本開示に記載される任意の他のデバイス又はシステムとの間でデータが交換されることを可能にし得る。例えば、通信ユニット1340は、システム1300が、コンピューティングデバイス及び/又は他のネットワークなどの他のシステムと通信することを可能にし得る。
当業者は本開示を検討した後、本開示の範囲から逸脱することなくシステム1300に対して修正、追加、又は省略がなされ得ることを認識し得る。例えば、システム1300は、明示的に例示及び記載されたものより多くの又は少ないコンポーネントを含んでもよい。
前述の開示は、開示された正確な形式又は特定の分野の使用に本開示を限定することは意図されない。したがって、本明細書に明示的に記載されているか又は暗に示されているかにかかわらず、本開示に対する様々な代替実施形態及び/又は修正が本開示に照らして可能なことが企図される。このように本開示の実施形態を説明したが、本開示の範囲から逸脱することなく形式及び詳細において変更がなされ得ることが認識され得る。したがって、本開示は、特許請求の範囲によってのみ限定される。
いくつかの実施形態において、本明細書に記載される異なるコンポーネント、モジュール、エンジン、及びサービスが、コンピューティングシステム上で実行するオブジェクト又はプロセスとして(例えば、別個のスレッドとして)実現されてもよい。本明細書に記載されるシステム及びプロセスのいくつかは、一般に、(汎用ハードウェアに記憶され、及び/又は汎用ハードウェアにより実行される)ソフトウェアで実現されるものとして記載されるが、特定のハードウェア実装、又はソフトウェアと特定のハードウェア実装との組み合わせもまた可能であり、企図される。
本明細書において、特に別記の特許請求の範囲(例えば、別記の特許請求の範囲の本文)において用いられる用語は、一般に「開放的」な用語として意図されている(例えば、用語「含んでいる」は、「含んでいるがこれに限定されない」と解釈されるべきであり、用語「有する」は、「少なくとも有する」と解釈されるべきであり、用語「含む」は、「含むがこれに限定されない」と解釈されるべきである、等)。
さらに、特定数の導入された請求項記載が意図されている場合、そのような意図は請求項に明示的に記載され、そのような記載がない場合、そのような意図は存在しない。例えば、理解の助けとして、以下の別記の特許請求の範囲は、請求項記載を導入するために、導入フレーズ「少なくとも1つの」及び「1つ以上の」の使用を含むことがある。しかしながら、そのようなフレーズの使用は、不定冠詞「一の」(“a”又は“an”)による請求項記載の導入が、同じ請求項が導入フレーズ「1つ以上の」又は「少なくとも1つの」と「一の」などの不定冠詞とを含むときでも、そのような導入された請求項記載を含む任意の特定の請求項を1つのそのような記載のみ含む実施形態に限定することを暗に示すように見なされるべきではない(例えば、「一の」(“a”及び/又は“an”)は「少なくとも1つの」又は「1つ以上の」を意味するよう解釈されるべきである)。請求項記載を導入するために用いられる定冠詞の使用についても同様である。
さらに、特定数の導入された請求項記載が明示的に記載されている場合であっても、当業者は、そのような記載は少なくとも記載された数を意味するよう解釈されるべきであることを認識するであろう(例えば、他の修飾語を伴わない「2つの記載」というただそれだけの記載は、少なくとも2つの記載、又は2つ以上の記載を意味する)。さらに、「A、B、及びC等のうち少なくとも1つ」又は「A、B、及びC等のうち1つ以上」と類似の規定が用いられている例において、一般に、そのような構造は、A単独、B単独、C単独、A及びB共に、A及びC共に、B及びC共に、又はA、B、及びC共に等を含むことが意図される。例えば、用語「及び/又は」の使用は、このようにみなされることが意図される。
さらに、明細書においてか、特許請求の範囲においてか、又は図面においてかにかかわらず、2つ以上の代替的な用語を提示するいかなる分離的なワード又はフレーズも、用語のうち1つ、用語のうちいずれか、又は双方の用語を含む可能性を考慮するよう理解されるべきである。例えば、フレーズ「A又はB」は、「A」又は「B」又は「A及びB」の可能性を含むよう理解されるべきである。
しかしながら、そのようなフレーズの使用は、不定冠詞「一の」(“a”又は“an”)による請求項記載の導入が、同じ請求項が導入フレーズ「1つ以上の」又は「少なくとも1つの」と「一の」などの不定冠詞とを含むときでも、そのような導入された請求項記載を含む任意の特定の請求項を1つのそのような記載のみ含む実施形態に限定することを暗に示すように見なされるべきではない(例えば、「一の」(“a”及び/又は“an”)は「少なくとも1つの」又は「1つ以上の」を意味するよう解釈されるべきである)。請求項記載を導入するために用いられる定冠詞の使用についても同様である。
さらに、用語「第1」、「第2」、「第3」等の使用は、本明細書において必ずしも特定の順序を含意するために使用されるものではない。一般に、用語「第1」、「第2」、「第3」等は、異なる要素間で区別するために使用される。用語「第1」、「第2」、「第3」等が特定の順序を含意することの具体的な提示なしでは、これらの用語は特定の順序を含意するよう理解されるべきではない。
本明細書に記載される全ての例及び条件付き言語は、本発明及び発明者が当該技術分野を促進するために寄与した概念を理解する際に読者を助けるための教育的目的が意図され、このように具体的に記載された例及び条件に限定されないものとみなされるべきである。本開示の実施形態が詳細に説明されたが、本開示の主旨及び範囲から逸脱することなく様々な変更、置換、及び改変をこれに行えることを理解されたい。
開示された実施形態の前の説明は、当業者が本開示を製造又は使用することができるように提供される。これらの実施形態に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義される一般的原理は、本開示の主旨又は範囲から逸脱することなく他の実施形態に適用され得る。したがって、本開示は、本明細書に示される実施形態に限定されることは意図されず、本明細書に開示された原理及び新規の特徴と矛盾しない最も広い範囲を与えられるべきである。
上記の実施形態につき以下の付記を残しておく。
(付記1)
複数のアプリケーションプログラミングインターフェース(API)にわたり反復して前記複数のAPIの認証タイプを抽出するステップと、
中央リポジトリから、前記複数のAPIのうち所与のAPIへのアクセスのために新しいユーザを自動的に登録するステップと、
前記所与のAPIの認証タイプに基づいて認証データを取得するステップと、
前記認証データを記憶するステップと、
前記記憶された認証データを使用して前記所与のAPIにアクセスするステップと、
を含む方法。
(付記2)
前記新しいユーザを自動的に登録するステップは、
検索エンジンベースの検出又は機械学習ベースの検出のうち1つを使用して前記所与のAPIのためのサインアップページを自動的に検出するステップと、
前記所与のAPIの前記検出されたサインアップページ上のフォームに自動的に記入するステップと、
前記サインアップページの前記記入されたフォームに基づいてアカウントクレデンシャルを取得するステップと、
を含む、付記1に記載の方法。
(付記3)
前記検索エンジンベースの検出は、
前記所与のAPIのための1つ以上の潜在的なサインアップページを識別するクエリを生成することと、
前記生成されたクエリを使用してインターネット検索を実行することと、
前記検索の結果から1つ以上のリンクを抽出することと、
前記抽出された1つ以上のリンクのコンテンツを反復的に検索して、前記コンテンツ上のフォームフィールドを辞書内のタームと相関させることにより前記コンテンツ上のサインアップフォームを検出することと、
前記フォームフィールドと前記辞書内の前記タームとの間の前記相関が閾値を超えていることに基づいて、前記コンテンツのうち1つを前記所与のAPIのための前記サインアップページとして識別することと、
前記識別されたサインアップページのロケータを記憶することと、
を含む、付記2に記載の方法。
(付記4)
前記機械学習ベースの検出は、
収集されたサインアップページからデータを抽出することと、
前記収集されたサインアップページに基づいてサインアップページの訓練モデルを生成することと、
前記所与のAPIについてのAPIドキュメンテーションページを取得することと、
前記APIドキュメンテーションページからリンクを抽出することと、
サインアップページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析することと、
前記分析に基づいて、所与のページを前記所与のAPIのための前記サインアップページとして識別することと、
前記識別されたサインアップページのロケータを記憶することと、
を含む、付記2に記載の方法。
(付記5)
前記検出されたサインアップページ上のフォームに自動的に記入するステップは、
サインアップページの潜在的なフィールドの訓練モデルを生成するステップと、
前記サインアップページ上の記入可能なフィールドのラベルを抽出するステップと、
前記抽出されたラベルの各々をカテゴリに分類するステップと、
前記所与のAPIへの一時的なアクセスのためのサンプル値を提供するステップと、
前記所与のAPIアクセスした後、ユーザ入力を受け取って前記サンプル値を確立された値に変更するステップと、
を含む、付記2に記載の方法。
(付記6)
さらなるフィールドがユーザ入力なしでは記入できないことを検出するステップと、
前記新しいユーザにユーザ入力を促すステップと、
ユーザ入力を受け取るステップと、
前記受け取ったユーザ入力に基づいて潜在的なフィールドの前記訓練モデルを再訓練するステップと、
をさらに含む、付記5に記載の方法。
(付記7)
前記新しいユーザの自動登録を確認するステップ、をさらに含み、該確認するステップは、
収集されたサインインページからデータを抽出するステップと、
前記収集されたサインインページに基づいてサインインページの訓練モデルを生成するステップと、
前記所与のAPIのためのサインアップページを取得するステップと、
前記サインアップページからリンクを抽出するステップと、
サインインページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析するステップと、
前記分析に基づいて、所与のページを前記所与のAPIのためのサインインページとして識別するステップと、
前記所与のAPIの記憶されたサインインクレデンシャルを自動的に入力するステップと、
成功のサインインに基づいて、前記成功のサインインの結果を記憶するステップと、
を含む、付記1に記載の方法。
(付記8)
前記所与のAPIの前記認証タイプはAPI鍵を含み、前記認証タイプに基づいて認証データを取得するステップは、
収集されたAPI鍵ページからデータを抽出するステップと、
前記収集されたAPI鍵ページに基づいてAPI鍵ページの訓練モデルを生成するステップと、
前記所与のAPIのためのランディングページにアクセスするステップであり、前記ランディングページは、前記所与のAPIにサインインした後にアクセスされる、ステップと、
前記ランディングページからリンクを抽出するステップと、
API鍵ページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析するステップと、
前記分析に基づいて、所与のページを前記所与のAPIのためのAPI鍵ページとして識別するステップと、
前記識別されたAPI鍵ページから前記API鍵を抽出するステップと、
を含み、
前記認証データを記憶するステップは、前記API鍵を前記認証データとして記憶するステップを含む、付記1に記載の方法。
(付記9)
前記所与のAPIの前記認証タイプはOAuthを含み、前記認証タイプに基づいて認証データを取得するステップは、
アプリケーション登録ページからデータを取得するステップと、
アプリケーション登録プロセスの間の代表的な状態に関するアノテーション付きデータを取得するステップと、
前記アノテーション付きデータを使用して前記アプリケーション登録プロセスの間の前記代表的な状態の各々について訓練分類器を生成するステップと、
前記代表的な状態の各々に関連づけられた1つ以上の予め定義されたアクションと、所与の代表的な状態にあるとき前記予め定義されたアクションの各々を実行する確率を識別するステップと、
前記所与のAPIのAPIドキュメンテーションページを初期状態として取得するステップと、
前記予め定義されたアクションと前記予め定義されたアクションの各々を実行する確率とに基づいて状態間で反復的に遷移して、前記アプリケーション登録プロセスをトラバースするステップと、
前記アプリケーション登録プロセスが完了していることに基づいて、クライアントOAuthクレデンシャルを抽出するステップと、
を含み、
前記認証データを記憶するステップは、前記クライアントOAuthクレデンシャルを前記認証データとして記憶するステップを含む、付記1に記載の方法。
(付記10)
前記記憶された認証データを使用して前記所与のAPIにアクセスするステップは、前記クライアントOAuthクレデンシャルに基づいてアクセストークンを取得するステップを含み、前記アクセストークンを取得するステップは、
前記記憶されたクライアントOAuthクレデンシャルを取り出すステップと、
前記記憶されたクライアントOAuthクレデンシャルをアクセストークンの初期リクエストとしてアップロードするステップと、
前記所与のAPIへのアクセスに関連する認可コードを要求するステップと、
前記所与のAPIにアクセスする許可を承認するリクエストを受信するステップと、
クレデンシャルを自動的に提供して、許可を承認する前記リクエストを承認するステップと、
前記認可コードを受信するステップと、
前記認可コードに基づいて前記アクセストークンを要求するステップと、
前記アクセストークンを受信するステップと、
前記アクセストークンに基づいてウェブリソースを作成するステップと、
前記ウェブリソースから前記アクセストークンを抽出するステップと、
前記アクセストークンを記憶するステップと、
前記アクセストークンを使用して前記APIにアクセスするステップと、
を含む、付記9に記載の方法。
(付記11)
アプリケーションプログラミングインターフェース(API)プラットフォームであって、
1つ以上のプロセッサと、
前記1つ以上のプロセッサにより実行されたときに当該APIプラットフォームに動作を実行させる命令を含む1つ以上の非一時的コンピュータ読取可能媒体と、を含み、
前記動作は、
複数のAPIホスティングサーバにアクセスして複数のAPIにわたり反復して前記複数のAPIの認証タイプを抽出することと、
前記複数のAPIのうち所与のAPIへのアクセスのために新しいユーザを、前記所与のAPIをホストする所与のAPIホスティングサーバに自動的に登録することと、
前記所与のAPIの認証タイプに基づいて前記APIホスティングサーバから認証データを取得することと、
当該APIプラットフォームに前記認証データを記憶することと、
当該APIプラットフォームを介して、前記記憶された認証データを使用して前記所与のAPIにアクセスすることと、
を含む、APIプラットフォーム。
(付記12)
前記新しいユーザを自動的に登録することは、
検索エンジンベースの検出又は機械学習ベースの検出のうち1つを使用して前記所与のAPIのためのサインアップページを自動的に検出することと、
前記所与のAPIの前記検出されたサインアップページ上のフォームに自動的に記入することと、
前記サインアップページの前記記入されたフォームに基づいて前記所与のAPIホスティングサーバからアカウントクレデンシャルを取得することと、
を含む、付記11に記載のAPIプラットフォーム。
(付記13)
前記検索エンジンベースの検出は、
前記所与のAPIのための1つ以上の潜在的なサインアップページを識別するクエリを生成することと、
前記生成されたクエリを使用してインターネット検索を実行することと、
前記検索の結果から1つ以上のリンクを抽出することと、
前記抽出された1つ以上のリンクのコンテンツを反復的に検索して、前記コンテンツ上のフォームフィールドを辞書内のタームと相関させることにより前記コンテンツ上のサインアップフォームを検出することと、
前記フォームフィールドと前記辞書内の前記タームとの間の前記相関が閾値を超えていることに基づいて、前記コンテンツのうち1つを前記所与のAPIのための前記サインアップページとして識別することと、
前記識別されたサインアップページのロケータを記憶することと、
を含む、付記12に記載のAPIプラットフォーム。
(付記14)
前記機械学習ベースの検出は、
収集されたサインアップページからデータを抽出することと、
前記収集されたサインアップページに基づいてサインアップページの訓練モデルを生成することと、
前記所与のAPIホスティングサーバにおける前記所与のAPIについてのAPIドキュメンテーションページにアクセスすることと、
前記APIドキュメンテーションページからリンクを抽出することと、
サインアップページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析することと、
前記分析に基づいて、所与のページを前記所与のAPIのための前記サインアップページとして識別することと、
前記識別されたサインアップページのロケータを記憶することと、
を含む、付記12に記載のAPIプラットフォーム。
(付記15)
前記検出されたサインアップページ上のフォームに自動的に記入することは、
サインアップページの潜在的なフィールドの訓練モデルを生成することと、
前記サインアップページ上の記入可能なフィールドのラベルを抽出することと、
前記抽出されたラベルの各々をカテゴリに分類することと、
前記所与のAPIへの一時的なアクセスのためのサンプル値を提供することと、
前記所与のAPIアクセスした後、ユーザ入力を受け取って前記サンプル値を確立された値に変更することと、
を含む、付記12に記載のAPIプラットフォーム。
(付記16)
前記動作は、前記新しいユーザの自動登録を確認すること、をさらに含み、前記自動登録を確認する動作は、
収集されたサインインページからデータを抽出することと、
前記収集されたサインインページに基づいてサインインページの訓練モデルを生成することと、
前記所与のAPIのためのサインアップページを取得することと、
前記サインアップページからリンクを抽出することと、
サインインページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析することと、
前記分析に基づいて、所与のページを前記所与のAPIのためのサインインページとして識別することと、
前記所与のAPIの記憶されたサインインクレデンシャルを自動的に入力することと、
成功のサインインに基づいて、前記成功のサインインの結果を記憶することと、
を含む、付記11に記載のAPIプラットフォーム。
(付記17)
前記所与のAPIの前記認証タイプはAPI鍵を含み、前記認証タイプに基づいて認証データを取得することは、
収集されたAPI鍵ページからデータを抽出することと、
前記収集されたAPI鍵ページに基づいてAPI鍵ページの訓練モデルを生成することと、
前記所与のAPIのためのランディングページにアクセスすることであり、前記ランディングページは、前記APIにサインインした後にアクセスされる、ことと、
前記ランディングページからリンクを抽出することと、
API鍵ページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析することと、
前記分析に基づいて、所与のページを前記所与のAPIのためのAPI鍵ページとして識別することと、
前記識別されたAPI鍵ページから前記API鍵を抽出することと、
を含み、
前記認証データを記憶することは、前記API鍵を前記認証データとして記憶することを含む、付記11に記載のAPIプラットフォーム。
(付記18)
前記所与のAPIの前記認証タイプはOAuthを含み、前記認証タイプに基づいて認証データを取得することは、
アプリケーション登録ページからデータを取得することと、
アプリケーション登録プロセスの間の代表的な状態に関するアノテーション付きデータを取得することと、
前記アノテーション付きデータを使用して前記アプリケーション登録プロセスの間の前記代表的な状態の各々について訓練分類器を生成することと、
前記代表的な状態の各々に関連づけられた1つ以上の予め定義されたアクションと、所与の代表的な状態にあるとき前記予め定義されたアクションの各々を実行する確率を識別することと、
前記所与のAPIのAPIドキュメンテーションページを初期状態として取得することと、
前記予め定義されたアクションと前記予め定義されたアクションの各々を実行する確率とに基づいて状態間で反復的に遷移して、前記アプリケーション登録プロセスをトラバースすることと、
前記アプリケーション登録プロセスが完了していることに基づいて、クライアントOAuthクレデンシャルを抽出することと、
を含み、
前記認証データを記憶することは、前記クライアントOAuthクレデンシャルを前記認証データとして記憶することを含む、付記11に記載のAPIプラットフォーム。
(付記19)
前記記憶された認証データを使用して前記所与のAPIにアクセスすることは、前記クライアントOAuthクレデンシャルに基づいてアクセストークンを取得することを含み、前記アクセストークンを取得することは、
前記記憶されたOAuthクレデンシャルを取り出すことと、
前記記憶されたOAuthクレデンシャルをアクセストークンの初期リクエストとしてアップロードすることと、
前記所与のAPIへのアクセスに関連する認可コードを要求することと、
前記所与のAPIにアクセスする許可を承認するリクエストを受信することと、
前記クレデンシャルを自動的に提供して、許可を承認する前記リクエストを承認することと、
前記認可コードを受信することと、
前記認可コードに基づいて前記アクセストークンを要求することと、
前記アクセストークンを受信することと、
前記アクセストークンに基づいてウェブリソースを作成することと、
前記ウェブリソースから前記アクセストークンを抽出することと、
前記アクセストークンを記憶することと、
前記アクセストークンを使用して前記APIにアクセスすることと、
を含む、付記18に記載のAPIプラットフォーム。
(付記20)
1つ以上のプロセッサにより実行されたときにシステムに動作を実行させる命令を含む1つ以上の非一時的コンピュータ読取可能媒体であって、前記動作は、
複数のアプリケーションプログラミングインターフェース(API)にわたり反復して前記複数のAPIの認証タイプを抽出することと、
中央リポジトリから、前記複数のAPIのうち所与のAPIへのアクセスのために新しいユーザを自動的に登録することと、
前記所与のAPIの認証タイプに基づいて認証データを取得することと、
前記認証データを記憶することと、
前記記憶された認証データを使用して前記所与のAPIにアクセスすることと、
を含む、非一時的コンピュータ読取可能媒体。

Claims (20)

  1. 複数のアプリケーションプログラミングインターフェース(API)にわたり反復して前記複数のAPIの認証タイプを抽出するステップと、
    中央リポジトリから、前記複数のAPIのうち所与のAPIへのアクセスのために新しいユーザを自動的に登録するステップと、
    前記所与のAPIの認証タイプに基づいて認証データを取得するステップと、
    前記認証データを記憶するステップと、
    前記記憶された認証データを使用して前記所与のAPIにアクセスするステップと、
    を含む方法。
  2. 前記新しいユーザを自動的に登録するステップは、
    検索エンジンベースの検出又は機械学習ベースの検出のうち1つを使用して前記所与のAPIのためのサインアップページを自動的に検出するステップと、
    前記所与のAPIの前記検出されたサインアップページ上のフォームに自動的に記入するステップと、
    前記サインアップページの前記記入されたフォームに基づいてアカウントクレデンシャルを取得するステップと、
    を含む、請求項1に記載の方法。
  3. 前記検索エンジンベースの検出は、
    前記所与のAPIのための1つ以上の潜在的なサインアップページを識別するクエリを生成することと、
    前記生成されたクエリを使用してインターネット検索を実行することと、
    前記検索の結果から1つ以上のリンクを抽出することと、
    前記抽出された1つ以上のリンクのコンテンツを反復的に検索して、前記コンテンツ上のフォームフィールドを辞書内のタームと相関させることにより前記コンテンツ上のサインアップフォームを検出することと、
    前記フォームフィールドと前記辞書内の前記タームとの間の前記相関が閾値を超えていることに基づいて、前記コンテンツのうち1つを前記所与のAPIのための前記サインアップページとして識別することと、
    前記識別されたサインアップページのロケータを記憶することと、
    を含む、請求項2に記載の方法。
  4. 前記機械学習ベースの検出は、
    収集されたサインアップページからデータを抽出することと、
    前記収集されたサインアップページに基づいてサインアップページの訓練モデルを生成することと、
    前記所与のAPIについてのAPIドキュメンテーションページを取得することと、
    前記APIドキュメンテーションページからリンクを抽出することと、
    サインアップページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析することと、
    前記分析に基づいて、所与のページを前記所与のAPIのための前記サインアップページとして識別することと、
    前記識別されたサインアップページのロケータを記憶することと、
    を含む、請求項2に記載の方法。
  5. 前記検出されたサインアップページ上のフォームに自動的に記入するステップは、
    サインアップページの潜在的なフィールドの訓練モデルを生成するステップと、
    前記サインアップページ上の記入可能なフィールドのラベルを抽出するステップと、
    前記抽出されたラベルの各々をカテゴリに分類するステップと、
    前記所与のAPIへの一時的なアクセスのためのサンプル値を提供するステップと、
    前記所与のAPIアクセスした後、ユーザ入力を受け取って前記サンプル値を確立された値に変更するステップと、
    を含む、請求項2に記載の方法。
  6. さらなるフィールドがユーザ入力なしでは記入できないことを検出するステップと、
    前記新しいユーザにユーザ入力を促すステップと、
    ユーザ入力を受け取るステップと、
    前記受け取ったユーザ入力に基づいて潜在的なフィールドの前記訓練モデルを再訓練するステップと、
    をさらに含む、請求項5に記載の方法。
  7. 前記新しいユーザの自動登録を確認するステップ、をさらに含み、該確認するステップは、
    収集されたサインインページからデータを抽出するステップと、
    前記収集されたサインインページに基づいてサインインページの訓練モデルを生成するステップと、
    前記所与のAPIのためのサインアップページを取得するステップと、
    前記サインアップページからリンクを抽出するステップと、
    サインインページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析するステップと、
    前記分析に基づいて、所与のページを前記所与のAPIのためのサインインページとして識別するステップと、
    前記所与のAPIの記憶されたサインインクレデンシャルを自動的に入力するステップと、
    成功のサインインに基づいて、前記成功のサインインの結果を記憶するステップと、
    を含む、請求項1に記載の方法。
  8. 前記所与のAPIの前記認証タイプはAPI鍵を含み、前記認証タイプに基づいて認証データを取得するステップは、
    収集されたAPI鍵ページからデータを抽出するステップと、
    前記収集されたAPI鍵ページに基づいてAPI鍵ページの訓練モデルを生成するステップと、
    前記所与のAPIのためのランディングページにアクセスするステップであり、前記ランディングページは、前記所与のAPIにサインインした後にアクセスされる、ステップと、
    前記ランディングページからリンクを抽出するステップと、
    API鍵ページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析するステップと、
    前記分析に基づいて、所与のページを前記所与のAPIのためのAPI鍵ページとして識別するステップと、
    前記識別されたAPI鍵ページから前記API鍵を抽出するステップと、
    を含み、
    前記認証データを記憶するステップは、前記API鍵を前記認証データとして記憶するステップを含む、請求項1に記載の方法。
  9. 前記所与のAPIの前記認証タイプはOAuthを含み、前記認証タイプに基づいて認証データを取得するステップは、
    アプリケーション登録ページからデータを取得するステップと、
    アプリケーション登録プロセスの間の代表的な状態に関するアノテーション付きデータを取得するステップと、
    前記アノテーション付きデータを使用して前記アプリケーション登録プロセスの間の前記代表的な状態の各々について訓練分類器を生成するステップと、
    前記代表的な状態の各々に関連づけられた1つ以上の予め定義されたアクションと、所与の代表的な状態にあるとき前記予め定義されたアクションの各々を実行する確率を識別するステップと、
    前記所与のAPIのAPIドキュメンテーションページを初期状態として取得するステップと、
    前記予め定義されたアクションと前記予め定義されたアクションの各々を実行する確率とに基づいて状態間で反復的に遷移して、前記アプリケーション登録プロセスをトラバースするステップと、
    前記アプリケーション登録プロセスが完了していることに基づいて、クライアントOAuthクレデンシャルを抽出するステップと、
    を含み、
    前記認証データを記憶するステップは、前記クライアントOAuthクレデンシャルを前記認証データとして記憶するステップを含む、請求項1に記載の方法。
  10. 前記記憶された認証データを使用して前記所与のAPIにアクセスするステップは、前記クライアントOAuthクレデンシャルに基づいてアクセストークンを取得するステップを含み、前記アクセストークンを取得するステップは、
    前記記憶されたクライアントOAuthクレデンシャルを取り出すステップと、
    前記記憶されたクライアントOAuthクレデンシャルをアクセストークンの初期リクエストとしてアップロードするステップと、
    前記所与のAPIへのアクセスに関連する認可コードを要求するステップと、
    前記所与のAPIにアクセスする許可を承認するリクエストを受信するステップと、
    クレデンシャルを自動的に提供して、許可を承認する前記リクエストを承認するステップと、
    前記認可コードを受信するステップと、
    前記認可コードに基づいて前記アクセストークンを要求するステップと、
    前記アクセストークンを受信するステップと、
    前記アクセストークンに基づいてウェブリソースを作成するステップと、
    前記ウェブリソースから前記アクセストークンを抽出するステップと、
    前記アクセストークンを記憶するステップと、
    前記アクセストークンを使用して前記APIにアクセスするステップと、
    を含む、請求項9に記載の方法。
  11. アプリケーションプログラミングインターフェース(API)プラットフォームであって、
    1つ以上のプロセッサと、
    前記1つ以上のプロセッサにより実行されたときに当該APIプラットフォームに動作を実行させる命令を含む1つ以上の非一時的コンピュータ読取可能媒体と、を含み、
    前記動作は、
    複数のAPIホスティングサーバにアクセスして複数のAPIにわたり反復して前記複数のAPIの認証タイプを抽出することと、
    前記複数のAPIのうち所与のAPIへのアクセスのために新しいユーザを、前記所与のAPIをホストする所与のAPIホスティングサーバに自動的に登録することと、
    前記所与のAPIの認証タイプに基づいて前記APIホスティングサーバから認証データを取得することと、
    当該APIプラットフォームに前記認証データを記憶することと、
    当該APIプラットフォームを介して、前記記憶された認証データを使用して前記所与のAPIにアクセスすることと、
    を含む、APIプラットフォーム。
  12. 前記新しいユーザを自動的に登録することは、
    検索エンジンベースの検出又は機械学習ベースの検出のうち1つを使用して前記所与のAPIのためのサインアップページを自動的に検出することと、
    前記所与のAPIの前記検出されたサインアップページ上のフォームに自動的に記入することと、
    前記サインアップページの前記記入されたフォームに基づいて前記所与のAPIホスティングサーバからアカウントクレデンシャルを取得することと、
    を含む、請求項11に記載のAPIプラットフォーム。
  13. 前記検索エンジンベースの検出は、
    前記所与のAPIのための1つ以上の潜在的なサインアップページを識別するクエリを生成することと、
    前記生成されたクエリを使用してインターネット検索を実行することと、
    前記検索の結果から1つ以上のリンクを抽出することと、
    前記抽出された1つ以上のリンクのコンテンツを反復的に検索して、前記コンテンツ上のフォームフィールドを辞書内のタームと相関させることにより前記コンテンツ上のサインアップフォームを検出することと、
    前記フォームフィールドと前記辞書内の前記タームとの間の前記相関が閾値を超えていることに基づいて、前記コンテンツのうち1つを前記所与のAPIのための前記サインアップページとして識別することと、
    前記識別されたサインアップページのロケータを記憶することと、
    を含む、請求項12に記載のAPIプラットフォーム。
  14. 前記機械学習ベースの検出は、
    収集されたサインアップページからデータを抽出することと、
    前記収集されたサインアップページに基づいてサインアップページの訓練モデルを生成することと、
    前記所与のAPIホスティングサーバにおける前記所与のAPIについてのAPIドキュメンテーションページにアクセスすることと、
    前記APIドキュメンテーションページからリンクを抽出することと、
    サインアップページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析することと、
    前記分析に基づいて、所与のページを前記所与のAPIのための前記サインアップページとして識別することと、
    前記識別されたサインアップページのロケータを記憶することと、
    を含む、請求項12に記載のAPIプラットフォーム。
  15. 前記検出されたサインアップページ上のフォームに自動的に記入することは、
    サインアップページの潜在的なフィールドの訓練モデルを生成することと、
    前記サインアップページ上の記入可能なフィールドのラベルを抽出することと、
    前記抽出されたラベルの各々をカテゴリに分類することと、
    前記所与のAPIへの一時的なアクセスのためのサンプル値を提供することと、
    前記所与のAPIアクセスした後、ユーザ入力を受け取って前記サンプル値を確立された値に変更することと、
    を含む、請求項12に記載のAPIプラットフォーム。
  16. 前記動作は、前記新しいユーザの自動登録を確認すること、をさらに含み、前記自動登録を確認する動作は、
    収集されたサインインページからデータを抽出することと、
    前記収集されたサインインページに基づいてサインインページの訓練モデルを生成することと、
    前記所与のAPIのためのサインアップページを取得することと、
    前記サインアップページからリンクを抽出することと、
    サインインページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析することと、
    前記分析に基づいて、所与のページを前記所与のAPIのためのサインインページとして識別することと、
    前記所与のAPIの記憶されたサインインクレデンシャルを自動的に入力することと、
    成功のサインインに基づいて、前記成功のサインインの結果を記憶することと、
    を含む、請求項11に記載のAPIプラットフォーム。
  17. 前記所与のAPIの前記認証タイプはAPI鍵を含み、前記認証タイプに基づいて認証データを取得することは、
    収集されたAPI鍵ページからデータを抽出することと、
    前記収集されたAPI鍵ページに基づいてAPI鍵ページの訓練モデルを生成することと、
    前記所与のAPIのためのランディングページにアクセスすることであり、前記ランディングページは、前記APIにサインインした後にアクセスされる、ことと、
    前記ランディングページからリンクを抽出することと、
    API鍵ページの前記訓練モデルを使用して前記抽出されたリンクのページを反復的に分析することと、
    前記分析に基づいて、所与のページを前記所与のAPIのためのAPI鍵ページとして識別することと、
    前記識別されたAPI鍵ページから前記API鍵を抽出することと、
    を含み、
    前記認証データを記憶することは、前記API鍵を前記認証データとして記憶することを含む、請求項11に記載のAPIプラットフォーム。
  18. 前記所与のAPIの前記認証タイプはOAuthを含み、前記認証タイプに基づいて認証データを取得することは、
    アプリケーション登録ページからデータを取得することと、
    アプリケーション登録プロセスの間の代表的な状態に関するアノテーション付きデータを取得することと、
    前記アノテーション付きデータを使用して前記アプリケーション登録プロセスの間の前記代表的な状態の各々について訓練分類器を生成することと、
    前記代表的な状態の各々に関連づけられた1つ以上の予め定義されたアクションと、所与の代表的な状態にあるとき前記予め定義されたアクションの各々を実行する確率を識別することと、
    前記所与のAPIのAPIドキュメンテーションページを初期状態として取得することと、
    前記予め定義されたアクションと前記予め定義されたアクションの各々を実行する確率とに基づいて状態間で反復的に遷移して、前記アプリケーション登録プロセスをトラバースすることと、
    前記アプリケーション登録プロセスが完了していることに基づいて、クライアントOAuthクレデンシャルを抽出することと、
    を含み、
    前記認証データを記憶することは、前記クライアントOAuthクレデンシャルを前記認証データとして記憶することを含む、請求項11に記載のAPIプラットフォーム。
  19. 前記記憶された認証データを使用して前記所与のAPIにアクセスすることは、前記クライアントOAuthクレデンシャルに基づいてアクセストークンを取得することを含み、前記アクセストークンを取得することは、
    前記記憶されたOAuthクレデンシャルを取り出すことと、
    前記記憶されたOAuthクレデンシャルをアクセストークンの初期リクエストとしてアップロードすることと、
    前記所与のAPIへのアクセスに関連する認可コードを要求することと、
    前記所与のAPIにアクセスする許可を承認するリクエストを受信することと、
    前記クレデンシャルを自動的に提供して、許可を承認する前記リクエストを承認することと、
    前記認可コードを受信することと、
    前記認可コードに基づいて前記アクセストークンを要求することと、
    前記アクセストークンを受信することと、
    前記アクセストークンに基づいてウェブリソースを作成することと、
    前記ウェブリソースから前記アクセストークンを抽出することと、
    前記アクセストークンを記憶することと、
    前記アクセストークンを使用して前記APIにアクセスすることと、
    を含む、請求項18に記載のAPIプラットフォーム。
  20. 1つ以上のプロセッサに動作を実行させるコンピュータプログラムであって、前記動作は、
    複数のアプリケーションプログラミングインターフェース(API)にわたり反復して前記複数のAPIの認証タイプを抽出することと、
    中央リポジトリから、前記複数のAPIのうち所与のAPIへのアクセスのために新しいユーザを自動的に登録することと、
    前記所与のAPIの認証タイプに基づいて認証データを取得することと、
    前記認証データを記憶することと、
    前記記憶された認証データを使用して前記所与のAPIにアクセスすることと、
    を含む、コンピュータプログラム。
JP2021095374A 2020-07-08 2021-06-07 機械学習を用いる自動化されたapiアクセス Pending JP2022016303A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/923,989 US11163621B1 (en) 2020-07-08 2020-07-08 Automated API access using machine learning
US16/923989 2020-07-08

Publications (1)

Publication Number Publication Date
JP2022016303A true JP2022016303A (ja) 2022-01-21

Family

ID=78372560

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021095374A Pending JP2022016303A (ja) 2020-07-08 2021-06-07 機械学習を用いる自動化されたapiアクセス

Country Status (2)

Country Link
US (1) US11163621B1 (ja)
JP (1) JP2022016303A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11636401B2 (en) * 2019-01-25 2023-04-25 Noodle.ai Artificial intelligence platform
CN115242761A (zh) * 2022-07-01 2022-10-25 浪潮云信息技术股份公司 一种动态OpenAPI自动化注册方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735773B1 (en) * 1998-06-27 2004-05-11 Intel Corporation Method and apparatus for issuing commands to a network processor configured to provide a plurality of APIs
US20030154375A1 (en) * 2002-02-08 2003-08-14 Weimin Yang Universal crypto-adaptor system for supporting multiple APIs and multiple smart cards
US9479509B2 (en) 2009-11-06 2016-10-25 Red Hat, Inc. Unified system for authentication and authorization
US20130275504A1 (en) * 2012-04-11 2013-10-17 Pulin Patel Community of interest networks
US9442700B2 (en) * 2013-09-30 2016-09-13 MuleSoft, Inc. API notebook tool
US9602482B1 (en) 2013-12-12 2017-03-21 Amazon Technologies, Inc. Authentication for an API request
US9654469B1 (en) 2014-05-02 2017-05-16 Nok Nok Labs, Inc. Web-based user authentication techniques and applications
US10693644B2 (en) * 2017-06-23 2020-06-23 International Business Machines Corporation Single-input multifactor authentication
US10984133B1 (en) * 2017-08-02 2021-04-20 Styra, Inc. Defining and distributing API authorization policies and parameters
US10133650B1 (en) 2017-10-10 2018-11-20 Fujitsu Limited Automated API parameter resolution and validation
CN114706634A (zh) * 2018-01-15 2022-07-05 华为技术有限公司 一种系统、程序以及计算机可读存储介质
JP2019139621A (ja) * 2018-02-14 2019-08-22 日本電信電話株式会社 認証認可情報統合装置及び認証認可情報統合方法
US10693795B2 (en) 2018-06-01 2020-06-23 Fujitsu Limited Providing access to application program interfaces and Internet of Thing devices
US11030084B2 (en) * 2019-01-18 2021-06-08 Salesforce.Com, Inc. API specification parsing at a mocking server
US11023359B2 (en) * 2019-01-18 2021-06-01 Kleeen Software, Inc. Automated API generation
US11954111B2 (en) * 2019-03-29 2024-04-09 Innoplexus Ag System and method for executing service request
US11010212B2 (en) * 2019-06-13 2021-05-18 Microsoft Technology Licensing, Llc System and method for supporting and negotiating multiple API versions across multiple products
US11611548B2 (en) * 2019-11-22 2023-03-21 Oracle International Corporation Bulk multifactor authentication enrollment

Also Published As

Publication number Publication date
US11163621B1 (en) 2021-11-02

Similar Documents

Publication Publication Date Title
US10133650B1 (en) Automated API parameter resolution and validation
US9489401B1 (en) Methods and systems for object recognition
US10002292B2 (en) Organizational logo enrichment
US11038862B1 (en) Systems and methods for enhanced security based on user vulnerability
US9176938B1 (en) Document referencing system
US8510322B2 (en) Enriched search features based in part on discovering people-centric search intent
Peng et al. Astroturfing detection in social media: a binary n‐gram–based approach
CN110298029B (zh) 基于用户语料的好友推荐方法、装置、设备及介质
US9798776B2 (en) Systems and methods for parsing search queries
JP2022016303A (ja) 機械学習を用いる自動化されたapiアクセス
Heck et al. Horizontal traceability for just‐in‐time requirements: the case for open source feature requests
US11755678B1 (en) Data extraction and optimization using artificial intelligence models
US11526334B2 (en) Method and system for dynamically generating executable source codes for applications
Alonso et al. ARTE: Automated generation of realistic test inputs for web APIs
WO2019217999A1 (en) Document processing and classification systems
WO2020041413A1 (en) Sibling search queries
JP6040398B2 (ja) 情報提供装置、方法およびプログラム
CN110737677B (zh) 一种数据搜索系统及方法
CN116431912A (zh) 用户画像推送方法及装置
CN114996714A (zh) 漏洞检测方法、装置、电子设备及存储介质
US11487768B2 (en) Generating search results utilizing access control
US11374914B2 (en) Systems and methods for determining knowledge-based authentication questions
KR102574220B1 (ko) 챗봇을 이용한 고객 상담 시스템, 방법 및 프로그램
Alonso Automated generation of realistic test inputs for web APIs
US20160012557A1 (en) System and method for scoring of a new idea