# Box Developer Documentation > Complete documentation for Box Platform APIs, SDKs, and developer tools. This file contains the full concatenated content of all individual markdown files for comprehensive LLM consumption. --- ## Box Platform ### Box Platformについて **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform Box Platformについて Boxを初めて使用する場合は、ここから始めてください。以降のページでは、アプリケーションをより短時間で作成できるようにBox Platform… # Box Platformについて Boxを初めて使用する場合は、**ここから始めてください**。以降のページでは、アプリケーションをより短時間で作成できるようにBox Platformのすべての概念とコンポーネントがどのように連携しているかを学べます。 ## 詳細セクション 以下のページでは、各トピックについてさらに詳しく説明します。1つ1つ確認して、Box Platformのエキスパートを目指しましょう。 - [Box Platformの基礎](page://platform/box-platform-101) - [ユースケース](page://platform/use-cases) - [ユーザータイプ](page://platform/user-types) - [アプリケーションの種類](page://platform/application-types) - [認証方法](page://platform/authentication-methods) - [サポート](page://platform/support) - [ツール](page://platform/tools) 開始する **Source:** [https://ja.developer.box.com/platform/](https://ja.developer.box.com/platform/) --- ### Box Platformの基礎 **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform Box Platformの基礎 Boxとは Box… # Box Platformの基礎 ## Boxとは [Box](https://www.box.com)とは、個人や企業がどこからでもドキュメントやファイルの保存、アクセス、コラボレーションを実行できるようにする、クラウドベースのコンテンツ管理およびファイル共有のプラットフォームです。安全なファイルストレージ、リアルタイムのコラボレーション、各種生産性ツールとの統合といった機能を提供し、チームの効率性やデータのアクセス性を向上させます。セキュリティと使い勝手の良いインターフェースに重点を置いていることで知られるBoxは、デジタル資産の管理や組織内のコラボレーションの促進に広く利用されています。 ## Box Platformとは [Box Platform](https://www.box.com/platform)は、Boxが提供する一連のツールとAPIです。開発者はこれを使用して、Boxのクラウドコンテンツ管理システムの機能を独自のアプリケーションやサービスに統合し、カスタマイズすることができます。企業や開発者は、データとアクセス権限の制御を維持しながらファイルストレージ、共有、コラボレーションなどの機能を利用して、安全かつ拡張性の高いコンテンツ中心のアプリケーションを構築できます。Box Platformを使用することで、開発者は、生産性の向上とコンテンツ管理ワークフローの効率化を実現する独自のソリューションを作成できます。 ## アプリケーションの作成方法 [Box API](page://reference)を使用するには、まずBoxでアプリケーションを作成する必要があります。このアプリケーションは、プラットフォームに対して実行されるAPIコールのゲートウェイとして機能します。このタスクを実行するには、Box DeveloperドキュメントポータルとBox開発者コンソールという2つのウェブサイトを使用できます。これらについて、もう少し詳しく見てみましょう。 ### Box Developerドキュメントポータル Box Developerドキュメントポータルとは、現在ご覧になっているこのウェブサイトです。これは、Box上にソリューションを作成する開発者向けの総合的なリソースで、アプリケーションを作成したりAPIコールを実行したりする際に開発者コンソールと一緒に使用する必要があります。多くのガイド、OpenAPIの詳細な仕様、クイックスタート、サンプルコードなどがこのページ内に掲載されています。 このサイトは頻繁に更新され、最新の更新情報は[変更ログ](page://changelog)に掲載されています。 ### Box開発者コンソール [Box開発者コンソール](https://app.box.com/developers/console)は、開発者がBoxと統合された独自のアプリケーションを管理するためのツールやリソースが用意されているインタラクティブなインターフェースです。ここでは、アプリの作成、構成、監視が可能となり、これらのアプリとBox Platformの関係についてインサイトと制御が示されます。 コンソールで初めてアプリケーションを作成すると、メインのBoxウェブアプリの左下にボタンが表示されるようになります。これ以降は、このボタンを使ってコンソールにアクセスできます。 ## Box Platformの概念 以降の詳細セクションでは、さまざまなトピックについてさらに詳しく説明します。ただし、いくつかの用語と概念を大まかに知っておく必要があります。 ### ユーザータイプ Box Platformで開発を行う際に注意すべき[ユーザータイプ](https://support.box.com/hc/ja/articles/4636533822483-Box-User-Types)がいくつかあります。ユーザータイプには、管理者権限を持つユーザー (管理者ユーザーや共同管理者ユーザーなど) と管理者権限を持たないユーザー (管理対象ユーザーまたは外部ユーザー) があります。さらに、サービスアカウントとApp Userに分類される、Platform専用のユーザーもあります。各ユーザータイプには、Box環境内での特定のロールとアクセスレベルが割り当てられており、アプリケーションやコンテンツの操作方法に影響します。基本的には、メインのBoxウェブアプリからコンテンツにアクセスできるユーザーは、APIを使用してコンテンツにアクセスすることもできます。 ### アプリケーションの種類 開発者コンソールで作成できるアプリケーションには、主に、Platformアプリ、アクセス制限付きアプリ、Box Custom Skillの3種類があります。また、サードパーティの統合やウェブアプリ統合も作成できます。 ### 認証方法 選択したアプリケーションの種類に応じて、[アクセストークン](g://authentication/tokens)を取得するために使用できる5種類の認証方法のいずれかを使用できます。アクセストークンは、アプリケーションであるゲートウェイを通過してBoxに対するAPIコールを成功させるための鍵となります。 次の手順 **Source:** [https://ja.developer.box.com/platform/box-platform-101/](https://ja.developer.box.com/platform/box-platform-101/) --- ### Box Platformの用語集 **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform Box Platformの用語集 この用語集には、Box Platformで使用される用語と定義がまとめられています。用語の意味を調べる必要がある場合は、このページをご利用ください。 Box… # Box Platformの用語集 この用語集には、Box Platformで使用される用語と定義がまとめられています。用語の意味を調べる必要がある場合は、このページをご利用ください。 | Boxリソースの種類/用語 | 別名 | 説明 | | --- | --- | --- | | 管理者 | スーパーユーザー、スーパーバイザー | Enterpriseアカウントのメイン管理者。管理者は、ユーザーとグループの管理、組織のすべてのファイルとフォルダの表示と編集、組織内のさまざまなユーザーのアカウントへのログイン、組織の設定の編集、レポートの実行とアクセスが可能です。Box管理者は主要アカウント管理者です。 | | 管理コンソール | | 特定の企業を管理するためのダッシュボード領域。管理者、グループ管理者、共同管理者がアクセスできます。 | | 匿名ユーザー | | ログインしていないユーザー。 | | App User | | Box App Userは、Boxと統合されるアプリケーションまたはサービスに関連付けられている、Box Platform内の特定の種類のユーザーです。App Userは、API経由でしかアクセスできません (つまり、ログイン資格情報を持っていません)。これは、サービスアカウントによって作成できるため、サーバー間認証を利用するアプリケーションのみに適用できます。App Userは、その作成に使用されたアプリケーションに関連付けられているため、そのユーザー自体を別のアプリケーションに移動することはできません。ただし、そのアプリケーション外でのコンテンツのコラボレーションは可能です。 | | ブックマーク/ウェブリンク | シンボリックリンク、シムリンク、ソフトリンク、参照、関係 | コンテンツの構造内で外部ウェブサイトや特定の場所に簡単にアクセスできるようにする、クリック可能な参照。 | | Box統合 | アプリストア | Boxユーザーが、Boxと組み合わせて使用できるアプリケーションについて最初に調べる場所。 | | Boxコマンドラインインターフェース | Box CLI | 開発者でも開発者以外のユーザーでもBox APIを利用してルーチンや一括操作を実行できる、使い勝手の良いコマンドラインツール。 | | Box Custom Skill | カスタムスキル、Box Skill | Boxにアップロードされたファイルに対してカスタマイズした処理を実行するアプリケーションの種類。Skillsは、サードパーティの機械学習サービスを使用して、Boxにアップロードされたファイルから情報を自動的に抽出できるように設計されています。 | | Box Embed | | サードパーティ製アプリケーション内の任意の場所にBoxウェブアプリの機能を埋め込めるようにする、HTMLベースのフレームワーク。Box Embedを使用すると、ファイルのアップロード、検索、コメント付け、共有、タグ付けに加え、Box Editを使用したファイルの編集も可能になります。 | | Box Platform | | Platformアプリケーションを作成したり、ワークフローを統合したり、安全なドキュメントの保存、アクセスの制御、バージョン管理、メタデータ管理、リアルタイムコラボレーションのための強力な機能を活用したりするためのツールやインフラストラクチャを開発者に提供する、API駆動型のクラウドコンテンツ管理およびコラボレーションのプラットフォーム。 | | Boxサンプルコードカタログ | | 開発者と管理者は、さまざまなプログラミング言語のツール、自動化スクリプト、自習型ワークショップ、デモアプリのコードリポジトリを検索できます。このカタログには、80を超えるオープンソースリポジトリやガイドが用意されています。 | | Box Shield | | Boxが提供するセキュリティソリューションで、自動分類と先を見越した監視により、機密データの保護、不正アクセスの防止、潜在的な脅威の検出に役立ちます。 | | Box Skills | | Box Skillsは、コンテンツから自動的にインサイトとメタデータを抽出してBoxの機能を強化する、AIを活用した機能です。 | | Box Relay | | Box Relayを使用すると、コンテンツ中心のビジネスプロセスを自動化してスピードアップするためにワークフロー自動化を作成し、構成できます。 | | Box Verified Enterprise | BVE | Box Verified Enterpriseは、組織のコンテンツ管理システムのセキュリティとコンプライアンスを確保する認定プログラムです。 | | Box UI Elements | | 開発者がメインのBoxウェブアプリの要素を独自のアプリケーションに追加できるようにする、組み込みのUIコンポーネント。これを使用すると、Boxに保存されているコンテンツを参照、アップロード、プレビュー、選択することができます。また、これは、Reactコンポーネントとしても、フレームワークに依存しないJavaScriptライブラリとしても使用できます。 | | カスケードポリシー | | Boxでは、メタデータインスタンスをフォルダに追加し、それを自動的にフォルダのコンテンツにカスケードできるため、個別にインスタンスを追加する必要がありません。メタデータのカスケードを使用すると、一度で複数のファイルやサブフォルダにメタデータをすばやく追加できます。 | | 分類 | | ファイルまたはフォルダに適用される分類を含む、分類メタデータテンプレートのインスタンス。 | | コラボレーション | | ファイルまたはフォルダでの共同作業。 | | コラボレーション | 権限、ロールベースのアクセス制御 (RBAC)、アクセス制御リスト (ACL)、権限のマッピング | アクセス制御リストと同様に、コラボレーションではファイルとフォルダに対するユーザーおよびグループのアクセス権限が定義されます。コラボレーションオブジェクトは、特定のロールによって定義される権限を含んだファイルまたはフォルダへのアクセス権限をユーザーまたはグループに付与します。 | | コラボレータ | | ファイルまたはフォルダへのアクセス権限を共有するユーザー。 | | コラボレーションフォルダ | 共有フォルダ | 社内のユーザーが所有する共有フォルダ。 | | コラボレーションロール | 権限レベル、アクセスレベル | コラボレーションロールでは、特定のファイルまたはフォルダに対するユーザーの権限レベルが定義されます。Boxのコラボレーションロールには、所有者、共同所有者、編集者、ビューアー/アップローダー、プレビューアー/アップローダー、ビューアーがあります。Boxのコラボレーションレベルは、各ユーザーが招待されたフォルダおよびその下のサブフォルダのみにアクセスできる「ウォーターフォール」設計に従います。また、ユーザーを個々のファイルに招待することもできます。 | | コレクション | | ファイルやフォルダなどの項目の集合。コレクションのコンテンツは、フォルダのコンテンツと同じ方法で調べることができます。 | | コンテンツマネージャ | | 管理コンソールの機能で、次の操作を実行できます: 組織内のファイルやフォルダを検索およびダウンロードする、ユーザーごとにアクセス可能なファイルとフォルダを表示する、フォルダ間でファイルを移動する、コラボレータをフォルダに招待する、共有リンクを取得してアクセスレベルを変更する、ユーザーのごみ箱からファイルやフォルダを削除する。 | | 共同管理者 | | 一部の管理者権限を持っている、メイン管理者以外のユーザー。共同管理者は、組織の管理者と同じ操作を実行できますが、管理者の権限または他の共同管理者の権限を変更することはできません。共同管理者のデフォルトのアクセスレベルで可能なのはユーザーとグループの管理のみですが、このアクセスレベルはユーザーごとに変更できます。 | | Platformアプリ | | 他のツールやシステムとの統合により、Boxの機能が拡張されている独自のアプリケーション。ワークフローの効率化やコラボレーションの強化に使用されます。これは、開発者コンソールで作成でき、いくつかの認証方法を使用できます。 | | 開発者 | プログラマ | ソフトウェアアプリケーションやシステムの設計、構築、保守を担当し、開発者コンソールへのアクセス権限を持っている、技術を有する専門家。Boxでは、開発者に管理者ロールを割り当てることができます。 | | 開発者コンソール | | コードの実行とシステムのパフォーマンスに関するインサイトをリアルタイムに提供することで、開発者がアプリケーションを作成、デバッグ、テスト、監視できるようにするポータル。 | | Enterprise | リポジトリ、コンテンツストア、ファイルキャビネット、ドックベース、保管庫 | BoxのEnterpriseとは、Boxが大規模な組織向けに提供するツールとサービスの包括的なスイートであり、安全なファイルストレージ、コラボレーション機能、アクセス制御、ワークフローの自動化、コンプライアンスの適用、分析を実現します。効率的なドキュメント管理とチームワークを可能にしながら、企業の設定におけるデータのセキュリティを確保します。 | | 情報バリア | Information barriers | 利益相反につながり、結果として倫理的または法的に問題のあるビジネス活動につながる可能性があるやり取りまたは通信を防ぐメカニズム。 | | イベント | | ユーザーによって実行された操作の結果。Using the Enterprise Event Stream (英語) を参照してください。 | | 外部コラボレータ | 外部ユーザー | 企業に属していないコラボレータ。 | | 外部コラボレーションフォルダ | | 社外のユーザーが所有するフォルダ。 | | ファイル | ドキュメント、非構造化データ | 構造化されたフォーマットで情報やデータを保管するデジタルコンテナ。 | | フォルダ | ディレクトリ、コンテナ | ファイルが含まれているディレクトリ。 | | グループ管理者 | | グループ管理者は、担当グループへの既存ユーザーの追加、グループに割り当てる新規ユーザーの作成、グループへのフォルダアクセスの割り当てが可能です。また、グループに関するレポートも実行できます。 | | グループ | チーム | ユーザーがファイルを共有したり、ドキュメントでコラボレーションしたり、互いにコミュニケーションを取ったりできるコラボレーションワークスペース。 | | 項目 | オブジェクト、Boxオブジェクト、コンテンツ | ファイル、フォルダ、またはウェブリンクを表すことができます。 | | アクセス制限付きアプリ | | 特定のユーザーがBox Platform内の指定されたコンテンツにアクセスして操作できるように、開発者コンソールで作成された安全かつ制限されているアプリケーション。 | | 管理対象ユーザー | | 組織の管理者によって一元的に制御および管理されているユーザーアカウント。 | | メタデータテンプレート | ドキュメントクラス、ドキュメントタイプ、コンテンツタイプ、インデックス | ドキュメントまたはファイルに関する重要な情報を取得して整理する事前定義済みの構造。 | | メタデータ属性 | プロパティ、フィールド、キーワード、インデックス値 | メタデータ属性は、データの種類、形式、ソースなど、データの詳細をわかりやすく提供する情報です。 | | 個人用フォルダ | | 個人ユーザーが所有するフォルダ。 | | レポート | | 特定のデータセットが含まれているファイル。管理コンソールの [レポート] タブを使用して、使用状況のログ、ファイル/ユーザーの統計情報、セキュリティ監査など、アカウント全体のさまざまなレポートを実行できます。 | | サンドボックス | テスト環境 | 開発者向けに管理されている、追跡可能なテスト環境。実稼働環境ではありません。 | | サービスアカウント | | サービスアカウントにより、開発者は、サーバー側のBoxとの統合にプログラムによる認証メカニズムを使用できます。つまり、アプリケーションはBoxに対してサービスとして認証を受けることができ、これがサービスアカウントユーザーで表されます。その後、サービスアカウントを使用して、App Userと呼ばれるアプリケーション固有のユーザーを他に作成できます。 | | 共有リンク | | 社内外の同僚や友人と共有できる、Boxに保存されているコンテンツへのハイパーリンク。ファイルまたはフォルダへの共有リンクをユーザーに送信すると、共有コンテンツを使ってそのユーザーと共同作業することができます。カスタマイズ可能な権限レベル、有効期限、オプションのパスワード保護により、Boxの共有リンクは、重要なコンテンツを共有するための安全かつシンプルな手段となります。 | | ソフトウェア開発者向けツール | SDK | 開発者が特定のプラットフォームまたはフレームワーク用のソフトウェアアプリケーションを作成するのに役立つツール、ライブラリ、ドキュメントの集合。 | | タスク | 動作 | ドキュメントの共同作成エディタ内で完了する必要がある特定の操作または作業。 | | ユーザー | ID、人、権限を持つ人 | ドキュメントの共同作成エディタを使用して、ドキュメントの作成や編集、他のユーザーとのドキュメントの共有を行う個人。 | | 管理対象外ユーザー | | 組織によって一元管理されておらず、Box内のコンテンツに対するアクセスと制御が制限されているユーザーアカウント。また、管理対象外ユーザーは、必ずしも外部ユーザーであるとは限りません。 | | バージョン管理 | | すべてのユーザーが最新バージョンで作業できるように、異なるバージョンのドキュメントを管理して追跡すること。 | | Webhook | | Webhookは、アプリケーションがHTTP POSTリクエストを送信することによって、別のアプリケーションにリアルタイムのデータや通知を提供するための手段です。 | | ワークフロー | | Box内のワークフローは、ドキュメント中心のプロセスの効率化と進捗の追跡を支援する、自動化されたタスクのシーケンスであり、効率的なコラボレーションとタイムリーな完了を保証します。 | 次の手順 **Source:** [https://ja.developer.box.com/platform/box-glossary/](https://ja.developer.box.com/platform/box-glossary/) --- ### アーキテクチャパターン **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform … # アーキテクチャパターン コードを書く前に、アプリケーションの視覚的なレプリゼンテーションを作成することをお勧めします。以下に示すアーキテクチャパターンは汎用的なものであり、すべての可能性を網羅しているわけではありません。 アプリケーションアーキテクチャに関するサポートをご希望の場合は、Box Consultingサービスの購入について、お客様のアカウントチームにお問い合わせください。 ## 管理タスク コンポーネント: - PowerShellスクリプトを実行しているサーバーまたはローカルマシン - ユーザープロビジョニング/プロビジョニング解除サービスがあるIDプロバイダ - 各ユーザーの個人用フォルダが含まれている、[サービスアカウント](page://platform/user-types/#service-account)の所有フォルダ - [イベントストリーム](e://resources/event)を監視し、個人用フォルダで各ユーザーを作成/コラボレーションする、時間に基づくPowerShellスクリプト ## 保管庫ポータル コンポーネント: - ユーザーがBox以外のブランド設定された環境でコラボレーションできるようにするカスタムポータル - ポータルが導入されているウェブサーバーにユーザーを分散させるロードバランサ - ユーザーは、IDプロバイダで管理されている資格情報を使ってログイン可能。その後、この資格情報は、データサーバー内のBoxからの[App User](page://platform/user-types/#app-user)情報にマッピングされます。 - 他のサイトデータはデータサーバーに保存 ## Box Skill この例では、外部ユーザーが[ファイルリクエスト](https://support.box.com/hc/ja/articles/360045304813-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B)を介して履歴書をアップロードします。 [Box Skill](g://applications/app-types/custom-skills)は、特定のフォルダでのアップロード/移動/コピー操作を監視するように設定されています。イベントが発生すると、ファイルは、任意の機械学習サービスで処理するためにクラウドプロバイダに送信されます。処理が済むと、情報は[メタデータとしてファイルに再度保存](e://post-files-id-metadata-global-boxSkillsCards)されます。このメタデータは、その後、別のプロセスで使用したり、後で参照したりすることができます。 **Source:** [https://ja.developer.box.com/platform/appendix/architecture-patterns/](https://ja.developer.box.com/platform/appendix/architecture-patterns/) --- ### アプリケーションの種類 **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform アプリケーションの種類 Boxには、アプリケーション開発におけるさまざまなニーズやユースケースに対応するために各種アプリケーションが用意されています。アプリケーションの種類ごとに機能や認証方法のオプションは異なります。 Platformアプリ Platform… # アプリケーションの種類 Boxには、アプリケーション開発におけるさまざまなニーズやユースケースに対応するために各種アプリケーションが用意されています。アプリケーションの種類ごとに機能や認証方法のオプションは異なります。 ## Platformアプリ [Platformアプリ](g://applications/app-types/platform-apps)は汎用性があるため、ほとんどのユースケースに対応可能です。開発者はカスタムアプリを使用することで、Boxの機能をカスタムインターフェース内に表示できます。Boxでは、コンテンツの閲覧、検索、プレビューなどのタスク向けにカスタマイズ可能なUI Elementsを提供しています。これらのアプリでは、認証用にOAuth 2.0、JWT、クライアント資格情報許可をサポートしています。Platformアプリは、自分のファイルと他のユーザーのファイル両方へのアクセス、ファイルのアップロードとダウンロード、Box統合への掲載が必要なアプリケーションに最適です。 ## アクセス制限付きアプリ [アクセス制限付きアプリ](g://applications/app-types/limited-access-apps)は、Box Viewを利用したり、別のアプリケーション内でBoxコンテンツをプレビューしたりするために特別に設計されたアプリです。アクセスできるエンドポイントの数は限られており、アプリトークン認証のみがサポートされています。このようなアプリは、ウェブサイトでプロのクリエイターの作品集を紹介する、サポートサイトでユーザーマニュアルを提供する、電子書籍や間取り図用のカスタムドキュメントビューアーを作成するなどのユースケースに適しています。 ## Box Skills [Box Skills](g://applications/app-types/custom-skills) (カスタムスキル) は、Boxにアップロードされたファイルに対してカスタマイズした処理を実行するアプリケーションです。サードパーティの機械学習サービスを使用してファイルから情報を抽出し、それをメタデータとして適用します。このようなスキルはBox管理者がフォルダに対して有効にするので、ファイルがアップロードされるたびにアプリケーションサーバーにイベントが送信されます。カスタムスキルは、ファイルにメタデータを追加したり、認証を処理することなく機械学習サービスと統合したりする場合に最適です。 ## ウェブアプリ統合 [ウェブアプリ統合](g://applications/web-app-integrations)を使用すると、サードパーティ製アプリケーションはBoxのユーザーエクスペリエンスとシームレスに統合できます。これにより、ユーザーはサードパーティ製アプリケーションを使用して、Boxに保存されているコンテンツを編集、共有、変更することができます。このような統合は、Boxユーザーに新機能を追加したり、Boxプレビューの [推奨ウェブ統合] に追加したりできるため、さまざまなコンテンツタイプやファイル拡張子と統合され、ユーザーエクスペリエンスが向上します。 ## 統合での公開 [Box統合](g://applications/integrations/)は、BoxユーザーがBoxと連携して使用できるアプリケーションを見つけるためのプラットフォームです。開発者にとって、統合へのアプリケーションの掲載は、特に他の企業での使用に適したアプリケーションの場合、新規ユーザーにリーチを広げるのに効果的な手段となります。統合での公開プロセスでは、アプリケーションが本番環境に対応していることとOAuth 2.0認証を利用していることを確認し、開発者コンソールから承認を得るためにそのアプリケーションを送信する必要があります。承認されると、アプリケーションは統合の [おすすめ]、[人気]、[新着] セクションに分類されます。また、必要に応じて公開を取り消すこともできます。 次の手順 **Source:** [https://ja.developer.box.com/platform/application-types/](https://ja.developer.box.com/platform/application-types/) --- ### サポート **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform サポート Box Developer Relationsチームは、できる限り開発者の皆様をサポートしたいと考えています。開発者への定期的な聞き取り調査以外に、以下のようなBoxへの問い合わせ方法も用意しています。 Developer Forum (英語のみ) Boxは最近、Box… # サポート Box Developer Relationsチームは、できる限り開発者の皆様をサポートしたいと考えています。開発者への定期的な聞き取り調査以外に、以下のようなBoxへの問い合わせ方法も用意しています。 ## Developer Forum (英語のみ) Boxは最近、Box Developer Communityをリニューアルしました。開発者同士がつながり、開発の問題について質問することがさらに容易になりました。また、ご自身の成功体験も共有していただけます。[今すぐご参加ください](https://community.box.com/)。 ## Box開発者向けブログ その他の更新情報、チュートリアル、お知らせについては、[Box開発者向けブログ](https://medium.com/box-developer-japan-blog)をご確認ください。 次の手順 **Source:** [https://ja.developer.box.com/platform/support/](https://ja.developer.box.com/platform/support/) --- ### ツール **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform ツール Boxには、開発をスムーズに開始できるようにするツールがいくつか用意されています。以下をご確認ください。 サンプルコードカタログ サンプルコードカタログは、当社がBox Developer… # ツール Boxには、開発をスムーズに開始できるようにする[ツール](g://tooling)がいくつか用意されています。以下をご確認ください。 ## サンプルコードカタログ [サンプルコードカタログ](https://ja.developer.box.com/sample-code/)は、当社がBox Developerドキュメントポータルでリリースした最新のツールです。これは、複数の場所からコードサンプルリポジトリを集めて、1か所で閲覧できるように統合したものです。ここでは、言語やタスクでフィルタをかけることができます。リストは定期的に更新しているため、最新のコードを入手できます。 ## Box CLI Boxコマンドラインインターフェース (CLI) は、ターミナルウィンドウまたはコマンドプロンプトからBox APIに対してリクエストを行うためのツールです。設定には5分もかからず、APIに直接アクセスできます。Boxでは、管理の自動化タスクを短時間で開始するための一連の[サンプルスクリプト](g://cli/scripts)も提供しています。 ## SDK Boxは、[SDKライブラリ](page://sdks-and-tools)で複数のプログラミング言語をサポートしています。認証や再試行ロジックなどがライブラリによって自動的に処理されるため、ソリューションを作成する際はSDKを使用することを強くお勧めします。さらに、APIリファレンスのページには、サイト内のすべての言語のサンプルが直接掲載されていますが、各GitHubリポジトリにも、その言語のサンプルがすべて掲載されたドキュメントセクションがあります。 ## Postmanコレクション ソフトウェア開発の業界標準であるPostmanは、リアルタイムテストとコードサンプルを提供して、開発者が短期間でAPIを習得できるようサポートしています。BoxのPostmanコレクションについては、[Postmanのウェブサイト](https://www.postman.com/boxdev)を参照してください。また、下のYouTube動画もご確認ください。 次の手順 **Source:** [https://ja.developer.box.com/platform/tools/](https://ja.developer.box.com/platform/tools/) --- ### ブランディングガイドライン **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform ブランディングガイドライン Box Platformをご利用いただき、誠にありがとうございます。ぜひ、お客様のBoxのご利用体験を世界に向けて発信してください。ただし、お客様のアプリケーションとBox… # ブランディングガイドライン Box Platformをご利用いただき、誠にありがとうございます。ぜひ、お客様のBoxのご利用体験を世界に向けて発信してください。ただし、お客様のアプリケーションとBox公式アプリケーションが混同されないようにすることは非常に重要です。そのため、当社の名称とロゴの使用に関するガイドラインをご用意しました。 ## 承認済みのロゴ 承認済みのBoxロゴは、[このBoxフォルダ](https://cloud.app.box.com/v/BoxCorporateLogo)で確認できます。 ## お願いしたいこと ### ユーザーへの周知 Boxに接続していることをユーザー自身が認識できるようにしてください。 多くのアプリには、「クラウドサービスに接続」のようなメニューがあります。この場合は、ユーザーにわかるように当社の名称とロゴをご自由にお使いいただけます。 ### 当社へのお問い合わせ 判断に迷う場合はご相談ください。お客様のアプリが当社のガイドラインに沿って動作するようお手伝いします。[ご不明な点があればこちらからお問い合わせください](https://support.box.com/hc/ja/requests/new)。 ## ご遠慮いただきたいこと ### Boxと間違われないようにする お客様のアプリケーションに、Box公式アプリケーションと間違えられる可能性のある名前を付けないでください。 つまり、Boxの公式なものでないことが明白な場合を除き、「Box」という単語は使わないようにしてください。たとえば、「Unofficial Box Client」は公式なものでないことが明らかですが、「Box App for Android」は不明確です。 お客様のブランド名を含める場合 (たとえば「<会社名> Box Client」) は、おそらく問題ないと考えられます。ただし、これはブランディングガイドラインとしては非常に不明瞭なため、ご不明な点がある場合は[お問い合わせください](https://support.box.com/hc/ja/requests/new)。迅速に対応いたします。 まとめると、次のようになります。 - 当社のロゴ、類似のロゴ、または当社のロゴの一部をお客様のアプリケーションのアイコンとして使用しないでください。 - お客様のアプリケーション内で当社の名称またはロゴを、そのアプリケーションがBox公式アプリケーションに見えるような形で使用しないでください。 ### Boxのロゴを改変しない お客様のアプリケーションで「Box」のロゴを使用する場合は、どのような方法であってもそのロゴを改変しないでください。 ### 古い名称を使用しない 当社について言及する場合に、`Box.net`または`Boxnet`を使用しないでください。当社は「Box」としてのみ認知されています。 **Source:** [https://ja.developer.box.com/platform/appendix/branding-guidelines/](https://ja.developer.box.com/platform/appendix/branding-guidelines/) --- ### ユーザータイプ **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform ユーザータイプ アプリケーションの計画と開発で重要なのは、関与するユーザーのタイプを把握することです。ユーザーのタイプには、主に、管理対象ユーザー (内部および外部)、管理者、サービスアカウント、App Userの… # ユーザータイプ アプリケーションの計画と開発で重要なのは、関与するユーザーのタイプを把握することです。ユーザーのタイプには、主に、管理対象ユーザー (内部および外部)、管理者、サービスアカウント、App Userの4つがあります。それぞれの違いを詳しく見ていきましょう。 # 自分のアプリケーションで使用するユーザーのタイプ アプリケーションがどのタイプのユーザーとして認証されるかは、作成したアプリケーションの種類と、アクセストークンの作成で使用した認証の種類によって決まります。 ## 管理者または共同管理者ユーザー Box管理者とは、主要なBoxアカウント管理者です。管理者は、管理者権限が同等かより厳しく制限されている共同管理者を追加することができます。管理者と共同管理者は、管理コンソールで直接、セキュリティ設定を編集、削除、適用したり、ユーザーに対してレポートを実行したりできます。 ## 管理対象ユーザー 各Box Enterpriseには、一意のEnterprise IDが割り当てられます。管理対象ユーザーとは、1つのEnterprise IDに属しているすべてのユーザーのことです。管理対象ユーザーは、標準のBoxライセンスを購入しており、例外もありますがほとんどの場合に同じメールドメインを共有します。 # 管理者ユーザーとしてログイン アプリケーションの中には、正しく動作するために管理者だけが持つ権限を必要とし、管理者にログインを要求するものがあります。 この一例として、Enterprise Eventを監視し、不審なイベントに対して措置を講じるセキュリティアプリケーションがあります。イベントエンドポイントを使用できるのは、レポートへのアクセス権限を持つ管理者または共同管理者のみです。 ## 外部ユーザー 外部で管理されているユーザー (外部ユーザー) とは、別のEnterprise IDに属している管理対象ユーザーです。外部ユーザーによく遭遇するのは、外部ユーザーが、アプリケーションの企業の管理対象ユーザーが所有するコンテンツでコラボレーションしている場合や、OAuth 2.0アプリケーションを承認する場合です。外部ユーザーは各自Boxアカウントを所有していますが、管理コンソールで管理することができません。 ## サービスアカウント サービスアカウントにより、開発者は、サーバー側のBoxとの統合にプログラムによる認証メカニズムを使用できます。つまり、アプリケーションはBoxに対してサービスとして認証を受けることができ、これがサービスアカウントユーザーで表されます。サービスアカウントは、API経由でしかアクセスできません (つまり、ログイン資格情報を持っていません)。 その後、サービスアカウントを使用して、App Userと呼ばれるアプリケーション固有のユーザーを他に作成できます。App Userについては、以下で詳しく説明します。 ### 作成 サーバー認証を利用するアプリケーションが管理コンソールで[承認](g://authorization/platform-app-approval)されるとすぐに、一意のBoxサービスアカウントが自動的に生成されます。その時点から、そのサービスアカウントはBox Enterprise内のアプリケーションを表します。すべてのBoxアカウントにはメールアドレスが必要なため、Boxによって割り当てられます。これは常に`AutomationUser_AppServiceID_RandomString@boxdevedition.com`形式になります (例: `AutomationUser_123456_6jCo6Pqwo@boxdevedition.com`)。サービスアカウントが自動化ユーザーと呼ばれることがあるのはこのためです。 アンダースコアで囲まれた数字もアプリケーションに固有であり、サービスIDと呼ばれます。[開発者コンソール](https://app.box.com/developers/console)でサービスIDを見つけるには、アプリケーションのタイルをクリックし、URLを確認します。たとえば、`https://example.app.box.com/developers/console/app/123456`というURLの場合、このアプリケーションは、上記の例で示したサービスアカウントに対応していることがわかります。 デフォルトでは、ほとんどのサービスアカウントに10 GBのストレージが割り当てられます。これは、サービスアカウントが管理コンソールの [**ユーザー設定**] タブにある [**新規ユーザーの初期設定**] で設定されたストレージ割り当てに従うためです。この容量は、企業がこの設定を更新したかどうかによって異なる場合があります。サービスアカウントに割り当てられているストレージの容量をアカウント作成後に更新するには、[ユーザーを更新](e://put-users-id)エンドポイントに対するAPIコールを実行し、`space_amount`本文パラメータを使用して目的の値 (バイト単位) を渡します。 サービスアカウントが生成されると、[開発者コンソール](https://app.box.com/developers/console)の [一般設定] タブにセクションが自動的に追加され、メールアドレスが表示されます。 アプリケーションが管理コンソールで承認される前に、ユーザーがサービスアカウントアクセストークンを使用してAPIコールを実行しようとすると、次のエラーメッセージが表示されます: `"error": "unauthorized_client"` `"error_description": "This app is not authorized by the enterprise"` ### ユースケース - *ディストリビューションの公開*: 認証されているかどうかに関係なく、ファイルをアップロードし、多数のユーザーと共有します。 - *オンプレミスのシステムとデバイス*: オンプレミスシステムや接続されたデバイスからプログラムによってコンテンツを取り込みます。 - *コンテンツの移行と監視*: コンテンツをオンプレミスからクラウドへ移動したり、クラウドプロバイダ間で移動したりします。 - *イベント監視*: 社内のイベントを監視して、アクションに基づいてコンプライアンス順守を確保したり、ワークフローをトリガーしたりします。 - *コンテンツのアーカイブ*: 最低限しかアクセスされないコンテンツを格納します。 ### 権限 サービスアカウントアクセストークンで問題なく操作できるエンドポイントは、[開発者コンソール](https://app.box.com/developers/console)で構成されたアプリケーション[スコープ](g://api-calls/permissions-and-errors/scopes)によって決まります。付与されているスコープによっては、サービスアカウントが管理者アクションを実行できる場合があります。 # 管理者の承認 適切な[スコープ](g://api-calls/permissions-and-errors/scopes)が有効になっている場合、サービスアカウントは多くの管理者アクションを実行できます。そのため、JWTアプリケーションを社内で使用できるようにするには、事前に明示的な[管理者による承認](g://authorization/platform-app-approval)が必要です。 ### UIでのアクセス 管理コンソールの[コンテンツマネージャ](https://support.box.com/hc/ja/articles/360044197333-%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%81%AE%E4%BD%BF%E7%94%A8)からサービスアカウントとしてログインできるのは、プライマリ管理者のみです。これには、コンテンツマネージャの検索バーを使用してアプリケーションの名前を見つけ、その名前を右クリックして [ユーザーのアカウントにログイン] を選択します。 サービスアカウントは、Boxの共同管理者の権限を持っていると考えることができます。共同管理者がお互いを管理できないのと同じように、共同管理者がサービスアカウントユーザーとしてログインすることはできません。 サービスアカウントは、現在、管理コンソールの [ユーザーとグループ] タブに表示されていません。 ### フォルダツリーとコラボレーション サービスアカウントは、アプリケーションをEnterprise内のユーザーとして表すため、独自のフォルダツリーとコンテンツ所有権の機能が用意されています。最初は、所有するコンテンツやコラボレーションするコンテンツがないため、このフォルダツリーはデフォルトで空になっています。これは、新しくプロビジョニングしたBoxアカウントの [すべてのファイル] ページに最初にアクセスしたときと似ています。 既存のコンテンツでのコラボレーションにサービスアカウントを追加するには、他のユーザーの場合と同様、割り当てられたメールアドレスを使用してサービスアカウントを招待します。[APIを使用して](e://post-collaborations)コラボレーションを追加する場合は、すでにコンテンツへのアクセス権があり、コラボレータを招待するための適切なコラボレーション権限を持っているユーザーのアクセストークンを使用する必要があります。また、サービスアカウントのユーザーIDも使用します。このユーザーIDは、サービスアカウントのアクセストークンを使用して[現在のユーザーを取得エンドポイント](e://get-users-me)を呼び出したときに返されます。 コラボレーションを追加する際に覚えやすくなるよう、サービスアカウントにメールエイリアスを割り当てることができます。 ### Box View サービスアカウントは、[開発者コンソール](https://app.box.com/developers/console)でアクセス制限付きアプリを作成したときにも自動的に生成されます。このサービスアカウントには、Platformアプリに関連付けられたサービスアカウントにはない追加の制限がいくつかあります。 - アクセス制限付きアプリ内で使用されるコンテンツはすべて、このサービスアカウントがアップロードおよび所有する必要がある - このサービスアカウントは、他のユーザーの情報やコンテンツにアクセスできない - このサービスアカウントは、タイプを問わず新しいユーザーを作成することも管理することもできない - このサービスアカウントは、コンテンツのプレビューに関連するAPIのサブセットにしかアクセスできない ## App User App Userは、API経由でしかアクセスできません (つまり、ログイン資格情報を持っていません)。これは、サービスアカウントによって作成できるため、サーバー間認証を利用するアプリケーションのみに適用できます。App Userは、その作成に使用されたアプリケーションに関連付けられています。また、そのアプリケーション以外でのコンテンツのコラボレーションは可能ですが、このユーザー自体を別のアプリケーション下に移動することはできません。 ### 作成 App Userを作成するには、サービスアカウントアクセストークンを使用して、[ユーザーを作成エンドポイント](e://post-users)を呼び出します。`is_platform_access_only`本文パラメータはtrueに設定する必要があります。そうしないと、代わりに管理対象ユーザーが作成されます。 すべてのBoxアカウントにはメールアドレスが必要なため、Boxによって割り当てられます。これは常に`AppUser_AppServiceID_RandomString@boxdevedition.com`形式になります (例: `AppUser_1234567_LOCqkWI79A@boxdevedition.com`)。 アンダースコアで囲まれた数字もアプリケーションに固有であり、サービスIDと呼ばれます。[開発者コンソール](https://app.box.com/developers/console)でサービスIDを見つけるには、アプリケーションのタイルをクリックし、URLを確認します。たとえば、`https://exampl.app.box.com/developers/console/app/1234567`というURLの場合、このアプリケーションは、上記の例のApp Userに対応していることがわかります。 ### ユースケース App Userは、既存のBoxアカウントを持っているかどうかに関係なく、BoxのPlatformの機能を、任意のユーザーにサービスを提供するアプリケーションに拡張します。App Userは、独自のユーザー認証を管理しつつもデータを一意のBoxユーザーアカウントに保存しようとするアプリケーションでよく使用されます。 - *顧客ポータル*: 顧客や患者がログインして、企業の従業員が提供する情報にアクセスしたり、自分の機密文書を保存および取得したりできるウェブサイトまたはアプリケーション。 - *ベンダーポータル*: 企業がマーケティング用販促品、価格表、製品情報、販売契約書、その他のドキュメントを含む資料をベンダーに提供するためのコンテンツ配布サイト。Boxのグループと権限モデルにより、企業はパートナーの基準や層に基づいてパートナー向けのコンテンツを編成できます。 - *ブランドの顧客向けアプリケーション*: エンドユーザーに代わってApp Userを作成できるため、企業は、権限、監査、レポートなどのシームレスな顧客向け機能を構築できます。これは、金融サービスや医療などの規制産業にとって特に有用です。さらに、Boxの[レポート機能](e://get-events)によって取得したユーザーベースのデータにより、開発者は分析ツールを活用して、ユーザーの行動についてより理解を深めることができます。 ### 権限 App Userは、コラボレータとして明示的に追加されない限り、サービスアカウントのフォルダツリー内のコンテンツを表示することも操作することもできません。また、App Userはログイン資格情報を持っていないため、Platformアプリケーション以外でコンテンツにアクセスすることはできません。 ### UIでのアクセス App Userには、管理コンソールの [[ユーザーとグループ] タブ](https://support.box.com/hc/ja/articles/360043695714-%E7%AE%A1%E7%90%86%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%82%AC%E3%82%A4%E3%83%89)からアクセスできます。これらのユーザーにフィルタをかけるには、表示オプションボタン > [ロール] > [App User] を使用します。 管理コンソールの[コンテンツマネージャ](https://support.box.com/hc/ja/articles/360044197333-%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%81%AE%E4%BD%BF%E7%94%A8)からもApp Userにアクセスできます。 ### フォルダツリーとコラボレーション 各App Userには、独自のフォルダツリーとコンテンツ所有権の機能があります。最初は、所有するコンテンツやコラボレーションしているコンテンツがないため、このフォルダツリーはデフォルトで空になっています。これは、新しくプロビジョニングしたBoxアカウントの [すべてのファイル] ページに初めてアクセスしたときと似ています。 既存のコンテンツでのコラボレーションにApp Userを追加するには、他のユーザーの場合と同様、割り当てられたメールアドレスを使用してApp Userを招待します。[APIを使用して](e://post-collaborations)コラボレーションを追加する場合は、すでにコンテンツへのアクセス権があり、コラボレータを招待するための適切なコラボレーション権限を持っているユーザーのアクセストークンを使用する必要があります。 ## As-User アプリケーションの認証方法としてOAuth 2.0、JWT、またはCCGを使用している場合、`as-user`コールを行うことができます。つまり、Box APIへの最初の接続を自分自身またはサービスアカウントとして作成した場合でも、それ以降のコールを別のユーザーの代理として行うことができます。これは、フォルダの再編成や従業員のプロビジョニングなどの管理タスクを自動化する場合に便利です。`as-user`コールを行うには、開発者コンソールでアプリケーションを作成する際に適切なスコープを追加する必要があります。たとえば、OAuth 2.0 Platformアプリでは、次の切り替えをオンにする必要があります。 次の手順 **Source:** [https://ja.developer.box.com/platform/user-types/](https://ja.developer.box.com/platform/user-types/) --- ### ユーザーモデル **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform ユーザーモデル ユースケースがBox Platform… # ユーザーモデル [ユースケース](page://platform/use-cases)がBox Platformに適していることを確認し、関与する[ユーザーのタイプ](page://platform/user-types)をしっかりと理解したら、[アプリケーションアーキテクチャ](page://platform/appendix/architecture-patterns)を開始するためのユーザーモデルを選択できます。 ## 従来型 このモデルでは、アプリケーションに内部ユーザーと外部ユーザーが存在します。外部ユーザーは、Boxウェブアプリを使用する内部ユーザーとコンテンツの共有やコラボレーションを行います。 - **内部ユーザーのタイプ**: [管理対象ユーザー](page://platform/user-types/#managed-users) - **外部ユーザーのタイプ**: [App User](page://platform/user-types/#app-user) - **コンテンツの所有者**: アプリケーション[サービスアカウント](page://platform/user-types/#service-account)または[管理対象ユーザー](page://platform/user-types/#managed-users) - **例**: 保管庫ポータル、ドキュメント提出、フィールドワーカーアプリケーション このユーザーモデルのメリット: 1. 内部ユーザーのために追加の機能を開発する必要がない 2. App Userを独自のIDシステム (`Auth0`など) にマッピングできる 3. セキュリティおよびコンプライアンスの要件を満たすために、すべての処理のレポートを作成できる ## App User このモデルでは、アプリケーションに内部ユーザーと外部ユーザーが存在し、全員が同じカスタムUIを利用しています。 - **内部ユーザーのタイプ**: [App User](page://platform/user-types/#app-user) - **外部ユーザーのタイプ**: [App User](page://platform/user-types/#app-user) - **コンテンツの所有者**: [App User](page://platform/user-types/#app-user) - **例**: 保管庫ポータル、ドキュメント提出、フィールドワーカーアプリケーション このユーザーモデルのメリット: 1. 内部ユーザーと外部ユーザーにカスタムエクスペリエンスを提供できる 2. 管理対象ユーザーが個別のApp Userアカウントを所有できるようにすることで、管理対象ユーザーとアプリケーションコンテンツが切り離される 3. App Userを独自のIDシステム (`Auth0`など) にマッピングできる 4. セキュリティおよびコンプライアンスの要件を満たすためにすべての処理のレポートを作成したり、他のシステムで追跡したりできる ## サービスアカウント このモデルでは、アプリケーションに内部ユーザーと外部ユーザーが存在しますが、ユーザーオブジェクトがすでに存在します。このモデルは、ユーザーが一時的なユーザーでもコンテンツは保持する必要がある場合にもうまく機能します。 - **内部ユーザーのタイプ**: [管理対象ユーザー](page://platform/user-types/#managed-users) - **外部ユーザーのタイプ**: 顧客のアプリケーションによって管理されている - **コンテンツの所有者**: アプリケーション[サービスアカウント](page://platform/user-types/#service-account) - **例**: 資産管理ポータル、保険金請求ワークフロー このユーザーモデルのメリット: 1. App Userモデルを使用すると既存のアプリケーションによる処理が複雑になる場合に便利 2. エンドユーザーとApp Userが1対1でマッピングされていない場合 (ユーザーがグループとしてマッピングされている場合など) に便利 3. サービスアカウントがすべてのコンテンツを所有するため、権限を管理しやすい 4. サービスアカウントへのアクセス範囲を制限するように、トークン交換を実装できる ## システム対システム このモデルでは、通常、ユーザーコンテンツを処理する必要がありません。 - **外部ユーザーのタイプ**: 該当なし - **内部ユーザーのタイプ**: 該当なし - **コンテンツの所有者**: アプリケーション[サービスアカウント](page://platform/user-types/#service-account) - **例**: バックオフィスアプリケーション、統合、ユーザープロビジョニング、フォルダの自動作成 このユーザーモデルのメリット: 1. ユーザーを作成する必要がない場合に便利 (たとえば、個々のユーザーではなく、部門や会社がコンテンツを所有する場合) 2. サービスアカウントの権限を昇格させることができるため、バックエンドサービスに対する権限の割り当てを徹底的に制御できる **Source:** [https://ja.developer.box.com/platform/appendix/user-models/](https://ja.developer.box.com/platform/appendix/user-models/) --- ### ユースケース **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform ユースケース アプリケーションの開発を始める前に、自分のユースケースがBox Platform… # ユースケース アプリケーションの開発を始める前に、自分のユースケースがBox Platformに適しているかどうか評価することをお勧めします。一般的には、コンテンツ中心のプロセスでパフォーマンスを最も発揮できます。 ユースケースを評価する際の質問の例を以下に示します。 - コンテンツは常にプロセスに関与していますか。 - プロセスにはコンテンツの移動が伴いますか。 - ワークフローは[ウォーターフォール型の権限](https://support.box.com/hc/ja/articles/360043697254-%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E6%A8%A9%E9%99%90%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)に準拠できますか。 - プロセスには、自動化できる管理タスクが含まれていますか。 上記の質問に対する答えが**はい**である場合は、Box Platformに適したユースケースである可能性が高くなります。 お客様向けの一般的なソリューションには、以下のようなものがあります。 - マーケティング資産の管理 - ドキュメントの安全な保管庫 - 資産管理ポータル - ユーザープロビジョニングに基づくフォルダの自動作成 - 機械学習を使用した関連メタデータの追加 - 組み込みの承認/拒否フローによるクレームレビュー - セキュリティと監査のためのイベント監視 適切なユースケースかどうかをまだ判断できない場合は、Boxアカウントチームまでお問い合わせください。 次の手順 **Source:** [https://ja.developer.box.com/platform/use-cases/](https://ja.developer.box.com/platform/use-cases/) --- ### 一般的な値の確認 **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform 一般的な値の確認 ユーザーID 開発者の場合 Boxウェブアプリで自分のユーザーIDを確認するには、[すべてのファイル] ページに移動し、右上隅の円をクリックして、ドロップダウンメニューから [アカウント設定] を選択します。ユーザーID… # 一般的な値の確認 ## ユーザーID ### 開発者の場合 Boxウェブアプリで自分のユーザーIDを確認するには、[**すべてのファイル**] ページに移動し、右上隅の円をクリックして、ドロップダウンメニューから [**アカウント設定**] を選択します。ユーザーIDは、[**アカウント**] タブの [**アカウントの詳細**] セクションに表示されている [**アカウントID**] の値です。 APIを使用してユーザーIDを確認するには、開発者コンソールに移動し、[開発者トークン](g://authentication/tokens/developer-tokens)を生成するか、自分で[アクセストークン](g://authentication/tokens/access-tokens)を取得します。このトークンを[現在のユーザーを取得エンドポイント](e://get-users-me)で使用すると、`id`フィールドにユーザーIDが返されます。 ### 管理者の場合 自分のアカウントの種類で[コンテンツマネージャ](https://support.box.com/hc/ja/articles/360044197333-%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%81%AE%E4%BD%BF%E7%94%A8)にアクセスできる場合は、ユーザーリストで当該ユーザーをクリックします。URLでユーザーIDが示されます。たとえば、`https://.app.box.com/master/content/2267862105/0/0`の場合、ユーザーIDは`2267862105`です。 APIを使用してユーザーIDを確認するには、開発者コンソールに移動し、[開発者トークン](g://authentication/tokens/developer-tokens)を生成するか、自分で[アクセストークン](g://authentication/tokens/access-tokens)を取得します。その後、[企業ユーザーのリストを取得](e://get-users)エンドポイントに対してAPIコールを実行します。これにより、企業内のすべてのユーザーのリストが返されます。 ## Enterprise ID ### 開発者の場合 APIを使用してEnterprise IDを取得するには、開発者コンソールに移動し、[開発者トークン](g://authentication/tokens/developer-tokens)を生成するか、自分で[アクセストークン](g://authentication/tokens/access-tokens)を取得します。このトークンを[現在のユーザーを取得エンドポイント](e://get-users-me)で使用し、`enterprise`フィールドをリクエストします。 ### 管理者の場合 **管理コンソール**で、[**アカウントと請求**] タブに移動します。Enterprise IDは、[**アカウント情報**] セクションにあります。 ## コンテンツID ### 開発者の場合 BoxウェブアプリでファイルIDを確認するには、ブラウザでファイルのプレビューに移動し、URLを確認します。たとえば、`https://app.box.com/file/1234567890`のファイルIDは`1234567890`です。 BoxウェブアプリでフォルダIDを確認するには、フォルダに移動し、URLを確認します。たとえば、`https://app.box.com/folder/9876543210`のフォルダIDは`9876543210`です。 APIを使用してコンテンツIDを確認するには、まず、[フォルダ内の項目のリストを取得](e://get-folders-id-items)エンドポイントの`folder_id`として`0`を渡すことで、[すべてのファイル] レベルの全項目のリストを取得します。 ### 管理者の場合 [コンテンツマネージャ](https://support.box.com/hc/ja/articles/360044197333-%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%83%9E%E3%83%8D%E3%83%BC%E3%82%B8%E3%83%A3%E3%81%AE%E4%BD%BF%E7%94%A8)にアクセスできる場合は、ユーザーリストで当該ユーザーをクリックしてから、コンテンツに移動します。URLにフォルダ/ファイルIDが示されます。たとえば、`https://app.box.com/master/content/1987212562/88560510648/0/532181212706`の場合、ユーザーIDは`1987212562`、フォルダIDは`88560510648`、そのフォルダ内のファイルIDは`532181212706`です。 **Source:** [https://ja.developer.box.com/platform/appendix/locating-values/](https://ja.developer.box.com/platform/appendix/locating-values/) --- ### 付録 **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform … # 付録 このセクションでは、入門者向けのその他の資料を紹介します。最初から知っておかなければならないというわけではありませんが、問題が発生した場合に解決策を特定するのに役立ちます。 - [ユーザーモデル](page://platform/appendix/user-models): このページでは、このシリーズで前述したユーザータイプの使用方法について説明します。 - [アーキテクチャパターン](page://platform/appendix/architecture-patterns): このページでは、よく目にするインフラストラクチャのパターンについて説明します。 - [一般的な値の確認](page://platform/appendix/locating-values): このページでは、ユーザーIDなどの情報を確認する方法について説明します。 - [ブランディングガイドライン](page://platform/appendix/branding-guidelines): このページでは、プロジェクトにBoxブランドを使用する予定の場合のさまざまな注意事項を示しています。 **Source:** [https://ja.developer.box.com/platform/appendix/](https://ja.developer.box.com/platform/appendix/) --- ### 認証方法 **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform 認証方法 Boxには、アプリケーション開発のためのさまざまな認証方法が用意されており、それぞれが異なるユースケースやアプリケーションの種類に対応しています。使用する認証方法に関係なく、基本的な原則が適用されます。ユーザーは、メインのBox… # 認証方法 Boxには、アプリケーション開発のためのさまざまな認証方法が用意されており、それぞれが異なるユースケースやアプリケーションの種類に対応しています。使用する認証方法に関係なく、基本的な原則が適用されます。ユーザーは、メインのBoxウェブアプリのフロントエンドでコンテンツにアクセスできない場合、別のユーザーになりすまさない限り、APIを使用してコンテンツにアクセスすることはできません。APIエンドポイントの中には、イベントなど、管理者レベルの権限が必要なものもあります。 各種Boxアプリケーションでは、以下の承認方法を使用できます。 | Boxアプリケーションの種類 | OAuth 2.0をサポートしますか? | JWTは? | クライアント資格情報は? | アプリトークンは? | | --- | --- | --- | --- | --- | | Platformアプリ | はい | はい | はい | いいえ | | アクセス制限付きアプリ | いいえ | はい | いいえ | はい | | カスタムスキル | いいえ | いいえ | いいえ | いいえ | ## OAuth 2.0 [OAuth 2.0](g://authentication/oauth2)はクライアント側の認証方法で、そのシンプルさからBox APIに対するユーザーの承認で広く使われています。これはオープンスタンダードであり、ユーザーはアプリケーションに対して他のアプリケーション内の自分のデータへのアクセスを許可できるようになります。Boxのクライアント側認証では、Twitter、Facebook、Googleを使用してウェブサイトにログインする仕組みと同様に、ユーザーはアプリからBoxウェブアプリにリダイレクトされるので、そこでログインしてアプリに自分のデータへのアクセスを許可します。たとえば、Boxではコミュニティフォーラムにログインするユーザーに対してこの認証タイプを使用します。 # OAuth 2.0はいつ使用すべきですか? クライアント側認証は、以下に当てはまるアプリに最適な認証方法です。 - 既存のBoxアカウントを持っているユーザーと連携する - ユーザーがBoxを使用していることを認識できるように、ID管理にBoxを使用する - アプリケーションのサービスアカウントではなく各ユーザーアカウント内にデータを保存する Python OAuth 2.0に関する有用なチュートリアルについては、[GitHub](https://github.com/box-community/box-python-oauth-template)を参照してください。 ## JSONウェブトークン (JWT) JSONウェブトークン (JWT) は、Box APIの最も一般的なサーバー側認証方法です。[JWT](g://authentication/jwt)はオープンスタンダードであり、堅牢なサーバー間認証を実現します。この方法は、Platformアプリのみに限定されており、エンドユーザーによる操作は必要ありません。適切な権限が付与されているアプリは、企業内の任意のユーザーの代理として操作できるため、強力でシームレスな統合が促進されます。管理者が承認すると、JWTアプリケーションには、デフォルトで、APIコールを行うサービスアカウントが割り当てられます。 # JWTはいつ使用すべきですか? JWTを使用するサーバー側認証は、以下に当てはまるアプリに最適な認証方法です。 - Boxアカウントを持たないユーザーと連携する - 独自のIDシステムを使用する - Boxを使用していることをユーザーに認識させたくない - ユーザーのアカウントではなくアプリケーションのサービスアカウント内にデータを保存する - 公開キーと秘密キーのペアを管理したい Node JWTに関する有用なチュートリアルについては、[Medium](https://medium.com/box-developer-japan-blog/jwt%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9Fbox-node-js-sdk%E3%81%AE%E8%AA%8D%E8%A8%BC-e3496d610f59)を参照してください。 ## クライアント資格情報許可 (CCG) [クライアント資格情報許可](g://authentication/client-credentials)のアプローチは、サーバー認証に使用され、クライアントIDとシークレットを使用してアプリケーションのIDを検証します。これは、アクセストークンを取得する際にアプリケーションを識別するための安全な方法です。この方法は、ユーザーの関与なしにサーバー間でやり取りする必要があるシナリオで特に便利です。アプリケーションの構成に応じて、アプリケーションのサービスアカウントまたは管理対象ユーザーとして認証できます。管理者が承認すると、CCGアプリケーションには、デフォルトで、APIコールを行うサービスアカウントが割り当てられます。 # CCGを使用する場合 JWTを使用するサーバー側認証は、以下に当てはまるアプリに最適な認証方法です。 - Boxアカウントを持たないユーザーと連携する - 独自のIDシステムを使用する - Boxを使用していることをユーザーに認識させたくない - ユーザーのアカウントではなくアプリケーションのサービスアカウント内にデータを保存する - 公開キーと秘密キーのペアを管理したくない Python CCGに関する有用なチュートリアルについては、[Medium](https://medium.com/box-developer-japan-blog/box-python%E3%81%AE%E6%AC%A1%E4%B8%96%E4%BB%A3sdk-ccg%E3%81%AE%E4%BD%BF%E7%94%A8-1c7cff13c24d)を参照してください。 ## アプリトークン認証 [アプリトークン認証](g://authentication/app-token)はもう1つのサーバー側認証オプションで、アプリケーションのサービスアカウントに制限されている、有効期間の長い固定のアクセストークンを使用します。この方法は、Box Viewを利用しているアプリケーションに最適で、アプリにそれ自体のアカウントに対するデータの読み取りと書き込みのアクセス権限だけを必要とするシナリオ向けに設計されています。アプリトークン認証を使用すると、アプリケーションは関連付けられているサービスアカウントとして自動的に認証されるため、エンドユーザーによる承認は必要ありません。また、これはAPI[エンドポイント](g://authentication/app-token/endpoints)のサブセットに制限されます。 # アプリトークン認証を使用する場合 アプリトークンを使用するサーバー側認証は、以下に当てはまるアプリに最適な認証方法です。 - ユーザーモデルがない環境、またはBoxアカウントを持たないユーザーがいる環境で使用する - 独自のID管理システムを使用する - Boxを使用していることをユーザーに認識させたくない - ユーザーのアカウントではなくアプリケーションのサービスアカウント内にデータを保存する ## Box Skills [Box Skills](g://skills/handle/payload/#access-tokens)は、Boxにアップロードされたファイルのカスタマイズした処理に使用される独自の種類のアプリケーションです。サードパーティの機械学習サービスを使用してファイルから情報を抽出し、それをメタデータとして適用します。カスタムスキルの認証は、各スキルイベントに備わっている事前承認済みのAPI資格情報によって簡素化されていますが、APIアクセスには制限があります。カスタムスキルでは特定の認証タイプを選択する必要がなく、シンプルさとBoxの機能との直接統合に重点が置かれています。 # Box Skillsを使用する場合 Box Skillsを使用するWebhookベースの認証は、以下に当てはまるアプリに最適な認証方法です。 - サードパーティの機械学習環境で使用する - Boxを使用していることをできるだけユーザーに認識させたい - 他のプロセスと連携して最終目標を達成する - Box Skillをトリガーするファイルだけを処理する Box Skillsに関する有用なチュートリアル (英語) については、[Medium](https://medium.com/box-developer-blog/box-skills-ibm-watson-speech-to-text-tutorial-b7e3b3c0a8c7)を参照してください。 ## スコープ 開発者コンソールでアプリケーションが作成されると、ユーザーはアプリケーションのスコープを設定する必要があります。ユーザーにBox内のファイルやフォルダへのアクセス権限が付与されるしくみと同様、アプリケーションにも、BoxユーザーやBoxを使用する企業に代わって特定のアクションを実行するための独自の権限が付与されます。アプリケーションに対する権限セットの名前を「スコープ」と言います。つまり、アプリケーションのスコープにより、アプリケーションから呼び出すことのできる[エンドポイント](page://reference)が決まります。また、このスコープは、アプリケーションの[アクセストークン](g://authentication/tokens)が提供するアクセス権限に反映されます。 ### ユーザー権限とスコープ アクションを実行するための適切なスコープがアプリケーションに設定されている場合でも、アクセストークンと関連付けられた、呼び出しを実行するユーザーにはそのアクションを実行するための権限が必要であり、逆の場合も同様であることを理解することが重要です。 たとえば、ファイルを読み取るようにアプリケーションが設定されている場合、アクセスしようとするファイルの読み取り権限が認証済みユーザーにも必要です。 スコープ、トークンの権限、ユーザー権限がどのように連携しているかの詳細については、Boxの[セキュリティガイド](g://security)を参照してください。 次の手順 **Source:** [https://ja.developer.box.com/platform/authentication-methods/](https://ja.developer.box.com/platform/authentication-methods/) --- ### 開発の開始 **Type:** page | **Category:** Box Platformについて | **Section:** Box Platform 開発の開始 ここまでBox Platformのさまざまな構成要素について詳しく学んできました。これでいよいよ開発を開始できます。Box… # 開発の開始 ここまでBox Platformのさまざまな構成要素について詳しく学んできました。これでいよいよ開発を開始できます。[Box開発者コンソール](https://cloud.app.box.com/developers/console)にアクセスして着手しましょう。 その他のトピックをお探しの場合は、ぜひ以下を確認してください。 - [アーキテクチャパターン](page://platform/appendix/architecture-patterns): このページでは、よく目にするインフラストラクチャのパターンについて説明します。 - [ユーザーモデル](page://platform/appendix/user-models): このページでは、このシリーズで前述したユーザータイプの使用方法について説明します。 - [一般的な値の確認](page://platform/appendix/locating-values): このページでは、ユーザーIDなどの情報を確認する方法について説明します。 - [エラー](g://api-calls/permissions-and-errors/common-errors): このページでは、表示される可能性のあるすべてのエラーコードを列挙しています。 **Source:** [https://ja.developer.box.com/platform/start-creating/](https://ja.developer.box.com/platform/start-creating/) --- ## Developer Guides ### .NET SDKのインストール **Type:** guide | **Category:** ツール | **Section:** Developer Guides .NET SDKのインストール .NETプロジェクトでは、Box .NET SDKを使用してBox APIを呼び出すことができます。 バージョン5.8.0までのSDKは、.NET Framework 4.5以上および.NET Core 1.… # .NET SDKのインストール .NETプロジェクトでは、Box .NET SDKを使用してBox APIを呼び出すことができます。 バージョン`5.8.0`までのSDKは、.NET Framework `4.5`以上および.NET Core `1.0`以上の両方で利用できます。バージョン`10.0.0`以降のSDKは、.NET Framework `4.6.2`以上および.NET `8.0`以上の両方で利用できます。SDKのインストール方法は、使用しているフレームワークによって異なります。 GitHubで.NET SDKの詳細を確認する ## .NET Framework .NET Frameworkに.NET SDKをインストールするには、[Nuget](https://www.nuget.org/)パッケージマネージャを使用して以下のコマンドを実行します。 ``` PM> Install-Package Box.V2.Core ``` ## .NET Core .NET Coreフレームワークに.NET SDKをインストールするには、[Nuget](https://www.nuget.org/)パッケージマネージャを使用して以下のコマンドを実行します。 ``` PM> Install-Package Box.V2.Core ``` **Source:** [https://ja.developer.box.com/guides/tooling/sdks/dotnet/](https://ja.developer.box.com/guides/tooling/sdks/dotnet/) --- ### AI Studioエージェント **Type:** guide | **Category:** Box AI Studio | **Section:** Developer Guides AI Studioエージェント Box AI Studioは、Enterprise Advancedアカウントでのみ使用できます。 カスタムAIエージェントの作成、リスト取得、更新、削除を行います。 # AI Studioエージェント Box AI Studioは、Enterprise Advancedアカウントでのみ使用できます。 カスタムAIエージェントの作成、リスト取得、更新、削除を行います。 **Source:** [https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/](https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/) --- ### AI Studioの使い方 **Type:** guide | **Category:** Box AI Studio | **Section:** Developer Guides AI Studioの使い方 Box AI Studioは、Enterprise Advancedアカウントでのみ使用できます。 AI StudioでカスタムAIエージェントの作成を開始するには、Box AIスコープが有効になっているPlatform… # AI Studioの使い方 Box AI Studioは、Enterprise Advancedアカウントでのみ使用できます。 AI StudioでカスタムAIエージェントの作成を開始するには、Box AIスコープが有効になっているPlatformアプリケーションと、コールを認証するための開発者トークンが必要です。 ## Platformアプリケーションの作成 まず、コールの実行に使用するPlatformアプリケーションを作成する必要があります。アプリケーションを作成するには、[Platformアプリの作成](g://applications/app-types/platform-apps)に関するガイドに従ってください。 ## Box AI Studioの有効化 Box AI Studioを使用するには、Box管理者が管理コンソールで有効にしていることを確認してください。Box管理者は、[Box AI Studioの有効化とエージェントの管理](https://support.box.com/hc/en-us/articles/37228079461267-Enabling-Box-AI-Studio-and-Managing-Agents/#h_01JH9HAMP43YYN6VWM51QCK413)で必要な情報を確認できます。 Box AI APIを操作するには、アプリケーションに`ai.readwrite`[スコープ](g://api-calls/permissions-and-errors/scopes)を追加する必要があります。このスコープを追加する前に、Box管理者からBox AI APIへのアクセス権限が付与されていることを確認してください。アプリの構成設定で [**AIを管理する**] オプションが表示されていない場合は、管理者までお問い合わせください。 スコープを追加するには、以下の手順を実行します。 開発者コンソールで、目的のアプリケーションを開きます。 [**構成**] > [**必須のアクセススコープ**] > [**コンテンツ操作**] に移動します。 [**AIを管理する**] スコープを選択します。Box Platformでは、コールを実行すると自動的にこのスコープが含まれます。あるアプリのコラボレータとして追加されているのにBox AI APIにアクセスできない場合は、[**AIを管理する**] スコープのチェックボックスがオンになった状態で、グレー表示になっています。つまり、アプリの所有者のAIのスコープは有効になっていますが、この設定を変更することはできません。 [承認または有効化](g://authorization)のためにアプリを送信します。既存のアプリケーションに対してBox AI APIを有効にする場合は、アプリケーションを[再承認](g://authorization/platform-app-approval#re-authorization-on-changes)する必要があります。 ## 開発者トークンの生成 リクエストの送信時にアプリを認証するには、開発者トークンが必要です。 トークンを生成するには、以下の手順を実行します。 1. [**開発者コンソール**] > [**Platformアプリ**] に移動します。 2. 右側の**オプションメニュー**ボタン ([…]) をクリックします。 3. [**開発者トークンを生成**] を選択します。トークンが自動的に生成され、クリップボードに保存されます。 アプリを開いて、[**構成**] > [**開発者トークン**] に移動してトークンを生成することもできます。 開発者トークンの有効期限は1時間のみです。 詳細については、[開発者トークン](g://authentication/tokens/developer-tokens)を参照してください。トークンを生成したら、cURLや他のクライアント ([Postman](g://tooling/postman)など) で使用してコールを実行できます。 **Source:** [https://ja.developer.box.com/guides/ai-studio/getting-started-ai-studio/](https://ja.developer.box.com/guides/ai-studio/getting-started-ai-studio/) --- ### AIエージェントのデフォルト構成を取得する **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AIエージェントのデフォルト構成を取得する GET /2.0/ai_agent_defaultエンドポイントを使用すると、AIサービスのデフォルト構成を取得できます。構成の詳細を取得したら、ai_agent… # AIエージェントのデフォルト構成を取得する `GET /2.0/ai_agent_default`エンドポイントを使用すると、AIサービスのデフォルト構成を取得できます。構成の詳細を取得したら、[`ai_agent`](g://box-ai/ai-agents/ai-agent-overrides)パラメータを使用して構成を上書きできます。 ## リクエストの送信 リクエストを送信するには、`GET /2.0/ai_agent_default`エンドポイントを使用します。 アプリを承認するための開発者トークンを生成済みであることを確認します。詳細については、[Box AIの使い方](g://box-ai/ai-tutorials/prerequisites)を参照してください。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 | パラメータ | 説明 | 例 | | --- | --- | --- | | language | 返されるエージェントの構成の言語コード。その言語がサポートされていない場合は、デフォルト構成が返されます。 | ja-JP | | mode | エージェントの構成にフィルタをかけるためのモード。値は、取得したい結果に応じて、ask、text_gen、extract、またはextract_structuredにします。 | ask | | model | 構成を取得する対象となるモデル。選択したモデルがサポートされていることを確認するには、モデルのリストを参照してください。 | azure__openai__gpt_4o_mini | ## レスポンス コールに対するレスポンスは、選択した`mode`パラメータ値によって異なる場合があります。 `mode`パラメータを`ask`に設定すると、レスポンスは次のようになります。 ``` { "type": "ai_agent_ask", "basic_text": { "model": "azure__openai__gpt_4o_mini", "system_message": "", "prompt_template": "prompt_template": "{user_question}Write it in an informal way.{content}" }, "num_tokens_for_completion": 6000, "llm_endpoint_params": { "temperature": 0, "top_p": 1, "frequency_penalty": 0, "presence_penalty": 1.5, "stop": "<|im_end|>", "type": "openai_params" } }, "long_text": { "model": "azure__openai__gpt_4o_mini", "system_message": "", "prompt_template": "prompt_template": "{user_question}Write it in an informal way.{content}" }, "num_tokens_for_completion": 6000, "llm_endpoint_params": { "temperature": 0, "top_p": 1, "frequency_penalty": 0, "presence_penalty": 1.5, "stop": "<|im_end|>", "type": "openai_params" }, "embeddings": { "model": "azure__openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 64 } } }, "basic_text_multi": { "model": "azure__openai__gpt_4o_mini", "system_message": "", "prompt_template": "Current date: {current_date}\n\nTEXT FROM DOCUMENTS STARTS\n{content}\nTEXT FROM DOCUMENTS ENDS\n\nHere is how I need help from you: {user_question}\n.", "num_tokens_for_completion": 6000, "llm_endpoint_params": { "temperature": 0, "top_p": 1, "frequency_penalty": 0, "presence_penalty": 1.5, "stop": "<|im_end|>", "type": "openai_params" } }, "long_text_multi": { "model": "azure__openai__gpt_4o_mini", "system_message": "Role and Goal: You are an assistant designed to analyze and answer a question based on provided snippets from multiple documents, which can include business-oriented documents like docs, presentations, PDFs, etc. The assistant will respond concisely, using only the information from the provided documents.\n\nConstraints: The assistant should avoid engaging in chatty or extensive conversational interactions and focus on providing direct answers. It should also avoid making assumptions or inferences not supported by the provided document snippets.\n\nGuidelines: When answering, the assistant should consider the file's name and path to assess relevance to the question. In cases of conflicting information from multiple documents, it should list the different answers with citations. For summarization or comparison tasks, it should concisely answer with the key points. It should also consider the current date to be the date given.\n\nPersonalization: The assistant's tone should be formal and to-the-point, suitable for handling business-related documents and queries.\n", "prompt_template": "Current date: {current_date}\n\nTEXT FROM DOCUMENTS STARTS\n{content}\nTEXT FROM DOCUMENTS ENDS\n\nHere is how I need help from you: {user_question}\n.", "num_tokens_for_completion": 6000, "llm_endpoint_params": { "temperature": 0, "top_p": 1, "frequency_penalty": 0, "presence_penalty": 1.5, "stop": "<|im_end|>", "type": "openai_params" }, "embeddings": { "model": "azure__openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 64 } } } } ``` `mode`パラメータを`text_gen`に設定すると、レスポンスは次のようになります。 ``` { "type": "ai_agent_text_gen", "basic_gen": { "model": "azure__openai__gpt_4o_mini", "system_message": "\nIf you need to know today's date to respond, it is {current_date}.\nThe user is working in a collaborative document creation editor called Box Notes.\nAssume that you are helping a business user create documents or to help the user revise existing text.\nYou can help the user in creating templates to be reused or update existing documents, you can respond with text that the user can use to place in the document that the user is editing.\nIf the user simply asks to \"improve\" the text, then simplify the language and remove jargon, unless the user specifies otherwise.\nDo not open with a preamble to the response, just respond.\n", "prompt_template": "{user_question}", "num_tokens_for_completion": 12000, "llm_endpoint_params": { "temperature": 0.1, "top_p": 1, "frequency_penalty": 0.75, "presence_penalty": 0.75, "stop": "<|im_end|>", "type": "openai_params" }, "embeddings": { "model": "azure__openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 64 } }, "content_template": "`````{content}`````" } } ``` `mode`パラメータを`extract`に設定すると、レスポンスは次のようになります。 ``` { "type": "ai_agent_extract", "basic_text": { "model": "google__gemini_1_5_flash_001", "system_message": "Respond only in valid json. You are extracting metadata that is name, value pairs from a document. Only output the metadata in valid json form, as {\"name1\":\"value1\",\"name2\":\"value2\"} and nothing else. You will be given the document data and the schema for the metadata, that defines the name, description and type of each of the fields you will be extracting. Schema is of the form {\"fields\": [{\"key\": \"key_name\", \"displayName\": \"key display name\", \"type\": \"string\", \"description\": \"key description\"}]}. Leverage key description and key display name to identify where the key and value pairs are in the document. In certain cases, key description can also indicate the instructions to perform on the document to obtain the value. Prompt will be in the form of Schema is ``schema`` \n document is````document````", "prompt_template": "If you need to know today's date to respond, it is {current_date}. Schema is ``{user_question}`` \n document is````{content}````", "num_tokens_for_completion": 4096, "llm_endpoint_params": { "temperature": 0, "top_p": 1, "top_k": null, "type": "google_params" } }, "long_text": { "model": "google__gemini_1_5_flash_001", "system_message": "Respond only in valid json. You are extracting metadata that is name, value pairs from a document. Only output the metadata in valid json form, as {\"name1\":\"value1\",\"name2\":\"value2\"} and nothing else. You will be given the document data and the schema for the metadata, that defines the name, description and type of each of the fields you will be extracting. Schema is of the form {\"fields\": [{\"key\": \"key_name\", \"displayName\": \"key display name\", \"type\": \"string\", \"description\": \"key description\"}]}. Leverage key description and key display name to identify where the key and value pairs are in the document. In certain cases, key description can also indicate the instructions to perform on the document to obtain the value. Prompt will be in the form of Schema is ``schema`` \n document is````document````", "prompt_template": "If you need to know today's date to respond, it is {current_date}. Schema is ``{user_question}`` \n document is````{content}````", "num_tokens_for_completion": 4096, "llm_endpoint_params": { "temperature": 0, "top_p": 1, "top_k": null, "type": "google_params" }, "embeddings": { "model": "azure__openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 64 } } } } ``` `mode`パラメータを`extract_structured`に設定すると、レスポンスは次のようになります。 ``` { "type": "ai_agent_extract_structured", "basic_text": { "model": "google__gemini_1_5_flash_001", "system_message": "Respond only in valid json. You are extracting metadata that is name, value pairs from a document. Only output the metadata in valid json form, as {\"name1\":\"value1\",\"name2\":\"value2\"} and nothing else. You will be given the document data and the schema for the metadata, that defines the name, description and type of each of the fields you will be extracting. Schema is of the form {\"fields\": [{\"key\": \"key_name\", \"prompt\": \"prompt to extract the value\", \"type\": \"date\"}]}. Leverage prompt for each key to identify where the key and value pairs are in the document. In certain cases, prompt can also indicate the instructions to perform on the document to obtain the value. Prompt will be in the form of Schema is ``schema`` \n document is````document````", "prompt_template": "If you need to know today's date to respond, it is {current_date}. Schema is ``{user_question}`` \n document is````{content}````", "num_tokens_for_completion": 4096, "llm_endpoint_params": { "temperature": 0, "top_p": 1, "top_k": null, "type": "google_params" } }, "long_text": { "model": "google__gemini_1_5_flash_001", "system_message": "Respond only in valid json. You are extracting metadata that is name, value pairs from a document. Only output the metadata in valid json form, as {\"name1\":\"value1\",\"name2\":\"value2\"} and nothing else. You will be given the document data and the schema for the metadata, that defines the name, description and type of each of the fields you will be extracting. Schema is of the form {\"fields\": [{\"key\": \"key_name\", \"prompt\": \"prompt to extract the value\", \"type\": \"date\"}]}. Leverage prompt for each key to identify where the key and value pairs are in the document. In certain cases, prompt can also indicate the instructions to perform on the document to obtain the value. Prompt will be in the form of Schema is ``schema`` \n document is````document````", "prompt_template": "If you need to know today's date to respond, it is {current_date}. Schema is ``{user_question}`` \n document is````{content}````", "num_tokens_for_completion": 4096, "llm_endpoint_params": { "temperature": 0, "top_p": 1, "top_k": null, "type": "google_params" }, "embeddings": { "model": "google__textembedding_gecko_003", "strategy": { "id": "basic", "num_tokens_per_chunk": 64 } } } } ``` **Source:** [https://ja.developer.box.com/guides/box-ai/ai-agents/get-agent-default-config/](https://ja.developer.box.com/guides/box-ai/ai-agents/get-agent-default-config/) --- ### AIエージェントの削除 **Type:** guide | **Category:** Box AI Studio | **Section:** Developer Guides AIエージェントの削除 DELETE /2.0/ai_agents/{id}エンドポイントを使用すると、IDに基づいてカスタムAIエージェントを削除できます。 リクエストの送信 リクエストを送信するには、DELETE /2.0/ai_agents/{id… # AIエージェントの削除 `DELETE /2.0/ai_agents/{id}`エンドポイントを使用すると、IDに基づいてカスタムAIエージェントを削除できます。 ## リクエストの送信 リクエストを送信するには、`DELETE /2.0/ai_agents/{id}`エンドポイントを使用します。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 | パラメータ | 説明 | 例 | | --- | --- | --- | | agent_id | 削除するエージェントのID。 | 1234 | **Source:** [https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/delete-agents/](https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/delete-agents/) --- ### AIエージェントの更新 **Type:** guide | **Category:** Box AI Studio | **Section:** Developer Guides AIエージェントの更新 PUT /2.0/ai_agents/{id}エンドポイントを使用すると、IDに基づいてカスタムAIエージェントを更新できます。 リクエストの送信 リクエストを送信するには、PUT /2.0/ai_agents/{id… # AIエージェントの更新 `PUT /2.0/ai_agents/{id}`エンドポイントを使用すると、IDに基づいてカスタムAIエージェントを更新できます。 ## リクエストの送信 リクエストを送信するには、`PUT /2.0/ai_agents/{id}`エンドポイントを使用します。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 | パラメータ | 説明 | 例 | | --- | --- | --- | | type | クエリの処理に使用されるエージェントのタイプ。 | ```` | | name | AIエージェントの名前。 | マイAIエージェント | | access_state | AIエージェントの状態。値はenabled、disabledのいずれかです。 | enabled | | icon_reference | AIエージェントのアイコン参照。これは、URL https://cdn01.boxcdn.net/app-assets/aistudio/avatars/<file_name>の形式で指定する必要があります。この場合、file_nameに使用可能な値はlogo_boxAi.png、logo_stamp.png、logo_legal.png、logo_finance.png、logo_config.png、logo_handshake.png、logo_analytics.png、logo_classification.pngです。 | https://cdn01.boxcdn.net/app-assets/aistudio/avatars/logo_analytics.svg | | allowed_entities | 許可するユーザーまたはグループのリスト。 | | | ask | 質問に使用されるAIエージェント。 | ask | | extract | 抽出に使用されるAIエージェント。 | | | text_gen | テキストの生成に使用されるAIエージェント。 | | **Source:** [https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/update-agents/](https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/update-agents/) --- ### AIエージェントの構成のバージョン管理 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AIエージェントの構成のバージョン管理 Boxでは、常に最先端のオプションに対応するため、定期的にデフォルトモデルをエンドポイント全体で更新しています。デフォルトモデルが更新されると、開発者向け変更ログに掲載されます。 AIエージェントの構成のバージョン管理により、開発者はAI… # AIエージェントの構成のバージョン管理 Boxでは、常に最先端のオプションに対応するため、定期的にデフォルトモデルをエンドポイント全体で更新しています。デフォルトモデルが更新されると、開発者向け変更ログに掲載されます。 AIエージェントの構成のバージョン管理により、開発者はAIエージェントのバージョン管理をより詳細に制御できるようになり、レスポンスの一貫性が確保されます。 AIエージェントの構成のバージョン管理には、以下の原則が採用されています。 - 各AIエージェントのスナップショットは、Box側では制御できない要因がない限り、少なくとも12か月間サポートされます。この要因には、大規模言語モデル (LLM) の廃止などがあります。 - AIエージェントのスナップショットは、安定したエージェントバージョンが新しくリリースされない限り、使用できます。 - 新しいスナップショットをテストして移行するために、6か月の猶予期間が設けられています。 ## AIエージェントの構成の履歴 LLMゲートウェイで使用される[デフォルトのエージェント構成](g://box-ai/ai-agents/get-agent-default-config)の値は、可能な限り高品質の回答を得られるように変更されることがよくあります。 使用中の構成への悪影響を避けるために、以下に示すAIエージェントの構成の履歴を使用して[デフォルト構成を上書きする](g://box-ai/ai-agents/ai-agent-overrides)ことができます。 ``` { "ask": { "type": "ai_agent_ask", "longText": { "model": "azure__openai__gpt_4o_mini", "systemMessage": "", "promptTemplate": "Reply as if it's {current_date}.\nI will ask you for help and provide subsections of one document delimited by five backticks (`````) at the beginning and at the end.\nIf I make a reference to \"this\", I am referring to the document I provided between the five backticks. I may ask you a question where the answer is contained within the document. In that case, do your best to answer using only the document, but if you cannot, feel free to mention that you couldn't find an answer in the document, but you have some answer from your general knowledge.\nI may ask you to perform some kind of computation or symbol manipulation such as filtering a list, counting something, summing, averaging, and other aggregation/grouping functions or some combination of them. In these cases, first list the plan of how you plan to perform such a computation, then follow that plan step by step, keeping track of intermediate results, and at the end tell me the final answer.\nI may ask you to enumerate or somehow list people, places, characters, or other important things from the document, if I do so, please only use the document provided to list them.\nTEXT FROM DOCUMENT STARTS\n`````\n{content}\n `````\nTEXT FROM DOCUMENT ENDS\nNever mention five backticks in your response. Unless you are told otherwise, a one paragraph response is sufficient for any requested summarization tasks.\nHere is how I need help from you: {user_question}", "numTokensForCompletion": 6000, "llmEndpointParams": { "type": "openai_params", "temperature": 0.0, "topP": 1.0, "frequencyPenalty": 0.0, "presencePenalty": 1.5, "stop": "<|im_end|> " }, "embeddings": { "model": "azure__openai__text_embedding_ada_002", "strategy": { "id": "basic", "numTokensPerChunk": 64 } } }, "basicText": { "model": "azure__openai__gpt_4o_mini", "systemMessage": "", "promptTemplate": "Reply as if it's {current_date}.\nI will ask you for help and provide the entire text of one document delimited by five backticks (`````) at the beginning and at the end.\nIf I make a reference to \"this\", I am referring to the document I provided between the five backticks. I may ask you a question where the answer is contained within the document. In that case, do your best to answer using only the document, but if you cannot, feel free to mention that you couldn't find an answer in the document, but you have some answer from your general knowledge.\nI may ask you to perform some kind of computation or symbol manipulation such as filtering a list, counting something, summing, averaging, and other aggregation/grouping functions or some combination of them. In these cases, first list the plan of how you plan to perform such a computation, then follow that plan step by step, keeping track of intermediate results, and at the end tell me the final answer.\nI may ask you to enumerate or somehow list people, places, characters, or other important things from the document, if I do so, please only use the document provided to list them.\nTEXT FROM DOCUMENT STARTS\n `````\n{content}\n`````\nTEXT FROM DOCUMENT ENDS\nNever mention five backticks in your response. Unless you are told otherwise, a one paragraph response is sufficient for any requested summarization tasks.\nHere is how I need help from you: {user_question}", "numTokensForCompletion": 6000, "llmEndpointParams": { "type": "openai_params", "temperature": 0.0, "topP": 1.0, "frequencyPenalty": 0.0, "presencePenalty": 1.5, "stop": "<|im_end|>" } }, "longTextMulti": { "model": "azure__openai__gpt_4o_mini", "systemMessage": "Role and Goal: You are an assistant designed to analyze and answer a question based on provided snippets from multiple documents, which can include business-oriented documents like docs, presentations, PDFs, etc. The assistant will respond concisely, using only the information from the provided documents.\n\nConstraints: The assistant should avoid engaging in chatty or extensive conversational interactions and focus on providing direct answers. It should also avoid making assumptions or inferences not supported by the provided document snippets.\n\nGuidelines: When answering, the assistant should consider the file's name and path to assess relevance to the question. In cases of conflicting information from multiple documents, it should list the different answers with citations. For summarization or comparison tasks, it should concisely answer with the key points. It should also consider the current date to be the date given.\n\nPersonalization: The assistant's tone should be formal and to-the-point, suitable for handling business-related documents and queries.\n", "promptTemplate": "Current date: {current_date}\n\nTEXT FROM DOCUMENTS STARTS\n{content}\nTEXT FROM DOCUMENTS ENDS\n\nHere is how I need help from you: {user_question}\n.", "numTokensForCompletion": 6000, "llmEndpointParams": { "type": "openai_params", "temperature": 0.0, "topP": 1.0, "frequencyPenalty": 0.0, "presencePenalty": 1.5, "stop": "<|im_end|>" }, "embeddings": { "model": "azure__openai__text_embedding_ada_002", "strategy": { "id": "basic", "numTokensPerChunk": 64 } } }, "basicTextMulti": { "model": "azure__openai__gpt_4o_mini", "systemMessage": "", "promptTemplate": "Current date: {current_date}\n\nTEXT FROM DOCUMENTS STARTS\n{content}\nTEXT FROM DOCUMENTS ENDS\n\nHere is how I need help from you: {user_question}\n.", "numTokensForCompletion": 6000, "llmEndpointParams": { "type": "openai_params", "temperature": 0.0, "topP": 1.0, "frequencyPenalty": 0.0, "presencePenalty": 1.5, "stop": "<|im_end|>" } }, }, "extract": { "type": "ai_agent_extract", "longText": { "model": "google__gemini_1_5_flash_001", "systemMessage": "Respond only in valid json. You are extracting metadata that is name, value pairs from a document. Only output the metadata in valid json form, as {\"name1\":\"value1\",\"name2\":\"value2\"} and nothing else. You will be given the document data and the schema for the metadata, that defines the name, description and type of each of the fields you will be extracting. Schema is of the form {\"fields\": [{\"key\": \"key_name\", \"displayName\": \"key display name\", \"type\": \"string\", \"description\": \"key description\"}]}. Leverage key description and key display name to identify where the key and value pairs are in the document. In certain cases, key description can also indicate the instructions to perform on the document to obtain the value. Prompt will be in the form of Schema is ``schema`` \n document is````document````", "promptTemplate": "If you need to know today's date to respond, it is {current_date}. Schema is ``{user_question}`` \n document is````{content}````", "numTokensForCompletion": 4096, "llmEndpointParams": { "type": "google_params", "temperature": 0.0, "topP": 1.0, "frequencyPenalty": 0.0, "presencePenalty": 0.0 }, "embeddings": { "model": "azure__openai__text_embedding_ada_002", "strategy": { "id": "basic", "numTokensPerChunk": 64 } } }, "basicText": { "model": "google__gemini_1_5_flash_001", "systemMessage": "Respond only in valid json. You are extracting metadata that is name, value pairs from a document. Only output the metadata in valid json form, as {\"name1\":\"value1\",\"name2\":\"value2\"} and nothing else. You will be given the document data and the schema for the metadata, that defines the name, description and type of each of the fields you will be extracting. Schema is of the form {\"fields\": [{\"key\": \"key_name\", \"displayName\": \"key display name\", \"type\": \"string\", \"description\": \"key description\"}]}. Leverage key description and key display name to identify where the key and value pairs are in the document. In certain cases, key description can also indicate the instructions to perform on the document to obtain the value. Prompt will be in the form of Schema is ``schema`` \n document is````document````", "promptTemplate": "If you need to know today's date to respond, it is {current_date}. Schema is ``{user_question}`` \n document is````{content}````", "numTokensForCompletion": 4096, "llmEndpointParams": { "type": "google_params", "temperature": 0.0, "topP": 1.0, "frequencyPenalty": 0.0, "presencePenalty": 0.0 } } }, "textGen": { "type": "ai_agent_text_gen", "basicGen": { "model": "azure__openai__gpt_4o_mini", "systemMessage": "\nIf you need to know today's date to respond, it is {current_date}.\nThe user is working in a collaborative document creation editor called Box Notes.\nAssume that you are helping a business user create documents or to help the user revise existing text.\nYou can help the user in creating templates to be reused or update existing documents, you can respond with text that the user can use to place in the document that the user is editing.\nIf the user simply asks to \"improve\" the text, then simplify the language and remove jargon, unless the user specifies otherwise.\nDo not open with a preamble to the response, just respond.\n", "promptTemplate": "{user_question}", "numTokensForCompletion": 12000, "llmEndpointParams": { "type": "openai_params", "temperature": 0.1, "topP": 1.0, "frequencyPenalty": 0.75, "presencePenalty": 0.75, "stop": "<|im_end|>" }, "embeddings": { "model": "azure__openai__text_embedding_ada_002", "strategy": { "id": "basic", "numTokensPerChunk": 64 } }, "contentTemplate": "`````{content}`````" } }, "extractStructured": { "type": "ai_agent_extract_structured", "longText": { "model": "google__gemini_1_5_flash_001", "systemMessage": "Respond only in valid json. You are extracting metadata that is name, value pairs from a document. Only output the metadata in valid json form, as {\"name1\":\"value1\",\"name2\":\"value2\"} and nothing else. You will be given the document data and the schema for the metadata, that defines the name, description and type of each of the fields you will be extracting. Schema is of the form {\"fields\": [{\"key\": \"key_name\", \"prompt\": \"prompt to extract the value\", \"type\": \"date\"}]}. Leverage prompt for each key to identify where the key and value pairs are in the document. In certain cases, prompt can also indicate the instructions to perform on the document to obtain the value. Prompt will be in the form of Schema is ``schema`` \n document is````document````", "promptTemplate": "If you need to know today's date to respond, it is {current_date}. Schema is ``{user_question}`` \n document is````{content}````", "numTokensForCompletion": 4096, "llmEndpointParams": { "type": "google_params", "temperature": 0.0, "topP": 1.0, "frequencyPenalty": 0.0, "presencePenalty": 0.0 }, "embeddings": { "model": "google__textembedding_gecko_003", "strategy": { "id": "basic", "numTokensPerChunk": 64 } } }, "basicText": { "model": "google__gemini_1_5_flash_001", "systemMessage": "Respond only in valid json. You are extracting metadata that is name, value pairs from a document. Only output the metadata in valid json form, as {\"name1\":\"value1\",\"name2\":\"value2\"} and nothing else. You will be given the document data and the schema for the metadata, that defines the name, description and type of each of the fields you will be extracting. Schema is of the form {\"fields\": [{\"key\": \"key_name\", \"prompt\": \"prompt to extract the value\", \"type\": \"date\"}]}. Leverage prompt for each key to identify where the key and value pairs are in the document. In certain cases, prompt can also indicate the instructions to perform on the document to obtain the value. Prompt will be in the form of Schema is ``schema`` \n document is````document````", "promptTemplate": "If you need to know today's date to respond, it is {current_date}. Schema is ``{user_question}`` \n document is````{content}````", "numTokensForCompletion": 4096, "llmEndpointParams": { "type": "google_params", "temperature": 0.0, "topP": 1.0, "frequencyPenalty": 0.0, "presencePenalty": 0.0 } } } } ``` **Source:** [https://ja.developer.box.com/guides/box-ai/ai-agents/ai-agent-versioning/](https://ja.developer.box.com/guides/box-ai/ai-agents/ai-agent-versioning/) --- ### AIモデルの上書き **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AIモデルの上書き Boxでは、常に最先端のオプションに対応するため、定期的にデフォルトモデルをエンドポイント全体で更新しています。 Box AI… # AIモデルの上書き Boxでは、常に最先端のオプションに対応するため、定期的にデフォルトモデルをエンドポイント全体で更新しています。 Box AIに基づいた実装の場合、新しいデフォルトモデルによって、ダウンストリームプロセスを中断または変更するように結果が変更される可能性があります。特定のバージョンに切り替えることで、問題の発生を防止できる場合があります。 また、特定のモデルを選択すると、ユースケースに対してより適切な結果が得られる場合もあります。このような理由で、[サポートされているモデル](g://box-ai/ai-models)のリストに含まれる任意のモデルに切り替えることが可能です。 モデルの切り替えとは別に、オプションを渡すことで、Box AIの実装で使用されるエージェントをさらにカスタマイズし、ユースケースに合ったレスポンスを取得することもできます。 具体的なユースケースを確認するには、[上書きに関するチュートリアル](g://box-ai/ai-agents/ai-agent-overrides)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-agents/](https://ja.developer.box.com/guides/box-ai/ai-agents/) --- ### AIモデルの構成の上書き **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AIモデルの構成の上書き ai_agent構成を使用すると、デフォルトのAIモデルの構成を上書きできます。これは、以下のエンドポイントで使用できます。 POST ai/ask POST ai/text_gen POST ai/extract POST ai/extract… # AIモデルの構成の上書き `ai_agent`構成を使用すると、デフォルトのAIモデルの構成を上書きできます。これは、以下のエンドポイントで使用できます。 - [`POST ai/ask`](e://post_ai_ask#param_ai_agent) - [`POST ai/text_gen`](e://post_ai_text_gen#param_ai_agent) - [`POST ai/extract`](e://post_ai_extract#param_ai_agent) - [`POST ai/extract_structured`](e://post_ai_extract_structured#param_ai_agent) デフォルト構成を取得するには、[`GET ai_agent_default`](e://get_ai_agent_default)エンドポイントを使用してください。 上書きの例を以下に示します。 - 組織のニーズに基づいて、デフォルトのAIモデルをカスタムのAIモデルに置き換える。 - ベースとなる`prompt`を微調整し、よりカスタマイズされたユーザーエクスペリエンスを実現する。 - `temperature`などのパラメータを変更して、結果の創造性を調整する。 ## 構成のサンプル `ai/ask`の場合の構成全体は以下のとおりです。 ``` { "type": "ai_agent_ask", "basic_text": { "llm_endpoint_params": { "type": "openai_params", "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>", "temperature": 0, "top_p": 1 }, "model": "azure__openai__gpt_4o_mini", "num_tokens_for_completion": 8400, "prompt_template": "It is `{current_date}`, consider these travel options `{content}` and answer the `{user_question}`.", "system_message": "You are a helpful travel assistant specialized in budget travel" }, "basic_text_multi": { "llm_endpoint_params": { "type": "openai_params", "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>", "temperature": 0, "top_p": 1 }, "model": "azure__openai__gpt_4o_mini", "num_tokens_for_completion": 8400, "prompt_template": "It is `{current_date}`, consider these travel options `{content}` and answer the `{user_question}`.", "system_message": "You are a helpful travel assistant specialized in budget travel" }, "long_text": { "embeddings": { "model": "openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 64 } }, "llm_endpoint_params": { "type": "openai_params", "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>", "temperature": 0, "top_p": 1 }, "model": "azure__openai__gpt_4o_mini", "num_tokens_for_completion": 8400, "prompt_template": "It is `{current_date}`, consider these travel options `{content}` and answer the `{user_question}`.", "system_message": "You are a helpful travel assistant specialized in budget travel" }, "long_text_multi": { "embeddings": { "model": "openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 64 } }, "llm_endpoint_params": { "type": "openai_params", "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>", "temperature": 0, "top_p": 1 }, "model": "azure__openai__gpt_4o_mini", "num_tokens_for_completion": 8400, "prompt_template": "It is `{current_date}`, consider these travel options `{content}` and answer the `{user_question}`.", "system_message": "You are a helpful travel assistant specialized in budget travel" } } ``` ### パラメータセットの相違点 `ask`、`text_gen`、`extract`、`extract_structured`に使用できるパラメータのセットは、APIコールに応じて若干異なります。 `ask`エンドポイントのエージェント構成には、`basic_text`、`basic_text_multi`、`long_text`、`long_text_multi`パラメータが含まれます。これは、リクエストの対象となる項目を単一にするか複数にするかを指定するために使用する`mode`パラメータが原因です。`mode`として`multiple_item_qa`を選択した場合は、上書き用に`multi`パラメータも使用できます。 `text_gen`のエージェント構成には、テキストの生成に使用される`basic_gen`パラメータが含まれます。 ### LLMエンドポイントパラメータ `llm_endpoint_params`構成のオプションは、全体的なAIモデルが[Google](r://ai-llm-endpoint-params-google)ベースか、[OpenAI](r://ai-llm-endpoint-params-openai)ベースか、[AWS](r://ai-llm-endpoint-params-aws)ベースかによって異なります。 たとえば、どちらの`llm_endpoint_params`オブジェクトも`temperature`パラメータを受け入れますが、モデルによって結果が異なります。 GoogleモデルとAWSモデルの場合、[`temperature`](https://ai.google.dev/gemini-api/docs/models/generative-models#model-parameters)はレスポンス生成時のサンプリングに使用されます。レスポンス生成は`top-P`と`top-K`が適用された場合に発生します。temperatureは、トークン選択におけるランダム性の程度を制御します。 OpenAIモデルの場合、[`temperature`](https://community.openai.com/t/temperature-top-p-and-top-k-for-chatbot-responses/295542)は、値が0~2の間のサンプリングtemperatureとなります。0.8のような高い値を指定すると、出力がよりランダムになるのに対し、0.2のような低い値を指定すると、出力はより焦点を絞った、決定的なものになります。独自の構成を導入する場合は、`temperature`と`top_p`の両方ではなく、いずれかを使用してください。 ### システムメッセージ `system_message`パラメータの目的は、LLMがその役割と実行するべき内容を理解するのを支援することです。たとえば、旅行日程を処理するソリューションの場合は、次のようなシステムメッセージを追加できます。 ``` You are a travel agent aid. You are going to help support staff process large amounts of schedules, tickets, etc. ``` このメッセージは、送信するコンテンツとは別ですが、結果を改善できます。 ### 完了に必要なトークンの数 `num_tokens_for_completion`パラメータは、Box AIが返すことのできる[トークン](https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them)の数を表します。この数値は、使用されるモデルによって異なる場合があります。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-agents/ai-agent-overrides/](https://ja.developer.box.com/guides/box-ai/ai-agents/ai-agent-overrides/) --- ### AIモデルの構成の上書き **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AIモデルの構成の上書き 開始する前に Platformアプリを作成して認証するには、Box AI… # AIモデルの構成の上書き ## 開始する前に Platformアプリを作成して認証するには、[Box AIの使い方](g://box-ai/ai-tutorials/prerequisites)に記載されている手順に従っていることを確認してください。さらにコンテキストを取得するには、[エージェントの上書き](g://box-ai/ai-agents/ai-agent-overrides)を参照してください。 ## 上書き用のプロンプト この例では、`prompt_template`パラメータを使用してクエリの結果を変更する方法を示します。最初の手順として、Box AIに対し、Box AI for Documentsに関するドキュメントの要約を依頼します。指定されているドキュメントは1つだけなので、`mode`パラメータは`single_item_qa`に設定されています。 ``` curl -i -L POST "https://api.box.com/2.0/ai/ask" \ -H "content-type: application/json" \ -H "authorization: <Bearer TOKEN>" \ -d '{ "mode": "single_item_qa", "prompt": "Summarize this article about Box AI for Documents", "items": [ { "type": "file", "id": "123467890" } ] }' ``` 次のようなレスポンスが返されます。 ``` { "answer": "Box AI for Documents is a tool that enhances document analysis by allowing users to summarize content, identify key points, and draft outlines directly from files in Box. It supports various file types, including text documents, spreadsheets, and presentation slides. Users can initiate interactions with Box AI through the web app, where they can select suggestions or type specific questions. Responses are generated in real time, and users have options to save or clear chat history. The document also provides guidelines for effective inquiries and troubleshooting tips for potential issues with using Box AI.", "created_at": "2024-10-08T00:29:07.283-07:00", "completion_reason": "done" } ``` 結果をさらに改善するには、`prompt_template`パラメータを使用して、Box AIに対する指示をさらに追加できます。この例では、レスポンスの語調を変更しましょう。 ``` { "prompt": "Summarize this article about Box AI for Documents", "mode": "single_item_qa", "items": [ { "id": "123467890", "type": "file" } ], "ai_agent": { "type": "ai_agent_ask", "basic_text": { "prompt_template": "prompt_template": "{user_question} Write the summary in an informal way.{content}" }, } } } ``` レスポンスは若干砕けた表現になります。 ``` { "answer": "Box AI for Documents is a tool that helps you analyze and gain insights from your documents in Box. You can use it to summarize content, identify key points, and draft outlines, making it easier to handle meeting notes, reports, and marketing materials. To get started, just open a file in the Box web app and click the Box AI button. It offers quick suggestions like summarizing the document or checking for next steps. Responses are generated in real time, and you can save them or clear chat history as needed. Just remember, Box AI only pulls info from the document you're viewing, so be specific with your questions!", "created_at": "2024-10-08T00:38:01.767-07:00", "completion_reason": "done" } ``` ## AIモデルの上書き (テキスト生成) この例では、`ai_agent`のオプションでAIモデルを変更した場合にテキストの生成方法にどのような影響があるかを示します。 最初に、`POST ai/text_gen`エンドポイントを使用してテキストを生成しましょう。このエンドポイントは、デフォルトで、OpenAI 3.5 turboモデルを使用しています。 ``` curl -i -L POST "https://api.box.com/2.0/ai/text_gen" \ -H "content-type: application/json" \ -H "authorization: Bearer TOKEN" \ -d '{ "prompt": "Write a short post about Box AI for documents.Make it highlight the benefits of the solution. You can add some emoticons.", "items": [ { "id": "123467890", "type": "file" } ] } ``` レスポンスは次のようになります。 ``` { "answer": "🌟 Exciting News! 🌟\n\nIntroducing Box AI for documents - your new best friend in creating smarter, more efficient content! 🤖💡\n\n🔹 Say goodbye to manual searching and organizing - Box AI does it all for you!\n🔹 Enjoy lightning-fast document analysis and categorization.\n🔹 Boost productivity with automated suggestions and smart recommendations.\n🔹 Collaborate seamlessly with real-time insights and intelligent tagging.\n\nExperience the future of document creation with Box AI - making work easier, faster, and more fun! 🚀💻 #BoxAI #SmartDocuments", "created_at": "2024-10-08T01:19:06.22-07:00", "completion_reason": "done" } ``` `ai_agent`構成を使用してモデルを変更しましょう。 ``` curl -i -L POST "https://api.box.com/2.0/ai/text_gen" \ -H "content-type: application/json" \ -H "authorization: Bearer TOKEN" \ -d '{ "prompt": "Write a short post about Box AI for documents.Make it highlight the benefits of the solution. You can add some emoticons.", "items": [ { "id": "123467890", "type": "file" } ], "ai_agent": { "type": "ai_agent_text_gen", "basic_gen": { "model": "openai__gpt_4o_2024_05_13" } } } ``` モデルを切り替えた後は、レスポンスが若干異なります。 ``` { "answer": "🚀 **Boost Your Productivity with Box AI for Documents!** 📄✨\n\nSay goodbye to tedious document creation and editing! With Box AI, you can streamline your workflow and focus on what truly matters. Here’s why you’ll love it:\n\n1. **Smart Suggestions** 🤖: Get real-time recommendations to enhance your content.\n2. **Automated Formatting** 📝: Ensure consistency across all your documents effortlessly.\n3. **Collaboration Made Easy** 👥: Work seamlessly with your team, no matter where they are.\n4. **Time-Saving Templates** ⏳: Use pre-built templates to speed up document creation.\n5. **Enhanced Accuracy** ✅: Reduce errors with intelligent proofreading.\n\nTransform the way you work with documents and experience a new level of efficiency with Box AI! 🌟", "created_at": "2024-10-08T01:28:36.777-07:00", "completion_reason": "done" } ``` ご覧のとおり、ある程度異なったレスポンスになったことがわかります。モデルの切り替えにより、Box AIに対する操作を最適化し、ニーズに最適なモデルを選択できます。 ## AIモデルの上書き (メタデータ抽出) モデルを切り替えると、メタデータ抽出の結果も異なる場合があります。契約書のサンプルを使用して、メタデータを抽出しましょう。この例で使用されているモデルはGoogle Geminiです。 ``` curl -i -L 'https://api.box.com/2.0/ai/extract' \ -H 'content-type: application/json' \ -H 'authorization: Bearer TOKEN' \ -d '{ "prompt": "Extract any data that would be good metadata to save for future contracts.", "items": [ { "type": "file", "id": "123456789" } ] }' ``` レスポンスは一連のメタデータになります。 ``` { "answer": "{\"Buyer Legal Entity Name\": \"Acme Retail Corp.\", \"Supplier Legal Entity Name\": \"Acme Manufacturing Inc.\", \"Buyer Contact Person\": \"Jane Doe\", \"Supplier Contact Person\": \"Eva Smith\", \"Payment Term\": \"payment in full before pickup of goods\", \"Invoice Currency\": \"Euro\", \"Incoterm\": \"FCA Amsterdam\", \"Governing Law\": \"laws state jurisdiction in which supplier is located\", \"Effective Date\": \"March 27, 2024\", \"Buyer Signature Date\": \"March 28th, 2024\", \"Supplier Signature Date\": \"March 28th, 2024\"}", "created_at": "2024-10-08T01:53:14.993-07:00", "completion_reason": "done" } ``` モデルを最新のOpenAIオプションに変更しましょう。 ``` curl -i -L 'https://api.box.com/2.0/ai/extract' \ -H 'content-type: application/json' \ -H 'authorization: Bearer TOKEN' \ -d '{ "prompt": "Extract any data that would be good metadata to save for future contracts.", "items": [ { "type": "file", "id": "123456789" } ], "ai_agent": { "type": "ai_agent_extract", "basic_text": { "model": "openai__gpt_4o_2024_05_13" } } }' ``` このモデルを使用すると、結果として、レスポンスにはさらに多くのメタデータエントリが列挙されます。 ``` { "answer": "{\"Effective Date\": \"March 27, 2024\", \"Supplier Legal Entity Name\": \"Acme Manufacturing Inc.\", \"Supplier Registered Office Address\": \"123 Main Street\", \"Supplier Contact Person(s)\": \"Eva Smith\", \"Buyer Legal Entity Name\": \"Acme Retail Corp.\", \"Buyer Registered Office Address\": \"456 Market Avenue\", \"Buyer Contact Person(s)\": \"Jane Doe\", \"Incoterm\": \"FCA Amsterdam\", \"Payment Term\": \"payment in full before pickup of goods\", \"Invoice Currency\": \"Euro\", \"Buyer Printed Name\": \"Jane Doe\", \"Buyer Date\": \"March 28th, 2024\", \"Buyer Title / Position\": \"CEO\", \"Seller Printed Name\": \"Eve Smith\", \"Seller Date\": \"March 28th, 2024\", \"Seller Title / Position\": \"Sales Manager\"}", "created_at": "2024-10-08T01:54:28.099-07:00", "completion_reason": "done" } ``` **Source:** [https://ja.developer.box.com/guides/box-ai/ai-tutorials/default-agent-overrides/](https://ja.developer.box.com/guides/box-ai/ai-tutorials/default-agent-overrides/) --- ### Android **Type:** guide | **Category:** モバイル | **Section:** Developer Guides Android Box Android SDKは、Androidプロジェクト内からBox APIへのネイティブアクセスを提供します。 日本時間2023年6月1日をもって、Android SDKのサポートは終了しました。既存のAndroid SDK… # Android [Box Android SDK](https://github.com/box/box-android-sdk)は、Androidプロジェクト内からBox APIへのネイティブアクセスを提供します。 日本時間2023年6月1日をもって、Android SDKのサポートは終了しました。既存のAndroid SDKアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 最新のAndroid機能を引き続きご利用いただくために、Java SDKを使用してAndroid版アプリを作成することをお勧めします。詳細については、[こちら](https://github.com/box/box-java-sdk/blob/main/doc/android.md)のドキュメントを参照してください。 **Source:** [https://ja.developer.box.com/guides/mobile/android/](https://ja.developer.box.com/guides/mobile/android/) --- ### Android SDKのインストール **Type:** guide | **Category:** モバイル | **Section:** Developer Guides Android SDKのインストール 日本時間2023年6月1日をもって、Android SDKのサポートは終了しました。既存のAndroid SDKアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 最新のAndroid… # Android SDKのインストール 日本時間2023年6月1日をもって、Android SDKのサポートは終了しました。既存のAndroid SDKアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 最新のAndroid機能を引き続きご利用いただくために、Java SDKを使用してAndroid版アプリを作成することをお勧めします。詳細については、[こちら](https://github.com/box/box-java-sdk/blob/main/doc/android.md)のドキュメントを参照してください。 Android SDKは、次のように、いくつかの方法で入手できます。 - MavenまたはGradle依存関係として追加する - ソースをプロジェクトに複製する - プリコンパイル済みJARの1つをダウンロードする ## Maven依存関係として追加 以下のMaven依存関係を追加します。 ``` <dependency> <groupId>com.box</groupId> <artifactId>box-android-sdk</artifactId> </dependency> ``` ## Gradle依存関係として追加 `build.gradle`ファイルに以下を追加します。 ``` dependencies { implementation 'com.box:box-android-sdk:4.2.3' } ``` ## ソースの複製 Box Android SDKのソースコードは、[GitHubにあるプロジェクト](https://github.com/box/box-android-sdk/tree/master/box-content-sdk)を複製またはダウンロードすることで入手できます。 ## プリコンパイル済みJARのダウンロード Android SDK用のプリコンパイル済みJARは、GitHubプロジェクトの[リリースに関するページ](https://github.com/box/box-android-sdk/releases)から入手できます。 プリコンパイル済みJARのいずれかが使用されている場合、Android SDKでは依存関係`minimal-json v0.9.1` (Mavenの場合は`com.eclipsesource.minimal-json:minimal-json:0.9.1`) も必要になります。 **Source:** [https://ja.developer.box.com/guides/mobile/android/install/](https://ja.developer.box.com/guides/mobile/android/install/) --- ### APIコール **Type:** guide | **Category:** APIコール | **Section:** Developer Guides APIコール Box APIは、可能であれば共通のHTTP標準に準拠するRESTful APIです。以下のガイドでは、開発者がこれらのAPIを使用する際に利用できる便利な機能と直面するよくある間違いに注目します。 API… # APIコール Box APIは、可能であれば共通のHTTP標準に準拠するRESTful APIです。以下のガイドでは、開発者がこれらのAPIを使用する際に利用できる便利な機能と直面するよくある間違いに注目します。 ## APIコールのインサイト 管理者と共同管理者は、アプリケーションごとにAPIコールの合計数に関する情報が表示される、Platformインサイトのダッシュボードにアクセスできます。 詳細については、[Platformインサイト](https://support.box.com/hc/en-us/articles/20738406915219-Platform-Insights)と[アプリケーション](g://applications)を参照してください。 **Source:** [https://ja.developer.box.com/guides/api-calls/](https://ja.developer.box.com/guides/api-calls/) --- ### APIコールの実行 **Type:** guide | **Category:** ツール | **Section:** Developer Guides APIコールの実行 Box PostmanコレクションがPostmanアプリに読み込まれたら、Postmanアプリがログインユーザーに代わってBox APIへのAPIコールを実行できるようになります。 APIコールを実行するには、Box Postman… # APIコールの実行 **Box Postmanコレクション**が**Postmanアプリ**に読み込まれたら、Postmanアプリがログインユーザーに代わって**Box API**へのAPIコールを実行できるようになります。 APIコールを実行するには、Box Postmanコレクションに有効な`access_token`環境変数が必要です。有効なアクセストークンを使用してPostmanアプリが設定されるように、[クイックスタート](g://tooling/postman/quick-start)ガイドに従うことをお勧めします。 ## APIリクエストの実行 APIリクエストを実行するには、Box Postmanコレクションから**リクエスト**を選択します。この例では、[**Folders (フォルダ)**] フォルダにある [**Get items in folder (フォルダ内の項目を取得)**] APIを使用します。 デフォルトでは、このAPIエンドポイントの`folder_id`は、すべてのユーザーのルートフォルダを表す`0`に設定されています。この値は、そのまま使用することも、調べたいフォルダのフォルダIDに設定することもできます。 次に、右上にある [**Send (送信)**] ボタンをクリックしてAPIリクエストを送信します。 このAPIコールはすぐに制御が戻り、画面の下半分にあるレスポンスの [**Body (本文)**] タブにフォルダ内の項目のリストが表示されます。 # 認証エラー この時点で、Postmanがリストではなくエラーを返す場合があります。これは多くの場合、**アクセストークン**の有効期限が切れていることを意味します。詳細については、[Postmanでのアクセストークンの更新](g://tooling/postman/refresh)に関するガイドを参照してください。 **Source:** [https://ja.developer.box.com/guides/tooling/postman/make-api-call/](https://ja.developer.box.com/guides/tooling/postman/make-api-call/) --- ### APIコールの実行 **Type:** quick-start | **Category:** モバイル | **Section:** Developer Guides APIコールの実行 BoxアプリケーションとiOSアプリケーションがBox iOS SDKを使用して作成、設定されたら、初めてのBox APIコールを実行できるようになります。 空のiOS… # APIコールの実行 BoxアプリケーションとiOSアプリケーションが**Box iOS SDK**を使用して作成、設定されたら、初めてのBox APIコールを実行できるようになります。 空のiOSアプリケーションを使用して、現在認証されているユーザーの名前を取得するためのリクエストをBoxに対してトリガーするボタンを作成します。 これらの例で使用されているブロックアクションを使用した場合、処理は遅くなります。本番アプリでは、これらのブロックアクションを適切なタスク委任アクションやブロック以外のアクションに置き換える必要があります。 ## ボタンの作成 XcodeのSwiftアプリケーション内で、`ContentView.swift`を読み込みます。ファイルの先頭に`ContentView`の`struct`が表示されます。その中には、アプリをエミュレータで実行した場合にiOSアプリケーションに出力される基本の文字列があります。 ``` import SwiftUI struct ContentView: View { var body: some View { Text("Hello, World!") } } ``` 最初に、現在のユーザーを取得するための呼び出しをトリガーできるように、`Text`の出力行をボタンに置き換えます。その行を以下のボタンに置き換えます。 ``` Button(action: { // Perform some action }) { Text("Click to get current user") } .padding(10) .cornerRadius(20) .foregroundColor(.white) .background(Color.blue) ``` 次の手順では、Boxからユーザーの詳細を取得するアクションをボタンに追加します。 ## APIコールのボタンアクションの追加 ユーザーがボタンをクリックしたときに、ユーザーの詳細が取得されるようにします。そのためには、**Box iOS SDK**のインポートを追加することと呼び出しを実行するボタンアクションを追加することという2つの処理が必要です。 `ContentView.swift`ファイルの先頭に、他のimportステートメントとともに`import BoxSDK`を追加します。 次に、現在はコメントのプレースホルダがあるボタンアクション内に、現在のユーザーを取得するためのiOS SDKへの呼び出しを追加します。APIコールが完了すると、開発者コンソールに認証メッセージが出力されます。実装を容易にするため、処理をブロックする`sleep(5)`コールを配置しています。これは、リクエストが完了するのに十分な時間をとることで、Box iOS SDKから呼び出しを実行できるかどうかをテストするためです。 `{{YOUR DEVELOPER TOKEN}}`を実際の開発者トークンに置き換えます。 ``` let client = BoxSDK.getClient(token: "{{YOUR DEVELOPER TOKEN}}") client.users.getCurrent(fields:["name", "login"]) { (result: Result<User, BoxSDKError>) in guard case let .success(user) = result else { print("Error getting user information") return } print("Authenticated as \(user.name)") } sleep(5) ``` iOSエミュレータでサンプルアプリケーションをビルドして実行します。 最後の手順で開発者トークンを作成してから1時間以上後にこのコードを実行する場合、開発者トークンは60分間しか保持されないため、[前の手順](g://mobile/ios/quick-start/configure-box-app)と同じ方法を使用して、開発者トークンを取り消して新たに生成する必要があります。 アプリケーションがエミュレータに読み込まれると、作成したボタンが表示されます。そのボタンをクリックしてAPIリクエストを開始します。 Xcodeの開発者コンソール内にAPIリクエストとレスポンスが表示されます。最後の行には、指定したユーザーのprintステートメントが表示されています。 ``` ◁ Status code: 200: no error ◁ Headers: ◁ Cache-Control, Value: no-cache, no-store ◁ BOX-REQUEST-ID, Value: 1c55151238444132eca16b4c2346d005 ◁ Transfer-Encoding, Value: Identity ◁ content-type, Value: application/json ◁ Connection, Value: keep-alive ◁ Strict-Transport-Security, Value: max-age=31536000 ◁ Body: {"type":"user","id":"123456789","name":"Test User","login":"testuser@test.com"} Authenticated as Optional("Test User") ``` Xcodeの開発者コンソールが表示されない場合は、メニューから [**View (表示)**] -> [**Debug Area (デバッグ領域)**] -> [**Activate Console (コンソールをアクティブ化)**] をクリックします。 これで、**Box iOS SDK**の設定が完了し、Box APIへの最初の呼び出しを実行できました。 ## まとめ - 空のiOSアプリケーションにボタンを追加しました。 - iOS SDKを使用して現在のユーザーを取得するリクエストを追加しました。 APIコールが完了しました **Source:** [https://ja.developer.box.com/guides/mobile/ios/quick-start/make-api-call/](https://ja.developer.box.com/guides/mobile/ios/quick-start/make-api-call/) --- ### APIコールの実行 **Type:** quick-start | **Category:** ツール | **Section:** Developer Guides APIコールの実行 Box PostmanコレクションがPostmanアプリにフォークされたため、Postmanアプリがログインユーザーに代わってBox APIへのAPIコールを実行できるようになりました。 はじめに: ブラウザのストレージをリセットする Box API… # APIコールの実行 **Box Postmanコレクション**が**Postmanアプリ**にフォークされたため、Postmanアプリがログインユーザーに代わって**Box API**へのAPIコールを実行できるようになりました。 ## はじめに: ブラウザのストレージをリセットする Box API資格情報をPostmanにインポートしたので、これらの資格情報をブラウザのストレージから削除することをお勧めします。 資格情報をクリア API資格情報をブラウザのストレージから削除すると、**クライアントID**、**クライアントシークレット**、**アクセストークン**、または**更新トークン**を他のスクリプトから読み取ることができなくなります。 ## 環境の選択 APIコールを実行する前に、APIコール時に使用する適切な**Postman環境**を選択することが重要です。 **Box Postmanコレクション**のインポート時には、使用すべき`Box` Postman環境も自動的にインポートされました。このコレクションは、この環境内の変数を自動的に認識してAPIコールに使用します。 Box Postman環境を選択するには、Postmanの右上にあるドロップダウンから [**Box**] を選択します。 ドロップダウンの右にある**目**のアイコンをクリックすると、その環境の詳細を確認できます。 ## APIリクエストの実行 APIリクエストを実行するには、Box Postmanコレクションから**リクエスト**を選択します。この例では、[**Folders (フォルダ)**] フォルダにある [**Get items in folder (フォルダ内の項目を取得)**] APIを使用します。 デフォルトでは、このAPIエンドポイントの`folder_id`は、すべてのユーザーのルートフォルダを表す`0`に設定されています。この値は、そのまま使用することも、調べたいフォルダのフォルダIDに設定することもできます。 次に、右上にある [**Send (送信)**] ボタンをクリックしてAPIリクエストを送信します。 このAPIコールはすぐに制御が戻り、画面の下半分にあるレスポンスの [**Body (本文)**] タブにフォルダ内の項目のリストが表示されます。 # 認証エラー この時点で、Postmanがリストではなくエラーを返す場合があります。これは多くの場合、**アクセストークン**の有効期限が切れていることを意味します。詳細については、[Postmanでのアクセストークンの更新](g://tooling/postman/refresh)に関するガイドを参照してください。 ## まとめ - BoxへのAPIコールに使用するPostman環境を選択しました - Boxへの最初のAPIコールを実行し、ユーザーのルートフォルダのフォルダ項目をリクエストしました APIコールが完了しました **Source:** [https://ja.developer.box.com/guides/tooling/postman/quick-start/make-api-call/](https://ja.developer.box.com/guides/tooling/postman/quick-start/make-api-call/) --- ### APIのバージョン戦略 **Type:** guide | **Category:** APIコール | **Section:** Developer Guides APIのバージョン戦略 Boxでは、特定のAPIエンドポイントに対してバージョン管理機能を提供しています。このバージョン管理システムにより、Boxがエンドポイントのバージョンを新しく導入した場合でも、既存のエンドポイントのバージョンに対してシームレスな機能が保証されます。 API… # APIのバージョン戦略 Boxでは、特定のAPIエンドポイントに対してバージョン管理機能を提供しています。このバージョン管理システムにより、Boxがエンドポイントのバージョンを新しく導入した場合でも、既存のエンドポイントのバージョンに対してシームレスな機能が保証されます。 APIのバージョン管理により、Boxは、自社のプラットフォームを継続的に強化できると同時に、機能の更新や廃止のための信頼できる手段をサードパーティの開発者に提供することもできます。 今後予定されているAPIの変更について常に最新情報を把握できるように、[変更ログ](page://changelog)を注視し、開発者コンソールの [アプリ情報] セクションで最新のメールアドレスを指定しておいてください。 2024年に、BoxではAPIの年ベースのバージョン管理を導入しました。 2024年の年末に利用できたすべてのエンドポイントには、バージョン`2024.0`が割り当てられました。 **APIユーザーが引き続きBox APIを使用するために必要な操作はありません。** バージョンを指定してAPIコールを行うには、値`2024.0`を設定した`box-version`ヘッダーをリクエストに含めてください。 ## Box APIのバージョン管理の仕組み Box APIは、`header`でのバージョン管理をサポートしています。どのバージョンを使用するかを決定するには、APIリファレンスとそこに記載されているサンプルリクエストを参照してください。 ### headerにおけるバージョン管理 Box APIでは、有効なバージョン名を含む`box-version`ヘッダーを処理します。たとえば、クライアントがバージョン`2025.0`を使用してすべての署名リクエストのリストを取得する場合、リクエストは次のようになります。 ``` curl --location 'https://api.box.com/2.0/sign_requests' \ --header 'box-version: 2025.0' \ --header 'Authorization: Bearer … ``` 指定したバージョンが正しく、エンドポイントでサポートされている場合、レスポンスがクライアントに送信されます。エンドポイントが複数のバージョンで使用可能な場合、レスポンスには`box-version`ヘッダーが含まれ、リクエストの処理に使用されるバージョンを示します。2024年以降に導入されたエンドポイントは、バージョンが正しくない場合にエラーコード`400`を返すことがあります。バージョン管理のエラーの詳細については、[こちら](g://api-calls/permissions-and-errors/versioning-errors)を参照してください。 リクエストにバージョンが含まれていない場合、APIはデフォルトで、最初のBox APIバージョン`2024.0` (年ベースのバージョン管理が導入される前のエンドポイントのバージョン) になります。ただし、非推奨の変更を適用する際にこの動作を利用することはお勧めしません。一貫性を確保するために、リクエストごとに必ずAPIバージョンを指定してください。アプリケーションにバージョンを認識させることで、アプリケーションを特定の機能セットに固定し、サポートされている期間中は一貫した動作が保証されます。 ## リリーススケジュールと命名規則 Boxでは、**1年に1回**、特定のエンドポイントに新しく重大な変更を行う場合があります。これにより、APIのバージョンが新しくなります。署名リクエストエンドポイントの新しいバージョンを導入すると、エンドポイントの**すべてのパスとHTTPメソッド**でそのバージョンがサポートされるようになります。 たとえば、署名リクエストのエンドポイントが新しいバージョンを受け取ると、そのバージョンは、次の表に示すすべてのエンドポイントに適用されます。 | メソッド | リクエストURL | 説明 | | --- | --- | --- | | GET | https://api.box.com/2.0/sign_requests/:id | 特定の署名リクエストの詳細を取得します。 | | GET | https://api.box.com/2.0/sign_requests/ | すべての署名リクエストを取得します。 | | POST | https://api.box.com/2.0/sign_requests/ | 新しい署名リクエストを作成します。 | | POST | https://api.box.com/2.0/sign_requests/:id/resend | 特定の署名リクエストを再度送信します。 | | POST | https://api.box.com/2.0/sign_requests/:id/cancel | 特定の署名リクエストをキャンセルします。 | ### 命名規則 APIの新しいバージョンは、リリースされた暦年に従ってラベルが付けられます。 **例**: 署名リクエストのエンドポイントの新しいバージョンが2025年にリリースされた場合、その名前は`2025.0`となります。 Boxは、1年に**1回**、APIエンドポイントに新しく重大な変更を行う場合がありますが、セキュリティやプライバシーに関する懸念に対処するためにさらに重大な変更をリリースする権利を留保します。このような場合、新しいバージョンではサフィックスが1ずつ増加します。 **例**: 以前にリリースされた署名リクエストのバージョン`2025.0`でセキュリティの問題に対処する必要がある場合、新しいバージョンには`2025.1`というラベルが付きます。 安定した各バージョンは最低12か月間サポートされます。つまり、新しいバージョンがリリースされると、以前のバージョンは非推奨となり、使用することはできますが、新機能が追加されなくなります。また、12か月経たずに新しいバージョンがリリースされることはありません。 アプリを更新して最新の安定したAPIバージョンにリクエストを実行することを強くお勧めします。ただし、アプリで使用している安定したバージョンがサポートされなくなると、HTTPエラーコード`400 - Bad Request`を含むレスポンスが返されます。詳細については、[バージョン管理のエラー](g://api-calls/permissions-and-errors/versioning-errors)を参照してください。 ### エンドポイントのバージョン管理に関する表示 APIの現在の状態が常にわかるようにし、バージョン管理されているAPIリファレンスが読みやすくなるよう、影響を受けるエンドポイントには`x-stability-level`タグまたは`deprecated`属性に基づいた長円形アイコンが表示されます。 | スキーマ要素 | 長円形アイコンの名前 | 説明 | | --- | --- | --- | | x-stability-level: beta | ベータ | ベータと表示されているエンドポイントは、BoxのMain Beta Agreementに従い提供されているため、利用可能な機能が変更される可能性があります。ベータ版のエンドポイントが安定すると、ベータという表示が削除されます。 | | x-stability-level: stable、またはx-stability-levelタグなし | 最新バージョン | 最新バージョンとは、エンドポイントの最新の安定したバージョンを示します。 | | deprecated: true | 廃止 | エンドポイントは非推奨です。つまり、このエンドポイントは引き続き使用できますが、新機能が追加されなくなります。このようなエンドポイントには、deprecated属性をtrueに設定した状態で注釈が付けられています。 | ## バージョン管理のエラー 呼び出しなど、バージョン管理されているAPIのアクションを利用する際、ヘッダーに誤ったAPIバージョンや非推奨のバージョンが指定されていると、エラーが発生する可能性があります。 発生する可能性があるエラーの詳細については、[バージョン管理のエラー](g://api-calls/permissions-and-errors/versioning-errors)を参照してください。 ## Box SDKのバージョン管理の仕組み このバージョン戦略は、[生成されたSDK](page://sdks-and-tools/#next-generation-sdks)にのみ適用されます。 Box SDKは、**すべてのバージョンに対応**というSDKのアプローチをサポートしています。つまり、SDKの各リリースでは、現在サポートされている任意のバージョンのすべてのエンドポイントにアクセスできます。生成されたすべてのSDKはマネージャのアプローチを使用します。このアプローチでは、同じドメインを使用するすべてのエンドポイントを1つのマネージャにグループ化します。 たとえば、`FolderManager`には`create_folder`、`get_folder_by_id`、`update_folder_by_id`、`delete_folder_by_id`、`get_folder_items`、`copy_folder`のメソッドが含まれます。この分割は`x-box-tag`フィールドの値に基づいて行われます (このフィールドは公開APIサービスの仕様で各メソッドに割り当てられています)。ほとんどの場合、これはエンドポイントURLのルートに対応していますが、必ずしもそうとは限りません。たとえば、`FolderManager`には`https://api.box.com/2.0/folders`というルートURLを使用するメソッドが含まれますが、同じベースURLは`SharedLinkFoldersManager`のいくつかのメソッドでも使用されています。すべてのマネージャへの参照は、1つのBoxクライアントオブジェクトの下に保存されます。 エンドポイントのライフサイクルの例を見てみましょう。 1. 初期状態 (使用できるバージョンは1つのみ)。 ``` class FilesManager { async updateFileById( fileId: string, requestBody: UpdateFileByIdRequestBody, queryParams: UpdateFileByIdQueryParams, headers: UpdateFileByIdHeaders ): Promise < FileFull > {} } ``` エンドポイントの新しい`v2025_0`バージョンが導入されます (以前のバージョンは非推奨になります)。 SDKでは、エンドポイントの新しいバージョンごとに新しいメソッドが導入されます。これらのメソッドは古いメソッドと同じマネージャに保存されますが、その名前と対応するクラスの末尾にはバージョン番号が追加されます。古いメソッドは非推奨となり、最小限のメンテナンスが行われる日付が通知されます。これは、エンドポイントの公式サポートが終了した状態と見なされる日付です。 ``` class FilesManager { /** * @deprecated This endpoint will be EOL'ed after 05-2026. */ async updateFileById( fileId: string, requestBody: UpdateFileByIdRequestBody, queryParams: UpdateFileByIdQueryParams, headers: UpdateFileByIdHeaders ): Promise<FileFull> {} async updateFileById_2025_0( fileId: string, requestBody: UpdateFileByIdRequestBody_2025_0, queryParams: UpdateFileByIdQueryParams_2025_0, headers: UpdateFileByIdHeaders_2025_0 ): Promise<FileFull_2025_0> {} } ``` APIエンドポイントが公式サポート終了 (EOL) としてマークされます。 SDKは、公式サポート終了 (EOL) のエンドポイントの削除を伴う重大な変更をリリースします。SDKの新しいメジャーバージョンを何度もリリースするのを避けるために、すべてのエンドポイントの公式サポート終了日を四半期ごとに特定の日にまとめるのが理想的です。 ``` class FilesManager { async updateFileById_2025_0( fileId: string, requestBody: UpdateFileByIdRequestBody_2025_0, queryParams: UpdateFileByIdQueryParams_2025_0, headers: UpdateFileByIdHeaders_2025_0 ): Promise < FileFull_2025_0 > {} } ``` ## 重大な変更と重大ではない変更 Box APIにおける重大な変更は、バージョン管理されたリリースの中で行われ、通常は新しいメジャーAPIバージョンを伴います。既存の機能を損なわない程度の微調整であれば、既存のAPIバージョンに統合できます。次の表では、重大な変更と重大ではない変更の例を示します。 | APIの変更 | 重大な変更 | | --- | --- | | 新しいエンドポイント | いいえ | | リクエストの新しい読み取り専用フィールドまたは省略可能なフィールド | いいえ | | リクエストの新しい必須フィールド | はい | | リクエストの新しい文字列定数 | はい | | 非推奨 | いいえ | | 廃止/公式サポート終了となったエンドポイント | はい | | フィールド、データ型、文字列定数の名前変更/再構築 | はい | | フィールド検証の制限を強化する変更 | はい | | フィールド検証の制限を緩和する変更 | いいえ | | 操作によって返されるHTTPステータスコードの変更 | はい | | 宣言済みプロパティの削除 | はい | | APIまたはAPIパラメータの削除または名前変更 | はい | | 必須のリクエストヘッダーの追加 | はい | | エラーコードの追加 | いいえ | | エラーコードの削除または変更 | はい | | 列挙へのメンバーの追加 | はい | [oasdiff](https://github.com/Tufin/oasdiff/blob/main/BREAKING-CHANGES-EXAMPLES.md)ツールを使用すると、重大と思われる変更の大半を検出できます。 ## AIエージェントの構成のバージョン管理 [AIエージェント](g://box-ai/ai-agents)のバージョン管理により、開発者はモデルのバージョン管理をより詳細に制御できるようになり、レスポンスの一貫性が確保されます。詳細については、[AIエージェントの構成のバージョン管理ガイド](g://box-ai/ai-agents/ai-agent-versioning)を参照してください。 ## サポートポリシーと非推奨情報 Box APIとBox SDKの新しいバージョンがリリースされると、それより前のバージョンは廃止されます。Boxでは、バージョンを廃止する少なくとも24か月前に、そのバージョンを`deprecated`とマークします。つまり、非推奨バージョンの公式サポートが24か月経たずに終了することはありません。同様に、正式リリース (GA) されている個々のAPIについても、GAバージョンから削除する少なくとも24か月前にそのAPIを`deprecated`として宣言します。 Boxは、APIのメジャーバージョンを上げる際 (`2025.0`から`2026.0`など)、現在のバージョン (この例では`2025.0`) が即座に非推奨となることを発表し、その発表から24か月後にサポートを終了します。サービスのセキュリティや状態の信頼性に問題がある場合は、このポリシーに例外を認めることがあります。 APIが非推奨としてマークされている場合は、できるだけ早く最新バージョンに移行することを強くお勧めします。場合によっては、元のAPIが非推奨になってしばらくしてから、新しいアプリケーションで新しいAPIの使用を開始する必要があることを案内することもあります。 お客様が非推奨のAPIエンドポイントを呼び出すと、レスポンスには以下のようなヘッダーが含まれます。 ``` Deprecation: date="Fri, 11 Nov 2026 23:59:59 GMT" Box-API-Deprecated-Reason: https://developer.box.com/reference/deprecated ``` この日付は、いつこのバージョンが非推奨としてマークされたかをクライアントに示しています。 ## バージョン管理に関する考慮事項 リクエストの作成時には、以下の点を考慮してください。 - バージョン`2024.0`のエンドポイントは、`box-version`ヘッダーでバージョンを指定しなくても呼び出し可能です。バージョンが指定されておらず、呼び出したエンドポイントの`2024.0`バージョンが存在しない場合、レスポンスではHTTPエラーコード`400 - Bad Request`が返されます。 - `box-version`バージョンヘッダーが指定されていても、リクエストされたバージョンが存在しない場合、レスポンスではHTTPエラーコード`400 - Bad Request`が返されます。 詳細については、[バージョン管理のエラー](g://api-calls/permissions-and-errors/versioning-errors)を参照してください。 APIに含まれるリソースまたはリソースのプロパティが非推奨になると、その変更は以下の1つ以上の方法で伝えられます。 - 非推奨の動作を伴う呼び出しにより、レスポンスヘッダー`Box-API-Deprecated-Reason`と、詳細を確認するためのリンクが返されます。 ``` box-version: 2025.0 Deprecation: version="version", date="date" Box-API-Deprecated-Reason: https://developer.box.com/reference/deprecated ``` - 非推奨に関するお知らせが開発者向け変更ログに掲載されます。 - 影響を受けるリソースと必要な対応を特定できるように、APIリファレンスが更新されます。影響を受けるエンドポイントには**非推奨**の長円形アイコンが表示されます。 - アプリに影響する後方互換性のない変更が差し迫っている場合は、その非推奨についてアプリの連絡先メールアドレスに問い合わせることがあります。 ## その他のリソース - [APIリファレンス](page://reference) **Source:** [https://ja.developer.box.com/guides/api-calls/api-versioning-strategy/](https://ja.developer.box.com/guides/api-calls/api-versioning-strategy/) --- ### App Diagnosticsレポート **Type:** guide | **Category:** APIコール | **Section:** Developer Guides App Diagnosticsレポート App Diagnosticsレポートでは、指定した期間に特定のアプリケーションで実行された各APIコールの詳細を示したスプレッドシートが表示されます。このレポートでは、API Request ID… # App Diagnosticsレポート App Diagnosticsレポートでは、指定した期間に特定のアプリケーションで実行された各APIコールの詳細を示したスプレッドシートが表示されます。このレポートでは、`API Request ID`を確認できます。これは、トラブルシューティングのためにBoxサポートに提出することができます。 このレポートには、以下の項目は含まれません。 - 過去48時間以内に実行されたAPIコール - 承認およびトークンに関するAPIコール Boxでは、上記の項目を追加し、それによって、レポートが将来的にリアルタイムのトラブルシューティングに適したものになるよう取り組んでいます。 ## 1. [App Diagnostics] タブをクリックする App Diagnosticsレポートを実行するには、[開発者コンソール](https://app.box.com/developers/console)でアプリケーションの構成セクションの上部にある [**App Diagnostics**] オプションをクリックします。 ## 2. [App Diagnosticsレポートを実行] をクリックしてレポートを構成する [**App Diagnosticsレポートを実行**] をクリックすると、レポートのフィルタおよびパラメータを選択するためのポップアップが表示されます。 ## 3. レポートのパラメータを選択して [実行] をクリックする 現在から48時間前を基準に過去2週間以内の日付を選択できます。レポートは、合計24時間までを対象に実行できます。[**実行**] をクリックすると、レポートが生成されます。 ## 4. Box Reportsフォルダにアクセスする [[すべてのファイル](https://app.box.com/folder/0)] に移動し、Box Reportsフォルダを見つけます。今回初めてレポートを実行する場合は、このフォルダが自動的に生成されます。管理者の場合、これは、[管理コンソールのレポート](https://support.box.com/hc/ja/articles/360043696534-%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AE%E5%AE%9F%E8%A1%8C)にアクセスした場合と同じフォルダです。このフォルダを開きます。 ## 5. 最新のPlatform App Diagnosticsレポートフォルダを探して開く 実行したレポートはすべて、Box Reportsフォルダに表示されます。最新のPlatform App Diagnostics実行のフォルダを探して開きます。 ## 6. ステータスを確認する レポートが完了するまで時間がかかります。ステータスは、フォルダの上部にあるボックスで確認できます。 ## 7. レポートが完了する 完了すると、ステータスが変更され、フォルダ内に`.csv`ファイルが表示されます。 ## 8. レポートを開く ファイルは、ウェブブラウザで開くことも、ローカルで表示するためにダウンロードすることもできます。[Boxサポート](https://support.box.com/hc/en-us/requests/new)によるサポートが必要な場合は、ダウンロードしたコピーを添付するか共有リンクを使用して、チケットとともにレポートを送信することができます。 このレポートには列が9個あります。 | 列 | 説明 | | | --- | --- | --- | | アプリ名 | アプリケーションの名前 | | | クライアントID | アプリケーションのクライアントID | | | HTTPステータスコード | Boxから返されたレスポンスコード | | | APIリクエスト期間 (ミリ秒) | APIコールからレスポンスまでの時間 | | | APIリクエストID | Boxサポートが使用できる一意の識別子 | | | リソース | APIコールでアクセスされたプライマリリソース | | | サブリソース | APIコールでアクセスされたセカンダリリソース | | | HTTPメソッド | APIコールで使用されたHTTPメソッドの種類 | | | APIリクエストタイムスタンプ | APIコールのタイムスタンプ | | **Source:** [https://ja.developer.box.com/guides/api-calls/permissions-and-errors/app-diagnostics-report/](https://ja.developer.box.com/guides/api-calls/permissions-and-errors/app-diagnostics-report/) --- ### App Userの作成 **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides App Userの作成 App Userは、JWT認証を使用しているアプリによってのみ作成されるプログラム上のユーザーアカウントです。ユーザーがログインするためのBox… # App Userの作成 App Userは、[JWT認証](g://authentication/jwt/jwt-setup)を使用しているアプリによってのみ作成されるプログラム上のユーザーアカウントです。ユーザーがログインするためのBoxアカウントを持っていなくても、ユーザー、グループ、またはプロセスをアプリケーションの背後で表せるようにすることを目的としています。 App Userは、BoxアプリケーションがAPIを介してのみアクセスでき、`box.com`に直接ログインするための資格情報を持っていません。 ## 一般的なApp Userのパターン 一般的なApp Userは以下のようなパターンを目的に作成されます。 - `box.com`アカウントを持たない単一のアプリケーションユーザーまたはユーザーグループを表すため。 - App Userに会社内のすべてのイベントを監視させるなどの、アプリケーションプロセスを表すため。 - コンテンツが`box.com`ウェブアプリによって変更される可能性を排除し、ユーザーアカウントのファイルおよびフォルダ構造を完全に制御する機能をアプリケーションに提供するため。 ## 新しいApp Userの作成 新しいApp Userを生成するには、最低でもApp Userの名前が必要になります。 App Userの作成時に設定できるすべての使用可能なオプションパラメータを確認するには、[ユーザーを作成](endpoint://post-users)エンドポイントを参照してください。 新しく作成したアカウントを変更できるようにするには、受信した確認メールにあるリンクをクリックする必要があります。 App Userが作成されると、ユーザーオブジェクトが返されます。ユーザーオブジェクト内には、App UserのIDがあります。これは、ユーザーを変更するAPIリクエストを実行するために今後使用される可能性があります。 **Source:** [https://ja.developer.box.com/guides/users/create-app-user/](https://ja.developer.box.com/guides/users/create-app-user/) --- ### App UserへのSSO IDの関連付け **Type:** guide | **Category:** SSOとApp User | **Section:** Developer Guides App UserへのSSO IDの関連付け SSOサービスでは、社内でこのサービスを利用する各ユーザーに一意のユーザーレコードが作成されます。このSSOサービスを介してBoxアプリケーションにアクセスする際、SSOユーザーごとにBoxユーザーを作成している場合は、SSO… # App UserへのSSO IDの関連付け SSOサービスでは、社内でこのサービスを利用する各ユーザーに一意のユーザーレコードが作成されます。このSSOサービスを介してBoxアプリケーションにアクセスする際、SSOユーザーごとにBoxユーザーを作成している場合は、SSOユーザーとBoxユーザーレコードの間に関連付けを作成する必要があります。 ユーザーがSSOサービスを介してBoxにログインすると、Boxはまず関連付けを使用してユーザーを検索します。Boxユーザーレコードが見つかれば、そのユーザーとしてBox APIに対する呼び出しを開始することができます。Boxユーザーが見つからない場合は、一意のSSOユーザーアカウントに関連付けられた新しいBoxユーザーが作成されます。 Boxユーザーオブジェクトの最上位を探索すると、SSOサービスのユーザーオブジェクトからBox[ユーザーオブジェクト](r://user)に一意の識別子を追加して双方を関連付けるために使用できるオプションがわかります。 ``` { "address": "900 Jefferson Ave, Redwood City, CA 94063", "avatar_url": "https://www.box.com/api/avatar/large/181216415", "can_see_managed_users": true, "created_at": "2012-12-12T10:53:43-08:00", "enterprise": { .. }, "external_app_user_id": "my-user-1234", "hostname": "https://example.app.box.com/", "id": 11446498, "is_exempt_from_device_limits": true, "is_exempt_from_login_verification": true, "is_external_collab_restricted": true, "is_platform_access_only": true, "is_sync_enabled": true, "job_title": "CEO", "language": "en", "login": "ceo@example.com", "max_upload_size": 2147483648, "modified_at": "2012-12-12T10:53:43-08:00", "my_tags": [ .. ], "name": "Aaron Levie", "notification_email": { ... }, "phone": 6509241374, "role": "admin", "space_amount": 11345156112, "space_used": 1237009912, "status": "active", "timezone": "Africa/Bujumbura", "tracking_codes": [{ .. }], "type": "user" } ``` SSOサービス内の一意のユーザーとBoxユーザーの関連付けを作成するには、2つの方法が推奨されています。Boxユーザーの`external_app_user_id`フィールド内に一意のSSOユーザーIDを設定するか、一意のSSOメールアドレスを新しいユーザーのログインメールとして使用してください。 ## external_app_user_idの使用 (推奨方法) `external_app_user_id`フィールドは、SSOプロバイダのユーザーレコードなどの外部サービスとBoxユーザーレコードを関連付ける、文字列識別子を保持するよう設計されています。 特定のアプリケーションのApp Userを取得できるのは、そのApp Userを作成したのがこのアプリケーションである場合のみです。あるアプリケーションを使用して、別のアプリケーションで作成されたユーザーを検索した場合、データは返されません。 一意のSSOユーザーアカウントとBoxユーザーアカウントの関連付けに`external_app_user_id`フィールドを使用することは、この2つのアカウントを関連付ける方法としてメールよりも推奨されています。これには、以下のように複数の理由があります。 - メールアドレスによる関連付けを実行できるのは[管理対象ユーザー](page://platform/user-types/#managed-users)のみです。[App User](page://platform/user-types/#app-user)にはBoxによって自動的にメールアドレスが割り当てられるため、`login`をSSOサービスのメールアドレスになるよう割り当てることはできません。 - メールアドレスはBoxにおいて一意でなければなりません。つまり、SSOサービスユーザーが (Boxを使用する社内に存在しない) 同じメールアドレスを使用してBoxにサインアップした場合は、そのアドレスでユーザーを作成することも、既存のSSOサービスユーザーに接続することもできなくなります。 - `external_app_user_id`フィールドはこのために設計されています。 ## loginの使用 (代替方法) ユーザーオブジェクトの`login`フィールドを使用してアカウントの関連付けを作成する方法は、以下の限られた状況において使用可能です。 - [App User](page://platform/user-types/#app-user)ではなく[管理対象ユーザー](page://platform/user-types/#managed-users)タイプのみが使用されている。 - メールアドレスとBoxアカウントの作成リクエストがすべて会社によって管理されている。つまり、ユーザーは自身のメールアドレスで独自にBoxアカウントを作成することができません。 `login`フィールドで、Boxのユーザーに使用されるメールアドレスは一意である必要があります。すでに別のアカウント用に存在するメールアドレスを使用してユーザーを作成するようリクエストすると、`user_login_already_used`という`409 Conflict`エラーが発生します。 **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-identities/](https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-identities/) --- ### as-userヘッダー **Type:** guide | **Category:** 認証 | **Section:** Developer Guides as-userヘッダー as-userヘッダーを利用すると、JWTアプリケーションは別のユーザーの代理になることができます。 この場合、ユーザーIDはユーザーのBox識別子です。どのユーザーでも、ユーザーIDは、管理者だけが利用可能なGET /users… # as-userヘッダー `as-user`ヘッダーを利用すると、JWTアプリケーションは別のユーザーの代理になることができます。 ``` curl https://api.box.com/2.0/folders/0 \ -H "as-user: [USER_ID]" -H "authorization: Bearer [ACCESS_TOKEN]" ``` この場合、ユーザーIDはユーザーのBox識別子です。どのユーザーでも、ユーザーIDは、管理者だけが利用可能な`GET /users`エンドポイントを介して確認できます。また、認証済みのユーザーセッションで`GET /users/me`エンドポイントを呼び出して確認することもできます。 ## 前提条件 アプリケーションは、[開発者コンソール](https://app.box.com/developers/console)で、ユーザーとして操作を実行するように構成する必要があります。 さらに、認証済みユーザーは、管理者権限を持つユーザー、つまり、管理者または共同管理者である必要があります。詳細については、[ユーザータイプ](page://platform/user-types)のガイドを参照してください。 as-userヘッダーでは[サービスアカウント](page://platform/user-types/#service-account)の`user_id`を使用できません。 ## as-userを使用できるSDK すべての[Box公式SDK](g://tooling/sdks)では、`as-user`ヘッダーを使用してユーザーの代わりに処理を実行することがサポートされています。 ``` var user_client = new BoxClient(config, session, asUser: '[USER_ID]'); ``` ``` client.asUser([USER_ID]"); // client.asSelf(); ``` ``` user_to_impersonate = client.user(user_id='[USER_ID]') user_client = client.as_user(user_to_impersonate) ``` ``` client.asUser('[USER_ID]'); // client.asSelf(); ``` SDKには、他のユーザーに対して新しいクライアントを作成するものもあれば、既存のクライアントを変更して、そのクライアントが元のユーザーに対して認証される状態に戻せるようにするものもあることに注意してください。 **Source:** [https://ja.developer.box.com/guides/authentication/jwt/as-user/](https://ja.developer.box.com/guides/authentication/jwt/as-user/) --- ### as-userヘッダー **Type:** guide | **Category:** 認証 | **Section:** Developer Guides as-userヘッダー as-userヘッダーを使用すると、OAuth 2.0アプリケーションは別のユーザーの代理になることができます。 この場合、ユーザーIDはユーザーのBox識別子です。どのユーザーでも、ユーザーIDは、管理者だけが利用可能なGET /users… # as-userヘッダー `as-user`ヘッダーを使用すると、OAuth 2.0アプリケーションは別のユーザーの代理になることができます。 ``` curl https://api.box.com/2.0/folders/0 \ -H "as-user: [USER_ID]" -H "authorization: Bearer [ACCESS_TOKEN]" ``` この場合、ユーザーIDはユーザーのBox識別子です。どのユーザーでも、ユーザーIDは、管理者だけが利用可能な`GET /users`エンドポイントを介して確認できます。また、認証済みのユーザーセッションで`GET /users/me`エンドポイントを呼び出して確認することもできます。 ## 前提条件 `as-user`ヘッダーを使用するには、いくつかの要件があります。最初に、アプリケーションは、[開発者コンソール](https://app.box.com/developers/console)で、ユーザーとして操作を行うよう構成する必要があります。 さらに、認証済みユーザーは、管理者権限を持つユーザー、つまり、管理者、共同管理者、またはサービスアカウントのいずれかである必要があります。共同管理者にも、「ユーザーを管理する」権限のスコープが必要です。詳細については、[ユーザータイプ](page://platform/user-types)のガイドを参照してください。 ## as-userを使用できるSDK ``` var user_client = new BoxClient(config, session, asUser: '[USER_ID]'); ``` ``` client.asUser([USER_ID]"); // client.asSelf(); ``` ``` user_to_impersonate = client.user(user_id='[USER_ID]') user_client = client.as_user(user_to_impersonate) ``` ``` client.asUser('[USER_ID]'); // client.asSelf(); ``` SDKには、他のユーザーに対して新しいクライアントを作成するものもあれば、既存のクライアントを変更して、そのクライアントが元のユーザーに対して認証される状態に戻せるようにするものもあることに注意してください。 **Source:** [https://ja.developer.box.com/guides/authentication/oauth2/as-user/](https://ja.developer.box.com/guides/authentication/oauth2/as-user/) --- ### AWS Claude 3 Haiku **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AWS Claude 3 Haiku 概要 AWS Claude 3 Haikuモデルは、創造性豊かな文章作成AIや対話型AIなど、さまざまな言語タスク向けにカスタマイズされています。 モデルの詳細 項目 値 説明 モデル名 AWS Claude 3 Haiku… # AWS Claude 3 Haiku ## 概要 **AWS Claude 3 Haiku**モデルは、創造性豊かな文章作成AIや対話型AIなど、さまざまな言語タスク向けにカスタマイズされています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | AWS Claude 3 Haiku | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | aws__claude_3_haiku | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Amazon Web Services (AWS) | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Anthropic | このモデルを提供する組織。 | | リリース日 | 2024年3月13日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2023年8月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 200,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 4,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 117 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[AWS Claude 3 Haikuの公式ドキュメント](https://aws.amazon.com/bedrock/claude/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-3-haiku-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-3-haiku-model-card/) --- ### AWS Claude 3 Sonnet **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AWS Claude 3 Sonnet AWS Claude 3 Sonnetモデルは、高度な言語タスク向けに設計されており、理解とコンテキスト処理に重点が置かれています。 モデルの詳細 項目 値 説明 モデル名 AWS Claude 3 Sonnet… # AWS Claude 3 Sonnet **AWS Claude 3 Sonnet**モデルは、高度な言語タスク向けに設計されており、理解とコンテキスト処理に重点が置かれています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | AWS Claude 3 Sonnet | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | aws__claude_3_sonnet | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Amazon Web Services (AWS) | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Anthropic | このモデルを提供する組織。 | | リリース日 | 2024年3月4日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2023年8月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 200,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 4,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 49.8 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[AWS Claude 3 Sonnetの公式ドキュメント](https://aws.amazon.com/bedrock/claude/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-3-sonnet-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-3-sonnet-model-card/) --- ### AWS Claude 3.5 Sonnet **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AWS Claude 3.5 Sonnet 概要 AWS Claude 3.5 Sonnetモデルは、言語の理解と生成のタスクを強化するよう設計されています。 モデルの詳細 項目 値 説明 モデル名 AWS Claude 3.5 Sonnet… # AWS Claude 3.5 Sonnet ## 概要 **AWS Claude 3.5 Sonnet**モデルは、言語の理解と生成のタスクを強化するよう設計されています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | AWS Claude 3.5 Sonnet | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | aws__claude_3_5_sonnet | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Amazon Web Services (AWS) | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Anthropic | このモデルを提供する組織。 | | リリース日 | 2024年6月20日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年4月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 200,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 8,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[AWS Claude 3.5 Sonnetの公式ドキュメント](https://aws.amazon.com/bedrock/claude/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-3-5-sonnet-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-3-5-sonnet-model-card/) --- ### AWS Claude 3.7 Sonnet **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AWS Claude 3.7 Sonnet 概要 AWS Claude 3.7 Sonnetモデルは、言語の理解と生成のタスクを強化するよう設計されています。 モデルの詳細 項目 値 説明 モデル名 AWS Claude 3.7 Sonnet… # AWS Claude 3.7 Sonnet ## 概要 **AWS Claude 3.7 Sonnet**モデルは、言語の理解と生成のタスクを強化するよう設計されています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | AWS Claude 3.7 Sonnet | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | aws__claude_3_7_sonnet | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Amazon Web Services (AWS) | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Anthropic | このモデルを提供する組織。 | | リリース日 | 2025年2月24日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年10月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 200,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 8,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 42 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[AWS Claudeの公式ドキュメント](https://aws.amazon.com/bedrock/claude/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-3-7-sonnet-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-3-7-sonnet-model-card/) --- ### AWS Claude 4 Opus **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AWS Claude 4 Opus AWS Claude 4 Opusモデルは、コーディングや複雑な問題解決に優れており、最先端のエージェント製品を支えています。バックグラウンドでのClaude Codeの実行が可能なため、開発者は、Opus… # AWS Claude 4 Opus **AWS Claude 4 Opus**モデルは、コーディングや複雑な問題解決に優れており、最先端のエージェント製品を支えています。バックグラウンドでのClaude Codeの実行が可能なため、開発者は、Opusが個別に処理する長時間のコーディングタスクを割り当てることができます。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | AWS Claude 4 Opus | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | aws__claude_4_opus | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Amazon Web Services (AWS) | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Anthropic | このモデルを提供する組織。 | | リリース日 | 2024年3月4日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2023年8月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 200,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 32,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[AWS Claude 4 Opusの公式ドキュメント](https://aws.amazon.com/bedrock/claude/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-4-opus-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-4-opus-model-card/) --- ### AWS Claude 4 Sonnet **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AWS Claude 4 Sonnet AWS Claude 4 Sonnetモデルは、優れたコーディングと推論能力を備えながら、指示に対してより正確に応答し、日常的なユースケースに最先端のパフォーマンスをもたらします。 モデルの詳細 項目 値 説明 モデル名 AWS… # AWS Claude 4 Sonnet **AWS Claude 4 Sonnet**モデルは、優れたコーディングと推論能力を備えながら、指示に対してより正確に応答し、日常的なユースケースに最先端のパフォーマンスをもたらします。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | AWS Claude 4 Sonnet | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | aws__claude_4_sonnet | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Amazon Web Services (AWS) | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Anthropic | このモデルを提供する組織。 | | リリース日 | 2025年5月22日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年11月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 200,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 64,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[AWS Claude 4 Sonnetの公式ドキュメント](https://aws.amazon.com/bedrock/claude/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-4-sonnet-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-4-sonnet-model-card/) --- ### AWS Claude Haiku 4.5 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AWS Claude Haiku 4.5 AWS Claude Haiku 4.… # AWS Claude Haiku 4.5 **AWS Claude Haiku 4.5**モデルは、大容量の低レイテンシアプリケーション向けに最適化されています。これは、より大規模なモデルと比べて、速度とコスト効率が向上した強力なコーディング性能を提供します。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | AWS Claude Haiku 4.5 | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | aws__claude_4_5_haiku | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Amazon Web Services (AWS) | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Anthropic | このモデルを提供する組織。 | | リリース日 | 2025年10月15日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2025年2月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 200,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 64,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[AWS Claude Haiku 4.5の公式ドキュメント](https://aws.amazon.com/bedrock/anthropic/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-4-5-haiku-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-4-5-haiku-model-card/) --- ### AWS Claude Sonnet 4.5 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AWS Claude Sonnet 4.5 AWS Claude Sonnet 4.… # AWS Claude Sonnet 4.5 **AWS Claude Sonnet 4.5**モデルは、複雑なエージェントの作成用に設計された高性能のモデルであり、優れたコーディング機能を提供し、開発タスク全体にわたって実行します。このモデルは、複雑なマルチステップワークフローの自律的な計画および実行に優れており、特に金融、研究、サイバーセキュリティなどの分野で効果的です。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | AWS Claude Sonnet 4.5 | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | aws__claude_4_5_sonnet | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Amazon Web Services (AWS) | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Anthropic | このモデルを提供する組織。 | | リリース日 | 2025年9月29日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2025年1月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 200,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 64,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[AWS Claude Sonnet 4.5の公式ドキュメント](https://aws.amazon.com/bedrock/anthropic/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-4-5-sonnet-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/aws-claude-4-5-sonnet-model-card/) --- ### AWS Titan Text Lite **Type:** guide | **Category:** Box AI | **Section:** Developer Guides AWS Titan Text Lite AWS Titan Text Liteモデルは、高度な言語処理用に設計されており、モデル自体は軽量ですが、幅広いコンテキストを処理できるため、複雑なタスクに適しています。 モデルの詳細 項目 値 説明 モデル名 AWS Titan Text… # AWS Titan Text Lite **AWS Titan Text Lite**モデルは、高度な言語処理用に設計されており、モデル自体は軽量ですが、幅広いコンテキストを処理できるため、複雑なタスクに適しています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | AWS Titan Text Lite | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | aws__titan_text_lite | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Amazon Web Services (AWS) | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Anthropic | このモデルを提供する組織。 | | リリース日 | 2024年9月 | モデルのリリース日。 | | ナレッジカットオフ日 | 指定なし | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 128,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 4,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[AWS Titanの公式ドキュメント](https://aws.amazon.com/bedrock/titan/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/aws-titan-text-lite-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/aws-titan-text-lite-model-card/) --- ### Azure OpenAI GPT-4.1 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Azure OpenAI GPT-4.1 Azure OpenAI GPT-4.1は、複雑なマルチステップタスクの処理で非常に効率的なマルチモーダルモデルです。 モデルの詳細 項目 値 説明 モデル名 GPT-4.… # Azure OpenAI GPT-4.1 **Azure OpenAI GPT-4.1**は、複雑なマルチステップタスクの処理で非常に効率的なマルチモーダルモデルです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | GPT-4.1 | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | azure__openai__gpt_4_1 | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Microsoft Azure | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Microsoft Azure | このモデルを提供する組織。 | | リリース日 | 2025年4月14日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年5月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 100万トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 32,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 87.5 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[Azure OpenAI GPT-4oの公式ドキュメント](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/azure-openai-gpt-4-1-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/azure-openai-gpt-4-1-model-card/) --- ### Azure OpenAI GPT-4.1 mini **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Azure OpenAI GPT-4.1 mini Azure OpenAI GPT-4.1 miniは、軽量のタスクを処理するように設計されたマルチモーダルモデルです。 モデルの詳細 項目 値 説明 モデル名 GPT-4.1 mini… # Azure OpenAI GPT-4.1 mini **Azure OpenAI GPT-4.1 mini**は、軽量のタスクを処理するように設計されたマルチモーダルモデルです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | GPT-4.1 mini | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | azure__openai__gpt_4.1_mini | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Microsoft Azure | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Microsoft Azure | このモデルを提供する組織。 | | リリース日 | 2025年4月14日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年5月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 100万トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 32,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 87.5 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[Azure OpenAI GPT-4oの公式ドキュメント](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/azure-openai-gpt-4-1-mini-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/azure-openai-gpt-4-1-mini-model-card/) --- ### Azure OpenAI GPT-4o **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Azure OpenAI GPT-4o Azure OpenAI GPT-4oは、軽量のタスクを処理するように設計されたマルチモーダルモデルです。 モデルの詳細 項目 値 説明 モデル名 GPT-4o… # Azure OpenAI GPT-4o **Azure OpenAI GPT-4o**は、軽量のタスクを処理するように設計されたマルチモーダルモデルです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | GPT-4o | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | azure__openai__gpt_4o | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Microsoft Azure | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Microsoft Azure | このモデルを提供する組織。 | | リリース日 | 2024年5月13日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2023年9月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 128,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 2,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 87.5 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[Azure OpenAI GPT-4oの公式ドキュメント](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/azure-openai-gpt-4o-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/azure-openai-gpt-4o-model-card/) --- ### Azure OpenAI GPT-4o mini **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Azure OpenAI GPT-4o mini Azure OpenAI GPT-4o miniは、軽量のタスクを処理するように設計されたマルチモーダルモデルです。 モデルの詳細 項目 値 説明 モデル名 GPT-4o mini… # Azure OpenAI GPT-4o mini **Azure OpenAI GPT-4o mini**は、軽量のタスクを処理するように設計されたマルチモーダルモデルです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | GPT-4o mini | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | azure__openai__gpt_4o_mini | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Microsoft Azure | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Microsoft Azure | このモデルを提供する組織。 | | リリース日 | 2024年7月18日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2023年10月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 128,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 16,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 85.4 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## 使用方法 Boxウェブアプリでは、以下のユースケースに対応するためにこのモデルを使用します。 - コンテンツの作成 - コンテンツの編集 - 要約の作成 - 単一ドキュメントのテキストに関するQ&A Box AI APIでは、以下のユースケースに対応するためにこのモデルを使用します。 - コンテンツの作成 - コンテンツの編集 - 要約の作成 - 単一ドキュメントのテキストに関するQ&A - メタデータの抽出 ## その他のドキュメント 詳細については、[Azure OpenAI GPT-4o Miniの公式ドキュメント](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models?tabs=python-secure#gpt-4o-and-gpt-4-turbo)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/azure-openai-gpt-4o-mini-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/azure-openai-gpt-4o-mini-model-card/) --- ### Azure text-embedding-ada-002 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Azure text-embedding-ada-002 Azure text-embedding-ada-002は、軽量のタスクを処理するように設計されたマルチモーダルモデルです。 モデルの詳細 項目 値 説明 モデル名 text-embedding-ada-00… # Azure text-embedding-ada-002 **Azure text-embedding-ada-002**は、軽量のタスクを処理するように設計されたマルチモーダルモデルです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | text-embedding-ada-002 | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | azure__openai__text_embedding_ada_002 | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Microsoft Azure | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Microsoft Azure | このモデルを提供する組織。 | | リリース日 | 2022年12月 | モデルのリリース日。 | | ナレッジカットオフ日 | 2021年9月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 8,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 該当なし | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 1,000 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[Azure Embeddingsモデルの公式ドキュメント](https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models#embeddings)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/azure-text-embedding-ada-002-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/azure-text-embedding-ada-002-model-card/) --- ### Box AI **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Box AI Box AI APIを使用すると、Platformアプリケーション内でBox AI機能を利用できます。たとえば、Box AIの質疑応答機能をサードパーティ製アプリケーションに実装したり、自社製品のコンテンツエディタ内で直接コンテンツを生成したりできます。 Box… # Box AI Box AI APIを使用すると、Platformアプリケーション内でBox AI機能を利用できます。たとえば、Box AIの質疑応答機能をサードパーティ製アプリケーションに実装したり、自社製品のコンテンツエディタ内で直接コンテンツを生成したりできます。 ## Box AI APIの機能 Box AI APIには、アプリケーションのワークフローで大規模言語モデル (LLM) を利用できるように設計された多数の機能が用意されています。 Box AIに対して、ユーザーの質問への回答、ドキュメントの内容の要約、ドキュメントで使用できるテキストの生成を求めることができます。また、Box AIを使用して、スキーマやメタデータテンプレートなど、指定した入力データからメタデータを抽出することもできます。 [Box AI for UI Elements](g://embed/ui-elements/preview#box-ai-ui-element)機能を使用すると、アプリにBox AIを組み込むことができます。 ### Box AIに質問する Boxに保存しているドキュメントで作業している間など、Box AI APIを使用して、そのコンテンツについて質問することができます。 Box AIは、指定されたファイルに基づいて、コンテンツに関する質問に回答したり、要約を生成したりできます。 ユーザーがドキュメントでの作業中にBox AIを操作する方法の例については、[Box AI for Documents](https://support.box.com/hc/en-us/articles/22158484213267-Box-AI-for-Documents)を参照してください。 ### Box AIを使用してテキストを生成する Box AI APIを使用すると、テキストをゼロから生成したり、Box Note内の既存のテキストから生成したり、プレビュー内の特定のドキュメントに基づいて生成したりすることができます。たとえば、プレビュー表示している記事に基づいてテンプレートやアジェンダを作成するようBox AIに求めることができます。 また、もう1つの例として、Box Notesでは、テキストの生成や既存メモのコンテンツのリファインにBox AIを使用します。詳細については、[Box AI for Notes](https://support.box.com/hc/en-us/articles/22198577315347-Box-AI-for-Notes)を参照してください。 ### メタデータの抽出 [`POST /2.0/ai/extract`](e://post_ai_extract)および[`POST /2.0/ai/extract_structured`](e://post_ai_extract_structured)エンドポイントを使用すると、指定した入力からデータを抽出し、キー/値ペアの形式で返すことができます。 - `extract_structured`エンドポイントは、メタデータテンプレートから取得したあらかじめ定義された構造、または一連のフィールドに従ってデータを抽出する場合に使用します。ドキュメントが短い場合に使用してください。 - ドキュメントが長くて複雑な場合は、抽出エージェント (強化) を使用します。 - `extract`エンドポイントは、プロンプトを使用してファイルからデータを抽出する場合に使用します。プロンプトには、JSONやXMLなどの形式の文字列化バージョン、またはプレーンテキストを含めることができます。 #### 抽出エージェント (強化) 抽出エージェント (強化) は、複雑なドキュメントからキー/値ペアを抽出するよう設計されています。検出や検索を容易にするため、非構造化コンテンツをメタデータに変換します。 Box AI APIを介して[エージェントを使用](g://box-ai/ai-tutorials/extract-metadata-structured#)すると、非構造化データを、実稼働環境のデータベース、サードパーティ製システム、分析で使用する構造化された出力に変換できます。 抽出エージェント (強化) は、Gemini 2.5 Proを使用して思考連鎖推論機能を提供し、抽出された値とその回答の根拠となる推論の両方を返します。 ### 構成の上書き デフォルトのエージェント構成を上書きし、独自のカスタム設定を導入するには、Box AI APIリクエストで利用可能な`ai_agent`パラメータを使用できます。 詳細については、[AIエージェントのデフォルト構成](g://box-ai/ai-agents/get-agent-default-config)を参照してください。 ### Box AI for UI Elements Box AI for UI Elementsはコンテンツプレビューで利用可能で、これにより、Platformアプリケーション内で直接ドキュメントについて質問することができます。[Box AI for UI Elements](g://embed/ui-elements/preview#box-ai-ui-element)を使用してプロジェクトにBox AI機能を埋め込む方法をご確認ください。 ## サポートされている言語 Box AIは、英語、日本語、フランス語、スペイン語など、多くの言語で使用できます。ただし、基になるモデルは、主に英語のドキュメントでトレーニングされています。つまり、他の言語のプロンプトで返される回答は、英語の場合よりも低品質になる可能性があります。テストでは、要約、文法やつづりの確認、質問への回答について満足のいく結果が示されていますが、結果は英語の場合と異なる可能性があることに留意してください。 言語を日本語に切り替えると、より適切な結果が得られます。 ## [ユーザーアクティビティ] レポート (UAR) でのBox AI API [[ユーザーアクティビティ] レポート](https://support.box.com/hc/en-us/articles/4415012490387-User-Activity-Report)には、ユーザーがBoxで実行している操作の概要が示されます。Box管理者は、このレポートを使用して、所定の期間内にユーザーが行った操作を確認できますが、これにはBox AIに対する操作も含まれます。レポートには、Box管理者がBox AIの詳細を取得するために選択できる以下の操作が用意されています。 - **AIクエリ**: ユーザーがBox AIに対してクエリを実行し、レスポンスを受け取りました。 - **AIクエリの失敗**: ユーザーがBox AIに対してクエリを実行したが、レスポンスがありませんでした。 **Source:** [https://ja.developer.box.com/guides/box-ai/](https://ja.developer.box.com/guides/box-ai/) --- ### Box AI Studio **Type:** guide | **Category:** Box AI Studio | **Section:** Developer Guides Box AI Studio Box AI Studioは、Enterprise Advancedアカウントでのみ使用できます。 Box AI Studioを使用すると、ビジネスニーズに最適なカスタムAI… # Box AI Studio Box AI Studioは、Enterprise Advancedアカウントでのみ使用できます。 [Box AI Studio](https://support.box.com/hc/en-us/articles/37228079461267-Enabling-Box-AI-Studio-and-Managing-Agents)を使用すると、ビジネスニーズに最適なカスタムAIエージェントを作成して管理できます。たとえば、コンプライアンスコンサルタントとして機能し、FedRAMP Moderateへの準拠を念頭に置いて顧客のドキュメントに関する質問に回答するAIエージェントを作成できます。 ## Box AI Studioの機能 現在、Box AIエージェントは、ユーザーの質問に回答したり、ドキュメントで使用できるテキストを生成したりするよう構成できます。 ## サポートされている言語 Box AI Studioは、英語、日本語、フランス語、スペイン語など、多くの言語で使用できます。ただし、基になるモデルは、主に英語のドキュメントでトレーニングされています。つまり、他の言語のプロンプトで返される回答は、英語の場合よりも低品質になる可能性があります。テストでは、要約、文法やつづりの確認、質問への回答について満足のいく結果が示されていますが、結果は英語の場合と異なる可能性があることに留意してください。 言語を日本語に切り替えると、より適切な結果が得られます。 **Source:** [https://ja.developer.box.com/guides/ai-studio/](https://ja.developer.box.com/guides/ai-studio/) --- ### Box AIに質問する **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Box AIに質問する Box AI APIは、Business以上をご利用のすべてのお客様が利用できます。 Box AI APIを使用すると、指定した1ファイルまたは一連のファイルについて質問し、そのコンテンツに基づいた応答を得ることができます。たとえば、Box… # Box AIに質問する Box AI APIは、Business以上をご利用のすべてのお客様が利用できます。 Box AI APIを使用すると、指定した1ファイルまたは一連のファイルについて質問し、そのコンテンツに基づいた応答を得ることができます。たとえば、Boxでドキュメントを表示している場合に、Box AIに対して、コンテンツの要約を求めることができます。 ## 開始する前に Platformアプリを作成して認証するには、[Box AIの使い方](g://box-ai/ai-tutorials/prerequisites)に記載されている手順に従っていることを確認してください。 ## リクエストの送信 質問を含むリクエストを送信するには、`POST /2.0/ai/ask`エンドポイントを使用し、必須のパラメータを指定します。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 | パラメータ | 説明 | 使用可能な値 | 例 | | --- | --- | --- | --- | | mode | リクエストのタイプ。単一のファイルと一連のファイルのどちらに関する質問かを指定できます。単一のテキストファイルの場合、Box AI APIは、最大1 MBのテキストレプリゼンテーションをサポートします。ファイルサイズが1 MBを超える場合は、テキストレプリゼンテーションの最初の1 MBが処理されます。複数のファイルを対象とする場合、上限は25ファイルです。Box AIは、解像度が1024 x 1024ピクセルの画像ドキュメントを処理し、最大5つの画像か、複数ページの画像の場合は5ページを処理します。画像数または画像ページ数が5を超える場合は、最初の5つの画像または5ページが処理されます。モードをsingle_item_qaに設定した場合、items配列に列挙できる要素は1つのみです。現在、Box AIでは、マルチモーダルリクエストがサポートされていません。画像とテキストの両方が送信された場合、Box AIで処理されるのはテキストのみです。 | single_item_qa, multiple_item_qa | single_item_qa | | prompt | ドキュメントまたはコンテンツに関する質問。プロンプトの長さは10000文字以内にする必要があります。 | | What is this document about? | | dialogue_history.prompt | 以前にクライアントによって提供され、大規模言語モデル (LLM) が回答したプロンプト。 | Make my email about public APIs sound more professional | | | dialogue_history.answer | 以前にLLMから提供された回答。 | Here is a draft of your professional email about public APIs. | | | dialogue_history.created_at | プロンプトに対する前回の回答が作成された時点のISO日付形式のタイムスタンプ。 | 2012-12-12T10:53:43-08:00 | | | include_citations | 回答で引用情報を返すかどうかを指定します。 | true, false | true | | items.id | 入力データとして指定するBoxファイルID。 | | 112233445566 | | items.type | 指定した入力データのタイプ。現在は、単一のファイルまたは複数のファイルを指定できます。 | file | file | | items.content | 項目のコンテンツ。通常はテキストレプリゼンテーションです。 | | An application programming interface (API) is a way for two or more computer programs or components to communicate with each other. It is a type of software interface... | | ai_agent | デフォルトのエージェント構成を上書きするために使用されるAIエージェント。このパラメータを使用すると、短いテキストや長いテキストを表すmodelパラメータを使用してデフォルトのLLMをカスタムのLLMに置き換えたり、よりカスタマイズされたユーザーエクスペリエンスを実現できるようにベースとなるpromptを微調整したり、temperatureなどのLLMパラメータを変更して結果の創造性を調整したりすることができます。ai_agentパラメータを使用する前に、GET 2.0/ai_agent_defaultリクエストを使用してデフォルト構成を取得できます。具体的なユースケースについては、AIモデルの上書きに関するチュートリアルを参照してください。 | | | ## ユースケース ## 項目について質問する この例では、`POST ask/ai` APIを使用して1つ以上の項目について質問する方法を示します。このエンドポイントを使用する際は、指定する項目の数に応じて、忘れずに`mode`パラメータを指定してください。 ``` curl -i -L POST "https://api.box.com/2.0/ai/ask" \ -H "content-type: application/json" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "mode": "single_item_qa", "items": [ { "id": "12345678", "type": "file" } ], "prompt": "List the guidelines on creating questions in Box AI for Documents" }' ``` レスポンスは次のようになります。 ``` { "answer": "The guidelines for working with questions in Box AI for Documents are as follows:\n\n1. Box AI pulls information only from the document loaded in preview.\n2. If questions fall outside the scope of the document, Box AI will inform you that it cannot answer.\n3. Be specific when asking questions; use parameters like numbered lists, brevity, tables, and central themes or key points.\n4. Aim to stay within the scope of the document.\n5. Focus on text-based responses only.", "created_at": "2024-11-04T02:30:09.557-08:00", "completion_reason": "done" } ``` ## contentパラメータを使用して質問する Box AIへの入力のソースとして`content`パラメータを使用すると、それがプライマリソースとして使用されます。 ``` curl -i -L POST "https://api.box.com/2.0/ai/ask" \ -H "content-type: application/json" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "mode": "single_item_qa", "items": [ { "id": "12345678", "type": "file", "content": "This is a document about Box AI For documents. It consists of the functionality summary and guidelines on how to work with Box AI. Additionally, it provides a set of best practices for creating questions." } ], "prompt": "List the guidelines on creating questions in Box AI for Documents" }' ``` このリクエストに対するレスポンスは、ファイルのコンテンツではなく`content`パラメータに基づきます。 ``` { "answer": "The document does not provide specific guidelines on working with questions in Box AI for Documents. It only mentions that it includes a set of best practices for creating questions, but the details of those guidelines are not included in the text provided. If you have more information or another document, I can help further!", "created_at": "2024-11-04T02:31:51.125-08:00", "completion_reason": "done" } ``` ## citationsパラメータを使用して質問する `citations`パラメータを`true`に設定すると、レスポンスには、ソースファイルまたはBox AIが回答をまとめるのに使用したファイルからの抜粋が含まれます。 ``` curl -i -L POST "https://api.box.com/2.0/ai/ask" \ -H "content-type: application/json" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "mode": "multiple_item_qa", "include_citations": true, "items": [ { "id": "12345678", "type": "file" } ], "prompt": "List the guidelines on working with responses in Box AI for Documents" }' ``` その結果の回答には、ソースファイルとコンテンツの直接引用が含まれます。 ``` { "answer": "The guidelines for working with questions in Box AI for Documents are as follows:\n\n1. Box AI pulls information only from the document loaded in preview, and cannot answer questions outside its scope.\n2. Be specific when asking questions; use parameters like numbered lists, brevity, tables, and central themes or key points.\n3. Examples of better phrasing include asking for a numbered list of key points instead of just \"list key points,\" and requesting a succinct outline of important points rather than a general inquiry about the document's purpose.\n4. Stay within the scope of the document and focus on text-based responses only.", "created_at": "2024-11-04T02:35:00.578-08:00", "completion_reason": "done", "citations": [ { "type": "file", "id": "12345678", "name": "Box AI for Documents.docx", "content": "Guidelines for Box AI questions\nBox AI pulls information only from the document you loaded in preview." }, { "type": "file", "id": "12345678", "name": "Box AI for Documents.docx", "content": "If you ask any questions outside of the scope of the document, Box AI informs you that it cannot answer the question with the information provided." }, { "type": "file", "id": "12345678", "name": "Box AI for Documents.docx", "content": "As you ask Box AI to analyze your document, consider these suggestions:\n· Be as specific as possible." }, { "type": "file", "id": "12345678", "name": "Box AI for Documents.docx", "content": "Box AI for Documents\n\nWhen viewing a document in Box, you can ask Box AI to summarize document content, search key points, and write outline drafts based on your document files." } ] } ``` **Source:** [https://ja.developer.box.com/guides/box-ai/ai-tutorials/ask-questions/](https://ja.developer.box.com/guides/box-ai/ai-tutorials/ask-questions/) --- ### Box AIのチュートリアル **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Box AIのチュートリアル 掲載されているチュートリアルには、Q&Aとテキスト生成、メタデータ抽出、AIモデルの構成の上書きに関する概要とユースケースが示されています。 # Box AIのチュートリアル 掲載されているチュートリアルには、Q&Aとテキスト生成、メタデータ抽出、AIモデルの構成の上書きに関する概要とユースケースが示されています。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-tutorials/](https://ja.developer.box.com/guides/box-ai/ai-tutorials/) --- ### Box AIの使い方 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Box AIの使い方 ソリューションにBox AI APIを実装するには、その機能にアクセスできることを確認する必要があります。また、Box AIスコープが有効になっているPlatformアプリケーションと、コールを認証するための開発者トークンも必要です。 Box AI API… # Box AIの使い方 ソリューションにBox AI APIを実装するには、その機能にアクセスできることを確認する必要があります。また、Box AIスコープが有効になっているPlatformアプリケーションと、コールを認証するための開発者トークンも必要です。 Box AI APIを使用するには、管理者が管理コンソールでこのAPIを有効にしていることを確認してください。サンドボックスでBox AI APIを使用したい場合は、[こちらのフォーム](https://forms.gle/Nsh3TwM3W8qg4U35A)を使用してBox AIチームにアクセス権限をリクエストしてください。 ## Platformアプリケーションの作成 まず、コールの実行に使用するPlatformアプリケーションを作成する必要があります。アプリケーションを作成するには、[Platformアプリの作成](g://applications/app-types/platform-apps)に関するガイドに従ってください。 ## Box AI APIへのアクセスの有効化 Box AI APIを操作するには、アプリケーションに`ai.readwrite`[スコープ](g://api-calls/permissions-and-errors/scopes)を追加する必要があります。このスコープを追加する前に、Box管理者からBox AI APIへのアクセス権限が付与されていることを確認してください。アプリの構成設定で [**AIを管理する**] オプションが表示されていない場合は、管理者までお問い合わせください。 スコープを追加するには、以下の手順を実行します。 開発者コンソールで、目的のアプリケーションを開きます。 [**構成**] > [**必須のアクセススコープ**] > [**コンテンツ操作**] に移動します。 [**AIを管理する**] スコープを選択します。Box Platformでは、コールを実行すると自動的にこのスコープが含まれます。あるアプリのコラボレータとして追加されているのにBox AI APIにアクセスできない場合は、[**AIを管理する**] スコープのチェックボックスがオンになった状態で、グレー表示になっています。つまり、アプリの所有者のAIのスコープは有効になっていますが、この設定を変更することはできません。 [承認または有効化](g://authorization)のためにアプリを送信します。既存のアプリケーションに対してBox AI APIを有効にする場合は、アプリケーションを[再承認](g://authorization/platform-app-approval#re-authorization-on-changes)する必要があります。 ## 開発者トークンの生成 リクエストの送信時にアプリを認証するには、開発者トークンが必要です。 トークンを生成するには、以下の手順を実行します。 1. [**開発者コンソール**] > [**Platformアプリ**] に移動します。 2. 右側の**オプションメニュー**ボタン ([…]) をクリックします。 3. [**開発者トークンを生成**] を選択します。トークンが自動的に生成され、クリップボードに保存されます。 アプリを開いて、[**構成**] > [**開発者トークン**] に移動してトークンを生成することもできます。 開発者トークンの有効期限は1時間のみです。 詳細については、[開発者トークン](g://authentication/tokens/developer-tokens)を参照してください。トークンを生成したら、cURLや他のクライアント ([Postman](g://tooling/postman)など) で使用してコールを実行できます。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-tutorials/prerequisites/](https://ja.developer.box.com/guides/box-ai/ai-tutorials/prerequisites/) --- ### Box AIを使用してテキストを生成する **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Box AIを使用してテキストを生成する Box AI APIは、Business以上をご利用のすべてのお客様が利用できます。 Box AIを使用すると、提供されたコンテンツに基づいてテキストを生成できます。たとえば、Box Notes… # Box AIを使用してテキストを生成する Box AI APIは、Business以上をご利用のすべてのお客様が利用できます。 Box AIを使用すると、提供されたコンテンツに基づいてテキストを生成できます。たとえば、Box Notesで参照または作成したコンテンツに基づいてテンプレートを生成するようBox AIに求めることができます。その後、生成されたテキストを直接ドキュメントに埋め込むことができます。 ## 開始する前に Platformアプリを作成して認証するには、[Box AIの使い方](g://box-ai/ai-tutorials/prerequisites)に記載されている手順に従っていることを確認してください。 ## リクエストの送信 リクエストを送信するには、`POST /2.0/ai/text_gen`エンドポイントを使用します。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 **注**: `items`配列に含めることができる要素は1つだけです。 | パラメータ | 説明 | 例 | | --- | --- | --- | | prompt | Box AIに対するテキストの生成またはリファインのリクエスト。プロンプトの長さは10000文字以内にする必要があります。 | 週1回の営業会議のアジェンダを作成してください。 | | items.id | ドキュメントのBoxファイルID。 | 1233039227512 | | items.type | 指定した入力データのタイプ。 | file | | items.content | 項目のコンテンツ (多くの場合はテキストレプリゼンテーション)。 | This article is about Box AI. | | dialogue_history.prompt | 以前にクライアントによって提供され、大規模言語モデル (LLM) が回答したプロンプト。 | Make my email about public APIs sound more professional | | dialogue_history.answer | 以前にLLMから提供された回答。 | Here is a draft of your professional email about public APIs. | | dialogue_history.created_at | プロンプトに対する前回の回答が作成された時点のISO日付形式のタイムスタンプ。 | 2012-12-12T10:53:43-08:00 | | ai_agent | デフォルトのエージェント構成を上書きするために使用されるAIエージェント。このパラメータを使用すると、たとえば、modelパラメータを使用してデフォルトのLLMをカスタムのLLMに置き換えたり、よりカスタマイズされたユーザーエクスペリエンスを実現できるようにベースとなるpromptを微調整したり、temperatureなどのLLMパラメータを変更して結果の創造性を調整したりすることができます。ai_agentパラメータを使用する前に、GET 2.0/ai_agent_defaultリクエストを使用してデフォルト構成を取得できます。具体的なユースケースについては、AIモデルの上書きに関するチュートリアルを参照してください。 | | ## ユースケース 指定されたファイルコンテンツとプロンプトに基づいてテキストを生成します。 ``` curl -i -L POST "https://api.box.com/2.0/ai/text_gen" \ -H "content-type: application/json" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "items": [ { "id": "12345678", "type": "file" } ], "prompt": "Create a short blog post that provides information on Box AI for Documents and focuses on best practices for asking questions. You can add emoticons, but not too many." }' ``` 結果は次のようになります。 ``` { "answer": "📝 **Box AI for Documents: Best Practices for Asking Questions** 🤔\n\n---\n\nWelcome to our blog post on Box AI for Documents! 🎉 Today, we're going to dive into some best practices when it comes to asking questions within this innovative platform.\n\n1. **Be Clear and Concise**: When formulating a question in Box Notes, make sure your query is clear and to the point. This helps Box AI understand exactly what you're looking for.\n\n2. **Provide Context**: Giving context around your question can significantly improve the accuracy of the response generated by Box AI. Include relevant details or background information.\n\n3. **Use Keywords**: Utilize keywords related to your query within the question itself. This can help Box AI better identify the main topic of your inquiry.\n\n4. **Avoid Ambiguity**: Try to avoid vague or ambiguous questions that could lead to misunderstandings. The more precise you are, the better Box AI can assist you.\n\n5. **Review Suggestions Carefully**: After receiving suggestions from Box AI, take the time to review them carefully before incorporating them into your document. Ensure they align with your intended message.\n\nBy following these best practices, you can maximize the effectiveness of Box AI for Documents and streamline your workflow like never before! 💼✨\n\nStay tuned for more tips and tricks on leveraging technology for enhanced productivity! 👩‍💻🚀", "created_at": "2024-11-04T02:46:23.459-08:00", "completion_reason": "done" } ``` **Source:** [https://ja.developer.box.com/guides/box-ai/ai-tutorials/generate-text/](https://ja.developer.box.com/guides/box-ai/ai-tutorials/generate-text/) --- ### Box APIとSSO **Type:** guide | **Category:** 認証 | **Section:** Developer Guides Box APIとSSO 多くのBox Enterpriseでは、シングルサインオン (SSO) を使用して、Boxにログインしている管理対象ユーザーを認証します。Box Platformに作成されたアプリケーションとSSO… # Box APIとSSO 多くのBox Enterpriseでは、**シングルサインオン** (SSO) を使用して、Boxにログインしている[管理対象ユーザー](page://platform/user-types/#managed-users)を認証します。Box Platformに作成されたアプリケーションとSSOプロバイダの対話方法は、作成されるアプリケーションの種類によって異なります。 ## クライアント側認証を使用するPlatformアプリ [OAuth 2.0](g://authentication/oauth2)を使用するよう構成された[Platformアプリ](g://applications/app-types/platform-apps)でユーザーが認証されると、Boxは、企業でSSOを使用するよう構成されているかどうかを検出します。SSOを使用するよう構成されている場合、ユーザーはブラウザにリダイレクトされ、企業の構成済みのSSOログイン画面が表示されます。 ### SSOの有効化とSSO必須モード 企業は、**SSO必須モード**と**SSOの有効化**の2つの方法のいずれかで、SSOを構成できます。 SSOが有効化されていても必須ではない場合、管理対象ユーザーは次のいずれかを選択できます。 - Boxのユーザー名とパスワードを使用してログインする - SSOプロバイダを使用してログインする SSOが有効化され、必須になっている場合、すべての管理対象ユーザーは、企業の構成済みSSOプロバイダでログインするよう強制されます。この場合、ログインを試みるユーザーは、SAMLを介して渡されるメールアドレスと一致するBoxアカウントを持っているだけでなく、SSO側で構成されている必要があります。 SSOが必須モードに設定されている企業では、SSOからユーザーを除外することはできません。これは、プラットフォームのユースケースのみで使用されている場合でも当てはまります。 ## サーバー側認証を使用するPlatformアプリ [JWT](g://authentication/jwt)または[クライアント資格情報許可](g://authentication/client-credentials)を使用する[Platformアプリ](g://applications/app-types/platform-apps)および[アプリトークン](g://authentication/app-token)認証を使用する[アクセス制限付きアプリ](guide://applications/web-app-integrations)では、Boxでの認証にSSOは使用されません。 サーバー側認証を使用するPlatformアプリは、Boxとの通信にサーバー間のAPIコールのみを使用します。このシナリオでのエンドユーザーの認証方法は、Boxではなくアプリケーションが決定します。 つまり、アプリケーションによるエンドユーザーの認証はそのアプリケーションによって決まりますが、アプリケーションによるBoxの承認とはまったく異なります。 これらのユースケースでは、アプリケーションは通常の管理対象ユーザーとしてではなく、サービスアカウントまたはApp Userとして認証します。このようなユーザータイプには、デフォルトでは管理対象ユーザーのデータへのアクセス権限がありません。これらのアプリケーションから他の管理対象ユーザーのデータにアクセスできるようにするには、明示的な[管理者の承認](g://authorization/platform-app-approval)が必要です。 ## カスタムスキル [カスタムスキル](g://applications/app-types/custom-skills)は、独自の方法で認証されます。この方法では、スキルイベントごとに固有のアクセストークンセットがアプリケーションに提供されます。 この場合、アプリケーションはユーザーと直接やり取りしないため、SSOは関与しません。 Skillsを使用した場合でも、スキルイベントをトリガーする可能性があるフォルダにファイルをアップロードするユーザーは、ウェブアプリまたはモバイルアプリにログインする必要があります。このログインでは、必要に応じてSSOの使用が求められます。 **Source:** [https://ja.developer.box.com/guides/authentication/sso/](https://ja.developer.box.com/guides/authentication/sso/) --- ### Box App Userの検索または作成 **Type:** quick-start | **Category:** SSOとApp User | **Section:** Developer Guides Box App Userの検索または作成 この時点で、アプリケーションコードが作成されています。このコードでは、ユーザーアクセスからのトラフィックを処理し、これらをログインのためにOktaに転送して、Oktaのユーザー情報を提供した後、最終的にはBox… # Box App Userの検索または作成 この時点で、アプリケーションコードが作成されています。このコードでは、ユーザーアクセスからのトラフィックを処理し、これらをログインのためにOktaに転送して、Oktaのユーザー情報を提供した後、最終的にはBoxのハンドラ (現時点で未作成) に渡します。 このセクションでは、以下のようにBoxの最終的なコンポーネントを取り上げます。 - Oktaユーザーに、関連付けられたBox App Userアカウントがあるかどうかを検証します。 - (関連付けられているアカウントがない場合は) 関連付けられているOktaレコードに新しいApp Userを作成します。 - Boxユーザーのトークンを取得してユーザー固有のAPIコールを実行します。 ## Platform App Userの作成 ユーザーを検証する前に、関連付けられたBoxユーザーアカウントがOktaユーザーにない場合のために、そのアカウントを作成する方法が必要です。 ローカルアプリケーションディレクトリで、手順1で作成した`server.js`ファイルを読み込みます。 次の`box`オブジェクトをファイルに追加し、保存します。 ``` const box = (() => { const configJSON = JSON.parse(fs.readFileSync(path.resolve(__dirname, './config.json'))); const sdk = boxSDK.getPreconfiguredInstance(configJSON); const client = sdk.getAppAuthClient('enterprise'); let oktaRecord = {}; let userId = ''; let userClient; function validateUser(userInfo, res) { // TODO: VALIDATE USER } function createUser(res) { // TODO: CREATE USER } return { validateUser, createUser }; })(); ``` このオブジェクトはいくつかの項目を定義します: - 構成: Box Node SDKの新しいインスタンスがインスタンス化され、多数の変数とともにオブジェクト関数で使用可能になります。 - `validateUser`関数: 関連付けられたOktaユーザーにBoxユーザーが存在するかどうかを検証するためのコードを保持します。 - `createUser`関数: 関連付けられたOktaユーザーIDにバインドされる新しいBoxユーザーを作成します。 この構造を定義したら、`// TODO: CREATE USER`セクションを以下のコードに置き換えます。 ``` const spaceAmount = 1073741824; // ~ 1gb client.enterprise.addAppUser( this.oktaRecord.name, { space_amount: spaceAmount, external_app_user_id: this.oktaRecord.sub } ).then(appUser => { res.send(`New user created: ${appUser.name}`); }); ``` このコードにより、新しいBox App Userが作成され、ユーザーオブジェクトの`external_app_user_id`パラメータが一意のOktaユーザーIDに設定されます。これで、2つのユーザーレコード間のバインドが定義されます。 ローカルアプリケーションディレクトリで、手順1で作成した`/src/main/java/com/box/sample/Application.java`ファイルを読み込みます。別のアプリケーション名を使用している場合は、同等のディレクトリを読み込みます。 `public class Application`の定義内に、以下のメソッドを追加します。 ``` static String validateUser(OidcUser user) throws IOException { // TODO: VALIDATE USER } static String createUser(OidcUser user) { // TODO: CREATE USER } ``` これらのメソッドはBoxユーザーの検証と作成を処理します。各メソッドの詳細は以下のとおりです。 - `validateUser`: 関連付けられたOktaユーザーにBoxユーザーが存在するかどうかを検証するためのコードを保持します。 - `createUser`: 関連付けられたOktaユーザーIDにバインドされる新しいBoxユーザーを作成します。 これらのメソッドを定義したら、`# TODO: CREATE USER`を以下のコードに置き換えます。 ``` String oktaName = (String) user.getAttributes().get("name"); Object oktaSub = user.getAttributes().get("sub"); CreateUserParams params = new CreateUserParams(); params.setExternalAppUserId((String) oktaSub); BoxUser.Info createdUserInfo = BoxUser.createAppUser(api, oktaName, params); return "New User Created: " + createdUserInfo.getName(); ``` このコードにより、新しいBox App Userが作成され、ユーザーオブジェクトの`external_app_user_id`パラメータが一意のOktaユーザーIDに設定されます。これで、2つのユーザーレコード間のバインドが定義されます。 ローカルアプリケーションディレクトリで、手順1で作成した`server.py`ファイルを読み込みます。 1. 既存のコードのルート定義の下に、以下の`Box`クラスオブジェクトを追加します。 ``` # Box user class class Box(object): def __init__(self): # Instantiate Box Client instance auth = JWTAuth.from_settings_file('../config.json') self.box_client = Client(auth) # Validate if Box user exists def validateUser(self, g): # TODO: VALIDATE USER # Create new Box user def createUser(self, ouser): # TODO: CREATE USER ``` このクラスで定義する内容は以下のとおりです。 - `init`: 初期化時に、Box Python SDKの新しいインスタンスがインスタンス化され、オブジェクトのメソッドで使用可能になります。 - `validateUser`メソッド: ユーザーオブジェクトを入力として受け取り、関連付けられたOktaユーザーにBoxユーザーが存在するかどうかを検証するためのコードを保持します。 - `createUser`メソッド: ユーザーオブジェクトを入力として受け取り、関連付けられたOktaユーザーIDにバインドされる新しいBoxユーザーを作成します。 このクラスを定義したら、`# TODO: CREATE USER`セクションを以下のコードに置き換えます。 ``` user_name = f'{ouser.profile.firstName} {ouser.profile.lastName}' uid = ouser.id space = 1073741824 user = self.box_client.create_user(user_name, None, space_amount=space, external_app_user_id=uid) return f'New user created: {user_name}' ``` このコードにより、新しいBox App Userが作成され、ユーザーオブジェクトの`external_app_user_id`パラメータが一意のOktaユーザーIDに設定されます。これで、2つのユーザーレコード間のバインドが定義されます。 `Controllers` > `AccountController.cs`ファイル内で、関連付けられた`AccountController`クラスの中に以下のメソッドを追加します。 ``` static async Task validateUser(string name, string sub) { // Configure Box SDK instance var reader = new StreamReader("config.json"); var json = reader.ReadToEnd(); var config = BoxConfig.CreateFromJsonString(json); var sdk = new BoxJWTAuth(config); var token = sdk.AdminToken(); BoxClient client = sdk.AdminClient(token); // Search for matching Box app user for Okta ID BoxCollection<BoxUser> users = await client.UsersManager.GetEnterpriseUsersAsync(externalAppUserId:sub); System.Diagnostics.Debug.WriteLine(users.TotalCount); if (users.TotalCount > 0) { // TODO: VALIDATE USER } else { // TODO: CREATE USER } } ``` このコードブロック内では、手順2でダウンロードした`config.json`ファイルを使用して新しいBox .NET SDKクライアントが作成されます。このコードサンプルの場合、その`config.json`ファイルはローカルアプリケーションディレクトリのルートに格納されます。 その後、Oktaの一意のID `sub`が`externalAppUserId`検索パラメータとして渡され、クライアントを使用して、Boxに登録されている会社内のすべてのユーザーが検索されます。その後、返されるユーザーの数を確認すると、有効なユーザーが検出されたかどうかがわかります。 この構造を定義したら、// TODO: CREATE USERセクションを以下のコードに置き換えます。 ``` var userRequest = new BoxUserRequest() { Name = name, ExternalAppUserId = sub, IsPlatformAccessOnly = true }; var user = await client.UsersManager.CreateEnterpriseUserAsync(userRequest); System.Diagnostics.Debug.WriteLine("New user created: " + user.Name); ``` このコードにより、新しいBox App Userが作成され、ユーザーオブジェクトの`external_app_user_id`パラメータが一意のOktaユーザーIDに設定されます。これで、2つのユーザーレコード間のバインドが定義されます。 その後、新しいユーザーが作成されたことを示す診断メッセージが書き戻されます。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## Oktaユーザーの検証 ここまで、ユーザーを作成する機能を定義してきました。次に定義するコードでは、Boxを使用する会社の全ユーザーを検索して関連付けられた`external_app_user_id`を探すことで、Oktaユーザーレコードに関連付けられたBoxユーザーレコードが存在するかどうかを検証します。 `// TODO: VALIDATE USER`コメントを以下の内容に置き換えます。 ``` this.oktaRecord = userInfo client.enterprise.getUsers({ "external_app_user_id": this.oktaRecord.sub }) .then((result) => { if (result.total_count > 0) { // TODO: MAKE AUTHENTICATED USER CALL } else { // User not found - create user this.createUser(); } }); ``` Box Node SDKを使用した場合、`enterprise.getUsers`を呼び出して会社の全ユーザーを検索し、一意のOktaユーザーIDを`external_app_user_id`値として渡すことで、そのユーザーに特化した検索を行います。 見つかった場合 (つまり、レコードの数が1以上だった場合) は、そのユーザーレコードを使用して、Box APIに対して認証済みの呼び出しを実行できます。これは次のセクションで定義します。 見つからなかった場合は、1つ前のセクションで定義した`createUser`関数を呼び出して、その`external_app_user_id`と関連付けられた新しいBoxユーザーを作成します。 `// TODO: VALIDATE USER`コメントを以下の内容に置き換えます。 ``` // Set up Box enterprise client Reader reader = new FileReader("config.json"); BoxConfig config = BoxConfig.readFrom(reader); api = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(config); // Get Okta user sub for unique ID attachment to Box user Object oktaSub = user.getAttributes().get("sub"); // Check enterprise users for matching external_app_user_id against Okta sub URL url = new URL("https://api.box.com/2.0/users?external_app_user_id=" + oktaSub); BoxAPIRequest request = new BoxAPIRequest(api, url, "GET"); BoxJSONResponse jsonResponse = (BoxJSONResponse) request.send(); JsonObject jsonObj = jsonResponse.getJsonObject(); JsonValue totalCount = jsonObj.get("total_count"); // Set return string String outputString = ""; if (totalCount.asInt() > 0) { // TODO: MAKE AUTHENTICATED USER CALL } else { outputString = createUser(user); } return outputString; ``` Box Java SDKの汎用リクエストメソッドを使用した場合、`https://api.box.com/2.0/users`エンドポイントを直接呼び出して会社のユーザーを検索し、一意のOktaユーザーIDを`external_app_user_id`値として渡すことで、そのユーザーに特化した検索を行います。 見つかった場合 (つまり、レコードの数が1以上だった場合) は、そのユーザーレコードを使用して、Box APIに対して認証済みの呼び出しを実行できます。これは次のセクションで定義します。 見つからなかった場合は、1つ前のセクションで定義した`createUser`関数を呼び出して、その`external_app_user_id`と関連付けられた新しいBoxユーザーを作成します。 `# TODO: VALIDATE USER`コメントを以下の内容に置き換えます。 ``` # Fetch Okta user ID uid = g.user.id # Validate is user exists url = f'https://api.box.com/2.0/users?external_app_user_id={uid}' response = self.box_client.make_request('GET', url) user_info = response.json() # If user not found, create user, otherwise fetch user token if (user_info['total_count'] == 0): self.createUser(g.user) else: # TODO: MAKE AUTHENTICATED USER CALL ``` Box Python SDKの汎用リクエストメソッドを使用した場合、`https://api.box.com/2.0/users`エンドポイントを直接呼び出して会社のユーザーを検索し、一意のOktaユーザーIDを`external_app_user_id`値として渡すことで、そのユーザーに特化した検索を行います。 見つかった場合 (つまり、レコードの数が1以上だった場合) は、そのユーザーレコードを使用して、Box APIに対して認証済みの呼び出しを実行できます。これは次のセクションで定義します。 見つからなかった場合は、1つ前のセクションで定義した`createUser`関数を呼び出して、その`external_app_user_id`と関連付けられた新しいBoxユーザーを作成します。 `// TODO: VALIDATE USER`コメントを以下の内容に置き換えます。 ``` var userId = users.Entries[0].Id; var userToken = sdk.UserToken(userId); BoxClient userClient = sdk.UserClient(userToken, userId); // TODO: MAKE AUTHENTICATED USER CALL ``` 有効なユーザーが見つかった場合、Box IDが抽出されます。このIDは、アプリケーションではなく明確にそのユーザーのスコープに設定されたBox SDKクライアントの生成に使用されます。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## 認証済みのBoxユーザーの呼び出し Oktaユーザーの関連付けられたBoxユーザーが検出されたら、明確に[そのユーザーのスコープに設定された](g://authentication/jwt/user-access-tokens)アクセストークンを生成してBox APIコールを実行します。その後、現在のユーザーを取得するための呼び出しを実行して、すべてが機能していることと有効なユーザーアクセストークンがあることを確認します。 1つ前のセクションの`// TODO: MAKE AUTHENTICATED USER CALL`を次の内容に置き換えます。 ``` this.userId = result.entries[0].id; this.userClient = sdk.getAppAuthClient('user', this.userId); this.userClient.users.get(this.userClient.CURRENT_USER_ID) .then(currentUser => { res.send(`Hello ${currentUser.name}`); }); ``` 見つかったユーザーのBoxユーザーIDをキャプチャし、そのユーザーのスコープに設定されたユーザークライアントオブジェクトを生成します。最後に、このユーザークライアントオブジェクトを使用して現在のユーザーを取得する呼び出しを実行すると、Oktaに関連付けられたBox App Userのユーザープロフィール情報が返されます。 1つ前のセクションの`// TODO: MAKE AUTHENTICATED USER CALL`を次の内容に置き換えます。 ``` // User found, authenticate as user // Fetch user ID JsonArray entries = (JsonArray) jsonObj.get("entries"); JsonObject userRecord = (JsonObject) entries.get(0); JsonValue userId = userRecord.get("id"); // Get user scoped access token and fetch current user with it BoxDeveloperEditionAPIConnection userApi = BoxDeveloperEditionAPIConnection.getAppUserConnection(userId.asString(), config); BoxUser currentUser = BoxUser.getCurrentUser(userApi); BoxUser.Info currentUserInfo = currentUser.getInfo(); outputString = "Hello " + currentUserInfo.getName(); ``` 見つかったユーザーのBoxユーザーIDをキャプチャし、そのユーザーのスコープに設定されたユーザークライアントオブジェクトを生成します。最後に、このユーザークライアントオブジェクトを使用して現在のユーザーを取得する呼び出しを実行すると、Oktaに関連付けられたBox App Userのユーザープロフィール情報が返されます。 1つ前のセクションの`# TODO: MAKE AUTHENTICATED USER CALL`を次の内容に置き換えます。 ``` # Create user client based on discovered user user = user_info['entries'][0] user_to_impersonate = self.box_client.user(user_id=user['id']) user_client = self.box_client.as_user(user_to_impersonate) # Get current user current_user = user_client.user().get() return f'Hello {current_user.name}' ``` 見つかったユーザーのBoxユーザーIDをキャプチャし、そのユーザーのスコープに設定されたユーザークライアントオブジェクトを生成します。最後に、このユーザークライアントオブジェクトを使用して現在のユーザーを取得する呼び出しを実行すると、Oktaに関連付けられたBox App Userのユーザープロフィール情報が返されます。 1つ前のセクションの`// TODO: MAKE AUTHENTICATED USER CALL`を次の内容に置き換えます。 ``` BoxUser currentUser = await userClient.UsersManager.GetCurrentUserInformationAsync(); System.Diagnostics.Debug.WriteLine("Current user name: " + currentUser.Name); ``` このユーザーのスコープに設定されたクライアントを使用すると、Boxから現在のユーザーレコードが抽出され、現在のユーザー名を含む診断メッセージが書き戻されます。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## まとめ - OktaユーザーがBoxユーザーとして存在するかどうかを検証しました。 - 存在しない場合は新しいApp Userを作成しました。 - 既存のBoxユーザーに対してBox APIコールを実行しました。 Boxユーザーの検証と作成を設定しました **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/find-or-create-box-users/](https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/find-or-create-box-users/) --- ### Box Archive **Type:** guide | **Category:** Box Archive | **Section:** Developer Guides Box Archive Box Archiveは、Enterprise Advancedアカウントでのみ使用できます。 Box Archive… # Box Archive Box Archiveは、Enterprise Advancedアカウントでのみ使用できます。 Box Archiveを使用すると、アーカイブを作成および管理できます。アーカイブとは、冗長なコンテンツ、古くなったコンテンツ、または重要でないコンテンツの保存専用のフォルダです。アーカイブ内のコンテンツは、企業が所有しており、以前の所有者やコラボレータがアクセスすることはできません。 ## アーカイブはフォルダ アーカイブは、特別な種類のフォルダです。Box Archive APIを使用すると、アーカイブの作成、リスト取得、更新、削除を実行できます。ただし、アーカイブまたはアーカイブ内のコンテンツを操作する他のAPIも存在します。サポートされているAPIの詳細なリストについては、[サポートされているAPI](g://archives/supported-apis)ガイドを参照してください。 ## 必須のスコープ Box Archive APIのいずれかを使用する前に、[管理コンソール内のBox Archive](https://support.box.com/hc/en-us/p/Product_Page_2023?section-id=40168863437843)にアクセスできることを確認してください。Box Platformアプリでは、`GCM`および`Read and write all files and folders`[スコープ](g://api-calls/permissions-and-errors/scopes)が有効になっている必要があります。アーカイブを表示するだけで、変更しない予定の場合は、`Read and write all files and folders`スコープではなく`Read all files and folders`スコープを使用してください。さらに、作成中のアーカイブに[ストレージポリシー](r://storage-policy)を割り当てられるようにするには、企業にBox Zones機能へのアクセス権限、アプリに`Manage users`スコープが必要になります。 `GCM`スコープは、開発者コンソールでは使用できないため、カスタマーサポートに連絡して有効にする必要があります。 **Source:** [https://ja.developer.box.com/guides/archives/](https://ja.developer.box.com/guides/archives/) --- ### Box Archiveからのコンテンツの復元 **Type:** guide | **Category:** Box Archive | **Section:** Developer Guides Box Archiveからのコンテンツの復元 このガイドでは、誤ってアーカイブしたコンテンツを復元する方法について説明します。 アーカイブからのファイルまたはフォルダの復元 PUT /files/:id APIエンドポイントを使用してアーカイブからファイルを復元するか、PUT… # Box Archiveからのコンテンツの復元 このガイドでは、誤ってアーカイブしたコンテンツを復元する方法について説明します。 ## アーカイブからのファイルまたはフォルダの復元 [`PUT /files/:id`](e://put-files-id) APIエンドポイントを使用してアーカイブからファイルを復元するか、[`PUT /folders/:id`](e://put-folders-id)エンドポイントを使用してアーカイブからフォルダを復元します。`id`パラメータは、アーカイブから復元するファイル/フォルダのIDです。復元先を指定するには、リクエスト本文内で`parent.id`[パラメータ](https://developer.box.com/reference/put-folders-id/#param-parent-id)を使用します。これは、ファイル/フォルダの復元先となるフォルダ (任意のユーザーが所有している可能性があります) のIDです。 ファイル/フォルダをユーザーのルートフォルダに復元するには、`parent.id`の値として`0`を使用します。さらに、リクエスト本文で`parent.user_id`[パラメータ](https://developer.box.com/reference/put-folders-id/#param-parent-user_id)にユーザーのIDを渡します。 **Source:** [https://ja.developer.box.com/guides/archives/restore-content/](https://ja.developer.box.com/guides/archives/restore-content/) --- ### Box ArchiveでサポートされているAPI **Type:** guide | **Category:** Box Archive | **Section:** Developer Guides Box ArchiveでサポートされているAPI 基本的なBox Archive APIを使用すると、アーカイブの作成、リスト取得、更新、削除を実行できますが、他のAPIを使用してアーカイブやそのコンテンツを操作することもできます。このようなAPI… # Box ArchiveでサポートされているAPI 基本的なBox Archive APIを使用すると、アーカイブの作成、リスト取得、更新、削除を実行できますが、他のAPIを使用してアーカイブやそのコンテンツを操作することもできます。このようなAPIの詳細なリストについては、以下の表を参照してください。 これらのAPIを使用するには、アプリケーションで[`GCM`スコープ](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#global-content-manager-gcm)を有効にする必要があります。このスコープは、開発者コンソールでは使用できないため、カスタマーサポートに連絡して有効にする必要があります。 さらに、以下のAPIの中には、Box Archiveを適切に使用するために、カスタマーサポートに連絡して有効にする必要があるものもあります。カスタマーサポートに連絡する際は、これらのAPIを使用する予定のユーザーIDを明記してください。 | APIエンドポイント | 説明 | | --- | --- | | POST /archives | アーカイブを作成します。 | | GET /archives | すべてのアーカイブのリストを取得します。 | | PUT /archives/:id | アーカイブを更新します。 | | DELETE /archives/:id | アーカイブを削除します。 | | PUT /files/:id | ファイルをアーカイブに追加したり、アーカイブから復元したり、アーカイブ内またはアーカイブ間で移動したりします。ファイルに対するその他の更新は許可されていません。有効にするには、カスタマーサポートに連絡する必要があります。 | | PUT /folders/:id | フォルダをアーカイブに追加したり、アーカイブから復元したり、アーカイブ内またはアーカイブ間で移動したりするほか、アーカイブ内のフォルダの名前や説明を変更します。フォルダに対するその他の更新は許可されていません。有効にするには、カスタマーサポートに連絡する必要があります。 | | POST /files/content | ファイルをアーカイブまたはアーカイブ内のフォルダにアップロードします。有効にするには、カスタマーサポートに連絡する必要があります。 | | GET /files/:id/content | ファイルをアーカイブまたはアーカイブ内のフォルダからダウンロードします。 | | POST /zip_downloads | アーカイブまたはアーカイブ内のフォルダのzipファイルをダウンロードします。 | | POST /folders | アーカイブ内にフォルダを作成します。有効にするには、カスタマーサポートに連絡する必要があります。 | | GET /files/:id | アーカイブ内のファイルの詳細を取得します。 | | GET /folders/:id | アーカイブまたはアーカイブ内のフォルダの詳細を取得します。 | | GET /folders/:id/items | アーカイブ内の項目またはアーカイブ内のフォルダにある項目のリストを取得します。 | | POST /files/:id/copy | ファイルをアーカイブにコピーします。 | | POST /folders/:id/copy | フォルダをアーカイブにコピーします。 | | POST /files/:id/metadata/:scope/:template_key | アーカイブ内のファイルに追加されるメタデータインスタンスを作成します。 | | GET /files/:id/metadata/:scope/:template_key | アーカイブ内のファイルに追加されるメタデータインスタンスを表示します。 | | GET /files/:id/metadata | アーカイブ内のファイルに追加されるすべてのメタデータインスタンスのリストを取得します。 | | PUT /files/:id/metadata/:scope/:template_key | アーカイブ内のファイルに追加されるメタデータインスタンスを更新します。 | | DELETE /files/:id/metadata/:scope/:template_key | アーカイブ内のファイルに追加されるメタデータインスタンスを削除します。 | | POST securityClassification | アーカイブ内のファイルの分類ラベルを作成します。 | | GET securityClassification | アーカイブ内のファイルの分類ラベルを表示します。 | | PUT securityClassification | アーカイブ内のファイルの分類ラベルを更新します。 | | DELETE securityClassification | アーカイブ内のファイルから分類ラベルを削除します。 | **Source:** [https://ja.developer.box.com/guides/archives/supported-apis/](https://ja.developer.box.com/guides/archives/supported-apis/) --- ### Box Archiveへのコンテンツの追加 **Type:** guide | **Category:** Box Archive | **Section:** Developer Guides Box Archiveへのコンテンツの追加 アーカイブにコンテンツを追加するには、まず、アーカイブを作成する必要があります。まだ作成していない場合は、アーカイブを作成エンドポイントを使用します。 アーカイブへのファイルまたはフォルダの追加 PUT /files/:id API… # Box Archiveへのコンテンツの追加 アーカイブにコンテンツを追加するには、まず、アーカイブを作成する必要があります。まだ作成していない場合は、[アーカイブを作成](https://developer.box.com/reference/v2025.0/post-archives/)エンドポイントを使用します。 ## アーカイブへのファイルまたはフォルダの追加 [`PUT /files/:id`](e://put-files-id) APIエンドポイントを使用してアーカイブにファイルを追加するか、[`PUT /folders/:id`](e://put-folders-id)エンドポイントを使用してフォルダを追加します。`id`パラメータは、アーカイブに追加するファイル/フォルダのIDです。追加先を指定するには、リクエスト本文内で`parent.id`[パラメータ](https://developer.box.com/reference/put-folders-id/#param-parent-id)を使用します。これには、アーカイブのID、またはアーカイブ内にあるフォルダのIDを指定できます。 **Source:** [https://ja.developer.box.com/guides/archives/add-content/](https://ja.developer.box.com/guides/archives/add-content/) --- ### Box CLIでのPowerShellスクリプトの使用 **Type:** quick-start | **Category:** CLI | **Section:** Developer Guides Box CLIでのPowerShellスクリプトの使用 CLIはそれ自体がすでに強力ですが、PowerShellスクリプトと併用すると、反復タスクをさらに短時間で完了することができます。Boxでは、開発をすぐに開始できるように、BoxのCLI GitHub… # Box CLIでのPowerShellスクリプトの使用 CLIはそれ自体がすでに強力ですが、PowerShellスクリプトと併用すると、反復タスクをさらに短時間で完了することができます。Boxでは、開発をすぐに開始できるように、BoxのCLI GitHubリポジトリ内にサンプル[スクリプト](https://github.com/box/boxcli/tree/main/examples)フォルダを作成しました。 CLIスクリプトのしくみを説明するため、ユーザーのプロビジョニングと作成を行う[スクリプト](https://github.com/box/boxcli/tree/main/examples/User%20Creation%20&%20Provisioning)テンプレートを使用します。 このスクリプトでは、Box CLIを使用して、個人用フォルダ構造の作成と管理対象ユーザーの一括作成を実行し、新しく作成したフォルダ構造に新しいユーザーをビューアー/アップローダーのロールを持つコラボレータとして追加することでそのユーザーのプロビジョニングを行います。 クイックスタートのこの手順は、管理者権限を持つサービスアカウントとユーザーのみを対象としています。Box管理者以外のユーザーの場合、またはサービスアカウントを使用していない場合は、この手順をスキップしてください。 ## ユースケース ユーザーとフォルダ構造を自動的に作成するために、スクリプトによって以下の手順が実行されます。 1. `.csv`ファイルを使用して従業員データを一括で読み込みます。 2. JSONファイルを使用してフォルダ構造を定義するか、ユーザーのローカルディレクトリから構造をアップロードします。 3. 新しい管理対象ユーザーごとに、あらかじめ決められた個人用フォルダ構造を作成します。 ## 前提条件 ### Windows [.NET Core](https://dotnet.microsoft.com/download)の最新バージョンのインストール ### macOSおよびLinux [PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)のインストール 問題が発生する場合は、[.NET Core](https://dotnet.microsoft.com/download)と[PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)の両方をインストールしたかどうか確認してください ### Box CLI スクリプトを使用するには、Box CLIをインストールし、構成する必要があります。まだの場合は、このクイックスタートガイドの[手順1](g://cli/quick-start/create-oauth-app)を参照してください。または、[開発者コンソール](https://app.box.com/developers/console)に移動し、[OAuth 2.0を使用した設定](g://authentication/oauth2/oauth2-setup)ガイドに従ってください。 ### 個人用フォルダの親フォルダの作成 このスクリプトは、作成される各ユーザーにフォルダ構造を作成することで動作します。そのためには、すべての個人用フォルダが格納される親フォルダを作成する必要があります。そうしないと、すべてのフォルダは、CLIの設定に使用したユーザーのルートに格納されます。このフォルダは、好きな場所に名前を付けて配置できますが、CLIの設定に使用したユーザーにそのフォルダへのアクセス権限を付与する必要があります。 スクリプト実行後の構造の例を次に示します。 ## スクリプトのダウンロード 任意のディレクトリにスクリプトを複製し、そのディレクトリに移動します。 ``` git clone https://github.com/box/boxcli.git box-cli cd box-cli/examples/User\ Creation\ \&\ Provisioning/ ``` ## スクリプト設定の構成 自分の環境で実行できるようにスクリプトを調整します。この例では、スクリプトに用意されているサンプルデータを使用します。 ### パラメータの指定 スクリプトを実行する前に指定する必要があるパラメータがいくつかあります。 - `EmployeeList`: `Employee List` CSVのパス。 - `PersonalFolderParentID`: 入力にJSONファイルを使用してフォルダ構造を作成するかローカルの構造をアップロードするときに、すべての個人用フォルダが作成される宛先フォルダID。このフォルダは、初めてスクリプトを実行する前に作成する必要があります。この値を`0`にすることはお勧めしません。この値に設定した場合、CLIの設定に使用したアカウントのルートに個々の個人用フォルダが作成されるためです。 - `FolderStructureJSONPath`: 所有するフォルダ構造のJSONパス。 - `PersonalFolderSlug`: 個人用フォルダの親として作成されるフォルダ名の末尾に使用される文字列。デフォルトでは`Personal Folder`に設定されていますが、必要に応じて自由に設定できます。ユーザー名にこの値を連結して、各ユーザーの個人用フォルダの名前が作成されます (例: `rsmith2's Personal Folder`)。 - `LocalUploadPath`: フォルダ構造を直接アップロードするためのローカルディレクトリ。 ローカルのアップロードパスまたはフォルダ構造のJSONファイルを指定してください。両方は指定できません。 ### ユーザーリストの更新 ユーザーを読み込むには、サンプルファイル`Employees_1.csv`、`Employees_5.csv`、`Employees_10.csv`を使用できます。それぞれのファイルでは、新しいユーザーが1人、5人、10人読み込まれます。 これらのファイルをテスト実行用にカスタマイズします。たとえば、`Employees_1.csv`を次のデータで更新します。 ``` firstName,lastName,email,username Isaac,Newton,abc@abc.local,INewton23 ``` `EmployeeList`パラメータを使用して、データを読み込む`.csv`ファイルを指定します。 メールアドレスは、Box全体で一意である必要があります。また、ユーザー名は特定のBoxインスタンスで一意である必要があります。そうでない場合は、スクリプトを実行したときにエラーがスローされます。 ### フォルダ構造の作成 フォルダ構造は、JSONファイルから作成するか、ローカルドライブからアップロードすることができます。 #### JSONファイルを使用する `Folder_Structure.json`ファイルは、作成するフォルダ構造を含んでいます。たとえば、`Market Research`フォルダと`Sales Plays`フォルダを作成し、それぞれにサブフォルダ`Statistics`と`Big Pharma`を作成するとします。このスクリプトは、このフォルダ構造を、指定した親フォルダ内にある当該ユーザーの`Personal Folder`フォルダの下に配置します。 `FolderStructureJSONPath`パラメータを使用して、`Folder_Structure.json`ファイルの場所を指定します。 #### ローカルドライブからアップロードする フォルダ構造をローカルファイルシステムから直接アップロードすることもできます。`LocalUploadPath`パラメータを使用して、アップロードするローカルフォルダのパスを指定します。このフォルダは、名前はそのままで、JSONファイルを使用した方法と同様にアップロードされます。 ### パラメータの更新 スクリプトを実行する前にパラメータを渡す方法は3つあります。 スクリプトで静的な値を使用する 実行する前に、スクリプト内のすべての必須パラメータを忘れずに更新してください。 ``` # Set Employee List CSV Path # firstname, lastname, email, username $EmployeeList = "" # Personal Folder Structure: Set either path build off JSON or directly upload # a local folder $FolderStructureJSONPath = "" $LocalUploadPath = "" # Ending slug of folder that will be used in creating personal folders for new # users. Value will get concatenated with username # If username is RSMITH, the personal folder name would be # RSMITH's Personal Folder $PersonalFolderSlug = "" # ID of parent folder for created personal folders to be created in # This folder should be created before running the script the first time. # It is not advised to make this value 0, as this will create individual # Personal folders in root of the account you set up the cli with $PersonalFolderParentID = "" ``` パラメータを指定してスクリプトを実行する スクリプトの実行中にパラメータを指定できます。以下に例を示します。 ``` PS > ./Users_Create_Provision.ps1 -EmployeeList ./Employees_1.csv ` -LocalUploadPath ./PersonalLocalUpload ` -PersonalFolderSlug "Personal Folder" ` -PersonalFolderParentID 123456789 Starting User Creation & Provisioning script... ``` 求められたときにパラメータを指定する 実行時に指定されていないパラメータがある場合は、スクリプトにより、指定するよう求められます。 ``` PS > ./Users_Create_Provision.ps1 Please enter the path to the employee list CSV file: ./Employees_1.csv Please enter the path to the folder structure JSON file or the local upload path: Folder_Structure.json Folder structure JSON path set to: Folder_Structure.json Please enter the ID of the folder where you would like to create the personal folders: 0 Starting User Creation & Provisioning script... ``` ## スクリプトの実行 1. ディレクトリを、スクリプトが格納されているフォルダに変更します。この例では、`User Creation & Provisioning`フォルダになります。 ``` pwsh ``` 1. スクリプトを実行します: ``` PS /home/rvb/box-cli/examples/User Creation & Provisioning> ./Users_Create_Provision.ps1 ``` ``` The response will be similar to the following: ``` ``` Starting User Creation & Provisioning script... firstName lastName email --------- -------- ----- Isaac Newton abc@abc.local Extracting folder structure Found current User ID: 18622116055 Created a user owned Onboarding folder with id: 164734146745 Created subfolder Market Research under Onboarding folder with id: 164735375585 Created subfolder under Statistics folder with id: 164734956242 Created subfolder Sales Plays under Onboarding folder with id: 164735683001 Created subfolder under Big Pharma folder with id: 164736160637 Creating employee Managed User account with first name: Isaac, last name: Newton, email: abc@abc.local, and Created Managed user with id: 19605663027 Type: collaboration ID: '37250833128' Created By: Type: user ID: '18622116055' Name: Rui Barbosa Login: barduinor@gmail.com Created At: '2022-06-07T13:58:05-07:00' Modified At: '2022-06-07T13:58:05-07:00' Expires At: null Status: accepted Accessible By: Type: user ID: '19605663027' Name: Isaac Newton Login: abc@abc.local Invite Email: null Role: viewer uploader Acknowledged At: '2022-06-07T13:58:05-07:00' Item: Type: folder ID: '164734146745' Sequence ID: '0' ETag: '0' Name: Onboarding Collaborated Managed User Isaac Newton to current users Onboarding folder for provisioning ``` ## 新規ユーザーに対するスクリプトの再実行 会社で新しい従業員を雇用するたび、このスクリプトを定期的に実行することは一般的です。単に`.csv`ファイルを編集し、前の行のユーザーを削除して新規ユーザーの情報を追加するだけです。その後、スクリプトを再度実行できます。 ## まとめ Box CLIとともにPowerShellスクリプトを使用した、ユーザーのプロビジョニングと最初のフォルダ構造の作成の自動化について確認しました。 その他のユースケースについては、他の[サンプルスクリプト](g://cli/scripts)を確認してください。 サンプルスクリプトを使用して繰り返し発生するタスクを自動化する方法を理解しました **Source:** [https://ja.developer.box.com/guides/cli/quick-start/powershell-script-templates/](https://ja.developer.box.com/guides/cli/quick-start/powershell-script-templates/) --- ### Box Doc Gen **Type:** guide | **Category:** Box Doc Gen | **Section:** Developer Guides Box Doc Gen Box Doc Genを使用すると、採用通知書、売買契約書、請求書、契約書などのビジネスドキュメントを生成できます。BoxにアップロードされたBox Doc Genテンプレートに基づいた、Box Doc Gen API… # Box Doc Gen Box Doc Genを使用すると、採用通知書、売買契約書、請求書、契約書などのビジネスドキュメントを生成できます。BoxにアップロードされたBox Doc Genテンプレートに基づいた、Box Doc Gen APIを使用して動的に入力できるデータフィールドを含むドキュメントを生成できます。 Box Doc Genでは、Box Doc Genテンプレートの使用時に英語のテンプレートタグを利用する機能のみがサポートされています。お客様には、Box Doc Genがご希望の言語の要件をサポートしているかどうかをテストおよび確認することをお勧めします。 ## 前提条件 - Microsoft Wordへのアクセス権限 Box Doc Genを使用するには、ドキュメントテンプレートの作成に必要になるため、Microsoft Wordへのアクセス権限が必要です。Box Doc Genアドインを利用してコード不要のエクスペリエンスを実現するか、Word内でタグ付きスクリプトを適用してドキュメントを準備することができます。 Box Doc Genは、ビジネスドキュメントの動的な生成を容易にすることを目的としていますが、Boxでは、ユーザーのMicrosoft Wordに対するアクセス権限を制御していないことに注意してください。ユーザーは、ドキュメントテンプレートを効果的に作成するために必要なMicrosoft Wordに対する権限やアクセス権限があることを確認する必要があります。 ## Box Doc Gen APIの機能 Box Doc Gen APIを使用すると、以下のことが可能です。 - ドキュメントをBox Doc Genテンプレートとして設定する。 - Boxに保存したBox Doc Genテンプレートに基づいてドキュメントを生成する。 - Box Doc Genテンプレートやドキュメント生成ジョブの詳細を調査する。 ## Box Doc Gen APIバージョン Box Doc Gen APIはBox APIバージョン`2025.0`でリリースされました。Box Doc Gen APIのエンドポイントに対するすべてのAPIリクエストでは、`box-version`ヘッダーを`2025.0`に設定して、有効なAPIバージョンを指定する必要があります。 詳細については、[APIのバージョン戦略](g://api-calls/api-versioning-strategy)を参照してください。 ## Box Doc Genのワークフロー 1. Box Doc Genテンプレートを作成します。 - [Microsoft Word用Doc Genアドイン](https://support.box.com/hc/en-us/articles/36587535449747-Installing-Box-Doc-Gen-Add-in)を使用して、コードを使用せずにテンプレートを作成する。 - [Doc Genのタグ付きスクリプト](https://support.box.com/hc/en-us/articles/36149723736723-Template-tags-reference)を利用してテンプレートを作成することも可能。 1. Box Doc Gen UIを使用して[Boxにテンプレートを追加](https://support.box.com/hc/en-us/articles/36587432368275-Managing-Box-Doc-Gen-Templates-in-Relay)します。この時点では、以下のことが可能です。 - Box内の既存のファイルをDoc Genテンプレートとして設定する。 - ドキュメントを作成またはアップロードして、Box Doc Genテンプレートとして設定する。 1. Box Doc Gen APIを使用して[ドキュメントを生成](g://docgen/generate-document)する。 **Source:** [https://ja.developer.box.com/guides/docgen/](https://ja.developer.box.com/guides/docgen/) --- ### Box Doc Genジョブ **Type:** guide | **Category:** Box Doc Gen | **Section:** Developer Guides Box Doc Genジョブ Box Doc Genジョブは、ドキュメントを生成するリクエストを行うと実行されます。POSTリクエスト内のdocument_generation_dataパラメータは、ドキュメントを生成するためのBox Doc Gen… # Box Doc Genジョブ Box Doc Genジョブは、ドキュメントを生成するリクエストを行うと実行されます。`POST`リクエスト内の`document_generation_data`パラメータは、ドキュメントを生成するためのBox Doc Genジョブの実行を表すエントリの配列です。 Box Doc Gen APIを使用すると、Box Doc Genジョブに関する情報を取得できます。 ## 前提条件 Box Doc Gen APIの使用を開始する前に、[Box Doc Genの使い方](g://docgen/docgen-getting-started)ガイドに記載されている手順に従って、PlatformアプリとBox Doc Genテンプレートを作成してください。 ## すべてのBox Doc Genジョブのリストを取得 実行されたすべてのBox Doc Genジョブのリストを取得するには、`GET /2.0/docgen_jobs`エンドポイントを使用します。追加のパラメータを指定する必要はありません。 ## IDを指定してBox Doc Genジョブを取得 特定のBox Doc Genジョブを取得するには、`GET /2.0/docgen_jobs_id`エンドポイントを使用して、`job_id`を指定します。 ## 特定のIDを使用してバッチ内のGet Box Doc Genジョブを取得 単一のリクエストで複数のドキュメントを生成できます。このような場合、個別の生成ジョブが各ドキュメントに対して実行され、これらすべてのジョブが1つの「バッチ」(つまり、1つのリクエスト) に含まれます。1つのリクエスト内で実行されたすべてのジョブを取得するには、`GET /2.0/docgen_batch_jobs_id`エンドポイントを使用し、`batch_id`を指定します。 **Source:** [https://ja.developer.box.com/guides/docgen/docgen-jobs/](https://ja.developer.box.com/guides/docgen/docgen-jobs/) --- ### Box Doc Genテンプレート **Type:** guide | **Category:** Box Doc Gen | **Section:** Developer Guides Box Doc Genテンプレート Box Doc Gen APIを使用すると、Box Doc Genテンプレートに関連した情報を取得できます。 前提条件 Box Doc Gen APIの使用を開始する前に、Box Doc Gen… # Box Doc Genテンプレート Box Doc Gen APIを使用すると、Box Doc Genテンプレートに関連した情報を取得できます。 ## 前提条件 Box Doc Gen APIの使用を開始する前に、[Box Doc Genの使い方](g://docgen/docgen-getting-started)ガイドに記載されている手順に従って、PlatformアプリとBox Doc Genテンプレートを作成してください。 ## Box Doc Genテンプレートのリストを取得 作成されたすべてのBox Doc Genテンプレートのリストを取得するには、`GET /2.0/docgen_templates`エンドポイントを使用します。追加のパラメータを指定する必要はありません。 レスポンスには、すでに作成済みのBox Doc Genテンプレートを列挙する`entries`配列が含まれます。 ## IDを指定してBox Doc Genテンプレートを取得 特定のBox Doc Genテンプレートを取得するには、`GET /2.0/docgen_templates_id`エンドポイントを使用し、`template_id`を指定します。 レスポンスには、Box Doc Genテンプレートとして使用されたファイルの詳細が含まれます。 ## テンプレートのすべてのドキュメント生成ジョブのリストを取得 作成済みのすべてのBox Doc Genテンプレートのリストを取得するには、`GET /2.0/docgen_template_jobs_id`エンドポイントを使用し、`template_id`を指定します。 レスポンスには、ドキュメントを生成するために実行されたBox Doc Genジョブのリストが含まれます。 **Source:** [https://ja.developer.box.com/guides/docgen/docgen-templates/](https://ja.developer.box.com/guides/docgen/docgen-templates/) --- ### Box Doc Genの使い方 **Type:** guide | **Category:** Box Doc Gen | **Section:** Developer Guides Box Doc Genの使い方 Box Doc Gen APIを使用したドキュメントの生成を開始するには、Platformアプリケーションと、コールを認証するための開発者トークンが必要です。また、ドキュメントの入力ソースとして機能するDoc Genテンプレートも必要です。 Box… # Box Doc Genの使い方 Box Doc Gen APIを使用したドキュメントの生成を開始するには、Platformアプリケーションと、コールを認証するための開発者トークンが必要です。また、ドキュメントの入力ソースとして機能するDoc Genテンプレートも必要です。 ## Box Doc Genの有効化 Box Doc Genを使用するには、管理者が管理コンソールで有効にしていることを確認してください。Box管理者の場合、[Enterprise設定: [コンテンツと共有] タブ](https://support.box.com/hc/en-us/articles/4404822772755-Enterprise-Settings-Content-Sharing-Tab#h_01FYQGK5RW42T07GV985MQ9E9A)のドキュメントで必要な情報を確認できます。 ## Box Doc Genテンプレートの作成とアップロード Box Doc Gen APIを使用してドキュメントを生成するには、Box Doc GenテンプレートがすでにBox内に存在する必要があります。テンプレートを作成するには、以下のオプションがあります。 - [Microsoft Word用Box Doc Gen Template Creatorアドイン](https://support.box.com/hc/en-us/articles/36587535449747-Installing-Box-Doc-Gen-Add-in)をインストールする。 - [JSONファイルを使用](https://support.box.com/hc/en-us/articles/36148012877843-Creating-a-Box-Doc-Gen-Template-using-JSON-data)してBox Doc Genテンプレートを作成するか、手動で[テンプレートタグ](https://support.box.com/hc/en-us/articles/36151895655059-Creating-A-Box-Doc-Gen-Template-Manually)を作成する。 ## Platformアプリケーションの作成 まず、コールの実行に使用するPlatformアプリケーションを作成する必要があります。アプリケーションを作成するには、[Platformアプリの作成](g://applications/app-types/platform-apps)に関するガイドに従ってください。 ## 開発者トークンの生成 リクエストの送信時にアプリを認証するには、開発者トークンが必要です。 トークンを生成するには、以下の手順を実行します。 1. [**開発者コンソール**] > [**Platformアプリ**] に移動します。 2. 右側の**オプションメニュー**ボタン ([…]) をクリックします。 3. [**開発者トークンを生成**] を選択します。トークンが自動的に生成され、クリップボードに保存されます。 アプリを開いて、[**構成**] > [**開発者トークン**] に移動してトークンを生成することもできます。 開発者トークンの有効期限は1時間のみです。 詳細については、[開発者トークン](g://authentication/tokens/developer-tokens)を参照してください。トークンを生成したら、cURLや他のクライアント ([Postman](g://tooling/postman)など) で使用してコールを実行できます。 ## Webhookの使用 Webhookを作成して、Doc Genイベントを監視したり、ビジネスプロセスやワークフローを自動化したりできます。 [Webhookの追加](g://webhooks/v2/create-v2/)手順に従います。コンテンツタイプは、Doc Genテンプレートファイルまたはフォルダです。 サポートされている[イベント](g://webhooks/triggers)は以下のとおりです。 - `DOCGEN_DOCUMENT_GENERATION_STARTED` - `DOCGEN_DOCUMENT_GENERATION_SUCCEEDED` - `DOCGEN_DOCUMENT_GENERATION_FAILED` 通知に掲載される情報は以下のとおりです。 - トリガー名 - Webhookトリガーのタイムスタンプ - テンプレートファイルID - テンプレートファイルバージョンID - テンプレートファイル名 - 保存先フォルダ - 生成されたファイルのID (ドキュメント生成プロセスが成功した場合) - 出力タイプ (DOCXまたはPDF) - 理由 (ドキュメント生成プロセスが失敗した場合) **Source:** [https://ja.developer.box.com/guides/docgen/docgen-getting-started/](https://ja.developer.box.com/guides/docgen/docgen-getting-started/) --- ### Box Editのカスタムドメイン **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides Box Editのカスタムドメイン サードパーティ製ウェブアプリとBox Toolsを統合するには、アプリケーションのURLを明示的に追加する必要があります。Windowsでは、そのためにレジストリキーを追加します。macOS… # Box Editのカスタムドメイン サードパーティ製ウェブアプリとBox Toolsを統合するには、アプリケーションのURLを明示的に追加する必要があります。Windowsでは、そのためにレジストリキーを追加します。macOSでは、ターミナルコマンドをいくつか実行してドメインの追加と削除を実行する必要があります。 セーフリストへのドメインの追加機能は、**Box Toolsバージョン4.5.0**で追加されました。 ## セーフリストへの追加 (Windowsの場合) セーフリストへのドメインの追加を開始する前に、[こちら](https://cloud.box.com/s/kvc9cysgq1y2yldpvciwlpt7093ho78l)で提供されている`.rar`から必要なスクリプトをダウンロードしてください。 ### ユーザーごとの設定 テキストエディタで`Add_OpenWith_WhiteListed_Domain.reg`を開きます。 エントリを追加する際は、改行して追加します。 ファイルを閉じて (変更を保存して)、管理者権限でコマンドプロンプトを開き、.regファイルに移動して次のコマンドを入力します。 ``` reg import "Add_OpenWith_WhiteListed_Domain.reg" ``` ### マシンごとの設定 テキストエディタで次のファイルを開きます。 - `x64`: `Per Machine\64 bit\Add_OpenWith_WhiteListed_Domain.reg` - `x86`: `Per Machine\32 bit\Add_OpenWith_WhiteListed_Domain.reg` プレースホルダのドメインを、許可したいドメインに置き換えます。 エントリを追加する際は、改行して追加します。 ファイルを閉じて (変更を保存して)、管理者権限でコマンドプロンプトを開き、.regファイルに移動して次のコマンドを入力します。 ``` reg import "Add_OpenWith_WhiteListed_Domain.reg" ``` 以下のいずれかの方法を使用して、Windowsサービスである**Box Local Com Service** (`Box Edit.exe`) を再起動します。 #### コマンドプロンプトを使用する場合 コマンドプロンプトで、以下のコマンドを入力します。 - `net stop "Box Local Com Service"` - `net start "Box Local Com Service"` #### UIを使用する場合 `Windows + R`を押して、`services.msc`を入力します。 システムトレイで`Box Edit`を見つけて`Box Edit.exe`を再起動します。 右クリックして [**終了**] を選択します。 `%programfiles%\Box\Box Edit`を開いて、`Box Edit.exe`を実行します。 ### 削除 - すべてのドメインを一度に削除するには、`Remove_ALL_OpenWith_WhiteListed_Domain.reg`を実行します。 - 特定のドメインを削除するには、`Remove_OpenWith_WhiteListed_Domain.reg`を実行します。上記の手順に従ってこの.regにドメインに追加すると、ドメインが削除されます。 ## セーフリストへの追加 (macOSの場合) ### 手順 [こちら](https://cloud.box.com/s/z5qhc7rts6mzrhzfx6cpxeb5ed4ve5u6)からbashスクリプトをダウンロードします。 ターミナルを開いて、bashスクリプトをダウンロードしたフォルダに移動し、次のコマンドを実行して適切な権限を追加します。 ``` chmod u+rx OpenWith.sh ``` ドメインを**追加**するには、ターミナルで次のコマンドを実行します。 ``` ./OpenWith.sh -a domain1 domain2 ... ``` ドメインを**削除**するには、ターミナルで次のコマンドを実行します。 ``` ./OpenWith.sh -r domain1 domain2 ... ``` ドメインを**すべてクリア**するには、ターミナルで次のコマンドを実行します。 ``` ./OpenWith.sh -c ``` すべてのドメインの**リストを取得**するには、ターミナルで次のコマンドを実行します。 ``` ./OpenWith.sh -l ``` ### メモ - セーフリストにドメインを追加する際は、必ず、HTTPプロトコル (`https://`など) または末尾のパス (`yourdomain.com/page/3`など) を付けずにドメインを入力してください。 - すべてのリクエストは、主にHTTPS経由のセキュアなオリジンから送信されます。 - ワイルドカード`*`がサポートされているため、セーフリストにサブドメインとポートを追加できます。たとえば、リストに`*.yourdomain.com`を追加することで、すべてのサブドメインをセーフリストに追加できます。 ## アンインストール Box Toolsをアンインストールすると、すべてのドメインが削除されます。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/custom-domains/](https://ja.developer.box.com/guides/embed/ui-elements/custom-domains/) --- ### Box Embed **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides Box Embed Box EmbedはHTMLベースのフレームワークで、これにより、独自に作成したアプリケーションにBoxウェブアプリの機能全体を埋め込むことができます。Box Embedを使用すると、ファイルのアップロード、検索、コメント付け、共有、タグ付けに加え、Box… # Box Embed Box EmbedはHTMLベースのフレームワークで、これにより、独自に作成したアプリケーションにBoxウェブアプリの機能全体を埋め込むことができます。Box Embedを使用すると、ファイルのアップロード、検索、コメント付け、共有、タグ付けに加え、Box Editを使用したファイルの編集も可能になります。また、Box HubsのAIチャットを埋め込むことで、焦点を絞ったチャットボットエクスペリエンスも実現できます。 ## 開始する前に ウィジェットを作成するには、以下のことが必要です。 - 共有用の埋め込み可能な要素 (フォルダ、ファイル、Hub、メモ、アプリなど) を設定する。 - **ビューアー**以上の[権限](https://support.box.com/hc/ja/articles/360044196413-%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%A9%E9%99%90%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)がある。 ## ウェブアプリの使用 BoxウェブアプリからBox埋め込みウィジェットのコードを取得するには、以下の手順を実行します。 ### ファイルとフォルダ 1. 選択したファイルまたはフォルダに移動します。 2. そのフォルダの横にある省略記号をクリックします。 3. [**その他の操作**] > [**埋め込みウィジェット**] に移動します。 ### Hub 1. 選択したHubに移動します。 2. 右上にある省略記号メニューをクリックします。 3. [**Hubを埋め込む**] をクリックします。 HubからAIチャットインターフェースのみを埋め込むことも可能です。ユーザーは、ナビゲーション機能やファイル閲覧機能を使用せずに、質問して、Hubのファイルに基づいたAIによる回答を取得することができます。詳細については、[Box HubsのAIチャットの埋め込み](g://embed/box-embed/#box-hubs-ai-chat-embedding)セクションを参照してください。 ### メモ 1. 選択したメモに移動します。 2. 省略記号メニューをクリックします。 3. [**埋め込みウィジェット**] をクリックします。 ### アプリ 1. 選択したアプリまたはBoxアプリビューに移動します。 2. 省略記号メニューをクリックします。 3. [**埋め込む**] をクリックします。 次の手順では、埋め込み可能な要素のパラメータを構成します。 | 要素の種類 | 構成オプション | | --- | --- | | ファイル | ウィジェットのサイズ | | フォルダ | ウィジェットのサイズ、フォルダ内のファイルの並べ替え、ナビゲーションパスとサイドバーの非表示。 | | Hub | ウィジェットのサイズ、親のナビゲーションパスとサイドバーの非表示 | | HubsのAIチャット | チャットモード: ボタンまたはウィジェット。 | | メモ | ウィジェットのサイズ、クラウド (雲) ゲームのスキップ (その結果、メモは読み取り専用モードになります)、メモのナビゲーションの非表示。 | | アプリ | ウィジェットのサイズ | 埋め込みウィジェットのカスタマイズが完了したら、埋め込みコードをコピーして自分のサイトまたはウェブアプリに貼り付けます。 ## プログラムを使用して構成 Box Embedをさらにカスタマイズする場合は、プログラムを使用して実行できます。埋め込みのスニペットの形式は次のとおりです。 ``` <iframe src="https://{custom_domain}.app.box.com/embed/s/{shared link value}?view={list or icon}&sortColumn={name, date, or size}&sortDirection=ASC" width="{pixels}" height="{pixels}" frameborder="0" <!-- Optionally replace * with your enterprise-specific domain (for example, mycompanydomain.app.box.com) --> allow="local-network-access *; clipboard-read *; clipboard-write *" allowfullscreen webkitallowfullscreen msallowfullscreen> </iframe> ``` ### ブラウザの権限 Google Chrome 142以上およびMicrosoft Edge 143以上では、`allow`属性を使用して、クリップボードの操作やローカルネットワークへのアクセスを有効にします。この属性は、これらのブラウザバージョン用に設計されていますが、すべてのブラウザに対して安全に含めることができます。他のブラウザでは無視されます。 この属性がないと、埋め込まれたBoxコンテンツは、Box Tools、デバイストラスト、またはクリップボードのコピーボタンで機能しない可能性があります。 埋め込みウィジェットのリンク生成ウィンドウでは、生成されたコードに自動的にこのパラメータが含まれます。 ### 共有リンクの値の検索 プログラムを使用して埋め込み`iframe`を構築するには、まず、共有リンクの値を生成または検索します。この値を検索する1つの方法として、Boxウェブアプリを使用します。 また、[`PUT /files/:file_id`](e://put-files-id--add-shared-link)または[`PUT /files/:file_id`](e://put-folders-id--add-shared-link)を使用して、APIで共有リンクを作成する方法もあります。 その後、[`GET /files/:id`](e://get-files-id)または[`GET /folders/:id`](e://get-folders-id)エンドポイントを使用してクエリパラメータ`fields=shared_link`を渡すことにより、この共有リンクの値を検索できます。 ``` curl https://api.box.com/2.0/folders/12345?fields=shared_link \ -H "authorization: Bearer ACCESS_TOKEN" ``` ``` "shared_link": { "url": "https://app.box.com/s/dsbJFzdO7qZxdfOHFzdO7qZxdfOH", "download_url": null, "vanity_url": null, ... } ``` ページをルートフォルダ/[すべてのファイル] ページに設定することもできます。URLを共有リンク`<iframe src=“https://app.box.com/embed/folder/0”….></iframe>`ではなく`/folder/0`に設定してください。 ### パラメータ 次に、表示のカスタマイズオプションを選択します。構成可能なパラメータ (省略可) のリストを以下に示します。 | | | | --- | --- | | hideHubsGallery | Hubsギャラリーに戻るためのナビゲーションの山括弧ボタンを非表示または表示します。trueまたはfalse (デフォルト) を指定できます。 | | hideNavigationControls | Box Notesのナビゲーションコントロールを非表示または表示します。 | | showItemFeedActions | ファイルのコメントまたはタスクを非表示または表示します。true (デフォルト) またはfalseを指定できます。 | | showParentPath | フレームのヘッダーにフォルダパスを非表示または表示します。trueまたはfalse (デフォルト) を指定できます。 | | sortColumn | ファイルまたはフォルダを並べ替える順番。name、date (デフォルト)、または、sizeを指定できます。 | | sortDirection | ファイルまたはフォルダの並べ替えの方向。ASC (デフォルト) またはDESCを指定できます。 | | view | ファイルまたはフォルダの表示方法の種類。list (デフォルト) またはiconを指定できます。ログインユーザーの場合は、ユーザー設定の表示方法が優先されます。 | | uxLite | クラウド (雲) ゲームを使用せず、制限付きコンテンツプレビュー (Preview Light) を表示します。共有ファイルおよびBox Notesのみに有効です。 | Box Notesで`uxLite`を使用すると、`hideNavigationControls`の設定に関わらず、ナビゲーションコントロールは表示されません。 Boxが提供するアプリのURLにあるカスタム検索パラメータはすべて、埋め込みウィジェットウィンドウとコンテンツプレビューに渡されます。 ### 全画面表示機能 Box Embedスニペットの全画面表示機能を有効にするために、オブジェクトを全画面に表示可能にする場合は、以下のパラメータの1つ以上を`<iframe>`に含めてください。 - `allowfullscreen` - `webkitallowfullscreen` - `mozallowfullscreen` - `oallowfullscreen` - `msallowfullscreen` ## Box HubsのAIチャットの埋め込み Box Hubの機能全体を埋め込むことに加えて、AIを活用したチャットインターフェースのみを埋め込むことも可能です。このモードでは、特定のHub内のファイルを利用した焦点を絞ったチャットボックスエクスペリエンスが提供され、ナビゲーションやコンテンツ閲覧のオプションは提供されません。 ### 前提条件 AIチャットモードに埋め込まれたHubにアクセスするには、以下の前提条件があります。 - Hubを所有する企業では、Box AI for Hubsが有効になっている必要があります。 - ユーザーは、認証済みで、所属する企業でBox AI for Hubsが有効になっている必要があります。 - ユーザーには、Hubに対してビューアー以上の[権限](https://support.box.com/hc/ja/articles/360044196413-%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%A9%E9%99%90%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)が必要です。 ### AIチャットの埋め込みの作成 AIチャットのナレッジベースのソースとして機能するHubに移動します。 右上にある省略記号メニューをクリックします。 [**Hubを埋め込む**] をクリックします。 [**Hub AIチャット**] タブを選択します。 チャットモードを選択します。 - [チャットボタン](g://embed/box-embed/#chat-button) - [チャットウィジェット](g://embed/box-embed/#chat-widget) 埋め込みコードをコピーします。 Box HubsのAIチャットの埋め込みで問題が発生した場合は、上記の手順1~6を繰り返すことで、埋め込みコードを再生成し、スクリプトの最新バージョンを取得してください。 ### チャットボタン **チャットボタン**モードでは、ユーザーがボタンをクリックするとAIチャットウィジェットが開きます。これは、Boxでホストされる`script`として生成され、ページ上にフローティングチャットボタンを表示します。 #### チャットボタンのパラメータ **チャットボタン**モードでは、以下のパラメータがサポートされています。 | パラメータ | 必須 | 説明 | | --- | --- | --- | | data-hub-id | はい | チャットボットに使用されるHubのID。 | | data-custom-box-domain | いいえ | カスタムドメインを使用しているBoxインスタンス。デフォルト: app.box.com。例: mycompanydomain.app.box.com。 | | data-button-text | いいえ | チャットボタンに表示するカスタムテキスト。デフォルト: Box AI。この値は、アクセシビリティのために、このボタンのエリアラベルにも使用されます。 | | data-shared-link | いいえ | Hubにアクセスするための省略可能な共有リンク。指定されていない場合、チャットは、Hubのコラボレータであるユーザーのみに読み込まれます。 | 次の例は、利用可能なすべてのパラメータを使用したチャットボタンの構成全体を示します。 ``` <script src="https://cdn01.boxcdn.net/embeddable-ai-chat-script/2.8.0/box_integrations_ai_chat_button.js" data-hub-id="123456789" data-custom-box-domain="mycompanydomain.app.box.com" data-shared-link="abcdefghijklmnopqrst123" data-button-text="Ask our HR chatbot"> </script> ``` ### チャットウィジェット **チャットウィジェット**モードでは、ページ読み込み時に、AIチャットウィジェットが直接埋め込まれます。これは、`iframe`として生成され、チャットインターフェース全体をすぐに表示します。 #### チャットウィジェットのパラメータ **チャットウィジェット**モードでは、`iframe`を使用すると、AIチャットウィジェットが直接ページに埋め込まれます。iframeの`src`属性にURLパラメータを追加して、動作をカスタマイズできます。 | パラメータ | 説明 | | --- | --- | | hubId | チャットボットに使用されるHubのID。 | | sharedLink | Hubにアクセスするための共有リンクのハッシュ。指定されていない場合、チャットは、Hubのコラボレータであるユーザーのみに読み込まれます。 | | showCloseButton | チャットインターフェースにX (閉じる) ボタンを表示するかどうか。trueに設定すると、閉じるボタンが表示されます。ユーザーがこのボタンをクリックすると、Boxでは、親ウェブアプリケーションに送信されるイベントが生成されます。これにより、ユーザーの操作に基づいてカスタムの閉じるロジックを実装することが可能になります。 | 次の例は、利用可能なすべてのパラメータを使用したチャットウィジェットの構成全体を示します。 ``` <iframe src="https://yourcompanydomain.app.box.com/ai-chat?hubId=123456789&sharedLink=abcdefghijklmnop123&showCloseButton=false" width="800" height="550" frameBorder="0" <!-- Optionally replace * with your enterprise-specific domain (for example, mycompanydomain.app.box.com) --> allow="local-network-access *; clipboard-read *; clipboard-write *" allowfullscreen webkitallowfullscreen msallowfullscreen> </iframe> ``` #### 閉じるボタンの使用 (提供されたスクリプトを使用せず) `iframe`を使用して直接Box AIチャットを埋め込む場合は、チャットインターフェース内で閉じるボタンを有効化できます。このボタンは、`postMessage`を通じて親アプリケーションと通信します。 ##### 閉じるボタンの有効化 iframeの隅に閉じるボタン (✕) を表示するには、次のように、`iframe` URLに`showCloseButton=true`クエリパラメータを追加します: `https://app.box.com/ai-chat?hubId=YOUR_HUB_ID&showCloseButton=true` ##### 仕組み 1. `showCloseButton=true`を設定すると、Xボタンがチャットのiframeの隅に表示されます。 2. ユーザーがこのボタンをクリックすると、iframeから親ウィンドウに`postMessage`イベントが送信されます。 3. このイベントには、`"BOX_AI_CHAT_CLOSE"`に設定された`event.data.type`が含まれています。 4. ホストしているアプリケーションは、このイベントをリッスンし、閉じるロジックを処理します。 ##### 実装例 ``` window.addEventListener('message', (event) => { // Optional: validate origin is from Box for additional security // if (event.origin !== 'https://app.box.com') return; if (event.data && event.data.type === 'BOX_AI_CHAT_CLOSE') { closeChat(); } }); ``` ##### イベントのリファレンス | プロパティ | 値 | 説明 | | --- | --- | --- | | event.data.type | "BOX_AI_CHAT_CLOSE" | ユーザーがチャットのiframeで閉じるボタンをクリックしたことを示します。 | ## 有効期限付き埋め込みリンク ファイルの場合、[`GET /files/:id`](e://get-files-id)を呼び出し、`fields`クエリパラメータを使用して`expiring_embed_link`をリクエストすることもできます。 ``` curl https://api.box.com/2.0/files/12345?fields=expiring_embed_link \ -H "authorization: Bearer ACCESS_TOKEN" ``` ``` { "etag": "1", "expiring_embed_link": { "token": { "access_token": "1!rFppcinUwwwDmB4G60nah7z...", "expires_in": 3646, "restricted_to": [ { "object": { "etag": "1", "file_version": { "id": "34567", "sha1": "1b8cda4e52cb7b58b354d8da0068908ecfa4bd00", "type": "file_version" }, "id": "12345", "name": "Image.png", "sequence_id": "1", "sha1": "1b8cda4e52cb7b58b354d8da0068908ecfa4bd00", "type": "file" }, "scope": "base_preview" }, ... ], "token_type": "bearer" }, "url": "https://cloud.app.box.com/preview/expiring_embed/...." }, "id": "12345", "type": "file" } ``` `url`属性を`<iframe>`内で使用すると、自動で期限切れになるBox Embedインターフェースを埋め込むことができます。 ``` <iframe src="YOUR-GENERATED-BOX-EMBED-LINK" width="{pixels}" height="{pixels}" frameborder="0" allowfullscreen webkitallowfullscreen msallowfullscreen /> ``` ### パラメータ UIをカスタマイズするために、このURLにさらにパラメータを追加することもできます。そのためには、以下のパラメータをクエリパラメータとして`url`に追加します。最終的なURLは、次のようになります。 ``` https://app.box.com/preview/expiring_embed/[HASH]?[parameterName]=true ``` | | | | --- | --- | | showDownload | ファイルをダウンロードするための権限がビューアーにある場合は、埋め込まれたヘッダーバーにダウンロードボタンが表示されます。また、印刷とダウンロードが同じ権限で管理されているため、ドキュメントのファイルタイプには印刷ボタンも表示されます。デフォルトではfalseになります。 | | showAnnotations | プレビュー以上の権限を持つユーザーは、ドキュメントと画像のプレビューに注釈を付けることができます。また、すでにドキュメントに付けられている注釈も表示されます。注釈が利用可能なファイルタイプおよび注釈の種類の詳細については、注釈ページを参照してください。現在、注釈はウェブブラウザでのみ使用できます。モバイルブラウザでは、ユーザーは注釈を表示できますが、新しい注釈を作成することはできません。 | ## クラウド (雲) ゲーム クラウド (雲) ゲームとは、[クリックジャッキング](https://support.box.com/hc/ja/articles/360043691034-Box%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%A6%E3%82%AF%E3%83%AA%E3%83%83%E3%82%AF%E3%82%B8%E3%83%A3%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E3%82%92%E9%98%B2%E6%AD%A2%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8B)を防ぐために作成されたウィジェットです。これは、パートナー統合ではない埋め込みサイトに表示されます。クラウド (雲) ゲームでは、ユーザーは、操作の許可を得るためにクラウド (雲) を適切な場所にドラッグする必要があります。このゲームでは、クラウド (雲) の位置とそのドラッグ先がランダムに生成されるため、クリックジャッキングが難しくなります。 `postMessage()`は、埋め込みと`showCloudGame`両方のステータスを取得するためにiframeで使用されます。埋め込まれている場合、`document.hasStorageAccess()`は、BoxからCookieにアクセスできるかどうかを示します。アクセスでき、ユーザーがログイン済みの場合、クラウド (雲) ゲームが表示されます。`showCloudGame`のステータスが`false`の場合、ユーザーはログインページに誘導されます。 ## カスタムロゴ 有料のBoxをお使いの場合は、ファイルのプレビューに表示されるBoxのロゴを削除できます。削除するには、**管理コンソール**の [**Enterprise設定**]、[**カスタム設定**] に移動し、[**埋め込みウィジェットのカスタマイズ**] をオフに切り替えてBoxのロゴを非表示にします。 ## 制限 Box Embedは、モバイルブラウザ向けには最適化されていないため、モバイルデバイス用に設計されたウェブエクスペリエンスでは使用しないでください。多くのUI Element (**ダウンロード**オプションや**印刷**オプションなど) はモバイルブラウザに表示されない可能性があります。 **Source:** [https://ja.developer.box.com/guides/embed/box-embed/](https://ja.developer.box.com/guides/embed/box-embed/) --- ### Box for Agentforce拡張パッケージ **Type:** guide | **Category:** ツール | **Section:** Developer Guides Box for Agentforce拡張パッケージ Box for Agentforce拡張パッケージは、Box for Salesforce管理パッケージの拡張機能です。この拡張機能は、Salesforce… # Box for Agentforce拡張パッケージ [Box for Agentforce拡張パッケージ](https://support.box.com/hc/en-us/articles/40370228349331-Installing-Box-for-Agentforce)は、Box for Salesforce管理パッケージの拡張機能です。この拡張機能は、Salesforce内でワークフローを自動化したり、インテリジェントなエージェントベースのプロセスを強化したりするのに役立つ、再利用可能なAgentforce[アクション](g://tooling/salesforce-toolkit/flow-actions)を提供します。これは、Box for Salesforceパッケージのコア機能を基に作成されており、グローバルで呼び出し可能なApexメソッドを使用して機能性を高めます。Box for Agentforce拡張パッケージでは、Agentforceアクション内でBoxの名前空間を使用することでメソッドを参照します。 ## Agentforceフローのメソッド 以下のリストには、Agentforceで呼び出し可能な[メソッド](g://tooling/salesforce-toolkit/methods)の例を示しています。 ### フォルダとファイルの管理 - フォルダの作成 - フォルダの関連付けを作成 - レコードID用のフォルダを作成 - テンプレートからレコードID用のフォルダを作成 - フォルダIDでフォルダのコンテンツを取得 - レコードIDでフォルダIDを取得 - フォルダURLを取得 - フォルダの移動 - レコードIDでオブジェクトフォルダを取得 - フォルダIDでレコードIDを取得 - フォルダ用URLを取得 ### メタデータの管理 - ファイルIDでBoxメタデータを作成 - フォルダIDでBoxメタデータを作成 - ファイルIDでBoxメタデータを削除 - フォルダIDでBoxメタデータを削除 - フォルダIDでBoxメタデータを更新 - ファイルIDでBoxメタデータを取得 - フォルダIDでBoxメタデータを取得 ### コラボレーション - コラボレーションを作成 - レコードにコラボレーションを作成 - コラボレーションを編集 - コラボレーションを削除 ### Box Hubs - Hubを取得 - Hubコラボレーションを取得 - Hubをコピー - Hubを作成 - IDでHubを取得 ### その他のアクション - 添付ファイルからファイルを作成 - Doc Genのバッチを取得 - SalesforceレコードIDでフォルダの関連付けを取得 - フォルダIDでメタデータカスケードポリシーを取得 - IDでメタデータカスケードポリシーを取得 - メタデータカスケードポリシーを作成 - メタデータカスケードポリシーを削除 - Slackチャンネルマッピングを作成 - Slackチャンネルアクセス管理を無効に設定 **Source:** [https://ja.developer.box.com/guides/tooling/salesforce-toolkit/box-agentforce-package/](https://ja.developer.box.com/guides/tooling/salesforce-toolkit/box-agentforce-package/) --- ### Box MCPサーバー **Type:** guide | **Category:** Box MCPサーバー | **Section:** Developer Guides Box MCPサーバー Model Context Protocol (MCP) は、アプリケーションがLLMにコンテキストを提供する方法を標準化するオープンプロトコルです。MCPサーバーにより、高度な統合をよりシンプルかつ時間をかけずに構築できるようになります。 Box MCP… # Box MCPサーバー Model Context Protocol ([MCP](https://modelcontextprotocol.io/introduction)) は、アプリケーションがLLMにコンテキストを提供する方法を標準化するオープンプロトコルです。MCPサーバーにより、高度な統合をよりシンプルかつ時間をかけずに構築できるようになります。 Box MCPサーバーを使用すると、AnthropicのClaude、Microsoft Copilot Studio、Mistral Le Chatなどのプラットフォームが提供するサードパーティ製AIエージェントがBoxのコンテンツにシームレスにアクセスできるようになります。Boxに保存されているコンテンツに関連した操作を実行できるようになるため、エージェントの機能が拡張されます。 Box MCPサーバーには2種類あります。 リモートBox MCPサーバー: Box管理コンソールで作成または有効化でき、Boxで直接ホストされています。 セルフホストBox MCPサーバー: このバージョンはオープンソースのBox Developer Communityプロジェクトであるため、ローカルマシンで複製してホストできます。 実装されるツールのレベルが異なるため、2種類のBox MCPサーバーに関する詳細なガイドを参照し、Box MCPサーバーを有効化する方法を確認してください。 管理コンソールでリモートBox MCPサーバーを有効にします。これはBoxで直接ホストされています。 新着 オープンソースのBox Developer Communityプロジェクト。このBox MCPサーバーを複製し、ローカルマシンでホストすることができます。 オープンソース Box CTOのBen Kusとのインタビューを視聴し、MCPによってAIエージェントがどのようにプラットフォーム間で動的に動作し、開発の手間を軽減しているかをご覧ください。 **Source:** [https://ja.developer.box.com/guides/box-mcp/](https://ja.developer.box.com/guides/box-mcp/) --- ### Box Platformアプリの設定 **Type:** quick-start | **Category:** モバイル | **Section:** Developer Guides Box Platformアプリの設定 Box iOS SDKを使用してBox APIに対する認証済みAPIコールを開始するには、アクセストークンが必要になります。有効なトークンを生成するには、新しいBox Platform… # Box Platformアプリの設定 **Box iOS SDK**を使用してBox APIに対する認証済みAPIコールを開始するには、**アクセストークン**が必要になります。有効なトークンを生成するには、新しい**Box Platformアプリ**を生成し、有効期間が短い開発者トークンを手動で生成するのが最も簡単な方法です。 開発者トークンは、開発者コンソールのUIを介して生成されます。有効期間は1時間で、その後は手動で更新する必要があります。 ## Boxアプリのセットアップ # 新しいBoxアプリを作成する 開発者トークンの生成に使用する新しいBox JWTアプリケーションを作成して構成します。 # 既存のアプリを使用する Box開発者コンソールから既存のBox JWTアプリケーションのいずれかを使用します。 # 新しいBoxアプリを作成する 開発者トークンの生成に使用できる新しいBoxアプリケーションを作成するには、以下の手順に従います。 1. [[開発者コンソール](https://cloud.app.box.com/developers/console)] > [**Platformアプリ**] に移動します。 2. [**Platformアプリの作成**] を選択します。 3. 作成するアプリケーションの種類として [**Platformアプリ**] を選択し、[**次へ**] をクリックします。 4. [**アプリ名**] に加え、必要に応じてアプリの [**説明**] および [**目的**] を入力し、[**次へ**] で確定します。 5. 認証方法として [**ユーザー認証 (OAuth 2.0)**] を選択し、[**アプリの作成**] をクリックします。 6. 必要に応じて、同じ画面の [**アプリケーションスコープ**] セクションまでスクロールし、このアプリケーションに対して有効にする必要がある追加の権限を選択します。 7. ページ上部にある [**変更を保存**] ボタンをクリックします。 # 既存のJWT Boxアプリケーションを使用する [開発者コンソール](https://cloud.app.box.com/developers/console)に、使用したい既存のJWTベースのBoxアプリケーションがある場合は、以下の手順に従います。 ## 開発者トークンの生成 アプリケーションが使用可能になったら、開発者トークンを作成する必要があります。開発者トークンは、Box iOS SDKを認証してBox APIに対する呼び出しを開始するために使用できます。 1. [開発者コンソール](https://cloud.app.box.com/developers/console)に移動します。 2. 使用するアプリケーションを読み込みます。 3. 左のナビゲーションメニューで [**構成**] をクリックします。 4. [**開発者トークン**] で、[**開発者トークンを生成**] ボタンをクリックします。 5. 次の手順でAPIコールを行うためにトークンをコピーします。 ## まとめ - 新しいBoxアプリを作成、または既存のBoxアプリを使用しました。 - 開発者トークンを生成してコピーしました。 開発者トークンを用意できました **Source:** [https://ja.developer.box.com/guides/mobile/ios/quick-start/configure-box-app/](https://ja.developer.box.com/guides/mobile/ios/quick-start/configure-box-app/) --- ### Box Platformのサンドボックス **Type:** guide | **Category:** はじめに | **Section:** Developer Guides Box Platformのサンドボックス BoxのDeveloper… # Box Platformのサンドボックス BoxのDeveloperサンドボックスでは、制御された安全な環境を提供しています。この環境で、開発者は、企業の実際のデータに影響を及ぼすことなく、アプリケーションの作成、テスト、コラボレーションを行うことができます。このようなサンドボックスは、Box APIの実験、設定のテスト、新しい統合の試用、外部パートナーとの連携を行うための安全な領域を提供します。 ## Developerサンドボックスとは Developerサンドボックスとは、実稼働 (ライブ) Enterpriseの設定から隔離された環境であり、開発アクティビティを実際のビジネスデータから切り離しておくことができます。 ## サンドボックスを使用する理由 サンドボックスを使用すると、以下のことが可能です。 - 無料のスタンドアロンアカウントではなく、Enterpriseにリンクされている環境内で安全にアプリを開発する。 - 社内チームとも外部コラボレータとも安全にコラボレーションする。請負業者、パートナー、その他の外部ユーザーは、実際のシステムにアクセスしてセキュリティを危険にさらすことなく、サンドボックスに参加できます。 - サンドボックスは作成時に企業のプランやアドオンを継承するため、現実的なテスト条件下でアプリをテストする。プランやアドオンに変更があった場合は、Enterprise管理者が[手動で同期](https://support.box.com/hc/en-us/articles/360043697274-Managing-developer-sandboxes-for-Box-admins#:~:text=in%20a%20sandbox.-,Synchronizing,-sandbox%20with%20production)することができます。 ## サンドボックスへのアクセス Box内のサンドボックスは、Enterprise管理者によって作成されます。サンドボックスの作成方法については、[こちらのドキュメント](https://support.box.com/hc/en-us/articles/360043697274-Managing-developer-sandboxes-for-Box-admins)を参照してください。サンドボックスのプライマリ管理者に指定されると、サンドボックスのユーザーIDが記載されたログインメールがBoxから届きます。 サンドボックス環境内で[開発者コンソール](https://cloud.app.box.com/developers/console)にアクセスしてパスワードを設定するには、メールに記載されているリンクをクリックします。また、[developer.box.com](https://developer.box.com)でサンドボックスの資格情報を使用してログインすることで、サンドボックスにアクセスすることもできます。 サンドボックスのプライマリ管理者は、個々のサンドボックスアカウントを作成し、親のBox Enterpriseのプランに一致する新しいBox環境へのアクセス権限を開発者に付与することができます。 ### 複数のサンドボックスへのアクセス プライマリ管理者は、複数のサンドボックスにログインできます。既存のサンドボックスにこの機能を使用する場合は、一意のメールアドレスを削除し、システムで生成されたメールアドレスを取得します。 **Source:** [https://ja.developer.box.com/guides/getting-started/sandbox/](https://ja.developer.box.com/guides/getting-started/sandbox/) --- ### Box Relay **Type:** guide | **Category:** Box Relay | **Section:** Developer Guides Box Relay Box Relayはワークフロー自動化アプリケーションです。これを使用すると、Boxのパワーユーザーは、コンテンツが中心のビジネスプロセスを自動化してスピードアップすることができます。現在、開発者が使用できるAPI エンドポイントは… # Box Relay [Box Relay](https://support.box.com/hc/ja/articles/360044196213-Box-Relay%E3%81%AE%E6%A6%82%E8%A6%81)はワークフロー自動化アプリケーションです。これを使用すると、Boxのパワーユーザーは、コンテンツが中心のビジネスプロセスを自動化してスピードアップすることができます。現在、開発者が使用できるAPI [エンドポイント](resource://workflow)は2つありますが、ほかにも今後リリースが予定されているものがあります。2つとも[手動開始フロー](https://support.box.com/hc/ja/articles/360044628853-%E6%89%8B%E5%8B%95%E3%81%A7%E9%96%8B%E5%A7%8B%E3%81%99%E3%82%8B%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E5%AE%9F%E8%A1%8C)に直接動作するよう作成されました。 これらのエンドポイントの使用方法の詳細については、Boxの[ブログ](https://medium.com/@Box_Developers/%E6%89%8B%E5%8B%95%E9%96%8B%E5%A7%8B%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BCapi%E3%81%A8box-relay-64f9136f1682)記事を参照してください。 ## 必須のスコープ Box Relayのエンドポイントを使用する前に、アプリケーションで以下の[スコープ](g://api-calls/permissions-and-errors/scopes)を有効にする必要があります。 - [Boxに格納されているすべてのファイルとフォルダの読み取り](g://api-calls/permissions-and-errors/scopes/#read-all-files-and-folders) - [Boxに格納されているすべてのファイルとフォルダの書き込み](g://api-calls/permissions-and-errors/scopes/#read-and-write-all-files-and-folders) - [Box Relayを管理する](g://api-calls/permissions-and-errors/scopes/#manage-box-relay) 選択した認証方法や企業の設定によっては、新たに選択したスコープを使用する前に、アプリケーションで管理者の承認または再承認が必要になる場合があります。 ## レート制限 詳細については、[レート制限ガイド](g://api-calls/permissions-and-errors/rate-limits/#per-api-rate-limits)を参照してください。 ## テスト 機能は同等であるため、APIを利用する前に、[BoxウェブアプリでBox Relay機能](https://support.box.com/hc/ja/articles/360044628853-%E6%89%8B%E5%8B%95%E3%81%A7%E9%96%8B%E5%A7%8B%E3%81%99%E3%82%8B%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E5%AE%9F%E8%A1%8C)に慣れておくと役に立つ可能性があります。さまざまなAPIエンドポイントと同様、実稼働環境のコンテンツに影響を及ぼすリスクを排除するために[Developerサンドボックス環境](https://support.box.com/hc/ja/articles/360043697274)でテストすることをお勧めします。 **Source:** [https://ja.developer.box.com/guides/box-relay/](https://ja.developer.box.com/guides/box-relay/) --- ### Box SDK **Type:** guide | **Category:** ツール | **Section:** Developer Guides Box SDK Boxには、アプリケーションの作成に使用できる一連のSDKが用意されています。 下の表には、SDKが、プロジェクトがメンテナンスされるかどうかとAPIパリティが備わっているかどうかを示す追加情報とともに記載されています。 メンテナンス: Box… # Box SDK Boxには、アプリケーションの作成に使用できる一連のSDKが用意されています。 下の表には、SDKが、プロジェクトがメンテナンスされるかどうかとAPIパリティが備わっているかどうかを示す追加情報とともに記載されています。 **メンテナンス**: Boxでは、完全にメンテナンスされるプロジェクトを積極的に開発しています。このようなプロジェクトには最新のセキュリティ更新プログラムや新機能が提供されます。このようなプロジェクトのサポートについては、GitHubまたは[Developer Forum](https://community.box.com/sdks-and-tools-7)を参照してください。 **APIパリティ**: 完全なAPIパリティを持つプロジェクトは、Box Platformで利用可能になった時点で、すべてのプラットフォーム機能が積極的に更新されます。部分的なAPIパリティを持つプロジェクトには一部の機能が欠けていますが、Boxではそのようなプロジェクトを完全なパリティに移行する取り組みを進めています。 次の表に、アプリケーションの作成時に使用できるBox SDKを示します。最新のAPIサポートや機能には、次世代のSDKを使用してください。 | プラットフォーム | メンテナンスの有無 | APIパリティ | | --- | --- | --- | | Java SDK | はい | Full | | iOS Content SDK | はい | Full | | .NET SDK | はい | Full | | Python SDK | はい | Full | | Node SDK | はい | Full | | Android Content SDK | いいえ | Full | 日本時間2023年6月1日をもって、Android SDKのサポートは終了しました。既存のAndroid SDKアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 最新のAndroid機能を引き続き利用するには、Java SDKを使用してAndroid版アプリを作成してください。詳細については、[こちら](https://github.com/box/box-java-sdk/blob/main/doc/android.md)のドキュメントを参照してください。 ## 次世代のSDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDKをベースにしたアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 Boxでは、業界のベストプラクティスに従って、プログラミング言語ごとにBoxの次世代SDKとBoxコアSDKを1つのパッケージに統合します。これにより、移行作業がさらに容易になり、手動で管理されていたBoxコアSDKを引き続き使用している既存のアプリケーションに新機能をシームレスに追加できるようになります。 **新機能や更新を含む、今後の開発はすべて、BoxコアSDKを通じて提供されます。スタンドアロンの生成されたアーティファクトは、BoxコアSDKのバージョン`v10`で導入されました。** 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning)を参照してください。 `v10`のPython SDK、Box TypeScript SDK、Box .NET SDK、Box Java SDK、Box Swift SDKは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 `v10`に実装予定の機能を以下に示します。 - **APIの全面的なサポート**: 新しいBox SDKにより、開発者はBox APIエコシステム全体をカバーできるようになります。Boxが提供する最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 - **迅速なAPIの更新**: 自動生成による新しい開発アプローチにより、SDKへのBox APIの追加がさらに速いペースで (数日中に) 可能になります。これは、最新の機能をすぐにアプリケーションで利用できるようになることを意味します。 - **ドキュメントへの埋め込み**: SDKのソースコード内にすべてのオブジェクトとパラメータが直接記述されており、必要な情報が1か所にまとめて保存されています。 - **便利なメソッドの強化**: 新しく導入された便利なメソッドは、認証、分割アップロード、指数バックオフ、自動再試行、型チェック (変数を正しく使用しているかどうかの確認に役立ちます) など、さまざまな側面をカバーします。 **Source:** [https://ja.developer.box.com/guides/tooling/sdks/](https://ja.developer.box.com/guides/tooling/sdks/) --- ### Box SDKのバージョン戦略 **Type:** guide | **Category:** ツール | **Section:** Developer Guides Box SDKのバージョン戦略 BoxコアSDKとBoxの次世代SDKは、別々のライブラリとして作成されましたが、Boxでは、業界のベストプラクティスに従って、プログラミング言語ごとにBoxの次世代SDKとBoxコアSDKを… # Box SDKのバージョン戦略 BoxコアSDKとBoxの次世代SDKは、別々のライブラリとして作成されましたが、Boxでは、業界のベストプラクティスに従って、**プログラミング言語ごとにBoxの次世代SDKとBoxコアSDKを1つのパッケージに統合します**。これにより、移行作業がさらに容易になり、手動で管理されていたBoxコアSDKの古いバージョンを引き続き使用している既存のアプリケーションに新機能をシームレスに追加できるようになります。 この移行プロセスを容易にするために、積極的に管理されているBoxコアSDKのメジャーバージョンが2つあります。 - **SDKのアーティファクトごとにシーケンシャルなバージョン管理に従っているメジャーバージョン**。これには、手動で管理されているパッケージと生成されたパッケージが含まれます。このSDKバージョンは、共存するパッケージを同時に利用できるようにするほか、移行フェーズとして機能します。各BoxコアSDKの統合バージョンのサポートは2027年も継続されます。 - **生成されたパッケージのみ**を含む`v10`。 Box SDKの生成されたパッケージに実装予定の機能を以下に示します。 - **APIの全面的なサポート**: 新しいBox SDKにより、開発者はBox APIエコシステム全体をカバーできるようになります。Boxが提供する最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 - **迅速なAPIの更新**: 自動生成による新しい開発アプローチにより、SDKへのBox APIの追加がさらに速いペースで (数日中に) 可能になります。これは、最新の機能をすぐにアプリケーションで利用できるようになることを意味します。 - **ドキュメントへの埋め込み**: SDKのソースコード内にすべてのオブジェクトとパラメータが直接記述されており、必要な情報が1か所にまとめて保存されています。 - **便利なメソッドの強化**: 新しく導入された便利なメソッドは、認証、分割アップロード、指数バックオフ、自動再試行、型チェック (変数を正しく使用しているかどうかの確認に役立ちます) など、さまざまな側面をカバーします。 ## プロジェクトに必要な対応 BoxコアSDKを利用している既存のアプリケーションがあり、プロジェクトをさらに進化させたい場合: **対応** 統合されたパッケージを含むメジャーバージョンを使用します。生成されたパッケージから便利なメソッドや新機能の使用を開始し、段階的にコードベースを移行します。最終的には、BoxコアSDKパッケージ (`v10.0.0`以上) に移行します。 Boxの次世代SDKを利用している既存のアプリケーションがあり、プロジェクトをさらに進化させたい場合: **対応** パッケージマネージャ内のライブラリ名をBoxコアSDKパッケージ (`v10.0.0`以上) に置き換えます。詳細な手順については、移行ガイドを確認してください。 BoxコアSDKと次世代SDKの両方を利用している既存のアプリケーションがある場合: **対応** 統合されたパッケージを含むメジャーバージョンを使用します。最終的には、BoxコアSDKパッケージ (`v10.0.0`以上) に移行します。 新規アプリケーションを作成する場合: **対応** BoxコアSDKの`v10.0.0`以上を使用します。 変更する予定のない既存のアプリケーションがある場合: **対応** パッケージマネージャに特定のバージョンを含めることで、誤って更新されないようにします。Boxでは、統合されたパッケージを含むメジャーバージョンにアップグレードして、継続しているセキュリティパッチや改善が提供されるようにすることを強くお勧めします。 ## バージョン管理の概要 ### BoxコアSDKのバージョンとアーティファクトの概要 | リポジトリ名 | アーティファクト名 | 両方のパッケージを含む | 生成されたパッケージのみを含む | | --- | --- | --- | --- | | box-python-sdk | boxsdk | v4.X.Y | ≥v10.0.0 | | box-node-sdk | box-node-sdk | v4.X.Y | ≥v10.0.0 | | box-java-sdk | box-java-sdk | v5.X.Y | ≥v10.0.0 | | box-windows-sdk-v2 | Box.V2, Box.V2.Core | v6.X.Y | ≥v10.0.0 | | box-ios-sdk | BoxSDK | v6.X.Y | ≥v10.0.0 | ## Boxの次世代SDKの公式サポート終了 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDKをベースにしたアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 **新機能や更新を含む、今後の開発はすべて、BoxコアSDKを通じて提供されます。スタンドアロンの生成されたアーティファクトは、BoxコアSDKのバージョン`v10`で導入されました。** | リポジトリ名 | アーティファクト名 | 注 | | --- | --- | --- | | box-python-sdk-gen | box-sdk-gen | 公式サポート終了。boxsdk ≥v10.0.0を使用してください | | box-typescript-sdk-gen | box-typescript-sdk-gen | 公式サポート終了。box-node-sdk ≥v10.0.0を使用してください | | box-java-sdk-gen | box-java-sdk-gen | 公式サポート終了。box-java-sdk ≥v10.0.0を使用してください | | box-dotnet-sdk-gen | Box.Sdk.Gen | 公式サポート終了。Box.V2.Core ≥v10.0.0を使用してください | | box-swift-sdk-gen | BoxSdkGen | 公式サポート終了。BoxSDK ≥v10.0.0を使用してください | ## 移行 ### 手動で管理されているSDKバージョンから統合されたSDKバージョンへの移行 手動で管理されているSDKバージョンから統合されたSDKバージョンに移行するには、以下の詳細な移行ガイドに従います。 - [Python `v3`から`v4`](https://github.com/box/box-python-sdk/blob/combined-sdk/migration-guides/from-v3-to-v4.md) - [Node `v3`から`v4`](https://github.com/box/box-node-sdk/blob/combined-sdk/migration-guides/from-v3-to-v4.md) - [Java `v4`から`v5`](https://github.com/box/box-java-sdk/blob/combined-sdk/migration-guides/from-v4-to-v5.md) - [.NET `v5`から`v6`](https://github.com/box/box-windows-sdk-v2/blob/combined-sdk/migration-guides/from-v5-to-v6.md) - [Swift `v5`から`v6`](https://github.com/box/box-ios-sdk/blob/combined-sdk/migration-guides/from-v5-to-v6.md) プロジェクトがアップグレードされたら、移行ガイドに従って、生成されたパッケージに移行します。 ### 生成されたパッケージへの移行 BoxコアSDK内で生成されたパッケージに移行するには、以下の詳細な移行ガイドに従います。 - [Python: `boxsdk`から`box_sdk_gen`パッケージに移行する](https://github.com/box/box-python-sdk/blob/combined-sdk/migration-guides/from-boxsdk-to-box_sdk_gen.md) - [Node: `box-node-sdk`から`sdk-gen`に移行する](https://github.com/box/box-node-sdk/blob/combined-sdk/migration-guides/from-box-node-sdk-to-sdk-gen.md) - [Java: `com.box.sdk`からcom.`box.sdkgen`パッケージに移行する](https://github.com/box/box-java-sdk/blob/combined-sdk/migration-guides/from-com-box-sdk-to-com-box-sdkgen.md) - [.NET: `Box.V2`モジュールから`Box.Sdk.Gen`モジュールに移行する](https://github.com/box/box-windows-sdk-v2/blob/combined-sdk/migration-guides/from-box-v2-to-box-sdk-gen-namespace.md) - [Swift: `BoxSDK`モジュールから`BoxSdkGe`nモジュールに移行する](https://github.com/box/box-ios-sdk/blob/combined-sdk/migration-guides/from-BoxSDK-to-BoxSdkGen.md) ### Boxの次世代SDKからBoxコアSDKへの移行 Boxの次世代SDKからBoxコアSDK `v10`以上に移行するには、以下の詳細な移行ガイドに従います。 - [Python](https://github.com/box/box-python-sdk/blob/combined-sdk/migration-guides/from-box-python-sdk-gen-v1-to-box-python-sdk.md) - [TypeScript/Node](https://github.com/box/box-node-sdk/blob/combined-sdk/migration-guides/from-box-typescript-sdk-gen-v1-to-box-node-sdk.md) - [Java](https://github.com/box/box-java-sdk/blob/combined-sdk/migration-guides/from-box-java-sdk-gen-v0-to-box-java-sdk.md) - [.NET](https://github.com/box/box-windows-sdk-v2/blob/combined-sdk/migration-guides/from-dotnet-sdk-gen-v1-to-box-windows-sdk.md) - [Swift](https://github.com/box/box-ios-sdk/blob/combined-sdk/migration-guides/from-box-swift-sdk-gen-v0-to-box-ios-sdk.md) **Source:** [https://ja.developer.box.com/guides/tooling/sdks/sdk-versioning/](https://ja.developer.box.com/guides/tooling/sdks/sdk-versioning/) --- ### Box Sign **Type:** guide | **Category:** Box Sign | **Section:** Developer Guides Box Sign 署名リクエストの作成、リスト取得、再送信、キャンセルを実行するBox SignのAPIエンドポイントを使用することで、Box Signウェブアプリの全機能をプログラムによって利用できます。 有効化 Box Sign APIを使用したリクエストは、Business… # Box Sign 署名リクエストの作成、リスト取得、再送信、キャンセルを実行するBox SignのAPIエンドポイントを使用することで、Box Signウェブアプリの全機能をプログラムによって利用できます。 ## 有効化 Box Sign APIを使用したリクエストは、Business、Business Plus、Enterprise、Enterprise Suites、Enterprise Plus、Enterprise Advancedのアカウントでサポートされています。アカウントの種類を確認するには、[**アカウント設定**] に移動し、[**アカウント**] タブの [**アカウントの詳細**] セクションまで下にスクロールします。管理者向けのアクセス制限の詳細については、[サポート記事](https://support.box.com/hc/ja/articles/4404076971155-Box-Sign%E3%81%AE%E6%9C%89%E5%8A%B9%E5%8C%96)を参照してください。 ## 必須のスコープ Box Signのエンドポイントを使用する前に、アプリケーションで以下の[スコープ](g://api-calls/permissions-and-errors/scopes)を有効にする必要があります。 - [Boxに格納されているすべてのファイルとフォルダの読み取り](g://api-calls/permissions-and-errors/scopes/#read-all-files-and-folders) - [Boxに格納されているすべてのファイルとフォルダの書き込み](g://api-calls/permissions-and-errors/scopes/#read-and-write-all-files-and-folders) - [署名リクエストを管理する](g://api-calls/permissions-and-errors/scopes/#manage-signature-requests) 選択した認証方法や企業の設定によっては、新たに選択したスコープを使用する前に、アプリケーションで管理者の承認または再承認が必要になる場合があります。 ## イベント 詳細については、[イベントガイド](g://events/event-triggers/sign-events)を参照してください。 ## Webhook 詳細については、[Webhookガイド](g://webhooks/triggers)を参照してください。 ## レート制限 詳細については、[レート制限ガイド](g://api-calls/permissions-and-errors/rate-limits/#per-api-rate-limits)を参照してください。 ## テスト 機能が同等であるため、APIを利用する前に、[Boxウェブアプリを使用してBox Signの機能](https://support.box.com/hc/ja/articles/4404105810195-%E7%BD%B2%E5%90%8D%E7%94%A8%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E9%80%81%E4%BF%A1)をよく理解しておくと役に立つかもしれません。すべてのAPIエンドポイントと同様に、実稼働環境のコンテンツに影響を及ぼすリスクを取り除くため、[Developerサンドボックス環境](https://support.box.com/hc/ja/articles/360043697274)でテストすることをお勧めします。 **Source:** [https://ja.developer.box.com/guides/box-sign/](https://ja.developer.box.com/guides/box-sign/) --- ### Box Signのリクエストのキャンセル **Type:** guide | **Category:** Box Sign | **Section:** Developer Guides Box Signのリクエストのキャンセル Box Signのリクエストは、まだ署名も拒否もされていない場合、Box Sign… # Box Signのリクエストのキャンセル Box Signのリクエストは、まだ署名も拒否もされていない場合、[Box Signのリクエストをキャンセルエンドポイント](e://post-sign-requests-id-cancel)を使用してキャンセルできます。未署名の署名者は、ドキュメントに署名できなくなります。 リクエストをキャンセルできるのは、そのリクエストを作成したユーザー (リクエスト送信者) のみです。リクエストは、拒否された場合、全員が署名済みの場合、ドキュメントがまだ変換中の場合は、キャンセルできません。 **Source:** [https://ja.developer.box.com/guides/box-sign/cancel-sign-request/](https://ja.developer.box.com/guides/box-sign/cancel-sign-request/) --- ### Box Signのリクエストのリスト取得 **Type:** guide | **Category:** Box Sign | **Section:** Developer Guides Box Signのリクエストのリスト取得 すべて 署名リクエストを取得エンドポイントを使用すると、渡されたアクセストークンに関連付けられたユーザーが作成したBox Signのすべてのリクエストのリストを表示できます。 IDの指定 ID… # Box Signのリクエストのリスト取得 ## すべて [署名リクエストを取得エンドポイント](e://get-sign-requests)を使用すると、渡されたアクセストークンに関連付けられたユーザーが作成したBox Signのすべてのリクエストのリストを表示できます。 ## IDの指定 [IDを指定して署名リクエストを取得エンドポイント](e://get-sign-requests-id)を使用すると、Box Signの特定のリクエストに関する情報を表示できます。このエンドポイントには、署名リクエストのIDが必要です。このIDは、[Box Signのすべてのリクエストを取得エンドポイント](e://get-sign-requests)を使用して取得するか、[Box Signのリクエストを作成](e://post-sign-requests)する際にレスポンスで取得することができます。 **Source:** [https://ja.developer.box.com/guides/box-sign/list-sign-requests/](https://ja.developer.box.com/guides/box-sign/list-sign-requests/) --- ### Box Signのリクエストの作成 **Type:** guide | **Category:** Box Sign | **Section:** Developer Guides Box Signのリクエストの作成 Box Signのリクエストを作成するには、少なくとも、署名が必要なファイル、署名済みドキュメント/署名ログの保存先フォルダ、署名者が必要です。 公開APIを使用したCFR Part 1… # Box Signのリクエストの作成 [Box Signのリクエストを作成する](e://post-sign-requests)には、少なくとも、署名が必要なファイル、署名済みドキュメント/[署名ログ](https://support.box.com/hc/ja/articles/4404095202579-%E7%BD%B2%E5%90%8D%E3%83%AD%E3%82%B0%E3%81%AE%E7%A2%BA%E8%AA%8D)の保存先フォルダ、署名者が必要です。 公開APIを使用したCFR Part 11の署名リクエストの作成はサポートされていません。詳細については、[21 CFR Part 11コンプライアンスのサポート](https://support.box.com/hc/en-us/articles/24169443030163)を参照してください。 ## ドキュメントの準備 Box Signのリクエストを送信する前にドキュメントを準備することで、開発者は署名者のために日付、テキスト、チェックボックス、署名のプレースホルダを追加できます。これを行うには、UIを使用するか、ドキュメント内で直接[タグ](https://support.box.com/hc/ja/articles/4404085855251-%E3%82%BF%E3%82%B0%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90)を使用します。準備を行わなかった場合、署名者には準備が完了していないドキュメントが送信されるため、署名者の判断で署名やフィールドを配置できます。ただし、開発者は、準備が完了していないドキュメントの機能をオンまたはオフにするためのコントロールをリクエスト内で利用できます。 `is_document_preparation_needed`を`true`に設定すると、レスポンスで`prepare_url`が返されます。ブラウザでこのリンクにアクセスすると、ドキュメントの準備を完了し、UI上でリクエストを送信できます。 ドキュメントのタグの詳細については、[サポート記事](https://support.box.com/hc/ja/articles/4404085855251-%E3%82%BF%E3%82%B0%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90)を参照してください。 Boxウェブアプリを使用してテンプレートに作成された事前入力タグには、APIからアクセスできません。 ## ファイル Box Signの各リクエストは、署名が必要なファイルから始まります。そのファイルがまだBoxに存在しない場合は、リクエストを作成する前に、別のAPIコールでファイルを[アップロードする](e://post-files-content)必要があります。1つのリクエストで複数のファイルに署名できます。リクエストに含まれる最初のファイルのファイルIDを`source_files`本文パラメータで指定します。 リクエスト送信者は、Box内のファイルに対してダウンロード権限を持っている必要があります。この要件を満たしているかどうかを確認するには、[コラボレーションレベル](https://support.box.com/hc/ja/articles/360044196413-%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%A9%E9%99%90%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を確認します。 サポートされているファイルタイプは以下のとおりです。 - すべての[ドキュメント](g://representations/supported-file-types/#documents) - すべての[プレゼンテーション](g://representations/supported-file-types/#presentations) - 画像: `png`、`jpg`、`jpeg`、`tiff`のみ - テキストベースのファイル: `.csv`、`.txt`のみ すべてのファイルタイプは、署名の処理のために`.pdf`に変換されます。この変換後のドキュメントは、リクエストの送信が成功した場合に`parent_folder`で見つかります。つまり、元のファイルタイプに関係なく、最終的な署名済みドキュメントは`.pdf`になります。各署名者がリクエストを完了すると、Box Signにより新しいファイルバージョンが自動的に追加されます。 ファイルサイズの上限は、アカウントの種類によって決まります。詳細については、[アップロードガイド](g://uploads/direct)を参照してください。 ## 親フォルダ `parent_folder`本文パラメータで指定されたフォルダIDによって、最終的な署名済みドキュメントと[署名ログ](https://support.box.com/hc/ja/articles/4404095202579-%E7%BD%B2%E5%90%8D%E3%83%AD%E3%82%B0%E3%81%AE%E7%A2%BA%E8%AA%8D)の保存先が決まります。このフォルダには、フォルダID `0`で表される [すべてのファイル] やルートレベルを指定することができません。 ## 署名者 各署名者には、[役割](https://support.box.com/hc/ja/articles/4404105660947-%E7%BD%B2%E5%90%8D%E8%80%85%E3%81%AE%E5%BD%B9%E5%89%B2)として、`signer`、`approver`、または`final copy_reader`を割り当てる必要があります。 リクエスト送信者に役割が指定されていない場合は、`final_copy_reader`という役割の署名者が自動的に作成されます。つまり、最終的な署名済みドキュメントと[署名ログ](https://support.box.com/hc/ja/articles/4404095202579-%E7%BD%B2%E5%90%8D%E3%83%AD%E3%82%B0%E3%81%AE%E7%A2%BA%E8%AA%8D)のコピーを受信するだけです。 署名者は、ドキュメントに署名するために、既存のBoxアカウントを持っている必要も、アカウントを作成する必要もありません。他のAPIエンドポイントとは異なり、署名者はBox `user_id`ではなくメールアドレスを使用して招待されます。 必要に応じて、署名者は、リクエストに署名する前にBoxにログインできます。その場合は、署名者の`login_required`パラメータを`true`に設定します。署名者が既存のアカウントを所有していない場合は、無料Boxアカウントを作成するオプションもあります。 Box Signは、リクエストで指定された署名者のメールアドレスに署名用メールを送信しようとするだけです。Boxユーザーの場合、指定しない限り、メールエイリアスは含まれません。指定された署名者のメールアドレスすべてが有効であることを再確認してください。 ### 入力 `inputs`パラメータは、ユーザーが操作できるプレースホルダを表します。`document_tag_id`パラメータには、署名リクエストの作成時に渡すデータを設定できます。 ## テンプレート 署名リクエストは、テンプレートを使用して作成できます。そのためには、`template_id`パラメータを指定する必要があります。署名リクエスト作成時のテンプレートの使用の詳細については、[こちらのガイド](g://box-sign/sign-templates)を参照してください。 ## リダイレクト `redirect_url`および`declined_redirect_url`で指定したURLにより、署名するか署名リクエストを拒否した署名者をカスタムランディングページにリダイレクトすることができます。たとえば、アプリケーションをBox Signと統合した場合は、署名者をアプリケーションにリダイレクトすることもカスタムランディングページにリダイレクトすることもできます。リダイレクトURLは、すべての署名者を対象にグローバルに設定することも、特定の署名者のみを対象に設定することもできます。つまり、Box Signでは、選択した署名者に特定のURLを使用し、残りの署名者にグローバルな設定を使用します。リダイレクトURLを設定しなかった場合、Box Signでは署名者がデフォルトのページにリダイレクトされます。 デフォルトのページには「すべての関係者がドキュメントでの作業を完了すると、期限が設定された最終版へのリンクがメールで届きます。また、Boxアカウントをお持ちの場合は、アカウントにコピーが保存されます。」と表示されます。署名者を別のページにリダイレクトする場合、この情報は署名者に表示されなくなります。 ## 複数の署名者と署名の順序 署名の順序は、指定された`order`の数値を小さいものから大きいものへ順序付けすることで決まります。2つの数値が同じ場合、署名者には同時にリクエストが届きます。 最初は、割り当てられた`order`の数値が最も小さい署名者だけに、Box Signのリクエストメールが送信されます。その署名者が署名すると、次のユーザーにメールが送信される、というように進んでいきます。Box Signでは、ユーザーが署名するたびに、ドキュメントの新しいバージョンが`parent_folder`に自動的に追加されます。 いずれかの署名者が拒否した場合、残りの署名者にBox Signのリクエストメールが送信されません。リクエスト全体が拒否されます。 ## リクエストのステータス - `converting`: 署名リクエストが送信された後、ファイルが署名プロセスのために`.pdf`に変換されている。 - `error_converting`: ファイルを`.pdf`に変換している間に問題が発生した。 - `created`: `document_preparation_is_needed`が`true`に設定されているが、`prepare_url`がまだアクセスされていない。 - `sent`: リクエストが正常に送信されたが、どの署名者も対応していない。 - `error_sending`: リクエストを送信中に問題が発生した。 - `viewed`: 最初 (または唯一) の署名者が署名用メールの [**ドキュメントをレビュー**] をクリックするか、署名用URLにアクセスした。 - `downloaded`: 署名者が署名用ドキュメントをダウンロードした。 - `signed`: すべての署名者がリクエストの処理を完了した。 - `signed and downloaded`: 署名者が署名用ドキュメントに署名してダウンロードした。 - `declined`: いずれかの署名者がリクエストを拒否した。 - `cancelled`: リクエストがUIまたはAPIを介してキャンセルされた。 - `expired`: 署名が未完了、不十分のまま、有効期限が過ぎた。 - `finalizing`: すべての署名者がリクエストに署名済みでも、署名された最終的なドキュメントと署名ログがまだ生成されていない。 - `error_finalizing`: `finalizing`フェーズが正常に完了しなかった。 エラーステータスになった場合、再試行するには、新しい署名リクエストを作成する必要があります。 **Source:** [https://ja.developer.box.com/guides/box-sign/create-sign-request/](https://ja.developer.box.com/guides/box-sign/create-sign-request/) --- ### Box Signのリクエストの再送信 **Type:** guide | **Category:** Box Sign | **Section:** Developer Guides Box Signのリクエストの再送信 Box Signのリクエストを再送信エンドポイントを使用すると、残りの署名者全員にリクエストのメールを再送信できます。 ステータスがsigned、cancelled、declined、expired、error_sending… # Box Signのリクエストの再送信 [Box Signのリクエストを再送信エンドポイント](e://post-sign-requests-id-resend)を使用すると、残りの署名者全員にリクエストのメールを再送信できます。 [ステータス](g://box-sign/create-sign-request/#request-status)が`signed`、`cancelled`、`declined`、`expired`、`error_sending`、または`error_converting`の場合は、Box Signのリクエストを再送信できません。 Box Signのリクエストが最近送信された場合は、再送信する前に10分間待つ必要があります。この時間が経過する前に再送信しようとすると、400エラーが返されます。 リクエストを再送信せずに済むように、Box Signのリクエスト作成時にリマインダメールを有効にすることができます。 **Source:** [https://ja.developer.box.com/guides/box-sign/resend-sign-request/](https://ja.developer.box.com/guides/box-sign/resend-sign-request/) --- ### Box Skills **Type:** guide | **Category:** Box Skills | **Section:** Developer Guides Box Skills Box Skillsは、ファイルの基盤となるメタデータを強化することを目的として、Box… # Box Skills Box Skillsは、ファイルの基盤となるメタデータを強化することを目的として、Boxにアップロードされたファイルのカスタム処理を可能にします。このシステムの利点は、さまざまなファイルの豊富な情報を保存しておき、自動化されたタスクや将来のプロセスに使用できることです。 Skillsアプリケーションのエンドツーエンドプロセスは以下のとおりです。 1. [アプリのセットアップ](guide://skills/handle/setup) - 会社全体または1つ以上のフォルダ内でアップロードされるファイルをリッスンする**カスタムスキル**Boxアプリケーションを作成します。 2. [`invocation_url`の構成](guide://skills/invocation-url) - **カスタムスキル**アプリを作成したら、`invocation_url`を構成する必要があります。このURLは、Boxに新しいファイルがアップロードされるたびに呼び出されます。 3. [イベントペイロードの解析](guide://skills/handle/payload) - Box Skillがリッスンするフォルダにファイルがアップロード、コピー、または移動されると、`invocation_url`にイベントペイロードが送信されます。このペイロードには、2つの**アクセストークン**が含まれています。これらのアクセストークンを使用すると、Boxにアップロードされたファイルにアクセスし、ファイルにメタデータを保存することができます。 4. [主な署名の検証](guide://webhooks/v2/signatures-v2) - Skillペイロードを処理するサービスは、他の処理を行う前に、`invocation_url`がBoxによって呼び出されたことを検証する必要があります。この検証を手動またはSDKを使用して行う例については、リンクを確認してください。 5. [処理するファイルの送信](https://github.com/box-community/Box-Custom-Skills-Starter) - Skillペイロードを処理するサービスは、ファイルのURLまたはコンテンツを処理するために外部サービスに送信します。このサービスは、サードパーティの機械学習システムでも、社内サービスでもかまいません。 6. [ファイルにメタデータを保存](guide://skills/handle/metadata) - 処理サービスによってファイルのメタデータが抽出されたら、これらのインサイトをアップロードされたファイルにカスタムメタデータとして再保存できます。 Box Skillsとの統合を簡素化するため、上記の手順の複雑さを減らした[Skills Kit](guide://skills/kit)が提供されています。Skills Kitは現在、Nodeでのみ入手可能です。 **Source:** [https://ja.developer.box.com/guides/skills/](https://ja.developer.box.com/guides/skills/) --- ### Box Skills Kit **Type:** guide | **Category:** Box Skills | **Section:** Developer Guides Box Skills Kit Box Skills Kitは、Box Skills開発プロセスでよく必要とされる複雑な操作の多くを抽象化するために設計されたノードラッパーです。 GitHub上のSkills Kitにアクセスする # Box Skills Kit Box Skills Kitは、Box Skills開発プロセスでよく必要とされる複雑な操作の多くを抽象化するために設計されたノードラッパーです。 GitHub上のSkills Kitにアクセスする **Source:** [https://ja.developer.box.com/guides/skills/kit/](https://ja.developer.box.com/guides/skills/kit/) --- ### Box Skillsペイロード **Type:** guide | **Category:** Box Skills | **Section:** Developer Guides Box Skillsペイロード Skillsアプリが監視するフォルダに新しいファイルがアップロード、コピー、または移動されると、アプリケーションの設定および認証中に指定された呼び出しURLに、Box… # Box Skillsペイロード Skillsアプリが監視するフォルダに新しいファイルがアップロード、コピー、または移動されると、アプリケーションの設定および認証中に指定された呼び出しURLに、Boxからイベントペイロードが送られます。 このイベントペイロードには、アップロードされたファイルのコンテンツを読み込んで機械学習システムなどの処理システムに送信し、処理システムの完了後にファイルにメタデータを書き戻すために必要な情報がすべて含まれています。 ペイロードの例とリファレンス ## アクセストークン 各Skillsペイロードには、イベントをトリガーしたファイルへのアクセスに使用できる一連のアクセストークンが含まれています。 ``` { ... "token": { "write": { "access_token": "c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ", "expires_in": 1540924150, "restricted_to": ..., "token_type": "bearer" }, "read": { "access_token": "Z3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQc3FIOG9vSGV4VHo4QzAyg5T1JvNnJo", "expires_in": 1540924150, "restricted_to": ..., "token_type": "bearer" } }, ... } ``` `token.write.access_token`を使用すると、ファイルにメタデータを書き込むことができるのに対し、`token.read.access_token`はファイルコンテンツの読み取りのみに使用できます。読み取り専用トークンは、後で他のサービスと共有できるファイルのダウンロードURLを作成する際に役立ちます。 ## ダウンロード可能ファイルのURL 多くの機械学習サービスでは、ファイルのURLを処理するためにそのサービスに直接渡すことがサポートされています。BoxファイルのダウンロードURLを作成するには、イベントペイロードの`token.read.access_token`および`source.id`を解析する必要があります。 ``` { ... "source": { "type": "file", "id": 12345, }, "token": { ... "read": { "access_token": "Z3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQc3FIOG9vSGV4VHo4QzAyg5T1JvNnJo", "expires_in": 1540924150, "restricted_to": ..., "token_type": "bearer" } }, ... } ``` ファイルのダウンロードURLは、次のように作成できます。 ``` https://api.box.com/2.0/files/{source.id}/content?access_token={token.read.access_token} ``` この例では、このURLは次のようになります。 ``` https://api.box.com/2.0/files/12345/content?access_token=Z3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQc3FIOG9vSGV4VHo4QzAyg5T1JvNnJo ``` **Source:** [https://ja.developer.box.com/guides/skills/handle/payload/](https://ja.developer.box.com/guides/skills/handle/payload/) --- ### Box UI Elementsのテーマとスタイルの設定 **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides Box UI Elementsのテーマとスタイルの設定 Box UI Elementsのテーマとスタイルの設定により、企業の要件に合わせて、埋め込まれたBox… # Box UI Elementsのテーマとスタイルの設定 Box UI Elementsのテーマとスタイルの設定により、企業の要件に合わせて、埋め込まれたBoxコンポーネントの外観をカスタマイズできます。 現時点では、[テーマとスタイルの設定](https://medium.com/@stefaniuk.olga/b4a86518d5ca)は、コンテンツエクスプローラとコンテンツアップローダーで使用可能です。 ## 開始方法 選択したBoxコンポーネントをアプリケーションに追加します。デフォルトのBoxのテーマが適用されます。 ## カスタマイズ Boxでは、カスタマイズの目的で[デザイントークン](g://embed/ui-elements/ui-elements-design-tokens)を使用します。 デザイントークンとは、色、間隔、タイポグラフィ、スケールなど、特定の視覚的な属性を格納する名前付きのエンティティです。これは、プラットフォーム、ツール、コンポーネント間でのデザインプロパティの共有を容易にするために、ハードコードされた値の代わりに使用されます。 埋め込まれたBoxコンポーネントでは、以下の要素を変更できます。 ### 色 以下をカスタマイズできます。 グローバルカラーパレット - プライマリカラー、セカンダリカラー、アクセントカラーを選択します。 状態の色 - カーソルを合わせたとき、フォーカスしたとき、アクティブな場合、無効な場合など、状態を表す色を選択します。 コンポーネント固有の色 - たとえば、ボタンには、種類に応じて異なる色を選択できます。 グラデーション - 背景やその他のコンポーネントとしてグラデーションを選択して調整します。 不透明度 - Boxのウィンドウやサイドパネルのオーバーレイ効果の不透明度を調整します。 ### タイポグラフィ 以下をカスタマイズできます。 - テキストの装飾 - 下線、取り消し線、文字間隔 - 行の高さ、段落の間隔 ### 境界線、半径 以下を選択できます。 - 境界線のスタイル - 幅、スタイル、色 - 角丸 ### 間隔 以下を選択できます。 - 全体的な間隔 - コンポーネント固有の間隔 - コンポーネント固有の位置と分布 (例: justify-content) ### 影と高さ 以下を定義できます。 - 影のプリセット - カスタマイズした影 ### インタラクティブな状態 以下をカスタマイズできます。 - カーソルを合わせた状態、アクティブな状態、フォーカスした状態、無効な状態、エラー状態 - 背景色の変更などの視覚効果 - 遷移およびアニメーション ### コンポーネントレベルの上書き テキスト入力、ドロップダウン、チェックボックスを独自の色でカスタマイズできます。 ### アイコン ボタンやドロップダウンなどのインタラクティブなアイコンのスタイルを設定します。 ファイルアイコンやフォルダアイコンなどの非インタラクティブなアイコンをカスタムアイコンに置き換えるには、CSSでインラインSVGを使用します。非インタラクティブなアイコンの色、高さ、幅を変更するには、CSSを使用します。 CodePenでカスタムアイコンの実装例を確認してください。 ### その他 スタイル: - ヘルプテキストとラベル - ツールチップ ## デモ **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/theming-styling/](https://ja.developer.box.com/guides/embed/ui-elements/theming-styling/) --- ### Box View **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides Box View Box Viewは、開発者が自分のウェブアプリやモバイルアプリで、忠実度の高いインタラクティブなファイルビューアーを使用してファイルをアップロード、変換、および表示できるようにする、埋め込み可能なサービスです。 機能 任意のファイルの表示 標準の`を使用して、ドキュメント、画像、動画、360度動画および画像、3Dモデル、その他の多くのファイルを任意のウェブアプリまたはモバイルアプリに埋め込みます。 ### 使いやすさ セキュアなAPIを介してBoxにファイルをアップロードすると、アプリケーションのUIに埋め込み可能なHTML5スニペットが配置されます。 ### 状況に応じたコラボレーション エンドユーザーが注釈を使用して、ドキュメント、プレゼンテーション、および画像のコラボレーションやマークアップを実行できるようにします。ユーザーは、テキストをハイライトしたり、ファイルレンダリングの特定の領域にコメントを付けたりできます。 ## Box Viewのしくみ 1. [セキュアなアップロードAPI](e://post-files-content)を使用してBoxにファイルをアップロードします。コンテンツはすべて、ウイルススキャンと256ビット暗号化を備えたBoxのセキュアなクラウドストレージインフラストラクチャに保存されます。 2. アップロード時に、ファイルはHTML5互換のアセットに変換されます。これらのアセットは、明瞭にすばやくレンダリングするよう作られています。 3. ファイルレンダリングにアクセスするために埋め込み可能なURLがリクエストされます。プレビューは、`<iframe>` URLを使用してアプリケーションに直接埋め込むことができます。 ## Box Content Previewによる操作のカスタマイズ [Box Content Preview](g://embed/ui-elements/preview)を使用すると、変換されたファイルに対するクライアント側の操作をカスタマイズできます。 ## ユースケース - 求人アプリケーションで履歴書PDFを変換して表示する - 学生用ポータルで、ドキュメント、動画、PDFなどの教材を変換して表示する - メディアルームでHD動画を変換して表示する - 現場の営業支援アプリケーションで、ドキュメント、動画、PDF、3Dモデルなどの営業資料を変換して表示する **Source:** [https://ja.developer.box.com/guides/embed/box-view/](https://ja.developer.box.com/guides/embed/box-view/) --- ### Boxアプリの設定 **Type:** quick-start | **Category:** CLI | **Section:** Developer Guides Boxアプリの設定 Box CLIを使用するには、Boxアプリを作成する必要があります。Boxアプリは、APIコールの実行に使用できるアプリケーションです。Box CLIを使用する際は、独自のBoxアプリを設定するか、あらかじめ設定されているBox… # Boxアプリの設定 **Box CLI**を使用するには、**Boxアプリ**を作成する必要があります。Boxアプリは、APIコールの実行に使用できるアプリケーションです。Box CLIを使用する際は、独自のBoxアプリを設定するか、あらかじめ設定されているBoxアプリを使用するかを選択できます。独自のBoxアプリを設定した場合の主な利点として、1時間ごとにログインする必要はなくなりますが、設定にいくつか追加手順が必要になります。 ## 使用するBoxアプリの選択 # 新しいBoxアプリを作成する ここからBoxアプリを設定できます。数回クリックするだけで準備できます。 # 既存のBoxアプリを使用する 使用したいBoxアプリをすでに作成済みの場合は、そのアプリケーションの資格情報を使用できます。 # Boxアプリの作成 独自の**Boxアプリ**を使用するには、**Box開発者コンソール**で新しいBoxアプリを作成する必要があります。下のボタンをクリックすると、アプリが設定されます。最後に、**クライアントID**と**クライアントシークレット**を取得できます。 アプリの作成 これらの資格情報は、次の手順でBox CLIの認証に使用します。 # 既存のBoxアプリを使用する 事前にBoxアプリをすでに作成済みの場合は、そのアプリも使用できます。そのアプリを使用するには、いくつかの設定が必要です。 1. [開発者コンソール](https://cloud.app.box.com/developers/console)に移動します。 2. アプリケーションを選択します。 3. アプリケーションの [**構成**] セクションに移動します。 4. アプリケーションが認証方法として**標準OAuth 2.0**を使用することを確認します。 5. [**OAuth 2.0リダイレクトURI**] の設定まで下にスクロールし、[**リダイレクトURI**] に値`http://localhost:3000/callback`を設定します。 6. [**アプリケーションスコープ**] セクションまでスクロールし、目的の[権限](g://api-calls/permissions-and-errors/scopes)を選択します。**アプリケーションには、****次のスコープの1つ以上が必要です:** Boxに格納されているすべてのファイルとフォルダの読み取り、Boxに格納されているすべてのファイルとフォルダの読み取りと書き込み 7. ページ上部にある [**変更を保存**] ボタンをクリックします。 次に、クライアントIDとクライアントシークレットの値を以下の2つのフィールドにコピーします。 クライアントID クライアントシークレット これらの資格情報は、次の手順でBox CLIの認証に使用します。 # セキュリティに関する注意 API資格情報は、ブラウザキャッシュに保存されています。このガイドで後から出てくる**リセット**ボタンをクリックして、この情報を消去することを強くお勧めします。 ## まとめ 新しい**Boxアプリ**の作成を選択しました。 - Developerアカウントにサインアップ (必要な場合) - **OAuth 2.0**認証を使用する**Platformアプリ**を作成 - アプリケーションの**リダイレクトURL**を設定 または、**既存のBoxアプリ**の使用を選択しました。 Boxアプリの設定が完了しました **Source:** [https://ja.developer.box.com/guides/cli/quick-start/create-oauth-app/](https://ja.developer.box.com/guides/cli/quick-start/create-oauth-app/) --- ### Boxアプリの設定 **Type:** quick-start | **Category:** ツール | **Section:** Developer Guides Boxアプリの設定 Postmanコレクションを使用するために、Postmanアプリケーションはアクセストークンを使用してBox APIから認証を受ける必要があります。アクセストークンを取得するには、Boxアプリを使用してBoxにログインする方法が最も簡単です。 Box… # Boxアプリの設定 **Postmanコレクション**を使用するために、Postmanアプリケーションは**アクセストークン**を使用してBox APIから認証を受ける必要があります。アクセストークンを取得するには、**Boxアプリ**を使用してBoxにログインする方法が最も簡単です。 **Boxアプリ**は、APIコールの実行に使用できるアプリケーションです。**Postmanコレクション**を使用する際は、独自のBoxアプリを設定するか、あらかじめ設定されているBoxアプリを使用するかを選択できます。独自のBoxアプリを設定した場合の主な利点は、1時間ごとにログインする必要がなくなることです。ただし、設定にいくつか追加手順が必要になります。 ## 使用するBoxアプリの選択 # 新しいBoxアプリを作成する ここからBoxアプリをセットアップできます。数回クリックするだけで準備できます。 # 既存のアプリを使用する 使用したいBoxアプリをすでに作成済みの場合は、そのアプリケーションの資格情報を使用できます。 # Boxアプリの作成 独自の**Boxアプリ**を使用するには、**Box開発者コンソール**で新しいBoxアプリを作成する必要があります。下のボタンをクリックすると、アプリが設定されます。最後に、**クライアントID**と**クライアントシークレット**を取得できます。 アプリの作成 これらの資格情報は、次の手順でアプリケーションの認証に使用します。 # 既存のアプリを使用する 事前にBoxアプリをすでに作成済みの場合は、そのアプリも使用できます。そのアプリを使用するには、いくつかの設定が必要です。 1. [開発者コンソール](https://cloud.app.box.com/developers/console)に移動します。 2. アプリケーションを選択します。 3. アプリの構成セクションに移動します。 4. アプリケーションが認証方法として**標準OAuth 2.0**を使用することを確認します。 5. [**OAuth 2.0リダイレクトURI**] の設定まで下にスクロールし、[**リダイレクトURI**] に値`https://developer.box.com/auth/callback`を設定します。([https://ja.developer.box.com/で操作する場合は、ドメインをhttps://ja.developer.box.com/に変更してください。](https://ja.developer.box.com/%E3%81%A7%E6%93%8D%E4%BD%9C%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E3%82%92https://ja.developer.box.com/%E3%81%AB%E5%A4%89%E6%9B%B4%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82)) `box.dev`でこのチュートリアルにアクセスした場合は [**リダイレクトURI**] が`https://box.dev/auth/callback`になることに注意してください。 6. [**アプリケーションスコープ**] セクションまでスクロールし、目的の[権限](g://api-calls/permissions-and-errors/scopes)を選択します。**アプリケーションには、** **次のスコープの1つ以上が必要です:** ユーザーを管理する、Boxに格納されているすべてのファイルとフォルダの読み取り、Boxに格納されているすべてのファイルとフォルダの読み取りと書き込み 7. ページ上部にある [**変更を保存**] ボタンをクリックします。 次に、クライアントIDとクライアントシークレットの値を以下の2つのフィールドにコピーします。 クライアントID クライアントシークレット これらの資格情報は、次の手順でアプリケーションの認証に使用します。 # セキュリティに関する注意 API資格情報は、ブラウザキャッシュに保存されています。このガイドで後から出てくる**リセット**ボタンをクリックして、この情報を消去することを強くお勧めします。 ## まとめ 新しい**Boxアプリ**の作成を選択しました。 - Developerアカウントにサインアップ (必要な場合) - **OAuth 2.0**認証を使用する**Platformアプリ**を作成 - アプリケーションの**リダイレクトURL**を設定 または、**既存のBoxアプリ**の使用を選択しました。 Boxアプリの設定が完了しました **Source:** [https://ja.developer.box.com/guides/tooling/postman/quick-start/configure-box-app/](https://ja.developer.box.com/guides/tooling/postman/quick-start/configure-box-app/) --- ### BoxグループコラボレーションへのSlackの接続 **Type:** quick-start | **Category:** コラボレーション | **Section:** Developer Guides BoxグループコラボレーションへのSlackの接続 Slackは、よく使われているコミュニケーションおよび生産性向上ツールで、会社の内外の個人またはグループと作業する際にリアルタイムでの調整が可能になります。 カスタムBoxアプリケーションに接続すると、Slack… # BoxグループコラボレーションへのSlackの接続 Slackは、よく使われているコミュニケーションおよび生産性向上ツールで、会社の内外の個人またはグループと作業する際にリアルタイムでの調整が可能になります。 カスタムBoxアプリケーションに接続すると、Slackチャンネルの構造を[スラッシュコマンド](https://api.slack.com/apps/A0155185TT3/slash-commands)や[イベントAPI](https://api.slack.com/events-api)システムとともに使用して、Boxのファイルやフォルダを論理的にグループ化およびコラボレーションできるようになります。 ## 概要 このクイックスタートガイドでは、BoxユーザーをSlackワークスペースで属しているチャンネルに基づいてグループ化し、Slackのスラッシュコマンドを使用して、そのSlackチャンネル内のユーザーがBoxのファイルやフォルダをそのグループと共有できるようにするのに必要な手順すべてを説明します。 このチュートリアルが終了すると、ワークスペースのチャンネルにSlackボットが展開されます。このボットは、そのチャンネルに存在するすべてのユーザーが含まれるBoxグループを作成し、チャンネルで`/boxadd`コマンドをリッスンします。その後、そのコマンドを解析し、自動的にチャンネルのユーザーグループ全体とBoxのファイルやフォルダでコラボレーションします。 このガイドでは、以下の手順を説明します。 1. イベント通知とスラッシュコマンドの構造を処理するよう[Slackアプリのセットアップと構成](g://collaborations/connect-slack-to-group-collabs/configure-slack)を行います。 2. ウェブアプリケーションをBoxに接続するよう[Boxアプリケーションのセットアップと構成](g://collaborations/connect-slack-to-group-collabs/configure-box)を行います。 3. ユーザーがチャンネルに参加したりチャンネルから退出したりするとき、またはBoxのファイルやフォルダをグループと共有するときに[Slackイベントおよびコマンドをリッスン](g://collaborations/connect-slack-to-group-collabs/scaffold-application-code)します。 4. Slackイベントまたはスラッシュコマンドに基づいて、[Boxグループおよびファイル/フォルダのコラボレーションを構造化](g://collaborations/connect-slack-to-group-collabs/handle-slack-events)します。 5. [最後に、アプリケーションをワークスペースに展開](g://collaborations/connect-slack-to-group-collabs/connect-box-functions)し、Slackアプリのボットをチャンネルに招待してイベントのリッスンを開始します。 ## 要件 先に進む前に、このクイックスタートガイドには注目すべき2つの要件があります。 1. **ユーザーのメールアドレスがBoxとSlackで一致している必要がある**: SlackユーザーアカウントをBoxユーザーアカウントに関連付ける際に、Slackユーザーのメールアドレスを比較します。そのため、一致するBoxユーザーアカウントが同一のメールアドレスを使用し、Box Enterpriseに存在する必要があります。 2. **一般公開されているサーバーが必要である**: Slackはイベントおよびコマンド通知データをアプリケーションの公開URLに送信する必要があります。このガイドでは、`https://mysite.com/`など、アプリケーションコードをホストする公開された場所があることを想定しています。公開されているホスト用の場所にアクセスできない場合は、[Heroku](https://heroku.com/)などのアプリケーションプラットフォームや[AWS Lambda](https://aws.amazon.com/lambda/)などのサーバーレスオプションの使用または[ngrok](https://ngrok.com/)のようなサービスによるlocalhostの公開を検討してください。 開始する準備ができました **Source:** [https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/](https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/) --- ### Boxの埋め込み **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides Boxの埋め込み Boxでは、フロントエンドアプリケーションに直接ファイルやフォルダを埋め込むためのいくつかの方法をサポートしています。 # Boxの埋め込み Boxでは、フロントエンドアプリケーションに直接ファイルやフォルダを埋め込むためのいくつかの方法をサポートしています。 **Source:** [https://ja.developer.box.com/guides/embed/](https://ja.developer.box.com/guides/embed/) --- ### Boxの構成 **Type:** quick-start | **Category:** コラボレーション | **Section:** Developer Guides Boxの構成 Boxグループの管理とBox内のファイルやフォルダへのコラボレータの追加を行うためにBoxアプリケーションを設定する必要があります。 Boxアプリのセットアップ 新しいBoxアプリを作成する この統合に使用する新しいBox JWT… # Boxの構成 Boxグループの管理とBox内のファイルやフォルダへのコラボレータの追加を行うためにBoxアプリケーションを設定する必要があります。 ## Boxアプリのセットアップ # 新しいBoxアプリを作成する この統合に使用する新しいBox JWTアプリケーションを作成して構成します。 # 承認済みの既存のアプリを使用する Box開発者コンソールから、管理者が承認した既存のBox JWTアプリケーションのいずれかを使用します。 # 新しいBoxアプリを作成する Box APIの呼び出しに使用できる新しいBoxアプリケーションを作成するには、以下の手順に従います。 1. [開発者コンソール](https://cloud.app.box.com/developers/console)に移動します。 2. [**アプリの新規作成**] を選択します。 3. 作成するアプリケーションの種類として [**Platformアプリ**] を選択し、[**次へ**] をクリックします。 4. 認証方法として [**JWTを使用したOAuth 2.0**] を選択し、[**次へ**] をクリックします。 5. Boxアプリに一意の名前を付け、[**アプリの作成**] をクリックします。 6. [**アプリの表示**] をクリックしてアプリの設定に移動します。 7. [**アプリケーションアクセス**] まで下にスクロールし、[**Enterprise**] が選択されていることを確認します。 8. 同じ画面の [**アプリケーションスコープ**] セクションまでスクロールし、少なくとも [**Boxに格納されているすべてのファイルとフォルダの読み取りと書き込み**]、[**ユーザーを管理する**]、[**グループを管理する**] スコープが有効になっていることを確認します。 9. [**高度な機能**] で、Boxユーザーの代わりに操作を行うために [**ユーザーとして操作を実行**] が有効になっていることを確認します。 10. ページ上部にある [**変更を保存**] ボタンをクリックします。 # アプリの承認 アプリケーションの作成後も、Box APIの呼び出しを行うには会社の管理者による承認が必要です。 アプリケーションを社内で承認してもらうには、[このガイド](g://authorization/platform-app-approval)に従ってください。 # 既存のJWT Boxアプリケーションを使用する [開発者コンソール](https://cloud.app.box.com/developers/console)に、使用したい既存のJWTベースのBoxアプリケーションがある場合は、アプリケーションの [**構成**] セクションで以下のオプションが設定されていることを確認してください。 [認証方法]: [JWTを使用したOAuth 2.0 (サーバー認証)] に設定します。 [アプリケーションスコープ]: 少なくとも以下のスコープを設定します。 - Boxに格納されているすべてのファイルとフォルダの読み取りと書き込み - ユーザーを管理する - グループを管理する [高度な機能]: ユーザーとして操作を実行するオプションとユーザーアクセストークンを生成するオプションの両方を有効にします。 # アプリの承認 アプリケーションは更新後、会社の管理者による再承認が必要になります。再承認後、新しい権限のいずれかを必要とする任意のBox APIを呼び出すことができます。 アプリケーションを社内で承認してもらうには、[このガイド](g://authorization/platform-app-approval)に従ってください。 ## アプリの構成のダウンロード このチュートリアルで使用されているBox SDKの使用を開始するには、アプリケーションの [**構成**] ページにあるアプリケーション構成ファイルが必要です。この中には、アプリケーションを検証して、Box SDKを使用してAPIリクエストを開始するために必要なすべての情報が含まれます。 [**構成**] ページの [**公開キーの追加と管理**] セクションで、[**公開/秘密キーペアを生成**] をクリックします。これにより、アプリケーションの構成ファイルをダウンロードする前に2要素認証が行われます。 そのファイルを`boxConfig.json`として、アプリケーションがアクセス可能な場所に保存します。 ## まとめ - 会社の管理者によって承認されている、新しいBoxアプリを作成しました。または、会社の管理者によって承認されている既存のBoxアプリを使用しています。 - アプリケーション構成ファイルをダウンロードして、アプリケーションがアクセス可能な場所に保存しました。 アプリケーション構成ファイルをダウンロードしました **Source:** [https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/configure-box/](https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/configure-box/) --- ### Boxの構成 **Type:** quick-start | **Category:** SSOとApp User | **Section:** Developer Guides Boxの構成 Oktaでのログインエクスペリエンスを作成したので、次は、Oktaのユーザーアカウントに関連付けられているユーザーをBox APIを使用して検索、作成できるBoxアプリケーションを作成する必要があります。 Boxアプリのセットアップ 新しいBox… # Boxの構成 Oktaでのログインエクスペリエンスを作成したので、次は、Oktaのユーザーアカウントに関連付けられているユーザーをBox APIを使用して検索、作成できるBoxアプリケーションを作成する必要があります。 ## Boxアプリのセットアップ # 新しいBoxアプリを作成する 新しいBox JWTアプリケーションを作成および構成して、空のユーザーリストから開始します。 # 承認済みの既存のアプリを使用する Box開発者コンソールから、管理者が承認した既存のBox JWTアプリケーションのいずれかを使用します。 # 新しいBoxアプリを作成する Box APIの呼び出しに使用できる新しいBoxアプリケーションを作成するには、以下の手順に従います。 1. [開発者コンソール](https://cloud.app.box.com/developers/console)に移動します。 2. [**Platformアプリの作成**] を選択します。 3. 作成するアプリケーションの種類として [**Platformアプリ**] を選択し、[**次へ**] をクリックします。 4. 認証方法として [**JWTを使用したOAuth 2.0**] を選択し、[**次へ**] をクリックします。 5. Boxアプリに一意の名前を付け、[**アプリの作成**] をクリックします。 6. [**アプリの表示**] をクリックしてアプリの設定に移動します。 同じ画面の [**必須のアクセススコープ**] セクションまでスクロールし、少なくとも以下のスコープが有効になっていることを確認します。 - Boxに格納されているすべてのファイルとフォルダの読み取りと書き込み - ユーザーを管理する 7. [**高度な機能**] で、ユーザーとして操作を実行するオプションとユーザーアクセストークンを生成するオプションの両方が有効になっていることを確認します。 8. ページ上部にある [**変更を保存**] ボタンをクリックします。 アプリケーションの作成後も、Box APIの呼び出しを行うには会社の管理者による承認が必要です。 アプリケーションを社内で承認してもらうには、[このガイド](g://authorization/platform-app-approval)に従ってください。 # 既存のJWT Boxアプリケーションを使用する [開発者コンソール](https://cloud.app.box.com/developers/console)に、使用したい既存のJWTベースのBoxアプリケーションがある場合は、アプリケーションの [**構成**] セクションで以下のオプションが設定されていることを確認してください。 - [認証方法]: [JWTを使用したOAuth 2.0 (サーバー認証)] に設定します。 [アプリケーションスコープ]: 少なくとも以下のスコープを設定します。 - Boxに格納されているすべてのファイルとフォルダの読み取りと書き込み - ユーザーを管理する [高度な機能]: ユーザーとして操作を実行するオプションとユーザーアクセストークンを生成するオプションの両方を有効にします。 ## 必要なデータのダウンロード このチュートリアルで使用されているBox SDKの使用を開始するには、アプリケーションの [**構成**] ページにあるアプリケーション構成ファイルが必要です。この中には、アプリケーションを検証して、Box SDKを使用してAPIリクエストを開始するために必要なすべての情報が含まれます。 [**構成**] ページの [**公開キーの追加と管理**] セクションで、[**公開/秘密キーペアを生成**] をクリックします。これにより、アプリケーションの構成ファイルをダウンロードする前に2要素認証が行われます。 そのファイルを`config.json`として、アプリケーションがアクセス可能な場所に保存します。 ## まとめ - 会社の管理者によって承認されている、新しいBoxアプリを作成しました。または、会社の管理者によって承認されている既存のBoxアプリを使用しています。 - アプリケーション構成ファイルをダウンロードして、アプリケーションがアクセス可能な場所に保存しました。 アプリケーション構成ファイルをダウンロードしました **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/configure-box/](https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/configure-box/) --- ### Boxへのボットの接続 **Type:** quick-start | **Category:** コラボレーション | **Section:** Developer Guides Boxへのボットの接続 ここでは、Slackから送信されるイベントを処理し、Boxのユーザーやグループとの接続に必要なすべての情報を取得します。その機能をBoxの関数に関連付ける必要があります。 この手順では、直前の手順で説明した関数をいくつか拡張し、新しいBox… # Boxへのボットの接続 ここでは、Slackから送信されるイベントを処理し、Boxのユーザーやグループとの接続に必要なすべての情報を取得します。その機能をBoxの関数に関連付ける必要があります。 この手順では、直前の手順で説明した関数をいくつか拡張し、新しいBox機能を組み込みます。 - Boxクライアントをインスタンス化する - BoxグループにBoxユーザーを追加する - BoxグループからBoxユーザーを削除する - グループ名からBoxグループIDを取得する - グループと共有するコンテンツを追加する ## Boxクライアントのインスタンス化 Box APIを呼び出すには、最初にBoxクライアントを設定する必要があります。 `process.js`で、先頭にある`// INSTANTIATE BOX CLIENT`コメントを次の内容に置き換えます。 ``` const boxConfig = require("./boxConfig.json"); const sdk = box.getPreconfiguredInstance(boxConfig); const client = sdk.getAppAuthClient("enterprise"); ``` `boxConfig`の代入行では、[手順2](g://collaborations/connect-slack-to-group-collabs/configure-box)の最後でBoxアプリからダウンロードした`boxConfig.json`ファイルを使用します。上記のサンプルでは、ファイルを`process.js`と同じフォルダに保存していることを前提としています。そうではない場合は、`boxConfig.json`ファイルの場所を指すパスとファイル名に変更してください。 最後の`client`の代入行では、APIコールに使用できるBoxクライアントオブジェクトを作成します。この時点では、その対象範囲は特定のユーザーではなく、アプリケーションの[サービスアカウント](page://platform/user-types/#service-account/)に設定されています。 `Application.java`で、`processEvent`メソッド内の`// INSTANTIATE BOX CLIENT`コメントを次の内容に置き換えます。 ``` this.fileReader = new FileReader("boxConfig.json"); this.boxConfig = BoxConfig.readFrom(fileReader); this.boxAPI = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig); ``` `boxConfig`の代入行では、[手順2](g://collaborations/connect-slack-to-group-collabs/configure-box)の最後でBoxアプリからダウンロードした`boxConfig.json`ファイルを使用します。上記のサンプルでは、ファイルをJavaプロジェクトのルートに保存していることを前提としています。そうではない場合は、`fileReader`の代入行のパスを、`boxConfig.json`ファイルの場所を指すパスとファイル名に変更してください。 最後の`boxAPI`の代入行では、APIコールに使用できるBoxクライアントオブジェクトを作成します。この時点では、その対象範囲は特定のユーザーではなく、アプリケーションの[サービスアカウント](page://platform/user-types/#service-account/)に設定されています。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## グループへのBoxユーザーの追加 グループにBoxユーザーを追加する関数を追加します。ボットがチャンネルに追加され、チャンネルのすべてのユーザーを含むBoxグループの作成が必要になった場合、またはその操作の後に1人のユーザーがチャンネルに参加した場合に、この関数によってそのタスクが実行されます。 `addGroupUser`関数を次の内容に置き換えます。 ``` function addGroupUser(groupId, email) { client.enterprise.getUsers({ filter_term: email }).then((users) => { if (users.entries.length > 0) { const userId = users.entries[0].id; const groupRole = client.groups.userRoles.MEMBER; client.groups .addUser(groupId, userId, { role: groupRole }) .then((membership) => { if (membership.id) { console.log(`Member added with membership ID: ${membership.id}`); } else { console.log(`Member not added`); } }) .catch(function (err) { console.log(err.response.body); }); } else { console.log("No Box user found to add to group"); } }); } ``` `addGroupUser`メソッドを次の内容に置き換えます。 ``` public void addGroupUser(String groupId, String userEmail) { Iterable<BoxUser.Info> users = BoxUser.getAllEnterpriseUsers(this.boxAPI, userEmail); for (BoxUser.Info user : users) { if (user.getLogin().toUpperCase().equals(userEmail.toUpperCase())) { try { BoxGroup group = new BoxGroup(boxAPI, groupId); BoxUser boxUser = new BoxUser(this.boxAPI, user.getID()); BoxGroupMembership.Info groupMembershipInfo = group.addMembership(boxUser); } catch (Exception ex) { System.err.println("User already present"); } } } } ``` # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 メールアドレスを使用してSlackユーザーをBoxユーザーと照合しているため、最初に、Slackのプロフィールのメールアドレスを使用して一致するBoxユーザーを検索します。見つかると、そのユーザーをチャンネルのグループに追加するための呼び出しが行われます。このグループは、ボットが最初に追加されたときに作成されています。 Boxの[ユーザーを取得](endpoint://get-users-id)エンドポイントでは、ユーザーIDによるユーザー検索のみ許可されています。メールアドレスでユーザーを検索するには、[会社ユーザーのリストを取得](endpoint://get-users)エンドポイントを使用し、`filter_term`オプションを検索対象のメールアドレスに設定します。 ## グループからのBoxユーザーの削除 Slackチャンネルから退出したユーザーや削除されたユーザーは、共有グループコンテンツにアクセスできなくなるようにBoxグループから削除することもできます。 `removeGroupUser`関数を次の内容に置き換えます。 ``` function removeGroupUser(groupId, email) { client.groups.getMemberships(groupId).then(memberships => { for (let i = 0; i < memberships.entries.length; i++) { if (memberships.entries[i].user.login === email) { client.groups .removeMembership(memberships.entries[i].id) .then(() => { console.log('Group user removed') }); break; } } }); } ``` `removeGroupUser`メソッドを次の内容に置き換えます。 ``` public void removeGroupUser(String groupId, String userEmail) { BoxGroup boxGroup = new BoxGroup(this.boxAPI, groupId); Iterable<BoxGroupMembership.Info> memberships = boxGroup.getAllMemberships(); for (BoxGroupMembership.Info membershipInfo : memberships) { if (membershipInfo.getUser().getLogin().toUpperCase().equals(userEmail.toUpperCase())) { BoxGroupMembership membership = new BoxGroupMembership(this.boxAPI, membershipInfo.getID()); membership.delete(); } } } ``` # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 このコードでは、SlackのチャンネルIDとなるグループIDを取得し、グループの全メンバーを取得します。メールアドレスに基づいて、Slackチャンネルを退出したユーザーに一致するメンバーが見つかると、そのユーザーはそのメンバーシップIDを使用してグループから削除されます。 # データストアによるパフォーマンスの向上 グループメンバーシップを検索してメンバーシップIDを取得すると、ローカルのデータストア (データベースなど) にメンバーシップIDを保存する必要はなくなりますが、ユーザーレコードとともにBoxメンバーシップIDを保存するデータストアがあれば、このコードがより効率的なものになります。 ローカルのデータストアを使用すると、メンバーシップIDは、そのデータストアから取得できます。Box APIを繰り返し呼び出してメンバーシップIDを検索する必要はありません。 ## グループ名に対応したBoxグループIDの取得 次に必要なBox関数には、主に2つの目的があります。 - 既存グループのBoxグループIDを返します。 - グループが存在しない場合、Boxグループを作成してそのIDを返します。 `getGroupId`関数を次の内容に置き換えます。 ``` function getGroupId(groupName, callback) { client.groups.getAll().then((groups) => { const group = groups.entries.filter((g) => g.name === groupName)[0]; if (!group) { client.groups .create(groupName, { description: "Slack channel collaboration group", invitability_level: "all_managed_users", }) .then((group) => { callback(group.id); }); } else { callback(group.id); } }); } ``` `getGroupId`メソッドを次の内容に置き換えます。 ``` public String getGroupId(String groupName) { String groupId = new String(); Iterable<BoxGroup.Info> groups = BoxGroup.getAllGroups(this.boxAPI); for (BoxGroup.Info groupInfo : groups) { if (groupInfo.getName().toUpperCase().equals(groupName)) { groupId = groupInfo.getID(); } } if (groupId.isEmpty()) { BoxGroup.Info groupInfo = BoxGroup.createGroup(boxAPI, groupName); groupId = groupInfo.getID(); } return groupId; } ``` # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 このコードでは、社内のすべてのグループを取得し、SlackチャンネルIDとグループ名の照合を試みます。いずれかのグループが一致すると、そのグループIDが返されます。 一致するものがない場合は、新しいBoxグループが作成され、そのグループのIDが返されます。グループの名前はSlackチャンネルIDに基づいて付けられます。これはスラッシュコマンドとUser Eventの両方で返される定数であり、追加の関数がなくても簡単に検索できるようにするためです。 ## グループへの共有コンテンツの追加 最終的に、このアプリケーション全体の主な目的は、ユーザーが自分のBoxアカウントにあるファイルやフォルダをグループ内の他のユーザー全員と共有できるようにすることです。 ここまでのすべての機能を基に、次の関数でそのタスクを実行します。 `processContent`関数を次の内容に置き換えます。 ``` function processContent(user, channel, itemType, itemId) { getGroupId(channel, function (groupId) { const email = user.profile.email; client.enterprise.getUsers({ filter_term: email }).then((users) => { if (users.entries.length > 0) { client.asUser(users.entries[0].id); const collabRole = client.collaborationRoles.VIEWER; const collabOptions = { type: itemType }; client.collaborations .createWithGroupID(groupId, itemId, collabRole, collabOptions) .then((collaboration) => { console.log( `Content added with collaboration ID ${collaboration.id}` ); }) .catch(function (err) { console.log( util.inspect(err.response.body, { showHidden: false, depth: null, }) ); }); } }); }); } ``` `processContent`メソッドを次の内容に置き換えます。 ``` public void processContent(JSONObject userResponse, String channel, String fType, String fId) { String groupId = getGroupId(channel); JSONObject userObj = (JSONObject) userResponse.get("user"); JSONObject userProfile = (JSONObject) userObj.get("profile"); String userEmail = (String) userProfile.get("email"); Iterable<BoxUser.Info> users = BoxUser.getAllEnterpriseUsers(this.boxAPI, userEmail); for (BoxUser.Info user : users) { if (user.getLogin().toUpperCase().equals(userEmail.toUpperCase())) { String uid = user.getID(); boxAPI.asUser(uid); BoxCollaborator collabGroup = new BoxGroup(boxAPI, groupId); try { if (fType.equals("file")) { BoxFile file = new BoxFile(boxAPI, fId); file.collaborate(collabGroup, BoxCollaboration.Role.VIEWER, false, false); } else if (fType.equals("folder")) { BoxFolder folder = new BoxFolder(boxAPI, fId); folder.collaborate(collabGroup, BoxCollaboration.Role.VIEWER); } } catch (Exception ex) { System.err.println("Collaboration failed"); } boxAPI.asSelf(); } } } ``` # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 このコードでは、最初に、コンテンツの共有先となるSlackチャンネル用にBoxグループIDを取得します。 スラッシュコマンドを送信したユーザーのBoxアカウントからファイルやフォルダを共有するため、次に、そのユーザーのBoxユーザープロフィールをメールアドレスに基づいて取得します。 最後に、グループIDを使用して、コンテンツでグループとコラボレーションするための呼び出しを行います。 ## まとめ - Boxクライアントをインスタンス化しました。 - Boxグループユーザーを追加および削除するための関数を作成しました。 - コンテンツをグループと共有するための関数を作成しました。 Boxの関数を設定しました **Source:** [https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/connect-box-functions/](https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/connect-box-functions/) --- ### Boxへのログイン **Type:** quick-start | **Category:** ツール | **Section:** Developer Guides Boxへのログイン この手順では、前の手順のクライアントIDとクライアントシークレットを使用してログインし、ユーザー用にアクセストークンを作成します。 ログインする理由 現時点では、以下の情報が提示されています。 クライアントID… # Boxへのログイン この手順では、前の手順の**クライアントID**と**クライアントシークレット**を使用してログインし、ユーザー用に**アクセストークン**を作成します。 ## ログインする理由 現時点では、以下の情報が提示されています。 クライアントID クライアントシークレット 任意のプログラムやコードは、これらの**資格情報**を使用することで、**Box API**から認証を受けることができます。これは、作成した**Boxアプリ**を表しますが、**ユーザー**に関する情報をAPIに伝えることはありません。 ユーザー自身が認証を受けるには、ブラウザでBoxのログイン画面を開き、自分の**ユーザー**アカウントへのアクセスを**Boxアプリ**に承認する必要があります。 このフローの設定は難しい場合があるため、簡単に行えるように下のボタンを用意しました。 ## Boxアプリへのログイン ## ログインしました ブラウザで[Boxの承認](e://get-authorize)画面が開かれ、そこで、アプリケーションに自分のユーザーアカウントへのアクセスを許可しました。アクセスを許可した後、ブラウザは`code`によりこのサイトにリダイレクトされました。 その後、この有効期間が短い`code`が有効期間が長い**アクセストークン**と**更新トークン**に[交換されました](e://post-oauth2-token)。これらのトークンは**ユーザー**を表します。 名前 アクセストークン 更新トークン # セキュリティに関する注意 API資格情報は、ブラウザキャッシュに保存されています。このガイドで後から出てくる**リセット**ボタンをクリックして、この情報を消去することを強くお勧めします。 # 前の手順が完了していません 前の手順を完了し、使用する**Boxアプリ**をセットアップしてください。 ## まとめ - 独自の**Boxアプリ**またはあらかじめ設定されているアプリを使用して**Boxアカウント**にログインしました - **Boxアプリ**にユーザーアカウントへのアクセスを許可しました - このページでユーザーアカウントの**アクセストークン**と**更新トークン**を参照できるようになりました Boxへのログインが完了しました **Source:** [https://ja.developer.box.com/guides/tooling/postman/quick-start/log-in-to-box/](https://ja.developer.box.com/guides/tooling/postman/quick-start/log-in-to-box/) --- ### CLI **Type:** guide | **Category:** CLI | **Section:** Developer Guides CLI Box Command Line Interface (CLI) は、ターミナルウィンドウまたはコマンドプロンプトからBox APIにリクエストを行うためのツールです。 クイックスタート OAuth 2.0を使用したBox CLIの使用を開始する。 CLI… # CLI Box Command Line Interface (CLI) は、ターミナルウィンドウまたはコマンドプロンプトからBox APIにリクエストを行うためのツールです。 ## クイックスタート [OAuth 2.0を使用したBox CLIの使用を開始する](g://cli/quick-start)。 ## CLIの設定と使用 - [サーバー認証](g://authentication/jwt)方法を使用するには、[こちら](g://cli/cli-docs/jwt-cli)のガイドを参照してください。 - [CCG認証](g://authentication/client-credentials)方法を使用するには、[こちら](https://github.com/box/boxcli/tree/main/docs/configure.md#box-configureenvironmentsadd-path)のガイドを参照してください。 - CLIコマンドを使用して一括操作を行うには、[こちら](https://github.com/box/boxcli/blob/main/docs/Bulk%20actions/README.md)のガイドを参照してください。 ## サンプルスクリプト Box CLIの使用自体が役に立ちますが、PowerShellスクリプトと組み合わせるとさらに強力になります。反復タスクの自動化を開始できるように、スクリプトテンプレートの[ライブラリ](https://github.com/box/boxcli/tree/main/examples)を作成しました。 - [サンプルスクリプトを探す](g://cli/scripts/index) ## 高度な機能 このGitHubページには、上級CLIユーザーの参考となりそうなその他のガイドも用意されています。 - [オートコンプリートの設定](https://github.com/box/boxcli/blob/main/docs/autocomplete.md) - [別のアプリの構成](https://github.com/box/boxcli/blob/main/docs/configure.md#box-configureenvironmentsadd-path) - [アカウントの切り替え](https://github.com/box/boxcli/blob/main/docs/configure.md#box-configureenvironmentsswitch-user-userid) - [トークンのキャッシュ](https://github.com/box/boxcli/blob/main/docs/configure.md#box-configureenvironmentsupdate-name) **Source:** [https://ja.developer.box.com/guides/cli/](https://ja.developer.box.com/guides/cli/) --- ### CLIガイド **Type:** guide | **Category:** CLI | **Section:** Developer Guides CLIガイド Box CLIの機能の使用方法のガイドを以下に示します。 JWT認証を使用したBox CLIを設定してテストする。 Box CLI一括コマンドを設定してテストする。 # CLIガイド Box CLIの機能の使用方法のガイドを以下に示します。 - [JWT認証を使用したBox CLI](g://cli/cli-docs/jwt-cli)を設定してテストする。 - [Box CLI一括コマンド](g://cli/cli-docs/bulk-commands)を設定してテストする。 **Source:** [https://ja.developer.box.com/guides/cli/cli-docs/](https://ja.developer.box.com/guides/cli/cli-docs/) --- ### CLIサンプルスクリプト **Type:** guide | **Category:** CLI | **Section:** Developer Guides CLIサンプルスクリプト Box CLIのスクリプトは、タスクの自動化に役立つよう設計されています。現在、ユーザーが使用、カスタマイズできるいくつかのPowerShellスクリプトがサンプルスクリプトライブラリで提供されています。これらのスクリプトを実行するには、Box CLI… # CLIサンプルスクリプト Box CLIのスクリプトは、タスクの自動化に役立つよう設計されています。現在、ユーザーが使用、カスタマイズできるいくつかのPowerShellスクリプトがサンプルスクリプトライブラリで提供されています。これらのスクリプトを実行するには、Box CLIをインストールし、構成しておく必要があります。これは、[クイックスタートガイド](g://cli/quick-start/create-oauth-app)に従って実行することができます。 以下のスクリプトのほとんどでは、コマンドの実行に使用するユーザーにBoxの[管理者権限](https://support.box.com/hc/en-us/articles/360043694174-Understanding-Administrator-and-Co-Administrator-Permissions)が必要です。 ## PowerShellスクリプト - [ユーザーとフォルダのプロビジョニング](g://cli/quick-start/powershell-script-templates) - [ユーザーのプロビジョニング解除とフォルダのアーカイブ](g://cli/scripts/deprovision-users) - [グループとコラボレーションの管理](g://cli/scripts/manage-groups-collaborations) - [非アクティブなユーザーのレポート](g://cli/scripts/report-inactive-users) - [メタデータの抽出](g://cli/scripts/metadata-extraction) - [ユーザーのゾーンの更新](g://cli/scripts/user-zones-mass-update) - [Slack統合フォルダマッピングの管理](g://cli/scripts/slack-integration-mappings) **Source:** [https://ja.developer.box.com/guides/cli/scripts/](https://ja.developer.box.com/guides/cli/scripts/) --- ### CLIのインストールと構成 **Type:** quick-start | **Category:** CLI | **Section:** Developer Guides CLIのインストールと構成 Windows用およびmacOS用のインストーラが提供されていますが、その他の環境でCLIを構築する場合はRawソースコードを利用できます。 Windows用およびmacOS用インストーラ お使いのマシンに最新のCLI… # CLIのインストールと構成 Windows用およびmacOS用のインストーラが提供されていますが、その他の環境でCLIを構築する場合はRawソースコードを利用できます。 ## Windows用およびmacOS用インストーラ お使いのマシンに最新のCLIをインストールするには、最新リリースに対応する最新の`.exe` (Windowsの場合) または`.pkg` (macOSの場合) をダウンロードします。 最新のCLIインストーラをダウンロード ## LinuxとNodeのインストール さらに、CLIは、任意のプラットフォーム (Linuxなど) にNodeパッケージとしてインストールすることができます。このためには、[Node JS](https://nodejs.org/)をマシンにインストールしておく必要があります。 ``` npm install --global @box/cli ``` ## ソースコード CLIのソースコードは、[GitHub](https://github.com/box/boxcli)で提供されています。 ## 構成コマンドの実行 ここで、BoxアプリにログインしてCLIを構成する必要があります。 この手順では、前の手順の**クライアントID**と**クライアントシークレット**を使用してログインし、ユーザー用に**アクセストークン**を作成します。 ## ログインする理由 現時点では、以下の情報が提示されています。 クライアントID クライアントシークレット ターミナルまたはコマンドラインを開き、`box login -n example_name`コマンドを実行します。 求められたら、ターミナルウィンドウにクライアントIDとクライアントシークレットをコピーします。 ブラウザウィンドウに表示された [**Boxへのアクセスを許可**] ボタンをクリックします。 成功すると、成功を示す次のメッセージが表示されます。 ## 構成の確認 うまく構成されているか確認するには、`box users:get me`コマンドを入力して、Box CLIで最初のBox APIコールを実行します。 成功を示すレスポンスには、ユーザーアカウントの詳細が示されます。 ``` Type: user ID: ''0123456789'' Name: Aaron Levie Login: example@box.com Created At: '2020-01-01T09:45:01-07:00' Modified At: '2021-03-01T09:30:05-07:00' Language: en Timezone: America/Los_Angeles Space Amount: 999999999999999 Space Used: 6291500 Max Upload Size: 16106127360 Status: active Job Title: '' Phone: '' Address: example+user@box.com Avatar URL: '' Notification Email: [] ``` ## まとめ - CLIをインストールしました。 - 前に作成したOAuth 2.0アプリケーションを使用するようCLIを構成しました。 - **Box CLIの最初のBox APIコールを実行**し、アクセストークンに関連付けられたユーザーを確認しました。 CLIをインストールして構成しました # 前の手順が完了していません 前の手順を完了し、使用する**Boxアプリ**をセットアップしてください。 **Source:** [https://ja.developer.box.com/guides/cli/quick-start/install-and-configure/](https://ja.developer.box.com/guides/cli/quick-start/install-and-configure/) --- ### CLIの一括コマンド **Type:** guide | **Category:** CLI | **Section:** Developer Guides CLIの一括コマンド Box CLIの一括コマンドを使用すると、反復タスクを自動化できます。コマンドに--bulk-file-pathフラグを追加すると、多数の項目に対して操作を一度に実行できます。 たとえば、次のコマンドは、CSVファイルを使用してフォルダの名前 (Name… # CLIの一括コマンド Box CLIの一括コマンドを使用すると、反復タスクを自動化できます。コマンドに`--bulk-file-path`フラグを追加すると、多数の項目に対して操作を一度に実行できます。 たとえば、次のコマンドは、CSVファイルを使用してフォルダの名前 (`Name`)、説明 (`Description`)、親フォルダの`ParentId`を指定し、複数のフォルダを作成します。 ``` box folders:create --bulk-file-path <PATH_TO_CSV>/folders-create.csv ``` ## CSVテンプレート あらかじめ定義されたCSVテンプレートを使用すると、一括で管理したいデータを構造化できます。テンプレートは[`Bulk actions`](https://github.com/box/boxcli/tree/main/docs/Bulk%20actions)ディレクトリにあり、複数のフォルダに分類されています。現在利用できるテンプレートは、以下の表に示すとおりです。 | テンプレート | 説明 | | --- | --- | | box collaborations | コラボレーションを作成、削除、更新します。 | | box files | ファイルをダウンロード、更新、アップロードします。 | | box folders | フォルダの作成と更新、フォルダへのメタデータの追加を行います。 | | box groups | グループの作成とメンバーシップの追加を行います。 | | box metadata-templates | メタデータテンプレートと、フォルダのメタデータカスケードポリシーを作成します。 | | box shared-links | 共有リンクを削除します。 | | box users | ユーザーの作成と更新、あるユーザーから別のユーザーへのコンテンツの移動を行います。 | | box webhooks | Webhookを削除します。 | ## 前提条件 一括コマンドを使用するには、OAuth 2.0認証を使用するBoxアプリケーションが必要です。該当するアプリケーションがない場合は、[開発者コンソール](https://app.box.com/developers/console)に移動して、[OAuth 2.0を使用した設定](g://authentication/oauth2/oauth2-setup)ガイドに従ってください。 ## 一括コマンドの設定と使用 1. `boxcli` GitHubリポジトリを複製するか、[`Bulk actions`](https://github.com/box/boxcli/tree/main/docs/Bulk%20actions)ディレクトリからファイルをダウンロードします。 ``` git clone https://github.com/box/boxcli.git ``` 必要に応じて`.csv`テンプレートを調整します。たとえば、複数のフォルダを作成する場合は、出発点として[`folders-create.csv`](https://github.com/box/boxcli/blob/main/docs/Bulk%20actions/folders/folders-create.csv)テンプレートを使用できます。 コマンドを実行します。 ``` box users:create --bulk-file-path <PATH_TO_CSV>/folders-create.csv ``` **Source:** [https://ja.developer.box.com/guides/cli/cli-docs/bulk-commands/](https://ja.developer.box.com/guides/cli/cli-docs/bulk-commands/) --- ### Content Open With **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides Content Open With 日本時間2021年12月22日をもって、新規のお客様に対するOpenWith UI Elementのサポートは終了しました。 Box Content Open With UI Elementを使用すると、開発者は、Box… # Content Open With 日本時間2021年12月22日をもって、新規のお客様に対する`OpenWith` UI Elementのサポートは終了しました。 Box Content Open With UI Elementを使用すると、開発者は、Boxに保存されているコンテンツをパートナーアプリケーションまたはローカルのデスクトップで開くためのドロップダウンを埋め込むことができます。 このElementは、有効化された統合に関する情報をBox APIを使用して取得し、パートナーのサービスを呼び出します。その後、ユーザーはこれらのサービスで操作を行うと、編集したコンテンツはBoxに自動的に保存されます。 Open With Elementに含まれる統合には、Google SuiteおよびBox Editがあります。Google Suiteの統合の詳細については、[Boxコミュニティサイト](https://support.box.com/hc/ja/articles/360043696994-Box-for-Google-Workspace%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を参照してください。 現在、この要素では、認証用に[App User](page://platform/user-types)のみがサポートされています。 ## インストール NPMまたはBox CDN経由でBox UI Elementsをインストールする方法は、[こちら](g://embed/ui-elements/installation)を参照してください。 ## Box Edit Box Editでは、Platformアプリケーションに統合するために追加の設定が必要です。Box Editは、デスクトップアプリケーションの[Box Tools](https://support.box.com/hc/ja/categories/360003188014-Box-Tools)を使用してコンテンツをローカルで開きます。 - リクエストでは (`https`ドメインからの) セキュアな接続を使用する必要があります。 - アプリケーションのドメインは、Box Toolsで許可する必要があります。手順については、[こちら](g://embed/ui-elements/custom-domains)を参照してください。理想的なワークフローでは、Box Toolsもインストールされるインストーラにこれらの手順をバンドルします。 - Safariでは、Box Toolsに接続するためにブラウザの機能拡張が必要です。詳細については、[こちら](https://support.box.com/hc/ja/articles/360043697334-Box-Tools%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)を参照してください。 ## G Suite Box for G Suiteの統合を使用するには、有効なG Suiteアカウントが必要です。ユーザーのG SuiteとBoxアカウントを接続するには、App Userの`external_app_user_id`を、ユーザーのG Suiteアカウントに関連付けられたメールアドレスに更新する必要があります。 App Userの`external_app_user_id`は、[`PUT /users/:id`](e://put-users-id)エンドポイントを介して更新できます。 ## 設定 Open With UI Elementを使用する前に、アプリケーションを許可し、Box APIエンドポイントを使用してApp Userのために統合を有効にしておく必要があります。 ### アプリケーションのアクティブ化 「Open With」UI Elementは、Box Platformを使用して構築するすべての開発者が使用できます。インスタンスに対してこの要素をアクティブ化するには、開発者コンソールでアプリケーションに [統合を有効化] スコープを追加します。 アプリケーションは、APIコールに対してアクティブ化されたら、会社での再認証が必要になります。この操作を実行する手順については、[こちら](g://authorization/platform-app-approval)を参照してください。 ## 使用可能な統合のリストの取得 アプリ統合をユーザーに割り当てるには、まず、使用可能な統合のリストを取得します。この`GET`リクエストは、次の`cURL`リクエストを使用して実行できます。 ``` curl -X GET https://api.box.com/2.0/app_integrations \ -H 'Authorization: Bearer [ACCESS_TOKEN]' ``` ``` { "next_marker": null, "entries": [ { "type": "app_integration", "id": "10897" }, { "type": "app_integration", "id": "1338" }, { "type": "app_integration", "id": "13418" }, { "type": "app_integration", "id": "3282" } ], "limit": 100 } ``` アプリ統合IDを使用して、指定したユーザーに統合を割り当てます。 ## 特定の統合の取得 IDに基づいて、特定の統合に関する追加情報を取得するには、次のGETリクエストを実行できます。 ``` curl -X GET \ https://api.box.com/2.0/app_integrations/[APP_INTEGRATION_ID] \ -H 'Authorization: Bearer [ACCESS_TOKEN]' ``` ``` { "type": "app_integration", "id": "10897", "app": { "type": "app", "id": "336417" }, "name": "Edit with G Suite", "description": "Securely manage your Google Docs, Sheets and Slides in Box", "executable_item_types": [ "file" ], "restricted_extensions": [ "docx", "gdoc", "xlsx", "gsheet", "pptx", "gslides", "gslide" ], "scoped_to": "parent" } ``` ## ユーザーへの統合の追加 有効なApp Userにアプリ統合を追加するには、以下の3つの情報が必要です。 - 有効な[サービスアカウント](page://platform/user-types/#service-account)アクセストークン - 統合を割り当てるApp UserのID - ユーザーに割り当てるアプリ統合のID アプリ統合に関する情報を取得するための前述の2つのリクエストは、有効な開発者トークンなど、任意の有効なトークンを使用して実行できますが、アプリ統合を追加および削除するには、有効なサービスアカウントのアクセストークンが必要です。開発者トークンを使用すると`404 Not Found`エラーが発生します。 アプリ統合をApp Userに割り当てるには、次の`POST`リクエストを実行できます。 ``` curl -X POST https://api.box.com/2.0/app_integration_assignments \ -H 'Authorization: Bearer [SERVICE_ACCOUNT_TOKEN]' \ -d '{ "assignee": { "type": "user", "id": "[APP_USER_ID]" }, "app_integration": { "type": "app_integration", "id": "[APP_INTEGRATION_ID]" } }' ``` ``` { "type": "app_integration_assignment", "id": "72048301", "assignee": { "type": "user", "id": "6084519920" }, "app_integration": { "type": "app_integration", "id": "3282" } } ``` JSONレスポンスに含まれるIDは、割り当て後にアプリ統合を管理するために使用できるため、アプリケーションで保存する必要があります。 ## ユーザーからの統合の削除 App Userからアプリ統合を削除するには、有効なサービスのアクセストークンと、前の手順で取得したアプリ統合割り当てIDを使用して次のリクエストを実行できます。 ``` curl -X DELETE https://api.box.com/2.0/app_integration_assignments/[APP_INTEGRATION_ASSIGNMENT_ID] \ -H 'Authorization: Bearer [SERVICE_ACCOUNT_TOKEN]' ``` ``` 204 No Content ``` ## サンプルHTML ``` <!DOCTYPE html> <html lang="en-US"> <head> <meta charset="utf-8" /> <title>Box Content Open With Demo</title> <!-- Latest version of the open with css for your locale --> <link rel="stylesheet" href="https://cdn01.boxcdn.net/platform/elements/{VERSION}/en-US/openwith.css" /> </head> <body> <div class="container" style="height:600px"></div> <!-- Latest version of the open with js for your locale --> <script src="https://cdn01.boxcdn.net/platform/elements/{VERSION}/en-US/openwith.js"></script> <script> var fileId = "123"; var accessToken = "abc"; var contentOpenWith = new Box.ContentOpenWith(); contentOpenWith.show(fileId, accessToken, { container: ".container" }); </script> </body> </html> ``` ## デモ ### Open Withの例 ### コンテンツエクスプローラとOpen Withの例 # アクセストークン 上記のデモは、デモの [JS] タブで有効なアクセストークンを指定しなければ、十分に機能しない可能性があります。Open With Elementの場合は、有効な[サービスアカウント](page://platform/user-types/#service-account)アクセストークンを指定する必要があります。 ## 認証 UI Elementは認証に依存しない方法で設計されているため、Boxアカウントを持つユーザー (管理対象ユーザー) とBox以外のアカウントを持つユーザー (App User) のどちらにUI Elementを使用するかどうかに関係なく、UI Elementを使用するのに特別な設定は必要ありません。その理由は、UI Elementは認証のために「トークン」を受け取ることのみを予期しており、Boxにはトークンの生成方法としてOAuthとJWTの2つがあるからです。 認証方法の選択について確認する ## スコープ ダウンスコープされたトークンを使用して統合を実行するには、`item_execute_integration`スコープに加えて、使用する特定の統合で必要となるスコープを含める必要があります。 - **Google**: 親フォルダに対する`item_readwrite` - **Adobe**: `root_readwrite` - **Box Edit**: 親フォルダに対する`item_readwrite` - **Box Edit単一ファイルコラボレーション**: ファイルに対する`item_readwrite` スコープの詳細については、[こちら](guide://api-calls/permissions-and-errors/scopes)を参照してください。 ## API ``` const { ContentOpenWith } = Box; const contentOpenWith = new ContentOpenWith(); /** * Shows the content open with element. * * @param {string} fileId - The root file id * @param {string} accessToken - Box API access token * @param {Object} [options] - Options * @return {void} */ contentOpenWith.show(fileId, accessToken, options); /** * Hides the content open with element, removes all event listeners, * and clears out the * HTML. * * @return {void} */ openWith.hide(); /** * Adds an event listener to the content open with element. Listeners should be added * before calling show() so no events are missed. * * @param {string} eventName - Name of the event * @param {Function} listener - Callback function * @return {void} */ contentOpenWith.addListener(eventName, listener); /** * Removes an event listener from the content open with element. * * @param {string} eventName - Name of the event * @param {Function} listener - Callback function * @return {void} */ contentOpenWith.removeListener(eventName, listener); /** * Removes all event listeners from the content open with element. * * @return {void} */ contentOpenWith.removeAllListeners(); ``` ### パラメータ | パラメータ | 型 | 説明 | | --- | --- | --- | | fileId | String | BoxファイルID。統合の実行対象となるファイルのIDです。 | | accessToken | String | 使用するBox APIアクセストークン。このトークンには、上記のフォルダに対する読み取り/書き込みアクセス権限が必要です。このトークンのために渡される値は、エクスプローラの表示中は有効期限切れにならないことが前提となっています。 | | options | Object | 省略可能なオプション。詳細は以下を参照してください。たとえば、contentExplorer.show(FOLDER_ID, TOKEN, {canDelete: false})を使用すると、削除オプションが非表示になります。 | ### オプション | パラメータ | 型 | 説明 | | | --- | --- | --- | --- | | dropdownAlignment | `left | right` | [開く] ボタンに対するドロップダウンの位置を決定します。デフォルトはrightです。 | | boxToolsName | String | この文字列は、「このファイルをデスクトップで開くにはBox Toolsをインストールしてください」というメッセージ内のBox Toolsの名前に置き換わります。 | | | boxToolsInstallUrl | String | このURLは、「このファイルをデスクトップで開くにはBox Toolsをインストールしてください」というメッセージ内でリンクされている、デフォルトのBoxインストール手順の代わりに使用されます。 | | | onExecute | Function | 統合の呼び出しが試行されたときに実行されるコールバック。 | | | onError | Function | エラーが発生したときに実行されるコールバック。 | | | requestInterceptor | Function | リクエストをインターセプトする関数。例については、このCodePenを参照してください。基盤となるXHRライブラリはaxios.jsで、インターセプタでは同様のアプローチに従っています。 | | | responseInterceptor | Function | レスポンスをインターセプトする関数。例については、このCodePenを参照してください。基盤となるXHRライブラリはaxios.jsで、インターセプタでは同様のアプローチに従っています。 | | 現在、`onError`イベントと`onExecute`イベントは、既知のバグの影響を受けています。一時的な回避策として`openWith.addListener('execute', callback)`および`openWith.addListener('error', callback)`を使用することをお勧めします。 ### イベント | イベント名 | イベントデータ | 説明 | | --- | --- | --- | | execute | 統合ID | 統合の呼び出しが実行されたときに発生します。 | | error | エラー | エラーが発生したときに発生します。 | **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/open-with/](https://ja.developer.box.com/guides/embed/ui-elements/open-with/) --- ### Content Picker **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides Content Picker Box Content Picker UI Elementを使用すると、開発者は、デスクトップまたはモバイルウェブアプリでBoxからファイルやフォルダを選択するためのサポートを追加できます。ライブラリは、指定されたフォルダに関する情報をBox API… # Content Picker Box Content Picker UI Elementを使用すると、開発者は、デスクトップまたはモバイルウェブアプリでBoxからファイルやフォルダを選択するためのサポートを追加できます。ライブラリは、指定されたフォルダに関する情報をBox APIを介して取得し、そのコンテンツをフォルダビューにレンダリングします。ユーザーはファイルまたはフォルダを選択でき、その後、このコンテンツ情報がアプリケーションの別の部分に渡されます。 ## インストール NPMまたはBox CDN経由でBox UI Elementsをインストールする方法は、[こちら](g://embed/ui-elements/installation)を参照してください。 ## 認証 UI Elementは認証に依存しない方法で設計されているため、Boxアカウントを持つユーザー (管理対象ユーザー) とBox以外のアカウントを持つユーザー (App User) のどちらにUI Elementを使用するかどうかに関係なく、UI Elementを使用するのに特別な設定は必要ありません。その理由は、UI Elementは認証のために「トークン」を受け取ることのみを予期しており、Boxにはトークンの生成方法としてOAuthとJWTの2つがあるからです。 認証方法の選択について確認する ## サンプルHTML ``` <!DOCTYPE html> <html lang="en-US"> <head> <meta charset="utf-8" /> <title>Box File Selection</title> <!-- Latest version of the picker css for your locale --> <link rel="stylesheet" href="https://cdn01.boxcdn.net/platform/elements/{VERSION}/en-US/picker.css" /> </head> <body> <div class="container" style="height:600px"></div> <!-- Latest version of the picker js for your locale --> <script src="https://cdn01.boxcdn.net/platform/elements/{VERSION}/en-US/picker.js"></script> <script> var folderId = "123"; var accessToken = "abc"; var filePicker = new Box.FilePicker(); filePicker.show(folderId, accessToken, { container: ".container" }); </script> </body> </html> ``` ## デモ ### ファイル選択のデモ ### フォルダ選択のデモ ### ファイル選択とプレビューのデモ ### ポップアップ形式でのファイル選択 # アクセストークン 上記のデモは、有効なアクセストークンを指定しなければ、完全に動作しない可能性があります。テスト目的の場合は、一時的な開発者トークンを使用できます。このトークンは、デモにある [JS] タブで更新する必要があります。 ## API ``` const { FilePicker } = Box; const filePicker = new FilePicker(); /** * Shows the file selection. * * @public * @param {String} folderId - The root folder id. * @param {String} accessToken - The API access token. * @param {Object|void} [options] - Optional options. * @return {void} */ filePicker.show(folderId, accessToken, options); /** * Hides the file picker, removes all event listeners, and clears out the HTML. * * @public * @return {void} */ filePicker.hide(); /** * Clears out the internal in-memory cache for the file picker. This forces * items to be reloaded from the API. * * @public * @return {void} */ filePicker.clearCache(); /** * Adds an event listener to the file picker. Listeners should be added before * calling show() so no events are missed. * * @public * @param {String} eventName - Name of the event. * @param {Function} listener - Callback function. * @return {void} */ filePicker.addListener(eventName, listener); /** * Removes an event listener from the file picker. * * @public * @param {String} eventName - Name of the event. * @param {Function} listener - Callback function. * @return {void} */ filePicker.removeListener(eventName, listener); /** * Removes all event listeners from the file picker. * * @public * @return {void} */ filePicker.removeAllListeners(); ``` ### パラメータ | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | String | BoxフォルダのID。選択しようとしているコンテンツが含まれるフォルダのIDです。Boxの [すべてのファイル] フォルダを使用する場合は、folderIdとして0を使用します。 | | accessToken | String | 使用するBox APIアクセストークン。このトークンには、上記のフォルダに対する読み取り/書き込みアクセス権限が必要です。このトークンのために渡される値は、エクスプローラの表示中は有効期限切れにならないことが前提となっています。 | | options | Object | 省略可能なオプション。詳細は以下を参照してください。たとえば、contentExplorer.show(FOLDER_ID, TOKEN, {canDelete: false})を使用すると、削除オプションが非表示になります。 | ### オプション | パラメータ | 型 | デフォルト | 説明 | | | --- | --- | --- | --- | --- | | container | String | document.body | Content Pickerが配置されるコンテナのCSSセレクタ。hide() を呼び出すと、このコンテナは空になります。 | | | sortBy | String | name | コンテンツリストの最初の並べ替え基準オプション。値は名前またはdateになります。 | | | sortDirection | String | ASC | コンテンツリストの最初の並べ替え方向オプション。値はASCまたはDESCになります。 | | | logoUrl | String | | ヘッダーに表示するカスタムロゴのURL。この値が「box」という文字列の場合は、Boxのロゴが表示されます。 | | | extensions | Array<string> | [] | 選択対象として許可するファイル拡張子の配列 (例: ['doc', 'ppt'])。ファイル選択機能のみに適用され、フォルダ選択機能には適用されません。拡張子が指定されている場合は、その拡張子のみを選択できます。空の配列の場合は、すべてのファイル拡張子が選択対象として許可されることを示します。 | | | maxSelectable | Number | Infinity | 選択可能なファイルまたはフォルダの数。ファイルまたはフォルダが1つだけ選択されるようにする場合は1を指定します。 | | | canUpload | Boolean | true | これをfalseに設定すると、アップロードオプションが非表示になります。このオプションを非表示にするだけではアップロードを防ぐことはできず、現在のフォルダに対する権限でもcan_uploadをfalseに設定する必要があります。フォルダに対する権限can_uploadがfalseに設定されている場合、このオプションによる効果はありません。 | | | canSetShareAccess | Boolean | true | falseに設定すると、共有ドロップダウン選択が非表示になります。この選択のドロップダウンを非表示にするだけでは共有権限の変更を防ぐことはできず、フォルダ項目に対する権限でもcan_set_share_accessをfalseに設定する必要があります。フォルダ項目に対する権限can_set_share_accessがfalseに設定されている場合、このオプションによる効果はありません。 | | | canCreateNewFolder | Boolean | true | フォルダの新規作成オプションが非表示になります。このオプションを非表示にするだけではフォルダの新規作成を防ぐことはできず、フォルダ項目に対する権限でもcan_uploadをfalseに設定する必要があります。フォルダ項目に対する権限can_uploadがfalseに設定されている場合、このオプションによる効果はありません。 | | | sharedLink | String | | 共有リンクのURL。フォルダが共有されており、アクセストークンがファイルの所有者またはコラボレータに属していない場合は必須です。 | | | sharedLinkPassword | String | | 共有リンクのパスワード。共有リンクにパスワードが設定されている場合は必須です。 | | | modal | Object | | ウィンドウ属性を指定すると、Content Pickerは所定の位置に作成されません。代わりに、コンテナ内にボタンが作成され、そのボタンをクリックすると、ウィンドウポップアップでContent Pickerが起動します。 | | | size | String | undefined | Content Pickerが、幅がsmallまたはlargeのコンテナに合わせて表示されるように示します。値には空白か、smallまたはlargeを指定できます。空白にした場合、UI Elementはそのコンテナに合わせて調整され、自動でsmallの幅とlargeの幅が切り替わります。 | | | isTouch | Boolean | デフォルトでは、ブラウザとデバイスのデフォルトのタッチサポートが設定されます。 | コンテンツエクスプローラがタッチ対応デバイスにレンダリングされることを示します。 | | | autoFocus | Boolean | false | trueに設定すると、初回読み込み時に項目グリッドに焦点が当てられます。 | | | defaultView | String | files | 値はfilesまたはrecentsになります。recentsに設定すると、デフォルトで、通常のファイル/フォルダ構造ではなく最近使用した項目が表示されます。 | | | chooseButtonLabel | String | | [選択] ボタンのラベルに置き換わる文字列 | | | cancelButtonLabel | String | | [キャンセル] ボタンのラベルに置き換わる文字列 | | | requestInterceptor | Function | | リクエストをインターセプトする関数。例については、このCodePenを参照してください。基盤となるXHRライブラリはaxios.jsで、インターセプタでは同様のアプローチに従っています。 | | | responseInterceptor | Function | | レスポンスをインターセプトする関数。例については、このCodePenを参照してください。基盤となるXHRライブラリはaxios.jsで、インターセプタでは同様のアプローチに従っています。 | | ### ウィンドウオプション | パラメータ | 型 | デフォルト | 説明 | | --- | --- | --- | --- | | buttonLabel | String | | ボタンのラベル | | buttonClassName | String | Boxの青いボタン | ボタンを装飾するためのCSSクラス | | modalClassName | String | | ウィンドウポップアップコンテンツを装飾するためのCSSクラス | | overlayClassName | String | | ウィンドウポップアップオーバーレイを装飾するためのCSSクラス | ### イベント | イベント名 | イベントデータ | 説明 | | --- | --- | --- | | choose | Array<File | Web Link | Folder> | [選択] ボタンが押されたときに発生します。イベントデータは、ファイルの選択とフォルダの選択のどちらであるかに応じて、フォルダオブジェクト、ファイルオブジェクト、またはウェブリンクオブジェクトの配列になります。 | | cancel | | [キャンセル] ボタンが押されたときに発生します。 | ## キーボードショートカット クリックによって手動で、またはJavaScriptや上記の`autoFocus`プロパティによってプログラムで項目グリッドがフォーカスされていると、以下のキーボードショットカットが機能します (対応する操作が適切で許可されている場合)。 | キー | 動作 | | --- | --- | | Arrow Up | 前の項目行 | | Arrow Down | 次の項目行 | | Ctrl/Cmd + Arrow Up | 最初の項目行 | | Ctrl/Cmd + Arrow Down | 最後の項目行 | | / | 検索 | | Shift + X | 項目行を選択 | | Enter | 選択した項目を開く | | g then f | ルートフォルダに移動 | | g then u | 現在のフォルダにアップロード | | g then b | ルートフォルダの階層リンクをフォーカス | | g then s | 選択した項目を表示 | | g then x | キャンセル | | g then c | 選択 | | g then r | 最近使用した項目 | ## スコープ アプリケーションで、エンドユーザーがContent Picker機能のサブセットのみにアクセスできるようにする必要がある場合は、[ダウンスコープ](guide://authentication/tokens/downscope)を使用して、アクセストークンを適切にダウンスコープして必要な権限のセットを含むトークンを生成し、Content Pickerを初期化するエンドユーザークライアントに安全に渡すことができます。 以下は、ダウンスコープと一緒に使用する、UI Element固有の新しいスコープのセットです。こうしたスコープにより、開発者は、ダウンスコープされたトークンに適切なスコープを構成して、Content PickerのUIコントロールを有効/無効にすることができます。詳細については、[Box UI Elementsの専用スコープ](guide://api-calls/permissions-and-errors/scopes)を参照してください。 | スコープ名 | 付与される権限 | | --- | --- | | base_picker | ユーザー/ファイル/トークンの権限に基づいて、フォルダツリー内のコンテンツへのアクセスを許可します。 | ### 機能のスコープ | スコープ名 | 付与される権限 | | --- | --- | | item_share | トークン交換リクエストの「resource」で指定されたリソースの共有を許可します。 | | item_upload | Content Pickerでのアップロードを許可します。 | ### サンプルのシナリオ | シナリオ | スコープ | | --- | --- | | ユーザーが単にフォルダ構造内を移動してファイル/フォルダを選択する | base_picker | | ユーザーがフォルダ構造内を移動して、ファイル/フォルダを選択し、アクセスレベルも設定する | base_picker + item_share | | ユーザーがフォルダ構造内を移動して、ファイル/フォルダを選択し、ファイル/フォルダもアップロードする | base_picker + item_upload | | ユーザーがフォルダ構造内を移動して、ファイル/フォルダを選択し、ファイル/フォルダをアップロードして、ファイル/フォルダのアクセスレベルも設定する | base_picker + item_share + item_upload | ## カスタム操作 コンテンツエクスプローラとContent Pickerでは、ファイルやフォルダの [**その他のオプション**] メニューの操作を拡張できます。カスタムオプションは、ユーザーが省略記号ボタンをクリックすると表示されます。 [**その他のオプション**] メニューをカスタマイズするには、カスタム操作の配列を`itemActions`に渡します。 ``` contentExplorer.show(configData.FOLDER_ID, configData.ACCESS_TOKEN, { container: ".container", itemActions: customActions, }); ``` この配列には、複数の操作を含めることができます。操作オブジェクトには、`label`、`onAction`コールバック関数を含める必要があります。`file`または`folder`の値を渡すことで、特定の項目の`type`のみに表示されるようカスタム操作にフィルタをかけることができます。`filter`値は、特定のファイル拡張子など、高度なフィルタに使用します。 ``` const customActions = [ { label: "Preview in New Window", onAction: (item) => alert('action ' + item), type: 'file', }, { label: "Open in Box.com", onAction: (item) => window.open("https://app.box.com"), }, { label: "Export", onAction: (item) => console.log('action ' + item), filter: (item) => item.extension?.toLowerCase() === 'pdf', }, ]; ``` CodePenで実装例を確認してください。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/picker/](https://ja.developer.box.com/guides/embed/ui-elements/picker/) --- ### Content Sidebar **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides Content Sidebar Box Content Sidebar UI Elementを使用すると、開発者は、ファイル関連のメタデータ (Box Skills… # Content Sidebar Box Content Sidebar UI Elementを使用すると、開発者は、ファイル関連のメタデータ (Box Skillsを含む) とアクティビティフィード (バージョン、コメント、タスクを含む) を表示するためのサポートをデスクトップまたはモバイルウェブアプリで追加できます。 ## インストール NPMまたはBox CDN経由でBox UI Elementsをインストールする方法は、[こちら](g://embed/ui-elements/installation)を参照してください。 ## 認証 UI Elementは認証に依存しない方法で設計されているため、Boxアカウントを持つユーザー (管理対象ユーザー) とBox以外のアカウントを持つユーザー (App User) のどちらにUI Elementを使用するかどうかに関係なく、UI Elementを使用するのに特別な設定は必要ありません。その理由は、UI Elementは認証のために「トークン」を受け取ることのみを予期しており、Boxにはトークンの生成方法としてOAuthとJWTの2つがあるからです。 認証方法の選択について確認する ## サンプルHTML ``` <!DOCTYPE html> <html lang="en-US"> <head> <meta charset="utf-8" /> <title>Box Content Sidebar</title> <!-- Latest version of the sidebar css for your locale --> <link rel="stylesheet" href="https://cdn01.boxcdn.net/platform/elements/{VERSION}/en-US/sidebar.css" /> </head> <body> <div class="container" style="height:600px"></div> <!-- Latest version of the sidebar js for your locale --> <script src="https://cdn01.boxcdn.net/platform/elements/{VERSION}/en-US/sidebar.js"></script> <script> var fileId = "123"; var accessToken = "abc"; // At least one of the sub-sidebars (details, activity feed, skills, metadata) need to be turned on for something to render. Details is iteself further divided into notices, properties, access stats and versions, one of which need to be enabled for the details sidebar to render. var sidebar = new Box.ContentSidebar(); sidebar.show(fileId, accessToken, { container: ".container", detailsSidebarProps: { hasNotices: true, hasProperties: true, hasAccessStats: true, hasVersions: true }, hasActivityFeed: true, hasSkills: true, hasMetadata: true }); </script> </body> </html> ``` ## デモ ### スタンドアロンサイドバー ### コンテンツプレビューを使用したサイドバー ### コンテンツエクスプローラを使用したサイドバー ## API ``` const { ContentSidebar } = Box; const sidebar = new ContentSidebar(); /** * Shows the file selection. * * @public * @param {String} fileId - The file id. * @param {String} token - The API access token. * @param {Object|void} [options] - Optional options. * @return {void} */ sidebar.show(fileId, token, options); /** * Hides the sidebar, removes all event listeners, and clears out the HTML. * * @public * @return {void} */ sidebar.hide(); /** * Clears out the internal in-memory cache for the sidebar. This forces * items to be reloaded from the API. * * @public * @return {void} */ sidebar.clearCache(); /** * Adds an event listener to the sidebar. Listeners should be added before * calling show() so no events are missed. * * @public * @param {String} eventName - Name of the event. * @param {Function} listener - Callback function. * @return {void} */ sidebar.addListener(eventName, listener); /** * Removes an event listener from the sidebar. * * @public * @param {String} eventName - Name of the event. * @param {Function} listener - Callback function. * @return {void} */ sidebar.removeListener(eventName, listener); /** * Removes all event listeners from the sidebar. * * @public * @return {void} */ sidebar.removeAllListeners(); ``` ### パラメータ | パラメータ | 型 | 説明 | | --- | --- | --- | | fileId | String | BoxファイルID。サイドバーが必要なファイルのIDです。 | | token | String | 使用するBox APIアクセストークン。このトークンには、上記のファイルに対する読み取り/書き込みアクセス権限を指定できます。このトークンのために渡される値は、サイドバーの表示中は有効期限切れにならないことが前提となっています。 | | options | Object | 追加のオプション。たとえば、sidebar.show(FILE_ID, TOKEN, {hasProperties: true})を使用すると、サイドバーにファイルのプロパティが表示されます。 | ### オプション | パラメータ | 型 | デフォルト | 説明 | | --- | --- | --- | --- | | container | String | document.body | Content Sidebarが配置されるコンテナのCSSセレクタ。hide()を呼び出すと、このコンテナは空になります。 | | hasActivityFeed | Boolean | false | trueに設定すると、バージョン、コメント、およびタスクを含むアクティビティフィードが表示されます。 | | hasMetadata | Boolean | false | trueに設定すると、ファイルのBoxメタデータが表示されます。 | | hasSkills | Boolean | false | trueに設定すると、ファイルのスキルデータが表示されます。 | | detailsSidebarProps | Object | {} | 以下のセクションを参照してください。 | | requestInterceptor | Function | | リクエストをインターセプトする関数。例については、このCodePenを参照してください。基盤となるXHRライブラリはaxios.jsで、インターセプタでは同様のアプローチに従っています。 | | responseInterceptor | Function | | レスポンスをインターセプトする関数。例については、このCodePenを参照してください。基盤となるXHRライブラリはaxios.jsで、インターセプタでは同様のアプローチに従っています。 | ### detailsSidebarProps | パラメータ | 型 | デフォルト | 説明 | | --- | --- | --- | --- | | hasProperties | Boolean | false | trueに設定すると、詳細サイドバーにファイルのプロパティが表示されます。 | | hasAccessStats | Boolean | false | trueに設定すると、詳細サイドバーにファイルのアクセス統計情報が表示されます。 | | hasVersions | Boolean | false | trueに設定すると、詳細サイドバーにファイルのバージョンが表示されます。 | | hasNotices | Boolean | false | trueに設定すると、詳細サイドバーにファイル関連の通知が表示されます。 | ## スコープ アプリケーションで、エンドユーザーがContent Sidebar機能のサブセットのみにアクセスできるようにする必要がある場合は、[ダウンスコープ](guide://authentication/tokens/downscope)を使用して、アクセストークンを適切にダウンスコープして必要な権限のセットを含むトークンを生成し、Content Sidebarを初期化するエンドユーザークライアントに安全に渡すことができます。 以下は、ダウンスコープと一緒に使用する、UI Element固有の新しいスコープのセットです。こうしたスコープにより、開発者は、ダウンスコープされたトークンに適切なスコープを構成して、Content SidebarのUIコントロールを有効/無効にすることができます。詳細については、[Box UI Elementsの専用スコープ](guide://api-calls/permissions-and-errors/scopes)を参照してください。 ### 基本スコープ | スコープ名 | 付与される権限 | | --- | --- | | base_sidebar | サイドバーに必要なファイルの基本情報の取得をユーザーに許可します。 | ### 機能のスコープ | スコープ名 | 付与される権限 | | --- | --- | | item_comment | コメントの追加と編集を許可します。 | | item_rename | ファイルの説明の編集を許可します。 | | item_upload | ファイルメタデータの編集を許可します。 | | item_task | タスクの作成と解決を許可します。 | **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/sidebar/](https://ja.developer.box.com/guides/embed/ui-elements/sidebar/) --- ### Device Pinner **Type:** guide | **Category:** セキュリティ | **Section:** Developer Guides Device Pinner デバイスの管理と呼ばれる、モバイルデバイスまたはデスクトップデバイスからBoxにアクセスする際のセキュリティを強化するデバイス管理機能を追加しました。これは、ユーザーがBoxへのアクセスに使用するデバイス数の上限を管理者が設定できるようにし、そのBox… # Device Pinner デバイスの管理と呼ばれる、モバイルデバイスまたはデスクトップデバイスからBoxにアクセスする際のセキュリティを強化するデバイス管理機能を追加しました。これは、ユーザーがBoxへのアクセスに使用するデバイス数の上限を管理者が設定できるようにし、そのBoxアカウントへのアクセスに新しいデバイスが使用されるたびに管理者とユーザーにアラートを送信するログイン追跡機能に基づいています。 デバイスの管理の詳細については、Boxの[コミュニティのドキュメント](https://support.box.com/hc/ja/articles/360043693814-%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AE%E7%AE%A1%E7%90%86%E3%81%AE%E8%A8%AD%E5%AE%9A)を参照してください。 ## API Box APIを使用すると、デバイスピンを検査したり削除したりすることができます。 - [`GET /enterprise/:id/device_pinners`](e://get-enterprises-id-device-pinners): 会社内のすべてのデバイスピンを取得します。 - [`GET /device_pinners/:id`](e://get-device-pinners-id): 個々のデバイスピンに関する情報を取得します。 - [`DELETE /device_pinners/:id`](e://delete-device-pinners-id): 個々のデバイスピンを削除します。 **Source:** [https://ja.developer.box.com/guides/security/device-pinners/](https://ja.developer.box.com/guides/security/device-pinners/) --- ### Enterprise Event **Type:** guide | **Category:** イベント | **Section:** Developer Guides Enterprise Event Enterprise Eventは、企業のBoxインスタンスにあるすべてのユーザーとコンテンツのイベントフィードを提供します。stream_type… # Enterprise Event Enterprise Eventは、企業のBoxインスタンスにあるすべてのユーザーとコンテンツのイベントフィードを提供します。`stream_type`に応じて、アプリケーションは、ライブイベントを登録するかイベントの履歴を照会することができます。これらのストリームタイプへのアクセスは、**新規レポートの実行および既存レポートへのアクセスを行う**ための管理者権限を持つユーザーに制限されます。 **Source:** [https://ja.developer.box.com/guides/events/enterprise-events/](https://ja.developer.box.com/guides/events/enterprise-events/) --- ### Enterprise Eventの取得 **Type:** guide | **Category:** イベント | **Section:** Developer Guides Enterprise Eventの取得 Enterprise Eventを取得するには、stream_typeをadmin_logsまたはadmin_logs_streamingに設定してGET /events APIを呼び出します。 このAPI… # Enterprise Eventの取得 Enterprise Eventを取得するには、`stream_type`を`admin_logs`または`admin_logs_streaming`に設定して[`GET /events`](e://get_events) APIを呼び出します。 このAPIを使用するには、ユーザーが企業の管理者または**新規レポートの実行および既存レポートへのアクセスを行う**のための権限を持つ共同管理者である必要があります。 ## ストリームタイプ | ストリームタイプ | | | --- | --- | | admin_logs | イベントの履歴を最大1年分照会できるようにします | | admin_logs_streaming | ほぼリアルタイムでライブイベントにサブスクライブできるようにします | ## ライブで監視 Box内で生成された最近のイベントをEnterprise全体で監視するには、`stream_type`を`admin_logs_streaming`に設定します。これは、Enterprise Event Stream APIとも呼ばれます。 このフィードでは、時系列の正確さよりもレイテンシの低さを重視しています。つまり、Boxでは、イベントが複数回、時系列に関係なく返される場合があります。イベントは、Boxで処理されるとほぼリアルタイムでAPIを介して返されます。少しの遅延やバッファが発生すると、新しいイベントがカーソル位置の後に書き込まれなくなります。この`stream_type`で取得できるイベントは、2週間分だけです。 ## 履歴の照会 Enterprise全体のイベント履歴を最大1年分照会するには、`stream_type`を`admin_logs`に設定します。これは、 Enterprise Event History APIとも呼ばれます。 このフィードでは、レイテンシよりも完全性を重視しています。つまり、Boxでは、管理イベントが重複することなく時系列で配信されますが、レイテンシはユーザーまたは`admin_logs_streaming`のフィードよりも高くなります。イベントは、フィルタをかけている期間より後に到着する可能性があるため、ほぼリアルタイムで使用すると見逃される場合があります。 ## 匿名ユーザー 場合によっては、イベントフィードには、IDが`2`のユーザーが表示される可能性があります。これは、匿名ユーザーを表すBoxの内部識別子です。 匿名ユーザーは、ログインしていないユーザーです。この状況は、ユーザーがコンテンツを操作し、最初にログインを求められない場合にいつでも発生する可能性があります。たとえば、ユーザーが、公開共有リンクを使用してファイルをダウンロードするときなどです。 ## 制限 Enterprise Eventフィードでは、Long pollingがサポートされません。 Boxでのイベントの保存は無期限ではありません。`stream_type`を`admin_logs_streaming`に設定した場合は2週間分のEnterprise Event、`stream_type`を`admin_logs`に設定した場合は1年分のEnterprise Eventを取得できます。また、Box管理コンソールで[エクスポートされるレポート](https://support.box.com/hc/en-us/articles/360043696534-Running-Reports)では、7年分のEnterprise Eventを取得できます。 `admin_logs_streaming`フィードでは、すべての結果を迅速に返すことを重視しています。つまり、Boxでは、イベントが順不同で複数回返される可能性があります。重複するイベントは、イベントIDによって識別できます。 ## イベントタイプによるフィルタ Enterprise Eventフィードでは、イベントタイプによるフィルタがサポートされています。 イベントタイプの完全なリストについては、以下を参照してください。 ## イベントタイプ Enterpriseに対して、以下のイベントがトリガーされます。このリストですべてを網羅しているわけではないため、記載されていないイベントが表示される可能性もあります。 | イベント名 | 説明 | | --- | --- | | ACCESS_GRANTED | Boxサポートに対する自分のアカウントへのアクセス権限の付与 | | ACCESS_REVOKED | Boxサポートに付与した自分のアカウントへのアクセス権限の取り消し | | ADD_DEVICE_ASSOCIATION | デバイスの関連付けの追加 | | ADD_LOGIN_ACTIVITY_DEVICE | 未確認のデバイスからのログイン | | ADMIN_LOGIN | 管理コンソールを使用した管理対象ユーザーアカウントへのログイン | | ANNOTATIONV2_CREATE | 注釈の作成 | | ANNOTATIONV2_DELETE | 注釈の削除 | | ANNOTATIONV2_EDIT | 注釈の編集 | | APPLICATION_CREATED | 開発者コンソールでの新しいアプリケーションの作成 | | APPLICATION_PUBLIC_KEY_ADDED | アプリケーションへの公開キーの追加 | | APPLICATION_PUBLIC_KEY_DELETED | アプリケーションからの公開キーの削除 | | BOX_AI_USER_REQUEST | ユーザーからBox AIに対する質問またはリクエストの送信 | | BOX_AI_USER_FAILED_REQUEST | 質問またはリクエストでのエラー | | CHANGE_ADMIN_ROLE | 管理者の役割の変更 | | CHANGE_FOLDER_PERMISSION | フォルダの権限の変更 | | COLLABORATION_ACCEPT | 招待の承諾 | | COLLABORATION_EXPIRATION | コラボレータへの有効期限の設定 | | COLLABORATION_INVITE | 招待 | | COLLABORATION_REMOVE | コラボレータの削除 | | COLLABORATION_ROLE_CHANGE | ユーザーロールの変更 | | COLLECTION_CREATE | コレクションの作成 | | COLLECTION_DELETE | コレクションの削除 | | COLLECTION_UPDATE | コレクションの更新 | | COLLECTION_ITEM_CREATE | コレクションへの項目の追加 | | COLLECTION_ITEM_DELETE | コレクションからの項目の削除 | | COLLECTION_ITEM_UPDATE | コレクションの項目の更新 | | COMMENT_CREATE | ファイル上でのコメントの作成 | | COMMENT_DELETE | ファイル上のコメントの削除 | | CONTENT_ACCESS | 承認されたエンドユーザーまたはBoxアプリケーションでのプログラムによるファイルへのアクセス | | CONTENT_RECOVERY_REPORT_CREATE | コンテンツリカバリレポートの作成 | | CONTENT_RECOVERY_REPORT_DELETE | コンテンツリカバリレポートの削除 | | CONTENT_RECOVERY_REPORT_INITIATE | コンテンツリカバリレポートの実行 | | CONTENT_WORKFLOW_ABNORMAL_DOWNLOAD_ACTIVITY | 管理コンソールで設定されたポリシーのトリガー | | CONTENT_WORKFLOW_AUTOMATION_ADD | 自動化の追加 | | CONTENT_WORKFLOW_AUTOMATION_DELETE | 自動化の削除 | | CONTENT_WORKFLOW_POLICY_ADD | コンテンツポリシーの追加 | | CONTENT_WORKFLOW_SHARING_POLICY_VIOLATION | 共有ポリシーの違反 | | CONTENT_WORKFLOW_UPLOAD_POLICY_VIOLATION | 管理者が設定したアップロードポリシーの違反 | | COPY | コピー | | DATA_RETENTION_CREATE_RETENTION | リテンションの作成 | | DATA_RETENTION_REMOVE_RETENTION | リテンションの削除 | | DELETE | 削除 | | DELETE_USER | ユーザーの削除 | | DEVICE_TRUST_CHECK_FAILED | デバイストラストチェックの失敗 | | DISABLE_MULTI_FACTOR_AUTH | 多要素認証の無効化 | | DOWNLOAD | ダウンロード | | EDIT | 編集 | | EDIT_USER | ユーザーの編集 | | EDR_CROWDSTRIKE_DEVICE_DETECTED | CrowdStrike Falconプラットフォームによるデバイスの検出 | | EDR_CROWDSTRIKE_NO_BOX_TOOLS | CrowdStrike FalconプラットフォームをサポートするデバイスでのBox Toolsパッケージの未検出 | | EDR_CROWDSTRIKE_BOX_TOOLS_OUTDATED | CrowdStrike FalconプラットフォームをサポートするデバイスでのBox Toolsパッケージの期限切れ | | EDR_CROWDSTRIKE_DRIVE_OUTDATED | CrowdStrike FalconプラットフォームをサポートするデバイスでのBox Driveアプリケーションの期限切れ | | EDR_CROWDSTRIKE_ACCESS_ALLOWED_NO_CROWDSTRIKE_DEVICE | CrowdStrike Falconプラットフォームで識別されていないデバイスへのアクセスの許可 | | EDR_CROWDSTRIKE_ACCESS_REVOKED | CrowdStrike Falconプラットフォームで識別されたデバイスへのアクセスの取り消し | | EMAIL_ALIAS_CONFIRM | ユーザーのメールエイリアスの確認 | | EMAIL_ALIAS_REMOVE | ユーザーのメールエイリアスの削除 | | ENABLE_MULTI_FACTOR_AUTH | 多要素認証の有効化 | | ENTERPRISE_APP_AUTHORIZATION_UPDATE | JWTアプリケーションの承認または再承認 | | EXTERNAL_COLLAB_SECURITY_SETTINGS | 外部コラボレーション用セキュリティ設定の変更 | | FAILED_LOGIN | ログインの失敗 | | FILE_MARKED_MALICIOUS | ファイルでのウイルスの検出。イベントは、通知を希望した企業にのみ送信されます。 | | FILE_WATERMARKED_DOWNLOAD | 電子すかし付きファイルのダウンロード | | GROUP_ADD_ITEM | グループへの項目の追加 | | GROUP_ADD_USER | グループへのユーザーの追加 | | GROUP_ADMIN_CREATED | グループ管理者の追加 | | GROUP_ADMIN_DELETED | グループ管理者の削除 | | GROUP_ADMIN_PERMISSIONS_UPDATED | グループ管理者権限の更新 | | GROUP_CREATION | 新規グループの作成 | | GROUP_DELETION | グループの削除 | | GROUP_EDITED | グループの編集 | | GROUP_REMOVE_ITEM | 管理コンソールを使用したグループからのフォルダの削除 | | GROUP_REMOVE_USER | グループからのユーザーの削除 | | ITEM_EMAIL_SEND | コラボレータへの項目に関するメールの送信 | | ITEM_MODIFY | 変更した項目 | | ITEM_OPEN | 開いた項目 | | ITEM_SHARED_UPDATE | 共有リンク設定の更新 | | ITEM_SYNC | フォルダの同期 | | ITEM_UNSYNC | フォルダの同期の解除 | | LEGAL_HOLD_ASSIGNMENT_CREATE | リーガルホールド割り当ての作成 | | LEGAL_HOLD_ASSIGNMENT_DELETE | リーガルホールド割り当ての削除 | | LEGAL_HOLD_POLICY_CREATE | リーガルホールドポリシーの作成 | | LEGAL_HOLD_POLICY_DELETE | リーガルホールドポリシーの削除 | | LEGAL_HOLD_POLICY_UPDATE | リーガルホールドポリシーの更新 | | LOCK | ロック | | LOGIN | ログイン | | METADATA_INSTANCE_CREATE | メタデータインスタンスの作成 | | METADATA_INSTANCE_DELETE | メタデータインスタンスの削除 | | METADATA_INSTANCE_UPDATE | メタデータインスタンスの更新 | | METADATA_TEMPLATE_CREATE | メタデータテンプレートの作成 | | METADATA_TEMPLATE_UPDATE | メタデータテンプレートの更新 | | METADATA_TEMPLATE_DELETE | メタデータテンプレートの削除 | | MOVE | 移動 | | NEW_USER | ユーザーの作成 | | OAUTH2_ACCESS_TOKEN_REVOKE | OAuth 2.0アクセストークンの取り消し | | PREVIEW | プレビュー | | REMOVE_DEVICE_ASSOCIATION | デバイスの関連付けの削除 | | REMOVE_LOGIN_ACTIVITY_DEVICE | アプリに関連付けられたユーザーセッションの無効化 | | RENAME | ファイルまたはフォルダの名前や説明の変更 | | RETENTION_POLICY_ASSIGNMENT_ADD | リテンションポリシー割り当ての追加 | | SHARE | 共有リンクの有効化 | | SHARE_EXPIRATION | 共有リンクの有効期限の設定 | | SHARED_LINK_SEND | 共有リンクとメッセージ (省略可) を含むメールの送信 | | SHARED_LINK_REDIRECT_OUT_OF_SHARED_CONTEXT | 共有リンクによって発生するリダイレクト | | SHIELD_ALERT | 企業のShieldルールに基づいた、Shieldによる異常なダウンロード、セッション、場所、悪意のあるコンテンツの検出。詳細については、Shieldアラートイベントを参照してください。 | | SHIELD_DOWNLOAD_BLOCKED | Shieldアクセスポリシーに基づいた、エンドユーザーによるファイルのダウンロードのブロック | | SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED | 外部コラボレーションへのアクセスのブロック | | SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED_MISSING_JUSTIFICATION | 正当な理由がない場合の外部コラボレーションへのアクセスのブロック | | SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED | 外部コラボレーションへの招待のブロック | | SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED_MISSING_JUSTIFICATION | 正当な理由がない場合の外部コラボレーションへの招待のブロック | | SHIELD_EXTERNAL_COLLAB_INVITE_JUSTIFIED | 外部コラボレーションへの招待の承認 | | SHIELD_JUSTIFICATION_APPROVAL | Shieldの正当な理由の承認 | | SHIELD_SHARED_LINK_ACCESS_BLOCKED | 共有リンクへのアクセスのブロック | | SHIELD_SHARED_LINK_STATUS_RESTRICTED_ON_CREATE | 共有リンクの作成と、コンテンツへのアクセスの制限 | | SHIELD_SHARED_LINK_STATUS_RESTRICTED_ON_UPDATE | 共有リンクの更新と、コンテンツへのアクセスの制限 | | SHIELD_INFORMATION_BARRIER_ENABLED | Shield情報バリアの有効化 | | SHIELD_INFORMATION_BARRIER_DISABLED | Shield情報バリアの非アクティブ化 | | SHIELD_INFORMATION_BARRIER_PENDING | アクティブ化前のShield情報バリア | | SHIELD_INFORMATION_BARRIER_GROUP_ADD_USER_BLOCKED | 情報バリアの制限による、ユーザーの追加のブロック | | SHIELD_INFORMATION_BARRIER_COLLAB_BLOCKED | 情報バリアの制限による、ユーザーに対するコラボレーション作成のブロック | | SHIELD_INFORMATION_BARRIER_SHARED_ITEM_ACCESS_BLOCKED | 情報バリアの制限による、ユーザーの共有項目へのアクセスのブロック | | SHIELD_INFORMATION_BARRIER_ITEM_MOVE_BLOCKED | 情報バリアの制限による、項目の移動のブロック | | SHIELD_INFORMATION_BARRIER_ITEM_COPY_BLOCKED | 情報バリアの制限による、項目のコピーのブロック | | SHIELD_INFORMATION_BARRIER_ITEM_OWNER_TRANSFER_BLOCKED | 情報バリアの制限による、項目の転送のブロック | | SIGN_DOCUMENT_ASSIGNED | 署名者への署名リクエストの送信 | | SIGN_DOCUMENT_CANCELLED | APIまたはUIでの署名リクエストのキャンセル | | SIGN_DOCUMENT_COMPLETED | 全署名者による署名リクエストへの署名 | | SIGN_DOCUMENT_CONVERTED | 署名用.pdfへの署名リクエストの変換 | | SIGN_DOCUMENT_CREATED | APIまたはUIでの署名リクエストの作成。ドキュメントはまだ署名者に送信されていません。 | | SIGN_DOCUMENT_DECLINED | 署名者による署名リクエストの拒否 | | SIGN_DOCUMENT_EXPIRED | 署名リクエストの期限切れ (署名は未完了) | | SIGN_DOCUMENT_SIGNED | 署名者による署名リクエストへの署名 | | SIGN_DOCUMENT_VIEWED_BY_SIGNER | 署名者による署名用メールの [ドキュメントをレビュー] のクリックまたは署名用URLへのアクセス | | SIGNER_DOWNLOADED | 署名者による署名用ドキュメントのダウンロード | | SIGNER_FORWARDED | 署名者による署名用ドキュメントの転送 | | STORAGE_EXPIRATION | ファイルの自動削除の設定 | | TASK_ASSIGNMENT_UPDATE | タスク割り当ての更新 | | TASK_ASSIGNMENT_CREATE | タスク割り当ての作成 | | TASK_ASSIGNMENT_DELETE | タスク割り当ての削除 | | TASK_CREATE | タスクの作成 | | TASK_UPDATE | タスクのコメントの編集 | | TERMS_OF_SERVICE_ACCEPT | 利用規約の承諾 | | TERMS_OF_SERVICE_REJECT | 利用規約の拒否 | | UNDELETE | 削除の取り消し | | UNLOCK | ロックの解除 | | UNSHARE | 共有リンクの削除 | | UPDATE_COLLABORATION_EXPIRATION | コラボレータの有効期限の延長 | | UPDATE_SHARE_EXPIRATION | 共有リンクの有効期限の延長 | | UPLOAD | アップロード | | USER_AUTHENTICATE_OAUTH2_ACCESS_TOKEN_CREATE | OAuth 2.0アクセストークンの作成 | | WATERMARK_LABEL_CREATE | ファイルへの電子すかしの追加 | | WATERMARK_LABEL_DELETE | ファイルからの電子すかしの削除 | **Source:** [https://ja.developer.box.com/guides/events/enterprise-events/for-enterprise/](https://ja.developer.box.com/guides/events/enterprise-events/for-enterprise/) --- ### FedRAMP **Type:** guide | **Category:** セキュリティ | **Section:** Developer Guides FedRAMP 概要 FedRAMPとは、連邦政府機関が政府または行政機関の安全性/機密性が高まりつつあるデータにクラウドプロバイダを使用できるようにする認証プログラムです。 FedRAMPでは、セキュリティのレベルについて、Low (低)、Moderate (中)、High… # FedRAMP ## 概要 FedRAMPとは、連邦政府機関が政府または行政機関の安全性/機密性が高まりつつあるデータにクラウドプロバイダを使用できるようにする認証プログラムです。 FedRAMPでは、セキュリティのレベルについて、Low (低)、Moderate (中)、High (高) という3つのカテゴリを定義しています。 セキュリティレベルが高いほど、適用される制限が多くなります。 現在、Boxは[FedRAMP High](https://marketplace.fedramp.gov/products/F1212191840A)として認定されています。 ## 留意事項 FedRAMPに準拠するため、管理者は非常に特殊な方法でBoxを設定する必要があり、Boxの機能へのアクセスをさらに制限している可能性があります。 APIの使用に影響する可能性があるセキュリティの制限を特定するには、管理者に相談してください。 ## FedRAMPでのAPIの使用 FedRAMPに準拠するには、APIエントリポイントに以下のURLを使用できます。 | FedRAMP | | --- | | account.box.com | | api.box.com | | upload.box.com | | dl.boxcloud.com | | realtime.services.box.net | **Source:** [https://ja.developer.box.com/guides/security/fedramp/](https://ja.developer.box.com/guides/security/fedramp/) --- ### Google Gemini 2.0 Flash **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Google Gemini 2.0 Flash Google Gemini 2.0 Flashは、大規模で大量かつ高頻度のタスクに最適になるよう設計されたマルチモーダルモデルです。マルチモーダルの推論が可能であり、10… # Google Gemini 2.0 Flash **Google Gemini 2.0 Flash**は、大規模で大量かつ高頻度のタスクに最適になるよう設計されたマルチモーダルモデルです。マルチモーダルの推論が可能であり、100万トークンのコンテキストウィンドウが備わっています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | Google Gemini 2.0 Flash | モデルの名前。 | | モデル名 | Google Gemini 2.0 Flash | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | google__gemini_2_0_flash_001 | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Google | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Google | このモデルを提供する組織。 | | リリース日 | 2025年2月5日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年6月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 100万トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 8,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 168 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[Google Gemini 2.0 Flashの公式ドキュメント](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-models)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/google-gemini-2-0-flash-001-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/google-gemini-2-0-flash-001-model-card/) --- ### Google Gemini 2.0 Flash Lite **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Google Gemini 2.0 Flash Lite Google Gemini 2.0 Flash Lite… # Google Gemini 2.0 Flash Lite **Google Gemini 2.0 Flash Lite**は、軽量のタスクを処理するように設計されたマルチモーダルモデルです。大量の低レイテンシタスク向けに設計されており、要約、マルチモーダル処理、分類のような大規模なユースケースに非常に効果的で、品質はGemini 1.5 Flashよりも高くなります。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | Google Gemini 2.0 Flash Lite | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | google__gemini_2_0_flash_lite_preview | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Google | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Google | このモデルを提供する組織。 | | リリース日 | 2025年2月5日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年6月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 100万トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 8,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 168 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[Gemini 2.0 Flash Liteの公式ドキュメント](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-models)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/google-gemini-2-0-flash-lite-preview-02-05/](https://ja.developer.box.com/guides/box-ai/ai-models/google-gemini-2-0-flash-lite-preview-02-05/) --- ### Google Gemini 2.5 Flash **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Google Gemini 2.5 Flash Google Gemini 2.5 Flash… # Google Gemini 2.5 Flash **Google Gemini 2.5 Flash**は、豊富な機能が備わっているマルチモーダルモデルです。思考機能を備えており、モデルがレスポンスを生成する際にたどる思考プロセスを確認できます。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | Google Gemini 2.5 Flash | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | google__gemini_2_5_flash | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Google | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Google | このモデルを提供する組織。 | | リリース日 | 2025年6月17日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2025年1月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 100万トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 64,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | およそ163~300 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[Google Gemini 2.5 Flashの公式ドキュメント](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/models#gemini-models)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/google-gemini-2-5-flash-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/google-gemini-2-5-flash-model-card/) --- ### Google Gemini 2.5 Pro **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Google Gemini 2.5 Pro Google Gemini 2.5 Pro… # Google Gemini 2.5 Pro **Google Gemini 2.5 Pro**は、複雑な問題を解決できるマルチモーダルモデルです。このモデルは、テキスト、音声、画像、動画、さらにはコードリポジトリ全体を含むさまざまな情報源から、膨大なデータセットや困難な問題を理解できます。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | Google Gemini 2.5 Pro | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | google__gemini_2_5_pro | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Google | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Google | このモデルを提供する組織。 | | リリース日 | 2025年6月17日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2025年1月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 100万トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 65,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[Google Gemini 2.5 Proの公式ドキュメント](https://cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-pro)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/google-gemini-2-5-pro-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/google-gemini-2-5-pro-model-card/) --- ### Google Gemini 3 Pro **Type:** guide | **Category:** Box AI | **Section:** Developer Guides Google Gemini 3 Pro Google Gemini 3 Pro… # Google Gemini 3 Pro **Google Gemini 3 Pro**は、複雑なタスク向けのネイティブのマルチモーダルモデルです。このモデルは、テキスト、音声、画像、動画、コードリポジトリ全体を含むさまざまな情報源を処理することにより、膨大なデータセットを理解して困難な問題を解決できます。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | Google Gemini 3 Pro | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | google__gemini_3_pro | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | Google | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Google | このモデルを提供する組織。 | | リリース日 | 2025年11月18日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2025年1月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 100万トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 65,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[Google Gemini 3 Proの公式ドキュメント](https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/3-pro)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/google-gemini-3-pro-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/google-gemini-3-pro-model-card/) --- ### IBM Llama 3.2 Vision Instruct **Type:** guide | **Category:** Box AI | **Section:** Developer Guides IBM Llama 3.2 Vision Instruct IBM Llama 3.2 Vision Instruct… # IBM Llama 3.2 Vision Instruct **IBM Llama 3.2 Vision Instruct**は、ドキュメントレベルの理解、図表やグラフの解釈、画像の見出し作成など、画像入力とテキスト出力のユースケース向けに構築されたモデルです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | IBM Llama 3.2 Vision Instruct | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | ibm__llama__3_2_90b_vision_instruct | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | IBM | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Meta | このモデルを提供する組織。 | | リリース日 | 2024年9月25日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2023年12月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 128,000 | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 指定なし | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | はい | モデルのコードを一般公開するかどうかを指定します。 | | 知的財産侵害からの保護 | いいえ | このモデルの使用には、Boxによる知的財産権の保証または保護は伴いません。このモデルの出力を使用することで発生する可能性もある知的財産の問題を考慮してください。 | ## その他のドキュメント 詳細については、[IBM Llama 3.2 Vision Instructの公式ドキュメント](https://www.ibm.com/docs/en/watsonx/w-and-w/2.1.0?topic=models-third-party-foundation#llama-3-2-vision)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/ibm-llama-3-2-90b-vision-instruct-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/ibm-llama-3-2-90b-vision-instruct-model-card/) --- ### IBM Llama 4 Maverick **Type:** guide | **Category:** Box AI | **Section:** Developer Guides IBM Llama 4 Maverick IBM Llama 4 Maverickは、混合専門家アーキテクチャを使用したネイティブのマルチモーダルAIモデルで、1… # IBM Llama 4 Maverick **IBM Llama 4 Maverick**は、混合専門家アーキテクチャを使用したネイティブのマルチモーダルAIモデルで、12の言語に対応した、テキストと画像の高性能な理解のために設計されています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | IBM Llama 4 Maverick | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | ibm__llama_4_maverick | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | IBM | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Meta | このモデルを提供する組織。 | | リリース日 | 2025年4月5日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年8月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 100万 | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 指定なし | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | はい | モデルのコードを一般公開するかどうかを指定します。 | | 知的財産侵害からの保護 | いいえ | このモデルの使用には、Boxによる知的財産権の保証または保護は伴いません。このモデルの出力を使用することで発生する可能性もある知的財産の問題を考慮してください。 | ## その他のドキュメント 詳細については、[IBM Llama 4 Maverickの公式ドキュメント](https://www.ibm.com/docs/en/watsonx/w-and-w/2.2.0?topic=models-third-party-foundation#llama-4)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/ibm-llama-4-maverick-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/ibm-llama-4-maverick-model-card/) --- ### IBM Llama 4 Scout **Type:** guide | **Category:** Box AI | **Section:** Developer Guides IBM Llama 4 Scout IBM Llama 4 Scoutは、混合専門家 (MoE) アーキテクチャを使用し、ネイティブのマルチモダリティのために早期融合を組み込んだ、自己回帰型言語モデルです。 モデルの詳細 項目 値 説明 モデル名 IBM Llama… # IBM Llama 4 Scout **IBM Llama 4 Scout**は、混合専門家 (MoE) アーキテクチャを使用し、ネイティブのマルチモダリティのために早期融合を組み込んだ、自己回帰型言語モデルです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | IBM Llama 4 Scout | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | ibm__llama_4_scout | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | IBM | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Meta | このモデルを提供する組織。 | | リリース日 | 2025年4月5日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年8月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 1,000万 | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 指定なし | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | はい | モデルのコードを一般公開するかどうかを指定します。 | | 知的財産侵害からの保護 | いいえ | このモデルの使用には、Boxによる知的財産権の保証または保護は伴いません。このモデルの出力を使用することで発生する可能性もある知的財産の問題を考慮してください。 | ## その他のドキュメント 詳細については、[IBM Llama 4 Scoutの公式ドキュメント](https://www.ibm.com/docs/en/watsonx/w-and-w/2.1.0?topic=models-third-party-foundation)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/ibm-llama-4-scout-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/ibm-llama-4-scout-model-card/) --- ### IBM Mistral Medium 3 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides IBM Mistral Medium 3 IBM Mistral Medium 3モデルは、最先端の機能を提供する高性能のエンタープライズグレードモデルで、コーディング、STEM推論、マルチモーダルの理解に優れています。 モデルの詳細 項目 値 説明 モデル名 IBM… # IBM Mistral Medium 3 **IBM Mistral Medium 3**モデルは、最先端の機能を提供する高性能のエンタープライズグレードモデルで、コーディング、STEM推論、マルチモーダルの理解に優れています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | IBM Mistral Medium 3 | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | ibm__mistral_medium_2505 | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | IBM | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Mistral AI | このモデルを提供する組織。 | | リリース日 | 2025年5月 | モデルのリリース日。 | | ナレッジカットオフ日 | 指定なし | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 128,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 指定なし | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | | 知的財産侵害からの保護 | いいえ | このモデルの使用には、Boxによる知的財産権の保証または保護は伴いません。このモデルの出力を使用することで発生する可能性もある知的財産の問題を考慮してください。 | ## その他のドキュメント 詳細については、[Mistral AIの公式ドキュメント](https://docs.mistral.ai/getting-started/models/models_overview/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/ibm-mistral-medium-3-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/ibm-mistral-medium-3-model-card/) --- ### IBM Mistral Small 3.1 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides IBM Mistral Small 3.1 IBM Mistral Small 3.… # IBM Mistral Small 3.1 **IBM Mistral Small 3.1**モデルは、マルチモーダル機能と拡張されたコンテキストウィンドウを備えた、処理の速い効率的なオープンソースモデルです。これは、低レイテンシを維持しながら、テキストタスクとビジョンタスクの両方で強力なパフォーマンスを発揮するため、対話型AIからドキュメント処理まで幅広い用途に適しています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | IBM Mistral Small 3.1 | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | ibm__mistral_small_3_1_24b_instruct_2503 | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | IBM | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | Mistral AI | このモデルを提供する組織。 | | リリース日 | 2025年3月 | モデルのリリース日。 | | ナレッジカットオフ日 | 指定なし | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 128,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 指定なし | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 150 | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | はい | モデルのコードを一般公開するかどうかを指定します。 | | 知的財産侵害からの保護 | いいえ | このモデルの使用には、Boxによる知的財産権の保証または保護は伴いません。このモデルの出力を使用することで発生する可能性もある知的財産の問題を考慮してください。 | ## その他のドキュメント 詳細については、[Mistral AIの公式ドキュメント](https://docs.mistral.ai/getting-started/models/models_overview/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/ibm-mistral-small-3-1-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/ibm-mistral-small-3-1-model-card/) --- ### IDを指定してAIエージェントを取得 **Type:** guide | **Category:** Box AI Studio | **Section:** Developer Guides IDを指定してAIエージェントを取得 GET /2.0/ai_agents/{id}エンドポイントを使用すると、agent_idパラメータを使用して特定のAIエージェントのリストを取得できます。 リクエストの送信 リクエストを送信するには、GET /2.0/ai_agents… # IDを指定してAIエージェントを取得 `GET /2.0/ai_agents/{id}`エンドポイントを使用すると、`agent_id`パラメータを使用して特定のAIエージェントのリストを取得できます。 ## リクエストの送信 リクエストを送信するには、`GET /2.0/ai_agents/{id}`エンドポイントを使用します。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 | パラメータ | 説明 | 例 | | --- | --- | --- | | agent_id | 取得するエージェントID。 | 1234 | | fields | レスポンスで返されるフィールド。 | ask | **Source:** [https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/get-agent-id/](https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/get-agent-id/) --- ### iOS **Type:** guide | **Category:** モバイル | **Section:** Developer Guides iOS Box iOS SDKは、iOSプロジェクト内からBox APIへのネイティブアクセスを提供します。 # iOS [Box iOS SDK](https://github.com/box/box-ios-sdk)は、iOSプロジェクト内からBox APIへのネイティブアクセスを提供します。 **Source:** [https://ja.developer.box.com/guides/mobile/ios/](https://ja.developer.box.com/guides/mobile/ios/) --- ### iOS SDKのインストール **Type:** quick-start | **Category:** モバイル | **Section:** Developer Guides iOS SDKのインストール iOSアプリケーションを設定したら、使用可能なパッケージマネージャオプションのいずれかを使用して、必要なBox iOS SDK依存関係をプロジェクトにインポートする必要があります。 使用するパッケージマネージャの選択 Carthage… # iOS SDKのインストール iOSアプリケーションを設定したら、使用可能なパッケージマネージャオプションのいずれかを使用して、必要な**Box iOS SDK**依存関係をプロジェクトにインポートする必要があります。 ## 使用するパッケージマネージャの選択 # Carthage Carthageは、SwiftプロジェクトおよびObjective-C Cocoaプロジェクト向けの分散型の依存関係マネージャです。これは、オープンソースで、Swiftで構築されています。 # CocoaPods CocoaPodsは、SwiftプロジェクトおよびObjective-C Cocoaプロジェクト向けの集中型の依存関係マネージャです。これは、オープンソースで、Rubyで構築されています。 # Swift Package Manager Swift Package Managerは、ソースコードの配布を管理するためのツールで、自作のコードの共有や他の人のコードの再利用を容易にします。 # Carthageを使用してiOS SDKをインストールする 1. ターミナルウィンドウから`brew install carthage`を実行して、Carthageをインストールします。他のインストール方法については、[Carthageのドキュメント](https://github.com/Carthage/Carthage#installing-carthage)を参照してください。 2. `{APPNAME}.xcodeproj`がある、iOSアプリケーションフォルダのルートに、`Cartfile`という名前の新しいファイルを拡張子なしで作成します。 3. `Cartfile`を開き、`git "https://github.com/box/box-ios-sdk.git" ~> 3.0`を使用して**Box iOS SDK**の依存関係を追加した後、ファイルを保存して閉じます。 4. ターミナルから、`Cartfile`が存在するフォルダで、`carthage update --platform iOS`を実行してすべての依存関係を更新します。このディレクトリに`Cartfile.resolved`ファイルと`Carthage`ディレクトリが作成されます。 5. Finderまたはエクスプローラウィンドウで、**Carthage** -> **Build** -> **iOS**ディレクトリを読み込みます。ここには、`BoxSDK.framework`という名前のフレームワークファイルがあります。このウィンドウは、次の手順でこのフレームワークをプロジェクトに追加する際に使用するため、開いたままにしておきます。 6. Xcodeプロジェクトで、左側のプロジェクトナビゲータの上部にあるアプリケーションの名前をクリックします。表示されるコンテンツで、[**TARGETS (ターゲット)**] オプションの下にあるプロジェクトの名前をクリックします。[**Frameworks, Libraries, and Embedded Content (フレームワーク、ライブラリ、埋め込みコンテンツ)**] まで下にスクロールします。 7. Finderウィンドウから`BoxSDK.framework`をフレームワークセクション上にドラッグします。 # CocoaPodsを使用してiOS SDKをインストールする 1. ターミナルウィンドウから`sudo gem install cocoapods`を実行して、CocoaPodsをインストールします。 2. `APPNAME.xcodeproj`がある、iOSアプリケーションフォルダのルートで、`pod init`を実行して、スマートデフォルトで新しい`Podfile`を作成します。 3. `Podfile`を読み込み、`pod 'BoxSDK', '~> 3.0'`を実行して`# Pods for {APPNAME}`の下に**Box iOS SDK**の依存関係を追加した後、保存して閉じます。 4. ターミナルから、`Podfile`が存在するフォルダで、`pod install`を実行してすべての依存関係をダウンロードします。 5. `open {APPNAME}.xcworkspace`を実行して`.xcworkspace`をXcodeで開き、プロジェクトをビルドします。 # Swift Package Managerを使用してiOS SDKをインストールする 1. Xcodeプロジェクトで、左側のプロジェクトナビゲータの上部にあるアプリケーションの名前をクリックします。表示されるコンテンツで、[**PROJECT (プロジェクト)**] オプションの下にあるプロジェクトの名前をクリックします。 2. [**Swift Packages (Swiftパッケージ)**] をクリックし、`+`をクリックしてパッケージを追加します。 3. リポジトリのURL `https://github.com/box/box-ios-sdk.git`を入力し、[Next (次へ)] をクリックします。 4. デフォルト設定のままにし、[Next (次へ)] をクリックしてインポートを終了します。 ## まとめ Carthageを使用したiOS依存関係のインストールを選択しました。 - Carthageをインストールしました。 - Box iOS SDKの依存関係を持つ`Cartfile`を作成しました。 - iOS SDKの依存関係をインストールしました。 - 構築した依存関係をXcodeプロジェクトのフレームワークリストに手動でインポートしました。 **CocoaPods**の使用を選択しました。 - CocoaPodsをインストールしました。 - Box iOS SDKの依存関係を持つ新しい`Podfile`を作成しました。 - iOS SDKの依存関係をインストールしました。 - Xcodeでプロジェクトをビルドしました。 **Swift Package Manager**の使用を選択しました。 - SwiftパッケージにiOS SDKの`.git`リポジトリをインポートしました。 Box iOS SDKの依存関係をインストールしました **Source:** [https://ja.developer.box.com/guides/mobile/ios/quick-start/install-ios-sdk/](https://ja.developer.box.com/guides/mobile/ios/quick-start/install-ios-sdk/) --- ### iOS SDKの使い方 **Type:** quick-start | **Category:** モバイル | **Section:** Developer Guides iOS SDKの使い方 Box iOS SDKは、iOSプロジェクトにBox APIを追加するためのSwift言語ラッパーです。 要件 Box iOS SDKとこのクイックスタートの使用を開始するには、以下のものが必要です。 iOS 11.0以降/Mac OS X 10.1… # iOS SDKの使い方 Box iOS SDKは、iOSプロジェクトにBox APIを追加するための[Swift言語](https://developer.apple.com/swift/)ラッパーです。 ## 要件 Box iOS SDKとこのクイックスタートの使用を開始するには、以下のものが必要です。 - iOS 11.0以降/Mac OS X 10.13以降 - Xcode 10.0以降 ## 概要 このガイドでは、以下の手順を説明します。 1. Xcodeで[新しいiOSアプリを作成](g://mobile/ios/quick-start/create-ios-app)します。 2. プロジェクトに[iOS SDKをインストール](g://mobile/ios/quick-start/install-ios-sdk)します。 3. iOS SDKからBox APIにアクセスできるように[Boxアプリを設定](g://mobile/ios/quick-start/configure-box-app)します。 4. iOS SDKを使用してBox APIに対する[APIコールを実行](g://mobile/ios/quick-start/make-api-call)します。 開始する準備ができました **Source:** [https://ja.developer.box.com/guides/mobile/ios/quick-start/](https://ja.developer.box.com/guides/mobile/ios/quick-start/) --- ### iOSアプリの作成 **Type:** quick-start | **Category:** モバイル | **Section:** Developer Guides iOSアプリの作成 Box iOS SDKをインストールする前に、依存関係を追加できるiOSアプリケーションを用意しておく必要があります。ここでは、新しい空のアプリケーションを作成します。 iOSアプリのセットアップ このクイックスタートガイドでは、iOS… # iOSアプリの作成 Box iOS SDKをインストールする前に、依存関係を追加できるiOSアプリケーションを用意しておく必要があります。ここでは、新しい空のアプリケーションを作成します。 ## iOSアプリのセットアップ このクイックスタートガイドでは、iOSアプリケーションの作成と編集にXcodeというツールを使用します。Xcodeをお持ちでない場合は、[Appleの開発者向けサイト](https://developer.apple.com/xcode/)からダウンロードしてください。 今回Xcodeでのアプリケーションの作成が初めてである場合も、すでにアプリケーション開発の経験がある場合も、Box iOS SDKと新しい空のアプリケーションの統合から開始します。 1. Xcodeを起動します。 2. 上部のメニューから、[**File (ファイル)**] -> [**New (新規)**] -> [**Project... (プロジェクト...)**] を選択します。 [**Single View App (単一ビューアプリ)**] のオプションを選択します。 `Product Name`、`Organization Identifier`、`Organization Name`など、アプリケーションの設定情報を入力します。 1. アプリケーション用のローカルの保存場所を選択し、[**Create (作成)**] をクリックします。 ## まとめ - Xcodeで新しい空のiOSアプリケーションを作成しました。 空のiOSアプリケーションを作成しました **Source:** [https://ja.developer.box.com/guides/mobile/ios/quick-start/create-ios-app/](https://ja.developer.box.com/guides/mobile/ios/quick-start/create-ios-app/) --- ### Java SDKのインストール **Type:** guide | **Category:** ツール | **Section:** Developer Guides Java SDKのインストール Javaプロジェクトでは、Box Java SDKを使用してBox APIを呼び出すことができます。 Java SDKをインストールするには、Gradle依存関係またはMaven… # Java SDKのインストール Javaプロジェクトでは、Box Java SDKを使用してBox APIを呼び出すことができます。 Java SDKをインストールするには、Gradle依存関係またはMaven依存関係を追加するか、ソースをプロジェクトに複製します。また、GitHubのリリースページからプリコンパイル済みJARのいずれかをダウンロードすることもできます。 GitHubでJava SDKの詳細を確認する ## Gradle `build.gradle`ファイルに以下の依存関係を追加します。 ``` compile 'com.box:box-java-sdk:2.32.0' ``` Java SDKの最新のバージョン番号については、[Java SDKのオープンソースに関するページ](http://opensource.box.com/box-java-sdk/)を参照してください。 ## Maven 以下のMaven依存関係を追加します。 ``` <dependency> <groupId>com.box</groupId> <artifactId>box-java-sdk</artifactId> <version>2.32.0</version> </dependency> ``` Java SDKの最新のバージョン番号については、[Java SDKのオープンソースに関するページ](http://opensource.box.com/box-java-sdk/)を参照してください。 ## ソースからのインストール [Java SDK GitHubリポジトリ](https://github.com/box/box-java-sdk/tree/master/src/main/java/com/box/sdk)からSDKソースをダウンロードしてプロジェクトに追加します。 ## プリコンパイル済みJAR GitHubの[リリースに関するページ](https://github.com/box/box-java-sdk/releases)からJava SDK用のプリコンパイル済みJARをダウンロードします。 プリコンパイル済みJARを使用する際は、以下の依存関係をプロジェクトに追加することが重要です。 | 依存関係 | | --- | | minimal-json v0.9.1 | | jose4j v0.4.4 | | bouncycastle bcprov-jdk15on v1.52 | | bouncycastle bcpkix-jdk15on v1.52 | | Java Cryptography Extension (JCE) | **Source:** [https://ja.developer.box.com/guides/tooling/sdks/java/](https://ja.developer.box.com/guides/tooling/sdks/java/) --- ### JWTを使用した設定 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides JWTを使用した設定 Platformアプリは、JWTによるサーバー側認証を使用するよう設定できます。 JWT認証のしくみを確認する 前提条件 サーバー側認証を使用してPlatformアプリを設定するには、Box Enterprise… # JWTを使用した設定 Platformアプリは、[JWT](g://authentication/jwt)によるサーバー側認証を使用するよう設定できます。 JWT認証のしくみを確認する ## 前提条件 サーバー側認証を使用してPlatformアプリを設定するには、Box Enterpriseアカウントから[開発者コンソール](https://app.box.com/developers/console)にアクセスできることを確認する必要があります。または、[Developerアカウント](https://account.box.com/signup/n/developer)にサインアップすることもできます。 ## アプリの作成手順 ### 開発者コンソールへの移動 Boxにログインし、[開発者コンソール](https://app.box.com/developers/console)に移動して、[**Platformアプリの作成**] を選択します。 ### アプリケーションの種類の選択 アプリケーションの種類のリストから [**Platformアプリ**] を選択します。次の手順を促すウィンドウが表示されます。 ### アプリケーションの基本情報の指定 アプリを説明するために、アプリの名前と説明を指定します。アプリの目的を選択するには、ドロップダウンリストを使用します。選択したオプションに応じて、さらに詳細を指定することが必要になる場合があります。 | 目的 | 詳細 | | --- | --- | | [自動化]、[カスタムポータル] | アプリの作成者 (お客様またはパートナー) を指定します。 | | 統合 | 統合のカテゴリ、外部システム名のほか、アプリの作成者 (お客様またはパートナー) を指定します。 | | [その他] | アプリの目的と、アプリの作成者 (お客様またはパートナー) を指定します。 | ### アプリケーションの認証の選択 [キーペアを使用して](g://authentication/jwt/without-sdk/#public-and-private-key-pair)アプリケーションIDを確認する場合は [**サーバー認証 (JWT使用)**] を選択し、[**Platformアプリの作成**] で確定します。 選択すると、新しいアプリケーションを作成しない限り、別の認証方法に変更できません。 ## 公開キーと秘密キーのペア このセクションは、認証方法として [サーバー認証 (クライアント資格情報許可)] を選択した場合はスキップできます。 [サーバー認証 (JWT使用)] を利用してPlatformアプリを作成すると、[開発者コンソール](https://app.box.com/developers/console)の [構成] タブでキーペアを生成できます。また、独自のキーペアを生成して、その公開キーをBoxに提供することもできます。選択する方法に関係なく、セキュリティの目的で、Boxアカウントでは[2要素認証](https://support.box.com/hc/ja/articles/360043697154-%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E5%A4%9A%E8%A6%81%E7%B4%A0%E8%AA%8D%E8%A8%BC%E3%81%AE%E8%A8%AD%E5%AE%9A)を有効にしておく必要があります。 ### キーペアの生成 (推奨) Boxで生成されたキーペアを使用する場合は、[開発者コンソール](https://app.box.com/developers/console)に移動し、そこで構成ファイルを生成できます。このファイルには、公開/秘密キーペアのほか、認証に必要なその他さまざまなアプリケーションの詳細が含まれています。 このファイルを生成するには、[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブに移動し、[**公開キーの追加と管理**] セクションまで下にスクロールします。 [ **公開/秘密キーペアを生成**] ボタンをクリックすると、Boxによってキーペアが生成されます。これにより、アプリケーションコードに移すことができるJSON構成ファイルのダウンロードが開始されます。 セキュリティ上の理由により、Boxには秘密キーが保存されません。秘密キーを紛失した場合は、キーペア全体のリセットが必要になります。 ### 手動によるキーペアの追加 代わりに、独自のキーペアを生成し、その公開キーを[開発者コンソール](https://app.box.com/developers/console)にアップロードすることもできます。 OpenSSLを使用してキーペアを作成するには、ターミナルウィンドウを開き、以下のコマンドを実行します。 ``` openssl genrsa -des3 -out private.pem 2048 openssl rsa -in private.pem -outform PEM -pubout -out public.pem ``` # Windowsシステムの場合 Windowsユーザーは、[Cygwin](http://www.cygwin.com/)パッケージをインストールして使用することで、OpenSSLを実行できます。 その後、[開発者コンソール](https://app.box.com/developers/console)でアプリケーションの [構成] タブに移動し、[**公開キーの追加と管理**] セクションまで下にスクロールします。 [**公開キーを追加**] ボタンをクリックし、上記の手順で生成された公開キーを入力して、[**確認して保存**] をクリックします。 ## アプリ承認 アプリケーションを使用するには、Box管理者がBox管理コンソールでそのアプリケーションを承認しておく必要があります。 [開発者コンソール](https://app.box.com/developers/console)で、目的のアプリケーションの [**承認**] タブに移動します。 [**確認して送信**] をクリックして、承認を得るためにBox Enterprise管理者にメールを送信します。このプロセスの詳細については、[アプリの承認に関するサポート記事](https://support.box.com/hc/ja/articles/360043697014-Box%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E6%89%BF%E8%AA%8D%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E6%89%BF%E8%AA%8D)を参照してください。 Platformアプリケーションの承認方法を確認する ## 基本的な構成 ### アプリケーションアクセス アプリケーションのアクセスレベルにより、アプリからアクセスできるユーザーおよびコンテンツが決まります。デフォルトでは、アプリケーションで問題なく操作できるのは、その[サービスアカウント](page://platform/user-types/#service-account)とすべての[App User](page://platform/user-types)のコンテンツのみです。企業の既存の管理対象ユーザーや、アプリ自体が作成していないグループにアクセスするには、[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブにある [**アプリアクセスレベル**] に移動し、[**アプリ + Enterpriseアクセス**] に設定します。そうしないと、このような管理対象ユーザーとグループへのアクセスはブロックされます。 ### アプリケーションスコープ アプリケーションのスコープにより、アプリケーションが呼び出すことができるエンドポイントとリソースが決まります。各オプションの詳細については、[スコープのガイド](g://api-calls/permissions-and-errors/scopes)を参照してください。 ### CORSドメイン アプリケーションがJavaScriptでフロントエンドのブラウザコードからAPIコールを実行する場合は、[クロスオリジンリソース共有](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) (CORS) のために、これらの呼び出しの実行元となるドメインを許可リストに追加する必要があります。すべてのリクエストがサーバー側のコードから発行される場合は、このセクションをスキップできます。 許可リストに完全なURIを追加するには、[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブの下部にある [**CORSドメイン**] セクションに移動します。 **Source:** [https://ja.developer.box.com/guides/authentication/jwt/jwt-setup/](https://ja.developer.box.com/guides/authentication/jwt/jwt-setup/) --- ### JWT認証 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides JWT認証 JSONウェブトークン (JWT) を使用するサーバー側の認証は、Box APIで認証するための最も一般的な方法です。JWTは、効果的にサーバー間認証を実現するよう設計されたオープンスタンダードです。 JWTを使用するサーバー側認証は、アプリの種類がPlatform… # JWT認証 JSONウェブトークン (JWT) を使用するサーバー側の認証は、Box APIで認証するための最も一般的な方法です。JWTは、効果的にサーバー間認証を実現するよう設計された[オープンスタンダード](https://jwt.io/)です。 JWTを使用するサーバー側認証は、[アプリの種類](g://applications/app-types/select)がPlatformアプリケーションの場合のみ使用できます。この認証方法ではエンドユーザーによる操作が必要ありません。また、適切な権限が付与されていれば、この認証方法を使用して、社内の任意のユーザーの代理で操作することができます。 アプリケーションの権限を確認する方法は2つあります。 - 公開キーと秘密キーのペアを使用する - クライアントIDとクライアントシークレット ([クライアント資格情報許可](g://authentication/client-credentials)) を使用する これらのオプションの詳細については、[SDKを使用しないJWT](g://authentication/jwt/without-sdk)の使用に関するガイドを参照してください。 Box管理コンソールでJWTアプリケーションを承認すると、[サービスアカウント](page://platform/user-types/#service-account)が自動的に生成され、認証時に使用されるデフォルトのアクセストークンになります。これは、管理者に似たユーザーであり、JWTを利用するアプリケーションを使用する前にBox管理者による明示的な承認が必要となる理由です。 ## JWTを使用する場合 JWTを使用するサーバー側認証は、以下に当てはまるアプリに最適な認証方法です。 - Boxアカウントを持たないユーザーを使用する - 独自のIDシステムを使用する - ユーザーにBoxを使用していることを認識させたくない - アプリケーションのBoxアカウントにデータを保存し、ユーザーのBoxアカウントには保存しない **Source:** [https://ja.developer.box.com/guides/authentication/jwt/](https://ja.developer.box.com/guides/authentication/jwt/) --- ### JWT認証を使用したBox CLI **Type:** guide | **Category:** CLI | **Section:** Developer Guides JWT認証を使用したBox CLI これまで、Box CLIのクイックスタートガイドでは、JWTアプリケーションまたはサーバー認証アプリケーションの設定フローについて説明してきましたが、新しくOAuth 2.0バージョンのBox CLI… # JWT認証を使用したBox CLI これまで、[Box CLIのクイックスタートガイド](g://cli/quick-start)では、JWTアプリケーションまたはサーバー認証アプリケーションの設定フローについて説明してきましたが、新しくOAuth 2.0バージョンのBox CLIをリリースしたため、新機能の使用についてガイドを更新しました。当初のJWTの設定手順については、引き続きサーバー認証アプリケーションを使用したい方のために、こちらに移動しました。 ## JWTアプリケーションの設定 サーバー認証を使用したCLIを使用するには、まず、[開発者コンソール](https://account.box.com/developers/console)でBoxアプリケーションを作成します。CLIはAPIコールを実行する際にバックグラウンドでこのアプリケーションを使用できます。CLIを既存のJWTアプリケーションに関連付ける場合は、この手順を省略できます。ただし、少なくとも、以下のスコープがアプリケーションの [**構成**] タブで設定されていることを確認してください。 - Boxに格納されているすべてのファイルとフォルダの読み取り - Boxに格納されているすべてのファイルとフォルダへの書き込み [すべてのファイル] ページの左側にあるナビゲーションパネルから、[開発者コンソール](https://account.box.com/developers/console)を開きます。今回Box APIを使用するのが初めてで、このオプションがまだ使用できない場合は、[こちら](https://account.box.com/developers/console)をクリックするとこのオプションをアカウントに追加できます。 [**Platformアプリの作成**] > [**Platformアプリ**] > [**サーバー認証 (JWT使用)**] の順にクリックし、アプリケーションに名前を付けて、[**アプリの作成**] をクリックします。 サーバー認証 (JWT使用) は、使用する前に必ず管理者の承認が必要になります。 ## アプリケーションの構成 これにより、アプリケーションの設定ページが表示され、そこで、そのアクセスや権限を選択する必要があります。アプリケーションの認証タイプが原因で、管理者の承認が必要になることにもう一度注意してください。 少なくとも、以下の[スコープ](g://api-calls/permissions-and-errors/scopes)が必要です。 - Boxに格納されているすべてのファイルとフォルダの読み取り - Boxに格納されているすべてのファイルとフォルダへの書き込み [アプリケーションアクセス](g://authentication/jwt/jwt-setup/#application-access)として、[アプリアクセスのみ] または [アプリ + Enterpriseアクセス] のいずれかを選択できます。 ## アプリケーションの承認 APIコールを正常に実行する前に、サーバー認証を利用するすべてのアプリケーションを管理コンソールで承認する必要があります。これは、すべてのJWTアプリケーションには[サービスアカウント](page://platform/user-types/#service-account)があるためです。サービスアカウントは、アプリケーションの[スコープ](g://api-calls/permissions-and-errors/scopes)に基づいて管理者アクションを実行できます。 開発者と管理者向けの手順については、Boxの[承認ガイド](g://authorization/platform-app-approval)を参照してください。 スコープ、アプリケーションアクセス、トークン、権限がどのように連携しているかの詳細については、[Boxのセキュリティメカニズム](https://medium.com/box-developer-japan-blog/box-api-understanding-security-ja-b95725d8aaf0)に関する記事を参照してください。 設定の変更がこのアプリケーションに対して行われた場合は、その変更を有効にするためにこのアプリケーションを再承認する必要があります。 アプリケーションが使用できる状態になっているかどうかを確認するには、[開発者コンソール](https://account.box.com/developers/console)の [承認] タブを表示します。状態とステータスはそれぞれ、[有効] と [承認済み] になっているはずです。 ## 必要なデータのダウンロード CLIでは、APIコールを実行するために、ローカルに保存されている構成ファイルが必要です。 構成ファイルをダウンロードするには、[開発者コンソール](https://account.box.com/developers/console)の [**構成**] タブにアクセスし、[**公開/秘密キーペアを生成**] をクリックします。これにより、アプリケーションの構成ファイルを自動的にダウンロードする前に2要素認証が行われます。詳細については、Boxの[ガイド](g://authentication/jwt/jwt-setup/#public-and-private-key-pair)を参照してください。 セキュリティ上の理由により、公開/秘密キーペアを生成するには、Boxアカウントで2要素認証を有効にする必要があります。 `EnterpriseID_publicKeyID_config.json`という形式のデフォルトの名前が付いているダウンロード済みファイルをコンピュータ上で探します。この名前をそのまま使用しても、変更してもかまいません。このガイドでは、ファイルの名前を`config.json`に変更することを想定しています。 誤って削除または移動されることがない場所にファイルを配置することが重要です。ファイルが削除または移動された場合は、手順2を繰り返してCLIを再構成する必要があります。 ## CLIのインストールと構成 Windows用およびmacOS用のインストーラが提供されていますが、その他の環境でCLIを構築する場合はRawソースコードを利用できます。 ## Windows用およびmacOS用インストーラ お使いのマシンに最新のCLIをインストールするには、最新リリースに対応する最新の`.exe` (Windowsの場合) または`.pkg` (macOSの場合) をダウンロードします。 最新のCLIインストーラをダウンロード ## LinuxとNodeのインストール さらに、CLIは、任意のプラットフォーム (Linuxなど) にNodeパッケージとしてインストールすることができます。このためには、[Node JS](https://nodejs.org/)をマシンにインストールしておく必要があります。 ``` npm install --global @box/cli ``` ## ソースコード CLIのソースコードは、[GitHub](https://github.com/box/boxcli)で提供されています。 ## 構成コマンドの実行 ここで、手順1でダウンロードした構成ファイルを指すよう、CLIを構成する必要があります。 ターミナルまたはコマンドラインを開き、`box configure:environments:add PathToConfigFileHere`コマンドを実行します。ここでは、`PathToConfigHere`を`config.json`ファイルのパスに置き換えます。 例: `box configure:environments:add /Users/ExampleUser/Documents/CLI/config.json` Finder/エクスプローラからターミナル/コマンドラインウィンドウにcsvファイルをドラッグすると、パスを自動で入力できます。 ## 構成の確認 うまく構成されているか確認するには、コマンド`box users:get`を使用します。 次のように、成功を示すレスポンスには、[アクセストークン](g://authentication/tokens)に関連付けられた[サービスアカウント](page://platform/user-types/#service-account)ユーザーの詳細が示されます。 ``` Type: user ID: ''0123456789'' Name: Box CLI - Quickstart Example Login: AutomationUser_123456_8jSo6Lqvko@boxdevedition.com Created At: '2020-01-01T09:45:01-07:00' Modified At: '2021-03-01T09:30:05-07:00' Language: en Timezone: America/Los_Angeles Space Amount: 999999999999999 Space Used: 6291500 Max Upload Size: 16106127360 Status: active Job Title: '' Phone: '' Address: example+user@box.com Avatar URL: '' Notification Email: [] ``` デフォルトでは、JWTアプリケーションはサービスアカウントのアクセストークンを自動的に取得します。デフォルトユーザーの変更は可能ですが、このガイドでは変更しないことを想定しています。 ## 次の手順 - コード例をGitHubの[コマンド](https://github.com/box/boxcli#command-topics)ページで確認できます。 - [OAuth 2.0のクイックスタート](g://cli/quick-start/build-commands-help)の2番目の手順に進み、コマンドの使用方法のチュートリアルを確認することもできます。 **Source:** [https://ja.developer.box.com/guides/cli/cli-docs/jwt-cli/](https://ja.developer.box.com/guides/cli/cli-docs/jwt-cli/) --- ### Long pollingイベント **Type:** guide | **Category:** イベント | **Section:** Developer Guides Long pollingイベント Boxアカウントでアクティビティのリアルタイム通知を取得するために、OPTIONS /events APIのLong polling機能を使用できます。 Long pollingはUser Eventにのみ使用できます。Enterprise… # Long pollingイベント Boxアカウントでアクティビティのリアルタイム通知を取得するために、[`OPTIONS /events`](e://options_events) APIのLong polling機能を使用できます。 Long pollingはUser Eventにのみ使用できます。Enterprise EventではLong pollingがサポートされません。 ## Long polling Long pollingでは、HTTPリクエストを開き、サーバーがレスポンスを送信するまでそのリクエストを開いたままにして、そのプロセスを何度も繰り返して更新されたレスポンスを受信します。 SDKには、新しいイベントに対するLong pollingにより、イベントフィードをイベントストリームに変換するためのサポートが組み込まれています。 ### Long polling URL Long pollingを使用するには、まず、リクエストを[`OPTIONS /events`](e://options_events) APIに送信し、Long polling URLを取得します。 ``` curl -X OPTIONS https://api.box.com/2.0/events \ -H "authorization: Bearer ACCESS_TOKEN" ``` ``` { "chunk_size": 1, "entries": [ { "type": "realtime_server", "url": "http://2.realtime.services.box.net/subscribe?channel=cc807c9c4869ffb1c81a&stream_type=all", "ttl": 10, "max_retries": 10, "retry_timeout": 610 } ] } ``` ### リアルタイムサーバー 次に、指定されたURLに`GET`リクエストを実行してイベントのリッスンを開始します。監視対象のアカウントでイベントが発生すると、`new_change`という値を持つレスポンスが送信されます。レスポンスにはその他の詳細は含まれていません。 この単一のレスポンスは、最新の既知の`stream_position`を使用して`GET /events`エンドポイントにリクエストを送信するなど、後続の処理を促すことを目的としています。 ### 切断と再接続 サーバーは、このレスポンスを送信した後に接続を閉じます。この時点でアプリケーションがイベントのリッスンを再開するには、Long pollingのプロセスを繰り返す必要があります。 アプリケーションがリアルタイムサーバーに接続してもその後しばらくイベントが発生しないと、接続が閉じられ、`reconnect`という値が返されます。この状況になると、アプリケーションはプロセスを再開するために`OPTIONS /events`に対する新しい呼び出しを実行する必要があります。 ### タイムアウトと再試行 `retry_timeout`で指定した秒数以内にアプリケーションがイベントを受け取らなければ、アプリケーションはリアルタイムサーバーに再接続できます。これは、ネットワークエラーが発生すると必要になる場合があります。 アプリケーションがリアルタイムサーバーに対して`GET`リクエストを送信したときに`max_retries`エラーが返された場合は、`/events` APIに対して`OPTIONS`呼び出しを実行してプロセスを再開する必要があります。 **Source:** [https://ja.developer.box.com/guides/events/user-events/polling/](https://ja.developer.box.com/guides/events/user-events/polling/) --- ### Node SDKのインストール **Type:** guide | **Category:** ツール | **Section:** Developer Guides Node SDKのインストール Nodeプロジェクトでは、Box Node SDKを使用してBox APIを呼び出すことができます。 GitHubでNode SDKの詳細を確認する NPMのインストール Node SDKをインストールするには、Node… # Node SDKのインストール Nodeプロジェクトでは、Box Node SDKを使用してBox APIを呼び出すことができます。 GitHubでNode SDKの詳細を確認する ## NPMのインストール Node SDKをインストールするには、[Nodeパッケージマネージャ](https://www.npmjs.com/)を使用してターミナルウィンドウまたはコマンドプロンプトから以下のコマンドを実行します。 ``` npm install box-node-sdk --save ``` ## Yarnインストール 同様に、[Yarnパッケージ](https://yarnpkg.com/)マネージャを使用してSDKをインストールすることもできます。 ``` yarn add box-node-sdk ``` **Source:** [https://ja.developer.box.com/guides/tooling/sdks/node/](https://ja.developer.box.com/guides/tooling/sdks/node/) --- ### OAuth 2.0を使用したBox CLIの使用 **Type:** quick-start | **Category:** CLI | **Section:** Developer Guides OAuth 2.0を使用したBox CLIの使用 Box CLIは、使い勝手の良いコマンドラインツールです。これにより、開発者でも開発者以外のユーザーでもBox API… # OAuth 2.0を使用したBox CLIの使用 Box CLIは、使い勝手の良いコマンドラインツールです。これにより、開発者でも開発者以外のユーザーでもBox APIを利用してルーチンや一括操作を実行できるようになります。コードを書く必要はありません。これらの操作は、一連の[コマンド](https://github.com/box/boxcli#command-topics)によって実行されます。 ## 概要 このガイドでは、以下の手順を説明します。 1. Boxアプリケーションを[作成して設定する](g://cli/quick-start/create-oauth-app) 2. CLIを[インストールして構成する](g://cli/quick-start/install-and-configure) 3. CLIを使用して[コマンドを実行する](g://cli/quick-start/build-commands-help) 4. [オプションや一括コマンド](g://cli/quick-start/options-and-bulk-commands)を使用する 5. [CLIでのPowerShellスクリプト](g://cli/quick-start/powershell-script-templates)の使用方法を確認する 6. [次の手順](g://cli/quick-start/next-steps) 開始する準備ができました **Source:** [https://ja.developer.box.com/guides/cli/quick-start/](https://ja.developer.box.com/guides/cli/quick-start/) --- ### OAuth 2.0を使用した設定 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides OAuth 2.0を使用した設定 Platformアプリは、クライアント側のOAuth 2.0認証を使用するよう設定できます。 OAuth 2.0認証のしくみを確認する 前提条件 OAuth 2.0認証を使用してPlatformアプリを設定するには、Box Enterprise… # OAuth 2.0を使用した設定 Platformアプリは、クライアント側の[OAuth 2.0](g://authentication/oauth2)認証を使用するよう設定できます。 OAuth 2.0認証のしくみを確認する ## 前提条件 OAuth 2.0認証を使用してPlatformアプリを設定するには、Box Enterpriseアカウントから[開発者コンソール](https://app.box.com/developers/console)にアクセスできることを確認する必要があります。または、[Developerアカウント](https://account.box.com/signup/n/developer)にサインアップすることもできます。 ## アプリの作成手順 ### 開発者コンソールへの移動 Boxにログインし、[開発者コンソール](https://app.box.com/developers/console)に移動して、[**Platformアプリの作成**] を選択します。 ### アプリケーションの種類の選択 アプリケーションの種類のリストから [**Platformアプリ**] を選択します。次の手順を促すウィンドウが表示されます。 ### アプリケーションの基本情報の指定 アプリを説明するために、アプリの名前と説明を指定します。アプリの目的を選択するには、ドロップダウンリストを使用します。選択したオプションに応じて、さらに詳細を指定することが必要になる場合があります。 | 目的 | 詳細 | | --- | --- | | [自動化]、[カスタムポータル] | アプリの作成者 (お客様またはパートナー) を指定します。 | | 統合 | 統合のカテゴリ、外部システム名のほか、アプリの作成者 (お客様またはパートナー) を指定します。 | | [その他] | アプリの目的と、アプリの作成者 (お客様またはパートナー) を指定します。 | ### アプリケーションの認証の選択 [**ユーザー認証 (OAuth 2.0)**] を選択し、[**アプリの作成**] で確定します。 選択すると、新しいアプリケーションを作成しない限り、別の認証方法に変更できません。 ## 基本的な構成 アプリケーションを使用するには、事前にいくつかの追加構成が必要になります。 ### リダイレクトURI OAuth 2.0フローの間、ユーザーは、認証のためにブラウザにリダイレクトされた後、アプリケーションが自分の代わりにアクションを実行することを承認します。 Boxでは、ユーザーをリダイレクトする前に、[承認URL](e://get-authorize/#param-redirect_uri)に渡された`redirect_uri`パラメータが、アプリケーションに構成されたリダイレクトURIのいずれかと一致することを確認します。完全に一致しているかどうかがチェックされるため、URIはまったく同じである必要があります。localhostおよびループバックアドレスのリダイレクトURIは、どのポートへのリダイレクトも許可されますが、スキーム、ドメイン、パス、およびクエリパラメータは、構成されているURIのいずれかと一致する必要があります。 これらのURIは、開発者コンソールの [構成] ページにある [OAuth 2.0リダイレクトURI] セクションで設定できます。有効なHTTPS URIまたは安全性の低いHTTP URI (localhostまたはループバックアドレスの場合) である必要があります。重複するURIの保存は許可されていません。 日本時間2021年11月30日以降、OAuth 2.0を使用する新規のアプリケーションでは、開発者コンソールの [構成] タブで設定されたURIとリダイレクト時に使用されるURIが厳密に一致する必要があります。また、そのため新規のアプリケーションと既存のアプリケーションの両方で、複数のリダイレクトURIを追加できるようになります。 アプリケーション用にリダイレクトURIを複数設定した場合、承認URLには、開発者コンソールで設定したURIのいずれかと一致する`redirect_uri`パラメータを含める必要があります。このパラメータが指定されていない場合、ユーザーがアプリケーションにアクセス権限を付与すると、`redirect_uri_missing`エラーが表示され、アプリにリダイレクトされません。 既存のアプリケーションでは、サービスの中断を回避するために、日本時間2022年5月14日までにこのURLを変更する必要があります。 ### アプリケーションスコープ スコープを使用して、アプリケーションがデータにアクセスするために必要な権限を定義します。各オプションの詳細については、[スコープのガイド](g://api-calls/permissions-and-errors/scopes)を参照してください。 ### CORSドメイン アプリケーションがJavaScriptでフロントエンドのブラウザコードからAPIコールを実行する場合は、[クロスオリジンリソース共有](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) (CORS) のために、これらの呼び出しの実行元となるドメインを許可リストに追加する必要があります。すべてのリクエストがサーバー側のコードから発行される場合は、このセクションをスキップできます。 許可リストにすべてのURIを追加するには、[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブの下部にある [**CORSドメイン**] セクションに移動します。 **Source:** [https://ja.developer.box.com/guides/authentication/oauth2/oauth2-setup/](https://ja.developer.box.com/guides/authentication/oauth2/oauth2-setup/) --- ### OAuth 2.0認証 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides OAuth 2.0認証 クライアント側OAuth 2.0は、Box APIに対してユーザーを認証する最も簡単な方法の… # OAuth 2.0認証 クライアント側OAuth 2.0は、Box APIに対してユーザーを認証する最も簡単な方法の1つです。これは、ユーザーがアプリケーションから他のアプリケーションにある自分のデータにアクセスできるようにすることを目的とした[オープンスタンダード](https://oauth.net/2/)です。 Twitter、Facebook、またはGoogleを使用してウェブサイトにログインしたことがあれば、OAuth 2.0を使用したことがあると考えられます。 Boxでのクライアント側認証にも同様のフローがあります。このフローでは、ユーザーは、アプリケーションからBoxウェブアプリにリダイレクトされて、ログインするように求められ、アプリケーションに対してユーザーのデータへのアクセス権限を付与します。 ## OAuth 2.0を使用する場合 クライアント側認証は、以下に当てはまるアプリに最適な認証方法です。 - 既存のBoxアカウントを持っているユーザーを使用する - ユーザーにBoxを使用していることを知らせる必要がある - ユーザーのBoxアカウントにデータを保存し、アプリケーションのBoxアカウントには保存しない **Source:** [https://ja.developer.box.com/guides/authentication/oauth2/](https://ja.developer.box.com/guides/authentication/oauth2/) --- ### Oktaによるアプリへのログイン **Type:** quick-start | **Category:** SSOとApp User | **Section:** Developer Guides Oktaによるアプリへのログイン Okta、Box、基本のアプリケーションを設定したら、次は、アプリケーションコードフローにおける最初のステップ、Oktaログインに目を向けます。 Oktaログインでは、ログインのためにユーザーをOkta… # Oktaによるアプリへのログイン Okta、Box、基本のアプリケーションを設定したら、次は、アプリケーションコードフローにおける最初のステップ、Oktaログインに目を向けます。 Oktaログインでは、ログインのためにユーザーをOktaにリダイレクトする際に使用される言語のOpenID Connect (OIDC) フレームワークを使用して、Oktaのユーザー情報をアプリケーションに返します。こうしたOktaのユーザー情報は、次の手順でBoxユーザーの検証と作成に使用されます。 このセクションでは、以下の操作について説明します。 - アプリケーション構成のスケルトンを設定します。 - ユーザートラフィックを処理するために選択したフレームワークのルートを定義します。 - Oktaのユーザー情報を、Boxユーザーを検証する次の手順に渡します。 ## スケルトンの設定 ローカルアプリケーションディレクトリで、手順1で作成した`server.js`ファイルを読み込みます。 まず、以下のパッケージ定義と構成情報をファイルにコピーします。 ``` const session = require('express-session'); const { ExpressOIDC } = require('@okta/oidc-middleware'); const bodyParser = require('body-parser'); const boxSDK = require('box-node-sdk'); const config = require('./config.js'); const express = require('express')(); const http = require('http'); const path = require('path'); const fs = require('fs'); express.use(session({ secret: 'this should be secure', resave: true, saveUninitialized: false })); const oidc = new ExpressOIDC({ issuer: `https://${config.oktaOrgUrl}/oauth2/default`, client_id: config.oktaClientId, client_secret: config.oktaClientSecret, appBaseUrl: config.oktaBaseUrl, loginRedirectUri: `${config.oktaBaseUrl}${config.oktaRedirect}`, scope: 'openid profile' }); express.use(oidc.router); express.use(bodyParser.json()); express.use(bodyParser.urlencoded({ extended: true })); ``` これにより、Express構成とOkta OIDCコネクタの情報が設定されます。ExpressはOIDCコネクタを使用するよう設定され、このクイックスタートガイドの手順2で保存したOktaの情報はOkta統合のコネクタの構成に使用されます。 次に、ルーティングの詳細を追加します。 ``` // Redirect to Okta login express.get('/', (req, res) => { // TODO: HANDLE ROUTE }); ``` これにより、アプリケーションのエントリルートが定義されます。ユーザーがアプリケーションのルート (`/`) にアクセスを試みると、このルート内のコードが実行されます。 最後に、Expressサーバーの初期化を追加してトラフィックをリッスンします。 ``` // Create server const port = process.env.PORT || 3000; http.createServer(express).listen(port, () => { console.log(`Server started: Listening on port ${port}`); }); ``` ローカルアプリケーションディレクトリで、手順1で作成した`/src/main/java/com/box/sample/Application.java`ファイルを読み込みます。別のアプリケーション名を使用している場合は、同等のディレクトリを読み込みます。 以下の基本的なアプリケーション構造をファイルにコピーします。 ``` package com.box.okta.sample; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.net.URL; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.security.oauth2.core.oidc.user.OidcUser; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.box.sdk.BoxAPIRequest; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxJSONResponse; import com.box.sdk.BoxUser; import com.box.sdk.CreateUserParams; import com.eclipsesource.json.JsonArray; import com.eclipsesource.json.JsonObject; import com.eclipsesource.json.JsonValue; @RestController @EnableAutoConfiguration public class Application { static BoxDeveloperEditionAPIConnection api; // TODO: SET ROUTE // TODO: INITIALIZE SERVER } ``` これにより、必要なimport、`Application`クラス、標準的な共有Box APIの接続属性が設定されます。これらは次の手順で定義します。 `// TODO: SET ROUTE`を以下の内容に置き換えます。 ``` @RequestMapping("/") String home(@AuthenticationPrincipal OidcUser user) throws IOException { // TODO: HANDLE ROUTE } ``` このルートマッピングではアプリケーションのエントリルートを定義します。ユーザーがログアウトした状態でアプリケーションのルート (`/`) にアクセスを試みると、OIDCコネクタによってユーザーは自動的にOktaログインにプッシュされるため、リダイレクトを設定する必要がありません。ユーザーがログイン状態の場合は、このルート内のコードが実行されます。 `// TODO: INITIALIZE SERVER`を以下の内容に置き換えて、Spring Bootサーバーを初期化してトラフィックをリッスンします。 ``` public static void main(String[] args) { SpringApplication.run(Application.class, args); } ``` ローカルアプリケーションディレクトリで、手順1で作成した`server.py`ファイルを読み込みます。 以下の基本的なアプリケーション構造をファイルにコピーします。 ``` from flask import Flask, redirect, g, url_for from flask_oidc import OpenIDConnect from okta import UsersClient from boxsdk import Client from boxsdk import JWTAuth import requests import config import json app = Flask(__name__) app.config.update({ 'SECRET_KEY': config.okta_client_secret, 'OIDC_CLIENT_SECRETS': './client_secrets.json', 'OIDC_DEBUG': True, 'OIDC_ID_TOKEN_COOKIE_SECURE': False, 'OIDC_SCOPES': ["openid", "profile"], 'OIDC_CALLBACK_ROUTE': config.okta_callback_route }) oidc = OpenIDConnect(app) okta_client = UsersClient(config.okta_org_url, config.okta_auth_token) ``` これにより、Flask構成、Oktaクライアント、Okta OIDCコネクタの情報が設定されます。FlaskはOIDCコネクタを使用するよう設定され、このクイックスタートガイドの手順2で保存したOktaの情報はOkta統合のコネクタの構成に使用されます。 次に、ルート処理が行われる前に実行する`before_request`定義を追加します。ここでは、この定義を使用してOktaのユーザー情報 (存在する場合) をキャプチャします。 ``` # Fetch Okta user record if logged in @app.before_request def before_request(): # TODO: HANDLE BEFORE REQUEST ``` 最後に、アプリケーションのエントリルートと`box_auth`ルートを定義します。 ``` # Main application route @app.route('/') def start(): # TODO: HANDLE MAIN ROUTE # Box user verification @app.route("/box_auth") @oidc.require_login def box_auth(): # TODO: HANDLE BOX AUTH ROUTE return 'Complete' ``` ユーザーがアプリケーションのルート (`/`) にアクセスを試みると、このルート内のコードが実行されます。Oktaユーザーを検証する際は、`box_auth`ルート内のコードが実行されます。 ローカルアプリケーションで、`Views` > `Shared` > `Layout.cshtml`を読み込みます。これは、ASP.NETアプリケーションが読み込まれるとレンダリングされるビジュアルコンポーネントになります。ページの先頭に以下のコードを挿入します。 ``` @using System.Security.Claims; @if (User.Identity.IsAuthenticated) { <p class="navbar-text">Hello, @User.Identity.Name</p> } else { <a asp-controller="Account" asp-action="SignIn">Sign In</a> } ``` Oktaにログインしているユーザーがアクセスすると、Helloというメッセージが表示されます。ログインしていない場合は、サインインリンクが表示されます。 `<a asp-controller="Account" asp-action="SignIn">Sign In</a>`という行に含まれる`asp-controller="Account"`は、作成予定のAccountコントローラでリクエストを処理することを意味します。また、`asp-action="SignIn"`は、このコントローラの`SignIn`メソッドが実行されることを意味します。このファイルを保存して閉じます。 `Controllers`ディレクトリ内に、`AccountController.cs`という新しいファイルを作成します。これは、サインインリンクがクリックされたときに実行されるコントローラになります。 以下の基本的なアプリケーション構造をファイルにコピーします。 ``` using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Authorization; using Okta.AspNetCore; using Box.V2; using Box.V2.Config; using Box.V2.JWTAuth; using Box.V2.Models; public class AccountController : Controller { public IActionResult SignIn() { if (!HttpContext.User.Identity.IsAuthenticated) { return Challenge(OktaDefaults.MvcAuthenticationScheme); } return RedirectToAction("Profile", "Account"); } [Authorize] [Route("~/profile")] public IActionResult Profile() { // TODO: HANDLE ROUTE } } ``` ユーザーがサインインリンクをクリックすると、このコントローラの`SignIn`メソッドが実行されます。ユーザーがまだ認証されていない場合は`Challenge`に送信され、ユーザーはログインするためにOktaにリダイレクトされます。この機能はルーティングフレームワークによって処理されるため、追加で実行するコードは必要ありません。ユーザーが認証済みの場合は`Profile`ルーティングメソッドにリダイレクトされます。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## アプリケーションルートの設定 今度は、メインのルート (`/`) に入ったときに実行されるコードを定義する必要があります。 メインのルート内の`// TODO: HANDLE ROUTE`を以下のコードに置き換えます。 ``` if (req.userContext && req.userContext.userinfo) { const tokenSet = req.userContext.tokens; const userInfo = req.userContext.userinfo; // If Okta ID is present, pass to Box user validation if (userInfo.sub) { box.validateUser(userInfo, res); } else { console.log('No Okta ID identified'); } } else { res.redirect('/login'); } ``` 上記のコードでは、まず、OIDCコネクタから入手できるOktaのユーザー情報があるかどうかを確認しています。ユーザーがログインすると、このコネクタにより、Oktaのユーザーと構成の情報が`req.userContext`内のルートで使用できるようになります。 ユーザー情報が存在する場合、つまりユーザーがOktaにログインしている場合は、ユーザー情報をExpressのレスポンスオブジェクトとともに`box.validateUser`に渡して、関連付けられたBoxユーザーが存在するかどうかを確認します。これは次の手順で定義します。 ユーザー情報が存在しない場合、ユーザーは`/login`にリダイレクトされます。OIDCコネクタは自動的にこのルートを処理し、そのユーザーにOktaログインを強制します。 メインのルート内の`// TODO: HANDLE MAIN ROUTE`を以下のコードに置き換えます。 ``` // Validate OIDC user against Box return validateUser(user); ``` Java OIDCコネクタは、手間のかかる部分のほとんどを代わりに処理してくれます。ログアウトしたユーザーがこのルートにアクセスすると、自動的にOktaログインにプッシュされます。ログインすると、OIDCユーザーオブジェクトがこのルートに使用できるようになります。そのユーザーオブジェクトは、次の手順で定義する`validateUser`関数に渡します。 メインのルート内の`// TODO: HANDLE BEFORE REQUEST`を以下のコードに置き換えます。 ``` if oidc.user_loggedin: g.user = okta_client.get_user(oidc.user_getfield('sub')) else: g.user = None ``` これにより、OIDCユーザーが存在するかどうか、つまりユーザーがすでにOktaにログインしているかどうかが確認されます。存在する場合は、Oktaクライアントオブジェクトを使用してユーザーオブジェクトを設定し、存在しない場合はユーザーオブジェクトを`None`に設定します。 次に、メインのルート内の`// TODO: HANDLE ROUTE`を以下のコードに置き換えます。 ``` return redirect(url_for(".box_auth")) ``` このコードに入ると、ユーザーはOktaにログインしていない場合に、ログインするためにOIDCコネクタによってOktaにリダイレクトされます。ログイン後 (またはユーザーがすでにログインしている場合) は、`box_auth`ルートコードに転送されます。 最後に、`box_auth`ルート内の`// TODO: HANDLE BOX AUTH ROUTE`を以下のコードに置き換えます。 ``` box = Box() return box.validateUser(g) ``` これにより、Oktaユーザーオブジェクトが渡されることで、Boxクラスの新しいインスタンスが作成され、`validateUser`メソッドが呼び出されます。このクラスとメソッドは次の手順で定義します。 メインのルート内の`// TODO: HANDLE ROUTE`を以下のコードに置き換えます。 ``` var subClaim = HttpContext.User.Claims.First(c => c.Type == "sub"); var sub = subClaim.Value; var nameClaim = HttpContext.User.Claims.First(c => c.Type == "name"); var name = nameClaim.Value; Task userSearch = validateUser(name, sub); Task.WaitAll(userSearch); return Content(name); ``` このブロックでは、Oktaユーザーアカウントのsub (一意のID) とnameをキャプチャし、次の手順で作成する`validateUser`メソッドにそのデータを送信して、一致するBoxユーザーを検出します。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## まとめ - Oktaのスケルトンルートと構成を設定しました。 - Boxユーザーの確認に渡すメインのルートハンドラを設定しました。 Oktaログインを設定しました **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/logging-into-app/](https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/logging-into-app/) --- ### Oktaの構成 **Type:** quick-start | **Category:** SSOとApp User | **Section:** Developer Guides Oktaの構成 OktaとBoxの統合における次の手順では、Oktaアプリケーションとユーザーを作成して構成した後、アプリケーション内でOkta… # Oktaの構成 OktaとBoxの統合における次の手順では、Oktaアプリケーションとユーザーを作成して構成した後、アプリケーション内でOktaに接続するために必要となるいくつかの情報を抽出します。 このチュートリアルでは、空のアプリケーションとユーザーダッシュボードから開始します。これは、準備が整っている可能性のある既存のインストールへの悪影響を避け、インスタンスへの管理者権限を確保するためです。 ## Oktaアプリケーションの作成 まず[Oktaの開発者向けサイト](https://developer.okta.com/)で、新しいDeveloperアカウントにサインアップします。すでにアカウントを持っている場合は個人アカウントでログインします。 既存のアカウントでログインした場合は、Oktaのダッシュボードが表示されるので、右上の [**Admin (管理)**] ボタンをクリックします。 新しいDeveloperアカウントを作成した場合は、管理ダッシュボードにリダイレクトされます。 管理パネルが表示されたら、上部の [**Applications (アプリケーション)**] オプションをクリックします。 アプリケーションページで [**Add Application (アプリケーションの追加)**] ボタンをクリックします。アプリケーションの種類として [**Web (ウェブ)**] を選択し、[**Next (次へ)**] ボタンをクリックします。 Oktaは、アプリケーションの承認とユーザーの認証それぞれに、[OAuth 2](https://oauth.net/2/)と[OpenID Connect](https://openid.net/) (OIDC) の両方を使用します。OpenID Connectの統合では、多数の一般的な言語フレームワーク内で組み込みのOIDCコネクタを使用でき、コールバックルートの処理、ログインおよびログアウト方法の提供、アプリケーションへのルートの保護によってアプリケーションとユーザーの管理が簡略化されます。 この初回の統合を簡略化するために、言語とフレームワークのOIDCコネクタにデフォルトのコールバックルートと設定を使用します。どの統合の種類を選択するかによって、構成設定が若干変わります。 以下の構成設定を使用して、アプリケーションの詳細を入力します。 - 名前: 任意 - 基本URI: `http://localhost:3000/` - ログインリダイレクトURI: `http://localhost:3000/authorization-code/callback` - ログアウトリダイレクトURI: `http://localhost:3000/logout` - 使用できる許可タイプ: [**Authorization Code (承認コード)**] のみを選択 - 名前: 任意 - 基本URI: `http://localhost:8080/` - ログインリダイレクトURI: `http://localhost:8080/authorization-code/callback` - ログアウトリダイレクトURI: `http://localhost:8080/logout` - 使用できる許可タイプ: [**Authorization Code (承認コード)**] のみを選択 - 名前: 任意 - 基本URI: `http://127.0.0.1:5000/` - ログインリダイレクトURI: `http://127.0.0.1:5000/oidc/callback` - ログアウトリダイレクトURI: `http://127.0.0.1:5000/logout` - 使用できる許可タイプ: [**Authorization Code (承認コード)**] のみを選択 - 名前: 任意 - 基本URI: `https://localhost:5001/` - ログインリダイレクトURI: `https://localhost:5001/authorization-code/callback` - ログアウトリダイレクトURI: `https://localhost:5001/logout` - 使用できる許可タイプ: [**Authorization Code (承認コード)**] のみを選択 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 [**Done (完了)**] ボタンをクリックしてアプリケーションを作成し、アプリケーションの一般設定に移動します。 ## アプリケーション資格情報のコピー 次に、1つ前の手順で設定した構成ファイルを使用して、ファイル内にOktaのアプリケーション組織とアプリの詳細を追加します。 Oktaアプリケーションの情報はほとんどが一般設定ページにありますが、Okta組織を後方参照するために構成URIで使用されている`Org URL`は例外です。`Org URL`を取得するには、Okta管理コンソールのダッシュボードに移動します。`Org URL`は画面の右上隅に表示されます。 前の手順で選択した言語とフレームワークに応じて、適切な構成ファイルを設定します。 - 任意のエディタで、ローカルアプリケーションディレクトリ内の`config.json`を開きます。 以下の行項目を、Oktaの構成情報で適宜更新します。 - `oktaClientId`: アプリケーションの一般設定の [**Client Credentials (クライアント資格情報)**] セクションから取得。 - `oktaClientSecret`: アプリケーションの一般設定の [**Client Credentials (クライアント資格情報)**] セクションから取得。 - `oktaOrgUrl`: 管理ダッシュボードのメインページで右上から取得。 ファイルを保存します。 `config.json`ファイルは次のようになります。 ``` const oktaClientId = exports.oktaClientId = '0oa48567frkg5KW4x6'; const oktaClientSecret = exports.oktaClientSecret = 'cugDJy2ERfIQHDXv-j2134DfTTes-Sa3'; const oktaOrgUrl = exports.oktaOrgUrl = 'YOURDOMAIN.okta.com'; const oktaBaseUrl = exports.oktaBaseUrl = 'http://localhost:3000'; const oktaRedirect = exports.oktaRedirect = '/authorization-code/callback'; ``` `/src/main/resources/application.properties`ファイルを開き、以下の行を更新します。 - `okta.oauth2.issuer`: 管理ダッシュボードのメインページの右上から取得したOrg URLの後に`/oauth2/default`を付けたもの。たとえばOrg URLが`https://dev-123456.okta.com`の場合、この発行者文字列は`https://dev-123456.okta.com/oauth2/default`になります。 - `okta.oauth2.clientId`: アプリケーションの一般設定の [**Client Credentials (クライアント資格情報)**] セクションから取得。 - `okta.oauth2.clientSecret`: アプリケーションの一般設定の [**Client Credentials (クライアント資格情報)**] セクションから取得。 ファイルを保存します。 `/src/main/resources/application.properties`ファイルは次のようになります。 ``` okta.oauth2.redirect-uri=/authorization-code/callback okta.oauth2.issuer=https://YOURDOMAIN.okta.com/oauth2/default okta.oauth2.clientId=0oa48567frkg5KW4x6 okta.oauth2.clientSecret=cugDJy2ERfIQHDXv-j2134DfTTes-Sa3 security.oauth2.sso.loginPath=/authorization-code/callback ``` Python/Flaskの統合では、組織とアプリの標準的な構成情報に加え、追加の認証トークンが必要です。 認証トークンを作成するには、次の手順に従います。 - Oktaの管理ダッシュボードの [**API**] -> [**Token (トークン)**] セクションに移動します。 - [**Create Token (トークンの作成)**] ボタンをクリックします。 - トークンの名前を入力し、[**Create (作成)**] をクリックします。 - 生成されたトークンをコピーします。 次に、ローカルのアプリケーション構成ファイルを更新します。 - 任意のエディタで、ローカルアプリケーションディレクトリ内の`config.py`を開きます。 以下の行項目を、Oktaの構成情報で適宜更新します。 - `okta_client_secret`: アプリケーションの一般設定の [**Client Credentials (クライアント資格情報)**] セクションから取得。 - `okta_org_url`: 管理ダッシュボードのメインページで右上から取得。 - `okta_auth_token`: 上記で作成したトークン。 ファイルを保存します。 `config.py`ファイルは次のようになります。 ``` okta_client_id = '0oa48567frkg5KW4x6' okta_client_secret = 'cugDJy2ERfIQHDXv-j2134DfTTes-Sa3' okta_org_url = 'http://YOURDOMAIN.okta.com' okta_auth_token = '01KkTQTRfs1yKLr4Ojy26iqoIjK_4fHyq132Dr5T' okta_callback_route = '/oidc/callback' ``` 最後に、Flask構成ファイルを更新します。 - 任意のエディタで、ローカルアプリケーションディレクトリ内の`client_secrets.json`を開きます。 以下の行項目を、Oktaの構成情報で適宜更新します。 - `client_id`: アプリケーションの一般設定の [**Client Credentials (クライアント資格情報)**] セクションから取得。 - `client_secret`: アプリケーションの一般設定の [**Client Credentials (クライアント資格情報)**] セクションから取得。 - `auth_uri`: 管理ダッシュボードのメインページの右上から取得したOrg URLの後に`/oauth2/default/v1/authorize`を付けたもの。たとえばOrg URLが`https://dev-123456.okta.com`の場合、この発行者文字列は`https://dev-123456.okta.com/oauth2/default/v1/authorize`になります。 - `token_uri`: 管理ダッシュボードのメインページの右上から取得したOrg URLの後に`/oauth2/default/v1/token`を付けたもの。たとえばOrg URLが`https://dev-123456.okta.com`の場合、この発行者文字列は`https://dev-123456.okta.com/oauth2/default/v1/token`になります。 - `issuer`: 管理ダッシュボードのメインページの右上から取得したOrg URLの後に`/oauth2/default`を付けたもの。たとえばOrg URLが`https://dev-123456.okta.com`の場合、この発行者文字列は`https://dev-123456.okta.com/oauth2/default`になります。 - `userinfo_uri`: 管理ダッシュボードのメインページの右上から取得したOrg URLの後に`/oauth2/default/userinfo`を付けたもの。たとえばOrg URLが`https://dev-123456.okta.com`の場合、この発行者文字列は`https://dev-123456.okta.com/oauth2/default/userinfo`になります。 ファイルを保存します。 `client_secrets.json`ファイルは次のようになります。 ``` { "web": { "client_id": "0oa48567frkg5KW4x6", "client_secret": "cugDJy2ERfIQHDXv-j2134DfTTes-Sa3", "auth_uri": "https://YOURDOMAIN.okta.com/oauth2/default/v1/authorize", "token_uri": "https://YOURDOMAIN.okta.com/oauth2/default/v1/token", "issuer": "https://YOURDOMAIN.okta.com/oauth2/default", "userinfo_uri": "https://YOURDOMAIN.okta.com/oauth2/default/userinfo", "redirect_uris": [ "http://127.0.0.1:5000/oidc/callback" ] } } ``` - 任意のエディタで、ローカルアプリケーションディレクトリ内の`Startup.cs`を開きます。 `ConfigureServices`メソッド内の以下の行項目を、Oktaの構成情報で適宜更新します。 - `OktaDomain`: 管理ダッシュボードのメインページで右上から取得。 - `ClientId`: アプリケーションの一般設定の [**Client Credentials (クライアント資格情報)**] セクションから取得。 - `ClientSecret`: アプリケーションの一般設定の [**Client Credentials (クライアント資格情報)**] セクションから取得。 ファイルを保存します。 `ConfigureServices`メソッドは次のようになります。 ``` services.AddControllersWithViews(); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = OktaDefaults.MvcAuthenticationScheme; }) .AddCookie() .AddOktaMvc(new OktaMvcOptions { OktaDomain = "https://YOURDOMAIN.okta.com", ClientId = "0oa48567frkg5KW4x6", ClientSecret = "cugDJy2ERfIQHDXv-j2134DfTTes-Sa3" }); ``` # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## ユーザーの作成 Oktaの設定における最後の手順では、アプリケーションへのログインに使用するテストユーザーを作成します。 1. Oktaの管理ダッシュボードの [**Users (ユーザー)**] セクションに移動します。 2. [**Add Person (ユーザーの追加)**] ボタンをクリックします。 3. 適切なユーザー情報をすべて入力します。パスワードには [**Set by admin (管理者が設定)**] を選択し、ユーザーのパスワードを入力します。また、[**User must change password on first login (ユーザーは初回ログイン時にパスワードの変更が必要)**] オプションの選択を解除します。ログインにはユーザー名とパスワードを使用します。これらの設定はテスト目的のみで使用されるため、ユーザーの作成とセキュリティのベストプラクティスではありません。 4. [**Save (保存)**] ボタンをクリックしてユーザーを作成します。 ## まとめ - Oktaアプリケーションを作成しました。 - ローカルアプリケーションでOktaの構成情報を更新しました。 - Oktaのテストユーザーを作成しました。 Oktaアプリを作成し、ユーザー/ローカル構成を設定しました **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/configure-okta/](https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/configure-okta/) --- ### OpenAI GPT o3 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides OpenAI GPT o3 OpenAI GPT o… # OpenAI GPT o3 **OpenAI GPT o3**は、推論や問題解決のタスクに集中力や能力を高めて取り組むよう特化して設計されています。ユーザーのリクエストの処理と理解により多くの時間を費やすため、科学、コーディング、数学などの分野で、以前の反復処理に比べて非常に強力になっています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | GPT o3 | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | openai__gpt_o3 | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | OpenAI | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | OpenAI | このモデルを提供する組織。 | | リリース日 | 2025年4月16日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年5月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 200,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 100,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[OpenAI GPT o3の公式ドキュメント](https://openai.com/index/introducing-o3-and-o4-mini/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/openai-gpt-o3-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/openai-gpt-o3-model-card/) --- ### OpenAI GPT-5 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides OpenAI GPT-5 OpenAI GPT-5は、高度な推論機能と長いコンテキストの理解を備えたマルチモーダルモデルです。 モデルの詳細 項目 値 説明 モデル名 GPT-5 モデルの名前。 モデルのカテゴリ プレミアム モデルのカテゴリ: 標準またはプレミアム。 API… # OpenAI GPT-5 **OpenAI GPT-5**は、高度な推論機能と長いコンテキストの理解を備えたマルチモーダルモデルです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | GPT-5 | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | openai__gpt_5 | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | OpenAI | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | OpenAI | このモデルを提供する組織。 | | リリース日 | 2025年8月7日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年10月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 100万トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 100,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[OpenAI GPT-5の公式ドキュメント](https://openai.com/index/introducing-gpt-5/)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/openai-gpt-5-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/openai-gpt-5-model-card/) --- ### OpenAI GPT-5 mini **Type:** guide | **Category:** Box AI | **Section:** Developer Guides OpenAI GPT-5 mini OpenAI GPT-5 miniは、明確に定義されたタスクや正確なプロンプトに適している、GPT-5の高速かつコスト効率のよいバージョンです。 モデルの詳細 項目 値 説明 モデル名 GPT-5 mini… # OpenAI GPT-5 mini **OpenAI GPT-5 mini**は、明確に定義されたタスクや正確なプロンプトに適している、GPT-5の高速かつコスト効率のよいバージョンです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | GPT-5 mini | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | openai__gpt_5_mini | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | OpenAI | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | OpenAI | このモデルを提供する組織。 | | リリース日 | 2025年8月7日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年5月31日 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 400,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 128,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[OpenAI GPT-5 miniの公式ドキュメント](https://platform.openai.com/docs/models/gpt-5-mini)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/openai-gpt-5-mini-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/openai-gpt-5-mini-model-card/) --- ### OpenAI GPT-5.1 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides OpenAI GPT-5.1 OpenAI GPT-5.1は、構成可能な推論処理を使用したコーディングやエージェント型タスク向けに設計されたマルチモーダルモデルです。 モデルの詳細 項目 値 説明 モデル名 GPT-5.… # OpenAI GPT-5.1 **OpenAI GPT-5.1**は、構成可能な推論処理を使用したコーディングやエージェント型タスク向けに設計されたマルチモーダルモデルです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | GPT-5.1 | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | openai__gpt_5_1 | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | OpenAI | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | OpenAI | このモデルを提供する組織。 | | リリース日 | 2025年11月13日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2024年9月30日 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 400,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 128,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[OpenAI GPT-5の公式ドキュメント](https://platform.openai.com/docs/models/gpt-5.1)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/openai-gpt-5-1-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/openai-gpt-5-1-model-card/) --- ### OpenAI GPT-5.2 **Type:** guide | **Category:** Box AI | **Section:** Developer Guides OpenAI GPT-5.2 OpenAI GPT-5.2は、幅広い世界のナレッジを必要とする複雑なタスク向けに設計されたマルチモーダルモデルです。 モデルの詳細 項目 値 説明 モデル名 GPT-5.… # OpenAI GPT-5.2 **OpenAI GPT-5.2**は、幅広い世界のナレッジを必要とする複雑なタスク向けに設計されたマルチモーダルモデルです。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | GPT-5.2 | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ: 標準またはプレミアム。 | | APIモデル名 | openai__gpt_5_2 | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | OpenAI | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | OpenAI | このモデルを提供する組織。 | | リリース日 | 2025年12月11日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2025年8月31日 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 400,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 128,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | ## その他のドキュメント 詳細については、[OpenAI GPT-5.2の公式ドキュメント](https://platform.openai.com/docs/models/gpt-5.2)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/openai-gpt-5-2-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/openai-gpt-5-2-model-card/) --- ### PDFレプリゼンテーションの取得 **Type:** guide | **Category:** レプリゼンテーション | **Section:** Developer Guides PDFレプリゼンテーションの取得 PDFレプリゼンテーションでは、予測しやすい方法でモバイルアプリとウェブアプリにドキュメントを埋め込むことができます。PDFレプリゼンテーションでは、元のファイルに電子すかしが適用されている場合に電子すかしがサポートされます。 PDF… # PDFレプリゼンテーションの取得 PDFレプリゼンテーションでは、予測しやすい方法でモバイルアプリとウェブアプリにドキュメントを埋め込むことができます。PDFレプリゼンテーションでは、元のファイルに電子すかしが適用されている場合に電子すかしがサポートされます。 PDFレプリゼンテーションは、元のファイルをBoxにアップロードしたときに生成されますが、電子すかし付きPDFは、電子すかし付きファイルを初めて取得したときに生成されます。 ## 手順 PDFレプリゼンテーションを取得するには、以下の手順に従います。 - [すべてのレプリゼンテーションのリストを取得する](guide://representations/list-all-representations) - 目的のファイルタイプ`[pdf]`を表す`x-rep-hints`ヘッダーを渡して、[PDFをリクエスト](guide://representations/request-a-representation)する - `url_template`を呼び出して[PDFをダウンロード](guide://representations/download-a-representation)する。その際、`{+asset_path}`は、リクエストするPDFのページ (`1.pdf`など) に置き換えます。 ## 電子すかし付きPDF 電子すかし付きPDFを取得するには、Boxで元のファイル自体に電子すかしを適用する必要があります。ファイルに電子すかしを適用するには、Boxウェブアプリまたは[`PUT /files/:id/watermark/`](endpoint://put-files-id-watermark) APIを使用します。 電子すかしが適用されると、そのファイルの電子すかし付きPDFレプリゼンテーションが生成されます。 **Source:** [https://ja.developer.box.com/guides/representations/pdf/](https://ja.developer.box.com/guides/representations/pdf/) --- ### Platformアプリ **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides Platformアプリ Platformアプリはほとんどのユースケースに対応しており、最も柔軟なアプリケーションの種類です。 Platformアプリケーションは、通常、カスタムインターフェース内でBox機能をユーザーに表示します。Box… # Platformアプリ Platformアプリはほとんどのユースケースに対応しており、最も柔軟なアプリケーションの種類です。 Platformアプリケーションは、通常、カスタムインターフェース内でBox機能をユーザーに表示します。Boxには、コンテンツの閲覧、検索、プレビューなどの機能のために、[UI Elements](g://embed/ui-elements)と呼ばれる、組み込みのカスタマイズ可能なユーザーインターフェースコンポーネントが用意されています。 ## 認証方法 Platformアプリでは、[OAuth 2.0](g://authentication/oauth2)、[JWT](g://authentication/jwt)、および[クライアント資格情報許可](g://authentication/client-credentials)がサポートされています。 認証方法の詳細を確認する ## 使用するタイミング アプリケーションが以下のような場合に、Platformアプリを使用すると最も効果的です。 - 認証に[OAuth 2.0](g://authentication/oauth2)、[JWT](g://authentication/jwt)、または[クライアント資格情報許可](g://authentication/client-credentials)を使用する - ファイルをアップロードおよびダウンロードする - 自分が所有するファイルにも、[管理対象ユーザーまたは外部ユーザー](page://platform/user-types/#managed-users)が所有するファイルにも自由にアクセスしたい - Box統合にアプリケーションを掲載する - Boxウェブアプリとの統合を可能にする ## ユースケース 以下は、Platformアプリのユースケースの例です。 アプリケーション内のファイル保存場所。これにより、エンドユーザーが自分と共有されているファイルにアクセスできると同時に、従業員にもBoxウェブアプリを介して同じファイルへのアクセス権限が提供されます。 この一例として、ファイナンシャルアドバイザは、Platformアプリケーション内で閲覧またはコメントが可能な取引明細書や投資目論見書を投資家と共有します。 アプリケーションのファイルアップロード機能。これにより、エンドユーザーは、独自に構築したアプリケーション内からBoxにファイルを送信したりアップロードしたりできます。その後、これらのアップロードにより、Boxウェブアプリを使用したビジネスプロセスが開始されます。 この一例として、志願者が採用ポータルに送信した経歴書のPDFは、審査のため適切な従業員に転送されます。 ## 承認 Platformアプリは、使用前に承認が必要になる場合があります。 Platformアプリの承認方法を確認する **Source:** [https://ja.developer.box.com/guides/applications/app-types/platform-apps/](https://ja.developer.box.com/guides/applications/app-types/platform-apps/) --- ### Platformアプリの承認 **Type:** guide | **Category:** 承認 | **Section:** Developer Guides Platformアプリの承認 JWTまたはクライアント資格情報許可を使用するサーバー認証アプリケーションは、使用前にBox管理者が承認する必要があります。 OAuth 2.0認証を使用する未公開アプリケーションは、デフォルトで非アクティブになっている場合、Box… # Platformアプリの承認 [JWT](g://authentication/jwt)または[クライアント資格情報許可](g://authentication/client-credentials)を使用するサーバー認証アプリケーションは、使用前にBox管理者が承認する必要があります。 [OAuth 2.0](g://authentication/oauth2)認証を使用する未公開アプリケーションは、[デフォルトで非アクティブ](g://security/#enterprise-settings-and-authorization)になっている場合、Box管理者による有効化が必要になることがあります。 Box管理者は、管理コンソールでアプリケーションを適切に承認または有効化するために、そのクライアントIDが必要になります。 [[Platformアプリ](g://applications)] ビューを使用すると、アプリケーションの承認ステータスと有効化ステータスをすばやく確認できます。 ## 承認の通知 アプリの承認を送信するための半自動プロセスは、開発者コンソールですべての種類のPlatformアプリケーションに使用できます。 ### サーバー認証アプリ [開発者コンソール](https://app.box.com/developers/console)で、目的のアプリケーションの [**承認**] タブに移動します。 ### ユーザー認証アプリ [開発者コンソール](https://app.box.com/developers/console)で、目的のアプリケーションの [**有効化**] タブに移動します。 承認を得るためにアプリケーションを送信すると、企業のプライマリ管理者宛てにアプリケーションを承認するようメールが送信されます。Box管理者がリクエストを承認または拒否すると、その決定が記載されたメールが届きます。このプロセスの詳細については、[アプリ承認に関するサポート記事](https://support.box.com/hc/ja/articles/360043697014-Box%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E6%89%BF%E8%AA%8D%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E6%89%BF%E8%AA%8D)を参照してください。 ## 手動による承認 以下の手順では、手動でアプリケーションを承認する方法について説明します。 ### 開発者の場合 1. [開発者コンソール](https://app.box.com/developers/console)で、目的のアプリケーションの [**構成**] タブに移動します。 2. [OAuth 2.0資格情報] セクションまで下にスクロールし、Box管理者に提出する [**クライアントID**] の値をコピーします。 また、[[Platformアプリ](g://applications)] ビューでアプリケーションにカーソルを合わせて**クライアントID**を調べ、`copy`ボタンを使用してそのIDをコピーすることもできます。 # Box管理者の確認方法 自分の会社の管理者がわからない場合は、Boxの [[アカウント設定](https://app.box.com/account)] ページに移動し、一番下までスクロールしてください。管理者の連絡先が設定されている場合は、[管理者の連絡先] の下に連絡先情報が表示されます。 ### 管理者の場合 1. [管理コンソール](https://app.box.com/master/settings/custom)に移動し、左側のナビゲーションパネルで [**アプリ**] タブ (1) を選択します。 2. 画面上部にある [**Platformアプリマネージャ**] タブ (2) をクリックします。 3. [サーバー認証アプリ] 画面と [ユーザー認証アプリ] 画面のどちらでも、右上にある [**アプリの追加**] ボタン (3) をクリックして新しいアプリを追加します。 4. または、[Platformアプリマネージャ] の表メニュー (4) を使用してアプリを承認および有効化することもできます。 #### サーバー認証アプリ #### ユーザー認証アプリ 表示されたポップアップで、開発者が[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブから収集した、アプリケーションのクライアントIDを入力します。 ## 変更の再承認 アプリケーションのスコープまたはアクセスレベルが変更された場合は、アプリケーションを再承認する必要があります。新しい変更を有効にするには、上記のプロセスを繰り返して新しいアクセストークンをリクエストしてください。 管理者は、アプリケーションが最初に承認されたのと同じセクションで、そのアプリケーションを再承認できます。再承認するには、アプリケーション名の右側にある省略記号をクリックし、[**アプリを再承認**] を選択します。 **Source:** [https://ja.developer.box.com/guides/authorization/platform-app-approval/](https://ja.developer.box.com/guides/authorization/platform-app-approval/) --- ### Postmanコレクション **Type:** guide | **Category:** ツール | **Section:** Developer Guides Postmanコレクション Postmanは、完全な開発環境を構成しなくても、使いやすいインターフェースでHTTPリクエストを作成およびテストできるツールです。Box Postman… # Postmanコレクション [Postman](https://postman.com)は、完全な開発環境を構成しなくても、使いやすいインターフェースでHTTPリクエストを作成およびテストできるツールです。**Box Postmanコレクション**は事前設定済みのリクエストをまとめたもので、これにより、リクエストを手動で設定しなくても、Box APIを利用できるようになります。 Postmanの使用を開始するには、Postmanクイックスタートガイドを使用するのが最も簡単な方法です。 Box Postmanコレクションの使い方 ## 最新のコレクション 下のボタンをクリックすると、最新のPostmanコレクションがフォークされます。これは、すべてのAPIエンドポイントをカバーするPostmanコレクションであり、Boxの[OpenAPIの仕様](https://github.com/box/box-openapi)から自動生成されます。認証を簡単にする更新を含む、より多くの更新が追加される予定です。 **Source:** [https://ja.developer.box.com/guides/tooling/postman/](https://ja.developer.box.com/guides/tooling/postman/) --- ### Postmanとコレクションのインストール **Type:** guide | **Category:** ツール | **Section:** Developer Guides Postmanとコレクションのインストール Box Postmanコレクションを使用するには、デバイスにPostmanがインストールされている必要があります。PostmanはWindows、Mac、およびLinux… # Postmanとコレクションのインストール **Box Postmanコレクション**を使用するには、デバイスに[Postman](https://getpostman.com)がインストールされている必要があります。PostmanはWindows、Mac、およびLinux環境で利用できます。 [お使いのオペレーティングシステムに適切なバージョンのダウンロード](https://www.postman.com/downloads/) 次に、お使いのマシンにPostmanをインストールし、[アカウントを作成してサインインします](https://identity.getpostman.com/signup)。 ## コレクションと環境の読み込み Postmanアプリがインストールされていれば、そのアプリに**Box Postmanコレクション**を読み込むことができます。下のボタンをクリックすると、Postmanに**Box Postmanコレクション**が読み込まれます。 **Source:** [https://ja.developer.box.com/guides/tooling/postman/install/](https://ja.developer.box.com/guides/tooling/postman/install/) --- ### Postmanのインストール **Type:** quick-start | **Category:** ツール | **Section:** Developer Guides Postmanのインストール Box Postmanコレクションを使用するには、デバイスにPostmanアプリがインストールされている必要があります。PostmanはWindows、Mac、およびLinux… # Postmanのインストール **Box Postmanコレクション**を使用するには、デバイスに[Postman](https://getpostman.com)アプリがインストールされている必要があります。PostmanはWindows、Mac、およびLinux環境で利用できます。 [お使いのオペレーティングシステムに適切なバージョンのダウンロード](https://www.postman.com/downloads/) 次に、お使いのマシンにPostmanをインストールし、(必要に応じて) [Postmanアカウントを登録してログインします](https://identity.getpostman.com/signup)。 ## まとめ - Postmanのインストールが完了しました - Postmanアカウントを作成しました (必要な場合) - Postmanアカウントを使用してPostmanアプリケーションにログインしました。 Postmanのインストールが完了しました **Source:** [https://ja.developer.box.com/guides/tooling/postman/quick-start/install-postman/](https://ja.developer.box.com/guides/tooling/postman/quick-start/install-postman/) --- ### Postmanを使用したAPIコール **Type:** quick-start | **Category:** ツール | **Section:** Developer Guides Postmanを使用したAPIコール Postmanは、完全な開発環境を構成しなくても、使いやすいインターフェースでHTTPリクエストを作成およびテストできるツールです。Box Postman… # Postmanを使用したAPIコール [Postman](https://getpostman.com)は、完全な開発環境を構成しなくても、使いやすいインターフェースでHTTPリクエストを作成およびテストできるツールです。Box Postmanコレクションは事前設定済みのリクエストをまとめたもので、これにより、リクエストを手動で設定しなくても、PostmanでBox APIを利用できるようになります。 ## 概要 このガイドでは、以下の手順を説明します。 1. デバイスに[Postmanをインストール](g://tooling/postman/quick-start/install-postman)する。 2. PostmanからBox APIにアクセスできるように[Boxアプリを設定](g://tooling/postman/quick-start/configure-box-app)する。 3. Boxアプリに[ログイン](g://tooling/postman/quick-start/log-in-to-box)して適切なAPI資格情報を取得する。 4. Postmanに[BoxのPostmanコレクションをフォーク](g://tooling/postman/quick-start/load-postman-collection)する。 5. Postmanを使用してBox APIへの[最初のAPIコールを実行](g://tooling/postman/quick-start/make-api-call)する。 開始する準備ができました **Source:** [https://ja.developer.box.com/guides/tooling/postman/quick-start/](https://ja.developer.box.com/guides/tooling/postman/quick-start/) --- ### Python SDKのインストール **Type:** guide | **Category:** ツール | **Section:** Developer Guides Python SDKのインストール Pythonプロジェクトでは、Box Python SDKを使用してBox APIを呼び出すことができます。 GitHubでPython SDKの詳細を確認する インストール Python SDKをインストールするには、pip… # Python SDKのインストール Pythonプロジェクトでは、Box Python SDKを使用してBox APIを呼び出すことができます。 GitHubでPython SDKの詳細を確認する ## インストール Python SDKをインストールするには、[pip](https://pypi.org/project/pip/)を使用してターミナルウィンドウまたはコマンドプロンプトから以下のコマンドを実行します。 ``` pip install boxsdk ``` ## JWTアプリケーション サーバー側[JWT認証](g://authentication/jwt)を使用するBoxアプリを使用する場合、次の追加モジュールをインストールします。 ``` pip install "boxsdk[jwt]" ``` **Source:** [https://ja.developer.box.com/guides/tooling/sdks/python/](https://ja.developer.box.com/guides/tooling/sdks/python/) --- ### Salesforce Developer Toolkit **Type:** guide | **Category:** ツール | **Section:** Developer Guides Salesforce Developer Toolkit Salesforce Developer Toolkitを使用すると、Box for Salesforce統合の動作をプログラムによりカスタマイズできます。このツールキットに含まれる複数のグローバルAPEX… # Salesforce Developer Toolkit Salesforce Developer Toolkitを使用すると、Box for Salesforce統合の動作をプログラムによりカスタマイズできます。このツールキットに含まれる複数のグローバルAPEXメソッドを使用して、デフォルトの動作をトリガーしたり、拡張したりできます。このグローバルメソッドにより、内部のSalesforceレコードとBoxフォルダのマッピングを更新し、権限の管理を処理できます。 この機能は最新のBox for [Salesforceパッケージ](https://support.box.com/hc/ja/articles/360044195713-Box-for-Salesforce%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E8%A8%AD%E5%AE%9A)に含まれています。 # このツールキットに含まれない機能 このツールキットは、BOX Content API用のフル機能を備えたAPEXラッパーではありません。このようなラッパーをお求めの場合は、[Box SDK for Salesforce](https://github.com/box/box-salesforce-sdk)を参照してください。 ## 認証 認証を行うには、APIコールでのサービスアカウント資格情報の使用を許可するという方法があります。 この場合、Salesforce管理者がツールキットのグローバルAPEXクラスへのアクセスを制限する必要があります。このような方法を使用することで、Boxのコンテンツとコラボレーションを直接変更できるため、Salesforce管理者はグローバルなツールキットAPEXクラスへのアクセスを制限して、適切な措置を講じる必要があります。 `accessToken`をパラメータとして取得するツールキットメソッドでは、`accessToken`の値として`null`を送信することによって、サービスアカウント資格情報を使用できます。 `accessToken`に値が渡された場合、BoxへのAPIコールは送信されたアクセストークンを使用して行われます。渡されるトークンが有効であるかどうか、およびトークンに関連付けられているユーザーにリクエストされた操作を実行する権限があるかどうかは、開発者が確認する必要があります。 **Source:** [https://ja.developer.box.com/guides/tooling/salesforce-toolkit/](https://ja.developer.box.com/guides/tooling/salesforce-toolkit/) --- ### Salesforce SDKのインストール **Type:** guide | **Category:** ツール | **Section:** Developer Guides Salesforce SDKのインストール Salesforce SDKは、Deploy to Salesforce機能を使用して、サンドボックスまたは開発者組織に直接展開できます。 「Deploy to Salesforce」機能はBox… # Salesforce SDKのインストール Salesforce SDKは、Deploy to Salesforce機能を使用して、サンドボックスまたは開発者組織に直接展開できます。 「Deploy to Salesforce」機能はBoxが所有または管理する機能ではありません。 このSDKは、以下の非管理型パッケージとしても配布されています。 - [実稼働環境/開発者パッケージ](https://cloud.box.com/Box-Apex-SDK) - [サンドボックスパッケージ](https://cloud.box.com/Box-Apex-SDK-Sandbox) 非管理型パッケージは、Salesforce組織にインストールするとアップグレードできなくなります。そのため、以後のアップグレードは、リポジトリをローカルで複製してIDEからクラスを更新することにより適用する必要があります。 **Source:** [https://ja.developer.box.com/guides/tooling/sdks/salesforce/](https://ja.developer.box.com/guides/tooling/sdks/salesforce/) --- ### SalesforceのUI Elements **Type:** guide | **Category:** ツール | **Section:** Developer Guides SalesforceのUI Elements Box for Salesforce管理パッケージでは、Content Picker、エクスプローラ、プレビュー、アップローダーのUI ElementsがLightningコンポーネントとして提供されます。これらのUI… # SalesforceのUI Elements Box for Salesforce管理パッケージでは、[Content Picker](g://embed/ui-elements/picker)、[エクスプローラ](g://embed/ui-elements/explorer)、[プレビュー](g://embed/ui-elements/preview)、[アップローダー](g://embed/ui-elements/uploader)の[UI Elements](g://embed/ui-elements)がLightningコンポーネントとして提供されます。これらのUI ElementsはLightningページまたはLightningフローで使用できます。 ## Content Picker Box for SalesforceのPickerで使用できる[オプション](g://embed/ui-elements/picker/#options)は以下のとおりです。 - `folderId` - Lightningコンポーネントがレコードページにある場合は、デフォルトでレコードフォルダになります - `chooseButtonLabel` - `cancelButtonLabel` - `canSetShareAccess` - `canCreateNewFolder` - `canUpload` - `maxSelectable` ## コンテンツエクスプローラ Box for Salesforceのエクスプローラで使用できる[オプション](g://embed/ui-elements/explorer/#options)は以下のとおりです。 - `folderId` - Lightningコンポーネントがレコードページにある場合は、デフォルトでレコードフォルダになります - `canSetShareAccess` - `canCreateNewFolder` - `canUpload` - `canPreview` - `canDownload` - `canDelete` - `canRename` - `canShare` ## コンテンツプレビュー Box for Salesforceのプレビューで使用できる[オプション](g://embed/ui-elements/preview/#options)は以下のとおりです。 - `fileId` ([ファイルIDの確認](g://files/get)) - **ファイルIDのAPIフィールド名** - Salesforce固有。レコードページでは、表示するファイルIDを保持するAPIフィールド名を使用できます ## コンテンツアップローダー Box for Salesforceのアップローダーで使用できる[オプション](g://embed/ui-elements/uploader/#options)は以下のとおりです。 - `folderId` - Lightningコンポーネントがレコードページにある場合は、デフォルトでレコードフォルダになります - `fileLimit` **Source:** [https://ja.developer.box.com/guides/tooling/salesforce-toolkit/ui-elements/](https://ja.developer.box.com/guides/tooling/salesforce-toolkit/ui-elements/) --- ### SDKでの使用 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides SDKでの使用 SDKではJWTおよびOAuth 2.0認証を直接サポートしていますが、場合によっては、アプリケーションがSDKに直接アクセストークンを提供しなければならないこともあります。 開発者トークン 開発者トークンも同様に、追加のSDK構成を必要することなく、直接SDK… # SDKでの使用 SDKではJWTおよびOAuth 2.0認証を直接サポートしていますが、場合によっては、アプリケーションがSDKに直接アクセストークンを提供しなければならないこともあります。 ## 開発者トークン 開発者トークンも同様に、追加のSDK構成を必要することなく、直接SDKで使用できます。 ## アプリトークン アプリトークン認証を使用すると、アプリトークンを直接SDKに渡すことができます。 **Source:** [https://ja.developer.box.com/guides/authentication/tokens/sdks/](https://ja.developer.box.com/guides/authentication/tokens/sdks/) --- ### SDKによる分割アップロード **Type:** guide | **Category:** アップロード | **Section:** Developer Guides SDKによる分割アップロード Box SDKにより、組み込みメソッドを使用して分割アップロードを実行できるようになります。 また、同様の方法によるファイルの新しいバージョンのアップロードもサポートされます。 # SDKによる分割アップロード Box SDKにより、組み込みメソッドを使用して分割アップロードを実行できるようになります。 また、同様の方法によるファイルの新しいバージョンのアップロードもサポートされます。 **Source:** [https://ja.developer.box.com/guides/uploads/chunked/with-sdks/](https://ja.developer.box.com/guides/uploads/chunked/with-sdks/) --- ### SDKを使用したJWT **Type:** guide | **Category:** 認証 | **Section:** Developer Guides SDKを使用したJWT Box公式SDKには、JWT認証のサポートが組み込まれています。 このガイドでは、Box SDKを使用したJWTによるユーザー認証について説明します。JWT認証はBox API… # SDKを使用したJWT Box公式SDKには、JWT認証のサポートが組み込まれています。 このガイドでは、Box SDKを使用したJWTによるユーザー認証について説明します。JWT認証はBox APIを直接操作するよう設計されており、ユーザーがアプリケーションを承認するためにBoxを介してリダイレクトする必要はありません。 ## 概要 JWT承認を完了するには、以下の手順を完了する必要があります。 1. 構成ファイルを読み取る 2. SDKクライアントを初期化する このフローが終了すると、アプリケーションには、アプリケーションの代わりにAPIコールを実行するために使用できるBox SDKクライアントが用意されます。 JWTを使用したデフォルトの認証方法は、もともとアプリケーションのサービスアカウントに関連付けられています。このトークンを使用して実行されるAPIコールはどれも、このアプリケーションから実行されているように見えますが、明示的なアクセス権がなければ他のユーザーのファイルやフォルダにはアクセスできません。 ## 前提条件 開始する前に、以下の手順を完了しておく必要があります。 - 開発者コンソール内でBoxアプリケーションを作成する - アプリケーション用に秘密キーの構成ファイルを作成してダウンロードし、`config.json`として保存する - 社内で使用するためにBoxアプリケーションが承認されていることを確認する ## 1. JSON構成を読み取る Boxアプリケーションを作成すると、アプリケーションの秘密キーとその他の詳細を含む`config.json`ファイルも作成されます。以下に、その例を示します。 ``` { "boxAppSettings": { "clientID": "abc...123", "clientSecret": "def...234", "appAuth": { "publicKeyID": "abcd1234", "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY-----\n....\n-----END ENCRYPTED PRIVATE KEY-----\n", "passphrase": "ghi...345" } }, "enterpriseID": "1234567" } ``` このオブジェクトをアプリケーションで使用するには、ファイルから読み取る必要があります。 ``` var reader = new StreamReader("path/to/config.json"); var json = reader.ReadToEnd(); var config = BoxConfig.CreateFromJsonString(json); ``` ``` Reader reader = new FileReader("path/to/config.json"); BoxConfig config = BoxConfig.readFrom(reader); ``` ``` from boxsdk import JWTAuth config = JWTAuth.from_settings_file('path/to/config.json') ``` ``` var config = require("path/to/config.json"); ``` # JSONの解析 プログラミング言語によっては、ファイルからJSONを読み取って解析する方法が複数ある場合があります。エラー処理など、さらに詳細な説明については、使用するプログラミング言語のガイドを参照してください。 ## 2. SDKクライアントを初期化する 次の手順では、作成した構成を使用してBox SDKを構成し、アプリケーションとして接続するためにクライアントを初期化します。 ``` var sdk = new BoxJWTAuth(config); var token = sdk.AdminToken(); BoxClient client = sdk.AdminClient(token); ``` ``` BoxDeveloperEditionAPIConnection api = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(config); ``` ``` client = Client(config) ``` ``` var sdk = BoxSDK.getPreconfiguredInstance(config); var client = sdk.getAppAuthClient("enterprise"); ``` # サービスアカウント この時点では、アプリケーションは、管理対象ユーザーまたはApp Userとしてではなく、アプリケーションユーザーとして認証されます。各種ユーザーの詳細については、[ユーザータイプ](page://platform/user-types)に関するガイドをご覧ください。 ## まとめ 以下の手順に従うことで、アプリケーションはBox公式SDKのいずれかにより、JWTを使用したアプリケーションの承認を実行できるようになりました。 1. 構成ファイルを読み取る 2. SDKクライアントを初期化する このクライアントの使用方法を確認するには、[APIコールの実行](g://api-calls)に関するガイドをご覧ください。 ## SDKとJSONウェブトークンの使用 各SDKのJWTの詳細については、以下を参照してください。 [.Net](https://github.com/box/box-windows-sdk-v2/blob/main/docs/authentication.md#server-auth-with-jwt) [Java](https://github.com/box/box-java-sdk/blob/main/doc/authentication.md#server-authentication-with-jwt) [Python](https://github.com/box/box-python-sdk/blob/main/docs/usage/authentication.md#server-auth-with-jwt) [Node](https://github.com/box/box-node-sdk/blob/main/docs/authentication.md#server-auth-with-jwt) [IOS](https://github.com/box/box-ios-sdk/blob/main/docs/usage/authentication.md#server-auth-with-jwt) **Source:** [https://ja.developer.box.com/guides/authentication/jwt/with-sdk/](https://ja.developer.box.com/guides/authentication/jwt/with-sdk/) --- ### SDKを使用したOAuth 2.0 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides SDKを使用したOAuth 2.0 Box SDKには、クライアント側OAuth 2.0のサポートが組み込まれています。 このプロセスでは、ユーザーはブラウザでBox… # SDKを使用したOAuth 2.0 Box SDKには、クライアント側OAuth 2.0のサポートが組み込まれています。 このプロセスでは、ユーザーはブラウザでBoxウェブアプリにリダイレクトされます。そこで、ユーザーはログインし、アプリケーションによる自分のデータへのアクセスを承認すると、アプリケーションの`redirect_url`に再度リダイレクトされます。この最後の手順では、ユーザーがアクセス可能な場所にあるウェブサーバー上でアプリケーションが実行されている必要があります。 ## 概要 OAuth 2.0フローを完了するには、以下の手順を完了する必要があります。 1. Box SDKを構成する 2. ユーザーをBoxウェブサイトにリダイレクトする 3. ユーザーがアプリケーションにアクセス権限を付与する 4. 承認コードをアクセストークンと交換する このフローが終了すると、アプリケーションには、このユーザーの代わりにAPIコールを実行するために使用できるアクセストークンが用意されます。 OAuth 2.0を介して取得したアクセストークンは、もともとアプリケーションを承認したユーザーに関連付けられています。このトークンを使用して実行されるAPIコールはどれも、このアプリケーションから実行されているように見えるため、ユーザーには、アプリケーションがこのトークンを使用してアクセスしようとするファイルやフォルダへのアクセス権限が必要です。 ## パラメータ | パラメータ | 説明 | | --- | --- | | CLIENT_ID | アプリケーションのクライアントIDまたはAPIキー | | CLIENT_SECRET | アプリケーションのクライアントシークレットまたはAPIシークレット | | REDIRECT_URI | ユーザーがアプリケーションを承認した後に送信されるアプリケーションのリダイレクトURL。これは開発者コンソールで構成できます。 | ## 1. SDKを構成する 最初の手順として、選択したSDKを使用して環境が準備されていることを確認します。 ``` var redirectUrl = "[REDIRECT_URI]"; var config = new BoxConfig("[CLIENT_ID]", "[CLIENT_SECRET]", new Uri(redirectUrl)); var sdk = new BoxClient(config); ``` ``` import com.box.sdk.BoxAPIConnection; String authorizationUrl = "https://account.box.com/api/oauth2/authorize?client_id=[CLIENT_ID]&response_type=code"; ``` ``` from boxsdk import OAuth2, Client auth = OAuth2( client_id='[CLIENT_ID]', client_secret='[CLIENT_SECRET]' ) ``` ``` var BoxSDK = require("box-node-sdk"); var sdk = new BoxSDK({ clientID: "[CLIENT_ID]", clientSecret: "[CLIENT_SECRET]", }); ``` ご利用の環境に合わせたSDKのインストールの詳細を確認する ## 2. ユーザーをリダイレクトする 次に、承認URLにユーザーをリダイレクトします。ほとんどのSDKでは、SDKクライアントの承認URLを取得する方法をサポートしています。 アプリケーション用にリダイレクトURIを複数設定した場合、承認URLには、開発者コンソールで設定したURIのいずれかと一致する`redirect_uri`パラメータを含める必要があります。このパラメータが指定されていない場合、ユーザーがアプリケーションにアクセス権限を付与すると、`redirect_uri_missing`エラーが表示され、アプリにリダイレクトされません。 ``` var authorizationUrl = "https://account.box.com/api/oauth2/authorize?client_id=[CLIENT_ID]&response_type=code"; // redirectTo(authorizationUrl); ``` ``` String authorizationUrl = "https://account.box.com/api/oauth2/authorize?client_id=[CLIENT_ID]&response_type=code"; // response.redirect(authorizationUrl); ``` ``` auth_url, csrf_token = auth.get_authorization_url('[REDIRECT_URL]') // redirect(auth_url, code=302) ``` ``` var authorize_url = sdk.getAuthorizeURL({ response_type: "code", }); // res.redirect(authorize_url) ``` ユーザーがURLにリダイレクトされる方法は、使用されるアプリケーションフレームワークによって異なります。このトピックの詳細については、ほとんどのフレームワークのドキュメントで説明されています。 [承認URL](endpoint://get-authorize)は、以下のように手動でも作成できます。 ``` https://account.box.com/api/oauth2/authorize?client_id=[CLIENT_ID]&redirect_uri=[REDIRECT_URI]&response_type=code ``` スコープを制限したり追加の状態を渡したりするためにユーザーをリダイレクトするときに、追加のクエリパラメータを渡すことができます。詳細については、[リファレンスドキュメント](endpoint://get-authorize)を参照してください。 Boxインスタンスの[Box Verified Enterprise](https://support.box.com/hc/ja/articles/360043693554-Box-Verified-Enterprise%E3%81%A8%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E5%AF%BE%E8%B1%A1%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA)が有効になっている場合、標準的な`account.box.com`というベースURLを使用する際に問題が発生することがあります。`account.box.com`の代わりに`ent.box.com`を使用してください。 ## 3. ユーザーがアプリケーションにアクセス権限を付与する ユーザーはBoxウェブアプリにリダイレクトされると、ログインする必要があります。ログイン後、ユーザーにはアプリケーションを承認するための画面が表示されます。 ユーザーがこのリクエストを承認し、ボタンをクリックすると、ブラウザは、開発者コンソールで構成されたとおりにアプリケーションのリダイレクトURLにリダイレクトされます。 ## 4. コードを交換する ユーザーは、有効期間の短い承認コードを含むクエリパラメータが指定されたアプリケーションのリダイレクトURLにリダイレクトされます。 ``` https://your.domain.com/path?code=1234567 ``` このコードは[アクセストークン](g://authentication/tokens/access-tokens)ではなく、有効期間はほんの数秒です。SDKを使用すると、このコードを実際のアクセストークンと交換できます。 ``` var session = await sdk.Auth.AuthenticateAsync("[CODE]"); var client = new BoxClient(config, session); ``` ``` BoxAPIConnection client = new BoxAPIConnection( "[CLIENT_ID]", "[CLIENT_SECRET]", "[CODE]" ); ``` ``` auth.authenticate('[CODE]') client = Client(auth) ``` ``` var code = "..."; sdk.getTokensAuthorizationCodeGrant("[CODE]", null, function (err, tokenInfo) { var client = sdk.getPersistentClient(tokenInfo); }); ``` このフローが終了すると、アプリケーションには、このユーザーの代わりにAPIコールを実行するために使用できるアクセストークンが用意されます。 ## SDKとOAuth 2.0の使用 各SDKのOAuth 2.0認証の詳細については、以下を参照してください。 [.Net](https://github.com/box/box-windows-sdk-v2/blob/main/docs/authentication.md#traditional-3-legged-oauth2) [Java](https://github.com/box/box-java-sdk/blob/main/doc/authentication.md#standard-3-legged-oauth-20) [Python](https://github.com/box/box-python-sdk/blob/main/docs/usage/authentication.md#traditional-3-legged-oauth2) [Node](https://github.com/box/box-node-sdk/blob/main/docs/authentication.md#traditional-3-legged-oauth2) [IOS](https://github.com/box/box-ios-sdk/blob/main/docs/usage/authentication.md#traditional-3-legged-oauth2) **Source:** [https://ja.developer.box.com/guides/authentication/oauth2/with-sdk/](https://ja.developer.box.com/guides/authentication/oauth2/with-sdk/) --- ### SDKを使用したアプリトークン **Type:** guide | **Category:** 認証 | **Section:** Developer Guides SDKを使用したアプリトークン Box公式SDKには、アプリトークン認証のサポートが組み込まれています。 アプリトークン認証は、Box APIを直接操作するよう設計されており、ユーザーがアプリケーションを承認するためにBox… # SDKを使用したアプリトークン Box公式SDKには、アプリトークン認証のサポートが組み込まれています。 アプリトークン認証は、Box APIを直接操作するよう設計されており、ユーザーがアプリケーションを承認するためにBoxを介してリダイレクトする必要はありません。ただし、この認証はアプリケーションのデータのみに制限されています。 JWTを使用した認証方法は、もともとアプリケーションのサービスアカウントに関連付けられています。このトークンを使用して実行されるAPIコールはどれも、このアプリケーションから実行されているように見えますが、明示的なアクセス権がなければ他のユーザーのファイルやフォルダにはアクセスできません。 ## 前提条件 開始する前に、以下の手順を完了しておく必要があります。 - 開発者コンソール内でBoxアプリケーションを作成する - アプリケーションがアプリトークン認証を使用するよう構成されていることを確認する - アプリケーションのプライマリアプリトークンとセカンダリアプリトークンを生成し、コード内のどこかにこれらのトークンを保存する ## SDKクライアントの初期化 アプリトークン認証のためにSDKクライアントを初期化するには、SDKがインストールされていることを確認してから、以下のようにSDKを構成します。 ``` var config = new BoxConfig("[CLIENT_ID]", "", new Uri("http://localhost")); var session = new OAuthSession("[APP_TOKEN]", "N/A", 3600, "bearer"); var client = new BoxClient(config, session); ``` ``` BoxTransactionalAPIConnection api = new BoxTransactionalAPIConnection("[APP_TOKEN]"); ``` ``` from boxsdk import Client, OAuth2 auth = OAuth2(access_token='[APP_TOKEN]') client = Client(auth) ``` ``` var BoxSDK = require('box-node-sdk'); var sdk = new BoxSDK({ clientID: '[CLIENT_ID]', clientSecret: '' }); var client = sdk.getBasicClient('[APP_TOKEN]'); ``` これを使用すると、アプリケーションは、アプリトークン認証に対して有効になっている[エンドポイント](g://authentication/app-token/endpoints)のいずれかにAPIコールを実行できます。 ## SDKとアプリケーショントークンの使用 各SDKのアプリケーショントークンの詳細については、以下を参照してください。 [.Net](https://github.com/box/box-windows-sdk-v2/blob/main/docs/authentication.md#box-view-authentication-with-app-tokens) [Java](https://github.com/box/box-java-sdk/blob/main/doc/authentication.md#box-view-authentication-with-app-token) [Python](https://github.com/box/box-python-sdk/blob/main/docs/usage/authentication.md#box-view-authentication-with-app-tokens) [Node](https://github.com/box/box-node-sdk/blob/main/docs/authentication.md#box-view-authentication-with-app-tokens) **Source:** [https://ja.developer.box.com/guides/authentication/app-token/with-sdk/](https://ja.developer.box.com/guides/authentication/app-token/with-sdk/) --- ### SDKを使用したフォルダ内のすべてのファイルのダウンロード **Type:** guide | **Category:** ダウンロード | **Section:** Developer Guides SDKを使用したフォルダ内のすべてのファイルのダウンロード アプリケーションによっては、1つのフォルダのすべてのファイルをダウンロードできる場合もあります。SDKとCLI… # SDKを使用したフォルダ内のすべてのファイルのダウンロード アプリケーションによっては、1つのフォルダのすべてのファイルをダウンロードできる場合もあります。SDKとCLIを使用してこの処理を実行するには、フォルダツリー内を移動してすべてのファイルを探し、そのファイルをダウンロードする必要があります。 ZIPアーカイブをダウンロードするには、[こちら](g://downloads/zip-archive)のガイドに従ってください。 ``` using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Box.V2.Config; using Box.V2.JWTAuth; namespace BoxDownloadAllFiles { class Program { static void Main (string[] args) { ExecuteMainAsync ().Wait (); } private static async Task ExecuteMainAsync () { using (FileStream fs = new FileStream ($"./config.json", FileMode.Open)) { var session = new BoxJWTAuth (BoxConfig.CreateFromJsonFile (fs)); var client = session.AdminClient (session.AdminToken ()); var folderId = "987654321"; var folder = await client.FoldersManager.GetInformationAsync (folderId); var folderName = folder.Name; var localFolderPath = Path.Combine (Directory.GetCurrentDirectory (), folderName); ResetLocalFolder (localFolderPath); var items = await client.FoldersManager.GetFolderItemsAsync (folderId, 1000, autoPaginate : true); var fileDownloadTasks = new List<Task> (); var files = items.Entries.Where (i => i.Type == "file"); foreach (var file in files) { fileDownloadTasks.Add (client.FilesManager.DownloadStreamAsync (file.Id).ContinueWith ((t) => { var localFile = File.Create (Path.Combine (localFolderPath, file.Name)); return t.Result.CopyToAsync (localFile); })); } await Task.WhenAll (fileDownloadTasks); } } private static void ResetLocalFolder (string localFolderPath) { if (!Directory.Exists (localFolderPath)) { Directory.CreateDirectory (localFolderPath); } else { foreach (var file in Directory.EnumerateFiles (localFolderPath)) { File.Delete (Path.Combine (localFolderPath, file)); } Directory.Delete (localFolderPath); Directory.CreateDirectory (localFolderPath); } } } } ``` ``` package com.box; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxFile; import com.box.sdk.BoxFolder; import com.box.sdk.BoxItem; import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; public class Playground { public static void main(String[] args) throws Exception { Path configPath = Paths.get("config.json"); Path currentDir = Paths.get("").toAbsolutePath(); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection client = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig); String folderId = "987654321"; BoxFolder folder = new BoxFolder(client, folderId); String folderName = folder.getInfo().getName(); Path localFolderPath = currentDir.resolve(Paths.get(folderName)); if (!Files.exists(localFolderPath)) { localFolderPath = Files.createDirectory(localFolderPath); } else { localFolderPath = resetLocalFolder(localFolderPath); } for (BoxItem.Info itemInfo: folder) { if (itemInfo instanceof BoxFile.Info) { BoxFile.Info fileInfo = (BoxFile.Info) itemInfo; BoxFile file = new BoxFile(client, fileInfo.getID()); String localFilePath = localFolderPath.resolve(Paths.get(fileInfo.getName())).toAbsolutePath().toString(); FileOutputStream stream = new FileOutputStream(localFilePath); file.download(stream); stream.close(); } } } } static Path resetLocalFolder(Path localFolderPath) throws IOException { Files.list(localFolderPath).forEach(file -> { System.out.println(file.getFileName()); try { Files.delete(file.toAbsolutePath()); } catch (IOException e) {} }); Files.delete(localFolderPath); localFolderPath = Files.createDirectory(localFolderPath); return localFolderPath; } } ``` ``` "use strict"; const box = require("box-node-sdk"); const fs = require("fs"); const util = require("util"); const path = require("path"); let configFile = fs.readFileSync("config.json"); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let client = session.getAppAuthClient("enterprise"); client._useIterators = true; let folderId = "987654321"; let folderName; let localFolderPath; client.folders .get(folderId, null) .then(folderInfo => { folderName = folderInfo.name; return client.folders.getItems(folderId, { limit: 1000 }); }) .then(folderItemsIterator => { return autoPage(folderItemsIterator); }) .then(folderItems => { console.log(folderName); console.log(folderItems.length); let files = folderItems.filter(item => { return item.type === "file"; }); console.log(files); localFolderPath = createLocalFolder(folderName); let downloadPromises = []; files.forEach(file => { downloadPromises.push( client.files.getReadStream(file.id, null).then(stream => { let output = fs.createWriteStream( path.join(localFolderPath, file.name) ); stream.pipe(output); }) ); }); return Promise.all(downloadPromises); }) .then(() => { console.log("Downloaded all files..."); console.log(fs.readdirSync(localFolderPath)); }); function createLocalFolder(folderName) { let localFolderName = path.join(__dirname, folderName); try { fs.mkdirSync(localFolderName); } catch (e) { if (e.code === "EEXIST") { resetLocalFolder(localFolderName); fs.mkdirSync(localFolderName); } else { throw e; } } return localFolderName; } function resetLocalFolder(localFolderName) { if (fs.existsSync(localFolderName)) { fs.readdirSync(localFolderName).forEach(localFileName => { console.log(localFileName); fs.unlinkSync(path.join(localFolderName, localFileName)); }); fs.rmdirSync(localFolderName); } } function autoPage(iterator) { let collection = []; let moveToNextItem = () => { return iterator.next().then(item => { if (item.value) { collection.push(item.value); } if (item.done !== true) { return moveToNextItem(); } else { return collection; } }); }; return moveToNextItem(); } ``` アプリケーションには、当該ファイルおよびフォルダにアクセスしてダウンロードするための権限が必要であることに注意してください。認証済みユーザーがいずれのファイルおよびフォルダにもアクセスできない場合は、`HTTP 404 Not Found`エラーが発生します。 認証に関するガイドにある[ユーザータイプ](page://platform/user-types)の詳細をご覧ください。 **Source:** [https://ja.developer.box.com/guides/downloads/folder/](https://ja.developer.box.com/guides/downloads/folder/) --- ### SDKを使用しないJWT **Type:** guide | **Category:** 認証 | **Section:** Developer Guides SDKを使用しないJWT このガイドでは、Box SDKを使用しないJWT認証について説明します。JWTはエンドユーザーによる操作を必要とせず、Box APIで直接認証するよう設計されています。 このトークンの使用方法を確認するには、API… # SDKを使用しないJWT このガイドでは、Box SDKを使用しないJWT認証について説明します。JWTはエンドユーザーによる操作を必要とせず、Box APIで直接認証するよう設計されています。 このトークンの使用方法を確認するには、[APIコールの実行](g://api-calls)に関するガイドを参照してください。 デフォルトでは、JWTを使用して取得したアクセストークンは、アプリケーションのサービスアカウントに関連付けられています。このトークンを使用して実行されるAPIコールはすべて、このアプリケーションから実行されます。アプリケーションのサービスアカウントがコラボレータとして追加されるまで、このアカウントでは、既存のファイルやフォルダにアクセスできません。 `as-user`ヘッダーを使用するか[ユーザーアクセストークン](g://authentication/jwt/user-access-tokens)をリクエストして、[別のユーザーとして処理を実行](g://authentication/oauth2/as-user)できます。 ## キーペアの使用 公開キーと秘密キーのペアを使用してアプリケーションのIDを確認する場合は、以下の手順に従います。 ### 前提条件 - [開発者コンソール](https://app.box.com/developers/console)でJWT認証を使用するPlatformアプリケーション - `config.json`という名前の秘密キー構成ファイル ([開発者コンソール](https://app.box.com/developers/console)の [構成] タブからダウンロード可能) - Box管理コンソールでアプリケーションが[承認](g://authorization)されていること ### 1. JSON構成を読み取る `config.json`ファイルには、アプリケーションの秘密キーと、認証に必要なその他の詳細が含まれています。このファイルの例を以下に示します。 ``` { "boxAppSettings": { "clientID": "abc...123", "clientSecret": "def...234", "appAuth": { "publicKeyID": "abcd1234", "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY-----\n....\n-----END ENCRYPTED PRIVATE KEY-----\n", "passphrase": "ghi...345" } }, "enterpriseID": "1234567" } ``` このオブジェクトをアプリケーションで使用するには、ファイルから読み取る必要があります。 ``` using System; using System.IO; using Newtonsoft.Json; class Config { public class BoxAppSettings { public class AppAuth { public string privateKey { get; set; } public string passphrase { get; set; } public string publicKeyID { get; set; } } public string clientID { get; set; } public string clientSecret { get; set; } public AppAuth appAuth { get; set; } } public string enterpriseID { get; set; } public BoxAppSettings boxAppSettings { get; set; } } var reader = new StreamReader("config.json"); var json = reader.ReadToEnd(); var config = JsonConvert.DeserializeObject<Config>(json); ``` ``` import java.io.FileReader; import com.google.gson.Gson; import com.google.gson.GsonBuilder; class Config { class BoxAppSettings { class AppAuth { String privateKey; String passphrase; String publicKeyID; } String clientID; String clientSecret; AppAuth appAuth; } BoxAppSettings boxAppSettings; String enterpriseID; } FileReader reader = new FileReader("config.json"); Gson gson = new GsonBuilder().create(); Config config = (Config) gson.fromJson(reader, Config.class); ``` ``` import json import os config = json.load(open('config.json')) ``` ``` const fs = require("fs"); const config = JSON.parse(fs.readFileSync("config.json")); ``` ``` require 'json' config = JSON.parse( File.read('config.json') ) ``` ``` $json = file_get_contents('config.json'); $config = json_decode($json); ``` # JSONの解析 プログラミング言語によっては、ファイルからJSONを読み取って解析する方法が複数ある場合があります。エラー処理など、さらに詳細な説明については、使用するプログラミング言語のガイドを参照してください。 ### 2. 秘密キーを復号化する JWTアサーションを作成するために、アプリケーションでは構成オブジェクトにある秘密キーが必要になります。この秘密キーは暗号化されており、ロックを解除するにはパスコードが必要です。暗号化されたキーとパスコードは両方とも、構成オブジェクトで指定されています。 ``` using System.Security.Cryptography; using Org.BouncyCastle.OpenSsl; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Math; // https://www.bouncycastle.org/csharp/index.html class PasswordFinder : IPasswordFinder { private string password; public PasswordFinder(string _password) { password = _password; } public char[] GetPassword() { return password.ToCharArray(); } } var appAuth = config.boxAppSettings.appAuth; var stringReader = new StringReader(appAuth.privateKey); var passwordFinder = new PasswordFinder(appAuth.passphrase); var pemReader = new PemReader(stringReader, passwordFinder); var keyParams = (RsaPrivateCrtKeyParameters) pemReader.ReadObject(); public RSA CreateRSAProvider(RSAParameters rp) { var rsaCsp = RSA.Create(); rsaCsp.ImportParameters(rp); return rsaCsp; } public RSAParameters ToRSAParameters(RsaPrivateCrtKeyParameters privKey) { RSAParameters rp = new RSAParameters(); rp.Modulus = privKey.Modulus.ToByteArrayUnsigned(); rp.Exponent = privKey.PublicExponent.ToByteArrayUnsigned(); rp.P = privKey.P.ToByteArrayUnsigned(); rp.Q = privKey.Q.ToByteArrayUnsigned(); rp.D = ConvertRSAParametersField(privKey.Exponent, rp.Modulus.Length); rp.DP = ConvertRSAParametersField(privKey.DP, rp.P.Length); rp.DQ = ConvertRSAParametersField(privKey.DQ, rp.Q.Length); rp.InverseQ = ConvertRSAParametersField(privKey.QInv, rp.Q.Length); return rp; } public byte[] ConvertRSAParametersField(BigInteger n, int size) { byte[] bs = n.ToByteArrayUnsigned(); if (bs.Length == size) return bs; if (bs.Length > size) throw new ArgumentException("Specified size too small", "size"); byte[] padded = new byte[size]; Array.Copy(bs, 0, padded, size - bs.Length, bs.Length); return padded; } var key = CreateRSAProvider(ToRSAParameters(keyParams)); ``` ``` import java.io.StringReader; import java.security.PrivateKey; import java.security.Security; import org.bouncycastle.asn1.pkcs.PrivateKeyInfo; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.openssl.PEMParser; import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter; import org.bouncycastle.openssl.jcajce.JceOpenSSLPKCS8DecryptorProviderBuilder; import org.bouncycastle.operator.InputDecryptorProvider; import org.bouncycastle.pkcs.PKCS8EncryptedPrivateKeyInfo; // https://www.bouncycastle.org/java.html Security.addProvider(new BouncyCastleProvider()); PEMParser pemParser = new PEMParser( new StringReader(config.boxAppSettings.appAuth.privateKey) ); Object keyPair = pemParser.readObject(); pemParser.close(); char[] passphrase = config.boxAppSettings.appAuth.passphrase.toCharArray(); JceOpenSSLPKCS8DecryptorProviderBuilder decryptBuilder = new JceOpenSSLPKCS8DecryptorProviderBuilder().setProvider("BC"); InputDecryptorProvider decryptProvider = decryptBuilder.build(passphrase); PrivateKeyInfo keyInfo = ((PKCS8EncryptedPrivateKeyInfo) keyPair).decryptPrivateKeyInfo(decryptProvider); PrivateKey key = (new JcaPEMKeyConverter()).getPrivateKey(keyInfo); ``` ``` from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.serialization import load_pem_private_key appAuth = config["boxAppSettings"]["appAuth"] privateKey = appAuth["privateKey"] passphrase = appAuth["passphrase"] # https://cryptography.io/en/latest/ key = load_pem_private_key( data=privateKey.encode('utf8'), password=passphrase.encode('utf8'), backend=default_backend(), ) ``` ``` let key = { key: config.boxAppSettings.appAuth.privateKey, passphrase: config.boxAppSettings.appAuth.passphrase, }; ``` ``` require "openssl" appAuth = config['boxAppSettings']['appAuth'] key = OpenSSL::PKey::RSA.new( appAuth['privateKey'], appAuth['passphrase'] ) ``` ``` $private_key = $config->boxAppSettings->appAuth->privateKey; $passphrase = $config->boxAppSettings->appAuth->passphrase; $key = openssl_pkey_get_private($private_key, $passphrase); ``` # ファイルから秘密キーを読み込むための代替方法 アプリケーションでは、秘密キーとパスワードの両方をディスクに保存しておきたくない場合があります。代替方法として、パスワードを環境変数として渡し、秘密キーを、秘密キーのロックを解除するためのトークンと分けておくこともできます。 ### 3. JWTアサーションを作成する Box APIで認証するために、アプリケーションは、アクセストークンと交換できる署名済みのJWTアサーションを作成する必要があります。 JWTアサーションは、暗号化されたJSONオブジェクトで、`header`、`claims`、および`signature`で構成されます。最初に`claims`を作成します。これは、`payload`とも呼ばれる場合もあります。 ``` using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Collections.Generic; byte[] randomNumber = new byte[64]; RandomNumberGenerator.Create().GetBytes(randomNumber); var jti = Convert.ToBase64String(randomNumber); DateTime expirationTime = DateTime.UtcNow.AddSeconds(45); var claims = new List<Claim>{ new Claim("sub", config.enterpriseID), new Claim("box_sub_type", "enterprise"), new Claim("jti", jti), }; ``` ``` import org.jose4j.jwt.JwtClaims; String authenticationUrl = "https://api.box.com/oauth2/token"; JwtClaims claims = new JwtClaims(); claims.setIssuer(config.boxAppSettings.clientID); claims.setAudience(authenticationUrl); claims.setSubject(config.enterpriseID); claims.setClaim("box_sub_type", "enterprise"); claims.setGeneratedJwtId(64); claims.setExpirationTimeMinutesInTheFuture(0.75f); ``` ``` import time import secrets authentication_url = 'https://api.box.com/oauth2/token' claims = { 'iss': config['boxAppSettings']['clientID'], 'sub': config['enterpriseID'], 'box_sub_type': 'enterprise', 'aud': authentication_url, 'jti': secrets.token_hex(64), 'exp': round(time.time()) + 45 } ``` ``` const crypto = require("crypto"); const authenticationUrl = "https://api.box.com/oauth2/token"; let claims = { iss: config.boxAppSettings.clientID, sub: config.enterpriseID, box_sub_type: "enterprise", aud: authenticationUrl, jti: crypto.randomBytes(64).toString("hex"), exp: Math.floor(Date.now() / 1000) + 45, }; ``` ``` require 'securerandom' authentication_url = 'https://api.box.com/oauth2/token' claims = { iss: config['boxAppSettings']['clientID'], sub: config['enterpriseID'], box_sub_type: 'enterprise', aud: authentication_url, jti: SecureRandom.hex(64), exp: Time.now.to_i + 45 } ``` ``` $authenticationUrl = 'https://api.box.com/oauth2/token'; $claims = [ 'iss' => $config->boxAppSettings->clientID, 'sub' => $config->enterpriseID, 'box_sub_type' => 'enterprise', 'aud' => $authenticationUrl, 'jti' => base64_encode(random_bytes(64)), 'exp' => time() + 45, 'kid' => $config->boxAppSettings->appAuth->publicKeyID ]; ``` | パラメータ | 型 | 説明 | | --- | --- | --- | | iss (必須) | String | BoxアプリケーションのOAuthクライアントID | | sub (必須) | String | Box Enterprise ID (このアプリがそのアプリケーションのサービスアカウントの代わりになる場合) またはユーザーID (このアプリが別のユーザーの代わりになる場合)。 | | box_sub_type (必須) | String | enterpriseまたはuser (subクレームでリクエストされているトークンの種類に応じて決定) | | aud (必須) | String | 常にhttps://api.box.com/oauth2/token | | jti (必須) | String | このJWTに対してアプリケーションで指定されたUUID (Universally Unique Identifier)。16文字以上128文字以下の一意の文字列です。 | | exp (必須) | Integer | このJWTが期限切れとなるUnix時間。設定できる最大値は、発行時刻から60秒後です。許容される最大値よりも小さい値を設定することをお勧めします。 | | iat (省略可) | Integer | 発行時刻。トークンは、この時刻より前に使用することはできません。 | | nbf (省略可) | Integer | 開始時刻。トークンの有効期間の開始時刻を指定します。 | 次に、秘密キーを使用してこれらのクレームに署名する必要があります。使用する言語とライブラリに応じて、クレームの署名に使用する暗号化アルゴリズムと公開キーのIDを定義することで、JWTの`header`が構成されます。 ``` using Microsoft.IdentityModel.Tokens; String authenticationUrl = "https://api.box.com/oauth2/token"; var payload = new JwtPayload( config.boxAppSettings.clientID, authenticationUrl, claims, null, expirationTime ); var credentials = new SigningCredentials( new RsaSecurityKey(key), SecurityAlgorithms.RsaSha512 ); var header = new JwtHeader(signingCredentials: credentials); var jst = new JwtSecurityToken(header, payload); var tokenHandler = new JwtSecurityTokenHandler(); string assertion = tokenHandler.WriteToken(jst); ``` ``` import org.jose4j.jws.AlgorithmIdentifiers; import org.jose4j.jws.JsonWebSignature; JsonWebSignature jws = new JsonWebSignature(); jws.setPayload(claims.toJson()); jws.setKey(key); jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA512); jws.setHeader("typ", "JWT"); jws.setHeader("kid", config.boxAppSettings.appAuth.publicKeyID); String assertion = jws.getCompactSerialization(); ``` ``` import jwt keyId = config['boxAppSettings']['appAuth']['publicKeyID'] assertion = jwt.encode( claims, key, algorithm='RS512', headers={ 'kid': keyId } ) ``` ``` const jwt = require("jsonwebtoken"); let keyId = config.boxAppSettings.appAuth.publicKeyID; let headers = { algorithm: "RS512", keyid: keyId, }; let assertion = jwt.sign(claims, key, headers); ``` ``` require 'jwt' keyId = appAuth['publicKeyID'] assertion = JWT.encode(claims, key, 'RS512', { kid: keyId }) ``` ``` use \Firebase\JWT\JWT; $assertion = JWT::encode($claims, $key, 'RS512'); ``` ヘッダーでは、以下のパラメータがサポートされます。 | パラメータ | 型 | 説明 | | --- | --- | --- | | algorithm (必須) | String | JWTクレームへの署名に使用する暗号化アルゴリズム。RS256、RS384、RS512のいずれかを指定できます。 | | keyid (必須) | String | JWTへの署名に使用する公開キーのID。必須ではありませんが、アプリケーションに対して複数のキーペアが定義される場合は必須です。 | JWTライブラリの使用 独自のJWTへの署名は、複雑で手間のかかる処理になる可能性があります。そのようなことがないよう、事前にこの処理を済ませたライブラリがほぼすべての言語で用意されています。概要については、[JWT.io](https://jwt.io/)をご覧ください。 ### 4. アクセストークンをリクエストする 最後の手順として、有効期間の短いJWTアサーションを、より有効期間の長いアクセストークンと交換します。これには、アサーションをパラメータに指定してトークンエンドポイントを呼び出します。 ``` using System.Net; using System.Net.Http; var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>( "grant_type", "urn:ietf:params:oauth:grant-type:jwt-bearer"), new KeyValuePair<string, string>( "assertion", assertion), new KeyValuePair<string, string>( "client_id", config.boxAppSettings.clientID), new KeyValuePair<string, string>( "client_secret", config.boxAppSettings.clientSecret) }); var client = new HttpClient(); var response = client.PostAsync(authenticationUrl, content).Result; class Token { public string access_token { get; set; } } var data = response.Content.ReadAsStringAsync().Result; var token = JsonConvert.DeserializeObject<Token>(data); var accessToken = token.access_token; ``` ``` import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair( "grant_type", "urn:ietf:params:oauth:grant-type:jwt-bearer")); params.add(new BasicNameValuePair( "assertion", assertion)); params.add(new BasicNameValuePair( "client_id", config.boxAppSettings.clientID)); params.add(new BasicNameValuePair( "client_secret", config.boxAppSettings.clientSecret)); CloseableHttpClient httpClient = HttpClientBuilder.create().disableCookieManagement().build(); HttpPost request = new HttpPost(authenticationUrl); request.setEntity(new UrlEncodedFormEntity(params)); CloseableHttpResponse httpResponse = httpClient.execute(request); HttpEntity entity = httpResponse.getEntity(); String response = EntityUtils.toString(entity); httpClient.close(); class Token { String access_token; } Token token = (Token) gson.fromJson(response, Token.class); String accessToken = token.access_token; ``` ``` import json import requests params = { 'grant_type': 'urn:ietf:params:oauth:grant-type:jwt-bearer', 'assertion': assertion, 'client_id': config['boxAppSettings']['clientID'], 'client_secret': config['boxAppSettings']['clientSecret'] } response = requests.post(authentication_url, params) access_token = response.json()['access_token'] ``` ``` const axios = require("axios"); const querystring = require("querystring"); let accessToken = await axios .post( authenticationUrl, querystring.stringify({ grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer", assertion: assertion, client_id: config.boxAppSettings.clientID, client_secret: config.boxAppSettings.clientSecret, }) ) .then((response) => response.data.access_token); ``` ``` require 'json' require 'uri' require 'net/https' params = URI.encode_www_form({ grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer', assertion: assertion, client_id: config['boxAppSettings']['clientID'], client_secret: config['boxAppSettings']['clientSecret'] }) uri = URI.parse(authentication_url) http = Net::HTTP.start(uri.host, uri.port, use_ssl: true) request = Net::HTTP::Post.new(uri.request_uri) request.body = params response = http.request(request) access_token = JSON.parse(response.body)['access_token'] ``` ``` use GuzzleHttp\Client; $params = [ 'grant_type' => 'urn:ietf:params:oauth:grant-type:jwt-bearer', 'assertion' => $assertion, 'client_id' => $config->boxAppSettings->clientID, 'client_secret' => $config->boxAppSettings->clientSecret ]; $client = new Client(); $response = $client->request('POST', $authenticationUrl, [ 'form_params' => $params ]); $data = $response->getBody()->getContents(); $access_token = json_decode($data)->access_token; ``` ## コードサンプル このガイドに記載されているコードは、[GitHub](https://github.com/box-community/samples-docs-authenticate-with-jwt-api)で入手できます。 **Source:** [https://ja.developer.box.com/guides/authentication/jwt/without-sdk/](https://ja.developer.box.com/guides/authentication/jwt/without-sdk/) --- ### SDKを使用しないOAuth 2.0 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides SDKを使用しないOAuth 2.0 概要 Box公式SDKを利用すると、一般的な認証のハードルはなくなりますが、Box APIは、Box公式SDKがなくても使用できます。このガイドでは、OAuth 2.0のフローを手動で完成させるための手順を説明します。 承認URL… # SDKを使用しないOAuth 2.0 ## 概要 Box公式SDKを利用すると、一般的な認証のハードルはなくなりますが、Box APIは、Box公式SDKがなくても使用できます。このガイドでは、OAuth 2.0のフローを手動で完成させるための手順を説明します。 1. 承認URLを作成する 2. ユーザーを承認URLにリダイレクトする 3. ユーザーが自分の代わりにアクションを実行するためのアクセス権限をアプリケーションに付与する (成功した場合は承認コードが提供される) 4. ユーザーを再度アプリケーションにリダイレクトする 5. 承認コードをアクセストークンと交換する このフローが終了すると、アプリケーションには[アクセストークン](g://authentication/tokens/access-tokens)が付与されます。これを使用すると、ユーザーの代わりにAPIコールを実行できます。 OAuth 2.0フローを介して取得したアクセストークンは、もともとアプリケーションを承認したユーザーに関連付けられています。 `as-user`ヘッダーを使用して、[別のユーザーとして処理を実行](g://authentication/oauth2/as-user)できます。 ## 前提条件 続行する前に、以下の手順を完了しておく必要があります。 - Box開発者コンソールで、OAuth 2.0認証方法を利用するPlatformアプリを作成する。 - アプリケーションの [構成] タブに移動して、`client_id`と`client_secret`の値をコピーする。 - アプリケーションの [構成] タブで、少なくとも1つのリダイレクトURIが構成されていることを確認する。 ## 1. 承認URLを作成する [承認URL](e://get-authorize)は、以下のパラメータで構成されています。 | パラメータ | ステータス | 説明 | | --- | --- | --- | | CLIENT_ID | 必須 | 開発者コンソールの [構成] タブから取得します。 | | REDIRECT_URI | 省略可 | 開発者コンソールで構成します。アプリケーションにアクセスを許可すると、ユーザーがリダイレクトされます。 | | RESPONSE_TYPE | 必須 | 常にcodeに設定します。 | | STATE | 推奨 | クロスサイトリクエスト偽造から保護します。 | アプリケーション用にリダイレクトURIを複数設定した場合、承認URLには、開発者コンソールで設定したURIのいずれかと一致する`redirect_uri`パラメータを含める必要があります。このパラメータが指定されていない場合、ユーザーには`redirect_uri_missing`エラーが表示され、アプリにリダイレクトされません。 少なくとも、このURLは常に次の形式を使用します。 `https://account.box.com/api/oauth2/authorize`?`client_id=CLIENTIDHERE`&`response_type=code` ``` var baseUrl = "https://account.box.com/api/oauth2/authorize"; var clientId = "[CLIENT_ID]"; var authorizationUrl = $"{baseUrl}?client_id={clientId}&response_type=code"; ``` ``` String baseUrl = "https://account.box.com/api/oauth2/authorize"; String clientId = "[CLIENT_ID]"; String authorizationUrl = String.format("%s?client_id=%s&response_type=code", baseUrl, clientId); ``` ``` base_url = 'https://account.box.com/api/oauth2/authorize' client_id = '[CLIENT_ID]' authorizationUrl = f'{base_url}?client_id=${client_id}&response_type=code' ``` ``` var baseUrl = "https://account.box.com/api/oauth2/authorize"; var clientId = "[CLIENT_ID]"; var authorizationUrl = `${baseUrl}?client_id=${clientId}&response_type=code`; ``` 承認URLの詳細を確認する Boxインスタンスの[Box Verified Enterprise](https://support.box.com/hc/ja/articles/360043693554-Box-Verified-Enterprise%E3%81%A8%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E5%AF%BE%E8%B1%A1%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA)が有効になっている場合、標準的な`account.box.com`というベースURLを使用する際に問題が発生することがあります。`account.box.com`の代わりに`ent.box.com`を使用してください。 ## 2. ユーザーをリダイレクトする 次に、ユーザーを承認URLにリダイレクトします。その方法は、アプリケーションフレームワークによって異なります。このトピックの詳細については、ほとんどのフレームワークのドキュメントで説明されています。 指定されたアプリに対して承認URLが無効な場合、ユーザーには、アクセスの許可画面ではなくエラーページが表示されます。たとえば、承認URLに含まれる`redirect_uri`パラメータが、アプリ用に構成されたURIのいずれとも一致しない場合、ユーザーには`redirect_uri_mismatch`エラーが表示されます。 ``` var authorizationUrl = $"{baseUrl}?client_id={clientId}&response_type=code"; // redirectTo(authorizationUrl); ``` ``` String authorizationUrl = String.format("%s?client_id=%s&response_type=code", baseUrl, clientId); // response.redirect(authorizationUrl); ``` ``` auth_url = f'{base_url}?client_id=${client_id}&response_type=code' // redirect(auth_url, code=302) ``` ``` var authorizationUrl = `${baseUrl}?client_id=${clientId}&response_type=code`; // res.redirect(authorize_url) ``` スコープを制限したり追加の状態を渡したりするために、ユーザーをリダイレクトする際に追加のクエリパラメータを渡すことができます。詳細については、承認のリファレンスドキュメントを参照してください。 ## 3. ユーザーがアプリケーションにアクセス権限を付与する ユーザーは、Box UIを使用して自分のアカウントにログインするために、ブラウザにリダイレクトされます。その後、リクエストされているスコープのリストと、ユーザーに代わって処理を行うアプリケーションを承認するためのオプションが表示されます。 ユーザーが [**Boxへのアクセスを許可**] をクリックしてこのリクエストを承認すると、ブラウザは、クエリパラメータに有効期間の短い承認コードが指定されている構成済みのリダイレクトURLにリダイレクトされます。 アプリケーション用にリダイレクトURIを複数設定した場合、承認URLには、開発者コンソールで設定したURIのいずれかと一致する`redirect_uri`パラメータを含める必要があります。このパラメータが指定されていない場合、ユーザーには`redirect_uri_missing`エラーが表示され、アプリにリダイレクトされません。 ``` https://your.domain.com/path?code=1234567 ``` ## 4. コードを交換する 提供される承認コードは、[有効期間が30秒](g://api-calls/permissions-and-errors/expiration)のため、有効期限が切れる前に[アクセストークン](e://post-oauth2-token)に交換する必要があります。 ``` using System.Net; using System.Net.Http; using Newtonsoft.Json; String authenticationUrl = "https://api.box.com/oauth2/token"; var client = new HttpClient(); var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("grant_type", "authorization_code"), new KeyValuePair<string, string>("code", "[CODE]"), new KeyValuePair<string, string>("client_id", "[CLIENT_ID]"), new KeyValuePair<string, string>("client_secret", "[CLIENT_SECRET]") }); var response = client.PostAsync(authenticationUrl, content).Result; class Token { public string access_token { get; set; } } var data = response.Content.ReadAsStringAsync().Result; var token = JsonConvert.DeserializeObject<Token>(data); var accessToken = token.access_token; ``` ``` String authenticationUrl = "https://api.box.com/oauth2/token"; List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("grant_type", "authorization_code")); params.add(new BasicNameValuePair("code", "[CODE]")); params.add(new BasicNameValuePair("client_id", "[CLIENT_ID]")); params.add(new BasicNameValuePair("client_secret", "[CLIENT_SECRET]")); CloseableHttpClient httpClient = HttpClientBuilder.create().disableCookieManagement().build(); HttpPost request = new HttpPost(authenticationUrl); request.setEntity(new UrlEncodedFormEntity(params)); CloseableHttpResponse httpResponse = httpClient.execute(request); HttpEntity entity = httpResponse.getEntity(); String response = EntityUtils.toString(entity); httpClient.close(); class Token { String access_token; } Token token = (Token) gson.fromJson(response, Token.class); String accessToken = token.access_token; ``` ``` authentication_url = "https://api.box.com/oauth2/token"; params = urlencode({ 'grant_type': 'authorization_code', 'code': '[CODE]', 'client_id': '[CLIENT_ID]', 'client_secret': '[CLIENT_SECRET]' }).encode() request = Request(authentication_url, params) response = urlopen(request).read() access_token = json.loads(response)['access_token'] ``` ``` const authenticationUrl = "https://api.box.com/oauth2/token"; let accessToken = await axios .post( authenticationUrl, querystring.stringify({ grant_type: "authorization_code", code: "[CODE]", client_id: "[CLIENT_ID]", client_secret: "[CLIENT_SECRET]", }) ) .then((response) => response.data.access_token); ``` アクセストークンの使用方法を確認するには、[APIコールの実行](g://api-calls)に関するガイドを参照してください。 **Source:** [https://ja.developer.box.com/guides/authentication/oauth2/without-sdk/](https://ja.developer.box.com/guides/authentication/oauth2/without-sdk/) --- ### SDKを使用しないアプリトークン **Type:** guide | **Category:** 認証 | **Section:** Developer Guides SDKを使用しないアプリトークン Box公式SDKのいずれも使用できるようになっていない場合や選択した言語のSDKがない場合は、SDKがなくてもBox APIを使用できます。 アプリトークン認証は、Box API… # SDKを使用しないアプリトークン Box公式SDKのいずれも使用できるようになっていない場合や選択した言語のSDKがない場合は、SDKがなくてもBox APIを使用できます。 アプリトークン認証は、Box APIを直接操作するよう設計されており、ユーザーがアプリケーションを承認するためにBoxを介してリダイレクトする必要はありません。ただし、この認証はアプリケーションのデータのみに制限されています。 JWTを使用した認証方法は、もともとアプリケーションのサービスアカウントに関連付けられています。このトークンを使用して実行されるAPIコールはどれも、このアプリケーションから実行されているように見えますが、明示的なアクセス権がなければ他のユーザーのファイルやフォルダにはアクセスできません。 ## 前提条件 開始する前に、以下の手順を完了しておく必要があります。 - 開発者コンソール内でBoxアプリケーションを作成する - アプリケーションがアプリトークン認証を使用するよう構成されていることを確認する - アプリケーションのプライマリアプリトークンとセカンダリアプリトークンを生成し、コード内のどこかにこれらのトークンを保存する ## APIコールの実行 アプリトークンを直接使用するには、任意のアクセストークンを使用する場合と同じように、アプリケーションでアプリトークンを使用できます。 ``` curl https://api.box.com/2.0/users/me \ -H "authorization: Bearer EGmDmRVfhfHsqesn5yVYHAqUkD0dyDfk" ``` **Source:** [https://ja.developer.box.com/guides/authentication/app-token/without-sdk/](https://ja.developer.box.com/guides/authentication/app-token/without-sdk/) --- ### Shieldアラートイベント **Type:** guide | **Category:** イベント | **Section:** Developer Guides Shieldアラートイベント 以下で説明する高度なセキュリティ機能を活用するには、Box Shieldを購入し、Box Enterpriseで有効にする必要があります。 脅威検出アラート Shield… # Shieldアラートイベント 以下で説明する高度なセキュリティ機能を活用するには、[Box Shield](https://www.box.com/ja-jp/shield)を購入し、Box Enterpriseで有効にする必要があります。 ## 脅威検出アラート Shieldの[脅威検出](https://support.box.com/hc/ja/articles/360044196113-%E8%84%85%E5%A8%81%E6%A4%9C%E5%87%BA%E3%81%AE%E4%BD%BF%E7%94%A8)では、ユーザーの異常な動作に基づいて、潜在的な脅威 (アカウントの侵害やデータの盗難など) に関する詳細なアラートが表示されます。 Shieldによって生成される可能性があるアラートは以下のとおりです。 1. 不審な場所 2. 不審なセッション 3. 異常なダウンロード 4. 悪意のあるコンテンツ 5. ランサムウェアアクティビティ (Shield Proの一部) Shieldの脅威検出アラートイベントはすべて、[Enterprise Event](g://events/enterprise-events/for-enterprise) Stream内で生成されます。これらのイベントは標準のイベントオブジェクトスキーマに従い、`event_type`値は`SHIELD_ALERT`に設定されます。 ``` { "source": null, "created_by": { "type": "user", "id": "2", "name": "Unknown User", "login": "" }, "action_by": null, "created_at": "2019-12-20T11:38:56-08:00", "event_id": "97f1b31f-f143-4777-81f8-1b557b39ca33", "event_type": "SHIELD_ALERT", "ip_address": "10.1.2.3", "type": "event", "session_id": null, "additional_details": { "..." } } ``` `additional_details`オブジェクトは、イベントをトリガーした特定の種類のShieldアラートに関する情報を提供します。 ### 不審な場所に関するアラート 不審な場所に関するアラートは、通常とは異なる場所や「ホスト」IPアドレス、または除外対象に指定されている場所や「ホスト」IPアドレスからコンテンツにアクセスしているユーザーがShieldによって検出されたときに生成されます。これは、`additional_details.shield_alert.rule_category`内の`Suspicious Locations`値によって識別できます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_alert": { "rule_category": "Suspicious Locations", "rule_id": 123, "rule_name": "Suspicious Location", "rule_response_action": { "restrict_user": true }, "risk_score": 60, "alert_summary": { "alert_activities": [ { "occurred_at": "2019-12-20T11:37:05-08:00", "event_type": "Download", "item_name": "xyz.txt", "item_type": "file", "item_id": "127", "item_path": "ABC/DEF", "ip_info": { "ip": "1.2.3.4", "latitude": "37.5555", "longitude": "-120.6789", "registrant": "Microsoft Corporation", "country_code": "US", "city_name": "San Jose", "region_name": "California" }, "service_name": "Box Excel Online Previewer" } ] }, "alert_id": 2398, "priority": "medium", "user": { "id": 2320, "name": "Some name", "email": "some@email.com" }, "link": "https://app.box.com/master/shield/alerts/2398", "created_at": "2019-12-20T11:37:15-08:00" } } ``` ### 不審なセッションに関するアラート 不審なセッションに関するアラートは、ユーザーエージェント文字列の異常、ユーザーIDの異常、アプリケーションの種類が一般的ではない、IPアドレスが新しい、ログイン場所が考えられないほど高速に変化しているなどの特徴があるセッションでコンテンツにアクセスしているユーザーがShieldによって検出されたときに生成されます。これは、`additional_details.shield_alert.rule_category`内の`Suspicious Sessions`値によって識別できます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_alert": { "rule_category": "Suspicious Sessions", "rule_id": 123, "rule_name": "Suspicious Session", "rule_response_action": null, "risk_score": 77, "alert_summary": { "description": "First time in prior month user connected from ip 2.3.4.5 First time user agent Some User Agent (Some UA 4.5.6) appeared for user within prior month Apparent distance 9580.0 km between events 59 seconds apart is faster than possible", "sessions": [ { "session_type": "suspicious", "activities": [ { "occurred_at": "2019-12-19T11:37:00-08:00", "event_type": "Set shared link expiration", "item_name": "xyz.txt", "item_type": "file", "item_id": "123456", "item_path": "ABC/DEF", "ip_info": { "ip": "2.3.4.5", "latitude": "37.5555", "longitude": "-120.6789", "registrant": "Microsoft Corporation", "country_code": "US", "city_name": "San Jose", "region_name": "California" }, "service_name": "ServiceName" } ] }, { "session_type": "typical", "activities": [ { "occurred_at": "2019-12-19T11:37:59-08:00", "event_type": "Item Modified", "item_name": "abc.boxnote", "item_type": "file", "item_id": "123123", "item_path": "folder/sub folder", "ip_info": { "ip": "4.5.6.7", "latitude": "37.5555", "longitude": "-20.6789", "country_code": "US", "city_name": "Some City", "region_name": "XYZ" }, "service_name": "Box Notes" } ] } ] }, "alert_id": 500, "priority": "medium", "user": { "id": 50500, "name": "A b c", "email": "a@b.c" }, "link": "https://cloud.app.box.com/master/shield/alerts/500", "created_at": "2019-12-20T11:38:16-08:00" } } ``` ### 異常なダウンロードに関するアラート 異常なダウンロードに関するアラートは、機密コンテンツを盗んでいる可能性のあるアカウント所有者がShieldによって検出されたときに生成されます。これは、`additional_details.shield_alert.rule_category`内の`Anomalous Download`値によって識別できます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_alert": { "rule_category": "Anomalous Download", "rule_id": 123, "rule_name": "Anomalous Download Rule", "rule_response_action": null, "risk_score": 77, "alert_summary": { "description": "Significant increase in download content week over week, 9200% (25.04 MB) more than last week 12 additional files downloaded week over week)", "download_delta_size": "25 Mb", "download_delta_percent": 9200, "historical_period": { "date_range": { "start_date": "2019-12-01T01:01:00-08:00", "end_date": "2019-12-08T01:01:00-08:00" }, "download_size": "0 Mb", "downloaded_files_count": 1 }, "anomaly_period": { "date_range": { "start_date": "2019-12-08T01:01:00-08:00", "end_date": "2019-12-15T01:01:00-08:00" }, "download_size": "25 Mb", "downloaded_files_count": 13 }, "download_ips": [ { "ip": "1.2.3.4" } ] }, "alert_id": 444, "priority": "medium", "user": { "id": 567, "name": "Some user", "email": "some@user.com" }, "link": "https://cloud.app.box.com/master/shield/alerts/444", "created_at": "2019-12-20T11:38:16-08:00" } } ``` ### 悪意のあるコンテンツに関するアラート 悪意のあるコンテンツに関するアラートは、アカウントにアップロードされるコンテンツの潜在的なマルウェアがShieldによって検出されたときに生成されます。これは、`additional_details.shield_alert.rule_category`内の`Malicious Content`値によって識別できます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_alert": { "rule_category": "Malicious Content", "rule_id": 123, "rule_name": "Viruses and stuff", "rule_response_action": null, "risk_score": 100, "alert_summary": { "upload_activity": { "occurred_at": "2019-12-20T11:37:05-08:00", "event_type": "Upload", "item_name": "virus.exe", "item_type": "file", "item_id": "127", "item_path": "ABC/DEF", "sha1_hash": "", "ip_info": { "ip": "1.2.3.4", "latitude": "37.5555", "longitude": "-120.6789", "registrant": "Microsoft Corporation", "country_code": "US", "city_name": "San Jose", "region_name": "California" }, "service_name": "Service name" } }, "malware_info": { "file_id": 127, "file_name": "malware.exe", "file_version": 4239023, "file_created": "2019-12-20T11:37:05-08:00", "file_created_by": { "id": 1010, "name": "Bob", "email": "bob@enterprise.com" }, "file_hash": "d869db7fe62fb07c25a0403ecaea55031744b5fb", "file_hash_type": "SHA-1", "file_size_bytes": 51345, "file_version_uploaded": "2019-12-20T11:37:05-08:00", "file_version_uploaded_by": { "id": 1011, "name": "Jane", "email": "jane@enterprise.com" }, "status": "Malicious", "categories": [ "Adware", "SpyWare" ], "tags": [ "FILE_MALICIOUS_EXECUTION", "FILE_OTHER_TAG" ], "description": "This is a really bad file", "detail_link": "https://some.link/xyz", "malware_name": "BadMalware", "first_seen": "2019-12-19T11:37:05-08:00", "last_seen": "2019-12-20T11:37:05-08:00", "family": "MalwareBot4000" }, "alert_id": 2398, "priority": "medium", "user": { "id": 2320, "name": "Some Name", "email": "some@email.com" }, "link": "https://app.box.com/master/shield/alerts/2398", "created_at": "2019-12-20T11:37:15-08:00" } } ``` ### ランサムウェアアクティビティアラート ランサムウェアアクティビティアラートは、ランサムウェア攻撃を示す可能性がある不審なファイル拡張子がBox Shieldで識別された場合に生成されます。これは、`additional_details.shield_alert.rule_category`内のRansomware Activity値によって識別できます。 `additional_details`ペイロードは以下の詳細を示します。 ``` { "source": null, "created_by": { "type": "user", "id": "2", "name": "Unknown User", "login": "" }, "action_by": null, "created_at": "2025-08-19T10:44:26-07:00", "event_id": "5b508973-0e48-4bc1-80b2-a05b5382eb37", "event_type": "SHIELD_ALERT", "ip_address": "1.2.3.4", "type": "event", "session_id": null, "additional_details": { "shield_alert": { "rule_category": "Ransomware Activity", "rule_id": "1234", "rule_name": "Ransomware Detection", "rule_response_action": null, "risk_score": 100, "alert_summary": { "total_files_affected": 42, "ip_details": [ { "ip": "1.2.3.4", "registrant": "Microsoft Corporation", "latitude": "37.5555", "longitude": "-120.6789", "city_name": "San Jose", "region_name": "California", "country_code": "US" } ], "suspicious_file_extensions": [ "lockbit" ], "anomaly_period": { "date_range": { "start_date": "2009-02-13T23:31:30Z", "end_date": "2009-02-13T23:31:30Z" } } }, "alert_id": 1234, "priority": "medium", "user": { "id": 8167630149, "name": "Some user", "email": "Some@user.com" }, "link": "https://app.box.com/master/shield/alerts/1234", "created_at": "2025-08-19T10:44:26-07:00" } } } ``` **Source:** [https://ja.developer.box.com/guides/events/event-triggers/shield-alert-events/](https://ja.developer.box.com/guides/events/event-triggers/shield-alert-events/) --- ### Shieldスマートアクセスイベント **Type:** guide | **Category:** イベント | **Section:** Developer Guides Shieldスマートアクセスイベント Box… # Shieldスマートアクセスイベント Box管理者は、[スマートアクセス](https://support.box.com/hc/ja/articles/7711416297747-%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を使用すると、分類ベースのアクセスポリシーを定義、適用してアクセスを制御し、機密コンテンツの意図しない漏えいを防止できます。 スマートアクセスポリシーは、[適用モードまたは監視モード](https://support.box.com/hc/ja/articles/14596333776403-Shield%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E3%81%AE%E8%A8%AD%E5%AE%9A)で構成できます。すべてのイベントタイプで、ポリシーが`enforced`モードと`monitoring`モードのどちらであるかを示す、`controlMode`という名前のフィールドが表示されます。 ## ダウンロードと印刷の制限 ダウンロードまたは印刷の制限を適用するShieldアクセスポリシーを管理者が作成し、エンドユーザーがファイルをダウンロードまたは印刷できないようブロックされると、[Enterprise Event](g://events/enterprise-events/for-enterprise) Stream内でイベントが生成されます。ダウンロードと印刷の違反の可能性を監視するようアクセスポリシーを設定した場合は、ユーザーがダウンロードまたは印刷が制限されたファイルを含むフォルダを表示したとき、ダウンロードまたは印刷が制限されたファイルをプレビューで表示したとき、ダウンロードまたは印刷が制限されたファイルをAPI経由でダウンロードすることをリクエストしたときにもイベントが生成されます。これらのイベントは標準のイベントオブジェクトスキーマに従い、`event_type`値は`SHIELD_DOWNLOAD_BLOCKED`に設定されます。 ダウンロードがブロックされている場合、`SHIELD_DOWNLOAD_BLOCKED`イベントの`additional-details`ペイロードには以下の詳細が示されます。 Boxウェブアプリの場合、`additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_download_enforcement": { "item": { "type": "file", "id": 987654321, "name": "testFile.docx", "file_version_id": 38495726173, "size": 370, "sha1": "db0a61e73b5e6985d190134e0a4b9982c716afeb" }, "access_user": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "service": null, "additional_info": "", "created_at": "2022-02-22T10:35:08-08:00", "classification": "Confidential", "controlMode": "enforced" } } ``` Boxデスクトップアプリの場合、`additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_download_enforcement": { "item": { "type": "file", "id": 123456789, "name": "testFile.docx", "file_version_id": 987654321, "size": 11640, "sha1": "368acd076a89ce82e62cac004fa27ea9ce3019d7" }, "access_user": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "service": { "service": 254429, "name": "Box Drive" }, "additional_info": "", "created_at": "2022-02-22T10:38:58-08:00", "classification": "Confidential", "controlMode": "enforced" }, "service_id": "254429", "service_name": "Box Drive" } ``` Box Mobileアプリの場合、`additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_download_enforcement": { "item": { "type": "file", "id": 987654321, "name": "testFile.docx", "file_version_id": 38495726173, "size": 11640, "sha1": "368acd076a89ce82e62cac004fa27ea9ce3019d7" }, "access_user": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "service": { "service": 4715, "name": "Box for Android" }, "additional_info": "", "created_at": "2022-01-18T14:51:37-08:00", "classification": "Confidential", "controlMode": "monitoring" }, "service_id": "4715", "service_name": "Box for Android" } ``` ## 外部コラボレーションの制限 外部コラボレーションの招待が制限されている場合、イベントは[Enterprise Event](g://events/enterprise-events/for-enterprise) Stream内で生成されます。これらのイベントは、`event_type`値が次のいずれかに設定されている、標準のイベントオブジェクトスキーマに従います: `SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED_MISSING_JUSTIFICATION`、`SHIELD_EXTERNAL_COLLAB_INVITE_JUSTIFIED`、`SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED`、`SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED_MISSING_JUSTIFICATION`、`SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED`。 外部コラボレーションの招待がブロックされている場合、`SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED`または`SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED_MISSING_JUSTIFICATION`イベントの`additional-details`ペイロードによって以下の詳細が示されます。 ``` "additional_details": { "shield_external_collab_enforcement": { "item": { "type": "file", "id": 987654321, "name": "testFile.docx", "file_version_id": 987654321, "size": 11640, "sha1": "368acd076a89ce82e62cac004fa27ea9ce3019d7" }, "inviter": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "invitee": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "accessUser": null, "service": null, "additionalInfo": "", "createdAt": null, "justification": null, "classification": "Confidential", "controlMode": "enforced" } } ``` 外部コラボレーションの招待が正当な理由で認められている場合、`SHIELD_EXTERNAL_COLLAB_INVITE_JUSTIFIED`イベントの`additional_details`ペイロードによって以下の詳細が示されます。 ``` "additional_details": { "shield_external_collab_enforcement": { "item": { "type": "file", "id": 123456789, "name": "testFile.docx", "file_version_id": 123456789, "size": 11640, "sha1": "368acd076a89ce82e62cac004fa27ea9ce3019d7" }, "inviter": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "invitee": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "accessUser": null, "service": null, "additionalInfo": "", "createdAt": null, "justification": { "justification_id": "17786127", "request_at": 1644874023, "requested_by": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "request_type": "EXTERNAL_COLLAB", "item": { "type": "file", "id": 987654321, "name": "testFile.docx", "file_version_id": 941051265322, "size": 11640, "sha1": "368acd076a89ce82e62cac004fa27ea9ce3019d7" }, "user": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "title": "Approved", "description": "", "additional_info": null, "approved_by": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "action": "APPROVED", "action_at": 1644874023, "details": null }, "classification": "Confidential", "controlMode": "enforced" } } ``` 外部コラボレーションのアクセスがブロックされている場合、`SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED`または`SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED_MISSING_JUSTIFICATION`イベントの`additional_details`ペイロードによって以下の詳細が示されます。 ``` "additional_details": { "shield_external_collab_enforcement": { "item": { "type": "file", "id": 987654321, "name": "testFile.docx", "file_version_id": 987654321, "size": 11640, "sha1": "368acd076a89ce82e62cac004fa27ea9ce3019d7" }, "inviter": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "invitee": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "accessUser": null, "service": null, "additionalInfo": "", "createdAt": null, "justification": null, "classification": "Confidential", "controlMode": "enforced" } } ``` Shieldの正当な理由が承認されると、イベントが[Enterprise Event](g://events/enterprise-events/for-enterprise) Stream内で生成されます。これらのイベントは、標準のイベントオブジェクトスキーマと、`SHIELD_JUSTIFICATION_APPROVAL`に設定された`event_type`値に従います。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_justification": { "justification_id": "18428718", "request_at": 1645556286, "requested_by": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "request_type": "EXTERNAL_COLLAB", "item": { "type": "file", "id": 987654321, "name": "testFile.docx", "file_version_id": 987654321, "size": 11640, "sha1": "368acd076a89ce82e62cac004fa27ea9ce3019d7" }, "user": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "title": "Partner Project", "description": "", "additional_info": null, "approved_by": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "action": "APPROVED", "action_at": 1645556286, "details": null } } ``` 管理者は、共有ウィンドウから正当な理由が選択されたときに1つではなく2つのEnterprise Eventが表示される可能性があることに注意してください。たとえば、`SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED_MISSING_JUSTIFICATION`イベントと`SHIELD_EXTERNAL_COLLAB_INVITE_JUSTIFIED`イベントが1つずつ表示されます。 ## 統合の制限 サードパーティ製アプリケーション (組織と統合されている公開Platformアプリケーションなど) がファイルまたはフォルダのダウンロードを制限されている場合は、[Enterprise Event](g://events/enterprise-events/for-enterprise) Stream内でイベントが生成されます。これらのイベントは標準のイベントオブジェクトスキーマに従い、`event_type`値は`SHIELD_DOWNLOAD_BLOCKED`に設定されます。 サードパーティ製アプリケーションの場合、`additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_download_enforcement": { "item": { "type": "file", "id": 875644956551, "name": "blaha.docx", "file_version_id": 941051265322, "size": 11640, "sha1": "368acd076a89ce82e62cac004fa27ea9ce3019d7" }, "access_user": { "type": "user", "id": 11754686560, "name": "Ming Feng", "login": "mfeng+demo@boxdemo.com" }, "service": "docusign", "additional_info": "", "created_at": "2022-01-18T14:53:53-08:00", "classification": "Confidential", "controlMode": "enforced" } ``` Platformアプリケーションの場合、`additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_download_enforcement": { "item": { "type": "file", "id": 123456789, "name": "testFile.docx", "file_version_id": 987654321, "size": 11640, "sha1": "368acd076a89ce82e62cac004fa27ea9ce3019d7" }, "access_user": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "service": { "service": 123456, "name": "CustomApp" }, "additional_info": "", "created_at": "2022-01-18T13:31:25-08:00", "classification": "Confidential", "controlMode": "enforced" }, "service_id": "123456", "service_name": "CustomApp" } ``` ## FTPの制限 FTPプロトコルを介したファイルまたはフォルダのダウンロードが制限されている場合は、[Enterprise Event](g://events/enterprise-events/for-enterprise) Stream内でイベントが生成されます。これらのイベントは標準のイベントオブジェクトスキーマに従い、`event_type`値は`SHIELD_DOWNLOAD_BLOCKED`に設定されます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "shield_download_enforcement": { "item": { "type": "file", "id": 123456789, "name": "textFile.txt", "file_version_id": 987654321, "size": 3606, "sha1": "ab7a79ff8e2a6b576e1c62d850290a09312fb387" }, "access_user": { "type": "user", "id": 123456789, "name": "Some Name", "login": "somename@box.com" }, "service": { "service": 4082, "name": "Box FTP Server" }, "additional_info": "", "created_at": "2022-01-18T14:19:51-08:00", "classification": null, "controlMode": "enforced" }, "service_id": "4082", "service_name": "Box FTP Server" } ``` **Source:** [https://ja.developer.box.com/guides/events/event-triggers/shield-smart-access-events/](https://ja.developer.box.com/guides/events/event-triggers/shield-smart-access-events/) --- ### Shield情報バリアイベント **Type:** guide | **Category:** イベント | **Section:** Developer Guides Shield… # Shield情報バリアイベント 情報バリアは、利益相反または潜在的な法的問題につながる可能性のあるやり取りやコミュニケーションを防止します。たとえば、管理者は情報バリアを使用して、プロジェクトに基づいてチームを分け、特定のグループに制限されたコンテンツでのコラボレーションを防ぐことができます。 ## 情報バリアの設定時にトリガーされるイベント 情報バリアを設定すると、[Enterprise Event](g://events/enterprise-events/for-enterprise/) Streamにイベントが作成されます。たとえば、バリアをアクティブ化または非アクティブ化すると、イベントがトリガーされます。 これらのイベントは、`event_type`値が次のいずれかに設定されている、標準的なイベントオブジェクトスキーマに従います。 - `SHIELD_INFORMATION_BARRIER_ENABLED` - `SHIELD_INFORMATION_BARRIER_PENDING` - `SHIELD_INFORMATION_BARRIER_DISABLED` ### Shield情報バリアの有効化 `SHIELD_INFORMATION_BARRIER_ENABLED`イベントは、ファイルまたはフォルダに対して情報バリアを有効化するとトリガーされます。以下に例を示します。 ``` { "chunk_size": 1, "next_stream_position": "1152923169537420243", "entries": [ { "source": { "barrier_id": 123456, "barrier_status": "ENABLED", "barrier_segments": [ { "name": "8", "member_count": 1 }, { "name": "9", "member_count": 1 } ] }, "created_by": { "type": "user", "id": "12345667", "name": "Unknown User", "login": "user@email.com" }, "action_by": null, "created_at": "2022-10-04T17:42:53-07:00", "event_id": "f82c3ba03e41f7e8a7608363cc6c0390183c3f83", "event_type": "SHIELD_INFORMATION_BARRIER_ENABLED", "ip_address": "Unknown IP", "type": "event", "session_id": null, "additional_details": null } ] } ``` ### Shield情報バリアが保留中 `SHIELD_INFORMATION_BARRIER_PENDING`イベントは、特定のファイルまたはフォルダに対して情報バリアがまだ有効になっていないときにトリガーされます。アクティブ化のプロセスはトリガーされたものの、情報バリアがまだ設定されていません。以下に例を示します。 ``` { "chunk_size": 1, "next_stream_position": "1152923169531664551", "entries": [ { "source": { "barrier_id": 123456, "barrier_status": "PENDING", "barrier_segments": [ { "name": "8", "member_count": 1 }, { "name": "9", "member_count": 1 } ] }, "created_by": { "type": "user", "id": "12345667", "name": "Unknown User", "login": "user@email.com" }, "action_by": null, "created_at": "2022-10-04T16:06:57-07:00", "event_id": "f82c3ba03e41f7e8a7608363cc6c0390183c3f83", "event_type": "SHIELD_INFORMATION_BARRIER_PENDING", "ip_address": "Unknown IP", "type": "event", "session_id": null, "additional_details": null } ] } ``` ### Shield情報バリアの非アクティブ化 `SHIELD_INFORMATION_BARRIER_DISABLED`イベントは、特定のファイルまたはフォルダに対して情報バリアを非アクティブにするとトリガーされます。以下に例を示します。 ``` { "chunk_size": 1, "next_stream_position": "1152923169767928414", "entries": [ { "source": { "barrier_id": 1234567, "barrier_status": "DISABLED", "barrier_segments": [ { "name": "8", "member_count": 1 }, { "name": "9", "member_count": 1 } ] }, "created_by": { "type": "user", "id": "123435567", "name": "Unknown User", "login": "user@email.com" }, "action_by": null, "created_at": "2022-10-07T09:44:41-07:00", "event_id": "f82c3ba03e41f7e8a7608363cc6c0390183c3f83", "event_type": "SHIELD_INFORMATION_BARRIER_DISABLED", "ip_address": "Unknown IP", "type": "event", "session_id": null, "additional_details": null } ] } ``` ## 制限されたアクションによってトリガーされるイベント 情報バリアが設定されているときに、各ユーザーが制限されたアクションの実行や制限されたデータへのアクセスを試みた場合もイベントが発生します。これらのイベントは、`event_type`値が次のいずれかに設定されている、標準的なイベントオブジェクトスキーマに従います。 - `SHIELD_INFORMATION_BARRIER_GROUP_ADD_USER_BLOCKED` - `SHIELD_INFORMATION_BARRIER_COLLAB_BLOCKED` - `SHIELD_INFORMATION_BARRIER_ITEM_OWNER_TRANSFER_BLOCKED` - `SHIELD_INFORMATION_BARRIER_SHARED_ITEM_ACCESS_BLOCKED` - `SHIELD_INFORMATION_BARRIER_ITEM_MOVE_BLOCKED` - `SHIELD_INFORMATION_BARRIER_ITEM_COPY_BLOCKED` ### ユーザーの追加のブロック `SHIELD_INFORMATION_BARRIER_GROUP_ADD_USER_BLOCKED`イベントは、情報バリアによって、特定のグループへのユーザーの追加が禁止された場合にトリガーされます。 `additional_details`ペイロードでは、制限されたグループの詳細が提供されます。 ``` { "source": { "type": "user", "id": "123456677", "name": "Unknown User", "login": "user@email.com" }, "created_by": { "type": "user", "id": "12345666", "name": "Unknown User", "login": "user@email.com" }, "action_by": null, "created_at": "2022-10-07T09:26:50-07:00", "event_id": "f82c3ba03e41f7e8a7608363cc6c0390183c3f83", "event_type": "SHIELD_INFORMATION_BARRIER_GROUP_ADD_USER_BLOCKED", "ip_address": "10.1.2.3", "type": "event", "session_id": null, "additional_details": { "group_id": "12345678", "group_name": "Support" } } ``` ### コラボレーションのブロック `SHIELD_INFORMATION_BARRIER_COLLAB_BLOCKED`イベントは、情報バリアによって、ファイルまたはフォルダへのアクセスが制限されているユーザーのコラボレーションの追加が禁止された場合にトリガーされます。 `additional_details`ペイロードでは、制限されたコラボレーションの詳細が提供されます。 ``` { "source": { "folder_id": "12334556", "folder_name": "Contracts", "user_id": "1234567", "user_name": "Unknown User", "parent": { "type": "folder", "name": "All Files", "id": "0" }, "owned_by": { "type": "user", "id": "12345678", "name": "Unknown User", "login": "user@email.com" } }, "created_by": { "type": "user", "id": "16335351460", "name": "Unknown User", "login": "user@email.com" }, "action_by": null, "created_at": "2022-10-05T14:15:14-07:00", "event_id": "f82c3ba03e41f7e8a7608363cc6c0390183c3f83", "event_type": "SHIELD_INFORMATION_BARRIER_COLLAB_BLOCKED", "ip_address": "Unknown IP", "type": "event", "session_id": null, "additional_details": { "type": "box://event/additional_details/collaboration", "collab_id": "0", "is_performed_by_admin": false } } ``` ### 共有項目へのアクセスのブロック `SHIELD_INFORMATION_BARRIER_SHARED_ITEM_ACCESS_BLOCKED`イベントは、情報バリアによって、共有リンクを使用したファイルまたはフォルダへのアクセスが禁止された場合にトリガーされます。 `additional_details`ペイロードでは、共有リンクとその他のセキュリティに関する情報の詳細が提供されます。 ``` { "source": { "item_type": "folder", "item_id": "123456789", "item_name": "Contracts", "parent": { "type": "folder", "name": "All Files", "id": "0" }, "owned_by": { "type": "user", "id": "123456789", "name": "Unknown User", "login": "user@email.com" } }, "created_by": { "type": "user", "id": "123456789", "name": "Unknown User", "login": "user@email.com" }, "action_by": null, "created_at": "2022-10-06T13:27:58-07:00", "event_id": "f82c3ba03e41f7e8a7608363cc6c0390183c3f83", "event_type": "SHIELD_INFORMATION_BARRIER_SHARED_ITEM_ACCESS_BLOCKED", "ip_address": "Unknown IP", "type": "event", "session_id": null, "additional_details": { "shared_link_id": "abcdefghijklm", "security_information": { "accessFromSharedObject": { "sharedId": 123456789, "sharedName": "abcdefghijklmnop", "passwordSet": false, "accessLevel": "open", "createdAt": "2022-10-06T13:27:21-07:00" } } } } ``` ### 項目の移動のブロック `SHIELD_INFORMATION_BARRIER_ITEM_MOVE_BLOCKED`イベントは、情報バリアによって、ユーザーがアクセスできないフォルダへの項目 (ファイルまたはフォルダ) の移動が禁止された場合にトリガーされます。 `additional_details`ペイロードでは、フォルダの詳細が提供されます。 ``` { "source": { "item_type": "folder", "item_id": "123456789", "item_name": "Contracts", "parent": { "type": "folder", "name": "All Files", "id": "0" }, "owned_by": { "type": "user", "id": "123456789", "name": "Unknown User", "login": "user@email.com" } }, "created_by": { "type": "user", "id": "123456789", "name": "Unknown User", "login": "user@email.com" }, "action_by": null, "created_at": "2022-10-06T13:26:58-07:00", "event_id": "f82c3ba03e41f7e8a7608363cc6c0390183c3f83", "event_type": "SHIELD_INFORMATION_BARRIER_ITEM_MOVE_BLOCKED", "ip_address": "Unknown IP", "type": "event", "session_id": null, "additional_details": { "destination_folder": { "item_type": "folder", "item_id": "123456789", "item_name": "Contracts Signed" } } } ``` ### 項目のコピーのブロック `SHIELD_INFORMATION_BARRIER_ITEM_COPY_BLOCKED`イベントは、情報バリアによって、ユーザーがアクセスできないフォルダへの項目 (ファイルまたはフォルダ) のコピーが禁止された場合にトリガーされます。 `additional_details`ペイロードでは、宛先フォルダの詳細が提供されます。 ``` { "source": { "item_type": "folder", "item_id": "123456789", "item_name": "Contracts", "parent": { "type": "folder", "name": "All Files", "id": "0" }, "owned_by": { "type": "user", "id": "123456789", "name": "Unknown User", "login": "user@email.com" } }, "created_by": { "type": "user", "id": "123456789", "name": "Unknown User", "login": "user@email.com" }, "action_by": null, "created_at": "2022-10-05T14:25:15-07:00", "event_id": "f82c3ba03e41f7e8a7608363cc6c0390183c3f83", "event_type": "SHIELD_INFORMATION_BARRIER_ITEM_COPY_BLOCKED", "ip_address": "Unknown IP", "type": "event", "session_id": null, "additional_details": { "destination_folder": { "item_type": "folder", "item_id": "123456789", "item_name": "Contracts Signed" } } } ``` ### 項目の所有権の移管のブロック `SHIELD_INFORMATION_BARRIER_ITEM_OWNER_TRANSFER_BLOCKED`イベントは、情報バリアによって、制限の対象となっているユーザーへの項目の所有権の移管が禁止された場合にトリガーされます。 `additional_details`ペイロードでは、新しい所有者として設定できないユーザーの詳細が提供されます。 ``` { "source": { "item_type": "folder", "item_id": "", "item_name": "All Files", "parent": { "type": "folder", "name": "", "id": "" }, "owned_by": { "type": "user", "id": "123456789", "name": "Unknown User", "login": "user@email.com" } }, "created_by": { "type": "user", "id": "123456789", "name": "Unknown User", "login": "user@email.com" }, "action_by": null, "created_at": "2022-10-07T09:29:20-07:00", "event_id": "f82c3ba03e41f7e8a7608363cc6c0390183c3f83", "event_type": "SHIELD_INFORMATION_BARRIER_ITEM_OWNER_TRANSFER_BLOCKED", "ip_address": "10.1.2.3", "type": "event", "session_id": null, "additional_details": { "restricted_user": { "type": "user", "id": "123456789", "name": "Unknown User", "login": "user@email.com" }, "service_id": "123456789", "service_name": "App" } } ``` **Source:** [https://ja.developer.box.com/guides/events/event-triggers/shield-information-barrier-events/](https://ja.developer.box.com/guides/events/event-triggers/shield-information-barrier-events/) --- ### Signイベント **Type:** guide | **Category:** イベント | **Section:** Developer Guides Signイベント Box Signイベントの監査には、Enterprise Event Streamを使用します。Box Signの詳細については、ガイドを参照してください。 以下に示す各additional_details… # Signイベント Box Signイベントの監査には、Enterprise Event Streamを使用します。Box Signの詳細については、[ガイド](g://box-sign)を参照してください。 以下に示す各`additional_details`ペイロードのステータスは、具体的な署名リクエストの詳細に基づいた例とは異なる場合があります。たとえば、リクエスト送信者が唯一の署名者の場合は、`SIGN_DOCUMENT_CREATED`イベントのステータスがすぐに`viewed`になります。 ## ドキュメントイベント ### 作成 APIまたはUIを使用して署名リクエストが作成されると、`SIGN_DOCUMENT_CREATED` `event_type`が生成されます。この段階ではまだ署名リクエストは署名者に送信されません。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "sent", "signer_ip_address": null, "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": null, "template": { "id": "987abC5423", "template_type": "Signing", "name": "Work Contact" }, "batch_send": { "id": "W23YVL46" }, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "sender_message": { "subject": "Can you please sign this document?", "message": "This document shows the terms agreed to on the phone." }, "forward": null } } ``` ### 変換 署名リクエストが署名用の`.pdf`に変換されると、`SIGN_DOCUMENT_CONVERTED` `event_type`が生成されます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "created", "signer_ip_address": null, "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "expires": null, "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": null, "template": null, "batch_send": null, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "sender_message": { "subject": "", "message": "" }, "forward": null } } ``` ### 完了 署名者全員がドキュメントへの署名を正常に完了すると、`SIGN_DOCUMENT_COMPLETED` `event_type`が生成されます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "signed", "signer_ip_address": null, "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "expires": null, "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": null, "template": null, "batch_send": null, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "sender_message": { "subject": "", "message": "" }, "forward": null } } ``` ### キャンセル リクエスト送信者がAPIまたはUIで署名リクエストをキャンセルすると、`SIGN_DOCUMENT_CANCELLED` `event_type`が生成されます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "cancelled", "signer_ip_address": null, "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "expires": null, "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": null, "template": null, "batch_send": null, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "sender_message": { "subject": "", "message": "" }, "forward": null } } ``` ### 期限切れ 署名が完了しないまま署名リクエストが期限切れになると、`SIGN_DOCUMENT_EXPIRED` `event_type`が生成されます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "expired", "signer_ip_address": null, "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "expires": null, "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": null, "template": null, "batch_send": null, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "sender_message": { "subject": "", "message": "" }, "forward": null } } ``` ## 署名者イベント ### 割り当て 署名リクエストが問題なく署名者に送信されると、`SIGN_DOCUMENT_ASSIGNED` `event_type`が生成されます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "sent", "signer_ip_address": "", "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "expires": null, "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": { "id": "246813579", "type": "user", "name": "Jane Doe", "login": "janedoe@example.com" }, "template": null, "batch_send": null, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "ready_sign_link": { "id": "aaae45bb-e89b-12d3-a456-426614174000" }, "sender_message": { "subject": "", "message": "" }, "forward": null } } ``` ### 署名者による表示 署名リクエストの署名者が署名用メールの [**ドキュメントをレビュー**] をクリックするか、署名用URLにアクセスすると、`SIGN_DOCUMENT_VIEWED_BY_SIGNER` `event_type`が生成されます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "viewed", "signer_ip_address": "", "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "expires": null, "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": { "id": "246813579", "type": "user", "name": "Jane Doe", "login": "janedoe@example.com" }, "template": null, "batch_send": null, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "ready_sign_link": { "id": "aaae45bb-e89b-12d3-a456-426614174000" }, "sender_message": { "subject": "", "message": "" }, "forward": null } } ``` ### ダウンロード 署名者が署名用ドキュメントをダウンロードすると、`SIGNER_DOWNLOADED` `event_type`が生成されます。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "viewed", "signer_ip_address": "", "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "expires": null, "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": { "id": "246813579", "type": "user", "name": "Jane Doe", "login": "janedoe@example.com" }, "template": null, "batch_send": null, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "ready_sign_link": { "id": "aaae45bb-e89b-12d3-a456-426614174000" }, "sender_message": { "subject": "", "message": "" }, "forward": { "forwarded_to_email": "janedoe@box.com", "forwarded_reason": "Please sign", "forwarded_at": "2022-03-03T12:04:20-10:00" } } } ``` ### 転送 署名者が署名用ドキュメントをダウンロードすると、`SIGNER_FORWARDED` `event_type`が生成されます。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "viewed", "signer_ip_address": "", "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "expires": null, "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": { "id": "246813579", "type": "user", "name": "Jane Doe", "login": "janedoe@example.com" }, "template": null, "batch_send": null, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "ready_sign_link": { "id": "aaae45bb-e89b-12d3-a456-426614174000" }, "sender_message": { "subject": "Can you please sign this document?", "message": "This document shows the terms agreed to on the phone." }, "forward": { "forwarded_to_email": "somename@box.com", "forwarded_reason": "I need to forward to my business partner.", "forwarded_at": "2022-02-03T10:04:52-08:00", }, } } ``` ### 署名 署名者が署名リクエストを完了すると、`SIGN_DOCUMENT_SIGNED` `event_type`が生成されます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "signed", "signer_ip_address": "", "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "expires": null, "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": { "id": "246813579", "type": "user", "name": "Jane Doe", "login": "janedoe@example.com" }, "template": null, "batch_send": null, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "ready_sign_link": { "id": "aaae45bb-e89b-12d3-a456-426614174000" }, "sender_message": { "subject": "Can you please sign this document?", "message": "This document shows the terms agreed to on the phone." }, "forward": null } } ``` ### 拒否 署名リクエストの署名者がリクエストを拒否すると、`SIGN_DOCUMENT_DECLINED` `event_type`が生成されます。 `additional_details`ペイロードは以下の詳細を示します。 ``` "additional_details": { "sign_request": { "sign_request_id": "123e4567-e89b-12d3-a456-426614174000", "sign_request_short_id": "426614174000", "status": "declined", "signer_ip_address": "", "requestor_ip_address": "", "files": [ { "id": "1234567890", "type": "file", "name": "example_doc.pdf", "parent": { "id": "987654321", "type": "folder" } } ], "expires": null, "requestor": { "id": "13579246", "type": "user", "name": "John Doe", "login": "johndoe@box.com" }, "signer": { "id": "246813579", "type": "user", "name": "Jane Doe", "login": "janedoe@example.com" }, "template": null, "batch_send": null, "redirection": { "redirect_url": "https://www.google.com", "declined_redirect_url": "https://www.googledecline.com" }, "ready_sign_link": { "id": "aaae45bb-e89b-12d3-a456-426614174000" }, "sender_message": { "subject": "", "message": "" }, "forward": null } } ``` **Source:** [https://ja.developer.box.com/guides/events/event-triggers/sign-events/](https://ja.developer.box.com/guides/events/event-triggers/sign-events/) --- ### Signクライアントの埋め込み機能 **Type:** guide | **Category:** Box Sign | **Section:** Developer Guides Signクライアントの埋め込み機能 Box Embedを使用すると、ウェブサイトにBox Signの機能を埋め込むことができます。これにより、ユーザーはウェブサイトを離れ、Box Sign… # Signクライアントの埋め込み機能 [Box Embed](g://embed/box-embed)を使用すると、ウェブサイトにBox Signの機能を埋め込むことができます。これにより、ユーザーはウェブサイトを離れ、Box Signにアクセスしてドキュメントに署名し、プロセスを完了するために戻る必要がなくなります。代わりに、Box Embedを使用すると、外部のウェブサイト内で署名プロセスを完了できます。 Box Signのエクスペリエンスをウェブサイトに統合するには、HTMLの`iframe`タグ内のドキュメントへの署名を許可するために設計された`iframable_embed_url`パラメータが必要です。 `iframable_embed_url`のサンプルは次のようになります。 ``` https://app.box.com/embed/sign/document/f14d7098-a331-494b-808b-79bc7f3992a3/f14d7098-a331-494b-808b-79bc7f3992a4 ``` `iframeable_embed_url`を取得するには、[署名リクエストを作成](e://post-sign-requests)エンドポイントを呼び出す際に各署名者の[`embed_url_external_user_id`](e://post-sign-requests#param-signers-embed_url_external_user_id)パラメータを渡します。返されるレスポンスには、その署名者の一意の`iframeable_embed_url`が含まれます。 Signの機能を埋め込み、ユーザーが使用できるようにするには、`iframe`タグ内でURLを使用します。 ``` <iframe src="https://app.box.com/embed/sign/document/f14d7098-a331-494b-808b-79bc7f3992a3/f14d7098-a331-494b-808b-79bc7f3992a4" width="{pixels}" height="{pixels}" frameborder="0" allowfullscreen webkitallowfullscreen msallowfullscreen ></iframe> ``` Box Embedの使用の詳細については、[こちらのガイド](g://embed/box-embed#programmatically)を参照してください。 Box Embedでは、クリックジャッキングを防ぐために[クラウド (雲) ゲーム](g://embed/box-embed#cloud-game)ウィジェットを使用します。この場合、ユーザーはドキュメントに署名する際に、このウィジェットを操作し、クラウド (雲) を適切な位置にドラッグしてから、ドキュメントへの署名に進む必要があります。 **Source:** [https://ja.developer.box.com/guides/box-sign/embedded-sign-client/](https://ja.developer.box.com/guides/box-sign/embedded-sign-client/) --- ### Signテンプレートを使用した署名リクエストの作成 **Type:** guide | **Category:** Box Sign | **Section:** Developer Guides Signテンプレートを使用した署名リクエストの作成 署名リクエストAPIを使用すると、署名リクエストの作成時に、あらかじめ定義されたBox Sign… # Signテンプレートを使用した署名リクエストの作成 署名リクエストAPIを使用すると、署名リクエストの作成時に、あらかじめ定義されたBox Signテンプレートを使用できます。このテンプレートには、リクエストの作成時にデータが自動的に設定されるプレースホルダが含まれています。 ## テンプレートの作成 まず、リクエストに必要となる`text`、`date`、`signature`フィールドを含むBox Signテンプレートを作成します。 詳細な手順については、[テンプレートに関するガイド](https://support.box.com/hc/en-us/articles/4404094944915-Creating-templates)を参照してください。 ## テンプレートIDの取得 署名リクエストを送信するには、使用するテンプレートのIDを渡す必要があります。`template_id`を確認するには、テンプレートのリストを取得します。 レスポンスは以下のようになります (説明のため省略されています)。レスポンス全体の例については、[Box SignテンプレートAPI](e://get-sign-templates#response-example)を参照してください。 また、具体的なパラメータの詳細については、[署名リクエストを作成](e://post-sign-requests)ガイドで確認できます。 ``` "entries": [ { "id": "6ae28666-03c4-4ac1-80db-06a90d3b1361", "name": "Contract.pdf", "parent_folder": { "id": "157064745449", "etag": "0", "type": "folder", "sequence_id": "0", "name": "My Sign Requests" }, "source_files": [ { "id": "1216382236853", "etag": "0", "type": "file", "sequence_id": "0", "sha1": "ca9c75cda0d5e3c3c9b0a1e6d42cb5e29a211ab6", "file_version": { "id": "1327286673653", "type": "file_version", "sha1": "ca9c75cda0d5e3c3c9b0a1e6d42cb5e29a211ab6" } } ], "signers": [ { "email": "", "label": "reader", "public_id": "4Z8QZZV4", "role": "final_copy_reader", "is_in_person": false, "order": 1, "inputs": [...] }, { "email": "", "label": "signer1", "public_id": "4Z8QZZV4", "role": "signer", "is_in_person": false, "order": 1, "inputs": [...] }, { "email": "", "label": "signer2", "public_id": "13VK8794", "role": "signer", "is_in_person": false, "order": 1, "inputs": [ { "document_tag_id": "signer2_full_name", "id": "da431975-55c5-4629-86ae-3fb12dda1386", "type": "text", "text_value": null, "is_required": true, "content_type": "full_name", ... }, { "document_tag_id": null, "id": "b5a76a22-8d48-456e-a012-22a12fc91eb7", "type": "signature", ... }, { "document_tag_id": null, "id": "7e0cc4ee-b878-4739-afde-acbf69b117b2", "type": "date", "date_value": null, ... } ], } ] ... } ] ``` ## 署名リクエストの作成 テンプレートを使用して[署名リクエストを作成](e://post-sign-requests)するには、以下の手順に従います。 1. リクエスト本文で、`template_id`を指定します。 ``` { "template_id": "6ae28666-03c4-4ac1-80db-06a90d3b1361", "parent_folder": { "id": "123456789", "etag": "0", "type": "folder", "sequence_id": "0", "name": "My Sign Requests" }, ... } ``` 1. 署名者のメールアドレスと役割を追加します。 ``` { "template_id": "6ae28666-03c4-4ac1-80db-06a90d3b1361", "parent_folder": { "id": "157064745449", "etag": "0", "type": "folder", "sequence_id": "0", "name": "My Sign Requests" }, "signers": [ { "email": "signer1@sample.com", "role": "signer" }, { "email": "signer2@sample.com", "role": "signer" } ] } ``` `prefill_tags`を追加してフィールドにデータを設定します。 署名者の順序がテンプレートに表示されている順序と同じであることを確認してください。テンプレートで最初に`signer1`、次に`signer2`がある場合、`POST`リクエストでは、適切な署名者を割り当てるために同じにする必要があります。 ``` { "template_id": "6ae28666-03c4-4ac1-80db-06a90d3b1361", "parent_folder": { "id": "123456789000", "etag": "0", "type": "folder", "sequence_id": "0", "name": "My Sign Requests" }, "signers": [ { "email": "signer1@sample.com", "role": "signer" }, { "email": "signer2@sample.com", "role": "signer" } ], "prefill_tags": [ { "document_tag_id": "signer1_full_name", "text_value": "Aaron Levie" }, { "document_tag_id": "signer2_full_name", "text_value": "Albert Einstein" } ] } ``` 1. `POST`リクエストを送信します。レスポンスは以下のようになります。 ``` { "is_document_preparation_needed": false, ... "signers": [ { "email": "reader@sample.com", "role": "final_copy_reader", }, { "email": "signer1@sample.com", "role": "signer", }, { "email": "signer2@sample.com", "role": "signer", } ], "id": "d02fefd2-15fa-431f-a127-2b4525616ae6", "prefill_tags": [ { "document_tag_id": "signer1_full_name", "text_value": "Aaron Levie", }, { "document_tag_id": "signer2_full_name", "text_value": "Albert Einstein", } ], "source_files": [], "parent_folder": { "id": "123456789000", "type": "folder", "name": "My Sign Requests" }, "name": "Contract.pdf", "type": "sign-request", "status": "created", "sign_files": { "files": [ { "id": "123456789", "type": "file", "name": "Contract.pdf", } ], "is_ready_for_download": true }, "template_id": "6ae28666-03c4-4ac1-80db-06a90d3b1361" } ``` **Source:** [https://ja.developer.box.com/guides/box-sign/sign-templates/](https://ja.developer.box.com/guides/box-sign/sign-templates/) --- ### Skillsカードのメタデータ **Type:** guide | **Category:** Box Skills | **Section:** Developer Guides Skillsカードのメタデータ 処理サービスによってファイルのメタデータが特定されたら、アプリケーションはそのデータをBox… # Skillsカードのメタデータ 処理サービスによってファイルのメタデータが特定されたら、アプリケーションはそのデータをBoxに保存されているファイルにメタデータとして書き戻すことができます。 このプロセスには、以下の手順が含まれます。 1. スキルカードのメタデータの準備 2. ファイルへのメタデータの書き込み ## スキルカードのメタデータの準備 Skillsメタデータは、グローバルに利用可能な`boxSkillsCards`という名前のメタデータテンプレートを使用します。このテンプレートは、関連ファイルに保存されるJSON構造の特定の形式に従います。 Boxでは現在、4種類のカードがサポートされています。 | | | | | --- | --- | --- | | キーワード | ファイルの横にキーワードのリストを表示します。 | | | タイムライン | 一連のテキスト/画像を表示します。それらの画像がタイムラインに表示される時刻は、クリックすると表示されます。 | | | トランスクリプト | トランスクリプトと、それに対応するタイムスタンプを表示します。 | | | ステータス | ユーザーにステータスを表示します。これは、ファイルの処理中にスキルのステータスをユーザーに通知するために使用できます。 | | ## ファイルへのメタデータカードの書き込み ファイルに1つ以上のカードを書き込むには、[`POST /files/:id/metadata/global/boxSkillsCards`](e://post_files_id_metadata_global_boxSkillsCards) APIを使用して、Box Skill `cards`のリストを渡します。 ``` curl -X POST https://api.box.com/2.0/files/12345/metadata/global/boxSkillsCards \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "cards": [{ "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } }], }' ``` ``` const metadata = { cards: [{ "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } }] } client.files.addMetadata('12345', 'global', 'boxSkillsCards', metadata) .then(metadata => { // ... }) ``` ``` metadata = { cards: [{ "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } }] } client.file(file_id='12345').metadata(scope='global', template='boxSkillsCards').create(metadata) ``` ``` BoxFile file = new BoxFile(api, "12345"); Metadata metadata = new Metadata() file.createMetadata("global", "boxSkillsCards", metadata); ``` ``` var metadataValues = new Dictionary<string, object>() { cards: [{ "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } }] }; Dictionary<string, object> metadata = await client.MetadataManager .CreateFileMetadataAsync(fileId: "12345", metadataValues, "global", "boxSkillsCards"); ``` Box Skillカードがすでにこのファイルに適用されている場合は、このAPIコールによって、HTTPステータスコード`409`とともにエラーが返されます。 ## ファイルのメタデータカードの更新 Box Skillカードがすでにファイルに適用されている場合、[`PUT /files/:id/metadata/global/boxSkillsCards`](e://put_files_id_metadata_global_boxSkillsCards) APIを使用して更新することができます。このAPIは、実行する多数の操作 (`op`) を受け取り、各操作を使用すると、特定の位置 (`path`) のカードを置き換えることができます。 ``` curl -X PUT https://api.box.com/2.0/files/12345/metadata/global/boxSkillsCards \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json-patch+json' \ -d '[ "op": "replace", "path": "/cards/0", "value": { "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } } ]' ``` ``` const updates = [ { 'op': 'replace', 'path': '/cards/0', 'value': { "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } } } ] client.files.updateMetadata('12345', 'global', 'boxSkillsCards', updates) .then(metadata => { // ... }) ``` ``` file_metadata = client.file(file_id='12345').metadata(scope='global', template='boxSkillsCards') card = { "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } } updates = file_metadata.start_update() updates.replace('/cards/0', card) file_metadata.update(updates) ``` ``` BoxFile file = new BoxFile(api, "12345"); Metadata metadata = new Metadata() file.updateMetadata("global", "boxSkillsCards", metadata); ``` ``` var card = new Dictionary<string, object>() { "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } }; var updates = new List<BoxMetadataUpdate>() { new BoxMetadataUpdate() { Op = MetadataUpdateOp.replace, Path = "/cards/0", Value = card } }; Dictionary<string, object> updatedMetadata = await client.MetadataManager .UpdateFileMetadataAsync("12345", updates, "global", "boxSkillsCards"); ``` **Source:** [https://ja.developer.box.com/guides/skills/handle/metadata/](https://ja.developer.box.com/guides/skills/handle/metadata/) --- ### Skillsペイロードの処理 **Type:** guide | **Category:** Box Skills | **Section:** Developer Guides Skillsペイロードの処理 呼び出しURLとして設定されているアプリケーションまたはサイト内では、一般に以下の2つのタスクを行う必要があります。 Skillペイロードを処理する - Box Skills… # Skillsペイロードの処理 [呼び出しURL](guide://skills/invocation-url)として設定されているアプリケーションまたはサイト内では、一般に以下の2つのタスクを行う必要があります。 - [Skillペイロードを処理する](guide://skills/handle/payload) - Box Skillsは、新しいファイルがフォルダにアップロード、コピー、または移動されたことを検出するたびに、呼び出しURLにJSON通知を送信します。このURLは解析する必要があります。 - [ファイルにスキルカードを適用する](guide://skills/handle/metadata) - 処理サービスから返されたメタデータを、イベントをトリガーしたファイルにメタデータとして保存する必要があります。 **Source:** [https://ja.developer.box.com/guides/skills/handle/](https://ja.developer.box.com/guides/skills/handle/) --- ### Slackイベントの処理 **Type:** quick-start | **Category:** コラボレーション | **Section:** Developer Guides Slackイベントの処理 アプリケーションのスキャフォールドを設定したら、次に、User Eventの処理機能と、Slackから送信されるスラッシュコマンドの処理機能を構築します。最終的に、これらの機能はそれぞれBox API… # Slackイベントの処理 アプリケーションのスキャフォールドを設定したら、次に、User Eventの処理機能と、Slackから送信されるスラッシュコマンドの処理機能を構築します。最終的に、これらの機能はそれぞれBox APIエンドポイントに渡されて、グループおよびコンテンツのコラボレーションタスクを実行します。 この手順では、直前の手順で作成した空の関数を拡張します。これらの関数では、以下のタスクを実行します。 - Slackからの新しいイベントとスラッシュコマンドをリッスンする - これらのイベントとコマンドを処理して適切な関数に送る - ボットが初めてチャンネルに追加されたときにBoxグループに追加されるようにチャンネル内のすべてのSlackユーザーを処理する - Slackユーザーのプロフィール情報を取得してそのメールアドレスを取得する ## Slackイベントのリッスン Slackアプリケーションを構成したときに、3つのイベントのアプリケーションコードにイベントを送信するようSlackアプリケーションに指示しました。 - ユーザーがチャンネルに参加したとき。 - ユーザーがチャンネルから退出したとき。 - ユーザーが`/boxadd`スラッシュコマンドを入力したとき。 このアプリケーションには、Slackからのこれらのメッセージをリッスンする公開ルートが必要です。このメッセージのペイロードは、次のようになります。 ``` { "token": "cF1PwB1eIMcRHZWwFHJR1tgs", "team_id": "T932DQSV12P", "team_domain": "slacktest", "channel_id": "C078N43MFHU", "channel_name": "bottest", "user_id": "U016JCDPN56", "user_name": "testuser", "command": "/boxadd", "text": "file 123456", "response_url": "https://hooks.slack.com/commands/T541DQSV12P/3977594927231/ankvsRb42WKnKPRp002FeyTx", "trigger_id": "1189442196855.1183332180295.cca20c3ca1ea193dab432ad8e9e95431" } ``` ``` { "token": "cF1PwB1eIMcRHZWwFHJR1tgs", "team_id": "T932DQSV12P", "api_app_id": "A321V573PQT", "event": { "type": "member_joined_channel", "user": "U0431JM4RLZ", "channel": "C078N43MFHU", "channel_type": "C", "team": "T932DQSV12P", "inviter": "U016JCDPN56", "event_ts": "1592858788.000700" }, "type": "event_callback", "event_id": "Ev032NRJYASJ", "event_time": 1592858788, "authed_users": [ "U0431JM4RLZ" ] } ``` ``` { "token": "cF1PwB1eIMcRHZWwFHJR1tgs", "team_id": "T932DQSV12P", "api_app_id": "A321V573PQT", "event": { "type": "member_left_channel", "user": "U0431JM4RLZ", "channel": "C078N43MFHU", "channel_type": "C", "team": "T932DQSV12P", "event_ts": "1593033236.000600" }, "type": "event_callback", "event_id": "Ev032NRJYASJ", "event_time": 1593033236, "authed_users": [ "U0431JM4RLZ" ] } ``` これらのイベントの処理を開始するには、任意のエディタに`process.js`を読み込み、`app.post("/event" ...`リスナーを次の内容に置き換えます。 ``` app.post("/event", (req, res) => { if (req.body.token !== slackConfig.verificationToken) { res.send("Slack Verification Failed"); } handler.process(res, req.body); }); ``` イベントが成功すると、リスナーではSlackアプリケーションからの確認トークンを使用して、メッセージがSlackから届いたことを確認します。メッセージが有効なリクエストであれば、イベントペイロードがイベント処理関数に送信されます。 任意のエディタに`Application.java`を読み込み、`@PostMapping("/event")`ブロックを次の内容に置き換えます。 ``` @PostMapping("/event") @ResponseBody public void handleEvent(@RequestBody String data, @RequestHeader("Content-Type") String contentType, HttpServletResponse response) throws Exception { int code = HttpServletResponse.SC_OK; java.io.PrintWriter wr = response.getWriter(); response.setStatus(code); if (contentType.startsWith(MediaType.APPLICATION_JSON_VALUE)) { wr.write("Adding content to group"); } else { wr.print(response); } wr.flush(); wr.close(); if (! contentType.startsWith(MediaType.APPLICATION_JSON_VALUE)) { JSONObject returnJSON = new JSONObject(); String[] inputParts = data.split("&"); for (String part: inputParts) { String[] keyval = part.split("="); try { keyval[1] = java.net.URLDecoder.decode(keyval[1], StandardCharsets.UTF_8.name()); } catch (UnsupportedEncodingException e) { System.err.println(e); } returnJSON.put(keyval[0], keyval[1]); } data = returnJSON.toString(); } processEvent(data); } ``` イベントが成功すると、ハンドラは、コードを処理する前に、直ちにHTTP200レスポンスを返します。スラッシュコマンドはURLでエンコードされた文字列として送信されるのに対し、メンバーの参加/退出イベントはJSONとして送信されます。スラッシュコマンドが検出されると、処理中のメッセージで応答します。それ以外の場合は、`HttpServletResponse`レスポンスを送信します。 この例では、イベントがすべて処理される前に`HTTP 200`レスポンスが送信されます。その理由は、Slackではイベントの送信後3秒以内にレスポンスを必要とするためです。コードの実行時間が3秒を超える場合は、重複したイベントがSlackによって送信されます。 イベント処理を容易にするには、すべてのイベントオブジェクトをJSONに標準化します。コンテンツタイプがJSONでない場合は、URLでエンコードされた文字列になります。それが検出されると、その文字列は、JSONオブジェクトに変換されてから`processEvent`に送信されます。 `processEvent`を以下の内容に置き換えます。 ``` @Async public void processEvent(String data) throws Exception { Object dataObj = new JSONParser().parse(data); JSONObject inputJSON = (JSONObject) dataObj; String token = (String) inputJSON.get("token"); if (token.equals(slackConfig.verificationToken)) { // INSTANTIATE BOX CLIENT process(inputJSON); } else { System.err.println("Invalid event source"); } } ``` このメソッドは、JSONイベント文字列をJSONオブジェクトに変換した後、確認トークンを比較して、イベントがSlackから送信されたかどうかを確認します。有効な場合は、イベントが`process`に転送されます。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## Slackイベントの処理 次に、受信したイベントを判定し、アプリケーションの適切な機能にそのイベントを渡します。 `process`関数を次の内容に置き換えます。 ``` function process(res, data) { if (data.type && data.type === "event_callback") { const eventType = data.event.type; const channel = data.event.channel; const userId = data.event.user; getSlackUser(userId, function (user) { processUser(user, eventType, channel); }); res.send(); } else if (data.command && data.command === "/boxadd") { const [itemType, itemId] = data.text.split(" "); if (["file", "folder"].includes(itemType) && !isNaN(itemId)) { const userId = data.user_id; getSlackUser(userId, function (user) { processContent(user, data.channel_id, itemType, itemId); }); res.send("Adding content"); } else { res.send("Invalid input. Example usage: /boxadd file 123456"); } } else { res.send("Invalid action"); } } ``` この関数の目的は、SlackからのペイロードがUser Eventとスラッシュコマンドのどちらであるかを判断し、必要な情報をすべて取得して、結果を処理するために適切な関数に転送することです。 ペイロードがUser Eventの場合 (`event_callback`に設定されている`data.type`によって示されます)、いくつかの情報を抽出します。 - `eventType`: ユーザーがチャンネルから退出する (`member_left_channel`) かチャンネルに参加する (`member_joined_channel`) かを決定するイベントのタイプ。 - `channel`: チャンネルID。Boxグループ名として使用されます。 - `userId`: ユーザーのID。同じメールアドレスを使用するBoxのユーザープロフィールにバインドされるプロフィールのメールアドレスを検索するためのものです。 その後、process関数は`getSlackUser`を呼び出してユーザーのプロフィールを取得します。取得したユーザープロフィールは`processUser`関数に送信され、Boxグループでユーザーが追加または削除されます。 ペイロードがスラッシュコマンドの場合 (`/boxadd`に設定されている`data.command`によって示されます)、`file 1234`のように、Box IDとファイルかフォルダかを表すコマンドのコンテンツは抽出され、個々の値を取得するために分割されます。これらの値は、適切なコンテンツであるかどうかが検証されます。 検証後、Slackユーザーのプロフィールは、メールアドレスを取得するために取得されます。その後、このユーザープロフィールは、BoxグループとBoxコンテンツでコラボレーションするために`processContent`に送信され、すべてのユーザーにアクセス権限が付与されます。 この手順でSlackユーザーのメールアドレスを取得する理由は、ファイルまたはフォルダの所有者がアプリケーションのサービスアカウントではなくユーザーであるためです。(コラボレーションの作成によって) コンテンツを共有する際は、そのファイルまたはフォルダに対して共有権限を持つユーザーが操作を行う必要があります。そのため、Slackユーザーの代理でコラボレーションを作成できるように、SlackユーザーのメールアドレスをBoxユーザーのメールアドレスと照合する必要があります。 `process`メソッドを次の内容に置き換えます。 ``` public void process(JSONObject inputJSON) throws Exception { if (inputJSON.containsKey("event")) { JSONObject event = (JSONObject) inputJSON.get("event"); String eventType = (String) event.get("type"); String eventUserId = (String) event.get("user"); String eventChannel = (String) event.get("channel"); processUser(getSlackUser(eventUserId), eventType, eventChannel); } else if (inputJSON.containsKey("command")) { String eventCommand = (String) inputJSON.get("command"); if (eventCommand.equals("/boxadd")) { String eventChannelId = (String) inputJSON.get("channel_id"); String eventUserId = (String) inputJSON.get("user_id"); String cInput = (String) inputJSON.get("text"); String[] cInputParts = cInput.split(" "); if (cInputParts[0].matches("file|folder")) { processContent(getSlackUser(eventUserId), eventChannelId, cInputParts[0], cInputParts[1]); } } } else { System.err.println("Invalid event action"); } } ``` このメソッドの目的は、SlackからのペイロードがUser Eventとスラッシュコマンドのどちらであるかを判断し、必要な情報をすべて取得して、結果を処理するために適切なメソッドに転送することです。 ペイロードがUser Eventの場合 (JSONペイロードに存在するイベントノードによって示されます)、いくつかの情報を抽出します。 - `eventType`: ユーザーがチャンネルから退出する (`member_left_channel`) かチャンネルに参加する (`member_joined_channel`) かを決定するイベントのタイプ。 - `eventUserId`: ユーザーのID。同じメールアドレスを使用するBoxのユーザープロフィールにバインドされるプロフィールのメールアドレスを検索するためのものです。 - `eventChannel`: チャンネルID。Boxグループ名として使用されます。 その後、`processUser`に転送し、`getSlackUser`メソッドからの戻り値 (ユーザーオブジェクト)、イベントのタイプ、チャンネルを渡します。 ペイロードがスラッシュコマンドの場合 (JSONペイロードに存在する`command`ノードによって示されます)、いくつかの情報を抽出します。 - `eventChannelId`: Boxグループ名として使用するSlackチャンネルID。 - `eventUserId`: コマンドを発行したユーザーのID。 - `cInputParts`: `file 1234`などの文字列からのコマンド入力のタイプとID。 その後、`processContent`に転送し、`getSlackUser`メソッドからの戻り値 (ユーザーオブジェクト)、チャンネルID、コンテンツタイプ (ファイルまたはフォルダ)、およびBoxに保存されているファイルまたはフォルダのコンテンツIDを渡します。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## Slackユーザーの処理 次に、User Eventの処理方法を定義する必要があります。ここで説明すべきイベントは以下の3つです。 - ボットがチャンネルに追加された。 - 通常のユーザーがチャンネルに参加した。 - 通常のユーザーがチャンネルから退出した。 `processUser`関数を次の内容に置き換えます。 ``` function processUser(user, event, channel) { getGroupId(channel, function (groupId) { // if bot was added, add all channel users if (user.is_bot) { processSlackChannel(channel, groupId); } else if ( user.profile && user.profile.email && event === "member_joined_channel" ) { addGroupUser(groupId, user.profile.email); } else if ( user.profile && user.profile.email && event === "member_left_channel" ) { removeGroupUser(groupId, user.profile.email); } }); } ``` `processUser`メソッドを次の内容に置き換えます。 ``` public void processUser(JSONObject userResponse, String event, String channel) throws Exception { String groupId = getGroupId(channel); JSONObject userObj = (JSONObject) userResponse.get("user"); Boolean isBot = (Boolean) userObj.get("is_bot"); JSONObject userProfile = (JSONObject) userObj.get("profile"); String userEmail = (String) userProfile.get("email"); if (isBot) { processSlackChannel(channel, groupId); } else if (event.equals("member_joined_channel")) { addGroupUser(groupId, userEmail); } else if (event.equals("member_left_channel")) { removeGroupUser(groupId, userEmail); } } ``` # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 このコードでは、最初に、この次の手順で定義するチャンネルのBoxグループIDを取得します。取得後、以下のようにユーザーが処理されます。 - ユーザーがボットの場合は、Boxグループを初期化し、チャンネルの現在のユーザーをすべてBoxユーザーとしてグループに追加する必要があります。これは、既存のチャンネルに追加されるボットを構成するためです。この処理は、以前ユーザーが存在していたチャンネルにボットが再度追加される場合には無視されます。 - ユーザーがチャンネルに参加した場合は、グループにユーザーを追加する必要があります。 - ユーザーがチャンネルから退出した場合は、グループからユーザーを削除する必要があります。 ## Slackチャンネルユーザーの処理 ボットは、初めてチャンネルに追加されたときに、現在チャンネルに含まれている全ユーザーのリストを取得し、そのユーザーを含むBoxグループを作成してチャンネルの基礎を作成する必要があります。 `processSlackChannel`関数を次の内容に置き換えます。 ``` function processSlackChannel(channel, groupId) { const limit = 100; const channelUsersPath = `https://slack.com/api/conversations.members?token=${slackConfig.botToken}&channel=${channel}&limit=${limit}`; axios.get(channelUsersPath).then((response) => { response.data.members.forEach((uid) => { getSlackUser(uid, function (user) { if (user.profile.email && !user.is_bot) { addGroupUser(groupId, user.profile.email); } }); }); }); } ``` `processSlackChannel`メソッドを次の内容に置き換えます。 ``` public void processSlackChannel(String channel, String groupId) throws Exception { String limit = "100"; String channelUsersPath = String.format("%s/conversations.members?token=%s&channel=%s&limit=%s", slackConfig.slackApiUrl, slackConfig.botToken, channel, limit); JSONObject channelUserList = sendGETRequest(channelUsersPath); JSONArray channelUserIds = (JSONArray) channelUserList.get("members"); @SuppressWarnings("rawtypes") Iterator i = channelUserIds.iterator(); while(i.hasNext()) { String uid = (String)i.next(); JSONObject userResponse = (JSONObject) getSlackUser(uid.toString()); JSONObject userObj = (JSONObject) userResponse.get("user"); JSONObject userProfile = (JSONObject) userObj.get("profile"); Boolean isBot = (Boolean) userObj.get("is_bot"); String userEmail = new String(); if (!isBot) { userEmail = (String) userProfile.get("email"); } if (!userEmail.isEmpty() && !isBot) { addGroupUser(groupId, userEmail); } } } ``` # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 このコードは、複数の処理を順番に実行します。 - 最初に、Slack APIを呼び出し、チャンネルのすべてのメンバーを取得します。 - `limit`を調整して、チャネルのユーザーをさらに収集できます。 - 見つかったユーザーごとに、`getSlackUser`を呼び出してそのユーザーのプロフィールを取得し、メールアドレスをBoxユーザーのメールアドレスにマップできます。 - 各ユーザーは`addGroupUser`に送信され、グループに追加されます。 ## Slackユーザープロフィールの取得 Slackに関連した最後の関数は、他の関数によって使用されるユーティリティメカニズムです。この関数は、Slack APIを呼び出して、Slackイベント/コマンドが提供するユーザーIDまたはチャンネルユーザーのリストを取得したときに提供されるユーザーIDが指定されたユーザープロフィールを取得します。メールアドレスを使用してSlackユーザーをBoxユーザーと照合しているため、ユーザープロフィールの検索では、メールアドレスのフィールドに注意します。 Boxのメールアドレスは一意であり、複数のアカウントに使用することはできません。つまり、ユーザーアカウントの検索に使用すると効果的です。 `getSlackUser`関数を次の内容に置き換えます。 ``` function getSlackUser(userId, callback) { const userPath = `https://slack.com/api/users.info?token=${slackConfig.botToken}&user=${userId}`; axios.get(userPath).then((response) => { if (response.data.user && response.data.user.profile) { callback(response.data.user); } else { console.log("No user data found"); } }); } ``` この関数では、Slackユーザープロフィールエンドポイントを呼び出した後、指定したコールバックにユーザープロフィール情報 (有効な場合) を送信します。 `getSlackUser`メソッドを次の内容に置き換えます。 ``` public JSONObject getSlackUser(String userId) throws Exception { String usersPath = String.format("%s/users.info?token=%s&user=%s", slackConfig.slackApiUrl, slackConfig.botToken, userId); return sendGETRequest(usersPath); } ``` このメソッドでは、ユーザープロフィールを取得するようSlackにリクエストを送信した後、そのリクエストのレスポンスを返します。このレスポンスはユーザープロフィールJSONオブジェクトになります。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## まとめ - 受信イベントを確認し、処理するために転送しました。 - イベントを処理し、適切な関数に転送しました。 - チャンネル内のすべてのユーザーを処理する関数と1人のユーザーのSlackプロフィールを取得する関数を実装しました。 Slackの関数を設定しました **Source:** [https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/handle-slack-events/](https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/handle-slack-events/) --- ### Slackの構成 **Type:** quick-start | **Category:** コラボレーション | **Section:** Developer Guides Slackの構成 このガイドの最初の手順では、Slackアプリケーションを作成して構成します。このSlackアプリケーションは、SlackチャンネルでUser Event… # Slackの構成 このガイドの最初の手順では、Slackアプリケーションを作成して構成します。このSlackアプリケーションは、SlackチャンネルでUser Eventをリッスンするボットとして機能し、そのチャンネルでユーザーが入力した**スラッシュコマンド**に応答します。これにより、ユーザーはBox上のファイルやフォルダをグループと共有できます。 このセクションでは、以下の手順を説明します。 - Slack APIダッシュボード内で最小限のSlackアプリケーションを作成します。 - ユーザーがチャンネルに参加したりチャンネルから退出したりするたびにBoxのアプリケーションに通知が送信されるようSlackアプリケーションを構成し、BoxのコードでBoxグループを更新できるようにします。 - Boxのファイルやフォルダをチャンネル内のすべてのユーザーと共有できるようにする`/boxadd`**スラッシュコマンド**を構成します。 ## 最小限のSlackアプリの作成 **[Slackアプリのページ](https://api.slack.com/apps)**に移動し、[**Create an App (アプリの作成)**] をクリックします。[**App Name (アプリ名)**] を追加し、ボットの展開先となる [**Development Slack Workspace (開発Slackワークスペース)**] をドロップダウンリストから選択し、[**Create App (アプリの作成)**] をクリックします。 作成後、アプリケーションの基本情報セクションにリダイレクトされます。下部の [**Display Information (情報の表示)**] セクションで、作成したアプリのアイコンと説明を調整して、ワークスペースでアプリケーションをカスタマイズできます。 ## Slackアプリのイベントリスナーの構成 Slackアプリ用のイベントリスナーを設定すると、チャンネル内のイベントを監視できます。このボットでは、Box内で操作を実行するために、3つの[Slackイベント](https://api.slack.com/events)を監視します。 - [`bot_added`](https://api.slack.com/events/bot_added): ボットは、最初にチャンネルに追加されたときに、チャンネル内の全ユーザーのリストを取得し、取得したユーザーのBoxグループを作成します。このグループは、**スラッシュコマンド**で共有される任意のコンテンツにそのグループを追加するために後で使用できます。 - [`member_joined_channel`](https://api.slack.com/events/member_joined_channel): 新しいユーザーは、Slackチャンネルに参加したときにBoxグループに追加されます。 - [`member_left_channel`](https://api.slack.com/events/member_left_channel): ユーザーはSlackチャンネルから退出したときや削除されたときに、Boxグループから削除されます。 このようなSlackのイベントペイロードの送信先となる通知URLを設定するために、Slackでは確認手順が必要になります。ボットアプリケーションコードのイベントリスナーURLを設定すると、Slackは即座にそのURLにチャレンジを送信し、そのURLが有効かどうかを確認します。これは、次のようなペイロードを含むHTTP POSTです。 ``` { "token": "Jhj5dZrVaK7ZwHHjRyZWjbDl", "challenge": "3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P", "type": "url_verification" } ``` イベントリスナーのURLを設定するには、この手順の間に、設定するURLが、チャレンジ値を含む確認用ペイロードを使用してSlackに応答する必要があります。ペイロードは次のようになります。 ``` HTTP 200 OK Content-type: application/json {"challenge":"3eZbrw1aBm2rZgRNFdxV2595E9CY3gmdALWMmHkvFXO7tYXAYM8P"} ``` このためには、チャレンジイベントに応答する少量のコードを展開します。最初に、以下の中からお好みの言語/フレームワークを選択してください。 # Node (Expressフレームワーク) # Java (Spring Bootフレームワーク) プロジェクトディレクトリ内で`npm install express --save`を実行してExpressの依存関係をインストールし、次のコードを適切なNodeモジュールとともに公開エンドポイントに展開します。 ``` const express = require('express'); const app = express(); const port = process.env.PORT || 3000; app.use(express.urlencoded({ extended: true })); app.use(express.json()); app.post('/event', (req, res) => { if ( req.body && req.body.challenge && req.body.type === 'url_verification' ) { res.send({ challenge: req.body.challenge }); } else { res.status(400).send({ error: "Unrecognized request" }); } }); app.listen(port, function(err) { console.log("Server listening on PORT", port); }); ``` [`Spring Initializr`](https://start.spring.io/)は、すべての依存関係が定義された状態の新しいSpring Bootアプリケーションを自動生成するのに便利なサービスです。これは、空のJavaアプリケーションを作成する代わりに使用できます。 - Eclipseで新しいプロジェクトを作成します。求められたら、Gradleプロジェクトを選択します。 - プロジェクトの一意の名前を入力します。このガイドでは`slack.box`という名前を使用しています。 - `build.gradle`ファイルを開いて以下を追加します。アプリケーションに使用したグループとこのグループが一致することを確認します。保存したら、Gradleプロジェクトを更新します。 ``` plugins { id 'org.springframework.boot' version '2.3.1.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group = 'com.box' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } compile 'com.box:box-java-sdk:2.44.1' } test { useJUnitPlatform() } ``` - `src/main/java`パスに、`Application.java`という名前の新しいJavaクラスファイルを作成します。 - このファイルを開き、次のコードを追加して保存します。 ``` package com.box.slack.box; import org.jose4j.json.internal.json_simple.JSONObject; import org.jose4j.json.internal.json_simple.parser.JSONParser; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController @EnableAutoConfiguration public class Application { @PostMapping("/event") public JSONObject challenge(@RequestBody String data) throws Exception { JSONObject returnJSON = new JSONObject(); Object dataObj = new JSONParser().parse(data); JSONObject inputJSON = (JSONObject) dataObj; String challenge = (String) inputJSON.get("challenge"); String type = (String) inputJSON.get("type"); if (type.equals("url_verification")) { returnJSON.put("challenge", challenge); } else { System.err.println("Invalid input"); } return returnJSON; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` # 前の手順が完了していません 最初に、上記の中からお好みの言語/フレームワークを選択してください。 これで、イベントURLの追加時にSlackチャレンジに応答するコードを準備できたので、これをSlackアプリケーション内で構成できます。 Slackアプリケーションの [**Basic Information (基本情報)**] タブの [**Add features and functionality (機能の追加)**] で、[**Event Subscriptions (イベントサブスクリプション)**] というタイトルのボタンをクリックし、以下の操作を行います。 - [**Enable Events (イベントの有効化)**] を [**On (オン)**] に切り替えます。 - [**Request URL (リクエストURL)**] で、上記のコードを展開した公開URLを追加し、`{YOUR_APP_DOMAIN}/event` (`https://myapp.com/event`など) でリッスンしていることに注意します。URLを追加し、フィールドの外をクリックすると、Slackはすぐに、上記でコードをホストしていたURLにチャレンジを送信します。コードが正しく応答した場合は、[**Request URL (リクエストURL)**] ヘッダーの横に緑色で確認済みであることが表示されます。 - [**Subscribe to bot events (Bot Eventの購読)**] セクションを展開し、[**Add Bot User Event (Bot User Eventの追加)**] ボタンをクリックします。 - ボットが登録されているイベントに`member_joined_channel`と`member_left_channel`を追加します。これらは、新しいユーザーがチャンネルに追加されたときにイベントを送信します。 - ページの下部にある [**Save Changes (変更を保存)**] ボタンをクリックします。 ## Slackアプリのスラッシュコマンドの構成 Slackチャンネルの各ユーザーにBox内のファイルやフォルダへのアクセス権限を付与するために、Slackの**「スラッシュコマンド」**を使用できます。スラッシュコマンドにより、チャンネル内のどのユーザーも、Box内に所有しているコンテンツをチャンネルの他のユーザーと共有できます。 このコマンドを使用すると、チャンネルのメンバーはチャネルに`/boxadd [file / folder] [id]` (`boxadd file 1459732312`など) を入力してファイル/フォルダをそのチャンネルのすべてのユーザーと共有できます。そのために、ファイルはそのチャンネル内に存在するBoxグループのユーザーと自動的にコラボレーションされます。 作成したアプリケーションの [**Basic Information (基本情報)**] タブの [**Add features and functionality (機能の追加)**] で [**Slash Commands (スラッシュコマンド)**] というタイトルのボタンをクリックします。 表示されるページで、[**Create New Command (新しいコマンドの作成)**] をクリックして、以下の項目を入力します。 - **Command (コマンド)**: チャンネルユーザーがBoxのファイル/フォルダIDをチャンネルと共有するために使用するコマンドです。このクイックスタートでは、`/boxadd`を使用します。 - **Request URL (リクエストURL)**: Slackボットでスラッシュコマンドをリッスンし、そのコマンドに応答するURL。このクイックスタートでは、前述のアプリのイベントリスナーのセクションで使用したのと同じイベントURLを使用します。 - **Short Description (簡単な説明)**: スラッシュコマンドで実行する処理の説明。 - **Usage Hint (使用方法のヒント)**: このコマンドに渡すことができる追加のパラメータ。この例では、Boxのファイル/フォルダIDとコンテンツのタイプを使用します。 [**Save (保存)**] をクリックして、このコマンドをSlackアプリに追加します。 ## その他のスコープの追加 Slackからアプリケーションに送信されるスラッシュコマンドまたは通知には、操作を行ったユーザーまたは操作の影響を受けたユーザーに関連するSlackユーザーIDが含まれます。そのIDをBoxユーザーに変換するには、Slackユーザーのメールアドレスを取得する必要があります。取得したメールアドレスを使用して、そのSlackユーザーを対応するBoxユーザーに関連付けることができます。この操作を行うには、Slackアプリケーションの構成で2つのスコープを追加する必要があります。 Slackアプリケーションの構成で、左側のメニューにある [**OAuth & Permissions (OAuthと権限)**] をクリックし、以下の操作を行います。 - [**Scopes (スコープ)**] セクションまで下にスクロールします。 - [**Bot Token Scopes (ボットトークンのスコープ)**] で [**Add an OAuth Scope (OAuthスコープの追加)**] ボタンをクリックします。 - `users:read`と`users:read.email`を検索して追加します。 ## Slackワークスペースへのボットの展開 最後に、Slackワークスペースにこのアプリケーションをインストールします。アプリの [**Basic Information (基本情報)**] ページで、[**Install your app to your workspace (ワークスペースに自分のアプリをインストール)**] セクションを展開します。 [**Install App to Workspace (ワークスペースにアプリをインストール)**] ボタンをクリックします。 [**Allow (許可)**] ボタンをクリックすると、成功を示すメッセージが表示されます。これでワークスペース内にボットがインストールされました。 ## まとめ - Slackアプリケーションを作成しました。 - User Event通知、スラッシュコマンド、追加のスコープを構成しました。 - Slackボットをワークスペースに展開しました。 ローカルアプリケーションの設定が完了しました **Source:** [https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/configure-slack/](https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/configure-slack/) --- ### Slack統合フォルダマッピングの管理 **Type:** guide | **Category:** CLI | **Section:** Developer Guides Slack統合フォルダマッピングの管理 このスクリプトは、BoxをSlackのコンテンツストアとして使用している場合に、SlackとBox間のフォルダマッピングの管理に役立ちます。現在のSlackチャンネルとBoxフォルダのマッピングのリストが作成されるため、入力用のcsv… # Slack統合フォルダマッピングの管理 このスクリプトは、BoxをSlackのコンテンツストアとして使用している場合に、SlackとBox間のフォルダマッピングの管理に役立ちます。現在のSlackチャンネルとBoxフォルダのマッピングのリストが作成されるため、入力用のcsvに基づいてマッピングを作成または更新できます。このスクリプトではすべての権限が維持されます。 詳細については、[GitHubリポジトリ](https://github.com/box/boxcli/tree/main/examples/Integration%20Mappings)で確認できます。 ## 前提条件 ### スクリプトの複製 このGitHubリポジトリを複製するか、`/examples`ディレクトリからファイルをダウンロードします ``` git clone https://github.com/box/boxcli.git ``` ### Windows [.NET Core](https://dotnet.microsoft.com/download)の最新バージョンのインストール ### macOSおよびLinux [PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)をインストールします。`pwsh`コマンドを実行して、インストール結果をテストします。 ``` pwsh ``` どのディレクトリでこのコマンドを実行するかに応じて、出力が異なる場合があります。以下に例を示します。 ``` PowerShell 7.2.5 Copyright (c) Microsoft Corporation. https://aka.ms/powershell Type 'help' to get help. PS /Users/user/repos/boxcli/examples> ``` 問題が発生する場合は、[.NET Core](https://dotnet.microsoft.com/download)と[PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)の両方をインストールしたかどうか確認してください。 ### Box CLIのインストール OAuth [CLIの設定クイックスタート](g://cli/quick-start)を使用して、Box CLIを構成してインストールします。使用しているユーザーが管理者または共同管理者であることを確認してください。 ### Enterprise構成 - 適切なSlackワークスペースやオーガナイゼーションで[Box for Slackを構成してインストール](https://support.box.com/hc/en-us/articles/360044195313-Installing-and-Using-the-Box-for-Slack-Integration)します - [Slackのコンテンツレイヤー](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack)としてのBoxが有効になっています ## スクリプトの実行 ディレクトリを、スクリプトが格納されているフォルダに変更します。この例では、`Integration Mappings`フォルダになります。 ``` rvb@lab:~/box-cli/examples/Integration Mappings$ pwsh PowerShell 7.2.4 Copyright (c) Microsoft Corporation. https://aka.ms/powershell Type 'help' to get help. PS /home/rvb/box-cli/examples/Integration Mappings> ``` EXTRACTを指定してスクリプトを実行すると、現在のマッピングが抽出されます: ``` ./integration-mappings.ps1 -Action EXTRACT ``` または UPDATEを指定してスクリプトを実行すると、現在のマッピングが更新されます: ``` ./integration-mappings.ps1 -Action UPDATE ``` または CREATEを指定してスクリプトを実行すると、新しいマッピングが作成されます: ``` ./integration-mappings.ps1 -Action CREATE -MappingPath ./mapping_create_example.csv ``` デフォルトでは、csvファイルが./mappings.csvに保存され、./mappings.csvから読み込まれます。この場所を変更する場合は、次のように新しいパスを渡します: ``` ./integration-mappings.ps1 -Action EXTRACT -MappingPath ./mappings_new_location.csv ``` パラメータを指定しなかった場合は、スクリプトによって、パラメータを入力するよう求められます。 スクリプトの実行が完了すると、以下のような出力が表示されます。 新しいチャンネルにマッピングを作成する際は、BoxフォルダID、SlackチャンネルID、およびSlackオーガナイゼーションIDを入力する必要があります。オーガナイゼーションIDの代わりにSlackワークスペースIDを使用できます。その場合は、csvの列見出し`SlackOrgId`を`SlackWorkspaceId`に置き換えます。 ``` Starting Process Applying new mappings Output [...] All bulk input entries processed successfully. ``` ## ログ ログは、メインフォルダ内の`logs`フォルダに格納されます。以下のログファイルにアクセスできます。 - `Integration-mappings_all.txt`: すべてのログエントリが含まれています。 - `Integration-mappings_errors.txt`: エラーのみが含まれています。 ## 免責 このプロジェクトは、オープンソースの例を集めたものであるため、公式にサポートされている製品として扱わないでください。Box CLIの使用方法は、自己責任の下、例の情報源として利用してください。 **Source:** [https://ja.developer.box.com/guides/cli/scripts/slack-integration-mappings/](https://ja.developer.box.com/guides/cli/scripts/slack-integration-mappings/) --- ### Slack統合マッピング **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Slack統合マッピング コンテンツレイヤーとしてBoxを有効にすると、各チャンネル用にBoxフォルダが作成され、そのチャンネルにアップロードされたすべてのファイルがこのフォルダに保存されます。統合マッピングAPIを使用すると、Box Enterprise管理者 (EA… # Slack統合マッピング [コンテンツレイヤーとしてBox](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack)を有効にすると、各チャンネル用にBoxフォルダが作成され、そのチャンネルにアップロードされたすべてのファイルがこのフォルダに保存されます。[統合マッピングAPI](r://integration-mapping)を使用すると、Box Enterprise管理者 (EA) は、Slackチャンネルのアップロードフォルダをカスタマイズして、デフォルトのフォルダを使用する代わりに企業内の任意のフォルダに変更できます。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/slack-mappings/](https://ja.developer.box.com/guides/integration-mappings/slack-mappings/) --- ### Slack統合マッピングのトラブルシューティング **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Slack統合マッピングのトラブルシューティング 統合マッピングAPI… # Slack統合マッピングのトラブルシューティング 統合マッピングAPIはさまざまな種類の検証を実行するため、いくつかのエラーが発生する場合があります。このような一般的なエラーの説明と解決策については、以下を参照してください。 ## サービスアカウントがフォルダの共同所有者ではない [SlackのコンテンツレイヤーとしてBoxを使用する](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack)サービスアカウントは、コラボレーションとアップロードを管理するためにフォルダの所有者または共同所有者として追加する必要があります。 ``` Box as File Storage for Slack (user id: 123, user email: user@example.com) must be a collaborator in role co-owner or owner of the folder example123, before it can be mapped to the channel example123. Please create a collaboration or ensure the ownership for Box as File Storage for Slack and retry.` ``` このエラーを解決するには、レスポンスのデータを使用して、マッピングを実行するための必要なロールがサービスアカウントにあることを確認してください。 ``` "context_info": { "service_account_id": "12345678", "service_account_email": "AutomationUser_12345678_gdueygwe@boxdevedition.com", } ``` 以下の手順を実行します。 1. `context_info`から`service_account_email`をコピーします。 2. フォルダ設定で、`Invite People`オプションを使用して共同所有者としてサービスアカウントを招待します。 ## チャンネルがすでにBoxのフォルダにマッピングされている Boxフォルダがすでにマッピングされているチャンネルに対してマッピングを作成しようとすると、APIから次のエラーが返されます。 ``` Channel: example123 is already mapped to a folder in Box. ``` 新しいフォルダの使用を開始したい場合は、`GET`を使用してマッピングの`id`を取得した後、`UPDATE`メソッドを使用してターゲットのBoxフォルダを更新してください。 ## チャンネルが見つからない 統合に関連付けられているSlackボットでチャンネルに関する情報を取得できない場合は、APIから次のエラーが返されます。 ``` Channel: example123 was not found. If it is a private channel, ensure that Box has been added to the channel. ``` `partner_item`が正しいことを確認します。オーガナイゼーションでのインストールの場合は`slack_org_id`、ワークスペースでのインストールの場合は`slack_workspace_id`を指定していることを確認してください。チャンネルがプライベートの場合は、Slackボットがそのチャンネルに追加されていることを確認します。 ## チャンネルがカスタムファイルストレージ (CFS) に適していない ``` Channel: example123 is not suitable for CFS. Slack Connect channels with a pending Connect status can not be mapped to Box folders. ``` Slackコネクトチャンネル (企業間チャンネル) は、現在、SlackのコンテンツレイヤーとしてBoxを使用する場合にサポートされていません。 ## Boxフォルダが外部で所有されている マッピングに選択したBoxフォルダは、管理者が所属する企業で所有している必要があります。 ``` Box folder: example123 cannot be mapped, because it is externally owned. Mapped folder must belong to the enterprise: example_enterprise. ``` ## カスタムファイルストレージ (CFS) が無効になっている Box for Slackがインストールされているものの、[SlackのコンテンツレイヤーとしてBox](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack)が有効になっていない企業に対してマッピングを作成しようとすると、APIからこのエラーが返されます。 ## Box Enterpriseの不一致 管理者のEnterpriseとBox for Slackの構成が一致しない場合、APIからこのエラーが返されます。Box for Slackを有効にする方法については、[Box for Slackのインストールと構成](https://support.box.com/hc/en-us/articles/360044195313-Installing-and-Using-the-Box-for-Slack-Integration)を参照してください。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/slack-mappings/troubleshooting/](https://ja.developer.box.com/guides/integration-mappings/slack-mappings/troubleshooting/) --- ### Slack統合マッピングのリスト取得 **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Slack統合マッピングのリスト取得 GET /integration_mappings/slack呼び出しを使用すると、マッピングを取得してフィルタをかけることができます。管理者が手動で作成したマッピングも、統合によって自動的に作成されたマッピングも対象になります。 # Slack統合マッピングのリスト取得 `GET /integration_mappings/slack`呼び出しを使用すると、マッピングを取得してフィルタをかけることができます。管理者が手動で作成したマッピングも、統合によって自動的に作成されたマッピングも対象になります。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/slack-mappings/list-mappings/](https://ja.developer.box.com/guides/integration-mappings/slack-mappings/list-mappings/) --- ### Slack統合マッピングの作成 **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Slack統合マッピングの作成 POST integration_mappings/slack/:integration_mapping_id呼び出しを使用してマッピングを作成します。この呼び出しを動作させるには、box_itemパラメータとpartner_item… # Slack統合マッピングの作成 `POST integration_mappings/slack/:integration_mapping_id`呼び出しを使用してマッピングを作成します。この呼び出しを動作させるには、`box_item`パラメータと`partner_item`パラメータが必要です。これらのパラメータはそれぞれ、BoxフォルダとSlackチャンネルを示します。 マッピングを作成するには、このサービスアカウントを、マッピングされるフォルダの共同所有者のロールとして設定しておく必要があることに注意してください。エラーが発生した場合は、[トラブルシューティングガイド](g://integration-mappings/slack-mappings/troubleshooting)を参照してください。 作成されたマッピングのデフォルト設定を変更するオプションを指定できます。たとえば、`is_access_management_disabled`を`true`に設定すると、コラボレーションの管理が無効になります。Slackのチャンネルメンバーはチャンネルフォルダのコラボレータにならず、1000人以上のメンバーがいるチャンネルに共有リンクは作成されません。 ## Box SDKによるSlack統合マッピングの作成 Box SDKを使用すると、SlackチャンネルとBoxフォルダのマッピングでのサービスアカウントによる共同所有者のコラボレーションなど、統合マッピングを自動的に作成できます。それには、次のスクリプトを使用します。 ``` const BoxSDK = require('box-node-sdk'); const axios = require('axios'); const integrationMappingsApiUrl = 'https://api.box.com/2.0/integration_mappings/slack' const boxFolderId = 'PASTE YOUR FOLDER ID HERE'; const slackChannelId = 'PASTE YOUR CHANNEL ID HERE'; const slackOrgId = 'PASTE YOUR SLACK ORG ID HERE (CHANGE TO WORKSPACE ID IF NECESSARY)'; const developerToken = 'PASTE YOUR DEVELOPER TOKEN HERE'; let serviceAccountId = '<PLACEHOLDER>'; const client = BoxSDK.getBasicClient(developerToken); async function postIntegrationMappingSlack(){ return axios.post(integrationMappingsApiUrl, { partner_item: { id: slackChannelId, slack_org_id: slackOrgId, // change slack_org_id to slack_workspace_id if Box for Slack is installed on the workspace level type: "channel" }, box_item: { id: boxFolderId, type: "folder" } }, { headers: { 'Authorization': `Bearer ${developerToken}` } }); } function isPlaceholder(str){ return str === '<PLACEHOLDER>'; } async function addCoowner(serviceAccountId, folderId){ try { await client.collaborations.createWithUserID(serviceAccountId, folderId, 'co-owner') } catch (error){ if(error.response.body.code === 'user_already_collaborator'){ console.log('Service account already collaborated in the co-owner role.') } else { throw error; } } } async function logServiceAccountId() { try { await postIntegrationMappingSlack(); } catch (error) { console.log(`Replace the value of serviceAccountId with: ${error.response.data.context_info.service_account_id} and re-run the script.`) } } async function createSlackIntegrationMapping() { if(isPlaceholder(serviceAccountId)){ await logServiceAccountId(); } else { await addCoowner(serviceAccountId, boxFolderId); await postIntegrationMappingSlack(); } } module.exports = { createSlackIntegrationMapping } ``` `PLACEHOLDER`をログに記録された`serviceAccountId`の値に必ず置き換えてください。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/slack-mappings/create-mapping/](https://ja.developer.box.com/guides/integration-mappings/slack-mappings/create-mapping/) --- ### Slack統合マッピングの削除 **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Slack統合マッピングの削除 DELETE integration_mappings/slack/:integration_mapping_id… # Slack統合マッピングの削除 `DELETE integration_mappings/slack/:integration_mapping_id`呼び出しを使用して、チャンネルとフォルダ間のマッピングを削除します。次のファイルがチャンネルにアップロードされると、デフォルトのフォルダ構造で新しいマッピングと新しいフォルダが作成されます。マッピングを削除しても、BoxフォルダもSlackチャンネルも削除されません。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/slack-mappings/delete-mapping/](https://ja.developer.box.com/guides/integration-mappings/slack-mappings/delete-mapping/) --- ### Slack統合マッピングの更新 **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Slack統合マッピングの更新 PUT integration_mappings/slack/:integration_mapping_id呼び出しを使用して、既存のマッピングまたはターゲットのBoxフォルダを更新します。 # Slack統合マッピングの更新 `PUT integration_mappings/slack/:integration_mapping_id`呼び出しを使用して、既存のマッピングまたはターゲットのBoxフォルダを更新します。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/slack-mappings/update-mapping/](https://ja.developer.box.com/guides/integration-mappings/slack-mappings/update-mapping/) --- ### Slack統合マッピングの設定 **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Slack統合マッピングの設定 統合マッピングAPIの使用を開始する前に、以下の手順を実行します。 ロール 管理者または共同管理者のロールが割り当てられていることを確認します。 Box for Slackのインストールと構成 適切なSlack… # Slack統合マッピングの設定 統合マッピングAPIの使用を開始する前に、以下の手順を実行します。 ## ロール 管理者または共同管理者のロールが割り当てられていることを確認します。 ## Box for Slackのインストールと構成 1. 適切なSlackワークスペースまたはオーガナイゼーションに[Box for Slack](https://support.box.com/hc/en-us/articles/360044195313-Installing-and-Using-the-Box-for-Slack-Integration)をインストールします。 2. [SlackのコンテンツレイヤーとしてのBoxの使用](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack)を有効にします。 3. 使用しているサービスアカウントが、マッピングされるフォルダのコラボレータであることを確認します。そのためには、`Invite People`フォルダオプションを使用して、サービスアカウントをコラボレータとして招待します。 エラーが発生した場合は、[トラブルシューティングガイド](g://integration-mappings/slack-mappings/troubleshooting)を参照してください。 ## Boxアプリケーションの作成 1. [Box開発者コンソール](https://app.box.com/developers/console)で、[OAuth認証を使用するPlatformアプリ](g://authentication/oauth2/oauth2-setup)を作成します。 2. アプリケーションを開き、[**構成**] > [**必須のアクセススコープ**] で [**Enterpriseのプロパティを管理する**] アプリケーションスコープを有効にします。 Slack側のチャンネル確認のために、[統合マッピングAPI](e://get-integration-mappings-slack)でSlack APIを呼び出します。 ## 承認 統合マッピングリクエストを承認するには、以下の手順を実行します。 1. 前提条件の1つとして作成した[Platformアプリ](g://applications/app-types/platform-apps)に移動します。 2. [開発者トークン](g://authentication/tokens/developer-tokens)を生成し、次のように各リクエストのHTTPヘッダーに追加します。 ``` Authorization: Bearer {developer_token} ``` 開発者トークンの有効期限は60分です。その時間が経過した後は、再度生成する必要があります。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/slack-mappings/setup/](https://ja.developer.box.com/guides/integration-mappings/slack-mappings/setup/) --- ### SSO IDとApp Userの関連付け **Type:** guide | **Category:** SSOとApp User | **Section:** Developer Guides SSO IDとApp Userの関連付け ユーザーがSSOプロバイダの資格情報を使用してカスタムのBoxアプリケーションに初めてサインインするときに、新しいBoxユーザーを作成し、ユーザーのSSOユーザーレコードと関連付ける必要があります。その際、このSSO… # SSO IDとApp Userの関連付け ユーザーがSSOプロバイダの資格情報を使用してカスタムのBoxアプリケーションに初めてサインインするときに、新しいBoxユーザーを作成し、ユーザーのSSOユーザーレコードと関連付ける必要があります。その際、このSSOユーザーレコードの一意の情報の一部を使用します。通常、この2つのアカウントの関連付けに使用されるデータは、一意のIDとメールアドレスのいずれかです。 この関連付けを行うためにBoxアカウントを作成する方法がいくつかあります。 - Boxユーザーの`external_app_user_id`フィールドを使用して、SSOプロバイダの一意のIDを格納します。 - Boxユーザーの`login`フィールドを使用して、SSOプロバイダの一意のメールアドレスを格納します (管理対象ユーザーのみ)。 ## external_app_user_idによる関連付け Boxユーザーレコードの`external_app_user_id`フィールドを使用する方法は、App Userと管理対象ユーザーの両方に使用可能なオプションで、SSOプロバイダのユーザーレコードをBoxユーザーアカウントに関連付ける際に推奨される方法です。 ### App User `external_app_user_id`によってSSOユーザーレコードに関連付けられた新しいBox App Userを作成するには、SSOプロバイダから以下の2つの情報が必要になります。 - UID (必須): SSOユーザーレコードの一意の識別子です。 - 名前 (省略可): レコードの一貫性を保つために、Boxユーザーレコードと関連付けるSSOユーザー名を抽出します。 取得したら、ユーザーパラメータでオプションの`external_app_user_id`定義を指定して、新しいApp Userを作成するリクエストを実行します。 ``` const ssoName = 'SSO User Name'; const ssoUID = 'SSO User Unique ID'; const spaceAmount = 1073741824; // Create app user client.enterprise.addAppUser( ssoName, { space_amount: spaceAmount, external_app_user_id: ssoUID } ).then(appUser => { console.log(`New user created: ${appUser.name}`); }); ``` ``` String ssoName = "SSO User Name"; String ssoUID = "SSO User Unique ID"; // Create app user CreateUserParams params = new CreateUserParams(); params.setExternalAppUserId(ssoUID); BoxUser.Info createdUserInfo = BoxUser.createAppUser(client, ssoName, params); outputString = "New user created: " + createdUserInfo.getName(); ``` ``` sso_name = 'SSO User Name' sso_uid = 'SSO User Unique ID' space = 1073741824 # Create app user user = box_client.create_user(sso_name, None, space_amount=space, external_app_user_id=sso_uid) print('New user created: {name}') ``` ### 管理対象ユーザー `external_app_user_id`によってSSOユーザーレコードに関連付けられた新しい管理対象ユーザーを作成するには、SSOプロバイダから以下の2つの情報が必要になります。 - メールアドレス (必須): SSOユーザーレコードの一意のメールアドレスです。 - 名前 (省略可): レコードの一貫性を保つために、Boxユーザーレコードと関連付けるSSOユーザーを抽出します。 取得したら、ログイン用のSSOユーザーレコードのメールアドレスを指定して、新しい管理対象ユーザーを作成するリクエストを実行します。 ``` const ssoName = 'SSO User Name'; const ssoEmail = 'ssouser@email.com'; const spaceAmount = 1073741824; // Create app user client.enterprise.addUser( ssoEmail, ssoName, { space_amount: spaceAmount } ).then(managedUser => { console.log(`New user created: ${managedUser.name}`); }); ``` ``` String ssoName = "SSO User Name"; String ssoEmail = "ssouser@email.com"; // Create managed user BoxUser.Info createdUserInfo = BoxUser.createEnterpriseUser(client, ssoEmail, ssoName); outputString = "New user created: " + createdUserInfo.getName(); ``` ``` sso_name = 'SSO User Name' sso_email = 'ssouser@email.com' space = 1073741824 # Create managed user user = box_client.create_user(sso_name, sso_email, space_amount=space) print('New user created: {name}') ``` ## メールアドレスによる関連付け SSOユーザーのメールアドレスによって関連付けられている新しい[管理対象ユーザー](page://platform/user-types/#managed-users)の作成は、標準的な管理対象ユーザーの作成プロセスと同じです。 ユーザーは、SSOプロバイダを介してログインした後、まだBoxユーザーとして存在しない場合に、SSOユーザーレコードからメールアドレスを抽出して、新しいBox管理対象ユーザーを作成するリクエストを実行します。 **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/create-app-user/](https://ja.developer.box.com/guides/sso-identities-and-app-users/create-app-user/) --- ### SSO IDのApp Userの検索 **Type:** guide | **Category:** SSOとApp User | **Section:** Developer Guides SSO IDのApp Userの検索 ユーザーがSSOプロバイダを使用してBox Platformアプリケーションにログインする際、まず必要なのは、Boxユーザーレコードが作成された前回のログイン試行から、そのユーザーがすでに存在するかどうかを確認することです。 Box… # SSO IDのApp Userの検索 ユーザーがSSOプロバイダを使用してBox Platformアプリケーションにログインする際、まず必要なのは、Boxユーザーレコードが作成された前回のログイン試行から、そのユーザーがすでに存在するかどうかを確認することです。 Boxユーザーが検出されたら、そのユーザーとしてBox APIにアクセスするために、[ユーザーアクセストークンを作成](guide://authentication/jwt/user-access-tokens)するか[as-user呼び出し](guide://authentication/jwt/as-user)を実行する必要があります。 Boxユーザーが検出されない場合は、そのSSOユーザーレコードに関連付けられた新しいユーザーを作成する必要があります。 既存のユーザーの検索には、[会社ユーザーのリストを取得](e://get-users)エンドポイントを使用できます。`external_app_user_id`と`login`のどちらのメソッドを使用しているかによって、クエリは若干異なります。 ## external_app_user_idを使用したユーザーの検索 格納されている`external_app_user_id`値を使用して会社ユーザーを検索するには、SSOプロバイダの次の情報が必要になります。 - UID (必須): SSOユーザーレコードの一意の識別子です。 取得したら、パラメータで`external_app_user_id`定義を指定して、会社ユーザーのリストを取得エンドポイントにリクエストを実行します。 特定のアプリケーションのApp Userを取得できるのは、そのApp Userを作成したのがこのアプリケーションである場合のみです。あるアプリケーションを使用して、別のアプリケーションで作成されたユーザーを検索した場合、データは返されません。 ``` const ssoUID = 'SSO User Unique ID'; // Check enterprise users for matching external_app_user_id against SSO UID client.enterprise.getUsers({ "external_app_user_id": ssoUID }) .then((users) => { if (users.total_count > 0) { // User found, fetch user ID const userId = users.entries[0].id; } else { // User not found - create new user record } }); ``` ``` String ssoUID = "SSO User Unique ID"; // Check enterprise users for matching external_app_user_id against SSO UID URL url = new URL("https://api.box.com/2.0/users?external_app_user_id=" + ssoUID); BoxAPIRequest request = new BoxAPIRequest(client, url, "GET"); BoxJSONResponse jsonResponse = (BoxJSONResponse) request.send(); JsonObject jsonObj = jsonResponse.getJsonObject(); JsonValue totalCount = jsonObj.get("total_count"); if (totalCount.asInt() > 0) { // User found, fetch // Fetch user ID JsonArray entries = (JsonArray) jsonObj.get("entries"); JsonObject userRecord = (JsonObject) entries.get(0); JsonValue userId = userRecord.get("id"); } else { // User not found - create new user record } ``` ``` sso_uid = 'SSO User Unique ID' # Validate is user exists url = f'https://api.box.com/2.0/users?external_app_user_id={sso_uid}' headers = {'Authorization': 'Bearer ' + access_token} response = requests.get(url, headers=headers) user_info = response.json() if (user_info['total_count'] == 0): # User not found - create new user record else: # User found, fetch user ID user = user_info['entries'][0] user_id = user['id'] ``` ## メールアドレスを使用したユーザーの検索 `login`のメールアドレスを使用して会社ユーザーを検索するには、SSOプロバイダの次の情報が必要になります。 - メールアドレス (必須): SSOユーザーレコードの一意のメールアドレスです。 取得したら、`filter_term`としてメールアドレスを指定して、会社ユーザーのリストを取得エンドポイントにリクエストを実行します。これは、メールアドレスまたは名前を使用した検索に使用できるようになります。 ``` const ssoEmail = 'ssouser@email.com'; client.enterprise.getUsers({filter_term: ssoEmail}) .then(users => { if (users.total_count > 0) { // User found, fetch user ID const userId = users.entries[0].id; } else { // User not found - create new user record } }); ``` ``` String ssoEmail = "ssouser@email.com"; Iterable<BoxUser.Info> users = BoxUser.getAllEnterpriseUsers(client, ssoEmail); ``` ``` sso_email = 'ssouser@email.com' users = client.users(user_type='all', filter_term=ssoEmail) if (users['total_count'] == 0): # User not found - create new user record else: # User found, fetch user ID user = users['entries'][0] user_id = user['id'] ``` **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/find-app-user/](https://ja.developer.box.com/guides/sso-identities-and-app-users/find-app-user/) --- ### SSOとApp User **Type:** guide | **Category:** SSOとApp User | **Section:** Developer Guides SSOとApp User シングルサインオン (SSO) サービスは、会社のIdentity and Access Management (IAM) ソリューションの一環として使用されることがよくあります。SSOサービスが展開されると、ユーザーは、… # SSOとApp User シングルサインオン (SSO) サービスは、会社の**Identity and Access Management (IAM)** ソリューションの一環として使用されることがよくあります。SSOサービスが展開されると、ユーザーは、1つの資格情報セット (ユーザー名とパスワード) だけを使用して1回ログインすれば、複数のアプリケーションの認証を安全に行うことができます。 Boxは、会社のSSOサービスに接続可能なアプリケーションの1つです。こうしたアプリケーションをPlatformアプリに統合すれば、いずれのエンドユーザーに対しても即座にBoxユーザーがプロビジョニングされます。その際、このエンドユーザーにBoxアカウントが用意されたことは知らされません。 一般的なSSOサービスには`Okta`、`Auth0`、`Microsoft Azure AD`、`OneLogin`、`G Suite`、`Ping Identity`などがありますが、これ以外にも展開可能なサービスは多数あります。 ## SSOをアプリに接続する プログラムによってSSOサービスをBoxアプリケーションに統合する際のフローは以下のとおりです。 1. ユーザーはログアウトした状態でウェブアプリケーションやモバイルアプリケーションにアクセスします。 2. ユーザーは、通常`OAuth 2`や`OpenID Connect`を介して、ログインのためにSSOプロバイダにリダイレクトされます。 3. ログイン後、ユーザーはSSO ID資格情報とともにアプリケーションに再度リダイレクトされます。 4. アプリケーションでは、このユーザーに関連付けられたBoxアカウントがすでに存在するかどうかを確認します。 5. このユーザーに既存のBoxアカウントがある場合、アプリケーションはSSO IDを使用して、Boxでそのユーザーに代わってAPIコールを実行します。 6. このユーザーに関連付けられたBoxアカウントがまだない場合は、SSO IDに基づいて新しいBoxユーザーアカウントが作成されます。SSOサービスの一意のユーザーIDが新しいBoxユーザーにリンクされ、2つのアカウントの間に関連付けが作成されます。その後、この新しいBoxユーザーがBoxでそのユーザーに代わってAPIコールを実行します。 # BoxウェブアプリとSSO SSOサービスをBoxアプリケーションではなくBoxウェブサイトに接続したい方のために、Boxでは、SAML 2.0を通じて[Boxウェブアプリケーション](https://www.box.com)のSSO統合をサポートするための[統合オプション](https://support.box.com/hc/ja/articles/360043696514-Enterprise%E3%81%A7%E3%81%AE%E3%82%B7%E3%83%B3%E3%82%B0%E3%83%AB%E3%82%B5%E3%82%A4%E3%83%B3%E3%82%AA%E3%83%B3-SSO-%E3%81%AE%E8%A8%AD%E5%AE%9A)を多数用意しています。 **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/](https://ja.developer.box.com/guides/sso-identities-and-app-users/) --- ### Teams統合マッピング **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Teams統合マッピング Teams統合マッピングAPIの使用を開始する前に、以下の手順を実行してください。 前提条件 管理者または共同管理者のロール Box for Microsoft Teams統合がインストールされていること Boxアプリケーションの作成 Box… # Teams統合マッピング [Teams](https://support.box.com/hc/en-us/articles/360044667034-Introducing-Box-for-Microsoft-Teams)統合マッピングAPIの使用を開始する前に、以下の手順を実行してください。 ## 前提条件 - 管理者または共同管理者のロール - [Box for Microsoft Teams](https://support.box.com/hc/en-us/articles/360050737154-Assigning-a-Default-Box-Folder-to-a-Teams-Channel-or-Chat)統合がインストールされていること ## Boxアプリケーションの作成 1. [Box開発者コンソール](https://app.box.com/developers/console)で、[OAuth認証を使用するPlatformアプリ](g://authentication/oauth2/oauth2-setup)を作成します。 2. アプリケーションを開き、[**構成**] > [**必須のアクセススコープ**] で [**Enterpriseのプロパティを管理する**] アプリケーションスコープを有効にします。 ## 統合マッピングリクエストの承認 1. 前提条件の1つとして作成した[Platformアプリ](g://applications/app-types/platform-apps)に移動します。 2. [開発者トークン](g://authentication/tokens/developer-tokens)を生成し、次のように各リクエストのHTTPヘッダーに追加します。 ``` Authorization: Bearer {developer_token} ``` 開発者トークンの有効期限は60分です。その時間が経過した後は、再度生成する必要があります。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/teams-mappings/](https://ja.developer.box.com/guides/integration-mappings/teams-mappings/) --- ### Teams統合マッピングのリスト取得 **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Teams統合マッピングのリスト取得 GET /integration_mappings/teams呼び出しを使用すると、マッピングを取得してフィルタをかけることができます。管理者が手動で作成したマッピングも、統合によって自動的に作成されたマッピングも対象になります。 # Teams統合マッピングのリスト取得 `GET /integration_mappings/teams`呼び出しを使用すると、マッピングを取得してフィルタをかけることができます。管理者が手動で作成したマッピングも、統合によって自動的に作成されたマッピングも対象になります。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/teams-mappings/list-mappings/](https://ja.developer.box.com/guides/integration-mappings/teams-mappings/list-mappings/) --- ### Teams統合マッピングの作成 **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Teams統合マッピングの作成 POST integration_mappings_teams呼び出しを使用してマッピングを作成します。この呼び出しを動作させるには、box_itemパラメータとpartner_itemパラメータが必要です。これらのパラメータはそれぞれ、Box… # Teams統合マッピングの作成 `POST integration_mappings_teams`呼び出しを使用してマッピングを作成します。この呼び出しを動作させるには、`box_item`パラメータと`partner_item`パラメータが必要です。これらのパラメータはそれぞれ、BoxフォルダとTeamsチャネルを示します。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/teams-mappings/create-mappings/](https://ja.developer.box.com/guides/integration-mappings/teams-mappings/create-mappings/) --- ### Teams統合マッピングの削除 **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Teams統合マッピングの削除 DELETE integration_mappings_teams_id… # Teams統合マッピングの削除 `DELETE integration_mappings_teams_id`呼び出しを使用して、チャネルとフォルダ間のマッピングを削除します。次のファイルがチャネルにアップロードされると、デフォルトのフォルダ構造で新しいマッピングと新しいフォルダが作成されます。マッピングを削除しても、BoxフォルダもTeamsチャネルも削除されません。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/teams-mappings/delete-mappings/](https://ja.developer.box.com/guides/integration-mappings/teams-mappings/delete-mappings/) --- ### Teams統合マッピングの更新 **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides Teams統合マッピングの更新 PUT integration_mappings_teams_id呼び出しを使用して、ターゲットのBoxフォルダの既存のマッピングを更新します。 # Teams統合マッピングの更新 `PUT integration_mappings_teams_id`呼び出しを使用して、ターゲットのBoxフォルダの既存のマッピングを更新します。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/teams-mappings/update-mappings/](https://ja.developer.box.com/guides/integration-mappings/teams-mappings/update-mappings/) --- ### UI Element **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides UI Element Box UI Elementsは、開発者がメインのBoxウェブアプリの要素を独自のアプリケーションに追加できるようにする、組み込みのUIコンポーネントです。これを使用すると、Box… # UI Element Box UI Elementsは、開発者がメインのBoxウェブアプリの要素を独自のアプリケーションに追加できるようにする、組み込みのUIコンポーネントです。これを使用すると、Boxに保存されているコンテンツを参照、アップロード、プレビュー、選択することができます。また、これは、Reactコンポーネントとしても、フレームワークに依存しないJavaScriptライブラリとしても使用できます。 ## 利用可能なElement Boxには、アプリケーションでファイルやフォルダに共通するユーザーエクスペリエンスを実現するためにUI Elementがいくつか用意されています。 使用可能なUI Elementは以下のとおりです。 - [コンテンツエクスプローラ](g://embed/ui-elements/explorer)- ユーザーがファイルやフォルダを検索および参照できるようにします。また、項目の並べ替え、フィルタ、カスタム列などに対応している、メタデータクエリベースのビューの[バリアント](g://embed/ui-elements/explorer-metadata-v2)もあります。 - [Content Open With](g://embed/ui-elements/open-with) - ユーザーが埋め込みのドロップダウンを使用して、Boxに保存されているコンテンツをパートナーアプリケーションで開けるようにします。 日本時間2021年12月22日をもって、新規のお客様に対する`OpenWith` UI Elementのサポートは終了しました。 - [Content Picker](g://embed/ui-elements/picker) - ユーザーがBoxアカウントからファイルやフォルダを選択できるようにします。 - [コンテンツプレビュー](g://embed/ui-elements/preview) - ドキュメント、画像、音声、動画などに使用するインタラクティブなビューアーを表示します。 - [Content Sidebar](g://embed/ui-elements/sidebar) - ファイルメタデータとアクティビティフィード情報用のサイドバーを表示します。 - [コンテンツアップローダー](g://embed/ui-elements/uploader) - ユーザーがファイルを選択するかドラッグアンドドロップしてアップロードできるようにします。 UI Elementは、単独で使用することも、ファイルをアップロードしてから表示するように、組み合わせてコンテンツに関する共通のユーザーフローを構築することもできます。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/](https://ja.developer.box.com/guides/embed/ui-elements/) --- ### UI Elementsのデザイントークン **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides UI Elements… # UI Elementsのデザイントークン [テーマとスタイルの設定](g://embed/ui-elements/theming-styling)のために使用できるすべてのデザイントークンを表に示します。実装のためのわかりやすい指針となる、デフォルト値と説明も記載されています。 ## トークンの構造 コンテンツエクスプローラでテーマオブジェクトにトークンを指定する方法として、トークンのフルネームを使用したフラットな構造と、短縮した名前を使用した入れ子構造の2つがあります。後者を使用すると、トークンをグループ化できるため、カスタマイズがわかりやすくなりますが、どちらも結果は同じです。 ### 例 フラットな構造: ``` const theme = { tokens: { "body-default-font-size": "14px", "body-default-font-weight": "400" "body-default-text-decoration": "none", "body-default-bold-line-height": "20px", } }; ``` 入れ子構造: ``` const theme = { tokens: { Body: { Default: { "font-size": "14px", "font-weight": "400", "text-decoration": "none", } "Default Bold": { "line-height": "20px", } } } }; ``` ## 境界線の色 16進カラー、RGB、特定のブラウザに依存しないカラー名など、任意のCSSカラー値を渡すことができます。 | トークン | デフォルト値 | 説明 | | --- | --- | --- | | border-checkbox-border | #6f6f6f | チェックボックスのデフォルトの境界線の色。 | | border-checkbox-border-hover | #4e4e4e | チェックボックスにカーソルを合わせたときの境界線の色。 | | border-checkbox-border-selected | #0061d5 | オンにしたチェックボックスの境界線の色。 | | border-checkbox-border-selected-hover | #2079e3 | オンにしたチェックボックスにカーソルを合わせたときの境界線の色。 | | border-cta-border-outline | #000000 | 背景が透明のセカンダリボタンの境界線。 | | border-cta-border-outline-disabled | #646464 | 無効なアウトラインボタンの境界線。 | | border-cta-border-outline-hover | #000000 | カーソルを合わせたときのアウトラインボタンの境界線。 | | border-cta-border-outline-pressed | #000000 | 押したときのアウトラインボタンの境界線。 | | border-cta-border-secondary | #bcbcbc | セカンダリボタンの境界線。 | | border-cta-border-secondary-disabled | #e8e8e8 | 無効なセカンダリボタンの境界線。 | | border-cta-border-secondary-hover | #bcbcbc | カーソルを合わせたときのセカンダリボタンの境界線。 | | border-cta-border-secondary-pressed | #bcbcbc | 押したときのセカンダリボタンの境界線。 | | border-divider-border | #e8e8e8 | 水平方向の行区切り記号。 | | border-dropdown-border | #bcbcbc | ドロップダウンメニューの境界線。 | | border-gridthumbnail-border | #e8e8e8 | グリッドビューにおける項目 (ファイル/フォルダ) のサムネイルの境界線。 | | border-input-border | #909090 | テキスト入力の境界線。 | | border-input-border-error | #ed3757 | エラーが発生しているテキスト入力の境界線。 | | border-input-border-focus | #2486fc | フォーカスされたテキスト入力の境界線。 | | border-input-border-hover | #6f6f6f | カーソルを合わせたときのテキスト入力の境界線。 | | border-search-border | #f4f4f4 | 検索入力の境界線。 | | border-search-border-hover | #6f6f6f | カーソルを合わせたときの検索入力の境界線。 | | border-switch-border | #bcbcbc | 切り替えスイッチの境界線。 | | border-switch-border-hover | #bcbcbc | カーソルを合わせたときの切り替えスイッチの境界線。 | | border-tooltip-border-error | #f69bab | エラーのツールチップの境界線。 | ## アイコンの色 ボタンやドロップダウンなどのインタラクティブなアイコンのスタイルのみを設定できます。 | トークン | デフォルト値 | 説明 | | --- | --- | --- | | icon-cta-icon | #6f6f6f | ボタンのアイコンのデフォルトの色。 | | icon-cta-icon-hover | #222222 | カーソルを合わせたときのボタンのアイコンの色。 | | icon-cta-icon-pressed | #222222 | 押したときのボタンのアイコンの色。 | ## アウトラインの色 | トークン | デフォルト値 | 説明 | | --- | --- | --- | | outline-focus-on-dark | #ffffff | 背景が暗い場合のフォーカスアウトラインの色。 | | outline-focus-on-light | #2486fc | 背景が明るい場合のフォーカスアウトラインの色。 | ## 表面色 | トークン | デフォルト値 | 説明 | | --- | --- | --- | | surface-checkbox-surface | #ffffff | チェックボックスの背景色。 | | surface-checkbox-surface-hover | #ffffff | カーソルを合わせたときのチェックボックスの背景色。 | | surface-checkbox-surface-selected | #0061d5 | オンにしたチェックボックスの背景色。 | | surface-checkbox-surface-selected-hover | #2079e3 | カーソルを合わせたときのオンにしたチェックボックスの背景色。 | | surface-cta-surface-icon | rgba(0, 0, 0, 0) | アイコンボタンの背景。 | | surface-cta-surface-icon-disabled | rgba(0, 0, 0, 0) | 無効なアイコンボタンの背景。 | | surface-cta-surface-icon-hover | rgba(0, 0, 0, 0.04) | カーソルを合わせたときのアイコンボタンの背景。 | | surface-cta-surface-icon-pressed | rgba(0, 0, 0, 0.08) | 押したときのアイコンボタンの背景。 | | surface-cta-surface-outline | rgba(0, 0, 0, 0) | 背景が透明のセカンダリボタンの背景。 | | surface-cta-surface-outline-hover | rgba(0, 0, 0, 0.04) | カーソルを合わせたときのアウトラインボタンの背景。 | | surface-cta-surface-outline-pressed | rgba(0, 0, 0, 0.08) | 押したときのアウトラインボタンの背景。 | | surface-cta-surface-secondary | #ffffff | セカンダリボタンの背景。 | | surface-cta-surface-secondary-hover | #f4f4f4 | カーソルを合わせたときのセカンダリボタンの背景。 | | surface-cta-surface-secondary-pressed | #e8e8e8 | 押したときのセカンダリボタンの背景。 | | surface-cta-surface-tertiary | #ffffff | リンク形式のボタンの背景。 | | surface-cta-surface-tertiary-hover | #f4f4f4 | カーソルを合わせたときのリンク形式のボタンの背景。 | | surface-cta-surface-tertiary-pressed | #e8e8e8 | 押したときのリンク形式のボタンの背景。 | | surface-dropdown-surface | #ffffff | ドロップダウンメニューの背景。 | | surface-dropdown-surface-error | #ffffff | エラーが発生しているドロップダウンメニューの背景。 | | surface-dropdown-surface-focus | #ffffff | フォーカスされたドロップダウンメニューの背景。 | | surface-dropdown-surface-hover | #ffffff | カーソルを合わせたときのドロップダウンメニューの背景。 | | surface-illustration-surface-box-neutral | #0061d5 | イラスト (詳細なアイコン) の色。 | | surface-input-surface | #ffffff | テキスト入力の背景。 | | surface-input-surface-error | #ffffff | エラーが発生しているテキスト入力の背景。 | | surface-input-surface-focus | #ffffff | フォーカスされたテキスト入力の背景。 | | surface-input-surface-hover | #ffffff | カーソルを合わせたときのテキスト入力の背景。 | | surface-menu-surface | #ffffff | ドロップダウンメニューオプションの背景。 | | surface-menu-surface-focus | #f4f4f4 | フォーカスしたメニュー項目の背景。 | | surface-menu-surface-hover | #f4f4f4 | カーソルを合わせたときのメニュー項目の背景。 | | surface-search-surface | #f4f4f4 | 検索入力の背景。 | | surface-search-surface-focused | #ffffff | フォーカスされた検索入力の背景。 | | surface-search-surface-hover | #fbfbfb | カーソルを合わせたときの検索入力の背景。 | | surface-sliderthumb-surface | #0061d5 | 範囲スライダのつまみの色。 | | surface-sliderthumb-surface-hover | #2486fc | カーソルを合わせたときの範囲スライダのつまみの色。 | | slidertrack-surface | #6f6f6f | 範囲スライダのトラックの色。 | | surface-surface | #ffffff | 一般的な背景色。 | | surface-surface-brand | #0061d5 | プライマリボタンの背景。 | | surface-surface-brand-disabled | #0061d5 | 無効なプライマリボタンの背景。 | | surface-surface-brand-hover | #006ae9 | カーソルを合わせたときのプライマリボタンの背景。 | | surface-surface-brand-pressed | #004eac | 押したときのプライマリボタンの背景。 | | surface-switch-surface | #ffffff | 切り替えスイッチの背景。 | | surface-switch-surface-off | #d3d3d3 | オフの状態の切り替えスイッチの背景。 | | surface-switch-surface-on | #0061d5 | オンの状態の切り替えスイッチの背景。 | | surface-tooltip-surface | #4e4e4e | ツールチップの背景。 | | surface-tooltip-surface-error | #fdebee | エラーのツールチップの背景。 | ## テキストの色 | トークン | デフォルト値 | 説明 | | --- | --- | --- | | text-cta-link | #0061d5 | ハイパーリンクの色。 | | text-cta-link-disabled | #b2cff2 | 無効なハイパーリンクの色。 | | text-cta-link-hover | #1d6bca | カーソルを合わせたときのハイパーリンクの色。 | | text-cta-link-pressed | #2486fc | 押したときのハイパーリンクの色。 | | text-text-error-on-light | #d5324e | 背景が明るい場合のエラーテキストの色。 | | text-text-on-dark | #ffffff | 背景が暗い場合のテキストの色。 | | text-text-on-light | #222222 | 背景が明るい場合のプライマリテキストの色。 | | text-text-on-light-secondary | #6f6f6f | 背景が明るい場合のセカンダリテキストの色。 | | text-text-on-light-secondary-hover | #4e4e4e | カーソルを合わせたときのセカンダリテキストの色。 | ## タイポグラフィのトークン 表内のコメントは、ルートフォントサイズの16ピクセルに基づいて計算されたピクセル数を示しています。 | トークン | デフォルト値 | 説明 | | --- | --- | --- | | body-default-font-family | Lato, "Helvetica Neue", sans-serif | 本文テキストのフォントファミリ。 | | body-default-font-size | 0.875rem | 本文テキストのフォントサイズ。 | | body-default-font-weight | 400 | 本文テキストのフォントの太さ。 | | body-default-letter-spacing | 0.01875rem | 本文テキストの文字間隔。 | | body-default-line-height | 1.25rem | 本文テキストの行の高さ。 | | body-default-text-decoration | none | 本文テキストの装飾。 | | body-default-bold-font-family | Lato, "Helvetica Neue", sans-serif | 本文テキスト (太字) のフォントファミリ。 | | body-default-bold-font-size | 0.875rem | 本文テキスト (太字) のフォントサイズ。 | | body-default-bold-font-weight | 700 | 本文テキスト (太字) のフォントの太さ。 | | body-default-bold-letter-spacing | 0.01875rem | 本文テキスト (太字) の文字間隔。 | | body-default-bold-line-height | 1.25rem | 本文テキスト (太字) の行の高さ。 | | body-default-bold-text-decoration | none | 本文テキスト (太字) の装飾。 | | body-default-semibold-font-family | Lato, "Helvetica Neue", sans-serif | 本文テキスト (半太字) のフォントファミリ。 | | body-default-semibold-font-size | 0.875rem | 本文テキスト (半太字) のフォントサイズ。 | | body-default-semibold-font-weight | 600 | 本文テキスト (半太字) のフォントの太さ。 | | body-default-semibold-letter-spacing | 0.01875rem | 本文テキスト (半太字) の文字間隔。 | | body-default-semibold-line-height | 1.25rem | 本文テキスト (半太字) の行の高さ。 | | body-default-semibold-text-decoration | none | 本文テキスト (半太字) の装飾。 | | body-large-font-family | Lato, "Helvetica Neue", sans-serif | 本文テキスト (大) のフォントファミリ。 | | body-large-font-size | 1rem | 本文テキスト (大) のフォントサイズ。 | | body-large-font-weight | 400 | 本文テキスト (大) のフォントの太さ。 | | body-large-letter-spacing | 0.01875rem | 本文テキスト (大) の文字間隔。 | | body-large-line-height | 1.5rem | 本文テキスト (大) の行の高さ。 | | body-large-text-decoration | none | 本文テキスト (大) の装飾。 | | body-large-bold-font-family | Lato, "Helvetica Neue", sans-serif | 本文テキスト (大、太字) のフォントファミリ。 | | body-large-bold-font-size | 1rem | 本文テキスト (大、太字) のフォントサイズ。 | | body-large-bold-font-weight | 700 | 本文テキスト (大、太字) のフォントの太さ。 | | body-large-bold-letter-spacing | 0.01875rem | 本文テキスト (大、太字) の文字間隔。 | | body-large-bold-line-height | 1.5rem | 本文テキスト (大、太字) の行の高さ。 | | body-large-bold-text-decoration | none | 本文テキスト (大、太字) の装飾。 | | caption-bold-font-family | Lato, "Helvetica Neue", sans-serif | キャプション (太字) のフォントファミリ。 | | caption-bold-font-size | 0.75rem | キャプション (太字) のフォントサイズ。 | | caption-bold-font-weight | 700 | キャプション (太字) のフォントの太さ。 | | caption-bold-letter-spacing | 0.01875rem | キャプション (太字) の文字間隔。 | | caption-bold-line-height | 0.875rem | キャプション (太字) の行の高さ。 | | caption-bold-text-decoration | none | キャプション (太字) のテキストの装飾。 | | caption-default-font-family | Lato, "Helvetica Neue", sans-serif | キャプションのフォントファミリ。 | | caption-default-font-size | 0.75rem | キャプションのフォントサイズ。 | | caption-default-font-weight | 400 | キャプションのフォントの太さ。 | | caption-default-letter-spacing | 0.01875rem | キャプションの文字間隔。 | | caption-default-line-height | 0.875rem | キャプションの行の高さ。 | | caption-default-text-decoration | none | キャプションのテキストの装飾。 | | label-bold-font-family | Lato, "Helvetica Neue", sans-serif | ラベル (太字) のフォントファミリ。 | | label-bold-font-size | 0.625rem | ラベル (太字) のフォントサイズ。 | | label-bold-font-weight | 700 | ラベル (太字) のフォントの太さ。 | | label-bold-letter-spacing | 0.0375rem | ラベル (太字) の文字間隔。 | | label-bold-line-height | 1rem | ラベル (太字) の行の高さ。 | | label-bold-text-decoration | none | ラベル (太字) のテキストの装飾。 | | label-default-font-family | Lato, "Helvetica Neue", sans-serif | ラベルのフォントファミリ。 | | label-default-font-size | 0.625rem | ラベルのフォントサイズ。 | | label-default-font-weight | 400 | ラベルのフォントの太さ。 | | label-default-letter-spacing | 0.0375rem | ラベルの文字間隔。 | | label-default-line-height | 1rem | ラベルの行の高さ。 | | label-default-text-decoration | none | ラベルのテキストの装飾。 | | link-default-font-family | Lato, "Helvetica Neue", sans-serif | ハイパーリンクのフォントファミリ。 | | link-default-font-size | 0.875rem | ハイパーリンクのフォントサイズ。 | | link-default-font-weight | 400 | ハイパーリンクのフォントの太さ。 | | link-default-letter-spacing | 0.01875rem | ハイパーリンクの文字間隔。 | | link-default-line-height | 1.25rem | ハイパーリンクの行の高さ。 | | link-default-text-decoration | underline | ハイパーリンクのテキストの装飾。 | | notification-default-font-family | Lato, "Helvetica Neue", sans-serif | 通知のフォントファミリ。 | | notification-default-font-size | 0.5625rem | 通知のフォントサイズ。 | | notification-default-font-weight | 700 | 通知のフォントの太さ。 | | notification-default-letter-spacing | 0.01875rem | 通知の文字間隔。 | | notification-default-line-height | 0.75rem | 通知の行の高さ。 | | notification-default-text-decoration | none | 通知のテキストの装飾。 | | title-large-font-family | Lato, "Helvetica Neue", sans-serif | タイトル (大) のフォントファミリ。 | | title-large-font-size | 1.125rem | タイトル (大) のフォントサイズ。 | | title-large-font-weight | 700 | タイトル (大) のフォントの太さ。 | | title-large-letter-spacing | 0.01875rem | タイトル (大) の文字間隔。 | | title-large-line-height | 1.5rem | タイトル (大) の行の高さ。 | | title-large-text-decoration | none | タイトル (大) のテキストの装飾。 | | title-medium-font-family | Lato, "Helvetica Neue", sans-serif | タイトル (中) のフォントファミリ。 | | title-medium-font-size | 1rem | タイトル (中) のフォントサイズ。 | | title-medium-font-weight | 700 | タイトル (中) のフォントの太さ。 | | title-medium-letter-spacing | 0.01875rem | タイトル (中) の文字間隔。 | | title-medium-line-height | 1.5rem | タイトル (中) の行の高さ。 | | title-medium-text-decoration | none | タイトル (中) のテキストの装飾。 | | title-small-font-family | Lato, "Helvetica Neue", sans-serif | タイトル (小) のフォントファミリ。 | | title-small-font-size | 0.9375rem | タイトル (小) のフォントサイズ。 | | title-small-font-weight | 700 | タイトル (小) のフォントの太さ。 | | title-small-letter-spacing | 0.01875rem | タイトル (小) の文字間隔。 | | title-small-line-height | 1.25rem | タイトル (小) の行の高さ。 | | title-small-text-decoration | none | タイトル (小) のテキストの装飾。 | | title-subtitle-font-family | Lato, "Helvetica Neue", sans-serif | サブタイトルのフォントファミリ。 | | title-subtitle-font-size | 0.875rem | サブタイトルのフォントサイズ。 | | title-subtitle-font-weight | 700 | サブタイトルのフォントの太さ。 | | title-subtitle-letter-spacing | 0.01875rem | サブタイトルの文字間隔。 | | title-subtitle-line-height | 1.25rem | サブタイトルの行の高さ。 | | title-subtitle-text-decoration | none | サブタイトルのテキストの装飾。 | | title-x-large-font-family | Lato, "Helvetica Neue", sans-serif | タイトル (特大) のフォントファミリ。 | | title-x-large-font-size | 1.3125rem | タイトル (特大) のフォントサイズ。 | | title-x-large-font-weight | 700 | タイトル (特大) のフォントの太さ。 | | title-x-large-letter-spacing | 0.01875rem | タイトル (特大) の文字間隔。 | | title-x-large-line-height | 2rem | タイトル (特大) の行の高さ。 | | title-x-large-text-decoration | none | タイトル (特大) のテキストの装飾。 | ## 間隔、サイズ、形状のトークン 表内のコメントは、ルートフォントサイズの16ピクセルに基づいて計算されたピクセル数を示しています。 | トークン | デフォルト値 | 説明 | | --- | --- | --- | | border-1 | 0.0625rem | 境界線の幅 (1ピクセルに相当)。 | | border-2 | 0.125rem | 境界線の幅 (2ピクセルに相当)。 | | border-3 | 0.1875rem | 境界線の幅 (3ピクセルに相当)。 | | border-4 | 0.25rem | 境界線の幅 (4ピクセルに相当)。 | | border-6 | 0.375rem | 境界線の幅 (6ピクセルに相当)。 | | border-8 | 0.5rem | 境界線の幅 (8ピクセルに相当)。 | | dropshadow-1 | 0 0 0.5rem 0 rgba(0, 0, 0, 0.05) | 微妙なシャドウ効果。 | | dropshadow-2 | 0 0.0625rem 0.25rem 0 rgba(0, 0, 0, 0.1) | 中程度のシャドウ効果。 | | dropshadow-3 | 0 0.25rem 0.75rem 0 rgba(0, 0, 0, 0.1) | 顕著なシャドウ効果。 | | radius-05 | 0.125rem | 境界線の半径 (2ピクセルに相当)。 | | radius-1 | 0.25rem | 境界線の半径 (4ピクセルに相当)。 | | radius-2 | 0.375rem | 境界線の半径 (6ピクセルに相当)。 | | radius-3 | 0.5rem | 境界線の半径 (8ピクセルに相当)。 | | radius-4 | 0.75rem | 境界線の半径 (12ピクセルに相当)。 | | radius-5 | 1rem | 境界線の半径 (16ピクセルに相当)。 | | radius-6 | 1.25rem | 境界線の半径 (20ピクセルに相当)。 | | radius-7 | 1.5rem | 境界線の半径 (24ピクセルに相当)。 | | radius-8 | 1.75rem | 境界線の半径 (28ピクセルに相当)。 | | radius-half | 2rem | 境界線の半径 (32ピクセルに相当)。 | | size-05 | 0.125rem | サイズ指定 (2ピクセルに相当)。 | | size-1 | 0.25rem | サイズ指定 (4ピクセルに相当)。 | | size-2 | 0.5rem | サイズ指定 (8ピクセルに相当)。 | | size-3 | 0.75rem | サイズ指定 (12ピクセルに相当)。 | | size-4 | 1rem | サイズ指定 (16ピクセルに相当)。 | | size-5 | 1.25rem | サイズ指定 (20ピクセルに相当)。 | | size-6 | 1.5rem | サイズ指定 (24ピクセルに相当)。 | | size-7 | 1.75rem | サイズ指定 (28ピクセルに相当)。 | | size-8 | 2rem | サイズ指定 (32ピクセルに相当)。 | | size-9 | 2.25rem | サイズ指定 (36ピクセルに相当)。 | | size-10 | 2.5rem | サイズ指定 (40ピクセルに相当)。 | | size-11 | 2.75rem | サイズ指定 (44ピクセルに相当)。 | | size-12 | 3rem | サイズ指定 (48ピクセルに相当)。 | | size-14 | 3.5rem | サイズ指定 (56ピクセルに相当)。 | | size-15 | 3.75rem | サイズ指定 (60ピクセルに相当)。 | | size-16 | 4rem | サイズ指定 (64ピクセルに相当)。 | | size-18 | 4.5rem | サイズ指定 (72ピクセルに相当)。 | | size-20 | 5rem | サイズ指定 (80ピクセルに相当)。 | | space-05 | 0.125rem | 間隔指定 (2ピクセルに相当)。 | | space-1 | 0.25rem | 間隔指定 (4ピクセルに相当)。 | | space-2 | 0.5rem | 間隔指定 (8ピクセルに相当)。 | | space-3 | 0.75rem | 間隔指定 (12ピクセルに相当)。 | | space-4 | 1rem | 間隔指定 (16ピクセルに相当)。 | | space-5 | 1.25rem | 間隔指定 (20ピクセルに相当)。 | | space-6 | 1.5rem | 間隔指定 (24ピクセルに相当)。 | | space-7 | 1.75rem | 間隔指定 (28ピクセルに相当)。 | | space-8 | 2rem | 間隔指定 (32ピクセルに相当)。 | | space-9 | 2.25rem | 間隔指定 (36ピクセルに相当)。 | | space-10 | 2.5rem | 間隔指定 (40ピクセルに相当)。 | | space-11 | 2.75rem | 間隔指定 (44ピクセルに相当)。 | | space-12 | 3rem | 間隔指定 (48ピクセルに相当)。 | | space-14 | 3.5rem | 間隔指定 (56ピクセルに相当)。 | | space-15 | 3.75rem | 間隔指定 (60ピクセルに相当)。 | | space-16 | 4rem | 間隔指定 (64ピクセルに相当)。 | | space-18 | 4.5rem | 間隔指定 (72ピクセルに相当)。 | | space-20 | 5rem | 間隔指定 (80ピクセルに相当)。 | **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/ui-elements-design-tokens/](https://ja.developer.box.com/guides/embed/ui-elements/ui-elements-design-tokens/) --- ### User Event **Type:** guide | **Category:** イベント | **Section:** Developer Guides User Event User Eventは、現在認証されているユーザーに関連する、低レイテンシのイベントストリームを提供します。このイベントストリームにより、Box Driveは常に最新の状態で維持されますが、このイベントストリームは開発者向けにも提供されています。 # User Event User Eventは、現在認証されているユーザーに関連する、低レイテンシのイベントストリームを提供します。このイベントストリームにより、Box Driveは常に最新の状態で維持されますが、このイベントストリームは開発者向けにも提供されています。 **Source:** [https://ja.developer.box.com/guides/events/user-events/](https://ja.developer.box.com/guides/events/user-events/) --- ### User Eventの取得 **Type:** guide | **Category:** イベント | **Section:** Developer Guides User Eventの取得 User Eventを取得するには、任意のユーザーとして認証し、GET /events APIを呼び出します。 返されるイベントは、API… # User Eventの取得 User Eventを取得するには、任意のユーザーとして認証し、[`GET /events`](e://get_events) APIを呼び出します。 返されるイベントは、APIの作成に使用したアクセストークンを所有するユーザーのみを対象とします。別のユーザーのイベントフィードを取得するには、`as-user`ヘッダーか、そのユーザーの実際のアクセストークンを使用します。 ## ストリームタイプ User Event Streamでは、3つのタイプのストリームがサポートされます。 | ストリームタイプ | | | --- | --- | | all | ユーザーに関するすべてのイベントを返します (デフォルト)。 | | changes | ファイルの更新やコラボレーションなど、ファイルツリーを変更する可能性があるイベントを返します。 | | sync | 変更に似ていますが、同期対象フォルダにのみ適用されます。 | ## 匿名ユーザー 場合によっては、イベントフィードには、IDが`2`のユーザーが表示される可能性があります。これは、匿名ユーザーを表すBoxの内部識別子です。 匿名ユーザーは、ログインしていないユーザーです。この状況は、ユーザーがコンテンツを操作し、最初にログインを求められない場合にいつでも発生する可能性があります。たとえば、ユーザーが、公開共有リンクを使用してファイルをダウンロードするときなどです。 ## 制限 Boxでのイベントの保存は無期限ではありません。 User Eventは2週間から2か月間保存され、その後、保存されたUser Eventは削除されます。Enterprise Eventには、APIを介した場合は1年間、Box管理コンソールのエクスポートされたレポート経由の場合は7年間アクセスできます。 このフィードでは、完全な結果を迅速に返すことを重視しています。つまり、Boxではイベントを複数回または異なる順序で返す可能性があります。重複するイベントは、イベントIDによって識別できます。 ## Long polling User Event Streamでは、[`OPTIONS /events` APIを介して](g://events/user-events/polling)Long pollingがサポートされます。 ## イベントタイプ ユーザーに対して、以下のイベントがトリガーされます。このリストですべてを網羅しているわけではないため、記載されていないイベントが表示される可能性もあります。 以下のイベントは、すべてのフィードで使用できます。 | イベント名 | 説明 | | --- | --- | | ITEM_CREATE | フォルダまたはファイルが作成されました。 | | ITEM_UPLOAD | フォルダまたはファイルがアップロードされました。 | | ITEM_MOVE | ファイルまたはフォルダが移動されました。 | | ITEM_COPY | ファイルまたはフォルダがコピーされました。 | | LOCK_CREATE | ファイルがロックされました。 | | LOCK_DESTROY | ファイルがロック解除されました。ロックされたファイルが削除されると、ソースファイルはnullになります。 | | ITEM_TRASH | ファイルまたはフォルダが削除済みとしてマークされました。 | | ITEM_UNDELETE_VIA_TRASH | ファイルまたはフォルダがごみ箱から戻されました。 | | COLLAB_ADD_COLLABORATOR | コラボレータがフォルダに追加されました。 | | COLLAB_ROLE_CHANGE | コラボレータの役割が変更されました。 | | COLLAB_INVITE_COLLABORATOR | コラボレータがフォルダに招待されました。 | | COLLAB_REMOVE_COLLABORATOR | コラボレータがフォルダから削除されました。 | | ITEM_SYNC | フォルダが同期対象としてマークされました。 | | ITEM_UNSYNC | フォルダの同期対象のマークが解除されました。 | | ITEM_RENAME | ファイルまたはフォルダの名前が変更されました。 | | ITEM_MAKE_CURRENT_VERSION | 前のバージョンのファイルが現在のバージョンに昇格されました。 | | GROUP_ADD_USER | グループへのユーザーの追加 | | GROUP_REMOVE_USER | グループからのユーザーの削除 | 以下のイベントは、`all`フィードでのみ使用できます。 | イベント名 | 説明 | | --- | --- | | COMMENT_CREATE | フォルダ、ファイル、または他のコメントに対するコメントが作成されました。 | | COMMENT_DELETE | フォルダ、ファイル、または他のコメントに対するコメントが削除されました。 | | ITEM_DOWNLOAD | ファイルまたはフォルダがダウンロードされました。 | | ITEM_PREVIEW | ファイルがプレビューされました。 | | TASK_ASSIGNMENT_CREATE | タスクが割り当てられました。 | | TASK_CREATE | タスクが作成されました。 | | ITEM_SHARED_CREATE | ファイルまたはフォルダの共有が有効化されました。 | | ITEM_SHARED_UNSHARE | ファイルまたはフォルダの共有が無効化されました。 | | ITEM_SHARED | フォルダが共有されました。 | | TAG_ITEM_CREATE | タグがファイルまたはフォルダに追加されました。 | | ENABLE_TWO_FACTOR_AUTH | ユーザーによって2要素認証が有効化されました。 | | MASTER_INVITE_ACCEPT | 管理対象ユーザーになるための招待が無料ユーザーによって承認されました。 | | MASTER_INVITE_REJECT | 管理対象ユーザーになるための招待が無料ユーザーによって拒否されました。 | | ACCESS_GRANTED | アカウントに対するBoxのアクセス権限が付与されました。 | | ACCESS_REVOKED | アカウントに対するBoxのアクセス権限が取り消されました。 | ## イベント通知 イベントストリームのノイズを低減し、イベントの利用を最適化するために、表に示されているイベントタイプでは、トリガーする通知の数が制限されています。 | イベントタイプ | 通知の動作 | | --- | --- | | COLLAB_ADD_COLLABORATOR, COLLAB_REMOVE_COLLABORATOR, COLLAB_INVITE_COLLABORATOR, COLLAB_ROLE_CHANGE | これらのイベントが発生すると、changesイベントストリームのコンテンツ所有者に通知が送信されます。コラボレータには、allストリーム上に表示されるイベントと一致する追加のイベントが表示されます。 | | ITEM_DOWNLOAD | 項目がダウンロードされると、コンテンツ所有者だけが通知を受信します。コラボレータには通知されません。 | | ITEM_PREVIEW | 項目がプレビューされると、コンテンツ所有者だけが通知を受信します。コラボレータには通知されません。 | **Source:** [https://ja.developer.box.com/guides/events/user-events/for-user/](https://ja.developer.box.com/guides/events/user-events/for-user/) --- ### V1 Webhook **Type:** guide | **Category:** Webhook | **Section:** Developer Guides V1 Webhook 開発者コンソールを使用して作成されたWebhookは、ユーザーのアカウント内のすべてのファイルとフォルダに対する変更を監視します。このようなWebhookを作成する際は、Webhook… # V1 Webhook [開発者コンソール](https://app.box.com/developers/console)を使用して作成されたWebhookは、ユーザーのアカウント内のすべてのファイルとフォルダに対する変更を監視します。このようなWebhookを作成する際は、Webhookのバインド先として特定のオブジェクトを指定することはできません。特定のファイルまたはフォルダ用にWebhookを作成するには、[V2 Webhook](g://webhooks/v2)を使用する必要があります。 このプロセスで作成されたWebhookは、APIコールでユーザーのすべてのWebhookのリストを取得しても表示されません。すべてのV1 Webhookは、[開発者コンソール](https://app.box.com/developers/console)の [**Webhook**] タブに表示されます。 **Source:** [https://ja.developer.box.com/guides/webhooks/v1/](https://ja.developer.box.com/guides/webhooks/v1/) --- ### V2 Webhook **Type:** guide | **Category:** Webhook | **Section:** Developer Guides V2 Webhook フロー イベントによってファイルまたはフォルダのWebhookがトリガーされると、Webhookの作成時に指定したaddressに対してHTTP呼び出しが実行されます。この呼び出しのペイロードには、いくつかのリクエストヘッダーとJSON… # V2 Webhook ## フロー イベントによってファイルまたはフォルダのWebhookがトリガーされると、Webhookの作成時に指定した`address`に対してHTTP呼び出しが実行されます。この呼び出しのペイロードには、いくつかのリクエストヘッダーとJSON本文が含まれます。 ## ペイロードヘッダー Webhookによって送信されたペイロードには、以下のBox固有のヘッダーが含まれます。 | ヘッダー | 説明 | | --- | --- | | BOX-DELIVERY-ID | 配信されたWebhookペイロードを識別する、Boxによって割り当てられた一意のID。BoxがWebhookを再試行すると、このIDは変わりますが、ペイロード本文のIDは変わりません。 | | BOX-DELIVERY-TIMESTAMP | ペイロードの送信日時を識別するRFC-3339タイムスタンプ。 | | BOX-SIGNATURE-PRIMARY | このWebhook用に設定されたプライマリ署名キーを使用して作成された署名。 | | BOX-SIGNATURE-SECONDARY | このWebhook用に設定されたセカンダリ署名キーを使用して作成された署名。 | | BOX-SIGNATURE-VERSION | 値は常に1。 | | BOX-SIGNATURE-ALGORITHM | 値は常にHmacSHA256。 | 例: ``` BOX-DELIVERY-ID: 673a081b-bb4b-4d45-b4f1-4131a29c1d07 BOX-DELIVERY-TIMESTAMP: 2016-07-11T10:10:33-07:00 BOX-SIGNATURE-PRIMARY: isCeDp7mLR41/MjcSEFLag9bWmpJkgmN80Je4VIESdo= BOX-SIGNATURE-SECONDARY: 1UbiiKS7/2o5vNIlyMh7e5QGCHq8lflWFgEF+YWBugI= BOX-SIGNATURE-VERSION: 1 BOX-SIGNATURE-ALGORITHM: HmacSHA256 USER-AGENT: Box-WH-Client/0.1 ``` Webhookペイロードの[設定](g://webhooks/v2/signatures-v2)と[署名の検証](g://webhooks/v2/signatures-v2)を行うことをお勧めします。 HTTPヘッダー名では大文字と小文字が区別されません。クライアントでは、すべてのヘッダーの名前を標準化された小文字または大文字の形式に変換してから、ヘッダーの値を確認する必要があります。 ## ペイロード本文 Webhookペイロードの本文は、Webhookをトリガーしたファイルまたはフォルダ (ターゲット)、およびトリガーされたイベントを記述するJSONオブジェクトです。 | フィールド | 説明 | | --- | --- | | type | 値は常にwebhook_event。 | | id | イベントを識別する、Boxによって割り当てられた一意のID。BoxがWebhookを再試行しても、このIDは変わりませんが、ヘッダーのIDは呼び出しのたびに変わります。 | | created_at | イベントがトリガーされた日時。 | | trigger | イベントをトリガーしたアクションの名前 (例: FILE.UPLOADED)。 | | webhook | イベントがトリガーされたWebhook ID。 | | created_by | イベントをトリガーしたユーザー。 | | source | イベントをトリガーした項目 (例: ターゲットフォルダにアップロードされたファイル)。 | 例: ``` { "type": "webhook_event", "id": "eb0c4e06-751f-442c-86f8-fd5bb404dbec", "created_at": "2016-07-11T10:10:32-07:00", "trigger": "FILE.UPLOADED", "webhook": { "id": "53", "type": "webhook" }, "created_by": { "type": "user", "id": "226067247", "name": "John Q. Developer", "login": "johnq@dev.name" }, "source": { "id": "73835521473", "type": "file", "file_version": { "type": "file_version", "id": "78096737033", "sha1": "2c61623e86bee78e6ab444af456bccc7a1164095" }, "sequence_id": "0", "etag": "0", "sha1": "2c61623e86bee78e6ab444af456bccc7a1164095", "name": "Test-Image-3.png", "description": "", "size": 26458, "path_collection": { "total_count": 4, "entries": [ { "type": "folder", "id": "0", "sequence_id": null, "etag": null, "name": "All Files" }, { "type": "folder", "id": "2614853901", "sequence_id": "4", "etag": "4", "name": "Testing" }, { "type": "folder", "id": "8290186265", "sequence_id": "0", "etag": "0", "name": "Webhooks Base" }, { "type": "folder", "id": "8290188973", "sequence_id": "0", "etag": "0", "name": "Webhooks" } ] }, "created_at": "2016-07-11T10:10:32-07:00", "modified_at": "2016-07-11T10:10:32-07:00", "trashed_at": null, "purged_at": null, "content_created_at": "2016-06-08T11:14:04-07:00", "content_modified_at": "2016-06-08T11:14:04-07:00", "created_by": { "type": "user", "id": "226067247", "name": "John Q. Developer", "login": "johnq@dev.name" }, "modified_by": { "type": "user", "id": "226067247", "name": "John Q. Developer", "login": "johnq@dev.name" }, "owned_by": { "type": "user", "id": "226067247", "name": "John Q. Developer", "login": "johnq@dev.name" }, "shared_link": null, "parent": { "type": "folder", "id": "8290188973", "sequence_id": "0", "etag": "0", "name": "Webhooks" }, "item_status": "active" }, "additional_info": [] } ``` ## 再試行 Boxがペイロードを送信してから30秒以内に、`200`から`299`の範囲のHTTPステータスコードを含むレスポンスが表示されない場合、Webhookペイロードの配信は失敗します。 Boxは2時間でWebhook配信を最大12回再試行します。この回数と期間は今後変更される可能性があります。 **Source:** [https://ja.developer.box.com/guides/webhooks/v2/](https://ja.developer.box.com/guides/webhooks/v2/) --- ### Webhook **Type:** guide | **Category:** Webhook | **Section:** Developer Guides Webhook Webhookを使用すると、Boxコンテンツのイベントを監視し、イベントの発生時に任意のURLへの通知を受け取ることができます。たとえば、ワークフローには、共有リンクを削除するためのファイルダウンロードの待機が含まれる場合があります。このファイルにWebhook… # Webhook Webhookを使用すると、Boxコンテンツのイベントを監視し、イベントの発生時に任意のURLへの通知を受け取ることができます。たとえば、ワークフローには、共有リンクを削除するためのファイルダウンロードの待機が含まれる場合があります。このファイルにWebhookを設定すれば、ダウンロードイベントが通知されたときに、スクリプトが起動し、共有リンクを削除するためのAPIコールを実行できます。 ## バージョン WebhookにはV1とV2の2種類があります。この2つの比較を以下に示します。 使いやすさ、セキュリティの強さ、選択できるイベントトリガーの多さ、自動的に再試行されるという観点から、V2 Webhookを使用することをお勧めします。 | V1 | V2 | | --- | --- | | 開発者コンソールで作成。 | 開発者コンソールまたはAPIコールで作成。 | | ルートレベルに設定。 | 特定のファイル/フォルダに設定 (ただしルートには設定不可)。 | | 14のイベントトリガーから選択。 | 30以上のイベントトリガーから選択。 | | 選択したコールバックパラメータを提供。 | ペイロードに、オブジェクトレスポンスと追加のコンテキスト情報がすべて含まれる。 | | 通知配信の失敗後の再試行メカニズムなし。 | 通知配信の失敗後、10回まで再試行可能。 | | ペイロード検証をサポートしない。 | ペイロード検証をサポート。 | | 通知URLはHTTPまたはHTTPSを指定可。 | 通知URLはHTTPSのみ指定可。 | | 拡張性が低い。 | 拡張性に優れ、信頼性が高い。 | **Source:** [https://ja.developer.box.com/guides/webhooks/](https://ja.developer.box.com/guides/webhooks/) --- ### Webhookイベントトリガー **Type:** guide | **Category:** Webhook | **Section:** Developer Guides Webhookイベントトリガー V2 ファイルとフォルダ 以下は、V2 Webhook… # Webhookイベントトリガー ## V2 ### ファイルとフォルダ 以下は、V2 Webhookをトリガーするよう構成できるイベントのリストです。ファイルに対してのみ使用できるイベントや、フォルダに対してのみ使用できるイベントもあります。 | イベント | トリガー | ファイルに使用可能か | フォルダに使用可能か | | --- | --- | --- | --- | | COLLABORATION.CREATED | コラボレーションが作成される。 | いいえ | はい | | COLLABORATION.ACCEPTED | コラボレーションが承認される。 | いいえ | はい | | COLLABORATION.REJECTED | コラボレーションが拒否される。 | いいえ | はい | | COLLABORATION.REMOVED | コラボレーションが削除される。 | いいえ | はい | | COLLABORATION.UPDATED | コラボレーションが更新される。 | いいえ | はい | | COMMENT.CREATED | コメントオブジェクトが作成される。 | はい | はい | | COMMENT.UPDATED | コメントオブジェクトが編集される。 | はい | はい | | COMMENT.DELETED | コメントオブジェクトが削除される。 | はい | はい | | DOCGEN_DOCUMENT_GENERATION_FAILED | Doc Genがドキュメントの生成に失敗しました。 | はい | いいえ | | DOCGEN_DOCUMENT_GENERATION_STARTED | Doc Genがドキュメントの作成を開始しました。 | はい | いいえ | | DOCGEN_DOCUMENT_GENERATION_SUCCEEDED | Doc Genがドキュメントの作成に成功しました。 | はい | いいえ | | FILE.UPLOADED | ファイルがこのフォルダにアップロードまたは移動される。 | いいえ | はい | | FILE.PREVIEWED | ファイルがプレビューされる。 | はい | はい | | FILE.DOWNLOADED | ファイルがダウンロードされる。 | はい | はい | | FILE.TRASHED | ファイルがごみ箱に移動される。 | はい | はい | | FILE.DELETED | ファイルが完全に削除される。 | はい | はい | | FILE.RESTORED | ファイルがごみ箱から復元される。 | はい | はい | | FILE.COPIED | ファイルがコピーされる。 | はい | はい | | FILE.MOVED | ファイルが別のフォルダに移動される。 | はい | はい | | FILE.LOCKED | ファイルがロックされる。 | はい | はい | | FILE.UNLOCKED | ファイルのロックが解除される。 | はい | はい | | FILE.RENAMED | ファイル名が変更される。 | はい | はい | | FOLDER.CREATED | フォルダが作成される。 | いいえ | はい | | FOLDER.RENAMED | フォルダ名が変更される。 | いいえ | はい | | FOLDER.DOWNLOADED | フォルダがダウンロードされる。 | いいえ | はい | | FOLDER.RESTORED | フォルダがごみ箱から復元される。 | いいえ | はい | | FOLDER.DELETED | フォルダが完全に削除される。 | いいえ | はい | | FOLDER.COPIED | フォルダがコピーされる。 | いいえ | はい | | FOLDER.MOVED | フォルダが別のフォルダに移動される。 | いいえ | はい | | FOLDER.TRASHED | フォルダがごみ箱に移動される。 | いいえ | はい | | METADATA_INSTANCE.CREATED | ファイルまたはフォルダに新しいメタデータテンプレートインスタンスが関連付けられる。 | はい | はい | | METADATA_INSTANCE.UPDATED | ファイルまたはフォルダに関連付けられている既存のメタデータテンプレートインスタンスの属性 (値) が更新/削除される。 | はい | はい | | METADATA_INSTANCE.DELETED | ファイルまたはフォルダに関連付けられている既存のメタデータテンプレートインスタンスが削除される。 | はい | はい | | SHARED_LINK.DELETED | 共有リンクが削除される。 | はい | はい | | SHARED_LINK.CREATED | 共有リンクが作成される。 | はい | はい | | SHARED_LINK.UPDATED | 共有リンクが更新される。 | はい | はい | | TASK_ASSIGNMENT.CREATED | タスクの作成 | はい | はい | | TASK_ASSIGNMENT.UPDATED | タスク割り当てが変更される。 | はい | はい | | SIGN_REQUEST.COMPLETED | 署名リクエストが完了する。 | はい | はい | | SIGN_REQUEST.DECLINED | 署名リクエストが拒否される。 | はい | はい | | SIGN_REQUEST.EXPIRED | 署名リクエストの有効期限が切れる。 | はい | はい | | SIGN_REQUEST.SIGNER_EMAIL_BOUNCED | 署名者のメールが差し戻される。 | はい | はい | | SIGN_REQUEST.SIGNER_SIGNED | 署名リクエストが特定の署名者によって署名される。 | はい | はい | | SIGN_REQUEST.SIGNATURE_REQUESTED | 署名者に対して署名がリクエストされる。 | はい | はい | | SIGN_REQUEST.ERROR_FINALIZING | 署名リクエストの確定時にエラーが発生する。 | はい | はい | | WEBHOOK.DELETED | Webhookが削除される。 | いいえ | いいえ | ## V1 V1 Webhookをトリガーするよう構成できるイベントを以下に示します。 - Sent - Created - Uploaded - Commented - Downloaded - Previewed - Moved - Copied - Task assigned - Responded to task - Locked - Unlocked - Deleted - Collaborator added **Source:** [https://ja.developer.box.com/guides/webhooks/triggers/](https://ja.developer.box.com/guides/webhooks/triggers/) --- ### Webhookの作成 **Type:** guide | **Category:** Webhook | **Section:** Developer Guides Webhookの作成 V1 Webhookを作成するには、開発者コンソールで以下の手順に従います。 開発者コンソールで、目的のアプリケーションに移動します。 [Webhook] タブを選択します。 [新規Webhook… # Webhookの作成 V1 Webhookを作成するには、[開発者コンソール](https://app.box.com/developers/console)で以下の手順に従います。 1. [開発者コンソール](https://app.box.com/developers/console)で、目的のアプリケーションに移動します。 2. [**Webhook**] タブを選択します。 3. [**新規Webhookの作成**] ボタンをクリックします。 4. イベントトリガー、エンドポイントURL、1つ以上のコールバックパラメータなどをフォームに入力します。 5. [**Webhookの保存**] をクリックします。 # コールバックパラメータ V2 Webhookとは異なり、これらの手動によるWebhookにはデータを構成する必要があります。このデータは、本文のクエリ文字列として、または`name=Contract.pdf&type=file`のようなクエリパラメータとして送信されます。 ## 開発者モード デフォルトでは、V1 Webhookは、開発者コンソールの [**一般設定**] タブにアプリケーションコラボレータとして表示されているユーザーに対してのみ機能します。Webhookをすべてのユーザーに対して有効にするには、[サポートにお問い合わせください](https://support.box.com)。 ## Webhookの有効化 Webhookを作成した後、使用を開始するには、アプリケーションをユーザーのアカウントに追加する必要があります。 アプリを追加するためのURLを取得するには、OAuth 2.0認証アプリで以下の手順に従います。 1. [開発者コンソール](https://app.box.com/developers/console)で、目的のアプリケーションの [**統合**] タブに移動します。 2. [**アプリを送信**] をクリックします。心配しないでください。送信プロセスは完了しません。 3. ページ下部で [**プレビュー**] をクリックします。 4. [**追加**] をクリックします。 その他すべての認証タイプの場合、このURLを取得するには、サポートに問い合わせる必要があります。 これでWebhookは、ユーザーのアカウントで発生する構成済みのイベントに対してトリガーされるようになりました。 **Source:** [https://ja.developer.box.com/guides/webhooks/v1/create-v1/](https://ja.developer.box.com/guides/webhooks/v1/create-v1/) --- ### Webhookの作成 **Type:** guide | **Category:** Webhook | **Section:** Developer Guides Webhookの作成 V2 Webhookは、特定のファイルまたはフォルダを監視でき、開発者コンソールでもAPIでも作成できます。 開発者コンソール V2 Webhookを作成できるのは、[Webhook… # Webhookの作成 V2 Webhookは、特定のファイルまたはフォルダを監視でき、[開発者コンソール](https://app.box.com/developers/console)でもAPIでも作成できます。 ## 開発者コンソール V2 Webhookを作成できるのは、[**Webhookを管理する**] というスコープが選択され、アプリケーションが承認されている場合のみです。[必須のアクセススコープ](g://applications)と[承認](g://authorization)の詳細を参照してください。 Webhookを作成するには、以下の手順に従います。 1. [開発者コンソール](https://app.box.com/developers/console)で、目的のアプリケーションに移動します。 2. [**Webhook**] タブを選択します。 3. [**Webhookを作成**] ボタンをクリックします。 4. ドロップダウンリストで [**V2**] を選択します。 5. フォームに入力します。 6. [**Webhookを作成**] ボタンをクリックして変更を保存します。 ### 必須フィールド | フィールド名 | 説明 | 必須 | | --- | --- | --- | | URLアドレス | Webhookによって通知されるURLアドレス。 | はい | | コンテンツタイプ | Webhookが構成されているコンテンツのタイプ (ファイル/フォルダ)。 | はい | | トリガー | Webhookをアクティブ化するさまざまなトリガー。 | はい | ## API このAPIを使用するには、アプリケーションの [**Webhookを管理する**] スコープが有効になっている必要があります。 ファイルにWebhookを追加するには、`file`の種類、ファイルのID、Webhook通知の送信先URL、および[トリガー](g://webhooks/triggers)のリストを指定して[Webhookを作成](e://post_webhooks)エンドポイントを呼び出します。 フォルダにWebhookを追加するには、`folder`の種類、フォルダのID、Webhook通知の送信先URL、および[トリガー](g://webhooks/triggers)のリストを指定して[Webhookを作成](e://post_webhooks)エンドポイントを呼び出します。 Webhookはカスケードで適用されるため、Webhookを親フォルダに設定すると、サブフォルダでも選択されたトリガーが監視されます。 ## 所有権 コンテンツにアクセスできなくなることでWebhookの配信に生じる可能性のある問題を回避するために、[サービスアカウント](page://platform/user-types/#service-account) (つまり削除されることのないユーザー) を使用してWebhookを作成することを強くお勧めします。 ファイルやフォルダと同様、Webhookを所有するのはユーザーです。Webhookを所有するユーザーが削除されると、以前アクセスできていたすべてのファイルとフォルダにアクセスできなくなります。ユーザーのWebhookでは検証が失敗するようになりますが、Webhookサービスは引き続きイベントを送信し、再試行を要求します。 ## Webhookアドレス `address`パラメータで指定する通知URLは、Webhookの作成時に指定した有効なURLである必要があります。このURLは、いずれかのトリガーがアクティブになるたびに呼び出されます。 通知URLは標準ポート`443`を使用する必要があり、Webhookペイロードの受信から30秒以内に`200`~`299`の範囲のHTTPステータスを返す必要があります。 ## Webhookトリガー トリガーのリストでは、Webhookによって発生するイベントを表す文字列を指定します。たとえば、ユーザーがファイルをアップロードしたときにWebhookをトリガーするには`FILE.UPLOADED`を使用します。 使用可能なトリガーのリストは、[こちらのガイド](g://webhooks/triggers)を参照してください。 **Source:** [https://ja.developer.box.com/guides/webhooks/v2/create-v2/](https://ja.developer.box.com/guides/webhooks/v2/create-v2/) --- ### Webhookの削除 **Type:** guide | **Category:** Webhook | **Section:** Developer Guides Webhookの削除 V1 Webhookを完全に削除することはできません。その代わり、サポートにWebhookを開発者モードに戻してもらうことができます。また、開発者は、有効化URL… # Webhookの削除 V1 Webhookを完全に削除することはできません。その代わり、[サポート](https://support.box.com/hc/ja/requests/new)にWebhookを開発者モードに戻してもらうことができます。また、開発者は、有効化URLに再度アクセスして [**削除**] をクリックすることで、自分のアカウントからアプリケーションを削除することもできます。 **Source:** [https://ja.developer.box.com/guides/webhooks/v1/delete-v1/](https://ja.developer.box.com/guides/webhooks/v1/delete-v1/) --- ### Webhookの削除 **Type:** guide | **Category:** Webhook | **Section:** Developer Guides Webhookの削除 Webhookは、開発者コンソールまたはAPIを使用して削除できます。 開発者コンソール Webhookを削除するには、以下の手順に従います。 開発者コンソールで、[Webhook] タブに移動します。 WebhookのID… # Webhookの削除 Webhookは、[開発者コンソール](https://app.box.com/developers/console)またはAPIを使用して削除できます。 ## 開発者コンソール Webhookを削除するには、以下の手順に従います。 1. [開発者コンソール](https://app.box.com/developers/console)で、[**Webhook**] タブに移動します。 2. WebhookのIDをクリックして、削除するWebhookを選択します。 3. [**削除**] ボタンをクリックします。 4. 警告メッセージの下に表示される [**削除**] をクリックして、操作を確定します。 ## API ファイルやフォルダからWebhookを削除するには、WebhookのIDを指定して[Webhookを削除](e://delete-webhooks-id)エンドポイントを使用する必要があります。この値は、[すべてのWebhookのリストを取得](e://get-webhooks)エンドポイントを使用して取得できます。 ## Webhookの自動削除 [この](e://delete-webhooks-id)エンドポイントを使用していなくても、Webhookが削除される場合があります。 Webhookは以下の理由で削除される可能性があります。 Boxアプリケーションを削除すると、そのアプリケーションに関連付けられているすべてのWebhookが自動的に削除されます。 Webhookに関連付けられているアクティブなアクセストークンをすべて削除すると、そのWebhookが自動的に削除されます。これには、開発者トークンとパスワードが含まれます。 最後に成功した通知が設定したURLに配信されてから30日が経過し、最後に通知の配信が成功した日からユーザーが最後にイベントをトリガーした日までの期間が14日を超えた場合。 ユーザーがファイルをダウンロードするシナリオを見てみましょう。この操作により、Webhookがトリガーされ、設定したURLを使用して共有リンクを削除します。次の図では、このシナリオを表し、Webhookが削除されるタイミングを示しています。 - **ユーザーイベントトリガー**: ユーザーがイベント (例: ファイルのダウンロード) を開始したタイミング。 - **通知トリガー**: ファイルがダウンロードされたことを示す通知がWebhookに送信されたタイミング。 - **最終の通知配信**: Webhookが特定のURLにメッセージ (共有リンクの削除など) を送信したタイミング。 これらのすべてのケースで、Boxは`WEBHOOK.DELETED`というイベント名を含むWebhookペイロードを通知URLに送信します。ペイロードの本文には以下の追加情報が含まれます。 ``` "additional_info": { "reason": "auto_cleanup" } ``` **Source:** [https://ja.developer.box.com/guides/webhooks/v2/delete-v2/](https://ja.developer.box.com/guides/webhooks/v2/delete-v2/) --- ### Webhookの更新 **Type:** guide | **Category:** Webhook | **Section:** Developer Guides Webhookの更新 Webhookは、開発者コンソールまたはAPIを使用して更新できます。 開発者コンソール 開発者コンソールでWebhookを更新するには、以下の手順に従います。 開発者コンソールの [Webhook] タブに移動し、すべてのWebhook… # Webhookの更新 Webhookは、[開発者コンソール](https://app.box.com/developers/console)またはAPIを使用して更新できます。 ## 開発者コンソール [開発者コンソール](https://app.box.com/developers/console)でWebhookを更新するには、以下の手順に従います。 1. [開発者コンソール](https://app.box.com/developers/console)の [**Webhook**] タブに移動し、すべてのWebhookを表示します。 2. WebhookのIDをクリックして、更新するWebhookを選択します。 3. [**Webhookを編集**] ボタンをクリックします。 4. 更新するデータを入力します。 5. [**更新**] ボタンをクリックして変更を保存します。 Webhookのリストには、[**ID**]、[**アドレス**]、[**コンテンツ**]、[**作成者**]、[**作成日**] フィールドがあります。 ## API Webhookを更新するには、[Webhookを更新](e://put-webhooks-id)エンドポイントを使用します。それにはWebhook IDが必要です。WebhookのIDを調べるには、[すべてのWebhookのリストを取得](g://webhooks/v2/list-v2)エンドポイントを使用します。 **Source:** [https://ja.developer.box.com/guides/webhooks/v2/update-v2/](https://ja.developer.box.com/guides/webhooks/v2/update-v2/) --- ### xAI Grok 3 Beta **Type:** guide | **Category:** Box AI | **Section:** Developer Guides xAI Grok 3 Beta xAI Grok 3 Betaは、データの抽出、コーディング、テキストの要約など、企業のユースケースに優れているモデルです。金融、医療、法律、科学の深い専門知識を有しています。 モデルの詳細 項目 値 説明 モデル名 xAI Grok 3 Beta… # xAI Grok 3 Beta **xAI Grok 3 Beta**は、データの抽出、コーディング、テキストの要約など、企業のユースケースに優れているモデルです。金融、医療、法律、科学の深い専門知識を有しています。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | xAI Grok 3 Beta | モデルの名前。 | | モデルのカテゴリ | プレミアム | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | xai__grok_3_beta | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | xAI | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | xAI | このモデルを提供する組織。 | | リリース日 | 2025年4月17日 | モデルのリリース日。 | | ナレッジカットオフ日 | 2025年1月 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 100万トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 131,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | | 知的財産侵害からの保護 | いいえ | このモデルの使用には、Boxによる知的財産権の保証または保護は伴いません。このモデルの出力を使用することで発生する可能性もある知的財産の問題を考慮してください。 | ## その他のドキュメント 詳細については、[xAI Grok 3 Mini Betaの公式ドキュメント](https://docs.x.ai/docs/models)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/xai-grok-3-beta-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/xai-grok-3-beta-model-card/) --- ### xAI Grok 3 Mini Reasoning Beta **Type:** guide | **Category:** Box AI | **Section:** Developer Guides xAI Grok 3 Mini Reasoning Beta xAI Grok 3 Mini Reasoning Beta… # xAI Grok 3 Mini Reasoning Beta **xAI Grok 3 Mini Reasoning Beta**は、応答する前に思考する軽量モデルです。処理が速くスマートで、深い専門知識を必要としない、論理ベースのタスクに適しています。未加工の思考トレースにアクセスできます。 ## モデルの詳細 | 項目 | 値 | 説明 | | --- | --- | --- | | モデル名 | xAI Grok 3 Mini Reasoning Beta | モデルの名前。 | | モデルのカテゴリ | 標準 | モデルのカテゴリ - 標準またはプレミアム。 | | APIモデル名 | xai__grok_3_mini_reasoning_beta | Box AI APIでのモデルの上書きに使用されるモデルの名前。APIを動作させるには、ユーザーがこの名前を正確に指定する必要があります。 | | ホスティングレイヤー | xAI | LLMを安全にホストする、信頼できる組織。 | | モデルプロバイダ | xAI | このモデルを提供する組織。 | | リリース日 | 2025年4月9日 | モデルのリリース日。 | | ナレッジカットオフ日 | 不明 | モデルが情報の更新を取得しなくなった日付。 | | 入力コンテキストウィンドウ | 131,000トークン | 入力コンテキストウィンドウでサポートされるトークン数。 | | 出力トークンの最大数 | 131,000トークン | 1回のリクエストでモデルが生成できるトークン数。 | | 経験に基づいたスループット | 指定なし | モデルが1秒あたりに生成できるトークン数。 | | オープンソース | いいえ | モデルのコードを一般公開するかどうかを指定します。 | | 知的財産侵害からの保護 | いいえ | このモデルの使用には、Boxによる知的財産権の保証または保護は伴いません。このモデルの出力を使用することで発生する可能性もある知的財産の問題を考慮してください。 | ## その他のドキュメント 詳細については、[xAI Grok 3 Mini Betaの公式ドキュメント](https://docs.x.ai/docs/models)を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/xai-grok-3-mini-beta-model-card/](https://ja.developer.box.com/guides/box-ai/ai-models/xai-grok-3-mini-beta-model-card/) --- ### ZIPアーカイブのダウンロード **Type:** guide | **Category:** ダウンロード | **Section:** Developer Guides ZIPアーカイブのダウンロード フォルダ内のすべてのファイル、またはフォルダ構造全体をダウンロードするには、ZIPアーカイブを作成してダウンロードする必要があります。 ZIPアーカイブの作成 最初に、ファイルまたはフォルダ構造を含むZIP… # ZIPアーカイブのダウンロード フォルダ内のすべてのファイル、またはフォルダ構造全体をダウンロードするには、ZIPアーカイブを作成してダウンロードする必要があります。 ## ZIPアーカイブの作成 最初に、ファイルまたはフォルダ構造を含むZIPアーカイブを作成する必要があります。アカウントのアップロード上限に達しない限り、最大10,000のファイルまたはフォルダIDを含めることができます。 レスポンスは以下のようになります。 ``` { "download_url": "https://dl.boxcloud.com/2.0/zip_downloads/25gvaXcIE4QJlinNiw2oHAQ==ZFs3Q2Xpd7pKBz7OyzXNrUaoW3aJxQRN5znAvyM-KpdEEPdWcQDKU-Dl85Ew/content", "status_url": "https://api.box.com/2.0/zip_downloads/25gvaXcIE4QJlinNiw2oHAQ==ZFs3Q2Xpd7pKBz7OyzXNrUaoW3aJxQRN5znAvyM-KpdEEPdWcQDKU-Dl85Ew/status", "expires_at": "2023-02-28T10:23:54Z", "name_conflicts": [] } ``` ## ZIPダウンロードIDの抽出 ZIPアーカイブをダウンロードするには、ZIPダウンロードIDが必要です。これは、アーカイブの作成時に返されたレスポンスで確認できます。 `status_url`に移動し、`zip_downloads`と`content`の間にあるIDをコピーします。 ``` 25gvaXcIE4QJlinNiw2oHAQ==ZFs3Q2Xpd7pKBz7OyzXNrUaoW3aJxQRN5znAvyM-KpdEEPdWcQDKU-Dl85Ew ``` ダウンロードURLは、`expires_at`パラメータで指定された日時まで有効です。 ## ファイルのダウンロード 以下のサンプルのように、ファイルの場所のURLにダウンロードIDを配置して、適切なファイルを指します。 ダウンロードに時間がかかる場合は、[ステータスのエンドポイント](e://get-zip-downloads-id-status)を使用してダウンロードのステータスを監視できます。これにより、ダウンロードの進行状況のほか、スキップされた可能性のある項目の数を確認できます。 SDKを使用してフォルダのコンテンツをダウンロードする場合は、[こちら](g://downloads/folder)のガイドに従ってください。 **Source:** [https://ja.developer.box.com/guides/downloads/zip-archive/](https://ja.developer.box.com/guides/downloads/zip-archive/) --- ### アーキテクチャスケルトンの作成 **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides アーキテクチャスケルトンの作成 最初の要件は、アカウントの作成時に一般的なファイルとフォルダを個々のユーザーのルートフォルダにコピーすることです。この問題は、標準のLinuxディストリビューション内の/etc/skel… # アーキテクチャスケルトンの作成 最初の要件は、アカウントの作成時に一般的なファイルとフォルダを個々のユーザーのルートフォルダにコピーすることです。この問題は、標準のLinuxディストリビューション内の`/etc/skel`と呼ばれるディレクトリを介して解決されています。このディレクトリは、Box固有のソリューションによってエミュレートされます。Linuxで新しいユーザーを追加すると、`/etc/skel`内のファイルとフォルダが新しいユーザーのホームディレクトリにコピーされます。 [JWTベースのBoxアプリケーション](g://authentication/jwt/jwt-setup)を作成すると、Box Enterprise内に[サービスアカウント](page://platform/user-types/#service-account)が作成されます。サービスアカウントはBox Enterpriseの共同管理者に似た機能を持っており、このユースケースに最も有用で、ファイルおよびフォルダに対し、所有、コピー、および他のユーザーとのコラボレーションを行うことができます。さらに重要な点は、サービスアカウントは厳密にユーザー向けのPlatformアプリケーションの開発のみに使用する必要がなく、自動化処理の用途でも使用できるということです。 # Box Platformアプリケーションの要件 この手順のためにJWTベースのカスタムBoxアプリケーションを作成する場合、**ユーザーを管理する**、**グループを管理する**、**ユーザーとして操作を実行**、および**ユーザーアクセストークンを生成**スコープを有効にする必要があります。 JWTベースのBoxアプリケーションとBoxアプリケーションのスコープの作成の詳細については、[JWTアプリケーションの設定](g://authentication/jwt/jwt-setup)を参照してください。 初めに、`etc`フォルダと`skel`フォルダを作成し、サービスアカウントにフォルダの所有権を付与します。 ``` { "name": "etc", "parent": { "id": "0" }, "children": [ { "name": "skel", "children": [] } ] } ``` ``` [ { "name": "Market Research", "parent": { "id": "44884797174" }, "children": [ { "name": "Statistics", "children": [ { "name": "Computed", "children": [] } ] } ] }, { "name": "Sales Plays", "parent": { "id": "44884797174" }, "children": [ { "name": "Big Pharma", "children": [] } ] } ] ``` このコードを再利用して、上のJSONオブジェクトが示すフォーマットのフォルダ構造を構築することもできます。 ``` "use strict"; const fs = require("fs"); const box = require("box-node-sdk"); class BoxFolderTreeCreator { constructor(boxClient, options) { options = options || {}; if (options.boxClient) { throw new Error("Must include a boxClient field."); } options.boxFolderTreeName = options.boxFolderTreeName || "tree.json"; this.boxClient = boxClient; this.boxFolderTree = JSON.parse(fs.readFileSync(options.boxFolderTreeName)); this.createdBoxFolders = []; } async createFolderTree(branch = null, parentFolderId = "0") { this.createdBoxFolders = []; if (Array.isArray(this.boxFolderTree)) { let folderTasks = []; this.boxFolderTree.forEach(folder => { folderTasks.push(this._createFolder(folder, "")); }); await Promise.all(folderTasks); return this.createdBoxFolders; } else if (typeof this.boxFolderTree === "object") { console.log("Is object"); await this._createFolders(this.boxFolderTree, ""); return this.createdBoxFolders; } else { throw new Error("Incorrectly formatted JSON folder tree."); } } async _createFolders(branch, parentFolderId = "0") { if (branch.parent != null && branch.parent.id != null) { parentFolderId = branch.parent.id; } let folder; try { folder = await this.boxClient.folders.create(parentFolderId, branch.name); } catch (e) { let existingFolderId = BoxFolderTreeCreator.handleFolderConflictError(e); folder = await this.boxClient.folders.get(existingFolderId); } this.createdBoxFolders.push(folder); if (branch.children.length <= 0) { console.log("No more folders to create..."); return; } else { let createFolderTasks = []; branch.children.forEach(child => { console.log("Creating folder..."); console.log(child.name); createFolderTasks.push(this._createFolders(child, folder.id)); }); return await Promise.all(createFolderTasks); } } static handleFolderConflictError(e) { if (e && e.response && e.response.body) { let errorBody = e.response.body; if (errorBody.status === 409) { if ( errorBody.context_info && errorBody.context_info.conflicts && errorBody.context_info.conflicts.length > 0 ) { let conflict = errorBody.context_info.conflicts[0]; if (conflict && conflict.id) { return conflict.id; } } } } } } let configFile = fs.readFileSync("config.json"); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let serviceAccountClient = session.getAppAuthClient("enterprise"); let treeCreator = new BoxFolderTreeCreator(serviceAccountClient); (async () => { let createdFolders = await treeCreator.createFolderTree(); console.log(createdFolders); })(); ``` ``` package com.box; import java.io.BufferedReader; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.box.sdk.BoxAPIException; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxFolder; import com.eclipsesource.json.JsonObject; import com.eclipsesource.json.JsonValue; public class BoxFolderTreeCreator { private BoxDeveloperEditionAPIConnection _boxClient; private JsonValue _boxFolderTree; private ArrayList<BoxFolder.Info > _createdFolders; public BoxFolderTreeCreator(BoxDeveloperEditionAPIConnection boxClient) throws IOException { this(boxClient, "tree.json"); } public BoxFolderTreeCreator(BoxDeveloperEditionAPIConnection boxClient, String folderTreeFileName) throws IOException { this._boxClient = boxClient; try (BufferedReader tree = Files.newBufferedReader(Paths.get(folderTreeFileName))) { this._boxFolderTree = JsonValue.readFrom(tree); } this._createdFolders = new ArrayList<>(); } public ArrayList<BoxFolder.Info > createFolderTree() { if (this._boxFolderTree.isArray()) { for (JsonValue folder: this._boxFolderTree.asArray()) { System.out.println("Processing this folder: " + folder); _createFolders(folder.asObject(), null); } return this._createdFolders; } else { _createFolders(this._boxFolderTree.asObject(), null); return this._createdFolders; } } private void _createFolders(JsonObject branch, String parentFolderID) { if (parentFolderID == null && branch.get("parent") != null && branch.get("parent").asObject().get("id") != null) { System.out.println("Looking for parent folder id..."); System.out.println(branch.get("parent").asObject().get("id").asString()); parentFolderID = branch.get("parent").asObject().get("id").asString(); } System.out.println("Folder name:"); System.out.println(branch.get("name")); System.out.println("Parent Folder ID:"); System.out.println(parentFolderID); BoxFolder.Info createdFolder; try { BoxFolder parent = new BoxFolder(this._boxClient, parentFolderID); createdFolder = parent.createFolder(branch.get("name").asString()); } catch (BoxAPIException e) { if (e.getResponseCode() == 409) { // Use the ID returned from the conflict error to continue String conflictId = getIdFromConflict(e.getResponse()); createdFolder = new BoxFolder(this._boxClient, conflictId).getInfo(); } else { throw e; } } this._createdFolders.add(createdFolder); if (!branch.get("children").asArray().isEmpty()) { for (JsonValue child: branch.get("children").asArray()) { _createFolders(child.asObject(), createdFolder.getID()); } } else { return; } } private static String getIdFromConflict(String message) { String id = ""; Pattern p = Pattern.compile("\"id\":\"[0-9]+\""); Pattern p2 = Pattern.compile("[0-9]+"); Matcher m = p.matcher(message); if (m.find()) { String sub = m.group(); Matcher m2 = p2.matcher(sub); if (m2.find()) { id = m2.group(); } } return id; } public static void main(String[] args) throws Exception { Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxFolderTreeCreator treeBuilder = new BoxFolderTreeCreator(serviceAccountClient, "etc_skel.json"); ArrayList<BoxFolder.Info > folders = treeBuilder.createFolderTree(); for (BoxFolder.Info folder: folders) { System.out.println(folder.getID()); } } } } ``` ``` using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Box.V2; using Box.V2.Config; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Newtonsoft.Json.Linq; namespace BoxPlayground { public class Program { static void Main(string[] args) { ExecuteMainAsync().Wait(); } private static async Task ExecuteMainAsync() { using(FileStream fs = new FileStream("./config.json", FileMode.Open)) { var session = new BoxJWTAuth(BoxConfig.CreateFromJsonFile(fs)); var client = session.AdminClient(session.AdminToken()); var treeCreator = new BoxFolderTreeCreator(client, "etc_skel.json"); var createdFolders = await treeCreator.CreateFolderTree(); foreach(var folder in createdFolders) { System.Console.WriteLine(folder.Name); System.Console.WriteLine(folder.Id); } } } public class BoxFolderTreeCreator { public BoxClient BoxClient { get; set; } public JToken BoxFolderTree { get; set; } public List < BoxFolder > CreatedBoxFolders { get; set; } public BoxFolderTreeCreator(BoxClient boxClient, string boxFolderTreeFileName = "tree.json") { this.BoxClient = boxClient; this.BoxFolderTree = JToken.Parse(File.ReadAllText(boxFolderTreeFileName)); this.CreatedBoxFolders = new List < BoxFolder > (); } public async Task < List < BoxFolder >> CreateFolderTree(dynamic branch = null, string parentFolderId = "0") { this.CreatedBoxFolders = new List < BoxFolder > (); if (this.BoxFolderTree is JArray) { var folderTasks = new List < Task > (); foreach(JObject folder in this.BoxFolderTree) { folderTasks.Add(_createFolder(folder, String.Empty)); } await Task.WhenAll(folderTasks); return this.CreatedBoxFolders; } else if (this.BoxFolderTree is JObject) { System.Console.WriteLine("Is object"); await _createFolder(this.BoxFolderTree as JObject, String.Empty); return this.CreatedBoxFolders; } else { throw new Exception("Incorrectly formatted JSON folder tree."); } } private async Task _createFolder(dynamic branch, string parentFolderId = "0") { if (branch.parent != null && branch.parent.id != null) { parentFolderId = branch.parent.id; } BoxFolder createdFolder; try { createdFolder = await this.BoxClient.FoldersManager.CreateAsync( new BoxFolderRequest { Parent = new BoxRequestEntity { Id = parentFolderId }, Name = branch.name }); } catch(BoxConflictException < BoxFolder > e) { createdFolder = await this.BoxClient.FoldersManager.GetInformationAsync(e.ConflictingItems.FirstOrDefault().Id); } this.CreatedBoxFolders.Add(createdFolder); if (branch.children.Count <= 0) { System.Console.WriteLine("No more folders to create..."); return; } else { var createFolderTasks = new List < Task > (); foreach(var child in branch.children) { System.Console.WriteLine("Creating folder..."); System.Console.WriteLine(child.name); createFolderTasks.Add(_createFolder(child as JObject, createdFolder.Id)); } await Task.WhenAll(createFolderTasks); } } } } } ``` **Source:** [https://ja.developer.box.com/guides/users/provision/architecture/](https://ja.developer.box.com/guides/users/provision/architecture/) --- ### アクセストークン **Type:** guide | **Category:** 認証 | **Section:** Developer Guides アクセストークン アクセストークンは、Boxサーバーに対して認証済みユーザーを表すために、ユーザー名とパスワードの代わりに使用される資格情報です。 トークンオブジェクト OAuth 2.0認証 OAuth 2.… # アクセストークン アクセストークンは、Boxサーバーに対して認証済みユーザーを表すために、ユーザー名とパスワードの代わりに使用される資格情報です。 ## トークンオブジェクト ### OAuth 2.0認証 OAuth 2.0を使用してアクセストークンをリクエストすると、アクセストークンと更新トークンのペアが返されます。 ``` curl -X POST https://api.box.com/oauth2/token \ -H "content-type: application/x-www-form-urlencoded" \ -d '...' ``` ``` { "access_token": "c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ", "expires_in": 3600, "token_type": "bearer", "refresh_token": "c3FIOG9vSGV4VHo4QzAyg5T1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ", "issued_token_type": "urn:ietf:params:oauth:token-type:access_token" } ``` このオブジェクト内には、トークン文字列 (`access_token`) のほか、現在のトークンの有効期限が切れたとき (`expires_in`) に新しいアクセストークンのリクエストに使用できる更新トークン (`refresh_token`) があります。 ### サーバー認証 JWTまたはクライアント資格情報許可を使用してアクセストークンをリクエストすると、アクセストークンのみが返されます。 ``` curl --location --request POST 'https://api.box.com/oauth2/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode '...' ``` ``` { "access_token": "DkXZmsjUKizvL2z0WiaLvMBeQ756XCGGf", "expires_in": 4123, "restricted_to": [], "issued_token_type": "bearer" } ``` このオブジェクト内には、トークン文字列 (`access_token`) があります。更新トークンは返されないため、アクセストークンの有効期限が切れたとき (`expires_in`) には、[トークンエンドポイント](e://post-oauth2-token)を使用して、新しいトークンをリクエストする必要があります。 **Source:** [https://ja.developer.box.com/guides/authentication/tokens/access-tokens/](https://ja.developer.box.com/guides/authentication/tokens/access-tokens/) --- ### アクセストークンの取得 **Type:** guide | **Category:** ツール | **Section:** Developer Guides アクセストークンの取得 すべてのAPIコールでは、認証済みユーザーの本人確認のためにアクセストークンが要求されます。セキュリティ上の理由により、アクセストークンは60分後に期限切れになります。OAuth 2.… # アクセストークンの取得 すべてのAPIコールでは、認証済みユーザーの本人確認のために**アクセストークン**が要求されます。セキュリティ上の理由により、アクセストークンは60分後に期限切れになります。[OAuth 2.0](g://authentication/oauth2)を使用している場合は、提供された[更新トークン](g://authentication/tokens/refresh/)を使用して、新しいアクセストークンを取得してください。サーバー認証、[JWT](g://authentication/jwt)、または[クライアント資格情報許可](g://authentication/client-credentials)を使用している場合は、[トークンエンドポイント](e://post-oauth2-token)に対してAPIコールを実行して、新しいアクセストークンをリクエストしてください。 ## OAuth 2.0 アプリケーションが認証に[OAuth 2.0](g://authentication/oauth2)を利用している場合は、以下の手順に従って[Postman](g://tooling/postman/install)を使用してトークンのペアを取得できます。 - `grant_type`は常に`authorization_code`です。 - `client_id`と`client_secret`の値は、[開発者コンソール](https://app.box.com/developers/console)でアプリケーションの [**構成**] タブから取得できます。 `code`の値を取得するには、ブラウザで[承認URL](g://authentication/oauth2/without-sdk)を作成してアクセスします。OAuth 2.0のフローを完了し、構成済みのリダイレクトURLにリダイレクトすると、そのURLの末尾に承認コードがあります。この承認コードの有効期間は30秒間のみであることに注意してください。つまり、有効期限が切れる前に、Postmanの指定フィールドに承認コードを入力し、[**Send (送信)**] をクリックする必要があります。そのため、コードを取得したらすぐにAPIコールを送信できるように、他の値を入力しておくことをお勧めします。 **Source:** [https://ja.developer.box.com/guides/tooling/postman/access-token/](https://ja.developer.box.com/guides/tooling/postman/access-token/) --- ### アクセストークンの更新 **Type:** guide | **Category:** ツール | **Section:** Developer Guides アクセストークンの更新 Box APIから認証を受けるために、Postmanコレクションはアクセストークンを使用してAPIに対してユーザーの本人確認を行います。アクセストークンは1時間で有効期限が切れるため、1時間ごとに更新する必要があります。 更新トークンの使用 Postman… # アクセストークンの更新 Box APIから認証を受けるために、Postmanコレクションは**アクセストークン**を使用してAPIに対して**ユーザー**の本人確認を行います。アクセストークンは1時間で有効期限が切れるため、1時間ごとに更新する必要があります。 ## 更新トークンの使用 **Postmanクイックスタート**ガイドの[手順2](g://tooling/postman/quick-start/configure-box-app)で独自の**Boxアプリ**を設定した場合、PostmanのBox環境には有効な`client_id`と`client_secret`を用意する必要があります。これらのクライアント資格情報と`refresh_token`を使用すると、`access_token`の新しい値を作成できます。 アクセストークンを更新するには、Postmanコレクションの [**Authorization (承認)**] フォルダ内で [**Refresh access token (アクセストークンを更新)**] APIコールを選択します。 次に、[**Send (送信)**] ボタンをクリックして新しい`access_token`をリクエストします。 このAPIコールが終了すると、環境に`access_token`と`refresh_token`の新しい値が作成され、その他のAPIコールを実行できるようになります。 更新トークンは1回のみ有効で、60日以内に使用する必要があります。60日以内に使用すれば、新しい更新トークンが新しいアクセストークンとともに作成され、そこから再び60日の有効期間が始まります。 更新トークンは60日以内に使用されなければ期限切れになります。その後は、[クイックスタート](g://tooling/postman/quick-start)ガイドの手順を再度実行して、新しい更新トークンとアクセストークンをリクエストする必要があります。 ## アクセストークンの自動更新 Postmanコレクションは自動的に期限切れの`access_token`値を検出し、`refresh_token`を使用して新しい値をリクエストできます。この機能は、デフォルトで有効になっていますが、`enable_auto_refresh_access_token` Postman環境変数を`false`に設定することで無効にできます。 この値を設定するには、Box Postman環境変数の右上にある編集ボタンをクリックします。 テーブルで`enable_auto_refresh_access_token`変数の行を見つけて、[**Current Value (現在の値)**] を`true`に設定します。次に、[**Update (更新)**] をクリックして変更を保存します。 その後、APIコールを実行するたびに、**Postmanコレクション**は`access_token`の有効期限が切れているかどうかを確認し、目的のAPIコールを行う前に自動的に更新しようとします。 ## Postmanコレクションの再認証 [クイックスタート](g://tooling/postman/quick-start)ガイドの手順を再び実行することで、Postmanコレクションの再認証が必要になる場合があります。そのよくある理由として、Postmanコレクションを使用しないまま60日が経過し、`refresh_token`の有効期限が切れたことが挙げられます。 再認証するためには、まず古い**Box Postman環境**を削除します。これには、右上の小さな**歯車**アイコンをクリックし、リストからその環境を選択します。 [**Delete (削除)**] を選択して環境を削除します。その後、Postman[クイックスタート](g://tooling/postman/quick-start)ガイドの手順を再び最初から実行します。 **Box Postmanコレクション**の2回目のインポート時には、Postmanアプリで、新しいコレクションをコピーとしてインポートするか、古いコレクションを置き換えるかを確認される場合があります。APIに対してこれまでに行ったカスタム設定を保持するため、コピーとしてインポートすることをお勧めします。 **Source:** [https://ja.developer.box.com/guides/tooling/postman/refresh/](https://ja.developer.box.com/guides/tooling/postman/refresh/) --- ### アクセスのカスタマイズ **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides アクセスのカスタマイズ 動機 Box UI Elementsは、クライアントで初期化され、Boxに対して直接APIコールを実行します。したがって、すべてのBox API… # アクセスのカスタマイズ ## 動機 Box UI Elementsは、クライアントで初期化され、Boxに対して直接APIコールを実行します。したがって、すべてのBox APIリクエストが認証されなければならないため、有効なアクセストークンがクライアントにある必要があります。 [トークン交換](g://authentication/tokens/downscope)とは、「親トークン」(管理対象ユーザー、App User、サービスアカウント、またはアプリケーションのトークン) を「子トークン」に交換するためのメカニズムです。「子トークン」は、クライアントの権限を引き上げることなく安全にクライアントに送信できるように、必要最小限の権限のセットにダウンスコープしたものです。 Box UI Elementsは、トークンの権限に対応するよう設計されています。そのため、Box UI Elementsとともにトークン交換を使用すると、クライアントトークンに対する適切な権限セットがあれば、フロントエンドの開発者が手動でUIコントロールのオン/オフを切り替える必要はないという別のメリットがもたらされます。この動作は、Boxアプリケーションでの動作にも似ています。たとえば、フォルダに対して「プレビューのみ」の権限を持つユーザーの場合、UIに [ダウンロード] ボタンは表示されません。 次の設計図では、アプリケーションでUI Elementとともにトークン交換を使用する方法と、ユースケースの例を示しています。 - **クライアントからのAPIコールのセキュリティ強化:** 一般的なセキュリティ対策として、ユーザーによってアクションが実行されるたびにダウンスコープされたトークンを生成して送信し、クライアントができるだけ危険にさらされないようにすることをお勧めします。たとえば、ユーザーがファイルに対するプレビューおよび共有権限を必要とする場合でも、クライアントにユーザートークンを送信してユーザーに完全なユーザーレベルのアクセス権限を付与するのではなく、トークン交換を使用してトークンをダウンスコープし、ユーザーがファイルをプレビューしたい場合は「プレビューのみ」のトークンを、ファイルを共有したい場合は「共有」トークンを送信することをお勧めします。 - **カスタム権限モデルの作成:** UI Elementを使用してアプリケーションを構築していて、デフォルトのBoxアクセスレベルが実際の権限モデルに合わない場合は、すべてのユーザーに対する完全なスコープのトークンから始め、適宜トークン交換を使用して、独自の権限モデルに対応するようダウンスコープしていくことができます。 - **Boxサービスをトランザクションで使用 (Boxユーザーアカウントがない場合):** Boxにユーザーを作成しないでBoxサービスをトランザクションで使用している場合、ユーザーレベルのトークンにはアクセスできません。このような場合は、トークン交換を使用してサービスアカウントトークンを適切なスコープのトークンにダウンスコープできます。 - **別のユーザーのコンテンツへのアクセス権限を付与することのみを目的としたユーザーの作成:** エンドユーザーに別のアプリ/管理対象ユーザーのコンテンツへの「1回限り」のアクセス権限を与える必要がある場合は、トークン交換を使用すると、アプリ/管理対象ユーザーのトークンを、エンドユーザーにアクセスを許可したい特定の権限とファイル/フォルダにダウンスコープし、そのトークンをUI Elementに渡してエンドユーザーがそのコンテンツにアクセスできるようにすることができます。たとえば、トークン交換を使用した場合、ユーザートークンを、コンテンツに対するアクセス権限が読み取り専用になるようダウンスコープし、そのトークンを別のユーザーに渡すことができます。 ## 実装 上記のすべてに対する解決策として、トークン交換を使用して親トークンをダウンスコープされたトークンに交換し、そのトークンを使用してUI Elementを初期化します。 トークン交換では、「親トークン」、「スコープのリスト」、およびファイル/フォルダID (省略可) を入力引数として受け取り、これらの厳密なスコープのセットとそれぞれのファイル/フォルダID (入力引数に指定されている場合) にダウンスコープされたトークンが返されます。 # UI Element向けに設計された専用スコープ Boxでは、UI Elementとシームレスに連動する一連のスコープを設計しました。トークン交換はすべてのBoxスコープで動作しますが、設計したスコープには、基本機能に必要な権限セットに加えて、追加機能のための増分の権限も含まれているため、UI Elementと一緒にこれらのスコープを使用することをお勧めします。 ## 開発者のフロー さまざまなスコープについて説明したので、ここからはUI Elementでトークン交換を使用するシナリオを見ていきましょう。 **シナリオ:** Box Content Explorer UI Elementを使用してユーザーがフォルダツリーを閲覧できるようにして、ユーザーによるファイルのプレビューとダウンロードを許可します。共有は無効にする必要があります。 **手順:** ユースケースに応じて、管理対象ユーザー、App User、またはサービスアカウントを作成します。このユーザーまたはアプリケーションのトークンをトークン交換の親トークンとして使用します。ユーザートークンを生成するには、以下に従います。 - 管理対象ユーザーを作成する場合は、OAuthを使用した認証のガイド - App Userまたはサービスアカウントを作成する場合は、JWTを使用した認証のガイド 以下に示すようにコラボレータの作成APIを使用して、上で作成したユーザーをコラボレータとしてコンテンツに追加します。この手順では、ユーザーアカウントでユーザーにコンテンツに対するアクセス権限が与えられていない場合は、アクセス権限が与えられます。このユーザーのアカウントでファイル/フォルダが作成されている場合は、ユーザーはデフォルトでフォルダに対する「所有者」アクセス権限を持っているため、このコラボレーションの手順をスキップしてかまいません。 ``` curl https://api.box.com/2.0/collaborations \ -H "authorization: Bearer [ACCESS_TOKEN]" \ -d '{"item": { "id": "123456", "type": "folder"}, "accessible_by": { "id": "USER_ID", "type": "user" }, "role": "editor"}' \ -X POST ``` # Boxでのアクセスレベル BoxユーザーがBox内のファイル/フォルダでコラボレーションする場合に[7種類のアクセスレベル](https://community.box.com/t5/How-To-Guides-for-Sharing/What-Are-The-Different-Access-Levels-For-Collaborators/ta-p/144)を使用できます。このユーザーのアカウントでファイル/フォルダが作成されている場合は、ユーザーはデフォルトでフォルダに対する「所有者」アクセス権限を持っているため、このコラボレーションの手順をスキップしてかまいません。 - トークン交換APIを使用して親トークンを、コンテンツエクスプローラの基本スコープ (`base_explorer`) と特定の`folder_id` `123456`に有効な`item_download`および`item_preview`スコープを含む子トークンに交換します。この手順はアプリケーションサーバー上で実行することを強くお勧めします。 ### リクエスト ``` curl https://api.box.com/oauth2/token \ -d 'subject_token=ACCESS_TOKEN' \ -d 'subject_token_type=urn:ietf:params:oauth:token-type:access_token' \ -d 'scope=item_upload item_preview base_explorer' \ -d 'resource=https://api.box.com/2.0/folders/123456' \ -d 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \ -X POST ``` ### レスポンス ``` { "access_token": "CHILD_TOKEN", "expires_in": 4247, "token_type": "bearer", "restricted_to": [ { "scope": "base_explorer", "object": { "type": "folder", "id": "123456", "sequence_id": "0", "etag": "0", "name": "FOLDER_NAME" } }, { "scope": "item_download", "object": { "type": "folder", "id": "123456", "sequence_id": "0", "etag": "0", "name": "FOLDER_NAME" } }, { "scope": "item_preview", "object": { "type": "folder", "id": "123456", "sequence_id": "0", "etag": "0", "name": "FOLDER_NAME" } } ], "issued_token_type": "urn:ietf:params:oauth:token-type:access_token" } ``` 上で取得した`CHILD_TOKEN`はダウンスコープされ、フォルダID`123456`とその子に対するダウンロードおよびプレビューの権限のみが含まれています。 この`CHILD_TOKEN`をコンテンツエクスプローラUI Elementで使用します。簡単なデモを確認するには、[コンテンツエクスプローラUI Element CodePenのサンプル](https://codepen.io/box-platform/pen/wdWWdN)を使用して、[JS] タブでアクセストークンの値とフォルダIDの値を置き換えてください。 [実行] をクリックします。指定したフォルダでコンテンツエクスプローラが初期化されることがわかります。また、コンテンツエクスプローラには、親 (ユーザー) トークンの使用時に表示される [共有] ボタンが表示されなくなることに注意してください。 ## トークン交換を使用すべきでない場合 **Box内のユーザーまたはグループを置き換えない:** Boxにユーザーを作成する代わりにトークン交換を使用することはお勧めしません。Boxユーザーを作成する必要があるかどうかを判断するには、アプリケーションのすべてのエンドユーザーが自身のコンテンツのコピーを保持することが妥当かどうかを評価します。以下に、Boxにユーザーレベルのアカウントを維持することで得られるメリットを示します。トークン交換だけでは、これらのメリットを得ることはできません。 - **コンテンツの分離とセキュリティ:** ユーザーレベルのアカウントの使用がより適しているのは、親トークンが誤って漏えいした場合でも、会社の全ユーザーではなく、1人のユーザーのコンテンツのセキュリティが侵害されるだけで済むからです。 - **パフォーマンス:** Boxにユーザーやグループを作成すると、アプリケーションでコンテンツにアクセスするときに適切な権限を決定する必要がなくなるので便利です。適切な権限を決定する処理は、アプリケーションのパフォーマンスに影響を及ぼす可能性が高くなります。 - **ユーザーレベルの追跡と監査:** 監査、アクセス統計情報、リテンションなど、いくつかのBox機能では、Boxのユーザーモデルが利用されます。これらの機能の使用が必須の場合は、ユーザーレベルのアカウントを作成する必要があります。 **Boxでのコラボレーションを置き換えない:** コラボレーションは、コンテンツに対するアクセス権限をBoxユーザーに提供するためのより標準的で拡張しやすい方法です。また、Boxでコラボレーションを使用してコンテンツへのアクセス権限を管理する場合、アプリケーションでは、どのユーザーにどのコンテンツへのアクセス権限が必要かについて、管理が必要なコードやデータの量が少なくなります。コラボレーションの代わりにトークン交換を使用すると、各ユーザーから、各ユーザーがアクセスできるすべてのファイルやフォルダへのマッピングを維持する必要があり、すべてのファイルやフォルダはすぐに制御できなくなる可能性があります。 **ダウンスコープされたトークンのキャッシュ:** アプリケーションにとってパフォーマンスが重要な場合は、ダウンスコープされたトークンをサーバー側で事前にキャッシュする必要があります。トークンを事前にキャッシュする場合は、トークンが1時間以内に期限切れになるため、再試行を実装することをお勧めします。 # トークンの寿命 親トークンおよび子トークンの寿命は互いに依存していません。たとえば、子トークンを生成しても親トークンが非アクティブになることはありません。同様に、子トークンをさらに生成しても、以前の子トークンにはまったく影響しません。 ## シナリオの例 ### シナリオ1: クライアントのAPIコールのセキュリティ強化 ある株式投資会社は、従業員が公開する情報を投資家に配信する目的 (表示のみのアクセス権限を使用) で、パートナーおよび投資家向けポータルを構築しています。 この会社は外部の顧客それぞれにApp Userを作成し、従業員はコンテンツの公開に使用したBoxアカウントをプロビジョニングしました。すべてのApp Userは、公開されたコンテンツでビューアー/アップローダーとしてコラボレーションしているため、必要に応じて自分のアカウントでコンテンツのプレビューとアップロードの両方を実行することができます。投資家やパートナーはサインインすると、情報を表示およびアップロードできるポータルが表示されます。 プレビューとアップロードの両方では、「ビューアー/アップローダー」トークンを渡す代わりに、クライアントを介してAPIコールを実行する必要があるため、アプリケーションではトークン交換を使用して、ユーザーが実行しようとしている処理に応じて適宜トークンをダウンスコープします。これにより、トークンのセキュリティが侵害された場合に、データ漏えいは最小限に抑えられ、アプリケーションの全体的なセキュリティ対策が強化されます。 ### シナリオ2: カスタム権限モデル ある大規模なフィンテック企業では、クライアントへの投資を管理するために、クライアントのセキュアな格納庫を構築しています。また、Box UI Elementsを使用してアプリケーションのコンテンツ管理フロントエンドも構築しています。 この会社では、通常どおりクライアントとアプリアドバイザごとにApp Userを作成します。App User間でコンテンツを共有する場合は、App Userを「編集者」ロール (Boxのロール) としてコラボレーションさせます。こうすることで、各App Userは自分以外のすべてのユーザーのコンテンツすべてにアクセスできるようになります。 ユーザーがUI Elementを介してコンテンツにアクセスできるように、アプリケーションがクライアントに直接App Userトークンを提供することはありません。これは、App Userが他のユーザーのコンテンツで「編集者」としてコラボレーションしている (強い権限を持っている) 可能性があるためです。代わりに、App Userトークンを使用したトークン交換により、ダウンスコープされたトークンが生成され、以下が制限されます。 - トークンの使用目的を示すスコープ (表示、アップロード、ダウンロード、閲覧、共有など) - ユーザーがアクセスできる特定のファイル ### シナリオ3: プロセスフロー ある非営利の信用組合では、ローン処理アプリケーションを開発しています。このアプリケーションでは、Boxのセキュアなコンテンツレイヤーを使用して、ローン申請者と社内ユーザー (ローン事務担当者とローン引受人) の間のドキュメントの共有を容易にします。基本的なプロセスは以下のとおりです。 - 顧客はローンを申請する際、申請手続きの一環として、独自に構築されたウェブポータルからドキュメント (収入証明や身分証明など) を提出します。 - Boxは、ドキュメントの送受信を仲介する機能として使用されます。 - 社内の従業員は、顧客に代わってファイルをアップロードする必要があります。 - 社内の従業員は、カスタムのウェブポータルとBoxウェブアプリからドキュメントにアクセスできます。 アプリケーション開発者は、UI Elementとともにトークン交換を使用して、ローン処理管理ソリューションを構築しました。このソリューションで、アプリケーションサーバーは、ローン申請のApp Userトークンを、クライアントが実行する必要のある処理に基づいてダウンスコープし、そのダウンスコープされたトークンをクライアント (顧客とローン担当者) に渡します。このようにダウンスコープされたトークンを使用すると、UI Elementは適切なコントロールやボタンを表示し、ユーザーに対して実行可能な操作を示すことができます (例: ダウンスコープされて渡されたトークンにアップロード権限が含まれていない場合、コンテンツエクスプローラUI Elementではアップロードボタンがグレー表示になります)。 ### シナリオ4: トランザクションフロー ある学習管理システムプロバイダは、Box Platformを使用して自社のアプリケーションのプレビュー機能を強化しています。すべてのユーザーおよび関連付けられている権限は、Box以外のアプリケーションで管理されています。Boxから見ると、そのアプリケーションからのAPIコールはすべて、(個々のユーザーではなく) そのアプリケーションのためのもので、保存およびプレビューされるコンテンツはすべて、個々のユーザーではなくアプリケーションに属しています。この場合、アプリケーション開発者は、Box全体の機能のうち一部 (プレビューなど) をトランザクションで使用していますが、その他のセキュアなコンテンツ共有機能やコラボレーション機能は使用していません。実際に、これは多くの顧客にとって重要なユースケースです。 このアプリケーションの簡単なユースケースを考えてください。エンドユーザーはファイルをアップロードした後、アプリケーション自体でプレビューする必要があるとします。そのために、アプリケーションではコンテンツアップローダーUI ElementとコンテンツプレビューUI Elementをそれぞれ使用しています。プレビューとアップロードはどちらも帯域幅を大量に消費する処理であるため、アプリケーションは、トラフィックをプロキシするのではなく、クライアントがこれらの処理を直接Boxに対して実行できるようにする必要があります。Boxに対して呼び出しを実行するために、すべてのUI Elementは、有効なアクセストークンをクライアント上で使用できる必要があります。ただし、アプリケーションは、権限のある「サービスアカウント」トークンをクライアントに渡さないようにしてください。渡した場合、クライアントは、アプリケーションを介してアップロードされたすべてのコンテンツにアクセスできるようになるためです。代わりに、アプリケーションではトークン交換を使用して、そのサービスアカウントトークンをアップロードのみのトークンにダウンスコープし、クライアントがアップロードUI Elementを使用してファイルをアップロードできるようにします。さらに、別途プレビューのみのトークンにダウンスコープし、クライアントがプレビューUI Elementを使用してプレビューできるようにします。 ## アンチパターン 以下に示すアンチパターンは、アプリ開発をさらに難しいものにしたり、アプリケーションのセキュリティやパフォーマンスを低下させたりするため推奨されないパターンをお客様が識別するのに役立ちます。アプリにこれらのパターンの実装が確認された場合は、Boxサポートに連絡して支援を求めてください。 ### 権限のあるトークンをクライアントに渡す これは絶対に行わないでください。お客様のBox Enterpriseでのコンテンツのセキュリティが侵害される可能性があります。必ずトークン交換を使用して、正確な権限セットをエンドユーザーに提供してください。 ### APIレスポンスをプロキシ/フィルタリングする BoxからのAPIレスポンスをプロキシ/フィルタリングして、クライアントへのデータやコンテンツの公開を制限するだけの場合は、トークン交換を使用することで公開を制限できるかどうかを確認してみてください。特に、プレビュー、ダウンロード、アップロードなどの帯域幅を集中的に使用する、高帯域幅の処理に当てはまります。そのため、Boxでは、クライアントがBoxを使用してこれらの処理を直接実行することをお勧めします。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/access/](https://ja.developer.box.com/guides/embed/ui-elements/access/) --- ### アクセス制限付きアプリ **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides アクセス制限付きアプリ アクセス制限付きアプリは、Box Viewを利用したり、別のアプリケーション内でBox… # アクセス制限付きアプリ アクセス制限付きアプリは、[Box View](g://embed/box-view)を利用したり、別のアプリケーション内でBoxコンテンツをプレビューしたりする場合に使用されます。この種類のアプリケーションで操作できる[エンドポイントの数は限られています](g://authentication/app-token/endpoints)。 ## 認証方法 アクセス制限付きアプリでサポートされているのは、アプリトークン認証のみです。 アプリトークンの詳細を確認する ## 使用するタイミング アプリケーションが以下のような場合に、アクセス制限付きアプリを使用すると最も効果的です。 - Box ViewまたはBoxのプレビューサービスだけを使用する - [限られた数のエンドポイント](g://authentication/app-token/endpoints)だけにアクセスする必要がある ## ユースケース - プロのクリエイターの作品集をウェブサイトで紹介する - サポートサイトでユーザーマニュアルや製品仕様ドキュメントを提供する - カスタムドキュメントビューアーで電子書籍を表示したり間取り図に注釈を付けたりする ## 承認 アクセス制限付きアプリは、使用前に承認が必要になる場合があります。 アクセス制限付きアプリの承認方法を確認する **Source:** [https://ja.developer.box.com/guides/applications/app-types/limited-access-apps/](https://ja.developer.box.com/guides/applications/app-types/limited-access-apps/) --- ### アクセス制限付きアプリの承認 **Type:** guide | **Category:** 承認 | **Section:** Developer Guides アクセス制限付きアプリの承認 アクセス制限付き統合は、作成時に企業での使用について自動的に承認されます。 ただし、Enterprise… # アクセス制限付きアプリの承認 アクセス制限付き統合は、作成時に企業での使用について自動的に承認されます。 ただし、Enterprise設定の [**アクセス制限付きアプリの場合に管理者の承認を要求する**] が有効になっている場合、管理者は追加の手順を行う必要があります。 ## 承認の通知 アプリの承認を送信するための半自動プロセスは、開発者コンソールで利用できます。 [開発者コンソール](https://app.box.com/developers/console)で、目的のアプリケーションの [**承認**] タブに移動します。 承認を得るためにアプリケーションを送信すると、企業のプライマリ管理者宛てにアプリケーションを承認するようメールが送信されます。このプロセスの詳細については、[アプリ承認に関するサポート記事](https://support.box.com/hc/ja/articles/360043697014-Box%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E6%89%BF%E8%AA%8D%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E6%89%BF%E8%AA%8D)を参照してください。 ## 手動による承認 以下の手順では、手動でアプリケーションを承認する方法について説明します。 ### 開発者の場合 1. [開発者コンソール](https://app.box.com/developers/console)で、目的のアプリケーションの [**構成**] タブに移動します。 2. [OAuth 2.0資格情報] セクションまで下にスクロールし、Box管理者に提出する [**クライアントID**] の値をコピーします。 また、[[Platformアプリ](g://applications)] ビューでアプリケーションにカーソルを合わせて**クライアントID**を調べ、`copy`ボタンを使用してそのIDをコピーすることもできます。 # Box管理者の確認方法 自分の会社の管理者がわからない場合は、Boxの [[アカウント設定](https://app.box.com/account)] ページに移動し、一番下までスクロールしてください。管理者の連絡先が設定されている場合は、[**管理者の連絡先**] の下に連絡先情報が表示されます。 ### 管理者の場合 Box管理者は、[管理コンソール](https://app.box.com/master/settings/custom)に移動し、[**統合**] > [**Platformアプリマネージャ**] > [**Platformアプリの追加**] を選択します。 表示されたポップアップで、開発者が開発者コンソールの [**構成**] タブから収集した、アプリケーションのクライアントIDを入力します。 ## 変更の再承認 アプリケーションのスコープまたはアクセスレベルが変更された場合は、アプリケーションを再承認する必要があります。新しい変更を有効にするには、上記のプロセスを繰り返して新しいアクセストークンをリクエストしてください。 管理者は、アプリケーションが最初に承認されたのと同じセクションで、そのアプリケーションを再承認できます。再承認するには、アプリケーション名の右側にある省略記号をクリックし、[**アプリを再承認**] を選択します。 **Source:** [https://ja.developer.box.com/guides/authorization/limited-access-approval/](https://ja.developer.box.com/guides/authorization/limited-access-approval/) --- ### アップロード **Type:** guide | **Category:** アップロード | **Section:** Developer Guides アップロード Box APIは、2つのファイルアップロード方法をサポートしています。直接ファイルアップロードAPIは最大50 MBのファイルをサポートしており、1回のAPIリクエストですべてのバイナリデータをBox APIに送信します。 分割アップロードAPIは20 MB… # アップロード Box APIは、2つのファイルアップロード方法をサポートしています。[直接ファイルアップロードAPI](g://uploads/direct)は最大50 MBのファイルをサポートしており、1回のAPIリクエストですべてのバイナリデータをBox APIに送信します。 [分割アップロードAPI](g://uploads/chunked)は20 MB以上のファイルをサポートしており、アプリケーションではファイルを複数のパーツに分割してアップロードすることで、エラーのキャッチと個別のパーツの再送信を詳細に制御できます。 アーカイブフォルダにファイルをアップロードするには、最初に、開発者コンソールで[グローバルコンテンツマネージャ](g://api-calls/permissions-and-errors/scopes) (GCM) スコープを有効にする必要があります。 ## アップロードの制限 アップロードの上限は、認証済みユーザーのアカウントの種類によって決まります。詳細については、このトピックに関する[Boxコミュニティの記事](https://support.box.com/hc/ja/articles/360043697314-Box%E3%81%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%82%8B%E6%9C%80%E5%A4%A7%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA)を参照してください。 ## 事前チェック 事前チェックAPIを使用すると、アプリケーションでアップロードを開始する前にそのファイルがBoxに受け入れられるかどうかを確認できます。このAPIは、新しいファイルにも、既存ファイルの新しいバージョンのアップロードにも使用できます。 事前チェックの詳細を確認する ## アップロードドメイン Boxへのアップロードは、通常のAPIコールとは異なるドメイン (`upload.box.com`) を介して行われます。アップロードコードを作成するときは、この点に注意する必要があります。すべてのBox SDKで、APIコールに適切なドメインが選択されます。 **Source:** [https://ja.developer.box.com/guides/uploads/](https://ja.developer.box.com/guides/uploads/) --- ### アップロードセッションのコミット **Type:** guide | **Category:** アップロード | **Section:** Developer Guides アップロードセッションのコミット 分割アップロードの最後の手順はセッションのコミットです。 ファイルアップロードセッションをコミットするには、コミットするアップロード済みパーツのリストを指定してPOST /files/upload_sessions/:id/commit… # アップロードセッションのコミット 分割アップロードの最後の手順はセッションのコミットです。 ファイルアップロードセッションをコミットするには、コミットするアップロード済みパーツのリストを指定して[`POST /files/upload_sessions/:id/commit`](e://post_files_upload_sessions_id_commit)を呼び出します。 加えて、ファイルの`attributes`を`parts`とともに渡すことで、ファイルに情報を追加できます。詳細については、[`POST /files/content`](e://post_files_content) APIを参照してください。 ## レスポンス 成功すると、APIはHTTP `201 Created`ステータスコードと[`File`](r://file)オブジェクトを返します。 場合によっては、パーツの作成がまだ準備できておらず、代わりに`202 Accepted`ステータスコードが返されることがあります。この場合、アプリケーションは`retry-after`ヘッダーを確認し、指定された秒数後にコミットを再試行する必要があります。 **Source:** [https://ja.developer.box.com/guides/uploads/chunked/commit-session/](https://ja.developer.box.com/guides/uploads/chunked/commit-session/) --- ### アップロードセッションの作成 **Type:** guide | **Category:** アップロード | **Section:** Developer Guides アップロードセッションの作成 アップロードセッションを作成するには、目的のfile_nameとそのファイルを配置するfolder_id、およびアップロードするファイルのfile_sizeを指定してPOST /files/upload_sessions API… # アップロードセッションの作成 アップロードセッションを作成するには、目的の`file_name`とそのファイルを配置する`folder_id`、およびアップロードするファイルの`file_size`を指定して[`POST /files/upload_sessions`](e://post_files_upload_sessions) APIを呼び出します。 既存ファイルの新しいバージョン用のセッションを作成するには、代わりに[`POST /files/:id/upload_sessions`](e://post_files_id_upload_sessions) APIを呼び出します。この場合、`file_name`と`folder_id`は、プロセスでファイルの名前変更または移動を行う場合にのみ必要となります。 ## 事前チェック アップロードセッションの作成によって[事前チェック](g://uploads/check)も実行されるため、分割アップロードを行う際に個別に行う必要はありません。 ## レスポンス セッションが正常に作成されると、レスポンスには、セッションID、パーツ数、パーツサイズ、および使用する関連する次のAPIエンドポイントへのリンクを含む[アップロードセッション](r://upload_session)が含まれます。 ``` { "id": "F971964745A5CD0C001BBE4E58196BFD", "type": "upload_session", "session_expires_at": "2012-12-12T10:53:43-08:00", "part_size": 1024, "total_parts": 1000, "num_parts_processed": 455, "session_endpoints": { "upload_part": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "commit": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/commit", "abort": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "list_parts": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/parts", "status": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "log_event": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/log" } } ``` アップロードセッションは、個々のパーツをアップロードするときに使用するパーツのサイズを定義します。 **Source:** [https://ja.developer.box.com/guides/uploads/chunked/create-session/](https://ja.developer.box.com/guides/uploads/chunked/create-session/) --- ### アプリケーション **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides アプリケーション Box開発者コンソールでは、後でBoxとの統合に使用できるアプリケーションを作成できます。[Platform… # アプリケーション Box開発者コンソールでは、後でBoxとの統合に使用できるアプリケーションを作成できます。[**Platformアプリ**] ビューには、すでに作成済みのアプリケーションのリストが表示されるので、ここから構成の詳細にすばやくアクセスできます。そのため、毎回アプリを開かなくても、開発者トークンを生成したり、クライアントIDをコピーしたり、レポートを生成したりできます。 ## 機能 [**Platformアプリ**] ページでは、以下の操作を行うことができます。 - 作成済みのアプリのリストを検索する。 - [**有効化ステータス**] および [**認証タイプ**] でアプリにフィルタをかける。 - [新しいアプリ](g://applications/app-types/select)を作成する。 - アプリの[クライアントID](g://authentication/client-credentials)をコピーする。 - アプリの名前を変更し、1回のクリックでその詳細にアクセスする。 - アプリケーションの[有効化](g://authorization/platform-app-approval#user-authentication-apps)ステータスと[承認](g://authorization)ステータスを確認する。統合に公開されたアプリには、統合でのステータスが表示されます。 各エントリに用意されている**オプションメニュー**を使用すると、以下の操作を行うことができます。 - アプリケーションの構成の詳細にアクセスする。 - [開発者トークン](g://authentication/tokens/developer-tokens)を生成する。 - アプリケーションにコラボレータを追加する。 - [Platform App Diagnosticsレポート](g://api-calls/permissions-and-errors/app-diagnostics-report)を実行する。 ## Platformアプリインサイト 管理者と共同管理者は、組織におけるプラットフォームの利用状況を集約した、Platformインサイトのダッシュボードにアクセスできます。これには、以下のような、アプリ関連のデータが含まれます。 - アプリケーションごとのAPIコールの合計数 - 企業内の上位アプリケーションのリスト - 承認を保留中のアプリケーションのリスト - 有効化待ちのアプリケーションのリスト 詳細については、[Platformインサイト](https://support.box.com/hc/en-us/articles20738406915219-Platform-Insights)を参照してください。 Platformインサイトにアクセスして表示するには、以下の権限が必要です。 - 会社の設定とアプリを表示する - 会社の設定とアプリを編集する - 新規レポートの実行および既存レポートへのアクセスを行う **Source:** [https://ja.developer.box.com/guides/applications/](https://ja.developer.box.com/guides/applications/) --- ### アプリケーションコードのスキャフォールディング **Type:** quick-start | **Category:** コラボレーション | **Section:** Developer Guides アプリケーションコードのスキャフォールディング SlackおよびBoxアプリケーションを構成したら、Slackから送信されるスラッシュコマンドやイベントをリッスンするアプリケーションのコードを作成できます。 このアプリケーションは、以下の… # アプリケーションコードのスキャフォールディング SlackおよびBoxアプリケーションを構成したら、Slackから送信されるスラッシュコマンドやイベントをリッスンするアプリケーションのコードを作成できます。 このアプリケーションは、以下の3つの機能に分割されます。 - 最初のアプリケーションスケルトンと構成情報を設定する - Slackイベントとスラッシュコマンドのハンドラを設定する - このハンドラをBoxの必要な関数に関連付ける ## 依存関係とスキャフォールドコードの追加 最初に、アプリケーションの実行に必要なファイルと最小限のコードのスキャフォールディングを行います。 - アプリケーション用に新しいローカルディレクトリを作成するか、[手順1](g://collaborations/connect-slack-to-group-collabs/configure-slack)のSlackイベントURLチャレンジ用に作成した既存のコードを読み込みます。 - ローカルディレクトリ内で新しい`package.json`ファイルを作成するか既存のファイルを更新します。任意のエディタでそのファイルを開き、以下の内容をコピーして貼り付け、ファイルを保存して終了します。 ``` { "name": "box-slack", "version": "1.0.0", "description": "Box Slack integration", "main": "process.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node process.js" }, "author": "Box", "license": "ISC", "dependencies": { "axios": "^0.19.2", "body-parser": "^1.19.0", "box-node-sdk": "^1.33.0", "express": "^4.17.1" } } ``` - ターミナル/コンソールから`npm install`を実行し、依存関係をインストールします。 - ローカルディレクトリに2つのファイル (`process.js`および`slackConfig.json`) を作成します。 - `slackConfig.json`を開いて、以下のデフォルト構成を保存します。 ``` { "verificationToken": "TOKEN", "botToken": "TOKEN" } ``` 上記の2つの値は、Slackアプリケーションから取得した詳細情報に置き換える必要があります。`TOKEN`文字列を適切な値に置き換えてください。 - `verificationToken`: Slackアプリケーションの構成ページを読み込みます。[**Basic Information (基本情報)**] ページで、[**App Credentials (アプリの資格情報)**] セクションまで下にスクロールし、[**Verification Token (確認トークン)**] の文字列を使用できます。 - `botToken`: Slackアプリケーションで、[**OAuth & Permissions (OAuthと権限)**] ページに移動し、上部にある [**Bot User OAuth Access Token (ボットユーザーOAuthアクセストークン)**] の文字列を使用できます。この文字列は、ボットがSlackワークスペースに追加されたときに自動入力されています。 空の`process.js`ファイルを開き、次のコードをコピーして貼り付け、ファイルを保存します。 ``` const box = require("box-node-sdk"); const slackConfig = require("./slackConfig.json"); const boxConfig = require("./boxConfig.json"); const express = require("express"); const app = express(); const axios = require("axios"); const util = require("util"); app.use(express.urlencoded({ extended: true })); app.use(express.json()); // INSTANTIATE BOX CLIENT app.post('/event', (req, res) => { //HANDLE INCOMING EVENTS }); const handler = (() => { function process(res, data) { // PROCESS EVENTS } function processUser(user, event, channel) { // PROCESS USER ADD / REMOVE REQUEST } function addGroupUser(groupId, email) { // ADD USER TO BOX GROUP } function removeGroupUser(groupId, email) { // REMOVE USER FROM BOX GROUP } function processContent(user, channel, type, fid) { // COLLABORATE CONTENT WITH GROUP } function processSlackChannel(channel, gid) { // ADD ALL SLACK CHANNEL USERS TO GROUP } function getSlackUser(userId, _callback) { // GET SLACK USER PROFILE } function getGroupId(groupName, _callback) { // GET AND CREATE BOX GROUP } return { process }; })(); const port = process.env.PORT || 3000; app.listen(port, function(err) { console.log("Server listening on PORT", port); }); ``` このコードには、SlackとBox間の通信を処理するのに必要となる主要な関数がすべて含まれています。これらの関数について、上から順に説明します。 - `/event`ハンドラ: 入ってくるSlackトラフィックをすべて取得し、内容を確認して、`process`関数に転送します。 - `process`: Slackイベントを解析し、Boxグループの処理 (ユーザーチャンネルイベント) またはグループへのBoxコンテンツの追加 (スラッシュコマンド) のいずれかにそのイベントを転送します。 - `processUser`: 適切な関数に転送することでBoxグループのユーザーを追加または削除して、User Eventを処理します。 - `addGroupUser`: Boxグループにユーザーを追加します。 - `removeGroupUser`: Boxグループからユーザーを削除します。 - `processContent`: BoxグループとBoxコンテンツのコラボレーションを行います。 - `processSlackChannel`: すべてのSlackチャンネルユーザーをBoxグループに追加します。 - `getSlackUser`: SlackユーザーのプロフィールをSlackユーザーIDから取得します (ユーティリティ関数)。 - `getGroupId`: Boxグループ名からBoxグループIDを取得します (ユーティリティ関数)。 Slackの資格情報とURLを保持するための構成ファイルを作成する必要があります。 - `Application.java`ファイルが配置されている`src/main/java`パスに、`slackConfig.java`という名前の新しいJavaクラスファイルを作成します。 - ファイルを開き、次の内容を保存します。 ``` package com.box.slack.box; public class slackConfig { public static String verificationToken = "TOKEN"; public static String botToken = "TOKEN"; public static String slackApiUrl = "https://slack.com/api"; } ``` 上記の2つの値は、Slackアプリケーションから取得した詳細情報に置き換える必要があります。`TOKEN`文字列を適切な値に置き換えてください。 - `verificationToken`: Slackアプリケーションの構成ページを読み込みます。[**Basic Information (基本情報)**] ページで、[**App Credentials (アプリの資格情報)**] セクションまで下にスクロールし、[**Verification Token (確認トークン)**] の文字列を使用できます。 - `botToken`: Slackアプリケーションで、[**OAuth & Permissions (OAuthと権限)**] ページに移動し、上部にある [**Bot User OAuth Access Token (ボットユーザーOAuthアクセストークン)**] の文字列を使用できます。この文字列は、ボットがSlackワークスペースに追加されたときに自動入力されています。 以前のSlackイベントチャレンジの設定で作成した`Application.java`ファイルを開き、ファイルの内容を次の内容に置き換えます。 ``` package com.box.slack.box; import java.io.BufferedReader; import java.io.FileReader; import java.io.InputStreamReader; import java.io.Reader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.nio.charset.StandardCharsets; import java.util.Iterator; import javax.servlet.http.HttpServletResponse; import org.jose4j.json.internal.json_simple.JSONArray; import org.jose4j.json.internal.json_simple.JSONObject; import org.jose4j.json.internal.json_simple.parser.JSONParser; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.http.MediaType; import org.springframework.scheduling.annotation.Async; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import com.box.sdk.BoxAPIConnection; import com.box.sdk.BoxCollaborator; import com.box.sdk.BoxCollaboration; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxFile; import com.box.sdk.BoxFolder; import com.box.sdk.BoxGroup; import com.box.sdk.BoxGroupMembership; import com.box.sdk.BoxUser; @RestController @EnableAutoConfiguration public class Application extends slackConfig { private Reader fileReader; private BoxConfig boxConfig; private BoxAPIConnection boxAPI; @PostMapping("/event") @ResponseBody public void handleEvent(@RequestBody String data, @RequestHeader("Content-Type") String contentType, HttpServletResponse response) throws Exception { // HANDLE EVENTS } @Async public void processEvent(String data) throws Exception { // VERIFY EVENTS } public void process(JSONObject inputJSON) throws Exception { // PROCESS EVENTS } public void processUser(JSONObject userResponse, String event, String channel) throws Exception { // PROCESS USER ADD / REMOVE REQUEST } public void addGroupUser(String groupId, String userEmail) { // ADD USER TO BOX GROUP } public void removeGroupUser(String groupId, String userEmail) { // REMOVE USER FROM BOX GROUP } public void processContent(JSONObject userResponse, String channel, String fType, String fId) { // COLLABORATE CONTENT WITH GROUP } public void processSlackChannel(String channel, String groupId) throws Exception { // ADD ALL SLACK CHANNEL USERS TO GROUP } public JSONObject getSlackUser(String userId) throws Exception { // GET SLACK USER PROFILE } public String getGroupId(String groupName) { // GET AND CREATE BOX GROUP } public JSONObject sendGETRequest(String reqURL) throws Exception { StringBuffer response = new StringBuffer(); URL obj = new URL(reqURL); HttpURLConnection httpURLConnection = (HttpURLConnection) obj.openConnection(); httpURLConnection.setRequestMethod("GET"); int responseCode = httpURLConnection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { BufferedReader in = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream())); String inputLine; while ((inputLine = in .readLine()) != null) { response.append(inputLine); } in .close(); } else { System.err.println("GET request failed"); } Object dataObj = new JSONParser().parse(response.toString()); JSONObject outputJSON = (JSONObject) dataObj; return outputJSON; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` このコードには、SlackとBox間の通信を処理するのに必要となる主要な関数がすべて含まれています。これらの関数について、上から順に説明します。 - `handleEvent`: 入ってくるSlackトラフィックをすべて取得し、HTTP 200レスポンスで応答して、イベントが受信されたことをSlackに通知します。スラッシュコマンドにより、ペイロードが`application/json`ではなく`application/x-www-form-urlencoded`として送信されるため、そのペイロードをJSONオブジェクトに変換して入力を標準化します。 - `processEvent`: イベントがSlackから送信されたかどうかを確認し、Boxクライアントをインスタンス化して、処理のために転送します。 - `process`: Slackイベントを解析し、Boxグループの処理 (ユーザーチャンネルイベント) またはグループへのBoxコンテンツの追加 (スラッシュコマンド) のいずれかに転送します。 - `processUser`: 適切な関数に転送することで、Boxグループのユーザーを追加または削除するためのUser Eventの要件を処理します。 - `addGroupUser`: Boxグループにユーザーを追加します。 - `removeGroupUser`: Boxグループからユーザーを削除します。 - `processContent`: BoxグループとBoxコンテンツのコラボレーションを行います。 - `processSlackChannel`: すべてのSlackチャンネルユーザーをBoxグループに追加します。 - `getSlackUser`: SlackユーザープロフィールをSlackユーザーIDから取得するユーティリティ関数。 - `getGroupId`: Boxグループ名からBoxグループIDを取得します (ユーティリティ関数)。 - `sendGETRequest`: HTTP GETリクエストを送信するユーティリティ関数。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## まとめ - 最小限のアプリケーションスキャフォールドを作成し、基本的な構成の詳細を指定しました。 - プロジェクトの依存関係をすべてインストールしました。 ローカルアプリケーションの設定が完了しました **Source:** [https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/scaffold-application-code/](https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/scaffold-application-code/) --- ### アプリケーションコードのスキャフォールディング **Type:** quick-start | **Category:** SSOとApp User | **Section:** Developer Guides アプリケーションコードのスキャフォールディング このガイドではまず、必要となるOktaとBox… # アプリケーションコードのスキャフォールディング このガイドではまず、必要となるOktaとBoxのアプリケーションを作成するにあたり、コードと構成データを格納するローカルアプリケーションを作成します。 言語/フレームワークの設定に応じて、空のアプリケーションを作成し、必要な依存関係のほか、すべての構成ファイルとプログラムファイルをインストールします。 まずは、以下からお好みの言語/フレームワークを選択してください。 # Node Express.jsフレームワークを使用します。 # Java Spring Bootフレームワークを使用します。 # Python Flaskフレームワークを使用します。 # .NET ASP.NET Coreフレームワークを使用します。 - アプリケーション用にローカルディレクトリを作成します。 - そのローカルディレクトリの中に`package.json`ファイルを作成し、お好みのエディタで開いたら、以下の内容をコピーして貼り付け、ファイルを保存して閉じます。 ``` { "name": "okta-box", "version": "1.0.0", "description": "Box / Okta sample integration", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js" }, "author": "Box", "license": "ISC", "dependencies": { "@okta/oidc-middleware": "^4.0.0", "@okta/okta-sdk-nodejs": "^3.2.0", "box-node-sdk": "^1.31.0", "express-session": "^1.17.0" } } ``` - ターミナル/コンソールから`npm init`を実行して依存関係をインストールします。 - ローカルディレクトリに2つのファイル (`server.js`および`config.js`) を作成します。 - `config.js`を開いて、以下のデフォルト構成を保存します。 ``` const oktaClientId = exports.oktaClientId = ''; const oktaClientSecret = exports.oktaClientSecret = ''; const oktaOrgUrl = exports.oktaOrgUrl = ''; const oktaBaseUrl = exports.oktaBaseUrl = 'http://localhost:3000'; const oktaRedirect = exports.oktaRedirect = '/authorization-code/callback'; ``` - Eclipseで新しいプロジェクトを作成します。求められたら、Gradleプロジェクトを選択します。 - プロジェクトの一意の名前を入力します。このガイドでは`okta.sample`という名前を使用しています。 - `build.gradle`ファイルを開いて以下の依存関係を追加します。保存したら、Gradleプロジェクトを更新します。 ``` dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'com.okta.spring:okta-spring-boot-starter:1.4.0' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } testImplementation 'org.springframework.security:spring-security-test' compile 'com.box:box-java-sdk:2.44.1' } ``` - `/src/main/resources/application.properties`ファイルを開いて以下のデフォルトを保存します。 ``` okta.oauth2.redirect-uri=/authorization-code/callback okta.oauth2.issuer= okta.oauth2.clientId= okta.oauth2.clientSecret= security.oauth2.sso.loginPath=/authorization-code/callback ``` - アプリケーション用にローカルディレクトリを作成します。 - ターミナル/コマンドプロンプトで`pip`コマンド (`pip install flask flask_oidc okta boxsdk config`) を使用して、必要な依存関係をインストールします。 - ローカルディレクトリに3つのファイル (`client_secrets.json`、`config.py`、`server.py`) を作成します。 - `config.py`を開いて以下の内容を保存します。これは、必要となるOktaアプリの構成情報の一部です。残りの情報については、次の手順で設定します。 ``` okta_client_secret = 'YOUR OKTA CLIENT SECRET' okta_org_url = 'YOUR OKTA ORG URL' okta_auth_token = 'YOUR OKTA APP TOKEN' okta_callback_route = '/oidc/callback' ``` - `client_secrets.json`を開いて以下の内容を保存します。これは、構成時にFlask OpenID Connect統合で使用される標準のオブジェクトです。残りの情報については、次の手順で設定します。 ``` { "web": { "client_id": "OKTA CLIENT ID", "client_secret": "OKTA CLIENT SECRET", "auth_uri": "OKTA AUTHORIZE URI", "token_uri": "OKTA TOKEN URI", "issuer": "OKTA APP DEFAULT", "userinfo_uri": "OKTA APP USER INFO URI", "redirect_uris": [ "http://127.0.0.1:5000/oidc/callbac" ] } } ``` - アプリケーション用にローカルディレクトリを作成します。 - コマンドプロンプト/ターミナルウィンドウを開いて、ローカルアプリケーションディレクトリに移動します。[.NET Core CLI](https://docs.microsoft.com/en-us/dotnet/core/tools/)を使用して、`dotnet new mvc`と入力してEnterキーを押します。これにより、ASP.NET Core MVC (Model-View-Controller) ウェブアプリに主要なスキャフォールディングが作成されます。または、[Visual Studioから直接](https://docs.microsoft.com/en-us/visualstudio/ide/quickstart-aspnet-core)このアプリケーションを作成することもできます。 - コマンドプロンプト/ターミナルウィンドウで、ローカルアプリケーションディレクトリに`dotnet add package Okta.AspNetCore`と入力してOkta ASP.NET Coreの依存関係を追加し、`dotnet add package Box.V2.Core`と入力してBoxの依存関係を追加します。 - Visual Studioまたはお好みのエディタに新しいアプリケーションを読み込みます。 - プロジェクトのルート内で`Startup.cs`を開きます。 - ファイルの先頭に以下のパッケージ宣言を追加します。 ``` using Microsoft.AspNetCore.Authentication.Cookies; using Okta.AspNetCore; ``` - `ConfigureServices`メソッドの内容を以下の内容に置き換えます。具体的なOktaアプリケーションの値は次の手順で設定します。 ``` services.AddControllersWithViews(); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultChallengeScheme = OktaDefaults.MvcAuthenticationScheme; }) .AddCookie() .AddOktaMvc(new OktaMvcOptions { // Replace these values with your Okta configuration OktaDomain = "", ClientId = "", ClientSecret = "" }); ``` 次の行を`Configure`メソッドの**先頭**に追加します。 ``` app.UseAuthentication(); ``` # 前の手順が完了していません 開始するには、お好みの言語/フレームワークを選択してください。 ## まとめ - 新しいローカルアプリケーション、ファイル、基本的な構成の詳細を作成しました。 - プロジェクトの依存関係をすべてインストールしました。 ローカルアプリケーションの設定が完了しました **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/scaffold-application-code/](https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/scaffold-application-code/) --- ### アプリケーションの実行 **Type:** quick-start | **Category:** SSOとApp User | **Section:** Developer Guides アプリケーションの実行 サンプルの構成コンポーネントがすべて設定できたら、プログラムを実行してすべてが正常に動作していることを確認します。 ターミナル/コマンドプロンプトで、ローカルアプリケーションディレクトリにnode server.jsと入力してEnter… # アプリケーションの実行 サンプルの構成コンポーネントがすべて設定できたら、プログラムを実行してすべてが正常に動作していることを確認します。 ターミナル/コマンドプロンプトで、ローカルアプリケーションディレクトリに`node server.js`と入力してEnterキーを押します。サーバーが起動し、`Server started: Listening on port 3000`と出力されます。 ブラウザで`http://localhost:3000/`にアクセスします。ユーザーのサインインフローを試すのは今回が初めてなので、Oktaログインが表示されます。 [手順2](g://sso-identities-and-app-users/connect-okta-to-app-users/configure-okta)の最後のセクションで作成したOktaユーザーの資格情報を使用してサインインします。 サインインしたら、`New user created: {{USERNAME}}`というメッセージがブラウザに出力されます。 その後このユーザーでログインを試みると、ブラウザに`Hello {{USERNAME}}`と出力されるようになります。 Eclipse (またはお好みのエディタ) で、クリックしてアプリケーションを実行します。Spring Bootアプリケーションがポート8080で実行されていることを示すコンソール出力が表示されます。 ブラウザで`http://localhost:8080/`にアクセスします。ユーザーのサインインフローを試すのは今回が初めてなので、Oktaログインが表示されます。 [手順2](g://sso-identities-and-app-users/connect-okta-to-app-users/configure-okta)の最後のセクションで作成したOktaユーザーの資格情報を使用してサインインします。 サインインしたら、`New User Created: {{USERNAME}}`というメッセージがブラウザに出力されます。 その後このユーザーでログインを試みると、ブラウザに`Hello {{USERNAME}}`と出力されるようになります。 ターミナル/コマンドプロンプトで、ローカルアプリケーションディレクトリに`env FLASK_APP=server.py flask run`と入力してEnterキーを押します。サーバーが起動し、`Running on http://127.0.0.1:5000/`と出力されます。 ブラウザで`http://127.0.0.1:5000/`にアクセスします。ユーザーのサインインフローを試すのは今回が初めてなので、Oktaログインが表示されます。 [手順2](g://sso-identities-and-app-users/connect-okta-to-app-users/configure-okta)の最後のセクションで作成したOktaユーザーの資格情報を使用してサインインします。 サインインしたら、`New user created: {{USERNAME}}`というメッセージがブラウザに出力されます。 その後このユーザーでログインを試みると、ブラウザに`Hello {{USERNAME}}`と出力されるようになります。 Visual Studio Code (またはお好みのエディタ) で、メニューから [`Run`] -> [`Start Debugging`] をクリックします。アプリケーションが読み込まれるとデバッグコンソール出力が表示され、その後、ブラウザウィンドウでは、`https://localhost:5001/`でアプリケーションが表示されます。 アプリケーションをテストするのは今回が初めてなので、サインインリンクが表示されます。クリックすると、Oktaログインが自動的に読み込まれます。 [手順2](g://sso-identities-and-app-users/connect-okta-to-app-users/configure-okta)の最後のセクションで作成したOktaユーザーの資格情報を使用してサインインします。 サインインしたら、デバッグコンソールの`New user created: {{USERNAME}}`というメッセージがブラウザに出力されます。 その後このユーザーでログインを試みると、ブラウザに`Current user name: {{USERNAME}}`と出力されるようになります。 # 前の手順が完了していません 最初に、手順1でお好みの言語/フレームワークを選択してください。 ## まとめ このクイックスタートガイドが完了しました。ここまで、以下の手順を実行しました。 1. [ウェブアプリケーションのスキャフォールディングを作成しました](g://sso-identities-and-app-users/connect-okta-to-app-users/scaffold-application-code)。 2. [Oktaアプリケーションを設定および構成](g://sso-identities-and-app-users/connect-okta-to-app-users/configure-okta)して、ウェブアプリへのログインに使用できる1人目のユーザーを作成しました。 3. [Boxアプリケーションを設定および構成](g://sso-identities-and-app-users/connect-okta-to-app-users/configure-box)して、ウェブアプリからBoxに接続できるようにしました。 4. [ウェブアプリケーションのログインフローを作成](g://sso-identities-and-app-users/connect-okta-to-app-users/logging-into-app)して、Oktaユーザーがログインできるようにしました。 5. Oktaユーザーが初めてウェブアプリケーションにログインするときに、[既存のBoxユーザーを検索し、必要に応じてBoxユーザーを作成するためのチェックを追加](g://sso-identities-and-app-users/connect-okta-to-app-users/find-or-create-box-users)しました。 6. [最後にアプリケーションを実行](g://sso-identities-and-app-users/connect-okta-to-app-users/run-the-app)して、フロー全体の動作を確認しました。 ## 次の手順 ユーザーの作成とアクセスのプロセスに関連したより高度な機能について詳しく知りたい方には、以下のリソースをお勧めします。 - ユーザーフォルダのアーキテクチャの詳細な設定に関する、[ユーザープロビジョニング](g://users/provision)のベストプラクティス。 - 非アクティブなユーザーの削除と別のアカウントへのユーザーコンテンツの転送に関する、[ユーザーのプロビジョニング解除](g://users/deprovision)のベストプラクティス。 - 事前チェックや大容量ファイルの (分割) アップロードなど、Boxへの[コンテンツのアップロード](g://uploads)。 **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/run-the-app/](https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/run-the-app/) --- ### アプリケーションの種類 **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides アプリケーションの種類 以下に、作成できるさまざまなBoxアプリケーションの種類の概要を示します。 アプリケーションの種類 認証方法 Platformアプリ OAuth 2.0、JWT… # アプリケーションの種類 以下に、作成できるさまざまなBoxアプリケーションの種類の概要を示します。 | アプリケーションの種類 | 認証方法 | | --- | --- | | Platformアプリ | OAuth 2.0、JWT、またはクライアント資格情報許可 | | アクセス制限付きアプリ | アプリトークン | | カスタムスキル | 選択不要 | アプリケーションの種類の選択方法を確認する **Source:** [https://ja.developer.box.com/guides/applications/app-types/](https://ja.developer.box.com/guides/applications/app-types/) --- ### アプリケーションフロー **Type:** guide | **Category:** セキュリティ | **Section:** Developer Guides アプリケーションフロー 一般的に、アプリケーションでは以下のようにサービス利用規約を使用します。 ユーザーとして認証されたアプリケーションが、関連するサービス利用規約にユーザーが同意している必要があるBox内の項目にアクセスしようとすると、TERMS_OF_SERVICE… # アプリケーションフロー 一般的に、アプリケーションでは以下のようにサービス利用規約を使用します。 ユーザーとして認証されたアプリケーションが、関連するサービス利用規約にユーザーが同意している必要があるBox内の項目にアクセスしようとすると、`TERMS_OF_SERVICE_REQUIRED`エラーが返されます。 ``` { "type": "error", "status": 400, "code": "terms_of_service_required", "context_info": { "tos_id": 261346614, "tos_user_status_id": 4562456 }, "help_url": "https://developer.box.com/guides/api-calls/permissions-and-errors/common-errors/", "message": "User must accept custom terms of service before action can be taken", "request_id": "ADF7722DD" } ``` アプリケーションは、[`GET /terms_of_services/:id`](e://get_terms_of_services_id)を呼び出してサービス利用規約の情報をリクエストします。 ``` { "id": 261346614, "type": "terms_of_service", "status": "enabled", "enterprise": { "id": 11446498, "type": "enterprise", "name": "Acme Inc." }, "tos_type": "managed", "text": "By using this service, you agree to ...", "created_at": "2012-12-12T10:53:43-08:00", "modified_at": "2012-12-12T10:53:43-08:00" } ``` その後、アプリケーションはサービス利用規約のテキストをユーザーに表示できます。 ユーザーが利用規約を同意または拒否すると、最初のエラーによってレスポンスで`tos_user_status_id`が返されたかどうかに応じて、[`PUT /terms_of_service_user_statuses/:id`](e://put_terms_of_service_user_statuses_id)または[`POST /terms_of_service_user_statuses`](e://post_terms_of_service_user_statuses)が呼び出されます。 **Source:** [https://ja.developer.box.com/guides/security/terms-of-service/flow/](https://ja.developer.box.com/guides/security/terms-of-service/flow/) --- ### アプリトークンの循環 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides アプリトークンの循環 アプリケーションのアプリトークンを… # アプリトークンの循環 アプリケーションのアプリトークンを1つずつ更新することで、アプリケーションではトークンの循環が可能となり、競合が発生することはありません。 ## トークンを循環させる理由 一定の間隔でアプリトークンを循環させる理由はいくつかあります。 1. 有効期限が自動的に切れるよう構成されているトークンを交換するため 2. セキュリティ侵害を受けたトークンによる影響を抑えるため どちらの場合も、Boxでは、いつでも2つのアクティブなアプリトークンがサポートされているため、古いトークンから新しいトークンへのシームレスな循環が可能です。 ## 循環の手順 以下の手順では、すでにプライマリアプリトークンとセカンダリアプリトークンを作成済みで、いずれか一方を置き換える準備が整っていることを前提としています。 以下の手順に従うと、2つの新しいトークンを使用して、問題なくアプリケーションを構成できます。 1. アプリケーションでプライマリアプリトークンを使用していることを前提に、[開発者コンソール](https://app.box.com/developers/console)アプリケーションに移動します。アプリケーションの [構成] セクションに移動し、セカンダリアプリトークンの [キーを生成] ボタンを選択します。 2. セカンダリアプリトークンを使用してアプリケーションを更新します。次の手順に進む前に、この新しいトークンでアプリケーションが完全に構成されていることを確認します。 3. プライマリアプリトークンが使用されていないことを確信したら、[開発者コンソール](https://app.box.com/developers/console)に移動して、プライマリアプリトークンの [取り消し] ボタンをクリックします。 セカンダリアプリトークンからプライマリアプリトークンにロールバックするには、トークンが交換された状態で同じ手順を繰り返します。 **Source:** [https://ja.developer.box.com/guides/authentication/app-token/rollover/](https://ja.developer.box.com/guides/authentication/app-token/rollover/) --- ### アプリトークン認証 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides アプリトークン認証 アプリトークンを使用するサーバー側認証は、Box APIに対する代替の認証方法で、アプリケーションのサービスアカウントに制限されている、有効期間の長い固定のアクセストークンを使用します。アプリトークン認証は、Box View… # アプリトークン認証 アプリトークンを使用するサーバー側認証は、Box APIに対する代替の認証方法で、アプリケーションの[サービスアカウント](page://platform/user-types/#service-account)に制限されている、有効期間の長い固定のアクセストークンを使用します。アプリトークン認証は、[Box View](g://embed/box-view)を利用するアプリケーションによる使用を目的としています。 ## アプリトークンの制限 サーバー側アプリトークンは、アプリケーションに、それ自体のアカウントのデータに対する読み取りと書き込みのアクセス権限だけがある認証方法です。この認証方法を使用すると、アプリケーションはそのアプリケーションに属しているサービスアカウントとして自動的に認証されるため、ユーザーを承認する必要がありません。 ## アプリトークンを使用する場合 アプリトークンを使用するサーバー側認証は、以下に当てはまるアプリに最適な認証方法です。 - [Box View](g://embed/box-view)を介してBoxのプレビューサービスを利用する - ユーザーモデルがない環境、またはBoxアカウントを持たないユーザーがいる環境で使用する - 独自のIDシステムを使用する - ユーザーにBoxを使用していることを認識させたくない - ユーザーのアカウントではなく、アプリケーションのサービスアカウントにデータを保存する **Source:** [https://ja.developer.box.com/guides/authentication/app-token/](https://ja.developer.box.com/guides/authentication/app-token/) --- ### アプリトークン認証を使用した設定 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides アプリトークン認証を使用した設定 アクセス制限付きアプリは、認証にサーバー側のアプリトークンを使用するよう設定できます。 アプリトークン認証のしくみを確認する 前提条件 サーバー側認証を使用してPlatformアプリを設定するには、Box Enterprise… # アプリトークン認証を使用した設定 アクセス制限付きアプリは、認証にサーバー側の[アプリトークン](g://authentication/app-token)を使用するよう設定できます。 アプリトークン認証のしくみを確認する ## 前提条件 サーバー側認証を使用してPlatformアプリを設定するには、Box Enterpriseアカウントから[開発者コンソール](https://app.box.com/developers/console)にアクセスできることを確認する必要があります。または、[Developerアカウント](https://account.box.com/signup/n/developer)にサインアップすることもできます。 ## アプリの作成手順 ### 1. 開発者コンソールにログインする Boxにログインし、[開発者コンソール](https://app.box.com/developers/console)に移動して、[**Platformアプリの作成**] を選択します。 ### 2. Platformアプリを作成する アプリケーションの種類のリストから [**アクセス制限付きアプリ**] を選択します。次の手順を促すウィンドウが表示されます。 ### 3. アプリ名を選択する 最後に、アプリケーションの一意の名前を選択し、[**アプリの作成**] をクリックします。 ## アプリ承認 キーペアがアプリケーションに正常に追加されたら、Box Enterprise管理者はBox管理コンソール内でこのアプリケーションを承認する必要があります。 [開発者コンソール](https://app.box.com/developers/console)内でアプリケーションの [**一般設定**] タブに移動し、[**アプリ承認**] セクションまで下にスクロールします。 [**確認して送信**] をクリックして、承認を得るためにBox Enterprise管理者にメールを送信します。このプロセスの詳細については、[承認ガイド](g://authorization)を参照してください。 ## 基本的な構成 アプリケーションを使用するには、事前にいくつかの基本的な追加構成が必要になる場合があります。 ### プライマリおよびセカンダリアプリトークン アクセス制限付きアプリでの認証は、あらかじめ構成された[アプリトークン](g://authentication/app-token)を使用して行われます。アプリトークンを構成するには、[開発者コンソール](https://app.box.com/developers/console)内でアプリケーションの [**構成**] タブに移動します。 [**プライマリアクセストークン**] セクションまで下にスクロールし、[**キーを生成**] ボタンをクリックします。 アプリトークンは、自動的に期限切れになるよう構成することも、有効期限なしで構成することもできます。作成後は、このキーを使用して[APIコール](g://api-calls)を実行できます。 # アプリ承認 アプリトークンは、Box管理コンソール内でアプリケーションの承認が成功するまで生成できません。 ### CORSドメイン アプリケーションがJavaScriptでフロントエンドのブラウザコードからAPIコールを実行する場合は、[クロスオリジンリソース共有](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) (CORS) のために、これらの呼び出しの実行元となるドメインを許可リストに追加する必要があります。すべてのリクエストがサーバー側のコードから発行される場合は、このセクションをスキップできます。 許可リストにすべてのURIを追加するには、[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブの下部にある [**CORSドメイン**] セクションに移動します。 **Source:** [https://ja.developer.box.com/guides/authentication/app-token/app-token-setup/](https://ja.developer.box.com/guides/authentication/app-token/app-token-setup/) --- ### アプリの公開 **Type:** guide | **Category:** はじめに | **Section:** Developer Guides アプリの公開 Platformアプリの構成とテストが完了したら、Box統合でアプリを公開できます。公開すると、お客様がアプリを見つけて、自分のBoxアカウントに追加できるようになります。 公開オプションが組み込まれるのは、OAuth 2.… # アプリの公開 Platformアプリの構成とテストが完了したら、[Box統合](https://cloud.app.box.com/integrations)でアプリを公開できます。公開すると、お客様がアプリを見つけて、自分のBoxアカウントに追加できるようになります。 公開オプションが組み込まれるのは、OAuth 2.0認証を使用するアプリのみです。統合に別の種類の認証を使用する場合も、[**統合**] でマーケティングリストとして機能し、お客様を開発元のウェブサイトにリダイレクトするOAuth 2.0のPlatformアプリを作成して公開できます。 Platformアプリを公開するには、以下の手順に従います。 **開発者コンソール**を開きます。 公開するPlatformアプリを選択します。 [**公開**] タブに移動します。 送信チェックリストをひととおり読み、アプリがすべての要件を満たしているかどうかを確認するチェックボックスをオンにします。 次の手順として、アプリのマーケティングセクションで、アプリに関する以下の情報を追加する必要があります。 - [**一般情報**] - 統合で見つけやすくするために、アプリに適したカテゴリとプラットフォームを選択します。 [**説明**] - お客様の役に立つと思われる、アプリに関するすべての情報を必ず含めます。 - [**簡単な説明**] は、アプリのロゴの横にアプリ名と一緒に表示されます。 - [**詳しい説明**] は、ユーザーがアプリを選択してその詳細を表示すると表示される内容です。詳しい説明へのクリック可能なリンクを追加できます。 1. [**スクリーンショット**] および [**アイコン**] - ユーザーがアプリの外観やBoxとの統合方法を確認できるようにスクリーンショットを指定します。アイコンは、統合のリストでアプリを表すために必要になります。 2. [**サポートリソース**] - ユーザーがアプリを操作するのに役立つリンクと補足情報のリスト。 アプリを送信する前に、アプリをプレビューして、必要な情報がすべて含まれているかどうかを確認します。 承認を得るためにアプリを送信します。Boxがアプリをレビューし、[**統合**] で公開します。 ご不明な点や問題がある場合は、**パートナー**チーム ([`integrate@box.com`](mailto:integrate@box.com)) まで英語でお問い合わせください。 **Source:** [https://ja.developer.box.com/guides/getting-started/publish-app/](https://ja.developer.box.com/guides/getting-started/publish-app/) --- ### アプリの種類の選択 **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides アプリの種類の選択 開発者コンソールで新しいBox… # アプリの種類の選択 [開発者コンソール](https://app.box.com/developers/console)で新しいBoxアプリケーションを作成する際は、まず、次のアプリケーションの種類のいずれかを選択する必要があります。選択するアプリケーションの種類は、プロジェクトのユースケースによって決まり、アプリケーションの構成時に使用できる認証方法のみに影響します。この選択を後で変更することはできません。 ## Platformアプリ | | | | --- | --- | | 認証方法 | OAuth 2.0、JWT、またはクライアント資格情報認証 | | 注目すべき機能 | Webhook、統合、ウェブアプリ統合 | Platformアプリはほとんどのユースケースに対応しており、最も柔軟なオプションです。このアプリケーションの種類では、Boxの150を超えるエンドポイントを操作できます。たとえば、メタデータのダウンロード/アップロード、検索、適用などが可能です。 Platformアプリの詳細を確認する ## アクセス制限付きアプリ | | | | --- | --- | | 認証方法 | アプリトークン | | 注目すべき機能 | 制限されたAPIアクセス | アクセス制限付きアプリは、[Box View](g://embed/box-view)を利用したり、別のアプリケーション内でBoxコンテンツをプレビューしたりする場合に最適です。この種類のアプリケーションで操作できるエンドポイントの数は限られています。 アクセス制限付きアプリの詳細を確認する ## カスタムスキル | | | | --- | --- | | 認証方法 | スキルイベントにおけるアクセストークン | | 注目すべき機能 | 制限されたAPIアクセス | カスタムスキル (Box Skill) とは、Boxにアップロードされたファイルに対してカスタマイズした処理を実行する一種のアプリケーションです。スキルは、サードパーティの機械学習サービスを使用して、Boxにアップロードされたファイルから情報を自動的に抽出できるようにすることを目的としています。 カスタムスキルの詳細を確認する **Source:** [https://ja.developer.box.com/guides/applications/app-types/select/](https://ja.developer.box.com/guides/applications/app-types/select/) --- ### イベント **Type:** guide | **Category:** イベント | **Section:** Developer Guides イベント アプリケーションはイベントフィードを使用して、Enterprise内の任意のユーザー (複数可) またはサービスが実行する操作をすべて登録できます。 User EventとEnterprise Event GET /events APIを使用すると、stream… # イベント アプリケーションはイベントフィードを使用して、Enterprise内の任意のユーザー (複数可) またはサービスが実行する操作をすべて登録できます。 ## User EventとEnterprise Event [`GET /events`](e://get_events) APIを使用すると、`stream_type`に応じて、Enterprise全体または特定のユーザーのライブイベントにサブスクライブするか、Enterprise全体のイベントの履歴を照会することができます。 ### User Event User Eventは、現在認証されているユーザーに関連する、低レイテンシのイベントストリームを提供します。このイベントストリームにより、[Box Drive](https://www.box.com/drive)は常に最新の状態で維持されますが、このイベントストリームは開発者向けにも提供されています。 このフィードでは、すべての結果を迅速に返すことを重視しています。つまり、Boxでは、イベントが複数回または時系列に関係なく返される可能性があります。重複するイベントは、イベントIDによって識別できます。 Enterprise Event Streamとは異なり、User Event Streamは、特定のイベントのフィルタをサポートしません。User Eventの3つのstream_typeで返されるUser Eventデータセットのサブセットは、目的に応じて若干異なります。 | ストリームタイプ | | | --- | --- | | all | ユーザーに関するすべてのイベントを返します (デフォルト)。 | | changes | ファイルの更新やコラボレーションなど、ファイルツリーを変更する可能性があるイベントを返します | | sync | 変更に似ていますが、同期対象フォルダにのみ適用されます。 | ### Enterprise Event Enterprise Eventは、企業のBoxインスタンスにあるすべてのユーザーとコンテンツのイベントフィードを提供します。`stream_type`に応じて、アプリケーションは、ライブイベントを登録するかイベントの履歴を照会することができます。これらのストリームタイプへのアクセスは、**新規レポートの実行および既存レポートへのアクセスを行う**ための管理者権限を持つユーザーに制限されます。 User Event Streamとは異なり、Enterprise Event Streamは、イベントタイプに基づくフィルタをサポートしますが、Long pollingをサポートしません。2つのストリームタイプでのデータセットはまったく同じです。イベントIDを使用すると、2つのストリームタイプでのイベントの重複を排除できます。 | ストリームタイプ | | | --- | --- | | admin_logs | イベントの履歴を最大1年分照会できるようにします | | admin_logs_streaming | ほぼリアルタイムでライブイベントにサブスクライブできるようにします | #### ライブで監視 Box内で生成された最近のイベントをEnterprise全体で監視するには、`stream_type`を`admin_logs_streaming`に設定します。これは、Enterprise Event Stream APIとも呼ばれます。 このフィードでは、時系列の正確さよりもレイテンシの低さを重視しています。つまり、Boxでは、イベントが複数回、時系列に関係なく返される場合があります。イベントは、Boxで処理されるとほぼリアルタイムでAPIを介して返されます。少しの遅延やバッファが発生すると、新しいイベントがカーソル位置の後に書き込まれなくなります。この`stream_type`で取得できるイベントは、2週間分だけです。 #### 履歴の照会 Enterprise全体のイベント履歴を最大1年分照会するには、`stream_type`を`admin_logs`に設定します。これは、 Enterprise Event History APIとも呼ばれます。 このフィードでは、レイテンシよりも完全性を重視しています。つまり、Boxでは、管理イベントが重複することなく時系列で配信されますが、レイテンシはユーザーまたは`admin_logs_streaming`のフィードよりも高くなります。イベントは、フィルタをかけている期間より後に到着する可能性があるため、ほぼリアルタイムで使用すると見逃される場合があります。 **Source:** [https://ja.developer.box.com/guides/events/](https://ja.developer.box.com/guides/events/) --- ### イベントストリームのパラメータ **Type:** guide | **Category:** イベント | **Section:** Developer Guides イベントストリームのパラメータ GET /eventsエンドポイントには、いくつかのパラメータを使用できます。stream_typeおよびstream_positionについては、このセクションのガイドで詳しく説明します。 # イベントストリームのパラメータ [`GET /events`](e://get_events)エンドポイントには、いくつかのパラメータを使用できます。`stream_type`および`stream_position`については、このセクションのガイドで詳しく説明します。 **Source:** [https://ja.developer.box.com/guides/events/parameters/](https://ja.developer.box.com/guides/events/parameters/) --- ### イベントソース **Type:** guide | **Category:** イベント | **Section:** Developer Guides イベントソース ユーザーまたは項目によってイベントがトリガーされると、GET /events… # イベントソース ユーザーまたは項目によってイベントがトリガーされると、[`GET /events`](e://get_events)エンドポイントのレスポンスにはイベントソースオブジェクトが含まれます。 ## ユーザーソースオブジェクト ユーザーがイベントをトリガーした場合、ソースオブジェクトは[ユーザーリソース](e://resources/user)の標準レプリゼンテーションになります。 ``` { "source": { "id": 11446498, "type": "user", "address": "900 Jefferson Ave, Redwood City, CA 94063", "avatar_url": "https://www.box.com/api/avatar/large/181216415", "created_at": "2012-12-12T10:53:43-08:00", "job_title": "CEO", "language": "en", "login": "ceo@example.com", "max_upload_size": 2147483648, "modified_at": "2012-12-12T10:53:43-08:00", "name": "Aaron Levie", "notification_email": { "email": "notifications@example.com", "is_confirmed": true }, "phone": 6509241374, "space_amount": 11345156112, "space_used": 1237009912, "status": "active", "timezone": "Africa/Bujumbura" } } ``` ## 項目ソースオブジェクト 項目がイベントをトリガーした場合、ソースオブジェクトは[イベントソースリソース](e://resources/event-source)になります。 以下の例には`classification`オブジェクトが含まれています。これは、項目に分類が設定されていない場合は表示されません。また、一部のイベントタイプでは表示されません。 ``` { "source": { "item_type": "file", "item_id": "8903212345", "item_name": "example.docx", "parent": { "type": "folder", "name": "All Files", "id": "0" }, "owned_by": { "type": "user", "id": "11446498", "name": "Aaron Levie", "login": "notifications@example.com" }, "classification": { "name": "Top Secret" } } } ``` **Source:** [https://ja.developer.box.com/guides/events/event-triggers/event-source/](https://ja.developer.box.com/guides/events/event-triggers/event-source/) --- ### イベントトリガー **Type:** guide | **Category:** イベント | **Section:** Developer Guides イベントトリガー イベントは、ユーザー、項目、またはその他のリソースによってコミットされたアクションに基づいてイベントストリームに表示されます。GET /eventsエンドポイントのレスポンスは、イベントをトリガーしたイベントによって変わります。 # イベントトリガー イベントは、ユーザー、項目、またはその他のリソースによってコミットされたアクションに基づいてイベントストリームに表示されます。[`GET /events`](e://get_events)エンドポイントのレスポンスは、イベントをトリガーしたイベントによって変わります。 **Source:** [https://ja.developer.box.com/guides/events/event-triggers/](https://ja.developer.box.com/guides/events/event-triggers/) --- ### インストール **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides インストール UI Elementを使用するには、Box CDNから直接JavaScriptライブラリをダウンロードするか、NPMパッケージをインストールします。すべてのUI Elementは、正しくレンダリングするために対応するCSSスタイルシートが必要です。 前提条件 Box… # インストール UI Elementを使用するには、Box CDNから直接JavaScriptライブラリをダウンロードするか、[NPMパッケージ](https://www.npmjs.com/package/box-ui-elements)をインストールします。すべてのUI Elementは、正しくレンダリングするために対応するCSSスタイルシートが必要です。 ## 前提条件 Box UI Elementsを使用するには、NodeおよびReactの以下のバージョンが必要です。 - Nodeのバージョン: `>=18.18.2 <20.11.0` - Reactのバージョン: `>=18.0.0` UI Elementsの利用可能なバージョンは、[手動によるインストール](#manual-installation)セクションに記載されています。 ### React 18への移行 React 17以下をベースとした既存のプロジェクトの場合は、[React 18の移行ガイド](https://react.dev/blog/2022/03/08/react-18-upgrade-guide)を参照してください。 プロジェクトでReactをアップグレードしたら、`npm`または`yarn`で`box-ui-elements`パッケージを更新します。 ``` npm install box-ui-elements --legacy-peer-deps yarn add box-ui-elements ``` これにより、`package.json`ファイルのバージョンが更新されます。 ``` "box-ui-elements": "^23.0.0" ``` コードでは、Box UI Elementsに関連した追加の変更は必要ありません。 詳細については、UI ElementsのためのReact 18へのアップグレードに関するブログ記事を参照してください。 ## NPMのインストール Reactベースのアプリを構築し、構築時にアプリに直接コンポーネントをインポートする場合は、この方法を使用します。 **注** ライブラリの依存関係が原因で、`npm`を使用してUI Elementsをインストールする場合は`--legacy-peer-deps`フラグが必要です。 ``` npm install box-ui-elements --legacy-peer-deps yarn add box-ui-elements ``` NPMウェブサイトの詳細を確認する ## コンテンツプレビュー 特定のバージョンのプレビューライブラリが必要な場合は、コンテンツプレビューSDKを使用します。それ以外の場合は、コンテンツプレビューUI Elementラッパーを使用します。 ## 手動によるインストール すべてのUI Elementは、Box CDNから直接入手することもできます。 | Element | バージョン | ファイル | | --- | --- | --- | | コンテンツエクスプローラ | 23.0.0 | CSS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/explorer.css | | | | Reactを使用するJS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/explorer.js | | | | Reactを使用しないJS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/explorer.no.react.js | | Content Open With | 23.0.0 | CSS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/openwith.css | | | | Reactを使用するJS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/openwith.js | | | | Reactを使用しないJS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/openwith.no.react.js | | Content Picker | 23.0.0 | CSS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/picker.css | | | | Reactを使用するJS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/picker.js | | | | Reactを使用しないJS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/picker.no.react.js | | Content Sidebar | 23.0.0 | CSS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/sidebar.css | | | | Reactを使用するJS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/sidebar.js | | | | Reactを使用しないJS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/sidebar.no.react.js | | コンテンツアップローダー | 23.0.0 | CSS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/uploader.css | | | | Reactを使用するJS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/uploader.js | | | | Reactを使用しないJS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/uploader.no.react.js | | コンテンツプレビューUI Element | 23.0.0 | CSS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/preview.css | | | 23.0.0 | JS https://cdn01.boxcdn.net/platform/elements/23.0.0/en-US/preview.js | | コンテンツプレビューSDK | 2.106.0 | CSS https://cdn01.boxcdn.net/platform/preview/2.106.0/en-US/preview.css | | | | JS https://cdn01.boxcdn.net/platform/preview/2.106.0/en-US/preview.js | 上記のリンクを使用して要素のコードをアプリケーションのコードにダウンロードするか、CDNからページに直接埋め込みます。 ``` <!DOCTYPE html> <html lang="en-US"> <head> <!-- Latest version of the explorer css for your locale --> <link rel="stylesheet" href="https://cdn01.boxcdn.net/platform/elements/{VERSION}/en-US/explorer.css" /> </head> <body> <!-- Latest version of the explorer js for your locale --> <script src="https://cdn01.boxcdn.net/platform/elements/{VERSION}/en-US/explorer.js"></script> ... </body> </html> ``` Boxプレビューでは、このサンプルは若干異なって見えます。 ``` <!DOCTYPE html> <html lang="en-US"> <head> <meta charset="utf-8" /> <title>Box Content Preview Demo</title> <!-- Latest version of Box Content Preview for en-US locale --> <script src="https://cdn01.boxcdn.net/platform/preview/{VERSION}/en-US/preview.js"></script> <link rel="stylesheet" href="https://cdn01.boxcdn.net/platform/preview/{VERSION}/en-US/preview.css" /> </head> <body> <div class="preview-container" style="height:400px; width:100%;"></div> <script> var preview = new Box.Preview(); preview.show("93392244621", "EqFyi1Yq1tD9mxY8F38sxDfp73pFd7FP", { container: ".preview-container", showDownload: true, }); </script> </body> </html> ``` ### バージョン ほとんどのUI Elementには、2つの異なるバージョンがあります。 バンドルにReactとReactDOMなどが含まれている、標準的な`*.js`ファイル (`explore.js`など)。 - これは、Reactベースのアプリを構築していない場合や、アプリの構築プロセスの一環としてコンポーネントを含める必要がない場合に使用します。 - ReactライブラリとReactDOMライブラリが含まれています。 - このアセットのファイルサイズは以下のアセットよりも大きくなります。 ReactとReactDOMがバンドルされない小規模な`*.no.react.js`ファイル (`explore.no.react.js`など)。 - これは、ReactライブラリとReactDOMライブラリが両方ともすでにアプリケーションで読み込まれている場合に使用します。 - これらのライブラリでは、ReactおよびReactDOMが`>= 16.6`かつ`< 18`であることを想定しています。 2つの`js`ファイルのうち1つのみと追加の`css`ファイルをプロジェクトに追加する必要があります。 ### サポートされているロケール 上記のアセットURLでは`en-US`が使用されています。別のロケールを使用する場合は、上記のURLに含まれる`en-US`を以下のいずれかに置き換えてください。 `en-AU`, `en-CA`, `en-GB`, `da-DK`, `de-DE`, `es-ES`, `fi-FI`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP,`, `ko-KR`, `nb-NO`, `nl-NL`, `pl-PL`, `pt-BR`, `ru-RU`, `sv-SE`, `tr-TR`, `zh-CN`, `zh-TW` ## コンテンツプレビューのセルフホスティング 所有するサーバーからBox Content Previewライブラリを提供するには、以下の手順に従います。 ### 1. リリースをダウンロードする リポジトリをフォークして、提供するバージョンをチェックアウトするか、特定のバージョンをzipとしてダウンロードします。 - `git checkout v2.106.0`を使用して特定のバージョンをチェックアウトします。 - [リリース](https://github.com/box/box-content-preview/releases)に関するページから特定のバージョンをzipとしてダウンロードします。 ### 2. 依存関係をインストールする 次のコマンドを使用して、依存関係をインストールしてライブラリをビルドします。 ``` yarn install && yarn build:i18n && yarn build:prod ``` ### 3. ファイルを提供する `/dist`フォルダから`dev`フォルダを除くすべてをセルフサービス形式で提供します。フォルダ構造は変えずに、`third-party`を`2.106.0`と同じフォルダに配置する必要があります。 たとえば、`box-assets`ディレクトリを使用したセルフホスティングを行う場合は、以下のURLにアクセスできる必要があります。 - `https://cdn.YOUR_SITE.com/box-assets/2.106.0/en-US/preview.js` - `https://cdn.YOUR_SITE.com/box-assets/third-party/text/2.65.0/papaparse.min.js` - `https://cdn.YOUR_SITE.com/box-assets/third-party/model3d/1.12.0/three.min.js` ## 認証 UI Elementのいずれかを初期化するには、アプリケーションから有効なアクセストークンを提供する必要があります。 アプリケーションの認証方法を確認する アクセストークンをセキュアでない環境 (ユーザーのウェブブラウザ) に渡す前に[ダウンスコープ](g://authentication/tokens/downscope)することもお勧めします。 UI Elementは、アクセストークンが認証用に渡されることだけを想定しているため、Box Platformから利用できるさまざまな種類の認証に使用できます。 テスト目的の場合は、[開発者トークン](g://authentication/tokens/developer-tokens)を使用できます。 ## CORS UI Elementを使用するには、アプリケーションで、クロスオリジンリソース共有でウィジェットが使用されるドメインを許可する必要があります。詳細については、[CORSガイド](g://security/cors)を参照してください。 ## ソースコードとリリース Box UI Elementsのソースコードは[GitHubでホストされています](https://github.com/box/box-ui-elements)。このリポジトリには、使用方法と開発に関する詳細なドキュメントが含まれています。見つかったバグは、わかりやすい再現手順とともに [Issues] タブに登録してください。また、このリポジトリでは、[リリース](https://github.com/box/box-ui-elements/releases)のリストも保持されています。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/installation/](https://ja.developer.box.com/guides/embed/ui-elements/installation/) --- ### ウェブアプリ: Box App UserへのOkta IDの関連付け **Type:** quick-start | **Category:** SSOとApp User | **Section:** Developer Guides ウェブアプリ: Box App UserへのOkta IDの関連付け Oktaは、企業に広く採用されているアクセス管理およびIDプラットフォームです。資格情報一式と… # ウェブアプリ: Box App UserへのOkta IDの関連付け [Okta](https://www.okta.com/)は、企業に広く採用されているアクセス管理およびIDプラットフォームです。資格情報一式と1つの安全なダッシュボードを使用して複数のアプリケーションを管理および認証するための統合された方法を提供しています。 カスタムBoxアプリケーションに接続している場合、[Okta API](https://developer.okta.com/)を使用して、そのBoxアプリケーション内でユーザーの本人確認を行うためのシングルサインオンメカニズムを提供できます。これにより、統合IDシステム (Okta) とBox APIの間のエクスペリエンスが統一されます。 ## 概要 このクイックスタートガイドでは、プログラムでOktaを使用してBoxアプリケーションにログインし、OktaユーザーにリンクされているBoxのApp Userをプロビジョニングしてから、そのユーザーに代わってBox APIコールを実行する方法を説明します。 ここでは、以下の手順を説明します。 1. [アプリケーションコードをスキャフォールディング](g://sso-identities-and-app-users/connect-okta-to-app-users/scaffold-application-code)して、ログインできるウェブアプリケーションを作成します。 2. [Oktaアプリケーションを設定および構成](g://sso-identities-and-app-users/connect-okta-to-app-users/configure-okta)してウェブアプリへのログインに使用できる1人目のユーザーを作成し、最終的にそのユーザーのBoxアカウントを作成します。 3. [Boxアプリケーションを設定および構成](g://sso-identities-and-app-users/connect-okta-to-app-users/configure-box)して、ウェブアプリケーションをBoxに接続できるようにします。 4. [アプリケーションのログインフローを作成](g://sso-identities-and-app-users/connect-okta-to-app-users/logging-into-app)して、Oktaユーザーがウェブアプリケーションにログインできるようにします。 5. Oktaユーザーが初めてウェブアプリケーションにログインするときに、[既存のBoxユーザーを検索し、必要に応じてBoxユーザーを作成](g://sso-identities-and-app-users/connect-okta-to-app-users/find-or-create-box-users)します。 6. [最後にアプリケーションを実行](g://sso-identities-and-app-users/connect-okta-to-app-users/run-the-app)して、フロー全体の動作を確認します。 このチュートリアルが完了すると、ブラウザに1つのメッセージが出力されます。今回Oktaユーザーが初めてアプリケーション経由でBoxにログインした場合は、関連付けられたBoxユーザーが作成され、`New user created: {{USERNAME}}`というメッセージがブラウザに出力されます。 その後このユーザーでログインを試みると、`Hello {{USERNAME}}`というメッセージがブラウザに出力されるようになります。 このガイドを簡略化するため、ここでは、ウェブアプリケーションのユーザーインターフェースは作成しません。代わりに、出力はアプリケーションコンソール/ターミナルを通じて表示されるほか、ブラウザで直接テキスト出力として表示されます。 開始する準備ができました **Source:** [https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/](https://ja.developer.box.com/guides/sso-identities-and-app-users/connect-okta-to-app-users/) --- ### ウェブアプリ統合 **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides ウェブアプリ統合 ウェブアプリ統合により、サードパーティ製アプリケーションをBox… # ウェブアプリ統合 ウェブアプリ統合により、サードパーティ製アプリケーションをBox内で使用できるようになり、ユーザーはファイルを編集または共有する際にそのサードパーティ製アプリケーションを使用できます。 ## 機能 - **ファイル操作**。ユーザーは、サードパーティ製アプリケーションを使用して、Box内に保存されているコンテンツを変更、共有、または編集できます。 - **推奨アプリのサポート**。統合は、Boxプレビューインターフェースで [**推奨アプリ**] の下に表示できます。詳細については、[推奨ウェブ統合](https://support.box.com/hc/ja/articles/360044195533-%E6%8E%A8%E5%A5%A8%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92Enterprise%E3%81%AB%E5%B0%8E%E5%85%A5%E3%81%99%E3%82%8B)を参照してください。 - **スコープが設定された利用状況**。統合は、特定のコンテンツタイプやファイル拡張子に制限できます。 ## [推奨アプリ] での表示 ウェブアプリ統合が [**推奨アプリ**] に表示されるのは、[統合] で公開されている場合のみです。 ウェブアプリ統合の作成方法を確認する **Source:** [https://ja.developer.box.com/guides/applications/web-app-integrations/](https://ja.developer.box.com/guides/applications/web-app-integrations/) --- ### ウェブアプリ統合の作成 **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides ウェブアプリ統合の作成 このガイドでは、Platformアプリとのウェブアプリ統合を設定する方法について説明します。 サーバー側統合のサポートは終了しました。つまり、サーバー側の処理を使用するアプリケーションは引き続き動作しますが、事前コールバックのURLやBasic… # ウェブアプリ統合の作成 このガイドでは、Platformアプリとのウェブアプリ統合を設定する方法について説明します。 サーバー側統合のサポートは終了しました。つまり、サーバー側の処理を使用するアプリケーションは引き続き動作しますが、事前コールバックのURLやBasic認証など、サーバー側の構成オプションを変更することはできなくなります。これらのオプションを無効化し、実装を新しいものに変更できます。 ## OAuth 2.0アプリケーションの作成 [開発者コンソール](https://app.box.com/developers/console)に移動し、[OAuth 2.0認証](g://authentication/oauth2/oauth2-setup)を利用する[Platformアプリ](g://applications/app-types/platform-apps)を作成します。 ## 新しい統合の作成 次に、[**統合**] タブに移動し、[**ウェブアプリ統合を作成**] をクリックします。 ## 統合の構成 統合を構成するには、各値について、以下のガイダンスに従います。 ### アプリ情報 | フィールド | 説明 | | --- | --- | | 統合名 | 統合の名前。ユーザーがファイルまたはフォルダの [その他のオプション] > [統合] メニューを選択したときにBoxウェブアプリに表示されます。 | | 説明 | Box統合に表示される統合の説明。 | | サポートされているファイル拡張子 | 統合は、選択されているファイル拡張子の [その他のオプション] > [統合] メニューのオプションとしてのみ表示されます。 | | 必要な権限 | ユーザーが統合を表示するために必要な権限を決定します。[ダウンロードの権限が必要] にした場合、ユーザーはファイルをダウンロードできますが、そのファイルを更新することはできません。[すべての権限が必要] にした場合、ユーザーはファイルのダウンロードと更新を行えます。 | | 統合の範囲 | 統合の範囲を指定します。統合の呼び出し元となるファイル/フォルダ、またはその親フォルダを指定します。 | | [共有ページで表示] の切り替え | 共有ページで外部ユーザーに統合を表示可能にするかどうかを決定します。有効にした場合、コンテンツでコラボレーションしていないユーザーが共有リンクを介して項目にアクセスすると、コンテキストメニューに統合が表示されます。 | | [ロックして、この統合を使用したファイルの上書きを現在のユーザーにのみ許可] の切り替え | 異なるウェブアプリ統合でファイルを同時に編集可能にするかどうかを決定します。 | | 統合の種類 | 必要な統合の種類を選択します。使用できるオプションは、[ファイル]、[フォルダ]、[両方] です。 | ### コールバック構成 | フィールド | 説明 | | --- | --- | | クライアントコールバックのURL | ポップアップ統合での最初のリクエストの後に、Boxからの追加のコールバックリクエストを処理します。アプリケーションがRESTメソッドでファイルパラメータを指定した場合、事前コールバックのURLはクライアントから発信できません。そのため、必要なインターフェースをサーバーがユーザーに送信できるように、2番目のリクエストがクライアントからサーバーに送信される必要があります。 | | プロンプトメッセージ | ユーザーが統合を開始する際に表示されるメッセージを指定します。このフィールドを使用して、次に何が起こるかについてコンテキストを提供します。このメッセージは500文字に制限されています。 | | ユーザーエクスペリエンス | 統合が新しいウィンドウで開くことを通知します。 | | 新しいウィンドウの設定 | アプリケーションを新しいタブで開くかどうかを決定します。 | ### コールバックパラメータ [**コールバックパラメータ**] セクションでは、ユーザーが確認プロンプトを受け入れるとBoxからコールバックURLに送信されるパラメータを構成します。この設定が構成されていない場合、BoxからコールバックURLにパラメータが送信されません。パラメータを追加するには、[**メソッド**] (GETまたはPOST) を選択し、[**パラメータ名**] を指定して、[**パラメータ値**] を追加します。 **File**メソッドのサポートは終了しました。すでにこのメソッドを使用している場合は、その値を編集できません。**File**メソッドを**GET**または**POST**に変更することはできますが、この操作を元に戻すことはできません。 例: **GET - `userid` - `#user_id#`**。 以下のパラメータ値が使用可能です。 | パラメータ | メソッド | 説明 | | --- | --- | --- | | user_id | GET、POST | BoxユーザーID。この情報は、アクションを完了するためにユーザー認証が必要なポップアップ統合で使用されます。Box IDをアプリケーションに保存すると、統合からの後続の認証リクエストを有効にできます。 | | user_name | POST | Boxユーザーのフルネームまたはメールアドレス。Boxユーザーが常に自分の名前を指定しているとは限りません。 | | file_id | GET、POST | BoxファイルID。このIDを使用すると、ファイルを操作するBox APIコールを実行できます。 | | file_name | POST | ファイルの名前。 | | file_extension | GET、POST | ファイルの拡張子。 | | auth_code | GET、POST | OAuth 2.0承認コード。これは、認証の成功時にBoxによって生成されます。その後、アプリケーションは、この承認コードをOAuth 2.0アクセストークンの代わりにBoxに指定する必要があります。有効なアクセストークンが含まれた承認ヘッダーをすべてのBox APIリクエストに含める必要があります。 | | redirect_to_box_url | GET、POST | ポップアップ統合で、確認プロンプトによるリクエストの送信先となるURL。このURLを使用すると、ユーザーは [すべてのファイル] ページにリダイレクトされます。このパラメータにより、ポップアップパネルが閉じ、[すべてのファイル] ページは、統合による変更をすべて反映するよう更新されます。このパラメータをアプリケーションに追加しない場合は、URL全体を指定できます。成功: #redirect_to_box_url#&status=success&message=Your%20action%20was%20successful%2E。失敗: #redirect_to_box_url#&status=failure&message=Your%20action%20was%20unsuccessful%2E | ### 統合ステータス - **開発**: 統合は、[**一般設定**] タブで表示されるアプリケーションコラボレータのみが表示および使用できます。このオプションは、アプリケーションがまだ開発中でテストの実施中である場合に最もよく使用されます。 - **オンライン**: 統合は、すべてのBoxユーザーが表示し、使用できます。このオプションは、開発が完了し、アプリケーションを統合で公開する準備ができている場合に最もよく使用されます。 - **メンテナンス**: 統合は、[**一般設定**] タブで表示されるアプリケーションコラボレータのみが表示および使用できます。このオプションは、統合が [統合] で公開された後、メンテナンスでの更新を実行したり問題をトラブルシューティングしたりする必要がある場合に最もよく使用されます。このオプションを使用すると、アプリケーションのコラボレータ以外のすべてのユーザーに対して統合が一時的にオフラインになります。 ## Box統合のユースケースの例 ユーザーがポップアップ統合を選択すると、Boxから事前コールバックのURLにコールバックリクエストが送信されます。これにより、構成済みのコールバックパラメータがサーバーに送信されます。クライアントが必要なデータを最初のリクエストからすべて取得できない場合は、Boxが2番目のリクエストを送信することもあります。 次の例では、クライアントコールバックのURLが必要ありません。 - ポップアップ統合で、`download_file_url`コールバックパラメータを使用してREST呼び出しを実行する。 - ユーザーが確認プロンプトで [**OK**] をクリックしてポップアップを受け入れる。 - Boxが次のURLにリクエストを送信する (事前コールバックのURLにコールバックパラメータを追加): `http://www.doceditor.com/service?apikey=abc&file=&redirect=`。 - コールバックURLからのレスポンスにより、リクエストを送信したユーザーにユーザーインターフェースが表示される。ポップアップには、アクションを続行するために必要なすべての情報が表示されているため、追加のクライアントコールバックは必要ありません。 次の例では、クライアントコールバックのURLが必要です。 - ポップアップ統合で、ファイルコールバックパラメータを使用してREST呼び出しを実行する。 - ユーザーが確認プロンプトで [**OK**] をクリックしてポップアップを受け入れる。 - ポップアップによって表示されたページで、Boxからリモートサーバーに、ファイルのコンテンツを含むPOSTリクエストとともにコールバックパラメータが送信される。 - Boxがリモートサーバーからレスポンスを受信し、クライアントにクライアントコールバックのURLへのレスポンスを投稿するよう指示する。このURLで識別されたサーバーがレスポンスを解釈し、適切なセッションIDを持つユーザーをリダイレクトします。 ## クライアントコールバックのURLのリクエスト形式 BoxからクライアントコールバックのURLに送信されるPOSTリクエストは、事前コールバックのURLからレスポンスを取得し、元のコールバックと同じデータとともにレスポンスを同じURLに転送します。 | クライアントコールバックのURL | 例 | | --- | --- | | 2つのGETパラメータと1つのPOSTパラメータ: http://your-client-callback-url.com/?get_param1=value1&get_param2=value2 | POST data: post_param1=value1initial_callback_response | クライアントコールバックリクエストへのレスポンスはHTTPステータス302で、ユーザーは正しいURLにリダイレクトされるか、UIのHTMLにリダイレクトされます。 ほとんどの場合、このURLは、ウェブアプリ統合のために開発された個々のAPIまたはカスタムスクリプトを指します。これは、事前コールバックのURLの結果を解析します。また、このURLは、インターネット上で一般公開する必要があることに注意してください。 ## 統合の一般公開 Box統合を一般公開するには、統合をApp Centerに掲載する必要があります。詳細については、[統合](g://applications/integrations)ガイドに従ってください。 **Source:** [https://ja.developer.box.com/guides/applications/web-app-integrations/configure/](https://ja.developer.box.com/guides/applications/web-app-integrations/configure/) --- ### ウェブリンク **Type:** guide | **Category:** ウェブリンク | **Section:** Developer Guides ウェブリンク ウェブリンクは、URLを指すオブジェクトです。これらのオブジェクトは、Box… # ウェブリンク ウェブリンクは、URLを指すオブジェクトです。これらのオブジェクトは、Boxウェブアプリ内でブックマークとも呼ばれます。 ウェブリンクはファイルオブジェクトと同様に扱われます。つまり、共有リンクの作成についても同じようにサポートされ、コピー、完全削除、および復元が可能です。 **Source:** [https://ja.developer.box.com/guides/web-links/](https://ja.developer.box.com/guides/web-links/) --- ### ウェブリンクの作成 **Type:** guide | **Category:** ウェブリンク | **Section:** Developer Guides ウェブリンクの作成 Boxでウェブリンクを作成するには、APIにフォルダidと、ウェブリンクのリンク先であるurlを渡す必要があります。urlはhttp://またはhttps://で始まる必要があります。 # ウェブリンクの作成 Boxでウェブリンクを作成するには、APIにフォルダ`id`と、ウェブリンクのリンク先である`url`を渡す必要があります。`url`は`http://`または`https://`で始まる必要があります。 **Source:** [https://ja.developer.box.com/guides/web-links/create/](https://ja.developer.box.com/guides/web-links/create/) --- ### ウェブリンクの削除 **Type:** guide | **Category:** ウェブリンク | **Section:** Developer Guides ウェブリンクの削除 Boxでウェブリンクを削除するには、そのウェブリンクのIDをAPIに渡す必要があります。 # ウェブリンクの削除 Boxでウェブリンクを削除するには、そのウェブリンクのIDをAPIに渡す必要があります。 **Source:** [https://ja.developer.box.com/guides/web-links/delete/](https://ja.developer.box.com/guides/web-links/delete/) --- ### ウェブリンクの復元 **Type:** guide | **Category:** ごみ箱 | **Section:** Developer Guides ウェブリンクの復元 ごみ箱に移動されたが削除されていないウェブリンクを復元するには、/web_links/:web_link_idエンドポイントにPOSTリクエストを送信します。これにより、ウェブリンクがまだ使用可能であれば元の親フォルダに戻されます。オプションとしてparent… # ウェブリンクの復元 ごみ箱に移動されたが削除されていないウェブリンクを復元するには、`/web_links/:web_link_id`エンドポイントに`POST`リクエストを送信します。これにより、ウェブリンクがまだ使用可能であれば元の親フォルダに戻されます。オプションとして`parent`フォルダを指定することもできます。 **Source:** [https://ja.developer.box.com/guides/trash/restore-web-link/](https://ja.developer.box.com/guides/trash/restore-web-link/) --- ### ウェブリンクを完全に削除 **Type:** guide | **Category:** ごみ箱 | **Section:** Developer Guides ウェブリンクを完全に削除 ごみ箱に移動されたウェブリンクは、デフォルトで30日間ごみ箱に保持された後で削除されます。BusinessアカウントまたはEnterprise… # ウェブリンクを完全に削除 ごみ箱に移動されたウェブリンクは、デフォルトで30日間ごみ箱に保持された後で削除されます。BusinessアカウントまたはEnterpriseアカウントの管理者は、削除までの期間を変更できます。削除までの期間が経過する前にごみ箱からウェブリンクを完全に削除する場合は、ごみ箱に移動されたウェブリンクの`ID`を使用して`DELETE`リクエストを`/web_links/:web_link_id/trash`に送信します。 **Source:** [https://ja.developer.box.com/guides/trash/permanently-delete-web-link/](https://ja.developer.box.com/guides/trash/permanently-delete-web-link/) --- ### エージェントの作成 **Type:** guide | **Category:** Box AI Studio | **Section:** Developer Guides エージェントの作成 Box AI Studioは、Enterprise Advancedアカウントでのみ使用できます。 POST /2.0/ai_agentsエンドポイントを使用すると、新しいカスタムAI… # エージェントの作成 Box AI Studioは、Enterprise Advancedアカウントでのみ使用できます。 `POST /2.0/ai_agents`エンドポイントを使用すると、新しいカスタム[AIエージェント](g://box-ai/ai-agents/index)を作成できます。 ## リクエストの送信 リクエストを送信するには、`POST /2.0/ai_agents`エンドポイントを使用します。 アプリを承認するための開発者トークンを生成済みであることを確認します。詳細については、[Box AIの使い方](g://ai-studio/getting-started-ai-studio)を参照してください。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 | パラメータ | 説明 | 例 | | --- | --- | --- | | type | クエリの処理に使用されるエージェントのタイプ。 | ai_agent | | name | AIエージェントの名前。 | My AI Agent | | access_state | AIエージェントの状態。値はenabled、disabledのいずれかです。 | enabled | | icon_reference | AIエージェントのアイコン参照。これは、URL https://cdn01.boxcdn.net/app-assets/aistudio/avatars/<file_name>の形式で指定する必要があります。この場合、file_nameに使用可能な値はlogo_boxAi.png、logo_stamp.png、logo_legal.png、logo_finance.png、logo_config.png、logo_handshake.png、logo_analytics.png、logo_classification.pngです。 | https://cdn01.boxcdn.net/app-assets/aistudio/avatars/logo_analytics.svg | | allowed_entities | 許可するユーザーまたはグループのリスト。 | | | ask | 質問に使用されるAIエージェント。 | ask | | extract | 抽出に使用されるAIエージェント。 | | | text_gen | テキストの生成に使用されるAIエージェント。 | | **Source:** [https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/create-agents/](https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/create-agents/) --- ### エージェントの取得 **Type:** guide | **Category:** Box AI Studio | **Section:** Developer Guides エージェントの取得 Box AI Studioは、Enterprise Advancedアカウントでのみ使用できます。 すべてのAIエージェントのリストの取得 GET /2.0/ai_agentsエンドポイントを使用すると、指定されたパラメータに基づいてすべてのAI… # エージェントの取得 Box AI Studioは、Enterprise Advancedアカウントでのみ使用できます。 ## すべてのAIエージェントのリストの取得 `GET /2.0/ai_agents`エンドポイントを使用すると、指定されたパラメータに基づいてすべてのAIエージェントのリストを取得できます。 ### リクエストの送信 リクエストを送信するには、`GET /2.0/ai_agents`エンドポイントを使用します。 アプリを承認するための開発者トークンを生成済みであることを確認します。詳細については、[Box AI Studioの使い方](g://ai-studio/getting-started-ai-studio)を参照してください。 #### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 | パラメータ | 説明 | 例 | | --- | --- | --- | | mode | 返されるエージェント構成にフィルタをかけるためのモード。使用可能な値はask、text_gen、extractです。 | ask | | fields | レスポンスで返されるフィールド。 | ask | | agent_state | 返されるエージェントの状態。値はenabled、disabledのいずれかです。 | enabled | | fields | レスポンスで返されるフィールド。値はask、text_gen、extractのいずれかです。 | ask | | include_box_default | レスポンスにBoxのデフォルトエージェントを含めるかどうか。 | true | | limit | 返す項目の1ページあたりの最大数。 | 1000 | | marker | 結果が返される開始位置のマーカー。 | JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii | **Source:** [https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/get-agents/](https://ja.developer.box.com/guides/ai-studio/ai-studio-agents/get-agents/) --- ### エラー **Type:** guide | **Category:** APIコール | **Section:** Developer Guides エラー Box APIでは、HTTPステータスコードを使用して、リクエストが正常に処理されたかどうかを通知します。 クライアントエラー HTTP 4XX形式の大半のクライアントエラーとHTTP 5XX形式の一部のサーバーエラーでは、標準のクライアントエラーJSON… # エラー Box APIでは、[HTTPステータスコード](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html)を使用して、リクエストが正常に処理されたかどうかを通知します。 ## クライアントエラー HTTP 4XX形式の大半のクライアントエラーとHTTP 5XX形式の一部のサーバーエラーでは、標準のクライアントエラーJSONオブジェクトが返されます。 ``` { "type": "error", "status": 400, "code": "bad_digest", "help_url": "https://developer.box.com/guides/api-calls/permissions-and-errors/common-errors/", "message": "The specified content-md5 did not match what we received", "request_id": "abcdef123456" } ``` 詳細については、[クライアントエラーのリソース](resource://client_error)を参照してください。 ## 共通エラーコード Box APIの使用時に発生した一般的なエラーの解決策については、[開発者向けトラブルシューティングの記事](https://support.box.com/hc/ja/sections/360007552913-Box-Platform%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%83%88%E3%83%A9%E3%83%96%E3%83%AB%E3%82%B7%E3%83%A5%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)を確認してください。 ### 400 Bad Request | | | | | --- | --- | --- | | エラー | bad_digest | | | メッセージ | The specified content-md5 did not match what we received. (指定のcontent-md5は受信したものと一致しませんでした。) | | | 解決策 | ファイルのアップロード中に、ファイルのSHA-1ハッシュとcontent-md5ヘッダーを指定して、ファイルが転送中に破損していないかどうかを確認できます。リクエストで指定されたSHA-1ハッシュは、アップロードで受信したものと一致していません。アップロードしたファイルの有効なSHA-1ハッシュを指定してください。 | | | | | | | エラー | bad_request | | | メッセージ | | | | 解決策 | APIリクエストで指定された必須パラメータが見つからないか無効です。詳細については、レスポンス本文の拡張エラーメッセージを確認してください。 | | | | | | | エラー | cannot_make_collaborated_subfolder_private | | | メッセージ | Cannot move a collaborated folder to a private folder unless the new owner is explicitly specified. (新しい所有者が明示的に指定されない限り、コラボレーションサブフォルダを非公開フォルダに移動することはできません。) | | | 解決策 | リクエストのowned_by.idフィールドを設定して、コンテンツの転送先となるユーザーのIDを指定してください。 | | | | | | | エラー | collaborations_not_available_on_root_folder | | | メッセージ | Root folder cannot be collaborated (ルートフォルダのコラボレーションができません) | | | 解決策 | ユーザーのルートフォルダ (フォルダID 0) にコラボレータを設定できません。ルートフォルダとは異なるフォルダIDを使用してください。 | | | | | | | エラー | cyclical_folder_structure | | | メッセージ | Folder move creates cyclical folder structure (フォルダの移動により循環フォルダ構造が作成されます) | | | 解決策 | フォルダの移動で指定したフォルダIDによって、循環フォルダ構造 (たとえば、フォルダがそのフォルダ内のサブフォルダに移動される構造) が作成されます。フォルダ移動リクエストで指定するフォルダを変更してください。 | | | | | | | エラー | folder_not_empty | | | メッセージ | Cannot delete – folder not empty (削除できません – フォルダにファイルが存在しません) | | | 解決策 | 削除する前に、フォルダからすべてのコンテンツを削除してください。 | | | | | | | エラー | invalid_collaboration_item | | | メッセージ | Item type must be specified and set to 'folder' (項目タイプは指定されていなければならず、「folder」に設定されていることが必要です) | | | 解決策 | コラボレーション項目のitem.typeフィールドをフォルダに設定してください。 | | | | | | | エラー | invalid_grant | | | メッセージ | Verify the authorization code is set correctly in your request, or your application likely needs to get a new authorization code. (リクエストに承認コードが正しく設定されていることを確認してください。そうしないと、アプリケーションで新しい承認コードが必要になる可能性があります。) | | | 解決策 | APIリクエストで指定された承認コードが見つからないか、無効になりました。考えられる解決策として、リクエストにアクセストークンが正しく追加されているかどうかを確認してください。正しく設定されている場合は、アクセストークンが期限切れになっている可能性があります。アクセストークンを更新するか、新しいアクセストークンを取得してください。 | | | | | | | エラー | invalid_grant | | | メッセージ | Current date time must be before the expiration date time listed in the 'exp' claim. (現在の日時は「exp」クレームに記載されている有効期限の日時よりも前である必要があります。) | | | 解決策 | このエラーは、ローカルマシンとBoxサーバーのUnix時間が同期されていない場合に発生します。このエラーを修正するには、ローカルマシンのUnix時間を、同期対象の時刻サーバーと一致するよう更新し、再度リクエストしてみてください。 | | | | | | | エラー | invalid_limit | | | メッセージ | Limit is not a valid number (制限値が有効な数値ではありません) | | | 解決策 | 指定された制限値に有効な数値を追加してください。 | | | | | | | エラー | invalid_offset | | | メッセージ | Offset is not a valid number (オフセットが有効な数値ではありません) | | | 解決策 | 指定されたオフセット値に有効な数値を追加してください。 | | | | | | | エラー | invalid_request_parameters | | | メッセージ | Invalid input parameters in request (リクエスト内に無効な入力パラメータがあります) | | | 解決策 | APIリクエストで無効なパラメータが送信されました。APIリファレンスドキュメントで、このAPI操作に指定すべき正しいリクエストパラメータを確認してください。 | | | | | | | エラー | invalid_status | | | メッセージ | You can change the status only if the collaboration is pending (ステータスを変更できるのは、コラボレーションが保留中の場合のみです) | | | 解決策 | コラボレーションのステータスは、現在のステータスが保留中に設定されている場合に、accessible_byフィールドで指定されたユーザーのみが承認済みまたは拒否済みに更新できます。 | | | | | | | エラー | invalid_upload_session_id | | | メッセージ | The upload session ID provided in the URL is not of a valid format. (URLに指定されているアップロードセッションIDが有効な形式ではありません。) | | | 解決策 | 分割アップロードAPIリクエストの送信時に指定されたセッションIDが無効です。作成されたセッションと同じセッションIDを使用してください。 | | | | | | | エラー | item_name_invalid | | | メッセージ | Item name invalid (項目名が無効です) | | | 解決策 | ファイルの名前が有効であることを確認してください。Boxでは、255文字以下のファイル名またはフォルダ名のみがサポートされています。印刷不可能な文字を含むファイル名、/、\、<、>、:、` | , ?, *, -`という文字を含む名前、先頭または末尾にスペースを含む名前のほか、「.」と「..」という特殊な名前も使用できません。 | | | | | | エラー | item_name_too_long | | | メッセージ | Item name too long (項目名が長すぎます) | | | 解決策 | 項目に指定されている名前の長さを短くしてください。Boxのファイル名またはフォルダ名に使用できる文字数は255文字以下です。 | | | | | | | エラー | metadata_after_file_contents | | | メッセージ | Metadata is included after file contents in a file upload request. (メタデータは、ファイルアップロードリクエストでファイルのコンテンツの後に含まれています。) | | | 解決策 | ファイルのコンテンツの前にファイルメタデータを含めてください。 | | | エラー | password_reset_required | | | メッセージ | User needs to reset password (ユーザーはパスワードをリセットする必要があります) | | | 解決策 | ユーザーは、アカウントの設定手順を完了していません。 | | | | | | | エラー | requested_page_out_of_range | | | メッセージ | Requested representation page out of range (リクエストされたレプリゼンテーションページが範囲外です) | | | 解決策 | 指定された範囲ヘッダーは、指定した項目のサイズに収まりません。項目のサイズに収まるよう範囲を調整し、もう一度やり直してください。 | | | | | | | エラー | requested_preview_unavailable | | | メッセージ | Requested preview unavailable (リクエストされたプレビューは利用できません) | | | 解決策 | ファイルに対してリクエストされたサムネイルサイズが有効ではありません。API操作のリファレンスドキュメントで、利用可能な形式サイズを確認してください。 | | | | | | | エラー | sync_item_move_failure | | | メッセージ | Cannot move a synced item (同期した項目を移動できません) | | | 解決策 | 項目は、Box Syncクライアントによって同期が設定されているため移動できません。項目のsync_stateをnot_syncedに設定することで、解決できる場合があります。 | | | | | | | エラー | task_assignee_not_allowed | | | メッセージ | Assigner does not have sufficient privileges to assign task to assignee (依頼者には、担当者にタスクを割り当てるのに十分な権限がありません) | | | 解決策 | タスクを割り当てようとしているユーザーに、そのための適切な権限がありません。タスクの割り当てを許可するようユーザー権限を調整してください。 | | | | | | | エラー | terms_of_service_required | | | メッセージ | User must accept custom terms of service before action can be taken (ユーザーは操作を実行する前にカスタムサービス利用規約に同意する必要があります) | | | 解決策 | Boxアカウントの管理者はカスタムサービス利用規約を設定していますが、ユーザーはまだログインしてこのサービス利用規約に同意していません。続行するには、ユーザーがこのサービス利用規約に同意するか、管理者が同規約を無効にする必要があります。詳細については、こちらで確認してください。 | | | | | | | エラー | user_already_collaborator | | | メッセージ | ユーザーはすでにコラボレータです | | | 解決策 | ある項目のコラボレータに設定しようとしているユーザーは、すでにその項目のコラボレータです。このリクエストは必要ありません。 | | | | | | ### 401 Unauthorized | | | | --- | --- | | エラー | unauthorized | | メッセージ | 許可なし | | 解決策 | 承認トークンは承認されていません。詳細については、本文の拡張エラーメッセージを確認してください。 | ### 403 Forbidden | | | | --- | --- | | エラー | access_denied_insufficient_permissions | | メッセージ | Access denied – insufficient permission (アクセスが拒否されました – 権限が不足しています) | | 解決策 | アクセストークンに適切なユーザー権限またはスコープが設定されていません。解決策の情報については、こちらを参照してください。 | | | | | エラー | insufficient_scope | | メッセージ | The request requires higher privileges than provided by the access token. (リクエストには、アクセストークンによって提供される権限よりも高い権限が必要です。) | | 解決策 | 通常、このエラーは、API操作に必要なスコープが有効になっていない場合に発生します。構成済みのアプリケーションスコープを確認し、該当する場合はアプリケーションを再承認してください。 | | エラー | access_denied_item_locked | | メッセージ | Access denied – item locked (アクセスが拒否されました – 項目がロックされています) | | 解決策 | ロックされた項目にアクセスしようとしていますが、アクセスするための適切な権限がありません。項目のロックを解除してから、再度アクセスしてみてください。 | | | | | エラー | access_from_location_blocked | | メッセージ | | | 解決策 | 管理者によって承認されていない場所からBoxにログインしようとしています。この問題を解決するには、管理者にお問い合わせください。 | | | | | エラー | file_size_limit_exceeded | | メッセージ | ファイルサイズがフォルダ所有者のファイルサイズ上限を超えています | | 解決策 | アカウントの種類に基づいたファイルサイズの上限については、こちらを参照してください。 | | | | | エラー | forbidden | | メッセージ | | | 解決策 | クライアントには、このセッションにアップロードするための権限がありません。アップロードできるのは、アップロードセッションを開始したユーザーのみです。 | | | | | エラー | forbidden_by_policy | | メッセージ | Access denied – Blocked by Shield Access Policy (アクセスが拒否されました – Shieldアクセスポリシーによってブロックされています) | | 解決策 | 会社に適用されているShieldアクセスポリシーによってこの操作が妨げられています。Enterprise管理者に連絡して、適用されているShieldアクセスポリシーを調整してください。 | | | | | エラー | forbidden_by_policy | | メッセージ | Access denied – Blocked by Shield Malware Detection Rule (アクセスが拒否されました – Shieldマルウェア検出ルールによってブロックされています) | | 解決策 | Shieldマルウェア検出ルールを有効化すると、悪意のある可能性のあるコンテンツをダウンロードしたり、ローカルで編集したりできなくなりますが、引き続きプレビューとオンライン編集は可能です。適用されているShieldポリシーを調整するには、会社の管理者にお問い合わせください。 | | | | | エラー | incorrect_shared_item_password | | メッセージ | | | 解決策 | 共有項目にはパスワードが必要ですが、パスワードが誤っているか指定されていません。 | | | | | エラー | storage_limit_exceeded | | メッセージ | アカウントのストレージサイズの上限に達しました | | 解決策 | アカウントのストレージサイズの上限に達しました。続行するには、アカウントをアップグレードするか、コンテンツを完全に削除してください。単にごみ箱に移動したコンテンツも、完全に削除されるまでアカウントの合計サイズにカウントされます。 | | | | | エラー | user_email_confirmation_required | | メッセージ | User needs to complete email confirmation (ユーザーはメール確認を完了する必要があります) | | 解決策 | ユーザーは、メール確認の手順をまだ完了していません。 | | | | | エラー | cors_origin_not_whitelisted | | メッセージ | Access denied - Did you forget to safelist your origin in the CORS configuration of your app? (アクセスが拒否されました – アプリのCORS構成のオリジンをセーフリストに追加し忘れていませんか。) | | 解決策 | アプリケーションはウェブサイトからBox APIにアクセスしようとしました。このアプリケーションでは、サイトがホストされているドメインに対してクロスオリジンリソース共有を明示的に許可する必要があります。 | ### 404 Not Found | | | | --- | --- | | エラー | not_found | | メッセージ | | | 解決策 | リソースが見つかりませんでした。詳細については、レスポンス本文の拡張エラーメッセージを確認してください。 | | | | | エラー | not_trashed | | メッセージ | Item is not trashed (項目はごみ箱に移動されていません) | | 解決策 | ごみ箱には、完全に削除する項目がありません。最初に、項目をごみ箱に移動してください。 | | | | | エラー | preview_cannot_be_generated | | メッセージ | Preview cannot be generated (プレビューを生成できません) | | 解決策 | 指定されたファイルのプレビューのサムネイルを生成できません。 | | | | | エラー | trashed | | メッセージ | Item is trashed (項目はごみ箱に移動されました) | | 解決策 | アクセス対象の項目がごみ箱にあり、変更できません。項目をごみ箱から移動してやり直してください。 | ### 405 Method Not Allowed | | | | --- | --- | | エラー | method_not_allowed | | メッセージ | Method Not Allowed (メソッドが許可されていません) | | 解決策 | API操作に使用されるHTTPメソッドは許可されていません。APIリファレンスドキュメントで、API操作に必要なHTTP動詞を確認してください。 | ### 409 Conflict | | | | --- | --- | | エラー | conflict | | メッセージ | A resource with this value already exists (この値のリソースはすでに存在します) | | 解決策 | このエラーは、作成するリソースがすでに存在する場合に発生する可能性があります。詳細については、レスポンス本文の拡張エラーメッセージを確認してください。 | | | | | エラー | item_name_in_use | | メッセージ | Item with the same name already exists (同じ名前の項目はすでに存在します) | | 解決策 | このエラーは、同じ名前のリソースがすでに存在している場合に発生する可能性があります。追加/変更するリソース名には一意の名前を指定してください。 | | | | | エラー | name_temporarily_reserved | | メッセージ | The item name is reserved by another processing item. Wait and then retry the request, or wait and check the parent folder to see if the name is in use. (項目名は別の処理項目によって予約されています。しばらく待ってからリクエストを再試行するか、しばらく待ってから名前が使用中であるかどうか親フォルダを確認してください。) | | 解決策 | 重複する2つのリクエストが同時に送信されました。Boxは最初のリクエストを確認して名前を予約しますが、最初のリクエストの処理が完了する前に2つ目の重複するリクエストを受信しています。最初のリクエストが完了してから2番目のリクエストを送信してください。 | | | | | エラー | operation_blocked_temporary | | メッセージ | The operation is blocked by another ongoing operation (他の進行中の操作によって操作がブロックされました) | | 解決策 | このエラーは、移動やコピーなど、他のフォルダ操作によってブロックされたフォルダにアクセスしようとしたときに返されます。後でもう一度やり直してください。 | | | | | エラー | recent_similar_comment | | メッセージ | A similar comment has been made recently (同様のコメントが最近作成されました) | | 解決策 | 同様のコメントが最近作成されており、重複する可能性があるためAPIがフラグを設定しています。コメントが実際に作成済みか確認するか、コメントの内容を変更してやり直してください。 | | | | | エラー | user_login_already_used | | メッセージ | User with the specified login already exists (指定のログインを持つユーザーがすでに存在します) | | 解決策 | 同じメールアドレスのユーザーがすでに存在します。既存ユーザーを参照するか、別のメールアドレスを指定してください。 | ### 410 Gone | | | | --- | --- | | エラー | session_expired | | メッセージ | | | 解決策 | 指定されたアップロードセッションIDに関連付けられたアップロードセッションは、有効期限が切れているためアクセスできません。 | | | | | エラー | upload_failed | | メッセージ | | | 解決策 | アップロードセッションで回復不能な状態になり、続行できません。このリクエストまたはその他のリクエストのアップロードセッションは、結果として、不適切な状態 (パーツ重複など) になりました。この状態の原因として、パーツの上限を超過しているか、重複するパーツがアップロード済みであることが考えられます。 | ### 411 Length Required | | | | --- | --- | | エラー | length_required | | メッセージ | content-length header was required, but not provided. (content-lengthヘッダーが要求されましたが、指定されていません。) | | 解決策 | APIリクエストでContent-Lengthヘッダーを指定してください。 | ### 412 Precondition Failed | | | | --- | --- | | エラー | precondition_failed | | メッセージ | The resource has been modified. Retrieve the resource again and retry (このリソースは変更されています。リソースをもう一度取得してから再試行してください) | | 解決策 | 詳細については、レスポンス本文の拡張エラーメッセージを確認してください。 | | | | | エラー | sync_state_precondition_failed | | メッセージ | The resource has been modified. Retrieve the resource again and retry (このリソースは変更されています。リソースをもう一度取得してから再試行してください) | | 解決策 | 詳細については、レスポンス本文の拡張エラーメッセージを確認してください。 | ### 413 Request Entity Too Large | | | | --- | --- | | エラー | request_entity_too_large | | メッセージ | Request Entity too Large (リクエストのエンティティが大きすぎます) | | 解決策 | アップロードのサイズが許容された上限を超えると、このエラーが発生します。レスポンス本文の拡張エラーメッセージを確認してください。 | ### 415 Unsupported Media Type | | | | --- | --- | | エラー | unsupported_media_type | | メッセージ | Previews for boxnote files are not yet supported. (boxnoteファイルのプレビューはサポートされていません。) | | 解決策 | このエラーは、Box Noteの埋め込みプレビューをリクエストしたときに発生します。現時点では、埋め込みプレビューがBox Notesでサポートされていません。 | ### 429 Too Many requests | | | | --- | --- | | エラー | rate_limit_exceeded | | メッセージ | Request rate limit exceeded, try again later. (リクエストのレート制限を超えました。後でもう一度やり直してください。) | | 解決策 | クライアントの処理が速すぎて、レート制限を受けました。クライアントでは、retry-afterヘッダーで指定された時間が経過してからリクエストをやり直すことが推奨されます。4つのレート制限に注意する必要があります。 | ### 500 Internal Service Error | | | | --- | --- | | エラー | internal_server_error | | メッセージ | Internal Server Error (内部サーバーエラー) | | 解決策 | クライアントは指数バックオフ戦略を使用してやり直す必要があります | ### 502 Bad Gateway | | | | --- | --- | | エラー | bad_gateway | | メッセージ | | | 解決策 | クライアントは指数バックオフ戦略を使用してやり直す必要があります | ### 503 Unavailable | | | | --- | --- | | エラー | unavailable | | メッセージ | 利用できません | | 解決策 | Retry-Afterヘッダーがレスポンスで返された場合、クライアントは、そのヘッダーの値に従ってリクエストを再試行する必要があります。稀に、クライアントが503のレスポンスを受け取った後も、書き込み操作が最終的にその変更を保持する可能性があるため、クライアントは、再試行時にこのケースを処理する必要があります。問題が引き続き発生する場合は、BoxのStatusサイトで、機能停止に関する既知の情報を確認してください。 | **Source:** [https://ja.developer.box.com/guides/api-calls/permissions-and-errors/common-errors/](https://ja.developer.box.com/guides/api-calls/permissions-and-errors/common-errors/) --- ### オプションや一括コマンドの使用 **Type:** quick-start | **Category:** CLI | **Section:** Developer Guides オプションや一括コマンドの使用 オプション オプションは、CLIコマンドで使用する追加のオプション機能を提供します。また、オプションはフラグまたは引数とも呼ばれる場合があります。前の手順で説明したように、--help… # オプションや一括コマンドの使用 ## オプション オプションは、CLIコマンドで使用する追加のオプション機能を提供します。また、オプションはフラグまたは引数とも呼ばれる場合があります。前の手順で説明したように、`--help`はオプションの一例です。 コマンドに有効なすべてのオプションを確認するには、[GitHubリポジトリ](https://github.com/box/boxcli#command-topics)を参照してください。 たとえば、[フォルダの削除](https://github.com/box/boxcli/blob/master/docs/folders.md#box-foldersdelete-id)に関するコマンドのドキュメントを参照すると、`--recursive`や`--force`など、このコマンドで使用するオプションのリストを確認できます。 ## as-userヘッダー [as-userヘッダー](g://authentication/jwt/as-user)を使用するには、コマンドの末尾に`--as-user=USERID`オプションを追加します。 たとえば、次のコマンドでは、ユーザーID 123456のアカウントのルートレベルに`Example_Folder`というフォルダが作成されます。 ``` box folders:create 0 Example_Folder --as-user=123456 ``` as-userヘッダーを使用できるのは、サービスアカウントと管理者のみです。必要なスコープでアプリケーションが承認されていない場合、または別のユーザーのデフォルトのトークンを取得するようCLIを構成した場合は、この呼び出しが失敗する可能性があります。詳細なエラーログを確認するには、コマンドに`-v`または`--verbose`を追加してください。 ## 一括コマンド CSVファイルを使用すると、コマンドを一括して実行できます。このスプレッドシートの各行が個別のAPIコールとして処理されます。 一括コマンドを実行するには、`--bulk-file-path=<PATH_TO_CSV>`オプションを使用します。ここで、`<PATH_TO_CSV>`は、必要な情報が記載されているCSVファイルのローカルパスになります。 たとえば、コマンド`box folders:create --bulk-file-path=pathtoacsv`を使用して、フォルダを作成してみましょう。 Finderウィンドウ/エクスプローラからターミナル/コマンドラインウィンドウにCSVファイルをドラッグすると、パスが自動で入力されます。 CSVファイルの列名を指定する際は、[GitHubリポジトリ](https://github.com/box/boxcli#command-topics)のドキュメントを参照し、引数名を確認するか`--help`オプションを使用します。この場合、列名は`PARENTID`と`NAME`となり、大文字と小文字は区別されません。このフォルダの一括作成コマンドの例では、こちらのCSV[テンプレート](https://github.com/box/boxcli/blob/main/docs/Bulk%20actions/folders/folders-create.csv)を使用することもできます。 以下のコマンドを実行すると、サービスアカウントのフォルダツリーのルートレベル (0) に3つのフォルダが作成されます。 ``` box folders:create --bulk-file-path=/Users/ExampleUser/Desktop/bulkcreatefolders.csv ``` ## オプションを使用した一括コマンド コマンドでオプションを渡すと、そのオプションがCSVファイルの各行に自動的に適用されます。たとえば、`box folders:collaborations:create --bulk-file-path=pathtocsv --role=editor`を実行すると、CSV内の各ユーザーに編集者としてコラボレーションが作成されます。 CSVファイルでオプションを使用することもできます。前の例を基に、コマンド自体で`--role=editor`オプションを使用する代わりに、CSVで`role`という名前の列を指定できます。コマンド自体は`box folders:collaborations:create --bulk-file-path=pathtocsv`となります。 一括コマンドの詳細については、[このドキュメント](g://cli/cli-docs/bulk-commands)を参照してください。 ## まとめ - コマンドや一括コマンドとともにオプションを使用しました。 オプションや一括コマンドの使い方を理解しました **Source:** [https://ja.developer.box.com/guides/cli/quick-start/options-and-bulk-commands/](https://ja.developer.box.com/guides/cli/quick-start/options-and-bulk-commands/) --- ### オフセットベースのページネーション **Type:** guide | **Category:** APIコール | **Section:** Developer Guides オフセットベースのページネーション オフセットベースのページ割りを使用するAPIは、offsetおよびlimit… # オフセットベースのページネーション オフセットベースのページ割りを使用するAPIは、`offset`および`limit`クエリパラメータを使用してコレクション内の項目のページ割りを行います。 オフセットベースのページネーションは、項目のリストがあらかじめ決められた固定長の場合によく使用されます。 ## ページング コレクション内のエントリの最初のページを取得するには、APIを`offset`パラメータを指定せずに呼び出すか、`offset`を`0`に設定して呼び出す必要があります。`limit`フィールドは省略可能です。 ``` curl https://api.box.com/2.0/folders/0/items?offset=0&limit=100 \ -H "authorization: Bearer ACCESS_TOKEN" ``` エントリの次のページを取得するには、以前の`offset`値と以前の結果で返された制限の合計 (`previous_offset + previous_limit`) と等しい`offset`パラメータを指定して、APIを呼び出す必要があります。 ``` curl https://api.box.com/2.0/folders/0/items?offset=100&limit=100 \ -H "authorization: Bearer ACCESS_TOKEN" ``` `offset`は、レスポンス配列内のエントリのサイズではなく、以前の`limit`分だけ加算されますので注意してください。これは制限を下回る可能性があるためです。一般的には、レスポンスオブジェクトの`limit`の値を使用して`offset`値を加算することをお勧めします。 次の`offset`値がレスポンスオブジェクト内の`total_count`値を超えている場合、項目の最終ページはリクエスト済みです。この時点では、これ以上取得する項目がありません。 ## オフセットと制限 以下のクエリパラメータは、コレクションのページネーションに使用されます。 | クエリパラメータ | 型 | デフォルト | | | --- | --- | --- | --- | | offset | Integer | 0 | コレクションで最初に返される項目の (ゼロベースの) オフセット。ゼロベースのオフセットでは、0は適切な値です。 | | limit | Integer | APIによって異なる | 返される最大エントリ数。値が最大値を超える場合は、最大値が使用されます。 | オフセットベースのページネーションの最大`offset`は`9999`です。さらに大きいオフセットが必要な場合はマーカーベースのページネーションをお勧めします。 ## コレクション コレクションのページネーションを行うと、APIによって、結果のセットを配列として含むオブジェクトのほか、結果の現在のページに関する情報が返されます。 | フィールド | 型 | | | --- | --- | --- | | entries | Array | このページの項目を含むページ。結果がない場合は空の配列になります。 | | offset | Integer | 結果の現在のページに使用されるオフセット | | limit | Integer | 結果の現在のページに使用される制限。この制限は、このAPIエンドポイントに許可されている最大値を超えない限り、limitクエリパラメータと同じになります。 | | total_count | Integer | コレクション全体の最後の項目のオフセットに1を加算した値。コレクション内の項目の合計数は、total_countよりも少ない場合があります。 | ## エンドポイントの例 以下は、オフセットベースのページネーションをサポートするエンドポイントの例です。 - [フォルダ内の項目を取得](endpoint://get_folders_id_items) - [ファイルのコメントのリストを取得](endpoint://get-files-id-comments) - [ごみ箱にあるすべての項目のリストを取得](endpoint://get-folders-trash-items) **Source:** [https://ja.developer.box.com/guides/api-calls/pagination/offset-based/](https://ja.developer.box.com/guides/api-calls/pagination/offset-based/) --- ### ガイド **Type:** guide | **Category:** ガイド | **Section:** Developer Guides # ガイド **Source:** [https://ja.developer.box.com/guides/](https://ja.developer.box.com/guides/) --- ### カスタムスキル **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides カスタムスキル カスタムスキル (Box Skill) とは、Boxにアップロードされたファイルに対してカスタマイズした処理を実行する一種のアプリケーションです。スキルは、サードパーティの機械学習サービスを使用して、Box… # カスタムスキル カスタムスキル (Box Skill) とは、Boxにアップロードされたファイルに対してカスタマイズした処理を実行する一種のアプリケーションです。スキルは、サードパーティの機械学習サービスを使用して、Boxにアップロードされたファイルから情報を自動的に抽出し、結果のデータをメタデータとしてファイルに適用しやすくすることを目的としています。 カスタムスキルは、Box管理者がフォルダに対して有効にする必要があります。そうすると、ファイルがフォルダにアップロードされるたびに、イベントがスキルのアプリケーションサーバーに送信されます。その後、このアプリケーションはファイルをダウンロードするか、調査するか、機械学習サービスに渡し、効果的なメタデータをファイルに書き込むことができます。 カスタムスキルの作成を開始する ## 認証方法 カスタムスキルの操作は、各スキルイベントに備わっている事前承認済みのAPI資格情報によって簡素化されます。ただし、このような理由により、カスタムスキルでのAPIアクセスには制限があります。このようなアプリケーションを操作するために認証タイプを選択する必要はありません。 ## 使用するタイミング アプリケーションが以下のような場合に、カスタムスキルを使用すると最も効果的です。 - Boxにアップロードされたファイルにメタデータの追加のみを行う - 新しいファイルをアップロードしない、またはその他のAPIコールを実行しない - 認証を処理する必要なく、機械学習サービスにファイルを渡せるようにする ## ユースケース 以下は、カスタムスキルのユースケースの例です。 画像からナンバープレートの詳細を自動的に抽出し、その詳細をキーワードとしてファイルに書き込むプロセス。 動画内で顔を自動的に検出し、検出した顔が表示された時点のタイムスタンプをタイムラインとしてファイルに書き込むプロセス。 ## 承認 カスタムスキルを使用するには、スキルがトリガーされるフォルダに割り当てておく必要があります。 カスタムスキルの承認方法を確認する **Source:** [https://ja.developer.box.com/guides/applications/app-types/custom-skills/](https://ja.developer.box.com/guides/applications/app-types/custom-skills/) --- ### カスタムスキルの承認 **Type:** guide | **Category:** 承認 | **Section:** Developer Guides カスタムスキルの承認 カスタムスキルは、使用前に、企業のBox管理者がフォルダに対して有効にしておく必要があります。 開発者の場合 開発者の場合は、開発者コンソールでアプリケーションに移動し、管理者に提出するそのアプリケーションのクライアントIDをコピーします。 Box… # カスタムスキルの承認 カスタムスキルは、使用前に、企業のBox管理者がフォルダに対して有効にしておく必要があります。 ## 開発者の場合 開発者の場合は、[開発者コンソール](https://app.box.com/developers/console)でアプリケーションに移動し、管理者に提出するそのアプリケーションのクライアントIDをコピーします。 # Box管理者の確認方法 自分の企業の管理者がわからない場合は、Boxの[アカウント設定][settings]ページに移動し、一番下までスクロールしてください。管理者の連絡先が設定されている場合は、[管理者の連絡先] の下に連絡先情報が表示されています。 ## 管理者の場合 カスタムスキルアプリケーションを有効にするには、[Box管理コンソールの [Skills] セクション](https://app.box.com/master/skills)に移動し、[スキルの追加] リンクをクリックして新しいスキルを追加します。 カスタムスキルアプリケーションのクライアントID (APIキー) を入力します。これは開発者から提出されたクライアントIDです。 [次へ] をクリックし、Box Skillアプリケーションで操作するフォルダを選択します。 ここには2つのオプションがあります。 - [**会社のすべてのコンテンツ**] を選択すると、各ユーザーのルートフォルダでスキルが承認されます。その結果、Box Skillアプリケーションによって処理されているフォルダにすべてのファイルがアップロードされます。 - [**フォルダのリストを選択**] を選択すると、スキルアプリケーションの処理対象となる特定のフォルダまたは一連のフォルダに対してアプリケーションが有効になります。 [Skillを有効化] をクリックし、利用規約と契約に同意します。これで、カスタムスキルが有効になります。選択したフォルダに新しいコンテンツが追加されると、Box[開発者コンソール](https://app.box.com/developers/console)で構成された呼び出しURLにイベントの送信が開始されます。 # 会社あたりSkillアプリケーションは10個まで どのような場合でも、1つの会社につき有効にできるスキルの数は10個という制限があります。会社でさらに多くのスキルを有効にする場合は、Boxの営業担当者にお問い合わせください。 **Source:** [https://ja.developer.box.com/guides/authorization/custom-skill-approval/](https://ja.developer.box.com/guides/authorization/custom-skill-approval/) --- ### カスタムメタデータテンプレートの作成 **Type:** quick-start | **Category:** メタデータ | **Section:** Developer Guides カスタムメタデータテンプレートの作成 会社用のカスタムメタデータテンプレートを作成するには、直接BoxのAPIを使用するかBox SDKのいずれかを使用して新しいテンプレートを作成します。 このcustomerInfoテンプレートでは、… # カスタムメタデータテンプレートの作成 会社用のカスタムメタデータテンプレートを作成するには、[直接BoxのAPI](e://post-metadata-templates-schema)を使用するかBox SDKのいずれかを使用して新しいテンプレートを作成します。 この`customerInfo`テンプレートでは、3つのフィールドを持つテンプレートを作成します。1つ目のフィールドは顧客の`name`を保持するテキストフィールド、2つ目のフィールドは顧客の業種`industry`に使用できる値のドロップダウンリスト、3つ目のフィールドは年間契約額の合計 (`tav`) を表します。 各種フィールドタイプについて確認する このテンプレートを作成するには、フィールドの構成と各フィールドの表示名を渡す必要があります。 ``` curl -X POST https://api.box.com/2.0/metadata_templates/schema \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "scope": "enterprise", "displayName": "Customer Info", "fields": [ { "type": "string", "displayName": "Name" }, { "type": "enum", "displayName": "Industry", "options": [ {"key": "Technology"}, {"key": "Healthcare"}, {"key": "Legal"} ] }, { "type": "float", "displayName": "Total account value", "key": "tav" } ] }' ``` ``` var templateParams = new BoxMetadataTemplate() { DisplayName = "Customer Info", Scope = "enterprise", Fields = new List<BoxMetadataTemplateField>() { new BoxMetadataTemplateField() { Type = "string", DisplayName = "Name" }, new BoxMetadataTemplateField() { Type = "enum", DisplayName = "Industry", Options = new List<BoxMetadataTemplateFieldOption>() { new BoxMetadataTemplateFieldOption() { Key = "Technology" }, new BoxMetadataTemplateFieldOption() { Key = "Healthcare" }, new BoxMetadataTemplateFieldOption() { Key = "Legal" } } }, new BoxMetadataTemplateField() { Type = "float", DisplayName = "Total account value", Key="tav" }, } }; BoxMetadataTemplate template = await client.MetadataManager.CreateMetadataTemplate(templateParams); ``` ``` MetadataTemplate.Field name = new MetadataTemplate.Field(); name.setType("string"); name.setDisplayName("Name"); MetadataTemplate.Field industry = new MetadataTemplate.Field(); industry.setType("enum"); industry.setDisplayName("Industry"); MetadataTemplate.Option technology = new MetadataTemplate.Option(); technology.setKey("Technology"); MetadataTemplate.Option healthcare = new MetadataTemplate.Option(); healthcare.setKey("Healthcare"); MetadataTemplate.Option legal = new MetadataTemplate.Option(); legal.setKey("Legal"); List<MetadataTemplate.Option> options = new ArrayList<MetadataTemplate.Option>(); options.add(technology); options.add(healthcare); options.add(legal); MetadataTemplate.Field tav = new MetadataTemplate.Field(); tav.setType("float"); tav.setDisplayName("Total account value"); tav.setKey("tav"); List<MetadataTemplate.Field> fields = new ArrayList<MetadataTemplate.Field>(); fields.add(name); fields.add(industry); fields.add(tav); MetadataTemplate template = MetadataTemplate.createMetadataTemplate(api, "enterprise", "customerInfo", "Customer Info", false, fields); ``` ``` from boxsdk.object.metadata_template import MetadataField, MetadataFieldType fields = [ MetadataField(MetadataFieldType.STRING, 'Name') MetadataField(MetadataFieldType.ENUM, 'Industry', options=['Technology', 'Healthcare', 'Legal']) ] template = client.create_metadata_template('Customer Info', fields) ``` ``` client.metadata.createTemplate( 'Customer Info', [ { type: 'string', displayName: 'Name' }, { type: 'enum', displayName: 'Industry', options: [ {key: 'Technology'}, {key: 'Healthcare'}, {key: 'Legal'} ] }, { type: 'float', displayName: 'Total account value', key: 'tav' } ] ).then(template => { // ... }); ``` # 管理者権限が必須 メタデータテンプレートの作成は、管理者権限を持つユーザーに制限されています。つまり、管理者、または管理者から**会社のメタデータテンプレートを作成、編集する**権限が付与されている共同管理者だけがウェブアプリまたはAPIを使用してテンプレートを管理できます。 このAPIにより、新しく作成されたメタデータテンプレートが返されます。 ``` { "id": "100ac693-a468-4b37-9535-05984b804dc2", "type": "metadata_template", "templateKey": "customerInfo", "scope": "enterprise_34567", "displayName": "Customer Info", "hidden": false, "copyInstanceOnItemCopy": false, "fields": [ { "id": "5c6a5906-003b-4654-9deb-472583fc2930", "type": "string", "key": "name", "displayName": "Name", "hidden": false }, { "id": "cf3eb5b8-52ef-456c-b175-44354a27e289", "type": "enum", "key": "industry", "displayName": "Industry", "options": [ {"key": "Technology"}, {"key": "Healthcare"}, {"key": "Legal"} ], "hidden": false }, { "id": "5c6a5906-4654-9deb-003b-472583fc2930", "type": "float", "key": "tav", "displayName": "Total account value", "hidden": false } ] } ``` # テンプレートキー テンプレートキーは、明示的に設定しませんでしたが、`displayName`値から自動的に派生します。この場合、`templateKey`は`customerInfo`になります。 カスタムテンプレートを作成しました **Source:** [https://ja.developer.box.com/guides/metadata/quick-start/create-template/](https://ja.developer.box.com/guides/metadata/quick-start/create-template/) --- ### クエリの作成 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides クエリの作成 メタデータクエリとは、/metadata_queries/execute_readエンドポイントに対するPOSTリクエストで、その本文にはメタデータクエリのすべてのパーツが含まれています。ここで最も重要なのは、検索対象のテンプレートを指定するfrom… # クエリの作成 メタデータクエリとは、`/metadata_queries/execute_read`エンドポイントに対する`POST`リクエストで、その本文にはメタデータクエリのすべてのパーツが含まれています。ここで最も重要なのは、検索対象のテンプレートを指定する`from`属性、検索するフォルダを指定する`ancestor_folder_id`、検索に使用するすべてのテンプレートフィールドを決定する`query`です。 ``` curl -X POST https://api.box.com/2.0/metadata_queries/execute_read \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "from": "enterprise_123456.contractTemplate", "query": "amount >= :value", "query_params": { "value": 100 }, "fields": [ "name", "metadata.enterprise_123456.contractTemplate.customerName", "metadata.enterprise_123456.contractTemplate.amount" ], "ancestor_folder_id": "5555", "order_by": [ { "field_key": "amount", "direction": "asc" } ], "limit": 100 }' ``` 使用可能なすべてのパラメータの詳細については、Boxの他の[メタデータクエリガイド](g://metadata/queries)または関連する[エンドポイントリファレンス](e://post_metadata_queries_execute_read)を参照してください。 クエリ構文の詳細を確認する ## レスポンス クエリに一致するファイルまたはフォルダがあれば、APIレスポンスで返されます。レスポンスの本文はJSONオブジェクトで、各ファイルまたはフォルダの`entries`のリストと、次の検索結果ページを見つけるための`next_marker`値が含まれています。各エントリは、クエリに一致したファイルまたはフォルダを表し、`field`パラメータで明示的にリクエストされたフィールドのみが返されます。 ``` { "entries": [ { "type": "file", "id": "1617554169109", "name": "My Contract.docx", "metadata": { "enterprise_123456": { "contractTemplate": { "$parent": "file_161753469109", "$scope": "enterprise_123456", "$template": "contractTemplate", "$version": 0, "customerName": "Phoenix Corp", "amount": 100 } } } } ], "limit": 20, "next_marker": "AAAAAmVYB1FWec8GH6yWu2nwmanfMh07IyYInaa7DZDYjgO1H4KoLW29vPlLY173OKsci6h6xGh61gG73gnaxoS+o0BbI1/h6le6cikjlupVhASwJ2Cj0tOD9wlnrUMHHw3/ISf+uuACzrOMhN6d5fYrbidPzS6MdhJOejuYlvsg4tcBYzjauP3+VU51p77HFAIuObnJT0ff" } ``` このAPIはデフォルトで、ページあたり`20`個の項目を返しますが、マーカーベースのページネーションを使用すると、さらに多くの項目をリクエストできます。 ページ割りクエリの結果の詳細を確認する **Source:** [https://ja.developer.box.com/guides/metadata/queries/create/](https://ja.developer.box.com/guides/metadata/queries/create/) --- ### クエリの項目フィールド **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides クエリの項目フィールド 項目フィールドとは、Box… # クエリの項目フィールド 項目フィールドとは、Box内の項目 (ファイルおよびフォルダ) を説明する検索可能なメタデータフィールドです。これらのフィールドは、名前、タイプ、所有者、タイムスタンプなどの組み込みの項目プロパティを定義されたデータ型を使用して公開します。これにより、Boxコンテンツのフィルタ、並べ替え、検索が可能になります。 ## サポートされている項目フィールド 次の表に、メタデータクエリで使用できる項目フィールドを示します。 | フィールド名 | 説明 | 並べ替え | | --- | --- | --- | | item.type | 項目のタイプ: fileまたはfolder | はい | | item.name | 項目の名前 | はい | | item.description | 項目の説明 | はい | | item.extension | ファイル拡張子 (pdf、jpeg、xlsx、txt、xls、png、log、csvなど) | はい | | item.owned_by | 項目の所有者 (例: user_123) | はい | | item.owner_enterprise_id | 項目所有者のEnterprise ID (例: 1234) | はい | | item.created_at | Boxで項目が作成された日時 | はい | | item.modified_at | Boxで項目が最後に更新された日時 | はい | | item.content_created_at | 項目が最初に作成された日時 (この日時は項目がBoxにアップロードされた時点よりも前になる場合があります) | はい | | item.content_modified_at | 項目が最後に更新された日時 (この日時は項目がBoxにアップロードされた時点よりも前になる場合があります) | はい | | item.quick_search_content | 項目名、説明、メタデータのフィールド全体でのファイルコンテンツ検索 | いいえ | **Source:** [https://ja.developer.box.com/guides/metadata/queries/item-fields/](https://ja.developer.box.com/guides/metadata/queries/item-fields/) --- ### クエリ構文 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides クエリ構文 メタデータクエリAPIのクエリ構文はSQLデータベースのクエリ構文と似ています。契約金額が100ドルを超える契約メタデータテンプレートに一致するすべてのファイルとフォルダに対してクエリを実行するには、以下のメタデータクエリを作成します。 この場合、from… # クエリ構文 メタデータクエリAPIのクエリ構文はSQLデータベースのクエリ構文と似ています。契約金額が100ドルを超える契約メタデータテンプレートに一致するすべてのファイルとフォルダに対してクエリを実行するには、以下のメタデータクエリを作成します。 ``` { "from": "enterprise_123456.contractTemplate", "query": "amount >= :value", "query_params": { "value": 100 }, "fields": [ "name", "metadata.enterprise_123456.contractTemplate.amount" ], "ancestor_folder_id": "5555" } ``` この場合、`from`値はメタデータテンプレートの`scope`と`templateKey`を表し、`ancestor_folder_id`はサブフォルダを含む検索範囲となるフォルダIDを表します。 ## fieldsパラメータ デフォルトでは、このAPIで返されるのは、`id`、`type`、および`etag`の値を含む、ファイルまたはフォルダの基本レプリゼンテーションのみです。その他のデータをリクエストするには、`fields`パラメータを使用すると、追加のフィールドや、その項目に関連付けられたメタデータに対してクエリを実行できます。 例: - `created_by`では、項目を作成したユーザーの詳細がレスポンスに追加されます。 - `metadata.<scope>.<templateKey>`では、`scope`と`templateKey`によって識別されたメタデータインスタンスの基本レプリゼンテーションが返されます。 - `metadata.<scope>.<templateKey>.<field>`では、`scope`と`templateKey`によって識別されたメタデータインスタンスの基本レプリゼンテーションのすべてのフィールドに加え、`field`の名前によって指定されたフィールドが返されます。同じ`scope`および`templateKey`の複数のフィールドを定義できます。 ## queryパラメータ `query`パラメータは、選択したメタデータインスタンスに対して実行する、SQLに似たクエリを表します。このパラメータは省略可能で、このパラメータを指定しない場合、APIはこのテンプレートに対してすべてのファイルとフォルダを返します。 左側の各フィールド名 (`amount`など) は、関連付けられたメタデータテンプレートのフィールドの`key`に一致する必要があります。つまり、関連付けられたメタデータインスタンスに実際に存在するフィールドだけを検索できます。その他のフィールド名を指定するとエラーが発生し、エラーが返されます。 ### query_paramsパラメータ クエリ文字列への動的な値の埋め込みをわかりやすくするために、`:value`のように、コロン構文を使用して引数を定義できます。たとえば、次のように指定された各引数では、`query_params`オブジェクトにそのキーを使用した後続の値が必要です。 ``` { ..., "query": "amount >= :amount AND country = :country", "query_params": { "amount": 100, "country": "United States" }, ... } ``` ### 論理演算子 クエリでは、以下の論理演算子がサポートされます。 | 演算子 | | | --- | --- | | AND | ANDで区切られたすべての条件がTRUEの場合に一致となります。 | | OR | ORで区切られた条件のいずれかがTRUEの場合に一致となります。 | | NOT | 先行する条件がTRUEでない場合に一致となります。 | | LIKE | テンプレートフィールドの値がパターンと一致する場合に一致となります。文字列値のみに対応します。詳細については、パターン一致を参照してください。その他の制限については以下を参照してください。 | | NOT LIKE | テンプレートフィールドの値がパターンと一致しない場合に一致となります。文字列値のみに対応します。詳細については、パターン一致を参照してください。その他の制限については以下を参照してください。 | | ILIKE | LIKEと同じですが、大文字と小文字が区別されません。その他の制限については以下を参照してください。 | | NOT ILIKE | NOT LIKEと同じですが、大文字と小文字が区別されません。その他の制限については以下を参照してください。 | | IN | テンプレートフィールドの値が指定されたリストの任意の値と等しい場合に一致となります。amount IN (:arg1, :arg2, :arg3)などの各リスト項目には、明示的に定義されたquery_params引数を使用します。仕様では、IN演算子はメタデータクエリの複数選択フィールドでサポートされていないため、400エラーが返されます。 | | NOT IN | INに似ていますが、テンプレートフィールドの値は、リストに指定されたどの引数にも一致しません。 | | IS NULL | テンプレートフィールドの値がnullの場合に一致となります。 | | IS NOT NULL | テンプレートフィールドの値がnullでない場合に一致となります。 | | ~ | 指定された用語を基に、フィールドに対して用語レベルの検索を実行します。 | | HASANY | フィールドの値が指定された引数のいずれかと等しい場合に一致となります。この形式では、HASANY (:arg1, :arg2, :arg3)のように、リスト内の各項目が明示的に定義されたquery_params引数である必要があります。 | | HASALL | フィールドの値が指定されたすべての引数と等しい場合に一致となります。この形式では、HASALL (:arg1, :arg2, :arg3)のように、リスト内の各項目が明示的に定義されたquery_params引数である必要があります。 | | HASANCESTOR | フィールドの値が指定された任意の引数の子孫である場合に一致となります。この形式では、HASANCESTOR (:arg1, :arg2, :arg3)のように、リスト内の各項目が明示的に定義されたquery_params引数である必要があります。メタデータ階層MDフィールドのみでサポートされています。 | `ILIKE`演算子を使用した場合を除き、`string`または`enum`フィールドでの一致は、どれも大文字小文字が区別されます。 ### 比較演算子 クエリでは、以下の比較演算子がサポートされます。 | 演算子 | | | --- | --- | | = | テンプレートフィールドの値が、指定した値と等しいことを表します。 | | > | テンプレートフィールドの値が、指定した値よりも大きいことを表します。 | | < | テンプレートフィールドの値が、指定した値よりも小さいことを表します。 | | >= | テンプレートフィールドの値が、指定した値以上であることを表します。 | | <= | テンプレートフィールドの値が、指定した値以下であることを表します。 | | <> | テンプレートフィールドの値が、指定した値と等しくないことを表します。 | ビット単位演算子および算術演算子は、メタデータクエリAPIではサポートされていません。 ### パターン一致 `LIKE`、`NOT LIKE`、`ILIKE`および`NOT ILIKE`演算子は、パターンに対して文字列が一致するかどうかを照合します。このパターンでは、以下の予約文字をサポートします。 - `%` パーセント記号は0個、1個または複数個の文字を表します。たとえば、`%Contract`の場合、`Contract`、`Sales Contract`は一致しますが、`Contract (Sales)`は一致しません。 - `_` アンダースコアは1文字を表します。たとえば、`Bo_`の場合、`Box`、`Bot`は一致しますが、`Bots`は一致しません。 上記の文字はどちらも、他の文字の前後または文字の間に使用できます。パターンには、複数の予約文字を含めることができます。たとえば、`Box% (____)`の場合は`Box Contract (2020)`が一致します。 クエリの例は次のようになります。`%`でラップされた文字列は`query`属性ではなく`query_params`のリストに含まれていることに注意してください。 ``` { ..., "query": "country ILIKE :country", "query_params": { "country": "%United%" }, ... } ``` `%`または`_`文字を、その文字として照合する必要がある場合は、エスケープするためにバックスラッシュ文字`\`を使用できます。たとえば、`20\%`の場合は、リテラル値`20%`が一致します。 **Source:** [https://ja.developer.box.com/guides/metadata/queries/syntax/](https://ja.developer.box.com/guides/metadata/queries/syntax/) --- ### クエリ演算子 **Type:** guide | **Category:** 検索 | **Section:** Developer Guides クエリ演算子 GET /search APIでは、APIによって返された結果を絞り込むのに役立つさまざまなクエリ演算子がサポートされています。 これらの演算はすべて、検索の作成時にquery… # クエリ演算子 [`GET /search`](e://get_search) APIでは、APIによって返された結果を絞り込むのに役立つさまざまなクエリ演算子がサポートされています。 これらの演算はすべて、検索の作成時に`query`パラメータに渡されます。 ## 完全一致に使用する"" クエリを二重引用符 (`""`) で囲むと、APIによって完全一致のみが返されます。完全一致検索では、特定の文字の並びに基づいた検索結果は返されません。代わりに、フレーズ (つまり、単語の並び) に基づいた一致が返されます。 たとえば、`"Blue-Box"`を検索すると、`"blue.box"`、`"Blue Box"`、`"Blue-Box"`などの並びを含む、検索結果が返されます。つまり、`Blue`および`Box`という単語が指定した順序で連続して含まれている項目です。 ## 複数用語の一致に使用するAND `AND`演算子を使用すると、検索では、演算子の左側と右側にある検索語句を両方とも含む項目が返されます。 たとえば、`marketing AND BoxWorks`を検索すると、`marketing`と`BoxWorks`の両方が任意の順番でテキストに含まれている項目が返されます。テキストに`BoxWorks`のみが含まれる結果は返されません。 ## いずれかの検索語句の一致に使用するOR `OR`演算子を使用すると、検索では、演算子の左側と右側にある検索語句のいずれかを含む項目が返されます。 たとえば、`marketing OR BoxWorks`を検索すると、`marketing`と`BoxWorks`のいずれかがテキストに含まれている結果が返されます。サポートされている別のブール条件が使用されている場合を除き、複数語のクエリは暗黙的に`OR`として解釈されるため、この演算子の使用は必須ではありません。 ## 検索語句の除外に使用するNOT `NOT`演算子を使用すると、検索では、演算子に続く用語を含まない項目が返されます。 たとえば、`marketing AND NOT BoxWorks`を検索すると、テキストに`marketing`のみが含まれている結果が返されます。`BoxWorks`が含まれる結果は省略されます。 小文字の演算子 (`and`、`or`および`not`) および大文字と小文字を組み合わせた演算子 (`And`、`Or`および`Not`) はサポートされていないことに注意してください。 Boxコミュニティの記事で、Boxでの検索に関する最新情報を確認する **Source:** [https://ja.developer.box.com/guides/search/query-operators/](https://ja.developer.box.com/guides/search/query-operators/) --- ### クライアント資格情報許可 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides クライアント資格情報許可 サーバー認証を利用し、クライアントIDとクライアントシークレットを使用してアプリケーションのIDを確認する場合は、以下の手順に従います。 前提条件 Box開発者コンソールでサーバー認証 (クライアント資格情報許可使用) を使用するPlatform… # クライアント資格情報許可 サーバー認証を利用し、クライアントIDとクライアントシークレットを使用してアプリケーションのIDを確認する場合は、以下の手順に従います。 ## 前提条件 - Box[開発者コンソール](https://app.box.com/developers/console)でサーバー認証 (クライアント資格情報許可使用) を使用するPlatformアプリケーション - [構成] タブからアプリケーションのクライアントシークレットを表示およびコピーするために、Boxアカウントで[2要素認証](https://support.box.com/hc/ja/articles/360043697154-%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E5%A4%9A%E8%A6%81%E7%B4%A0%E8%AA%8D%E8%A8%BC%E3%81%AE%E8%A8%AD%E5%AE%9A)が有効になっていること - Box管理コンソールでアプリケーションが[承認](g://authorization)されていること クライアントシークレットは機密情報であり、保護する必要があります。アクセストークンの取得時にBoxがアプリケーションのIDを安全に確認するために使用されるため、クライアントシークレットを自由に配布するべきではありません。配布方法には、メール、公開フォーラム、コードリポジトリ、分散されたネイティブアプリケーション、クライアント側のコードなどがあります。さらにセキュリティメカニズムを追加する場合は、Boxの標準的なJWTアプリケーションを使用することをお勧めします。 ## 利用方法 APIコールを実行して[アクセストークン](e://post-oauth2-token)を取得する際は、リクエスト本文にクライアントIDとクライアントシークレットを含める必要があります。`grant_type`を`client_credentials`に設定します。 アプリケーションの[サービスアカウント](page://platform/user-types/#service-account)として認証する場合は、以下のようにします。 - `box_subject_type`を`enterprise`に設定する - `box_subject_id`をEnterprise IDに設定する 管理者または管理対象ユーザーとして認証する場合は、以下のようにします。 - `box_subject_type`を`user`に設定する - `box_subject_id`をユーザーIDに設定する - Box[開発者コンソール](https://app.box.com/developers/console)で [**アプリ + Enterpriseアクセス**] および [**ユーザーアクセストークンを生成する**] を有効にする 任意のアプリケーションユーザーとして認証する場合は、以下のようにします。 - `box_subject_type`を`user`に設定する - `box_subject_id`をユーザーIDに設定する - Box[開発者コンソール](https://app.box.com/developers/console)で [**ユーザーアクセストークンを生成する**] を有効にする ## 一般的なエラー ### Grant credentials are invalid (許可の資格情報が無効です) 認証中に、次のエラーが表示される場合があります。 ``` Grant credentials are invalid [400 Bad Request] invalid_grant - Grant credentials are invalid ``` このエラーは次のいずれかを示します。 渡されたクライアントIDとクライアントシークレットが正しくないか、同じアプリケーションのものではない。 選択した[アプリケーションアクセス](g://authentication/client-credentials/client-credentials-setup/#application-access)に基づいて`box_subject_id`を使用できない。 [アプリアクセスのみ] が指定されているCCGアプリは、そのサービスアカウントとして認証するために送信時に`box_subject_type`を`enterprise`に設定できますが、管理対象ユーザーまたは管理者として認証できません。 `box_subject_type`を`user`に設定して使用するには、[**構成**] タブの [**高度な機能**] セクションでユーザーアクセストークンを生成するようアプリケーションを構成する必要があります。 アプリの設定に変更を加えたら、忘れずに管理コンソールでアプリケーションを[再承認](g://authorization/platform-app-approval#re-authorization-on-changes)してください。 - アプリケーションがBox管理コンソールで承認されていない **Source:** [https://ja.developer.box.com/guides/authentication/client-credentials/](https://ja.developer.box.com/guides/authentication/client-credentials/) --- ### クライアント資格情報許可を使用した設定 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides クライアント資格情報許可を使用した設定 前提条件 サーバー側認証を使用してPlatformアプリを設定するには、Box Enterpriseアカウントから開発者コンソールにアクセスできることを確認する必要があります。または、Developer… # クライアント資格情報許可を使用した設定 ## 前提条件 サーバー側認証を使用してPlatformアプリを設定するには、Box Enterpriseアカウントから[開発者コンソール](https://app.box.com/developers/console)にアクセスできることを確認する必要があります。または、[Developerアカウント](https://account.box.com/signup/n/developer)にサインアップすることもできます。 ## アプリの作成手順 ### 開発者コンソールへの移動 Boxにログインし、[開発者コンソール](https://app.box.com/developers/console)に移動して、[**Platformアプリの作成**] を選択します。 ### アプリケーションの種類の選択 アプリケーションの種類のリストから [**Platformアプリ**] を選択します。次の手順を促すウィンドウが表示されます。 ### アプリケーションの基本情報の指定 アプリを説明するために、アプリの名前と説明を指定します。アプリの目的を選択するには、ドロップダウンリストを使用します。選択したオプションに応じて、さらに詳細を指定することが必要になる場合があります。 | 目的 | 詳細 | | --- | --- | | [自動化]、[カスタムポータル] | アプリの作成者 (お客様またはパートナー) を指定します。 | | 統合 | 統合のカテゴリ、外部システム名のほか、アプリの作成者 (お客様またはパートナー) を指定します。 | | [その他] | アプリの目的と、アプリの作成者 (お客様またはパートナー) を指定します。 | ### アプリケーションの認証の選択 クライアントIDとクライアントシークレットを使用してアプリケーションIDを確認する場合は [**サーバー認証 (クライアント資格情報許可)**] を選択し、[**アプリの作成**] で確定します。 選択すると、新しいアプリケーションを作成しない限り、別の認証方法に変更できません。 ## アプリ承認 アプリケーションを使用するには、Box管理者がBox管理コンソールでそのアプリケーションを承認しておく必要があります。 [開発者コンソール](https://app.box.com/developers/console)で、目的のアプリケーションの [**承認**] タブに移動します。 [**確認して送信**] をクリックして、承認を得るためにBox Enterprise管理者にメールを送信します。このプロセスの詳細については、[承認ガイド](g://authorization)を参照してください。 Platformアプリケーションの承認方法を確認する ## 基本的な構成 ### アプリケーションアクセス アプリケーションのアクセスレベルにより、アプリからアクセスできるユーザーおよびコンテンツが決まります。デフォルトでは、アプリケーションで問題なく操作できるのは、その[サービスアカウント](page://platform/user-types/#service-account)とすべての[App User](page://platform/user-types)のコンテンツのみです。企業の既存の管理対象ユーザーにもアクセスするには、[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブから [**アプリアクセスレベル**] に移動し、[**アプリ + Enterpriseアクセス**] に設定します。 ### アプリケーションスコープ アプリケーションのスコープにより、アプリケーションが呼び出すことができるエンドポイントとリソースが決まります。各オプションの詳細については、[スコープのガイド](g://api-calls/permissions-and-errors/scopes)を参照してください。 ### CORSドメイン アプリケーションがJavaScriptでフロントエンドのブラウザコードからAPIコールを実行する場合は、[クロスオリジンリソース共有](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) (CORS) のために、これらの呼び出しの実行元となるドメインを許可リストに追加する必要があります。すべてのリクエストがサーバー側のコードから発行される場合は、このセクションをスキップできます。 許可リストに完全なURIを追加するには、[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブの下部にある [**CORSドメイン**] セクションに移動します。 ## SDKとクライアント資格情報許可の使用 各SDKのクライアント資格情報許可の詳細については、以下を参照してください。 [.Net](https://github.com/box/box-windows-sdk-v2/blob/main/docs/authentication.md#server-auth-with-ccg) [Java](https://github.com/box/box-java-sdk/blob/main/doc/authentication.md#client-credentials-grant) [Python](https://github.com/box/box-python-sdk/blob/main/docs/usage/authentication.md#client-credentials-grant) [Node](https://github.com/box/box-node-sdk/blob/main/docs/authentication.md#client-credentials-grant-authentication) [IOS](https://github.com/box/box-ios-sdk/blob/main/docs/usage/authentication.md#client-credentials-grant) **Source:** [https://ja.developer.box.com/guides/authentication/client-credentials/client-credentials-setup/](https://ja.developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) --- ### グループとコラボレーションの管理 **Type:** guide | **Category:** CLI | **Section:** Developer Guides グループとコラボレーションの管理 スクリプト構造 このスクリプトでは、Box CLIを使用して、グループの作成や更新、グループへのユーザーの追加、グループとフォルダの間のコラボレーションの作成を行います。このスクリプトは、… # グループとコラボレーションの管理 ## スクリプト構造 このスクリプトでは、Box CLIを使用して、グループの作成や更新、グループへのユーザーの追加、グループとフォルダの間のコラボレーションの作成を行います。このスクリプトは、2つのパートから構成されています (以下のセクションで詳しく説明します)。両方のパートを実行することも、オプションのフラグを使用して実行するパートを決めることもできます。 ### グループの作成または更新 このスクリプトでは、`UserGroupAdditionPath`パラメータに指定した`.csv`ファイルを使用します。このファイルには、グループ名とユーザーのメールアドレスが記載されています。このファイルを作成する際には、複数のユーザーに同じグループ名を使用することも、1人のユーザーを複数のグループに割り当てることもできます。以下に例を示します。 | GroupName | UserEmail | | --- | --- | | Group1 | ManagedUser1@test.com | | Group1 | ManagedUser2@test.com | | Group2 | ManagedUser3@test.com | | Group3 | ManagedUser1@test.com | グループが存在しない場合は、スクリプトによってそのグループが作成されます。グループが存在する場合は、指定したデータに基づいてエントリが更新されます。 ### コラボレーションの作成または更新 このスクリプトでは、`CollaborationsCreationPath`パラメータに指定した`.csv`ファイルを使用します。このファイルには、グループ名、フォルダID、コラボレーションロールが記載されています。 スクリプトでは、行ごとに、グループが存在するかどうか、そのグループがすでに対応するフォルダにコラボレータとして追加されていないかどうかを確認します。以下に例を示します。 | GroupName | FolderId | CollaborationRole | | --- | --- | --- | | Group1 | 1111111 | editor | | Group2 | 1111111 | viewer_uploader | | Group2 | 2222222 | viewer | | Group3 | 1111111 | viewer_uploader | 両方の条件を満たしている場合、`CollaborationRole`列で定義されたロールを使用してグループがフォルダに割り当てられます。また、グループはすでに存在していても、`CollaborationRole`を変更した場合、スクリプトの実行時に`-UpdateExistingCollabs`フラグを渡すと、コラボレーションロールが更新されます。 ## 前提条件 ### Windows [.NET Core](https://dotnet.microsoft.com/download)の最新バージョンのインストール ### macOSおよびLinux [PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)をインストールします。`pwsh`コマンドを実行して、インストール結果をテストします。 ``` pwsh ``` どのディレクトリでこのコマンドを実行するかに応じて、出力が異なる場合があります。以下に例を示します。 ``` PowerShell 7.2.5 Copyright (c) Microsoft Corporation. https://aka.ms/powershell Type 'help' to get help. PS /Users/user/repos/boxcli/examples> ``` 問題が発生する場合は、[.NET Core](https://dotnet.microsoft.com/download)と[PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)の両方をインストールしたかどうか確認してください。 ### Box CLI スクリプトを使用するには、Box CLIをインストールし、構成する必要があります。これは、[クイックスタートガイド](g://cli/quick-start/create-oauth-app)の手順を実行することで行うことができます。ログインに使用するユーザーは、Boxのメイン管理者または共同管理者である必要があります。 ## スクリプトの構成 1. `boxcli` GitHubリポジトリを複製してこの例のフォルダにcdコマンドで移動するか、[`examples`](https://github.com/box/boxcli/tree/main/examples)ディレクトリからファイルをダウンロードします。 ``` git clone https://github.com/box/boxcli.git boxcli cd boxcli/examples/Mass\ Groups\ \&\ Collaborations\ Update/ ``` 1. グループとユーザーのメールアドレスのリストが含まれる`.csv`ファイルのパスを設定します。 ``` $UserGroupAdditionPath = "./User_Group_Addition.csv" ``` ``` * `UserEmail` is the primary email address for the user in Box. * `GroupName` is the name of the group. ``` 1. グループとユーザーのメールアドレスのリストが含まれる`.csv`ファイルに独自のパスを設定します。 ``` $CollaborationsCreationPath = "./Collaborations_Creation.csv" ``` ``` * `GroupName` is name of the group the script will add as a collaborator to the folder. * `FolderId` is the folder ID the collaborator will be added to. * `CollaborationRole` is the name of the role used when creating a collaboration. You can configure the available roles by setting the `AvailableCollaborationRoles` parameter: ``` ``` $AvailableCollaborationRoles = @("editor", "viewer", "previewer", "uploader", "previewer_uploader", "viewer_uploader", "co-owner") ``` ## スクリプトの実行 1. PowerShellコマンドを実行します。 ``` pwsh ``` 1. スクリプトを実行します。 ``` ./Mass_Groups_Collabs_Update.ps1 ``` ### オプションのフラグ フラグを使用すると、スクリプトの特定の部分を実行またはスキップできます。 - グループがすでに特定のフォルダのコラボレータとして設定されているものの、その役割が.`csv`ファイルで定義されたものとは異なる場合は、スクリプトによってそのことが通知されます。スクリプトによって既存のコラボレーションが変更されることはありません。`.csv`ファイルで定義された役割で既存のコラボレーションを更新するには、スクリプトを実行する際に追加の`-UpdateExistingCollabs`フラグを設定します。 ``` Mass_Groups_Collabs_Update.ps1 -UpdateExistingCollabs ``` - コラボレーションを作成せずにグループを更新するには、スクリプトの実行時に`-SkipCollabsCreation`ブール値フラグを追加します。 ``` Mass_Groups_Collabs_Update.ps1 -SkipCollabsCreation ``` - グループを更新せずにコラボレーションを作成するには、スクリプトの実行時に`-SkipGroupsUpdate`ブール値フラグを追加します。 ``` Mass_Groups_Collabs_Update.ps1 -SkipGroupsUpdate ``` ## ログ ログは、メインフォルダ内の`logs`フォルダに格納されます。以下のログファイルにアクセスできます。 - `Mass_Groups_Collabs_Update_all.txt`: すべてのログエントリが含まれています。 - `Mass_Groups_Collabs_Update_errors.txt`: エラーのみが含まれています。 **Source:** [https://ja.developer.box.com/guides/cli/scripts/manage-groups-collaborations/](https://ja.developer.box.com/guides/cli/scripts/manage-groups-collaborations/) --- ### グループとの共有 **Type:** guide | **Category:** コラボレーション | **Section:** Developer Guides グループとの共有 ファイルやフォルダをユーザーのグループと共有するには、グループID、ファイルまたはフォルダのIDに加え、グループがファイルまたはフォルダにアクセスする際に必要なロールまたは権限を使用してコラボレーションを作成します。 コラボレーションロールはeditor… # グループとの共有 ファイルやフォルダをユーザーのグループと共有するには、グループID、ファイルまたはフォルダのIDに加え、グループがファイルまたはフォルダにアクセスする際に必要なロールまたは権限を使用してコラボレーションを作成します。 コラボレーションロールは`editor`、`viewer`、`previewer`、`uploader`、`previewer uploader`、`viewer uploader`、`co-owner`、または`owner`です。各ロールについての詳しい説明は、Boxの[サポートドキュメント](https://support.box.com/hc/ja/articles/360044196413-%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%A9%E9%99%90%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を参照してください。 ## ネストされたオブジェクト コラボレーションの作成時には、リクエスト本文に`accessible_by`と`item`という2つのネストされたオブジェクトを使用します。 `accessible_by`オブジェクトは、この項目の共有相手を指定し、グループ`id`と`type`を含みます。`type`フィールドは常に`group`に設定する必要があります。 `item`オブジェクトは、共有する項目を指定します。このオブジェクトには、`file`または`folder`として設定する必要がある`type`フィールドと、そのファイルまたはフォルダの`id`フィールドがあります。 **Source:** [https://ja.developer.box.com/guides/collaborations/groups/](https://ja.developer.box.com/guides/collaborations/groups/) --- ### クロスオリジンリソース共有 (CORS) **Type:** guide | **Category:** セキュリティ | **Section:** Developer Guides クロスオリジンリソース共有 (CORS) クロスオリジンリソース共有 (CORS) は、悪意のあるウェブサイトが明示的な権限を持たずに他のサイトのデータ (Box APIなど) にアクセスするのを防ぐために、ウェブブラウザで利用されているセキュリティメカニズムです。 CORS… # クロスオリジンリソース共有 (CORS) [クロスオリジンリソース共有 (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) は、悪意のあるウェブサイトが明示的な権限を持たずに他のサイトのデータ (Box APIなど) にアクセスするのを防ぐために、ウェブブラウザで利用されているセキュリティメカニズムです。 CORSは、ウェブブラウザを使用してウェブページから送信されるBox APIリクエストのみに適用され、そのブラウザによって渡される`HTTP Origin`ヘッダーを利用します。サーバー側環境では機能しません。 CORSの全般的な情報の詳細については、MDN Web Docsを参照してください。 ## CORSのしくみ あるドメイン (`company.com`など) のブラウザで、別のドメイン (`box.com`) から画像、ファイル、またはAPIリソースを取得しようとする場合、適切なCORSヘッダーが存在しない限り、そのウェブブラウザにより、これらのアセットへのアクセスが阻止されます。 ブラウザからクロスオリジンリクエストを送信すると、そのリクエストを送信するサイトのドメインを含む`Origin`リクエストヘッダーがリクエストとともに渡されます。このヘッダーは変更できないため、ウェブブラウザのセキュリティにとって重要な部分となります。 デフォルトでは、`Access-Control-Allow-Origin`レスポンスヘッダーが存在しない場合、ブラウザは、別のドメインから読み込まれたアセットを受け入れることはありません。Boxなどのサーバーは、そのサーバー上のリソースへのアクセスが許可されたドメインのリストを明示的に取得することも、APIへのアクセスを任意のドメインに許可するために`*`値を返すこともできます。 ## BoxでのCORSの使用方法 Boxは、`Origin`リクエストヘッダーと`Access-Control-Allow-Origin`レスポンスヘッダーを使用して、開発者が定義したCORSルールを適用します。 ### Originヘッダーの検証 Box APIは、アプリケーション開発者が設定した、許可されたドメインのリストに対して`Origin`リクエストヘッダーを検証します。許可されたオリジンは複数設定でき、リストにないオリジンは`HTTP 403`エラーで返されます。 ``` { "type": "error", "status": 403, "code": "cors_origin_not_whitelisted", "context_info": { "origin": "https://company.com" }, "help_url": "https://developer.box.com/guides/api-calls/permissions-and-errors/common-errors/", "message": "Access denied - Did you forget to safelist your origin in the CORS config of your app?", "request_id": "4dsdfsa832213" } ``` オリジンが設定されていない場合は、このアプリケーションのBox APIに対するすべてのリクエストでエラーが返されます。 ### Access-Control-Allow-Originレスポンスヘッダー Box APIは、`Origin`ヘッダーを検証した後、リクエストされたデータのほか、値`*`が設定された`Origin`レスポンスヘッダーを返します。 ``` HTTP/1.1 200 OK Date: Wed, 23 Sep 2020 14:07:29 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Strict-Transport-Security: max-age=31536000 Cache-Control: no-cache, no-store Access-Control-Allow-Origin: * Vary: Origin BOX-REQUEST-ID: 032cfb446dae4fd0b4c2bff80a1a97ba7 ``` このヘッダーを返すことにより、Box APIはウェブブラウザに対して、データをリクエストしたサイトでレスポンスを使用できることを通知します。 ## ドメインのCORSの有効化 アプリケーションが動作するドメインでCORSを有効にするには、開発者コンソールに移動して、アプリケーションを選択し、[**構成**] パネルの一番の下までスクロールして [**CORSドメイン**] の設定を見つけます。 アプリケーションでのAPIリクエストの発信元になると予想されるすべてのオリジンをコンマ区切りリストとして追加します。ドメインにはスキーマ (`http`または`https`) が必要で、`*.example.com`のようにサブドメインのワイルドカードを含めることができます。 サイトが非標準のポート上で動作する場合は、サイトにそのポートも含める必要があります。これは、特に、`localhost`または`127.0.0.1`で動作しているサイトに当てはまります。 オリジンのリストの例は、次のようになります。 ``` https://company.com,https://*.internal.company.com,http://localhost:3000 ``` ## CORSのデバッグ Box APIに対してAPIコールを実行した場合に発生する可能性のあるCORSエラーはいくつかあります。 ### HTTP 403 - 許可済みオリジンが定義されていない オリジンのリストを指定した後でも、このエラーが発生する場合があります。多くの場合、指定したオリジンに誤字があることが原因です。 1. **オリジンを確認する** - 開発者コンソールに戻り、オリジンがAPIコールの実行元のサイトをマップしていることを確認します。オリジンにはスキーム (`http(s)`) が含まれても、パスまたは末尾の`/`は含まれないことに注意してください。ブラウザのデバッグコンソールを使用してページを調査し、`Origin`リクエストヘッダーの値を確認することをお勧めします。この値は、開発者コンソールで指定された値のいずれかと一致する必要があります。 2. **資格情報を確認する** - このエラーのもう1つの理由として、オリジンを設定したアプリケーションとは別のアプリケーションとして認証している可能性が考えられます。資格情報が、使用するアプリケーションのものと一致することを確認してください。サーバー側スクリプトから呼び出しを実行して、APIコールが動作するかどうかを検証することをお勧めします。 ### Cross-Origin Request Blocked 場合によっては、CORSに言及するJavaScriptエラーが発生します。 ``` Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://api.box.com/2.0/users/me. (Reason: CORS request did not succeed). ``` 多くの場合、このエラーはCORSとはほとんど関係がありません。代わりに、以下を確認することをお勧めします。 1. **認証ヘッダーを確認する** - 認証ヘッダーが指定されていないか、またはその形式が正しくない場合、このAPIでは、必要な`Access-Control-Allow-Origin`ヘッダーなしで一般的なエラーが返されます。その結果、ブラウザで前述のエラーが発生します。必ず`Authorization: Bearer ...`ヘッダーを使用してアクセストークンを渡してください。 2. **VPNやプロキシなどでブロックされたリクエストがないか確認する** - 場合によっては、VPN、会社のプロキシ、ブラウザの機能拡張、DNSプロバイダ、またはネットワークトラフィックを妨害する可能性があるその他のサービスによってBox APIがブロックされている可能性があります。このようなサービスはどれも、リクエストをインターセプトし、必要な`Access-Control-Allow-Origin`ヘッダーが含まれていないまったく新しいリクエストを返す場合があります。このケースをテストするには、ブラウザ以外の環境、シークレットウィンドウ、またはまったく別の (会社が所有していない) デバイスから同じAPIコールを実行してみてください。 ### Access-Control-Allow-Originヘッダーの問題 `Access-Control-Allow-Origin`ヘッダーで問題が発生した場合は、以下の手順を実行します。 1. **使用するドメインが許可済みオリジンのリストに存在するかどうかを確認する** - 開発者コンソールに移動して、アプリケーションを開きます。[**構成**] タブをクリックし、下にスクロールして、[**CORSドメイン**] セクションでリストにドメインを追加できます。 1. **サーバーが正しく設定されているかどうかを確認する** - クロスドメインリクエストを処理するか、**No 'access-control-allow-origin' header is present on the requested resource (リクエストしたリソースには「access-control-allow-origin」ヘッダーが存在しません)** という警告が表示された場合は非クロスドメインリクエストを使用するようサーバーを構成します。 **Source:** [https://ja.developer.box.com/guides/security/cors/](https://ja.developer.box.com/guides/security/cors/) --- ### コードサンプル **Type:** guide | **Category:** ツール | **Section:** Developer Guides コードサンプル 汎用メソッド 以下のコードは、汎用Toolkitメソッドを使用してSalesforceのBoxフォルダにメタデータを作成します。 新しいフォルダの関連付け 以下のコードは、特定のSalesforceレコードID… # コードサンプル ## 汎用メソッド 以下のコードは、汎用Toolkitメソッドを使用してSalesforceのBoxフォルダにメタデータを作成します。 ``` // Instantiate the Toolkit object box.Toolkit toolkit = new box.Toolkit(); // Get the Salesforce record id associated with a Box folder String recordId = toolkit.getRecordIdByFolderId('{some folder id}'); // Construct an object containing all the metadata you want Map<String, Object> metadata = new Map<String, Object>{ 'salesforce_id' => recordId, 'salesforce_url' => System.URL.getSalesforceBaseUrl().toExternalForm() + '/' + recordId, 'salesforce_user_name' => UserInfo.getName(), 'salesforce_user_email' => UserInfo.getUserEmail() }; // Specify the Box API endpoint to call String endpoint = 'https://api.box.com/2.0/folders/' + '{some folder id}' + '/metadata/global/properties'; // Create a new HttpRequest object and set appropriate values HttpRequest request = new HttpRequest(); request.setMethod('POST'); request.setEndpoint(endpoint); request.setBody(JSON.serialize(metadata)); request.setHeader('content-type', 'application/json'); // Send the HttpRequest through the generic Toolkit method, which will handle the authentication details HttpResponse response = toolkit.sendRequest(request); ``` ## 新しいフォルダの関連付け 以下のコードは、特定のSalesforceレコードID用のフォルダを作成します。 ``` // Instantiate the Toolkit object box.Toolkit boxToolkit = new box.Toolkit(); // Create a folder and associate it with an account Id accountId = '001j000000FBozw'; String accountFolderId = boxToolkit.createFolderForRecordId(accountId, null, true); system.debug('new item folder id: ' + accountFolderId); // If there was an error, accountFolderId will be null. mostRecentError will contain the error message if(accountFolderId == null) { system.debug('most recent error: ' + boxToolkit.mostRecentError); } // ALWAYS call this method when finished.Since salesforce doesn't allow http callouts after dml operations, we need to commit the pending database inserts/updates or we will lose the associations created boxToolkit.commitChanges(); ``` ## フォルダテンプレート 以下のコードは、レコード用のフォルダを作成し、サブフォルダ (フォルダテンプレート) を作成して現在のユーザーとコラボレーションします。 ``` // Instantiate the Toolkit object box.Toolkit boxToolkit = new box.Toolkit(); // Create a folder and associate it with an account Id accountId = '001j000000FBozz'; String accountFolderId = boxToolkit.createFolderForRecordId(accountId, null, true); system.debug('new item folder id: ' + accountFolderId); // Create two sub-folders in the newly created account folder String legalFolderId = boxToolkit.createFolder('Legal Documents', accountFolderId, null); system.debug('Legal Folder id: ' + legalFolderId); String pictureFolderId = boxToolkit.createFolder('Pictures', accountFolderId, null); system.debug('Picture Folder id: ' + pictureFolderId); // Collaborate the current user on the account folder. Note that we're sending false for the optCreateFolder param that shouldn't actually matter since the folder(s) already exists Id userId = UserInfo.getUserId(); box.Toolkit.CollaborationType collabType = box.Toolkit.CollaborationType.EDITOR; String collabId = boxToolkit.createCollaborationOnRecord(userId, accountId, collabType, false); system.debug('new collaboration id: ' + collabId); // ALWAYS call this method when finished. Since salesforce doesn't allow http callouts after dml operations, we need to commit the pending database inserts/updates or we will lose the associations created boxToolkit.commitChanges(); ``` ## メタデータ 以下のコードでは、Boxフォルダのメタデータとカスケードポリシーを取得、追加、削除、更新します。 ``` // Get metadata & attributes types Box.toolkit tk = new Box.Toolkit(); Box.MetadataTemplate mdt = tk.getMetadataTemplateByName('enterprise', 'testtemplate'); System.debug(mdt); System.debug(mdt.getAttributeTypes()); //get Map<String, String> of values and types. // Get Metadata Box.Toolkit tk = new Box.Toolkit(); Box.FolderMetadata fmd = tk.getBoxMetadataByFolderId('193488737189', 'enterprise', 'testTemplate'); System.debug(tk.mostRecentError); System.debug(fmd); // Create Metadata Box.KeyValuePair kvp = new Box.KeyValuePair(); kvp.key = 'recordName'; kvp.value = 'Account Test Name'; Box.KeyValuePair kvp2 = new Box.KeyValuePair(); kvp2.key = 'recordUrl'; kvp2.value = 'https://speed-nosoftware-3605-dev- ed.scratch.lightning.force.com/lightning/r/Account/001DR00001PsY7YYAV/view'; List<Box.KeyValuePair> kvps = new List<Box.KeyValuePair>(); kvps.add(kvp); kvps.add(kvp2); Box.Toolkit tk = new Box.Toolkit(); Box.FolderMetadata newfmd = tk.createBoxMetadataByFolderId('193488737189', 'enterprise', 'testTemplate', kvps); System.debug(tk.mostRecentError); System.debug(newfmd); // Update Metadata List<Box.FolderMetadataUpdate> updates = new List<Box.FolderMetadataUpdate>(); Box.FolderMetadataUpdate up1 = new Box.FolderMetadataUpdate(); Box.FolderMetadataUpdate up2 = new Box.FolderMetadataUpdate(); up1.op = 'replace'; up1.path = '/recordName'; up1.value = 'Account Name Test 2'; updates.add(up1); up2.op = 'replace'; up2.path = '/recordUrl'; up2.value = 'https://speed-nosoftware-2356-dev- ed.scratch.lightning.force.com/lightning/r/Account/001DR00001PsY7YYAV/view'; updates.add(up2); Box.Toolkit tk = new Box.Toolkit(); Box.FolderMetadata fmd = tk.UpdateBoxMetadataByFolderId('193488737189', 'global', 'lobSalesforceRecord', updates); System.debug(fmd); // Delete Metadata Box.Toolkit tk = new Box.Toolkit(); Boolean fmd = tk.deleteBoxMetadataByFolderId('193488737189', 'global', 'lobSalesforceRecord'); System.debug(tk.mostRecentError); System.debug(fmd); // Get Cascade Policy List Box.Toolkit tk = new Box.Toolkit(); List<Box.MetadataCascadePolicy> mcp = tk.getMetadataCascadePoliciesByFolderId('193488737189', null, 0, null); System.debug(mcp); System.debug(tk.mostRecentError); // Get Cascade Policy Box.Toolkit tk = new Box.Toolkit(); Box.MetadataCascadePolicy mcp = tk.getMetadataCascadePolicyById('MTkzNDg4NzM3MTg5I2cjbG9iU2FsZXNmb3JjZVJlY29yZC0wMTIwMTI0ZC03YWUxLTQzNjItYjdlMC05Y2RiYzhkMzIzZjM'); System.debug(mcp); System.debug(tk.mostRecentError); // Create Cascade Policy Box.Toolkit tk = new Box.Toolkit(); Box.MetadataCascadePolicy mcp = tk.createMetadataCascadePolicy('193488737189', 'global', 'lobSalesforceRecord'); System.debug(mcp); System.debug(tk.mostRecentError); // Delete Cascade Policy Box.Toolkit tk = new Box.Toolkit(); Boolean mcp = tk.deleteMetadataCascadePolicyById('MTkzNDg4NzM3MTg5I2cjbG9iU2FsZXNmb3JjZVJlY29yZC0wMTIwMTI0ZC03YWUxLTQzNjItYjdlMC05Y2RiYzhkMzIzZjM'); System.debug(mcp); System.debug(tk.mostRecentError); ``` その他の例: ``` // Get metadata example 1 Box.toolkit tk = new Box.Toolkit(); Box.FolderMetadata fmt = tk.getBoxMetadataByFolderId('205776356105', 'enterprise', 'testTemplate'); for(KeyValuePair kvp : fmt.keyValuePairs){ System.debug(kvp); } // Get metadata example 2 Box.toolkit tk = new Box.Toolkit(); System.debug(tk.getBoxMetadataByFolderId('205776356105', 'global', 'lobSalesforceRecord')); ``` ``` // Create metadata Box.toolkit tk = new Box.Toolkit(); List<Box.KeyValuePair> kvps = new List<Box.KeyValuePair>(); Box.KeyValuePair kvp1 = new Box.KeyValuePair(); kvp1.key = 'name'; kvp1.value = 'test'; kvps.add(kvp1); Box.KeyValuePair kvp2 = new Box.KeyValuePair(); kvp2.key = 'revenue'; kvp2.value = '5000'; kvps.add(kvp2); Box.KeyValuePair kvp3 = new Box.KeyValuePair(); kvp3.key = 'typeMulti'; kvp3.value = 'Customer;Other'; kvps.add(kvp3); System.debug(tk.createBoxMetadataByFolderId('205776356105', 'enterprise', 'testtemplate', kvps)); System.debug(tk.mostRecentError); ``` ``` // Update Metadata Box.toolkit tk = new Box.Toolkit(); System.debug(tk.getBoxMetadataByFolderId('205776356105', 'enterprise', 'mitchtemplate')); List<Box.FolderMetadataUpdate> fmus = new List<Box.FolderMetadataUpdate>(); Box.FolderMetadataUpdate fmu = new Box.FolderMetadataUpdate(); fmu.op = 'replace'; fmu.path = '/name'; fmu.value = 'Test 2'; fmus.add(fmu); Box.FolderMetadataUpdate fmu2 = new Box.FolderMetadataUpdate(); fmu2.op = 'replace'; fmu2.path = '/revenue'; fmu2.value = '3000'; fmus.add(fmu2); Box.FolderMetadataUpdate fmu3 = new Box.FolderMetadataUpdate(); fmu3.op = 'add'; fmu3.path = '/typeMulti'; fmu3.value = 'Customer'; fmus.add(fmu3); System.debug(tk.updateBoxMetadataByFolderId('205776356105', 'enterprise', 'testTemplate', fmus)); System.debug(tk.mostRecentError); ``` ## 署名リクエストの作成 次のコードでは、SalesforceにBox Signリクエストを作成します。 ``` //Send Sign Request Box.BoxSignRequest request = new Box.BoxSignRequest(); Box.Signer signer = new Box.Signer(); signer.role = 'signer'; signer.email = 'test@test.com'; request.signers = new List<Box.Signer>{ signer }; Box.File srcFile = new Box.File(); srcFile.id = '1947563411908'; request.source_files = new List<Box.File>{ srcFile }; request.recordId = '0017z00001IdXIHAA3'; request.subject = 'Test Subject'; request.message = 'Test Message'; request.send_reminders = false; List<Box.BoxSignResponse> responses = Box.BoxSignService.sendSignRequests(new List<Box.BoxSignRequest>{ request }); System.debug(responses[0]); ``` ## Box Hubの取得 次のコードでは、Box Hubを取得します。 ``` //Get All Hubs Box.HubsToolkit tk = new Box.HubsToolkit(); Box.HubsList hubsList = tk.getAllHubs(); for(Box.Hub hub : hubsList.entries){ //process hubs } //Get Hub by Id Box.Hub hub = tk.getHubById('106600628'); //processing single Hub by using hub.title, hub.id, etc. ``` **Source:** [https://ja.developer.box.com/guides/tooling/salesforce-toolkit/samples/](https://ja.developer.box.com/guides/tooling/salesforce-toolkit/samples/) --- ### コマンドの作成とヘルプ機能 **Type:** quick-start | **Category:** CLI | **Section:** Developer Guides コマンドの作成とヘルプ機能 CLIコマンドの全一覧と使用方法に関する情報については、GitHub… # コマンドの作成とヘルプ機能 CLIコマンドの全一覧と使用方法に関する情報については、[GitHubリポジトリ](https://github.com/box/boxcli#command-topics-1)を参照してください。 一部のコマンドは、サービスアカウントと管理者しか使用できません。必要なスコープでユーザーが承認されていない場合、または別のユーザーのデフォルトのトークンを取得するようCLIを構成した場合は、呼び出しが失敗する可能性があります。詳細なエラーログを確認するには、コマンドに`-v`または`--verbose`を追加してください。 必要なエンドポイント用のコマンドが表示されない場合は、[カスタムリクエスト](https://github.com/box/boxcli/blob/master/docs/request.md)を作成できます。 helpコマンドで提供されない情報を確認するには、リファレンスドキュメントと併せてリポジトリのドキュメントを使用してください。このような情報には、制限事項、トークンの権限の要件、フィールドなどがあります。 ## はじめに: ブラウザのストレージをリセットする Box API資格情報をCLIにインポートしたので、これらの資格情報をブラウザのストレージから削除することをお勧めします。 資格情報をクリア API資格情報をブラウザのストレージから削除すると、**クライアントID**または**クライアントシークレット**を他のスクリプトで読み取ることができなくなります。 ## helpを使用したフォルダの作成 どのCLIコマンドも`box`で始まります。任意のコマンドにオプション`--help`を追加すると、そのコマンドを作成するためのヘルプが表示されます。たとえば、`box --help`を実行すると、使用可能なすべてのオブジェクトコマンドのリストが表示されます。オプションの詳細については、[手順4](g://cli/quick-start/options-and-bulk-commands/#options)で説明します。 次に、例として、フォルダオブジェクトを使用してコマンド`box folders --help`を実行します。その結果、このオブジェクトに実行できるすべての操作のリストが表示されます。 フォルダの作成に必要な引数を調べるためのコマンド: `box folders:create --help` コマンド`box folders:create 0 "My CLI Folder"`を実行し、レスポンスで返されたフォルダIDを書き留めておきます。 フォルダツリーのルートレベルである [すべてのファイル] ページは、常にフォルダID 0で表されます。 **自分の**Boxアカウントにログインします。このフォルダが自分のフォルダツリーに表示されているでしょうか? JWT認証を使用したBox CLIを設定すると、Boxアカウントにこのフォルダが表示されなくなります。このフォルダは、アプリケーションの承認後に作成されたアプリケーションのサービスアカウントに存在します。 ## まとめ - **ヘルプ**機能を使用してフォルダを作成しました 最初のフォルダを作成しました **Source:** [https://ja.developer.box.com/guides/cli/quick-start/build-commands-help/](https://ja.developer.box.com/guides/cli/quick-start/build-commands-help/) --- ### ごみ箱 **Type:** guide | **Category:** ごみ箱 | **Section:** Developer Guides ごみ箱 項目が削除される前に、ユーザーのごみ箱に入れられる可能性があります。ごみ箱は、ユーザーがBoxアプリを使用して、またはアプリケーションによってAPI経由で管理できます。 2段階の削除プロセス Box… # ごみ箱 項目が削除される前に、ユーザーのごみ箱に入れられる可能性があります。ごみ箱は、ユーザーがBoxアプリを使用して、またはアプリケーションによってAPI経由で管理できます。 ## 2段階の削除プロセス Boxでは、[ファイル](e://delete_files_id)、[フォルダ](e://delete_folders_id)、および[ウェブリンク](e://delete_web_links_id)を**ごみ箱に移動**し、その後で完全削除するという2段階のプロセスを使用します。 デフォルトでは、項目は**ごみ箱に移動**された後、30日間は復元可能です。この期間が経過すると**ごみ箱から削除**されます。会社の管理者は削除までの期間を変更することができます。 詳細については、Boxコミュニティの[ごみ箱の管理](https://support.box.com/hc/ja/articles/360044196093-%E3%81%94%E3%81%BF%E7%AE%B1%E3%81%AE%E7%AE%A1%E7%90%86)を参照してください。 **Source:** [https://ja.developer.box.com/guides/trash/](https://ja.developer.box.com/guides/trash/) --- ### ごみ箱の検索 **Type:** guide | **Category:** 検索 | **Section:** Developer Guides ごみ箱の検索 検索結果では、デフォルトで、ユーザーのごみ箱内のコンテンツは無視されます。ユーザーのごみ箱を検索するには、trash_contentクエリパラメータをtrashed_onlyに設定します。 現在、APIでサポートされているのは、ごみ箱にないコンテンツの検索 (non… # ごみ箱の検索 検索結果では、デフォルトで、ユーザーのごみ箱内のコンテンツは無視されます。ユーザーのごみ箱を検索するには、`trash_content`クエリパラメータを`trashed_only`に設定します。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&trash_content=trashed_only" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); searchParams.setTrashContent("trashed_only"); PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", mdFilters: filters, trashContent: "trashed_only"); ``` ``` client.search().query("sales", metadata_filters=metadata_search_filters, trash_content="trashed_only") ``` ``` client.search.query( 'sales', { trash_content: "trashed_only" }) .then(results => { // ... }); ``` 現在、APIでサポートされているのは、ごみ箱にないコンテンツの検索 (`non_trashed_only`、デフォルト) かユーザーのごみ箱にあるコンテンツの検索 (`trashed_only`) のみです。現時点では、その両方の場所にある項目を同時に検索することはできません。 **Source:** [https://ja.developer.box.com/guides/search/trash/](https://ja.developer.box.com/guides/search/trash/) --- ### コメント **Type:** guide | **Category:** コメント | **Section:** Developer Guides コメント コメントは、Box… # コメント コメントは、Boxユーザーがファイルに対して生成するメッセージです。コメントを使用すると、複数のユーザーがファイルでコラボレーションし、コンテンツに対するフィードバックについて話し合うことができます。 それぞれのコメントは特定のファイルおよびユーザーに関連付けられます。また、コメントは、独立したコメントとして作成することも、以前のコメントに対する返信として作成することも可能です。 **Source:** [https://ja.developer.box.com/guides/comments/](https://ja.developer.box.com/guides/comments/) --- ### コメントの作成 **Type:** guide | **Category:** コメント | **Section:** Developer Guides コメントの作成 コメントを作成するには、コメントのメッセージと、コメントを残すファイルのIDを指定してPOST /comments API… # コメントの作成 コメントを作成するには、コメントのメッセージと、コメントを残すファイルのIDを指定して[`POST /comments`](e://post_comments) APIを呼び出します。 コメントのメッセージでは、`@`記号を使用してユーザーをメンションすることもできます。そのためには、メッセージ内の任意の場所に`@[userid:name]`という文字列を追加します。`user_id`はターゲットユーザーのIDで、`name`には任意のカスタムフレーズを使用できます。Box UIでは、この名前がユーザーのプロフィールにリンクされます。 次に、この文字列を`message`ではなく`tagged_message`として渡します。 **Source:** [https://ja.developer.box.com/guides/comments/create-comment/](https://ja.developer.box.com/guides/comments/create-comment/) --- ### コラボレーション **Type:** guide | **Category:** コラボレーション | **Section:** Developer Guides … # コラボレーション アクセス制御リストと同様に、コラボレーションではファイルとフォルダに対するユーザーおよびグループのアクセス権限が定義されます。コラボレーションオブジェクトは、特定のロールによって定義される権限を含んだファイルまたはフォルダへのアクセス権限をユーザーまたはグループに付与します。 コラボレーションロールは`editor`、`viewer`、`previewer`、`uploader`、`previewer uploader`、`viewer uploader`、`co-owner`、または`owner`です。各ロールについての詳しい説明は、Boxの[サポートドキュメント](https://support.box.com/hc/ja/articles/360044196413-%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%A9%E9%99%90%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を参照してください。 **Source:** [https://ja.developer.box.com/guides/collaborations/](https://ja.developer.box.com/guides/collaborations/) --- ### コラボレーションが許可されているドメインのリストの取得 **Type:** guide | **Category:** コラボレーション | **Section:** Developer Guides コラボレーションが許可されているドメインのリストの取得 コラボレーションが許可されているドメインのリストを取得すると、現在の会社でのコラボレーションの作成を許可するドメインがすべて返されます。 リクエストに必須のパラメータはありませんが、オプションでlimitおよびmarket… # コラボレーションが許可されているドメインのリストの取得 コラボレーションが許可されているドメインのリストを取得すると、現在の会社でのコラボレーションの作成を許可するドメインがすべて返されます。 リクエストに必須のパラメータはありませんが、オプションで`limit`および`market`パラメータを設定すると、結果セット全体を制限してページ単位で表示できます。 **Source:** [https://ja.developer.box.com/guides/collaborations/allowed-domains/list/](https://ja.developer.box.com/guides/collaborations/allowed-domains/list/) --- ### コラボレーションの利用規約の検索 **Type:** guide | **Category:** セキュリティ | **Section:** Developer Guides コラボレーションの利用規約の検索 コラボレーションに効力のあるサービス利用規約に関する情報を調べるには、GET /collaborations/:id APIを呼び出してクエリパラメータfields=acceptance_requirements_status… # コラボレーションの利用規約の検索 [コラボレーション](r://collaboration)に効力のあるサービス利用規約に関する情報を調べるには、[`GET /collaborations/:id`](e://get-collaborations-id) APIを呼び出してクエリパラメータ`fields=acceptance_requirements_status`を渡します。 ``` curl -X GET https://api.box.com/2.0/collaborations/2342342?fields=acceptance_requirements_status \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` 返されるレスポンスには、Mini版の`terms_of_service`オブジェクトを含む新しい`acceptance_requirements`オブジェクトが含まれます。 ``` { "type": "collaboration", "id": 2342342>, "acceptance_requirements": { "terms_of_service": { "type": "terms_of_service", "id": 6766677 } } } ``` この情報が返されるのは、外部ユーザーのサービス利用規約が企業で有効になっており、リクエストを実行するユーザーにサービス利用規約を表示するための[権限](g://security/terms-of-service/permissions)がある場合のみです。これは、管理者とエンドユーザーの両方に当てはまりますが、特定のサービス利用規約タイプが無効になっている場合でも、一般的に、管理者はAPIを介してユーザーのサービス利用規約情報を表示できます。 サービス利用規約タイプが有効になっていない場合は、APIによって空の結果が返されます。 ``` { "type": "collaboration", "id": 2342342>, "acceptance_requirements": { "terms_of_service": null } } ``` すでにユーザーが同意している場合でも、`terms_of_service`の情報は`acceptance_requirements`内で返されます。 **Source:** [https://ja.developer.box.com/guides/security/terms-of-service/for-colaboration/](https://ja.developer.box.com/guides/security/terms-of-service/for-colaboration/) --- ### コラボレーションの許可されたドメイン **Type:** guide | **Category:** コラボレーション | **Section:** Developer Guides コラボレーションの許可されたドメイン 会社のコンテンツと共有設定では、管理者は会社に対してコラボレーションの制限を設定できます。この設定では、許可された一連のドメインのみにコラボレーションを制限することも可能です。 許可されたドメインAPI… # コラボレーションの許可されたドメイン 会社のコンテンツと共有設定では、管理者は会社に対して[コラボレーションの制限](https://support.box.com/hc/ja/articles/4404822772755-Enterprise%E8%A8%AD%E5%AE%9A-%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%81%A8%E5%85%B1%E6%9C%89-%E3%82%BF%E3%83%96)を設定できます。この設定では、許可された一連のドメインのみにコラボレーションを制限することも可能です。 許可されたドメインAPIを使用すると、適切な権限を持つアプリケーションは、会社の許可されたドメインをプログラムを使用して追加、取得、および削除できます。 **Source:** [https://ja.developer.box.com/guides/collaborations/allowed-domains/](https://ja.developer.box.com/guides/collaborations/allowed-domains/) --- ### コレクション **Type:** guide | **Category:** コレクション | **Section:** Developer Guides コレクション Boxにおけるコレクションとは、ファイル、フォルダ、およびウェブリンクをすべて1つのフォルダにまとめることなくグループ化する方法です。 APIを介して使用できるコレクションは「お気に入り」コレクションのみです。このコレクションのIDはユーザーごとに異なります。 # コレクション Boxにおけるコレクションとは、ファイル、フォルダ、およびウェブリンクをすべて1つのフォルダにまとめることなくグループ化する方法です。 APIを介して使用できるコレクションは「お気に入り」コレクションのみです。このコレクションのIDは[ユーザーごとに異なります](g://collections/list)。 **Source:** [https://ja.developer.box.com/guides/collections/](https://ja.developer.box.com/guides/collections/) --- ### コレクションからの項目の削除 **Type:** guide | **Category:** コレクション | **Section:** Developer Guides コレクションからの項目の削除 コレクションから項目を削除するには、その特定のタイプの項目に対してPUTエンドポイントを呼び出し、削除するコレクションのIDが含まれていない、コレクションIDのリストを渡します。 API… # コレクションからの項目の削除 コレクションから項目を削除するには、その特定のタイプの項目に対して`PUT`エンドポイントを呼び出し、削除するコレクションのIDが含まれていない、コレクションIDのリストを渡します。 APIを介して使用できるコレクションは「お気に入り」コレクションのみであるため、このコレクションから項目を削除するには、APIにコレクションの空の配列を渡してください。 ## コレクションからのファイルの削除 コレクションからファイルを削除するには、`PUT /files/:id` APIを呼び出し、コレクションIDの空の配列を渡します。 ## コレクションからのフォルダの削除 コレクションからフォルダを削除するには、`PUT /folders/:id` APIを呼び出し、コレクションIDの空の配列を渡します。 ## コレクションからのウェブリンクの削除 コレクションからウェブリンクを削除するには、`PUT /web_links/:id` APIを呼び出し、コレクションIDの空の配列を渡します。 **Source:** [https://ja.developer.box.com/guides/collections/remove/](https://ja.developer.box.com/guides/collections/remove/) --- ### コレクションのフォーク **Type:** quick-start | **Category:** ツール | **Section:** Developer Guides コレクションのフォーク ログインしたら、前の手順でインストールしたPostmanアプリにBox Postmanコレクションをフォークできます。Postmanコレクションをフォークすると、Postman環境としてAPI… # コレクションのフォーク ログインしたら、前の手順でインストールした**Postmanアプリ**に**Box Postmanコレクション**をフォークできます。Postmanコレクションをフォークすると、Postman環境としてAPI資格情報も自動的に読み込まれます。 ## コレクションと環境のフォーク 下のボタンをクリックすると、**Box Postmanコレクション**がPostmanアプリケーションにフォークされます。同時に、**アクセストークン**、**更新トークン**、**クライアントID**、および**クライアントシークレット**もPostman環境に読み込まれます。 Boxでは、Box Postmanコレクションをフォークすることをお勧めします。これにより、BoxがBox Postmanコレクションに変更を加えるたびに、そのコレクションを更新するかどうかが確認されます。このコレクションをコピーすることもできますが、重要な更新を見逃す可能性があります。 ## コレクションの探索 上のボタンをクリックすると、Postmanアプリケーションにコレクションをフォークするよう求められます。インポートが完了すると、このコレクションはアプリ内で左側のサイドバーに表示されます。 コレクションをクリックして開くと、170を超えるAPIエンドポイントを探索できます。 ## まとめ - PostmanコレクションをPostmanにフォークしました - さらにBox Postman環境をPostmanに読み込みました # 前の手順が完了していません 前の手順を完了し、**Boxアプリ**を選択してログインしてください。 # 前の手順が完了していません 前の手順を完了し、**Boxアプリ**を選択してログインしてください。 コレクションのフォークが完了しました **Source:** [https://ja.developer.box.com/guides/tooling/postman/quick-start/load-postman-collection/](https://ja.developer.box.com/guides/tooling/postman/quick-start/load-postman-collection/) --- ### コレクションへの項目の追加 **Type:** guide | **Category:** コレクション | **Section:** Developer Guides コレクションへの項目の追加 コレクションに項目を追加するには、その特定のタイプの項目に対してPUTエンドポイントを呼び出し、コレクションIDのリストを渡します。 APIを介して使用できるコレクションは「お気に入り」コレクションのみです。このコレクションのID… # コレクションへの項目の追加 コレクションに項目を追加するには、その特定のタイプの項目に対して`PUT`エンドポイントを呼び出し、コレクションIDのリストを渡します。 APIを介して使用できるコレクションは「お気に入り」コレクションのみです。このコレクションのIDは[ユーザーごとに異なります](g://collections/list)。 ## コレクションへのファイルの追加 コレクションにファイルを追加するには、`PUT /files/:id` APIを呼び出し、コレクションIDのリストを渡します。 ## コレクションへのフォルダの追加 コレクションにフォルダを追加するには、`PUT /folders/:id` APIを呼び出し、コレクションIDのリストを渡します。 ## コレクションへのウェブリンクの追加 コレクションにウェブリンクを追加するには、`PUT /web_links/:id` APIを呼び出し、コレクションIDのリストを渡します。 **Source:** [https://ja.developer.box.com/guides/collections/add/](https://ja.developer.box.com/guides/collections/add/) --- ### コレクション内の項目のリストの取得 **Type:** guide | **Category:** コレクション | **Section:** Developer Guides コレクション内の項目のリストの取得 フォルダ内のすべてのファイル、フォルダ、およびウェブリンクのリストを取得するには、GET /collections/:id/items APIを呼び出します。 API… # コレクション内の項目のリストの取得 フォルダ内のすべてのファイル、フォルダ、およびウェブリンクのリストを取得するには、[`GET /collections/:id/items`](e://get_collections_id_items) APIを呼び出します。 APIを介して使用できるコレクションは「お気に入り」コレクションのみです。このコレクションのIDは[ユーザーごとに異なります](g://collections/list)。 **Source:** [https://ja.developer.box.com/guides/collections/list-items/](https://ja.developer.box.com/guides/collections/list-items/) --- ### コンテンツアップローダー **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides コンテンツアップローダー Box Content Uploader UI Element… # コンテンツアップローダー Box Content Uploader UI Elementを使用すると、開発者は、デスクトップまたはモバイルウェブアプリにアップロードウィジェットを埋め込むことができます。ユーザーはファイルを選択するかドラッグアンドドロップしてアップロードできます。サイズの大きなファイルのアップロードには、[分割アップロード](e://post-files-upload-sessions)APIを使用します。 ## インストール NPMまたはBox CDN経由でBox UI Elementsをインストールする方法は、[こちら](g://embed/ui-elements/installation)を参照してください。 ## 認証 UI Elementは認証に依存しない方法で設計されているため、Boxアカウントを持つユーザー (管理対象ユーザー) とBox以外のアカウントを持つユーザー (App User) のどちらにUI Elementを使用するかどうかに関係なく、UI Elementを使用するのに特別な設定は必要ありません。その理由は、UI Elementは認証のために「トークン」を受け取ることのみを予期しており、Boxにはトークンの生成方法としてOAuthとJWTの2つがあるからです。 認証方法の選択について確認する ## デモ ### Uploader ### ポップアップ形式のアップローダー # アクセストークン 上記のデモは、有効なアクセストークンを指定しなければ、完全に動作しない可能性があります。テスト目的の場合は、一時的な開発者トークンを使用できます。このトークンは、デモにある [JS] タブで更新する必要があります。 ## API ``` const { ContentUploader } = Box; const uploader = new ContentUploader(); /** * Shows the content uploader. * * @public * @param {String} folderId - Folder ID to upload to. * @param {String} accessToken - Box API access token. * @param {Object|void} [options] - Optional options. * @return {void} */ uploader.show(folderId, accessToken, options); /** * Hides and clears HTML for the uploader. * * @public * @return {void} */ uploader.hide(); /** * Adds an event listener to the content uploader. * Listeners should be added before calling show() * so no events are missed. * * @public * @param {String} eventName Name of the event. * @param {Function} listener Callback function. * @return {void} */ uploader.addListener(eventName, listener); /** * Removes an event listener from the content uploader. * * @public * @param {String} eventName Name of the event. * @param {Function} listener Callback function. * @return {void} */ uploader.removeListener(eventName, listener); /** * Removes all event listeners from the content uploader. * * @public * @return {void} */ uploader.removeAllListeners(); ``` ### パラメータ | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | String | BoxフォルダのID。アップロードするファイルが含まれているフォルダのIDです。Boxの [すべてのファイル] フォルダを使用する場合は、folderIdとして0を使用します。 | | accessToken | String | 使用するBox APIアクセストークン。このトークンには、上記のフォルダに対するアップロード権限が必要です。 | | options | Object | 省略可能なオプション。詳細については、以下を参照してください。 | ### オプション | パラメータ | 型 | デフォルト | 説明 | | --- | --- | --- | --- | | container | String | document.body | コンテンツアップローダーが配置されるコンテナのCSSセレクタ。hide()を呼び出すと、このコンテナは空になります。 | | sharedLink | String | | 共有リンクのURL。フォルダが共有されており、アクセストークンがファイルの所有者またはコラボレータに属していない場合は必須です。 | | sharedLinkPassword | String | | 共有リンクのパスワード。共有リンクにパスワードが設定されている場合は必須です。 | | onClose | Function | | アップロードするファイルがない場合やすべてのアップロードが完了している場合に表示される [閉じる] ボタンのコールバック関数。このオプションをnullに設定すると、このボタンは表示されません。 | | modal | Object | | ウィンドウ属性を指定すると、コンテンツアップローダーは所定の位置に作成されません。代わりに、コンテナ内にボタンが作成され、そのボタンをクリックすると、ウィンドウポップアップでコンテンツアップローダーが起動します。ウィンドウオプションについては、以下を参照してください。 | | size | String | undefined | コンテンツアップローダーがコンテナの幅の大小に合わせて表示されるように示します。値には空白か、smallまたはlargeを指定できます。空白にした場合、UI Elementはそのコンテナに合わせて調整され、自動でsmallの幅とlargeの幅が切り替わります。 | | isTouch | Boolean | デフォルトでは、ブラウザとデバイスのデフォルトのタッチサポートが設定されます。 | コンテンツエクスプローラがタッチ対応デバイスにレンダリングされることを示します。 | | fileLimit | Number | 100 | 一度にアップロードできるファイルの最大数。fileLimitを超えるファイルをアップロードのために選択した場合、最初のfileLimitを超えるファイルはアップロードに含まれません。この状況が発生した場合、フッターに警告メッセージが表示されます。 | | requestInterceptor | Function | | リクエストをインターセプトする関数。例については、このCodePenを参照してください。基盤となるXHRライブラリはaxios.jsで、インターセプタでは同様のアプローチに従っています。 | | responseInterceptor | Function | | レスポンスをインターセプトする関数。例については、このCodePenを参照してください。基盤となるXHRライブラリはaxios.jsで、インターセプタでは同様のアプローチに従っています。 | ### ウィンドウオプション | パラメータ | 型 | デフォルト | 説明 | | --- | --- | --- | --- | | buttonLabel | String | | ボタンのラベル | | buttonClassName | String | Boxの青いボタン | ボタンを装飾するためのCSSクラス | | modalClassName | String | | ウィンドウポップアップコンテンツを装飾するためのCSSクラス | | overlayClassName | String | | ウィンドウポップアップオーバーレイを装飾するためのCSSクラス | ### イベント | イベント名 | イベントデータ | 説明 | | --- | --- | --- | | close | | [閉じる] ボタンがクリックされたときに発生します。 | | complete | Array<File> | 現在のビューにあるアップロードがすべて完了したときに発生します。イベントデータはファイルオブジェクトの配列になります。 | | upload | ファイル | 1つのファイルが正常にアップロードされたときに発生します。イベントデータはファイルオブジェクトになります。 | | error | Object | 1つのファイルでアップロードエラーが生じたときに発生します。イベントデータはFile Web APIのプロパティファイルとエラーオブジェクトのエラーを含むオブジェクトになります。 | ## スコープ アプリケーションで、エンドユーザーがコンテンツアップローダー機能のサブセットのみにアクセスできるようにする必要がある場合は、[ダウンスコープ](guide://authentication/tokens/downscope)を使用して、アクセストークンを適切にダウンスコープして必要な権限のセットを含むトークンを生成し、コンテンツアップローダーを初期化するエンドユーザークライアントに安全に渡すことができます。 以下は、ダウンスコープと一緒に使用する、UI Element固有の新しいスコープのセットです。こうしたスコープにより、開発者は、ダウンスコープされたトークンに適切なスコープを構成して、コンテンツアップローダーのUIコントロールを有効/無効にすることができます。詳細については、[Box UI Elementsの専用スコープ](guide://api-calls/permissions-and-errors/scopes)を参照してください。 ### 基本スコープ | スコープ名 | 付与される権限 | | --- | --- | | base_upload | トークン交換リクエストの「resource」で指定されたフォルダへのアップロードを許可します。 | ### サンプルのシナリオ | シナリオ | スコープ | | --- | --- | | ユーザーがファイルをBoxフォルダにアップロードする | base_upload | **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/uploader/](https://ja.developer.box.com/guides/embed/ui-elements/uploader/) --- ### コンテンツエクスプローラ **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides コンテンツエクスプローラ Box Content Explorer UI Elementを使用すると、開発者は、Boxに保存されているコンテンツのフォルダビューをデスクトップまたはモバイルウェブアプリに埋め込むことができます。ライブラリはBox API… # コンテンツエクスプローラ Box Content Explorer UI Elementを使用すると、開発者は、Boxに保存されているコンテンツのフォルダビューをデスクトップまたはモバイルウェブアプリに埋め込むことができます。ライブラリはBox APIを介して指定されたフォルダに関する情報を取得した後、メインのBoxウェブアプリと同様にそのコンテンツをフォルダビューにレンダリングします。ユーザーは、そのフォルダ階層内を移動し、名前の変更、削除、共有などのファイル操作を実行できます。 コンテンツエクスプローラで、[メタデータビュー](g://embed/ui-elements/explorer-metadata-v2)を使用できるようになりました。このビューでは、メタデータクエリを使用して、メタデータに基づいてファイルやフォルダを検索できます。データは埋め込みのビューに表示されます。 ## インストール NPMまたはBox CDN経由でBox UI Elementsをインストールする方法は、[こちら](g://embed/ui-elements/installation)を参照してください。 ## 認証 UI Elementは認証に依存しない方法で設計されているため、Boxアカウントを持つユーザー (管理対象ユーザー) とBox以外のアカウントを持つユーザー (App User) のどちらにUI Elementを使用するかどうかに関係なく、UI Elementを使用するのに特別な設定は必要ありません。その理由は、UI Elementは認証のために「トークン」を受け取ることのみを予期しており、Boxにはトークンの生成方法としてOAuthとJWTの2つがあるからです。 認証方法の選択について確認する ## サンプルHTML ``` <!DOCTYPE html> <html lang="en-US"> <head> <meta charset="utf-8" /> <title>Box Content Explorer Demo</title> <!-- Latest version of the explorer css for your locale --> <link rel="stylesheet" href="https://cdn01.boxcdn.net/platform/elements/{VERSION}/en-US/explorer.css" /> </head> <body> <div class="container" style="height:600px"></div> <!-- Latest version of the explorer js for your locale --> <script src="https://cdn01.boxcdn.net/platform/elements/{VERSION}/en-US/explorer.js"></script> <script> var folderId = "123"; var accessToken = "abc"; var contentExplorer = new Box.ContentExplorer(); contentExplorer.show(folderId, accessToken, { container: ".container", }); </script> </body> </html> ``` ## デモ ## API ``` const { ContentExplorer } = Box; const contentExplorer = new ContentExplorer(); /** * Shows the content explorer. * * @param {string} folderId - The root folder id * @param {string} accessToken - Box API access token * @param {Object} [options] - Options * @return {void} */ contentExplorer.show(folderId, accessToken, options); /** * Hides the content explorer, removes all event listeners, and clears out the * HTML. * * @return {void} */ contentExplorer.hide(); /** * Clears out the internal in-memory * cache for the content explorer forcing * re-load of items via the API. * * @public * @return {void} */ contentExplorer.clearCache(); /** * Adds an event listener to the content explorer. Listeners should be added * before calling show() so no events are missed. * * @param {string} eventName - Name of the event * @param {Function} listener - Callback function * @return {void} */ contentExplorer.addListener(eventName, listener); /** * Removes an event listener from the content explorer. * * @param {string} eventName - Name of the event * @param {Function} listener - Callback function * @return {void} */ contentExplorer.removeListener(eventName, listener); /** * Removes all event listeners from the content explorer. * * @return {void} */ contentExplorer.removeAllListeners(); ``` ### パラメータ | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | String | BoxフォルダのID。中を移動するフォルダのIDになります。Boxの [すべてのファイル] フォルダを使用する場合は、folderIdとして0を使用します。 | | accessToken | String | 使用するBox APIアクセストークン。このトークンには、上記のフォルダに対する読み取り/書き込みアクセス権限が必要です。このトークンのために渡される値は、エクスプローラの表示中は有効期限切れにならないことが前提となっています。 | | options | Object | 省略可能なオプション。詳細は以下を参照してください。たとえば、contentExplorer.show(FOLDER_ID, TOKEN, {canDelete: false})を使用すると、削除オプションが非表示になります。 | ### オプション | パラメータ | 型 | デフォルト | 説明 | | --- | --- | --- | --- | | container | String | document.body | コンテンツエクスプローラが配置されるコンテナのCSSセレクタ。hide() を呼び出すと、このコンテナは空になります。 | | sortBy | String | name | コンテンツリストの最初の並べ替え基準オプション。値はid、name、dateまたはsizeになります。 | | sortDirection | String | ASC | コンテンツリストの最初の並べ替え方向オプション。値はASCまたはDESCになります。 | | logoUrl | String | | ヘッダーに表示するカスタムロゴのURL。この値が「box」という文字列の場合は、Boxのロゴが表示されます。 | | canPreview | Boolean | true | このオプションがtrueに設定されていて、ファイルに対するcan_preview権限がtrueの場合、コンテンツエクスプローラでファイルをクリックできます。ファイルをクリックするとそのファイルのプレビューが開始されます。ファイルに対する権限can_previewがfalseに設定されている場合、このオプションによる効果はありません。このオプションは、プレビュー可能なファイルのみに適用できます。 | | canDownload | Boolean | true | これをfalseに設定すると、ダウンロードオプションが非表示になります。このオプションを非表示にするだけではダウンロードを防ぐことはできず、ファイルに対する権限でもcan_downloadをfalseに設定する必要があります。ファイルに対する権限can_downloadがfalseに設定されている場合、このオプションによる効果はありません。このオプションは、ファイルのみに適用できます。 | | canDelete | Boolean | true | これをfalseに設定すると、削除オプションが非表示になります。このオプションを非表示にするだけでは削除を防ぐことはできず、項目に対する権限でもcan_deleteをfalseに設定する必要があります。項目に対する権限can_deleteがfalseに設定されている場合、このオプションによる効果はありません。 | | canRename | Boolean | true | これをfalseに設定すると、名前の変更オプションが非表示になります。このオプションを非表示にするだけでは名前の変更を防ぐことはできず、項目に対する権限でもcan_renameをfalseに設定する必要があります。 | | canUpload | Boolean | true | これをfalseに設定すると、アップロードオプションが非表示になります。このオプションを非表示にするだけではアップロードを防ぐことはできず、現在のフォルダに対する権限でもcan_uploadをfalseに設定する必要があります。フォルダに対する権限can_uploadがfalseに設定されている場合、このオプションによる効果はありません。 | | canCreateNewFolder | Boolean | true | フォルダの新規作成オプションが非表示になります。このオプションを非表示にするだけではフォルダの新規作成を防ぐことはできず、フォルダ項目に対する権限でもcan_uploadをfalseに設定する必要があります。フォルダ項目に対する権限can_uploadがfalseに設定されている場合、このオプションによる効果はありません。 | | canShare | Boolean | true | falseに設定すると、共有ボタンが非表示になります。このボタンを非表示にするだけでは共有を防ぐことはできず、項目のpermissionsでもcan_shareをfalseに設定する必要があります。項目に対する権限can_shareがfalseに設定されている場合、このオプションによる効果はありません。 | | canSetShareAccess | Boolean | true | falseに設定すると、共有権限の変更を許可する共有ドロップダウン選択が非表示になります。この選択のドロップダウンを非表示にするだけでは共有権限の変更を防ぐことはできず、項目に対する権限でもcan_set_share_accessをfalseに設定する必要があります。項目に対する権限can_set_share_accessがfalseに設定されている場合、このオプションによる効果はありません。 | | sharedLink | String | | 共有リンクのURL。フォルダが共有されており、アクセストークンがファイルの所有者またはコラボレータに属していない場合は必須です。 | | sharedLinkPassword | String | | 共有リンクのパスワード。共有リンクにパスワードが設定されている場合は必須です。 | | size | String | undefined | コンテンツエクスプローラがコンテナの幅の大小に合わせて表示されるように示します。値には空白か、smallまたはlargeを指定できます。空白にした場合、UI Elementはそのコンテナに合わせて調整され、自動でsmallの幅とlargeの幅が切り替わります。 | | isTouch | Boolean | デフォルトでは、ブラウザとデバイスのデフォルトのタッチサポートが設定されます。 | コンテンツエクスプローラがタッチ対応デバイスにレンダリングされることを示します。 | | autoFocus | Boolean | false | trueに設定すると、初回読み込み時に項目グリッドに焦点が当てられます。 | | defaultView | String | files | 値はfiles、recents、またはmetadataになります。recentsに設定すると、デフォルトで、通常のファイル/フォルダ構造ではなく、最近使用した項目が表示されます。コンテンツエクスプローラでメタデータビューを表示するには、metadataを指定する必要があります。指定しない場合、通常のフォルダビューが表示されます。 | | requestInterceptor | Function | | リクエストをインターセプトする関数。例については、このCodePenを参照してください。基盤となるXHRライブラリはaxios.jsで、インターセプタでは同様のアプローチに従っています。 | | responseInterceptor | Function | | レスポンスをインターセプトする関数。例については、このCodePenを参照してください。基盤となるXHRライブラリはaxios.jsで、インターセプタでは同様のアプローチに従っています。 | | ContentOpenWithProps | Object | { show: false } | エクスプローラからプレビューする際にOpen With Elementを表示できます。 | | token | String | | 開発者コンソールで生成された開発者トークン。 | | metadataQuery | Object | | メタデータビューの情報を取得するために使用されるメタデータクエリ。 | | rootFolderID | String | | メタデータテンプレートが適用されているフォルダのID。metadataQueryはこのフォルダに適用されます。 | | fieldsToShow | Object | | 表示するメタデータフィールド/列 - メタデータテンプレートの有効なフィールド名を指定する必要があります。 | ### イベント | イベント名 | イベントデータ | 説明 | | --- | --- | --- | | select | Array<File | Web Link | Folder> | 項目行が選択されたときに発生します。 | | rename | File | Web Link | Folder | 項目の名前が変更されたときに発生します。 | | preview | File | ファイルがプレビューされたときに発生します。 | | download | Array<File> | 項目がダウンロードされたときに発生します。 | | delete | Array<File> | 項目が削除されたときに発生します。 | | upload | Array<File> | 項目がアップロードされたときに発生します。 | | navigate | Folder | フォルダ内に移動したときに発生します。 | | create | Folder | 新しいフォルダが作成されたときに発生します。 | ## キーボードショートカット クリックによって手動で、またはJavaScriptや上記の`autoFocus`プロパティによってプログラムで項目グリッドがフォーカスされていると、以下のキーボードショットカットが機能します (対応する操作が適切で許可されている場合)。 | キー | 動作 | | --- | --- | | Arrow Up | 前の項目行 | | Arrow Down | 次の項目行 | | Ctrl/Cmd + Arrow Up | 最初の項目行 | | Ctrl/Cmd + Arrow Down | 最後の項目行 | | / | 検索 | | Shift + X | 項目行を選択 | | Delete | 選択した項目を削除 | | Enter | 選択した項目を開く | | Shift + R | 選択した項目の名前を変更 | | Shift + S | 選択した項目を共有 | | Shift + D | 選択した項目をダウンロード | | g then f | ルートフォルダに移動 | | g then u | 現在のフォルダにアップロード | | g then b | ルートフォルダの階層リンクをフォーカス | | g then r | 最近使用した項目 | ## スコープ アプリケーションで、エンドユーザーがコンテンツエクスプローラ機能のサブセットのみにアクセスできるようにする必要がある場合は、[ダウンスコープ](guide://authentication/tokens/downscope)を使用して、アクセストークンを適切にダウンスコープして必要な権限のセットを含むトークンを生成し、コンテンツエクスプローラを初期化するエンドユーザークライアントに安全に渡すことができます。 以下は、ダウンスコープと一緒に使用する、UI Element固有の新しいスコープのセットです。こうしたスコープにより、開発者は、ダウンスコープされたトークンに適切なスコープを構成して、コンテンツエクスプローラのUIコントロールを有効/無効にすることができます。詳細については、[Box UI Elementsの専用スコープ](guide://api-calls/permissions-and-errors/scopes)を参照してください。 ### 基本スコープ | スコープ名 | 付与される権限 | | --- | --- | | base_explorer | ユーザー/ファイル/トークンの権限に基づいて、フォルダツリー内のコンテンツへのアクセスを許可します。 | ### 機能のスコープ | スコープ名 | 付与される権限 | | --- | --- | | item_preview | ユーザーがクリックしたときにファイルのプレビューを自動的に有効にします (プレビューUI Elementを参照する必要があります)。 | | item_download | ファイル/フォルダのコンテンツのダウンロードを許可します。 | | item_rename | ファイル/フォルダの名前変更を許可します。 | | item_share | ダウンスコープリクエストの「resource」で指定されたリソースの共有を許可します。 | | item_delete | ファイル/フォルダの削除を許可します。 | ### サンプルのシナリオ | シナリオ | スコープ | | --- | --- | | ユーザーがフォルダ構造内を移動する (基本機能) | base_explorer | | ユーザーが基本機能とプレビューを必要とする | base_explorer + item_preview | | ユーザーが基本機能、プレビュー、およびダウンロードを必要とする | base_explorer + item_preview + item_download | | ユーザーが基本機能、プレビュー、ダウンロード、およびファイル/フォルダ名の変更を必要とする | base_explorer + item_preview + item_download + item_rename | | ユーザーがすべての機能 (基本、プレビュー、ダウンロード、名前の変更、共有、アップロード、および削除) を必要とする | base_explorer + item_preview + item_download + item_rename + item_delete + item_share + item_upload | ## カスタム操作 コンテンツエクスプローラとContent Pickerでは、ファイルやフォルダの [**その他のオプション**] メニューの操作を拡張できます。カスタムオプションは、ユーザーが省略記号ボタンをクリックすると表示されます。 [**その他のオプション**] メニューをカスタマイズするには、カスタム操作の配列を`itemActions`に渡します。 ``` contentExplorer.show(configData.FOLDER_ID, configData.ACCESS_TOKEN, { container: ".container", itemActions: customActions, }); ``` この配列には、複数の操作を含めることができます。操作オブジェクトには、`label`および`onAction`コールバック関数を含める必要があります。`file`または`folder`の値を渡すことで、特定の項目の`type`のみに表示されるようカスタム操作にフィルタをかけることができます。`filter`値は、特定のファイル拡張子など、高度なフィルタに使用します。 ``` const customActions = [ { label: "Preview in New Window", onAction: (item) => alert('action ' + item), type: 'file', }, { label: "Open in Box.com", onAction: (item) => window.open("https://app.box.com"), }, { label: "Export", onAction: (item) => console.log('action ' + item), filter: (item) => item.extension?.toLowerCase() === 'pdf', } ]; ``` CodePenで実装例を確認してください。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/explorer/](https://ja.developer.box.com/guides/embed/ui-elements/explorer/) --- ### コンテンツエクスプローラ - メタデータビューv1 **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides コンテンツエクスプローラ - メタデータビューv1 コンテンツエクスプローラのメタデータビューのv1は公式サポートが終了しました。v1は24.0.… # コンテンツエクスプローラ - メタデータビューv1 コンテンツエクスプローラのメタデータビューの`v1`は公式サポートが終了しました。`v1`は`24.0.0`パッケージで引き続き利用できますが、バグ修正や新機能は提供されなくなります。最新の機能が提供されるようにするには、移行ガイドに従い、コンテンツエクスプローラの`v2`のメタデータビューに切り替えてください。 コンテンツエクスプローラを使用すると、メタデータに基づいてファイルおよびフォルダを表示できます。メタデータビューでは、[メタデータテンプレート](r://get-metadata-templates-id)と[メタデータクエリ](g://metadata/queries)を使用して、表示するデータを探します。 ## 前提条件 - [コンテンツエクスプローラ](g://embed/ui-elements/explorer)ガイドを読む。 - [メタデータの用語](g://metadata/#metadata-terminology)を確認する。 - [メタデータクエリ](g://metadata/queries)に関する情報を確認する。 ## アプリの作成と構成 1. [Boxアプリを作成します](g://applications/app-types)。 [CORSドメイン] にローカルでの開発用のアドレスを追加します。 2. [開発者トークン](g://authentication/tokens/developer-tokens)を生成します。 ## メタデータテンプレートの作成 次の手順では、メタデータテンプレートを作成します。 1. [メタデータAPI](g://metadata/templates/create)または[管理コンソール](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates)を使用してテンプレートを作成します。 2. すでに作成済みのテンプレートをBoxフォルダに適用します。必ずカスケードポリシーを有効にするようにしてください。詳細な手順については、[テンプレートのカスタマイズと適用の手順](https://support.box.com/hc/en-us/articles/360044196173-Using-Metadata)を参照してください。 メタデータテンプレートは、ファイルにも適用できます。 ### 表示名と主なパラメータ - `displayName`パラメータは、管理コンソールに表示されるテンプレートの表示名です。 - `templateKey`パラメータは、テンプレートの一意の識別子です。これは、メタデータテンプレート作成の対象となる企業全体で一意である必要があります。`templateKey`パラメータを指定しなかった場合は、APIによって、`displayName`の値を基に一意の識別子が作成されます。 - `[fields].displayName`パラメータは、ウェブアプリおよびモバイルアプリでユーザーに表示されるフィールドの表示名です。 - `[fields].key`パラメータは、テンプレート内の特定のフィールドの一意の識別子です。この識別子は、そのフィールドが属するテンプレート内で一意である必要があります。 ## メタデータビューの表示 次に、コンテンツエクスプローラに渡される必須のプロパティを入力します。作業を簡単にするために、基本的なReactアプリに基づいた[サンプルプロジェクト](https://github.com/box-community/content-explorer-metadata/tree/main)を使用して、メタデータビューを起動できます。 1. メタデータのサンプルプロジェクトを複製します。 2. [`App.js`](https://github.com/box-community/content-explorer-metadata/blob/main/src/App.js)内のプレースホルダを実際の値で更新します。 | パラメータ | 説明 | | --- | --- | | DEVELOPER_TOKEN | 開発者コンソールで生成された開発者トークン。 | | ENTERPRISE_ID | Boxアプリケーションの [一般設定] タブからコピーしたEnterprise ID。 | | METADATA_TEMPLATE_NAME | 作成済みのメタデータテンプレートのtemplateKey。注: 適切な名前を指定済みであることを確認するには、メタデータAPIを使用して名前を取得するか、管理コンソールでURLから名前をコピーします。 UIでテンプレート名を変更しても、変更されるのは表示名のみです。コンポーネントで使用する名前は、常に最初に指定した名前になります。 | | METADATA_SOURCE | メタデータのソース。これは、スコープ、Enterprise ID、メタデータキーを組み合わせた文字列です。 | | ROOTFOLDER_ID | メタデータクエリを適用してフィルタがかけられたファイルを表示するBoxフォルダのID。 | `defaultView`、`fieldsToShow`、`metadataQuery`の各パラメータは、すでにサンプルプロジェクトで定義されています。これらのパラメータの例は、サンプルプロジェクトで確認できます。 | パラメータ | 説明 | | --- | --- | | defaultView | メタデータビューを描画するための必須プロパティ。指定されていない場合は、通常のファイルビューが表示されます。 | | fieldsToShow | コンテンツエクスプローラに表示する特定のメタデータ列を追加または非表示にします。 | | metadataQuery | ファイルやフォルダに設定されているメタデータを検索してそのファイルやフォルダを探す方法を指定します。メタデータクエリの詳細については、こちらのガイドを参照してください。 | 1. コンテンツエクスプローラコンポーネントに必須パラメータを渡します。 コンテンツエクスプローラのメタデータビューを含むReactコンポーネントのサンプルコードは次のようになります。 ``` function App() { const token = "<DEVELOPER_TOKEN>"; const rootFolderID = "<ROOTFOLDER_ID>"; const EID = "<ENTERPRISE_ID>"; const templateName = "<METADATA_TEMPLATE_NAME>"; const metadataSource = `enterprise_${EID}.${templateName}`; const metadataSourceFieldName = `metadata.${metadataSource}`; const metadataQuery = { from: metadataSource, query: "key = :arg1", query_params: { arg1: "value" }, ancestor_folder_id: 0, fields: [ `${metadataSourceFieldName}.name`, `${metadataSourceFieldName}.last_contacted_at`, `${metadataSourceFieldName}.industry`, `${metadataSourceFieldName}.role`, ], }; const fieldsToShow = [ // canEdit propetry determines if the user can edit the metadata directly from Content Explorer component { key: `${metadataSourceFieldName}.name`, canEdit: false }, // displayName alows to change the label on metadata column { key: `${metadataSourceFieldName}.industry`, canEdit: false, displayName: "alias" }, { key: `${metadataSourceFieldName}.last_contacted_at`, canEdit: true }, { key: `${metadataSourceFieldName}.role`, canEdit: true }, ]; const defaultView = "metadata"; return ( <IntlProvider locale="en"> <div className="App"> <header className="App-header"> <h2>Metadata view in Content Explorer</h2> </header> <section> <div className="metadata-based-view"> <ContentExplorer rootFolderId={rootFolderID} token={token} metadataQuery={metadataQuery} fieldsToShow={fieldsToShow} defaultView={defaultView} /> </div> </section> </div> </IntlProvider> ); } export default App; ``` ## メタデータキー 表示するフィールドを決定するには、コンテンツエクスプローラで、[表示名](e://post-metadata-templates-schema/#param-fields-displayName)ではなく、メタデータの[フィールドキー](e://post-metadata-templates-schema/#param-fields-key)を使用します。表示名は管理コンソールやユーザービューで確認できる一方、フィールドキーはAPIを使用して取得できます。 フィールドキーは、メタデータの表示名を変更した場合でも変わりません。これにより、UIビューでメタデータが変更されても、この機能は正常に動作します。 ### メタデータキーのサニタイズ [キー](e://post-metadata-templates-schema/#param-fields-key)は、英数字のみに制限されています。 - ハイフン`-`とアンダースコア`_`は許可されていません。 - 許可されているのは文字 (`a-z, A-Z`) と数字 (`0-9`) のみです。 **ラテン語以外の文字:** キーにラテン語以外のアルファベット (キリル文字、アラビア語、中国語など) が含まれている場合、それらは自動的に共通識別子に変更されます。 - 最初に出現した文字は`field` - それ以降出現した文字は`field1`、`field2`と続く キーは、表示名に基づいています。 **ヒント**: 詳細なフローについては、[メタデータビューに関するブログ記事](https://medium.com/box-developer-blog/metadata-view-in-box-content-explorer-4978e47e97e9)を参照してください。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/explorer-metadata-v1/](https://ja.developer.box.com/guides/embed/ui-elements/explorer-metadata-v1/) --- ### コンテンツエクスプローラ – メタデータビューv2 **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides コンテンツエクスプローラ – メタデータビューv2 コンテンツエクスプローラのメタデータビューを使用すると、メタデータに基づいてファイルやフォルダを表示できます。 概要 メタデータビューv2は、Box Content Explorer UI Element… # コンテンツエクスプローラ – メタデータビューv2 [コンテンツエクスプローラ](g://embed/ui-elements/explorer/)のメタデータビューを使用すると、メタデータに基づいてファイルやフォルダを表示できます。 ## 概要 メタデータビュー`v2`は、Box Content Explorer UI Elementの元のメタデータビューのデザインを根本から変更したもので、メタデータ駆動型ワークフローに合わせて合理化されたインターフェースが導入されています。主な機能には、メタデータフィールドのタイプごとに専用のUIを備えたフィルタおよび編集用のインターフェース、リストビューとグリッドビューを使用した柔軟な表示オプション、ページネーションのサポートなどがあります。 ## 前提条件 コンテンツエクスプローラのメタデータビュー`v2`を実装する前に、以下を準備できていることを確認してください。 - `box-ui-elements`パッケージ`v24.0.0`以上、React `v18.0.0`、`Node.js` `v18.0.0`以上 - 適切なCORS設定を含むBox Platformアプリ - 有効な[開発者トークン](g://authentication/tokens/developer-tokens/) - 対象のフォルダまたはファイルに適用されている構成済みのメタデータテンプレート。[APIを使用したテンプレートの作成](g://metadata/templates/create)または[管理コンソールを使用したテンプレートの作成](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates)を確認してください。 必ずカスケードポリシーを有効にするようにしてください。詳細な手順については、[テンプレートのカスタマイズと適用の手順](https://support.box.com/hc/en-us/articles/360044196173-Using-Metadata)を参照してください。 ## インターフェースの領域 メタデータビューのインターフェースは、以下の領域で構成されています。 - **ヘッダー** – 現在のビューのタイトル、ナビゲーション、コンテキストに応じた情報 (選択数など) が表示されます。ヘッダーの値は、`title`プロパティで指定できます。定義されていない場合は、デフォルトで、`ancestor_folder_id`で指定されているフォルダ名に設定されます。 - **操作バー** – 各メタデータフィールドのフィルタチップ、並べ替えオプション、表示モードの切り替えボタン (リストまたはグリッド) が含まれています。 - **ページネーションのフッター** – [**前へ**] および [**次へ**] ナビゲーションボタンとページインジケータが提供されます。 ## メタデータビューの表示 コンテンツエクスプローラのメタデータビューを表示するには、以下のプロパティが必要です。 | プロパティ | 説明 | | --- | --- | | token | 開発者コンソールで生成された開発者トークン。 | | title | コンポーネント全体のタイトル。定義されていない場合は、デフォルトで、ancestor_folder_idで指定されているフォルダ名が設定されます。 | | defaultView | metadataに設定する必要があります。 | | features.contentExplorer.metadataViewV2 | メタデータビュー (v2) を有効にするには、trueに設定する必要があります。 | | metadataQuery | メタデータクエリAPIのスキーマに一致するメタデータクエリのリクエスト本文。 | | metadataViewProps | コンポーネントの構成。構成の詳細については、metadataViewPropsオブジェクトを参照してください。 | | columns | メタデータテーブルの列の構造と動作を定義します。詳細については、列を参照してください。 | ニーズや設定に応じて、Box UI Elementsは、Vanilla JavaScriptまたはReactとともに使用できます。インストールの詳細については、[インストール](g://embed/ui-elements/installation)ガイドを参照してください。 **大文字で記述された文字列は、カスタム値に置き換える必要があります。** ### Vanilla JavaScriptのコードスニペット ``` const contentExplorer = new Box.ContentExplorer(); contentExplorer.show(FOLDER_ID, ACCESS_TOKEN, { container: ".container", defaultView: "metadata", // metadataQuery must match the query files/folders by metadata API body request: // <https://developer.box.com/reference/post-metadata-queries-execute-read/> metadataQuery: { from: "METADATA_SCOPE.TEMPLATE_KEY", // For example from: "enterprise_123456789.templatename" where the number is the enterprise_123456789 is metadata template scope) ancestor_folder_id: "FOLDER_ID" // Metadata fields and values pulled to the component fields: [ "metadata.TEMPLATE_SCOPE.TEMPLATE_KEY.FIELD_KEY1", "metadata.TEMPLATE_SCOPE.TEMPLATE_KEY.FIELD_KEY2", "metadata.TEMPLATE_SCOPE.TEMPLATE_KEY.FIELD_KEY3", // For example "metadata.enterprise_123456789.templatename.date" ... ] // Optional for filtering data with specific metadata value query: "METADATA_FIELD_KEY = :arg1", query_params: { arg1: "METADATA_FIELD_VALUE" }, }, features: { contentExplorer: { metadataViewV2: true, // Required for enabling V2 }, }, // NEW dynamic column configuration metadataViewProps: { columns // Required - for details see section below ... } }); ``` ### Reactのコードスニペット ``` import React from 'react'; import { IntlProvider } from 'react-intl'; import ContentExplorer from "box-ui-elements/es/elements/content-explorer" // Fill with custom values of your metadata template // You can use this endpoint to get all needed values: https://developer.box.com/reference/get-metadata-templates-id-id-schema/ const metadataScopeAndKey = `${METADATA_TEMPLATE_SCOPE}.${METADATA_TEMPLATE_KEY}`; const metadataFieldNamePrefix = `metadata.${metadataScopeAndKey}`; const folderID = "FOLDER_ID" const metadataQuery = {    // Check this endpoint for more details on query structure:    // https://developer.box.com/reference/post-metadata-queries-execute-read/    from: metadataScopeAndKey,    ancestor_folder_id: folderID,    fields: [       "metadata.METADATA_SCOPE.TEMPLATE_KEY.METADATA_FIELD_KEY1",       "metadata.METADATA_SCOPE.TEMPLATE_KEY.METADATA_FIELD_KEY2",  // For example "metadata.enterprise_123456789.templatename.date"       ...    ] }; // Required - for details see section below const columns = [    {       textValue: "METADATA_FIELD_DISPLAY_NAME1", // or our your custom value       id: `${metadataFieldNamePrefix}.${METADATA_FIELD_KEY1}`,       type: field.type,       allowsSorting: true,       minWidth: 150,       maxWidth: 150,    },    {       textValue: "METADATA_FIELD_DISPLAY_NAME2", // or our your custom value       id: `${metadataFieldNamePrefix}.${METADATA_FIELD_KEY2}`,       type: field.type,       allowsSorting: true,       minWidth: 150,       maxWidth: 150,    },    ... ]; const componentProps = {  features: {    contentExplorer: {        metadataViewV2: true,    },  },  metadataQuery,  metadataViewProps: {    columns  }, }; const ContentExplorerContainer = () => {  const { features, metadataQuery, metadataViewProps } = componentProps;  // Store token in a secure way  return (    <IntlProvider locale="en">      <ContentExplorer        token={TOKEN}        defaultView="metadata"        features={features}        metadataQuery={metadataQuery}        metadataViewProps={metadataViewProps}      />    </IntlProvider>  ); }; export default ContentExplorerContainer; ``` ## 列 列プロパティでは、メタデータテーブルの列の構造と動作を定義します。 | プロパティ | 型 | 必須 | 説明 | | --- | --- | --- | --- | | id | string | はい | 次の形式のメタデータフィールド識別子: metadata.<scope>.<templateKey>.<field> | | textValue | string | はい | 列ヘッダーの表示名。 | | type | string | はい | Boxメタデータフィールドのタイプ (string、number、date、singleSelect、multiSelect)。 | | allowsSorting | boolean | いいえ | 列ヘッダーの並べ替えを有効にします。 | | minWidth | number | いいえ | 列の幅の最小値 (ピクセル単位)。 | | maxWidth | number | いいえ | 列の幅の最大値 (ピクセル単位)。 | ## 機能 ### 行の選択の有効化 個々の行の選択を有効化できます。1行以上が選択されると、ヘッダーが更新され、選択記述子とメタデータ編集ボタンが表示されます。これにより、ユーザーは、単一の操作または一括操作を実行できます。行の選択の範囲は、ページ割りされたコンテンツに限定されます。 選択機能を有効にするには、`metadataViewProps`オブジェクト内で`isSelectionEnabled`プロパティを`true`に設定します。 ``` const contentExplorer = new Box.ContentExplorer(); contentExplorer.show(FOLDER_ID, ACCESS_TOKEN, {  ...  metadataViewProps: {    columns,    isSelectionEnabled: true  }, }); ``` ### メタデータ値の編集 1つ以上の項目が選択されると、コンポーネントのヘッダーには、選択した数が表示され、[**メタデータ**] ボタンがアクティブになります。[**メタデータ**] ボタンをクリックすると、サイドバーが開き、ユーザーは、選択した項目のメタデータを表示したり編集したりできます。 この動作は、デフォルトで有効になっています。つまり、有効にするために、追加のプロパティは必要ありません。 ### メタデータのフィルタ ファイルタイプで項目にフィルタをかけたり、フォルダにフィルタをかけたり、Boxの[メタデータテンプレート](g://metadata/templates/)で指定されたメタデータフィールド値でフィルタをかけたりできます。 フィルタチップは、デフォルトで有効になっています。[**すべてのフィルタ**] チップを無効にするには、`actionBarProps`オブジェクトの`isAllFiltersDisabled`を`true`に設定します。 ``` const contentExplorer = new Box.ContentExplorer(); contentExplorer.show(FOLDER_ID, ACCESS_TOKEN, {  ... metadataViewProps: {     columns,     isSelectionEnabled: true,     actionBarProps: {          isAllFiltersDisabled: true,     }   }, }); ``` ### リストビューとグリッドビューの切り替え グリッドビューは、操作バーにある表示モード切り替えボタンからデフォルトで利用可能です。グリッドビューがアクティブな場合は、ズームコントロールが使用可能になります。選択、フィルタ、編集などのその他の機能もこのビュー内で使用できます。 グリッドビューを無効にするには、`metadataViewProps`オブジェクト内で`actionBarProps.isViewModeButtonDisabled`を`true`に設定します。 ``` const contentExplorer = new Box.ContentExplorer(); contentExplorer.show(FOLDER_ID, ACCESS_TOKEN, {  ...  metadataViewProps: {    columns,    actionBarProps: {      isViewModeButtonDisabled: true,    }  }, }); ``` ### ページネーション このUI Elementでは、フッターが常に表示された状態で、マーカーベースのページネーションのみが使用されます。オフセットまたはページ番号は設定できません。ユーザーが移動する際は [**前へ**] と [**次へ**] しか使用できません。無制限のスクロールはサポートされていません。 ## v1からv2への移行 ### Npmパッケージ コンテンツエクスプローラのメタデータビューの`v1`は公式サポートが終了しました。`v1`は`24.0.0`パッケージで引き続き利用できますが、バグ修正や新機能は提供されなくなります。最新の機能が提供されるようにするには、移行ガイドに従い、コンテンツエクスプローラの`v2`のメタデータビューに切り替えてください。 `box-ui-elements`パッケージを使用してプロジェクト内で`v1`からv2に移行するには: 1. `box-ui-elements`パッケージのバージョンをバージョン`24.0.0`以上にアップグレードします。 2. `box-ui-elements`ピア依存関係が依存関係として`package.json`ファイルに追加されていることを確認します。これは、パッケージマネージャを使用してインストールします。 3. `features`フラグを追加して、強化されたメタデータビューを有効にします。 ``` features: {    contentExplorer: {        metadataViewV2: true    } } ``` 1. メタデータの`fieldToShow`の構成を新しい列オブジェクトに変換します。Boxメタデータテンプレートの値に対応するフィールドタイプを追加します。列の配列を新しい`metadataViewProps`オブジェクトに渡します。 ``` const columns = [     {        textValue: "METADATA_FIELD_DISPLAY_NAME", // Altenratively pass a custom value        id: `${metadataFieldNamePrefix}.${METADATA_FIELD_KEY}`,        type: field.type,        allowsSorting: true, // Optional        minWidth: 150, // Optional; the default value is 220        maxWidth: 150, // Optional; the default value is 220     },     ... ]; ``` 1. 必要に応じて、このガイドで説明されている追加機能を構成します。 ### CDN CDNのインポートを使用してプロジェクト内で`v1`からv2に移行するには: 1. CDNリンクにバージョン`24.0.0`以上のパッケージバージョンが含まれていることを確認します。 2. `features`フラグを追加して、強化されたメタデータビューを有効にします。 ``` features: {    contentExplorer: {        metadataViewV2: true    } } ``` 1. メタデータの`fieldToShow`の構成を新しい列オブジェクトに変換します。Boxメタデータテンプレートの値に対応するフィールドタイプを追加します。列の配列を新しい`metadataViewProps`オブジェクトに渡します。 ``` const columns = [     {        textValue: "METADATA_FIELD_DISPLAY_NAME", // Altenratively pass a custom value        id: `${metadataFieldNamePrefix}.${METADATA_FIELD_KEY}`,        type: field.type,        allowsSorting: true, // Optional        minWidth: 150, // Optional; the default value is 220        maxWidth: 150, // Optional; the default value is 220     },     ... ]; ``` 1. 必要に応じて、このガイドで説明されている追加機能を構成します。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/explorer-metadata-v2/](https://ja.developer.box.com/guides/embed/ui-elements/explorer-metadata-v2/) --- ### コンテンツの入力 **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides コンテンツの入力 サービスアカウントのetc/skel構造を使用してアーキテクチャファイルを定義すると、次のスクリプトを使用してskelの下にあるすべての項目を新しいユーザーのルートディレクトリに直接コピーできます。 # コンテンツの入力 サービスアカウントの`etc/skel`構造を使用してアーキテクチャファイルを定義すると、次のスクリプトを使用して`skel`の下にあるすべての項目を新しいユーザーのルートディレクトリに直接コピーできます。 ``` 'use strict' const box = require('box-node-sdk'); const fs = require('fs'); const skelFolderId = "45117847998"; const userID = "275111793"; let configFile = fs.readFileSync('config.json'); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let serviceAccountClient = session.getAppAuthClient("enterprise"); (async () => { // The userID can be obtained when creating the user via the // API or by using the search users feature. // The skel folder ID shouldn't ever change unless it's deleted and recreated. await copySkelDirectoryForUser(userID, skelFolderId, serviceAccountClient); })(); async function copySkelDirectoryForUser(userID, skelFolderId, boxClient) { // Enable iterators in case there are more than the // default limit of items under the skel directory. boxClient._useIterators = true; // You collaborate the user temporarily on the skel directory // to copy all items into that user's root folder. let collabSkelFolder; try { collabSkelFolder = await boxClient.collaborations.createWithUserID(userID, skelFolderId, boxClient.collaborationRoles.EDITOR); } catch (e) { // Handle that the collaboration on the skel folder could already exist. if (e.response.body.code === 'user_already_collaborator') { let collaborationsIterator = await boxClient.folders.getCollaborations(skelFolderId); let collaborations = await autoPage(collaborationsIterator); let results = collaborations.filter((collaboration) => { return collaboration.accessible_by.id === userID; }); console.log(results); if (results.length > 0) { collabSkelFolder = results[0]; } else { throw new Error("Couldn't create new collaboration or located existing collaboration."); } } else { throw e; } } console.log(collabSkelFolder); // Switching context to make calls on behalf of the user. // To access this user's root folder, the boxClient needs // to be scoped to make API calls as the user. boxClient.asUser(userID); // Iterate over all the items under the skel directory. let skelFolderItemsIterator = await boxClient.folders.getItems(skelFolderId); let skelFolderCollection = await autoPage(skelFolderItemsIterator); console.log(skelFolderCollection); // Now, as the user, copy the folders and files into // the user's root folder -- folder ID '0'. let copyTasks = []; skelFolderCollection.forEach((item) => { if (item.type === 'folder') { copyTasks.push(boxClient.folders.copy(item.id, '0') .catch((e) => { let itemId = handleConflictError(e); if (itemId) { console.log(itemId); return boxClient.folders.get(itemId); } else { throw e; } })); } else if (item.type === 'file') { copyTasks.push(boxClient.files.copy(item.id, '0') .catch((e) => { let itemId = handleConflictError(e); if (itemId) { console.log(itemId); return boxClient.files.get(itemId); } else { throw e; } })); } else { console.log("Unable to resolve item type to known types..."); } }); let copiedItems = await Promise.all(copyTasks); console.log(copiedItems); // Switching the boxClient context back to that of the service account. boxClient.asSelf(); /* Since the service account owns the skel directory, boxClient needs to make API calls as the service account to remove the temporary collaboration on the skel directory. */ try { await boxClient.collaborations.delete(collabSkelFolder.id); console.log("Removed collaboration on skel..."); } catch (e) { console.log("Couldn't remove skel collaboration..."); console.log(e.respose.body); } function handleConflictError(e) { if (e && e.response && e.response.body) { let errorBody = e.response.body; if (errorBody.status === 409) { if (errorBody.context_info && errorBody.context_info.conflicts && errorBody.context_info.conflicts) { let conflict = errorBody.context_info.conflicts; if (conflict && conflict.id) { return conflict.id; } } } } } function autoPage(iterator, collection = []) { let moveToNextItem = async () => { let item = await iterator.next(); if (item.value) { collection.push(item.value); } if (item.done !== true) { return moveToNextItem(); } else { return collection; } } return moveToNextItem(); } } ``` ``` package com.box; import java.io.BufferedReader; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.box.sdk.BoxAPIException; import com.box.sdk.BoxCollaboration; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxFile; import com.box.sdk.BoxFolder; import com.box.sdk.BoxItem; import com.box.sdk.BoxUser; import com.eclipsesource.json.JsonObject; public class BoxPlayground { public static void main(String[] args) throws Exception { Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { String skelFolderId = "45117847998"; String userId = "275111793"; BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxDeveloperEditionAPIConnection userClient = BoxDeveloperEditionAPIConnection.getAppUserConnection(userId, boxConfig); BoxFolder skelFolder = new BoxFolder(serviceAccountClient, skelFolderId); BoxCollaboration.Info skelFolderCollaboration; try { skelFolderCollaboration = skelFolder.collaborate(new BoxUser(serviceAccountClient, userId), BoxCollaboration.Role.EDITOR); } catch (BoxAPIException e) { System.out.println("Searching for existing collaborator."); JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); String code = errorMessage.get("code").asString().intern(); if (code == "user_already_collaborator") { System.out.println("Already collaborated..."); Collection<BoxCollaboration.Info > collaborations = skelFolder.getCollaborations(); System.out.println(collaborations.size()); Optional<BoxCollaboration.Info > results = collaborations.stream().filter(c -> { return c.getAccessibleBy().getID().intern() == userId; }).findFirst(); if (results.isPresent()) { skelFolderCollaboration = results.get(); } else { throw new Exception("Couldn't create new collaboration or find existing collaboration."); } } else { throw e; } } System.out.println(skelFolderCollaboration.getID()); BoxFolder collabedSkelFolder = new BoxFolder(userClient, skelFolderId); ArrayList<BoxItem.Info > copiedItems = new ArrayList<>(); for (BoxItem.Info itemInfo: collabedSkelFolder) { if (itemInfo instanceof BoxFile.Info) { BoxFile.Info fileInfo = (BoxFile.Info) itemInfo; BoxFile copyFile = new BoxFile(userClient, fileInfo.getID()); BoxFile.Info copiedFile; try { copiedFile = copyFile.copy(BoxFolder.getRootFolder(userClient)); } catch (BoxAPIException e) { System.out.println(e.getMessage()); String conflictId = getIdFromConflict(e.getMessage()); System.out.println(conflictId); copiedFile = new BoxFile(userClient, conflictId).getInfo(); } copiedItems.add((BoxItem.Info) copiedFile); } else if (itemInfo instanceof BoxFolder.Info) { BoxFolder.Info folderInfo = (BoxFolder.Info) itemInfo; BoxFolder copyFolder = new BoxFolder(userClient, folderInfo.getID()); BoxFolder.Info copiedFolder; try { copiedFolder = copyFolder.copy(BoxFolder.getRootFolder(userClient)); } catch (BoxAPIException e) { System.out.println(e.getMessage()); String conflictId = getIdFromConflict(e.getMessage()); System.out.println(conflictId); copiedFolder = new BoxFolder(userClient, conflictId).getInfo(); } copiedItems.add((BoxItem.Info) copiedFolder); } } System.out.println("Copied " + copiedItems.size() + " items from the skel directory."); BoxCollaboration tempSkelCollab = new BoxCollaboration(serviceAccountClient, skelFolderCollaboration.getID()); tempSkelCollab.delete(); System.out.println("Removed temporary skel directory collaboration."); } } private static String getIdFromConflict(String message) { String id = ""; Pattern p = Pattern.compile("\"id\":\"[0-9]+\""); Pattern p2 = Pattern.compile("[0-9]+"); Matcher m = p.matcher(message); if (m.find()) { String sub = m.group(); Matcher m2 = p2.matcher(sub); if (m2.find()) { id = m2.group(); } } return id; } } ``` ``` using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Box.V2; using Box.V2.Config; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Newtonsoft.Json.Linq; namespace BoxPlayground { public class Program { static void Main(string[] args) { ExecuteMainAsync().Wait(); } private static async Task ExecuteMainAsync() { using(FileStream fs = new FileStream("./config.json", FileMode.Open)) { var skelFolderId = "45117847998"; var userId = "275111793"; var session = new BoxJWTAuth(BoxConfig.CreateFromJsonFile(fs)); var client = session.AdminClient(session.AdminToken()); var userClient = session.UserClient(session.UserToken(userId), userId); BoxCollaboration collabSkelFolder; try { collabSkelFolder = await client.CollaborationsManager.AddCollaborationAsync( new BoxCollaborationRequest { AccessibleBy = new BoxCollaborationUserRequest { Id = userId }, Item = new BoxRequestEntity { Id = skelFolderId, Type = BoxType.folder }, Role = BoxCollaborationRole.Editor.ToString() }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("code").ToString() == "user_already_collaborator") { System.Console.WriteLine("Already a collaborator"); var collaborations = await client.FoldersManager.GetCollaborationsAsync(skelFolderId); var existingCollab = collaborations.Entries.Find((collaboration) = >{ return collaboration.AccessibleBy.Id == userId; }); if (existingCollab != null) { collabSkelFolder = existingCollab; } else { throw new Exception("Couldn't create new collaboration or find existing collaboration"); } } else { throw e; } } var items = await userClient.FoldersManager.GetFolderItemsAsync(skelFolderId, limit: 1000, autoPaginate: true); var copyTasks = new List < Task < BoxItem >> (); items.Entries.ForEach((item) = >{ if (item.Type == BoxType.folder.ToString()) { copyTasks.Add(userClient.FoldersManager.CopyAsync(new BoxFolderRequest { Id = item.Id, Parent = new BoxRequestEntity { Id = "0" } }).ContinueWith((folder) = >{ try { return (BoxItem) folder.Result; } catch(Exception e) { var errorMessage = JObject.Parse(e.InnerException.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { System.Console.WriteLine("Conflict found"); System.Console.WriteLine(errorMessage.SelectToken("context_info.conflicts.id")); return (BoxItem) userClient.FoldersManager.GetInformationAsync(errorMessage.SelectToken("context_info.conflicts.id").ToString()).Result; } else { throw e; } } })); } else if (item.Type == BoxType.file.ToString()) { copyTasks.Add(userClient.FilesManager.CopyAsync(new BoxFileRequest { Id = item.Id, Parent = new BoxRequestEntity { Id = "0" } }).ContinueWith((file) = >{ try { return (BoxItem) file.Result; } catch(Exception e) { var errorMessage = JObject.Parse(e.InnerException.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { System.Console.WriteLine("Conflict found"); System.Console.WriteLine(errorMessage.SelectToken("context_info.conflicts.id")); return (BoxItem) userClient.FilesManager.GetInformationAsync(errorMessage.SelectToken("context_info.conflicts.id").ToString()).Result; } else { throw e; } } })); } else { System.Console.WriteLine("Couldn't process this item..."); } }); var copiedItems = await Task.WhenAll(copyTasks); System.Console.WriteLine($ "Copied {copiedItems.Count()} items from the skel directory."); if (await client.CollaborationsManager.RemoveCollaborationAsync(collabSkelFolder.Id)){ System.Console.WriteLine("Removed temporary skel directory collaboration..."); System.Console.WriteLine("Complete!"); } else { System.Console.WriteLine("Something went wrong when removing skel directory collaboration."); } } } } } ``` **Source:** [https://ja.developer.box.com/guides/users/provision/populate-content/](https://ja.developer.box.com/guides/users/provision/populate-content/) --- ### コンテンツプレビュー **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides コンテンツプレビュー Box Content Preview UI Elementを使用すると、開発者は、Boxファイルの高品質でインタラクティブなプレビューをデスクトップアプリやモバイルウェブアプリに埋め込むことができます。 コンテンツプレビューUI Element… # コンテンツプレビュー Box Content Preview UI Elementを使用すると、開発者は、Boxファイルの高品質でインタラクティブなプレビューをデスクトップアプリやモバイルウェブアプリに埋め込むことができます。 ## コンテンツプレビューUI Elementとコンテンツプレビューライブラリ Reactコンポーネントは[Box Content Previewライブラリ](https://github.com/box/box-content-preview)のラッパーであるため、コンテンツプレビューUI Elementの動作は、他のUI Elementsとは異なります。また、プレビューライブラリのバンドルはローカライズされているため、コンテンツプレビューUI Elementでは言語 (デフォルトは`en-US`) を渡す必要もあります。 ``` var ContentPreview = require("./ContentPreview").default; <IntlProvider locale="en"> <ContentPreview contentSidebarProps={{ detailsSidebarProps: { hasAccessStats: true, hasClassification: true, hasNotices: true, hasProperties: true, hasRetentionPolicy: true, hasVersions: true, }, features: FEATURES, hasActivityFeed: true, hasMetadata: true, hasSkills: true, hasVersions: true, }} hasHeader={true} features={FEATURES} fileId={FILE_ID} token={TOKEN} {...PROPS} /> </IntlProvider>; ``` コンテンツプレビューライブラリは、ファイルとその変換後のレプリゼンテーションに関する情報をBox APIを介して取得し、ファイルタイプに適したビューアーを選択して、必要な静的アセットとファイルレプリゼンテーションを動的に読み込み、最後にファイルをレンダリングします。 また、このUI Elementを使用すると、複数のファイルのプレビューを同じコンテナに読み込むことができ、ファイル間を移動するための矢印も表示されます。これにより、メインのBoxウェブアプリと[期限付きで埋め込まれたリンクオブジェクト](r://file--full/#param-expiring_embed_link)でのプレビューが強化されます。 ## インストール NPMまたはBox CDN経由でBox UI Elementsをインストールする方法は、[こちら](g://embed/ui-elements/installation)を参照してください。 ## 認証 UI Elementは認証に依存しない方法で設計されているため、Boxの管理対象ユーザーとBox以外のユーザー (App User) のどちらでも機能します。その理由は、UI Elementは認証に[トークン](g://authentication/tokens/developer-tokens)のみを想定していて、Boxにはトークンの生成方法としてOAuthとJWTの2つがあるからです。 認証方法の選択について確認する ## サポートされているファイルの種類 Box Content Previewでは、ドキュメントと画像のほとんどの形式、HD動画、3Dモデル、360度画像、360度動画など、120以上のファイルタイプがサポートされています。サポートされているファイルの種類については、[こちら](https://support.box.com/hc/ja/articles/360043695794-Box-Content-Preview%E3%81%A7%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)で確認できます。 サポートされているファイルの種類に他のオブジェクト (`DWG`ファイルなど) への参照が含まれている場合、Boxプレビューではこれらの参照がサポートされていないことに注意してください。サポートされていない参照を含むDWGファイルを表示しているすべてのエンドユーザーには、別の手順でワークフローを完了するよう促す通知が表示されます。 ## デモ ナビゲーション用の矢印を使用すると、さまざまなファイルタイプをプレビューできます。 ## API ``` const { Preview } = Box; const preview = new Preview(); /** * Shows a preview. * * @public * @param {string} fileId - File ID to preview * @param {string} accessToken - Box API access token * @param {Object} [options] - Options * @return {void} */ preview.show(fileId, accessToken, options); /** * Hides the preview. * * @return {void} */ preview.hide(); /** * Prints the current file, if printable. * * @return {void} */ preview.print(); /** * Downloads the current file. * * @return {void} */ preview.download(); /** * Resizes the current preview, if applicable. This function only needs to * be called when preview's viewport has changed while the window has not. * If the window is resizing, then preview will automatically resize itself. * * @return {void} */ preview.resize(); /** * Adds an event listener to the preview. Listeners should be added * before calling show() so no events are missed. * * @param {string} eventName - Name of the event * @param {Function} listener - Callback function * @return {void} */ preview.addListener(); /** * Removes an event listener from the preview. * * @param {string} eventName - Name of the event * @param {Function} listener - Callback function * @return {void} */ preview.removeListener(eventName, listener); /** * Removes all event listeners from the preview. * * @return {void} */ preview.removeAllListeners(); ``` ### パラメータ | パラメータ | 型 | 説明 | | --- | --- | --- | | fileId | String | BoxファイルID。 | | accessToken | String | 使用するBox APIアクセストークン。このトークンには、上記のフォルダに対する読み取り/書き込みアクセス権限が必要です。このトークンのために渡される値は、エクスプローラの表示中は有効期限切れにならないことが前提となっています。 | | options | Object | 省略可能なオプション。詳細は以下を参照してください。たとえば、contentExplorer.show(FOLDER_ID, TOKEN, {canDelete: false})を使用すると、削除オプションが非表示になります。 | ### オプション | パラメータ | 型 | デフォルト | 説明 | | --- | --- | --- | --- | | container | String | document.body | プレビューが配置されるコンテナのCSSセレクタ | | sharedLink | String | | 共有リンクのURL。ファイルが共有されており、アクセストークンがファイルの所有者またはコラボレータに属していない場合は必須です。 | | sharedLinkPassword | String | | 共有リンクのパスワード。共有リンクにパスワードが設定されている場合は必須です。 | | collection | Array | | プレビューするファイルIDのリスト。これを使用すると、同じコンテナ内にある複数のファイルのプレビューが表示され、ファイル間を移動するための矢印も表示されます。このリストにはFILE_IDを含める必要があること、およびSDKでは共有リンクまたはパスワードが必要なファイルのコレクションがサポートされないことに注意してください。 | | header | String | light | ヘッダーの表示と背景色を制御する値。ヘッダーなしの場合はnone、ヘッダーと背景を薄い色にする場合はlight、ヘッダーと背景を濃い色にする場合はdarkを使用します。 | | logoUrl | String | | ヘッダーに表示するカスタムロゴのURL。この値が「box」という文字列の場合は、Boxのロゴが表示されます。 | | showAnnotations | Boolean | false | ヘッダーの注釈ボタンとコンテンツの注釈を表示するかどうか。 | | showDownload | Boolean | false | ダウンロードボタンをヘッダーに表示するかどうか。また、印刷をサポートするビューアーに印刷ボタンを表示するかどうかも制御します。このオプションがアクセストークンに対するダウンロード権限より優先されることはありません。 | ## トークン生成関数 プレビューライブラリでは、オプションで、文字列トークンの代わりに、トークン生成関数を使用できます。トークン生成関数を使用すると、プレビューで使用するトークンを動的に決定できます。たとえば、ファイルごとに異なるアクセストークンを渡したり、プレビューを表示する前にトークンが更新されて有効であることを確認したりできます。トークン生成関数ではPromiseが返され、プレビューされるすべてのファイルに適用される単一の文字列トークンか、これらのファイルのアクセストークンへの指定のファイルIDのマップに解決されます。 ``` // Example token generator function that resolves to a single access token var singleTokenGenerator = function () { return someApi.getToken().then(function (data) { return data.token; }); }; // Example token generator function that resolves to a map of tokens var mapTokenGenerator = function () { return Promise.resolve({ file_1234: "some_token_abcd", file_2345: "some_token_bcde", }); }; ``` ## イベント プレビューオブジェクトは、イベントにバインドするための`addListener`と`removeListener`を公開します。イベントリスナーは`show()`が呼び出される前にバインドする必要があります。そうしないと、イベントが見つからない可能性があります。 ``` const listener = (value) => { // Do something with value }; // Attach listener before calling show otherwise events can be missed var preview = new Box.Preview(); preview.addListener(EVENTNAME, listener); // Show a preview preview.show(...); // Remove listener when needed preview.removeListener(EVENTNAME, listener); ``` `EVENTNAME`には、以下のいずれかを指定できます。 - `viewer`イベントは、ビューアーインスタンスが最初に使用可能になったときにトリガーされます。これは、`load`イベントにも含まれているプロパティと同じオブジェクトです。プレビューでは、`load`の前にこのイベントがトリガーされるため、クライアントは、`load`イベントがトリガーされる前にそのリスナーをアタッチできます。 - `load`イベントは、`show()`が呼び出されたときかプレビュー間の移動が発生したときに、プレビューが読み込まれるたびにトリガーされます。イベントデータには以下の内容が含まれます。 ``` error: 'message', // Error message if any error occurred while loading viewer: {...}, // Instance of the current viewer object if no error occurred metrics: {...}, // Performance metrics file: {...} // Box file object with properties defined in file.js ``` - `navigate`イベントは、移動が発生したときにトリガーされます。イベントには移動先のファイルのファイルIDが含まれており、このイベントは`load`の前にトリガーされます。 - `notification`イベントは、プレビューラッパーまたはいずれかのビューアーで警告や致命的ではないエラーなどの通知を表示する場合にトリガーされます。イベントデータには以下の内容が含まれます。 ``` message: 'message', // Message to show type: 'warning' // 'warning', 'notice', or 'error' ``` - `viewerevent`: ビューアーごとに、一連の独自のイベントがトリガーされます。たとえば、画像ビューアーでは`rotate`や`resize`などがトリガーされるのに対し、別のビューアーでは別の一連のイベントがトリガーされる場合があります。プレビューラッパーは、以下を含むイベントデータとともに、プレビューレベルでイベントを再発行します。 ``` event: EVENTNAME, // Event name data: DATA, // Event data object viewerName: VIEWERNAME, // Name of the viewer. See VIEWERNAME above fileId: fileId // The file ID ``` ### イベントの使用例 ``` var preview = new Box.Preview(); preview.addListener("viewer", (viewer) => { viewer.addListener("rotate", () => { // Do something when a viewer rotates a preview }); }); preview.addListener("load", (data) => { const viewer = data.viewer; viewer.addListener("rotate", () => { // Do something when a viewer rotates a preview }); }); preview.addListener("viewerevent", (data) => { if (data.viewerName === "Image") { if (data.event === "rotate") { // Do something when an image preview is rotated } } else if (data.viewerName === "Image360") { if (data.event === "rotate") { // Do something different when a 360-degree image is rotated } } else { } }); preview.addListener("rotate", (data) => { if (data.viewerName === "Image") { // Do something when an image preview is rotated } else if (data.viewerName === "Image360") { // Do something different when a 360-degree image is rotated } else { } }); ``` ## 注釈 コンテンツプレビューで、V4の[注釈](g://embed/ui-elements/annotations.md)を有効にすることができます。新しい注釈はリアルタイムで同期されます。 V4の注釈をプレビューに追加するには、以下の手順に従います。 1. `npm i box-annotations@latest`を実行し、[Boxの注釈](https://github.com/box/box-annotations)をインストールします。 Boxの注釈のバージョンは、メジャーバージョン4以上である必要があります。 1. `npm i box-ui-elements@16.0.0`を実行し、注釈に関連した変更を含む[BUIE](https://github.com/box/box-ui-elements/releases/tag/v16.0.0)バージョンをインストールします。 Box UI Elementsは、V4の注釈が十分に機能している、使用可能な最小バージョンである必要があります。 1. 次のように、コンテンツプレビューとBoxの注釈をアプリケーションにインポートします。 ``` import boxAnnotations from "https://cdn.skypack.dev/box-annotations@latest"; var file_id = "YOUR FILE ID"; var accessToken = "YOUR ACCESS TOKEN"; /* Enable annotations in sidebar */ var contentSidebarProps = { hasActivityFeed: true, features: { activityFeed: { annotations: { enabled: true, }, }, }, }; var options = { container: ".previewer", contentSidebarProps: contentSidebarProps, /* Enable annotations in preview */ enableAnnotationsDiscoverability: true, enableAnnotationsImageDiscoverability: true, showAnnotations: true, showAnnotationsControls: true, showAnnotationsDrawingCreate: true, }; /* BoxAnnotations */ var annotations = new BoxAnnotations(); /* Box Preview */ var contentPreviewer = new Box.ContentPreview(); /* Set annotation into previewer */ options["boxAnnotations"] = annotations; /* Show previewer */ contentPreviewer.show(file_id, accessToken, options); ``` プロパティ`features: { activityFeed: { annotations: { enabled: true } } } } `は、今後変更される可能性があります。 ``` <link href="https://cdn01.boxcdn.net/platform/elements/16.0.0/en-US/preview.css" rel="stylesheet" type="text/css"></link> <script src="https://cdn01.boxcdn.net/platform/elements/16.0.0/en-US/preview.js"></script> <style> .previewer { border: 1px solid #eee; height: 500px; width: 100%; } </style> <div class="previewer"></div> <script type="module" src="./script.js"></script> ``` ## Box AI for UI Elements Box AI for UI Elementsは、追加機能によってコンテンツプレビューUI Elementを強化するため、開発者はPlatformアプリにBox Q&A AI機能を追加できるようになります。Box AIの機能で強化されたプレビューUI Elementでは、以下の機能を提供します。 - Q&Aとドキュメントの要約。 - Box AIとの会話をリセットする [**会話をクリア**] ボタン。 - 回答の下に表示される引用情報 (回答に含まれる場合)。 - 箇条書きや表などのマークダウン形式の応答のリクエストを可能にする、書式設定サポート。 - 可能な限り最適な応答を得られるように以前のコンテキストの参照を可能にする、質問履歴。質問履歴は現在のセッションの間のみ保持されます。 - 会話をサポートするために、デフォルトでチャットの先頭に表示される質問の候補。 ### Box AI for UI Elementsの有効化 コンテンツプレビューのヘッダーでBox AIウィンドウを有効にするには、以下の手順に従います。 NodeおよびReactのバージョンが`18.x`以上であることを確認します。 [Box AI for UI Elementsを含むnpmパッケージ](https://www.npmjs.com/package/box-ui-elements/v/22.0.0)をダウンロードするか、[Box CDN](g://embed/ui-elements/installation)から直接ダウンロードします。 以下のピア依存関係をインストールします。 - [`box-ai-content-answers`](https://www.npmjs.com/package/@box/box-ai-content-answers) - [`blueprint-web`](https://www.npmjs.com/package/@box/blueprint-web) - [`blueprint-web-assets`](https://www.npmjs.com/package/@box/blueprint-web-assets) そのためには、次のコマンドを実行します。 ``` npx install-peerdeps box-ui-elements@^22.0.0 ``` ### JavaScriptの使用 Box AIの機能を有効にするには、以下を渡します。 - `true`に設定した`hasHeader`プロパティ - `contentAnswersProps`プロパティ。デフォルトで`show`、`isCitationsEnabled`、`isMarkdownEnabled`、`isResetChatEnabled`、`suggestedQuestions`の各フィールドが含まれています。 ``` const preview = new Box.Preview(); const suggestedQuestions = [ { label: 'What are the key takeaways?', prompt: 'What are the key takeaways?', id: '1234', }, { label: 'Summarize this document', prompt: 'Summarize this document', id: '5678', }, ]; preview.show(<FILE_ID>, <TOKEN>, { container: '.preview-container', contentAnswersProps={ show: true, isCitationsEnabled: true, isMarkdownEnabled: true, isResetChatEnabled: true, suggestedQuestions } hasHeader: true, }); ``` ### Reactコンポーネントの使用 ReactコンポーネントのヘッダーにBox AI要素を追加することもできます。そのためには、以下を追加します。 - `true`に設定した`hasHeader`プロパティ - `contentAnswersProps`プロパティ。デフォルトで`show`、`isCitationsEnabled`、`isMarkdownEnabled`、`isResetChatEnabled`、`suggestedQuestions`の各フィールドが含まれています。 `suggestedQuestions`を適切にローカライズするには、プロンプトが翻訳されていることを確認してください。省略可能な`label`プロパティはスクリーンリーダー用であるのに対し、`prompt`プロパティはAIウィンドウでユーザーに表示されるテキストです。 ``` import ContentPreview from 'box-ui-elements/es/elements/content-preview'; import { IntlProvider } from "react-intl"; const suggestedQuestions = [ { label: 'Key takeaways', prompt: 'What are the key takeaways from this document?', id: '1234', }, { label: 'Summarize', prompt: 'Summarize this document', id: '5678', }, ]; export default () => { // Storing variables in the front end is not secure. // You will want to grab this value from a database for production const TOKEN = process.env.REACT_APP_BOX_DEVELOPER_TOKEN const FILE_ID = process.env.REACT_APP_BOX_PREVIEW_FILE_ID return ( <IntlProvider locale="en"> <ContentPreview contentAnswersProps={{ show: true, isCitationsEnabled: true, isMarkdownEnabled: true, isResetChatEnabled: true, suggestedQuestions }} fileId={FILE_ID} token={TOKEN} hasHeader=true /> </IntlProvider> ); }; ``` 今回のリリースで提供されるコンテンツプレビュー用のイベントリスナー (`onAsk`、`onClearConversations`、`onRequestClose`) を使用して、さらにアプリをカスタマイズできます。 ## スコープ アプリケーションで、エンドユーザーがコンテンツプレビュー機能のサブセットのみにアクセスできるようにする必要がある場合は、[ダウンスコープ](guide://authentication/tokens/downscope)を使用して、アクセストークンを適切にダウンスコープして必要な権限のセットを含むトークンを生成し、コンテンツプレビューを初期化するエンドユーザークライアントに安全に渡すことができます。 以下は、ダウンスコープと一緒に使用する、UI Element固有の新しいスコープのセットです。こうしたスコープにより、開発者は、ダウンスコープされたトークンに適切なスコープを構成して、コンテンツプレビューのUIコントロールを有効/無効にすることができます。詳細については、[Box UI Elementsの専用スコープ](g://api-calls/permissions-and-errors/scopes)を参照してください。 ### 基本スコープ | スコープ名 | 付与される権限 | | --- | --- | | base_preview | ファイルのプレビューのみをユーザーに許可します。 | ### 機能のスコープ | スコープ名 | 付与される権限 | | --- | --- | | item_download | 生成されたプレビューからのコンテンツのダウンロード/印刷を許可します。 | | annotation_edit | ユーザーに注釈の編集 (削除) を許可します。注: ハイライトによる注釈を使用できるようにするには、ユーザーに対して、ドキュメントのテキストレイヤーを有効にする必要があります。テキストレイヤーは、ファイルのダウンロード権限を持たないすべてのユーザーで無効になっています。ユーザーのハイライト注釈を有効にするには、ユーザーにファイルのダウンロード権限があることを確認してください。 | | annotation_view_all | ユーザーに全ユーザーの注釈の表示を許可します。 | | annotation_view_self | ユーザーに自分の注釈のみの表示を許可します。 | # スコープを使用してハイライトによる注釈を有効にする ハイライト注釈は`annotation_edit`および`annotation_view_all`スコープに含まれていません。ハイライトを有効にするには、ダウンスコープされたアクセストークンに`item_download`スコープを含める必要があります。 ### サンプルのシナリオ | シナリオ | スコープ | | --- | --- | | ユーザーがプレビューのみできるようにする (ダウンロード/印刷、注釈は不可) | base_preview | | ユーザーがプレビュー、ダウンロード、印刷を実行できるようにする | base_preview + item_download | | ユーザーがプレビュー、すべての注釈の表示を実行できるようにする (注釈のダウンロード、印刷、作成は不可) | base_preview + annotation_view_all | | ユーザーがプレビュー、注釈の作成 (表示できるのは自分の注釈のみ) を実行できるようにする | base_preview + annotation_view_self + annotation_edit | | ユーザーがプレビュー、注釈の編集、すべての注釈の表示を実行できるようにする | base_preview + annotation_view_all + annotation_edit | | ユーザーがプレビュー、自分の注釈の表示のみ (追加/削除は不可) を実行できるようにする (例: レビュー期間が終了したら、すべてのドキュメントを読み取り専用モードで保存する必要がある場合) | base_preview + annotation_view_self | **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/preview/](https://ja.developer.box.com/guides/embed/ui-elements/preview/) --- ### サービス利用規約 **Type:** guide | **Category:** セキュリティ | **Section:** Developer Guides サービス利用規約 Box APIを使用すると、管理者はBoxの使用に関するサービス利用規約を設定できます。また、ユーザーは、カスタムアプリケーションのサービス利用規約に同意および再同意できます。 用語 サービス利用規約 サービス利用規約とは、Box… # サービス利用規約 Box APIを使用すると、管理者はBoxの使用に関するサービス利用規約を設定できます。また、ユーザーは、カスタムアプリケーションのサービス利用規約に同意および再同意できます。 ## 用語 ### サービス利用規約 サービス利用規約とは、Boxに保存されている企業のデータをすべてのユーザーが使用できる条件を表す、企業レベルの記録文書です。 現在、どの企業にも2種類のサービス利用規約があり、個別に有効にすることが可能です。**管理対象ユーザー用サービス利用規約**は、企業のユーザーに対して有効にすることができます。一方、*_外部ユーザー用サービス利用規約_は、プライマリ企業のデータでコラボレーションする他の企業のユーザーに対して有効にすることができます。 ## サービス利用規約のユーザーステータス サービス利用規約のユーザーステータスは、特定のユーザーによるサービス利用規約への同意のステータスを表します。サービス利用規約とユーザーをどのように組み合わせた場合でも、サービス利用規約のユーザーステータスは1つだけです。 1つの利用規約に、サービス利用規約のユーザーステータスが複数あります (ユーザー1人につき1つ)。 1人のユーザーに、サービス利用規約のユーザーステータスが複数存在する場合もあります。ユーザーは、自社の管理対象ユーザー用サービス利用規約を承認または拒否できるだけでなく、コラボレーションしているさまざまな企業の複数の外部ユーザー用サービス利用規約も承認または拒否できます。 ## API **[会社の設定を編集する]** 権限を持つBox管理者として認証されているアプリケーションは、APIを介して会社の企業のサービス利用規約を表示、作成、編集できます。 - [`GET /terms_of_services/:id`](e://get-terms-of-services-id): 特定のサービス利用規約の情報を取得します。 - [`GET /terms_of_services`](e://get-terms-of-services): 管理対象ユーザーまたは外部ユーザー用に、企業内で使用されているすべてのサービス利用規約のリストを取得します。 - [`POST /terms_of_services`](e://post-terms-of-services): 外部ユーザーまたは管理対象ユーザー用にサービス利用規約の設定を作成します。 - [`PUT /terms_of_services/:id`](e://put-terms-of-services-id): 特定のサービス利用規約の設定を更新します。 さらに、アプリケーションは、APIを介して通常のユーザーのサービス利用規約を表示し承認することができます。 - [`GET /terms_of_service_user_statuses`](e://get-terms-of-service-user-statuses): ユーザーのすべてのサービス利用規約のリストを取得します。 - [`POST /terms_of_service_user_statuses`](e://post-terms-of-service-user-statuses): 特定のサービス利用規約を初めて承認または拒否します。 - [`PUT /terms_of_service_user_statuses/:id`](e://put-terms-of-service-user-statuses-id): 以前に承認または拒否された特定のサービス利用規約を承認または拒否します。 ## スコープ 説明されているアクションを実行するには、アプリケーションに以下のスコープを許可する必要があります。 - **[Enterpriseのプロパティを管理する]**: 企業のサービス利用規約の設定を有効化または編集するためと、外部ユーザーに利用規約の設定を表示するために必要です。 - **ユーザーを管理する**: 他のユーザーのサービス利用規約を承認するために必要です。 **Source:** [https://ja.developer.box.com/guides/security/terms-of-service/](https://ja.developer.box.com/guides/security/terms-of-service/) --- ### サポートされているAIモデル **Type:** guide | **Category:** Box AI | **Section:** Developer Guides サポートされているAIモデル Boxでは、さまざまなAIモデルがサポートされており、アクセスレベルと機能レベルという2つの側面で分類されます。 アクセスレベル コアモデル このモデルは、Box AI… # サポートされているAIモデル Boxでは、さまざまなAIモデルがサポートされており、アクセスレベルと機能レベルという2つの側面で分類されます。 ## アクセスレベル ### コアモデル このモデルは、Box AIに組み込まれており、デフォルトですべてのお客様が利用できます。構成は必要ありません。 ### 顧客希望で有効化できるモデル このモデルは、Box管理者が管理コンソールで有効にするか、Boxに有効にするようリクエストする必要があります。一部のモデルは、追加の条件や料金の対象になる場合があります。 ## 機能レベル ### 標準モデル 基本的な要約、Q&A、短いまたはシンプルなドキュメントからの構造化データの抽出など、高速でコスト効率のよいタスク向けに設計されており、大量のあまり複雑でないユースケースに最適です。 ### プレミアムモデル より高度な推論、大きなコンテキストウィンドウ、長いコンテンツ、複雑なコンテンツ、またはドメイン固有のコンテンツに対する優れたパフォーマンスを提供します。マルチステップ推論、大規模なメタデータ階層の理解、長いドキュメントや非構造化ドキュメントの分析などの高度なタスクに適しています。 モデルは、顧客希望で有効化できるモデルかつプレミアムモデルにすることも、コアモデルかつ標準モデルにすることもできます。つまり、アクセルレベルと機能レベルは、それぞれ独立した分類です (たとえば、モデルは、アクセスレベルに関係なくどちらの機能レベルにもなる可能性があります)。この2つの分類は相互に補完します。 ## モデルの使用 サポートされているAIモデルの使用方法を以下に示します。 - [AIエージェントのデフォルト構成](e://get_ai_agent_default)を取得する - [`POST 2.0/ai/ask`](e://post_ai_ask)、[`POST 2.0/ai/text_gen`](e://post_ai_text_gen)、[`POST 2.0/ai/extract`](e://post_ai_extract)、[`POST 2.0/ai/extract_structured`](e://post_ai_extract_structured)の各エンドポイントで使用されるAIエージェントの構成を上書きする APIコールで`model`パラメータを使用する際は、各タイルおよびモデルカードに表示されている**API名**を使用します。 たとえば、特定のモデルのAIエージェントの構成を取得するには、[model](e://get-ai-agent-default#param-model)パラメータを使用して、API名`azure__openai__gpt_4o_mini`を指定します。プロバイダ名の後に**2つのアンダースコア**を使用していることを確認してください。 このリストはモデルの提供状況により変更される可能性があります。 **ベータ**モードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 ## Box AIのコアモデル Box AIには以下のモデルが搭載されています。Box AIと統合されているこれらのモデルは、エンタープライズグレードの標準に準拠しながら、さまざまなユースケースを支援します。各モデルの機能、対象のアプリケーション、利用に関して該当するガイドラインなどの情報については、以下をご確認ください。 業界を越えたコーディングやエージェント型タスク向けのマルチモーダルモデル。 チャット 利用可能 プレミアム エンタープライズグレードのパフォーマンスと適応的推論を備えたマルチモーダルモデル。 チャット 利用可能 プレミアム 高度な推論機能と長いコンテキストの理解を備えたマルチモーダルモデル。 Box AI for HubsのBox AI Advancedのデフォルト Box AI for DocumentsのBox AI Advancedのデフォルト Box AI for Notes Q&AのBox AI Advancedのデフォルト チャット 利用可能 プレミアム 明確に定義されたタスクや正確なプロンプト向けに設計されたモデル。 Box AI for Hubsのデフォルト Box AI for Documentsのデフォルト Box AI for Notes Q&Aのデフォルト チャット 利用可能 標準 複雑なマルチステップタスクの処理で非常に効率的なマルチモーダルモデル。 チャット 利用可能 プレミアム FedRAMP Moderate FedRAMP High DOD IL2 ISMAP 軽量のタスクを処理するように設計されたマルチモーダルモデル。 チャット 利用可能 標準 FedRAMP Moderate FedRAMP High DOD IL2 ISMAP 複雑なマルチステップタスクの処理で非常に効率的なマルチモーダルモデル。 チャット プレビュー 利用可能 プレミアム FedRAMP Moderate FedRAMP High DOD IL2 ISMAP 軽量のタスクを処理するように設計されたマルチモーダルモデル。 チャット 利用可能 標準 FedRAMP Moderate FedRAMP High DOD IL2 ISMAP 最も優れた第2世代のテキスト埋め込みモデル。テキスト検索、コード検索、文の類似性判定に優れています。 埋め込み 利用可能 標準 FedRAMP Moderate FedRAMP High DOD IL2 ISMAP 100万トークンのコンテキストウィンドウと高度な推論機能が備わっている、Geminiマルチモーダルモデル。 Box AI抽出エージェント (強化) のデフォルト チャット 利用可能 プレミアム FedRAMP Moderate FedRAMP High DOD IL5 ISMAP 思考機能などの豊富な機能が備わっている、Geminiマルチモーダルモデル。 Box AI抽出エージェント (標準) のデフォルト チャット 利用可能 標準 FedRAMP Moderate FedRAMP High DOD IL5 ISMAP 大規模で大量かつ高頻度のタスクに最適になるよう設計されたGeminiマルチモーダルモデル。 チャット 利用可能 標準 FedRAMP Moderate FedRAMP High DOD IL5 ISMAP 軽量のタスクを処理するように設計されたGeminiマルチモーダルモデル。 チャット 利用可能 標準 FedRAMP Moderate FedRAMP High DOD IL5 ISMAP 複雑なエージェント、コーディング、自律的なマルチステップワークフローに優れているモデル。 チャット 利用可能 プレミアム FedRAMP Moderate ISMAP ほぼ最先端のインテリジェンスを備えた高速モデル。 チャット 利用可能 標準 FedRAMP Moderate ISMAP 日常的なユースケースに最先端のパフォーマンスをもたらすモデル。 チャット 利用可能 プレミアム FedRAMP Moderate ISMAP コーディングや複雑な問題解決に優れており、最先端のエージェント製品を支えるモデル。 チャット 利用可能 プレミアム FedRAMP Moderate ISMAP 言語の理解と生成のタスクを強化するよう設計されたモデル チャット 利用可能 プレミアム FedRAMP Moderate ISMAP 言語の理解と生成のタスクを強化するよう設計されたモデル。 チャット 利用可能 プレミアム FedRAMP Moderate ISMAP 高度な言語タスク向けに設計されており、理解とコンテキスト処理に重点が置かれているモデル。 チャット 利用可能 プレミアム FedRAMP Moderate ISMAP 創造性豊かな文章作成AIや会話AIなど、さまざまな言語タスク向けにカスタマイズされたモデル。 チャット 利用可能 標準 FedRAMP Moderate ISMAP 高度な言語処理が可能なモデル。幅広いコンテキストを処理できるため、複雑なタスクに適しています。 チャット 利用可能 標準 FedRAMP Moderate ISMAP リソース使用の最適化のために混合専門家アーキテクチャを使用する、ネイティブのマルチモーダルモデル。 チャット 利用可能 標準 テキストとマルチモーダルのエクスペリエンスを可能にする、ネイティブのマルチモーダルAIモデル。 チャット 利用可能 標準 ドキュメントレベルの理解、図表やグラフの解釈、画像の見出し作成向けに構築されたモデルです。 チャット 利用可能 標準 コーディングや高度な推論に対応した、高性能のエンタープライズモデル。 チャット プレビュー 標準 低レイテンシで処理の速いオープンソースのマルチモーダルモデル。 チャット プレビュー 標準 ## 顧客希望で有効化できるモデル Box AIの一部の顧客は、リクエストに応じて追加のAIモデルを有効にしたり、管理コンソールから利用できる追加のAIモデルを有効にしたりすることができます。これらのモデルの使用は、追加の条件の対象になる場合があります。顧客希望で有効化できるモデルを選択すると、顧客は、選択した追加の[サブプロセッサ](https://www.box.com/legal/subprocessors)によって自身のデータが処理される可能性があることに同意したことになります。 100万トークンのコンテキストウィンドウが備わっている、複雑なタスク向けのネイティブのマルチモーダルモデル。 チャット ベータ プレミアム データの抽出、コーディング、テキストの要約など、企業のユースケースに優れているモデル。 チャット ベータ プレミアム 深い専門知識を必要としない、論理ベースのタスクに適している軽量のモデル。 チャット ベータ プレミアム 複雑なマルチステップタスクの処理で非常に効率的なマルチモーダルモデル。 ベータ プレミアム **Source:** [https://ja.developer.box.com/guides/box-ai/ai-models/](https://ja.developer.box.com/guides/box-ai/ai-models/) --- ### サポートされているエンドポイント **Type:** guide | **Category:** 認証 | **Section:** Developer Guides サポートされているエンドポイント アプリトークン認証で現在サポートされているBox APIは少数です。 エンドポイント パス フォルダを作成 POST /folders ファイルをアップロード POST /files/content ファイルをダウンロード GET /files… # サポートされているエンドポイント アプリトークン認証で現在サポートされているBox APIは少数です。 | エンドポイント | パス | | --- | --- | | フォルダを作成 | POST /folders | | ファイルをアップロード | POST /files/content | | ファイルをダウンロード | GET /files/:id/content | | ファイルを削除 | DELETE /files/:id | | 埋め込みリンクを取得 | GET /files/:id | **Source:** [https://ja.developer.box.com/guides/authentication/app-token/endpoints/](https://ja.developer.box.com/guides/authentication/app-token/endpoints/) --- ### サポートされているファイルの種類 **Type:** guide | **Category:** レプリゼンテーション | **Section:** Developer Guides サポートされているファイルの種類 レプリゼンテーションAPIでサポートされているファイルの種類は以下のとおりです。 3Dグラフィックスとモデリングファイル ファイルの種類 PDFのサポート サムネイルのサポート テキストのサポート .3ds いいえ いいえ いいえ .box3d… # サポートされているファイルの種類 レプリゼンテーションAPIでサポートされているファイルの種類は以下のとおりです。 ## 3Dグラフィックスとモデリングファイル | ファイルの種類 | PDFのサポート | サムネイルのサポート | テキストのサポート | | --- | --- | --- | --- | | .3ds | いいえ | いいえ | いいえ | | .box3d | いいえ | いいえ | いいえ | | .dae | いいえ | いいえ | いいえ | | .fbx | いいえ | いいえ | いいえ | | .mtl | いいえ | いいえ | いいえ | | .obj | いいえ | いいえ | いいえ | | .ply | いいえ | いいえ | いいえ | | .stl | いいえ | いいえ | いいえ | ## オーディオ | ファイルの種類 | PDFのサポート | サムネイルのサポート | テキストのサポート | | --- | --- | --- | --- | | .aac | いいえ | いいえ | いいえ | | .aif | いいえ | いいえ | いいえ | | .aifc | いいえ | いいえ | いいえ | | .aiff | いいえ | いいえ | いいえ | | .amr | いいえ | いいえ | いいえ | | .au | いいえ | いいえ | いいえ | | .flac | いいえ | いいえ | いいえ | | .m4a | いいえ | いいえ | いいえ | | .mp3 | いいえ | いいえ | いいえ | | .ogg | いいえ | はい | いいえ | | .ra | いいえ | いいえ | いいえ | | .wav | いいえ | いいえ | いいえ | | .wma | いいえ | いいえ | いいえ | ## CAD | ファイルの種類 | PDFのサポート | サムネイルのサポート | テキストのサポート | | --- | --- | --- | --- | | .dwg | はい | はい | いいえ | ## ドキュメント | ファイルの種類 | PDFのサポート | サムネイルのサポート | テキストのサポート | | --- | --- | --- | --- | | .boxnote | いいえ | いいえ | はい | | .doc | はい | はい | はい | | .docx | はい | はい | はい | | .gdoc | はい | はい | はい | | .html | はい | いいえ | はい | | .msg | はい | いいえ | はい | | .odt | はい | はい | はい | | .pages | はい | はい | いいえ | | .pdf | はい | はい | はい | | .rtf | はい | はい | はい | | .wpd | はい | はい | はい | | .xhtml | はい | いいえ | はい | | .xml | はい | いいえ | はい | | .xsd | はい | いいえ | はい | | .xsl | はい | いいえ | はい | | .xbd | はい | はい | はい | | .xdw | はい | はい | はい | ## 描画 | ファイルの種類 | PDFのサポート | サムネイルのサポート | テキストのサポート | | --- | --- | --- | --- | | .ai | いいえ | はい | いいえ | | .boxcanvas | いいえ | いいえ | はい | | .indd | はい | はい | いいえ | | .psd | いいえ | はい | いいえ | | .svg | いいえ | はい | いいえ | ## 画像 | ファイルの種類 | PDFのサポート | サムネイルのサポート | テキストのサポート | | --- | --- | --- | --- | | .bmp | いいえ | はい | いいえ | | .cr2 | いいえ | はい | いいえ | | .crw | いいえ | はい | いいえ | | .dcm | いいえ | はい | いいえ | | .dicm | いいえ | はい | いいえ | | .dicom | いいえ | はい | いいえ | | .dng | いいえ | はい | いいえ | | .eps | いいえ | はい | いいえ | | .gif | いいえ | はい | いいえ | | .heic | いいえ | はい | いいえ | | .indd | はい | はい | いいえ | | .idml | はい | はい | いいえ | | .indt | はい | はい | いいえ | | .inx | はい | はい | いいえ | | .jpeg | いいえ | はい | いいえ | | .jpg | いいえ | はい | いいえ | | .nef | いいえ | はい | いいえ | | .png | いいえ | はい | いいえ | | .ps | いいえ | はい | いいえ | | .psd | いいえ | はい | いいえ | | .raf | いいえ | はい | いいえ | | .raw | いいえ | はい | いいえ | | .svg | いいえ | はい | いいえ | | .svs | いいえ | はい | いいえ | | .tif | いいえ | はい | いいえ | | .tiff | いいえ | はい | いいえ | | .tga | いいえ | はい | いいえ | | .webp | いいえ | はい | いいえ | ## プレゼンテーション | ファイルの種類 | PDFのサポート | サムネイルのサポート | テキストのサポート | | --- | --- | --- | --- | | .gslide | はい | はい | はい | | .gslides | はい | はい | はい | | .key | はい | はい | いいえ | | .odp | はい | はい | はい | | .otp | はい | はい | はい | | .ppt | はい | はい | はい | | .pptx | はい | はい | はい | ## スプレッドシート | ファイルの種類 | PDFのサポート | サムネイルのサポート | テキストのサポート | | --- | --- | --- | --- | | .csv | はい | はい | はい | | .gsheet | はい | はい | はい | | .numbers | はい | はい | いいえ | | .ods | はい | はい | はい | | .tsv | はい | はい | はい | | .xls | はい | はい | はい | | .xlsm | はい | はい | はい | | .xlsx | はい | はい | はい | ## テキストベースのファイル | ファイルの種類 | PDFのサポート | サムネイルのサポート | テキストのサポート | | --- | --- | --- | --- | | .as | はい | いいえ | はい | | .as3 | はい | いいえ | はい | | .asm | はい | いいえ | はい | | .bat | はい | いいえ | はい | | .c | はい | いいえ | はい | | .cc | はい | いいえ | はい | | .cmake | はい | いいえ | はい | | .cpp | はい | いいえ | はい | | .cs | はい | いいえ | はい | | .css | はい | いいえ | はい | | .cxx | はい | いいえ | はい | | .diff | はい | いいえ | はい | | .erb | はい | いいえ | はい | | .fdx | はい | いいえ | はい | | .groovy | はい | いいえ | はい | | .h | はい | いいえ | はい | | .haml | はい | いいえ | はい | | .hh | はい | いいえ | はい | | .java | はい | いいえ | はい | | .js | はい | いいえ | はい | | .json | はい | いいえ | はい | | .less | はい | いいえ | はい | | .log | はい | いいえ | はい | | .m | はい | いいえ | はい | | .make | はい | いいえ | はい | | .md | はい | いいえ | はい | | .ml | はい | いいえ | はい | | .mm | はい | いいえ | はい | | .php | はい | いいえ | はい | | .pl | はい | いいえ | はい | | .plist | はい | いいえ | はい | | .properties | はい | いいえ | はい | | .py | はい | いいえ | はい | | .rb | はい | いいえ | はい | | .rst | はい | いいえ | はい | | .sass | はい | いいえ | はい | | .scala | はい | いいえ | はい | | .scm | はい | いいえ | はい | | .script | はい | いいえ | はい | | .sh | はい | いいえ | はい | | .sml | はい | いいえ | はい | | .sql | はい | いいえ | はい | | .txt | はい | いいえ | はい | | .vi | はい | いいえ | はい | | .vim | はい | いいえ | はい | | .vtt | はい | いいえ | はい | | .webdoc | はい | いいえ | はい | | .yaml | はい | いいえ | はい | ## 動画 | ファイルの種類 | PDFのサポート | サムネイルのサポート | テキストのサポート | | --- | --- | --- | --- | | .3g2 | いいえ | はい | いいえ | | .3gp | いいえ | はい | いいえ | | .avi | いいえ | はい | いいえ | | .flv | いいえ | はい | いいえ | | .m2v | いいえ | はい | いいえ | | .m2ts | いいえ | はい | いいえ | | .m4v | いいえ | はい | いいえ | | .mkv | いいえ | はい | いいえ | | .mov | いいえ | はい | いいえ | | .mp4 | いいえ | はい | いいえ | | .mpeg | いいえ | はい | いいえ | | .mpg | いいえ | はい | いいえ | | .mts | いいえ | はい | いいえ | | .ogg | いいえ | はい | いいえ | | .qt | いいえ | はい | いいえ | | .ts | いいえ | はい | いいえ | | .swf | いいえ | はい | いいえ | | .wmv | いいえ | はい | いいえ | **Source:** [https://ja.developer.box.com/guides/representations/supported-file-types/](https://ja.developer.box.com/guides/representations/supported-file-types/) --- ### サムネイルレプリゼンテーションの取得 **Type:** guide | **Category:** レプリゼンテーション | **Section:** Developer Guides サムネイルレプリゼンテーションの取得 サムネイルとは小さい画像のことで、アプリケーション内でファイルのレプリゼンテーションとして使用できる.pngまたは.jpgで表されます。たとえば、ファイルをダウンロードまたはプレビューするリンクのプレースホルダとして使用されます。 1024x… # サムネイルレプリゼンテーションの取得 サムネイルとは小さい画像のことで、アプリケーション内でファイルのレプリゼンテーションとして使用できる`.png`または`.jpg`で表されます。たとえば、ファイルをダウンロードまたはプレビューするリンクのプレースホルダとして使用されます。 `1024x1024`および`2048x2048`のPNGを除くすべてのサムネイルレプリゼンテーションは、元のファイルをBoxにアップロードしたときに生成されます。 ファイルのサムネイルを取得する方法として、[サムネイルAPI](guide://representations/thumbnail)の使用は非推奨になりました。 ## 手順 サムネイルレプリゼンテーションを取得するには、以下の手順に従います。 - [すべてのレプリゼンテーションのリストを取得する](guide://representations/list-all-representations) - `[jpg?dimensions=32x32]`のように目的のサムネイル形式とサイズを表す`x-rep-hints`ヘッダーを渡して、[サムネイルをリクエストする](guide://representations/request-a-representation)。 - `url_template`を呼び出して[サムネイルをダウンロード](guide://representations/download-a-representation)する。その際、`{+asset_path}`を空の文字列に置き換えます。 場合によっては、サムネイルを直接作成できないこともあります。代わりに、APIから`location`レスポンスヘッダーで`HTTP 202`が返されます。この場所は、サムネイルの生成中に使用できる一時的な画像のためのものです。 このエンドポイントを再試行するまでの推定秒数を示すretry-afterレスポンスヘッダーも返されます。 ## 例 `x-rep-hints`ヘッダーの値の例を以下に示します。 | x-rep-hints: [jpg?dimensions=32x32] | | --- | | 32x32のJPEGサムネイルを返します。 | | x-rep-hints: [jpg?dimensions=32x32][jpg?dimensions=1024x1024] | | --- | | 32x32および1024x1024のJPEGサムネイルを返します。 | | x-rep-hints: [jpg?dimensions=32x32][png?dimensions=2048x2048] | | --- | | 32x32のJPEGサムネイルおよび2048x2048のPNGサムネイルを返します。 | | x-rep-hints: [jpg?dimensions=2048x2048,png?dimensions=2048x2048] | | --- | | 2048x2048のJPEGサムネイルおよび2048x2048のPNGサムネイルを返し、使用可能な最初のレプリゼンテーションを返します。どちらも使用可能でない場合は、レプリゼンテーションは返されません。 | ## サポートされているファイルサイズ 以下のサムネイルの形式とサイズが使用可能です。 | ファイルの種類 | サイズ | | --- | --- | | JPG | 32x32, 94x94, 160x160, 320x320, 1024x1024, 2048x2048* | | PNG | 1024x1024*, 2048x2048* | `*`が付いているサイズには、いくつかの制限があります。 ## ファイルサイズの制限 ### 2048x2048のJPEG `2048x2048`サイズのJPEGを使用できるのは、元のファイルがJPEGの場合のみです。このサイズを使用する場合は、PNGか、PNGとJPEGの両方をリクエストすることをお勧めします。 ### 動画ファイル `2048x2048`のJPEG、`2048x20148`のPNG、および`1024x1024`のPNGのレプリゼンテーションは、動画ファイルでは使用できません。 ### 元のファイルサイズ サムネイルは拡大されません。Boxにアップロードされたファイルの元のファイルサイズがレプリゼンテーションのサイズより小さい場合は、作成されるサムネイルのサイズの上限は元のファイルのサイズになります。 ## サポートされているファイルの種類 現時点でサポートされているファイルの種類は以下のとおりです。 | ファイルの種類 | ファイル拡張子 | | --- | --- | | ドキュメント | doc, docx, gdoc, gsheet, gslide, gslides, odp, ods, odt, pdf, ppt, pptx, rtf, wpd, xls, xlsm, xlsx, key, pages, numbers | | 画像 | ai, bmp, dcm, dicm, eps, gif, idml, indd, indt, inx, jpeg, jpg, png, ps, psd, svg, svs, tif, tiff, tga | | オーディオ | aac, aifc, aiff, amr, au, flac, m4a, mp3, ogg, ra, wav, wma | | 動画 | 3g2, 3gp, avi, m2v, m2ts, m4v, mkv, mov, mp4, mpeg, mpg, ogg, mts, qt, wmv | ファイルの種類が**ドキュメント**の場合、返されるレプリゼンテーションはプレースホルダアイコンとなり、実際のサムネイルではありません。 **Source:** [https://ja.developer.box.com/guides/representations/thumbnail-representation/](https://ja.developer.box.com/guides/representations/thumbnail-representation/) --- ### スコープ **Type:** guide | **Category:** APIコール | **Section:** Developer Guides スコープ 開発者コンソールでアプリケーションが作成されると、ユーザーはアプリケーションのスコープを設定する必要があります。ユーザーにBox内のファイルやフォルダへのアクセス権限が付与されるしくみと同様、アプリケーションにも、BoxユーザーやBox… # スコープ 開発者コンソールでアプリケーションが作成されると、ユーザーはアプリケーションのスコープを設定する必要があります。ユーザーにBox内のファイルやフォルダへのアクセス権限が付与されるしくみと同様、アプリケーションにも、BoxユーザーやBoxを使用する企業に代わって特定のアクションを実行するための独自の権限が付与されます。アプリケーションに対する権限セットの名前を「スコープ」と言います。つまり、アプリケーションのスコープにより、アプリケーションから呼び出すことのできる[エンドポイント](page://reference)が決まります。また、このスコープは、アプリケーションの[アクセストークン](g://authentication/tokens)が提供するアクセス権限に反映されます。 ## ユーザー権限とスコープ アクションを実行するための適切なスコープがアプリケーションに設定されている場合でも、アクセストークンと関連付けられた、呼び出しを実行するユーザーにはそのアクションを実行するための権限が必要であり、逆の場合も同様であることを理解することが重要です。 たとえば、ファイルを読み取るようにアプリケーションが設定されている場合、アクセスしようとするファイルの読み取り権限が認証済みユーザーにも必要です。 スコープ、トークンの権限、ユーザー権限がどのように連携しているかの詳細については、Boxの[セキュリティガイド](g://security)を参照してください。 ## スコープとOAuth 2承認 アプリケーションを承認するためにクライアント側のOAuth 2フローを介してユーザーを送信する際は、承認URLに一連のスコープを追加してユーザーのアクセストークンをさらに制限できます。 たとえば、アプリケーションで`root_readonly`および`root_readwrite`スコープが有効になっている場合は、ユーザーのリダイレクト時にこのスコープを指定することで、ユーザーのアクセストークンを`root_readonly`に制限できます。 ``` GET https://account.box.com/api/oauth2/authorize?scope=root_readonly&client_id=.... ``` スコープパラメータが省略されている場合、アプリケーションでは、そのアプリケーションの作成時に設定されたスコープが使用されます。 ## セルフサービススコープ これらのスコープは、アプリケーションの設定時に開発者コンソールから使用できます。[**構成**] タブの [**アプリケーションスコープ**] セクションに移動して、以下のスコープから1つ以上を選択します。 ### すべてのファイルとフォルダの読み取り | | | | --- | --- | | OAuthスコープ | root_readonly | | アプリケーションスコープ | Boxに格納されているすべてのファイルとフォルダの読み取り | アプリケーションで、認証済みユーザーはすべてのファイル/フォルダを読み取ることができるようになります。 これにより、アプリケーションにはファイルとフォルダに対する読み取り権限が付与されますが、APIコールを実行するユーザーには、アクセス対象の項目に対するアクセス権限が必要です。 つまり、[JWT](g://authentication/jwt)アプリケーションが[管理対象ユーザー](page://platform/user-types/#managed-users)の項目にアクセスする場合、サービスアカウントのトークンは、そのコンテンツにアクセスできるユーザーとして直接認証されるように、`as-user`[ヘッダー](g://authentication/jwt/as-user)を使用するか、[ユーザーアクセストークン](g://authentication/jwt/user-access-tokens)を作成する必要があります。 ### すべてのファイルとフォルダの読み取りと書き込み | | | | --- | --- | | OAuthスコープ | root_readwrite | | アプリケーションスコープ | Boxに格納されているすべてのファイルとフォルダの読み取りと書き込み | アプリケーションには、認証済みユーザーの書き込みアクセス権限が付与されます。これにより、アプリケーションでは、ファイルまたは新しいファイルバージョンのアップロード、コンテンツのダウンロード、新しいフォルダの作成、コラボレーションの更新または削除、コメントまたはタスクの作成などを実行できるようになります。 これにより、アプリケーションには項目に対する読み取り/書き込みアクセス権限が付与されますが、APIコールを行うユーザーには、コンテンツに対するアクセス権限が必要です。 ### ユーザーを管理する 開発者コンソールにある「ユーザーを管理する」スコープは、2つのOAuthスコープにマップされます。 | | | | --- | --- | | OAuthスコープ | manage_managed_users | | アプリケーションスコープ | ユーザーを管理する | アプリケーションには、[管理対象ユーザー](page://platform/user-types/#managed-users)を管理するための権限が付与されます。これにより、このアプリでは、ユーザーのプライマリログインの変更、ユーザーのパスワードのリセット、管理対象ユーザーのロールの変更を実行できます。 これを使用すると、アプリケーションでユーザーを管理できますが、クライアント側アプリケーションの場合、使用されるアクセストークンを、適切な権限を持つ管理者または共同管理者に関連付ける必要があります。 さらに、JWTアプリケーションの場合は、[アプリケーションアクセス](g://authentication/jwt/jwt-setup/#application-access)を [**アプリアクセス + Enterpriseアクセス**] にしてアプリケーションを設定する必要があります。 | | | | --- | --- | | OAuthスコープ | manage_app_users | | アプリケーションスコープ | ユーザーを管理する | アプリケーションには、[App User](page://platform/user-types/#app-user)を管理するための権限が付与されます。つまり、このスコープは、サーバー側で認証されている (JWT) アプリケーションのみに適用されます。 ### グループを管理する | | | | --- | --- | | OAuthスコープ | manage_groups | | アプリケーションスコープ | グループを管理する | アプリケーションには、企業のグループを管理するための権限が付与されます。これにより、このアプリでは、グループの作成、更新、削除のほか、グループメンバーシップの管理を実行できます。 これを使用すると、アプリケーションでグループを管理できますが、クライアント側アプリケーションの場合、使用されるアクセストークンを、適切な権限を持つ管理者または共同管理者に関連付ける必要があります。 さらに、JWTアプリケーションの場合は、[アプリケーションアクセス](g://authentication/jwt/jwt-setup/#application-access)を [**アプリアクセス + Enterpriseアクセス**] にしてアプリケーションを設定する必要があります。 ### Webhookを管理する | | | | --- | --- | | OAuthスコープ | manage_webhook | | アプリケーションスコープ | Webhookを管理する | アプリケーションには、ユーザーのWebhookを作成するための権限が付与されます。Webhookの[制限](g://webhooks/v2/limitations-v2)を確認してください。注目すべきは、1ユーザーにつき1つのアプリケーションあたりWebhookは1,000個までという制限があることです。 ### Enterpriseのプロパティを管理する | | | | --- | --- | | OAuthスコープ | manage_enterprise_properties | | アプリケーションスコープ | Enterpriseのプロパティを管理する | アプリケーションには、Enterprise Event Streamを表示するための権限に加え、Enterpriseの属性とレポートを表示および編集するための権限が付与されます。さらに、アプリケーションでは、デバイスピンの編集と削除も実行できます。 これを使用すると、アプリケーションで企業のプロパティを管理できますが、クライアント側アプリケーションの場合、使用されるアクセストークンを、適切な権限を持つ管理者または共同管理者に関連付ける必要があります。 ### リテンションポリシーを管理する | | | | --- | --- | | OAuthスコープ | manage_data_retention | | アプリケーションスコープ | リテンションポリシーを管理する | | 依存先 | enterprise_contentスコープ | アプリケーションには、Box Governanceでリテンションポリシーを表示および作成するための権限が付与されます。そのため、企業では[Box Governance](https://www.box.com/ja-jp/security/governance-and-compliance)を購入しておく必要があります。 このスコープを使用するには、`enterprise_content`スコープも適切に機能する必要があります。これらのスコープをリクエストするには、当社のサポートチャネルでチケットを作成します。 ### 署名リクエストを管理する | | | | --- | --- | | OAuthスコープ | sign_requests.readwrite | | アプリケーションスコープ | 署名リクエストを管理する | アプリケーションには、署名リクエストを取得、作成、キャンセル、および再送信するための権限が付与されます。 このスコープでは、アプリケーションに読み取り/書き込みスコープも設定する必要があります。これらのスコープは、有効にしたときに自動的に選択されます。さらに、企業ではSignが有効になっている必要があります。 ### Box AI APIを管理する | | | | --- | --- | | OAuthスコープ | ai.readwrite | | アプリケーションスコープ | AIを管理する | アプリケーションには、Box AI APIにリクエストを送信するための権限が付与されます。 ### Box Relayを管理する | | | | --- | --- | | OAuthスコープ | manage_triggers | | アプリケーションスコープ | Box Relayを管理する | アプリケーションには、ワークフローを取得し、`WORKFLOW_MANUAL_START`タイプのフローを開始するための権限が付与されます。 このスコープでは、アプリケーションに読み取り/書き込みスコープも設定する必要があります。 ## リクエストに応じて使用可能 リクエスト時にのみ使用できる追加のスコープがいくつかあります。これを使用するには、Boxの[サポートチーム](page://support)にチケットを送信してください。サポートチームは、個別にリクエストを確認し、ユースケースにスコープが必要な場合にのみ承認を行います。 無料トライアルのアカウントでは、スコープを追加でリクエストすることはできません。以下に示すスコープの有効化についてサポートリクエストを申請する前に、有料のEnterpriseアカウントにログインするか、[無料のDeveloperアカウントをEnterpriseアカウントプランにアップグレード](https://www.box.com/ja-jp/pricing)してください。 ### リーガルホールドを管理する | | | | --- | --- | | OAuthスコープ | manage_legal_holds | | アプリケーションスコープ | リテンションポリシーを管理する | | 依存先 | enterprise_contentスコープ | アプリケーションには、Box Governanceでリテンションポリシーを表示および作成するための権限が付与されます。そのため、会社ではBox Governanceを購入しておく必要があります。 このスコープが適切に機能するには、`enterprise_content`スコープを必要とします。このスコープは、当社のサポートチャネルでチケットを作成してリクエストできます。 ### メール通知を抑制する | | | | --- | --- | | アプリケーションスコープ | APIコールからメール通知を抑制する | APIコールが行われるときに、一部の種類の[メール通知](g://api-calls/suppress-notifications)を抑制できます。 ### グローバルコンテンツマネージャ (GCM) | | | | --- | --- | | OAuthスコープ | enterprise_content | | アプリケーションスコープ | グローバルコンテンツマネージャ | Enterprise設定に基づいて、管理者、[共同管理者](https://support.box.com/hc/en-us/articles/1500005433721-Users-Groups-Settings#h_01GSE1DYJKTY9EXEWJEDKFHCNV)、[サービスアカウント](page://platform/user-types/#service-account)が、所有していない、またはEnterprise内でコラボレータになっていない任意のコンテンツを取得できるようにします。 リテンションポリシーとリーガルホールドを管理するには、このスコープが必要です。 # 副次的影響 アプリケーションに対してこのスコープを有効にすると、一部のAPIコールの動作が変更されます。その最も顕著な例として、`as-user`ヘッダーを使用してユーザーとして明示的に認証しないとコンテンツを書き込めなくなることが挙げられます。また、このスコープを有効にすると、別の企業のユーザーが所有するコンテンツにはアクセスできなくなります。 そのため、やむを得ない場合を除き、このスコープはプロビジョニングされません。 ## ダウンスコープ用のスコープ 特にトークンをクライアント側 (ブラウザなどの公開された環境) に公開する必要がある場合など、アクセストークンをより厳格な権限レベルに[ダウンスコープ](g://authentication/tokens/downscope)しなければならないことがあります。その主な例として、ユーザーのブラウザでアクセストークンが必要となる[Box UI Elements](https://github.com/box/box-ui-elements)を使用する場合が挙げられます。 既存のアクセストークンをダウンスコープするために[`POST /oauth2/token`](endpoint://post-oauth2-token)エンドポイントで使用できる**追加**のスコープのリストを以下に示します。 | OAuthスコープ | 影響を受けるUI Element | 説明 | | --- | --- | --- | | annotation_edit | プレビュー | 注釈の編集と削除をユーザーに許可します。 | | annotation_view_all | プレビュー | すべてのユーザーによる注釈の表示をユーザーに許可します。 | | annotation_view_self | プレビュー | ユーザーに自分の注釈のみの表示を許可します。 | | base_explorer | Explorer | ユーザー/ファイル/トークンの権限に基づいて、フォルダツリー内のコンテンツへのアクセスを許可します。 | | base_picker | Picker | ユーザー/ファイル/トークンの権限に基づいて、フォルダツリー内のコンテンツへのアクセスを許可します。 | | base_preview | プレビュー | ファイルのプレビューのみをユーザーに許可します。 | | base_sidebar | Sidebar | サイドバーUI Elementに必要なファイルの基本情報の取得をユーザーに許可します。 | | base_upload | Uploader | トークンのダウンスコープ時に、resourceの下で指定されたフォルダへのアップロードを許可します。 | | item_delete | Explorer | ファイルとフォルダの削除を許可します。 | | item_download | Explorer、Preview | ファイルまたはフォルダのコンテンツのダウンロードを許可します。 | | item_preview | Explorer | ファイルのプレビューを有効にします。 | | item_rename | Explorer | ファイルとフォルダの名前変更を許可します。 | | item_share | Explorer、Picker | トークン交換のresourceで指定された項目の共有を許可します。 | | item_upload | Picker | Content Pickerでのアップロードを許可します。 | また、ダウンスコープ時には標準OAuthスコープもサポートされます。 | OAuthスコープ | 説明 | | --- | --- | | ai.readwrite | AI APIを管理する | | manage_managed_users | 管理対象ユーザーを管理する | | manage_app_users | App Userを管理 | | manage_data_retention | リテンションポリシーを管理する | | manage_enterprise_properties | Enterpriseのプロパティを管理する | | manage_groups | グループを管理する | | manage_webhook | Webhookを管理する | | sign_requests.readwrite | 署名リクエストを管理する | **Source:** [https://ja.developer.box.com/guides/api-calls/permissions-and-errors/scopes/](https://ja.developer.box.com/guides/api-calls/permissions-and-errors/scopes/) --- ### ステータスコード **Type:** guide | **Category:** APIコール | **Section:** Developer Guides ステータスコード Box APIの使用時に受信したHTTPステータスコードの解釈に以下のルールを適用できます。 HTTPステータス 200-299 BoxはAPIリクエストを受信、認識、承認しました。リクエストは完了したか、完了に向けた処理中です。 300-399 Box… # ステータスコード Box APIの使用時に受信したHTTPステータスコードの解釈に以下のルールを適用できます。 | HTTPステータス | | | --- | --- | | 200-299 | BoxはAPIリクエストを受信、認識、承認しました。リクエストは完了したか、完了に向けた処理中です。 | | 300-399 | BoxはAPIリクエストを受信、認識、承認しましたが、リクエストを完了するにはクライアントによるさらなる処理が必要です。多くの場合、これには他のURLへのリダイレクトが含まれます。 | | 400-499 | リクエストの処理中にクライアントエラーが発生しました。多くの場合、クライアントが適切なパラメータを指定しなかった、リソースにアクセスできなかった、またはそれ以外の場合にも不可能なアクションを実行しようとしたことが原因です。 | | 500-599 | Boxはリクエストを受信、承認しましたが、処理中にBox内でエラーが発生しました。これらのエラーは、クライアントのリクエストの問題ではなく、Boxの問題を示します。 | **Source:** [https://ja.developer.box.com/guides/api-calls/status-codes/](https://ja.developer.box.com/guides/api-calls/status-codes/) --- ### ストリームタイプ **Type:** guide | **Category:** イベント | **Section:** Developer Guides ストリームタイプ ストリームタイプ スコープ 目的 説明 保持期間 アクセスパターン admin_logs 1つのEnterprise (承認された管理者向け) 履歴の照会 イベントの履歴を最大1年分照会できるようにします 365日 期間でフィルタをかけた後、stream… # ストリームタイプ | ストリームタイプ | スコープ | 目的 | 説明 | 保持期間 | アクセスパターン | | --- | --- | --- | --- | --- | --- | | admin_logs | 1つのEnterprise (承認された管理者向け) | 履歴の照会 | イベントの履歴を最大1年分照会できるようにします | 365日 | 期間でフィルタをかけた後、stream_positionでレスポンスのページ割りを行う | | admin_logs_streaming | 1つのEnterprise (承認された管理者向け) | ほぼリアルタイムでの登録 | ほぼリアルタイムでライブイベントにサブスクライブできるようにします | 14日 | stream_positionを使用してポーリングする | | all (デフォルト) | 1人のユーザー (任意のユーザー向け) | ほぼリアルタイムでの登録 | ユーザーに関するすべてのイベントを返します | 21日 | stream_positionを使用してポーリングまたはLong pollingを行う | | changes | 1人のユーザー (任意のユーザー向け) | ほぼリアルタイムでの登録 | ファイルの更新やコラボレーションなど、ファイルツリーを変更する可能性があるイベントを返します | 21日 | stream_positionを使用してポーリングまたはLong pollingを行う | | sync | 1人のユーザー (任意のユーザー向け) | ほぼリアルタイムでの登録 | changesに似ていますが、同期対象フォルダのみに適用されます | 31日 | stream_positionを使用してポーリングまたはLong pollingを行う | **Source:** [https://ja.developer.box.com/guides/events/parameters/stream-types/](https://ja.developer.box.com/guides/events/parameters/stream-types/) --- ### ストリーム位置のページネーション **Type:** guide | **Category:** イベント | **Section:** Developer Guides ストリーム位置のページネーション イベントストリームのページネーションは、stream_positionパラメータの使用によって機能します。 最初に、stream_positionクエリパラメータを指定せずにリクエストをGET /events APIに送信します。 このAPI… # ストリーム位置のページネーション イベントストリームのページネーションは、`stream_position`パラメータの使用によって機能します。 最初に、`stream_position`クエリパラメータを指定せずにリクエストを[`GET /events`](e://get_events) APIに送信します。 ``` curl https://api.box.com/2.0/events \ -H "authorization: Bearer ACCESS_TOKEN" ``` このAPIにより、使用可能なすべてのイベントが古い方から順に返されます。レスポンスには`next_stream_position`値も含まれており、これを使用して、ストリーム内の次の位置に対する次のAPIコールを実行できます。 ``` curl https://api.box.com/2.0/events?stream_position=388720462721 \ -H "authorization: Bearer ACCESS_TOKEN" ``` `stream_position`は、最も近いストリーム位置が返されるよう`now`に設定することもできます。 ``` curl https://api.box.com/2.0/events?stream_position=now \ -H "authorization: Bearer ACCESS_TOKEN" ``` この場合、APIによって空のリストと、次の呼び出しに使用できる`next_stream_position`が返されます。 **Source:** [https://ja.developer.box.com/guides/events/parameters/pagination/](https://ja.developer.box.com/guides/events/parameters/pagination/) --- ### すべてのメタデータテンプレートのリストの取得 **Type:** quick-start | **Category:** メタデータ | **Section:** Developer Guides すべてのメタデータテンプレートのリストの取得 会社には、ユーザーが独自に作成しなくてもすぐに使用できるメタデータテンプレートのリストがすでに存在することがよくあります。 一般に、メタデータテンプレートには、自社のみで使用できるものと、Box… # すべてのメタデータテンプレートのリストの取得 会社には、ユーザーが独自に作成しなくてもすぐに使用できるメタデータテンプレートのリストがすでに存在することがよくあります。 一般に、メタデータテンプレートには、自社のみで使用できるものと、Boxを使用するすべての企業が使用できるものがあります。テンプレートの`scope`により、テンプレートはすべての人が利用可能か (`global`)、自社のみで利用可能か (`enterprise`) が定義されます。 メタデータのスコープの詳細を確認する ## テンプレートのリストの取得 すべてのユーザーが使用できる[グローバルテンプレート](e://get_metadata_templates_global)はいくつかあります。 これらのテンプレートの多くはBoxの内部使用を目的としたものですが、アプリケーションでこれらを使用したり適用したりすることもできます。会社のニーズに固有のデータを保持するには、[社内のアプリケーションや管理者が作成した](e://get_metadata_templates_enterprise)テンプレートがより便利です。 ## メタデータテンプレート [メタデータテンプレート](g://metadata/templates)には、ファイルまたはフォルダに割り当てることができる一連のキー/値ペアが記載されています。 たとえば、`customerInfo`テンプレートは顧客に関するデータを保持しており、顧客名と顧客の業種のフィールドがあるとします。 ``` { "id": "100ac693-a468-4b37-9535-05984b804dc2", "type": "metadata_template", "templateKey": "customerInfo", "scope": "enterprise_12345", "displayName": "Customer Info", "hidden": false, "copyInstanceOnItemCopy": false, "fields": [ { "id": "5c6a5906-003b-4654-9deb-472583fc2930", "type": "string", "key": "name", "displayName": "Name", "hidden": false }, { "id": "cf3eb5b8-52ef-456c-b175-44354a27e289", "type": "enum", "key": "industry", "displayName": "Industry", "options": [ {"key": "Technology"}, {"key": "Healthcare"}, {"key": "Legal"} ], "hidden": false } ] } ``` 使用できるテンプレートのリストを取得しました **Source:** [https://ja.developer.box.com/guides/metadata/quick-start/list-all/](https://ja.developer.box.com/guides/metadata/quick-start/list-all/) --- ### すべてのメタデータテンプレートのリストの取得 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides すべてのメタデータテンプレートのリストの取得 enterpriseスコープまたはglobalスコープのメタデータテンプレートのリストを取得できます。 グローバルテンプレートのリストを取得 すべてのグローバルメタデータテンプレートのリストを取得するには、GET /metadata… # すべてのメタデータテンプレートのリストの取得 [enterpriseスコープまたはglobalスコープ](g://metadata/scopes)のメタデータテンプレートのリストを取得できます。 ## グローバルテンプレートのリストを取得 すべてのグローバルメタデータテンプレートのリストを取得するには、[`GET /metadata_templates/global`](e://get_metadata_templates_global) APIエンドポイントを呼び出します。 このAPIは、Boxによって作成され、すべての会社が使用できるすべてのメタデータテンプレートのリストを返します。 ## 現在の会社のテンプレートのリストを取得 現在の会社内で使用するために作成されたすべてのメタデータテンプレートのリストを取得するには、[`GET /metadata_templates/enterprise`](e://get_metadata_templates_enterprise) APIエンドポイントを呼び出します。 このAPIは、この会社によって作成されたすべてのメタデータテンプレートのリストを返します。これらのテンプレートは、この会社内のファイルにのみ適用できます。 ## ページネーション このAPIでは、[マーカーベースのページネーション](g://api-calls/pagination/marker-based)が使用されており、レスポンスの本文で、より多くのテンプレートを使用できることを示す`next_marker`値を返すことができます。 **Source:** [https://ja.developer.box.com/guides/metadata/templates/list/](https://ja.developer.box.com/guides/metadata/templates/list/) --- ### すべてのリーガルホールドポリシーのリストの取得 **Type:** guide | **Category:** リーガルホールド | **Section:** Developer Guides すべてのリーガルホールドポリシーのリストの取得 会社内に作成されたすべてのリーガルホールドポリシーのリストを取得するには、GET /legal_hold_policies APIエンドポイントを呼び出します。 必須のスコープ リーガルホールドAPI… # すべてのリーガルホールドポリシーのリストの取得 会社内に作成されたすべてのリーガルホールドポリシーのリストを取得するには、[`GET /legal_hold_policies`](e://get_legal_hold_policies) APIエンドポイントを呼び出します。 ## 必須のスコープ リーガルホールドAPIのいずれかを使用する前に、アプリケーションでは適切なスコープを有効にしておく必要があります。詳細については、[必須のスコープ](g://legal-holds#required-scopes)を参照してください。 **Source:** [https://ja.developer.box.com/guides/legal-holds/list/](https://ja.developer.box.com/guides/legal-holds/list/) --- ### すべてのリテンションポリシーのリストの取得 **Type:** guide | **Category:** リテンションポリシー | **Section:** Developer Guides すべてのリテンションポリシーのリストの取得 会社内に作成されたすべてのリテンションポリシーのリストを取得するには、GET /retention_policies APIエンドポイントを呼び出します。 必須のスコープ リテンションポリシーAPI… # すべてのリテンションポリシーのリストの取得 会社内に作成されたすべてのリテンションポリシーのリストを取得するには、[`GET /retention_policies`](e://get_retention_policies) APIエンドポイントを呼び出します。 ## 必須のスコープ リテンションポリシーAPIのいずれかを使用する前に、アプリケーションでは適切なスコープを有効にしておく必要があります。詳細については、[必須のスコープ](g://retention-policies#required-scopes)を参照してください。 **Source:** [https://ja.developer.box.com/guides/retention-policies/list/](https://ja.developer.box.com/guides/retention-policies/list/) --- ### セキュリティ **Type:** guide | **Category:** セキュリティ | **Section:** Developer Guides セキュリティ Box APIを使い始めたばかりの開発者でも、アプリケーションの承認を担当するBox管理者でも、Boxに保存されたコンテンツを保護するためにセキュリティメカニズムを理解することは非常に重要です。 Box APIは、Box… # セキュリティ Box APIを使い始めたばかりの開発者でも、アプリケーションの[承認](g://authorization/platform-app-approval)を担当するBox管理者でも、Boxに保存されたコンテンツを保護するためにセキュリティメカニズムを理解することは非常に重要です。 Box APIは、Boxウェブアプリと同じセキュリティの原則と制限に従います。つまり、Box APIを利用しても、コンテンツの[権限](https://support.box.com/hc/ja/articles/360044196413-%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%A9%E9%99%90%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)、[ウォーターフォール型のフォルダ構造](https://support.box.com/hc/ja/articles/360043697254-%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E3%81%AE%E6%A8%A9%E9%99%90%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)、または管理者向けの要件を回避することはできません。 ## アクセストークン さまざまなBox APIコールの中核となるのは[アクセストークン](g://authentication/tokens)です。ユーザー名とパスワードは使用できないため、Boxサーバーにはユーザーの本人確認を行う手段が必要になります。アクセストークンの全機能には、ユーザーの権限、トークンの権限、アプリケーションの設定が含まれます。 アクセストークンは認証済みのユーザーを表し、ユーザーが問題なく呼び出すことができるコンテンツを決定します。Boxウェブアプリを使用する場合と同様に、問題なく操作できるのは、アクセストークンに関連付けられたユーザーが所有するコンテンツまたはコラボレータとなっているコンテンツのみです。これは、トークンの[ダウンスコープ](g://authentication/tokens/downscope)によってさらに制限できます。 [アクセストークン](g://authentication/tokens)の有効期限は60分のみですが、必要に応じてそれより前に[取り消す](e://post-oauth2-revoke)ことができます。アクセストークンの有効期限が切れると、OAuth 2.0アプリケーションを使用している場合、[更新トークン](g://authentication/tokens/refresh)を別のアクセストークンと[交換](e://post-oauth2-token--refresh)できます。更新トークンは、60日後または1回の使用後に有効期限が切れます。また、サーバー認証アプリケーションを使用している場合は、新しいアクセストークンを得るために[アクセストークンをリクエストエンドポイント](e://post-oauth2-token)を呼び出す必要があります。セキュリティ上の理由により、Boxでは有効期間の長いアクセストークンを許可していません。 404エラーが発生する理由がわからない場合は、まず、現在のユーザーを取得エンドポイントを使用して、アクセストークンに関連付けられているユーザーを確認することをお勧めします。 ## スコープ [スコープ](g://api-calls/permissions-and-errors/scopes)は、アプリケーションの作成時に[開発者コンソール](https://app.box.com/developers/console)で構成されます。スコープにより、150を超えるエンドポイントのうち、アプリケーションが問題なく呼び出せるものが決まります。 スコープはユーザーの権限と連動しているため、書き込みスコープを付与しても、ユーザーは、Box Enterpriseのすべてのコンテンツに自動的にアクセスできるわけではありません。つまり、認証済みユーザーは、アクセス権限を持つコンテンツに対する書き込み呼び出しを実行したときに、成功を示すAPIレスポンスを受け取ることができます。 たとえば、ユーザーの管理およびグループの管理のスコープだけが有効になっているアプリケーションを考えてみましょう。このアプリケーションのアクセストークンがフォルダの情報を取得するAPIコールを実行しようとすると、関連付けられているユーザーがそのフォルダを所有している場合でも、403エラーが返されます。これは、この操作を実行するには読み取りスコープが必要なためです。このアプリケーションのアクセストークンには、ユーザーおよびグループに関連したAPIコールに対してのみ、成功を示すレスポンスが返されます。 ## 制限されたエンドポイント 適切な[権限](https://support.box.com/hc/ja/articles/360044194393-%E5%85%B1%E5%90%8C%E7%AE%A1%E7%90%86%E8%80%85%E6%A8%A9%E9%99%90%E3%81%AE%E4%BB%98%E4%B8%8E%E3%81%A8%E5%A4%89%E6%9B%B4)を付与された管理者または共同管理者のみが問題なく使用できるAPIエンドポイントがいくつかあります。原則として、管理者または共同管理者だけがBox管理コンソールで実行できる操作の場合、その操作のAPIコールを完了するには、これらのユーザーのいずれかに関連付けられたアクセストークンが必要になります。これについては、必要に応じて、特定のエンドポイントに関するAPI[リファレンス](page://reference)のドキュメントを参照してください。 管理者に制限されたエンドポイントの一部を以下に示します。 - [ユーザー](e://resources/user)の作成、削除、またはその情報の取得 - [グループ](e://resources/group)の作成、削除、または変更 - ユーザーまたは企業の[イベント](e://resources/event)の表示 企業でBox GovernanceやBox Shieldなどのアドオン製品を購入している場合は、以下のように、管理者ユーザーのアクセストークンでのみ使用できるエンドポイントが他にもあります。 - [セキュリティ分類](e://resources/classification)の操作 - [リーガルホールドポリシー](e://resources/legal-hold-policy)と[割り当て](e://resources/legal-hold-policy-assignment)の操作 - [リテンションポリシー](e://resources/retention-policies)と[割り当て](e://resources/retention-policy-assignment)の操作 ## アプリケーションアクセス サーバー認証 ([JWT](g://authentication/jwt)使用) または[クライアント資格情報許可](g://authentication/client-credentials)を利用するアプリケーションのアプリケーションアクセスは、[開発者コンソール](https://app.box.com/developers/console)でのみ構成できます。この設定により、アプリケーションで使用できる[ユーザーのタイプ](page://platform/user-types)が決まります。[**アプリアクセスのみ**] と [**アプリ + Enterpriseアクセス**] という2つのオプションがあります。 Box管理コンソールでこれらのアプリケーションのいずれかを[承認](g://authorization/platform-app-approval)すると、そのアプリケーションを表す[サービスアカウント](page://platform/user-types/#service-account) (`AutomationUser_xxxx_@boxdevedition.com`) が自動的に生成されます。このアカウントは管理者に似たユーザーで、APIを介してしかアクセスできません。その後、このユーザーを使用して、[App User](page://platform/user-types/#app-user)と呼ばれる、アプリケーションのユーザーを作成することができます。サービスアカウントとApp Userしか操作する必要がないアプリケーションの場合は、[**アプリアクセスのみ**] を選択します。[管理対象ユーザー](page://platform/user-types/#managed-users)とその既存のBoxコンテンツを操作する必要があるアプリケーションの場合は、[アプリ + Enterpriseアクセス] を選択します。 たとえば、読み取り/書き込みスコープと [アプリアクセスのみ] が指定されたJWTアプリケーションが管理コンソールで適切に[承認](g://authorization/platform-app-approval)されているとします。管理対象ユーザーがアクセストークンを取得し、自分が所有するフォルダに対してAPIコールを実行すると、「Cannot obtain token based on the enterprise configuration for your app (アプリに対するEnterpriseの構成に基づきトークンを取得できません)」というメッセージとともに400エラーが返されます。ユーザーにコンテンツへのアクセス権限があり、適切なスコープが有効になっていて、アプリが承認されていても、選択したアプリケーションアクセスで許可されるのは、アプリケーションによるサービスアカウントとApp Userの操作のみです。 ## Enterprise設定と承認 Box APIに関して言えば、注意すべきEnterprise設定がいくつかあります。 Platformアプリケーションは、公開アプリケーションと未公開アプリケーションという2つのカテゴリに分類されます。公開アプリケーションは、[Box統合](https://app.box.com/services)に表示されます。Box管理者は、公開アプリケーションと未公開アプリケーションをデフォルトで有効にすることによって、承認なしで使用できるようにするかどうかを決定できます。これらの設定のステータスにより、使用するアプリケーションを問題なく[承認](g://authorization/platform-app-approval)するために必要な操作が決まります。 上記の設定に関係なく、[JWT](g://authentication/jwt)または[クライアント資格情報許可](g://authentication/client-credentials)を利用するアプリケーションを企業で使用するために、管理者はBox管理コンソールでそのアプリケーションを明示的に[承認](g://authorization/platform-app-approval)する必要があります。承認は特定時点でのスナップショットです。つまり、開発者が開発者コンソールに再度アクセスして構成を変更した場合、管理者は、生成されたアクセストークンにその変更を反映するためにアプリケーションを再承認する必要があります。 [**デフォルトで未公開アプリを無効にする**] の設定をオンにした場合、管理者は、認証方法として[OAuth 2.0](g://authentication/oauth2)を利用しているアプリケーションを明示的に[有効にする](g://authorization/platform-app-approval)必要もあります。 また、この設定をオンにした場合は、サーバー認証アプリの有効化も必要になります。 **Source:** [https://ja.developer.box.com/guides/security/](https://ja.developer.box.com/guides/security/) --- ### セルフホストBox MCPサーバー **Type:** guide | **Category:** Box MCPサーバー | **Section:** Developer Guides セルフホストBox MCPサーバー セルフホストBox MCPサーバーとは、さまざまな操作 (ファイル検索、テキスト抽出、AIベースのクエリ実行、データ抽出など) を行うためにBox APIと統合されているPythonプロジェクトです。Box Pythonの次世代SDK… # セルフホストBox MCPサーバー [セルフホストBox MCPサーバー](https://github.com/box-community/mcp-server-box.git)とは、さまざまな操作 (ファイル検索、テキスト抽出、AIベースのクエリ実行、データ抽出など) を行うためにBox APIと統合されているPythonプロジェクトです。Box Pythonの次世代SDKライブラリを利用し、Boxのファイルやフォルダを操作するための一連のツールを提供します。 ## インストール ### 前提条件 - Python `3.13`以上 - Box Platformアプリの資格情報 (クライアントID、クライアントシークレット) セルフホストBox MCPサーバーを設定するには、このセクションの手順に従います。 1. リポジトリを複製します。 ``` git clone https://github.com/box-community/mcp-server-box.git cd mcp-server-box ``` 1. `uv`がマシンにインストールされていない場合はインストールします。 ``` curl -LsSf https://astral.sh/uv/install.sh | sh ``` ``` powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" ``` その後ターミナルを再起動し、`uv`コマンドが取得されることを確認します。 1. プロジェクトを作成して設定します。 ``` # Create virtual environment and activate it uv venv source .venv/bin/activate # Lock the dependencies uv lock ``` ``` # Create virtual environment and activate it uv venv .venv\Scripts\activate # Lock the dependencies uv lock ``` 1. ルートディレクトリに`.env`ファイルを作成し、Box Platformアプリの資格情報を入力します。 ``` BOX_CLIENT_ID=your_client_id BOX_CLIENT_SECRET=your_client_secret ``` 動画によるチュートリアルを視聴して、Box MCPツールの使用例を確認することもできます。 ## Box MCPサーバーのローカルでの実行 Box MCPサーバーを起動するには、次のコマンドを実行します。 ``` uv --directory /Users/USER_NAME/PATH_TO_PROJECT/mcp-server-box run src/mcp_server_box.py ``` ローカルの設定が反映されるようにパスを更新します。 ### CursorをBox MCPクライアントとして使用する 前提条件: - [Cursorデスクトップアプリ](https://www.cursor.com/)をダウンロードする CursorでBox MCPサーバーの使用を開始するには、以下の手順に従います。 1. Cursorアプリを開きます。 2. 歯車アイコンをクリックして設定を開きます。 3. [Cursor Settings] タブで [`MCP`] を選択します。 4. [`Add new global MCP server`] ボタンをクリックします。これにより、`mcp.json`ファイルが開きます。 5. ローカルの設定を使用して値を更新し、次のJSONを貼り付けます。 ``` { "mcpServers": { "box": { "command": "uv", "args": [ "--directory", "/Users/USER_NAME/PATH_TO_PROJECT/mcp-server-box", "run", "src/mcp_server_box.py" ] } } } ``` 1. `mcp.json`ファイルを保存して閉じます。 2. 必要に応じて、Cursorを再起動します。 3. `box_authorize_app_tool`ツールを使用して、Box MCPの使用を開始します。 ### ClaudeをBox MCPクライアントとして使用する 前提条件: - [Claude for Desktop](https://claude.ai/download)クライアントをダウンロードする - 必要に応じて、VS Codeの[`code`](https://code.visualstudio.com/docs/setup/mac#_configure-the-path-with-vs-code)コマンドを設定する Claude for DesktopでBox MCPを設定するには、以下の手順に従います。 1. `claude_desktop_config.json`を編集します。 ターミナルで次のコマンドを実行します。 ``` code ~/Library/Application\ Support/Claude/claude_desktop_config.json ``` または、Claudeのメインのナビゲーションで [`Settings`] を選択します。[Developers] タブを選択し、[`Edit Config`] をクリックします。これにより、`claude_desktop_config.json`を含むフォルダウィンドウが表示されます。 1. 構成を追加します。 ``` { "mcpServers": { "mcp-server-box": { "command": "uv", "args": [ "--directory", "/Users/Users/USER_NAME/PATH_TO_PROJECT/mcp-server-box", "run", "src/mcp_server_box.py" ] } } } ``` 1. Claudeデスクトップアプリを再起動します。 2. `box_authorize_app_tool`を使用してBox MCPサーバーを認証します。 ## 利用可能なツール ### 認証と承認 | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | get_box_client | コンテキストからBoxクライアントを取得するためのヘルパー関数 | - ctx (Context): リクエストのコンテキスト。 | Boxクライアントインスタンス | | box_who_am_i | 現在のユーザーの情報を取得します | - ctx (Context): リクエストのコンテキスト。 | ユーザー情報の文字列 | | box_authorize_app_tool | Boxアプリケーションを承認します | なし | 承認ステータスメッセージ | ### 検索とナビゲーション | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | box_search_tool | Box内のファイルを検索します | - query (str): 検索クエリ。 - file_extensions (List[str], optional): 拡張子によるフィルタ。 - where_to_look_for_query (List[str], optional): 検索する場所。 - ancestor_folder_ids (List[str], optional): 検索を制限するためのフォルダID。 | 改行で区切られた、ファイル名とIDのリスト | | box_search_folder_by_name | 名前でフォルダを検索します | folder_name (str): フォルダの名前 | フォルダIDと情報 | | box_list_folder_content_by_folder_id | フォルダコンテンツのリストを取得します | folder_id (str): フォルダのID。 is_recursive (bool): 再帰的にリストを取得するかどうか。 | JSON形式のフォルダコンテンツ | ### ファイル操作 | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | box_read_tool | Boxファイルのテキストコンテンツを読み取ります | - file_id (str): 読み取るファイルのID。 | ファイルコンテンツ | | box_upload_file_from_path_tool | ローカルパスからファイルをアップロードします | file_path (str): ローカルファイルパス。 folder_id (str, optional): アップロード先フォルダID。 new_file_name (str, optional): 新しいファイルの名前。 | ファイルの詳細またはエラーメッセージ | | box_upload_file_from_content_tool | コンテンツをファイルとしてアップロードします | content (str|bytes): アップロードするコンテンツ。 file_name (str): ファイル名。 folder_id (str, optional): アップロード先フォルダID。 is_base64 (bool, optional): コンテンツがbase64でエンコードされているかどうか。 | アップロードの成功を示すメッセージ | | box_download_file_tool | Boxからファイルをダウンロードします | file_id (str): ファイルID。 save_file (bool, optional): ローカルに保存するかどうか。 save_path (str, optional): ローカルの保存パス。 | ファイルコンテンツまたは保存の確認 | | get_file_content | ファイルからテキストコンテンツを抽出します | file_id (str): ファイルID。 | テキストのファイルコンテンツ | ### フォルダ管理 | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | ツール | 説明 | パラメータ | 戻り値 | ### Box AI | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | box_ask_ai_tool | ファイルについてBox AIに質問します | file_id (str): ファイルID。 prompt (str): AIに対する質問。 | AIの応答 | | box_ask_ai_tool_multi_file | 複数のファイルを使用してBox AIにクエリを実行します | file_ids (List[str]): ファイルIDのリスト。 prompt (str): AIに対する指示。 | AIが生成した回答 | | box_hubs_ask_ai_tool | HubについてBox AIに質問します | hubs_id (str): HubのID。 prompt (str): AIに対する質問。 | AIの応答 | | box_ai_extract_data | AIを使用してファイルからデータを抽出します | file_id (str): ファイルID。 fields (str): 抽出するフィールド。 | JSON形式で抽出されたデータ | ### コラボレーション | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | box_collaboration_list_by_file_tool | 特定のファイルのすべてのコラボレーションのリストを取得します | ctx (Context): リクエストのコンテキスト。 file_id (str): BoxファイルのID。 | コラボレーションのリスト (JSON形式) | | box_collaboration_list_by_folder_tool | 特定のフォルダのすべてのコラボレーションのリストを取得します | ctx (Context): リクエストのコンテキスト。 folder_id (str): BoxフォルダのID。 | コラボレーションのリスト (JSON形式) | | box_collaboration_delete_tool | 特定のコラボレーションを削除します | ctx (Context): リクエストのコンテキスト。 collaboration_id (str): コラボレーションのID。 | 削除の確認 | | box_collaboration_file_group_by_group_id_tool | グループをコラボレータとしてファイルに追加します | ctx (Context): リクエストのコンテキスト。 file_id (str): BoxファイルのID。 group_id (str): グループのID。 role (str, optional): コラボレーションロール (デフォルト: 「編集者」)。 | 作成されたコラボレーションの詳細 | ### グループ | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | box_groups_search_tool | 名前でグループを検索します (部分一致) | ctx (Context): リクエストのコンテキスト。 query (str): 検索クエリ。 | 一致するグループのリスト (JSON形式) | | box_groups_list_members_tool | 特定のグループのすべてのメンバーのリストを取得します | ctx (Context): リクエストのコンテキスト。 group_id (str): グループのID。 | グループメンバーのリスト (JSON形式) | | box_groups_list_by_user_tool | 特定のユーザーが属しているすべてのグループを取得します | ctx (Context): リクエストのコンテキスト。 user_id (str): ユーザーのID。 | グループのリスト (JSON形式) | ### ユーザー | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | box_users_list_tool | Boxアカウント内のすべてのユーザーのリストを取得します | - ctx (Context): リクエストのコンテキスト。 | ユーザーのリスト (JSON形式) | | box_users_locate_by_name_tool | 名前でユーザーを検索します (完全一致) | ctx (Context): リクエストのコンテキスト。 name (str): ユーザーの名前。 | ユーザーの詳細 (JSON形式) | | box_users_locate_by_email_tool | メールアドレスでユーザーを検索します (完全一致) | ctx (Context): リクエストのコンテキスト。 email (str): メールアドレス。 | ユーザーの詳細 (JSON形式) | | box_users_search_by_name_or_email_tool | 名前またはメールアドレスでユーザーを検索します (部分一致) | ctx (Context): リクエストのコンテキスト。 query (str): 検索クエリ。 | 一致するユーザーのリスト (JSON形式) | ### Boxの共有リンク | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | box_shared_link_file_get_tool | ファイルの共有リンクを取得します | ctx (Context): リクエストのコンテキスト。 file_id (str): ファイルのID。 | 共有リンクの詳細 (JSON形式) | | box_shared_link_file_create_or_update_tool | ファイルの共有リンクを作成または更新します | ctx (Context): リクエストのコンテキスト。 file_id (str): ファイルのID。 access (str, optional): アクセスレベル。 can_download (bool, optional): ダウンロード可能かどうか。 can_preview (bool, optional): プレビュー可能かどうか。 can_edit (bool, optional): 編集可能かどうか。 password (str, optional): パスワード。 vanity_name (str, optional): バニティ名。 unshared_at (str, optional): 有効期限。 | 作成/更新された共有リンクの詳細 (JSON形式) | ### Box Toolsのウェブリンク | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | box_web_link_create_tool | Boxウェブリンクを作成します | ctx (Context): リクエストのコンテキスト。 url (str): ウェブリンクのURL。 parent_folder_id (str): 親フォルダID。 name (str, optional): ウェブリンクの名前。 description (str, optional): 説明。 | 作成されたウェブリンクの詳細 (JSON形式) | | box_web_link_get_by_id_tool | IDを指定してBoxウェブリンクを取得します | ctx (Context): リクエストのコンテキスト。 web_link_id (str): ウェブリンクのID。 | ウェブリンクの詳細 (JSON形式) | | box_web_link_update_by_id_tool | IDを指定してBoxウェブリンクを更新します | ctx (Context): リクエストのコンテキスト。 web_link_id (str): ウェブリンクのID。 url (str): 新しいURL。 | 更新されたウェブリンクの詳細 (JSON形式) | ### Box Doc Gen | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | box_docgen_create_batch_tool | テンプレートを使用してドキュメントを生成します | - file_id (str): テンプレートファイルID。 - destination_folder_id (str): 出力フォルダID。 - user_input_file_path (str): JSON入力データのパス。 - output_type (str, optional): 出力形式。 | 一括生成の結果 | | box_docgen_get_job_tool | IDを指定してDoc Genジョブを取得します | job_id (str): ジョブの識別子 | JSON形式のジョブの詳細 | | box_docgen_list_jobs_tool | すべてのDoc Genジョブのリストを取得します | - marker (str, optional): ページネーションのマーカー。 - limit (int, optional): 返される最大ジョブ数。 | JSON形式のジョブのリスト | | box_docgen_list_jobs_by_batch_tool | 特定のバッチ内にあるジョブのリストを取得します | - batch_id (str): バッチの識別子。 - marker (str, optional): ページネーションのマーカー。 - limit (int, optional): 返される最大ジョブ数。 | バッチジョブの詳細 | | box_docgen_template_create_tool | ファイルをテンプレートとして設定します | file_id (str): 設定するファイルID | テープレートの詳細 | | box_docgen_template_list_tool | すべての使用可能なテンプレートのリストを取得します | - marker (str, optional): ページネーションのマーカー。 - limit (int, optional): リストに取得するテンプレートの最大数。 | テンプレートのリスト | | box_docgen_template_delete_tool | テンプレートの設定を削除します | template_id (str): テンプレートの識別子 | 削除の確認 | | box_docgen_template_get_by_id_tool | テンプレートの詳細を取得します | template_id (str): テンプレートの識別子 | テープレートの詳細 | | box_docgen_template_list_tags_tool | テンプレートタグのリストを取得します | - template_id (str): テンプレートID。 - template_version_id (str, optional): バージョンID。 - marker (str, optional): ページネーションのマーカー。 - limit (int, optional): 返される最大タグ数。 | タグのリスト | | box_docgen_template_list_jobs_tool | テンプレートを使用してジョブのリストを取得します | - template_id (str): テンプレートの識別子。 - marker (str, optional): ページネーションのマーカー。 - limit (int, optional): リストに取得する最大ジョブ数。 | ジョブの詳細 | ### Boxメタデータ | ツール | 説明 | パラメータ | 戻り値 | | --- | --- | --- | --- | | box_metadata_template_get_by_key_tool | キーを指定してメタデータテンプレートを取得します。 | template_name (str): 取得するメタデータテンプレートのキー。 | 指定したキーに関連付けられているメタデータテンプレート。 | | box_metadata_template_get_by_name_tool | 名前を指定してメタデータテンプレートを取得します。 | template_name (str): 取得するメタデータテンプレートの名前。 | 指定した名前に関連付けられているメタデータテンプレート。 | | box_metadata_template_create_tool | メタデータテンプレートを作成します。 | - ctx (Context): コンテキストオブジェクト - display_name (str): メタデータテンプレートの表示名 - fields (List[Dict[str, Any]]): フィールド定義のリスト (型、キー、表示名、説明、非表示、オプション (列挙/複数選択用) を含む) - template_key (Optional[str]): メタデータテンプレートのキー (省略可) | 作成されたメタデータテンプレート。 | | box_metadata_set_instance_on_file_tool | ファイルにメタデータインスタンスを設定します。 | - ctx (Context): コンテキストオブジェクト - template_key (str): メタデータテンプレートのキー - file_id (str): メタデータを設定するファイルのID - metadata (dict): 設定するメタデータ値 | ファイルに関連付けられているメタデータインスタンス。 | | box_metadata_update_instance_on_file_tool | ファイルのメタデータインスタンスを更新します。 | - ctx (Context): コンテキストオブジェクト - file_id (str): メタデータを更新するファイルのID - template_key (str): メタデータテンプレートのキー - metadata (dict): 更新するメタデータ値 - remove_non_included_data (bool): Trueの場合、メタデータに含まれていないフィールドを削除 | メタデータ更新後のBox APIからのレスポンス。 | | box_metadata_delete_instance_on_file_tool | ファイルのメタデータインスタンスを削除します。 | - ctx (Context): コンテキストオブジェクト - file_id (str): メタデータを削除するファイルのID - template_key (str): メタデータテンプレートのキー | メタデータ削除後のBox APIからのレスポンス。 | ## トラブルシューティング Claude for DesktopでMCPサーバーを実行したときにmacOSで`Error: spawn uv ENOENT`が発生した場合は、以下を実行できます。 - Homebrewを使用して`uv`を削除し手再インストールする: `brew install uv` - 構成内に`uv`実行可能ファイルのフルパスを指定する ``` /Users/USER_NAME/.local/bin/uv --directory /Users/USER_NAME/local/mcp-server-box run src/mcp_server_box.py ``` 設定に関連するその他の問題が発生した場合は、Boxの[Developer Communityフォーラム](https://community.box.com/ai-developers-23)に質問を投稿してください (英語のみ)。 **Source:** [https://ja.developer.box.com/guides/box-mcp/self-hosted/](https://ja.developer.box.com/guides/box-mcp/self-hosted/) --- ### タイプと形式 **Type:** guide | **Category:** APIコール | **Section:** Developer Guides タイプと形式 以下のセクションでは、Box API内で使用される可能性があるタイプと形式に関する基本的なコンセプトについて説明します。 リクエスト Box APIは、リクエスト本文でJSONを使用します。このルールには注目すべき例外がいくつかあります。 POST /oauth… # タイプと形式 以下のセクションでは、Box API内で使用される可能性があるタイプと形式に関する基本的なコンセプトについて説明します。 ## リクエスト Box APIは、リクエスト本文でJSONを使用します。このルールには注目すべき例外がいくつかあります。 - [`POST /oauth2/token`](endpoint://post-oauth2-token)はアクセストークンのリクエストに使用され、OAuth 2.0の仕様に従って、コンテンツタイプ`application/x-www-form-urlencoded`で送信される本文を受け入れます。 - [`POST /files/content`](endpoint://post-files-content)エンドポイントなど、バイナリデータをアップロードするのに使用されるほとんどのAPIでは、コンテンツタイプが`multipart/form-data`のフォームデータとしてデータが送信されることを予期します。 必須ではありませんが、`content-type: application/json`のように、送信されるデータのコンテンツタイプを定義するヘッダーを各APIリクエストで渡すことを強くお勧めします。 ### ヘッダー HTTP仕様に従い、Box APIのすべてのリクエストヘッダー名では大文字と小文字が区別されないため、小文字、大文字、または両方を組み合わせた形で指定できます。つまり、コンテンツタイプヘッダーは、`CONTENT-TYPE: application/json`、`content-type: application/json`、`content-type: application/json`、または多少変わった`cOnTeNt-TyPe: application/json`としても設定できます。 ヘッダーの値では、特に記載のない限り、大文字と小文字が区別されることがほとんどです。 ### GZip圧縮 デフォルトでは、Boxから送信されるデータは圧縮されません。帯域幅とレスポンス時間を改善するには、`Accept-Encoding: gzip, deflate`リクエストヘッダーを含めることでAPIレスポンスを圧縮できます。 ### 日付と時刻 Box APIは[RFC 3339](https://www.ietf.org/rfc/rfc3339.txt)タイムスタンプをサポートします。リクエスト内の日付の形式を設定するには、`2013-04-17T09:12:36-00:00`のように時刻をUTCに変換する方法をお勧めします。 タイムスタンプが特定の日に丸められる場合は、時刻部分を省略できます。この場合、`2013-04-17T13:35:01+00:00`は`2013-04-17`になります。タイムスタンプがミリ秒までサポートする場合、予期されるリクエストの形式は`2013-04-17T09:12:36.123-00:00`のようになります。 企業のタイムゾーンは経時的に変化するため、タイムゾーンはファイルやフォルダによって異なる場合があります。一般的な例は、夏時間です。標準時に作成された項目のタイムゾーンは、夏時間中に作成された項目とは異なります。このため、APIから返された日付を処理するには、`RFC3339`準拠の日時パーサーを使用することが重要です。 タイムスタンプは、Unixエポック (1970年1月1日) の`00:00:00 UTC`の開始後の日付に制限されます。 ## レスポンス 一般的に、Box APIはレスポンス本文でJSONを返します。このルールにも注目すべき例外がいくつかあります。 - 項目を削除するAPIでは、HTTPステータスコード`204 No Content`とともに空の本文が返されます。 - バイナリデータのリクエストに使用されるAPIでは、バイナリデータが添付されたステータスコード`200 OK`が返されるか、`202 Accepted`が返されるか、またはステータスコード`302 Found`とともに実際のバイナリファイルを指す`location`ヘッダーのみ (本文なし) が返されます。 `content-type`レスポンスヘッダーを使用すると、APIで返されるコンテンツのタイプがわかります。さらに、各APIエンドポイントのレスポンスタイプについては、APIリファレンスドキュメントで説明されています。 ### ヘッダー HTTP仕様に従い、Box APIのすべてのレスポンスヘッダー名では、大文字と小文字が区別されないため、今後変更される可能性があります。 つまり、APIでは、`CONTENT-TYPE: application/json`、`content-type: application/json`、または`content-type: application/json`というコンテンツタイプヘッダーが付いたレスポンスが返される可能性があります。リクエスト時にアプリケーションによってヘッダー名を標準の文字に変換された後、標準化されたそのヘッダーのセットを使用してヘッダーの値を検索できるのが理想的です。 ヘッダーの値では、特に記載のない限り、必ず大文字と小文字が区別されます。 ### リソース 1つしかリソースが返されない標準的なAPIレスポンスのほとんどは、次の形式に従っています。 ``` { "id": "12345", "type": "folder", ... } ``` これらのリソースはすべて、常に1つのIDとリソースのタイプを返します。 ### コレクション APIレスポンスで複数の項目が返される場合は、コレクションが返されます。これらのコレクションの正確な形式はエンドポイントごとに変わる場合がありますが、一般的には以下の形式になります。 ``` { "total_count": 5000, "limit": 1000, "offset": 2000, "order": [ { "by": "type", "direction": "ASC" } ], "entries": [ { "id": 12345, "etag": 1, "type": "file", "sequence_id": 3, "name": "Contract.pdf" } ] } ``` | フィールド | 必須かどうか? | | | --- | --- | --- | | entries | はい | コレクション内のエントリのリスト | | total_count | いいえ | リクエスト可能なコレクション内の合計数。このページの結果数よりも大きくてもかまいません。 | | limit | いいえ | オフセットベースのページネーションをサポートするエンドポイントに対して、返される結果の数の制限を指定します。 | | offset | いいえ | オフセットベースのページネーションをサポートするエンドポイントに対して、返される結果のオフセットを指定します。 | | order | いいえ | 並べ替えをサポートするエンドポイントに対して、結果が返される順番を指定します。 | | next_marker | いいえ | マーカーベースのページネーションをサポートするエンドポイントに対して、返すことができる次のページのマーカーを指定します。 | | prev_marker | いいえ | マーカーベースのページネーションをサポートするエンドポイントに対して、返すことができる前のページのマーカーを指定します。 | ### リクエストID APIコールがエラーで返されると、BoxのAPIから`request_id`フィールドを含むエラーオブジェクトが返されます。 ``` { "type": "error", "status": 400, "code": "item_name_invalid", "help_url": "https://developer.box.com/guides/api-calls/permissions-and-errors/common-errors/", "message": "Method Not Allowed", "request_id": "abcdef123456" } ``` 特定のエラーについてサポートに連絡する場合は、サポートチームがリクエストをすぐに見つけられるよう、`request_id`を含むAPIレスポンス全体を提供してください。 ほとんどのAPIコールでは、`box-request-id`レスポンスヘッダーも返されます。このヘッダーの値を、エラーレスポンスの本文に含まれる`request_id`値と混同しないでください。 ### 大きな数値 場合によっては、APIでフィールドに対して極端に大きな数値が返されることがあります。たとえば、フォルダのサイズがテラバイト級のデータまで大きくなった場合、結果として、フォルダの`size`フィールドが、非常に大きな数値になっている可能性があります。 このような場合は、これらの数値は`1.2318237429383e+31`などの[IEEE754](https://en.wikipedia.org/wiki/IEEE_754)形式で返されます。 **Source:** [https://ja.developer.box.com/guides/api-calls/types-and-formats/](https://ja.developer.box.com/guides/api-calls/types-and-formats/) --- ### ダウンロード **Type:** guide | **Category:** ダウンロード | **Section:** Developer Guides ダウンロード Box API… # ダウンロード Box APIを使用すると、ファイルをアプリケーションのサーバーにダウンロードすることも、エンドユーザーがブラウザで直接ダウンロードすることもできます。 ## ダウンロードすべきでない場合 ファイルのダウンロードが必ずしも望ましい解決策であるとは限りません。特に、ユーザーがプレビューしたりコメントや注釈を付けたりするためだけにファイルがダウンロードされる場合にこれが当てはまります。このような場合は、Boxの機能をアプリケーションに直接埋め込む方法のいずれかを利用することをお勧めします。 Boxの埋め込みの詳細を確認する ## アクセスエラー アプリケーションには、ダウンロードするファイルへのアクセス権限が必要であると理解しておくことが重要です。アプリケーションがJWTまたはアプリトークンを使用して認証される場合、ユーザーはサービスアカウントとして認証されます。このサービスアカウントには、そのアカウントが所有していないファイルへのアクセス権限がありません。 このユーザーがファイルにアクセスできない場合、アプリケーションでは`404 Not Found`エラーが表示されます。 各種ユーザータイプの詳細を確認する **Source:** [https://ja.developer.box.com/guides/downloads/](https://ja.developer.box.com/guides/downloads/) --- ### ダウンロードURLの取得 **Type:** guide | **Category:** ダウンロード | **Section:** Developer Guides ダウンロードURLの取得 Box公式SDKでは、ファイルのダウンロード時にバイナリデータが返されます。代わりにデータのダウンロードURLを取得する場合は、SDKの以下のメソッドを使用します。 リダイレクト Box SDKのいずれも使用していない場合は、HTTP… # ダウンロードURLの取得 Box公式SDKでは、ファイルのダウンロード時にバイナリデータが返されます。代わりにデータのダウンロードURLを取得する場合は、SDKの以下のメソッドを使用します。 # リダイレクト Box SDKのいずれも使用していない場合は、HTTPクライアントが自動的にHTTPリダイレクトに従わないようにすることが重要です。リダイレクトに自動的に従うと、コードは、APIによって返された`location`ヘッダーを検出し、それに従ってバイナリデータを取得します。 ## ダウンロードURLの有効期限 このダウンロードURLは、ファイルのダウンロードを許可するためにユーザーのブラウザに渡すことができますが、このURLが期限切れになった後でダウンロードするには再度リクエストする必要があります。ほとんどの場合、ダウンロードURLは15分間有効です。その後、新しいURLをリクエストする必要があります。この有効期限は、事前の通知なしに変更される場合があります。 **Source:** [https://ja.developer.box.com/guides/downloads/get-url/](https://ja.developer.box.com/guides/downloads/get-url/) --- ### タスク **Type:** guide | **Category:** タスク | **Section:** Developer Guides … # タスク ユーザーはタスクを使用することで、ファイルのコラボレータに対して、ファイルのレビューや作業の一部の完了をリクエストできます。タスクは、開発者がファイル中心のワークフローを作成するために使用できます。タスクの詳細については、[**コメントとタスクの追加**](https://support.box.com/hc/ja/articles/360043695954-%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%81%A8%E3%82%BF%E3%82%B9%E3%82%AF%E3%81%AE%E8%BF%BD%E5%8A%A0)を参照してください。 ## タスクのアクション Boxは現在、`action`値によって定義される、`review`と`complete`という2種類のタスクをサポートしています。 タスクのタイプによって、タスクがなりうる解決状態と、ウェブアプリおよびモバイルアプリでユーザーに表示されるインターフェースが決まります。 | タスクのアクション | 考えられる解決状態 | | --- | --- | | review | incomplete, approved, rejected | | complete | incomplete, complete | `review`タスクは`incomplete`状態で開始され、`incomplete`、`approved`、または`rejected`としてマークすることができます。ユーザーインターフェースには、テキストボックスのほか、タスクを承認または拒否する1組のボタンが表示されます。 `complete`タスクは`incomplete`状態で開始され、`incomplete`または`completed`としてマークすることができます。このタスクが完了としてマークされると、タスクの状態をそれ以上変更することはできなくなります。ユーザーインターフェースには、テキストボックスのほか、タスクを完了としてマークするためのボタンが表示されます。 ## 完了のルール ファイルに関連するタスクは、そのファイルの複数のコラボレータに割り当てることができます。また、タスクの`completion_rule`を使用すると、タスクを完了する必要があるのはタスクが割り当てられているすべてのユーザー (`all_assignees`) か1人の担当者のみ (`any_assignee`) かを定義できます。 **Source:** [https://ja.developer.box.com/guides/tasks/](https://ja.developer.box.com/guides/tasks/) --- ### タスクに関する情報の取得 **Type:** guide | **Category:** タスク | **Section:** Developer Guides タスクに関する情報の取得 割り当てられたタスクに関する情報を取得するには、タスクのidを指定してGET /tasks/:task_id APIを呼び出します。 # タスクに関する情報の取得 割り当てられたタスクに関する情報を取得するには、タスクの`id`を指定して[`GET /tasks/:task_id`](e://get_tasks_id) APIを呼び出します。 **Source:** [https://ja.developer.box.com/guides/tasks/get/](https://ja.developer.box.com/guides/tasks/get/) --- ### タスクの作成 **Type:** guide | **Category:** タスク | **Section:** Developer Guides タスクの作成 タスクを作成するには、タスクのactionと、タスクの追加先となるファイルを表すitemを指定してPOST /tasks APIを呼び出す必要があります。 タスクのアクション Boxは現在、action値によって定義される、reviewとcompleteという… # タスクの作成 タスクを作成するには、タスクの`action`と、タスクの追加先となるファイルを表す`item`を指定して[`POST /tasks`](e://post_tasks) APIを呼び出す必要があります。 ## タスクのアクション Boxは現在、`action`値によって定義される、`review`と`complete`という2種類のタスクをサポートしています。 タスクのタイプによって、タスクがなりうる解決状態と、ウェブアプリおよびモバイルアプリでユーザーに表示されるインターフェースが決まります。 | タスクのアクション | 考えられる解決状態 | | --- | --- | | review | incomplete, approved, rejected | | complete | incomplete, complete | `review`タスクは`incomplete`状態で開始され、`incomplete`、`approved`、または`rejected`としてマークすることができます。ユーザーインターフェースには、テキストボックスのほか、タスクを承認または拒否する1組のボタンが表示されます。 `complete`タスクは`incomplete`状態で開始され、`incomplete`または`completed`としてマークすることができます。このタスクが完了としてマークされると、タスクの状態をそれ以上変更することはできなくなります。ユーザーインターフェースには、テキストボックスのほか、タスクを完了としてマークするためのボタンが表示されます。 ## 完了のルール ファイルに関連するタスクは、そのファイルの複数のコラボレータに割り当てることができます。また、タスクの`completion_rule`を使用すると、タスクを完了する必要があるのはタスクが割り当てられているすべてのユーザー (`all_assignees`) か1人の担当者のみ (`any_assignee`) かを定義できます。 **Source:** [https://ja.developer.box.com/guides/tasks/create/](https://ja.developer.box.com/guides/tasks/create/) --- ### タスクの削除 **Type:** guide | **Category:** タスク | **Section:** Developer Guides タスクの削除 タスクを削除するには、タスクのidを指定してDELETE /tasks/:task_id APIを呼び出します。 # タスクの削除 タスクを削除するには、タスクの`id`を指定して[`DELETE /tasks/:task_id`](e://delete_tasks_id) APIを呼び出します。 **Source:** [https://ja.developer.box.com/guides/tasks/delete/](https://ja.developer.box.com/guides/tasks/delete/) --- ### タスクの割り当て **Type:** guide | **Category:** タスク | **Section:** Developer Guides タスクの割り当て Boxでタスクがユーザーに委任されると、タスク割り当てが作成されます。タスク割り当ては、そのユーザーにタスクを完了するよう求めるリクエストです。 タスクの解決方法は、タスクのactionタイプと、タスクの解決方法を定義するために使用されるresolution… # タスクの割り当て Boxでタスクがユーザーに委任されると、タスク割り当てが作成されます。タスク割り当ては、そのユーザーにタスクを完了するよう求めるリクエストです。 タスクの解決方法は、タスクの`action`タイプと、タスクの解決方法を定義するために使用される`resolution_state`によって異なります。 タスクのタイプについて確認する **Source:** [https://ja.developer.box.com/guides/tasks/assignments/](https://ja.developer.box.com/guides/tasks/assignments/) --- ### タスクの割り当てのリストの取得 **Type:** guide | **Category:** タスク | **Section:** Developer Guides タスクの割り当てのリストの取得 特定のタスクのすべての割り当てのリストを取得するには、タスクidを指定してGET /tasks/:task_id/assignmentsを呼び出します。 # タスクの割り当てのリストの取得 特定のタスクのすべての割り当てのリストを取得するには、タスク`id`を指定して[`GET /tasks/:task_id/assignments`](e://get_task_assignments_id)を呼び出します。 **Source:** [https://ja.developer.box.com/guides/tasks/assignments/list/](https://ja.developer.box.com/guides/tasks/assignments/list/) --- ### タスク割り当てに関する情報の取得 **Type:** guide | **Category:** タスク | **Section:** Developer Guides タスク割り当てに関する情報の取得 割り当てられたタスクに関する情報を取得するには、タスク割り当てのidを指定してGET /tasks/:task_id/assignments APIを呼び出します。 # タスク割り当てに関する情報の取得 割り当てられたタスクに関する情報を取得するには、タスク割り当ての`id`を指定して[`GET /tasks/:task_id/assignments`](e://get_task_assignments_id) APIを呼び出します。 **Source:** [https://ja.developer.box.com/guides/tasks/assignments/get/](https://ja.developer.box.com/guides/tasks/assignments/get/) --- ### タスク割り当ての解除 **Type:** guide | **Category:** タスク | **Section:** Developer Guides タスク割り当ての解除 タスクの割り当てを解除するには、タスク割り当てのidを指定してDELETE /task_assignments APIを呼び出します。 権限 割り当てを削除するユーザーは、ファイルのコラボレータである必要があります。 # タスク割り当ての解除 タスクの割り当てを解除するには、タスク割り当ての`id`を指定して[`DELETE /task_assignments`](e://delete_task_assignments_id) APIを呼び出します。 # 権限 割り当てを削除するユーザーは、ファイルのコラボレータである必要があります。 **Source:** [https://ja.developer.box.com/guides/tasks/assignments/unassign/](https://ja.developer.box.com/guides/tasks/assignments/unassign/) --- ### タスク割り当て状態の変更 **Type:** guide | **Category:** タスク | **Section:** Developer Guides タスク割り当て状態の変更 タスク割り当ての状態を更新するには、PUT /tasks/:task_id/assignments APIを呼び出し、completed、incomplete、approved、rejectedなどのresolution_state… # タスク割り当て状態の変更 タスク割り当ての状態を更新するには、[`PUT /tasks/:task_id/assignments`](e://put_task_assignments_id) APIを呼び出し、`completed`、`incomplete`、`approved`、`rejected`などの`resolution_state`を含めます。 ## 解決状態 Boxは現在、`action`値によって定義される、`review`と`complete`という2種類のタスクをサポートしています。 タスクのタイプによって、タスクがなりうる解決状態と、ウェブアプリおよびモバイルアプリでユーザーに表示されるインターフェースが決まります。 | タスクのアクション | 考えられる解決状態 | | --- | --- | | review | incomplete, approved, rejected | | complete | incomplete, complete | `review`タスクは`incomplete`状態で開始され、`incomplete`、`approved`、または`rejected`としてマークすることができます。ユーザーインターフェースには、テキストボックスのほか、タスクを承認または拒否する1組のボタンが表示されます。 `complete`タスクは`incomplete`状態で開始され、`incomplete`または`completed`としてマークすることができます。このタスクが完了としてマークされると、タスクの状態をそれ以上変更することはできなくなります。ユーザーインターフェースには、テキストボックスのほか、タスクを完了としてマークするためのボタンが表示されます。 **Source:** [https://ja.developer.box.com/guides/tasks/assignments/change-state/](https://ja.developer.box.com/guides/tasks/assignments/change-state/) --- ### ツール **Type:** guide | **Category:** ツール | **Section:** Developer Guides ツール Boxには、Box CLI、Postman、Salesforce Developer Toolkit、各種SDKなど、Box APIを使用するためのオプションがいくつか用意されています。 # ツール Boxには、[Box CLI](g://cli)、[Postman](g://tooling/postman)、[Salesforce Developer Toolkit](g://tooling/salesforce-toolkit)、[各種SDK](g://tooling/sdks)など、Box APIを使用するためのオプションがいくつか用意されています。 **Source:** [https://ja.developer.box.com/guides/tooling/](https://ja.developer.box.com/guides/tooling/) --- ### ディープリンク **Type:** guide | **Category:** モバイル | **Section:** Developer Guides ディープリンク Boxのモバイルアプリでは、フォルダオブジェクトとファイルオブジェクトへのディープリンクがサポートされています。ウェブページまたはネイティブアプリからディープリンクを使用してBoxで直接オブジェクトを開くことができます。 Boxのモバイルアプリでは、以下のURL… # ディープリンク Boxのモバイルアプリでは、フォルダオブジェクトとファイルオブジェクトへのディープリンクがサポートされています。ウェブページまたはネイティブアプリからディープリンクを使用してBoxで直接オブジェクトを開くことができます。 Boxのモバイルアプリでは、以下のURLがサポートされています。 | アプリケーション | オブジェクトタイプ | ディープリンクのURL | iOSおよびAndroid | | --- | --- | --- | --- | | Box | フォルダ | boxapp://folder?id=[folderid] | バージョン3.7以降 | | | ファイル | boxapp://file?id=[fileid] | | | | 共有リンク | boxapp://sharedlink?url=[sharedlink] | | | | | | | | Box for EMM | フォルダ | boxemm://folder?id=[folderid] | バージョン3.7以降 | | | ファイル | boxemm://file?id=[fileid] | | | | 共有リンク | boxemm://sharedlink?url=[sharedlink] | | **Source:** [https://ja.developer.box.com/guides/mobile/mobile-deep-linking/](https://ja.developer.box.com/guides/mobile/mobile-deep-linking/) --- ### テキストレプリゼンテーションの取得 **Type:** guide | **Category:** レプリゼンテーション | **Section:** Developer Guides テキストレプリゼンテーションの取得 テキストレプリゼンテーションでは、ドキュメントからプレーンテキストを抽出できます。 テキストは、プレーンテキストを含むさまざまな種類のドキュメントファイルやBox… # テキストレプリゼンテーションの取得 テキストレプリゼンテーションでは、ドキュメントからプレーンテキストを抽出できます。 テキストは、プレーンテキストを含むさまざまな種類のドキュメントファイルやBoxでサポートされているコードファイルに対して生成されます。テキストレイヤがないため、画像ファイルは含まれません。 テキストレプリゼンテーションは、PDFやサムネイルと同様に、ファイルのアップロード時に生成されます。ただし、500 MBを超えるファイルに対しては生成されません。 ## 手順 テキストレプリゼンテーションを取得するには、以下の手順に従います。 - [すべてのレプリゼンテーションのリストを取得する](guide://representations/list-all-representations) - 値`[extracted_text]`を指定した`x-rep-hints`ヘッダーを渡して、[テキストレプリゼンテーションをリクエスト](guide://representations/request-a-representation)する - `url_template`を呼び出して[テキストをダウンロード](guide://representations/download-a-representation)する。その際、`{+asset_path}`を空の文字列に置き換えます。 **Source:** [https://ja.developer.box.com/guides/representations/text/](https://ja.developer.box.com/guides/representations/text/) --- ### デフォルトのBox Sign通知の抑制 **Type:** guide | **Category:** Box Sign | **Section:** Developer Guides デフォルトのBox Sign通知の抑制 Box Sign APIを使用すると、Signのワークフローの中で送信されるデフォルトのBoxメール通知を抑制できます。この機能により、以下のようにBox Sign… # デフォルトのBox Sign通知の抑制 Box Sign APIを使用すると、Signのワークフローの中で送信されるデフォルトのBoxメール通知を抑制できます。この機能により、以下のようにBox Sign通知の管理を容易にします。 - 全面的にカスタマイズしたメール通知テンプレートを使用して、自社のドメインからメールを送信できます。 - メールとは別に、プッシュ通知またはテキストメッセージを送信できます。​ Boxメール通知を抑制することを選択すると、組織は、該当する場合に、使用される配信方法に対して署名者の同意を得ることを含め、適用されるすべての法律と規制に従い、署名プロセスにおいて適切なタイミングで適切な内容を含むすべての通知を署名者に確実に配信する責任を負うことになります。 ## Box Sign APIを使用したデフォルトの通知の抑制 Box Signのメール通知を抑制するには、以下のパラメータを設定する必要があります。 1. [`signers`](e://post-sign-requests/#param-signers)オブジェクトの`suppress_notifications`パラメータを`true`に設定して、通知をオフにします。 2. [`embed_url_external_user_id`](e://post-sign-requests/#param-signers-embed_url_external_user_id)パラメータを設定して、通知を送信しないユーザーを指定します。 この構成により、指定したユーザーに対するBox Signの自動メール通知は無効になります。その結果、独自の通知を構成して送信できます。 ``` curl -i -X POST "https://api.box.com/2.0/sign_requests" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "signers": [ { "role": "signer", "email": "example_email@box.com" "suppress_notifications": true "embed_url_external_user_id": "1234" } ], "source_files": [ { "type": "file", "id": "123456789" } ], "parent_folder": { "type": "folder", "id": "0987654321" } }' ``` ## 署名ログのエントリ Box Signのデフォルトの通知が抑制されると、署名ログには、送信者によってすべてのBox Sign通知が抑制されたことが記録されます。また、このログには、API統合を介してBox Signに提供される、通知配信の目的で使用されるシステムに関する情報や組織のシステムにおける署名者のユーザーIDも記録されます。 **Source:** [https://ja.developer.box.com/guides/box-sign/suppress-sign-notifications/](https://ja.developer.box.com/guides/box-sign/suppress-sign-notifications/) --- ### テンプレートのファイルリクエストの作成 **Type:** guide | **Category:** ファイルリクエスト | **Section:** Developer Guides テンプレートのファイルリクエストの作成 現在、このAPI… # テンプレートのファイルリクエストの作成 現在、このAPIで可能なのは、別のフォルダに関連付けられた既存のファイルリクエストをコピーして新しいファイルリクエストを作成することだけです。テンプレートのファイルリクエストを使用したテンプレートフォルダの作成に関する以下のガイドを確認してください。 ## 1. テンプレートフォルダ 最初に、テンプレートのファイルリクエストを関連付けることができるテンプレートフォルダを作成します。これは実際にはどのフォルダでもかまいませんが、この目的でのみ使用されるフォルダを使用することをお勧めします。 フォルダはBoxウェブインターフェースまたはモバイルインターフェース、あるいは[`POST /folders`](e://post_folders) APIを使用して作成できます。 サーバー側JWT認証を使用する場合は、アプリケーションの[サービスアカウント](page://platform/user-types/#service-account)が所有するフォルダを作成することをお勧めします。こうすることで、通常のBoxユーザーが誤ってこのフォルダを削除することはなくなります。 ## 2. テンプレートのファイルリクエスト ファイルリクエストを作成するには、ウェブアプリのテンプレートフォルダに移動し、ページの上部にある3つの点をクリックします。その後、メニューから [**ファイルリクエスト**] を選択します。 次の設定パネルで、[**編集**] ボタンをクリックして、ファイルリクエストの設定ページにアクセスします。 設定ページで、ページを保存する前に、タイトルと説明を設定できます。 このページには、URLに含まれるファイルリクエストのIDも表示されます。URLの末尾の数字がファイルリクエストのIDなので、このURLを書き留めてください。これは、APIを使用する際に必要になります。 ``` https://*.app.box.com/filerequest/2338423584 ``` テンプレートフォルダがJWTユーザーに属している場合は、管理対象Boxユーザーをフォルダに[招待](e://post-collaborations)し、そのフォルダがウェブアプリに表示されるようにする必要があります。自分自身をフォルダに招待すると、自分でこのアプリを使用してファイルリクエストをフォルダに追加できます。 ## 3. テンプレートの使用 テンプレートのファイルリクエストを使用すると、[`POST /file-requests/:id/copy`](e://post_file_requests_id_copy) APIによって新しいコピーを作成できます。新しいフォルダのIDを取得したら、[1回のAPIコール](g://file-requests/copy)で既存のリクエスト (タイトル、説明、フォームの設定を含む) を新しいフォルダにコピーできます。 **Source:** [https://ja.developer.box.com/guides/file-requests/template/](https://ja.developer.box.com/guides/file-requests/template/) --- ### トークン **Type:** guide | **Category:** 認証 | **Section:** Developer Guides トークン さまざまなBox APIコールの中核となるのはアクセストークンです。Box… # トークン さまざまなBox APIコールの中核となるのはアクセストークンです。Boxウェブアプリを使用する場合と同様に、問題なく操作できるのは、アクセストークンに関連付けられたユーザーが所有するコンテンツまたはコラボレータとなっているコンテンツのみです。これは、トークンの[ダウンスコープ](g://authentication/tokens/downscope)によってさらに制限できます。 必須のアクセススコープ、アプリケーションアクセス、有効化された詳細設定、ユーザー権限、およびエンドポイント固有の制限は、すべてが合わさることで、どのAPIコールが成功するかが決まります。たとえば、フォルダに対するコラボレータアクセス権限がユーザーにある場合でも、読み取りスコープがアプリケーションに許可されていなければ、そのフォルダに関する情報を取得するコールは失敗します。 ## トークンの種類 | 型 | 有効期間 | | --- | --- | | アクセストークン | 60分 | | 更新トークン | 60日または1回の使用 | | 開発者トークン | 60分 | ## アプリケーションの種類とアクセストークン それぞれのアプリケーションの種類でどのようにアクセストークンが作成されるのかを以下に示します。 | Boxアプリケーションの種類 | アクセストークンの取得方法 | | --- | --- | | PlatformアプリとOAuth 2.0 | 明示的なユーザーによる付与 | | PlatformアプリとJWT | JWTアサーションの交換 | | Platformアプリとクライアント資格情報許可 | クライアントIDとクライアントシークレットの使用 | | アクセス制限付きアプリとアプリトークン | 開発者コンソールでのトークンの構成 | | カスタムスキル | イベントペイロードのアクセストークン | **Source:** [https://ja.developer.box.com/guides/authentication/tokens/](https://ja.developer.box.com/guides/authentication/tokens/) --- ### トークンおよびURLの有効期限 **Type:** guide | **Category:** APIコール | **Section:** Developer Guides トークンおよびURLの有効期限 Box APIには、自動的に期限切れになるトークン、コード、およびURLがいくつかあります。以下に、それぞれの有効期間の概要を示します。 承認コード 30秒後に有効期限切れ アクセストークン 60分後に有効期限切れ 更新トークン 6… # トークンおよびURLの有効期限 Box APIには、自動的に期限切れになるトークン、コード、およびURLがいくつかあります。以下に、それぞれの有効期間の概要を示します。 | | | | --- | --- | | 承認コード | 30秒後に有効期限切れ | | アクセストークン | 60分後に有効期限切れ | | 更新トークン | 60日後または1回の使用後に有効期限切れ | | ダウンロードURL | 15分後に有効期限切れ | 詳細については、それぞれのガイドを参照してください。 **Source:** [https://ja.developer.box.com/guides/api-calls/permissions-and-errors/expiration/](https://ja.developer.box.com/guides/api-calls/permissions-and-errors/expiration/) --- ### トークンのダウンスコープ **Type:** guide | **Category:** 認証 | **Section:** Developer Guides … # トークンのダウンスコープ ダウンスコープは、既存のアクセストークンをより制限の厳しい新しいトークンと交換するための方法です。 ## ダウンスコープする理由 アプリケーションは、完全に制御できない環境とアクセストークンを共有しなければならないことがあります。その一般的な例として、ウェブブラウザでBox UI Elementsを使用する場合があります。 アプリケーションがアクセストークンをブラウザに渡す必要がある場合、解決が必要となるセキュリティリスクが生じる可能性があります。このリスクを抑制するために、アクセストークンを、権限がより厳格な新しいトークンと交換できます。 ## 概要 ダウンスコープされたトークンは、元のトークンよりも権限 (スコープ) が少ないトークンです。また、オプションで、特定のファイルへのアクセスのみを許可するようさらに制限される場合もあります。 新しいトークンは、元のトークンの権限を取得し、渡されたトークンのほか、提供されたリソースにその権限を制限します。 ## ダウンスコープの実例 トークンをダウンスコープするには、`POST /oauth2/token`エンドポイントに既存のアクセストークン、スコープのリストのほか、トークンを制限するファイルのURL (省略可) を渡します。 | パラメータ | 説明 | | --- | --- | | subject_token | ダウンスコープする元のトークン。これには、OAuth 2.0やJWTトークン交換で取得したトークン、またはアプリトークンとして取得されたトークンを使用できます。 | | scope | 新しいトークンを制限するためのスコープのスペース区切りリスト。アプリケーションに有効な任意のスコープを使用できますが、Box UI Elementsのスコープの特殊なセットも使用可能です。 | | resource | トークンが制限されるファイルへの完全なURLパス (省略可)。 | | box_shared_link | Box上のファイルまたはフォルダの共有リンクURL (省略可)。パスワード保護されているリンクはサポートされていません。このオプションは、resourceオプションに追加して使用することができません。また、ウェブリンクに作成された共有リンクを指定することもできません。 | | subject_token_type | 常にurn:ietf:params:oauth:token-type:access_tokenに設定します。 | | grant_type | 常にurn:ietf:params:oauth:grant-type:token-exchangeに設定します。 | ## ダウンスコープされたアクセストークンオブジェクト `POST /oauth2/token`エンドポイントで返されるダウンスコープされたアクセストークンには、特定の制限に関する追加情報が含まれます。 ``` { "access_token": "1!DgsZ6V9kMWZu2StrxwQDF5BudQNen-xUmU2cfcVKArE....", "expires_in": 4175, "token_type": "bearer", "restricted_to": [ { "scope": "item_preview", "object": { "type": "folder", "id": "1234567890", "sequence_id": "0", "etag": "0", "name": "Test" } } ], "issued_token_type": "urn:ietf:params:oauth:token-type:access_token" } ``` ここで最も重要なのは、`restricted_to`エントリのリストです。このリストには、新しいトークンが権限を持つ`object`と`scope`の各組み合わせが含まれます。 ダウンスコープされたトークンに更新トークンは含まれません。新しいダウンスコープされたトークンを取得するには、元の更新トークンを更新し、その新しいトークンを使用してダウンスコープされたトークンを取得します。 **Source:** [https://ja.developer.box.com/guides/authentication/tokens/downscope/](https://ja.developer.box.com/guides/authentication/tokens/downscope/) --- ### トークンの使用 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides トークンの使用 すべての認証済みAPIコールでは、Bearer TokenとしてアクセストークンをAuthorizationヘッダーに含めて渡す必要があります。そうしないと、401 Unauthorized HTTP… # トークンの使用 すべての認証済みAPIコールでは、`Bearer Token`としてアクセストークンを`Authorization`ヘッダーに含めて渡す必要があります。そうしないと、`401 Unauthorized` HTTPステータスが返されます。 ``` curl https://api.box.com/2.0/users/me \ -H "authorization: Bearer EGmDmRVfhfHsqesn5yVYHAqUkD0dyDfk" ``` アクセストークンが認証されるユーザーを調べるには、[`GET /users/me`](endpoint://get-users-id)エンドポイントを使用してください。 **Source:** [https://ja.developer.box.com/guides/authentication/tokens/api-calls/](https://ja.developer.box.com/guides/authentication/tokens/api-calls/) --- ### トークンの取り消し **Type:** guide | **Category:** 認証 | **Section:** Developer Guides トークンの取り消し アクセストークンまたは更新トークンをPOST /oauth2/revokeエンドポイントに送信することにより、アクセストークンをいつでも取り消すことができます。 SDKでの使用方法 すべてのBox SDK… # トークンの取り消し アクセストークンまたは更新トークンを[`POST /oauth2/revoke`](endpoint://post-oauth2-revoke)エンドポイントに送信することにより、アクセストークンをいつでも取り消すことができます。 # SDKでの使用方法 すべてのBox SDKでは、クライアントに関連付けられた現在のアクセストークンを手動で取り消すことがサポートされています。特定のトークンを取り消すには、最初にそのトークンで新しいSDKを初期化してから、関連する取り消しメソッドを呼び出します。 **Source:** [https://ja.developer.box.com/guides/authentication/tokens/revoke/](https://ja.developer.box.com/guides/authentication/tokens/revoke/) --- ### トークンの更新 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides トークンの更新 アクセストークンを更新するには、アクセストークンに付属された更新トークンを使用します。更新は、アクセストークンの有効期限の前でも後でも行うことができます。 これを行うには、アプリケーションで以下のようにrefresh_tokenをPOST /oauth… # トークンの更新 アクセストークンを更新するには、アクセストークンに付属された更新トークンを使用します。更新は、アクセストークンの有効期限の前でも後でも行うことができます。 これを行うには、アプリケーションで以下のように`refresh_token`を[`POST /oauth2/token`](endpoint://post-oauth2-token)エンドポイントに渡します。 # SDKでの使用方法 すべてのBox SDKは、JWTおよびOAuth 2.0アプリケーションのためにアクセストークンの自動更新をサポートしています。 # 更新トークンの有効期限 更新トークンの有効期限は60日間で、このトークンを使用すると、新しいアクセストークンと更新トークンを1回だけ取得できます。アクセストークンと更新トークンが60日以内に更新されなかった場合は、ユーザーの再承認が必要になります。 アプリケーションが更新トークンを使用して新しいアクセストークンを取得するたびに、更新トークンは無効になり、新しい更新トークンが新しいアクセストークンとともに返されます。 その後、この新しい更新トークンは再度60日以内に1回だけ使用できます。 **Source:** [https://ja.developer.box.com/guides/authentication/tokens/refresh/](https://ja.developer.box.com/guides/authentication/tokens/refresh/) --- ### ドキュメントの生成 **Type:** guide | **Category:** Box Doc Gen | **Section:** Developer Guides ドキュメントの生成 POST /2.0/docgen_batchesエンドポイントを使用すると、Box Doc Genテンプレートを入力データとして使用してドキュメントを生成できます。 前提条件 Box Doc Gen APIの使用を開始する前に、Box Doc Gen… # ドキュメントの生成 `POST /2.0/docgen_batches`エンドポイントを使用すると、Box Doc Genテンプレートを入力データとして使用してドキュメントを生成できます。 ## 前提条件 Box Doc Gen APIの使用を開始する前に、[Box Doc Genの使い方](g://docgen/docgen-getting-started)ガイドに記載されている手順に従って、PlatformアプリとBox Doc Genテンプレートを作成してください。 ## リクエストの送信 ドキュメント (複数可) を生成するには、`POST /2.0/docgen_batches`エンドポイントを使用します。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 | パラメータ | 説明 | 例 | | --- | --- | --- | | file.id | Box Doc Genテンプレートとして設定するファイルのID。 | 12345678 | | file.type | 指定した入力データの種類。値は常に**file**になります。 | file | | file_version | テンプレートのファイルバージョン。 | 12345 | | input_source | 生成されるドキュメントの入力ソース。この値は、APIベースのすべてのドキュメント生成リクエストでapiにする必要があります。 | api | | output_type | 出力ファイルの種類。 | docx, pdf | | destination_folder.id | 生成されたドキュメントが保存されるフォルダのID。 | 12345678 | | destination_folder.type | 保存先の項目の種類。生成されたファイルはフォルダに保存されるため、値は常に**folder**になります。 | file | | document_generation_data.generated_file_name | 生成されるファイルの名前。 | New_Template | | document_generation_data.user_input | ドキュメントの生成に使用するJSONデータ。 | {"id": 2, "name": "Ink Cartridge", "type": "non-fragile"} | ## ユースケース Box Doc GenテンプレートとJSONデータを準備できたら、Box Doc Gen APIにドキュメント生成のリクエストを行うことができます。 コールのサンプルは次のようになります。 リクエストが処理されている間、`document_generation_data`配列の各エントリは個別のドキュメント生成ジョブとして処理され、そのジョブは、Box Doc Genによってドキュメント生成キューに追加されます。 生成されたドキュメントは、指定したフォルダに保存されます。 **Source:** [https://ja.developer.box.com/guides/docgen/generate-document/](https://ja.developer.box.com/guides/docgen/generate-document/) --- ### ドメインへのアクセスの許可 **Type:** guide | **Category:** APIコール | **Section:** Developer Guides ドメインへのアクセスの許可 Box APIを使用する際に重要なのは、必要に応じてアプリケーションとユーザーが以下のドメインにアクセスできることです。 ファイルプレビュー ファイルプレビュー機能を有効にするために、アプリケーションは、Boxコンテンツ配信ネットワーク (CDN… # ドメインへのアクセスの許可 Box APIを使用する際に重要なのは、必要に応じてアプリケーションとユーザーが以下のドメインにアクセスできることです。 ## ファイルプレビュー ファイルプレビュー機能を有効にするために、アプリケーションは、Boxコンテンツ配信ネットワーク (CDN) からJavaScriptファイルを読み込むことが必要になる場合があります。このファイルは、以下のドメインから読み込まれます。 - `api.box.com` - `boxcdn.net` - `boxcloud.com` - `dl2.boxcloud.com`~`dl20.boxcloud.com` ## ファイルのダウンロード 以下のAPIドメインは、Box APIを介してファイルをダウンロードする目的で使用されます。 - `api.box.com` - ダウンロードするファイルを最初にリクエストする - `dl.boxcloud.com` - 認証済みユーザー用のファイルを実際にダウンロードする - `public.boxcloud.com` - 認証されていないユーザー用のファイルを実際にダウンロードする これらのドメインへのアクセス権限の確認は、ファイルをダウンロードするための最初のステップにすぎません。ファイルをダウンロードするには、ユーザーは適切なアクセス権限を持ち、必要に応じて完全に認証されている必要があります。 ## ファイルのアップロード 以下のAPIドメインは、Box APIを介してファイルをアップロードする目的で使用されます。 - `api.box.com` - ファイルのアップロードを開始する - `upload.app.box.com`と`upload.box.com` - Boxにファイルをアップロードする **Source:** [https://ja.developer.box.com/guides/api-calls/allowing-domain-access/](https://ja.developer.box.com/guides/api-calls/allowing-domain-access/) --- ### ドメインへのコラボレーションの許可 **Type:** guide | **Category:** コラボレーション | **Section:** Developer Guides ドメインへのコラボレーションの許可 一般にコラボレーションの作成を制限している企業は、企業で作成されている可能性のあるコラボレーションのリストにexample.comなどのドメインを追加できます。 このエンドポイントには、コラボレーションを許可するdomain… # ドメインへのコラボレーションの許可 一般にコラボレーションの作成を制限している企業は、企業で作成されている可能性のあるコラボレーションのリストに`example.com`などのドメインを追加できます。 この[エンドポイント](endpoint://post_collaboration_whitelist_entries)には、コラボレーションを許可する`domain`と、以下のように設定できる`direction`が必要です。 - `inbound`: 外部ユーザーが企業のコンテンツでコラボレーションできるかどうか。 - `outbound`: 企業の管理対象ユーザーが外部の企業で所有されているコンテンツでコラボレーションできるかどうか。 - `both`: 上記の両方。 新しく許可されたドメインを設定する場合はbothパラメータを指定します。 **Source:** [https://ja.developer.box.com/guides/collaborations/allowed-domains/create/](https://ja.developer.box.com/guides/collaborations/allowed-domains/create/) --- ### バージョン管理のエラー **Type:** guide | **Category:** APIコール | **Section:** Developer Guides バージョン管理のエラー Boxでは、特定のAPIエンドポイントに対してバージョン管理機能を提供しています。このバージョン管理システムにより、Boxがエンドポイントのバージョンを新しく導入した場合でも、既存のエンドポイントのバージョンに対してシームレスな機能が保証されます。 API… # バージョン管理のエラー Boxでは、特定のAPIエンドポイントに対してバージョン管理機能を提供しています。このバージョン管理システムにより、Boxがエンドポイントのバージョンを新しく導入した場合でも、既存のエンドポイントのバージョンに対してシームレスな機能が保証されます。 APIのバージョン管理により、Boxは、自社のプラットフォームを継続的に強化できると同時に、機能の更新や廃止のための信頼できる手段をサードパーティの開発者に提供することもできます。 APIの変更について常に最新情報を把握できるように、[変更ログ](page://changelog)を注視し、開発者コンソールの [**アプリ情報**] セクションで最新のメールアドレスを指定しておいてください。 ## エラーの例 バージョン管理されているAPIコールの使用時に、バージョン管理に関連したエラーが発生する場合があります。このリファレンスでは、エラーが表示される最も一般的なケースを挙げ、そのようなエラーの例を示します。 ## 正しくないbox-versionヘッダーを使用した呼び出し 正しくない`box-version`ヘッダーを使用してAPIを呼び出すと、APIは`HTTP error code 400 - Bad Request`エラーで応答し、レスポンスのメッセージ内にサポート対象のバージョンを示します。 レスポンスの`message`フィールドには、以下のステータスメッセージのいずれかが含まれます。 | 詳細 | メッセージ | | --- | --- | | box-version値が、サポートされていないAPIバージョンであるか、正しくない形式で送信されました。 | Invalid API version specified in 'box-version' header. | | バージョン管理されているエンドポイントのみが呼び出されたときに、リクエストヘッダーにbox-versionヘッダーが含まれていませんでした。 | Missing required box-version header. | | box-versionが空です。 | Invalid (empty) API version specified in 'box-version' header. | | box-versionに複数のバージョンが含まれていました。リクエストごとに指定できるバージョンの数は1つのみです。 | The 'box-version' header supports only one header value per request, do not use comas. | | サポートされていないAPIバージョンが既存のエンドポイントに使用されています。 | Unsupported API version specified in 'box-version' header. | `box-version`ヘッダーが正しくない場合のレスポンスの例: ``` { "type": "error", "status": 400, "code": "invalid_api_version", "help_url": "https://developer.box.com/reference/error-codes/invalid-api-version", "message": "Invalid API version specified in 'box-version' header. Supported API versions: [2024.0].", "request_id": "abcdef123456" } ``` ## URLでの正しくないAPIバージョンの呼び出し Boxのドキュメントでは、APIのURLが示されています。たとえば、署名リクエストのエンドポイントへのアクセスには`https://api.box.com/2.0/sign_requests/`を使用します。誤って`https://api.box.com/3.0/sign_requests/`のような正しくないバージョンを呼び出すと、レスポンスでは`HTTP error code 404 - Not Found`エラーが返されます。 ## 非推奨のAPIの呼び出し Boxで非推奨としてマークされたAPIバージョンを使用した場合、APIは通常どおり応答します。また、非推奨になった日付を示す`Deprecation`ヘッダーが追加されます。次に例を示します。 ``` Deprecation: date="Fri, 11 Nov 2026 23:59:59 GMT" Box-API-Deprecated-Reason: https://developer.box.com/reference/deprecated ``` APIレスポンスを監視して`Deprecation`ヘッダーが存在するかどうかを確認し、その結果に応じて新しいAPIバージョンへの移行を計画する必要があります。 ## 存在しないバージョンの呼び出し 公式サポートが終了した古いAPIバージョン (`2025.0`など) を使用しようとすると、レスポンスでは`HTTP error code 404 - Not Found`が返されます。詳細については、[URLでの正しくないAPIバージョンの呼び出し](#calling-an-incorrect-api-version-in-the-url)を参照してください。 **Source:** [https://ja.developer.box.com/guides/api-calls/permissions-and-errors/versioning-errors/](https://ja.developer.box.com/guides/api-calls/permissions-and-errors/versioning-errors/) --- ### パーツのアップロード **Type:** guide | **Category:** アップロード | **Section:** Developer Guides パーツのアップロード 大きいファイルをアップロードする際は、そのファイルを小さいパーツに分割し、パーツのアップロードAPI… # パーツのアップロード 大きいファイルをアップロードする際は、そのファイルを小さいパーツに分割し、パーツのアップロードAPIを使用してそれらのパーツをアップロードできます。 ## アップロードセッションの作成 最初に[アップロードセッションを作成](g://uploads/chunked/create-session)します。結果のオブジェクトにより、各パーツのサイズとアップロードするパーツの数が定義されます。 ``` { "id": "F971964745A5CD0C001BBE4E58196BFD", "type": "upload_session", "session_expires_at": "2012-12-12T10:53:43-08:00", "part_size": 1024, "total_parts": 1000, "num_parts_processed": 455, "session_endpoints": { "upload_part": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "commit": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/commit", "abort": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "list_parts": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/parts", "status": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD", "log_event": "https://upload.box.com/api/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/log" } } ``` ## ファイルの分割 ファイルをアップロードするパーツに分割します。コマンドラインを使用する場合は、`split`コマンドを使用します。 ``` split -b <PART_SIZE> <FILE_NAME> <YOUR_PART_NAME> ``` 例: ``` split -b 8388608 video.mp3 videopart ``` これにより、ファイルが複数のファイルに分割されます。 ## SHAダイジェストの取得 `SHA`ダイジェストの値を取得するには、次のopenSSLコマンドを使用して、ファイルのパーツをエンコードします。 ``` openssl sha1 -binary <FILE_PART_NAME> | base64 ``` 例: ``` openssl sha1 -binary videoparta | base64 ``` その結果、Base64でエンコードされたメッセージがアップロードの検証に使用されます。 ## パーツのアップロード アップロードするパーツのデータをアップロードします。その際、パーツのバイト範囲と、コンテンツを適切にアップロードするための`SHA`ダイジェストを指定します。 ### コンテンツの範囲 各パーツのサイズは、作成したアップロードセッションで指定されているパーツサイズとまったく同じサイズである必要があります。ただし、ファイルの最後のパーツは小さくなる可能性があるため、例外となります。`Content-Range`パラメータの定義は、次のパターンに従います。 ``` -H "Content-Range: bytes <LOWER_BOUND>-<HIGHER_BOUND>/<TOTAL_SIZE>" ``` `Content-Range`の値を指定する際は、以下の点に注意してください。 - 各パーツのバイト範囲の下限は、パーツサイズの倍数にする必要があります。 - 上限は、パーツサイズの倍数から1を引いた値にする必要があります。 たとえば、パーツサイズが`8388608`の場合、最初の2つのパーツのコンテンツの範囲は次のようになります。 ``` -H "Content-Range: bytes 0-8388607/32127641" \ ## first part -H "Content-Range: bytes 8388608-16777215/32127641" \ ## second part ``` ## レスポンス 各アップロードの後、結果のレスポンスには、アップロードされたパーツの`ID`と`SHA`が含まれます。 ``` { "part_id": "6F2D3486", "offset": 16777216, "size": 3222784, "sha1": "134b65991ed521fcfe4724b7d814ab8ded5185dc" } ``` すべてのパーツアップロードのすべてのJSONレスポンスは、[セッションのコミット](g://uploads/chunked/commit-session)に必要なため、保持してください。 ## 範囲の重複 パーツアップロードのリクエストがエラーコード`range_overlaps_existing_part`で失敗するのは、アプリケーションがファイルの分割に失敗し、すでにコンテンツがアップロードされている範囲にパーツをアップロードしようとしたことが原因です。アプリケーションでは、この最後のパーツがセッションに継続されなかったと想定する必要があります。 ## 並行アップロード パーツは並行してアップロードできますが、可能な限り順番にアップロードするようにしてください。バイトオフセットが小さいパーツは、バイトオフセットが大きいパーツより先にアップロードする必要があります。 推奨されるのは、バイトオフセット順に並べたパーツのキューから、3~5個のパーツを並行してアップロードする方法です。パーツのアップロードが失敗した場合は、さらにパーツをアップロードする前に、失敗したアップロードを再試行してください。 **Source:** [https://ja.developer.box.com/guides/uploads/chunked/upload-part/](https://ja.developer.box.com/guides/uploads/chunked/upload-part/) --- ### はじめに **Type:** guide | **Category:** はじめに | **Section:** Developer Guides はじめに Boxのドキュメントは、主に以下の5つのセクションに分かれています。 Box Platformについて: Platform全般の概要。 開発者向けガイド: 開発者向けポータル、APIの動作、Boxの機能の使用方法に関する詳細なドキュメント。 API… # はじめに Boxのドキュメントは、主に以下の5つのセクションに分かれています。 - **Box Platformについて**: Platform全般の概要。 - **開発者向けガイド**: 開発者向けポータル、APIの動作、Boxの機能の使用方法に関する詳細なドキュメント。 - **APIリファレンス**: リクエストとレスポンスの例を含む、APIエンドポイントとリソースのリスト。 - **SDKとツール**: Box公式SDKとツールのリスト。 - **サンプルコードカタログ**: 複数のコードリポジトリが一元管理されているリスト。 Box APIを使用する開発が初めての方は、まずは[Box Platformについて](page://platform)セクションのコンテンツを熟読してください。 このセクションの内容は以下のとおりです。 - [Box Platformの概念](page://platform/box-platform-101)を学ぶ - 自分の[ユースケース](page://platform/use-cases)がBoxに適しているかどうかを評価する - さまざまな[Boxユーザーの種類](page://platform/user-types)を理解する - 適切な[アプリケーションの種類](page://platform/application-types)を選択する - 利用可能な[認証方法](page://platform/authentication-methods)を確認し、自分のユースケースに最適なものを選択する - どこで[サポート](page://platform/support)を受けられるかを確認する - Boxでのアプリケーション開発に必要な[ツール](page://platform/tools)を確認する 基礎を学んだら、以下の手順に従うことをお勧めします。 1. 最初の[Boxアプリケーション](g://getting-started/first-application)を作成します。 2. アプリケーションを構成します。 3. [エンドポイント](page://reference)を調べて、[一般的な値](page://platform/appendix/locating-values)を使用してAPIコールを実行します。 4. アプリケーションを[公開](g://getting-started/publish-app)します。 不明な点がある場合は、Boxの[フォーラム](https://forum.box.com)を確認してください。 **Source:** [https://ja.developer.box.com/guides/getting-started/](https://ja.developer.box.com/guides/getting-started/) --- ### ファイル **Type:** guide | **Category:** ファイル | **Section:** Developer Guides ファイル ファイルは、フォルダとともに、Box APIの中核を成します。ファイルはアップロードおよびダウンロードが可能で、コンテンツに関する重要なメタデータ情報を保持できます。 # ファイル ファイルは、[フォルダ](g://folders)とともに、Box APIの中核を成します。ファイルは[アップロード](g://uploads)および[ダウンロード](g://downloads)が可能で、コンテンツに関する重要なメタデータ情報を保持できます。 **Source:** [https://ja.developer.box.com/guides/files/](https://ja.developer.box.com/guides/files/) --- ### ファイルからメタデータを抽出する (構造化) **Type:** guide | **Category:** Box AI | **Section:** Developer Guides ファイルからメタデータを抽出する (構造化) Box AI APIを使用すると、指定したファイルからメタデータを抽出し、結果をキー/値ペアの形式で取得することができます。入力には、fields… # ファイルからメタデータを抽出する (構造化) Box AI APIを使用すると、指定したファイルからメタデータを抽出し、結果をキー/値ペアの形式で取得することができます。入力には、`fields`パラメータを使用して構造を作成するか、すでに定義済みのメタデータテンプレートを使用できます。テンプレートの作成の詳細については、[メタデータテンプレートのカスタマイズ](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates)を参照するか、[メタデータテンプレートAPI](g://metadata/templates/create)を使用してください。 ## サポートされているファイル形式 このエンドポイントでは、以下のファイル形式がサポートされています。 - PDF - TIFF - PNG - JPEG Box AIは、画像ファイル (TIFF、PNG、JPEG) やスキャンしたドキュメントを処理する際、自動的に光学式文字認識 (OCR) を適用します。これにより、抽出前に画像をPDFに変換する必要がなくなるため、時間の節約と統合の簡略化が実現します。 ## サポートされている言語 Box AIは、以下の言語のドキュメントからメタデータを抽出できます。 英語 日本語 中国語 韓国語 キリル文字ベースの言語 (ロシア語、ウクライナ語、ブルガリア語、セルビア語など) 異なる言語や画像形式を使用するために追加の構成は必要ありません。Box AIは、自動的に言語を検出し、必要に応じてOCRを適用します。 ## 開始する前に Platformアプリを作成して認証するには、[Box AIの使い方](g://box-ai/ai-tutorials/prerequisites)に記載されている手順に従っていることを確認してください。 ## リクエストの送信 リクエストを送信するには、`POST /2.0/ai/extract_structured`エンドポイントを使用します。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 `items`配列に含めることができる要素は1つだけです。 | パラメータ | 説明 | 例 | | --- | --- | --- | | metadata_template | 抽出するフィールドを含むメタデータテンプレート。リクエストを機能させるには、metadata_templateまたはfieldsを指定する必要がありますが、両方を指定することはできません。 | | | metadata_template.type | メタデータテンプレートのタイプ。 | metadata_template | | metadata_template.scope | メタデータテンプレートのスコープ。globalまたはenterpriseのいずれかになります。globalテンプレートは、任意のBox Enterpriseで利用できますが、enterpriseテンプレートは特定のEnterpriseに関連付けられます。 | metadata_template | | metadata_template.template_key | メタデータテンプレートの名前。 | invoice | | items.id | ドキュメントのBoxファイルID。IDは、拡張子が付いている実際のファイルを参照する必要があります。 | 1233039227512 | | items.type | 指定した入力データのタイプ。 | file | | items.content | 項目のコンテンツ (多くの場合はテキストレプリゼンテーション)。 | This article is about Box AI. | | fields.type | フィールドのタイプ。これには、string、float、date、enum、multiSelectが含まれますが、これらに限定されるものではありません。 | string | | fields.description | フィールドの説明。 | The person's name. | | fields.displayName | フィールドの表示名。 | Name | | fields.key | フィールドの一意の識別子。 | name | | fields.options | このフィールドのオプションのリスト。ほとんどの場合、enumおよびmultiSelectフィールドタイプと組み合わせて使用します。 | [{"key":"First Name"},{"key":"Last Name"}] | | fields.options.key | フィールドの一意の識別子。 | First Name | | fields.prompt | キー (識別子) に関する追加のコンテキスト。キーの確認方法や形式を含めることができます。 | Name is the first and last name from the email address | | ai_agent | デフォルトのエージェント構成を上書きするために使用されるAIエージェント。このパラメータを使用すると、たとえば、modelパラメータを使用してデフォルトのLLMをカスタムのLLMに置き換えたり、よりカスタマイズされたユーザーエクスペリエンスを実現できるようにベースとなるpromptを微調整したり、temperatureなどのLLMパラメータを変更して結果の創造性を調整したりすることができます。ai_agentパラメータを使用する前に、GET 2.0/ai_agent_defaultリクエストを使用してデフォルト構成を取得できます。具体的なユースケースについては、AIモデルの上書きに関するチュートリアルを参照してください。 | | ## ユースケース この例では、サンプル請求書から構造化された形でメタデータを抽出する方法を示します。ベンダー名、請求書番号などの詳細情報を抽出する必要があるとします。 ### リクエストの作成 Box AIから応答を取得するには、以下のパラメータを使用して、`POST /2.0/ai/extract_structured`エンドポイントを呼び出します。 - `items.type`および`items.id`: データの抽出元となるファイルを指定します。 - `fields`: 指定したファイルから抽出するデータを指定します。 - `metadata_template`: 既存のメタデータテンプレートを指定します。 `fields`と`metadata_template`のどちらかを使用して、構造を指定できます。両方を使用することはできません。 ### fieldsパラメータの使用 `fields`パラメータを使用すると、抽出するデータを指定できます。各`fields`オブジェクトにはパラメータのサブセットがあり、それを使用して、検索対象のデータに関する情報を追加できます。たとえば、フィールドのタイプや説明、さらには追加のコンテキストを含めたプロンプトを追加することができます。 ``` curl --location 'https://api.box.com/2.0/ai/extract_structured' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <ACCESS_TOKEN>'' \ --data '{ "items": [ { "id": "1517628697289", "type": "file" } ], "fields": [ { "key": "document_type", "type": "enum", "prompt": "what type of document is this?", "options": [ { "key": "Invoice" }, { "key": "Purchase Order" }, { "key": "Unknown" } ] }, { "key": "document_date", "type": "date" }, { "key": "vendor", "description": "The name of the entity.", "prompt": "Which vendor is sending this document.", "type": "string" }, { "key": "document_total", "type": "float" } ] }' ``` 応答には、以下のように、指定したフィールドとその値が示されます。 ``` { "document_date": "2024-02-13", "vendor": "Quasar Innovations", "document_total": $1050, "document_type": "Purchase Order" } ``` ### メタデータテンプレートの使用 メタデータテンプレートを使用する場合は、その`template_key`、`type`、`scope`を指定します。 ``` curl --location 'https://api.box.com/2.0/ai/extract_structured' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <ACCESS_TOKEN>' \ --data '{ "items": [ { "id": "1517628697289", "type": "file" } ], "metadata_template": { "template_key": "rbInvoicePO", "type": "metadata_template", "scope": "enterprise_1134207681" } }' ``` 応答には、以下のように、メタデータテンプレートに含まれているフィールドとその値が示されます。 ``` { "documentDate": "February 13, 2024", "total": "$1050", "documentType": "Purchase Order", "vendor": "Quasar Innovations", "purchaseOrderNumber": "003" } ``` ### 抽出エージェント (強化) 抽出エージェント (強化) を使用するには、次のように`ai_agent`オブジェクトを指定します。 ``` { "ai_agent": { "type": "ai_agent_id", "id": "enhanced_extract_agent" } } ``` 抽出エージェント (強化) を使用してデータを抽出するには、以下のいずれかが必要です。 - [インラインでのフィールド定義](#use-fields-parameter) (フィールドが頻繁に変わる場合に最適) - [メタデータテンプレート](#use-metadata-template) (フィールドが一定である場合に最適) Box Python SDKを使用したサンプルのコードスニペットを確認してください。 ``` from box_sdk_gen import ( AiAgentReference, AiAgentReferenceTypeField, AiItemBase, AiItemBaseTypeField, BoxClient, BoxCCGAuth, CCGConfig, CreateAiExtractStructuredMetadataTemplate ) # Create your client credentials grant config from the developer console ccg_config = CCGConfig( client_id="my_box_client_id", # replace with your client id client_secret="my_box_client_secret", # replace with your client secret user_id="my_box_user_id", # replace with the box user id that has access # to the file you are referencing ) auth = BoxCCGAuth(config=ccg_config) client = BoxClient(auth=auth) # Create the agent config referencing the enhanced extract agent enhanced_extract_agent_config = AiAgentReference( id="enhanced_extract_agent", type=AiAgentReferenceTypeField.AI_AGENT_ID ) # Use the Box SDK to call the extract_structured endpoint box_ai_response = client.ai.create_ai_extract_structured( # Create the items array containing the file information to extract from items=[ AiItemBase( id="my_box_file_id", # replace with the file id type=AiItemBaseTypeField.FILE ) ], # Reference the Box Metadata template metadata_template=CreateAiExtractStructuredMetadataTemplate( template_key="InvoicePO", scope="enterprise" ), # Attach the agent config you created earlier ai_agent=enhanced_extract_agent_config, ) print(f"box_ai_response: {box_ai_response.answer}") ``` **Source:** [https://ja.developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured/](https://ja.developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured/) --- ### ファイルからメタデータを抽出する (自由形式) **Type:** guide | **Category:** Box AI | **Section:** Developer Guides ファイルからメタデータを抽出する (自由形式) Box AI APIを使用すると、ドキュメントを照会し、指定したプロンプトに基づいてメタデータを抽出できます。自由形式とは、JSONやXML… # ファイルからメタデータを抽出する (自由形式) Box AI APIを使用すると、ドキュメントを照会し、指定したプロンプトに基づいてメタデータを抽出できます。**自由形式**とは、JSONやXMLなどの形式の文字列化バージョン、またはプレーンテキストをプロンプトに含めることができるという意味です。 **メタデータを抽出 (自由形式)** エンドポイントはOCRをサポートしていません。英語以外の言語の画像ファイル (TIFF、PNG、JPEG) またはドキュメントからメタデータを抽出するには、[メタデータを抽出 (構造化)](g://box-ai/ai-tutorials/extract-metadata-structured) エンドポイントを使用してください。 ## 開始する前に Platformアプリを作成して認証するには、[Box AIの使い方](g://box-ai/ai-tutorials/prerequisites)に記載されている手順に従っていることを確認してください。 ## リクエストの送信 リクエストを送信するには、`POST /2.0/ai/extract`エンドポイントを使用します。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 `items`配列に含めることができる要素は1つだけです。 | パラメータ | 説明 | 例 | | --- | --- | --- | | prompt | Box AIに対するテキストの生成またはリファインのリクエスト。プロンプトの長さは10000文字以内にする必要があります。 | 週1回の営業会議のアジェンダを作成してください。 | | items.id | ドキュメントのBoxファイルID。IDは、拡張子が付いている実際のファイルを参照する必要があります。 | 1233039227512 | | items.type | 指定した入力データのタイプ。 | file | | items.content | 項目のコンテンツ (多くの場合はテキストレプリゼンテーション)。 | This article is about Box AI. | | ai_agent | デフォルトのエージェント構成を上書きするために使用されるAIエージェント。このパラメータを使用すると、たとえば、modelパラメータを使用してデフォルトのLLMをカスタムのLLMに置き換えたり、よりカスタマイズされたユーザーエクスペリエンスを実現できるようにベースとなるpromptを微調整したり、temperatureなどのLLMパラメータを変更して結果の創造性を調整したりすることができます。ai_agentパラメータを使用する前に、GET 2.0/ai_agent_defaultリクエストを使用してデフォルト構成を取得できます。具体的なユースケースについては、AIモデルの上書きに関するチュートリアルを参照してください。 | | ## ユースケース この例では、サンプル請求書からメタデータを抽出する方法を示します。 ### リクエストの作成 Box AIから応答を取得するには、以下のパラメータを使用して、`POST /2.0/ai/extract`エンドポイントを呼び出します。 - クエリか、抽出するフィールドの構造化リストまたは非構造化リストを指定できる`prompt`。 - データの抽出元となるファイルの`type`および`id`。 ### プロンプトの作成 ユースケースや詳細度に応じて、さまざまなプロンプトを作成できます。 #### プレーンテキストを使用する このエンドポイントでは自由形式のプロンプトが許可されているため、プレーンテキストを使用して情報を取得できます。 ``` curl --location 'https://api.box.com/2.0/ai/extract' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <ACCESS_TOKEN>' \ --data '{ "prompt": "find the document type (invoice or po), vendor, total, and po number", "items": [ { "type": "file", "id": "1443721424754" } ] }' ``` その場合、レスポンスは、テキストに含まれているキーワードに基づいて作成されます。 ``` { "answer": "{\"Document Type\": \"Invoice\", \"Vendor\": \"Quasar Innovations\", \"Total\": \"$1,050\", \"PO Number\": \"003\"}", "created_at": "2024-05-31T10:30:51.223-07:00", "completion_reason": "done" } ``` #### 特定の用語を使用する 文全体を書かなくても、請求書に含まれることが予想される用語でプロンプトを構成できます。 ``` curl --location 'https://api.box.com/2.0/ai/extract' \ --header 'Content-Type: application/json' \ --header 'Authorization: <ACCESS_TOKEN>' \ --data '{ "prompt": "{\"vendor\",\"total\",\"doctype\",\"date\",\"PO\"}", "items": [ { "type": "file", "id": "1443721424754" } ] }' ``` このアプローチを使用すると、以下のように、リクエストで指定した用語のリストとその値が返されます。 ``` { "answer": "{\"vendor\": \"Quasar Innovations\", \"total\": \"$1,050\", \"doctype\": \"Invoice\", \"PO\": \"003\"}", "created_at": "2024-05-31T10:28:51.906-07:00", "completion_reason": "done" } ``` #### キー/値ペアを使用する プロンプトには、Box AIがメタデータの構造を認識するのに役立つキー/値ペアのリストを指定することができます。このアプローチでは、`fields`配列内にキー/値ペアを列挙する必要があります。 ``` curl --location 'https://api.box.com/2.0/ai/extract' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer <ACCESS_TOKEN>' \ --data '{ "prompt": "{\"fields\": [{\"key\":\"vendor\",\"displayName\":\"Vendor\",\"type\":\"string\",\"description\":\ "Vendorname\"},{\"key\":\"documentType\",\"displayName\":\"Type\",\"type\":\"string\",\"description\":\"\"}]}", "items": [ { "type": "file", "id": "1443721424754" } ] }' ``` レスポンスには、以下のように、ファイル内に存在する`fields`とその値が含まれます。 ``` { "answer": "{\"vendor\": \"Quasar Innovations\", \"documentType\": \"Invoice\"}", "created_at": "2024-05-31T10:15:38.17-07:00", "completion_reason": "done" } ``` **Source:** [https://ja.developer.box.com/guides/box-ai/ai-tutorials/extract-metadata/](https://ja.developer.box.com/guides/box-ai/ai-tutorials/extract-metadata/) --- ### ファイルとフォルダの転送 **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides ファイルとフォルダの転送 ユーザーアカウントのプロビジョニング解除における一般的な要件の1つが、ユーザーアカウント内に保存されているすべてのファイルとフォルダを別のユーザーアカウント、またはサービスアカウントなどの長期保存用の場所に転送することです。 Box… # ファイルとフォルダの転送 ユーザーアカウントのプロビジョニング解除における一般的な要件の1つが、ユーザーアカウント内に保存されているすべてのファイルとフォルダを別のユーザーアカウント、またはサービスアカウントなどの長期保存用の場所に転送することです。 Box内でこれを実行するのに使用される一般的な方法は以下の2つです。 - すべてのコンテンツをあるユーザーから別のユーザーに直接移動する、[所有フォルダの移動](e://put_users_id_folders_0)APIを使用する。 - コラボレーション転送の方法を使用して、一度に1つのファイルまたはフォルダの所有権を、あるユーザーから別のユーザーに変更する。 転送中は、ユーザーが所有するファイルにアクセスできなくなります。また、移動中もユーザーが所有する共有コンテンツにアクセスできない可能性があります。 コンテンツの量によっては、この操作にかなりの時間がかかる場合があります。 ## 所有フォルダの移動APIの使用 [所有フォルダの移動エンドポイント](e://put_users_id_folders_0)は、あるユーザーが所有するコンテンツ全体を別のユーザーに移動することを目的に設計されています。 所有フォルダの移動APIは、同期プロセスとして実行されるため、ソースユーザーのフォルダ全体に多数の項目がある場合、レスポンスが遅くなる可能性があります。 転送エンドポイントを呼び出すには、転送元のユーザーIDと転送先のユーザーIDを指定します。 ## コラボレーション転送の使用 コラボレーション転送は、[コラボレーションエンドポイント](e://post_collaborations)を使用して、単一のファイルまたはフォルダの所有権をあるユーザーから別のユーザーに即座に変更するプロセスです。 この方法では、単一のファイルまたはフォルダの所有権を即時に転送します。ただし、この方法でルート (すべてのファイルおよびフォルダ) を別のユーザーに転送することは**できません**。 `transfer_from_user`から`transfer_to_user`への転送の一般的なプロセスは以下の手順に従います。 ### 転送先ユーザーを共同所有者として追加 最初の手順は、転送するファイルまたはフォルダへの`co-owner`アクセス権限を持つコラボレータとして、`transfer_to_user`アカウントを追加することです。 `transfer_from_user`アカウントとして呼び出しを行い、[コラボレーションを追加](e://post_collaborations)エンドポイントを使用して`transfer_to_user`を共同所有者として追加します。 ### 転送先ユーザーとしてコラボレーションIDを取得 次の手順では、コラボレーション情報を取得するリクエストを`transfer_to_user`アカウントとして実行します。返されるコラボレーションオブジェクトには、最後の手順で使用するコラボレーションIDが含まれます。 `transfer_to_user`アカウントとして呼び出しを実行し、[コラボレーションを取得エンドポイント](e://get_collaborations_id)を使用して、転送するファイルまたはフォルダのIDのコラボレーションを取得します。コラボレーションIDをキャプチャします。 ### 転送元ユーザーを所有者として削除 最後の手順は、ファイルまたはフォルダの所有者として`transfer_from_user`アカウントを削除することです。これは、[コラボレーションを削除エンドポイント](e://delete_collaborations_id)を使用して行います。 `transfer_to_user`アカウントとして呼び出しを実行し、ファイルまたはフォルダのコラボレータとして`transfer_from_user`を削除します。 これにより、ファイルまたはフォルダの所有者は`transfer_to_user`アカウントになり、`transfer_from_user`アカウントはアクセスできなくなります。 **Source:** [https://ja.developer.box.com/guides/users/deprovision/transfer-folders/](https://ja.developer.box.com/guides/users/deprovision/transfer-folders/) --- ### ファイルのアップロード **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides ファイルのアップロード ファイルのプレビューの埋め込みリンクを生成するには、そのファイルをBoxにアップロードする必要があります。ほとんどのファイルタイプでは、アップロード時に自動的に変換が開始されます。ただし、動画と3D… # ファイルのアップロード ファイルのプレビューの埋め込みリンクを生成するには、そのファイルをBoxにアップロードする必要があります。ほとんどのファイルタイプでは、アップロード時に自動的に変換が開始されます。ただし、動画と3Dファイルについては、最初のプレビュー時に変換が開始されます。変換を開始するために、ユーザーが明示的な操作を行う必要はありません。いずれの場合も、変換は1ファイルにつき1回だけ開始され、生成されたアセットは元のファイルがBoxに保存されている間は使用できます。 ## ファイルのアップロード [Box SDK](pages://sdks-and-tools)を使用してファイルをアップロードするか、またはAPIを使用して直接ファイルをアップロードするには、[アプリケーションの設定](guide://embed/box-view/setup)中に生成されたクライアントIDとアプリトークンを使用してアプリケーションを認証する必要があります。 アプリケーションの認証 認証済みクライアントが作成されたら、そのクライアントを使用して、変換するファイルをアプリトークンアプリケーションに直接アップロードできます。 Boxへのファイルのアップロード **Source:** [https://ja.developer.box.com/guides/embed/box-view/upload-file/](https://ja.developer.box.com/guides/embed/box-view/upload-file/) --- ### ファイルのすべてのタスクのリストの取得 **Type:** guide | **Category:** タスク | **Section:** Developer Guides ファイルのすべてのタスクのリストの取得 特定のファイルのすべてのタスクのリストを取得するには、ファイルのidを指定してGET /files/:id/tasksを呼び出します。 # ファイルのすべてのタスクのリストの取得 特定のファイルのすべてのタスクのリストを取得するには、ファイルの`id`を指定して[`GET /files/:id/tasks`](e://get_files_id_tasks)を呼び出します。 **Source:** [https://ja.developer.box.com/guides/tasks/for-file/](https://ja.developer.box.com/guides/tasks/for-file/) --- ### ファイルのすべてのレプリゼンテーションのリストの取得 **Type:** guide | **Category:** レプリゼンテーション | **Section:** Developer Guides ファイルのすべてのレプリゼンテーションのリストの取得 ファイルに使用できるレプリゼンテーションを確認するには、representationsフィールドのリクエスト中にGET /files/:id… # ファイルのすべてのレプリゼンテーションのリストの取得 ファイルに使用できるレプリゼンテーションを確認するには、[`representations`](resource://file#param-representations)フィールドのリクエスト中に[`GET /files/:id`](endpoint://get-files-id)エンドポイントを呼び出します。 ``` curl https://api.box.com/2.0/files/123?fields=representations \ -H "authorization: Bearer ACCESS_TOKEN" ``` このレスポンスには、次の形式でレプリゼンテーションのリストが含まれます。 ``` ... { "info": { "url": "https://api.box.com/2.0/internal_files/123/versions/345/representations/jpg_thumb_32x32" }, "properties": { "dimensions": "32x32", "paged": "false", "thumb": "true" }, "representation": "jpg" } ... ``` ## レスポンスのフィールド どのレプリゼンテーションにも一連のプロパティとレプリゼンテーションのタイプが含まれます。 `dimensions`フィールド (省略可) は、ファイルのサイズをピクセル単位の幅と高さで表します。 `paged`フィールド (省略可) は、このレプリゼンテーションがページ割りされたドキュメントかどうかを指定します。画像やPDFによっては、ページ割りされたドキュメントになることがよくあります。 `thumb`フィールド (省略可) は、このレプリゼンテーションがファイルのサムネイルとして適しているかどうかを指定します。 **Source:** [https://ja.developer.box.com/guides/representations/list-all-representations/](https://ja.developer.box.com/guides/representations/list-all-representations/) --- ### ファイルのダウンロード **Type:** guide | **Category:** ダウンロード | **Section:** Developer Guides ファイルのダウンロード ファイルをダウンロードするには、取得するコンテンツが含まれるファイルのIDをGET /files/:id/contentに渡します。 ダウンロードURL SDKを使用しない場合、このAPIコールでは、HTTP 302 Found… # ファイルのダウンロード ファイルをダウンロードするには、取得するコンテンツが含まれるファイルのIDを[`GET /files/:id/content`](e://get_files_id_content)に渡します。 ## ダウンロードURL SDKを使用しない場合、このAPIコールでは、`HTTP 302 Found`ステータスコードとともに、次のようなダウンロードURLへのリンクを含む`location`ヘッダーが返されます。 ``` https://dl.boxcloud.com/d/1/[long-random-string]/download ``` cURLで`-L`フラグを使用することで、自動的にこのリダイレクトに従うことができます。 SDKでは、結果として、バイナリデータがダウンロードされます。APIでは、ダウンロードURLが`location`ヘッダーを介して返されます。 また、SDKを介して[ダウンロードURLを取得](g://downloads/get-url)することも可能です。 ## ダウンロードURLの有効期限 このダウンロードURLは、ファイルのダウンロードを許可するためにユーザーのブラウザに渡すことができますが、このURLが期限切れになると、その後でダウンロードするには再度リクエストする必要があります。 ## ファイルの準備ができていない ファイルをダウンロードする準備がまだできていない場合は、クライアントがファイルをダウンロードできるようになるまでの秒数を示す`retry-after`ヘッダーが返されます。 このレスポンスは、ダウンロードリクエストの直前にファイルがアップロードされた場合に発生することがあります。 **Source:** [https://ja.developer.box.com/guides/downloads/file/](https://ja.developer.box.com/guides/downloads/file/) --- ### ファイルのプレビューの作成 **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides ファイルのプレビューの作成 ファイルは、アプリトークンアプリケーションにアップロードされると、以下の2つの方法でプレビューすることができます。 直接埋め込み: カスタムの埋め込みリンクを使用した標準のHTML `コンポーネント。 - カスタマイズされたプレビューアー: Box [UI Elements](g://embed/ui-elements)を使用して全面的にカスタマイズされたプレビューウィジェット。 ## 直接埋め込み (iframe) 直接埋め込みリンクを使用すると、アプリケーションでのプレビューをカスタマイズするためのオプションが制限されます。このメソッドは軽量であるため、このAPIには、ドキュメントでのスクロール、動画のインタラクティブな再生や一時停止、画像の回転など、クライアント側の処理に対応するオプションはありません。 Box Viewの直接`<iframe>`埋め込みを作成するには、以下の2つの手順を実行します。 1. ファイル用に埋め込みURLを生成する 2. 生成した埋め込みURLを`<iframe>`に追加する ### ファイル用に埋め込みURLを生成する アプリトークンアプリケーションにアップロードされたファイルの公開ファイルプレビューURLを作成するには、直接のSDKメソッドを使用するか、APIに直接リクエストを発行します。 埋め込みURLをAPIから直接生成する場合は、[ファイル情報の取得エンドポイント](e://get_files_id)を使用して、`fields`パラメータを介して`expiring_embed_link`をリクエストします。 ``` curl https://api.box.com/2.0/files/FILE_ID?fields=expiring_embed_link \ -H "authorization: Bearer [APP_TOKEN]" ``` ``` String fileId = "12345678"; Uri embedUri = await client.FilesManager.GetPreviewLinkAsync(id: fileId); ``` ``` String fileID = "12345678"; BoxFile file = new BoxFile(api, fileID); URL embedLink = file.getPreviewLink(); ``` ``` file_id = '12345678' embed_url = client.file(file_id).get_embed_url() ``` ``` const fileId = '12345678'; client.files.getEmbedLink(fileId).then(embedURL => { // ... }); ``` レスポンスオブジェクト内では、公開埋め込みURLが次のようになります。 ``` https://app.box.com/preview/expiring_embed/gvoct6FE!YT_X1LauQ8ulDTad96hTl9xLCRYJ 5iU6O61KxiduxFIgX9HSWMcCWf7zju1XkEsf6-Ul2qtKXeaFeKPT4SysQJQdxrc144KgTIBuoI3bWMf4 cfhp3jdLYrK5hnr6KMq5H6r-AW31AcFtDJi1lnT0M4b3bvvZUaE2RRJGGINMauvS6MAT2luae5PvbFSx Ctqqx6XlN6QrqbhfJc0UeJF9qwMv3-O8q5fWn0qr8OTY4lkeYidtTs3Ux... ``` セキュリティ上の理由により、生成された埋め込みリンクは1分後に期限切れになるため、生成されたらすぐにアプリに埋め込む必要があります。 ### 生成した埋め込みURLを<iframe>に追加する アプリケーションのHTML内で、`iframe`要素を作成し、`src`属性を生成された埋め込みURLに設定します。 ``` <iframe src="https://app.box.com/preview/expiring_embed/gvoct6FE!ixgtCKQAziW 9tHPm-jueq4cmS4GnL9RTJRcVEsK_3W8xcxtVo_v6gKpoXY45odgG1QrcjBVYZMrriUyGvcoSM SX8s-smpaFFYQik0R-PCKFtwvbv0lonid6ZfYNbuNFl2j9hOIqBccvHrdVor7i6WvOm6zELzTY 4EWshcyYYBhDbJmYMrq61RtU_kvBe5P..."></iframe> ``` ## カスタマイズされたプレビューアー (UI Element) 高度なプレビューのカスタマイズ機能やイベント処理機能を活用するには、Box [UI Preview Element](guide://embed/ui-elements/preview)を使用します。 このプレビューElementを設定するには、まず、必須コンポーネントをインストールします。 Box Elementsとプレビューのインストール 新しいプレビューアーを表示するためのJavaScriptコードを追加する際、基本的なコードは次のようになります。 ``` var preview = new Box.Preview(); preview.show("FILE_ID", "ACCESS_TOKEN", { container: ".preview-container", showDownload: true }); ``` コードサンプル内のプレースホルダを以下の内容に置き換えてください。 - `FILE_ID`: アプリトークンアプリケーションにアップロードされたファイルのID。ファイルのアップロード時に返されるオブジェクトから取得できます。 - `ACCESS_TOKEN`: アプリケーションの構成時に設定されたプライマリアクセストークン、またはそのトークンのダウンスコープされたバージョン。 プライマリアクセストークンの高度な権限により、JavaScriptコードでは、ダウンスコープされたバージョンのトークンを使用することを強くお勧めします。[ダウンスコープのベストプラクティス](guide://embed/box-view/best-practices#use-downscoped-tokens)を参照してください。 **Source:** [https://ja.developer.box.com/guides/embed/box-view/create-preview/](https://ja.developer.box.com/guides/embed/box-view/create-preview/) --- ### ファイルのメタデータの更新 **Type:** quick-start | **Category:** メタデータ | **Section:** Developer Guides … # ファイルのメタデータの更新 メタデータをファイルまたはフォルダに適用したら、多くの場合は、後日メタデータの更新が必要になります。 メタデータインスタンスを更新するには、元のデータに一連の操作を適用します。これらの操作はアトミックに実行されるため、変更はすべて適用されるか、まったく適用されないかのいずれかになります。 インスタンスの更新の詳細を確認する この場合、顧客の`name`を`Box, Inc`から`Box`に変更するとします。適用できる操作は2つあり、まず、変更前に名前の値がまだ`Box, Inc`であることを確認し、次に変更を行います。 ``` curl -X PUT https://api.box.com/2.0/files/12345/metadata/enterprise/customerInfo \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json-patch+json" \ -d '[ { "op": "test", "path": "/name", "value": "Box, Inc" }, { "op": "replace", "path": "/name", "value": "Box" } ]' ``` ``` var updates = new List<BoxMetadataUpdate>() { new BoxMetadataUpdate() { Op = MetadataUpdateOp.test, Path = "/name", Value = "Box, Inc" }, new BoxMetadataUpdate() { Op = MetadataUpdateOp.replace, Path = "/name", Value = "Box" } }; Dictionary<string, object> updatedMetadata = await client.MetadataManager .UpdateFileMetadataAsync("12345", updates, "enterprise", "customerInfo"); ``` ``` BoxFile file = new BoxFile(api, "12345"); file.updateMetadata( file.createMetadata( "customerInfo", "enterprise", new Metadata().test("/name", "Box, Inc").replace("/name", "Box") ); ``` ``` file = client.file(file_id='12345') metadata = file.metadata(scope='enterprise', template='customerInfo') updates = metadata.start_update() updates.test('/name', 'Box, Inc') updates.replace('/name', 'Box') file.update(updates) ``` ``` var updates = [ { op: 'test', path: '/name', value: 'Box, Inc' }, { op: 'replace', path: '/name', value: 'Box' } ]; client.files.updateMetadata( '12345', client.metadata.scopes.ENTERPRISE, "customerInfo", updates ).then(metadata => { //... }); ``` すべての操作の詳細を確認する このAPIにより、更新されたメタデータインスタンスが返されます。 ``` { "name": "Box", "industry": "Technology", "tav": 1000000, "$id": "01234500-12f1-1234-aa12-b1d234cb567e", "$parent": "folder_12345,", "$scope": "enterprise_34567", "$template": "customerInfo", "$type": "customerInfo-6bcba49f-ca6d-4d2a-a758-57fe6edf44d0", "$typeVersion": 2, "$version": 1, "$canEdit": true } ``` ファイルのメタデータを更新しました **Source:** [https://ja.developer.box.com/guides/metadata/quick-start/update-instance/](https://ja.developer.box.com/guides/metadata/quick-start/update-instance/) --- ### ファイルの復元 **Type:** guide | **Category:** ごみ箱 | **Section:** Developer Guides ファイルの復元 ごみ箱に移動されたが削除されていないファイルを復元するには、/files/:file_idエンドポイントにPOSTリクエストを送信します。これにより、ファイルがまだ使用可能であれば元のフォルダに戻されます。または、オプションとしてparent… # ファイルの復元 ごみ箱に移動されたが削除されていないファイルを復元するには、`/files/:file_id`エンドポイントに`POST`リクエストを送信します。これにより、ファイルがまだ使用可能であれば元のフォルダに戻されます。または、オプションとして`parent`フォルダを指定することもできます。 **Source:** [https://ja.developer.box.com/guides/trash/restore-file/](https://ja.developer.box.com/guides/trash/restore-file/) --- ### ファイルバージョンのアップロード **Type:** guide | **Category:** アップロード | **Section:** Developer Guides ファイルバージョンのアップロード 直接アップロードによってBoxにファイルの新しいバージョンをアップロードするには、ファイルのコンテンツ、目的のファイル名、フォルダIDを使用して、POST /files/:id/content APIにAPI… # ファイルバージョンのアップロード 直接アップロードによってBoxにファイルの新しいバージョンをアップロードするには、ファイルのコンテンツ、目的のファイル名、フォルダIDを使用して、[`POST /files/:id/content`](e://post_files_id_content) APIにAPIコールを実行します。 # 事前チェック アップロードしたファイルが拒否されることによる時間や帯域幅の無駄を防ぐため、ファイルをアップロードする前に[事前チェック](g://uploads/check)を実行することをお勧めします。 ## リクエスト形式 このAPIのリクエスト本文には、`multipart/form-data`のコンテンツタイプが使用されます。これを使用して、ファイル属性とファイルの実際のコンテンツの2つの部分を送信します。 最初の部分は`attributes`と呼ばれ、ファイル名や親フォルダの`id`など、ファイルに関する情報を含むJSONオブジェクトが含まれています。 以下の例では、ユーザーのルートフォルダに`test.txt`をアップロードしています。 ``` POST /api/2.0/files/123/content HTTP/1.1 Host: upload.box.com Authorization: Bearer [ACCESS_TOKEN] content-length: 343 content-type: multipart/form-data; boundary=------------------------9fd09388d840fef1 --------------------------9fd09388d840fef1 content-disposition: form-data; name="attributes" {"name":"test.txt", "parent":{"id":"0"}} --------------------------9fd09388d840fef1 content-disposition: form-data; name="file"; filename="test.txt" content-type: text/plain Test file text. --------------------------9fd09388d840fef1-- ``` マルチパート本文の`attributes` JSON部分は、マルチパートフォームデータの`file` 部分の前に置く必要があります。この順番を間違えると、APIがHTTP `400`ステータスコードとエラーコード`metadata_after_file_contents`を返します。 ## オプション ファイルのアップロード時に使用できるすべてのパラメータの詳細については、[このAPIコールに関するリファレンスドキュメント](e://post_files_id_content)を参照してください。パラメータには、設定することで転送中のファイルの破損を防ぐ`content-md5`や、アップロード時間とは異なる時間をファイル作成時間として明示的に指定できる機能が含まれます。 ファイルバージョンの場合、追加の[`if-match`ヘッダー](g://api-calls/ensure-consistency)を渡すことで、アプリケーションが最後にコンテンツを検査した後で更新されたファイルが上書きされるのを防ぐことができます。 ## 制約事項 直接アップロードできるファイルサイズの上限は50 MBです。ファイルがこれより大きい場合は、[分割アップロードAPI](g://uploads/chunked)を使用してください。 アップロードの上限は、認証済みユーザーのアカウントの種類によって決まります。詳細については、このトピックに関する[Boxコミュニティの記事](https://support.box.com/hc/ja/articles/360043697314-Box%E3%81%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%82%8B%E6%9C%80%E5%A4%A7%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA)を参照してください。 **Source:** [https://ja.developer.box.com/guides/uploads/direct/file-version/](https://ja.developer.box.com/guides/uploads/direct/file-version/) --- ### ファイルバージョンのダウンロード **Type:** guide | **Category:** ダウンロード | **Section:** Developer Guides ファイルバージョンのダウンロード 特定のファイルバージョンをダウンロードするには、取得するコンテンツが含まれるファイルのIDとそのファイルのバージョンIDをGET /files/:id/contentに渡します。 ダウンロードURL SDKを使用しない場合、このAPI… # ファイルバージョンのダウンロード 特定のファイルバージョンをダウンロードするには、取得するコンテンツが含まれるファイルのIDとそのファイルのバージョンIDを[`GET /files/:id/content`](e://get_files_id_content)に渡します。 ## ダウンロードURL SDKを使用しない場合、このAPIコールでは、`HTTP 302 Found`ステータスコードとともに、次のようなダウンロードURLへのリンクを含む`location`ヘッダーが返されます。 ``` https://dl.boxcloud.com/d/1/[long-random-string]/download ``` cURLで`-L`フラグを使用することで、自動的にこのリダイレクトに従うことができます。 SDKでは、結果として、バイナリデータがダウンロードされます。APIでは、ダウンロードURLが`location`ヘッダーを介して返されます。 また、SDKを介して[ダウンロードURLを取得](g://downloads/get-url)することも可能です。 ## ダウンロードURLの有効期限 このダウンロードURLは、ファイルのダウンロードを許可するためにユーザーのブラウザに渡すことができますが、このURLが期限切れになると、その後でダウンロードするには再度リクエストする必要があります。 ## ファイルの準備ができていない ファイルをダウンロードする準備がまだできていない場合は、クライアントがファイルをダウンロードできるようになるまでの秒数を示す`retry-after`ヘッダーが返されます。 このレスポンスは、ダウンロードリクエストの直前にファイルがアップロードされた場合に発生することがあります。 **Source:** [https://ja.developer.box.com/guides/downloads/file-version/](https://ja.developer.box.com/guides/downloads/file-version/) --- ### ファイルへのメタデータテンプレートの追加 **Type:** quick-start | **Category:** 検索 | **Section:** Developer Guides ファイルへのメタデータテンプレートの追加 メタデータテンプレートは、手順4で結果が得られるように1つ以上のファイルに適用する必要があります。ファイルにメタデータを追加するには、UIを使用する方法とAPIを使用する方法の2とおりあります。 UI UI… # ファイルへのメタデータテンプレートの追加 メタデータテンプレートは、手順4で結果が得られるように1つ以上のファイルに適用する必要があります。ファイルにメタデータを追加するには、UIを使用する方法とAPIを使用する方法の2とおりあります。 ## UI UIを使用してファイルにメタデータを適用するには、ファイルに移動し、プレビューを開きます。[**メタデータ**] タブを使用して、[**追加**] をクリックします。手順1で作成したメタデータテンプレートを見つけて、値を選択し、必ず [**保存**] をクリックします。 ## API ファイルにメタデータテンプレートを追加するには、[ファイルにメタデータインスタンスを作成エンドポイント](e://post-files-id-metadata-id-id/)を使用する必要があります。また、前の手順で確認した`scope`および`templateKey`テンプレート値も必要になります。上記のUIを使用した方法で示したのと同じメタデータを適用するAPIコールの例を以下に示します。 規模を考慮したことにより、メタデータテンプレートが10,000を超えるファイルまたはフォルダに適用されると、403エラーが返されます。 1つ以上のファイルにテンプレートを適用しました **Source:** [https://ja.developer.box.com/guides/search/quick-start/apply-template-to-file/](https://ja.developer.box.com/guides/search/quick-start/apply-template-to-file/) --- ### ファイルへのメタデータの適用 **Type:** quick-start | **Category:** メタデータ | **Section:** Developer Guides ファイルへのメタデータの適用 新しいcustomerDataテンプレートが完成したら、このテンプレートをファイルまたはフォルダに適用できます。このテンプレートを適用するには、テンプレートのscopeとtemplateKeyのほか、テンプレートの適用先となる項目のID… # ファイルへのメタデータの適用 新しい`customerData`テンプレートが完成したら、このテンプレートをファイルまたはフォルダに適用できます。このテンプレートを適用するには、テンプレートの`scope`と`templateKey`のほか、テンプレートの適用先となる項目のIDが必要になります。 ``` curl -X POST https://api.box.com/2.0/files/12345/metadata/enterprise/customerInfo \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "Box, Inc", "industry": "Technology", "tav": 1000000 }' ``` ``` var metadataValues = new Dictionary<string, object>() { { "name", "Box, Inc" }, { "industry", "Technology" }, { "tav", 100000 } }; Dictionary<string, object> metadata = await client.MetadataManager .CreateFileMetadataAsync(fileId: "12345", metadataValues, "enterprise", "customerInfo"); ``` ``` BoxFile file = new BoxFile(api, "12345"); file.createMetadata( "customerInfo", "enterprise", new Metadata() .add("name", "Box, Inc") .add("industry", "Technology") .add("tav", 100000) ); ``` ``` metadata = { 'name': 'Box, Inc', 'industry': 'Technology', 'tav': 1000000 } client.file(file_id='11111').metadata(scope='enterprise', template='customerInfo').set(metadata) ``` ``` client.files.addMetadata( '12345', client.metadata.scopes.ENTERPRISE, "customerInfo", { name: "Box, Inc", industry: "Technology", tav: 1000000 } ).then(metadata => { // ... }); ``` この例の`industry`フィールドは`enum`フィールドであるため、値にはこのフィールドで使用できるオプションのいずれかを指定する必要があります。それ以外の値を指定するとエラーが発生します。 このAPIにより、新しく作成されたメタデータインスタンスが返されます。 ``` { "name": "Box, Inc", "industry": "Technology", "tav": 1000000, "$id": "01234500-12f1-1234-aa12-b1d234cb567e", "$parent": "folder_12345,", "$scope": "enterprise_34567", "$template": "customerInfo", "$type": "customerInfo-6bcba49f-ca6d-4d2a-a758-57fe6edf44d0", "$typeVersion": 2, "$version": 1, "$canEdit": true } ``` ファイルにメタデータを適用しました **Source:** [https://ja.developer.box.com/guides/metadata/quick-start/create-instance/](https://ja.developer.box.com/guides/metadata/quick-start/create-instance/) --- ### ファイルリクエスト **Type:** guide | **Category:** ファイルリクエスト | **Section:** Developer Guides ファイルリクエスト Boxファイルリクエストを使用すると、どのユーザーに対しても、迅速かつ安全にファイルおよび関連付けられたメタデータをリクエストできます。ドラッグアンドドロップ方式のグラフィックインターフェースを使用して、以下が可能なウェブフォームを作成できます。 Box… # ファイルリクエスト Boxファイルリクエストを使用すると、どのユーザーに対しても、迅速かつ安全にファイルおよび関連付けられたメタデータをリクエストできます。ドラッグアンドドロップ方式のグラフィックインターフェースを使用して、以下が可能なウェブフォームを作成できます。 - Boxアカウントの有無に関係なく、フォルダにコラボレータを追加せずに、どのユーザーに対しても安全にファイルをリクエストする。 - メタデータフォームフィールド (必須/省略可として設定可能) を使用して追加情報を要求する。 - リンク設定を使用して、セキュリティと追跡の強化を可能にする。 - Box Relayを使用して自動化ワークフローを開始する。 **ファイルリクエストAPI**を使用すると、既存のファイルリクエストに基づく新しいファイルリクエストの作成、ファイルリクエストの設定の更新、ファイルリクエストの有効化/無効化と削除をプログラムによって実行できます。 ## ユースケース ファイルリクエストAPIは、特に、外部システムで新しいケース、プロジェクト、または顧客が作成されたときに自動的にフォルダが作成される場合に役立ちます。このように作成された各フォルダに対してファイルリクエストが自動的に生成されるため、顧客とその他のユーザーはドキュメントをプロジェクトにアップロードできます。 例 - **ケース管理** - この例では、各顧客のサポートケースには、関連付けられた独自のフォルダがあるため、新しいファイルリクエストを顧客に送信し、顧客に対してケースに関連したドキュメントをそのフォルダに送信するようリクエストできます。 - **プロジェクト管理** - この例では、各プロジェクトには、外部システムで定義されたプロジェクトごとに関連付けられた独自のフォルダがあります。このAPIを使用すると、このフォルダ内に自動的に**「クライアントドキュメント」**フォルダを作成することができます。また、必要に応じてドキュメントをアップロードできるようにリンクをクライアントに送信できます。 - **従業員の「受け渡し用」フォルダ** - この例では、銀行の新しいローンアドバイザは各自Boxに個人用フォルダを持っています。クライアントとの作業を支援するために、「受け渡し用」サブフォルダが関連付けられたファイルリクエストとともに自動的に生成されると、クライアントは担当ローンアドバイザの個人用フォルダにドキュメントを自動的にアップロードできるようになります。 ## 制限 現在、このAPIで可能なのは、別のフォルダに関連付けられた既存のファイルリクエストをコピーして新しいファイルリクエストを作成することだけです。テンプレートのファイルリクエストを使用してテンプレートフォルダを作成するには、ガイドを確認してください。 **Source:** [https://ja.developer.box.com/guides/file-requests/](https://ja.developer.box.com/guides/file-requests/) --- ### ファイルリクエストに関する情報の取得 **Type:** guide | **Category:** ファイルリクエスト | **Section:** Developer Guides ファイルリクエストに関する情報の取得 既存のファイルリクエストの詳細を取得するのに必要なのは、その一意のIDだけです。 ファイルリクエストのIDを確認するには、BoxウェブアプリにアクセスしてそのURL… # ファイルリクエストに関する情報の取得 既存の[ファイルリクエスト](g://file-requests/template)の詳細を取得するのに必要なのは、その一意のIDだけです。 ファイルリクエストのIDを確認するには、BoxウェブアプリにアクセスしてそのURLを調べます。ファイルリクエストテンプレートの設定に関する[ガイド](g://file-requests/template)で、ファイルリクエストIDの確認方法を確認してください。 **Source:** [https://ja.developer.box.com/guides/file-requests/get/](https://ja.developer.box.com/guides/file-requests/get/) --- ### ファイルリクエストのコピー **Type:** guide | **Category:** ファイルリクエスト | **Section:** Developer Guides ファイルリクエストのコピー 既存のテンプレートファイルリクエストのコピーを作成するために必要なのは、その一意のIDと、新しいファイルリクエストの適用先となるフォルダのIDだけです。 フォルダやファイルリクエストのIDを確認するには、BoxウェブアプリにアクセスしてそのURL… # ファイルリクエストのコピー 既存の[テンプレート](g://file-requests/template)ファイルリクエストのコピーを作成するために必要なのは、その一意のIDと、新しいファイルリクエストの適用先となるフォルダのIDだけです。 フォルダやファイルリクエストのIDを確認するには、BoxウェブアプリにアクセスしてそのURLを調べます。 フォルダIDは、フォルダにアクセスしたときにURLの末尾にある番号です。たとえば、`app.box.com/folder/123`というURLの場合、フォルダのIDは`123`です。 ファイルリクエストについては、ファイルリクエストテンプレートの設定に関する[ガイド](g://file-requests/template)で、ファイルリクエストIDの確認方法を確認してください。 ## コピー時にファイルリクエストを更新する テンプレートからコピーする際、ファイルリクエストに基本的な変更を行うことができます。ファイルリクエストをテンプレートからコピーするときに更新できるのは、ファイルリクエストのタイトル、説明、ステータス、およびその他いくつかの設定です。 ``` curl -i -X POST "https://api.box.com/2.0/file_requests/2342235/copy" \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "title": "Please upload required documents", "description": "Please upload required documents", "status": "active", "is_email_required": true, "is_description_required": false, "folder": { "id": "342323423" } }' ``` テンプレート作成時に更新できるさまざまなフィールドの詳細については、[`POST /file-requests/:id/copy`](e://post_file_requests_id_copy) APIのリファレンスドキュメントを参照してください。 **Source:** [https://ja.developer.box.com/guides/file-requests/copy/](https://ja.developer.box.com/guides/file-requests/copy/) --- ### ファイルリクエストの削除 **Type:** guide | **Category:** ファイルリクエスト | **Section:** Developer Guides ファイルリクエストの削除 ファイルリクエストを削除するのに必要なのは、その一意のIDだけです。 ファイルリクエストのIDを確認するには、BoxウェブアプリにアクセスしてそのURLを調べます。ファイルリクエストテンプレートの設定に関するガイドで、ファイルリクエストID… # ファイルリクエストの削除 ファイルリクエストを削除するのに必要なのは、その一意のIDだけです。 ファイルリクエストのIDを確認するには、BoxウェブアプリにアクセスしてそのURLを調べます。ファイルリクエストテンプレートの設定に関する[ガイド](g://file-requests/template)で、ファイルリクエストIDの確認方法を確認してください。 **Source:** [https://ja.developer.box.com/guides/file-requests/delete/](https://ja.developer.box.com/guides/file-requests/delete/) --- ### ファイルリクエストの更新 **Type:** guide | **Category:** ファイルリクエスト | **Section:** Developer Guides ファイルリクエストの更新 既存のファイルリクエストの基本的な詳細の一部を更新するのに必要なのは、その一意のIDだけです。 テンプレート作成時に更新できるさまざまなフィールドの詳細については、POST /file-requests/:id/update API… # ファイルリクエストの更新 既存のファイルリクエストの基本的な詳細の一部を更新するのに必要なのは、その一意のIDだけです。 テンプレート作成時に更新できるさまざまなフィールドの詳細については、[`POST /file-requests/:id/update`](e://put_file_requests_id) APIのリファレンスドキュメントを参照してください。 ファイルリクエストのIDを確認するには、BoxウェブアプリにアクセスしてそのURLを調べます。ファイルリクエストテンプレートの設定に関する[ガイド](g://file-requests/template)で、ファイルリクエストIDの確認方法を確認してください。 **Source:** [https://ja.developer.box.com/guides/file-requests/update/](https://ja.developer.box.com/guides/file-requests/update/) --- ### ファイルレプリゼンテーションのダウンロード **Type:** guide | **Category:** レプリゼンテーション | **Section:** Developer Guides ファイルレプリゼンテーションのダウンロード レプリゼンテーションをダウンロードするには、レプリゼンテーションを選択した際に受け取ったurl_templateを使用します。{+asset_path… # ファイルレプリゼンテーションのダウンロード レプリゼンテーションをダウンロードするには、[レプリゼンテーションを選択](guide://representations/request-a-representation)した際に受け取った`url_template`を使用します。`{+asset_path}`は、レプリゼンテーションの種類に応じて置き換えます。 ## ページ割りされたレプリゼンテーション PDFのようにページ割りされたレプリゼンテーションでは、`{+asset_path}`を目的のページ番号とファイル拡張子に置き換えます (例: `1.pdf`)。 ``` curl https://dl.boxcloud.com/api/2.0/internal_files/123/versions/345/representations/pdf/content/3.pdf \ -H "authorization: Bearer ACCESS_TOKEN" ``` ## ページ割りされていないレプリゼンテーション ページ割りされていないレプリゼンテーションでは、`{+asset_path}`を空の文字列に置き換えます。 ``` curl https://dl.boxcloud.com/api/2.0/internal_files/123/versions/345/representations/jpg_32x32/content/ \ -H "authorization: Bearer ACCESS_TOKEN" ``` ## 省略可能なクエリパラメータ レプリゼンテーションを取得する場合、以下の省略可能なヘッダーを使用できます。 | パラメータ | オプション | デフォルト | | --- | --- | --- | | set_content_disposition_type | inline / attachment | null | 指定された値でAPIレスポンスの`content-disposition`ヘッダーを設定します。配置タイプを`attachment`に設定した場合、ほとんどのウェブブラウザではレスポンスをデバイスに保存するようユーザーに促します。一方、タイプを`inline`に設定した場合は、ブラウザでファイルが開かれます。 指定しなかった場合、レスポンスに`content-disposition`ヘッダーは含まれません。 | パラメータ | オプション | デフォルト | | --- | --- | --- | | set_content_disposition_filename | 拡張子のないファイル名 | null | アプリケーションでは、ダウンロードしたレプリゼンテーションのファイル名を定義できます。 定義しなかった場合、ファイル名は、Box内の元のファイル名から派生し、拡張子はレプリゼンテーションのファイルタイプに置き換えられます。 **Source:** [https://ja.developer.box.com/guides/representations/download-a-representation/](https://ja.developer.box.com/guides/representations/download-a-representation/) --- ### ファイルをBox Doc Genテンプレートとして設定 **Type:** guide | **Category:** Box Doc Gen | **Section:** Developer Guides ファイルをBox Doc Genテンプレートとして設定 既存のドキュメントをBox Doc Genテンプレートとして設定し、それを使用してドキュメントを生成できます。 開始する前に Box Doc Gen APIの使用を開始する前に、Box Doc Gen… # ファイルをBox Doc Genテンプレートとして設定 既存のドキュメントをBox Doc Genテンプレートとして設定し、それを使用してドキュメントを生成できます。 ## 開始する前に Box Doc Gen APIの使用を開始する前に、[Box Doc Genの使い方](g://docgen/docgen-getting-started)ガイドに記載されている手順に従って、PlatformアプリとBox Doc Genテンプレートを作成してください。 ## リクエストの送信 質問を含むリクエストを送信するには、`POST /2.0/docgen_templates`エンドポイントを使用し、必須のパラメータを指定します。 ### パラメータ コールを実行するには、以下のパラメータを渡す必要があります。必須のパラメータは**太字**で示されています。 | パラメータ | 説明 | 例 | | --- | --- | --- | | file.id | Box Doc Genテンプレートとして設定するファイルのID。 | 12345678 | | file.type | 指定した入力データの種類。値は常に**file**になります。 | file | ## ユースケース ### ファイルをBox Doc Genテンプレートとして設定する 次のサンプルでは、ファイルがBox Doc Genテンプレートとして認識されるように設定する方法を示します。 ファイルは`.docx`形式である必要があります。 ### ファイルからBox Doc Genテンプレートの設定を削除する ファイルのBox Doc Genテンプレートの設定が解除されるようにするには、`DELETE 2.0/docgen_templates/:template_id`リクエストを使用します。 **Source:** [https://ja.developer.box.com/guides/docgen/mark-template/](https://ja.developer.box.com/guides/docgen/mark-template/) --- ### ファイルを完全に削除 **Type:** guide | **Category:** ごみ箱 | **Section:** Developer Guides ファイルを完全に削除 ごみ箱に移動されたファイルは、デフォルトで30日間ごみ箱に保持された後で削除されます。BusinessアカウントまたはEnterprise… # ファイルを完全に削除 ごみ箱に移動されたファイルは、デフォルトで30日間ごみ箱に保持された後で削除されます。BusinessアカウントまたはEnterpriseアカウントの管理者は、削除までの期間を変更できます。削除までの期間が経過する前にごみ箱からファイルを完全に削除する場合は、ごみ箱に移動されたファイルの`ID`を使用して`DELETE`リクエストを`/files/:file_id/trash`に送信します。 **Source:** [https://ja.developer.box.com/guides/trash/permanently-delete-file/](https://ja.developer.box.com/guides/trash/permanently-delete-file/) --- ### ファイル情報の取得 **Type:** guide | **Category:** ファイル | **Section:** Developer Guides ファイル情報の取得 ファイルのコンテンツではなく、ファイル自体の情報を取得するには、ファイルのidを指定してGET /files/:id APIを呼び出します。 ファイルID ファイルのidを確認するには、ウェブアプリでファイルにアクセスして、URLからid… # ファイル情報の取得 ファイルのコンテンツではなく、ファイル自体の情報を取得するには、ファイルの`id`を指定して[`GET /files/:id`](e://get-files-id) APIを呼び出します。 ## ファイルID ファイルの`id`を確認するには、ウェブアプリでファイルにアクセスして、URLから`id`をコピーします。たとえば、URLが`https://*.app.box.com/file/123`の場合、`file_id`は`123`です。 ## その他のフィールド ファイルのフィールドをさらに取得するには、必ず`fields`クエリパラメータを渡してください。 追加フィールドのリクエストについて確認する **Source:** [https://ja.developer.box.com/guides/files/get/](https://ja.developer.box.com/guides/files/get/) --- ### フォルダ **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダ フォルダは、ファイルとともに、Box APIの中核を成します。フォルダはアップロードおよびダウンロードが可能で、コンテンツに関する重要なメタデータ情報を保持できます。 # フォルダ フォルダは、[ファイル](g://files)とともに、Box APIの中核を成します。フォルダはアップロードおよびダウンロードが可能で、コンテンツに関する重要なメタデータ情報を保持できます。 **Source:** [https://ja.developer.box.com/guides/folders/](https://ja.developer.box.com/guides/folders/) --- ### フォルダツリーの作成 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダツリーの作成 以下の例は、フォルダツリーのJSON… # フォルダツリーの作成 以下の例は、フォルダツリーのJSONレプリゼンテーションを作成する方法を示しています。フォルダツリーは、フォルダの名前とそのフォルダ内にあるすべてのサブフォルダで構成されます。 以下のサンプルでは、先頭の**ルート**フォルダと、コードでトラバースする最大深度を指定できます。また、初期化されたSDKクライアントを渡すことができるため、どのユーザーが認証されるかを構成することもできます。 ``` using System; using System.Collections.Generic; using System.Diagnostics; using System.Dynamic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using Box.V2; using Box.V2.Auth; using Box.V2.Config; using Box.V2.Converter; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Newtonsoft.Json; namespace BoxPlayground { public class Program4 { static void Main(string[] args) { ExecuteMainAsync().Wait(); } public class BoxFolderTreeBuilder { public BoxClient BoxClient { get; set; } public string RootFolderId { get; set; } public int MaxDepth { get; set; } public BoxFolderTreeBuilder(BoxClient boxClient, string rootFolderId = "0", int maxDepth = -1) { this.BoxClient = boxClient; this.RootFolderId = rootFolderId; this.MaxDepth = maxDepth; } public async Task<BoxFolderTree> BuildFolderTreeWithFlatLists() { var tree = new BoxFolderTree { RootId = this.RootFolderId, Files = new List<BoxFolderTreeItem>(), Folders = new List<BoxFolderTreeFolder>() }; var rootFolderItems = await this.BoxClient.FoldersManager.GetFolderItemsAsync(this.RootFolderId, limit: 1000, autoPaginate: true); var rootFolderChildren = new List<BoxFolderTreeFolder>(); foreach (var item in rootFolderItems.Entries) { var folderTreeItem = new BoxFolderTreeItem(item); folderTreeItem.Path = $"{this.RootFolderId}"; if (item.Type == "file") { tree.Files.Add(folderTreeItem); } else if (item.Type == "folder") { var childFolder = new BoxFolderTreeFolder(folderTreeItem); tree.Folders.Add(new BoxFolderTreeFolder(folderTreeItem)); rootFolderChildren.Add(childFolder); } } tree = await Dive(tree, rootFolderChildren, 1); return tree; } private async Task<BoxFolderTree> Dive(BoxFolderTree tree, List<BoxFolderTreeFolder> children, int currentDepth) { if (InTooDeep(currentDepth)) { return tree; } else { currentDepth++; var additionalChildren = new List<BoxFolderTreeFolder>(); foreach (var child in children) { var folderItems = await this.BoxClient.FoldersManager.GetFolderItemsAsync(child.Item.Id, limit: 1000, autoPaginate: true); var foundFolder = tree.Folders.FindIndex((f) => { return f.Item.Id == child.Item.Id; }); foreach (var item in folderItems.Entries) { if (foundFolder >= 0) { tree.Folders[foundFolder].Children.Add(item); } var folderTreeItem = new BoxFolderTreeItem(item); folderTreeItem.Path = $"{child.Path}/{child.Item.Id}"; if (item.Type == "file") { tree.Files.Add(folderTreeItem); } else if (item.Type == "folder") { var childFolder = new BoxFolderTreeFolder(folderTreeItem); tree.Folders.Add(new BoxFolderTreeFolder(folderTreeItem)); additionalChildren.Add(childFolder); } } } if (additionalChildren.Count == 0) { return tree; } else { return await Dive(tree, additionalChildren, currentDepth); } } } private bool InTooDeep(int depthCount) { if (this.MaxDepth < 0) { return false; } else { return (depthCount >= this.MaxDepth); } } public class BoxFolderTreeItem { [JsonProperty(PropertyName = "item")] public BoxItem Item { get; set; } [JsonProperty(PropertyName = "path")] public string Path { get; set; } public BoxFolderTreeItem(BoxItem item) { Item = item; } } public class BoxFolderTreeFolder : BoxFolderTreeItem { public BoxFolderTreeFolder(BoxFolderTreeItem item) : base(item.Item) { this.Path = item.Path; } [JsonProperty(PropertyName = "children")] public List<BoxItem> Children { get; set; } = new List<BoxItem>(); } public class BoxFolderTree { [JsonProperty(PropertyName = "rootId")] public string RootId { get; set; } [JsonProperty(PropertyName = "files")] public List<BoxFolderTreeItem> Files { get; set; } [JsonProperty(PropertyName = "folders")] public List<BoxFolderTreeFolder> Folders { get; set; } public string writeJSON() { var converter = new Box.V2.Converter.BoxJsonConverter(); return converter.Serialize<BoxFolderTreeBuilder.BoxFolderTree>(this); } } } private static async Task ExecuteMainAsync() { using (FileStream fs = new FileStream($"./config.json", FileMode.Open)) { var session = new BoxJWTAuth(BoxConfig.CreateFromJsonFile(fs)); var serviceAccountClient = session.AdminClient(session.AdminToken()); var folderTreeBuilder = new BoxFolderTreeBuilder(serviceAccountClient, rootFolderId: "37477903736"); var tree = await folderTreeBuilder.BuildFolderTreeWithFlatLists(); System.Console.WriteLine(tree.writeJSON()); } } } } ``` ``` package com.box; import java.io.BufferedReader; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxFile; import com.box.sdk.BoxFolder; import com.box.sdk.BoxItem; import com.eclipsesource.json.JsonArray; import com.eclipsesource.json.JsonObject; public class BoxFolderTreeBuilder { private BoxDeveloperEditionAPIConnection _boxClient; private String _rootFolderId; private int _maxDepth; private static final String DEFAULT_ROOT_FOLDER_ID = "0"; private static final int DEFAULT_MAX_DEPTH = -1; public BoxFolderTreeBuilder(BoxDeveloperEditionAPIConnection boxClient) { this(boxClient, DEFAULT_ROOT_FOLDER_ID, DEFAULT_MAX_DEPTH); } public BoxFolderTreeBuilder(BoxDeveloperEditionAPIConnection boxClient, String rootFolderId) { this(boxClient, rootFolderId, DEFAULT_MAX_DEPTH); } public BoxFolderTreeBuilder(BoxDeveloperEditionAPIConnection boxClient, int maxDepth) { this(boxClient, DEFAULT_ROOT_FOLDER_ID, maxDepth); } public BoxFolderTreeBuilder(BoxDeveloperEditionAPIConnection boxClient, String rootFolderId, int maxDepth) { this._boxClient = boxClient; this._rootFolderId = rootFolderId; this._maxDepth = maxDepth; } public BoxFolderTree buildFolderTreeWithFlatLists() { BoxFolderTree tree = new BoxFolderTree(); tree.setRootId(this._rootFolderId); ArrayList<BoxFolderTreeFolder> rootFolderChildren = new ArrayList<>(); BoxFolder folder = new BoxFolder(this._boxClient, this._rootFolderId); String path = this._rootFolderId; for (BoxItem.Info itemInfo : folder) { if (itemInfo instanceof BoxFile.Info) { BoxFile.Info fileInfo = (BoxFile.Info) itemInfo; BoxFolderTreeFile treeFile = new BoxFolderTreeFile(fileInfo, path); tree.files.add(treeFile); } else if (itemInfo instanceof BoxFolder.Info) { BoxFolder.Info folderInfo = (BoxFolder.Info) itemInfo; BoxFolderTreeFolder treeFolder = new BoxFolderTreeFolder(folderInfo, path); tree.folders.add(treeFolder); rootFolderChildren.add(treeFolder); } } tree = Dive(tree, rootFolderChildren, 1); return tree; } private BoxFolderTree Dive(BoxFolderTree tree, ArrayList<BoxFolderTreeFolder> children, int currentDepth) { if (inTooDeep(currentDepth)) { return tree; } else { currentDepth++; ArrayList<BoxFolderTreeFolder> additionalChildren = new ArrayList<>(); for (BoxFolderTreeFolder child : children) { BoxFolder folderItems = new BoxFolder(this._boxClient, child.getItem().getID()); int foundFolder = -1; for (int i = 0; i < tree.folders.size(); i++) { if (child.getItem().getID() == tree.folders.get(i).getItem().getID()) { foundFolder = i; } } String path = String.format("%s/%s", child.getPath(), child.getItem().getID()); for (BoxItem.Info item : folderItems.getChildren()) { if (foundFolder >= 0) { tree.folders.get(foundFolder).children.add(new BoxFolderTreeItem(item)); } if (item instanceof BoxFile.Info) { BoxFile.Info fileInfo = (BoxFile.Info) item; tree.files.add(new BoxFolderTreeFile(fileInfo, path)); } else if (item instanceof BoxFolder.Info) { BoxFolder.Info folderInfo = (BoxFolder.Info) item; BoxFolderTreeFolder nestedFolder = new BoxFolderTreeFolder(folderInfo, path); tree.folders.add(nestedFolder); additionalChildren.add(nestedFolder); } } } if (additionalChildren.size() == 0) { return tree; } else { return Dive(tree, additionalChildren, currentDepth); } } } private Boolean inTooDeep(int depthCount) { if (this._maxDepth < 0) { return false; } else { return (depthCount >= this._maxDepth); } } public class BoxFolderTree { private String rootId; private ArrayList<BoxFolderTreeFile> files = new ArrayList<>(); private ArrayList<BoxFolderTreeFolder> folders = new ArrayList<>(); public String getRootId() { return this.rootId; } public void setRootId(String id) { this.rootId = id; } public String writeJSON() { JsonObject requestJSON = new JsonObject(); JsonArray filesJSON = new JsonArray(); for (BoxFolderTreeFile file : files) { filesJSON.add(file.convertToJSON()); } JsonArray foldersJSON = new JsonArray(); for (BoxFolderTreeFolder folder : folders) { foldersJSON.add(folder.convertToJSON()); } requestJSON.add("rootId", this.rootId); requestJSON.add("files", filesJSON); requestJSON.add("folders", foldersJSON); return requestJSON.toString(); } } public class BoxFolderTreeItem { private BoxItem.Info item; public BoxFolderTreeItem(BoxItem.Info item) { this.item = item; } public JsonObject convertToJSON() { JsonObject itemJSON = new JsonObject(); itemJSON.add("id", this.item.getID()); itemJSON.add("name", this.item.getName()); String type = (item instanceof BoxFile.Info == true) ? "file" : "folder"; itemJSON.add("type", type); return itemJSON; } } public class BoxFolderTreeFile { private BoxFile.Info item; private String path; public BoxFolderTreeFile(BoxFile.Info item, String path) { this.item = item; this.path = path; } public BoxFile.Info getItem() { return this.item; } public void setItem(BoxFile.Info info) { this.item = info; } public String getPath() { return this.path; } public void setPath(String path) { this.path = path; } public JsonObject convertToJSON() { JsonObject itemJSON = new JsonObject(); JsonObject fileJSON = new JsonObject(); fileJSON.add("id", this.item.getID()); fileJSON.add("type", "file"); fileJSON.add("name", this.item.getName()); itemJSON.add("path", this.path); itemJSON.add("item", fileJSON); return itemJSON; } } public class BoxFolderTreeFolder { private BoxFolder.Info item; private String path; private ArrayList<BoxFolderTreeItem> children; public BoxFolderTreeFolder(BoxFolder.Info item, String path) { this.item = item; this.path = path; this.children = new ArrayList<>(); } public BoxFolder.Info getItem() { return this.item; } public void setItem(BoxFolder.Info info) { this.item = info; } public String getPath() { return this.path; } public void setPath(String path) { this.path = path; } public JsonObject convertFolderToJSON() { JsonObject itemJSON = new JsonObject(); JsonObject folderJSON = new JsonObject(); folderJSON.add("id", this.item.getID()); folderJSON.add("type", "folder"); folderJSON.add("name", this.item.getName()); itemJSON.add("path", this.path); itemJSON.add("item", folderJSON); return itemJSON; } public JsonObject convertToJSON() { JsonObject folderJSON = this.convertFolderToJSON(); JsonArray children = new JsonArray(); for (BoxFolderTreeItem item : this.children) { children.add(item.convertToJSON()); } folderJSON.add("children", children); return folderJSON; } } public static void main(String[] args) throws Exception { Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxFolderTreeBuilder treeBuilder = new BoxFolderTreeBuilder(serviceAccountClient, "43491738095", 2); BoxFolderTree tree = treeBuilder.buildFolderTreeWithFlatLists(); System.out.println(tree.writeJSON()); } } } ``` ``` class BoxFolderTreeBuilder { constructor(boxClient, options) { options = options || {}; boxClient._useIterators = true; this.boxClient = boxClient; this.maxDepth = options.maxDepth || -1; this.rootFolderId = options.rootFolderId || "0"; } async buildFolderTreeWithFlatLists() { let tree = { rootId: this.rootFolderId, folders: [], files: [] } let folderItemsIterator = await this.boxClient.folders.getItems(this.rootFolderId); let collection = await BoxUtilities.autoPage(folderItemsIterator); let rootFolderChildren = []; const path = `${this.rootFolderId}`; collection.forEach((item) => { if (item.type === "file") { tree.files.push({ item, path }) } else if (item.type === "folder") { let folderTreeFolder = { item, path, children: [] } tree.folders.push(folderTreeFolder); rootFolderChildren.push(folderTreeFolder); } }); tree = await this.dive(tree, rootFolderChildren, 1); return tree; } async dive(tree, children, currentDepth) { if (this.inTooDeep(currentDepth)) { return tree; } else { currentDepth++; let additionalChildren = []; let childrenPromises = []; children.forEach((child) => { let foundFolder = -1; childrenPromises.push(this.boxClient.folders.getItems(child.item.id) .then((folderItemsIterator) => { return BoxUtilities.autoPage(folderItemsIterator) .then((collection) => { for (let i = 0; i < tree.folders.length; i++) { if (child.item.id === tree.folders[i].item.id) { foundFolder = i; } } const path = `${child.path}/${child.item.id}`; collection.forEach((item) => { if (foundFolder >= 0) { tree.folders[foundFolder].children.push(item); } if (item.type === "file") { tree.files.push({ item, path }) } else if (item.type === "folder") { let folderTreeFolder = { item, path, children: [] } tree.folders.push(folderTreeFolder); additionalChildren.push(folderTreeFolder); } }); return; }); })); }); await Promise.all(childrenPromises); if (additionalChildren.length === 0) { return tree; } else { return this.dive(tree, additionalChildren, currentDepth); } } } inTooDeep(depthCount) { if (this.maxDepth < 0) { return false; } else { return (depthCount >= this.maxDepth); } } } class BoxUtilities { static async autoPage(iterator, collection = []) { let moveToNextItem = async () => { let item = await iterator.next(); if (item.value) { collection.push(item.value); } if (item.done !== true) { return moveToNextItem(); } else { return collection; } } return moveToNextItem(); } } let folderTreeBuilder = new BoxFolderTreeBuilder(client); folderTreeBuilder.buildFolderTreeWithFlatLists() .then((tree) => { console.log(JSON.stringify(tree)); }) ``` **Source:** [https://ja.developer.box.com/guides/folders/bulk/build-folder-tree/](https://ja.developer.box.com/guides/folders/bulk/build-folder-tree/) --- ### フォルダのコピー **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダのコピー フォルダのコピーを宛先フォルダ内に作成します。 元のフォルダは変更されません。 Box上でフォルダをコピーするには、コピー先となるparentフォルダのidをAPI… # フォルダのコピー フォルダのコピーを宛先フォルダ内に作成します。 元のフォルダは変更されません。 Box上でフォルダをコピーするには、コピー先となる`parent`フォルダの`id`をAPIに渡す必要があります。 オプションで、新しいフォルダに別の名前を付けることもできます。 # 名前に関する制約事項 フォルダ名にはいくつかの制限があります。印字不可能なASCII文字、スラッシュ、バックスラッシュ (`/`、`\`) を含む名前のほか、末尾にスペースを含む名前は禁止されています。 また、`.`および`..`は予約済みの名前であるため、使用できません。 ## 非同期コピー コピーされるフォルダに含まれる項目が500個以下の場合は、APIコールと同時にコピーが実行されます。コールはコピー操作が完了するまで復帰しません。 コピー元のフォルダに500個を超える項目が含まれる場合は、非同期的にコピー操作が実行され、APIコールはコピー操作が完了していなくても直ちに復帰します。現時点では、コピー操作がいつ終了したのかを確認するAPIはありません。 ## フォルダのロック この操作の進行中は、ファイルツリーの一部がロックされます。ロックされるのは、主に元のフォルダとその子孫フォルダ、および宛先フォルダです。 操作の進行中は、ロックされているどのフォルダに対しても、他の移動、コピー、削除、または復元操作を実行できません。最も重要な点は、同じフォルダをフォルダツリーの2つの異なる部分に同時にコピーすることはできないということです。 ## メタデータ 宛先フォルダのいずれかの親フォルダにメタデータカスケードポリシーが適用されている場合は、メタデータカスケード操作が非同期的に開始されます。 現時点では、この操作がいつ終了したのかを確認するAPIはありません。 **Source:** [https://ja.developer.box.com/guides/folders/single/copy/](https://ja.developer.box.com/guides/folders/single/copy/) --- ### フォルダのロックの作成 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダのロックの作成 Box内のフォルダにロックを作成するには、ロックを適用するフォルダのidをBoxのAPIに指定します。必要に応じて、フォルダのロックとともに適用する特定のlocked_operationsを指定できます。 フォルダロック フォルダロックAPI… # フォルダのロックの作成 Box内のフォルダにロックを作成するには、ロックを適用するフォルダの`id`をBoxのAPIに指定します。必要に応じて、フォルダのロックとともに適用する特定の`locked_operations`を指定できます。 # フォルダロック フォルダロックAPIエンドポイントを使用する際は、アクセスしようとしているフォルダの所有者/共同所有者として認証されている必要があります。 # ロックされる操作の設定 フォルダロックリクエストに`locked_operations`オブジェクトが含まれる場合は、`move`と`delete`の両方を`true`に設定する必要があります。このオブジェクトでロック操作を1つだけ指定した場合または両方の値を`true`以外に設定した場合は、エラーが発生します。これらのオプションは、今後追加の操作を可能にするために実装されています。 ## ロック操作 フォルダに適用できるロック操作には、`move`と`delete`の2つがあります。 `move`ロックを使用すると、ロックが適用されている間、フォルダが新しい場所または新しい所有者に移動されなくなります。 `delete`ロックを使用すると、ロックが適用されている間、フォルダが削除されなくなります。 **Source:** [https://ja.developer.box.com/guides/folders/single/create-lock/](https://ja.developer.box.com/guides/folders/single/create-lock/) --- ### フォルダのロックの削除 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダのロックの削除 Box内のフォルダに適用されたロックを削除するには、フォルダのロックIDを指定してDELETE /folder_locks/:id APIを呼び出します。 フォルダロック フォルダロックAPI… # フォルダのロックの削除 Box内のフォルダに適用されたロックを削除するには、フォルダのロックIDを指定して`DELETE /folder_locks/:id` APIを呼び出します。 # フォルダロック フォルダロックAPIエンドポイントを使用する際は、アクセスしようとしているフォルダの所有者/共同所有者として認証されている必要があります。 # フォルダのロックIDを見つける方法 フォルダのロックを削除するには、フォルダのロックIDをAPIに指定する必要があります。フォルダのロックIDは、[フォルダのロックを作成](g://folders/single/create-lock)したとき、または特定のフォルダに対する[ロックのリストを取得](g://folders/single/get-locks)したときに、レスポンスに示されます。 **Source:** [https://ja.developer.box.com/guides/folders/single/delete-lock/](https://ja.developer.box.com/guides/folders/single/delete-lock/) --- ### フォルダのロックの取得 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダのロックの取得 Box内のフォルダに対する現在のロックのリストを取得するには、folder_idクエリ文字列パラメータとしてフォルダのIDを指定してGET /folder_locks/ APIを呼び出します。 フォルダロック フォルダロックAPI… # フォルダのロックの取得 Box内のフォルダに対する現在のロックのリストを取得するには、`folder_id`クエリ文字列パラメータとしてフォルダのIDを指定して`GET /folder_locks/` APIを呼び出します。 # フォルダロック フォルダロックAPIエンドポイントを使用する際は、アクセスしようとしているフォルダの所有者/共同所有者として認証されている必要があります。 ## フォルダID フォルダの`id`を確認するには、ウェブアプリでフォルダにアクセスして、URLから`id`をコピーします。たとえば、URLが`https://*.app.box.com/folder/123`の場合、`folder_id`は`123`です。 **Source:** [https://ja.developer.box.com/guides/folders/single/get-locks/](https://ja.developer.box.com/guides/folders/single/get-locks/) --- ### フォルダの作成 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダの作成 Box上でフォルダを作成するには、新しいフォルダのnameと、新しいフォルダの作成先になるparentフォルダのidをAPIに渡す必要があります。 名前に関する制約事項 フォルダ名にはいくつかの制限があります。印字不可能なASCII… # フォルダの作成 Box上でフォルダを作成するには、新しいフォルダの`name`と、新しいフォルダの作成先になる`parent`フォルダの`id`をAPIに渡す必要があります。 # 名前に関する制約事項 フォルダ名にはいくつかの制限があります。印字不可能なASCII文字、スラッシュ、バックスラッシュ (`/`、`\`) を含む名前のほか、末尾にスペースを含む名前は禁止されています。 また、`.`および`..`は予約済みの名前であるため、使用できません。 **Source:** [https://ja.developer.box.com/guides/folders/single/create/](https://ja.developer.box.com/guides/folders/single/create/) --- ### フォルダの削除 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダの削除 Box上でフォルダを削除するには、削除するフォルダのIDをAPIに渡す必要があります。 空でないフォルダの削除 フォルダが空でない場合、このAPIはエラーを返します。フォルダを削除するときにrecursive… # フォルダの削除 Box上でフォルダを削除するには、削除するフォルダのIDをAPIに渡す必要があります。 ## 空でないフォルダの削除 フォルダが空でない場合、このAPIはエラーを返します。フォルダを削除するときに`recursive`パラメータを渡すと、空でないフォルダも強制的に削除できます。その場合は、サブフォルダを含め、フォルダ内のすべての項目が削除されます。 ## フォルダのロック フォルダがBoxから完全に削除されるか、ごみ箱に移動されるかは、会社の設定に応じて決定されます。 この操作の進行中は、ファイルツリーの一部がロックされます。ロックされるのは、主に元のフォルダとその子孫フォルダすべてです。 操作の進行中は、ロックされているどのフォルダに対しても、それ以外の移動、コピー、削除、または復元操作を実行できません。 ## タイムアウト この操作のタイムアウトは600秒です。`HTTP 503`が返されるとこの操作は完了します。 **Source:** [https://ja.developer.box.com/guides/folders/single/delete/](https://ja.developer.box.com/guides/folders/single/delete/) --- ### フォルダの復元 **Type:** guide | **Category:** ごみ箱 | **Section:** Developer Guides フォルダの復元 ごみ箱に移動されたが削除されていないフォルダを復元するには、/folders/:folder_idエンドポイントにPOSTリクエストを送信します。これにより、フォルダがまだ使用可能であれば元の親フォルダに戻されます。または、オプションとしてparent… # フォルダの復元 ごみ箱に移動されたが削除されていないフォルダを復元するには、`/folders/:folder_id`エンドポイントに`POST`リクエストを送信します。これにより、フォルダがまだ使用可能であれば元の親フォルダに戻されます。または、オプションとして`parent`フォルダを指定することもできます。 フォルダ復元の進行中は、ファイルツリーの一部がロックされます。ロックされるのは、リクエストの元のフォルダとその子孫フォルダ、および宛先フォルダです。 フォルダの復元中、ロックされているフォルダに対して、それ以外の移動、コピー、削除、復元の操作を実行することはできません。 **Source:** [https://ja.developer.box.com/guides/trash/restore-folder/](https://ja.developer.box.com/guides/trash/restore-folder/) --- ### フォルダの更新 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダの更新 Box上でフォルダを更新するには、次のAPIを呼び出す必要があります。 名前に関する制約事項 フォルダ名にはいくつかの制限があります。印字不可能なASCII… # フォルダの更新 Box上でフォルダを更新するには、次のAPIを呼び出す必要があります。 ## 名前に関する制約事項 フォルダ名にはいくつかの制限があります。印字不可能なASCII文字、スラッシュ、バックスラッシュ (`/`、`\`) を含む名前のほか、末尾にスペースを含む名前は禁止されています。 また、`.`および`..`は予約済みの名前であるため、使用できません。 ## タイムアウト この操作のタイムアウトは600秒です。`HTTP 503`が返されるとこの操作は完了します。 **Source:** [https://ja.developer.box.com/guides/folders/single/update/](https://ja.developer.box.com/guides/folders/single/update/) --- ### フォルダの移動 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダの移動 フォルダを移動するには、その親フォルダのID… # フォルダの移動 フォルダを移動するには、その親フォルダのIDを更新します。 ## 操作の詳細 この呼び出しは同期的に復帰します。これは、すべての子孫に大量の項目が含まれているフォルダを移動する場合にも当てはまります。つまり、非常に大きいフォルダの場合は、呼び出しが完了するまでに数分または数時間かかる可能性があるほか、移動中にツリーの一部がロックされることもあります。 フォルダの移動中は、ファイルツリーの一部がロックされます。ロックされるのは、主に元のフォルダとその子孫フォルダ、および宛先フォルダです。 移動操作の間は、ロックされているどのフォルダに対しても、それ以外の移動、コピー、削除、または復元操作を実行できません。 ## 非公開フォルダへのサブフォルダの移動 コラボレーションサブフォルダを非公開サブフォルダに移動しようとすると、[`cannot_make_collaborated_subfolder_private`](g://api-calls/permissions-and-errors/common-errors/#400-bad-request)エラーが発生します。そのような場合は、次のようにリクエストに`owned_by.id`パラメータを設定し、そのフォルダが属しているユーザーのIDを指定します。 **Source:** [https://ja.developer.box.com/guides/folders/single/move/](https://ja.developer.box.com/guides/folders/single/move/) --- ### フォルダを完全に削除 **Type:** guide | **Category:** ごみ箱 | **Section:** Developer Guides フォルダを完全に削除 ごみ箱に移動されたフォルダは、デフォルトで30日間ごみ箱に保持された後で削除されます。BusinessアカウントまたはEnterprise… # フォルダを完全に削除 ごみ箱に移動されたフォルダは、デフォルトで30日間ごみ箱に保持された後で削除されます。BusinessアカウントまたはEnterpriseアカウントの管理者は、削除までの期間を変更できます。削除までの期間が経過する前にごみ箱からフォルダを完全に削除する場合は、ごみ箱に移動されたフォルダの`ID`を使用して`DELETE`リクエストを`/folders/:folder_id/trash`に送信します。 **Source:** [https://ja.developer.box.com/guides/trash/permanently-delete-folder/](https://ja.developer.box.com/guides/trash/permanently-delete-folder/) --- ### フォルダ内のすべてのファイルのアップロード **Type:** guide | **Category:** アップロード | **Section:** Developer Guides フォルダ内のすべてのファイルのアップロード アプリケーションによっては、1つのフォルダのすべてのファイルをアップロードできる場合もあります。SDKとCLI… # フォルダ内のすべてのファイルのアップロード アプリケーションによっては、1つのフォルダのすべてのファイルをアップロードできる場合もあります。SDKとCLIを使用してこの処理を実行するには、フォルダツリー内を移動してすべてのファイルを探し、そのファイルをアップロードする必要があります。 ``` using System; using System.Collections.Generic; using System.Diagnostics; using System.Dynamic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; using Box.V2; using Box.V2.Auth; using Box.V2.Config; using Box.V2.Converter; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Newtonsoft.Json; namespace BoxPlayground { public class Program { static void Main (string[] args) { ExecuteMainAsync ().Wait (); } const long CHUNKED_UPLOAD_MINIMUM = 200000; private static async Task ExecuteMainAsync () { var directoryName = "dotnetUploadFolder"; var parentFolderId = "0"; var files = Directory.EnumerateFiles (directoryName); using (FileStream fs = new FileStream ("./config.json", FileMode.Open)) { var session = new BoxJWTAuth (BoxConfig.CreateFromJsonFile (fs)); var client = session.AdminClient (session.AdminToken ()); var folderId = ""; try { var createdFolder = await client.FoldersManager.CreateAsync ( new BoxFolderRequest { Parent = new BoxRequestEntity { Id = parentFolderId }, Name = directoryName }); folderId = createdFolder.Id; } catch (BoxConflictException<BoxFolder> e) { folderId = e.ConflictingItems.FirstOrDefault ().Id; System.Console.WriteLine ($"Found existing folder: {folderId}"); } var fileUploadTasks = new List<Task<BoxFile>> (); foreach (var file in files) { fileUploadTasks.Add (Task.Run ( async () => { System.Console.WriteLine (file); var fileName = file.Split (Path.DirectorySeparatorChar) .Where ((item) => { return item != directoryName; }).FirstOrDefault (); System.Console.WriteLine (fileName); var fileInfo = new FileInfo (file); var preflightRequest = new BoxPreflightCheckRequest { Name = fileName, Size = fileInfo.Length, Parent = new BoxRequestEntity { Id = folderId } }; using (FileStream toUpload = new FileStream (file, FileMode.Open)) { try { var preflightCheck = await client.FilesManager.PreflightCheck (preflightRequest); if (toUpload.Length < CHUNKED_UPLOAD_MINIMUM) { using (SHA1 sha1 = SHA1.Create ()) { var fileUploadRequest = new BoxFileRequest { Name = fileName, Parent = new BoxRequestEntity { Id = folderId } }; var fileSHA = sha1.ComputeHash (toUpload); System.Console.WriteLine (fileSHA); return await client.FilesManager.UploadAsync (fileRequest: fileUploadRequest, stream: toUpload, contentMD5: fileSHA); } } else { return await client.FilesManager.UploadUsingSessionAsync (stream: toUpload, fileName: fileName, folderId: folderId); } } catch (BoxPreflightCheckConflictException<BoxFile> e) { if (toUpload.Length < CHUNKED_UPLOAD_MINIMUM) { using (SHA1 sha1 = SHA1.Create ()) { var fileSHA = sha1.ComputeHash (toUpload); return await client.FilesManager.UploadNewVersionAsync (fileName: e.ConflictingItem.Name, fileId: e.ConflictingItem.Id, stream: toUpload, contentMD5: fileSHA); } } else { await client.FilesManager.UploadFileVersionUsingSessionAsync (fileId: e.ConflictingItem.Id, stream: toUpload); return await client.FilesManager.GetInformationAsync (e.ConflictingItem.Id); } } } })); } var uploaded = await Task.WhenAll (fileUploadTasks); foreach (var file in uploaded) { System.Console.WriteLine (file.Id); } } } } } ``` ``` public class UploadAllFilesInFolder { public static final int CHUNKED_UPLOAD_MINIMUM = 20000; public static void main(String[] args) throws Exception { String directoryName = "javaUploadFolder"; Path configPath = Paths.get("config.json"); Path uploadFolderPath = Paths.get(directoryName); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection client = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig); String parentFolderId = "0"; String createdFolderId; BoxFolder createFolderInParentFolder = new BoxFolder(client, parentFolderId); try { BoxFolder.Info createdFolder = createFolderInParentFolder.createFolder(directoryName); System.out.println("Creating folder..."); System.out.println(createdFolder.getID()); createdFolderId = createdFolder.getID(); } catch (BoxAPIException e) { String existingFolderId = getIdFromConflict(e.getMessage()); System.out.println("Found existing folder..."); System.out.println(existingFolderId); createdFolderId = existingFolderId; } ArrayList < BoxFile.Info > uploadedFiles = new ArrayList < > (); try (DirectoryStream < Path > directory = Files.newDirectoryStream(uploadFolderPath)) { for (Path path: directory) { String fileName = path.getFileName().toString(); System.out.println(path); System.out.println(fileName); byte[] fileBytes = Files.readAllBytes(path); int fileSize = fileBytes.length; boolean useChunkedUpload = (fileSize > CHUNKED_UPLOAD_MINIMUM) ? true : false; uploadedFiles.add(uploadEachFile(client, createdFolderId, fileName, fileSize, fileBytes, useChunkedUpload)); } } for (BoxFile.Info file: uploadedFiles) { System.out.println(file.getID()); } } } private static BoxFile.Info uploadEachFile(BoxDeveloperEditionAPIConnection client, String folderId, String fileName, int fileSize, byte[] fileBytes, boolean useChunkedUpload) throws IOException, InterruptedException, NoSuchAlgorithmException { try { BoxFolder folder = new BoxFolder(client, folderId); folder.canUpload(fileName, fileSize); if (useChunkedUpload) { System.out.println("Using chunked upload..."); return folder.uploadLargeFile(new ByteArrayInputStream(fileBytes), fileName, fileSize); } else { System.out.println("Using normal upload..."); MessageDigest md = MessageDigest.getInstance("SHA-1"); try (Formatter formatter = new Formatter()) { for (byte b: md.digest(fileBytes)) { formatter.format("%02x", b); } String fileSHA = formatter.toString(); FileUploadParams fileUpload = new FileUploadParams(); fileUpload.setContent(new ByteArrayInputStream(fileBytes)); fileUpload.setSHA1(fileSHA); fileUpload.setName(fileName); return folder.uploadFile(fileUpload); } } } catch (BoxAPIException e) { if (e.getResponseCode() == 409) { // You can use the ID returned from the conflict error to continue String conflictId = getIdFromConflict(e.getResponse()); System.out.println("Found existing file: " + conflictId); BoxFile uploadFileVersion = new BoxFile(client, conflictId); if (useChunkedUpload) { System.out.println("Using chunked upload..."); return uploadFileVersion.uploadLargeFile(new ByteArrayInputStream(fileBytes), fileSize); } else { System.out.println("Using normal upload..."); MessageDigest md = MessageDigest.getInstance("SHA-1"); try (Formatter formatter = new Formatter()) { for (byte b: md.digest(fileBytes)) { formatter.format("%02x", b); } String fileSHA = formatter.toString(); uploadFileVersion.uploadVersion(new ByteArrayInputStream(fileBytes), fileSHA); return uploadFileVersion.getInfo(); } } } else { throw e; } } } private static String getIdFromConflict(String message) { String id = ""; Pattern p = Pattern.compile("\"id\":\"[0-9]+\""); Pattern p2 = Pattern.compile("[0-9]+"); Matcher m = p.matcher(message); if (m.find()) { String sub = m.group(); Matcher m2 = p2.matcher(sub); if (m2.find()) { id = m2.group(); } } return id; } } ``` ``` "use strict"; const fs = require("fs"); const path = require("path"); const box = require("box-node-sdk"); const crypto = require("crypto"); let configFile = fs.readFileSync("config.json"); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let client = session.getAppAuthClient("enterprise"); const CHUNKED_UPLOAD_MINIMUM = 200000; const parentFolderId = "0"; const directoryName = "uploadFolder"; let files = []; fs.readdirSync(directoryName).forEach(file => { files.push({ fileName: file, content: fs.readFileSync(path.join(__dirname, directoryName, file)) }); }); client.folders .create(parentFolderId, directoryName) .then(createdFolder => { console.log(createdFolder); return processFiles(client, files, createdFolder.id); }) .catch(err => { let conflictId = handleFolderConflictError(err); if (conflictId) { console.log(`Found an existing folder: ${conflictId}`); return processFiles(client, files, conflictId); } else { throw err; } }) .then(results => { console.log(results); }) .catch(err => { console.log(err); }); function processFiles(client, files, folderId) { let fileUploadPromises = []; files.forEach(file => { fileUploadPromises.push( uploadAFile(client, folderId, file.fileName, file.content) ); }); return Promise.all(fileUploadPromises); } function uploadAFile(client, folderId, fileName, toUploadFile) { return client.files .preflightUploadFile(folderId, { name: fileName, size: toUploadFile.length }) .then(preflightResults => { console.log(preflightResults); if (toUploadFile.length < CHUNKED_UPLOAD_MINIMUM) { console.log("Using normal upload..."); let fileSha = crypto .createHash("sha1") .update(toUploadFile) .digest("hex"); client.setCustomHeader("content-md5", fileSha); return client.files.uploadFile(folderId, fileName, toUploadFile); } else { console.log("Using chunked upload..."); client.setCustomHeader("content-md5", null); return client.files .getChunkedUploader( folderId, toUploadFile.length, fileName, toUploadFile ) .then(uploader => { return new Promise((resolve, reject) => { uploader.on("error", err => { reject(err); }); uploader.on("chunkUploaded", part => { console.log("Part uploaded..."); console.log(part); }); uploader.on("uploadComplete", file => { console.log("File upload complete!"); resolve(file); }); console.log("Starting chunked uploader..."); uploader.start(); }); }); } }) .catch(err => { let conflictId = handleFileConflictError(err); if (conflictId) { console.log(`Found existing file with that name: ${conflictId}`); return uploadANewFileVersion(client, conflictId, toUploadFile); } else { throw err; } }); } function uploadANewFileVersion(client, conflictId, toUploadFile) { if (toUploadFile.length < CHUNKED_UPLOAD_MINIMUM) { console.log("Using normal upload..."); let fileSha = crypto .createHash("sha1") .update(toUploadFile) .digest("hex"); client.setCustomHeader("content-md5", fileSha); // You can optionally rename a folder while uploading a new version. // let newFileName = "ubuntu-no-gui.iso"; // let options = { // name: newFileName // } // return client.files.uploadNewFileVersion(conflictId, options, toUploadFile); return client.files.uploadNewFileVersion(conflictId, toUploadFile); } else { console.log("Using chunked upload..."); // You can optionally rename a folder while uploading a new version. // let newFileName = "ubuntu-no-gui.iso"; // let options = { // name: newFileName // } // return client.files.getNewVersionChunkedUploader(conflictId, toUploadFile.length, toUploadFile, options) client.setCustomHeader("content-md5", null); return client.files .getNewVersionChunkedUploader( conflictId, toUploadFile.length, toUploadFile, null ) .then(uploader => { return new Promise((resolve, reject) => { uploader.on("error", err => { reject(err); }); uploader.on("chunkUploaded", part => { console.log("Part uploaded..."); console.log(part); }); uploader.on("uploadComplete", file => { console.log("File upload complete!"); resolve(file); }); console.log("Starting chunked uploader..."); uploader.start(); }); }); } } function handleFileConflictError(e) { if (e && e.response && e.response.body) { let errorBody = e.response.body; if (errorBody.status === 409) { if ( errorBody.context_info && errorBody.context_info.conflicts && errorBody.context_info.conflicts ) { let conflict = errorBody.context_info.conflicts; if (conflict && conflict.id) { return conflict.id; } } } } } function handleFolderConflictError(e) { if (e && e.response && e.response.body) { let errorBody = e.response.body; if (errorBody.status === 409) { if ( errorBody.context_info && errorBody.context_info.conflicts && errorBody.context_info.conflicts.length > 0 ) { let conflict = errorBody.context_info.conflicts[0]; if (conflict && conflict.id) { return conflict.id; } } } } } ``` ``` box folders:upload ./folder_name_to_upload --parent-folder=$folder_id ``` ## 解説 上のスクリプトは、Box SDKとCLIを使用してフォルダ全体をアップロードします。このSDKスクリプトでは、最初にローカルフォルダに対応するディレクトリをBox内に作成します。 新しいディレクトリが作成されたら、ディレクトリ内のすべてのファイルをアップロードし、利用可能なすべてのBox機能を使用してアップロードを確実に成功させます。 アップロードの前に、[事前チェック](g://uploads/check)APIを使用してファイルの競合とサイズ制限をチェックします。名前の競合が見つかった場合、代わりにそのファイルの新しいバージョンをアップロードします。 ファイルの`SHA`ハッシュを使用して、アップロード時に`content-md5`ヘッダーを追加することで、ファイルのデータが失われたり改変されたりすることなくBoxに正常にアップロードされるようにします。 最後に、ファイルサイズが20 MBを超える場合、[分割アップロード](g://uploads/chunked)機能を使用して、大きいファイルのアップロードの信頼性を高めます。 **Source:** [https://ja.developer.box.com/guides/uploads/chunked/folder/](https://ja.developer.box.com/guides/uploads/chunked/folder/) --- ### フォルダ内のすべての項目に対するメタデータの強制適用 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides フォルダ内のすべての項目に対するメタデータの強制適用 メタデータカスケードポリシーがすでにフォルダに存在する場合は、メタデータカスケードポリシーのidを指定してPOST /metadata_cascade_policies/:id/apply API… # フォルダ内のすべての項目に対するメタデータの強制適用 メタデータカスケードポリシーがすでにフォルダに存在する場合は、メタデータカスケードポリシーの`id`を指定して[`POST /metadata_cascade_policies/:id/apply`](e://post_metadata_cascade_policies_id_apply) APIエンドポイントを呼び出すことで、フォルダ内のすべての項目にメタデータインスタンスを強制的に適用できます。 ポリシーの`id`を取得するには、フォルダに対する[すべてのポリシーのリストを取得](g://metadata/cascades/list)します。 メタデータカスケード操作は非同期的に開始されます。このAPIコールは、カスケード操作が完了する前に直ちに復帰し、`202 Accepted` HTTPステータスコードを返します。現時点では、この操作がいつ終了したのかを確認する方法はありません。 ## 競合解決 このAPIに追加の`conflict_resolution`パラメータを渡すことで、フォルダ内のいずれかの項目でテンプレートの既存のインスタンスを扱う方法を定義できます。 `conflict_resolution`に値を設定していない場合、デフォルトでは、このAPIによってすべての項目の既存の値が保持されます。値を`overwrite`に設定すると、カスケードポリシーに適用されているテンプレートの値が強制的に適用され、既存の値は上書きされます。 **Source:** [https://ja.developer.box.com/guides/metadata/cascades/force-apply/](https://ja.developer.box.com/guides/metadata/cascades/force-apply/) --- ### フォルダ名の変更 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダ名の変更 Box上でフォルダの名前を変更するには、そのフォルダの新しいnameをAPIに渡す必要があります。 名前に関する制約事項 フォルダ名にはいくつかの制限があります。印字不可能なASCII… # フォルダ名の変更 Box上でフォルダの名前を変更するには、そのフォルダの新しい`name`をAPIに渡す必要があります。 # 名前に関する制約事項 フォルダ名にはいくつかの制限があります。印字不可能なASCII文字、スラッシュ、バックスラッシュ (`/`、`\`) を含む名前のほか、末尾にスペースを含む名前は禁止されています。 また、`.`および`..`は予約済みの名前であるため、使用できません。 **Source:** [https://ja.developer.box.com/guides/folders/single/rename/](https://ja.developer.box.com/guides/folders/single/rename/) --- ### フォルダ所有者の変更 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides フォルダ所有者の変更 フォルダの所有者を変更するには、まず、フォルダの移行先となるユーザーをフォルダのコラボレータとして招待します。 次に、招待したユーザーのロールをowner… # フォルダ所有者の変更 フォルダの所有者を変更するには、まず、フォルダの移行先となるユーザーをフォルダのコラボレータとして招待します。 次に、招待したユーザーのロールを`owner`に変更して、作成したコラボレーションを更新します。 ``` curl -X PUT https://api.box.com/2.0/collaborations/1234 \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "role": "owner" }' ``` ``` BoxCollaborationRequest requestParams = new BoxCollaborationRequest() { Id = "12345", Role = "owner" }; BoxCollaboration collab = await client.CollaborationsManager.EditCollaborationAsync(requestParams); ``` ``` Collection<BoxCollaboration.Info> pendingCollaborations = BoxCollaboration.getPendingCollaborations(api); for (BoxCollaboration.Info collabInfo : pendingCollaborations) { collabInfo.setRole(BoxCollaboration.Role.OWNER); collabInfo.getResource().updateInfo(collabInfo); } ``` ``` from boxsdk.object.collaboration import CollaborationRole, CollaborationStatus collaboration = client.collaboration(collab_id='12345') updated_collaboration = collaboration.update_info(CollaborationRole.OWNER) ``` ``` client.collaborations.update('12345', {role: client.collaborationRoles.OWNER}) .then(collaboration => { // ... }); ``` 設定によっては、フォルダへのアクセス権限を持つユーザーが他のユーザーを招待できることもありますが、いかなる場合でも、所有権を移管できるのは、フォルダの現在の所有者のみです。 **Source:** [https://ja.developer.box.com/guides/folders/single/change-owner/](https://ja.developer.box.com/guides/folders/single/change-owner/) --- ### ブラウザでのダウンロード **Type:** guide | **Category:** ダウンロード | **Section:** Developer Guides ブラウザでのダウンロード アプリケーションでは、ファイルをHTML要素としてページに埋め込む場合があります。たとえば、オーディオプレーヤーを使用する場合です。 この場合、通常のダウンロードURLを使用しても機能しません。dl.boxcloud.com… # ブラウザでのダウンロード アプリケーションでは、ファイルをHTML要素としてページに埋め込む場合があります。たとえば、オーディオプレーヤーを使用する場合です。 ``` <audio controls> <source src="..." type="audio/mp3"> </audio> ``` この場合、通常の[ダウンロードURL](g://downloads/get-url)を使用しても機能しません。`dl.boxcloud.com`ドメインでは[クロスオリジンリソース共有](g://security/cors)がサポートされていないためです。 その代わり、アプリケーションでは次の形式を使用できます。 ``` https://api.box.com/2.0/files/[FILE_ID]/content?access_token=[ACCESS_TOKEN] ``` # CORS これを機能させるために、アプリケーションでは、このファイルをホストするウェブサイトのドメインを[CORSの設定](g://security/cors)で許可されたドメインのリストに追加しておく必要があります。 # トークンのダウンスコープ この方法を使用すると、アクセストークンがエンドユーザーに公開され、エンドユーザーはこのトークンを使用すると、意図したより多くの操作を行うことができる可能性があります。そのため、状況に応じてこのトークンを[ダウンスコープ](g://authentication/tokens/downscope)することをお勧めします。 **Source:** [https://ja.developer.box.com/guides/downloads/in-browser/](https://ja.developer.box.com/guides/downloads/in-browser/) --- ### ブラウザのサポート **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides ブラウザのサポート Box UI Elementsは、以下のブラウザでサポートされています。 Chrome、Firefox、Safari、およびEdge (直近の2バージョン) Mobile ChromeおよびSafari # ブラウザのサポート Box UI Elementsは、以下のブラウザでサポートされています。 - Chrome、Firefox、Safari、およびEdge (直近の2バージョン) - Mobile ChromeおよびSafari **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/browser/](https://ja.developer.box.com/guides/embed/ui-elements/browser/) --- ### プレビュー - ビューアーとイベント **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides プレビュー - ビューアーとイベント このページでは、ファイルタイプごとのプレビュー機能について説明します。また、ビューアーの種類別にリッスンできるイベントのリストも示します。 テキストビューアー テキストビューアーでは、テキストファイルのプレビューがレンダリングされます。py… # プレビュー - ビューアーとイベント このページでは、ファイルタイプごとのプレビュー機能について説明します。また、ビューアーの種類別にリッスンできるイベントのリストも示します。 ## テキストビューアー テキストビューアーでは、テキストファイルのプレビューがレンダリングされます。`py`や`rb`のようなコードファイルの場合は、構文のハイライトを追加するために[`highlight.js`](https://github.com/isagalaev/highlight.js)が使用されます。 ### 動作 テキストビューアーには、ファイル内のテキストのうち最初の192KBが表示されます。その他のテキストは省略され、通知とダウンロードボタンがプレビューの最下部に追加されます。 ビューアーウィンドウのサイズを変更すると、使用可能なスペースに収まるようテキストの再流し込みが行われます。また、拡大ボタンと縮小ボタンにより、フォントサイズがそれぞれ縮小または拡大されます。 このビューアーでは印刷がサポートされており、`print()`が呼び出されるか印刷ボタンが押されると、適切な構文をハイライトした状態で印刷が行われます。サイズの大きなファイルを印刷すると、一部のブラウザでは数秒間動作が停止する場合があります。 ### コントロール - 拡大 - 縮小 - 全画面: Escキーを押すと終了可能 ### サポートされているファイル拡張子 `as`, `as3as`, `asmas`, `batas`, `cas`, `ccas`, `cmakeas`, `cppas`, `csas`, `cssas`, `cxxas`, `diffas`, `erbas`, `groovyas`, `has`, `hamlas`, `hhas`, `htmas`, `htmlas`, `javaas`, `jsas`, `lessas`, `mas`, `makeas`, `mdas`, `mlas`, `mmas`, `phpas`, `plas`, `plistas`, `propertiesas`, `pyas`, `rbas`, `rstas`, `sassas`, `scalaas`, `scriptas`, `scmas`, `smlas`, `sqlas`, `shas`, `vias`, `vimas`, `webdocas`, `xhtmlas`, `yaml`, ### イベント テキストビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | | zoom | プレビューが拡大または縮小されます。 | 1. {number} zoom: 新しい拡大/縮小値 | | | | 2. {boolean} canZoomIn: trueにするとビューアーをさらに拡大可能 | | | | 3. {boolean} canZoomOut: trueにするとビューアーをさらに縮小可能 | | printsuccess | 印刷が正常に開始されました。 | | ## 360度動画ビューアー 360度動画ビューアーでは、正距円筒図法を使用して保存された動画 (ほとんどの場合に360度カメラで撮影) のプレビューがレンダリングされます。 ### 動作 このビューアーでは、360度動画がインタラクティブに表示されます。 ### コントロール - マウスの左ボタンで表示方向を変更します (タッチ対応デバイスでは1回タッチ)。 ### VRボタン WebVRをサポートするブラウザの使用時に、対応するVRデバイスがコンピュータに接続されると、VRボタンを使用して、VRモードの開始と終了を切り替えることができます。 ### 制限 現在、このプレビューアーを使用するには、ファイルの名前を付ける際にファイル拡張子の前に`.360`を付ける必要があります。こうすることで、Preview SDKは、標準の動画プレビューではなく、このビューアーを実行することを認識します。 ### サポートされているファイル拡張子 `360.3g2`, `360.3gp`, `360.avi`, `360.m2v`, `360.m2ts`, `360.m4v`, `360.mkv`, `360.mov`, `360.mp4`, `360.mpeg`, `360.mpg`, `360.mts`, `360.qt`, `360.wmv` ### イベント 360度動画ビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | ## SWFビューアー SWFビューアーは、[`SWFObject`](https://github.com/swfobject/swfobject)を使用してSWFファイルを埋め込みます。 ### 動作 ユーザーがAdobe Flash Playerプラグインを使用している場合、`SWFObject`はSWFファイルを埋め込み、このプラグインで関連するコンテンツをレンダリングできるようにします。 Flashコンテンツによるネットワークリクエストはすべて、セキュリティの制約によってブロックされるため、ネットワーク接続を必要とするコンテンツはレンダリングされないことに注意してください。 ### サポートされているファイル拡張子 - `swf` ### イベント SWFビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | ## プレゼンテーションビューアー プレゼンテーションビューアーでは、PowerPointファイルのプレビューがレンダリングされます。 ### 動作 プレゼンテーションビューアーには、プレビューを閉じるときに表示していたスライドが記憶されます。次回そのファイルを開くと、すぐにそのスライドが表示されます。マウスで上下にスクロールするか、モバイルデバイスで上下にスワイプすると、スライド間を移動します。ビューアーを拡大または縮小すると、スライドのサイズもそれぞれ拡大または縮小されます。ズームレベルが原因でコンテンツがはみ出す場合は、マウスをスクロールすると、スライドをスクロールできます。通常のスクロール動作に戻すには、はみ出さなくなるまで縮小する必要があります。 ### コントロール - 拡大 - 縮小 - ページの設定: 上矢印と下矢印を使用するか、ページ番号をクリックしてテキストを入力します。 - 全画面: Escキーを押すと終了可能 ### サポートされているファイル拡張子 `ppt`, `pptx`, `odp` ### オプション | オプション | 型 | 説明 | | --- | --- | --- | | annotations | boolean | 省略可。コンテンツの注釈を表示するかどうか。デフォルト値はfalseです。 | ### イベント プレゼンテーションビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. string error (省略可): エラーメッセージ | | | | 2. object file: 現在のファイル | | | | 3. object metrics: ロガーからの情報 | | | | 4. object viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | objectファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. number height: ウィンドウの高さ | | | | 2. number width: ウィンドウの幅 | | zoom | プレビューが拡大または縮小されます。 | 1. number zoom: 新しい拡大/縮小値 | | | | 2. boolean canZoomIn: trueにするとビューアーをさらに拡大可能 | | | | 3. boolean canZoomOut: trueにするとビューアーをさらに縮小可能 | | pagerender | ページがレンダリングされます。 | number レンダリングされたページのページ番号 | | pagefocus | ページが表示可能です。 | number フォーカスされたページのページ番号 | | scrollstart | ビューアーでスクロールを開始します。 | 1. number scrollTop: ビューポートの上部からスクロールしたピクセル数 | | | | 2. number scrollLeft: ビューポートの左側からスクロールしたピクセル数 | | scrollend | ビューアーでスクロールを停止します。 | 1. number scrollTop: ビューポートの上部からスクロールしたピクセル数 | | | | 2. number scrollLeft: ビューポートの左側からスクロールしたピクセル数 | ## MP4ビューアー MP4ビューアーでは、動画ファイルのプレビューがレンダリングされます。 ### 動作 MP4ビューアーは、黒い背景を使用して見やすくしています。音量は、音量アイコンをクリックしてミュートまたはミュート解除したり、音量スクラバをドラッグして変更したりできます。動画の位置は、再生スクラバをクリックまたはドラッグして変更できます。 ### コントロール - 再生/一時停止 - 音量 - 設定 - 全画面 (Escキーを押すと終了可能) ### 設定 設定は、プレビューツールバーにある歯車アイコンから使用できます。 - 動画速度の値: `0.25`、`0.5`、標準 (`1`)、`1.25`、`1.5`、`2.0` ### サポートされているファイル拡張子 `3g2`, `3gp`, `avi`, `m2v`, `m2ts`, `m4v`, `mkv`, `mov`, `mp4`, `mpeg`, `mpg`, `ogg`, `mts`, `qt`, `wmv` ### イベント MP4ビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. string error (省略可): エラーメッセージ | | | | 2. object file: 現在のファイル | | | | 3. object metrics: ロガーからの情報 | | | | 4. object viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | objectファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. number height: ウィンドウの高さ | | | | 2. number width: ウィンドウの幅 | | speedchange | メディアの速度が変更されます。 | string 再生速度 | | play | 動画が再生されます。 | | | pause | 動画が一時停止されます。 | | | seek | 動画は任意の時点までスキップします。 | number 時刻 | ## MP3ビューアー MP3ビューアーでは、オーディオファイルのプレビューが表示されます。 ### 動作 音量は、音量アイコンをクリックしてミュートまたはミュート解除したり、音量スクラバをドラッグして変更したりできます。音声の位置は、再生スクラバをクリックまたはドラッグして変更できます。 ### コントロール - 再生/一時停止 - 音量 - 設定 ### 設定 設定は、プレビューツールバーにある歯車アイコンから使用できます。 - 音声速度: `0.25`、`0.5`、標準 (`1`)、`1.25`、`1.5`、`2.0` ### サポートされているファイル拡張子 `aac`, `aif`, `aifc`, `aiff`, `amr`, `au`, `flac`, `m4a`, `mp3`, `ra`, `wav`, `wma` ### イベント MP3ビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. string error (省略可): エラーメッセージ | | | | 2. object file: 現在のファイル | | | | 3. object metrics: ロガーからの情報 | | | | 4. object viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | objectファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. number height: ウィンドウの高さ | | | | 2. number width: ウィンドウの幅 | | speedchange | メディアの速度が変更されます。 | string 再生速度 | | play | 動画が再生されます。 | | | pause | 動画が一時停止されます。 | | | seek | 動画は任意の時点までスキップします。 | number 時刻 | ## Officeビューアー Officeビューアーでは、MicrosoftのOffice Onlineビューアーの`<iframe>`を埋め込むことで、Microsoft Officeドキュメントのプレビューをレンダリングします。 ### 動作 現在、Officeビューアーでは、Boxウェブアプリ内からMicrosoft Office Onlineを使用したExcelファイルのプレビューがサポートされています。プラットフォームのユースケースおよび他のOfficeファイル形式のサポートは開発中です。 現時点では、次のように、いくつかの制限があります。 - ファイルはダウンロード可能にする必要があります。 - ファイルのサイズは5 MB未満にする必要があります。 - ファイルは、パスワード付きのBox共有リンクで共有できません (パスワードのない共有リンクは問題ありません)。 ### サポートされているファイル拡張子 `xlsx` ### イベント Officeビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | ## Markdownビューアー Markdownビューアーでは、[`Remarkable`](https://github.com/jonschlinkert/remarkable)を使用してマークダウンファイルと[`highlight.js`](https://github.com/isagalaev/highlight.js)を解析し、ビューアーに表示されるコードブロックに構文のハイライトを追加します。 ### 動作 Markdownビューアーでは、ファイル内の未加工のマークダウンのうち最初の192KBを解析し、GitHubのMarkdownスタイルを使用してレンダリングします。その他のコンテンツは省略され、ダウンロードボタンとともに通知がプレビューの最下部に追加されます。 このビューアーは、テーブル、構文のハイライト、自動URLリンクなど、[GitHub Flavored Markdown](https://guides.github.com/features/mastering-markdown/)をサポートします。 ビューアーウィンドウのサイズを変更すると、使用可能なスペースに収まるようマークダウンの再流し込みが行われます。また、このビューアーでは印刷がサポートされており、解析されたマークダウンが印刷されます。さらに、`print()`が呼び出されるか印刷ボタンが押されると、コード上で構文がハイライトされます。サイズの大きなファイルを印刷すると、一部のブラウザでは数秒間動作が停止する場合があります。 ### コントロール - 全画面 (Escキーを押すと終了可能) ### サポートされているファイル拡張子 `md` ### イベント Markdownビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | | printsuccess | 印刷が正常に開始されました。 | | ## Model3Dビューアー `Model3D`ビューアーでは、3Dモデルファイルのプレビューがレンダリングされるほか、各種レンダリングモードを有効にして、ワイヤフレームやテクスチャ座標など、モデルのさまざまな側面を調査できます。また、アニメーションデータは、それを含むファイル (`box3d`、`fbx`、`dae`など) でサポートされています。 ### 動作 `Model3D`ビューアーでは、モデルがインタラクティブに表示されます。マウスの左ボタンを使用すると、モデルを回転させることができます (タッチ対応デバイスでは1回タッチ)。モデルの任意の場所をクリックすると、軌道のフォーカスを変更できます。 ### コントロール - マウスホイールを使用 (またはタッチ対応デバイスの場合は2本指でスクロール) して拡大/縮小 (モデルまでの距離を変更)。 - マウスの右ボタンを使用 (またはタッチ対応デバイスの場合は3本指でスワイプ) して平行移動 (横方向の移動)。 - アニメーションの選択: 表示中のモデルにアニメーションが含まれている場合、ツールバーには2つのアニメーションボタンが表示されます。1つはアニメーションを再生/一時停止できるボタン、もう1つは現在のアニメーションを選択できるボタンです。 - VRボタン: WebVRをサポートするブラウザを使用していて、対応するVRデバイスがコンピュータに接続された場合、VRボタンを使用すると、VRモードの開始と終了を切り替えることができます。 ### 設定 設定は、プレビューツールバーにある歯車アイコンから使用できます。 - レンダリングモード: ライティングあり、ライティングなし、標準、シェイプ、UVオーバーレイ - ワイヤフレームの切り替え - スケルトンの切り替え - カメラ投影: 透視投影、平行投影 - レンダリング品質: 自動、詳細 - モデルの回転: X、Y、Z ## Box3Dパッケージ プレビューを使用すると、ユーザーはBox内に1つのファイルを表示できるため、デフォルトでは、モデルでテクスチャを表示できません。ただし、Boxウェブアプリを使用すると、ユーザーは、Box3Dパッケージを作成できます。このパッケージでは、依存するすべてのファイルが、共有およびプレビュー可能な1つファイルに統合されます。このパッケージを作成するには、Box内でモデルファイルを右クリックし、[3Dパッケージの作成] を選択します。Box内にある参照ファイルはすべて、作成されるパッケージに含まれます。 ### サポートされているファイル拡張子 `box3d`, `fbx`, `dae`, `3ds`, `obj`, `stl`, `ply` ### イベント `Model3D`ビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | ## 360度画像ビューアー 360度画像ビューアーでは、正距円筒図法を使用して保存された画像 (ほとんどの場合に360度カメラで撮影) のプレビューがレンダリングされます。 ### 動作 このビューアーでは、360度画像がインタラクティブに表示されます。まず、低解像度バージョンの画像が読み込まれ、フル解像度の画像の読み込みが終了するまで簡易表示されます。マウスの左ボタンでクリックしてドラッグすると、表示方向が変更されます (タッチ対応デバイスでは1回タッチしてドラッグ)。 ### コントロール - 全画面 (Escキーを押すと終了可能) - VRボタン: WebVRをサポートするブラウザの使用時に、対応するVRデバイスがコンピュータに接続されると、VRボタンを使用して、VRモードの開始と終了を切り替えることができます。 ### 制限 現在、このプレビューアーを使用するには、ファイルの名前を付ける際にファイル拡張子の前に「.360」を付ける必要があります。こうすることで、Preview SDKは、標準の画像ビューアーではなく、このビューアーを実行することを認識します。 ### サポートされているファイル拡張子 `360.jpg`, `360.jpeg`, `360.png`, `360.ai`, `360.bmp`, `360.dcm`, `360.eps`, `360.gif`, `360.ps`, `360.psd`, `360.svg`, `360.svs`, `360.tga`, `360.tif`, `360.tiff` ### イベント 360度画像ビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | ## 画像ビューアー 画像ビューアーでは、画像ファイルのプレビューがレンダリングされます。 ### 動作 ビューアーを回転させると、画像が右へ90度回転します。デフォルトのズームレベルでは、画像をクリックすると1回拡大されます。拡大されたドキュメントをクリックすると、デフォルトのズームレベルに戻ります。縮小されたドキュメントをクリックすると、元のズームレベルになるまで拡大されます。 ### コントロール - 拡大 - 縮小 - 回転 - 全画面: Escキーを押すと終了可能 ### サポートされているファイル拡張子 `ai`, `bmp`, `dcm`, `eps`, `idml`, `indt`, `indd`, `inx`, `gif`, `png`, `ps`, `psd`, `svs`, `tga` ### オプション | オプション | 型 | 説明 | | --- | --- | --- | | annotations | boolean | 省略可。コンテンツの注釈を表示するかどうか。デフォルト値はfalseです。 | ### イベント 画像ビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | | zoom | プレビューが拡大または縮小されます。 | 1. {number} zoom: 新しい拡大/縮小値 | | | | 2. {boolean} canZoomIn: trueにするとビューアーをさらに拡大可能 | | | | 3. {boolean} canZoomOut: trueにするとビューアーをさらに縮小可能 | | pan | プレビューが平行移動します。 | | | panstart | 平行移動が開始されます。 | | | panend | 平行移動が終了します。 | | | rotate | 画像が回転します。 | | | printsuccess | 印刷が正常に開始されました。 | | ## 複数画像ビューアー 複数画像ビューアーでは、複数画像のファイル (`tiff`、`tif`) のプレビューがレンダリングされます。 ### 動作 デフォルトのズームレベルでは、画像をクリックすると1回拡大されます。拡大されたドキュメントをクリックすると、デフォルトのズームレベルに戻ります。縮小されたドキュメントをクリックすると、元のズームレベルになるまで拡大されます。 ### コントロール - 拡大 - 縮小 - 全画面: Escキーを押すと終了可能 - ページの設定: 上矢印と下矢印を使用するか、ページ番号をクリックしてテキストを入力します。 ### サポートされているファイル拡張子 `tif`, `tiff` ### オプション | オプション | 型 | 説明 | | --- | --- | --- | | annotations | boolean | 省略可。コンテンツの注釈を表示するかどうか。デフォルト値はfalseです。 | ### イベント 画像ビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | | zoom | プレビューが拡大または縮小されます。 | 1. {number} zoom: 新しい拡大/縮小値 | | | | 2. {boolean} canZoomIn: trueにするとビューアーをさらに拡大可能 | | | | 3. {boolean} canZoomOut: trueにするとビューアーをさらに縮小可能 | | pagefocus | ページが表示可能です。 | {number} フォーカスされたページのページ番号 | | pan | プレビューが平行移動します。 | | | panstart | 平行移動が開始されます。 | | | panend | 平行移動が終了します。 | | ### メソッド 複数ページの画像ビューアーでは以下のメソッドを使用できます。 | メソッド名 | 説明 | メソッドのパラメータ | | --- | --- | --- | | zoom | 画像を拡大/縮小します。 | {string} 「in」、「out」、または「reset」 | | previousPage | 前のページに移動します。 | | | nextPage | 次のページに移動します。 | | | setPage | 指定したページに移動します。 | {number} ページ番号 | | toggleFullscreen | 全画面モードを切り替えます。 | | ## ドキュメントビューアー ドキュメントビューアーでは、さまざまなドキュメントタイプのプレビューがレンダリングされます。 ### 動作 ドキュメントビューアーには、プレビューを閉じるときに表示していたページが記憶されます。次回そのファイルを開くと、すぐにそのページが表示されます。ビューアーウィンドウのサイズを変更すると、ドキュメントのサイズが変更されます。 ### コントロール - 拡大 - 縮小 - ページの設定: 上矢印と下矢印を使用するか、ページ番号をクリックしてテキストを入力します。 - 全画面 (Escキーを押すと終了可能) ### サポートされているファイル拡張子 `as`, `as3`, `asm`, `bat`, `c`, `cc`, `cmake`, `cpp`, `cs`, `css`, `csv`, `cxx`, `diff`, `doc`, `docx`, `erb`, `gdoc`, `groovy`, `gsheet`, `h`, `haml`, `hh`, `htm`, `html`, `java`, `js`, `less`, `log`, `m`, `make`, `md`, `ml`, `mm`, `msg`, `odp`, `ods`, `odt`, `pdf`, `php`, `pl`, `plist`, `ppt`, `pptx`, `properties`, `py`, `rb`, `rst`, `rtf`, `sass`, `scala`, `scm`, `script`, `sh`, `sml`, `sql`, `tsv`, `txt`, `vi`, `vim`, `webdoc`, `wpd`, `xhtml`, `xls`, `xlsm`, `xlsx`, `xml`, `xsd`, `xsl`, `yaml` ### オプション | オプション | 型 | 説明 | | --- | --- | --- | | annotations | boolean | 省略可。コンテンツの注釈を表示するかどうか。デフォルト値はfalseです。 | ### イベント ドキュメントビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | | zoom | プレビューが拡大または縮小されます。 | 1. {number} newScale: 新しい拡大/縮小値 | | | | 2. {boolean} canZoomIn: trueにするとビューアーをさらに拡大可能 | | | | 3. {boolean} canZoomOut: trueにするとビューアーをさらに縮小可能 | | pagerender | ページがレンダリングされます。 | {number} レンダリングされたページのページ番号 | | pagefocus | ページが表示可能です。 | {number} フォーカスされたページのページ番号 | | scrollstart | ビューアーでスクロールを開始します。 | 1. {number} scrollTop: ビューポートの上部からスクロールしたピクセル数 | | | | 2. {number} scrollLeft: ビューポートの左側からスクロールしたピクセル数 | | scrollend | ビューアーでスクロールを停止します。 | 1. {number} scrollTop: ビューポートの上部からスクロールしたピクセル数 | | | | 2. {number} scrollLeft: ビューポートの左側からスクロールしたピクセル数 | | printsuccess | 印刷が正常に開始されました。 | | | printsuccess | 印刷に失敗しました。 | | ### 注釈 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | annotationdraw | テキストがハイライトされます。 | | | annotationcommentpending | ユーザーは、保留中のコメントが表示されているダイアログに戻ります。 | | | annotationcreate | 注釈の作成 | | | annotationcancel | 注釈が開始されましたが、作成前に破棄されました。 | | | annotationdelete | AnnotationIDが指定されている注釈が削除されます。IDが指定されていない場合は、スレッド内にある最初の (かつ残っている唯一の) 注釈が削除されます。 | | ## <iframe>ビューアー `<iframe>`ビューアーは、外部ソースからレンダリングされたコンテンツを表示するためのフレームを埋め込みます。 ### 動作 `<iframe>`ビューアーは、Box Notesのプレビューに使用されます。 Box Notesは、メインのBoxウェブアプリ内にフル機能搭載のビューアーを備えています。ただし、このようなフル機能搭載のビューアーは、Notesのファイルと同じディレクトリ内にある他のファイルのプレビューから移動しても初期化されません。この場合、`<iframe>`ビューアーは、Box Noteファイルの表示専用のレンダリング機能を埋め込みます。 ### サポートされているファイル拡張子 `boxnote` ### イベント `<iframe>`ビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | ## DASHビューアー DASHビューアーでは、[`Shaka Player`](https://github.com/google/shaka-player)を使用して、動画ファイルのプレビューがレンダリングされます。 ### 動作 DASHビューアーは、黒い背景を使用して、より自然な表示を実現しています。動画は、自動的に決まる初期の品質で、数バイトのチャンクに分割されてストリーミングされます。音量は、音量アイコンをクリックしてミュートまたはミュート解除したり、音量スクラバをドラッグして変更したりできます。動画の位置は、再生スクラバをクリックまたはドラッグして変更できます。 ### コントロール - 再生/一時停止 - 音量 - 設定 - 全画面 (Escキーを押すと終了可能) ### 設定 設定は、プレビューツールバーにある歯車アイコンから使用できます。 - 動画速度: `0.25`、`0.5`、標準 (`1`)、`1.25`、`1.5`、`2.0` - 動画品質: `480p`、`1080p`、`auto` ### サポートされているファイル拡張子 `3g2`, `3gp`, `avi`, `m2v`, `m2ts`, `m4v`, `mkv`, `mov`, `mp4`, `mpeg`, `mpg`, `ogg`, `mts`, `qt`, `wmv` ### イベント DASHビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | | speedchange | メディアの速度が変更されます。 | {string} 再生速度 | | qualitychange | 動画品質が変更されます。 | {string} メディア品質 | | bandwidthhistory | プレビューが破棄されたときに、帯域幅の履歴を提供します。 | {array} 帯域幅情報 | | switchhistory | プレビューが破棄されたときに、品質の切り替え履歴を提供します。 | {array} 品質切り替えオブジェクト | | adaptation | 品質が帯域幅の変更に適合されます。 | {number} 帯域幅 | | play | 動画が再生されます。 | | | pause | 動画が一時停止されます。 | | | seek | 動画は任意の時点までスキップします。 | {number} 時刻 | ## CSVビューアー CSVビューアーでは、[`PapaParse`](https://github.com/mholt/PapaParse)を使用してCSVおよびTSVファイルを解析し、[`React Virtualized`](https://github.com/bvaughn/react-virtualized)を使用して解析後のデータを表形式で表示します。 ### 動作 ビューアーウィンドウのサイズを変更すると、表のサイズが変更されます。拡大ボタンと縮小ボタンにより、フォントサイズがそれぞれ縮小または拡大されます。現在、列と行のサイズは固定されているため、はみ出すテキストは省略されます。 このビューアーは、印刷をサポートしていません。 ### コントロール - 拡大 - 縮小 - 全画面 (Escキーを押すと終了可能) ### サポートされているファイル拡張子 `csv`, `tsv` ### イベント CSVビューアーでは、以下のイベントがトリガーされます。 | イベント名 | 説明 | イベントデータ | | --- | --- | --- | | destroy | プレビューは意図的に破棄されます。 | | | load | プレビューが読み込まれます。 | 1. {string} error (省略可): エラーメッセージ | | | | 2. {object} file: 現在のファイル | | | | 3. {object} metrics: ロガーからの情報 | | | | 4. {object} viewer: 現在のビューアー | | notification | 通知が表示されます。 | | | navigate | 指定したインデックスのプレビューが表示されます。 | {object}ファイル | | reload | プレビューが再読み込みされます。 | | | resize | プレビューのサイズが変更されます。 | 1. {number} height: ウィンドウの高さ | | | | 2. {number} width: ウィンドウの幅 | | zoom | プレビューが拡大または縮小されます。 | 1. {number} zoom: 新しい拡大/縮小値 | | | | 2. {boolean} canZoomIn: trueにするとビューアーをさらに拡大可能 | | | | 3. {boolean} canZoomOut: trueにするとビューアーをさらに縮小可能 | **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/viewers-and-events/](https://ja.developer.box.com/guides/embed/ui-elements/viewers-and-events/) --- ### フローアクション **Type:** guide | **Category:** ツール | **Section:** Developer Guides フローアクション Salesforceツールキットには、管理者が以下のメソッドを呼び出す際に使用できるラッパーが用意されています。このツールキットを使用すると、Box for SalesforceユーザーはSalesforce… # フローアクション Salesforceツールキットには、管理者が以下の[メソッド](g://tooling/salesforce-toolkit/methods)を呼び出す際に使用できるラッパーが用意されています。このツールキットを使用すると、Box for Salesforceユーザーは[Salesforceフロー](https://help.salesforce.com/s/articleView?id=sf.flow.htm&type=5)を使用して、自動化ソリューション (フォルダ構造など) を構築できます。 ## Salesforceフローのメソッド 以下のリストには、[Salesforceフロー](https://help.salesforce.com/s/articleView?id=sf.flow.htm&type=5)で呼び出し可能なすべてのメソッドを示しています。 ### Box Sign - Box Signリクエストを送信する (`sendSignRequests`) ### Box Hubs - Hubの項目を追加する (`tkAddHubItem`) - Hubをコピーする (`tkCopyHub`) - Hubを作成する (`tkCreateHub`) - Hubコラボレーションを作成する (`tkCreateHubCollaboration`) - すべてのHubを取得する (`tkGetAllHubs`) - 企業のHubを取得する (`tkGetEnterpriseHubs`) - IDを指定してHubを取得する (`tkGetHubById`) - Hubコラボレーションを取得する (`tkGetHubCollaborations`) - Hubを更新する (`tkUpdateHub`) - Hubコラボレーションを更新する (`tkUpdateHubCollaboration`) ### Box AI - Box AIで項目IDを指定して質問する (`askBoxAI`) - Box AIでフィールドを指定して抽出する (`extractBoxAI`) - Box AIでメタデータテンプレートを指定して抽出する (`extractBoxAI`) - Box AIでSObjectタイプを指定して抽出する (`extractBoxAI`) - Box AIで項目IDを指定してテキストを生成する (`generateBoxAI`) ### Doc Gen - Doc Genテンプレートを作成する (`createDocGenTemplate`) - レコード用のDoc Genを生成する (`generateDocGenForRecord`) - Doc Genのバッチを送信する (`submitDocgenBatch`) - Doc Genのバッチステータスを取得する (`getDocgenBatch`) ### ファイルのBoxメタデータとアクション - ファイルIDを指定してBoxメタデータを作成する (`tkCreateBoxMetadataByFileId`) - ファイルIDを指定してBoxメタデータを削除する (`tkDeleteBoxMetadataByFileId`) - ファイルIDを指定してBoxメタデータを取得する (`tkGetBoxMetadataByFileId`) - ファイルIDを指定してBoxメタデータを更新する (`tkUpdateBoxMetadataByFileId`) - ファイルを移動する (`tkMoveFile`) - 最後の項目を取得する (`getLastItem`) - 最近使用した項目を取得する (`GetRecentItems`) ### フォルダのBoxメタデータとアクション - フォルダIDでBoxメタデータを作成する (`tkCreateBoxMetadataByFolderId`) - フォルダIDでBoxメタデータを削除する (`tkDeleteBoxMetadataByFolderId`) - フォルダIDでBoxメタデータを取得する (`tkGetBoxMetadataByFolderId`) - フォルダIDでBoxメタデータを更新する (`tkUpdateBoxMetadataByFolderId`) ### フォルダ管理 - フォルダを作成する (`tkCreateFolder`) - フォルダの関連付けを作成する (`tkCreateFolderAssociation`) - レコードID用のフォルダを作成する (`tkCreateFolderForRecordId`) - テンプレートからレコードID用のフォルダを作成する (`tkCreateFolderForRecordIdFromTemplate`) - レコードID用のオブジェクトフォルダを作成する (`tkCreateObjectFolderForRecordId`) - SalesforceレコードIDでフォルダの関連付けを取得する (`tkGetFolderAssociationsByRecordId`) - レコードIDでフォルダIDを取得する (`tkGetFolderIdByRecordId`) - フォルダURLを取得する (`tkGetFolderUrl`) - レコードIDでオブジェクトフォルダを取得する (`tkGetObjectFolderByRecordId`) - フォルダIDでレコードIDを取得する (`tkGetRecordIdByFolderId`) - ルートフォルダIDを取得する (`tkGetRootFolderId`) - フォルダ用URLを取得する (`tkGetUrlForFolder`) - フォルダを移動する (`tkMoveFolder`) - フォルダを更新する (`tkUpdateFolder`) - フォルダIDを指定してBoxフォルダのコンテンツを取得する (`tkGetFolderContents`) ### カスケードポリシー - メタデータカスケードポリシーを作成する (`tkCreateMetadataCascadePolicy`) - メタデータカスケードポリシーを削除する (`tkDeleteBoxMetadataByFolderId`) - フォルダIDでメタデータカスケードポリシーを取得する (`tkGetMetadataCascadePoliciesByFolderId`) - IDでメタデータカスケードポリシーを取得する (`tkGetMetadataCascadePolicyById`) ### コラボレーション - コラボレーションを作成する (`tkCreateCollaboration`) - レコードにコラボレーションを作成する (`tkCreateCollaborationOnRecord`) - コラボレーションを削除する (`tkDeleteCollaboration`) - コラボレーションを編集する (`tkEditCollaboration`) ### Slack統合 - Slackチャンネルマッピングを作成する (`tkCreateSlackChannelMapping`) - Slackチャンネルアクセス管理を無効に設定する (`tkSetSlackChannelAccessManagementDisabled`) ### その他/ユーティリティ - 添付ファイルからファイルを作成する (`tkCreateFileFromAttachment`) - 統合アクティビティを有効にする (`tkEnableAppActivity`) - 検索する (`search`) **Source:** [https://ja.developer.box.com/guides/tooling/salesforce-toolkit/flow-actions/](https://ja.developer.box.com/guides/tooling/salesforce-toolkit/flow-actions/) --- ### ページネーション **Type:** guide | **Category:** 検索 | **Section:** Developer Guides ページネーション 検索APIでは、offsetクエリパラメータとlimitクエリパラメータを使用したオフセットベースのページネーションがサポートされます。マーカーベースのページネーションはサポートされません。 API… # ページネーション 検索APIでは、`offset`クエリパラメータと`limit`クエリパラメータを使用したオフセットベースのページネーションがサポートされます。マーカーベースのページネーションはサポートされません。 ## APIによるページネーション 検索結果の最初のページを取得するには、APIを`offset`パラメータを指定せずに呼び出すか、`offset`を`0`に設定して呼び出す必要があります。`limit`フィールドは省略可能です。 ``` curl https://api.box.com/2.0/search?query=sales&offset=0&limit=100 \ -H "authorization: Bearer ACCESS_TOKEN" ``` エントリの次のページを取得するには、以前の`offset`値と以前の結果で返された制限の合計 (`previous_offset + previous_limit`) と等しい`offset`パラメータを指定して、APIを呼び出す必要があります。 ``` curl https://api.box.com/2.0/search?query=sales&offset=100&limit=100 \ -H "authorization: Bearer ACCESS_TOKEN" ``` `offset`は、レスポンス配列内のエントリのサイズではなく、以前の`limit`分だけ加算されますので注意してください。これは制限を下回る可能性があるためです。一般的には、レスポンスオブジェクトの`limit`の値を使用して`offset`値を加算することをお勧めします。 次の`offset`値がレスポンスオブジェクト内の`total_count`値を超えている場合、項目の最終ページはリクエスト済みです。この時点では、これ以上取得する項目がありません。 オフセットベースのページネーションの詳細を確認する ## SDKによるページネーション Boxの各SDKには、APIによるページネーションのサポートが組み込まれています。以下のコードサンプルでは、検索APIでのページネーションの使用方法を示します。 ``` long offsetValue = 0; long limitValue = 50; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); PartialCollection<BoxItem.Info> page1 = boxSearch.searchRange(offsetValue, limitValue, searchParams); offsetValue += 50; PartialCollection<BoxItem.Info> page2 = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` BoxCollection<BoxItem> page1 = await client.SearchManager .QueryAsync("sales", limit: 50); BoxCollection<BoxItem> page2 = await client.SearchManager .QueryAsync("sales", limit: 50, offset: 50); ``` ``` page1 = client.search().query(query='sales', limit=50) page2 = client.search().query(query='sales', limit=50, offset=50) ``` ``` const page1 = await client.search.query('sales', { limit: 50 }) const page2 = await client.search.query('sales'. { limit: 50, offset: 50 }) ``` **Source:** [https://ja.developer.box.com/guides/search/pagination/](https://ja.developer.box.com/guides/search/pagination/) --- ### ページネーション **Type:** guide | **Category:** APIコール | **Section:** Developer Guides ページネーション Box APIがサポートするコレクションのページネーション方法は… # ページネーション Box APIがサポートするコレクションのページネーション方法は2つあります。最も一般的な方法はオフセットベースのページネーションで、項目のリストがあらかじめ決められた固定長の場合によく使用されます。 場合によっては、オフセットベースのページネーションの代替方法または完全な置き換えとして、APIエンドポイントがマーカーベースのページネーションをサポートすることもあります。マーカーベースのページネーションがよく使用されるのは、項目の全セットの長さが頻繁に変更される場合や全体の長さが事前にわからない可能性がある場合です。 **Source:** [https://ja.developer.box.com/guides/api-calls/pagination/](https://ja.developer.box.com/guides/api-calls/pagination/) --- ### ページ割りと並べ替え **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides ページ割りと並べ替え デフォルトでは、1ページあたり返されるクエリ結果は20件のみで、この結果の順序は保証されておらず変更される可能性があります。ページネーションと並べ替えにより、さらに多くの結果を取得し、結果の順序を定義することが可能になります。 ページネーション API… # ページ割りと並べ替え デフォルトでは、1ページあたり返されるクエリ結果は20件のみで、この結果の順序は保証されておらず変更される可能性があります。ページネーションと並べ替えにより、さらに多くの結果を取得し、結果の順序を定義することが可能になります。 ## ページネーション APIはデフォルトで、20件の結果を含む最初のページのみを返します。ページあたりの結果の数を増やすようリクエストするには、リクエストに`limit`クエリパラメータを指定して送信します。 ``` curl -X POST https://api.box.com/2.0/metadata_queries/execute_read \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "from": "enterprise_123456.contractTemplate", "fields": ["name"], "ancestor_folder_id": "5555", "limit": 100 }' ``` `limit`の最大値は100です。返される結果ページ数を増やすには、各ページで`next_marker`値を返します。 ``` { "entries": [...], "next_marker": "AAAAAmVYB1FWec8GH6yWu2nwmanfMh07IyYInaa7DZDYjgO1H4KoLW29vPlLY173OKsci6h6xGh61gG73gnaxoS+o0BbI1/h6le6cikjlupVhASwJ2Cj0tOD9wlnrUMHHw3/ISf+uuACzrOMhN6d5fYrbidPzS6MdhJOejuYlvsg4tcBYzjauP3+VU51p77HFAIuObnJT0ff" } ``` この`next_marker`を使用すると、結果の次のページについて新しいリクエストを作成できます。 ``` curl -X POST https://api.box.com/2.0/metadata_queries/execute_read \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "from": "enterprise_123456.contractTemplate", "fields": ["name"], "ancestor_folder_id": "5555", "limit": 100, "marker": "AAAAAmVYB1FWec8GH6yWu2nwmanfMh07IyYInaa7DZDYjgO1H4KoLW29vPlLY173OKsci6h6xGh61gG73gnaxoS+o0BbI1/h6le6cikjlupVhASwJ2Cj0tOD9wlnrUMHHw3/ISf+uuACzrOMhN6d5fYrbidPzS6MdhJOejuYlvsg4tcBYzjauP3+VU51p77HFAIuObnJT0ff" }' ``` レスポンスに次のマーカーが含まれていない場合は、これ以上一致する結果がないことを意味します。 `next_marker`を使用するには、結果の次のページにまったく同じクエリを使用することが重要です。`query`、`query_params`などのパラメーターが変更されると、APIはエラーを返します。 ## 並べ替え 結果は、サポートされているどのメタデータフィールドタイプを使用しても並べ替えることができます。現在サポートされているタイプは、`float`、`date`および`string`[フィールド](g://metadata/fields)のみです。`enum`または`multiSelect`値による並べ替えは現在サポートされていません。 結果を並べ替えるには、並べ替えの基準として使用する1つ以上のフィールドキーに加えて、方向を指定します。 ``` "order_by": [ { "field_key": "amount”, "direction": "desc" }, { "field_key": "created_at" "direction": "desc" } ] ``` 並べ替えの方向は、指定したすべてのキーで同じにする必要があります。つまり、各`field_key`の`direction`は同じにする必要があります。 **Source:** [https://ja.developer.box.com/guides/metadata/queries/pagination/](https://ja.developer.box.com/guides/metadata/queries/pagination/) --- ### ベストプラクティス **Type:** guide | **Category:** 認証 | **Section:** Developer Guides ベストプラクティス クライアントシークレットのセキュリティ クライアントシークレットは機密情報であり、保護する必要があります。アクセストークンの取得時にBoxがアプリケーションのID… # ベストプラクティス ## クライアントシークレットのセキュリティ クライアントシークレットは機密情報であり、保護する必要があります。アクセストークンの取得時にBoxがアプリケーションのIDを安全に確認するために使用されるため、クライアントシークレットを自由に配布するべきではありません。配布方法には、メール、公開フォーラム、コードリポジトリ、分散されたネイティブアプリケーション、クライアント側のコードなどがあります。 ## トークンのキャッシュ 新しいトークンの取得はコストが高いため、トークンのキャッシュを使用して、不要なリクエストが行われないようにすることをお勧めします。 トークンは、取得後、Memcachedなどのインメモリキャッシュ、または組み込みのASP.NETキャッシュサービスに保存してください。デフォルトでは、アクセストークンの有効期限は60分ですが、バッファを確保するために50分程度に設定することをお勧めします。 トークンが必要になったら、まずキャッシュに有効なトークンがあるかどうかを確認します。トークンの有効期限が切れている場合は、新しいトークンを取得し、キャッシュに50分間保存します。 ``` def self.user_client(user_id) access_token=Rails.cache.fetch("box_tokens/user/#{user_id}", :expires_in => 50.minutes) do puts "getting new user token" response= Boxr::get_user_token(user_id, private_key: PRIVATE_KEY, private_key_password: ENV['JWT_PRIVATE_KEY_PASSWORD']) response.access_token end Boxr::Client.new(access_token) end ``` Box公式SDKでは、トークンのキャッシュが使用されています。 ## 有効期限が切れたトークン 有効期限が切れたトークンは、401: Unauthorizedエラーを返します。このエラーを処理して、トークンを更新する必要があります。 ## トークンのダウンスコープ アクセストークンについて考えるとき際は、最小権限の原則に従うことが重要です。そのためには、[ダウンスコープ](g://authentication/tokens/downscope)を行います。ダウンスコープでは、すべてのスコープが設定されたアクセストークンがより厳しく制限されたアクセストークンと交換され、そのトークンがクライアント側のコード、モバイル環境、またはUIツールに展開されます。 ``` //Define resource/scopes that downscoped token has access to String resource = "https://api.box.com/2.0/files/RESOURCE_ID"; List<String> scopes = new ArrayList<String>(); scopes.add("base_preview"); scopes.add("item_download"); //Preform token exchange ScopedToken downscopedToken = client.getLowerScopedToken(scopes,resource); //Downscoped token available in downscopedToken.getAccessToken() ``` ## トークンの取り消し すべてのスコープが設定されたアクセストークンもダウンスコープされたトークンも、[取り消す](g://authentication/tokens/revoke)ことができます。そのため、トークンの寿命を管理して、ユーザーがログアウトしたとき、不審なアクティビティがあったとき、新しいセキュリティ強化を推進する必要があるときなどに、リスクを減らすことができます。 ## 開発者トークン 開発者トークンは、開発またはテストのためだけに使用し、実稼働環境では使用しないでください。 **Source:** [https://ja.developer.box.com/guides/authentication/best-practices/](https://ja.developer.box.com/guides/authentication/best-practices/) --- ### ベストプラクティス **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides ベストプラクティス アプリトークンの循環 アプリトークンの循環に関するガイドを参照してください。 ダウンスコープトークンの使用 アプリトークンは、… # ベストプラクティス ## アプリトークンの循環 [アプリトークンの循環](g://authentication/app-token/rollover)に関するガイドを参照してください。 ## ダウンスコープトークンの使用 アプリトークンは、2つのトークン (プライマリとセカンダリ) からなるセットで、アプリケーションによって管理されているコンテンツに対する高度な権限を保持しています。アプリトークンは、任意のBoxコンテンツをアップロード、ダウンロード、プレビュー、および変更するために、アプリケーションで使用できます。 何らかの理由でトークンをクライアント側で利用できるようにする必要がある場合は、元のアプリトークンの[ダウンスコープ](g://authentication/tokens/downscope)したバージョンを使用することを強くお勧めします。これは、必要に応じて、これらのトークンに高度な権限が付与されるためです。これが必要になる例として、Box Preview UI Elementを使用している場合が挙げられます。 **Source:** [https://ja.developer.box.com/guides/embed/box-view/best-practices/](https://ja.developer.box.com/guides/embed/box-view/best-practices/) --- ### ヘッダーによる一貫性の確保 **Type:** guide | **Category:** APIコール | **Section:** Developer Guides ヘッダーによる一貫性の確保 一部のBox APIでは、アプリケーションとBox間の一貫性を確保するために使用されるヘッダーがサポートされています。 etag、if-match、およびif-none-match API… # ヘッダーによる一貫性の確保 一部のBox APIでは、アプリケーションとBox間の一貫性を確保するために使用されるヘッダーがサポートされています。 ## etag、if-match、およびif-none-match APIを介してリクエスト可能なファイルシステムの項目 (ファイルまたはフォルダ) の多くは、項目の`etag`値を返します。 たとえば、ファイルリソースはJSONレスポンスで`etag`を返します。 ``` curl https://api.box.com/2.0/files/12345 \ -H "authorization: Bearer ACCESS_TOKEN" ``` ``` { "id": 12345, "etag": 1, "type": "file", "sequence_id": 3, "name": "Contract.pdf", ... } ``` この`etag`を`if-match`または`if-none-match`ヘッダーの値として使用できるのは、`etag`値が受信されてからリソースが変更されていないことを確認するためか、または変更されていない項目を不必要にダウンロードしないようにするためです。 たとえば、同じファイルを取得するのはそのファイルが変更された場合のみにするには、`if-none-match`ヘッダーで`etag`値を渡します。 ``` curl https://api.box.com/2.0/files/12345 \ -H "authorization: Bearer ACCESS_TOKEN" \ -H "if-none-match: 1" ``` ファイルが変更されていない場合、このAPIコールでは空のレスポンスが返されます。 ## 一貫性のある変更の確保 `if-match`ヘッダーを使用すると、アプリケーションは、最後に調べた項目がその後別のアプリケーションまたはユーザーによって変更が加えられても、項目が変更されないようにすることができます。これにより、2つのアプリケーションまたは2人のユーザーが項目を同時に変更しても変更が失われることはありません。 このヘッダーは、以下のエンドポイントでサポートされます。 | if-match対応のエンドポイント | | | --- | --- | | POST /files/:id/content | 新しいファイルバージョンをアップロード | | PUT /files/:id | ファイルの情報を更新 | | DELETE /files/:id | ファイルを削除 | | PUT /folders/:id | フォルダの情報を更新 | | DELETE /folders/:id | フォルダを削除 | | PUT /web_links/:id | ウェブリンクの情報を更新 | | DELETE /web_links/:id | ウェブリンクを削除 | これらのAPIコールのレスポンスは、項目が存在するかどうか、および`etag`値が最新バージョンと一致するかどうかによって異なります。 | 項目があるか? | Etagが一致するか? | HTTPステータス | | --- | --- | --- | | はい | はい | 200 | | はい | いいえ | 412 | | いいえ | はい | 412 | | いいえ | いいえ | 404 | # 項目の移動 `if-match`ヘッダーを使用してファイル、フォルダ、またはウェブリンクの移動を防ぐことはできません。Boxでは、必ず最新の項目が新しい場所に移動されます。 ## リクエストによる不要なダウンロードの防止 `if-none-match`ヘッダーを使用すると、アプリケーションは、最後に調べてから変更されていない項目の情報がダウンロードされないようにすることができます。これにより、不要な情報がダウンロードされなくなるため、アプリケーションの速度が向上し、帯域幅が節約されます。 | if-none-match対応のエンドポイント | | | --- | --- | | GET /files/:id | ファイルの情報を取得 | | GET /folders/:id | フォルダの情報を取得 | | GET /web_links/:id | ウェブリンクの情報を取得 | | GET /shared_items | 共有項目の情報を取得 | これらのAPIコールのレスポンスは、項目が存在するかどうか、および`etag`値が最新バージョンと一致するかどうかによって異なります。 | 項目があるか? | Etagが一致するか? | HTTPステータス | | --- | --- | --- | | はい | はい | 304 | | はい | いいえ | 200 | | いいえ | はい | 404 | | いいえ | いいえ | 404 | **Source:** [https://ja.developer.box.com/guides/api-calls/ensure-consistency/](https://ja.developer.box.com/guides/api-calls/ensure-consistency/) --- ### ボットのテスト **Type:** quick-start | **Category:** コラボレーション | **Section:** Developer Guides ボットのテスト この最後のセクションでは、Slackボットのさまざまな機能をテストします。 グループの作成: ボットがチャンネルに追加されると、現在のチャンネル参加者全員を含む新しいBoxグループが作成されます。このチャンネル内で (メールアドレスの照合を基に) 一致するBox… # ボットのテスト この最後のセクションでは、Slackボットのさまざまな機能をテストします。 - **グループの作成**: ボットがチャンネルに追加されると、現在のチャンネル参加者全員を含む新しいBoxグループが作成されます。このチャンネル内で (メールアドレスの照合を基に) 一致するBoxアカウントを持つユーザーのみが追加される必要があります。 - **User Event関数**: ユーザーは、チャンネルに参加した場合またはチャンネルから退出した場合に、チャンネルグループから追加または削除される必要があります。 - **コンテンツ追加関数**: ユーザーが有効な`/boxadd`スラッシュコマンドを入力すると、新しいコラボレーションによってそのコンテンツがグループと共有される必要があります。 上記の内容がまだできていない場合は、これまでに作成したすべてのコードが、一般公開されているアプリケーションとして展開されていることを確認します。 ## グループの作成のテスト ボットが初めてチャンネルに追加されるときに、予想されることがいくつかあります。 - SlackチャンネルIDと一致する名前で新しいグループが作成されます。 - 現在チャンネルに存在するすべてのユーザーがグループに追加されます (Slackメールアドレスが同じメールアドレスでEnterpriseアカウントと一致する限り) Slackボットを[手順1](g://collaborations/connect-slack-to-group-collabs/configure-slack)で構成した際に、SlackボットをSlackワークスペースにインストールしました。グループの作成をテストするには、Slackボットをチャンネルに追加する必要があります。 Slack UIまたは`/invite @bot_app_name`コマンドを使用して、任意のSlackチャンネルからSlackボットを招待します。 追加後、Boxにグループが作成され、メンバーが追加されていることを確認します。Box Enterprise管理者アカウントで、管理コンソールの [**[ユーザーとグループ](https://app.box.com/master/groups)**] セクションに移動します。成功した場合、表示されるグループには、グループ名としてランダムな英数字の文字列が使用されます。これはSlackのチャンネルIDで、グループ名に反映されています。 [**メンバー**] 列には、グループ作成時に社内で検出されてグループに追加された、一致するメールアドレスを持つBoxユーザーの数も表示されます。 グループとメンバーが表示されていれば、この手順は成功です。 グループに追加したメンバーが表示されず、ボットアプリケーションからエラーが返されない場合、最も可能性が高い原因として、メールアドレスの不一致が考えられます。Slackのアカウントで使用されているメールアドレスが、Box Enterpriseのユーザーで使用されているメールアドレスと一致することを確認してください。 ## User Event関数のテスト Box管理コンソールの [**[ユーザーとグループ](https://app.box.com/master/groups)**] セクションを開いたまま、Slackグループの横にある [**メンバー**] 列の数値を書き留めます。 ボットを招待したSlackチャンネルから、ボット以外のユーザーを追加または削除します。 Box管理コンソールの [ユーザーとグループ] セクションを更新すると、ユーザーの追加または削除に応じたメンバー数の増減がわかります。 メンバーの数が変化していれば、この手順は成功です。 ## コンテンツ追加関数のテスト グループとコンテンツを共有する機能をテストするには、チャンネル内の2人のユーザーに対するアクセス権限が必要です。1人はBoxアカウントからコンテンツを共有するユーザー、もう1人は、コンテンツが共有されたことを確認するためにファイルのリストを表示する、グループ内の別のユーザーです。 ボットを招待したSlackチャンネルで、ファイルやフォルダをグループと共有するためのスラッシュコマンドを`/boxadd [file/folder] [ID of file/folder]`形式 (`/boxadd folder 324554221`など) で入力します。 指定されるファイルまたはフォルダIDは、ファイルまたはフォルダを共有するユーザーのBoxアカウント内のコンテンツである必要があります。 Boxアカウント内のファイルまたはフォルダのIDを調べるには、[Boxサイト](https://box.com)内でファイルまたはフォルダを読み込み、URLを確認します。IDはURLの最後の文字列で、多くの場合、`/file/`または`/folder/`を含むセクションの直後に表示されます。 コマンドを入力したら、SlackチャンネルとBoxグループ内で別のユーザーの[Boxサイト](https://box.com)アカウントに移動します。共有したコンテンツがそのアカウントで使用できるようになっているはずです。 共有したコンテンツをグループ内の他のユーザーが使用できれば、この手順は成功です。 ## 次の手順 最小限のボットが展開されたので、ここまでに作成した機能に加えて、操作性を向上させる方法を検討できるようになりました。この工程における次の手順として、さまざまな領域を拡張することもできます。 - グループと共有されたファイルやフォルダの[共有リンクを作成](g://shared-links/create-or-update)するための新しいスラッシュコマンドを追加することで、そのグループに属していない他のユーザーや社外のユーザーとコンテンツを共有できるようにします。 - [リテンションポリシーを作成](e://post-retention-policies)し、グループと共有されたコンテンツに[割り当てる](e://post-retention-policy-assignments)ことで、共有コンテンツの寿命とガバナンスを制御できるようにします。 - チャンネル内のユーザーが、グループと共有されている[ファイルにコメント](e://post-comments)できるように新しいスラッシュコマンドを追加します。 **Source:** [https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/test-bot/](https://ja.developer.box.com/guides/collaborations/connect-slack-to-group-collabs/test-bot/) --- ### マーカーベースのページネーション **Type:** guide | **Category:** APIコール | **Section:** Developer Guides マーカーベースのページネーション マーカーベースのページングを使用するAPIは、markerおよびlimit… # マーカーベースのページネーション マーカーベースのページングを使用するAPIは、`marker`および`limit`クエリパラメータを使用してコレクション内の項目のページ割りを行います。 マーカーベースのページネーションがよく使用されるのは、項目の全セットの長さが頻繁に変更される場合や全体の長さが事前にわからない可能性がある場合です。 ## ページング コレクション内のエントリの最初のページを取得するには、APIを`marker`パラメータを指定せずに呼び出すか、`marker`を`0`に設定して呼び出す必要があります。`limit`パラメータは省略可能です。 ``` curl https://api.box.com/2.0/folders/0/items?limit=100&usemarker=true \ -H "authorization: Bearer ACCESS_TOKEN" ``` オフセットベースのページネーションとマーカーベースのページネーションの両方をサポートするAPIでは、マーカーベースのページネーションが使用されるように`usemarker`クエリパラメータを`true`に設定する必要があります。 エントリの次のページを取得するには、APIレスポンスで受け取った`next_marker`値の値に等しい`marker`パラメータを指定して、APIを呼び出す必要があります。 ``` curl https://api.box.com/2.0/folders/0/items?marker=34332423&limit=100&usemarker=true \ -H "authorization: Bearer ACCESS_TOKEN" ``` 次の`next_marker`値がレスポンスオブジェクト内で`null`になっている場合、項目の最終ページはリクエスト済みです。この時点では、これ以上取得する項目がありません。 マーカーベースのページングを使用する場合、コレクション内のエントリの合計数を確認するには、エントリをすべて取得するしかありません。マーカーの内部実装は今後変更される可能性があるため、アプリケーションでは`next_marker`値を長期にわたって保持しないでください。 ## マーカーと制限 以下のクエリパラメータは、コレクションのページネーションに使用されます。 | クエリパラメータ | 型 | デフォルト | | | --- | --- | --- | --- | | marker | String | | コレクション内で最初に結果を返す位置。これは前のリクエストで返された値です。 | | limit | Integer | APIによって異なる | 返される最大エントリ数。値が最大値を超える場合は、最大値が使用されます。 | | usemarker | Boolean | | ページネーションのタイプを選択するために、両タイプのページネーションをサポートするAPIエンドポイントで使用可能なクエリパラメータ (省略可)。trueに設定すると、マーカーベースのページネーションが適用されます。 | ## コレクション コレクションのページネーションを行うと、APIによって、結果のセットを配列として含むオブジェクトのほか、結果の現在のページに関する情報が返されます。 | フィールド | 型 | | | --- | --- | --- | | entries | Array | このページの項目を含むページ。結果がない場合は空の配列になります。 | | next_marker | String | 結果の次のページを取得するためにmarker値として使用できる値。この値がnullまたは空の文字列の場合は、これ以上取得する結果がありません。 | | limit | Integer | 結果の現在のページに使用される制限。この制限は、このAPIエンドポイントに許可されている最大値を超えない限り、limitクエリパラメータと同じになります。 | ## エンドポイントの例 以下は、マーカーベースのページネーションをサポートするエンドポイントの例です。 - [フォルダ内の項目を取得](e://get_folders_id_items) - [ファイルのコラボレーションのリストを取得](e://get-files-id-collaborations) - [ユーザーのすべてのWebhookのリストを取得](e://get-webhooks) - [社内のすべてのユーザーのリストを取得](e://get-users) - [ごみ箱にあるすべての項目のリストを取得](e://get-folders-trash-items) **Source:** [https://ja.developer.box.com/guides/api-calls/pagination/marker-based/](https://ja.developer.box.com/guides/api-calls/pagination/marker-based/) --- ### メソッドと操作 **Type:** guide | **Category:** ツール | **Section:** Developer Guides メソッドと操作 ツールキットの詳細 クラス名: box.Toolkit インスタンス変数 mostRecentError… # メソッドと操作 ## ツールキットの詳細 クラス名: `box.Toolkit` ## インスタンス変数 ### mostRecentError インスタンスメソッドの呼び出し時に発生した最新のエラーを示す文字列。 この文字列が存在しても、操作が成功しなかったことを意味するわけではありません。そのエラーが回復可能であった可能性もあります。ただし、この文字列に値がない場合は、操作が成功したことを示しています。 ### Enum CollaborationType [コラボレーションのタイプ](https://support.box.com/hc/ja/articles/360044196413-%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%A9%E9%99%90%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を示す列挙型。 可能性のある値: `EDITOR`、`VIEWER`、`PREVIEWER`、`UPLOADER`、`COOWNER`、`OWNER`、`PREVIEWERUPLOADER`、`VIEWERUPLOADER` ## 静的メソッド ### deleteServiceUserAssociation サービスアカウントとBox for Salesforce統合の関連付けをクリアするメソッド。間違ったサービスアカウントが使用されている場合、このメソッドを使用してアカウントを変更できます。 パラメータ: - なし 戻り値: - ユーザーのアカウントが存在していたが削除された場合は`true`。 - ユーザーのアカウントが何らかの理由 (存在しなかった場合を含む) で削除されなかった場合は`false`。 ### deleteUserAssociation | パラメータ | 型 | 説明 | | --- | --- | --- | | userId | id | 資格情報がクリアされるユーザーのID。 | 戻り値: - ユーザーのアカウントが存在していたが削除された場合は`true`。 - ユーザーのアカウントが何らかの理由 (存在しなかった場合を含む) で削除されなかった場合は`false`。 ## インスタンスメソッド - コンストラクタ、デストラクタ ### box.Toolkit() パラメータ: - なし ### commitChanges このメソッドは`box.Toolkit()`メソッドのデストラクタとして扱います。 このメソッドは重要です。すべてのフォルダ/コラボレーション操作が完了した後、毎回、例外なくこのメソッドを呼び出す必要があります。 Salesforceではデータベースの更新/挿入/削除の後の呼び出しは許可されないため、Toolkitクラスではすべての呼び出し操作が完了した後で挿入するオブジェクトのコレクションが保持されます。このメソッドを呼び出さない場合、このようなオブジェクトがデータベースから消去され、ユーザー/レコード/フォルダの関連付けを追跡するテーブルの同期も失われて、高度なデバッグによる修正が必要になります。 パラメータ: - なし 戻り値: - `Void` ### プラットフォームイベントを使用するcommitChanges このメソッドは`box.Toolkit()`メソッドのデストラクタとして扱います。 このメソッドは、上記の`commitChanges`とよく似ています。ただし、別のトランザクションでDMLステートメントを実行し、一部のシナリオでガバナ制限を回避するために、プラットフォームイベントを使用してデータベースに変更をコミットします。 | パラメータ | 型 | 説明 | | --- | --- | --- | | usePlatformEvent | boolean | プラットフォームイベントを使用する場合はtrue。元のメソッドを呼び出す場合はfalse。 | 戻り値: - `Void` ## ジェネリックメソッド Box for Salesforce Developer Toolkitは、パラメータとして[HttpRequest](https://developer.salesforce.com/docs/atlas.ja-jp.apexref.meta/apexref/apex_classes_restful_http_httprequest.htm)オブジェクトを受け取り、[HttpResponse](https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_classes_restful_http_httpresponse.htm#apex_classes_restful_http_httpresponse)オブジェクトを返すグローバルメソッドを提供します。このメソッドではサービスアカウントの認証の詳細情報を利用してBoxのAPIを呼び出すため、開発者は統合のビジネスロジックに集中して取り組むことができます。 ### sendRequest | パラメータ | 型 | 説明 | | --- | --- | --- | | request | HttpRequest | エンドポイントとメソッドが設定されたHttpRequestオブジェクト。 | 戻り値: - BoxのAPIコールからのレスポンスの詳細情報が含まれた[HttpResponse](https://developer.salesforce.com/docs/atlas.ja-jp.apexcode.meta/apexcode/apex_classes_restful_http_httpresponse.htm#apex_classes_restful_http_httpresponse)オブジェクト。 - HttpRequestのインプットの情報が不足している場合は`Toolkit.BoxApiException`。 - サービスアカウントの認証の詳細情報を取得する際に問題が発生した場合は`null`。この場合は、`mostRecentError`を確認してください。 ## ファイル操作 ### createFileFromAttachment バージョン3.46以降で使用可能です。 Salesforceの文字列長の上限は600万文字です。base64エンコード/デコードプロセスでは文字列が膨張するため、有効なファイルサイズの上限は、同期Apexの場合は4.3MB、非同期Apexの場合は8.6MBとなっています。 | パラメータ | 型 | 説明 | | --- | --- | --- | | att | Attachment | Box内のファイルに変換される添付ファイル。 | | fileNameOverride | string | 省略可 - 新しいファイルの名前。値が渡されなかった場合、添付ファイルの名前が使用されます。 | | folderIdOverride | string | 省略可 - この添付ファイルの配置先であるBoxフォルダID。値が渡されなかった場合、ファイルは添付ファイルのparentIdに当たるレコードに関連付けられているフォルダに配置されます。レコード固有のフォルダが存在していない場合は作成されます。 | | accessToken | string | 省略可 - accessTokenが送信された場合は、Box APIコールにその値が使用されます。そうでない場合は、デフォルトアカウントの資格情報が使用されます。 | 戻り値: - `string`。作成されたBoxファイルのIDが返されます。 - エラーが発生した場合は`null`。この場合には、`mostRecentError`を確認してください。 ### getObjectFolderByRecordId | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | id | ルートフォルダIDを取得する必要があるSalesforceレコードのID。 | 戻り値: - `string`。レコードIDが渡されたオブジェクトルートフォルダのBoxフォルダIDが返されます。 ## フォルダ操作 ### getRootFolderId パラメータ: - なし 戻り値: - `string`。SalesforceルートフォルダのBoxフォルダIDが返されます。 ### getObjectFolderByRecordId | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | id | ルートフォルダIDを取得する必要があるSalesforceレコードのID。 | 戻り値: - `string`。レコードIDが渡されたオブジェクトルートフォルダのBoxフォルダIDが返されます。 ### getFolderUrl - このメソッドは、特定のレコードの埋め込みウィジェットURLを取得します。このため、必要に応じて独自の埋め込みロジックを使用できます。 - このメソッドではシームレスログインの設定が優先されます。このため、シームレスログインが有効になっている場合、ユーザーはURLに自動的にログインされます。 | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | id | ルートフォルダIDを取得する必要があるSalesforceレコードのID。 | | isMobileContext | boolean | URLがモバイル (true) か、それ以外 (false) かを示すブール値。 | 戻り値: - `string`。渡されたSalesforceレコードIDに関連付けられているフォルダを表すURLが返されます。このURLをBox埋め込みウィジェットで使用して、任意のVisualforceページに埋め込むことができます。 ### createObjectFolderForRecordId | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | id | ルートフォルダIDを取得する必要があるSalesforceレコードのID。 | 戻り値: - `string`。作成されたルートフォルダのBoxフォルダIDが返されます。 - ルートフォルダがすでに存在していた場合、そのルートフォルダのBoxフォルダIDが返されます。 ### createFolder | パラメータ | 型 | 説明 | | --- | --- | --- | | folderName | string | 作成するフォルダの名前。フォルダ名には制限があります。詳細はこちらを参照してください。 | | parentFolderId | string | このフォルダが作成される親Boxフォルダ。 | | accessToken | string | 省略可 - accessTokenが送信された場合は、Box APIコールにその値が使用されます。そうでない場合は、デフォルトのサービスアカウントの資格情報が使用されます。 | 戻り値: - `string`。作成されたフォルダのBoxフォルダIDが返されます。 - フォルダが作成されなかった場合は`null`が返されます。この場合、`mostRecentError`で詳細を確認してください。 ### createFolderForRecordId | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | id | Boxフォルダの作成に使用されるSalesforceレコードID。 | | folderNameOverride | string | デフォルトでは、レコード名がフォルダ名になります。別の名前を付ける場合は、ここでその値を送信します。 | | optCreateRootFolder | boolean | オブジェクトのルートフォルダが存在しない場合に、それを作成するかどうかを示すブール値。falseを送信した場合、ルートフォルダが存在しないと呼び出しは失敗します。 | 戻り値: - `string`。作成されたフォルダのBoxフォルダIDが返されます。 - フォルダが作成されなかった場合は`null`が返されます。この場合、`mostRecentError`で詳細を確認してください。 - SalesforceレコードがすでにBoxフォルダに関連付けられている場合、既存のBoxフォルダIDが返されます。 ### moveFolder | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | string | 移動するフォルダのBoxフォルダID。 | | newParentFolderId | string | 新しい親フォルダになるフォルダのBoxフォルダID。 | | accessToken | string | 省略可 - accessTokenを送信すると、その値がBox APIコールに使用されます。そうでない場合、デフォルトのサービスアカウント資格情報が使用されます。 | 戻り値: - フォルダが正常に移動された場合は`true`。 - フォルダが正常に移動されなかった場合は`false`。`mostRecentError`で詳細を確認してください。 ### getUrlForFolder | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | id | レコードのID。 | 戻り値: - 指定されたURLを含む`pageReference`オブジェクト。 - パラメータが正しくない場合は`null`。 ### createFolderForRecordIdFromTemplate | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | id | SalesforceレコードID。 | | templateFolderId | string | テンプレートにするソースフォルダ。 | | folderNameOverride | string | 新しいフォルダの名前の上書き。 | | optCreateRootFolder | boolean | ルートフォルダが存在しない場合に作成するかどうかを決定するフラグ。 | 戻り値: - 新しく作成された`folder Id`。 - パラメータが正しくない場合は`null`。 ## フォルダ関連付けメソッド ### getFolderAssociationsByRecordId | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | id | 返されるフォルダマッピングエントリが関連付けられるSalesforceレコードID。 | 戻り値: - 返されるリストは、このレコードに関連付けられているすべてのフォルダマッピングエントリのコレクションです。 - 一般に、フォルダマッピングエントリが存在しない場合は空のリストになりますが、状況によって`null`になる場合があります。 ### getFolderIdByRecordId | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | id | フォルダIDを取得するSalesforceレコードID。 | 戻り値: - `string`。渡されたSalesforceレコードIDに関連付けられたBoxフォルダIDが返されます。 ### getRecordIdByFolderId | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | string | BoxフォルダID。 | 戻り値: - `id`。渡されたBoxフォルダIDに関連付けられたSalesforceレコードIDが返されます。 ### createFolderAssociation | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | id | Boxフォルダに関連付けるSalesforceレコードID。 | | folderId | string | Salesforceレコードに関連付けるBoxフォルダID。 | 戻り値: - `box__FRUP__c`オブジェクト - エラーが発生した場合 (`mostRecentError`を確認)、返されるFRUPオブジェクトは`null`になります。このFRUPエントリは、`commitChanges`メソッドの呼び出し時にデータベースに挿入されます。このメソッドでは、同じフォルダの複数レコードへの関連付けやその逆の関連付けが許可されないため、他のフォルダの関連付けとの一貫性が保証されます。 ## コラボレーションメソッド Box for Salesforce Developer Toolkitによって作成されたコラボレーションは、コラボレータにコラボレーションメールを送信しません。Box for Salesforce統合に使用されるサービスアカウントのみがコラボレーションメールを受け取ります。 ### createCollaboration | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | string | コラボレーションを作成するBoxフォルダのID。 | | boxUserId | string | コラボレーションするBoxユーザーのID (boxUserIdまたはemailAddressのどちらか一方のみ必要)。 | | emailAddress | box.Toolkit.CollaborationType | Boxユーザーのメールアドレス。 | | collabType | string | コラボレーションのタイプ (CollaborationType列挙型の定義を参照)。 | | accessToken | string | 省略可 - 送信した場合、この値はBox APIコールの認証に使用されます。nullの場合、サービスアカウントの資格情報が使用されます。 | 戻り値: - `string`。作成されたBoxコラボレーションのIDが返されます。 - エラーが発生した場合は`null`が返されます。その場合、`mostRecentError`を確認してください。 ### createCollaborationOnRecord | パラメータ | 型 | 説明 | | --- | --- | --- | | userId | id | コラボレーションするSalesforceユーザーID。 | | recordId | id | コラボレーションするレコードフォルダのSalesforceレコードID。 | | collabType | box.Toolkit.CollaborationType | コラボレーションのタイプ (CollaborationType列挙型の定義を参照)。 | | optCreateFolder | boolean | SalesforceレコードIDに関連付けられたBoxフォルダがまだ存在しない場合に、それを作成するかどうかを示すブール値。ルートフォルダが存在しない場合は、ルートフォルダも作成されます。falseに設定した場合、フォルダがまだ存在しないと呼び出しが失敗します。 | 戻り値: - `string`。作成されたBoxコラボレーションのIDが返されます。 - エラーが発生した場合は`null`が返されます。その場合、`mostRecentError`を確認してください。 ### editCollaboration | パラメータ | 型 | 説明 | | --- | --- | --- | | collabId | string | コラボレーションID | | collabType | enum | Box.Toolkit.CollaborationType列挙型 | | accessToken | string | | 戻り値: - トランザクションが成功したかどうかを示すブール値。 - パラメータが正しくない場合は`false`。 ### deleteCollaboration | パラメータ | 型 | 説明 | | --- | --- | --- | | collabId | string | コラボレーションID | | accessToken | string | | 戻り値: - トランザクションが成功したかどうかを示すブール値。 - パラメータが正しくない場合は`false`。 ## メタデータ すべてのメソッドに対する詳細なエラーレスポンスについては、`toolkit.mostRecentError`の値を確認してください。 ### getBoxMetadataByFolderId このメソッドでは、[フォルダのメタデータインスタンスを取得エンドポイント](e://get-folders-id-metadata-id-id)を呼び出します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | string | メタデータを作成するBoxフォルダのID。 | | scope | string | メタデータテンプレートのスコープ。値は[global, enterprise]のいずれかです。 | | template_key | string | メタデータテンプレートの名前。 | 戻り値: - このフォルダ、スコープ、およびテンプレートキーに関連付けられた`FolderMetadata`レコード。カスタム値は、このオブジェクトの`keyValuePairs`変数で確認できます。 以下の場合は`null`。 - パラメータが正しくない - フォルダへのアクセス権限がない - メタデータカスケードポリシーが見つからない ### createBoxMetadataByFolderId このメソッドでは、[フォルダにメタデータインスタンスを作成](e://post-folders-id-metadata-id-id)エンドポイントを呼び出します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | string | メタデータを作成するBoxフォルダのID。 | | scope | string | メタデータテンプレートのスコープ。値は [global、enterprise][global, enterprise] のいずれかです。 | | template_key | string | メタデータテンプレートの名前。 | | keyValuePairs | List<KeyValuePair> | このクラスはマップとして機能します。Boxメタデータに送信する属性のキー/値ペアをリストとして指定します。キー/値のマッピングはAPIと同じパターンに従います。数値型'3000'および'Customer;Order'などの複数選択値は、コードサンプルに見られる通常のメタデータ値と同様に、valueフィールドで文字列入力として表されます。 | 戻り値: - 新しく作成された`FolderMetadata`オブジェクト。 以下の場合は`null`。 - パラメータが正しくない - フォルダへのアクセス権限がない - メタデータカスケードポリシーが見つからない ### updateBoxMetadataByFolderId [フォルダのメタデータインスタンスを更新](e://put-folders-id-metadata-id-id)エンドポイントを呼び出します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | string | メタデータを更新するBoxフォルダのID。 | | scope | string | メタデータテンプレートのスコープ。値は[global、enterprise][global, enterprise]のいずれかです。 | | template_key | string | メタデータテンプレートの名前。 | | mdUpdates | List<FolderMetadataUpdate> | メタデータの更新。操作、パス、および値を指定します。メタデータの更新レコードは、APIと同じパターンに従います。数値型 (3000) およびCustomer;Orderなどの複数選択値は、コードサンプルにおける通常のメタデータ値と同様に、valueフィールドで文字列入力として表されます。 | 戻り値: - 更新された`FolderMetadata`オブジェクト。 以下の場合は`null`。 - パラメータが正しくない - フォルダへのアクセス権限がない - メタデータカスケードポリシーが見つからない ### deleteBoxMetadataFolderId このメソッドでは、[フォルダからメタデータインスタンスを削除](e://delete-folders-id-metadata-id-id)エンドポイントを呼び出します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | string | メタデータを更新するBoxフォルダのID。 | | scope | string | メタデータテンプレートのスコープ。値は[global、enterprise][global, enterprise]のいずれかです。 | | template_key | string | メタデータテンプレートの名前。 | 戻り値: - トランザクションが成功したかどうかを示すブール値。 - パラメータが誤ったパラメータである場合またはメタデータが見つからない場合は、`false`が返されることがあります。 ### getMetadataCascadePolicyById このメソッドでは、[フォルダからメタデータカスケードポリシーを取得](e://get-metadata-cascade-policies-id)エンドポイントを呼び出します。このメソッドはIDを必要とするため、最初に`getMetadataCascadePoliciesByFolderId`メソッドを呼び出す必要があります。 | パラメータ | 型 | 説明 | | --- | --- | --- | | policyId | string | 取得するカスケードポリシーのID。 | 戻り値: - Boxから取得された`MetadataCascadePolicy`オブジェクト。 以下の場合は`null`。 - パラメータが正しくない - フォルダへのアクセス権限がない - メタデータカスケードポリシーが見つからない ### getMetadataCascadePoliciesByFolderId このメソッドでは、フォルダIDを指定し、[メタデータカスケードポリシーを取得](e://get-metadata-cascade-policies)エンドポイントを呼び出すことで、カスケードポリシーを取得します。 | パラメータ | 型 | 説明 | 必須 | | --- | --- | --- | --- | | folderId | string | どのフォルダのポリシーを返すかを指定します。これは、IDが0のルートフォルダでは使用できません。 | はい | | paginationMarker | string | 結果が返される開始位置のマーカー。マーカーベースのページネーションに使用されます。 | いいえ | | Offset | integer | レスポンスが開始される項目のオフセット。 | いいえ | | ownerEnterpriseId | string | メタデータカスケードポリシーを検索するEnterprise ID。指定されていない場合は、デフォルトで現在のEnterpriseに設定されます。 | いいえ | 戻り値: - Boxから取得された`MetadataCascadePolicy`オブジェクトのリスト。 以下の場合は`null`。 - パラメータが正しくない - フォルダへのアクセス権限がない - メタデータカスケードポリシーが見つからない ### createMetadataCascadePolicy このメソッドでは、BoxフォルダID、スコープ、テンプレートキーを指定し、[メタデータカスケードポリシーを投稿](e://post-metadata-cascade-policies)エンドポイントを呼び出すことで、カスケードポリシーを作成します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | string | メタデータカスケードポリシーを作成するBoxフォルダのID。 | | scope | string | メタデータカスケードポリシーのスコープ。値は [global、enterprise][global, enterprise] のいずれかです。 | | template_key | string | テンプレートキーの名前。 | 戻り値: - 新しく生成された`MetadataCascadePolicy`。 以下の場合は`null`。 - パラメータが正しくない - フォルダへのアクセス権限がない - メタデータカスケードポリシーの詳細が見つからない ### deleteMetadataCascadePolicy このメソッドでは、カスケードポリシーIDを指定し、[メタデータカスケードポリシーIDを削除](e://delete-metadata-cascade-policies-id)エンドポイントを呼び出すことで、カスケードポリシーを削除します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | policyId | string | 削除するカスケードポリシーのID。 | 戻り値: - トランザクションが成功したかどうかを示すブール値。 - パラメータが正しくない場合、フォルダへのアクセス権限がない場合、またはメタデータカスケードポリシーが見つからない場合は、`false`が返されます。 ### enableAppActivity このメソッドでは、アプリアクティビティに指定されたフォルダにメタデータを適用してカスケードすることで、そのフォルダを有効にします。 | パラメータ | 型 | 説明 | | --- | --- | --- | | folderId | string | メタデータを削除するBoxフォルダのID。 | 戻り値: - トランザクションが成功したかどうかを示すブール値。 - パラメータが正しくない場合は`false`。 ## SalesforceとSlack ### getIntegrationMappings このツールキットのメソッドでは、[統合マッピングを取得](e://get-integration-mappings-slack)エンドポイントを呼び出して既存のマッピングを取得します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | integration | String | Slackは、現在唯一サポートされている値です。 | | partnerItemId | String | 指定された統合側でマッピングされている項目のID。例: SlackチャンネルID。 | 戻り値: - `IntegrationMapping`オブジェクトのリスト。 - パラメータが正しくない場合、アクセス権限がない場合、または統合マッピングが見つからない場合は、`null`が返されます。 ### createIntegrationMapping このツールキットのメソッドでは、[統合マッピングを取得](e://get-integration-mappings-slack)エンドポイントを呼び出してマッピングを作成します。 Slackチャンネルにマッピングする場合、はデフォルト`FALSE`でに設定`access_management_disabled`されます。これにより、Slackチャンネルのメンバーリストに含まれていないコラボレータは自動的に削除されます。組織がBoxでの共有をどのように設定しているかに応じて、`TRUE`メソッドを使用して`setSlackChannelAccessManagementDisabled`を`access_ management_disabled`に設定するか、[グループ](https://support.box.com/hc/articles/360043694554-Creating-and-Managing-Groups)を使用することをお勧めします。これにより、Slackの設定に関係なく、どのユーザーも削除されなくなります。ファイルがSlackチャンネルにアップロードされると、コラボレーションはSlackに追加されるかSlackから削除されます。 | パラメータ | 型 | 説明 | | --- | --- | --- | | integration | String | Slackは、現在唯一サポートされている値です。 | | mapping | IntegrationMapping | Apex定義タイプIntegrationMapping。 | 戻り値: - トランザクションが成功したかどうかを示すブール値。 ### deleteIntegrationMapping このツールキットのメソッドでは、[統合マッピングを削除](e://delete-integration-mappings-slack-id)エンドポイントを呼び出してマッピングを削除します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | integration | String | Slackは、現在唯一サポートされている値です。 | | integrationMappingId | String | getIntegrationMappingsから取得されます。 | 戻り値: - トランザクションが成功したかどうかを示すブール値。 ### mapSfdcRecordToSlackChannel このツールキットのメソッドでは、上記の統合マッピングメソッドを使用し、以下の4種類のユースケースで使用できるラッパーを提供します。 1. SalesforceまたはSlackにマッピングが存在しない場合は、Box for Salesforceフォルダ構造にフォルダが作成され、そのフォルダをSlackチャンネルとリンクするための統合マッピングが作成されます。 2. Salesforceからのマッピングのみ存在する場合は、引き続きそのフォルダが使用され、場所は変更されません。そのフォルダをSlackチャンネルとリンクするための統合マッピングを作成します。 3. Slackからのマッピングのみ存在する場合は、引き続きそのフォルダが使用され、既存のフォルダを使用するためにSalesforceレコード用にFRUPレコードが作成されます。このフォルダは、Salesforceルートフォルダ外に存在する可能性があります。 4. SalesforceとSlackに既存のマッピングがあるものの、相互に関連付けられていない場合は、`Toolkit.mostRecentError`またはフローアクション内でエラーがスローされ、マッピングがすでに存在することが示されます。 このメソッド/呼び出し可能なアクションは、Box for Salesforceパッケージの`Create Box Folder/Slack Channel Mapping`で提供されるフローテンプレートで使用されています。 Slackチャンネルにマッピングする場合、はデフォルト`FALSE`でに設定`access_management_disabled`されます。これにより、Slackチャンネルのメンバーリストに含まれていないコラボレータは自動的に削除されます。組織がBoxでの共有をどのように設定しているかに応じて、`TRUE`メソッドを使用して`setSlackChannelAccessManagementDisabled`を`access_ management_disabled`に設定するか、[グループ](https://support.box.com/hc/articles/360043694554-Creating-and-Managing-Groups)を使用することをお勧めします。これにより、Slackの設定に関係なく、どのユーザーも削除されなくなります。ファイルがSlackチャンネルにアップロードされると、コラボレーションはSlackに追加されるかSlackから削除されます。 | パラメータ | 型 | 説明 | | --- | --- | --- | | recordId | ID | SalesforceレコードID。 | | slackChanneld | String | | | slackWorkspaceOrOrgId | String | Box for Slackが組織全体でインストールされている場合は、オーガナイゼーションID (E1234567など) またはワークスペースID (T5555555など) を指定します。 | 戻り値: - トランザクションが成功したかどうかを示すブール値。 ### setSlackChannelAccessManagementDisabled このツールキットのメソッドでは、[統合マッピングを更新](e://put-integration-mappings-slack-id)エンドポイントを呼び出して、アクセス管理の非アクティブ化設定を更新します。 このメソッド/呼び出し可能なアクションは、Box for Salesforceパッケージの`Create Box Folder/Slack Channel Mapping`で提供されるフローテンプレートで使用されています。 | パラメータ | 型 | 説明 | | --- | --- | --- | | channelId | String | | | disabled | Boolean | 基になるBox項目に対するチャンネルメンバーのアクセスを自動で管理する必要があるかどうかを示します。チャンネルのタイプによっては、アクセスがコラボレーションまたは共有リンクの作成により管理されます。 | 戻り値: - トランザクションが成功したかどうかを示すブール値。 ## Box Sign ### sendSignRequests このメソッドでは、[署名リクエストを作成](e://post-sign-requests)エンドポイントを呼び出して、署名用ドキュメントを送信します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | requests | List<BoxSignRequest> | 署名者、ファイル、署名リクエストの構成を含むBox Signリクエストオブジェクトのリスト。 | **戻り値:** `BoxSignResponse`オブジェクト (処理されるリクエストごとに1つ) のリスト。各レスポンスには、署名リクエストのID、ステータス、エラー情報 (ある場合) が含まれます。 以下の場合、`BoxSignResponse`によってエラーの詳細が返されます。 - パラメータが正しくない - ファイルへのアクセス権限がない - ファイルのアップロードに失敗した - Box Sign APIからエラーが返された ## Box Hubs ### Box Hubsの管理 #### getHubById このメソッドでは、[IDを指定してHubを取得](e://get-hubs-id)エンドポイントを呼び出して、特定のHubを取得します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | hubId | string | 取得するHubのID。 | **戻り値:** - Hubの詳細およびメタデータを含むHubオブジェクト。 以下の場合は`HubsToolkitException`。 - Hub IDが空またはnullである - Hubへのアクセス権限がない - Hubが見つからない #### getAllHubs このメソッドでは、[すべてのHubを取得](e://get-hubs)エンドポイントを呼び出して、すべてのHubのリストを取得します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | limitCount | integer | 省略可 - 返されるHubの最大数。 | | marker | string | 省略可 - 追加の結果を取得する場合のページネーションのマーカー。 | **戻り値:** - Hubのリストとページネーションの情報を含む`HubsList`オブジェクト。 以下の場合は`HubsToolkitException`。 - Hubへのアクセス権限がない - APIリクエストが失敗した #### getEnterpriseHubs このメソッドでは、[企業のHubを取得](e://get-enterprise-hubs)エンドポイントを呼び出して、企業レベルのHubを取得します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | limitCount | integer | 省略可 - 返されるHubの最大数。 | | marker | string | 省略可 - 追加の結果を取得する場合のページネーションのマーカー。 | **戻り値:** - 企業のHubのリストとページネーションの情報を含む`HubsList`オブジェクト。 以下の場合は`HubsToolkitException`。 - 企業のHubへのアクセス権限がない - APIリクエストが失敗した #### createHub このメソッドでは、[Hubを作成エンドポイント](e://post-hubs)を呼び出して、新しいHubを作成します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | title | string | 必須 - Hubのタイトル (最大50文字)。 | | description | string | 省略可 - Hubの説明。 | **戻り値:** - 新しく作成されたHubの詳細を含むHubオブジェクト。 以下の場合は`HubsToolkitException`。 - タイトルが空またはnullである - タイトルが50文字を超えている - Hubを作成するためのアクセス権限がない - APIリクエストが失敗した #### updateHub このメソッドでは、[Hubを更新エンドポイント](e://put-hubs-id)を呼び出して、既存のHubを変更します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | hubId | string | 必須 - 更新するHubのID。 | | updateRequest | HubUpdateRequest | 必須 - 更新するフィールドを含むオブジェクト。 | **戻り値:** - 更新されたHubの詳細を含むHubオブジェクト。 以下の場合は`HubsToolkitException`。 - Hub IDが空またはnullである - 更新リクエストがnullである - タイトルが50文字を超えている - Hubへのアクセス権限がない - APIリクエストが失敗した #### copyHub このメソッドでは、[Hubをコピーエンドポイント](e://post-hubs-id-copy)を呼び出して、既存のHubのコピーを作成します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | hubId | string | 必須 - コピーするHubのID。 | | title | string | 省略可 - コピーしたHubのタイトル (最大50文字)。 | | description | string | 省略可 - コピーしたHubの説明。 | **戻り値:** - 新しくコピーして作成されたHubの詳細を含むHubオブジェクト。 以下の場合は`HubsToolkitException`。 - Hub IDが空またはnullである - タイトルが50文字を超えている - 元のHubへのアクセス権限がない - APIリクエストが失敗した ### Box Hubコラボレーション #### createUserCollaboration このメソッドでは、[Hubコラボレーションを作成](e://post-hub-collaborations)エンドポイントを呼び出して、Hubにユーザーを追加します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | hubId | string | 必須 - HubのID。 | | userId | string | 必須 - 追加するユーザーのID。 | | role | string | 必須 - Hub内のユーザーのロール。 | **戻り値:** - コラボレーションの詳細を含む`HubCollaboration`オブジェクト。 以下の場合は`HubsToolkitException`。 - Hub IDが空またはnullである - ユーザーIDが空またはnullである - ロールが空またはnullである - Hubへのアクセス権限がない - APIリクエストが失敗した #### createHubCollaboration このメソッドでは、[Hubコラボレーションを作成](e://post-hub-collaborations)エンドポイントを呼び出して、Hubにコラボレーションを追加します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | request | HubCollaborationRequest | 必須 - Hubの参照などのコラボレーションの詳細を含み、情報でアクセス可能なオブジェクト。 | **戻り値:** - コラボレーションの詳細を含む`HubCollaboration`オブジェクト。 以下の場合は`HubsToolkitException`。 - コラボレーションリクエストがnullである - IDによるHubの参照がない - Hubへのアクセス権限がない - APIリクエストが失敗した #### getHubCollaborations このメソッドでは、[Hubコラボレーションを取得](e://get-hub-collaborations)エンドポイントを呼び出して、Hubのコラボレーションを取得します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | hubId | string | 必須 - HubのID。 | | limitCount | integer | 省略可 - 返されるコラボレーションの最大数。 | | marker | string | 省略可 - 追加の結果を取得する場合のページネーションのマーカー。 | **戻り値:** - コラボレーションのリストとページネーションの情報を含む`HubCollaborationsList`オブジェクト。 以下の場合は`HubsToolkitException`。 - Hub IDが空またはnullである - Hubへのアクセス権限がない - APIリクエストが失敗した #### updateHubCollaboration このメソッドでは、[Hubコラボレーションを更新](e://put-hub-collaborations-id)エンドポイントを呼び出して、コラボレーションを変更します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | collaborationId | string | 必須 - 更新するコラボレーションのID。 | | role | string | 必須 - コラボレーションの新しいロール。 | **戻り値:** - コラボレーションの詳細を含む`HubCollaboration`オブジェクト。 以下の場合は`HubsToolkitException`。 - コラボレーションIDが空またはnullである - ロールが空またはnullである - コラボレーションへのアクセス権限がない - APIリクエストが失敗した ### Box Hubの項目 #### addHubItem このメソッドでは、[Hubの項目を管理](e://post-hubs-id-manage-items)エンドポイントを呼び出して、Hubに項目を追加します。 | パラメータ | 型 | 説明 | | --- | --- | --- | | hubId | string | 必須 - HubのID。 | | itemId | string | 必須 - 追加する項目のID。 | | itemType | string | 必須 - 項目のタイプ (例: file、folder)。 | **戻り値:** - 項目の管理操作の結果を含む`HubItemsManageResponse`オブジェクト。 以下の場合は`HubsToolkitException`。 - Hub IDが空またはnullである - 項目IDが空またはnullである - 項目タイプが空またはnullである - Hubへのアクセス権限がない - APIリクエストが失敗した **Source:** [https://ja.developer.box.com/guides/tooling/salesforce-toolkit/methods/](https://ja.developer.box.com/guides/tooling/salesforce-toolkit/methods/) --- ### メタデータ **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータ メタデータを使用すると、ユーザーやアプリケーションは、ファイルやフォルダに関連付けられたカスタムデータを定義、格納できます。 メタデータは、ファイルまたはフォルダに割り当てられているキー/値ペアで構成されます。たとえば、重要な契約には、clientNumber… # メタデータ メタデータを使用すると、ユーザーやアプリケーションは、ファイルやフォルダに関連付けられたカスタムデータを定義、格納できます。 メタデータは、ファイルまたはフォルダに割り当てられているキー/値ペアで構成されます。たとえば、重要な契約には、`clientNumber: 820183`と`clientName: bioMedicalCorp`のキー/値ペアが使用されている場合があります。 ## メタデータの用語 メタデータを操作するには、開発者は異なる数種類のリソースを使用する必要があります。 - **テンプレート:** [メタデータテンプレート](g://metadata/templates)には、ファイルに割り当てることができる再利用可能な一連のキー/値ペアが記載されています。たとえば、`invoiceData`テンプレートでは、請求書に関するデータを保持するため、請求書IDと顧客IDのフィールドが設定されています。 - **フィールド:** [メタデータテンプレートフィールド](g://metadata/fields)には、メタデータテンプレート内の特定のデータが記載されています。たとえば、請求書のIDを`invoiceData`テンプレートの`id`フィールドとして表すことができます。 - **インスタンス:** [メタデータインスタンス](g://metadata/instances)には、各フィールドに割り当てられている値など、テンプレートとファイルやフォルダ間の関係が記載されています。たとえば、ユーザーは、`invoiceData`メタデータテンプレートをファイルに割り当て、2つの値を指定しています (1つは請求書ID、もう1つは顧客ID)。特定のファイルまたはフォルダには最大100個のテンプレートを割り当てることができます。 - **カスケードポリシー**: [メタデータカスケードポリシー](g://metadata/cascades)には、フォルダに適用されているメタデータインスタンスを、そのフォルダ内の項目にどのように適用するかが記載されています。たとえば、ユーザーは、同じ`invoiceData`メタデータテンプレートをプロジェクトフォルダに割り当てると (2つの値を含む)、そのプロジェクトフォルダ内のすべてのファイルとフォルダに自動的に適用できます。 - **クエリ:** [メタデータクエリ](g://metadata/queries)を使用すると、ファイルやフォルダに設定されているメタデータを検索して、そのファイルやフォルダを見つけることができます。たとえば、特定のIDが付いた請求書についてすべてのファイルを検索するには、クエリで、その請求書に適用されている`invoiceData`テンプレートと値`id = :id` (ここで、`:id`は請求書の値) が設定されたすべてのファイルとフォルダを検索することができます。 ## メタデータの目的 メタデータは多くの目的で使用できます。会社がマーケティングチーム向けにデジタルアセットを効率よく編成する場合もあれば、開発者がワークフローや承認の促進のような高度なコンテンツ機能を提供する場合もあります。 たとえば、`marketingCollateral`テンプレートでは、特定のマーケティングコンテンツを使用する状況とタイミングを定義できます。ユーザーは、Boxウェブアプリでテンプレートのレプリゼンテーションを確認すると同時に、ファイルのプレビューに移動できます。 詳細については、[Boxコミュニティの記事](https://support.box.com/hc/ja/articles/360044196173-%E3%83%A1%E3%82%BF%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%BD%BF%E7%94%A8)を参照してください。 **Source:** [https://ja.developer.box.com/guides/metadata/](https://ja.developer.box.com/guides/metadata/) --- ### メタデータインスタンス **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータインスタンス メタデータインスタンスには、メタデータテンプレートとファイルやフォルダ間の関係が記載されています。これには、テンプレートの各フィールドに割り当てられている値が含まれます。 たとえば、ユーザーは、invoiceData… # メタデータインスタンス [メタデータインスタンス](g://metadata/instances)には、[メタデータテンプレート](g://metadata/templates)とファイルやフォルダ間の関係が記載されています。これには、テンプレートの各フィールドに割り当てられている値が含まれます。 たとえば、ユーザーは、`invoiceData`メタデータテンプレートをファイルに割り当て、2つの値を指定しています。この場合、1つは請求書ID用、もう1つは顧客ID用です。 特定のファイルまたはフォルダには最大100個のテンプレートを割り当てることができます。 **Source:** [https://ja.developer.box.com/guides/metadata/instances/](https://ja.developer.box.com/guides/metadata/instances/) --- ### メタデータカスケードポリシー **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータカスケードポリシー メタデータカスケードポリシーは、フォルダに適用されたメタデータインスタンスをそのフォルダ内の項目にどのように適用するかを記述したものです。たとえば、ユーザーがプロジェクトフォルダに同じinvoiceData… # メタデータカスケードポリシー メタデータカスケードポリシーは、フォルダに適用された[メタデータインスタンス](g://metadata/instances)をそのフォルダ内の項目にどのように適用するかを記述したものです。たとえば、ユーザーがプロジェクトフォルダに同じ`invoiceData`メタデータテンプレートを割り当てると、そのプロジェクトフォルダ内のすべてのファイルとフォルダに自動的に適用することができます。 各ポリシーで指定するメタデータテンプレートインスタンスとフォルダはそれぞれ1つだけです。 ## 有効化と権限 メタデータカスケードポリシーを使用するには、会社の管理者が会社全体に対してそのポリシーを有効化する必要があります。**管理コンソール**で [**Enterprise設定**]、[**コンテンツと共有**]、[**フォルダレベルメタデータのカスケード**] の順に選択します。[**構成の編集**] ボタンをクリックして、フォルダにカスケードポリシーを適用できるユーザーを選択します。 フォルダの編集権限を持ち、カスケードポリシーを作成できるユーザーは、その特定のフォルダ用にメタデータカスケードポリシーを作成できます。 ## 制限 ファイルのアップロードからメタデータの適用まで、若干の遅延が生じます。この遅延の程度はフォルダ内の項目の数によって大きく変わります。メタデータカスケード操作は非同期で実行され、現時点では、すべてのメタデータがいつすべてのファイルにカスケードされたかを確認する方法はありません。 **Source:** [https://ja.developer.box.com/guides/metadata/cascades/](https://ja.developer.box.com/guides/metadata/cascades/) --- ### メタデータカスケードポリシーのリストの取得 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータカスケードポリシーのリストの取得 フォルダのメタデータカスケードポリシーのリストを取得するには、folder_idを指定してGET /metadata_cascade_policies APIエンドポイントを呼び出します。 ページネーション このAPI… # メタデータカスケードポリシーのリストの取得 フォルダのメタデータカスケードポリシーのリストを取得するには、`folder_id`を指定して[`GET /metadata_cascade_policies`](e://get_metadata_cascade_policies) APIエンドポイントを呼び出します。 ## ページネーション このAPIでは、[マーカーベースのページネーション](g://api-calls/pagination/marker-based)が使用されており、レスポンスの本文で、より多くのテンプレートを使用できることを示す`next_marker`値を返すことができます。 **Source:** [https://ja.developer.box.com/guides/metadata/cascades/list/](https://ja.developer.box.com/guides/metadata/cascades/list/) --- ### メタデータカスケードポリシーの作成 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータカスケードポリシーの作成 メタデータテンプレートがフォルダに適用されたら、メタデータカスケードポリシーを作成できます。それには、ポリシーの適用先となるフォルダのfolder_idと、メタデータテンプレートのscopeおよびtemplateKeyを指定して、POST… # メタデータカスケードポリシーの作成 メタデータテンプレートがフォルダに適用されたら、メタデータカスケードポリシーを作成できます。それには、ポリシーの適用先となるフォルダの`folder_id`と、メタデータテンプレートの`scope`および`templateKey`を指定して、[`POST /metadata_cascade_policies`](e://post_metadata_cascade_policies) APIエンドポイントを呼び出します。 テンプレートの`scope`と`templateKey`を取得するには、[すべてのメタデータテンプレートのリストを取得](g://metadata/templates/list)するか、[ファイルのすべてのインスタンスのリストを取得](g://metadata/instances/list)します。 カスケードポリシーを作成できるのは、指定した`scope`と`templateKey`のフォルダにメタデータインスタンスがすでに適用されている場合のみです。 **Source:** [https://ja.developer.box.com/guides/metadata/cascades/create/](https://ja.developer.box.com/guides/metadata/cascades/create/) --- ### メタデータカスケードポリシーの削除 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータカスケードポリシーの削除 メタデータカスケードポリシーを削除するには、削除するポリシーのidを指定してDELETE /metadata_cascade_policies/:id APIエンドポイントを呼び出します。 ポリシーのid… # メタデータカスケードポリシーの削除 メタデータカスケードポリシーを削除するには、削除するポリシーの`id`を指定して[`DELETE /metadata_cascade_policies/:id`](e://delete_metadata_cascade_policies_id) APIエンドポイントを呼び出します。 ポリシーの`id`を取得するには、フォルダに対する[すべてのポリシーのリストを取得](g://metadata/cascades/list)します。 **Source:** [https://ja.developer.box.com/guides/metadata/cascades/delete/](https://ja.developer.box.com/guides/metadata/cascades/delete/) --- ### メタデータカスケードポリシーの取得 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータカスケードポリシーの取得 メタデータカスケードポリシーに関する情報を取得するには、ポリシーのidを指定してGET /metadata_cascade_policies/:id APIエンドポイントを呼び出します。 ポリシーのid… # メタデータカスケードポリシーの取得 メタデータカスケードポリシーに関する情報を取得するには、ポリシーの`id`を指定して[`GET /metadata_cascade_policies/:id`](e://get_metadata_cascade_policies_id) APIエンドポイントを呼び出します。 ポリシーの`id`を取得するには、フォルダに対する[すべてのポリシーのリストを取得](g://metadata/cascades/list)します。 **Source:** [https://ja.developer.box.com/guides/metadata/cascades/get/](https://ja.developer.box.com/guides/metadata/cascades/get/) --- ### メタデータクエリ **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータクエリ メタデータクエリを使用すると、ファイルやフォルダに追加されているメタデータを検索して、そのファイルやフォルダを見つけることができます。 たとえば、特定のID… # メタデータクエリ メタデータクエリを使用すると、ファイルやフォルダに追加されているメタデータを検索して、そのファイルやフォルダを見つけることができます。 たとえば、特定のIDが付いた請求書についてすべてのファイルを検索するには、クエリで、その請求書に適用されている`invoiceData`テンプレートと値`id = :id` (この場合、`:id`は請求書の値) が設定されたすべてのファイルとフォルダを検索することができます。 ## 認証 メタデータクエリAPIは、従来の[OAuth 2.0](g://authentication/oauth2)または[JWT](g://authentication/jwt)を使用して認証されたアプリケーションで使用できます。 **Source:** [https://ja.developer.box.com/guides/metadata/queries/](https://ja.developer.box.com/guides/metadata/queries/) --- ### メタデータクエリAPIの使用 **Type:** quick-start | **Category:** 検索 | **Section:** Developer Guides メタデータクエリAPIの使用 最後に、メタデータクエリAPIコールを作成します。このAPIコールの本文の例を以下に示します。 このAPIコールでは、以下の条件を満たすファイルIDが返されます。 Contact Roleテンプレートが適用されている departments… # メタデータクエリAPIの使用 最後に、[メタデータクエリAPIコール](e://post-metadata-queries-execute-read/)を作成します。このAPIコールの本文の例を以下に示します。 ``` { "from": "enterprise_22201764.contact_role", "query": "departments = :departments", "query_params": {"departments": "legal"}, "ancestor_folder_id": "0", "fields": ["id"] } ``` このAPIコールでは、以下の条件を満たすファイルIDが返されます。 - Contact Roleテンプレートが適用されている - departmentsの値がlegalである - ルートフォルダの下のいずれかの場所にある (「0」は`ancestor_folder_id`であるため) 以下に示すように、この結果、呼び出しは成功し、手順2でテンプレートを追加したファイルに関する情報が表示されます。 検索クエリを使用してコンテンツが見つかりました **Source:** [https://ja.developer.box.com/guides/search/quick-start/metadata-query-api/](https://ja.developer.box.com/guides/search/quick-start/metadata-query-api/) --- ### メタデータクエリの作成 **Type:** quick-start | **Category:** メタデータ | **Section:** Developer Guides … # メタデータクエリの作成 最後の手順として、ファイル/フォルダに追加されているメタデータに基づいてそのファイルおよびフォルダを見つけるためのクエリを作成する方法を見てみましょう。 [メタデータクエリ](g://metadata/queries)を使用すると、ファイルやフォルダに追加されているメタデータを検索して、そのファイルやフォルダを見つけることができます。この検索構文はSQLに似ており、強力な検索を実行するためにブール演算と比較演算子をサポートしています。 この例では、`customerInfo`メタデータテンプレートのインスタンスが適用されているファイルまたはファイルを検索するクエリを作成します。このリストを、預金総額が200,000ドルを超える顧客に属しているファイルに絞り込みます。 ``` curl -X POST https://api.box.com/2.0/metadata_queries/execute_read \ -H 'Authorization: Bearer <ACCESS_TOKEN>" ' \ -H 'Content-Type: application/json' \ -d '{ "from": "enterprise_123456.customerInfo", "fields": [ "name", "enterprise_123456.customerInfo.name" "enterprise_123456.customerInfo.tav" ], "query": "tav >= :value", "query_params": { "value": 200000 }, "ancestor_folder_id": "0" }' ``` このAPIにより、一致したファイルとフォルダのリストのほか、そのファイルのクエリに一致したメタデータが返されます。 ``` { "entries": [ { "type": "file", "id": "11111", "etag": "0", "metadata": { "enterprise_123456": { "customerInfo": { "name": "Box", "tav": 1000000, "$parent": "folder_12345,", "$scope": "enterprise_123456", "$template": "customerInfo", "$version": 1 } } } } ], "limit": 20, "next_marker": "AAAAAmVYB1FWec8GH6yWu2nwmanfMh07IyYInaa7DZDYjgO1H4KoLW29vPlLY173OKsci6h6xGh61gG73gnaxoS+o0BbI1/h6le6cikjlupVhASwJ2Cj0tOD9wlnrUMHHw3/ISf+uuACzrOMhN6d5fYrbidPzS6MdhJOejuYlvsg4tcBYzjauP3+VU51p77HFAIuObnJT0ff" } ``` このAPIはデフォルトで、ページあたり`20`個の項目を返しますが、マーカーベースのページネーションを使用すると、さらに多くの項目をリクエストできます。 メタデータクエリの詳細を確認する メタデータを使用してファイルにクエリを実行しました **Source:** [https://ja.developer.box.com/guides/metadata/quick-start/create-query/](https://ja.developer.box.com/guides/metadata/quick-start/create-query/) --- ### メタデータクエリフィルタ **Type:** guide | **Category:** 検索 | **Section:** Developer Guides メタデータクエリフィルタ GET /search APIでは、関連付けられたメタデータを使用して、検索結果にフィルタをかけることができます。mdfilters… # メタデータクエリフィルタ [`GET /search`](e://get_search) APIでは、関連付けられたメタデータを使用して、検索結果にフィルタをかけることができます。`mdfilters`クエリパラメータを使用すると、開発者はメタデータテンプレートとクエリの対象となる値を指定できます。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&mdfilters=%5B%7B%22scope%22%3A%22enterprise%22%2C%22templateKey%22%3A%22contract%22%2C%22filters%22%3A%7B%22category%22%3A%22online%22%7D%7D%5D" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); BoxMetadataFilter bmf = new BoxMetadataFilter(); bmf.setScope("enterprise"); bmf.setTemplateKey("contract"); bmf.setFilter("category", "online") searchParams.setMetadataFilter(bmf) PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` var filter = new { category = "online" }; var filters = new List<BoxMetadataFilterRequest>() { new BoxMetadataFilterRequest() { Scope = "enterprise", TemplateKey = "contract", Filters: filter } }; BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", mdFilters: filters); ``` ``` from boxsdk.object.search import MetadataSearchFilter, MetadataSearchFilters metadata_search_filter = MetadataSearchFilter(scope='enterprise', template_key='contract') metadata_search_filter.add_value_based_filter(field_key='category', value='online') metadata_search_filters = MetadataSearchFilters() metadata_search_filters.add_filter(metadata_search_filter) client.search().query("sales", metadata_filters=metadata_search_filters) ``` ``` client.search.query( 'sales', { mdfilters: [ { scope: 'enterprise', templateKey: 'contract', filters: { category: 'online' } } ] }) .then(results => { // ... }); ``` この例では、`enterprise.contract`メタデータが追加され、`category`フィールドが`online`に設定されている項目によって、クエリ`sales`に一致するコンテンツの検索にフィルタをかけます。 ## メタデータの概要 メタデータを使用すると、ユーザーやアプリケーションは、ファイルやフォルダに関連付けられたカスタムデータを定義、格納できます。 メタデータは、ファイルまたはフォルダに割り当てられているキー/値ペアで構成されます。たとえば、重要な契約には、`clientNumber: 820183`と`category: online`のキー/値ペアが使用されている場合があります。 `mdfilters`クエリパラメータを使用すると、開発者は、特定のメタデータが追加されているファイルとフォルダを検索できます。 メタデータテンプレートおよびインスタンスの詳細を確認する ## メタデータフィルタ構文 `mdfilters`パラメータに現在指定できるフィルタは1つだけですが、今後拡張される可能性があります。 各フィルタでは、フィルタをかけるメタデータテンプレートの`scope`および`templateKey`を定義します。 ``` [ { "scope": "enterprise", "templateKey": "contract", "filters": {} } ] ``` テンプレートの`scope`と`templateKey`を取得するには、会社の[すべてのメタデータテンプレートのリストを取得](g://metadata/templates/list)するか、[項目のすべてのメタデータインスタンスのリストを取得](g://metadata/instances/list)します。 テンプレートが定義されると、`filters`フィールドではいくつかの異なるフィルタ形式が受け入れられます。フィルタの形式は、フィルタとして使用するフィールドのタイプによって大きく異なります。 ### stringフィールドによるフィルタ `string`タイプのフィールドでフィルタをかけるには、フィルタでフィールドの`key`と、項目を検索する際に目的となる値を定義する必要があります。 ``` [ { "scope": "enterprise", "templateKey": "contract", "filters": { "category": "online" } } ] ``` この例では、`enterprise.contract`テンプレートのインスタンスが適用されていて、キー`category`のフィールドが値`online`に設定されているすべてのファイルとフォルダが検索されます。 ### floatフィールドによるフィルタ `float`タイプのフィールドでフィルタをかけるには、`gt` (より大きい) や `lt` (より小さい) の値を指定して範囲を定義する必要があります。厳密な値を検索する場合は、`gt`と`lt`の両方に同じ値を入力できます。 ``` [ { "scope": "enterprise", "templateKey": "contract", "filters": { "amount": { "gt": 10000, "lt": 20000 } } } ] ``` この例では、`enterprise.contract`テンプレートのインスタンスが適用されていて、キー`amount`のフィールドが`10000`以上`2000`以下の値に設定されているすべてのファイルおよびフォルダが検索されます。`gt`と`lt`はその値を含むことと、必ずしも両方を設定する必要がないことに注意してください。 数値に基づいてクエリを作成する場合は、-16777215~+16777215の範囲を超えないようにしてください。数値属性を使用したメタデータ検索では、インデックス値がFLOAT32として保存されます。結果として、-16777215~+16777215の整数は正確に表すことができます。この範囲外の数値を扱う処理では、精度が失われる場合があります。 ### dateフィールドによるフィルタ `date`タイプのフィールドでフィルタをかけるには、フィルタでフィールドの`key`と、項目の検索対象範囲を定義する必要があります。この範囲を定義するには、`gt` (より大きい) と`lt` (より小さい) の値を指定します。`gt`と`lt`はその値を含むことに注意してください。 ``` [ { "scope": "enterprise", "templateKey": "contract", "filters": { "expirationDate": { "gt": "2016-08-01T00:00:00Z", "lt": "2017-08-01T00:00:00Z" } } } ] ``` この例では、`enterprise.contract`テンプレートのインスタンスが適用されていて、`expirationDate`が`2016-08-01T00:00:00Z`から`2017-08-01T00:00:00Z`までの日付に設定されているファイルとフォルダがすべて検索されます。 ### enumフィールドによるフィルタ `enum`タイプのフィールドでフィルタをかけるには、フィルタでフィールドの`key`と、項目を検索する際に目的となる値を定義する必要があります。 ``` [ { "scope": "enterprise", "templateKey": "contract", "filters": { "category": "online" } } ] ``` この例では、`enterprise.contract`テンプレートのインスタンスが適用されていて、キー`category`のフィールドが値`online`に設定されているすべてのファイルとフォルダが検索されます。 ### multiSelectフィールドによるフィルタ `multiSelect`タイプのフィールドでフィルタをかけるには、フィルタでフィールドの`key`と、項目の検索で対象とする可能性がある値を定義する必要があります。検索を実行すると、クエリでは基本的に`OR`演算が実行され、指定した値のいずれかがこのフィールドと一致するテンプレートが取得されます。 ``` [ { "scope": "enterprise", "templateKey": "contract", "filters": { "category": [ "online", "enterprise" ] } } ] ``` この例では、`enterprise.contract`テンプレートのインスタンスが適用されていて、キー`category`のフィールドが値`online`または`enterprise`に設定されているすべてのファイルとフォルダが検索されます。 **Source:** [https://ja.developer.box.com/guides/search/metadata-filters/](https://ja.developer.box.com/guides/search/metadata-filters/) --- ### メタデータテンプレート **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータテンプレート メタデータテンプレートには、ファイルまたはフォルダに割り当てることができる一連のキー/値ペアが記載されています。 たとえば、invoiceDataテンプレートでは、請求書に関するデータを保持するため、請求書IDと顧客ID… # メタデータテンプレート メタデータテンプレートには、ファイルまたはフォルダに割り当てることができる一連のキー/値ペアが記載されています。 たとえば、`invoiceData`テンプレートでは、請求書に関するデータを保持するため、請求書IDと顧客IDのフィールドが設定されています。 ファイルまたはフォルダには、`marketingCollateral`インスタンスや`retentionPolicy`インスタンスなど、複数の異なるテンプレート[インスタンス](g://metadata/instances)を関連付けることができます。 ## メタデータのスコープ メタデータテンプレートは、2つの異なるグループ、つまり**スコープ**にグループ化されます。 メタデータのスコープの詳細を確認する ## 権限と制限 テンプレートは企業あたり500個までに制限されています。 メタデータテンプレートの作成は、管理者権限を持つユーザーに制限されています。つまり、管理者、または管理者から**会社のメタデータテンプレートを作成、編集する**権限が付与されている共同管理者だけがウェブアプリまたはAPIを使用してテンプレートを管理できます。 **Source:** [https://ja.developer.box.com/guides/metadata/templates/](https://ja.developer.box.com/guides/metadata/templates/) --- ### メタデータテンプレートに関する情報を確認する **Type:** quick-start | **Category:** 検索 | **Section:** Developer Guides メタデータテンプレートに関する情報を確認する API… # メタデータテンプレートに関する情報を確認する APIを使用してメタデータテンプレートを作成し、成功を示すレスポンスが返ってきた場合は、この手順をスキップできます。 管理コンソールでメタデータテンプレートを作成した場合は、**会社のメタデータテンプレートを作成、編集する**権限を持つ管理者または共同管理者の[アクセストークン](g://authentication/tokens)を取得する必要があります。手順1で説明したとおり、これらの要件を満たすトークンを取得するには、管理者または共同管理者としてログインし、[開発者コンソール](https://account.box.com/developers/console)でアプリケーションを見つけて、[**構成**] タブの [**開発者トークンを生成**] をクリックする方法が最も簡単です。 以下に示すように、このトークンを使用して、[企業のすべてのメタデータテンプレートのリストを取得エンドポイント](e://get-metadata-templates-enterprise/)に対してAPIコールを実行すると、テンプレートに関する情報をレスポンス内で確認できます。特に、`scope`と`templateKey`に注意してください。 テンプレートに関する詳細を取得しました **Source:** [https://ja.developer.box.com/guides/search/quick-start/locate-template-info/](https://ja.developer.box.com/guides/search/quick-start/locate-template-info/) --- ### メタデータテンプレートのスコープ **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータテンプレートのスコープ メタデータテンプレートは、2つの異なるグループ、つまりスコープにグループ化されます。 global: 所属する会社に関係なく、Box… # メタデータテンプレートのスコープ メタデータテンプレートは、2つの異なるグループ、つまり**スコープ**にグループ化されます。 - **`global`**: 所属する会社に関係なく、Boxを使用するすべてのユーザーが使用できるテンプレートのグループ。たとえば、追加のスキーマを関連付けずに自由形式のキー/値の`string`ペアを配置する場所として使用される`global.properties`テンプレートがあります。 - **`enterprise`または**`enterprise_*`: 社内のユーザーによって定義されたテンプレートのグループ。これらのテンプレートは、管理者がウェブアプリケーションで作成したものか、アプリケーションがAPIを使用して作成したものです。認証済みユーザーの企業内のテンプレートにアクセスまたは作成する場合は、省略形の`enterprise`を使用できます。別の企業に属するテンプレートにアクセスする場合は (例: 他の企業に属するファイルのメタデータにアクセスする場合)、`enterprise_*`スコープを使用します (`*`はテンプレートが属する企業のIDです)。 # 権限 `global`スコープ内ではメタデータテンプレートを作成できないことと、ユーザーの会社内で作成されたメタデータテンプレートにアクセスできるのはその会社へのアクセス権限を持つユーザーのみであることに注意してください。 **Source:** [https://ja.developer.box.com/guides/metadata/scopes/](https://ja.developer.box.com/guides/metadata/scopes/) --- ### メタデータテンプレートの作成 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータテンプレートの作成 メタデータテンプレートを作成するには、scope、displayName、および必要に応じて一連のfieldsをPOST /metadata_templates/schema APIに渡します。 メタデータテンプレートは、enterprise… # メタデータテンプレートの作成 メタデータテンプレートを作成するには、`scope`、`displayName`、および必要に応じて一連の`fields`を[`POST /metadata_templates/schema`](e://post_metadata_templates_schema) APIに渡します。 メタデータテンプレートは、`enterprise`スコープのみに作成できます。`global`スコープの場合はテンプレートを作成できません。 # 管理者権限が必須 メタデータテンプレートの作成は、管理者権限を持つユーザーに制限されています。つまり、管理者、または管理者から**会社のメタデータテンプレートを作成、編集する**権限が付与されている共同管理者だけがウェブアプリまたはAPIを使用してテンプレートを管理できます。 ## テンプレートフィールド `fields`属性は、ユーザーがテンプレートで入力できる個々のフィールドのセットを表します。たとえば、`customer`テンプレートに`string`タイプの`name`フィールドがあるとします。 テンプレートフィールドは、`string`、`enum`、`float`、`date`、`enum`、または`multiSelect`タイプのいずれかになります。各フィールドには少なくとも`type`、`displayName`、および`key`が必要です。 ``` { "scope": "enterprise", "displayName": "Customer", "fields": [ { "type": "string", "key": "name", "displayName": "Name" } ] } ``` `enum`および`multiSelect`フィールドタイプは、ユーザーが項目のリストからそれぞれ1つまたは複数のオプションを選択できるドロップダウンリストを表します。 ``` { "scope": "enterprise", "displayName": "Customer", "fields": [ { "type": "enum", "key": "industry", "displayName": "Industry", "options": [ {"key": "Technology"}, {"key": "Healthcare"}, {"key": "Legal"} ] } ] } ``` メタデータテンプレートフィールドの詳細を確認する ## テンプレートキー メタデータテンプレートが作成されると、`templateKey`を明示的に指定した場合を除き、テンプレートの`displayName`から自動的に`templateKey`が生成されます。テンプレートキーを作成する際に、名前に含まれるスペースと規格外の文字は削除され、文字列はキャメルケースに変換されます。 たとえば、`Test Name (with-special_) Characters`という名前のメタデータテンプレートの`templateKey`は`testNameWithspecialCharacters`になります。 その後、このテンプレートキーは、テンプレートの情報を取得したり、項目にテンプレートを割り当てたりするためのAPIリクエストを実行するときに使用されます。 **Source:** [https://ja.developer.box.com/guides/metadata/templates/create/](https://ja.developer.box.com/guides/metadata/templates/create/) --- ### メタデータテンプレートの作成 **Type:** quick-start | **Category:** 検索 | **Section:** Developer Guides メタデータテンプレートの作成 新しいメタデータテンプレートを作成するには、管理コンソールを使用する方法とAPIで管理者のアクセストークンを使用する方法の… # メタデータテンプレートの作成 新しいメタデータテンプレートを作成するには、管理コンソールを使用する方法とAPIで管理者のアクセストークンを使用する方法の2とおりあります。使用するメタデータテンプレートをすでに作成している場合は、次の手順に進むことができます。 ## 管理コンソール 管理コンソールでテンプレートを作成するには、次の場所に移動します。 [**管理コンソール**] > [**コンテンツ**] タブ > [**メタデータ**] > [**新規作成**] メタデータは、Business Plus以上のアカウント向けの機能です。アカウントをアップグレードするには、Boxアカウントチームまでお問い合わせください。 [**新規作成**] を選択すると、以下に示す、新しいテンプレートを作成するためのフォームが表示されます。[**ドロップダウン - 単一選択**] 形式を選択します。 [ドロップダウン - 複数選択] 形式を選択すると、このクイックスタートの後の手順でクエリの構造が変わります。 ## API APIを使用してメタデータテンプレートを作成するには、**会社のメタデータテンプレートを作成、編集する**権限を持つBox管理者または共同管理者に関連付けられた[アクセストークン](g://authentication/tokens)が必要です。トークンが誰に関連付けられているかがわからない場合は、[現在のユーザーを取得エンドポイント](e://get-users-me)に対してAPIコールを実行してください。これらの要件を満たすトークンを取得するには、管理者または共同管理者としてログインし、[開発者コンソール](https://account.box.com/developers/console)でアプリケーションを見つけて、[**構成**] タブの [**開発者トークンを生成**] をクリックする方法が最も簡単です。[開発者トークン](g://authentication/tokens/developer-tokens)は、必ず、このボタンがクリックされたときに開発者コンソールにログインしているユーザーに関連付けられます。 [Postman](https://postman.com/)および[Box Postmanコレクション](g://tooling/postman)を使用している場合に、上記の管理コンソールを使用して作成したのと同じメタデータテンプレートを作成するAPIコールの例を以下に示します。 [ドロップダウン - 単一選択] 以外のテンプレート形式を使用する場合は、APIコールの本文が上記の例とは異なるため、Boxのリファレンスドキュメントを確認してください。 このAPIコールに対するレスポンスでは、後で必要になる重要な情報が示されます。UIを使用してテンプレートを作成した場合は、この情報の取得方法を次の手順で確認してください。 メタデータテンプレートを作成しました **Source:** [https://ja.developer.box.com/guides/search/quick-start/create-metadata-template/](https://ja.developer.box.com/guides/search/quick-start/create-metadata-template/) --- ### メタデータテンプレートの削除 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータテンプレートの削除 メタデータテンプレートを削除するには、DELETE /metadata_templates/enterprise/:templateKey/schema APIを呼び出します。 このAPI… # メタデータテンプレートの削除 メタデータテンプレートを削除するには、[`DELETE /metadata_templates/enterprise/:templateKey/schema`](e://delete_metadata_templates_id_id_schema) APIを呼び出します。 このAPIは、テンプレートが正常に削除された場合に、レスポンスの本文がない`204 No Content` APIレスポンスを返します。また、すべてのファイルおよびフォルダからすべてのテンプレートインスタンスを削除します。 削除できるのは、`enterprise`スコープ内に作成されたテンプレートのみです。 # 管理者権限が必須 メタデータテンプレートの削除は、管理者権限を持つユーザーに制限されています。つまり、管理者、または管理者から**会社のメタデータテンプレートを作成、編集する**権限が付与されている共同管理者だけがウェブアプリまたはAPIを使用してテンプレートを管理できます。 **Source:** [https://ja.developer.box.com/guides/metadata/templates/delete/](https://ja.developer.box.com/guides/metadata/templates/delete/) --- ### メタデータテンプレートの取得 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータテンプレートの取得 メタデータテンプレートに関する情報を取得するには、テンプレートの名前とスコープ、またはテンプレートの識別子を使用します。 認証済みユーザーが取得できるのは、globalスコープまたはenterprise_:idスコープ (:idは会社のID… # メタデータテンプレートの取得 メタデータテンプレートに関する情報を取得するには、テンプレートの名前とスコープ、またはテンプレートの識別子を使用します。 認証済みユーザーが取得できるのは、`global`スコープまたは`enterprise_:id`スコープ (`:id`は会社のID) の中で[スコープ](g://metadata/scopes)が設定されたメタデータテンプレートに関する情報のみです。 ## 名前を指定してメタデータテンプレートを取得 名前を指定してメタデータテンプレートを取得するには、テンプレートの`scope`と`templateKey`を指定して[`GET /metadata_templates/:scope/:templateKey/schema`](e://get_metadata_templates_id_id_schema) APIエンドポイントを呼び出します。 テンプレートの`scope`と`templateKey`を取得するには、[すべてのメタデータテンプレートのリストを取得](g://metadata/templates/list)するか、[項目のすべてのインスタンスのリストを取得](g://metadata/instances/list)します。 ## IDを指定してメタデータテンプレートを取得 IDを指定してメタデータテンプレートを取得するには、テンプレートの`id`を[`GET /metadata_templates/:id`](e://get_metadata_templates_id) APIエンドポイントに渡す必要があります。 テンプレートの`id`を取得するには、[すべてのメタデータテンプレートのリストを取得](g://metadata/templates/list)するか、[項目のすべてのインスタンスのリストを取得](g://metadata/instances/list)します。 **Source:** [https://ja.developer.box.com/guides/metadata/templates/get/](https://ja.developer.box.com/guides/metadata/templates/get/) --- ### メタデータテンプレートの更新 **Type:** quick-start | **Category:** メタデータ | **Section:** Developer Guides … # メタデータテンプレートの更新 既存のメタデータテンプレートの更新方法を見てみましょう。 メタデータテンプレートの更新は、テンプレート自体を直接変更するのではなく、**操作**を利用して実行されます。この方法では、ファイルおよびフォルダにすでに適用されている既存のメタデータインスタンスを更新できます。 テンプレートの更新の詳細を確認する この場合は、`Name`フィールドが少しあいまいであることを認識しているため、`customerInfo`テンプレートの`Name`フィールドを`Company Name`に変更したいとしましょう。`editField`操作を使用することで、テンプレートと、ファイルまたはフォルダに適用されている可能性のあるテンプレートのすべてのインスタンスのフィールドの`displayName`および`key`を変更できます。 ``` curl -X PUT https://api.box.com/2.0/metadata_templates/enterprise/blueprintTemplate/schema \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '[ { "op": "editField", "fieldKey": "name", "data": { "key": "company_name", "displayName": "Company Name" } } ]' ``` ``` var updates = new List<BoxMetadataTemplateUpdate>() { new BoxMetadataTemplateUpdate() { Op = MetadataTemplateUpdateOp.editField, FieldKey = "name", Data = new { key = "company_name", displayName = "Company Name" } } }; BoxMetadataTemplate updatedTemplate = await client.MetadataManager .UpdateMetadataTemplate(updates, "enterprise", "customerData"); ``` ``` List<MetadataTemplate.FieldOperation> updates = new ArrayList<MetadataTemplate.FieldOperation>(); String editField = "{\"op\":\"editField\",\"fieldKey\":\"name\",\"data\":{\"key\":\"company_name\",\"displayName\":\"Company Name\"}}"; updates.add(new MetadataTemplate.FieldOperation(editField)); MetadataTemplate.updateMetadataTemplate(api, "enterprise", "customerData", updates); ``` ``` template = client.metadata_template('enterprise', 'customerData') updates = template.start_update() updates.edit_field('name', key='company_name', display_name="Company Name") template.update_info(updates) ``` ``` var operations = [ { op: 'editField', fieldKey: 'name', data: { key: 'company_name', displayName: "Company Name" } } ]; client.metadata.updateTemplate( 'enterprise', 'customerData', operations ).then(template => { //.. }); ``` このAPIにより、更新されたメタデータテンプレートが返されます。 ``` { "id": "100ac693-a468-4b37-9535-05984b804dc2", "type": "metadata_template", "templateKey": "customerInfo", "scope": "enterprise_34567", "displayName": "Customer Info", "hidden": false, "copyInstanceOnItemCopy": false, "fields": [ { "id": "5c6a5906-003b-4654-9deb-472583fc2930", "type": "string", "key": "company_name", "displayName": "Company Name", "hidden": false }, { "id": "cf3eb5b8-52ef-456c-b175-44354a27e289", "type": "enum", "key": "industry", "displayName": "Industry", "options": [ {"key": "Technology"}, {"key": "Healthcare"}, {"key": "Legal"} ], "hidden": false }, { "id": "5c6a5906-4654-9deb-003b-472583fc2930", "type": "float", "key": "tav", "displayName": "Total account value", "hidden": false } ] } ``` 操作によってテンプレートを更新した場合は、テンプレートのインスタンスもすべて自動的に更新されるという利点があります。この場合、前の手順で作成したインスタンスは次のようになります。 ``` { "company_name": "Box", "industry": "Technology", "tav": 1000000, "$id": "01234500-12f1-1234-aa12-b1d234cb567e", "$parent": "folder_12345,", "$scope": "enterprise_34567", "$template": "customerInfo", "$type": "customerInfo-6bcba49f-ca6d-4d2a-a758-57fe6edf44d0", "$typeVersion": 2, "$version": 1, "$canEdit": true } ``` メタデータテンプレートを更新しました **Source:** [https://ja.developer.box.com/guides/metadata/quick-start/update-template/](https://ja.developer.box.com/guides/metadata/quick-start/update-template/) --- ### メタデータテンプレートの更新 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータテンプレートの更新 メタデータテンプレートを更新するには、操作の配列をPUT /metadata_templates/:scope/:templateKey/schema API… # メタデータテンプレートの更新 メタデータテンプレートを更新するには、操作の配列を[`PUT /metadata_templates/:scope/:templateKey/schema`](e://put_metadata_templates_id_id_schema) APIに渡します。 # 管理者権限が必須 メタデータテンプレートの更新は、管理者権限を持つユーザーに制限されています。つまり、管理者、または管理者から**会社のメタデータテンプレートを作成、編集する**権限が付与されている共同管理者だけがウェブアプリまたはAPIを使用してテンプレートを管理できます。 ## 操作 メタデータテンプレートの更新は、テンプレート自体を直接変更するのではなく、**操作**を利用して実行されます。この方法では、ファイルおよびフォルダにすでに適用されている既存のメタデータインスタンスを更新できます。 ## テンプレートの操作 テンプレートの操作により、テンプレートの詳細またはフィールドが更新されます。一般的に、これらの操作は、あまり影響なくテンプレートインスタンスに適用されるため安全です。 ### テンプレートの編集 `editTemplate`操作では、`displayName`や`copyInstanceOnItemCopy`など、テンプレートの基本プロパティを編集できます。 | パラメータ | | | --- | --- | | data | 変更するプロパティを表すオブジェクト | ``` [ { "op": "editTemplate", "data": { "displayName": "Client", "copyInstanceOnItemCopy": true } } ] ``` これにより、新しい表示名がClientになるようにテンプレートが更新されます。 これは、このテンプレートの既存のインスタンスに影響します。 ### テンプレートへのフィールドの追加 `addField`操作では、テンプレートにフィールドを追加します。 | パラメータ | | | --- | --- | | data | 追加するフィールドを表すオブジェクト | ``` [ { "op": "addField", "data": { "displayName": "Category", "key": "category", "hidden": false, "type": "string" } } ] ``` これにより、`displayName`および`key`が**category**に指定されている、非表示ではない新しい文字列フィールドが追加されます。 これは、このテンプレートの既存のインスタンスに影響します。 ### フィールドの並べ替え `reorderFields`操作では、テンプレート内のフィールドのリストを、リクエストされたフィールドリストに合わせて並べ替えます。 | パラメータ | | | --- | --- | | fieldKeys | リクエストされた順番になっているフィールドキーの新しいリスト | ``` { "op": "reorderFields", "fieldKeys": ["field2", "field1", "field3"] } ``` これにより、テンプレートのフィールドは、最初に`field2`、その後`field1`、`field3`が続くように並べ替えられます。 これは、このテンプレートの既存のインスタンスに影響します。フィールドは並べ替えられますが、フィールドの値はそのまま変わりません。 ## フィールドの操作 フィールドの操作により、テンプレートのスキーマが変換されます。以下に、このAPIで使用できる、以前に割り当てたテンプレートのデータを変更する可能性のある操作のリストを示します。 このような変更は、ファイルの変更ではなくテンプレートの変更としてログに記録されます。 ### フィールドの編集 `editField`操作では、`displayName`、`description`、`key`、`hidden`状態など、フィールドの基本プロパティをいくつでも編集できます。 | パラメータ | | | --- | --- | | data | フィールドに設定する新しいプロパティを表すオブジェクト | | fieldKey | 編集するフィールドのキー | ``` { "op": "editField", "fieldKey": "category", "data": { "displayName": "Customer Group" } } ``` これにより、新しい表示名が**Customer Group**になるようにフィールド`category`が更新されます。このキーが変更された場合、指定されたフィールドの既存の値は新しいキーに移行されます。検索インデックスは更新されますが、更新にかかる時間は、この変更の対象となるファイルの数によって異なります。 これは、このテンプレートの既存のインスタンスに影響する可能性があります。 ### フィールドの削除 `removeField`操作では、テンプレートからフィールドを削除します。 | パラメータ | | | --- | --- | | fieldKey | テンプレートから削除するフィールドのキー | ``` { "op": "removeField", "fieldKey": "brand" } ``` これにより、フィールド`brand`は、テンプレートに加えて、テンプレートのすべてのインスタンスから削除されます。検索インデックスは更新されますが、更新にかかる時間は、この変更の対象となるファイルの数によって異なります。 これは、このテンプレートの既存のインスタンスに影響します。 ## フィールドオプションの操作 [`enum`](g://metadata/fields/enum)および[`multiSelect`](g://metadata/fields/multi-select)メタデータフィールドタイプはどちらも、フィールドのオプションを変更するための追加操作をサポートしています。 | 操作 | | | --- | --- | | addEnumOption | enumフィールドにオプションを追加します | | editEnumOption | enumフィールドのオプションを編集します | | reorderEnumOptions | enumフィールドのオプションを並べ替えます | | removeEnumOption | enumフィールドのオプションを削除します | | addMultiSelectOption | multiSelectフィールドにオプションを追加します | | editMultiSelectOption | multiSelectフィールドのオプションを編集します | | reorderMultiSelectOptions | multiSelectフィールドのオプションを並べ替えます | | removeMultiSelectOption | multiSelectフィールドのオプションを削除します | **Source:** [https://ja.developer.box.com/guides/metadata/templates/update/](https://ja.developer.box.com/guides/metadata/templates/update/) --- ### メタデータによるコンテンツの検索 **Type:** quick-start | **Category:** 検索 | **Section:** Developer Guides メタデータによるコンテンツの検索 BoxメタデータクエリAPIを使用すると、適用したカスタムメタデータ値に厳密に基づき、プログラムによってBoxコンテンツを検索できます。 メタデータクエリの構造は、SQLクエリの構造に似ていて、ブール演算子 (AND、OR、NOT… # メタデータによるコンテンツの検索 BoxメタデータクエリAPIを使用すると、適用したカスタムメタデータ値に厳密に基づき、プログラムによってBoxコンテンツを検索できます。 メタデータクエリの構造は、SQLクエリの構造に似ていて、ブール演算子 (AND、OR、NOTなど) のほか、比較演算子または範囲演算子 (等しい、より大きい、より小さいなど) も使用できます。 メタデータクエリAPIのメリットを以下に示します。 - インデックス作成による遅延がない (つまり、メタデータの作成、更新、削除の直後にクエリを実行) - 1つ以上のフィールドを基準に並べ替え順を指定できる - クエリ可能な文字数に制限がない - クエリで項目プロパティやメタデータインスタンスが返される ## 概要 このガイドでは、以下の手順を説明します。 1. [メタデータテンプレートを作成する](g://search/quick-start/create-metadata-template) 2. APIを使用して[メタデータテンプレートに関する情報を確認する](g://search/quick-start/locate-template-info) 3. 1つ以上のファイルに[メタデータテンプレートを適用する](g://search/quick-start/apply-template-to-file) 4. 手順3のコンテンツを取得する[メタデータクエリAPIコールを作成する](g://search/quick-start/metadata-query-api) 開始する準備ができました **Source:** [https://ja.developer.box.com/guides/search/quick-start/](https://ja.developer.box.com/guides/search/quick-start/) --- ### メタデータの抽出 **Type:** guide | **Category:** CLI | **Section:** Developer Guides メタデータの抽出 このスクリプトでは、任意のBoxフォルダ内のすべてのファイルとフォルダのメタデータの詳細を抽出し、その結果を各メタデータテンプレートのCSVスプレッドシートに保存します。 前提条件 Windows .NET Coreの最新バージョンのインストール macOS… # メタデータの抽出 このスクリプトでは、任意のBoxフォルダ内のすべてのファイルとフォルダのメタデータの詳細を抽出し、その結果を各メタデータテンプレートのCSVスプレッドシートに保存します。 ## 前提条件 ### Windows [.NET Core](https://dotnet.microsoft.com/download)の最新バージョンのインストール ### macOSおよびLinux [PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)をインストールします。`pwsh`コマンドを実行して、インストール結果をテストします。 ``` pwsh ``` どのディレクトリでこのコマンドを実行するかに応じて、出力が異なる場合があります。以下に例を示します。 ``` PowerShell 7.2.5 Copyright (c) Microsoft Corporation. https://aka.ms/powershell Type 'help' to get help. PS /Users/user/repos/boxcli/examples> ``` 問題が発生する場合は、[.NET Core](https://dotnet.microsoft.com/download)と[PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)の両方をインストールしたかどうか確認してください。 ### Box CLI スクリプトを使用するには、Box CLIをインストールし、構成する必要があります。これは、[クイックスタートガイド](g://cli/quick-start/create-oauth-app)の手順を実行することで行うことができます。 ## スクリプトの構成 1. `boxcli` GitHubリポジトリを複製してこの例のフォルダにcdコマンドで移動するか、[`examples`](https://github.com/box/boxcli/tree/main/examples/Metadata%20Extraction)ディレクトリからファイルをダウンロードします。 ``` git clone https://github.com/box/boxcli.git cd boxcli/examples/Metadata\ Extraction/ ``` 1. `folderID`および`userID`パラメータを指定して、スキャンするフォルダとスクリプトを実行するユーザーをスクリプトに指示します。 ``` [string]$FolderID = "", [string]$UserID = "", ``` ``` If you don't want to specify the parameters directly in the script, you can either pass them as flags or allow the script to prompt you to enter them. A sample command with flags looks as follows: ``` ``` ./Metadata-extraction.ps1 -folderId 123456789 -userId 123456789 ``` ## スクリプトの実行 1. PowerShellコマンドを実行します。 ``` pwsh ``` 1. スクリプトを実行します。 ``` ./Metadata-extraction.ps1 -folderId 123456789 -userId 123456789 ``` ``` When the script finishes, you will see the following output or a similar one. ``` ``` Pulling data from Folder ID: 173961139760 metadata as user ID: 20718545815 Reading Item ID: 1016853559790 Metadata saved to: MetadataTemplate_properties.csv ``` ## ログ ログは、メインフォルダ内の`logs`フォルダに格納されます。以下のログファイルにアクセスできます。 - `Metadata-extraction_all.txt`: すべてのログエントリが含まれています。 - `Metadata-extraction_errors.txt`: エラーのみが含まれています。 **Source:** [https://ja.developer.box.com/guides/cli/scripts/metadata-extraction/](https://ja.developer.box.com/guides/cli/scripts/metadata-extraction/) --- ### メタデータの操作 **Type:** quick-start | **Category:** メタデータ | **Section:** Developer Guides メタデータの操作 メタデータAPI… # メタデータの操作 メタデータAPIは、アプリケーションがファイルやフォルダに自動的に情報を追加できるようにする優れたツールです。 ## 概要 このガイドでは、以下の手順を説明します。 1. 使用できる[すべてのテンプレートのリストを取得](g://metadata/quick-start/list-all)します。 2. 会社固有のデータを保持する[カスタムメタデータテンプレートを作成](g://metadata/quick-start/create-template)します。 3. ファイルに[カスタムメタデータテンプレートを適用](g://metadata/quick-start/create-instance)し、カスタムデータをファイルに割り当てられるようにします。 4. ファイルの[メタデータインスタンスを更新](g://metadata/quick-start/update-instance)し、ファイルに割り当てられたデータを変更できるようにします。 5. [メタデータテンプレートを更新](g://metadata/quick-start/update-template)し、このテンプレートのすべてのインスタンスに適用されたデータを変更します。 6. [メタデータを使用してファイルを検索するクエリを作成](g://metadata/quick-start/create-query)し、このテンプレートのすべてのインスタンスに適用されたデータを変更します。 開始する準備ができました **Source:** [https://ja.developer.box.com/guides/metadata/quick-start/](https://ja.developer.box.com/guides/metadata/quick-start/) --- ### メタデータフィールド **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides メタデータフィールド メタデータテンプレートフィールドには、メタデータテンプレート内の特定のデータが記載されています。たとえば、請求書のIDをinvoiceDataテンプレートのidフィールドとして表すことができます。 すべてのメタデータテンプレートにはfield… # メタデータフィールド [メタデータテンプレートフィールド](r://metadata-template/#param-fields)には、メタデータテンプレート内の特定のデータが記載されています。たとえば、請求書のIDを`invoiceData`テンプレートの`id`フィールドとして表すことができます。 すべてのメタデータテンプレートには`field`オブジェクトのリストが含まれており、各フィールドは次のいずれかのタイプになります。 | | | | --- | --- | | string | テキストフィールド | | float | 数値入力フィールド | | date | 日付選択フィールド | | enum | 1つの値を選択するためのドロップダウンリスト | | multiSelect | 複数の値を選択するためのドロップダウンリスト | ## 基本的なフィールドタイプ 基本的なフィールドタイプは、テキストフィールドの場合は`string`、数値フィールドの場合は`float`、日時選択フィールドの場合は`date`です。 ## リストのフィールドタイプ さらに、メタデータテンプレートでは、ドロップダウンリストを表す2つのフィールドタイプをサポートしています。`enum`フィールドは、ユーザーが選択できるあらかじめ定義された項目のリストを表すのに対し、`multiSelect`フィールドは、ユーザーが複数の値を選択できる項目のリストを表します。 **Source:** [https://ja.developer.box.com/guides/metadata/fields/](https://ja.developer.box.com/guides/metadata/fields/) --- ### モバイル **Type:** guide | **Category:** モバイル | **Section:** Developer Guides モバイル BoxのモバイルSDKは、iOSプロジェクトやAndroidプロジェクト内からBox APIへのネイティブアクセスを提供します。 # モバイル BoxのモバイルSDKは、iOSプロジェクトやAndroidプロジェクト内からBox APIへのネイティブアクセスを提供します。 **Source:** [https://ja.developer.box.com/guides/mobile/](https://ja.developer.box.com/guides/mobile/) --- ### ユーザー **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides ユーザー Box APIは、管理対象ユーザーアカウントでログインする実際の従業員や、App User… # ユーザー Box APIは、管理対象ユーザーアカウントでログインする実際の従業員や、App Userを使用して強力な自動化ワークフローを推進するアプリケーションなど、さまざまなユーザーをサポートしています。 ユーザータイプの詳細を確認する ## ユーザーのプロビジョニング (プロビジョニング解除) 従業員、顧客、ユーザーのオンボーディングとオフボーディングの管理は、Boxアプリケーションの一般的な要件です。 アカウントのプロビジョニングで必要となる主なタスクは以下のとおりです。 - ユーザーを表す新しいアプリと管理対象ユーザーアカウントを作成する。 - 共通の、または繰り返しが可能なフォルダおよびファイルアーキテクチャを使用して、新しいユーザーアカウントをインスタンス化する。 アカウントのプロビジョニング解除で必要となる主なタスクは以下のとおりです。 - オフボーディングのため、1つのアカウントから別のアカウントにファイルとフォルダを転送する。 - ユーザーアカウントを削除する。 **Source:** [https://ja.developer.box.com/guides/users/](https://ja.developer.box.com/guides/users/) --- ### ユーザーアクセストークン **Type:** guide | **Category:** 認証 | **Section:** Developer Guides ユーザーアクセストークン JWT… # ユーザーアクセストークン JWTアプリケーションは、[サービスアカウント](page://platform/user-types/#service-account)ではなく特定のユーザーに対してアクセストークンを作成できます。 ## 前提条件 アプリケーションは、ユーザーアクセストークンの作成を許可するように構成する必要があります。この設定は、[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブにあります。 さらに、認証済みユーザーは、管理者権限を持つユーザー、つまり、管理者、共同管理者、サービスアカウントのいずれかである必要があります。詳細については、[ユーザータイプ](page://platform/user-types)のガイドを参照してください。 ## SDKを使用したユーザーアクセストークン 特定のユーザーとして認証するBox SDKクライアントを作成するには、[SDKを使用したJWTのガイド](g://authentication/jwt/with-sdk)で説明されている手順に従います。ただし、「Enterprise」クライアントではなく、ユーザークライアントを作成します。 ``` var userId = "12345"; var sdk = new BoxJWTAuth(config); var token = sdk.UserToken(appUserID); BoxClient client = sdk.UserClient(userToken, userId); ``` ``` String userId = "12345"; BoxDeveloperEditionAPIConnection api = new BoxDeveloperEditionAPIConnection.getAppUserConnection(userId, config) ``` ``` user = client.user(user_id='12345') auth = JWTAuth( client_id='[CLIENT_ID]', client_secret='[CLIENT_SECRET]', user=app_user, jwt_key_id='[JWT_KEY_ID]', rsa_private_key_file_sys_path='[CERT.PEM]', rsa_private_key_passphrase='[PASSPHRASE]' ) auth.authenticate_user() user_client = Client(auth) ``` ``` var sdk = BoxSDK.getPreconfiguredInstance(config); var client = sdk.getAppAuthClient('user', '12345'); ``` Box SDKとJWTの使用の詳細を確認する ## SDKを使用しないユーザーアクセストークン 特定のユーザーとして認証するユーザーアクセストークンを作成するには、[SDKを使用しないJWTのガイド](g://authentication/jwt/without-sdk)で説明されている手順に従います。ただし、企業用のクレームを作成するのではなく、特定のユーザーID用のクレームを作成します。 ``` var userId = "12345"; var claims = new List<Claim>{ new Claim("sub", userid), new Claim("box_sub_type", "user"), new Claim("jti", jti), }; ``` ``` String userId = "12345"; JwtClaims claims = new JwtClaims(); claims.setIssuer(config.boxAppSettings.clientID); claims.setAudience(authenticationUrl); claims.setSubject(userId); claims.setClaim("box_sub_type", "user"); claims.setGeneratedJwtId(64); claims.setExpirationTimeMinutesInTheFuture(0.75f); ``` ``` user_id = '12345' claims = { 'iss': config['boxAppSettings']['clientID'], 'sub': user_id, 'box_sub_type': 'user', 'aud': authentication_url, 'jti': secrets.token_hex(64), 'exp': round(time.time()) + 45 } ``` ``` let user_id = '12345'; let claims = { iss: config.boxAppSettings.clientID, sub: user_id, box_sub_type: "user", aud: authenticationUrl, jti: crypto.randomBytes(64).toString("hex"), exp: Math.floor(Date.now() / 1000) + 45 }; ``` ``` user_id = '12345' claims = { iss: config['boxAppSettings']['clientID'], sub: user_id, box_sub_type: 'user', aud: authentication_url, jti: SecureRandom.hex(64), exp: Time.now.to_i + 45 } ``` ``` $userId = '12345'; $claims = [ 'iss' => $config->boxAppSettings->clientID, 'sub' => $userId, 'box_sub_type' => 'user', 'aud' => $authenticationUrl, 'jti' => base64_encode(random_bytes(64)), 'exp' => time() + 45, 'kid' => $config->boxAppSettings->appAuth->publicKeyID ]; ``` 手動によるJWT認証の使用の詳細を確認する **Source:** [https://ja.developer.box.com/guides/authentication/jwt/user-access-tokens/](https://ja.developer.box.com/guides/authentication/jwt/user-access-tokens/) --- ### ユーザーエクスペリエンス **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides ユーザーエクスペリエンス 以下に、ユーザーの視点からウェブアプリ統合がどのように見えるかについて説明します。 Boxユーザーは、Box統合でアプリケーションを見つけることができます。直接統合にアクセスするか、BoxウェブアプリのUI… # ユーザーエクスペリエンス 以下に、ユーザーの視点からウェブアプリ統合がどのように見えるかについて説明します。 1. Boxユーザーは、Box統合でアプリケーションを見つけることができます。直接統合にアクセスするか、BoxウェブアプリのUIで [**統合**] メニューを選択できます。 2. ユーザーは統合で、追加したいアプリケーションを選択します。公開されているどのBoxアプリケーションにも公開プロフィールページが用意されており、提供する統合などの詳細が示されています。 3. ユーザーは統合のリストで [**追加**] ボタンをクリックすることで、自分のアカウントにアプリケーションを追加します。アプリケーションがアカウントに追加されると、ユーザーはそのすべての統合を使用できるようになります。 4. ファイルまたはフォルダの [**その他の操作**] メニューで、統合を選択します。 5. ユーザーは、Boxから、ファイルまたはフォルダをアプリケーションと共有してよいか許可を求められます。統合を問題なく使用できるようにするには、確認プロンプトを受け入れる必要があります。 6. アクセスを許可すると、Boxからアプリケーションにデータが渡されます。その後、統合の種類に応じて、アプリケーションはポップアップパネルを表示したり、サーバーベースのプロセスを実行したりします。 **Source:** [https://ja.developer.box.com/guides/applications/web-app-integrations/user-experience/](https://ja.developer.box.com/guides/applications/web-app-integrations/user-experience/) --- ### ユーザーとのコンテンツの共有 **Type:** guide | **Category:** コラボレーション | **Section:** Developer Guides ユーザーとのコンテンツの共有 コンテンツをユーザーと共有するには、ユーザーIDまたはメールアドレス、コンテンツのIDのほか、ユーザーがコンテンツにアクセスする際に必要なロールまたは権限を使用してコラボレーションを作成します。コラボレーションロールはeditor、viewer… # ユーザーとのコンテンツの共有 コンテンツをユーザーと共有するには、ユーザーIDまたはメールアドレス、コンテンツのIDのほか、ユーザーがコンテンツにアクセスする際に必要なロールまたは権限を使用してコラボレーションを作成します。コラボレーションロールは`editor`、`viewer`、`previewer`、`uploader`、`previewer uploader`、`viewer uploader`、`co-owner`、または`owner`です。各ロールについての詳しい説明は、Boxの[サポートドキュメント](https://support.box.com/hc/ja/articles/360044196413-%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%A9%E9%99%90%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を参照してください。 ## ネストされたオブジェクト コラボレーションの作成時には、リクエスト本文に`accessible_by`と`item`という2つのネストされたオブジェクトを使用します。 `accessible_by`オブジェクトは、この項目の共有相手を指定し、グループ`id`と`type`を含みます。`type`フィールドは常に`user`に設定する必要があります。 `item`オブジェクトは、共有する項目を指定します。このオブジェクトには、`file`として設定する必要がある`type`フィールドと、そのファイルの`id`フィールドがあります。 **Source:** [https://ja.developer.box.com/guides/collaborations/share-content/](https://ja.developer.box.com/guides/collaborations/share-content/) --- ### ユーザーとフォルダのプロビジョニング **Type:** guide | **Category:** CLI | **Section:** Developer Guides ユーザーとフォルダのプロビジョニング このスクリプトでは、Box CLI… # ユーザーとフォルダのプロビジョニング このスクリプトでは、Box CLIを使用して、個人用フォルダ構造の作成と管理対象ユーザーの一括作成を実行し、新しく作成したフォルダ構造に新しいユーザーをビューアー/アップローダーのロールを持つコラボレータとして追加することでそのユーザーのプロビジョニングを行います。 詳細については、クイックスタートガイドで[Box CLIの使い方とサンプルスクリプト](g://cli/quick-start/powershell-script-templates)を参照してください。 **Source:** [https://ja.developer.box.com/guides/cli/scripts/provision-users-folders/](https://ja.developer.box.com/guides/cli/scripts/provision-users-folders/) --- ### ユーザーのWebhookのリストを取得 **Type:** guide | **Category:** Webhook | **Section:** Developer Guides ユーザーのWebhookのリストを取得 認証済みユーザーのすべてのWebhookを取得するには、すべてのWebhookのリストを取得エンドポイントを使用します。 このエンドポイントを使用するには、アプリケーションの [Webhook… # ユーザーのWebhookのリストを取得 認証済みユーザーのすべてのWebhookを取得するには、[すべてのWebhookのリストを取得](endpoint://get_webhooks)エンドポイントを使用します。 このエンドポイントを使用するには、アプリケーションの [**Webhookを管理する**] スコープが有効になっている必要があります。 このAPIコールは、認証済みユーザーのWebhookのみをリストし、会社内の他のユーザーのWebhookはリストしません。 **Source:** [https://ja.developer.box.com/guides/webhooks/v2/list-v2/](https://ja.developer.box.com/guides/webhooks/v2/list-v2/) --- ### ユーザーのコレクションのリストの取得 **Type:** guide | **Category:** コレクション | **Section:** Developer Guides ユーザーのコレクションのリストの取得 ユーザーのすべてのコレクションのリストを取得するには、GET /collections APIを呼び出します。 APIを介して使用できるコレクションは「お気に入り」コレクションのみです。このコレクションのID… # ユーザーのコレクションのリストの取得 ユーザーのすべてのコレクションのリストを取得するには、[`GET /collections`](e://get_collections) APIを呼び出します。 APIを介して使用できるコレクションは「お気に入り」コレクションのみです。このコレクションのIDはユーザーごとに異なります。 ## お気に入りコレクション 現在APIを介して項目を追加および削除できるコレクションは「お気に入り」コレクションのみです。 お気に入りコレクションのIDはユーザーごとに異なります。ユーザーのお気に入りのコレクションIDを確認するには、ユーザーの全コレクションのリストを取得し、`collection_type`が`favorites`のコレクションを探します。 ``` { "entries": [ { "collection_type": "favorites", "id": "12345678", "name": "Favorites", "type": "collection" } ], "limit": 100, "offset": 0, "total_count": 1 } ``` **Source:** [https://ja.developer.box.com/guides/collections/list/](https://ja.developer.box.com/guides/collections/list/) --- ### ユーザーのゾーンの更新 **Type:** guide | **Category:** CLI | **Section:** Developer Guides ユーザーのゾーンの更新 このスクリプトは、マルチゾーンのBox… # ユーザーのゾーンの更新 この[スクリプト](https://github.com/box/boxcli/tree/main/examples/Mass%20Update%20User%20Zones)は、マルチゾーンのBoxテナント内の特定のデータ保管場所のゾーンにユーザーをプロビジョニングします。スクリプトによって以下の手順が実行されます。 1. 管理者または共同管理者のログインメールアドレスを使用して、関連付けられた企業とその企業に割り当てられているゾーンポリシーを検索します。割り当てられているゾーンポリシーは、特に指定がない限り、すべてのユーザーが継承します。これは、**デフォルトゾーン**とも呼ばれることもあります。 2. ユーザーのメールアドレスとゾーンマッピングが含まれる入力`.csv`ファイルに基づいて、ゾーン割り当てを行います。 通常、このスクリプトはユーザーのゾーンを初めてプロビジョニングするときに1回使用します。ただし、ゾーンの割り当てを更新するために、以降の実行でも使用できます。 ゾーンの割り当てに管理コンソールを使用する場合は、[こちらのガイド](https://support.box.com/hc/en-us/articles/360044193533-Assigning-Zones-through-the-Admin-Console)を参照してください。Box Zonesの詳細については、[公式ウェブサイト](https://www.box.com/zones)を参照してください。 ## 前提条件 ### Windows [.NET Core](https://dotnet.microsoft.com/download)の最新バージョンのインストール ### macOSおよびLinux [PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)をインストールします。`pwsh`コマンドを実行して、インストール結果をテストします。 ``` pwsh ``` どのディレクトリでこのコマンドを実行するかに応じて、出力が異なる場合があります。以下に例を示します。 ``` PowerShell 7.2.5 Copyright (c) Microsoft Corporation. https://aka.ms/powershell Type 'help' to get help. PS /Users/user/repos/boxcli/examples> ``` 問題が発生する場合は、[.NET Core](https://dotnet.microsoft.com/download)と[PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)の両方をインストールしたかどうか確認してください。 ### JWT認証を使用するアプリケーションの設定 このスクリプトを使用するには、[JWT認証を使用するBox CLI](g://cli/cli-docs/jwt-cli)をインストールし、構成する必要があります。 アプリを作成する際は、[**構成**] タブで以下の設定を構成します。 - [**アプリアクセスレベル**] で [`App + Enterprise Access`] を選択します。 - [**アプリケーションスコープ**] > [**管理操作**] の順に移動して、[`Manage Enterprise Properties`]、[`Manage Users`] を選択します。 - [**高度な機能**] で [`Generate user access tokens`] を選択します。 ### 管理者設定の調整 Boxの管理者または共同管理者に`Manage Users`以上の権限があることを確認します。この設定を確認するには、以下の手順に従います。 1. 管理コンソールの [**ユーザーとグループ**] セクションに移動します。 2. 確認するユーザーアカウントをクリックします。 3. [**ユーザーのアクセス権限を編集**] セクションに移動して、ユーザーとグループに管理者権限を付与します。 ## .csvファイルの準備 `.csv`ファイルには、**Email**と**Region**というヘッダーを設定した2つの列が必要です。 - **Email**列には、Boxユーザーのプライマリメールアドレスを含めます。 - **Region**列には、スクリプトでユーザーを割り当てるゾーンのユーザーフレンドリ名 (ユーザーが理解しやすい名前) を含めます。この名前は、ゾーンの定義に使用する[ZonesTable](https://github.com/box/boxcli/blob/main/examples/Mass%20Update%20User%20Zones/Mass_Update_User_Zones.ps1#L23)というハッシュテーブルで指定します。キーはゾーンのユーザーフレンドリ名であり、対応する値はゾーンのグローバルIDです。 ``` $ZonesTable = @{ US = "100001" #US GermanyIreland = "100002" #Germany/Ireland with in region uploads/downloads/previews Australia = "100003" #Australia Japan = "100004" #Japan with in region uploads/downloads/previews Canada = "100005" #Canada JapanSingapore = "100007" #Japan/Singapore with in region uploads/downloads/previews UKGermany = "100008" #UK/Germany UK = "100009" #UK with in region uploads/downloads/previews France = "100012" #France } ``` 特定の企業で有効なゾーンに対応するIDを入手するには、Box Consultingまたはカスタマーサクセスマネージャまでお問い合わせください。 このスクリプトには、以下のようなメールアドレスとゾーン名が含まれているサンプル入力`.csv`ファイルが用意されています。 | Email | Region | | --- | --- | | betty@company.com | US | | roger@company.com | France | | sally@company.com | JapanSingapore | ## スクリプトの構成 この`.csv`ファイルを指すように`UserZonesUpdatePath`を設定します。 ``` $UserZonesUpdatePath = "./your_file_name.csv" ``` `adminEmail`を、このスクリプトでゾーンの割り当てに使用するアカウントの管理者または`co-admin`のログインメールアドレスに更新します。この値を指定しない場合、スクリプト実行時に指定するよう求められます。 ``` $adminEmail = "john@box.com" ``` ## スクリプトの実行 PowerShellコマンドを実行します。 ``` pwsh ``` スクリプトを実行します。 ``` ./Mass_Update_User_Zones.ps1 ``` ### オプションのフラグ シミュレーションモードでスクリプトを実行するには、`DryRun`ブール値フラグを追加します。ドライランでは、APIコールが実行されないというわけではありませんが、作成/更新/削除のコールはすべてスキップされます。 ``` ./Mass_Update_User_Zones.ps1 -DryRun ``` ## ログ ログは、メインフォルダ内の`logs`フォルダに格納されます。以下のログファイルにアクセスできます。 - `Mass_Update_User_Zones_all.txt`: すべてのログエントリが含まれています。 - `Mass_Update_User_Zones_errors.txt`: エラーのみが含まれています。 **Source:** [https://ja.developer.box.com/guides/cli/scripts/user-zones-mass-update/](https://ja.developer.box.com/guides/cli/scripts/user-zones-mass-update/) --- ### ユーザーのプロビジョニング **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides ユーザーのプロビジョニング 新しいBox… # ユーザーのプロビジョニング 新しいBoxユーザーアカウントを設定する際、一般にはこの新しいアカウントに標準のフォルダ、コラボレーション、グループ関連付けを作成する必要があります。 通常、アカウントの標準設定が必要なタイミングを判断するには、ユーザーアカウントについて以下の事項を検討します。 - ユーザーが標準の会社のファイルまたはフォルダに即座にアクセスする必要があるか。 - コラボレーションを個別に関連付けるか、グループを介して関連付けるか。グループの関連付けを介する場合、ユーザーを追加する必要がある標準グループがあるか。 - ユーザーに完了すべきタスクを割り当てる必要があるか。 - ファイルに関する説明的なコメントが役に立つか。 # 新しいユーザーのパスワードリセットとメール確認 ユーザーを作成した後、すぐにAPIを介してそのユーザーによるアクションを実行しようとすると、エラーが発生する場合があります。たとえば、`user_email_confirmation_required`や`password_reset_required`といったエラーがよく発生します。このようなエラーが発生するとAPI内の一部のアクションがブロックされる場合がありますが、そのユーザーをフォルダのコラボレータとして追加したり、グループに追加したりすることはできます。 ## サンプル概要 Box App Userアカウントをプロビジョニングする際の注意事項は非常に多岐にわたるため、このシナリオでは、新しい[Box管理対象ユーザー](page://platform/user-types/#managed-users)のプロビジョニングを中心に検討します。 初めに、ユーザーアカウントのプロビジョニングで繰り返せる部分の大半を解決し、すべてのユーザーが最初にログインした時点で与えられる一般的なフォルダおよびファイル構造を作成し、グループを使用してユーザーの共有ファイルとフォルダへのアクセスを制御します。 **Source:** [https://ja.developer.box.com/guides/users/provision/](https://ja.developer.box.com/guides/users/provision/) --- ### ユーザーのプロビジョニング解除 **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides ユーザーのプロビジョニング解除 通常のBox Enterprise… # ユーザーのプロビジョニング解除 通常のBox Enterpriseの保守の一部として、会社内でアクティブではなくなったユーザーのアカウントを削除します。会社からユーザーを削除する際は、ユーザーアカウントを削除する前に、そのユーザーが所有するすべてのコンテンツを別のアカウントに移動する必要があります。 ユーザーアカウントにまだコンテンツがある場合、ユーザー削除リクエストは失敗します。ユーザーアカウントとアカウント内のすべてのコンテンツを強制的に削除するオプションである`force`パラメータを、APIコールで使用できます。 ユーザーアカウントを廃止する際の標準的なベストプラクティスは、そのユーザーが所有するすべてのコンテンツを別の管理者レベルアカウントまたはアプリケーションサービスアカウントに移動することです。移動したら、コンテンツの所有権を別のユーザーに移管するか、必要に応じてそのコンテンツで別のユーザーとコラボレーションをすることができます。 ## プロビジョニング解除の例 以下のコードサンプルを使用して、ユーザーのコンテンツを転送し、ユーザーを削除できます。コンテンツが転送される際には、次のパターンに従って転送先ユーザーのルートフォルダに新しいフォルダが作成されます。`employee_email@email.com - employee_name's Files and Folders` ``` 'use strict' const box = require('box-node-sdk'); const fs = require('fs'); let configFile = fs.readFileSync('config.json'); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let serviceAccountClient = session.getAppAuthClient('enterprise'); const transferUserID = '3278487052'; (async () => { let serviceAccount = await serviceAccountClient.users.get('me'); let transferredFolder = await serviceAccountClient.enterprise.transferUserContent(transferUserID,serviceAccount.id); console.log(transferredFolder); await serviceAccountClient.users.delete(transferUserID, null); console.log('Completed'); })(); ``` ``` Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath,Charset.forName("UTF-8"))){ String transferUserId = "3277722534"; BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxUser destinationUser = new BoxUser(serviceAccountClient, BoxUser.getCurrentUser(serviceAccountClient).getID()); try { destinationUser.moveFolderToUser(transferUserId); } catch (BoxAPIException e) {} BoxUser removeUser = new BoxUser(serviceAccountClient, transferUserId); removeUser.delete(false, false); } ``` ``` using(FileStream fs = new FileStream("./config.json", FileMode.Open)) { var config = BoxConfig.CreateFromJsonFile(fs); var session = new BoxJWTAuth(config); var serviceAccountClient = session.AdminClient(session.AdminToken()); var transferUserId = "3276247601"; var serviceAccount = await serviceAccountClient.UsersManager.GetCurrentUserInformationAsync(); var moveAction = await serviceAccountClient.UsersManager.MoveUserFolderAsync(transferUserId,serviceAccount.Id); System.Console.WriteLine(moveAction.Name); await serviceAccountClient.UsersManager.DeleteEnterpriseUserAsync(transferUserId,false,false); } ``` ``` box users:transfer-content $transfer_from_user_id $transfer_to_user_id box users:delete $transfer_from_user_id --yes ``` **Source:** [https://ja.developer.box.com/guides/users/deprovision/](https://ja.developer.box.com/guides/users/deprovision/) --- ### ユーザーのプロビジョニング解除とフォルダのアーカイブ **Type:** guide | **Category:** CLI | **Section:** Developer Guides ユーザーのプロビジョニング解除とフォルダのアーカイブ このスクリプトを使用すると、ユーザーのリストによるプロビジョニング解除と削除が可能です。スクリプトでは以下の手順が実行されます。 EmployeeArchiveFolderName… # ユーザーのプロビジョニング解除とフォルダのアーカイブ このスクリプトを使用すると、ユーザーのリストによるプロビジョニング解除と削除が可能です。スクリプトでは以下の手順が実行されます。 1. `EmployeeArchiveFolderName`パラメータで指定された、別のユーザーのルートフォルダにユーザーコンテンツを転送します。 2. ユーザーを削除します。 ## 前提条件 ### Windows [.NET Core](https://dotnet.microsoft.com/download)の最新バージョンのインストール ### macOSおよびLinux [PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)をインストールします。`pwsh`コマンドを実行して、インストール結果をテストします。 ``` pwsh ``` どのディレクトリでこのコマンドを実行するかに応じて、出力が異なる場合があります。以下に例を示します。 ``` PowerShell 7.2.5 Copyright (c) Microsoft Corporation. https://aka.ms/powershell Type 'help' to get help. PS /Users/user/repos/boxcli/examples> ``` 問題が発生する場合は、[.NET Core](https://dotnet.microsoft.com/download)と[PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)の両方をインストールしたかどうか確認してください。 ### Box CLI スクリプトを使用するには、Box CLIをインストールし、構成する必要があります。これは、[クイックスタートガイド](g://cli/quick-start/create-oauth-app)の手順を実行することで行うことができます。ログインに使用するユーザーは、Boxのメイン管理者または共同管理者である必要があります。 ## スクリプトの構成 1. `boxcli` GitHubリポジトリを複製してこの例のフォルダにcdコマンドで移動するか、[`examples`](https://github.com/box/boxcli/tree/main/examples/User%20Deprovisioning)ディレクトリからファイルをダウンロードします。 ``` git clone https://github.com/box/boxcli.git boxcli cd boxcli/examples/User\ Deprovisioning/ ``` 削除する従業員のリストを`.csv`で作成します。 ヘッダー行は次のようになります。 ``` name, email ``` ``` where: * `name` is the name of the user in Box. * `email` is the primary email address of the user in Box. For example: |`name`| `email`| |------|--------| |Managed User 1| `ManagedUser1@test.com`| |Managed User 2| `ManagedUser2@test.com`| |Managed User 3| `ManagedUser3@test.com`| ``` ### パラメータのリスト | Parameter | Description | Required | Default Value | | --- | --- | --- | --- | | EmployeeList | 削除する従業員が記載された従業員リストCSVのパス。 | はい | - | | SkipTransferContent | このフラグを設定すると、スクリプトの実行時に、削除前にユーザーコンテンツの転送をスキップします。設定しない場合は、ユーザーのコンテンツが転送されます。 | いいえ | False | | NewFilesOwnerID | ユーザーの削除前にファイルの転送先となるユーザーのID。指定しなかった場合、スクリプトは、対話形式で入力を求めるか、現在認証されているユーザーのIDを使用してコンテンツを受け取ります。 | いいえ | 指定しなかった場合、スクリプトは、対話形式で入力を求めるか、現在認証されているユーザーのIDを使用します。 | | EmployeeArchiveFolderName | SkipTransferContentがFalseに設定されている場合にユーザーのコンテンツの移動先となるフォルダの名前。この名前のフォルダがそのユーザーのNewFilesOwnerIDルートフォルダにすでに存在する場合は、そのフォルダが使用されます。存在しない場合は、新しいフォルダが作成されます。 | はい | Employee Archive | | DryRun | 削除/作成/更新の呼び出しは行われず、読み取りの呼び出しのみが行われるモードでスクリプトを実行するかどうかを決定するフラグ。 | いいえ | False | ### スクリプトのパラメータの定義 パラメータを渡すには、以下のオプションを使用できます。 スクリプトでハードコードされた値を使用します。 このオプションを使用するには、実行する前に、[スクリプトのパラメータセクション](https://github.com/box/boxcli/tree/main/examples/User%20Deprovisioning/Users_Deprovision.ps1#L17-L36)に記載されている必須パラメータをすべて更新します。 パラメータを指定してスクリプトを実行します。 コマンドを指定するときにパラメータを指定できます。以下に例を示します。 ``` PS > ./Users_Deprovision.ps1 -EmployeeList ./Employees_to_delete.csv ` -NewFilesOwnerID 123456789 -EmployeeArchiveFolderName "Employee Archive" ``` ``` or ``` ``` PS > ./Users_Deprovision.ps1 -EmployeeList ./Employees_to_delete.csv ` -SkipTransferContent ``` ``` If you don't specify parameters, the script will prompt you to enter it. ``` ``` PS > ./Users_Deprovision.ps1 Please enter the path to the employee list CSV file: ./Employees_to_delete.csv Please specify the user ID of the user who will own the files of the users being deprovisioned. Press Enter if you want to use the current user as the new owner. User ID: 1234567689 Starting User Deprovisioning script... ``` ## スクリプトの実行 これで、あとはスクリプトを実行するだけです。 1. PowerShellコマンドを実行します。 ``` pwsh ``` 1. スクリプトを実行します: ``` ./Users_Deprovision.ps1 ``` ``` When all parameters are defined, you will see following output to confirm the script started: ``` ``` PS /home/rvb/box-cli/examples/User Deprovisioning> ./Users_Deprovision.ps1 Starting User Deprovisioning script... ``` ## ログ ログは、メインフォルダ内の`logs`フォルダに格納されます。以下のログファイルにアクセスできます。 - `Users_Deprovision_all.txt`: すべてのログエントリが含まれています。 - `Users_Deprovision_errors.txt`: エラーのみが含まれています。 **Source:** [https://ja.developer.box.com/guides/cli/scripts/deprovision-users/](https://ja.developer.box.com/guides/cli/scripts/deprovision-users/) --- ### ユーザーの削除 **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides ユーザーの削除 App Userと管理対象ユーザーの削除プロセスは同じです。ユーザーアカウントを削除するには、削除するアカウントのユーザーIDを指定します。 ユーザーアカウントを削除するときに設定できるオプションパラメータも2つあります。 force… # ユーザーの削除 App Userと管理対象ユーザーの削除プロセスは同じです。ユーザーアカウントを削除するには、削除するアカウントのユーザーIDを指定します。 ユーザーアカウントを削除するときに設定できるオプションパラメータも2つあります。 - force: アカウントにまだコンテンツがある場合でも、ユーザーを削除するかどうか。 - notify: アカウントが削除されたという通知をユーザーに送信するかどうか。 ユーザーアカウントにまだコンテンツがある場合、ユーザー削除リクエストは失敗します。これを解決するには、別のアカウントに[すべてのファイルまたはフォルダを転送する](g://users/deprovision/transfer-folders)か、オプションの`force`パラメータを使用します。 **Source:** [https://ja.developer.box.com/guides/users/delete-user/](https://ja.developer.box.com/guides/users/delete-user/) --- ### ユーザーへのタスクの割り当て **Type:** guide | **Category:** タスク | **Section:** Developer Guides ユーザーへのタスクの割り当て ユーザーにタスクを割り当てるには、POST /task_assignments APIにタスクのidとユーザーの詳細を指定する必要があります。ユーザーについては、アプリケーションはユーザーidまたはユーザーのログインメールを使用できます。これはBox… # ユーザーへのタスクの割り当て ユーザーにタスクを割り当てるには、[`POST /task_assignments`](e://post_task_assignments) APIにタスクの`id`とユーザーの詳細を指定する必要があります。ユーザーについては、アプリケーションはユーザー`id`またはユーザーのログインメールを使用できます。これはBoxではユーザーの`login`と呼ばれます。 # 通知 タスクを作成すると、そのタスクが割り当てられるユーザーにメール通知が送信されます。 # 権限 タスクを割り当てるユーザーとタスクが割り当てられるユーザーの両方が、ファイルのコラボレータである必要があります。 **Source:** [https://ja.developer.box.com/guides/tasks/assignments/assign/](https://ja.developer.box.com/guides/tasks/assignments/assign/) --- ### よくある質問 **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides よくある質問 Box Viewのしくみを教えてください。 新しいBox Viewを使用するには、こちらのガイドに従ってください。 埋め込みリンクとUI Element… # よくある質問 **Box Viewのしくみを教えてください。** 新しいBox Viewを使用するには、[こちら](guide://embed/box-view/setup)のガイドに従ってください。 **埋め込みリンクとUI Elementのうち、どちらのプレビュー方法が用途に適していますか?** [こちら](guide://embed/box-view/create-preview)のガイドに従い、自分のユースケースに最適な方法を選択してください。 **Box Viewでサポートされているファイルタイプを教えてください。**サポートされているファイルタイプについては、[サポート記事](https://support.box.com/hc/ja/articles/360043695794-Box-Content-Preview%E3%81%A7%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)を参照してください。 **Box Viewを使用するモバイルでサポートされていないファイルタイプを教えてください。** - ウェブプレビューでサポートされているドキュメントはすべて、モバイルブラウザ (iOSのSafariとChrome) でサポートされます。 - モバイル向けの注釈の全面的なサポートは、Boxの注釈を活用する[コンテンツプレビューUI Element](guide://embed/ui-elements/preview)を介して利用できます。 - モバイルSDK (iOSおよびAndroid用) では、360度動画/画像、および3Dがサポートされていません。 - モバイルSDK (iOSおよびAndroid用) では、注釈 (読み取りと書き込み両方) がサポートされていません。 **注釈とは何ですか?** [注釈](g://embed/ui-elements/annotations)とは、ファイルにレンダリングされるマークアップメモです。開発者は、これを使用して、アプリケーションに埋め込まれたBoxプレビュー内から直接コラボレーション機能を提供できます。 **ファイルのアップロード後にアプリケーションでファイルレプリゼンテーションを取得するにはどうすればよいですか?** [Boxのレプリゼンテーション](guide://representations)を使用すると、Boxに保存されているファイル用に作成されたデジタルアセットを取得できます。これらのエンドポイントを使用することで、ファイルのPDF、テキスト、画像、およびサムネイルという種類のレプリゼンテーションを取得できます。 **Box ViewをBox以外のストレージプロバイダとともに使用できますか?** 現在、Box Viewと互換性があるのは、Boxに保存されているファイルだけです。表示する必要がなくなったファイルは、Boxから削除できます。ただし、プレビューを生成するには再度ファイルをアップロードする必要があります。そのため、少なくともファイルを表示できるようにしたい間は、Boxにファイルを保存しておくことをお勧めします。 **Box UI Elementを埋め込むときに発生するCORSエラーを修正する方法を教えてください。** [CORS](g://security/cors)エラーを修正するには、アプリケーションの構成ページで、CORSリクエストの作成を許可する各ドメインを追加します。サブドメインを表すためにワイルドカードがサポートされています (`https://*.domain.com`)。詳細については、[CORSガイド](g://security/cors)を参照してください。 **プレビューに表示されるBoxのロゴを置き換えるにはどうすればよいですか?** [プレビューUI Element](g://embed/ui-elements/logo)内でのロゴのカスタマイズについては、このガイドを参照してください。 **Source:** [https://ja.developer.box.com/guides/embed/box-view/faq/](https://ja.developer.box.com/guides/embed/box-view/faq/) --- ### リーガルホールド **Type:** guide | **Category:** リーガルホールド | **Section:** Developer Guides リーガルホールド リーガルホールドとは、係争中の訴訟や当然予期される訴訟で、関連する可能性のあるさまざまな形式の情報を会社が保全するために利用できるプロセスのことです。項目にホールドを適用すると、どのユーザーもBox… # リーガルホールド リーガルホールドとは、係争中の訴訟や当然予期される訴訟で、関連する可能性のあるさまざまな形式の情報を会社が保全するために利用できるプロセスのことです。項目にホールドを適用すると、どのユーザーもBoxから項目を削除できなくなります。 リーガルホールドの管理とフォルダやファイルへの割り当ては、Box APIを介して実行できます。 リーガルホールドは、Business Plus、Enterprise Advanced、またはEnterpriseアカウントに追加できる、[Box Governance](https://www.box.com/security/governance-and-compliance)パッケージの機能です。 ## ポリシー、割り当て、およびホールド リーガルホールドポリシーを操作するには、開発者は3つの異なるリソースを使用する必要があります。 - **ポリシー:** [リーガルホールドポリシー](r://legal_hold_policy)には、ホールドの一般的な動作が記載されています。これにより、ファイルの作成日時または更新日時に基づいて、影響を受けるファイルが特定されます。 - **割り当て:** [リーガルホールドポリシー割り当て](r://legal-hold-policy-assignment)は、ポリシーとカストディアンの関係です。この場合、カストディアンにはユーザー、フォルダ、ファイル、またはファイルバージョンを指定できます。割り当てを作成すると、そのカストディアンに属するすべてのファイルバージョンにホールドが適用されます。たとえば、フォルダに割り当てが作成されると、ポリシーはそのフォルダ内にあるすべてのファイルバージョンに適用されます。 - **ホールド**: [ファイルバージョンリーガルホールド](r://file_version_legal_hold)は、特定のファイルバージョンに割り当てられているすべてのポリシーを表します。各ファイルバージョンに設定できるファイルバージョンリーガルホールドは最大1つで、このホールドには、割り当てられた各ポリシーのリストが含まれていることに注意してください。 ## ユースケースの例 証拠開示の命令を受けた場合や顧客が係争中の場合は、リーガルホールドポリシーを作成して、保持すべきすべての証拠を追跡できます。実際のホールドは、特定のファイルまたはフォルダにポリシーを割り当てることで行われます。ホールドが不要になったら、割り当てを削除するとポリシーを解除できます。 ## 必須のスコープ リーガルホールドAPIのいずれかを使用する前に、アプリケーションでは、[GCMおよびリーガルホールドの管理のスコープ](g://api-calls/permissions-and-errors/scopes)を有効にしておく必要があります。これらは、開発者コンソールでは使用できないため、代わりにカスタマーサポートに連絡して有効する必要があります。 **Source:** [https://ja.developer.box.com/guides/legal-holds/](https://ja.developer.box.com/guides/legal-holds/) --- ### リーガルホールドポリシーの取得 **Type:** guide | **Category:** リーガルホールド | **Section:** Developer Guides リーガルホールドポリシーの取得 会社内に作成された特定のリーガルホールドポリシーの情報を取得するには、ポリシーのidを指定してGET /legal_hold_policies/:id APIエンドポイントを呼び出します。 必須のスコープ リーガルホールドAPI… # リーガルホールドポリシーの取得 会社内に作成された特定のリーガルホールドポリシーの情報を取得するには、ポリシーの`id`を指定して[`GET /legal_hold_policies/:id`](e://get_legal_hold_policies_id) APIエンドポイントを呼び出します。 ## 必須のスコープ リーガルホールドAPIのいずれかを使用する前に、アプリケーションでは適切なスコープを有効にしておく必要があります。詳細については、[必須のスコープ](g://legal-holds#required-scopes)を参照してください。 **Source:** [https://ja.developer.box.com/guides/legal-holds/get/](https://ja.developer.box.com/guides/legal-holds/get/) --- ### リテンションポリシー **Type:** guide | **Category:** リテンションポリシー | **Section:** Developer Guides … # リテンションポリシー リテンションポリシーは、指定した期間にわたってコンテンツが完全に削除されるのを防止します。管理者はリテンションポリシーを作成して特定のフォルダや会社全体に割り当てることができます。リテンションポリシーを使用すると、データを必要な期間保持し、法的にデータの保持が必要なくなったときに自動的にコンテンツを完全に削除することができます。 リテンションポリシーは、Business PlusアカウントまたはEnterpriseアカウントに追加できる、[Box Governance](https://www.box.com/security/governance-and-compliance)パッケージの機能です。 ## ポリシー、割り当て、およびリテンション リテンションポリシーを操作するには、開発者は3つの異なるリソースを使用する必要があります。 - **ポリシー:** [リテンションポリシー](r://retention_policy)には、リテンションポリシーの一般的な動作が記載されています。これにより、リテンションを保持する期間、リテンションの延長が可能かどうか、およびリテンションポリシーの終了条件が決まります。 - **割り当て:** [リテンションポリシー割り当て](r://retention_policy_assignment)は、ポリシーとフォルダや会社の関係です。割り当てを作成すると、そのフォルダや会社に属するすべてのファイルバージョンにリテンションが適用されます。たとえば、フォルダに割り当てが作成されると、ポリシーはそのフォルダ内にあるすべてのファイルバージョンに適用されます。 - **リテンション**: [ファイルバージョンリテンション](r://file_version_retention)は、特定のファイルバージョンに割り当てられているすべてのポリシーを表します。各ファイルバージョンに設定できるファイルバージョンのリテンションは最大1つで、このリソースには、割り当てられた各ポリシーのリストが含まれていることに注意してください。 Box APIの[ファイルバージョンリテンション](r://file_version_retention)セクションは非推奨になりました。代わりに、[リテンションの対象となるファイル](e://get-retention-policy-assignments-id-files-under-retention)エンドポイントまたは[リテンションの対象となるファイルバージョン](e://get-retention-policy-assignments-id-file-versions-under-retention)エンドポイントを使用できます。 ## リテンションポリシーによるファイルの削除 リテンションの対象となっているファイルは、フォルダから削除することはできますが、リテンションが期限切れるまではごみ箱に残ります。リテンションが期限切れになると、コンテンツが自動的に削除されるようにするか、ポリシーを削除するかを選択できます。 ## ファイルのリテンション期間の延長 リテンションの対象となっているファイルのリテンション期間は、`disposition_at`フィールドの値を将来の日付で[更新](e://put-files-id/#param-disposition_at)することで延長できます。一度延長した期間は、元に戻すことも、新しい日付より前に変更することもできません。 ## 必須のスコープ リテンションポリシーAPIのいずれかを使用する前に、アプリケーションでは、[GCMおよびリテンションポリシーの管理のスコープ](g://api-calls/permissions-and-errors/scopes)を有効にしておく必要があります。これらは、開発者コンソールでは使用できないため、代わりにカスタマーサポートに連絡して有効する必要があります。 **Source:** [https://ja.developer.box.com/guides/retention-policies/](https://ja.developer.box.com/guides/retention-policies/) --- ### リテンションポリシーの取得 **Type:** guide | **Category:** リテンションポリシー | **Section:** Developer Guides リテンションポリシーの取得 会社内に作成された特定のリテンションポリシーの情報を取得するには、ポリシーのidを指定してGET /retention_policies/:id APIエンドポイントを呼び出します。 必須のスコープ リテンションポリシーAPI… # リテンションポリシーの取得 会社内に作成された特定のリテンションポリシーの情報を取得するには、ポリシーの`id`を指定して[`GET /retention_policies/:id`](e://get_retention_policies_id) APIエンドポイントを呼び出します。 ## 必須のスコープ リテンションポリシーAPIのいずれかを使用する前に、アプリケーションでは適切なスコープを有効にしておく必要があります。詳細については、[必須のスコープ](g://retention-policies#required-scopes)を参照してください。 **Source:** [https://ja.developer.box.com/guides/retention-policies/get/](https://ja.developer.box.com/guides/retention-policies/get/) --- ### リモートBox MCPサーバー **Type:** guide | **Category:** Box MCPサーバー | **Section:** Developer Guides リモートBox MCPサーバー リモートBox MCPサーバーは、AIエージェントがBoxなどのサードパーティ製アプリケーションに接続して操作するための標準的な方法で、プラットフォーム間でのコンテンツやAI機能へのシームレスなアクセスを可能にします。Box MCP… # リモートBox MCPサーバー [リモートBox MCPサーバー](https://modelcontextprotocol.io/introduction)は、AIエージェントがBoxなどのサードパーティ製アプリケーションに接続して操作するための標準的な方法で、プラットフォーム間でのコンテンツやAI機能へのシームレスなアクセスを可能にします。Box MCPサーバーは、主要なAIエージェントプラットフォーム (Copilot Studio、Claude Enterprise、Mistral Le Chatなど) が未加工のファイルコンテンツを公開することなく、BoxのデータやAIを活用したツールを安全に照会および利用できるようにする橋渡しの役割を果たします。OAuth承認により、ユーザーは、自身のBoxアカウントへの制限付きアクセスをAIエージェントに許可することができるため、このような外部のAI環境内で直接、インテリジェントなドキュメント処理、高度な検索、複数ファイルのAIクエリが可能になります。 ## あらかじめ定義されたBox MCPサーバーにアクセスして管理する 1. Box管理コンソールのサイドバーにある [**統合**] をクリックします。 2. [*カテゴリ*] フィルタを使用して [MCP] を選択するか、ウィンドウ上部にある検索フィールドであらかじめ定義されたBox MCPサーバーを検索します。 3. 選択したMCPサーバーの横にある状態をクリックし、有効にする状態を選択します。 ## リストに記載されていないBox MCPサーバーを作成する 1. Box管理コンソールのサイドバーにある [**統合**] をクリックします。 2. ウィンドウ上部にある検索フィールドで**Box MCP Server**を検索します。 3. [**Box MCP Server**] アプリケーションにカーソルを合わせ、[**構成**] をクリックします。 4. [**追加の構成**] セクションで [**+ 統合資格情報を追加**] をクリックします。 5. 統合名を入力し、[**保存**] をクリックします。 6. 新しく作成したエントリの詳細を展開します。 7. 生成された**クライアントID**と**クライアントシークレット**をコピーします。 8. 外部MCPクライアントから提供された**リダイレクトURI**を入力します。 9. [**アクセススコープ**] で [**コンテンツ操作**] を有効にします。 ## クライアント側でBox MCPサーバーを追加する Box MCPサーバーを追加するための正確な手順はAIプラットフォームによって異なる場合があります。クライアント側での設定手順については、お使いのプラットフォームのドキュメントを参照してください。参考までに、次のサンプルコードを確認してください。 AIエージェントプラットフォームからBoxに接続するには、以下の操作を行う必要があります。 - エンドポイントURLを追加する: `https://mcp.box.com` - クライアントIDとクライアントシークレットを渡す。これらは、上記のBox MCPサーバーの構成時に管理コンソールの統合資格情報のセクションで生成されます。 - MCP名を渡す: `box-remote-mcp` - `authorization_token`を指定する ``` response = await client.beta.messages.create( model="claude-3-opus-20240229", # Or your preferred model max_tokens=4096, messages=conversation_history, mcp_servers=[ { "type": "url", "url": "https://mcp.box.com", "name": "box-remote-mcp", "authorization_token": BEARER_TOKEN, } ], betas=["mcp-client-2025-04-04"] ) ``` ### Claude [Claude](https://claude.ai/directory)でリモートBox MCPサーバーの使用を開始するには、Claudeアプリの設定に移動し、[*Connectors (コネクタ)*] をクリックします。このビューで [*Browse connectors (コネクタを参照)*] をクリックして [Box] を選択し、ClaudeにBoxへのアクセスを許可します。 Box MCPをClaudeデスクトップアプリと関連付ける方法を紹介するデモ動画をご確認ください。 ### Copilot Studio リモートBox MCPサーバーを追加するには、Copilot Studio側が提供する手順に従います。詳細な手順とガイダンスは、こちらのMicrosoftの公式ドキュメントで確認できます: [Add an MCP Server in Copilot Studio](https://learn.microsoft.com/en-us/microsoft-copilot-studio/agent-extend-action-mcp#add-tools-from-an-existing-mcp-connector-to-an-agent) ### Azure API Center Azure API CenterのEnterprise RegistryにリモートBox MCPサーバーを追加するには、Azureが提供する手順に従います。詳細な手順とガイダンスは、こちらのMicrosoftの公式ドキュメントで確認できます: [Add an MCP Server in Azure API Center's Enterprise Registry](https://learn.microsoft.com/en-us/azure/api-center/register-discover-mcp-server) ### Amazon Quick Suite Amazon Quick SuiteでリモートBox MCPサーバーを追加するには、以下の手順に従います。 1. Amazon Quick Suiteコンソールで、[**Integrations (統合)**] を選択し、[**Model Content Protocol**] を選択して新しい統合を作成します。 2. [**Create integration (統合の作成)**] ページで、名前と説明を入力します。 3. MCPサーバーのエンドポイントを`https://mcp.box.com`に設定します。 4. 自動公開を選択して、個人利用向けに統合をすぐに提供します。 5. [**Next (次へ)**] をクリックし、認証方法を選択して、必要な構成を指定します。 - OAuthの場合、Box MCPサーバーの構成時にBox開発者コンソールで作成したクライアント資格情報を使用します。 - トークンURLを追加します: `https://api.box.com/oauth2/token`。 - 承認URLを追加します: `https://account.box.com/api/oauth2/authorize`。 - Amazon Quick SuiteのリダイレクトURIがBox Platformアプリの設定で許可リストに登録されていることを確認します。 1. Boxへのアクセスを許可します。 2. [**Create and continue (作成して続行)**] を選択し、統合を確認して、[**Next (次へ)**] を選択します。必要に応じて、統合を他のユーザーと共有します。 詳細については、Amazon Quick Suiteドキュメントの[Model Context Protocol (MCP) integration](https://docs.aws.amazon.com/quicksuite/latest/userguide/mcp-integration.html) (英語) を参照してください。 ### AnthropicのMessages API リモートBox MCPサーバーを[AnthropicのMessages API](https://docs.anthropic.com/en/api/messages)と関連付けます。[こちらのサンプルチャットボットプロジェクト](https://github.com/box-community/mcp-client-remote-mcp-react)を複製すると、すぐに作業を開始できます。これにより、Anthropicモデルとの会話が可能になり、BoxのリモートMCPサーバーが提供するツールにアクセスできます。 リモートBox MCPを利用しているReactベースのチャットボットのデモプロジェクトを紹介する動画をご覧ください。 ### Mistral AIのLe Chat [Mistral AIのLe Chat](https://chat.mistral.ai/chat)に対してBox MCPを有効にするには、[コネクタのページ](https://chat.mistral.ai/connections)にアクセスし、[*Connect (接続)*] をクリックして、Boxへのアクセスを許可します。または、チャットビューから直接、[*Tools (ツール)*] をクリックして [Box] を選択します。 ### GitHub Copilot GitHub Copilotを使用してBox MCPサーバーを設定するには、[概要ページ](https://github.com/mcp/box/mcp-server-box-remote)に移動して、[*Install MCP server (MCPサーバーをインストール)*] をクリックします。VS Codeエディタにリダイレクトされたら、[*Install (インストール)*] をクリックし、OAuthを完了してBoxへのアクセスを許可します。 手動でクライアントIDとクライアントシークレットを入力することが必要になる場合があります。OAuthアプリケーションの登録時に、次のリダイレクトURIを含めるようにしてください。 ``` http://127.0.0.1:33418 https://vscode.dev/redirect ``` ### MCPサーバーでのBox AIの機能の使用 サードパーティ製アプリケーションでBox AIを使用すると、Box MCPサーバー経由でアプリケーションにアクセスするため、最適なエクスペリエンスと質の高い結果を得ることができます。これにより、すべての機能、パフォーマンスの向上、シームレスなユーザーエクスペリエンスが実現します。 ## 利用可能なツール リモートBox MCPサーバーでは、AIエージェントがBoxのコンテンツや機能を操作できるようにする包括的な一連のツールへのアクセスを提供します。これらのツールは、ユースケースに適切な機能をすばやく特定できるように、機能カテゴリ別に分類されています。 ### ユーザーと認証 ユーザー認証を管理したり、認証済みユーザーに関する情報を取得したりします。 | ツール | 説明 | | --- | --- | | who_am_i | 現在認証されているBoxユーザーの詳細な情報を返します。 | ### コンテンツ管理 ファイルやフォルダの管理、検索の実行、Box環境でのコンテンツ操作の処理を行います。 #### ファイル操作 | ツール | 説明 | | --- | --- | | get_file_content | Boxに保存されているファイルのコンテンツを返します。 | | get_file_details | メタデータ、権限、バージョンの詳細など、Boxからファイルの包括的な情報を取得します。 | | update_file_properties | ファイルのプロパティ (名前、説明、タグ、コレクション) を更新します。 | | upload_file | 新しいファイルをBoxにアップロードします。 | | upload_file_version | ファイルコンテンツ全体を提供してBox内の既存のファイルを更新することで、新しいファイルバージョンをアップロードします。 | #### フォルダ操作 | ツール | 説明 | | --- | --- | | create_folder | Box内に新規フォルダを作成します。 | | get_folder_details | メタデータ、権限、コラボレーション設定など、フォルダの包括的な情報を取得します。 | | list_folder_content_by_folder_id | フォルダ内のファイル、フォルダ、ウェブリンクのリストを取得します。 | | update_folder_properties | フォルダのプロパティ (名前、説明、タグ、コレクション) を更新します。 | #### 検索 | ツール | 説明 | | --- | --- | | search_files_keyword | キーワードを使用してファイルを検索します。メタデータフィルタ、ファイル拡張子によるフィルタ処理、フィールドの選択がサポートされています。 | | search_folders_by_name | キーワードの照合を使用して、名前でBox内のフォルダを検索します。 | ### Box AI AIを活用したツールを使用して、質問、インサイトの抽出、ファイルやHubでのコンテンツの分析を行います。 | ツール | 説明 | | --- | --- | | ai_qa_hub | Box AIを使用してBox Hubに質問します。 | | ai_qa_single_file | Box AIを使用して単一のファイルに質問します。 | | ai_qa_multi_file | Box AIを使用して複数のファイルに質問します。 | | ai_extract_freeform | Box AIを使用して、ファイルから自由形式でメタデータを抽出します。あらかじめ定義されたテンプレート構造は必要ありません。 | | ai_extract_structured | Box AIを使用して、ファイルから、カスタムフィールドの定義または既存のメタデータテンプレートに基づいて構造化メタデータを抽出します。 | ### コラボレーション コメント、共有リンク、コラボレーション管理ツールによるチームのコラボレーションを可能にします。 | ツール | 説明 | | --- | --- | | create_file_comment | 特定のファイルに新しいコメントを作成します。 | | list_file_comments | 特定のファイルのすべてのコメントのリストを取得します。 | | list_tasks | 特定のファイルに関連付けられたすべてのタスク (ステータス、メッセージ、期日を含む) のリストを取得します。 | ### Hub 特定のトピックやプロジェクトに関するコラボレーションコンテンツやリソースを整理するためのBox Hubsを作成および管理します。 | ツール | 説明 | | --- | --- | | add_items_to_hub | 特定のHubにファイル、フォルダ、またはウェブリンクを追加します。 | | create_hub | 新しいHubを作成します。 | | get_hub_details | 特定のHubに関する詳細情報を取得します。 | | get_hub_items | 特定のHubに関連付けられた項目 (ファイルおよびフォルダ) を取得します。 | | list_hubs | 認証済みユーザーがアクセス可能なすべてのHubのリストを取得します。 | | update_hub | 特定のHubのタイトルと説明を更新します。 | **Source:** [https://ja.developer.box.com/guides/box-mcp/remote/](https://ja.developer.box.com/guides/box-mcp/remote/) --- ### レート制限 **Type:** guide | **Category:** APIコール | **Section:** Developer Guides レート制限 APIコールのレート制限には一般的に3種類あります。Boxは独自の判断でこの制限を使用して、ネットワークリソースの保護やカスタマーエクスペリエンスの品質維持をうまく実現することができます。 ユーザーベース このレート制限を使用すると、… # レート制限 APIコールのレート制限には一般的に3種類あります。Boxは独自の判断でこの制限を使用して、ネットワークリソースの保護やカスタマーエクスペリエンスの品質維持をうまく実現することができます。 ## ユーザーベース このレート制限を使用すると、1人のユーザーによって生成されるトラフィックが多すぎる場合に発生する可能性のある問題からBoxサービスが保護されます。ユーザーが1分間に実行できるAPIコールの数は、以下で説明するように制限されています。このレート制限は最も一般的で、すべてのBoxユーザーアカウントに適用されます。通常、ユーザーの1分あたりのAPIコールが1,000を超えると、この制限が開始されますが、特定のAPIエンドポイントには別のレート制限が適用されている可能性があります。 ## サービスの品質 このレート制限は、Boxのインフラストラクチャのサービスの品質を保護することを目的としています。インフラストラクチャ内でリソースの競合が生じると、システムの性能低下や機能停止を防ぐために自動のレート制限が導入されます。たとえば、アプリケーションが偶然同じ物理データベースサーバーにアクセスした場合 (アクセス先が同じ物理リソースである関連リソースにアクセスするファイル移行ツールの使用など)、Boxでは、負荷が急増したときに一時的なレート制限が課せられ、システムの復旧に合わせて調整されることがあります。 ## ライセンスベース すべてのBox Businessプランでは、1か月あたり1社ごとに許可されるAPIコールの数がライセンスされています。このライセンスベースのレート制限は、ネットワークリソースの過剰供給や乱用を防ぐことを目的としています。顧客が使用するツールや顧客のために使用されるツールがその顧客のAPIライセンス割り当てを超過しているか、ネットワーク管理を回避しようとしていることがBoxのインフラストラクチャで検出されると、さらに対象を絞ったレート制限が課せられる場合があります。Boxの[価格ページ](https://www.box.com/pricing)では、特定のアカウントレベルでライセンスされているデフォルトのAPI割り当てを確認できますが、割り当てを増やすためにPlatform APIの価格プランを購入する顧客もいることに注意してください。 ## APIごとのレート制限 現在、Box APIにはいくつかの異なるレート制限があります。 一般的なAPIコール - 1ユーザーあたりのAPIリクエストは1000件/分 アップロード - 1ユーザーあたりのファイルアップロードリクエストは240件/分 検索 - [検索エンドポイント](e://get_search)に対して、1ユーザーあたりの検索数は6件/秒 基本のレート制限に加えてさらに2つの制限が適用 - 1ユーザーあたりの検索数は60件/分 - 会社あたりの検索数は12件/秒 Box Sign - 署名リクエストの作成と再送信: 1ユーザーあたりのリクエスト数は100件/分 - 署名リクエストの取得: 1ユーザーあたりのリクエスト数は1,000件/分 ## レート制限エラー アプリケーションがレート制限に達すると、APIは、HTTPステータスコードが`429 Too Many Requests`のAPIレスポンスを返します。 レスポンスには以下のヘッダーとJSON本文が含まれます。 ``` retry-after: 100 ``` ``` { "type": "error", "status": 429, "code": "rate_limit_exceeded", "help_url": "https://developer.box.com/guides/api-calls/permissions-and-errors/common-errors/", "message": "Request rate limit exceeded, please try again later", "request_id": "abcdef123456" } ``` 詳細については、[クライアントエラーのリソース](resource://client_error)を参照してください。 `retry-after`ヘッダーでは、次のAPIコールが再試行可能になるまで待機する秒数を指示します。一般的には、APIコールの再試行に指数バックオフ戦略を使用することをお勧めします。 **Source:** [https://ja.developer.box.com/guides/api-calls/permissions-and-errors/rate-limits/](https://ja.developer.box.com/guides/api-calls/permissions-and-errors/rate-limits/) --- ### レスポンスの並べ替え **Type:** guide | **Category:** APIコール | **Section:** Developer Guides レスポンスの並べ替え APIから項目のコレクションが返される場合は、APIレスポンスの並べ替えがサポートされることがよくあります。 sortおよびdirection… # レスポンスの並べ替え APIから項目のコレクションが返される場合は、APIレスポンスの並べ替えがサポートされることがよくあります。 `sort`および`direction`クエリパラメータを使用すると、昇順または降順のいずれかでコレクションを並べ替えることができます。 ``` curl https://api.box.com/2.0/folders/0/items?sort=size&direction=DESC \ -H "authorization: Bearer ACCESS_TOKEN" ``` コレクションを返すすべてのAPIエンドポイントが並べ替えをサポートしているわけではありません。特にマーカーベースのページネーションを使用するエンドポイントでは、結果の並べ替えがサポートされないことがよくあります。 ## 並べ替え基準 並べ替えの基準となるフィールドは`sort`クエリパラメータによって定義されます。この値に使用できるオプションについては、APIエンドポイントのドキュメントを確認してください。 一部のAPIでは、`sort`フィールドが項目の並べ替えの2番目の基準になっています。たとえば、[`GET /folders/:id/items`](endpoint://get_folders_id_items)エンドポイントの場合、結果は常に、まずその種類で並べ替えられてから、他の基準で並べ替えられます。 ## 並べ替えの方向 並べ替えの方向では、`ASC` (昇順の場合) と`DESC` (降順の場合) という2つの値がサポートされます。 **Source:** [https://ja.developer.box.com/guides/api-calls/sorting/](https://ja.developer.box.com/guides/api-calls/sorting/) --- ### レプリゼンテーション **Type:** guide | **Category:** レプリゼンテーション | **Section:** Developer Guides レプリゼンテーション レプリゼンテーションとは、Boxに保存されているファイルの代替アセットです。このようなアセットには、PDF、サムネイル、またはテキスト抽出を使用できます。 レプリゼンテーションは、Box… # レプリゼンテーション レプリゼンテーションとは、Boxに保存されているファイルの代替アセットです。このようなアセットには、PDF、サムネイル、またはテキスト抽出を使用できます。 レプリゼンテーションは、Boxへのアップロード時またはアセットのリクエスト時に、サポートされているファイルの種類に対して自動的に生成されます。 このようなレプリゼンテーションは、`fields=representations`クエリパラメータと`x-rep-hints`ヘッダーを使用することで、`GET /files/:id`エンドポイントを介して公開されます。 **Source:** [https://ja.developer.box.com/guides/representations/](https://ja.developer.box.com/guides/representations/) --- ### ロゴのカスタマイズ **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides ロゴのカスタマイズ それぞれのBox UI Elementsでは、埋め込まれたコンテナの左上隅に配置するカスタムロゴを指定できます。 デフォルトでは、それぞれのUI Elementでロゴとして汎用的なプレースホルダが使用されます。このプレースホルダは、Box… # ロゴのカスタマイズ それぞれのBox UI Elementsでは、埋め込まれたコンテナの左上隅に配置するカスタムロゴを指定できます。 デフォルトでは、それぞれのUI Elementでロゴとして汎用的なプレースホルダが使用されます。このプレースホルダは、Boxのロゴまたはカスタムロゴ (会社のロゴなど) に置き換えられます。 UI Elementにロゴを追加するには、JavaScript設定コードでロゴのURLをオプションとして指定します。コンテンツプレビューUI Elementを使用したこの追加方法の例を以下に示します。 ``` var preview = new Box.Preview(); preview.show(fileId, accessToken, { container: '.preview-container', sharedLink: 'https://app.box.com/v/foo', sharedLinkPassword: 'bar', collection: [FILE_ID, '123', '234', ...], header: 'light', logoUrl: 'http://i.imgur.com/xh8j3E2.png', showAnnotations: true, showDownload: true }); ``` # Boxのロゴ UI ElementにBoxのロゴを表示するには、文字列`box`を`logoURL`オプションとして指定してください。 ## 画像サイズ 画像ファイルは、高さの最大値32ピクセル、幅の最大値80ピクセルに収まります。画像がそれより大きい場合は、このサイズに合わせて縮小されます。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/logo/](https://ja.developer.box.com/guides/embed/ui-elements/logo/) --- ### ワークフローの取得 **Type:** guide | **Category:** Box Relay | **Section:** Developer Guides ワークフローの取得 ワークフローを取得エンドポイントを使用すると、特定のフォルダに関するワークフローをすべて取得できます。これにより、WORKFLOW_MANUAL_START… # ワークフローの取得 [ワークフローを取得](e://get-workflows)エンドポイントを使用すると、特定のフォルダに関するワークフローをすべて取得できます。これにより、`WORKFLOW_MANUAL_START`タイプのフローの有無に関係なく、すべてのワークフローが返されます。 これらのエンドポイントの使用方法の詳細については、Boxの[ブログ](https://medium.com/@Box_Developers/%E6%89%8B%E5%8B%95%E9%96%8B%E5%A7%8B%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BCapi%E3%81%A8box-relay-64f9136f1682)記事を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-relay/get-workflows/](https://ja.developer.box.com/guides/box-relay/get-workflows/) --- ### ワークフローの開始 **Type:** guide | **Category:** Box Relay | **Section:** Developer Guides ワークフローの開始 ワークフローを開始エンドポイントを使用すると、WORKFLOW_MANUAL_STARTタイプのワークフロー内のフローを開始できます。他のタイプのフローは開始できません。実行時に構成を承認するようにフローを設定している場合は、オプションのoutcomes… # ワークフローの開始 [ワークフローを開始エンドポイント](e://post-workflows-id-start)を使用すると、`WORKFLOW_MANUAL_START`タイプのワークフロー内のフローを開始できます。他のタイプのフローは開始できません。実行時に構成を承認するようにフローを設定している場合は、オプションの`outcomes`配列オブジェクトを送信する必要があります。 このエンドポイントの使用方法の詳細については、Boxの[ブログ](https://medium.com/@Box_Developers/%E6%89%8B%E5%8B%95%E9%96%8B%E5%A7%8B%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BCapi%E3%81%A8box-relay-64f9136f1682)記事を参照してください。 **Source:** [https://ja.developer.box.com/guides/box-relay/start-workflow/](https://ja.developer.box.com/guides/box-relay/start-workflow/) --- ### 一括操作 **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides 一括操作 以下のページでは、複数のフォルダに対するさまざまな一括操作の方法について説明します。 # 一括操作 以下のページでは、複数のフォルダに対するさまざまな一括操作の方法について説明します。 **Source:** [https://ja.developer.box.com/guides/folders/bulk/](https://ja.developer.box.com/guides/folders/bulk/) --- ### 一般的なエラー **Type:** guide | **Category:** 承認 | **Section:** Developer Guides 一般的なエラー サービスまたはEnterpriseのアプリ承認を取得できません このエラーは、入力したクライアントIDが無効であることを示しています。この問題を解決するには、開発者コンソールからクライアントID… # 一般的なエラー ## サービスまたはEnterpriseのアプリ承認を取得できません このエラーは、入力したクライアントIDが無効であることを示しています。この問題を解決するには、開発者コンソールからクライアントIDを再度コピーし、末尾に余分な文字を含めていないことを確認してください。 ## アプリ承認の追加に問題が発生しました このエラーは、Enterprise設定を表示する権限は付与されているが、編集する権限が付与されていないBox共同管理者であることを示しています。アプリケーションを正常に承認するには、Box管理者に編集権限を付与してもらう必要があります。 ## 管理者により無効化されました このエラーは、承認の要件の一部が満たされていないことを示しています。特定のアプリケーションに必要な手順を確認するには、Boxの[承認ガイド](g://authorization)を参照してください。 **Source:** [https://ja.developer.box.com/guides/authorization/common-errors/](https://ja.developer.box.com/guides/authorization/common-errors/) --- ### 一般的なエラー **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 一般的なエラー メタデータクエリAPIのエラーのほとんどは、他のAPIによって返されるエラーに似ています。ただし、現在、一部の正しくないクライアントリクエストでは、適切な400 Bad Requestエラーではなく、サーバー側のエラーとともに、5XXの範囲のHTTP… # 一般的なエラー メタデータクエリAPIのエラーのほとんどは、[他のAPIによって返されるエラーに似ています](g://api-calls/permissions-and-errors/common-errors)。ただし、現在、一部の正しくないクライアントリクエストでは、適切な`400 Bad Request`エラーではなく、サーバー側のエラーとともに、`5XX`の範囲のHTTPステータスコードが返される場合があります。 これは既知の問題であり、近日中に解決される予定です。 ## テンプレートキーとスコープが正しくない 一般的なエラーとして、リクエストの`from`値に誤った値が使用されると、`HTTP 4XX`の範囲のさまざまなエラーが生じる可能性があります。 正しい`from`値を使用しないと、APIは検索対象のテンプレートを認識できません。`from`の値は、`scope.templateKey`の形式にする必要があります。 この場合、`scope`は会社のテンプレートのスコープで、`enterprise_123456`のようになります。ここでの数値は会社のIDです。`global`スコープや短縮形の`enterprise`スコープなど、この形式に一致しないスコープではエラーが返されます。 `templateKey`は、社内のメタデータテンプレートの一意のキーです。指定したキーを持つテンプレートが存在しない場合、またはキーが存在しないのにそのキーが誤った会社で使用されている場合は、このAPIによってエラーが返されます。 [企業のすべてのメタデータテンプレートのリストを取得エンドポイント](e://get-metadata-templates-enterprise)を使用すると、`scope`と`templateKey`を含む、社内で使用できるすべてのテンプレートのリストを取得できます。 ## query_paramに値がない 一般的なエラーとして、`query_params`オブジェクトにクエリ引数を含めるのを忘れると、`unexpected_json_type`というコードとともに`HTTP 400`エラーが返されます。 `query_params`にすべての引数が存在しないと、APIはリクエストを完全なクエリにコンパイルできません。 たとえば、検索`query`が`amount >= :value AND status = :status`のようになっているとします。コロン`:`で始まる引数はすべて、`query_params`に存在する必要があります。この場合、クエリパラメータは次のようになります。これらの値のいずれかを忘れると、エラーが発生します。 ``` "query_params": { "value": 100, "status": "active" } ``` 各引数の名前は開発者の好みに合わせて構成できるため、フィールドキーと一致させる必要はありません。必要なのは、先頭に`:`を付けることだけです。 ## ancestor_folder_idがない 一般的なエラーとして、リクエストに`ancestor_folder_id`を指定し忘れると、`bad_request`というコードとともに`HTTP 400`エラーが返されます。 `ancestor_folder_id`値がないと、APIは、検索対象の結果が含まれているフォルダを認識できません。よくわからない場合は、値`0`を使用すると、ユーザーのルートフォルダを指定できます。 **Source:** [https://ja.developer.box.com/guides/metadata/queries/errors/](https://ja.developer.box.com/guides/metadata/queries/errors/) --- ### 事前チェック **Type:** guide | **Category:** アップロード | **Section:** Developer Guides 事前チェック 事前チェックAPIを使用すると、アプリケーションでアップロードを開始する前にそのファイルがBoxに受け入れられるかどうかを確認できます。このAPI… # 事前チェック 事前チェックAPIを使用すると、アプリケーションでアップロードを開始する前にそのファイルがBoxに受け入れられるかどうかを確認できます。このAPIは、新しいファイルにも、既存ファイルの新しいバージョンのアップロードにも使用できます。 ## チェックリスト 事前チェックでは、ファイルが実際にアップロードされるときと同じように、以下のすべてのチェックが実行されます。 - フォルダにアップロードするアプリケーションおよびユーザーの権限 - ファイル名の競合 - ファイルサイズの上限や制限 - フォルダおよびファイルの名前に関する制約事項 - フォルダおよびアカウントのストレージ容量 ## 新しいファイルのチェック 新しいファイルのチェックを実行するには、実際のファイルをアップロードする場合と同じパラメータ (バイナリコンテンツを除く) を使用して[`OPTIONS /files/content`](e://options_files_content) APIを呼び出してください。 ## 新しいファイルバージョンのチェック 新しいファイルバージョンのチェックを実行するには、実際のファイルをアップロードする場合と同じパラメータ (バイナリコンテンツを除く) を使用して[`OPTIONS /files/:id/content`](e://options_files_content) APIを呼び出してください。 ## チェックと分割アップロード [分割アップロード](g://uploads/chunked)を実行する場合、[アップロードセッションの作成](g://uploads/chunked/create-session)でも事前チェックが実行されるため、事前チェックは必須ではありません。 ## レスポンスコード APIコールで問題が検出されると、HTTP `409 Conflict`ステータスコードとともに可能性のある競合を説明するメッセージが返されます。問題が検出されなかった場合、HTTP `200 OK`ステータスコードが返され、アップロードを続行できます。 `200 OK`レスポンスは、アップロード呼び出しが実際に成功することを保証するものではありません。事前チェックによりアップロードの失敗が99%以上削減されることが実証されていますが、ファイルのアップロード時に同時実行の問題が発生する可能性は残っています。 非常にアクティブで、容量制限に近づいているフォルダ、一般的なファイル名、およびアカウントの場合、事前チェックで`200 OK`が返されたとしても、実際のアップロード中に競合が発生する可能性があります。 ## レスポンスの本文 事前チェックでは多くの場合、競合が検出されるとAPIレスポンスで有益なデータが返されます。たとえば名前の競合が検出された場合、アプリケーションではエラーレスポンスで返される`SHA-1`を使用して、アップロードしようとしているファイルと既存ファイルが同一であるかどうかを確認できます。 **Source:** [https://ja.developer.box.com/guides/uploads/check/](https://ja.developer.box.com/guides/uploads/check/) --- ### 以前コラボレーションが許可されたドメインの削除 **Type:** guide | **Category:** コラボレーション | **Section:** Developer Guides 以前コラボレーションが許可されたドメインの削除 コラボレーションの許可されたドメインのリストからドメインを削除すると、自分の会社とそのドメイン内のユーザーとの間にコラボレーションを作成できなくなります。 許可リストからドメインを削除するには、リストのエントリのID… # 以前コラボレーションが許可されたドメインの削除 コラボレーションの許可されたドメインのリストからドメインを削除すると、自分の会社とそのドメイン内のユーザーとの間にコラボレーションを作成できなくなります。 許可リストからドメインを削除するには、リストのエントリのIDを削除リクエストに指定します。このIDは、[新しいドメインを許可する](guide://collaborations/allowed-domains/create)か[社内で許可されているドメインのリストを取得する](guide://collaborations/allowed-domains/list)と返されます。 **Source:** [https://ja.developer.box.com/guides/collaborations/allowed-domains/delete/](https://ja.developer.box.com/guides/collaborations/allowed-domains/delete/) --- ### 会社全体での検索 **Type:** guide | **Category:** 検索 | **Section:** Developer Guides 会社全体での検索 デフォルトでは、認証済みユーザーがアクセスできるコンテンツに対してのみ、検索が実行されます。場合によっては、管理者は、全ユーザーが所有する全コンテンツを検索することもできます。そのようなユースケースでは、scopeクエリパラメータの値をenterprise… # 会社全体での検索 デフォルトでは、認証済みユーザーがアクセスできるコンテンツに対してのみ、検索が実行されます。場合によっては、管理者は、全ユーザーが所有する全コンテンツを検索することもできます。そのようなユースケースでは、`scope`クエリパラメータの値を`enterprise_content`に設定できます。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&scope=enterprise_content" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); searchParams.setScope("enterprise_content"); PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", mdFilters: filters, scope: "enterprise_content"); ``` ``` client.search().query("sales", metadata_filters=metadata_search_filters, scope="enterprise_content") ``` ``` client.search.query( 'sales', { scope: "enterprise_content" }) .then(results => { // ... }); ``` `enterprise_content`スコープは、管理者が[サポートチャネル](p://support)を通じてリクエストできます。このスコープがユーザーに対して有効になっていると、そのユーザーは、アクセスできるコンテンツだけでなく、会社全体のコンテンツに対してクエリを実行できます。 **Source:** [https://ja.developer.box.com/guides/search/enterprise/](https://ja.developer.box.com/guides/search/enterprise/) --- ### 保留中のコラボレーションの取得 **Type:** guide | **Category:** コラボレーション | **Section:** Developer Guides 保留中のコラボレーションの取得 ユーザーの保留中のコラボレーションを取得するには、statusにpendingを指定してGET /collaborations APIを呼び出します。 これにより、ユーザーの保留中のコラボレーションを表示する現在のリストのみが返されます。このAPI… # 保留中のコラボレーションの取得 ユーザーの保留中のコラボレーションを取得するには、`status`に`pending`を指定して`GET /collaborations` APIを呼び出します。 これにより、ユーザーの保留中のコラボレーションを表示する現在のリストのみが返されます。このAPIでは、ユーザーのすべてのコラボレーションを返すことは許可されていません。 **Source:** [https://ja.developer.box.com/guides/collaborations/pending/](https://ja.developer.box.com/guides/collaborations/pending/) --- ### 公式サポートが終了したBoxの次世代.NET SDK **Type:** guide | **Category:** ツール | **Section:** Developer Guides 公式サポートが終了したBoxの次世代.NET SDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDK… # 公式サポートが終了したBoxの次世代.NET SDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDKをベースにしたアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 新機能や更新を含む、今後の開発はすべて、BoxコアSDKを通じて提供されます。スタンドアロンの生成されたアーティファクトは、BoxコアSDKのバージョン`v10`で導入されました。これは、現在、個別の[ブランチ](https://github.com/box/box-windows-sdk-v2/tree/main)として提供されています。 Boxの次世代SDKからBoxコアSDK `v10`への切り替え方法については、[移行ガイド](https://github.com/box/box-windows-sdk-v2/blob/main/migration-guides/from-dotnet-sdk-gen-v1-to-box-windows-sdk.md)を参照してください。 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning)を参照してください。 **Source:** [https://ja.developer.box.com/guides/tooling/sdks/dotnet-gen/](https://ja.developer.box.com/guides/tooling/sdks/dotnet-gen/) --- ### 公式サポートが終了したBoxの次世代Java SDK **Type:** guide | **Category:** ツール | **Section:** Developer Guides 公式サポートが終了したBoxの次世代Java SDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDK… # 公式サポートが終了したBoxの次世代Java SDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDKをベースにしたアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 **新機能や更新を含む、今後の開発はすべて、BoxコアSDKを通じて提供されます。スタンドアロンの生成されたアーティファクトは、BoxコアSDKのバージョン`v10`で導入されました。これは、現在、個別の[ブランチ](https://github.com/box/box-java-sdk/tree/main)として提供されています。** Boxの次世代SDKからBoxコアSDK `v10`への切り替え方法については、[移行ガイド](https://github.com/box/box-java-sdk/blob/main/migration-guides/from-box-java-sdk-gen-v0-to-box-java-sdk.md)を参照してください。 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning)を参照してください。 **Source:** [https://ja.developer.box.com/guides/tooling/sdks/java-gen/](https://ja.developer.box.com/guides/tooling/sdks/java-gen/) --- ### 公式サポートが終了したBoxの次世代Python SDK **Type:** guide | **Category:** ツール | **Section:** Developer Guides 公式サポートが終了したBoxの次世代Python SDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDK… # 公式サポートが終了したBoxの次世代Python SDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDKをベースにしたアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 **新機能や更新を含む、今後の開発はすべて、BoxコアSDKを通じて提供されます。スタンドアロンの生成されたアーティファクトは、BoxコアSDKのバージョン`v10`で導入されました。これは、現在、個別の[ブランチ](https://github.com/box/box-python-sdk/tree/main)として提供されています。** Boxの次世代SDKからBoxコアSDK `v10`への切り替え方法については、[移行ガイド](https://github.com/box/box-python-sdk/blob/main/migration-guides/from-box-python-sdk-gen-v1-to-box-python-sdk.md)を参照してください。 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning)を参照してください。 **Source:** [https://ja.developer.box.com/guides/tooling/sdks/python-gen/](https://ja.developer.box.com/guides/tooling/sdks/python-gen/) --- ### 公式サポートが終了したBoxの次世代Swift SDK **Type:** guide | **Category:** ツール | **Section:** Developer Guides 公式サポートが終了したBoxの次世代Swift SDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDK… # 公式サポートが終了したBoxの次世代Swift SDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDKをベースにしたアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 **新機能や更新を含む、今後の開発はすべて、BoxコアSDKを通じて提供されます。スタンドアロンの生成されたアーティファクトは、BoxコアSDKのバージョン`v10`で導入されました。これは、現在、個別の[ブランチ](https://github.com/box/box-ios-sdk/tree/main)として提供されています。** Boxの次世代SDKからBoxコアSDK `v10`への切り替え方法については、[移行ガイド](https://github.com/box/box-ios-sdk/blob/main/migration-guides/from-box-swift-sdk-gen-v0-to-box-ios-sdk.md)を参照してください。 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning)を参照してください。 **Source:** [https://ja.developer.box.com/guides/tooling/sdks/swift-gen/](https://ja.developer.box.com/guides/tooling/sdks/swift-gen/) --- ### 公式サポートが終了したBoxの次世代TypeScript SDK **Type:** guide | **Category:** ツール | **Section:** Developer Guides 公式サポートが終了したBoxの次世代TypeScript SDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDK… # 公式サポートが終了したBoxの次世代TypeScript SDK 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。 既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDKをベースにしたアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 **新機能や更新を含む、今後の開発はすべて、BoxコアSDKを通じて提供されます。スタンドアロンの生成されたアーティファクトは、BoxコアSDKのバージョン`v10`で導入されました。これは、現在、個別の[ブランチ](https://github.com/box/box-node-sdk/tree/main)として提供されています。** Boxの次世代SDKからBoxコアSDK `v10`への切り替え方法については、[移行ガイド](https://github.com/box/box-node-sdk/blob/main/docs/migration-guides/from-box-typescript-sdk-gen-v1-to-box-node-sdk.md)を参照してください。 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning)を参照してください。 **Source:** [https://ja.developer.box.com/guides/tooling/sdks/typescript-gen/](https://ja.developer.box.com/guides/tooling/sdks/typescript-gen/) --- ### 共有フォルダの設定 **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides … # 共有フォルダの設定 共有フォルダへのアクセスを管理する最後の手順として、必要なフォルダ構造をサービスアカウント内に作成します。次に、これらのフォルダに必要なユーザーの種類とアクセスレベルに基づいて、グループに必要な権限をマップします。ここでは、マーケティング部門を例に挙げて説明します。 ``` { "name": "Marketing Department", "parent": { "id": "0" }, "children": [ { "name": "Projects", "children": [] }, { "name": "Newsletter", "children": [ { "name": "Drafts", "children": [] } ] } ] } ``` このサンプルフォルダ構造を基にし、以前に使用したフォルダツリー作成コードを使用して`etc/skel`構造を作成できます。このコードは、実際の構造に応じて変更できます。 この構造が作成されると、各グループでアクセスする必要があるフォルダのIDが必要になります。たとえば、マーケティングマネージャであれば、マーケティング部門内のすべてのフォルダに対する`editor`アクセス権限が必要になるでしょう。一方、マーケティングプロジェクトマネージャが必要なのは、`Projects`フォルダへの`editor`アクセスだけと考えられます。このため、2つのグループを作成して、それぞれに適切な権限を付与します。 ``` "use strict"; const fs = require("fs"); const box = require("box-node-sdk"); let configFile = fs.readFileSync("config.json"); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let serviceAccountClient = session.getAppAuthClient("enterprise"); const marketingDeptFolderID = "45765309069"; const marketingProjectsFolderID = "45765461670"; const marketingManagersGroupName = "Marketing Managers"; const marketingProjectManagersGroupName = "Marketing Project Managers"; (async () => { let marketingManagerGroup; try { marketingManagerGroup = await serviceAccountClient.groups.create( marketingManagersGroupName, { description: "For Marketing department leadership team.", invitability_level: "admins_only", member_viewability_level: "admins_only" } ); } catch (e) { marketingManagerGroup = await handleGroupConflictError( e, marketingManagersGroupName, serviceAccountClient ); } console.log(marketingManagerGroup); let marketingProjectManagerGroup; try { marketingProjectManagerGroup = await serviceAccountClient.groups.create( marketingProjectManagersGroupName, { description: "All team members who manage Marketing projects.", invitability_level: "admins_and_members", member_viewability_level: "admins_and_members" } ); } catch (e) { marketingProjectManagerGroup = await handleGroupConflictError( e, marketingProjectManagersGroupName, serviceAccountClient ); } console.log(marketingProjectManagerGroup); let collabMarketingManagers; try { collabMarketingManagers = await serviceAccountClient.collaborations.createWithGroupID( marketingManagerGroup.id, marketingDeptFolderID, serviceAccountClient.collaborationRoles.EDITOR ); } catch (e) { collabMarketingManagers = await handleFolderCollaborationConflictError( e, marketingDeptFolderID, marketingManagerGroup.id, serviceAccountClient ); } console.log(collabMarketingManagers); let collabMarketingProjectManagers; try { collabMarketingProjectManagers = await serviceAccountClient.collaborations.createWithGroupID( marketingProjectManagerGroup.id, marketingProjectsFolderID, serviceAccountClient.collaborationRoles.EDITOR ); } catch (e) { collabMarketingProjectManagers = await handleFolderCollaborationConflictError( e, marketingProjectsFolderID, marketingProjectManagerGroup.id, serviceAccountClient ); } console.log(collabMarketingProjectManagers); })(); async function autoPage(iterator, collection = []) { let moveToNextItem = async () => { let item = await iterator.next(); if (item.value) { collection.push(item.value); } if (item.done !== true) { return moveToNextItem(); } else { return collection; } }; return moveToNextItem(); } async function handleGroupConflictError(e, groupName, boxClient) { let storeIteratorSetting = boxClient._useIterators; if (e && e.response && e.response.body && e.response.body.status === 409) { boxClient._useIterators = true; let groupsIterator = await boxClient.groups.getAll({ name: groupName }); let groups = await autoPage(groupsIterator); let results = groups.filter(group => { return group.name === groupName; }); if (results.length > 0) { boxClient._useIterators = storeIteratorSetting; return results[0]; } else { throw new Error("Couldn't create group or find existing group."); } } else { throw e; } } async function handleFolderCollaborationConflictError( e, folderID, groupID, boxClient ) { let storeIteratorSetting = boxClient._useIterators; if (e && e.response && e.response.body && e.response.body.status === 409) { boxClient._useIterators = true; let collaborationsIterator = await boxClient.folders.getCollaborations( folderID ); let collaborations = await autoPage(collaborationsIterator); let results = collaborations.filter(collaboration => { return collaboration.accessible_by.id === groupID; }); console.log(results); if (results.length > 0) { boxClient._useIterators = storeIteratorSetting; return results[0]; } else { throw new Error( "Couldn't create new collaboration or located existing collaboration." ); } } else { throw e; } } ``` ``` package com.box; import java.io.BufferedReader; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Collection; import java.util.Optional; import com.box.sdk.BoxAPIException; import com.box.sdk.BoxCollaboration; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxFolder; import com.box.sdk.BoxGroup; import com.eclipsesource.json.JsonObject; public class BoxPlayground { public static void main(String[] args) throws Exception { Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { String marketingDeptFolderID = "45765309069"; String marketingProjectsFolderID = "45765461670"; String marketingManagersGroupName = "Marketing Managers"; String marketingProjectManagersGroupName = "Marketing Project Managers"; BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxGroup.Info marketingManagerGroup; try { marketingManagerGroup = BoxGroup.createGroup(serviceAccountClient, marketingManagersGroupName, null, null, "For Marketing department leadership team.", "admins_only", "admins_only"); } catch (BoxAPIException e) { JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); int status = errorMessage.get("status").asInt(); if (status == 409) { marketingManagerGroup = handleGroupConflictError(marketingManagersGroupName, serviceAccountClient); } else { throw e; } } System.out.println(marketingManagerGroup.getID()); BoxGroup.Info marketingProjectManagerGroup; try { marketingProjectManagerGroup = BoxGroup.createGroup(serviceAccountClient, marketingProjectManagersGroupName, null, null, "All team members who manage Marketing projects.", "admins_and_members", "admins_and_members"); } catch (BoxAPIException e) { JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); int status = errorMessage.get("status").asInt(); if (status == 409) { marketingProjectManagerGroup = handleGroupConflictError(marketingProjectManagersGroupName, serviceAccountClient); } else { throw e; } } System.out.println(marketingProjectManagerGroup.getID()); BoxFolder marketDeptFolder = new BoxFolder(serviceAccountClient, marketingDeptFolderID); BoxCollaboration.Info marketingDeptFolderCollaboration; try { marketingDeptFolderCollaboration = marketDeptFolder.collaborate( new BoxGroup(serviceAccountClient, marketingManagerGroup.getID()), BoxCollaboration.Role.EDITOR); } catch (BoxAPIException e) { System.out.println("Searching for existing collaborator."); JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); int status = errorMessage.get("status").asInt(); if (status == 409) { marketingDeptFolderCollaboration = handleFolderCollaborationConflict(marketDeptFolder, marketingManagerGroup.getID()); } else { throw e; } } System.out.println(marketingDeptFolderCollaboration.getID()); BoxFolder marketingProjectsFolder = new BoxFolder(serviceAccountClient, marketingProjectsFolderID); BoxCollaboration.Info marketingProjectsFolderCollaboration; try { marketingProjectsFolderCollaboration = marketingProjectsFolder.collaborate( new BoxGroup(serviceAccountClient, marketingProjectManagerGroup.getID()), BoxCollaboration.Role.EDITOR); } catch (BoxAPIException e) { System.out.println("Searching for existing collaborator."); JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); int status = errorMessage.get("status").asInt(); if (status == 409) { marketingProjectsFolderCollaboration = handleFolderCollaborationConflict(marketingProjectsFolder, marketingProjectManagerGroup.getID()); } else { throw e; } } System.out.println(marketingProjectsFolderCollaboration.getID()); } } private static BoxCollaboration.Info handleFolderCollaborationConflict(BoxFolder folder, String groupID) throws Exception { System.out.println("Already collaborated..."); Collection<BoxCollaboration.Info > collaborations = folder.getCollaborations(); Optional<BoxCollaboration.Info > results = collaborations.stream().filter(c -> { return c.getAccessibleBy().getID().intern() == groupID.intern(); }).findFirst(); if (results.isPresent()) { return results.get(); } else { throw new Exception("Couldn't create new collaboration or find existing collaboration."); } } private static BoxGroup.Info handleGroupConflictError(String groupName, BoxDeveloperEditionAPIConnection boxClient) throws Exception { Iterable<BoxGroup.Info > groups = BoxGroup.getAllGroupsByName(boxClient, groupName); BoxGroup.Info foundGroup = null; for (BoxGroup.Info group: groups) { if (group.getName().intern() == groupName) { foundGroup = group; break; } } if (foundGroup != null) { return foundGroup; } else { throw new Exception("Couldn't create group or find existing group."); } } } ``` ``` using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Box.V2; using Box.V2.Config; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Box.V2.Models.Request; using Newtonsoft.Json.Linq; namespace BoxPlayground { public class Program { static void Main(string[] args) { ExecuteMainAsync().Wait(); } private static async Task ExecuteMainAsync() { using(FileStream fs = new FileStream("./config.json", FileMode.Open)) { var marketingDeptFolderId = "45765309069"; var marketingProjectsFolderId = "45765461670"; var marketingManagersGroupName = "Marketing Managers"; var marketingProjectManagersGroupName = "Marketing Project Managers"; var session = new BoxJWTAuth(BoxConfig.CreateFromJsonFile(fs)); var serviceAccountClient = session.AdminClient(session.AdminToken()); BoxGroup marketingManagerGroup; try { marketingManagerGroup = await serviceAccountClient.GroupsManager.CreateAsync(new BoxGroupRequest { Name = marketingManagersGroupName, InvitabilityLevel = "admins_only", MemberViewabilityLevel = "admins_only" }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { marketingManagerGroup = await HandleGroupConflictError(marketingManagersGroupName, serviceAccountClient); } else { throw e; } } System.Console.WriteLine(marketingManagerGroup.Id); BoxGroup marketingProjectsManagerGroup; try { marketingProjectsManagerGroup = await serviceAccountClient.GroupsManager.CreateAsync(new BoxGroupRequest { Name = marketingProjectManagersGroupName, InvitabilityLevel = "admins_and_members", MemberViewabilityLevel = "admins_and_members" }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { marketingProjectsManagerGroup = await HandleGroupConflictError(marketingProjectManagersGroupName, serviceAccountClient); } else { throw e; } } System.Console.WriteLine(marketingProjectsManagerGroup.Id); BoxCollaboration marketingManagerCollab; try { marketingManagerCollab = await serviceAccountClient.CollaborationsManager.AddCollaborationAsync( new BoxCollaborationRequest { AccessibleBy = new BoxCollaborationUserRequest { Id = marketingManagerGroup.Id, Type = BoxType.group }, Item = new BoxRequestEntity { Id = marketingDeptFolderId, Type = BoxType.folder }, Role = BoxCollaborationRole.Editor.ToString() }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { marketingManagerCollab = await HandleFolderCollaborationConflictError(marketingDeptFolderId, marketingManagerGroup.Id, serviceAccountClient); } else { throw e; } } System.Console.WriteLine(marketingManagerCollab.Id); BoxCollaboration marketingProjectsManagerCollab; try { marketingProjectsManagerCollab = await serviceAccountClient.CollaborationsManager.AddCollaborationAsync( new BoxCollaborationRequest { AccessibleBy = new BoxCollaborationUserRequest { Id = marketingProjectsManagerGroup.Id, Type = BoxType.group }, Item = new BoxRequestEntity { Id = marketingProjectsFolderId, Type = BoxType.folder }, Role = BoxCollaborationRole.Editor.ToString() }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { marketingProjectsManagerCollab = await HandleFolderCollaborationConflictError(marketingProjectsFolderId, marketingProjectsManagerGroup.Id, serviceAccountClient); } else { throw e; } } System.Console.WriteLine(marketingProjectsManagerCollab.Id); } } public async static Task < BoxGroup > HandleGroupConflictError(string groupName, BoxClient boxClient) { System.Console.WriteLine("Found conflict."); var groups = await boxClient.GroupsManager.GetAllGroupsAsync(autoPaginate: true); return groups.Entries.Find((group) = >{ return group.Name == groupName; }); } public async static Task < BoxCollaboration > HandleFolderCollaborationConflictError(string folderId, string groupId, BoxClient boxClient) { System.Console.WriteLine("Already a collaborator"); var collaborations = await boxClient.FoldersManager.GetCollaborationsAsync(folderId); var existingCollab = collaborations.Entries.Find((collaboration) = >{ return collaboration.AccessibleBy.Id == groupId; }); if (existingCollab != null) { return existingCollab; } else { throw new Exception("Couldn't create new collaboration or find existing collaboration"); } } } } ``` ``` box groups:create "Marketing Managers" --invite=admins_only --view-members=admins_only box groups:create "Marketing Project Managers" --invite=admins_and_members --view-members=admins_and_members ``` グループを作成したら、ユーザーをそのグループに追加すると、そのユーザーにサービスアカウント内に作成された共有フォルダへの所定のアクセス権が付与されます。 ``` 'use strict' const fs = require('fs'); const box = require('box-node-sdk'); let configFile = fs.readFileSync('config.json'); configFile = JSON.parse(configFile); let session = box.getPreconfiguredInstance(configFile); let serviceAccountClient = session.getAppAuthClient("enterprise"); const marketingManagerGroupID = "839790214"; const marketingManagerUserID = "275111793"; (async () => { let addedUser; try { addedUser = await serviceAccountClient.groups.addUser(marketingManagerGroupID, marketingManagerUserID, { role: serviceAccountClient.groups.userRoles.ADMIN }); } catch (e) { addedUser = await handleGroupMembershipConflictError(e, marketingManagerGroupID, marketingManagerUserID, serviceAccountClient); } console.log(addedUser); })(); async function autoPage(iterator, collection = []) { let moveToNextItem = async () => { let item = await iterator.next(); if (item.value) { collection.push(item.value); } if (item.done !== true) { return moveToNextItem(); } else { return collection; } } return moveToNextItem(); } async function handleGroupMembershipConflictError(e, groupID, userID, boxClient) { let storeIteratorSetting = boxClient._useIterators; if (e && e.response && e.response.body && e.response.body.status === 409) { boxClient._useIterators = true; let groupMembershipsIterator = await boxClient.groups.getMemberships(groupID); let groupMemberships = await autoPage(groupMembershipsIterator); let results = groupMemberships.filter((groupMembership) => { return groupMembership.user.id === userID; }); if (results.length > 0) { boxClient._useIterators = storeIteratorSetting; return results[0]; } else { throw new Error("Couldn't create group membership or find existing group membership."); } } else { throw e; } } ``` ``` package com.box; import java.io.BufferedReader; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import com.box.sdk.BoxAPIException; import com.box.sdk.BoxConfig; import com.box.sdk.BoxDeveloperEditionAPIConnection; import com.box.sdk.BoxGroup; import com.box.sdk.BoxGroupMembership; import com.box.sdk.BoxUser; import com.box.sdk.BoxGroupMembership.Role; import com.eclipsesource.json.JsonObject; public class BoxPlayground { public static void main(String[] args) throws Exception { Path configPath = Paths.get("config.json"); try (BufferedReader reader = Files.newBufferedReader(configPath, Charset.forName("UTF-8"))) { String marketingManagerGroupID = "839982796"; String marketingManagerUserID = "275111793"; BoxConfig boxConfig = BoxConfig.readFrom(reader); BoxDeveloperEditionAPIConnection serviceAccountClient = BoxDeveloperEditionAPIConnection .getAppEnterpriseConnection(boxConfig); BoxGroupMembership.Info marketingManagerMembership = null; BoxGroup marketingManagerGroup = new BoxGroup(serviceAccountClient, marketingManagerGroupID); try { marketingManagerMembership = marketingManagerGroup .addMembership(new BoxUser(serviceAccountClient, marketingManagerUserID), Role.ADMIN); } catch (BoxAPIException e) { JsonObject errorMessage = JsonObject.readFrom(e.getResponse()); int status = errorMessage.get("status").asInt(); if (status == 409) { System.out.println("Found existing membership"); Iterable<BoxGroupMembership.Info > memberships = marketingManagerGroup.getAllMemberships(); for (BoxGroupMembership.Info membership: memberships) { if (membership.getUser().getID().intern() == marketingManagerUserID) { marketingManagerMembership = membership; break; } } if (marketingManagerMembership == null) { throw new Exception("Couldn't add user to group or find existing membership"); } } else { throw e; } } System.out.println(marketingManagerMembership.getID()); System.out.println(marketingManagerMembership.getRole()); } } } ``` ``` using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Box.V2; using Box.V2.Config; using Box.V2.Exceptions; using Box.V2.JWTAuth; using Box.V2.Models; using Box.V2.Models.Request; using Newtonsoft.Json.Linq; namespace BoxPlayground { public class Program { static void Main(string[] args) { ExecuteMainAsync().Wait(); } private static async Task ExecuteMainAsync() { using(FileStream fs = new FileStream("./config.json", FileMode.Open)) { var marketingManagerGroupId = "839982796"; var marketingManagerUserId = "275111793"; var session = new BoxJWTAuth(BoxConfig.CreateFromJsonFile(fs)); var serviceAccountClient = session.AdminClient(session.AdminToken()); BoxGroupMembership marketingManagerMembership; try { marketingManagerMembership = await serviceAccountClient.GroupsManager.AddMemberToGroupAsync(new BoxGroupMembershipRequest { User = new BoxRequestEntity { Id = marketingManagerUserId }, Group = new BoxGroupRequest { Id = marketingManagerGroupId }, Role = "admin" }); } catch(BoxException e) { var errorMessage = JObject.Parse(e.Message); if (errorMessage.GetValue("status").ToObject < int > () == 409) { var groups = await serviceAccountClient.GroupsManager.GetAllGroupMembershipsForGroupAsync(marketingManagerGroupId, autoPaginate: true); marketingManagerMembership = groups.Entries.Find((group) = >{ return group.User.Id == marketingManagerUserId; }); if (marketingManagerMembership == null) { throw new Exception("Couldn't create new collaboration or find existing collaboration"); } } else { throw e; } } System.Console.WriteLine(marketingManagerMembership.Id); } } } } ``` ``` box groups:membership:add $user_id $group_id --role=admin ``` **Source:** [https://ja.developer.box.com/guides/users/provision/shared-folders/](https://ja.developer.box.com/guides/users/provision/shared-folders/) --- ### 共有リンク **Type:** guide | **Category:** 共有リンク | **Section:** Developer Guides 共有リンク 共有リンクは、Boxに保存されているファイル、フォルダ、またはウェブリンクを対象として生成されるURLです。これにより、リソースへの直接的な読み取り専用アクセスが可能になります。 共有リンクのアクセスレベルをオープンに設定すると、そのURL… # 共有リンク 共有リンクは、Boxに保存されているファイル、フォルダ、またはウェブリンクを対象として生成されるURLです。これにより、リソースへの直接的な読み取り専用アクセスが可能になります。 共有リンクのアクセスレベルをオープンに設定すると、そのURLを知っているすべてのユーザーが項目にアクセスできますが、アクセスレベルを会社またはコラボレータに設定すると、適切な認証済みBoxユーザーのみがアクセスできます。共有リンクに関連するすべてのオプションと管理設定については、[こちら](https://support.box.com/hc/ja/articles/360043697094-%E5%85%B1%E6%9C%89%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E4%BD%9C%E6%88%90)を参照してください。 ユーザーは、ブラウザに共有リンクURLを入力することにより、共有項目にアクセスできます。アプリケーションからも[共有項目API](endpoint://get_shared_items)を使用して共有項目にアクセスできます。 **Source:** [https://ja.developer.box.com/guides/shared-links/](https://ja.developer.box.com/guides/shared-links/) --- ### 共有リンクのダウンロード **Type:** guide | **Category:** ダウンロード | **Section:** Developer Guides 共有リンクのダウンロード 共有リンクのファイルをダウンロードするには、最初にリンクのファイルを確認します。 共有リンクを使用してフォルダをダウンロードすることはできません。代わりに、ZIPアーカイブを作成してダウンロードしてください。 ファイルIDが確認されたら、BoxAPI… # 共有リンクのダウンロード [共有リンク](g://shared-links)のファイルをダウンロードするには、最初にリンクの[ファイルを確認](g://shared-links/find-for-item)します。 共有リンクを使用してフォルダをダウンロードすることはできません。代わりに、[ZIPアーカイブを作成してダウンロードしてください](g://downloads/zip-archive)。 ファイルIDが確認されたら、`BoxAPI`ヘッダーをAPIに渡して、ファイルをダウンロードできます。 項目の共有リンクを取得する場合、ユーザーには少なくとも、その項目に対するビューアーレベルのアクセス権限が必要です。 **Source:** [https://ja.developer.box.com/guides/downloads/shared-link/](https://ja.developer.box.com/guides/downloads/shared-link/) --- ### 共有リンクの作成または更新 **Type:** guide | **Category:** 共有リンク | **Section:** Developer Guides 共有リンクの作成または更新 ファイルリソース、フォルダリソース、またはウェブリンクリソースの共有リンクを直接作成して、適切なアクセスレベルを持つユーザーにコンテンツの表示を許可するための読み取り専用URL… # 共有リンクの作成または更新 ファイルリソース、フォルダリソース、またはウェブリンクリソースの共有リンクを直接作成して、適切なアクセスレベルを持つユーザーにコンテンツの表示を許可するための読み取り専用URLを生成できます。 ファイル、フォルダ、またはウェブリンクのアクティブな共有リンクは、常に1つのみ保持できます。 共有リンクの作成には少なくとも以下の情報が必要です。 - リソースのタイプ (ファイル、フォルダ、またはウェブリンク)。 - リソースのID。 共有リンクの作成時には、以下の情報もオプションとして指定できます。 以下のいずれかのアクセスレベル。 - open: パブリックな共有リンク。リンクを知っている全員がアクセスできます。 - company: 会社内のすべてのユーザーがアクセスできます。 - collaborators: コンテンツのコラボレーションに参加しているすべてのユーザーがアクセスできます。 有効期限。その日時から、共有リンクが自動的に無効になります。 リソースへのアクセスに必要なパスワード。 共有リンクの作成時にアクセスレベルを指定しなかった場合、会社の管理者が指定したデフォルトのアクセスレベルが使用されます。 ## ファイルの共有リンクの作成または更新 ファイルの共有リンクを作成するには、ファイルのIDとオプションの共有リンクパラメータを指定します。 ## フォルダの共有リンクの作成または更新 フォルダの共有リンクを作成するには、フォルダのIDとオプションの共有リンクパラメータを指定します。 ## ウェブリンクの共有リンクの作成または更新 ウェブリンクの共有リンクを作成するには、ウェブリンクのIDとオプションの共有リンクパラメータを指定します。 **Source:** [https://ja.developer.box.com/guides/shared-links/create-or-update/](https://ja.developer.box.com/guides/shared-links/create-or-update/) --- ### 共有リンクの削除 **Type:** guide | **Category:** 共有リンク | **Section:** Developer Guides 共有リンクの削除 ファイルを更新、フォルダを更新、またはウェブリンクを更新エンドポイントを呼び出し、shared_link値をnullに設定することで、リソースから共有リンクを削除できます。 共有リンクを削除して新しい共有リンクを作成すると、新しい共有リンクのURL… # 共有リンクの削除 [ファイルを更新](endpoint://put_files_id)、[フォルダを更新](endpoint://put_folders_id)、または[ウェブリンクを更新](endpoint://put_web_links_id)エンドポイントを呼び出し、`shared_link`値を`null`に設定することで、リソースから共有リンクを削除できます。 共有リンクを削除して新しい共有リンクを作成すると、新しい共有リンクのURLは以前と異なるものになり、以前のURLしか知らないユーザーはリソースにアクセスできなくなります。 ## ファイルの共有リンクの削除 ファイルの共有リンクを削除するには、ファイルのIDを指定し、`shared_link`フィールドを`null`に設定します。 ## フォルダの共有リンクの削除 フォルダの共有リンクを削除するには、フォルダのIDを指定し、`shared_link`フィールドを`null`に設定します。 ## ウェブリンクの共有リンクの削除 ウェブリンクの共有リンクを削除するには、ウェブリンクのIDを指定し、`shared_link`フィールドを`null`に設定します。 **Source:** [https://ja.developer.box.com/guides/shared-links/remove/](https://ja.developer.box.com/guides/shared-links/remove/) --- ### 共有リンクの権限 **Type:** guide | **Category:** 共有リンク | **Section:** Developer Guides 共有リンクの権限 共有リンクリソースには、permissionsフィールドを使用して更新できる3つの権限can_preview、can_download、can_editがあります。 ファイルの場合、can_editオプションにはtrue… # 共有リンクの権限 共有リンクリソースには、`permissions`フィールドを使用して更新できる3つの権限`can_preview`、`can_download`、`can_edit`があります。 ファイルの場合、`can_edit`オプションには`true`しか指定できません。また、管理者が管理コンソールで共有リンクの編集権限を制限している場合は、`can_edit`を`true`に設定することはできません。 ``` curl -i -X PUT 'https://api.box.com/2.0/files/123456789?fields=shared_link' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer [ACCESS TOKEN]' \ -d '{ "shared_link": { "permissions": { "can_preview": true, "can_download": true, "can_edit": true } } }' ``` **Source:** [https://ja.developer.box.com/guides/shared-links/permissions/](https://ja.developer.box.com/guides/shared-links/permissions/) --- ### 共有リンクの項目の検索 **Type:** guide | **Category:** 共有リンク | **Section:** Developer Guides 共有リンクの項目の検索 共有リンクの項目を検索APIは、BoxApi… # 共有リンクの項目の検索 [共有リンクの項目を検索](endpoint://get_shared_items)APIは、`BoxApi`ヘッダーを使用して共有リンクを入力として受け取り、その共有リンクが設定されているファイルまたはフォルダオブジェクトを返します。 共有リンクに関連付けられているファイルオブジェクトまたはフォルダオブジェクトを取得するには、リクエストの際に共有リンクの完全なURLを指定します。 共有リンクがフォルダに対するものである場合、このAPIのレスポンスには、そのフォルダ内のネストされた項目のリストが含まれないことに注意してください。 フォルダ内の項目をさらにトラバースするには、同じ`BoxApi`ヘッダーを使用して、[ネストされたフォルダ情報を取得する](e://get-folders-id)、[これらのフォルダ内の項目をリストする](e://get-folders-id-items)、[ネストされたファイル情報を取得する](e://get-files-id)、または[ファイルをダウンロード](e://get-files-id-content)してください。 **Source:** [https://ja.developer.box.com/guides/shared-links/find-for-item/](https://ja.developer.box.com/guides/shared-links/find-for-item/) --- ### 最初のアプリケーションの作成 **Type:** guide | **Category:** はじめに | **Section:** Developer Guides … # 最初のアプリケーションの作成 開発者用エンタープライズを設定したら、アプリケーションの作成を開始できます。 開発者用エンタープライズにログインしたら [[開発者コンソール](https://cloud.app.box.com/developers/console)] ボタンをクリックします。これが最初のアプリケーションである場合は、利用開始を促すメッセージが表示されます。 ## アプリケーションの種類の選択 まず、作成するアプリケーションの種類を選択します。ほとんどのパートナーが統合に [**Platformアプリ**] のオプションを使用しているため、このガイドではこの種類を使用します。 ## 認証方法の選択 [**Platformアプリ**] を選択したら、アプリで使用する[認証方法を選択](g://authentication/select)する必要があります。ほとんどのパートナーが統合に [[**ユーザー認証 (OAuth 2.0)**](g://authentication/oauth2)] のオプションを使用しているため、このガイドではこの種類を使用します。 ## アプリの命名 アプリの名前を選択します。名前は後から変更でき、アプリを公開するまで他の人の目に触れません。アプリの名前はアプリを公開すると管理者やお客様に表示されるため、わかりやすい名前を選択することをお勧めします。 [**アプリの作成**] ボタンをクリックしてアプリの作成を完了します。次に、アプリケーションの設定を構成します。 ## 一般設定 最も基本的な設定から始めます。[**一般設定**] タブを開き、以下のフィールドでチェックボックスをオンにしたり、入力したりします。 - [**アプリ名**] - アプリ作成時に設定する名前。ここで必要に応じて変更できます。 - [**連絡先メール**] - デフォルトでアプリケーションの開発者のアドレスに設定されます。アプリを公開すると、[統合](g://applications/integrations)でアプリを表示したBoxユーザーにこのアドレスが表示されることに注意してください。統合に問題があった場合にユーザーがサポートに連絡できるよう、サポートのメールアドレスに変更することをお勧めします。 - [**コラボレータ**] - この統合の作成に取り組むことができる他の開発者を追加します。追加された開発者は、設定を調整する必要があるときに開発者インターフェースにアクセスできるようになります。 ここに追加する開発者はすでにBoxユーザーである必要があります。Boxアカウントを持っていない場合は、開発者用エンタープライズで[アカウントを作成](https://support.box.com/hc/en-us/articles/360043694594-Add-Users)できます。 ## 詳細設定 [**構成**] タブに移動します。ここでは、アプリの詳細の指定、開発者トークンの生成、OAuth 2.0資格情報の確認、OAuth 2.0リダイレクトURIの追加と編集、アプリケーションスコープの選択、アプリの高度な機能の設定、CORSドメインの追加を行うことができます。 その他のタブでは、Webhookやウェブアプリ統合を作成したり、Enterpriseへのアクセスを有効化するためにアプリを送信したり、[Box統合](g://applications/integrations)にアプリを送信したり、このアプリケーションのアクティビティを確認できるレポートを生成したりすることができます。 ## アプリのテスト APIコールを行ってアプリをテストし、Boxでのレスポンス形式を確認できるようになりました。 現在の開発者アカウントに対して認証された[開発者トークン](g://authentication/tokens/developer-tokens/#create-developer-token)を使用します。 このトークンの有効期限は、生成されてから1時間です。 [Postmanコレクション](g://tooling/postman)から始めて、特定のコールを確認し、返されるレスポンスを確かめます。APIコールの例については、[APIリファレンスドキュメント](page://reference)を参照してください。ターミナルを使用したい場合は、[Box CLIツール](https://github.com/box/boxcli)を使用することもできます。 **Source:** [https://ja.developer.box.com/guides/getting-started/first-application/](https://ja.developer.box.com/guides/getting-started/first-application/) --- ### 最近の共有リンクの検索 **Type:** guide | **Category:** 検索 | **Section:** Developer Guides 最近の共有リンクの検索 デフォルトで検索APIによって返されるのは、ユーザーが所有する項目か、ユーザーが明示的にコラボレータに設定されている項目のみです。これらの検索結果には、ユーザーが共有リンクを介して最近アクセスした可能性がある項目は含まれません。 このAPI… # 最近の共有リンクの検索 デフォルトで検索APIによって返されるのは、ユーザーが所有する項目か、ユーザーが明示的にコラボレータに設定されている項目のみです。これらの検索結果には、ユーザーが共有リンクを介して最近アクセスした可能性がある項目は含まれません。 このAPIで共有リンクを有効にするには、`include_recent_shared_links`クエリパラメータを`true`に設定します。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&include_recent_shared_links=true" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` client.search().query("sales", metadata_filters=metadata_search_filters, include_recent_shared_links=True) ``` ``` client.search.query( 'sales', { include_recent_shared_links: true }) .then(results => { // ... }); ``` このパラメータは比較的新しいため、BoxのJava SDKとWindows SDKでのこのパラメータのサポートはまだ対応中であることに注意してください。 このパラメータがtrueに設定されている場合は、このAPIのレスポンス形式が[検索結果 (複数の共有リンクを含む)](r://search-results-with-shared-links) のリストを返すよう変更されることに十分注意してください。 **Source:** [https://ja.developer.box.com/guides/search/shared-links/](https://ja.developer.box.com/guides/search/shared-links/) --- ### 分割アップロード **Type:** guide | **Category:** アップロード | **Section:** Developer Guides 分割アップロード 大きなファイルでも、分割アップロードAPIを使用して一連のパーツに分割して個別にアップロードすることで、Boxに確実にアップロードできます。 このAPI… # 分割アップロード 大きなファイルでも、分割アップロードAPIを使用して一連のパーツに分割して個別にアップロードすることで、Boxに確実にアップロードできます。 このAPIを使用することにより、アプリケーションではファイルを分割してアップロードできるため、失敗したリクエストからより確実に回復できるようになります。つまり、アプリケーションがファイル全体ではなく単一のパーツのアップロードを再試行するだけで済む、ということです。 分割アップロードのもう1つの利点は、パーツを並行してアップロードできるため、パフォーマンスが向上することです。 ## 概要 分割アップロードでは、以下の一連のAPIコールを行う必要があります。 1. **[アップロードセッションを作成する](g://uploads/chunked/create-session)**: アプリケーションが新しいファイルまたはファイルの新しいバージョンのアップロードセッションを作成します。このセッションにより、ファイルの (新しい) 名前、サイズ、および親フォルダを定義します。 2. **[パーツをアップロードする](g://uploads/chunked/upload-part)**: アプリケーションがファイルの個々のパーツをチャンクとしてアップロードします。 3. **[セッションをコミットする](g://uploads/chunked/commit-session)**: アプリケーションがセッションをコミットします。このときにファイルの整合性がチェックされた後、セッションが作成されたときに指定された場所にファイルが配置されます。 ほとんどの[Box SDKではBoxからの分割アップロードがサポートされている](g://uploads/chunked/with-sdks)ため、アプリケーションコードの複雑さが解消されます。 ## 制約事項 分割アップロードAPIは、サイズが20 MB以上の大きいファイルを対象としています。これより小さいサイズのファイルのアップロードはサポートされていません。 このAPIは、セッション内でのパーツの再アップロードまたは上書きをサポートしていません。アップロード後のパーツは変更できません。 アップロードセッションの有効期間は7日間です。この期間に、クライアントは自身のペースでパーツをアップロードできます。 リソースの浪費やデータ破損を避けるために、クライアントは、アップロードの開始以降、ディスク上の基になるファイルが変更されていないことを確認する必要があります。 **Source:** [https://ja.developer.box.com/guides/uploads/chunked/](https://ja.developer.box.com/guides/uploads/chunked/) --- ### 分類 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 分類 Boxを使用すると、ユーザーおよびアプリケーションは、セキュリティ分類ラベルをファイルを適用したり、分類ラベルをフォルダとそのコンテンツにカスケードしたりできます。分類は、BoxのGovernanceおよびShield… # 分類 Boxを使用すると、ユーザーおよびアプリケーションは、セキュリティ分類ラベルをファイルを適用したり、分類ラベルをフォルダとそのコンテンツにカスケードしたりできます。分類は、BoxのGovernanceおよびShield製品から不注意でアクセスされないよう、共有した機密性の高いコンテンツを保護するのに役立ちます。 分類APIを使用すると、新しい分類ラベルを作成したり、分類をファイルやフォルダに割り当てたりすることができます。 分類では、[メタデータAPI](g://metadata)を使用して、分類ラベルを作成したり、分類をファイルやフォルダに割り当てたりします。メタデータテンプレートとメタデータインスタンスの詳細については、[メタデータ](g://metadata)に関するガイドを参照してください。 ## 分類とメタデータ 分類を使用する場合、開発者はメタデータテンプレートとメタデータインスタンスを操作する必要があります。 - **分類テンプレート:** 分類を使用するために、会社では、1つ以上の分類を含む分類メタデータテンプレートを用意する必要があります。このテンプレートでは、`scope`/`templateKey`を`enterprise.securityClassification-6VMVochwUWo`にしておく必要があります。このテンプレートは、使用可能な分類レベル、そのラベル名、説明、`colorID`値を保持します。 - **テンプレートインスタンス**: ファイルやフォルダに分類を適用するために、開発者は、`enterprise.securityClassification-6VMVochwUWo`テンプレートのインスタンスを項目に適用します。テンプレートが適用されると、テンプレート上の分類のリストから分類のいずれかが選択されます。 **Source:** [https://ja.developer.box.com/guides/metadata/classifications/](https://ja.developer.box.com/guides/metadata/classifications/) --- ### 列挙型メタデータフィールド **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 列挙型メタデータフィールド enumタイプのメタデータフィールドは、ドロップダウンリストとしてユーザーに表示されます。ユーザーはリストから項目を1つ選択できます。 enumを使用すると、ユーザーは0個または… # 列挙型メタデータフィールド `enum`タイプのメタデータフィールドは、ドロップダウンリストとしてユーザーに表示されます。ユーザーはリストから項目を1つ選択できます。 `enum`を使用すると、ユーザーは0個または1個の値を選択できます。ユーザーが複数の値を選択できるようにするには、[`multiSelect`](g://metadata/fields/multi-select)テンプレートフィールドを使用します。 ## enumフィールドの作成 `enum`フィールドは、[メタデータテンプレートの作成](g://metadata/templates/create)時、または`addField`操作による[テンプレートの更新](g://metadata/templates/update)時にメタデータテンプレートに追加できます。 `enum`フィールドの必須属性は、`type`、`displayName`、`key`、およびオプションのリストです。 ``` { "scope": "enterprise", "displayName": "Contract", "fields": [ { "type": "enum", "key": "customer_state", "displayName": "Customer State", "description": "The US state where the customer is located", "hidden": false, "options": [ {"key": "N/A"}, {"key": "AL"}, {"key": "AK"} ] } ] } ``` 必要に応じて、UIでユーザーに表示される`description`を指定できます。また、このフィールドを`hidden`に設定して、ウェブアプリとモバイルアプリでユーザーに表示されないようにすることもできます。 ## enumフィールドの更新 `enum`テンプレートフィールドは、このフィールドが属する[テンプレートを更新](g://metadata/templates/update)することで更新できます。テンプレートの更新は、ファイルまたはフォルダにすでに割り当てられているテンプレートも確実に更新される**操作**によって行われます。 ### 基本的なフィールド値の変更 `enum`メタデータフィールドを更新する際に可能な操作の1つとして、フィールドの`key`、`displayName`、`description`、および`hidden`の値を変更するのに使用できる`editField`操作があります。 ``` [ { "op": "editField", "fieldKey": "customer_state", "data": { "displayName": "Customer State (USA)", "key": "customer_state_usa" } } ] ``` ここにある`fieldKey`は、変更するフィールドの元のキーを表します。`data.key`フィールドはフィールドの新しいキーです。 これは、このテンプレートの既存のインスタンスに影響します。 ### オプションの追加 `enum`フィールドにオプションを追加するには、`addEnumOption`操作を使用します。この操作では、`fieldKey`に、変更する`enum`フィールドのキーを設定するほか、`data`オブジェクトには、追加する新しいオプションの`key`を指定する必要があります。 ``` [ { "op": "addEnumOption", "fieldKey": "customer_state", "data": { "key": "AR" } } ] ``` オプションのリストは次のようになります。 ``` ... "options": [ {"key": "N/A"}, {"key": "AL"}, {"key": "AK"}, {"key": "AR"} ] ... ``` これは、このテンプレートの既存のインスタンスに影響します。 ### オプションの並べ替え `enum`フィールドでオプションを並べ替えるには、`reorderEnumOptions`操作を使用します。この操作では、`fieldKey`に、変更する`enum`フィールドのキーを設定するほか、`enumOptionKeys`配列にはオプションのキーを順番に指定する必要があります。 ``` [ { "op": "reorderEnumOptions", "fieldKey": "customer_state", "enumOptionKeys": [ "AL", "AK", "AR", "N/A" ] } ] ``` オプションのリストは次のようになります。 ``` ... "options": [ {"key": "AL"}, {"key": "AK"}, {"key": "AR"}, {"key": "N/A"} ] ... ``` この操作では、新しいオプションを追加することはできません。これは、このテンプレートの既存のインスタンスに影響します。 ### オプションの編集 `enum`フィールドのオプションを編集するには、`editEnumOption`操作を使用します。この操作では、`fieldKey`に、変更する`enum`フィールドのキーを設定し、`enumOptionKey`に、フィールドオプションのキーを設定する必要があります。最後に、`data`オブジェクトには、フィールドオプションの新しい`key`を指定する必要があります。 ``` [ { "op": "editEnumOption", "fieldKey": "customer_state", "enumOptionKey": "N/A", "data": { "key": "Outside USA" } } ] ``` オプションのリストは次のようになります。 ``` ... "options": [ {"key": "AL"}, {"key": "AK"}, {"key": "AR"}, {"key": "Outside USA"} ] ... ``` これは、このテンプレートの既存のインスタンスに影響します。 ### オプションの削除 `enum`フィールドからオプションを削除するには、`removeEnumOption`操作を使用します。この操作では、`fieldKey`に、変更する`enum`フィールドのキーを設定し、`enumOptionKey`に、削除するフィールドオプションのキーを設定します。 ``` [ { "op": "removeEnumOption", "fieldKey": "customer_state", "enumOptionKey": "AL" } ] ``` オプションのリストは次のようになります。 ``` ... "options": [ {"key": "AK"}, {"key": "AR"}, {"key": "Outside USA"} ] ... ``` これは、このテンプレートの既存のインスタンスに影響します。この値に設定されたすべてのフィールドでは、値が`null`にリセットされます。 **Source:** [https://ja.developer.box.com/guides/metadata/fields/enum/](https://ja.developer.box.com/guides/metadata/fields/enum/) --- ### 制限 **Type:** guide | **Category:** ファイル | **Section:** Developer Guides 制限 ファイルの操作には、いくつかの制限があります。 名前に関する制約事項 ファイルの名前にはいくつかの制約事項があります。印刷不可能なASCII… # 制限 ファイルの操作には、いくつかの制限があります。 ## 名前に関する制約事項 ファイルの名前にはいくつかの制約事項があります。印刷不可能なASCII文字、スラッシュ、およびバックスラッシュ (`/`、`\`) を含む名前のほか、`.`や`..`のような予約済みの名前は、許可されていない文字を削除して自動的にサニタイズされます。 **Source:** [https://ja.developer.box.com/guides/files/limitations/](https://ja.developer.box.com/guides/files/limitations/) --- ### 制限 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 制限 メタデータクエリAPIには、いくつかの制限が適用されます。 ファイルとフォルダ ​メタデータクエリで返されるのは、リクエストしているユーザーがpreviewer… # 制限 メタデータクエリAPIには、いくつかの制限が適用されます。 ## ファイルとフォルダ ​メタデータクエリで返されるのは、リクエストしているユーザーが`previewer`以上のアクセス権限を持つ項目 (ファイルまたはフォルダ) のみです。 ## 会社のテンプレートとグローバルテンプレート メタデータクエリは、その会社によって作成されたメタデータテンプレートでのみ動作します。クエリでは、`​global.properties`テンプレートに保存された自由形式のキー/値ペアのコンテンツに基づく結果が返されません。 ## 分類メタデータテンプレート Boxでは、メタデータテンプレートを使用してコンテンツの分類を行うことができます。これらのメタデータテンプレートはメタデータクエリでは使用できません。なぜなら、大きな結果セットに関する問題が発生する可能性が高いためです。詳細は次に説明しています。 当面、将来これらのクエリのサポートを開始する計画はありません。 ## 推奨される結果セットのサイズ 可能であれば、結果セットの項目数が2,000未満になるリクエストのみを送信することをお勧めします。結果セットは、リクエストするユーザーの権限と`​ancestor_folder​`スコープが考慮される前に、`​from​`、`​query​`および`​query_params​`パラメータの評価だけに基づいてメタデータクエリに一致するファイルとフォルダのコレクション全体です。 結果セットの項目数が2,000を超えるメタデータクエリリクエストを送信した場合、APIが保証できるのは、以下の条件が両方とも満たされる場合に一致する結果をすべて返すことのみです。 1. リクエストするユーザーが、結果セットに含まれるすべての項目に対して**プレビューアー**以上の権限を持っていること。 2. 先祖フォルダに、結果セット内のすべてのファイルが含まれていること。 結果セットの項目数が2,000を超えており、上記の条件が当てはまらないメタデータクエリリクエストを送信すると、APIは、返される結果が少なくなるようクエリを制限する必要があることを示すレスポンスコード4XXとともにエラーを返す可能性があります。 たとえば、次に示す、`catalogImages​`というメタデータテンプレートの簡略化したレプリゼンテーションを考えてみます。これには、`​photographer`という文字列フィールドが1つあります。 ``` { "templateKey": "catalogImages", "fields": [ { "type": "string", "key": "photographer" } ] } ``` この例では、10人のphotographer (写真家) がいて、それぞれが`catalogImages​`テンプレートが適用されている同じ数の画像を取り込むとします。 ここで、Box Enterpriseに、`catalogImages`テンプレートが適用され、2つのフォルダ`Parts​`と`Products`に均等に分けられている、4,000個のファイルがあると考えてみます。この2つのフォルダは、以下に示すように親フォルダ`​Catalog​`の子です。 ``` Catalog/ | |- Parts/ | |- file_0000.jpeg |- ... |- file_1999.jpeg |- Products/ | |- file_2000.jpeg |- ... |- file_3999.jpeg ``` 以下の表に、考えられるいくつかのクエリの結果を示します。クエリについては、読みやすくするために平易な言葉で説明しています。 結果セットは、リクエストするユーザーの権限と`​ancestor_folder​`スコープが考慮される前に、`​from​`、`​query​`および`​query_params`パラメータの評価だけに基づいてメタデータクエリに一致する項目 (ファイルとフォルダ) のコレクションとして定義されることに注意してください。 | クエリ | 結果セット | 結果 | メモ | | --- | --- | --- | --- | | catalogImagesテンプレートが適用されている、写真家がMikeの項目を選択します。 | 200項目 | 成功 | Mikeに対応する項目のみを選択することで、結果セットはたった400ファイルに抑えられます。 | | catalogImagesテンプレートが適用されている項目を選択します。 | 4,000項目 | 失敗する可能性あり | 結果セットは2,000項目を超えます。ユーザーが結果セット内のすべてのファイルにアクセスできない場合は、クエリが失敗する可能性があります。 | | Products​フォルダにある、catalogImagesテンプレートが適用されている項目を選択します。 | 4,000項目 | 失敗する可能性あり | 結果セットは2,000項目を超えます。すべての結果が先祖フォルダに含まれるわけではありません。 | | Productsフォルダにある、catalogImagesテンプレートが適用されている、写真家がMikeの項目を選択します。 | 200項目 | 成功 | Mikeに対応する項目のみを選択することで、結果セットはたった400ファイルに抑えられます。 | **Source:** [https://ja.developer.box.com/guides/metadata/queries/limitations/](https://ja.developer.box.com/guides/metadata/queries/limitations/) --- ### 制限 **Type:** guide | **Category:** Webhook | **Section:** Developer Guides 制限 Webhookは1項目につき1つ Webhookは、1つの項目 (ファイルまたはフォルダ)、1つのアプリケーション、1人の認証済みユーザーごとに1つだけという制限があります。 ある項目にWebhookを1つ追加した後は、別のトリガーイベントに応答するWebhook… # 制限 ## Webhookは1項目につき1つ Webhookは、1つの項目 (ファイルまたはフォルダ)、1つのアプリケーション、1人の認証済みユーザーごとに1つだけという制限があります。 ある項目にWebhookを1つ追加した後は、別のトリガーイベントに応答するWebhookであっても、2つ目を追加することはできません。 例: `CleanupApp`というアプリケーションに関する`Junk`というフォルダ内の`FILE.UPLOADED`イベントを監視するように、`John Doe`によってWebhookが1つ設定されると、その時点で、`FILE.DOWNLOADED`イベントに対してトリガーされるものであっても、`John Doe`によって`CleanupApp`が`Junk`フォルダに2つ目のWebhookを追加することはできません。 別のイベントをリッスンするには、既存のWebhookを[更新](g://webhooks/v2/update-v2)するか、新しいアプリケーションを作成します。 ## Webhookの上限は1000個 各アプリケーションおよび各ユーザーのWebhookの数は1000個までという制限があります。 1人のユーザーにさらにWebhookを作成するには、別のアプリケーションを作成するか、フォルダツリーでより上位に適用するよう[既存のWebhookを更新](g://webhooks/v2/update-v2)します。 ## 通知URLに関する制約事項 Webhookの通知URL (`address`) は、有効なIPアドレスに解決される有効なHTTPS URLでなくてはなりません。これには、信頼できる認証局によって署名された証明書が必要になります。Boxでは自己署名SSL証明書がサポートされていません。 サーバーのIPアドレスは、インターネットからパブリックにアクセスできる必要があり、`(*.)box.com`アドレスにすることはできません。URLで使用されるポートは、標準HTTPSポート (`443`) でなければなりません。通知は他のポートには配信されません。 サポートされているTLSプロトコルのバージョンは、FIPS準拠の暗号スイートに対応した`TLS 1.2`と`TLS 1.3`です。 ## Webhookはルートフォルダに追加不可 V2 Webhookをルートフォルダ (IDが`0`のフォルダ) に作成することはできません。代わりに[V1 Webhook](g://webhooks/v1)を使用する必要があります。 項目の権限が原因でアクションを実行できない場合、試行されたアクションについての通知は送信されません。 ## NO_ACTIVE_SESSIONはWebhookペイロードで設定 Webhookの作成に使用したアプリの認証セッション (アクセストークン) が期限切れになると、そのWebhookでは、ペイロード全体を含むイベントが送信されなくなります。その場合、イベントトリガーは`NO_ACTIVE_SESSION`になります。 ### JWT認証 JWT認証アプリを使用して作成されたWebhookの場合、管理コンソールでこのアプリに対するアプリ承認を削除すると、セッションが期限切れになります。詳細については、[アプリケーションの承認ガイド](https://support.box.com/hc/en-us/articles/360043697014-Authorizing-Apps-in-the-Box-App-Approval-Process)を参照してください。 ### OAuth 2.0 OAuth 2.0認証アプリを使用して作成されたWebhookの場合、そのWebhookの作成に使用されたユーザーとアプリのアクセストークンと更新トークンの両方が期限切れになると、セッションが期限切れになります。 ### 開発者トークン 開発者トークンは更新できず、1時間後に期限切れになるため、イベントトリガー`NO_ACTIVE_SESSION`は、1時間後にWebhookペイロードで設定されます。 ## Webhookの削除理由 Webhookは以下の理由で削除される可能性があります。 1. Boxアプリケーションを削除すると、そのアプリケーションに関連付けられているすべてのWebhookが自動的に削除されます。 2. Webhookに関連付けられているアクティブなアクセストークンをすべて削除すると、そのWebhookが自動的に削除されます。これには、開発者トークンとパスワードが含まれます。 3. 最後に成功した配信から30日が経過し、最後に配信が成功した日から最後のトリガーの日付までの期間が14日を超えた場合、Webhookは自動的に削除されます。 これらのすべてのケースで、Boxは`WEBHOOK.DELETED`というイベント名を含むWebhookペイロードを通知URLに送信します。ペイロードの本文には以下の追加情報が含まれます。 ``` "additional_info": { "reason": "auto_cleanup" } ``` **Source:** [https://ja.developer.box.com/guides/webhooks/v2/limitations-v2/](https://ja.developer.box.com/guides/webhooks/v2/limitations-v2/) --- ### 割り当てのメッセージの変更 **Type:** guide | **Category:** タスク | **Section:** Developer Guides 割り当てのメッセージの変更 タスク割り当てのメッセージを更新するには、PUT /tasks/:task_id/assignments APIを呼び出し、タスク割り当ての新しいmessageを含めます。 # 割り当てのメッセージの変更 タスク割り当てのメッセージを更新するには、[`PUT /tasks/:task_id/assignments`](e://put_task_assignments_id) APIを呼び出し、タスク割り当ての新しい`message`を含めます。 **Source:** [https://ja.developer.box.com/guides/tasks/assignments/update-message/](https://ja.developer.box.com/guides/tasks/assignments/update-message/) --- ### 単一フォルダ **Type:** guide | **Category:** フォルダ | **Section:** Developer Guides 単一フォルダ 以下のページでは、単一フォルダに対するさまざまな操作方法について説明します。 # 単一フォルダ 以下のページでは、単一フォルダに対するさまざまな操作方法について説明します。 **Source:** [https://ja.developer.box.com/guides/folders/single/](https://ja.developer.box.com/guides/folders/single/) --- ### 呼び出しURL **Type:** guide | **Category:** Box Skills | **Section:** Developer Guides 呼び出しURL 新しいBox Skillsアプリケーションの作成時に、invocation_urlを指定するよう求められます。このURLは、Skillsアプリが監視するフォルダ内にファイルがアップロード、コピー、移動されたときに、Box… # 呼び出しURL 新しい[Box Skillsアプリケーション](guide://applications/app-types/custom-skills)の作成時に、`invocation_url`を指定するよう求められます。このURLは、Skillsアプリが監視するフォルダ内にファイルがアップロード、コピー、移動されたときに、Boxから[イベント通知ペイロード](guide://skills/handle/payload)が送信される公開ウェブアドレスです。 この通知をリッスンしているウェブサイトまたはアプリケーションは、Box上のファイルと、ファイルからインサイトを取得するために使用されている機械学習システムなどのシステムの間のブリッジとして機能します。 ## 要件 - 呼び出しURLは一般公開する必要があります。`localhost`または`127.0.0.1`のアドレスにはBoxのサーバーからアクセスできないため、通知を送信できません。 - 呼び出しURLの背後にあるサーバーは、HTTP `POST`リクエストをリッスンしている必要があります。Box Skillsは、`JSON`本文を使用した`POST`リクエストを介してイベント通知を送信します。 ## ホスティングのヒントとテクニック Boxのサーバーが`invocation_url`として使用できるよう、アプリケーションを公開URLですばやく公開する方法はいくつかあります。 - **ローカルトンネル** - 開発者のマシン上にあるウェブアプリケーションを公開アドレスに公開する最も簡単な方法の1つは、ローカルトンネルの使用です。一般的なトンネリングツールには、[`ngrok`](https://ngrok.com)や[`localtunnel`](https://www.npmjs.com/package/localtunnel)があります。 - **サーバーレス関数** - Box Skillを処理できるサーバーを設定するには、**サーバーレス関数**が役立ちます。Box Skillsは、監視対象のフォルダ内のアクティビティ (の欠如) に応じて生成できる呼び出しの数が異なります。[AWS Lambda](https://aws.amazon.com/lambda/)、[Google Cloud Functions](https://cloud.google.com/functions/)、[Microsoft Azure Functions](https://azure.microsoft.com/en-us/services/functions/)などのサーバーレス関数は、このような散発的なイベントに適しています。サーバーレス関数は、イベントの処理中にのみ実行され、課金の対象となります。 - **従来のアプリケーションホスティング** - サーバーレステクノロジが望ましくない場合、[Heroku](https://www.heroku.com/)、[Firebase](https://firebase.google.com/)、[AWS](https://aws.amazon.com/)、[GCP](https://cloud.google.com/functions/)など、従来のアプリケーションホスティングソリューションも使用できます。これらのアプリケーションはそれぞれ固有のサービスでホストされ、アプリケーション用の公開URLが呼び出しURLとして使用されます。 ## アプリケーションサーバーの詳細 一般に、呼び出しURLの背後にあるアプリケーションは、以下のタスクを実行する必要があります。 1. Boxからのイベント通知をキャプチャする。 2. Boxファイル (またはそのURL) のバイナリデータを処理サービスに送信する。 3. 処理サービスからのレスポンスをリッスンする。 4. 処理サービスからのレスポンスをBoxメタデータ形式に変換する。 5. Boxに保存されているファイルに新しいメタデータを適用する。 **Source:** [https://ja.developer.box.com/guides/skills/invocation-url/](https://ja.developer.box.com/guides/skills/invocation-url/) --- ### 基本的なサムネイルの取得 **Type:** guide | **Category:** レプリゼンテーション | **Section:** Developer Guides 基本的なサムネイルの取得 サムネイルとは小さい画像のことで、アプリケーション内でファイルのレプリゼンテーションとして使用できる.pngまたは.jpg… # 基本的なサムネイルの取得 サムネイルとは小さい画像のことで、アプリケーション内でファイルのレプリゼンテーションとして使用できる`.png`または`.jpg`で表されます。たとえば、ファイルをダウンロードまたはプレビューするリンクのプレースホルダとして使用されます。 ファイルのサムネイルを取得するには、[レプリゼンテーションAPI](guide://representations/thumbnail-representation)を使用する方法をお勧めします。 ## リクエスト ファイルのサムネイルをリクエストするには、[`GET /files/:id/thumbnail.:extension`](endpoint://get_files_id_thumbnail_id)エンドポイントを使用します。 サムネイルの作成に成功すると、そのサムネイルがレスポンスの本文内でバイナリデータとして返されます。 ## サムネイルの非同期的な作成 場合によっては、サムネイルを直接作成できないこともあります。代わりに、APIから`location`レスポンスヘッダーで`HTTP 202`が返されます。この場所は、サムネイルの生成中に使用できる一時的な画像のためのものです。 このエンドポイントを再試行するまでの推定秒数を示す`retry-after`レスポンスヘッダーも返されます。 ## サポートされているファイルサイズ 以下のサムネイルの形式とサイズが使用可能です。 | ファイルの種類 | サイズ | | --- | --- | | JPG | 32x32, 94x94, 160x160, 320x320, 1024x1024, 2048x2048* | | PNG | 1024x1024*, 2048x2048* | `*`が付いているサイズには、いくつかの制限があります。 ## ファイルサイズの制限 ### 元のファイルサイズ サムネイルは拡大されません。Boxにアップロードされたファイルの元のファイルサイズがレプリゼンテーションのサイズより小さい場合は、作成されるサムネイルのサイズの上限は元のファイルのサイズになります。 ## サポートされているファイルの種類 現時点でサポートされているファイルの種類は以下のとおりです。 | ファイルの種類 | ファイル拡張子 | | --- | --- | | ドキュメント | doc, docx, gdoc, gsheet, gslide, gslides, odp, ods, odt, pdf, ppt, pptx, rtf, wpd, xls, xlsm, xlsx, key, pages, numbers | | 画像 | ai, bmp, dcm, dicm, eps, gif, idml, indd, indt, inx, jpeg, jpg, png, ps, psd, svg, svs, tif, tiff, tga | | オーディオ | aac, aifc, aiff, amr, au, flac, m4a, mp3, ogg, ra, wav, wma | | 動画 | 3g2, 3gp, avi, m2v, m2ts, m4v, mkv, mov, mp4, mpeg, mpg, mts, ogg, qt, wmv | **Source:** [https://ja.developer.box.com/guides/representations/thumbnail/](https://ja.developer.box.com/guides/representations/thumbnail/) --- ### 外部ユーザーの一括削除 **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides 外部ユーザーの一括削除 APIを使用して、企業から最大100件の外部ユーザーを削除できます。このAPIエンドポイントにより、リストの外部ユーザーをコラボレーションに招待したすべての種類のコンテンツへのアクセスが削除されます。 外部ユーザーを削除するには、[POST… # 外部ユーザーの一括削除 APIを使用して、企業から最大100件の外部ユーザーを削除できます。このAPIエンドポイントにより、リストの外部ユーザーをコラボレーションに招待したすべての種類のコンテンツへのアクセスが削除されます。 外部ユーザーを削除するには、[`POST /external_users/post_external_users_submit_delete_job`][`POST /external_users/post_external_users_submit_delete_job`]を呼び出します。 このジョブはバックグラウンドで実行され、終了時に、各ユーザーの削除ステータスが記載されている完了レポートを送信します。 外部ユーザーを削除しても、保留中のコラボレーションの招待は削除されません。 **Source:** [https://ja.developer.box.com/guides/users/bulk-delete-external-users/](https://ja.developer.box.com/guides/users/bulk-delete-external-users/) --- ### 専用スコープ **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides 専用スコープ Box UI Elementsを使用する際に、開発者の多くが、Box… # 専用スコープ Box UI Elementsを使用する際に、開発者の多くが、Boxが定義した[アクセスレベル](https://support.box.com/hc/ja/articles/360044196413-%E3%82%B3%E3%83%A9%E3%83%9C%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%AE%E6%A8%A9%E9%99%90%E3%83%AC%E3%83%99%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)とは異なる独自の権限モデルを実装できることに関心を示します。 [ダウンスコープ](g://authentication/tokens/downscope) (トークン交換とも呼ばれます) とは、開発者がアクセストークンに対する権限をより詳細に制限できるBoxのメカニズムです。このメカニズムを使用することで、開発者はBox Platform上に独自の権限モデルを構築できます。 ## スコープとUI Element このプロセスを容易にするために、BoxではAPIスコープの新しいセットを作成しました。これにより、開発者は、UI Elementを利用しているアプリケーションでエンドユーザーが使用できるUIコントロールを制御できます。 Box UI Elementは、これらのスコープによって適用される権限を配慮するよう設計されています。したがって、対応する機能をトークンが許可するかどうかに応じて、UIコントロールが自動的に有効または無効になります。 このほかにも、これらの新しいスコープには利点があります。トークンのスコープは、アプリケーションでエンドユーザーにアクセスを許可する操作の厳密なセットに限定されるため、知識のあるエンドユーザーは、トークンを使用してAPIから直接アクセスすることはできません。このように、アプリケーションの安全性を強化できます。 ## スコープの原則 新しいスコープは、以下の原則を念頭に置いて設計されています。 - **すべてのスコープはモジュール化され、厳密には累積される:** 開発者はトークン交換リクエストで複数のスコープを組み合わせて、必要な機能セットを含むトークンを生成できます。また、混乱を避けるために、2つのスコープに同じ権限を設定しないでください。 - **スコープはUI Elementでの特定の操作に直接マップされる:** つまり、このスコープをトークンに追加すると、特定の操作が有効になります。特定のUI Elementで実行できるのは一部の操作のみのため、一部のスコープは意味を持ってこのUI Elementのみに適用される可能性があります。 - **スコープには、対応する操作の実行に必要な最小限の権限セットが含まれている:** アプリケーションのエンドユーザーの一部がAPIに対して直接トークンを使用しても、UI Elementを介して提供するよう意図した機能以外にはアクセスできません。 - **各UI Elementには、そのUI Elementが正常に機能するために必要なすべての権限がカプセル化されている「基本スコープ」が必要:** トークンの権限が少なくなると、UI Elementに対する基本的な操作が機能しません。このスコープを必ずトークン交換リクエストに含める必要があります。 上記の内容を踏まえて、各UI Elementには、以下の2種類のスコープを追加しています。 ### 基本スコープ 各UI Elementには「基本スコープ」があります。これにより、そのUI Elementが動作するために必要な最小限の権限のセットが提供されます。そのため、この「基本スコープ」は常にトークン交換リクエストに存在する必要があります。各UI Elementが動作するための基本の権限セットは異なる場合があるため (たとえば、コンテンツアップローダーUI Elementはプレビュー権限を必要としない)、UI Elementがそれぞれ独自の基本スコープを持っている可能性があります。 ### 機能のスコープ 基本スコープ以外に、機能レベルのスコープも導入されました。機能スコープを基本スコープと組み合わせる際、UI Element内で追加の機能が有効になります。また、ユーザーには、ダウンスコープされたトークンに追加された機能スコープで規定された操作を実行する権限が付与されます。基本スコープと同様、機能スコープもほとんどがUI Elementごとに異なります。機能スコープは厳密には累積されるため、(ドキュメントに別途記載がない限り) スコープに対するアクセス権限のみをユーザーに付与すると、そのユーザーには対応する操作のみを実行する権限が付与されることを想定できます。 基本スコープと機能スコープについて理解したところで、各UI Elementに関するドキュメントを参照してその専用スコープの詳細を確認してください。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/scopes/](https://ja.developer.box.com/guides/embed/ui-elements/scopes/) --- ### 履歴からストリームへの移行 **Type:** guide | **Category:** イベント | **Section:** Developer Guides 履歴からストリームへの移行 Boxでは、admin_logsを使用してライブイベントを登録しているアプリケーションをadmin_logs_streamingに移行することをお勧めします。admin_logs_streaming… # 履歴からストリームへの移行 Boxでは、`admin_logs`を使用してライブイベントを登録しているアプリケーションを`admin_logs_streaming`に移行することをお勧めします。`admin_logs_streaming`を使用すると、レイテンシが低下し、一貫性が高まるだけでなく、遅れて届くイベントが見逃されなくなります。`admin_logs`と`admin_logs_streaming`の間のイベントの重複は、イベントIDを使用して排除することが可能です。 ## Enterpriseのstream_typeの比較 ### admins_logs_streamingのメリット - 遅れて届くイベントが、登録しているアプリケーションで見逃されなくなる - レイテンシが80%低下する (通常の操作時) - より一貫性のあるレイテンシが実現する (通常の操作時) - 遅れたイベントの埋め戻しをサービスで管理する必要がなくなったため、障害からの復旧がよりスムーズになる ### admin_logsとadmin_logs_streamingの相違点 - 2週間分のイベント履歴 (リテンション) が提供される - `created_after`および`created_before`フィルタパラメータがサポートされない - 重複を含む可能性がある (「少なくとも1回」は保証されている) - イベントが時系列で返されなくなる (イベントはほぼ処理された順で返される) ### admin_logsとadmin_logs_streamingの類似点 - 同じ[`GET /events`](e://events) APIエンドポイントを共有する - 同じイベントペイロードを返す (イベントIDを使用して2つのストリームタイプでのイベントの重複排除が可能) - `event_type`によるフィルタが可能 - `stream_position`を使用したイベントのページネーションが可能 ## admin_logsからadmin_logs_streamingへの移行方法 ### 1. 既存のリクエストは以下のようになります ``` curl https://api.box.com/2.0/events?stream_type=admin_logs&stream_position=1632893855 \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ### 2. admin_logs_streamingを使用して重複する既存のリクエストを開始します - 2週間前から開始し、埋め戻しする: ``` curl https://api.box.com/2.0/events?stream_type=admin_logs_streaming&stream_position=0 \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` または - 今すぐ開始し、並行して実行する: ``` curl https://api.box.com/2.0/events?stream_type=admin_logs_streaming&stream_position=now \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ### 3. これまでの結果のページネーションを行い、admin_logsイベントとの重複を排除します ``` curl https://api.box.com/2.0/events?stream_type=admin_logs_streaming&stream_position=1632893855 \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ### 4. 十分と思われるまで重複を継続します ### 5. 古いadmin_logsリクエストを無効にします **Source:** [https://ja.developer.box.com/guides/events/enterprise-events/migrate-to-stream/](https://ja.developer.box.com/guides/events/enterprise-events/migrate-to-stream/) --- ### 承認 **Type:** guide | **Category:** 承認 | **Section:** Developer Guides 承認 アプリケーションによっては、企業で使用する前に管理者の明示的な承認が必要になる場合があります。管理者が行う必要のある手順は、開発者が選択した認証方法と有効になっているEnterprise… # 承認 アプリケーションによっては、企業で使用する前に管理者の明示的な承認が必要になる場合があります。管理者が行う必要のある手順は、開発者が選択した認証方法と有効になっているEnterprise設定によって異なります。 ## 認証方法 以下の[認証方法](g://authentication/select)では、常に管理者の明示的な承認が必要です。 - [サーバー認証 (JWT使用)](g://authentication/jwt) - [サーバー認証 (クライアント資格情報許可使用)](g://authentication/client-credentials) - [カスタムスキル](g://applications/app-types/custom-skills) これらの認証方法では、[サービスアカウント](page://platform/user-types/#service-account)が自動的に生成されます。適切な[スコープ](g://api-calls/permissions-and-errors/scopes)が有効になっていると、サービスアカウントは管理者の多くの操作を実行できるため、使用する前に管理者の承認が必要になります。 [OAuth 2.0](g://authentication/oauth2)アプリと[アプリトークン](g://authentication/app-token)も、有効になっているEnterprise設定に基づき、管理者の明示的な承認が必要になる場合があります。 ## Enterprise設定 以下のEnterprise設定のいずれかが有効になっている場合は、後続の手順が必要です。 - デフォルトで公開サードパーティ製アプリを無効にする - デフォルトで未公開アプリを無効にする - アクセス制限付きアプリの場合に管理者の承認を要求する これらの[設定](https://support.box.com/hc/ja/articles/360044196653-%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%82%A2%E3%83%97%E3%83%AA%E3%81%AE%E7%AE%A1%E7%90%86)は、次のように移動すると見つかります。 [**管理コンソール**] > [**統合**] > [**Platformアプリマネージャ**] > [**Platformアプリの設定**] ボタン。 公開Platformアプリとは、統合で見つかるアプリケーションのことです。 ## 必要なアクション 特定のアプリに対して管理者がどのような手順を完了する必要があるかについては、以下のシナリオを確認してください。 [**デフォルトで公開サードパーティ製アプリを無効にする**]: | 認証方法 | 有効 | 無効 | | --- | --- | --- | | OAuth 2.0 | 個々のアプリコントロールで使用可能に設定 | 使用準備完了 | | サーバー認証 (JWT使用) | なし | なし | | サーバー認証 (クライアント資格情報) | なし | なし | | アプリトークン認証 | なし | なし | [**デフォルトで未公開アプリを無効にする**]: | 認証方法 | 有効 | 無効 | | --- | --- | --- | | OAuth 2.0 | [統合] > [Platformアプリマネージャ] > [ユーザー認証アプリ] で、Platformアプリを選択し、[その他] メニューを使用してそのアプリを有効化します。 | 使用準備完了 | | サーバー認証 (JWT使用) | [統合] > [Platformアプリマネージャ] > [サーバー認証アプリ] で、Platformアプリを選択し、[その他] メニューでそのアプリを承認して有効化します。 | [統合] > [Platformアプリマネージャ] > [サーバー認証アプリ] で、Platformアプリを選択し、[その他] メニューを使用してそのアプリを承認します。 | | サーバー認証 (クライアント資格情報) | [統合] > [Platformアプリマネージャ] > [サーバー認証アプリ] で、Platformアプリを選択し、[その他] メニューでそのアプリを承認して有効化します。 | [統合] > [Platformアプリマネージャ] > [サーバー認証アプリ] で、Platformアプリを選択し、[その他] メニューでそのアプリを承認して有効化します。 | | アプリトークン認証 | [統合] > [Platformアプリマネージャ] > [サーバー認証アプリ] > [サーバー認証アプリ] で、Platformアプリを選択し、[その他] メニューでそのアプリを承認して有効化します。 | 使用準備完了 | [**アクセス制限付きアプリの場合に管理者の承認を要求する**]: | 認証方法 | 有効 | 無効 | | --- | --- | --- | | OAuth 2.0 | なし | なし | | サーバー認証 (JWT使用) | なし | なし | | サーバー認証 (クライアント資格情報) | なし | なし | | アプリトークン認証 | [統合] > [Platformアプリマネージャ] > [サーバー認証アプリ] で、Platformアプリを選択し、[その他] メニューを使用してそのアプリを承認します。 | 作成時に自動的に承認して有効化 | **Source:** [https://ja.developer.box.com/guides/authorization/](https://ja.developer.box.com/guides/authorization/) --- ### 文字列メタデータフィールド **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 文字列メタデータフィールド stringタイプのメタデータフィールドは、標準のテキストフィールドとしてユーザーに表示されます。 文字列フィールドの作成 stringフィールドは、メタデータテンプレートの作成時、またはaddField… # 文字列メタデータフィールド `string`タイプのメタデータフィールドは、標準のテキストフィールドとしてユーザーに表示されます。 ## 文字列フィールドの作成 `string`フィールドは、[メタデータテンプレートの作成](g://metadata/templates/create)時、または`addField`操作による[テンプレートの更新](g://metadata/templates/update)時にメタデータテンプレートに追加できます。 `string`フィールドの必須属性は、`type`、`displayName`、および`key`です。 ``` { "scope": "enterprise", "displayName": "Customer", "fields": [ { "type": "string", "key": "name", "displayName": "Name", "description": "The customer's legal name", "hidden": false } ] } ``` 必要に応じて、UIでユーザーに表示される`description`を指定できます。また、このフィールドを`hidden`に設定して、ウェブアプリとモバイルアプリでユーザーに表示されないようにすることもできます。 ## 文字列フィールドの更新 `string`テンプレートフィールドは、このフィールドが属する[テンプレートを更新](g://metadata/templates/update)することで更新できます。テンプレートの更新は、ファイルまたはフォルダにすでに割り当てられているテンプレートも確実に更新される**操作**によって行われます。 `string`メタデータフィールドを更新する際、関連する操作は、フィールドの`key`、`displayName`、`description`、および`hidden`の値を変更するのに使用できる`editField`操作のみです。 ``` [ { "op": "editField", "fieldKey": "name", "data": { "displayName": "Customer Name", "description": "The contact name at the customer", "key": "customer_name", "hidden": true } } ] ``` これは、このテンプレートの既存のインスタンスに影響します。 **Source:** [https://ja.developer.box.com/guides/metadata/fields/string/](https://ja.developer.box.com/guides/metadata/fields/string/) --- ### 新しいファイルのアップロード **Type:** guide | **Category:** アップロード | **Section:** Developer Guides 新しいファイルのアップロード 直接アップロードによってBoxにファイルをアップロードするには、ファイルのコンテンツ、目的のファイル名、フォルダIDを使用して、POST /files/content APIにAPI… # 新しいファイルのアップロード 直接アップロードによってBoxにファイルをアップロードするには、ファイルのコンテンツ、目的のファイル名、フォルダIDを使用して、[`POST /files/content`](e://post_files_content) APIにAPIコールを実行します。 アーカイブフォルダにファイルをアップロードするには、最初に、開発者コンソールで[グローバルコンテンツマネージャ](g://api-calls/permissions-and-errors/scopes) (GCM) スコープを有効にする必要があります。 # 事前チェック アップロードしたファイルが拒否されることによる時間や帯域幅の無駄を防ぐため、ファイルをアップロードする前に[事前チェック](g://uploads/check)を実行することをお勧めします。 ## リクエスト形式 このAPIのリクエスト本文には、`multipart/form-data`のコンテンツタイプが使用されます。これを使用して、ファイル属性とファイルの実際のコンテンツの2つの部分を送信します。 最初の部分は`attributes`と呼ばれ、ファイル名や親フォルダの`id`など、ファイルに関する情報を含むJSONオブジェクトが含まれています。 以下の例では、ユーザーのルートフォルダに`test.txt`をアップロードしています。 ``` POST /api/2.0/files/content HTTP/1.1 Host: upload.box.com Authorization: Bearer [ACCESS_TOKEN] content-length: 343 content-type: multipart/form-data; boundary=------------------------9fd09388d840fef1 --------------------------9fd09388d840fef1 content-disposition: form-data; name="attributes" {"name":"test.txt", "parent":{"id":"0"}} --------------------------9fd09388d840fef1 content-disposition: form-data; name="file"; filename="test.txt" content-type: text/plain Test file text. --------------------------9fd09388d840fef1-- ``` マルチパート本文の`attributes` JSON部分は、マルチパートフォームデータの`file` 部分の前に置く必要があります。この順番を間違えると、APIがHTTP `400`ステータスコードとエラーコード`metadata_after_file_contents`を返します。 ## オプション ファイルのアップロード時に使用できるすべてのパラメータの詳細については、[このAPIコールに関するリファレンスドキュメント](e://post_files_content)を参照してください。パラメータには、設定することで転送中のファイルの破損を防ぐ`content-md5`や、アップロード時間とは異なる時間をファイル作成時間として明示的に指定できる機能が含まれます。 ## 制約事項 直接アップロードできるファイルサイズの上限は50 MBです。ファイルがこれより大きい場合は、[分割アップロードAPI](g://uploads/chunked)を使用してください。 アップロードの上限は、認証済みユーザーのアカウントの種類によって決まります。詳細については、このトピックに関する[Boxコミュニティの記事](https://support.box.com/hc/ja/articles/360043697314-Box%E3%81%AB%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%82%8B%E6%9C%80%E5%A4%A7%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%B5%E3%82%A4%E3%82%BA)を参照してください。 **Source:** [https://ja.developer.box.com/guides/uploads/direct/file/](https://ja.developer.box.com/guides/uploads/direct/file/) --- ### 既存のタスクの変更 **Type:** guide | **Category:** タスク | **Section:** Developer Guides 既存のタスクの変更 Boxでタスクを更新するには、タスクのIDを指定してPUT /tasks/:task_id APIを呼び出す必要があります。このAPIを使用すると、タスクのactionタイプの変更、message… # 既存のタスクの変更 Boxでタスクを更新するには、タスクのIDを指定して[`PUT /tasks/:task_id`](e://put_tasks_id) APIを呼び出す必要があります。このAPIを使用すると、タスクの`action`タイプの変更、`message`の追加、期日の変更を行うことができます。 ## タスクのアクション Boxは現在、`action`値によって定義される、`review`と`complete`という2種類のタスクをサポートしています。 タスクのタイプによって、タスクがなりうる解決状態と、ウェブアプリおよびモバイルアプリでユーザーに表示されるインターフェースが決まります。 | タスクのアクション | 考えられる解決状態 | | --- | --- | | review | incomplete, approved, rejected | | complete | incomplete, complete | `review`タスクは`incomplete`状態で開始され、`incomplete`、`approved`、または`rejected`としてマークすることができます。ユーザーインターフェースには、テキストボックスのほか、タスクを承認または拒否する1組のボタンが表示されます。 `complete`タスクは`incomplete`状態で開始され、`incomplete`または`completed`としてマークすることができます。このタスクが完了としてマークされると、タスクの状態をそれ以上変更することはできなくなります。ユーザーインターフェースには、テキストボックスのほか、タスクを完了としてマークするためのボタンが表示されます。 ## 完了のルール ファイルに関連するタスクは、そのファイルの複数のコラボレータに割り当てることができます。また、タスクの`completion_rule`を使用すると、タスクを完了する必要があるのはタスクが割り当てられているすべてのユーザー (`all_assignees`) か1人の担当者のみ (`any_assignee`) かを定義できます。 **Source:** [https://ja.developer.box.com/guides/tasks/update/](https://ja.developer.box.com/guides/tasks/update/) --- ### 日付メタデータフィールド **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 日付メタデータフィールド dateタイプのメタデータフィールドは、日付選択機能としてユーザーに表示されます。 Boxウェブアプリでは日付が日付選択機能として表示されますが、実際の日付は、ミリ秒の形式で保存されています。日付の時間部分は、常にT00:00:00.000Z… # 日付メタデータフィールド `date`タイプのメタデータフィールドは、日付選択機能としてユーザーに表示されます。 Boxウェブアプリでは日付が日付選択機能として表示されますが、実際の日付は、ミリ秒の形式で保存されています。日付の時間部分は、常に`T00:00:00.000Z`に設定されています。 ## 日付フィールドの作成 `date`フィールドは、[メタデータテンプレートの作成](g://metadata/templates/create)時、または`addField`操作による[テンプレートの更新](g://metadata/templates/update)時にメタデータテンプレートに追加できます。 `date`フィールドの必須属性は、`type`、`displayName`、および`key`です。 ``` { "scope": "enterprise", "displayName": "Contract", "fields": [ { "type": "date", "key": "effective_date", "displayName": "Effective Date", "description": "The effective date when the contract goes in effect", "hidden": false } ] } ``` 必要に応じて、UIでユーザーに表示される`description`を指定できます。また、このフィールドを`hidden`に設定して、ウェブアプリとモバイルアプリでユーザーに表示されないようにすることもできます。 ## 日付フィールドの更新 `date`テンプレートフィールドは、このフィールドが属する[テンプレートを更新](g://metadata/templates/update)することで更新できます。テンプレートの更新は、ファイルまたはフォルダにすでに割り当てられているテンプレートも確実に更新される**操作**によって行われます。 `date`メタデータフィールドを更新する際、関連する操作は、フィールドの`key`、`displayName`、`description`、および`hidden`の値を変更するのに使用できる`editField`操作のみです。 ``` [ { "op": "editField", "fieldKey": "effective_date", "data": { "displayName": "Effective Contract Date", "description": "The contract's effective date", "key": "effective_contract_date", "hidden": true } } ] ``` これは、このテンプレートの既存のインスタンスに影響します。 **Source:** [https://ja.developer.box.com/guides/metadata/fields/date/](https://ja.developer.box.com/guides/metadata/fields/date/) --- ### 検索 **Type:** guide | **Category:** 検索 | **Section:** Developer Guides 検索 Box APIを使用すると、ファイルコンテンツ検索クエリを使用してBox内のコンテンツを見つけることができます。Box検索APIは、サポート対象のすべてのSDKとCLIで使用できます。 検索API… # 検索 Box APIを使用すると、ファイルコンテンツ検索クエリを使用してBox内のコンテンツを見つけることができます。Box検索APIは、サポート対象のすべてのSDKとCLIで使用できます。 検索APIで使用できる各種機能の詳細については、[リファレンスドキュメント](e://get_search)を参照してください。 ## クエリ演算子 検索APIは、`AND`、`OR`、`NOT`、`""`など、いくつかの[検索演算子](g://search/query-operators)をサポートします。これらの演算子を使用すると、より複雑な組み合わせの検索語句に一致する項目のみが返されるように検索結果を絞り込むことができます。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=box%20AND%20sales" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` 論理演算子の使用の詳細を確認する ## 検索インデックス作成 Boxは、Boxに格納されているファイルまたはフォルダの検索インデックスを保持します。ファイルまたはフォルダが変更されるたびに、これらの単語がインデックスに追加されます。検索が実行されると、APIは、検索インデックスで、クエリに一致するファイルやフォルダを探します。Box内でコンテンツが追加、更新、または削除されると、それに応じて検索インデックスが更新されます。 Boxの検索インデックスの詳細を確認する 10分経過してもインデックスが更新されない場合もあります。このような場合は、[Boxサポート](page://support)に問い合わせて問題を解決することをお勧めします。 ファイルコンテンツ検索が無効になっている企業 (たとえば、[KeySafe](https://www.box.com/security/keysafe)をご利用のお客様) の場合、ドキュメント内の文字を検索できません。ファイルコンテンツ検索が無効の状態でドキュメントを調べる必要がある場合は、アカウントチームまでお問い合わせください。 ## メタデータクエリとの比較 一見、検索クエリAPIは[メタデータクエリAPI](g://metadata/queries)とよく似ていますが、動作には重要な違いがいくつかあります。大まかに言うと、メタデータクエリは正確さとスループットの向上のために最適化されているのに対し、通常の検索は、人間のユーザーとの関連度のために最適化されています。 | | メタデータクエリAPI | 検索API | | --- | --- | --- | | インデックスの作成対象 | このAPIでは、検索対象のメタデータテンプレートの値に基づいてファイル/フォルダのみが返されます。 | このAPIでは、項目名、説明、コンテンツ (最初の10,000バイトまで) の値のほか、関連付けられたメタデータテンプレートインスタンスに基づいてファイル、フォルダ、ウェブリンクが返されます。 | | インデックス作成時間 | このAPIでは、ファイルまたはフォルダのメタデータが追加、削除、更新されるとすぐに正確な結果が返されます。 | このAPIは、検索インデックスの作成が遅延すると、その影響を受けます。この遅延は通常10分ですが、場合によっては長くなることがあります。つまり、メタデータが更新されてから10分を経過しても項目が返されない場合があります。 | | 一致 | このAPIでは、SQLの規則に基づいて完全一致が使用されます。結果は、指定した並べ替え順を基に返されます。 | このAPIでは、あいまい一致が使用されるため、文字列のトークン化、特殊文字の削除、およびその他の検索コンセプトに基づいて異なる結果が返される場合があります。結果の順序は、項目の関連度または更新日に基づいています。 | | 条件付きロジック | このAPIは、比較演算子を使用するマルチパートブール式をサポートします。 | このAPIでは、メタデータによるクエリのサポートが限定的です。サポートされるのは、一度に1つのメタデータテンプレートに対するクエリのみで、単純なクエリ操作のみが可能です。 | | レスポンスタイプ | このAPIでは、一致したファイル/フォルダと、クエリによって一致した関連するメタデータの両方が返されます。 | このAPIで返されるのは、一致した項目のみです。各項目のメタデータを返すには、後続のAPIコールが必要です。 | | スループット (Throughput) | このAPIには現在、ユーザーごとのレート制限のほか、企業あたりのリクエスト数が10件/秒という制限があります。 | このAPIでは、1ユーザーあたりの検索数は6件/秒、企業あたりの検索数は最大60件/分および12件/秒がサポートされています。 | | 規模 | このAPIでは、指定したメタデータテンプレートを使用して返される項目数に制限はありません。一致する結果が2,000件以下になるクエリのみを送信することをお勧めします。 | このAPIには、指定したメタデータテンプレートを使用して返される項目数に制限はありません。ただし、検索に一致する項目数が増えるにつれ、レスポンス時間が大幅に増大します。このAPIでは、1つのクエリに対する結果は1,000万件までという制限があります。一致する結果が50,000件以下になるクエリのみを送信することをお勧めします。 | | スコープ | このAPIは常に、ユーザーがアクセスできるコンテンツに制限されています。 | このAPIは、ユーザーがアクセスできるコンテンツ (​user_content​) または社内のすべてのコンテンツ (​enterprise_content​) のいずれかに制限される場合があります。 | メタデータクエリAPIの詳細を確認する **Source:** [https://ja.developer.box.com/guides/search/](https://ja.developer.box.com/guides/search/) --- ### 検索インデックス作成 **Type:** guide | **Category:** 検索 | **Section:** Developer Guides 検索インデックス作成 Boxは、Boxに格納されているファイルまたはフォルダの検索インデックスを保持します。ファイルまたはフォルダが変更されるたびに、これらの単語がインデックスに追加されます。検索が実行されると、API… # 検索インデックス作成 Boxは、Boxに格納されているファイルまたはフォルダの検索インデックスを保持します。ファイルまたはフォルダが変更されるたびに、これらの単語がインデックスに追加されます。検索が実行されると、APIは、検索インデックスで、クエリに一致するファイルやフォルダを探します。Box内でコンテンツが追加、更新、または削除されると、それに応じて検索インデックスが更新されます。 ## 検索可能になるまでの時間 ファイルのアップロードまたは変更後、そのファイルにインデックスが完全に作成され、検索できるようになるまで時間がかかる場合があります。ほとんどの場合、新しく追加または変更されたファイルは、10分以内にBoxの検索で検索可能になります。ただし、場合によっては、インデックス作成時間はその時点のサービスの負荷によって決まるため、10分を超えることもあります。 10分経過してもインデックスが更新されない場合もあります。このような場合は、[Boxサポート](page://support)に問い合わせて問題を解決することをお勧めします。 ## 検索アクセス 検索結果では、認証済みユーザーがアクセスできるコンテンツ (プレビュー/表示できる項目) のみが返されます。 つまり、検索結果に表示されるためには、ユーザーが所有する項目かコラボレーションしている項目である必要があります。ユーザーが項目にアクセスできない場合や共有リンクを介して項目が共有されている場合は、その項目も検索結果に表示されません。 ただし、例外として、共有リンクを介して最近アクセスされた項目は、`include_recent_shared_links`クエリパラメータを`true`に設定することで、検索結果に含めるようリクエストすることができます。 ## プレフィックス検索とワイルドカード検索 末尾のワイルドカード (プレフィックス検索とも呼ばれます) が検索結果に暗黙的に適用されているのは、テキストのインデックス作成方法が原因です。`Bo`を検索すると、タイトルに`Box`、`Boat`、または`Boxer`が含まれる項目が返されます。これは従来の検索エンジンで`Bo*`または`Bo%`を検索した結果と同じになります。Boxでは、`%ox%`のような従来のワイルドカードの表記法がサポートされていません。Boxは、タイトルのプレフィックス検索に対応していますが、本文コンテンツのプレフィックス検索、タイトルまたは本文コンテンツのサフィックス検索、タイトルまたは本文コンテンツのインフィックス (部分) 検索には対応していません。たとえば、`cal`を検索すると、`California`という**ファイル名**が一致しますが、`decal`または`recall`は一致しません。この場合、`California`、`recall`、`decal`を含め、**ファイル本文のコンテンツ**でのプレフィックス、インフィックス、またはサフィックスとは一致しません。 ## ステミング Boxの検索では、ステミングを使用して、クエリの単語をインデックスの単語と照合します。このため、同じ語幹を含む単語は、クエリ内と完全に同じ形式でなくても、結果セットに含まれる場合があります。たとえば、`run`と`running`は同じ語幹に対応するため、`running`で検索すると、タイトルに`run`を含むドキュメントが返されます。 ## ファイルコンテンツの検索 ファイル内のコンテンツも、Box検索インデックス内に格納されます。以下のファイルタイプでは、コンテンツの検索が可能です。 | | | | | | | --- | --- | --- | --- | --- | | boxnote | csv | doc | docx | gdoc | | gsheet | gslide | gslides | htm | html | | msg | odp | odt | ods | pdf | | ppt | pptx | rtf | tsv | wpd | | xhtml | xls | xlsm | xlsx | xml | | xsd | xsl | as | as3 | asm | | bat | c | cc | cmake | cpp | | cs | css | cxx | diff | erb | | groovy | h | haml | hh | java | | js | json | less | log | m | | make | md | ml | mm | php | | pl | plist | properties | py | rb | | rst | sass | scala | script | scm | | sml | sql | sh | txt | vi | | vim | webdoc | yaml | | | ## ドキュメントあたりのインデックスが作成されるテキスト Boxの検索インデックスには、Businessレベル以上のアカウントの場合、ドキュメントあたり最大10,000バイト (英語で約10,000文字) が格納されます。この量は、言語、Boxのインデックスの作成方法、およびドキュメントの種類によって、ドキュメントごとに異なる場合があります。 ファイルコンテンツ検索が無効になっている企業 (たとえば、[KeySafe](https://www.box.com/ja-jp/security/keysafe)をご利用のお客様) の場合、ドキュメント内の文字を検索できません。ファイルコンテンツ検索が無効の状態でドキュメントを調べる必要がある場合は、アカウントチームまでお問い合わせください。 ## OCRのサポート 現在、Boxではドキュメントに対してOCR処理を実行しません。 ## ドキュメントのバージョン 検索では、最新バージョンのドキュメントのコンテンツに対してのみインデックスを作成するため、古いドキュメントからの関連性のない多数の検索結果を選別する必要はありません。最新バージョン以外のドキュメントを照会する場合は、検索を使用できません。 ## 言語のサポート Boxの検索では、中国語、英語、フランス語、ドイツ語、イタリア語、日本語、およびスペイン語がサポートされています。Boxでは、1つのドキュメント内での複数言語のインデックス作成はサポートされていません。 ## ごみ箱 ごみ箱の検索は、このAPIで`trash_content`クエリパラメータを使用して実行できます。 Boxコミュニティの記事で、Boxでの検索に関する最新情報を確認する **Source:** [https://ja.developer.box.com/guides/search/indexing/](https://ja.developer.box.com/guides/search/indexing/) --- ### 検索結果に対するフィルタ **Type:** guide | **Category:** 検索 | **Section:** Developer Guides 検索結果に対するフィルタ GET /search APIでは、API… # 検索結果に対するフィルタ [`GET /search`](e://get_search) APIでは、APIによって返された結果にフィルタをかけるためのさまざまな方法がサポートされています。 ## コンテンツタイプによるフィルタ デフォルトでは、名前、説明、ファイルコンテンツ、タグ、またはコメントが指定されたクエリと一致する項目が返されます。`content_types`パラメータを設定すると、定義したコンテンツタイプのクエリに一致する項目のみに検索を絞り込むことができます。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&content_types=name,tags" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); final List<String> contentTypes = new ArrayList<String>(); contentTypes.add("name"); contentTypes.add("tags"); searchParams.setContentTypes(contentTypes) PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` var contentTypes = new List<string>(); contentTypes.Add("name"); contentTypes.Add("tags"); BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", contentTypes: contentTypes); ``` ``` client.search().query("sales", content_types=["name", "tags"]) ``` ``` client.search.query( 'sales', { content_types: [ "name", "tags" ] }) .then(results => { // ... }); ``` | コンテンツタイプ | | | --- | --- | | name | nameフィールドで定義されている、項目の名前。 | | description | descriptionフィールドで定義されている、項目の説明。 | | file_content | ファイルの実際のコンテンツ。 | | comments | ファイルまたはフォルダに対するコメントのコンテンツ。 | | tags | tagsフィールドで定義されている、項目に適用されるタグ。 | ## 日付によるフィルタ デフォルトでは、指定した日付に作成されたファイルと指定した日付に更新されたファイルが返されます。ファイルまたはフォルダが最後に更新された日付でも、ファイルまたはフォルダが作成された日付でも結果にフィルタをかけることができます。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&created_at_range=2014-05-15T13:35:01Z,2015-05-15T13:35:01&updated_at_range=2014-05-15T13:35:01," \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); String createdFromDateString = "2014-05-15T13:35:01Z"; String createdToDateString = "2015-05-15T13:35:01Z"; Date createdFromDate = sdf.parse(createdFromDateString); Date createdToDate = sdf.parse(createdToDateString); DateRange createdRange = new DateRange(createdFromDate, createdToDate); searchParams.setCreatedRange(createdRange) String updatedFromDateString = "2014-05-15T13:35:01Z"; Date updatedFromDate = sdf.parse(updatedFromDateString); DateRange updatedRange = new DateRange(updatedFromDate, null); searchParams.setUpdatedRange(updatedRange) PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` var createdAtRangeFromDate = new DateTime(1988, 11, 18, 9, 30, 0, DateTimeKind.Utc); var createdAtRangeToDate = new DateTime(2018, 11, 18, 9, 30, 0, DateTimeKind.Utc); var updatedAtRangeFromDate = new DateTime(1988, 11, 18, 9, 30, 0, DateTimeKind.Utc); BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", contentTypes: contentTypes, createdAtRangeFromDate: createdAtRangeFromDate, createdAtRangeToDate: createdAtRangeToDate, updatedAtRangeFromDate: updatedAtRangeFromDate); ``` ``` client.search().query("sales", created_at_range=["2014-05-15T13:35:01Z", "2015-05-15T13:35:01Z"], updated_at_range=["2014-05-15T13:35:01Z", null]) ``` ``` client.search.query( 'sales', { created_at_range: "2014-05-15T13:35:01Z,2015-05-15T13:35:01Z", updated_at_range: "2014-05-15T13:35:01Z," }) .then(results => { // ... }); ``` | クエリパラメータ | | | --- | --- | | created_at_range | 結果を返すcreated_atの日付の範囲を定義します。上限または下限を空にすると、範囲を期限なしにすることができます。 | | updated_at_range | 結果を返すupdated_atの日付の範囲を定義します。上限または下限を空にすると、範囲を期限なしにすることができます。 | ## ファイル拡張子によるフィルタ デフォルトでは、さまざまな種類のファイル拡張子の項目が返されます。`file_extensions`クエリパラメータを使用すると、指定した1つ以上のファイル拡張子のファイルのみが返されるよう、検索結果にフィルタをかけることができます。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&file_extensions=pdf,txt" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); final List<String> fileExtensions = new ArrayList<String>(); fileExtensions.add("pdf"); fileExtensions.add("txt"); searchParams.setFileExtensions(fileExtensions) PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` var fileExtensions = new List<string>(); fileExtensions.Add("pdf"); fileExtensions.Add("txt"); BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", fileExtensions: fileExtensions); ``` ``` client.search().query("sales", file_extensions=["pdf", "txt"]) ``` ``` client.search.query( 'sales', { file_extensions: [ "pdf", "txt" ] }) .then(results => { // ... }); ``` ## ファイルサイズによるフィルタ デフォルトでは、さまざまなファイルサイズの項目が返されます。`size_range`クエリパラメータを使用すると、指定したファイルサイズを超えないファイルのみが返されるよう、検索結果にフィルタをかけることができます。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&size_range=10000,20000" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); SizeRange sizeRange = new SizeRange(10000, 20000); searchParams.setSizeRange(sizeRange); PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", sizeRangeLowerBoundBytes: 10000, sizeRangeUpperBoundBytes: 20000); ``` ``` client.search().query("sales", size_range=[10000,20000]) ``` ``` client.search.query( 'sales', { size_range: '10000,20000' }) .then(results => { // ... }); ``` ## ファイルタイプによるフィルタ デフォルトでは、ファイル、フォルダ、およびウェブリンクがすべて返されます。結果をそのうちの1つだけに絞り込むには、`type`クエリパラメータを`file`、`folder`、`web_link`のいずれかに設定します。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&type=file" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); searchParams.setType("file"); PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", type: "file"); ``` ``` client.search().query("sales", type="file") ``` ``` client.search.query( 'sales', { type: "file" }) .then(results => { // ... }); ``` ## メタデータによるフィルタ 関連付けられたメタデータを使用して検索結果にフィルタをかけることも、メタデータのみに基づいてすべての検索を実行することもできます。どちらの場合も`mdfilters`クエリパラメータを使用します。 メタデータフィルタの詳細を確認する ## 所有者によるフィルタ デフォルトでは、項目の所有者に関係なく、認証済みユーザーがアクセスできるすべての項目が返されます。特定のユーザーが所有する項目のみに絞り込むには、`owner_user_ids`クエリパラメータを使用します。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&owner_user_ids=34446362,462281242" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); final List<String> userIds = new ArrayList<String>(); userIds.add("34446362"); userIds.add("462281242"); searchParams.setOwnerUserIds(userIds) PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` var userIds = new List<string>(); userIds.Add("34446362"); userIds.Add("462281242"); BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", ownerUserIds: userIds); ``` ``` client.search().query("sales", owner_user_ids=["34446362", "462281242"]) ``` ``` client.search.query( 'sales', { owner_user_ids: "34446362,462281242" }) .then(results => { // ... }); ``` ## 親フォルダによるフィルタ デフォルトでは、ユーザーがアクセスできる任意のフォルダ内のすべての項目が返されます。特定のフォルダ内の項目のみに結果を絞り込むには、`ancestor_folder_ids`クエリパラメータを使用します。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&ancestor_folder_ids=45235463,73445321" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); final List<String> folderIds = new ArrayList<String>(); folderIds.add("45235463"); folderIds.add("73445321"); searchParams.setAncestorFolderIds(folderIds) PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` var folderIds = new List<string>(); folderIds.Add("45235463"); folderIds.Add("73445321"); BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", ancestorFolderIds: folderIds); ``` ``` client.search().query("sales", ancestor_folder_ids=["45235463", "73445321"]) ``` ``` client.search.query( 'sales', { ancestor_folder_ids: "45235463,73445321" }) .then(results => { // ... }); ``` **Source:** [https://ja.developer.box.com/guides/search/filtering/](https://ja.developer.box.com/guides/search/filtering/) --- ### 権限 **Type:** guide | **Category:** セキュリティ | **Section:** Developer Guides … # 権限 以下は、ユーザー、管理者、および共同管理者がサービス利用規約およびサービス利用規約のステータスを操作する際に必要な権限のリストです。 ## サービス利用規約 エンドユーザーは、以下の場合にサービス利用規約の対象であると見なされます。 - サービス利用規約が有効になっている企業に属している、またはその企業とコラボレーションしている サービス利用規約の種類がユーザーと企業との関係を示している - 同じ企業に属するユーザー向けの管理対象ユーザー用サービス利用規約 - 企業とコラボレーションしているユーザー向けの外部ユーザー用サービス利用規約 エンドユーザーは以下の場合にサービス利用規約の設定を表示できます。 - そのユーザーがサービス利用規約の対象となっている、かつ - 企業でそのサービス利用規約が有効になっている 企業の管理者または共同管理者は、以下の場合にサービス利用規約の設定を表示できます。 - **[会社の設定を表示する]** 権限を持っている - アプリケーションの **[Enterpriseのプロパティを管理する]** スコープが有効になっている - そのサービス利用規約が自分の企業に属している 企業の管理者または共同管理者は、以下の場合にサービス利用規約の設定を編集できます。 - **[会社の設定を編集する]** 権限を持っている - アプリケーションの **[Enterpriseのプロパティを管理する]** スコープが有効になっている - そのサービス利用規約が自分の企業に属している 企業の管理者および共同管理者は、自社の管理対象ユーザー用サービス利用規約を承認していなくても、管理対象ユーザー用と外部ユーザー用の両方のサービス利用規約の設定を表示、作成、編集できます。 ## サービス利用規約のユーザーステータス エンドユーザーは以下の場合にサービス利用規約のユーザーステータスを表示および編集できます。 - ユーザーステータスがそのエンドユーザーに属している - 企業でそのサービス利用規約が有効になっている - そのエンドユーザーがサービス利用規約の対象である 企業の管理者および共同管理者は、以下の場合に他のユーザーに属するサービス利用規約のユーザーステータスを表示できます。 - **[ユーザーを管理する]** 権限を持っている - アプリケーションの **[ユーザーを管理する]** スコープが有効になっている - そのサービス利用規約が自分の企業に属している - 自社の管理対象ユーザー用サービス利用規約を承認済みである (該当する場合) 企業の管理者および共同管理者は、以下の場合に他のユーザーに属するサービス利用規約のユーザーステータスを編集できます。 - **[ユーザーを管理する]** 権限を持っている - アプリケーションの **[ユーザーを管理する]** スコープが有効になっている - そのエンドユーザーがサービス利用規約の対象である - そのエンドユーザーが管理者または共同管理者ではない - そのサービス利用規約が自分の企業に属している - 自社の管理対象ユーザー用サービス利用規約を承認済みである (該当する場合) エンドユーザーは、自社の管理対象ユーザー用サービス利用規約を承認するまで、コラボレーションしている企業の外部ユーザー用サービス利用規約の設定を承認、拒否、表示できません (該当する場合)。そのような操作を行おうとすると、`TERMS_OF_SERVICE_REQUIRED`エラーが発生します。 **Source:** [https://ja.developer.box.com/guides/security/terms-of-service/permissions/](https://ja.developer.box.com/guides/security/terms-of-service/permissions/) --- ### 権限とエラー **Type:** guide | **Category:** APIコール | **Section:** Developer Guides 権限とエラー 以下のガイドでは、Box APIに関連した権限やエラーについて説明します。一般的なエラー、レート制限、スコープ、トークンおよびURLの有効期限、App Diagnosticsレポートに関するページが用意されています。 # 権限とエラー 以下のガイドでは、Box APIに関連した権限やエラーについて説明します。[一般的なエラー](g://api-calls/permissions-and-errors/common-errors)、[レート制限](g://api-calls/permissions-and-errors/rate-limits)、[スコープ](g://api-calls/permissions-and-errors/scopes)、[トークンおよびURLの有効期限](g://api-calls/permissions-and-errors/expiration)、[App Diagnosticsレポート](g://api-calls/permissions-and-errors/app-diagnostics-report)に関するページが用意されています。 **Source:** [https://ja.developer.box.com/guides/api-calls/permissions-and-errors/](https://ja.developer.box.com/guides/api-calls/permissions-and-errors/) --- ### 次の手順 **Type:** quick-start | **Category:** CLI | **Section:** Developer Guides 次の手順 このクイックスタートガイドが完了しました。ここまで、以下の手順を実行しました。 OAuth 2.0アプリケーションを作成および構成しました。 CLIをインストールおよび構成しました。 CLI… # 次の手順 このクイックスタートガイドが完了しました。ここまで、以下の手順を実行しました。 1. OAuth 2.0アプリケーションを[作成および構成](g://cli/quick-start/create-oauth-app)しました。 2. CLIを[インストールおよび構成](g://cli/quick-start/install-and-configure)しました。 3. [CLIコマンドを作成および実行](g://cli/quick-start/build-commands-help)しました。 4. [オプションや一括コマンド](g://cli/quick-start/options-and-bulk-commands)について学習しました。 5. CLIを使用して[PowerShellスクリプトを実行する](g://cli/quick-start/powershell-script-templates)方法を確認しました。 次の手順を行うには、以下のリソースをお勧めします。 1. すべての[コマンド](https://github.com/box/boxcli#command-topics)を確認する。 2. [トークンのキャッシュ](https://github.com/box/boxcli/blob/master/docs/configure.md#box-configureenvironmentsupdate-name)の設定を確認する。 3. [オートコンプリート](https://github.com/box/boxcli/blob/master/docs/autocomplete.md)の設定を確認する。 4. すべての[CLIサンプルスクリプト](g://cli/scripts)を確認する。 **Source:** [https://ja.developer.box.com/guides/cli/quick-start/next-steps/](https://ja.developer.box.com/guides/cli/quick-start/next-steps/) --- ### 次の手順 **Type:** quick-start | **Category:** メタデータ | **Section:** Developer Guides … # 次の手順 このクイックスタートガイドが完了しました。ここまで、以下の手順を実行しました。 1. 使用できる[すべてのテンプレートのリストを取得](g://metadata/quick-start/list-all)しました。 2. 会社固有のデータを保持する[カスタムメタデータテンプレートを作成](g://metadata/quick-start/create-template)しました。 3. ファイルに[カスタムメタデータテンプレートを適用](g://metadata/quick-start/create-instance)し、カスタムデータをファイルに割り当てられるようにしました。 4. ファイルの[メタデータインスタンスを更新](g://metadata/quick-start/update-instance)し、ファイルに割り当てられたデータを変更できるようにしました。 5. [メタデータテンプレートを更新](g://metadata/quick-start/update-template)し、このテンプレートのすべてのインスタンスに適用されたデータを変更しました。 6. [ファイルやフォルダに対してクエリを実行](g://metadata/quick-start/create-query)し、ファイルとフォルダに適用されているメタデータインスタンスの値と照合しました。 ## 次の手順 Box APIでのメタデータの使用の詳細を確認するには、以下のリソースをお勧めします。 - [メタデータのスコープの詳細を確認する](g://metadata/scopes) - テンプレートで使用できる[各種フィールドタイプの詳細](g://metadata/fields) **Source:** [https://ja.developer.box.com/guides/metadata/quick-start/next-steps/](https://ja.developer.box.com/guides/metadata/quick-start/next-steps/) --- ### 次の手順 **Type:** quick-start | **Category:** 検索 | **Section:** Developer Guides 次の手順 このクイックスタートガイドが完了しました。ここまで、以下の手順を実行しました。 メタデータテンプレートを作成しました APIを使用して手順1のメタデータテンプレートに関する情報を確認しました… # 次の手順 このクイックスタートガイドが完了しました。ここまで、以下の手順を実行しました。 1. [メタデータテンプレートを作成](g://search/quick-start/create-metadata-template)しました 2. APIを使用して手順1の[メタデータテンプレートに関する情報を確認](g://search/quick-start/locate-template-info)しました 3. 1つ以上のファイルに[メタデータテンプレートを追加](g://search/quick-start/apply-template-to-file)しました 4. [メタデータクエリAPIを使用](g://search/quick-start/metadata-query-api)して手順3のファイルを特定しました ## 次の手順 詳細を確認するには、以下のリソースをお勧めします。 - [メタデータクエリのガイド](g://metadata/queries) - [一般的なエラー](g://metadata/queries/errors)と[制限](g://metadata/queries/limitations)の確認 - [メタデータクエリ](e://post-metadata-queries-execute-read)APIのリファレンスドキュメント メタデータクエリAPIをサポートするBox SDKは以下のとおりです。 - [Python SDK](https://github.com/box/box-python-sdk/blob/main/docs/usage/search.md#metadata-query) - [.NET SDK](https://github.com/box/box-node-sdk/blob/3fcc0d8bbd1ca11f1a3a78d741e4572718af53f0/docs/metadata.md#query) - [iOS SDK](https://github.com/box/box-ios-sdk/blob/c5ff8396e28c31fcf3c433f1b9e8f2f0d7a0e0db/docs/usage/search.md#metadata-search) - [Java SDK](https://github.com/box/box-java-sdk/blob/5e3a96c903fffa198c97e981ce75765a69bd6cb6/doc/metadata_template.md#execute-metadata-query) - [Node](https://github.com/box/box-node-sdk/blob/3fcc0d8bbd1ca11f1a3a78d741e4572718af53f0/docs/metadata.md#query) **Source:** [https://ja.developer.box.com/guides/search/quick-start/next-steps/](https://ja.developer.box.com/guides/search/quick-start/next-steps/) --- ### 次の手順 **Type:** quick-start | **Category:** モバイル | **Section:** Developer Guides 次の手順 このクイックスタートガイドが完了しました。ここまで、以下の手順を実行しました。 Xcodeで新しいiOSアプリを作成しました。 プロジェクトにiOS SDKをインストールしました。 iOS SDKからBox APIにアクセスできるようにBox… # 次の手順 このクイックスタートガイドが完了しました。ここまで、以下の手順を実行しました。 1. Xcodeで[新しいiOSアプリを作成](g://mobile/ios/quick-start/create-ios-app)しました。 2. プロジェクトに[iOS SDKをインストール](g://mobile/ios/quick-start/install-ios-sdk)しました。 3. iOS SDKからBox APIにアクセスできるように[Boxアプリを設定](g://mobile/ios/quick-start/configure-box-app)しました。 4. iOS SDKを使用してBox APIに対する[APIコールを実行](g://mobile/ios/quick-start/make-api-call)しました。 ## 次に行うべきこと アプリケーションで次の手順を行うには、次のリソースをお勧めします。 - [トークンのダウンスコープ](g://authentication/tokens/downscope): このクイックスタートガイドでは、開発者トークンを使用して最初の呼び出しを実行しました。スケーラブルなソリューションを実装するには、その実装に代わるダウンスコープされたトークンを生成するサーバー側ソリューションが必要です。 - [公式のJWTサンプルアプリケーション](https://github.com/box/box-ios-sdk/tree/master/SampleApps/JWTSampleApp): iOS SDKにバンドルされているこのサンプルアプリケーションにより、適切に構造化されたBox JWTアプリケーションをすぐに利用開始できます。ユーザーのログインは必要ありません。 - [公式のOAuth 2サンプルアプリケーション](https://github.com/box/box-ios-sdk/tree/master/SampleApps/OAuth2SampleApp): iOS SDKにバンドルされているこのサンプルアプリケーションにより、適切に構造化されたBox OAuth 2アプリケーションをすぐに利用開始できます。ユーザーのログインは不要です。 **Source:** [https://ja.developer.box.com/guides/mobile/ios/quick-start/next-steps/](https://ja.developer.box.com/guides/mobile/ios/quick-start/next-steps/) --- ### 次の手順 **Type:** quick-start | **Category:** ツール | **Section:** Developer Guides 次の手順 このクイックスタートガイドが完了しました。ここまで、以下の手順を実行しました。 デバイスにPostmanをインストールしました。 BoxへのアクセスについてPostmanアプリを認証できるようにBoxアプリを設定しました。 Boxアプリにログインして適切なAPI… # 次の手順 このクイックスタートガイドが完了しました。ここまで、以下の手順を実行しました。 1. デバイスに[Postmanをインストール](g://tooling/postman/quick-start/install-postman)しました。 2. BoxへのアクセスについてPostmanアプリを認証できるように[Boxアプリを設定](g://tooling/postman/quick-start/configure-box-app)しました。 3. Boxアプリに[ログイン](g://tooling/postman/quick-start/log-in-to-box)して適切なAPI資格情報を取得しました。 4. Postmanに、APIコールに必要なすべての資格情報とともに[BoxのPostmanコレクションを読み込み](g://tooling/postman/quick-start/load-postman-collection)ました。 5. Postmanを使用して、Box APIへの[最初のAPIコールを実行](g://tooling/postman/quick-start/make-api-call)しました。 ## 次に行うべきこと Box APIとPostmanの使用についてさらに詳しく知りたい方には、以下のリソースをお勧めします。 - Postmanチームが提供する[公式のPostman入門ガイド](https://learning.getpostman.com/getting-started/)。 - Postman内で[アクセストークンを更新する方法](g://tooling/postman/refresh)。 **Source:** [https://ja.developer.box.com/guides/tooling/postman/quick-start/next-steps/](https://ja.developer.box.com/guides/tooling/postman/quick-start/next-steps/) --- ### 注釈 **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides 注釈 Boxの注釈を使用すると、開発者はアプリケーションに埋め込まれたBoxプレビュー内から直接コラボレーション機能を提供できます。Box… # 注釈 Boxの注釈を使用すると、開発者はアプリケーションに埋め込まれたBoxプレビュー内から直接コラボレーション機能を提供できます。Boxの注釈は幅広いユースケースに対応するため、使用するとプレビューアーの注意を引いたり、ドキュメントや画像の特定の部分に関するフィードバックを提供したりできます。 コンテンツプレビューの詳細を確認する 現在、Box Content Previewは、コメントのハイライト、ハイライトのみ、描画、ポイント注釈という4種類の注釈をサポートしています。Boxの注釈は、現在、ドキュメントと画像のプレビューでのみサポートされています。Box Content Previewでサポートされるファイルタイプの詳細なリストについては、[こちら](https://support.box.com/hc/ja/articles/360043695794-Box-Content-Preview%E3%81%A7%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)で確認できます。 ## ブラウザのサポート Box UI Elementの[ブラウザのサポートの詳細](g://embed/ui-elements/browser)を確認してください。 ## 使用方法 Boxの注釈は、[NPMパッケージ](https://www.npmjs.com/package/box-annotations)から取り込むと使用できます。 ## 初期化 ``` /* global BoxAnnotations */ const boxAnnotations = new BoxAnnotations(); const annotatorConf = boxAnnotations.determineAnnotator( options, disabledAnnotationTypes ); // Construct and init annotator const annotator = new annotatorConf.CONSTRUCTOR(options); annotator.init(scale); ``` ここで、`disabledAnnotationTypes`は、無効にする有効な注釈の種類の文字列です。ビューアー固有の注釈の構成の詳細については、以下を参照してください。 ## 認証 UI Elementは認証に依存しない方法で設計されているため、Boxアカウントを持つユーザー (管理対象ユーザー) とBox以外のアカウントを持つユーザー (App User) のどちらにUI Elementを使用するかどうかに関係なく、UI Elementを使用するのに特別な設定は必要ありません。その理由は、UI Elementは認証のために「トークン」を受け取ることのみを予期しており、Boxにはトークンの生成方法としてOAuthとJWTの2つがあるからです。 認証方法の選択について確認する アプリケーションでエンドユーザーが注釈機能のサブセットだけにアクセスできるようにする必要がある場合は、[ダウンスコープ](g://authentication/tokens/downscope)を使用して、アクセストークンを適切にダウンスコープして必要な権限のセットを含むトークンを生成し、注釈を初期化するエンドユーザークライアントに安全に渡すことができます。 以下は、ダウンスコープと一緒に使用する、注釈固有の新しいスコープのセットです。こうしたスコープにより、開発者は、ダウンスコープされたトークンに適切なスコープを構成して、Boxの注釈に対する機能を有効/無効にすることができます。詳細については、[Box UI Elementsの専用スコープ](g://embed/ui-elements/scopes)を参照してください。 ## パラメータとオプション ``` const annotator = new annotatorConf.CONSTRUCTOR({ annotator, apiHost, token, container, file: { id, file_version: { id }, permissions }, isMobile, hasTouch, locale, modeButtons: { // Annotation mode buttons, i.e. point, draw, etc point: { // Accessibilty message for the point annotation mode button title: "Point annotation mode", // CSS selector for the point annotation mode button selector: ".bp-btn-annotate-point" } } }); ``` | パラメータ | デフォルト | 説明 | | --- | --- | --- | | annotator | | ビューアー固有の注釈構成オブジェクト | | apiHost | | Box APIコールのホスト (https://app.box.com/apiなど) | | fileId | | BoxファイルID | | token | | 文字列認証トークン。適切なスコープを使用した注釈トークンの生成方法の詳細については、以下を参照してください。 | | container | | プレビューが配置されるDOMノードまたはセレクタ | | file | | ファイルメタデータオブジェクト | | file.id | | 文字列Box_File ID | | file.file_version.id | | 文字列Box_File_Version ID | | file.permissions | | ファイル権限オブジェクト。権限のスコープを設定する方法については、以下を参照してください。 | | オプション | デフォルト | 説明 | | --- | --- | --- | | modeButtons | | 注釈モードボタンのCSSセレクタとアクセシビリティメッセージを含むオブジェクト。上記のパラメータとオプションを参照してください。 | | isMobile | false | ユーザーのブラウザがモバイルデバイスにあるかどうか | | hasTouch | false | モバイルブラウザがタッチ対応かどうか | | locale | en-US | 共有リンクのURL | ### 基本スコープ | スコープ名 | 付与される権限 | | --- | --- | | base_preview | ユーザー/ファイル/トークンの権限に基づいて、フォルダ内のファイルに対するプレビュー権限を許可します。 | ### 機能のスコープ | スコープ名 | 付与される権限 | | --- | --- | | item_download | ファイル/フォルダのコンテンツのダウンロードを許可します。 | | annotation_view_self | ユーザーに自分の注釈の表示を許可します。 | | annotation_view_all | ユーザーにファイルに付いているすべての注釈の表示を許可します。 | | annotation_edit | ユーザーに自分の注釈の編集を許可します (annotation_view_selfを含む)。 | ### サンプルのシナリオ | シナリオ | スコープの組み合わせ | | --- | --- | | ユーザーが基本的なプレビュー機能と自分の注釈の編集機能を必要とする | base_preview + annotation_edit | | ユーザーが基本的なプレビュー機能、自分の注釈の編集機能、およびドキュメントのテキストの選択機能を必要とする | base_preview + annotation_edit + item_download | | ユーザーが基本的なプレビュー機能、すべての注釈の表示機能、および自分の注釈の編集機能を必要とする | base_preview + annotation_view_all + annotation_edit | | ユーザーが基本的なプレビュー機能と自分の注釈のみを表示する機能を必要とする | base_preview + annotation_view_self | ## 注釈の有効化/無効化と注釈の種類 注釈の種類は、プレビューオプションで選択して無効にすることができます。ビューアーオプションによって、そのビューアーに対してグローバルな`showAnnotations`の値が上書きされます。ここでBoxの注釈とともに使用するプレビューインスタンスを設定する方法の詳細については、[Box Content Preview](g://embed/ui-elements/preview)を参照してください。 ``` preview.show(..., { showAnnotations: Boolean }); ``` 次と組み合わせます。 ``` preview.show(..., { viewers: { VIEWER_NAME: { annotations: { enabled: Boolean, enabledTypes: String[] | null } } } }); ``` これにより、`enabled`が`true`に設定されている場合は、注釈が有効になります。空の場合は`showAnnotations`の値に従います。`enabledTypes`の値は、このビューアーに対して有効にする注釈の種類のリストです。空の場合は、その注釈者のデフォルトの種類に従います。 ### 例 すべての注釈を有効にし、画像ビューアーに対してはオフにします。また、ドキュメントビューアーに対してはポイント注釈のみ有効にします。 ``` preview.show(fileId, token, { showAnnotations: true, viewers: { Image: { annotations: { enabled: false } }, Document: { annotations: { enabled: true, enabledTypes: ["point"] } } } }); ``` ## 注釈者 注釈者の名前には、`DocAnnotator`と`ImageAnnotator`のいずれかを指定することができます。`boxAnnotations.getAnnotators()`を呼び出すと、使用できる注釈のリストを取得できます。 ## その他のメソッド - `annotator.init()`: 注釈者を初期化します。 - `annotator.isModeAnnotatable(/* String */ type)`: 現在のビューアー/注釈者で現在の注釈モードが有効になっているかどうかを返します。 - `annotator.showModeAnnotateButton(/* String */ currentMode)`: 指定した注釈モードの注釈ボタンを示します。 - `annotator.getAnnotateButton(/* String */ annotatorSelector)`: 注釈ボタンの要素を取得します。 - `annotator.showAnnotations()`: 保存されている注釈を取得して表示します。 - `annotator.hideAnnotations()`: 注釈を非表示にします。 - `annotator.hideAnnotationsOnPage(/* number */ pageNum)`: 指定したページで注釈を非表示にします。 - `annotator.setScale()`: 拡大/縮小倍率を設定します。 - `annotator.toggleAnnotationHandler()`: 注釈モードのオンとオフを切り替えます。注釈モードがオンの場合は、その場所に注釈スレッドが作成されます。 - `annotator.disableAnnotationMode(/* String */ mode, /* HTMLElement */ buttonEl)`: 指定した注釈モードを無効にします。 - `annotator.enableAnnotationMode(/* String */ mode, /* HTMLElement */ buttonEl)`: 指定した注釈モードを有効にします。 - `annotator.getAnnotatedEl(/* HTMLElement */ containerEl)`: ビューアー内の注釈付きの要素を特定します。 - `annotator.createAnnotationThread(/* Annotation[] */ annotations, /* Object */ location, /* String */ [annotation type])`: 適切な種類の注釈スレッドを作成し、インメモリのマップに追加して返します。 ## イベント イベントは、`addListener`を使用して注釈者オブジェクトにバインドし、`removeListener`を使用して削除することができます。イベントリスナーは`showAnnotations()`が呼び出される前にバインドする必要があります。そうしないと、イベントが見つからない可能性があります。 ``` /* global BoxAnnotations */ const boxAnnotations = new BoxAnnotations(); const annotatorConf = boxAnnotations.determineAnnotator( options, disabledAnnotationTypes ); // Construct and init annotator const annotator = new annotatorConf.CONSTRUCTOR(options); var listener = value => { // Do something with value }; // Attach listener before calling show otherwise events can be missed annotator.addListener(EVENTNAME, listener); // Initialize a annotator annotator.showAnnotations(); // Remove listener when appropriate annotator.removeListener(EVENTNAME, listener); ``` `EVENTNAME`には、以下のいずれかを指定できます。 - `annotator`イベントは、注釈者インスタンスが最初に使用可能になったときにトリガーされます。Boxの注釈により、`load`の前にこのイベントがトリガーされるため、クライアントは、`load`イベントがBox Content Previewからトリガーされる前にそのリスナーをアタッチできます。 - `annotationsfetched`イベントは、Box APIから注釈が取得されているときにトリガーされます。 - `annotationmodeenter`イベントは、注釈モードに入るとトリガーされます。イベントデータには以下の内容が含まれます。 ``` { // Annotation mode that was entered mode: 'point', // Optional CSS selector for the container's header headerSelector: '.bp-preview-header', } ``` `annotationmodeexit`イベントは、注釈モードが終了するとトリガーされます。イベントデータには以下の内容が含まれます。 ``` { // Annotation mode that was exited mode: 'point', // Optional CSS selector for the container's header headerSelector: '.bp-preview-header', } ``` `annotationerror`イベントは、注釈エラーが発生したときにトリガーされます。イベントデータには以下の内容が含まれます。 ``` { message: 'message', // Error message to show } ``` `annotationpending`イベントは、注釈スレッドが作成されたにもかかわらず、まだサーバーに保存されていない場合にトリガーされます。イベントデータには以下の内容が含まれます。 ``` { data: { type: 'point', // Annotation type threadID: '123abc', userId: '456def', threadNumber: '1' // Thread number from Annotations API } } ``` `annotationthreadsaved`イベントは、注釈スレッドがサーバーに保存されたときにトリガーされます。イベントデータには以下の内容が含まれます。 ``` { data: { type: 'point', // Annotation type threadID: '123abc', userId: '456def', threadNumber: '1' // Thread number from Annotations API } } ``` `annotationthreaddeleted`イベントは、注釈スレッドがサーバーで削除されたときにトリガーされます。イベントデータには以下の内容が含まれます。 ``` { data: { type: 'point', // Annotation type threadID: '123abc', userId: '456def', threadNumber: '1' // Thread number from Annotations API } } ``` `annotationsaved`イベントは、注釈が追加され、サーバー上の既存の注釈スレッドに保存されたときにトリガーされます。イベントデータには以下の内容が含まれます。 ``` { data: { type: 'point', // Annotation type threadID: '123abc', userId: '456def', threadNumber: '1' // Thread number from Annotations API } } ``` `annotationdeleted`イベントは、サーバー上の既存のスレッドから注釈が削除されたときにトリガーされます。注釈スレッド全体は削除されません。イベントデータには以下の内容が含まれます。 ``` { data: { type: 'point', // Annotation type threadID: '123abc', userId: '456def', threadNumber: '1' // Thread number from Annotations API } } ``` `annotationcanceled`イベントは、新しいスレッドまたは既存のスレッドで注釈の投稿がキャンセルされたときにトリガーされます。イベントデータには以下の内容が含まれます。 ``` { data: { type: 'point', // Annotation type threadID: '123abc', userId: '456def', threadNumber: '1' // Thread number from Annotations API } } ``` `annotationdeleteerror`イベントは、新しいスレッドまたは既存のスレッドで注釈の削除中にエラーが発生したときにトリガーされます。イベントデータには以下の内容が含まれます。 ``` { data: { type: 'point', // Annotation type threadID: '123abc', userId: '456def', threadNumber: '1' // Thread number from Annotations API } } ``` `annotationcreateerror`イベントは、新しいスレッドまたは既存のスレッドで注釈の投稿中にエラーが発生したときにトリガーされます。イベントデータには以下の内容が含まれます。 ``` { data: { type: 'point', // Annotation type threadID: '123abc', userId: '456def', threadNumber: '1' // Thread number from Annotations API } } ``` `annotatorevent`: 注釈者ごとに、一連の独自のイベントがトリガーされます。たとえば、画像の注釈者では`rotate`や`resize`などがトリガーされるのに対し、別の注釈者では別の一連のイベントがトリガーされる場合があります。また、注釈者ラッパーは、以下を含むイベントデータとともに、Box Content Previewのプレビューレベルでイベントを再発行します。 ``` { event: EVENTNAME, // Event name data: DATA, // Event data object annotatorName: ANNOTATORNAME, // Name of the annotator fileVersionId: fileVersionId // The file version id fileId: fileId // The file id } ``` ### イベントの使用例 ``` preview.addListener("annotator", viewer => { annotator.addListener("annotationsfetched", () => { // Do something when annotations are fetched on a preview }); }); // Event listeners can be attached to viewers preview.addListener("load", data => { var viewer = data.viewer; viewer.addListener("annotationsfetched", () => { // Do something when annotations are fetched on a preview }); }); // Event listeners can be attached to annotators preview.addListener("load", data => { var annotator = data.viewer.annotator; annotator.addListener("annotationsfetched", () => { // Do something when annotations are fetched on a preview }); }); preview.addListener("annotatorevent", data => { if (data.event === "annotationsfetched") { // Do something when annotations are fetched on a preview } else if (data.event === "annotationerror") { // Do something different when an annotation error has occurred } else { } }); preview.addListener("annotatorevent", data => { if (data.viewerName === "Image") { if (data.event === "annotationsfetched") { // Do something when annotations are fetched on an image preview } } else if (data.viewerName === "MultiImage") { if (data.event === "annotationsfetched") { // Do something different when annotations are fetched on a multi-page image } } else { } }); preview.addListener("annotationsfetched", data => { if (data.viewerName === "Image") { // Do something when annotations are fetched on an image preview } else if (data.viewerName === "MultiImage") { // Do something different when annotations are fetched on a multi-page image } else { } }); ``` ## 注釈スレッド ### スレッドのメソッド 注釈スレッドには、以下のメソッドを使用できます。 | メソッド名 | 説明 | メソッドのパラメータ | | --- | --- | --- | | createDialog | スレッドのダイアログボックスを作成します。 | | | show | 注釈インジケータを表示します。 | | | hide | 注釈インジケータを非表示にします。 | | | reset | スレッドの状態を「inactive」にリセットします。 | | | showDialog | このスレッドに適切なダイアログを表示します。 | | | hideDialog | このスレッドに適切なダイアログを非表示にします。 | | | saveAnnotation | 注釈をローカルとサーバーに保存します。 | {string} 注釈の種類、{text} 保存する注釈のテキスト | | deleteAnnotation | 注釈を削除します。 | {string} 注釈ID、{boolean} サーバー上で削除するかどうか (デフォルトはtrue) | ### スレッドのイベント すべての注釈スレッドでは以下のイベントがトリガーされます。イベントデータには以下の内容が含まれます。 ``` { data: { type: 'point', // Annotation type threadID: '123abc', userId: '456def', threadNumber: '1' // Thread number from Annotations API } } ``` | イベント名 | 説明 | | --- | --- | | annotationpending | 注釈スレッドは作成されましたが、まだサーバーに保存されていません。 | | annotationthreadsaved | 注釈スレッドはサーバーに保存されました。 | | annotationthreaddeleted | 注釈スレッドはサーバーで削除されました。 | | annotationsaved | 注釈スレッドは追加され、サーバー上の既存の注釈スレッドに保存されました。 | | annotationdeleted | 注釈スレッドはサーバー上の既存のスレッドから削除されました。注釈スレッド全体は削除されていません。 | | annotationcanceled | 新しいスレッドまたは既存のスレッドで注釈スレッドの投稿がキャンセルされました。 | | annotationdeleteerror | 新しいスレッドまたは既存のスレッドで注釈の削除中にエラーが発生しました。 | | annotationcreateerror | 新しいスレッドまたは既存のスレッドで注釈の投稿中にエラーが発生しました。 | イベントの使用例については、上記の「**イベント**」セクションを参照してください。 ## 注釈ダイアログ ### ダイアログのメソッド 注釈ダイアログには、以下のメソッドを使用できます。 | メソッド名 | 説明 | メソッドのパラメータ | | --- | --- | --- | | show | ダイアログを配置して表示します。 | | | hide | ダイアログを非表示にします。 | | | hideMobileDialog | 共有モバイルダイアログを非表示にしてリセットします。 | | | addAnnotation | 注釈をダイアログに追加します。 | {Annotation} 追加する注釈 | | removeAnnotation | 注釈をダイアログから削除します。 | {string} 注釈ID | | postAnnotation | 注釈をダイアログで投稿します。 | {string} 投稿する注釈テキスト | | position | ダイアログを配置します。 | | ## サポートされている注釈の種類 ポイント注釈は、ドキュメント形式と画像形式の両方でサポートされています。コメントのハイライト、ハイライトのみ、描画による注釈はドキュメント形式でのみサポートされています。 サポートされているドキュメントのファイル拡張子: `pdf`、`doc`、`docx`、`ppt`、`pptx`、`xlsx`、`xls`、`xlsm`。 サポートされている画像のファイル拡張子: `ai`、`bmp`、`dcm`、`eps`、`gif`、`idml`、`indd`、`indt`、`inx``png`、`ps`、`psd`、`svs`、`tga`、`tif`、`tiff`。 **Source:** [https://ja.developer.box.com/guides/embed/ui-elements/annotations/](https://ja.developer.box.com/guides/embed/ui-elements/annotations/) --- ### 注釈トークン **Type:** guide | **Category:** 認証 | **Section:** Developer Guides 注釈トークン 注釈は、新しいBox Viewでサポートされる主な機能の1つです。開発者はこの機能を使用して、アプリケーションに埋め込まれたプレビュー内から直接、コラボレーション機能を提供できます。 Box View… # 注釈トークン 注釈は、新しいBox Viewでサポートされる主な機能の1つです。開発者はこの機能を使用して、アプリケーションに埋め込まれたプレビュー内から直接、コラボレーション機能を提供できます。 Box Viewでは、ハイライトのみ、ハイライトによる注釈、およびポイント注釈という3つの注釈の種類をサポートしています。注釈はドキュメントと画像のプレビューのみでサポートされます。 ## 注釈トークンとは 注釈トークンとは、ユーザーが注釈を付けることができるファイルに対してアプリケーションがプレビューの埋め込みリンクを作成できるようにするアクセストークンです。アプリケーションでは、アプリケーションのユーザーそれぞれに新しいApp Userが作成されない可能性があるため、注釈トークンを使用すると、注釈を付けたユーザーを追跡できます。 注釈トークンは、一意のユーザーIDと表示名にリンクされているプレビューセッション (有効期限付き埋め込みリンク) を生成するために、通常のアクセストークン、アプリトークン、またはファイルトークンの代わりに使用されます。 注釈トークンを使用して生成されたプレビューセッションは特定の外部ユーザーに関連付けられるため、アプリケーションでは、アプリケーションのエンドユーザーごとに異なる注釈トークンを使用して、個別にプレビューセッションを生成することを強くお勧めします。 ## 外部ユーザー情報 注釈に関連付けられた外部の表示名は、実際のところ、注釈に追加されるステートレスな「ラベル」です。つまり、注釈が追加されると、その表示名は完全に注釈と関連付けられるため、注釈を削除し、更新した表示名を使用して再度追加しなければ更新できません。 ## SDKを使用せずに作成 注釈トークンを作成するには、[JWTを使用して手動で認証する](g://authentication/jwt/without-sdk)手順に従いますが、その際、JWTクレームを次のデータに置き換えます。 ``` var claims = new List<Claim>{ new Claim("sub", '[EXTERNAL_USER_ID]'), new Claim("name", '[EXTERNAL_USER_DISPLAY_NAME]'), new Claim("box_sub_type", "external"), new Claim("jti", jti), }; ``` ``` JwtClaims claims = new JwtClaims(); claims.setIssuer(config.boxAppSettings.clientID); claims.setAudience(authenticationUrl); claims.setSubject("[EXTERNAL_USER_ID]"); claims.setName("[EXTERNAL_USER_DISPLAY_NAME]"); claims.setClaim("box_sub_type", "external"); claims.setGeneratedJwtId(64); claims.setExpirationTimeMinutesInTheFuture(0.75f); ``` ``` claims = { 'iss': config['boxAppSettings']['clientID'], 'sub': '[EXTERNAL_USER_ID]', 'name': '[EXTERNAL_USER_DISPLAY_NAME]', 'box_sub_type': 'external', 'aud': authentication_url, 'jti': secrets.token_hex(64), 'exp': round(time.time()) + 45 } ``` ``` let claims = { iss: config.boxAppSettings.clientID, sub: "[EXTERNAL_USER_ID]", name: "[EXTERNAL_USER_DISPLAY_NAME]", box_sub_type: "external", aud: authenticationUrl, jti: crypto.randomBytes(64).toString("hex"), exp: Math.floor(Date.now() / 1000) + 45 }; ``` ``` claims = { iss: config['boxAppSettings']['clientID'], sub: "[EXTERNAL_USER_ID]", name: "[EXTERNAL_USER_DISPLAY_NAME]", box_sub_type: 'external', aud: authentication_url, jti: SecureRandom.hex(64), exp: Time.now.to_i + 45 } ``` ``` $claims = [ 'iss' => $config->boxAppSettings->clientID, 'sub' => '[EXTERNAL_USER_ID]', 'name' => '[EXTERNAL_USER_DISPLAY_NAME]', 'box_sub_type' => 'external', 'aud' => $authenticationUrl, 'jti' => base64_encode(random_bytes(64)), 'exp' => time() + 45, 'kid' => $config->boxAppSettings->appAuth->publicKeyID ]; ``` | パラメータ | 型 | 説明 | | --- | --- | --- | | sub | String | この注釈を関連付ける外部ユーザーID。このIDには、アプリケーションで追跡される任意のIDを使用できます。 | | box_sub_type | String | 外部ユーザーIDを示す場合はexternal | | box_sub_type | String | この注釈を関連付ける外部ユーザー名。これはBox UIに表示されます。 | その後、ガイドに従ってこのクレームをアサーションに変換し、このアサーションを、既存の有効なアクセストークン、アプリトークン、またはファイルトークンのほか、スコープのセット、トークンの作成対象となるリソースとともに[`POST /oauth2/token`](e://post-oauth2-token)エンドポイントに渡します。 ``` var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>( "grant_type", "urn:ietf:params:oauth:grant-type:token-exchange"), new KeyValuePair<string, string>( "resource", "https://api.box.com/2.0/files/123456"), new KeyValuePair<string, string>( "subject_token", "[ACCESS_TOKEN]"), new KeyValuePair<string, string>( "subject_token_type", "urn:ietf:params:oauth:token-type:access_token"), new KeyValuePair<string, string>( "scope", "item_preview"), new KeyValuePair<string, string>( "actor_token", "[JWT_ASSERTION_FOR_ANNOTATOR_TOKEN]"), new KeyValuePair<string, string>( "actor_token_type", "urn:ietf:params:oauth:token-type:id_token"), }); ``` ``` List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair( "grant_type", "urn:ietf:params:oauth:grant-type:token-exchange")); params.add(new BasicNameValuePair( "resource", "https://api.box.com/2.0/files/123456")); params.add(new BasicNameValuePair( "subject_token", "[ACCESS_TOKEN]")); params.add(new BasicNameValuePair( "subject_token_type", "urn:ietf:params:oauth:token-type:access_token")); params.add(new BasicNameValuePair( "scope", "item_preview")); params.add(new BasicNameValuePair( "actor_token", "[JWT_ASSERTION_FOR_ANNOTATOR_TOKEN]")); params.add(new BasicNameValuePair( "actor_token_type", "urn:ietf:params:oauth:token-type:id_token")); ``` ``` params = urlencode({ 'grant_type': 'urn:ietf:params:oauth:grant-type:token-exchange', 'resource': 'https://api.box.com/2.0/files/123456', 'subject_token': '[ACCESS_TOKEN]', 'subject_token_type': 'urn:ietf:params:oauth:token-type:access_token', 'scope': 'item_preview', 'actor_token': '[JWT_ASSERTION_FOR_ANNOTATOR_TOKEN]', 'actor_token_type': 'urn:ietf:params:oauth:token-type:id_token' }).encode() ``` ``` let accessToken = await axios .post( authenticationUrl, querystring.stringify({ grant_type: "urn:ietf:params:oauth:grant-type:token-exchange", resource: "https://api.box.com/2.0/files/123456", subject_token: "[ACCESS_TOKEN]", subject_token_type: "urn:ietf:params:oauth:token-type:access_token", scope: "item_preview", actor_token: "[JWT_ASSERTION_FOR_ANNOTATOR_TOKEN]", actor_token_type: "urn:ietf:params:oauth:token-type:id_token" }) ) .then(response => response.data.access_token); ``` ``` params = URI.encode_www_form({ grant_type: 'urn:ietf:params:oauth:grant-type:token-exchange', resource: 'https://api.box.com/2.0/files/123456', subject_token: '[ACCESS_TOKEN]', subject_token_type: 'urn:ietf:params:oauth:token-type:access_token', scope: 'item_preview', actor_token: '[JWT_ASSERTION_FOR_ANNOTATOR_TOKEN]', actor_token_type: 'urn:ietf:params:oauth:token-type:id_token' }) ``` ``` $params = [ 'grant_type' => 'urn:ietf:params:oauth:grant-type:token-exchange', 'resource' => 'https://api.box.com/2.0/files/123456', 'subject_token' => '[ACCESS_TOKEN]', 'subject_token_type' => 'urn:ietf:params:oauth:token-type:access_token', 'scope' => 'item_preview', 'actor_token' => '[JWT_ASSERTION_FOR_ANNOTATOR_TOKEN]', 'actor_token_type' => 'urn:ietf:params:oauth:token-type:id_token' ]; ``` | パラメータ | 説明 | | --- | --- | | resource | トークンが制限されるファイルへの完全なURLパス (省略可)。 | | actor_token | 以前に作成されたJWTアサーション | | actor_token_type | 常にurn:ietf:params:oauth:token-type:id_tokenに設定します。 | ## SDKを使用して作成 SDKを使用してJWT注釈トークンを作成するために、アプリケーションはアクティブなトークンを別のトークンと交換できます。 ``` var options = { actor: { id: "[EXTERNAL_USER_ID]", name: "[EXTERNAL_USER_DISPLAY_NAME" } }; client .exchangeToken( "item_preview", "https://api.box.com/2.0/files/123456", options ) .then(tokenInfo => { //=> tokenInfo.accessToken }); ``` **Source:** [https://ja.developer.box.com/guides/authentication/tokens/annotator-tokens/](https://ja.developer.box.com/guides/authentication/tokens/annotator-tokens/) --- ### 浮動小数点メタデータフィールド **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 浮動小数点メタデータフィールド floatタイプのメタデータフィールドは、数値入力のみが可能な標準のテキストフィールドとしてユーザーに表示されます。 浮動小数点フィールドの作成 floatフィールドは、メタデータテンプレートの作成時、またはaddField… # 浮動小数点メタデータフィールド `float`タイプのメタデータフィールドは、数値入力のみが可能な標準のテキストフィールドとしてユーザーに表示されます。 ## 浮動小数点フィールドの作成 `float`フィールドは、[メタデータテンプレートの作成](g://metadata/templates/create)時、または`addField`操作による[テンプレートの更新](g://metadata/templates/update)時にメタデータテンプレートに追加できます。 `float`フィールドの必須属性は、`type`、`displayName`、および`key`です。 ``` { "scope": "enterprise", "displayName": "Contract", "fields": [ { "type": "float", "key": "contract_value", "displayName": "Contract Value", "description": "The contract's total value", "hidden": false } ] } ``` 必要に応じて、UIでユーザーに表示される`description`を指定できます。また、このフィールドを`hidden`に設定して、ウェブアプリとモバイルアプリでユーザーに表示されないようにすることもできます。 ## 浮動小数点フィールドの更新 `float`テンプレートフィールドは、このフィールドが属する[テンプレートを更新](g://metadata/templates/update)することで更新できます。テンプレートの更新は、ファイルまたはフォルダにすでに割り当てられているテンプレートも確実に更新される**操作**によって行われます。 `float`メタデータフィールドを更新する際、関連する操作は、フィールドの`key`、`displayName`、`description`、および`hidden`の値を変更するのに使用できる`editField`操作のみです。 ``` [ { "op": "editField", "fieldKey": "contract_value", "data": { "displayName": "Total Annual Contract Value", "description": "The contract's total anual value", "key": "contract_tav", "hidden": true } } ] ``` これは、このテンプレートの既存のインスタンスに影響します。 **Source:** [https://ja.developer.box.com/guides/metadata/fields/float/](https://ja.developer.box.com/guides/metadata/fields/float/) --- ### 目的のレプリゼンテーションのリクエスト **Type:** guide | **Category:** レプリゼンテーション | **Section:** Developer Guides 目的のレプリゼンテーションのリクエスト 特定のレプリゼンテーションを選択するには、必要なレプリゼンテーション形式を定義するx-rep-hintsヘッダーを使用してGET /files/:id… # 目的のレプリゼンテーションのリクエスト 特定のレプリゼンテーションを選択するには、必要なレプリゼンテーション形式を定義する[`x-rep-hints`](endpoint://get-files-id#param-x-rep-hints)ヘッダーを使用して[`GET /files/:id`](endpoint://get-files-id)エンドポイントを呼び出します。 ``` curl https://api.box.com/2.0/files/123?fields=representations \ -H "x-rep-hints: [pdf]" \ -H "authorization: Bearer ACCESS_TOKEN" ``` ## 複数のサイズ 形式によっては、特定のサイズを選択するために、`dimensions`を渡すことが必要になる場合があります。そのためには、ヘッダーに`dimensions`を追加します。 ``` curl https://api.box.com/2.0/files/123?fields=representations \ -H "x-rep-hints: [jpg?dimensions=94x94]" \ -H "authorization: Bearer ACCESS_TOKEN" ``` ## 複数のレプリゼンテーション `x-rep-hints`ヘッダーでさまざまなタイプを続けて指定することで、複数のレプリゼンテーションを取得できます。 ``` curl https://api.box.com/2.0/files/123?fields=representations \ -H "x-rep-hints: [pdf][jpg?dimensions=94x94]" \ -H "authorization: Bearer ACCESS_TOKEN" ``` ## APIレスポンス このAPIコールの結果、`{+asset_path}`値を含む`url_template`値を使用して1つ以上のレプリゼンテーションが返されます。 ``` { "etag": "1", "id": "123", "representations": { "entries": [ { "content": { "url_template": "https://dl.boxcloud.com/api/2.0/internal_files/123/versions/345/representations/pdf/content/{+asset_path}" }, "info": { "url": "https://api.box.com/2.0/internal_files/123/versions/345/representations/pdf" }, "properties": {}, "representation": "pdf", "status": { "state": "success" } } ] }, "type": "file" } ``` このレスポンスの`url_template`は、**不明瞭な**URLです。このURL形式は、時間が経つと変わる可能性があるため、`{+asset_path}`変数の有無を除き、この形式についてさまざまな憶測を立てないようにしてください。 **Source:** [https://ja.developer.box.com/guides/representations/request-a-representation/](https://ja.developer.box.com/guides/representations/request-a-representation/) --- ### 直接アップロード **Type:** guide | **Category:** アップロード | **Section:** Developer Guides 直接アップロード Boxにファイルをアップロードする最も簡単な方法は、直接アップロードを使用することです。直接アップロードにより、アプリケーションは1つのリクエストでファイルをアップロードできます。ファイルサイズが50 MB… # 直接アップロード Boxにファイルをアップロードする最も簡単な方法は、直接アップロードを使用することです。直接アップロードにより、アプリケーションは1つのリクエストでファイルをアップロードできます。ファイルサイズが50 MBを超える場合は、[分割アップロードエンドポイント](g://uploads/chunked)を使用することをお勧めします。 Boxにアップロードできるファイルサイズの上限は、アカウントの種類によって異なります。詳細については、[価格比較ページ](https://www.box.com/pricing)を参照してください。 - 個人用アカウント: 250 MB - Starter: 2 GB - Business: 5 GB - Business Plus: 15 GB - Enterprise: 50 GB - Digital Workplace Suite: 50 GB - Digital Workplace Global Suite: 50 GB - Digital Business Suite: 50 GB - Digital Business Global Suite: 50 GB - Enterprise Plus: 150 GB - Enterprise Advanced: 500 GB 自分のアカウントのファイルサイズの上限を確認するには、Boxにログインします。右上隅の円をクリックし、ドロップダウンメニューから [**アカウント設定**] を選択します。表示されたページで、[**アカウントの詳細**] セクションまで下にスクロールすると、[**最大ファイルサイズ**] が表示されています。 ## アップロードドメイン Boxへのアップロードは、通常のAPIコールとは異なるドメイン (`upload.box.com`) を介して行われます。独自のアップロードコードを記述する際は、この点に注意する必要があります。すべてのBox公式SDKでは、各APIコールに適切なドメインが選択されます。 **Source:** [https://ja.developer.box.com/guides/uploads/direct/](https://ja.developer.box.com/guides/uploads/direct/) --- ### 管理対象ユーザーの作成 **Type:** guide | **Category:** ユーザー | **Section:** Developer Guides 管理対象ユーザーの作成 新しい管理対象ユーザーを生成するには、最低でも管理対象ユーザーの名前とメールアドレスが必要になります。 管理対象ユーザーの作成時に指定するメールアドレスは一意である必要があります。既存のBox… # 管理対象ユーザーの作成 新しい管理対象ユーザーを生成するには、最低でも管理対象ユーザーの名前とメールアドレスが必要になります。 管理対象ユーザーの作成時に指定するメールアドレスは一意である必要があります。既存のBoxユーザーにすでに関連付けられているメールアドレスは使用できません。 App Userの作成時に設定できるすべての使用可能なオプションパラメータを確認するには、[ユーザーを作成](endpoint://post-users)エンドポイントを参照してください。 新しく作成したアカウントを変更できるようにするには、受信した確認メールにあるリンクをクリックする必要があります。 ユーザー作成リクエストから、ユーザーオブジェクトが返されます。このユーザーオブジェクトには管理対象ユーザーのIDが含まれています。これは、今後ユーザーを変更するAPIリクエストを実行するために使用できます。 新しい管理対象ユーザーが作成されると、使用されているメールアドレス宛てに、アカウントのパスワードの作成を求めるメールがBoxから届きます。このアクションが実行されるまで、アカウントは`pending`状態になります。 セキュリティ上の理由から、新しい管理対象ユーザーの作成時にパスワードを指定することはできません。 **Source:** [https://ja.developer.box.com/guides/users/create-managed-user/](https://ja.developer.box.com/guides/users/create-managed-user/) --- ### 統合 **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides 統合 Box統合は、BoxユーザーがBox… # 統合 [Box統合](https://app.box.com/services)は、BoxユーザーがBoxと組み合わせて使用できるアプリケーションについて最初に確認できる場所です。アプリケーションが他の企業で使用できる場合は、**統合**にサービスを登録すると、新しいユーザーを見つけるのに役立ちます。統合では、ユーザーが見つけやすいように、アプリが [おすすめ]、[人気]、[新着] セクションに分類されています。 ## Platformアプリの開発またはBoxパートナーへの参加 Box統合用のPlatformアプリの開発またはBoxパートナーへの参加の詳細については、Box Supportサイトの[Box Partner Resources](https://support.box.com/hc/en-us/sections/21356597387539-Box-Partner-Programs)のガイド (英語) を参照してください。 ## Platformアプリの公開 Box統合でPlatformアプリを公開するには、以下の手順に従います。 ### 前提条件 アプリケーションは、以下の要件を満たす必要があります。 - Platformアプリは完成した状態で、実稼働環境での使用準備ができていること。 - 統合ではOAuth 2.0以外の認証方法がサポートされていないため、PlatformアプリではOAuth 2.0認証を利用すること。 - 開発者として、**開発者コンソール**でそのPlatformアプリにアクセスできること。 ### 手順 開発者コンソールの [**Platformアプリ**] に移動し、公開するアプリを選択します。 上部のメニューで [**公開**] タブを選択します。 送信チェックリストをひととおり読み、アプリがすべての要件を満たしているかどうかを確認するチェックボックスをオンにします。 フォームで以下の項目を指定します。 - アプリが該当するカテゴリ - 簡単な説明と詳しい説明 - スクリーンショットとアプリアイコン - ユーザーをサポートするために使用される補足情報 右上にある [**プレビュー**] ボタンを使用して、登録されたときにアプリケーションがどのように表示されるかを確認します。 最後に、[**承認用に送信**] ボタンをクリックして、アプリケーションを承認用に送信します。承認のリクエストが届くと、Boxパートナーチームは通知を受け取り、リクエストをできるだけ早く確認します。質問がある場合は、[`integrate@box.com`](mailto:integrate@box.com)に英語でお問い合わせください。 ## Platformアプリの公開取り消し 承認されて公開されたPlatformアプリは、同じコントロールパネルから公開を取り消すことができます。 1. **開発者コンソール**に移動して、Platformアプリを選択します。 2. [**公開**] タブを選択します。 3. アプリの公開を取り消すことができます。 **Source:** [https://ja.developer.box.com/guides/applications/integrations/](https://ja.developer.box.com/guides/applications/integrations/) --- ### 統合の種類 **Type:** guide | **Category:** アプリケーション | **Section:** Developer Guides 統合の種類 現在、Boxではポップアップ統合を提供しています。 ポップアップ統合 ポップアップ統合の場合、Boxによってパネルが開き、統合用に構成されたアプリケーションのコールバックURL… # 統合の種類 現在、Boxではポップアップ統合を提供しています。 ## ポップアップ統合 ポップアップ統合の場合、Boxによってパネルが開き、統合用に構成されたアプリケーションのコールバックURLが読み込まれます。アプリケーションでは、ポップアップに統合のための独自のユーザーインターフェースが表示されます。 統合は、このリクエストとともに有効期間の短い承認コードを受信します。この承認コードを使用すると、Box APIに接続し、コードをアクセストークンに交換してから、BoxへのAPIコールを実行できます。 ポップアップパネルでは、HTMLの`<iframe>`タグを使用し、埋め込みコンテンツを表示します。Boxのコンテンツのセキュリティを保護するには、コールバックURLでSSLを使用する必要があります。また、コールバックURLからのレスポンスには、ランダムな文字列値に設定された`X-Frame-Options`ヘッダーを含める必要があります。 **Source:** [https://ja.developer.box.com/guides/applications/web-app-integrations/types/](https://ja.developer.box.com/guides/applications/web-app-integrations/types/) --- ### 統合マッピング **Type:** guide | **Category:** 統合マッピング | **Section:** Developer Guides 統合マッピング 統合マッピングを使用すると、パートナーアプリからのコンテンツがBoxのどこに保存されるかを管理できます。 # 統合マッピング [統合マッピング](r://integration-mappings)を使用すると、パートナーアプリからのコンテンツがBoxのどこに保存されるかを管理できます。 **Source:** [https://ja.developer.box.com/guides/integration-mappings/](https://ja.developer.box.com/guides/integration-mappings/) --- ### 署名の検証 **Type:** guide | **Category:** Webhook | **Section:** Developer Guides 署名の検証 Webhook署名は、Boxから送信されたWebhookペイロードが改ざんされていないことを確認するために役立ちます。署名により、中間者攻撃または再生攻撃が成功する可能性を大幅に低減できます。 署名を構成すると、Box… # 署名の検証 Webhook署名は、Boxから送信されたWebhookペイロードが改ざんされていないことを確認するために役立ちます。署名により、中間者攻撃または再生攻撃が成功する可能性を大幅に低減できます。 署名を構成すると、Boxは通知の本文の暗号化ダイジェストを生成し、これをWebhookペイロードのヘッダーに添付します。アプリケーションがペイロードを受信したら、同じダイジェストを計算し、それを受信したダイジェストと比較して署名を検証してください。ダイジェストが一致しない場合、ペイロードは信頼できません。 署名キーを頻繁に変更することで、保護レベルをさらに高めることができます。古いキーと新しいキーをスムーズに切り替えられるよう、Boxでは同時に2つの署名キーをサポートしています。 ## 署名設定 アプリケーションの通知に署名を添付するには、まず、アプリケーション用の署名キーを生成する必要があります。 アプリケーションのキーを構成するには、以下の手順に従います。 1. 開発者コンソールでアプリケーションに移動します。 2. [**Webhook**] タブをクリックします。 3. [**署名キーを管理**] ボタンをクリックします。 4. [**キーを生成**] ボタンをクリックして、キーを構成します。 プライマリキーまたはセカンダリキーを生成したら、その値をコピーします。この値は、Webhookペイロードの検証で必要になります。これで、すべてのWebhookに`BOX-SIGNATURE-PRIMARY`および`BOX-SIGNATURE-SECONDARY`ヘッダーペイロードが含まれるようになります。 ## SDKによる署名の検証 手動で署名を検証することもできますが、[Box公式SDK](g://tooling/sdks)には便利なメソッドが用意されています。 ## 手動による署名の検証 署名の検証は基本的に以下の手順で行います。 ### タイムスタンプの検証 ペイロードの`BOX-DELIVERY-TIMESTAMP`ヘッダーのタイムスタンプが10分以内のものであることを確認します。 ``` var timestamp = headers['BOX-DELIVERY-TIMESTAMP']; var date = Date.parse(timestamp); var expired = Date.now() - date > 10*60*1000; ``` ``` import dateutil.parser import pytz import datetime timestamp = headers["BOX-DELIVERY-TIMESTAMP"] date = dateutil.parser.parse(timestamp).astimezone(pytz.utc) now = datetime.datetime.now(pytz.utc) delta = datetime.timedelta(minutes=10) expiry_date = now - deltaMinutes expired = date >= expiry_date ``` ### HMAC署名の計算 [開発者コンソール](https://app.box.com/developers/console)でアプリケーションに構成されている2つの署名のいずれかを使用して、ペイロードのHMACを計算します。 最初にペイロード本文のバイトを追加してから、`BOX-DELIVERY-TIMESTAMP`ヘッダーにあるタイムスタンプのバイトを追加してください。 ``` var crypto = require('crypto'); var primaryKey = '...'; var secondaryKey = '...'; var payload = '{"type":"webhook_event"...}'; var hmac1 = crypto.createHmac('sha256', primaryKey); hmac1.update(payload); hmac1.update(timestamp); var hmac2 = crypto.createHmac('sha256', secondaryKey); hmac2.update(payload); hmac2.update(timestamp); ``` ``` import hmac import hashlib primary_key = '...' secondary_key = '...' payload = "{\"type\":\"webhook_event\"...}" bytes = bytes(payload, 'utf-8') + bytes(timestamp, 'utf-8') hmac1 = hmac.new(primary_key, bytes, hashlib.sha256).digest() hmac2 = hmac.new(secondary_key, bytes, hashlib.sha256).digest() ``` ### Base64変換 HMACを`Base64`でエンコードされたダイジェストに変換します。 ``` var digest1 = hmac1.digest('base64'); var digest2 = hmac2.digest('base64'); ``` ``` import base64 digest1 = base64.b64encode(hmac1) digest2 = base64.b64encode(hmac2) ``` ### 署名の比較 エンコードされたダイジェストを`BOX-SIGNATURE-PRIMARY`または`BOX-SIGNATURE-SECONDARY`ヘッダーの値と比較します。 `BOX-SIGNATURE-PRIMARY`ヘッダーの値をプライマリキーで作成されたダイジェストと比較し、`BOX-SIGNATURE-SECONDARY`ヘッダーの値をセカンダリキーで作成されたダイジェストと比較します。タイミング攻撃を防ぐため、署名間でタイミングの影響がない比較方法を使用してください。 ``` const crypto = require('crypto'); function compareSignatures(expectedSignature, receivedSignature) { const expectedBuffer = Buffer.from(expectedSignature, 'base64'); const receivedBuffer = Buffer.from(receivedSignature, 'base64'); if (expectedBuffer.length !== receivedBuffer.length) { return false; } return crypto.timingSafeEqual(expectedBuffer, receivedBuffer); } const signature1 = headers['BOX-SIGNATURE-SECONDARY']; const signature2 = headers['BOX-SIGNATURE-PRIMARY']; const primarySignatureValid = compareSignatures(digest1, signature1) const secondarySignatureValid = compareSignatures(digest2, signature2) const valid = !expired && (primarySignatureValid || secondarySignatureValid) ``` ``` import hmac def compare_signatures(expected_signature: Optional[str], received_signature: Optional[str]) -> bool: if not expected_signature or not received_signature: return False if len(expected_signature) != len(received_signature): return False return hmac.compare_digest(expected_signature, received_signature) signature1 = headers["BOX-SIGNATURE-SECONDARY"] signature2 = headers["BOX-SIGNATURE-PRIMARY"] primary_sig_valid = compare_signatures(digest1, signature1) secondary_sig_valid = compare_signatures(digest2, signature2) valid = not expired and (primary_sig_valid or secondary_sig_valid) ``` HTTPヘッダー名では大文字と小文字が区別されません。クライアントでは、すべてのヘッダーの名前を標準化された小文字または大文字の形式に変換してから、ヘッダーの値を確認する必要があります。 ## 署名のローテーション 有効にした場合、BoxはすべてのWebhookペイロードで2つの署名を送信します。少なくとも1つの署名が有効であれば、アプリケーションはペイロードを信頼できます。一度に1つの署名キーを更新すると、アプリケーションは常に少なくとも1つの有効な署名を含むペイロードを受信することになります。 ### 循環の手順 以下の手順は、[開発者コンソール](https://app.box.com/developers/console)でプライマリキーとセカンダリキーを作成済みで、どちらかのキーを置き換える準備ができていることを前提としています。 これらの手順に従うことにより、競合することなく、2つの新しいキーを使ってアプリケーションを構成できます。 1. [開発者コンソール](https://app.box.com/developers/console)で、[**Webhook**] タブに移動します。 2. [**署名キーを管理**] をクリックします。 3. [**リセット**] ボタンをクリックしてプライマリキーを変更します。 4. 新しいプライマリキーでアプリケーションを更新します。アプリケーションは、引き続き古いプライマリキーを含む通知を受信する可能性がありますが、セカンダリキーがまだ有効であるため、Webhookは正しく処理されます。 5. 古いプライマリキーを持つWebhookが動作していないことを確認できたら、同じプロセスを使用してセカンダリキーを更新できます。 **Source:** [https://ja.developer.box.com/guides/webhooks/v2/signatures-v2/](https://ja.developer.box.com/guides/webhooks/v2/signatures-v2/) --- ### 複数選択メタデータフィールド **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 複数選択メタデータフィールド multiSelectタイプのメタデータフィールドは、ドロップダウンリストとしてユーザーに表示されます。ユーザーはリストから複数の項目を選択できます。 multiSelectフィールドを使用すると、ユーザーは0個、… # 複数選択メタデータフィールド `multiSelect`タイプのメタデータフィールドは、ドロップダウンリストとしてユーザーに表示されます。ユーザーはリストから複数の項目を選択できます。 `multiSelect`フィールドを使用すると、ユーザーは0個、1個、または複数個の値を選択できます。ユーザーが選択できる値を1つだけに制限するには、[`enum`](g://metadata/fields/enum)テンプレートフィールドを使用します。 ## multiSelectフィールドの作成 `multiSelect`フィールドは、[メタデータテンプレートの作成](g://metadata/templates/create)時、または`addField`操作による[テンプレートの更新](g://metadata/templates/update)時にメタデータテンプレートに追加できます。 `multiSelect`フィールドの必須属性は、`type`、`displayName`、`key`、およびオプションのリストです。 ``` { "scope": "enterprise", "displayName": "Contract", "fields": [ { "type": "multiSelect", "key": "box_entity", "displayName": "Box Entity", "description": "The Box entity that this contract belongs to", "hidden": false, "options": [ {"key": "Box, Inc"}, {"key": "Box.com (UK) Ltd."}, {"key": "KK Box Japan"} ] } ] } ``` 必要に応じて、UIでユーザーに表示される`description`を指定できます。また、このフィールドを`hidden`に設定して、ウェブアプリとモバイルアプリでユーザーに表示されないようにすることもできます。 ## multiSelectフィールドの更新 `multiSelect`テンプレートフィールドは、このフィールドが属する[テンプレートを更新](g://metadata/templates/update)することで更新できます。テンプレートの更新は、ファイルまたはフォルダにすでに割り当てられているテンプレートも確実に更新される**操作**によって行われます。 ### 基本的なフィールド値の変更 `multiSelect`メタデータフィールドを更新する際に可能な操作の1つとして、フィールドの`key`、`displayName`、`description`、および`hidden`の値を変更するのに使用できる`editField`操作があります。 ``` [ { "op": "editField", "fieldKey": "box_entity", "data": { "displayName": "Box Entities", "key": "box_entities" } } ] ``` ここにある`fieldKey`は、変更するフィールドの元のキーを表します。`data.key`フィールドはフィールドの新しいキーです。 これは、このテンプレートの既存のインスタンスに影響します。 ### オプションの追加 `multiSelect`フィールドにオプションを追加するには、`addMultiSelectOption`操作を使用します。この操作では、`fieldKey`に、変更する`multiSelect`フィールドのキーを設定するほか、`data`オブジェクトには、追加する新しいオプションの`key`を指定する必要があります。 ``` [ { "op": "addMultiSelectOption", "fieldKey": "box_entity", "data": { "key": "Box (NL) BV" } } ] ``` オプションのリストは次のようになります。 ``` ... "options": [ {"key": "Box, Inc"}, {"key": "Box.com (UK) Ltd."}, {"key": "KK Box Japan"}, {"key": "Box (NL) BV"} ] ... ``` これは、このテンプレートの既存のインスタンスに影響します。 ### オプションの並べ替え `multiSelect`フィールドでオプションを並べ替えるには、`reorderMultiSelectOptions`操作を使用します。この操作では、`fieldKey`に、変更する`multiSelect`フィールドのキーを設定するほか、`multiSelectOptionKeys`配列にはオプションのキーを順番に指定する必要があります。 ``` [ { "op": "reorderMultiSelectOptions", "fieldKey": "box_entity", "multiSelectOptionKeys": [ "Box, Inc", "Box.com (UK) Ltd.", "Box (NL) BV", "KK Box Japan" ] } ] ``` オプションのリストは次のようになります。 ``` ... "options": [ {"key": "Box, Inc"}, {"key": "Box.com (UK) Ltd."}, {"key": "Box (NL) BV"}, {"key": "KK Box Japan"} ] ... ``` この操作では、新しいオプションを追加することはできません。これは、このテンプレートの既存のインスタンスに影響します。 ### オプションの編集 `multiSelect`フィールドのオプションを編集するには、`editMultiSelectOption`操作を使用します。この操作では、`fieldKey`に、変更する`multiSelect`フィールドのキーを設定し、`multiSelectOptionKey`に、フィールドオプションのキーを設定する必要があります。最後に、`data`オブジェクトには、フィールドオプションの新しい`key`を指定する必要があります。 ``` [ { "op": "editMultiSelectOption", "fieldKey": "box_entity", "multiSelectOptionKey": "Box (NL) BV", "data": { "key": "Box.nl BV" } } ] ``` オプションのリストは次のようになります。 ``` ... "options": [ {"key": "Box, Inc"}, {"key": "Box.com (UK) Ltd."}, {"key": "Box.nl BV"}, {"key": "KK Box Japan"} ] ... ``` これは、このテンプレートの既存のインスタンスに影響します。 ### オプションの削除 `multiSelect`フィールドからオプションを削除するには、`removeMultiSelectOption`操作を使用します。この操作では、`fieldKey`に、変更する`multiSelect`フィールドのキーを設定し、`multiSelectOptionKey`に、削除するフィールドオプションのキーを設定します。 ``` [ { "op": "removeMultiSelectOption", "fieldKey": "customer_state", "multiSelectOptionKey": "KK Box Japan" } ] ``` オプションのリストは次のようになります。 ``` ... "options": [ {"key": "Box, Inc"}, {"key": "Box.com (UK) Ltd."}, {"key": "Box.nl BV"} ] ... ``` これは、このテンプレートの既存のインスタンスに影響します。この値に設定されたすべてのフィールドでは、値が、選択した値のリストから削除されます。 **Source:** [https://ja.developer.box.com/guides/metadata/fields/multi-select/](https://ja.developer.box.com/guides/metadata/fields/multi-select/) --- ### 言語コード **Type:** guide | **Category:** APIコール | **Section:** Developer Guides 言語コード Box APIでは、ISO 639-1言語コードの修正版を使用して、ユーザーの言語を指定します。 以下は、作成または更新時に使用する言語コードのリストです。 言語 コード ベンガル語 bn デンマーク語 da ドイツ語 de 英語 (米国) en 英語 (英国) gb… # 言語コード Box APIでは、**ISO 639-1言語コード**の修正版を使用して、ユーザーの言語を指定します。 以下は、[作成](e://post_users#param-language)または[更新](e://put_users_id#param-language)時に使用する言語コードのリストです。 | 言語 | コード | | --- | --- | | ベンガル語 | bn | | デンマーク語 | da | | ドイツ語 | de | | 英語 (米国) | en | | 英語 (英国) | gb | | 英語 (カナダ) | e2 | | 英語 (オーストラリア) | e3 | | スペイン語 (ラテンアメリカ) | s2 | | スペイン語 | es | | フィンランド語 | fi | | フランス語 | fr | | フランス語 (カナダ) | f2 | | ヒンディー語 | hi | | イタリア語 | it | | 日本語 | ja | | 韓国語 | ko | | ノルウェー語 (ブークモール) | nb | | オランダ語 | nl | | ポーランド語 | pl | | ポルトガル語 | pt | | ロシア語 | ru | | スウェーデン語 | sv | | トルコ語 | tr | | 中国語 (簡体) | zh | | 中国語 (繁体) | zt | **Source:** [https://ja.developer.box.com/guides/api-calls/language-codes/](https://ja.developer.box.com/guides/api-calls/language-codes/) --- ### 設定 **Type:** guide | **Category:** Boxの埋め込み | **Section:** Developer Guides 設定 Boxにファイルをアップロードし、Box Viewを使用してプレビューする前に、Boxアプリケーションを作成し、そのアプリケーション用にアクセストークンを生成する必要があります。 アプリトークンアプリの作成 Box View… # 設定 Boxにファイルをアップロードし、Box Viewを使用してプレビューする前に、Boxアプリケーションを作成し、そのアプリケーション用にアクセストークンを生成する必要があります。 ## アプリトークンアプリの作成 Box Viewでは、**アプリトークン認証**と呼ばれる認証メカニズムを使用して、特定のBoxユーザーとは対照的に、アプリケーションのアカウント内に直接ファイルを保存します。これにより、ユーザーとコンテンツを関連付ける必要なく、ファイルのプレビューが可能になります。 最初の手順として、アプリケーションを作成し、管理者からアプリケーションの承認を受けて、BoxにAPIリクエストの発行を開始します。 アプリトークンアプリのセットアップと承認 アプリトークンアプリは、Box管理者による承認が必要です。承認されない場合は、APIリクエストの送信時に権限エラーが発生します。アプリ承認を受けるには、[このガイド](guide://authorization/platform-app-approval)に従ってください。 ## アクセストークンの生成 アプリケーションが読み込まれた状態で、左側のナビゲーションメニューで [**構成**] オプションをクリックします。アプリケーションの [構成] ページは次のようになります。 [**プライマリアクセストークン**] セクション内の [**キーを生成**] ボタンをクリックします。 Developerアカウント用の2要素認証設定がない場合は、アプリトークンを正常に生成できるよう事前に2要素認証の設定が求められます。プロンプトの指示に従って2要素認証を設定してください。 トークンの有効期限に30日、60日、または有効期限なしを選択します。 アプリトークンが生成されたら、コピーして安全に保存します。アプリトークンは、ページが再読み込みされると表示されなくなります。これは、Boxでは実際のトークンではなくトークンの一方向のハッシュが保存されているため、元のトークンを再取得できないからです。 **Source:** [https://ja.developer.box.com/guides/embed/box-view/setup/](https://ja.developer.box.com/guides/embed/box-view/setup/) --- ### 設定 **Type:** guide | **Category:** Box Skills | **Section:** Developer Guides 設定 カスタムスキルの設定は、複数の手順からなるプロセスです。 前提条件 OAuth 2.0認証を使用してPlatformアプリを設定するには、Box Enterpriseアカウントから開発者コンソールにアクセスできることを確認する必要があります。または、Developer… # 設定 カスタムスキルの設定は、複数の手順からなるプロセスです。 ## 前提条件 OAuth 2.0認証を使用してPlatformアプリを設定するには、Box Enterpriseアカウントから[開発者コンソール](https://app.box.com/developers/console)にアクセスできることを確認する必要があります。または、[Developerアカウント](https://account.box.com/signup/n/developer)にサインアップすることもできます。 ## アプリの作成手順 ### 1. 開発者コンソールにログインする Boxにログインし、[開発者コンソール](https://app.box.com/developers/console)に移動して、[**アプリの新規作成**] を選択します。 ### 2. カスタムスキルを作成する アプリケーションの種類のリストから [**Box Custom Skill**] を選択します。次の手順を促すウィンドウが表示されます。 ### 3. 名前を入力する 最後に、アプリケーションの一意の名前を選択し、[**Platformアプリの作成**] をクリックします。 ## 承認 スキルの使用を開始するには、スキルをトリガーするフォルダを選択しておく必要があります。 カスタムスキルの承認の詳細を確認する ## 基本的な構成 フォルダでカスタムスキルを有効にするには、いくつかの追加構成を完了しておく必要があります。 ### 呼び出しURL 選択したフォルダにファイルがアップロード、コピー、または移動されるたびに、スキルからリモートURLにペイロードが送信されます。このURLは呼び出しURLと呼ばれます。 呼び出しURLには、サーバー、開発マシン、またはサーバーレス関数を表す任意のHTTPエンドポイントを指定できます。唯一の要件は、そのURLが公開されていて、Boxサーバーからアクセスできることです。そのため、`localhost`は有効なアドレスではありません。 呼び出しURLを設定するには、[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブに移動し、[呼び出しURL] セクションまで下にスクロールします。 セキュアなHTTPSアドレスを入力し、フォームを保存します。これで、呼び出しURLを構成できました。 ### ファイル拡張子 デフォルトでは、フォルダ内の任意のファイルの種類に対してカスタムスキルがトリガーされます。選択したファイル拡張子だけがスキルをトリガーするよう指定するには、[開発者コンソール](https://app.box.com/developers/console)の [**構成**] タブに移動し、[**ファイル拡張子**] セクションまで下にスクロールします。 **Source:** [https://ja.developer.box.com/guides/skills/handle/setup/](https://ja.developer.box.com/guides/skills/handle/setup/) --- ### 認証 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides 認証 Box API… # 認証 Box APIを使用する認証では、ユーザーの本人確認にアクセストークンを使用します。アクセストークンの取得方法は、ユーザーの承認に使用した方法によって異なります。アプリケーションで利用できる承認の種類は、ユースケースのほか、開発者コンソールで作成されたアプリケーションの種類に応じて異なります。 | Boxアプリケーションの種類 | 認証方法 | | --- | --- | | Platformアプリ | OAuth 2.0、JWT、またはクライアント資格情報許可 | | アクセス制限付きアプリ | アプリトークン | | カスタムスキル | 認証方法は選択不要 | 承認の種類の選択方法を確認する ## 認証のアクセストークン 各APIエンドポイントには、APIコールを実行するために有効でアクティブな**アクセストークン**が必要です。アクセストークンは、APIエンドポイントに対して認証済みBoxユーザーを識別する一意の文字列です。 ``` curl https://api.box.com/2.0/users/me \ -H "authorization: Bearer EGmDmRVfhfHsqesn5yVYHAqUkD0dyDfk" ``` アクセストークンの詳細を確認する **Source:** [https://ja.developer.box.com/guides/authentication/](https://ja.developer.box.com/guides/authentication/) --- ### 認証方法の選択 **Type:** guide | **Category:** 認証 | **Section:** Developer Guides 認証方法の選択 アプリケーションで使用できる承認の種類は、開発者コンソールで構成したBoxアプリケーションの種類によって異なります。 アプリケーションの種類の選択方法を確認する 各種Boxアプリケーションでは、以下の承認方法を使用できます。 Box… # 認証方法の選択 アプリケーションで使用できる承認の種類は、開発者コンソールで構成したBoxアプリケーションの種類によって異なります。 アプリケーションの種類の選択方法を確認する 各種Boxアプリケーションでは、以下の承認方法を使用できます。 | Boxアプリケーションの種類 | OAuth 2.0をサポートしますか? | JWTは? | クライアント資格情報は? | アプリトークンは? | | --- | --- | --- | --- | --- | | Platformアプリ | はい | はい | はい | いいえ | | アクセス制限付きアプリ | いいえ | いいえ | いいえ | はい | | カスタムスキル | いいえ | いいえ | いいえ | いいえ | ## クライアント側 ### OAuth 2.0 OAuth 2.0では、アプリケーションに対して、エンドユーザーをブラウザにリダイレクトしてBoxにログインさせ、ユーザーに代わってアプリケーションが処理を実行することを承認するよう要求します。 # OAuth 2.0はいつ使用すべきですか? クライアント側認証は、以下に当てはまるアプリに最適な認証方法です。 - 既存のBoxアカウントを持っているユーザーを使用する - ユーザーがBoxを使用していることを認識できるように、ID管理にBoxを使用する - アプリケーションのサービスアカウントではなく各ユーザーアカウント内にデータを保存する OAuth 2.0を使用したクライアント側認証を確認する ## サーバー側 ### JWT JSONウェブトークン (JWT) を使用するサーバー側認証では、エンドユーザーによる操作が必要ありません。また、適切な権限が付与されていれば、この認証方法を使用して、企業内の任意のユーザーの代理で操作することができます。IDの確認には、JWTアサーションおよび公開/秘密キーペアを使用します。 # JWTはいつ使用すべきですか? JWTを使用するサーバー側認証は、以下に当てはまるアプリに最適な認証方法です。 - Boxアカウントを持たないユーザーを使用する - 独自のIDシステムを使用する - Boxを使用していることをユーザーに認識させたくない - ユーザーのアカウントではなくアプリケーションのサービスアカウント内にデータを保存する JWTを使用したサーバー側認証を確認する ### クライアント資格情報許可 クライアント資格情報許可を使用するサーバー側認証では、エンドユーザーによる操作が必要ありません。また、適切な権限が付与されていれば、この認証方法を使用して、企業内の任意のユーザーの代理で操作することができます。IDの確認には、アプリケーションのクライアントIDとクライアントシークレットを使用します。 # クライアント資格情報許可はいつ使用すべきですか? クライアント資格情報許可を使用するサーバー側認証は、以下に当てはまるアプリに最適な認証方法です。 - Boxアカウントを持たないユーザーを使用する - 独自のID管理システムを使用する - Boxを使用していることをユーザーに認識させたくない - ユーザーのアカウントではなくアプリケーションのサービスアカウント内にデータを保存する クライアント資格情報許可を使用したサーバー側認証を確認する ### アプリトークン サーバー側アプリトークンは、アプリケーションに、それ自体のアカウントのデータに対する読み取りと書き込みのアクセス権限だけがある認証方法です。これは、主にBox Viewアプリケーションで使用されます。この認証方法を使用すると、アプリケーションはそのアプリケーションのサービスアカウントとして自動的に認証されるため、ユーザーを承認する必要がありません。 # アプリトークンはいつ使用すべきですか? アプリトークンを使用するサーバー側認証は、以下に当てはまるアプリに最適な認証方法です。 - ユーザーモデルがない環境、またはBoxアカウントを持たないユーザーがいる環境で使用する - 独自のID管理システムを使用する - Boxを使用していることをユーザーに認識させたくない - ユーザーのアカウントではなくアプリケーションのサービスアカウント内にデータを保存する アプリトークンを使用したサーバー側認証を確認する ## 比較 以下に、クライアント側とサーバー側の認証の主な違いの概要を示します。 | | OAuth 2.0 | JWT | クライアント資格情報 | アプリトークン | | --- | --- | --- | --- | --- | | ユーザーの関与が必要? | はい | いいえ | いいえ | いいえ | | 管理者の承認が必要? | いいえ | はい | はい | はい | | 他のユーザーの代理で操作可能? | はい | はい | はい | いいえ | | ユーザーにBoxを表示? | はい | いいえ | いいえ | いいえ | | App Userを作成可能? | いいえ | はい | はい | いいえ | アクセストークンは特定のBoxユーザーに関連付けられており、そのユーザーが誰であるかは、トークンがどのように取得されたかによって決まります。 たとえば、クライアント側認証を使用している場合、トークンは、自分のアカウントへのアクセス権限を付与したユーザーを表します。一方、サーバー側認証を使用している場合、トークンは、デフォルトでアプリケーションのサービスアカウントとなります。 **Source:** [https://ja.developer.box.com/guides/authentication/select/](https://ja.developer.box.com/guides/authentication/select/) --- ### 返信の作成 **Type:** guide | **Category:** コメント | **Section:** Developer Guides 返信の作成 以前のコメントへの返信を作成するには、新しいコメントのメッセージと、返信を残す以前のコメントのIDを指定してPOST /comments API… # 返信の作成 以前のコメントへの返信を作成するには、新しいコメントのメッセージと、返信を残す以前のコメントのIDを指定して[`POST /comments`](e://post_comments) APIを呼び出します。 返信のメッセージでは、`@`記号を使用してユーザーをメンションすることもできます。そのためには、メッセージ内の任意の場所に`@[userid:name]`という文字列を追加します。`user_id`はターゲットユーザーのIDで、`name`には任意のカスタムフレーズを使用できます。Box UIでは、この名前がユーザーのプロフィールにリンクされます。 次に、この文字列を`message`ではなく`tagged_message`として渡します。 **Source:** [https://ja.developer.box.com/guides/comments/create-reply/](https://ja.developer.box.com/guides/comments/create-reply/) --- ### 追加フィールドのリクエスト **Type:** guide | **Category:** APIコール | **Section:** Developer Guides 追加フィールドのリクエスト リソースに対して返されるフィールドの数は、リソースのリクエストに使用されるAPIエンドポイントに応じて異なります。 fields… # 追加フィールドのリクエスト リソースに対して返されるフィールドの数は、リソースのリクエストに使用されるAPIエンドポイントに応じて異なります。 ## fieldsクエリパラメータの使用 標準のレスポンスにデフォルトでは含まれない、リソースの特定のフィールドをリクエストするには、`fields`クエリパラメータをリクエストに追加します。このパラメータの値は、フィールド名のコンマ区切りリストです。 ``` curl https://api.box.com/2.0/files/12345?fields=is_package,lock \ -H "authorization: Bearer ACCESS_TOKEN" ``` ``` { "etag": "1", "id": "12345", "is_package": false, "lock": null, "type": "file" } ``` 特定のフィールドがリクエストされると、リクエストされたフィールドとフィールドの**基本**セット以外のフィールドが返されない点に注意してください。ファイルの場合、この基本セットは`etag`、`id`、および`type`値で構成されます。 ## リソースバリアント Box APIでは、以下のリソースバリアントを使用できます。 ### 標準 APIレスポンスで返されるデフォルトのフィールドセットです。Standardバリアントは、リソースに対して使用できるメインのAPIを介してそのリソースがリクエストされたときに返されます。たとえば、[`GET /files/:id`](endpoint://get_files_id)エンドポイントをリクエストすると、APIはファイルの標準バリエーションを返します。 ``` curl https://api.box.com/2.0/files/12345 \ -H "authorization: Bearer ACCESS_TOKEN" ``` ``` { "content_created_at": "2019-06-20T06:04:41-07:00", "content_modified_at": "2019-06-20T06:04:41-07:00", "created_at": "2019-06-20T07:28:42-07:00", "created_by": { "id": "191919191", "login": "joe@example.com", "name": "Joe Box", "type": "user" }, "description": "", "etag": "1", "file_version": { "id": "56663434454334", "sha1": "585afa5209bbd586c79499b7336601341ad06cce", "type": "file_version" }, "id": "12345", ... "size": 65000647, "trashed_at": null, "type": "file" } ``` ### Mini 別のレスポンスのネストされた部分としてリソースが返される場合は、サイズが縮小され、重要なフィールドの一部のみが返されることがよくあります。このバリアントは、一般にMiniリソースバリアントと呼ばれます。 たとえば、[`GET /folders/:id/items`](endpoint://get_folders_id_items)エンドポイントをリクエストすると、APIは`item_collection`内でネストされたファイルとフォルダの簡易バリエーションを返します。 ``` curl https://api.box.com/2.0/files/12345 \ -H "authorization: Bearer ACCESS_TOKEN" ``` ``` { "id": "0", "type": "folder", "item_collection": { "entries": [ { "etag": "1", "file_version": { "id": "56663434454334", "sha1": "585afa5209bbd586c79499b7336601341ad06cce", "type": "file_version" }, "id": "12345", "name": "Video.mp4", "sequence_id": "1", "sha1": "585afa5209bbd586c79499b7336601341ad06cce", "type": "file" } ... ] ... } ... } ``` ネストされたリソースの詳細をリクエストするには、そのリソースに対してAPIを呼び出して、IDでそのリソースをリクエストすることをお勧めします。その際、オプションで`field`クエリパラメータを渡すこともできます。 たとえば、フォルダ内の項目のリストを取得するときに返されるファイルの所有者を取得する場合は、クエリパラメータ`field=owned_by`を指定して、IDでそのファイルをリクエストします。 ### Full APIレスポンスで返すことができるフィールドセット全体です。Fullバリアントは、リソースに対して使用できるメインのAPIを介し、`fields`クエリパラメータを追加してそのリソースをリクエストしたときに返されます。 たとえば、`fields=is_package,lock`パラメータを指定して[`GET /files/:id`](endpoint://get_files_id)エンドポイントをリクエストすると、APIは、指定されたフィールドに加えて、そのファイルの基本的なフィールドを返します。 ``` curl https://api.box.com/2.0/files/12345?fields=is_package,lock \ -H "authorization: Bearer ACCESS_TOKEN" ``` ``` { "etag": "1", "id": "12345", "is_package": false, "lock": null, "type": "file" } ``` **Source:** [https://ja.developer.box.com/guides/api-calls/request-extra-fields/](https://ja.developer.box.com/guides/api-calls/request-extra-fields/) --- ### 追加フィールドのリクエスト **Type:** guide | **Category:** 検索 | **Section:** Developer Guides 追加フィールドのリクエスト デフォルトでは、検索APIによって標準形式のファイル、フォルダ、またはウェブリンクが返されます。これらの各リソースでは、fields… # 追加フィールドのリクエスト デフォルトでは、検索APIによって**標準**形式の[ファイル](r://file)、[フォルダ](r://folder)、または[ウェブリンク](r://web_link)が返されます。これらの各リソースでは、`fields`クエリパラメータを使用してリクエストできる追加のフィールドがサポートされています。 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&fields=name,tags" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` long offsetValue = 0; long limitValue = 10; BoxSearch boxSearch = new BoxSearch(api); BoxSearchParameters searchParams = new BoxSearchParameters(); searchParams.setQuery("sales"); final List<String> fields = new ArrayList<String>(); fields.add("name"); fields.add("tags"); searchParams.setFields(fields) PartialCollection<BoxItem.Info> searchResults = boxSearch.searchRange(offsetValue, limitValue, searchParams); ``` ``` IEnumerable<string> fields = new List<string>() { "name", "tags"}; BoxCollection<BoxItem> results = await client.SearchManager .QueryAsync("sales", fields: fields); ``` ``` client.search().query("sales", metadata_filters=metadata_search_filters, fields=["name", "tags"]) ``` ``` client.search.query( 'sales', { fields: "name,tags" }) .then(results => { // ... }); ``` これらのフィールドの詳細については、[ファイル (詳細)](r://file--full)、[フォルダ (詳細)](r://folder--full)、および[ウェブリンク (詳細)](r://web_link) のリソースを確認してください。 `fields`パラメータを使用して、項目の追加情報をクエリで照会すると、これらのフィールドといくつかの**基本**フィールド (`id`、`type`、`name`など) のみが返されます。レスポンスに最初から含まれていたフィールドは、明示的にリクエストする必要があります。 **Source:** [https://ja.developer.box.com/guides/search/fields/](https://ja.developer.box.com/guides/search/fields/) --- ### 通常の検索との比較 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 通常の検索との比較 一見、メタデータクエリAPIはコンテンツの検索APIとよく似ていますが、動作には重要な違いがいくつかあります。大まかに言うと、メタデータクエリAPI… # 通常の検索との比較 一見、[メタデータクエリAPI](e://post_metadata_queries_execute_read)は[コンテンツの検索API](e://get_search)とよく似ていますが、動作には重要な違いがいくつかあります。大まかに言うと、メタデータクエリAPIは正確さとスループットの向上のために最適化されているのに対し、通常の検索は、人間のユーザーとの関連度のために最適化されています。 ## 詳細な比較 | | メタデータクエリAPI | 検索API | | --- | --- | --- | | インデックスの作成対象 | このAPIでは、検索対象のメタデータテンプレートの値に基づいてファイル/フォルダのみが返されます。 | このAPIでは、項目名、説明、コンテンツ (最初の10,000バイトまで) の値のほか、関連付けられたメタデータテンプレートインスタンスに基づいてファイル、フォルダ、ウェブリンクが返されます。 | | インデックス作成時間 | このAPIでは、ファイルまたはフォルダのメタデータが追加、削除、更新されるとすぐに正確な結果が返されます。 | このAPIは、検索インデックスの作成が遅延すると、その影響を受けます。この遅延は通常10分ですが、場合によっては長くなることがあります。つまり、メタデータが更新されてから10分を経過しても項目が返されない場合があります。 | | 一致 | このAPIでは、SQLの規則に基づいて完全一致が使用されます。結果は、指定した並べ替え順を基に返されます。 | このAPIでは、あいまい一致が使用されるため、文字列のトークン化、特殊文字の削除、その他の検索コンセプトに基づいて異なる結果が返される場合があります。結果の順序は、項目の関連度または更新日に基づいています。 | | 条件付きロジック | このAPIは、比較演算子を使用するマルチパートブール式をサポートします。 | このAPIでは、メタデータによるクエリのサポートが限定的です。サポートされるのは、一度に1つのメタデータテンプレートに対するクエリのみで、単純なクエリ操作のみが可能です。 | | レスポンスタイプ | このAPIでは、一致したファイル/フォルダと、クエリによって一致した関連するメタデータの両方が返されます。 | このAPIで返されるのは、一致した項目のみです。各項目のメタデータを返すには、後続のAPIコールが必要です。 | | スループット (Throughput) | このAPIには現在、ユーザーごとのレート制限のほか、企業あたりのリクエスト数が10件/秒という制限があります。 | このAPIでは、1ユーザーあたりの検索数は6件/秒、企業あたりの検索数は最大60件/分および12件/秒がサポートされています。 | | 規模 | このAPIでは、指定したメタデータテンプレートを使用して返される項目数に制限はありません。一致する結果が2,000件以下になるクエリのみを送信することをお勧めします。 | このAPIには、指定したメタデータテンプレートを使用して返される項目数に制限はありません。ただし、検索に一致する項目数が増えるにつれ、レスポンス時間が大幅に増大します。このAPIでは、1つのクエリに対する結果は1,000万件までという制限があります。一致する結果が50,000件以下になるクエリのみを送信することをお勧めします。 | | スコープ | このAPIは常に、ユーザーがアクセスできるコンテンツに制限されています。 | このAPIは、ユーザーがアクセスできるコンテンツ (​user_content​) または社内のすべてのコンテンツ (​enterprise_content​) のいずれかに制限される場合があります。 | 一致する結果が10,000件を超える検索APIコールにより、関連度が多少変化することがあります。そのため、結果が重複する場合や結果が返されない場合があります。大規模なデータセットでは、検索を完全一致のソリューションと考えないでください。 ## シナリオ 使用するAPIを決定する際に役立つシナリオの例を以下に示します。 ### 企業全体を対象にして用語を検索する キーワード`Guarantee`に一致するコンテンツまたはメタデータを持つすべてのコンテンツを社内で検索します。 この場合は、[検索API](e://get_search)をお勧めします。このAPIでは、コンテンツとメタデータの両方で用語を照合し、対象範囲を企業全体のすべてのコンテンツに設定できます。 ### 複数のメタデータ値を検索する メタデータテンプレート`​Contract​`を使用して、金額が100,000ドルを超過し、更新日が2019年で、アカウント番号`​1234`に関連付けられていないすべてのドキュメントを検索します。 この場合は、[メタデータクエリAPI](e://post_metadata_queries_execute_read)をお勧めします。メタデータクエリを使用すると、数値、日付、文字列など、メタデータテンプレート内の複数のフィールドを評価するブール式を作成できます。 ### メタデータ検索とコンテンツ検索を組み合わせる メタデータテンプレート`​Contract​`を使用して、金額が100,000ドルを超過し、更新日が2019年で、タイトルや本文に「Sale」という用語が含まれておらず、アカウント番号`​1234`に関連付けられていないすべてのドキュメントを検索します。 このシナリオは、現在**サポートされていません**。現時点では、どちらのAPIも、あいまい検索 (「Sale」の検索) と、メタデータフィールドに一致するブール式の組み合わせをサポートしていません。 **Source:** [https://ja.developer.box.com/guides/metadata/queries/comparison/](https://ja.developer.box.com/guides/metadata/queries/comparison/) --- ### 通知の抑制 **Type:** guide | **Category:** APIコール | **Section:** Developer Guides 通知の抑制 一部のAPIコールでは、APIコールにbox-notifications: offヘッダーを指定することで、メール通知およびWebhook… # 通知の抑制 一部のAPIコールでは、APIコールに`box-notifications: off`ヘッダーを指定することで、メール通知およびWebhook通知をブロックできます。 ``` curl -X POST https://api.box.com/2.0/folders \ -H "box-notifications: off" \ -H "authorization: Bearer ACCESS_TOKEN" \ -d '{ "name": "New Folder", "parent": { "id": "0" } }' ``` たとえば、これをウイルススキャンツールに使用すると、社内でユーザーのファイルのコピーをダウンロードするたびに、そのファイルのすべてのコラボレータにダウンロードに関する通知メールが届くことはなくなります。 この場合でも、すべてのアクションがユーザーの更新フィードと監査ログに表示されます。 # スコープの要件 通知の抑制は、承認されたアプリケーションでのみ使用できます。アプリケーションに対して有効にする必要なスコープをリクエストするには、サポートにお問い合わせください。 この機能を正しく動作させるには、アプリケーションに対して以下の設定を構成する必要があります。 - **[APIコールからメール通知を抑制する]** - サポート経由のリクエストで対応可能 - **[Enterpriseのプロパティを管理する]** - 開発者コンソールから使用可能 - **[会社の設定を編集する]** の共同管理者権限 一部の通知は抑制できません。その代表として、ユーザー、コメント、コラボレーション、タスク割り当ての作成のほか、ユーザーのログインの変更時があります。 **Source:** [https://ja.developer.box.com/guides/api-calls/suppress-notifications/](https://ja.developer.box.com/guides/api-calls/suppress-notifications/) --- ### 開発者トークン **Type:** guide | **Category:** 認証 | **Section:** Developer Guides 開発者トークン 開発者トークンは、開発およびテスト中に開発者が利用できるアクセストークンです。これらのトークンは6… # 開発者トークン 開発者トークンは、開発およびテスト中に開発者が利用できるアクセストークンです。これらのトークンは60分後に期限切れになる有効期間の短いトークンであり、プログラムによって更新することはできません。 ## 開発者トークンの作成 アプリケーション用に開発者トークンを作成するには: - Box[開発者コンソール](https://app.box.com/developers/console)に移動し、開発者トークンの作成対象となるアプリケーションを選択します。 - [**構成**] タブを選択します。 - [開発者トークン] で、[**開発者トークンを生成**] を選択します。 [[Platformアプリ](g://applications)] ビューから直接、各アプリに用意されているメニューを使用して、開発者トークンを生成することもできます。 ## 開発者トークンの使用 開発者トークンは、さまざまなアクセストークンと同様、APIコールの`Authorization`ヘッダーで使用できます。 ``` curl https://api.box.com/2.0/users/me \ -H "authorization: Bearer [DEVELOPER_TOKEN]" ``` 開発者トークンは、トークンの生成時に開発者コンソールにログインしているユーザーに関連付けられます。 Box SDKは、基本のAPIクライアントを作成する際に、開発者トークンを使用して初期化することができます。 # 開発者トークンは実稼働環境で使用しないでください 開発者トークンは、開発またはテストのためだけに使用してください。 開発者コンソールで特定のアプリの開発者トークンを明示的に取り消すと、そのアプリケーションによって作成されたすべてのWebhookが削除されます。 ## SDKと開発者トークンの使用 各SDKの開発者トークンの詳細については、以下を参照してください。 [.Net](https://github.com/box/box-windows-sdk-v2/blob/main/docs/authentication.md#developer-token) [Java](https://github.com/box/box-java-sdk/blob/main/doc/authentication.md#developer-token) [Python](https://github.com/box/box-python-sdk/blob/main/docs/usage/authentication.md#developer-token) [Node](https://github.com/box/box-node-sdk/blob/main/docs/authentication.md#developer-token) [IOS](https://github.com/box/box-ios-sdk/blob/main/docs/usage/authentication.md#developer-token) **Source:** [https://ja.developer.box.com/guides/authentication/tokens/developer-tokens/](https://ja.developer.box.com/guides/authentication/tokens/developer-tokens/) --- ### 非アクティブなユーザーのレポート **Type:** guide | **Category:** CLI | **Section:** Developer Guides 非アクティブなユーザーのレポート このスクリプトは、一定の日数の間非アクティブであったユーザーのリストをCSVファイルで生成します。スクリプトによって以下の手順が実行されます。 userロールを持つユーザーを探します。 このスクリプトでは、他のロール (AppUser… # 非アクティブなユーザーのレポート このスクリプトは、一定の日数の間非アクティブであったユーザーのリストをCSVファイルで生成します。スクリプトによって以下の手順が実行されます。 `user`ロールを持つユーザーを探します。 このスクリプトでは、他のロール (`AppUser`など) は考慮していません。 [Box Events](resource://event)を使用して、そのユーザーが一定の日数の間に操作を行ったかどうかを確認します。デフォルトのイベントタイプのリストは、`LOGIN`、`UPLOAD`、`COPY`、`MOVE`、`PREVIEW`、`DOWNLOAD`、`EDIT`、`DELETE`、`UNDELETE`、`LOCK`、`UNLOCK`、`NEW_USER`です。このリストはスクリプトの設定で変更できます。 操作を行わなかったユーザーを、非アクティブなユーザーが含まれている`.csv`ファイルに追加します。このファイルは他のスクリプト ([ユーザーのプロビジョニング解除](g://cli/scripts/deprovision-users)など) の入力として使用できます。 ## 前提条件 ### Windows [.NET Core](https://dotnet.microsoft.com/download)の最新バージョンのインストール ### macOSおよびLinux [PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)をインストールします。`pwsh`コマンドを実行して、インストール結果をテストします。 ``` pwsh ``` どのディレクトリでこのコマンドを実行するかに応じて、出力が異なる場合があります。以下に例を示します。 ``` PowerShell 7.2.5 Copyright (c) Microsoft Corporation. https://aka.ms/powershell Type 'help' to get help. PS /Users/user/repos/boxcli/examples> ``` 問題が発生する場合は、[.NET Core](https://dotnet.microsoft.com/download)と[PowerShell](https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.2)の両方をインストールしたかどうか確認してください。 ### Box CLI スクリプトを使用するには、Box CLIをインストールし、構成する必要があります。これは、[クイックスタートガイド](g://cli/quick-start/create-oauth-app)の手順を実行することで行うことができます。ログインに使用するユーザーは、Boxのメイン管理者または共同管理者である必要があります。 ## スクリプトの構成 1. `boxcli` GitHubリポジトリを複製してこの例のフォルダにcdコマンドで移動するか、[`examples`](https://github.com/box/boxcli/tree/main/examples/Inactive%20Users%20Report)ディレクトリからファイルをダウンロードします。 ``` git clone https://github.com/box/boxcli.git cd boxcli/examples/Inactive\ Users\ Report/ ``` 1. スクリプトでUser Eventをスキャンする日数を設定します。この値を指定しなかった場合やデフォルト設定のままにした場合は、スクリプトによって入力するよう求められます。 ``` $daysInactive = "10" ``` 1. (省略可) レポート出力ファイル名を変更するには、`ReportOutputFile`パラメータを定義します。 ``` $ReportOutputFile = $ReportName + ".csv" ``` 1. (省略可) イベントタイプを変更するには、`eventType`パラメータのリストを定義します。 ``` $eventType = "LOGIN,UPLOAD,COPY,MOVE" ``` ## スクリプトの実行 PowerShellコマンドを実行します。 ``` pwsh ``` スクリプトを実行します。 ``` ./Inactive_Users_Report.ps1 ``` スクリプトの実行が完了すると、以下のような出力が表示されます。 ``` Looking for users inactive for more than 3 days. Found 6 users. Found 7 events in last 3 days Enterprise has: 0 App user, 6 regular users. With 1 admin role, 5 user roles. Need to check 5 users (regular user, with user role) for inactive. Found 5 users inactive for more than 3 days. Report is available at InactiveUsers.csv ``` ## ログ ログは、メインフォルダ内の`logs`フォルダに格納されます。以下のログファイルにアクセスできます。 - `Inactive_Users_Report_all.txt`: すべてのログエントリが含まれています。 - `Inactive_Users_Report_errors.txt`: エラーのみが含まれています。 **Source:** [https://ja.developer.box.com/guides/cli/scripts/report-inactive-users/](https://ja.developer.box.com/guides/cli/scripts/report-inactive-users/) --- ### 項目からのメタデータの削除 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 項目からのメタデータの削除 ファイルまたはフォルダに割り当てられたメタデータテンプレートのインスタンスを削除するには、項目のidに加え、テンプレートのtemplateKeyとscopeを使用します。 メタデータのスコープには、global… # 項目からのメタデータの削除 ファイルまたはフォルダに割り当てられたメタデータテンプレートのインスタンスを削除するには、項目の`id`に加え、テンプレートの`templateKey`と`scope`を使用します。 メタデータの[スコープ](g://metadata/scopes)には、`global` (すべての会社が利用できるテンプレートの場合)、`enterprise` (現在の会社が利用できるテンプレートの場合)、または`enterprise_:id` (IDがスコープ名の`:id`である会社に属するテンプレートの場合) のいずれかを指定できます。 ## ファイルからメタデータを削除する ファイルからメタデータテンプレートのインスタンスを削除するには、[`DELETE /files/:file_id/metadata/:templateKey/schema`](e://delete_files_id_metadata_id_id) APIエンドポイントを呼び出します。 ファイルからインスタンスが正常に削除されている場合、このAPIは、レスポンスの本文がない`204 No Content` APIレスポンスを返します。 ## フォルダからメタデータを削除する メタデータテンプレートのインスタンスを削除するには、[`DELETE /folders/:folder_id/metadata/:templateKey/schema`](e://delete_folders_id_metadata_id_id) APIエンドポイントを呼び出します。 フォルダからインスタンスが正常に削除されている場合、このAPIは、レスポンスの本文がない`204 No Content` APIレスポンスを返します。 **Source:** [https://ja.developer.box.com/guides/metadata/instances/delete/](https://ja.developer.box.com/guides/metadata/instances/delete/) --- ### 項目のすべてのメタデータのリストの取得 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 項目のすべてのメタデータのリストの取得 ファイルまたはフォルダのメタデータインスタンスのリストを取得できます。 ファイルのメタデータのリストを取得 ファイルのすべてのメタデータインスタンスのリストを取得するには、GET /files/:file_id/metadata API… # 項目のすべてのメタデータのリストの取得 ファイルまたはフォルダのメタデータインスタンスのリストを取得できます。 ## ファイルのメタデータのリストを取得 ファイルのすべてのメタデータインスタンスのリストを取得するには、[`GET /files/:file_id/metadata`](e://get_files_id_metadata) APIエンドポイントを呼び出します。 このAPIはページングをサポートしておらず、常にこのファイルのすべてのメタデータインスタンスを返します。 ## フォルダのメタデータのリストを取得 任意のフォルダ (ルートフォルダを除く) のすべてのメタデータインスタンスのリストを取得するには、[`GET /folders/:file_id/metadata`](e://get_files_id_metadata) APIエンドポイントを呼び出します。 このAPIはページングをサポートしておらず、常にこのファイルのすべてのメタデータインスタンスを返します。このAPIは、IDが`0`のルートフォルダには使用できません。 **Source:** [https://ja.developer.box.com/guides/metadata/instances/list/](https://ja.developer.box.com/guides/metadata/instances/list/) --- ### 項目のメタデータの取得 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 項目のメタデータの取得 ファイルまたはフォルダに割り当てられたメタデータテンプレートのインスタンスに関する情報を取得するには、項目のidに加え、テンプレートのtemplateKeyとscopeを使用します。 メタデータのスコープには、global… # 項目のメタデータの取得 ファイルまたはフォルダに割り当てられたメタデータテンプレートのインスタンスに関する情報を取得するには、項目の`id`に加え、テンプレートの`templateKey`と`scope`を使用します。 メタデータの[スコープ](g://metadata/scopes)には、`global` (すべての会社が利用できるテンプレートの場合)、`enterprise` (現在の会社が利用できるテンプレートの場合)、または`enterprise_:id` (IDがスコープ名の`:id`である会社に属するテンプレートの場合) のいずれかを指定できます。 ## ファイルのメタデータインスタンスを取得 ファイルのメタデータテンプレートのインスタンスを取得するには、ファイルの`file_id`およびテンプレートの`scope`と`templateKey`を指定して、[`GET /files/:file_id/metadata/:scope/:templateKey`](e://get_files_id_metadata_id_id) APIエンドポイントを呼び出します。 テンプレートの`scope`と`templateKey`を取得するには、[すべてのメタデータテンプレートのリストを取得](g://metadata/templates/list)するか、[ファイルのすべてのインスタンスのリストを取得](g://metadata/instances/list)します。 ## フォルダのメタデータインスタンスを取得 フォルダのメタデータテンプレートのインスタンスを取得するには、フォルダの`folder_id`およびテンプレートの`scope`と`templateKey`を指定して、[`GET /folders/:folder_id/metadata/:scope/:templateKey`](e://get_files_id_metadata_id_id) APIエンドポイントを呼び出します。 テンプレートの`scope`と`templateKey`を取得するには、[すべてのメタデータテンプレートのリストを取得](g://metadata/templates/list)するか、[フォルダのすべてのインスタンスのリストを取得](g://metadata/instances/list)します。 **Source:** [https://ja.developer.box.com/guides/metadata/instances/get/](https://ja.developer.box.com/guides/metadata/instances/get/) --- ### 項目のメタデータの更新 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 項目のメタデータの更新 ファイルまたはフォルダに適用されたメタデータを更新するには、項目のid、テンプレートのtemplateKeyとscopeに加え、テンプレートインスタンスのデータを操作するための一連のJSON… # 項目のメタデータの更新 ファイルまたはフォルダに適用されたメタデータを更新するには、項目の`id`、テンプレートの`templateKey`と`scope`に加え、テンプレートインスタンスのデータを操作するための一連のJSON操作を使用します。 ## ファイルのメタデータの更新 ファイルのメタデータを更新するには、ファイルの`file_id`、テンプレートの`scope`と`templateKey`、およびテンプレートインスタンスのデータを操作するための一連のJSON操作を指定して[`PUT /files/:file_id/metadata/:scope/:templateKey`](e://put_files_id_metadata_id_id) APIエンドポイントを呼び出します。 認証済みユーザーがファイルのメタデータに対する変更を書き込めるようにするには、ファイルへの書き込みアクセス権限が必要です。 ## フォルダのメタデータを更新 フォルダのメタデータを更新するには、フォルダの`folder_id`、テンプレートの`scope`と`templateKey`、およびテンプレートインスタンスのデータを操作するための一連のJSON操作を指定して[`PUT /folders/:folder_id/metadata/:scope/:templateKey`](e://put_folders_id_metadata_id_id) APIエンドポイントを呼び出します。 認証済みユーザーがファイルのメタデータに対する変更を書き込めるようにするには、ファイルへの書き込みアクセス権限が必要です。 ## JSON操作 メタデータを更新する場合は、[JSON-Patchの仕様](https://tools.ietf.org/html/rfc6902)に従う必要があります。これは、操作オブジェクトのリストとして表されます。 メタデータインスタンスの場合、これらの操作には`add`、`replace`、`remove`、`test`、`move`、`copy`のいずれかを指定できます。どの操作も、`op`の名前、変更対象のフィールドを指す[JSON Pointer](https://tools.ietf.org/html/rfc6901) `path`のほか、実行される操作に応じた`value`または`from`値 (省略可) で構成されます。 ``` [ { "op": "test", "path": "/competitiveDocument", "value": "no" }, { "op": "remove", "path": "/competitiveDocument" }, { "op": "test", "path": "/status", "value": "active" }, { "op": "replace", "path": "/status", "value": "inactive" }, { "op": "test", "path": "/author", "value": "Jones" }, { "op": "copy", "from": "/author", "path": "/editor" }, { "op": "move", "from": "/currentState", "path": "/previousState" }, { "op": "add", "path": "/currentState", "value": "reviewed" } ] ``` メタデータを編集する際には、メタデータテンプレートのスキーマに準拠した値のみを使用できます。更新は完全に適用されるか、まったく適用されないかのどちらかです。更新操作の適用中にエラーが発生した場合、メタデータインスタンスは変更されません。 テンプレートインスタンスを更新できるのは、テンプレートがすでにファイルまたはフォルダに割り当てられている場合のみです。 ### 新しい値の追加 テンプレートに新しい値を追加するには、`add`操作を使用します。 ``` [ { "op": "add", "path": "/name", "value": "Model 3" } ] ``` これにより、値が`Model 3`の`name`フィールドが追加されます。この操作の前は、テンプレートの`name`フィールドに値がありませんでした。 ``` { // "name": null, // old value "name": "Model 3", // new value "category": "SUVs", "$type": "productInfo-8120731a-41e4-11ea-b77f-2e728ce88125", "$parent": "folder_3456", "$id": "22ba8c96-41e6-11ea-b77f-2e728ce88125", "$version": 3, "$typeVersion": 0, "$template": "productInfo", "$scope": "enterprise_1234567", "$canEdit": true } ``` `enum`および`multiSelect`フィールドの場合、この新しい値には、そのフィールドに有効なオプションのいずれかを指定する必要があります。 ### 値の置き換え テンプレート上の値を置き換えるには、`replace`操作を使用します。 ``` [ { "op": "replace", "path": "/name", "value": "Model 4" } ] ``` これにより、`name`フィールドの値`Model 3`が新しい値`Model 4`に置き換えられます。 ``` { // "name": "Model 3", # Old value "name": "Model 3", // new value "category": "SUVs", "$type": "productInfo-8120731a-41e4-11ea-b77f-2e728ce88125", "$parent": "folder_3456", "$id": "22ba8c96-41e6-11ea-b77f-2e728ce88125", "$version": 3, "$typeVersion": 0, "$template": "productInfo", "$scope": "enterprise_1234567", "$canEdit": true } ``` `enum`および`multiSelect`フィールドの場合、この新しい値には、そのフィールドに有効なオプションのいずれかを指定する必要があります。 ### 値のコピー 値をあるフィールドから別のフィールドにコピーするには、`copy`操作を使用します。 ``` [ { "op": "copy", "from": "/name", "path": "/displayName" } ] ``` これにより、`name`フィールドの値と一致する値が設定された`displayName`フィールドが追加されます。この操作の前は、テンプレートの`displayName`フィールドに値がありませんでした。 ``` { "name": "Model 3", "displayName": "Model 3", // new value, copied from the name "category": "SUVs", "$type": "productInfo-8120731a-41e4-11ea-b77f-2e728ce88125", "$parent": "folder_3456", "$id": "22ba8c96-41e6-11ea-b77f-2e728ce88125", "$version": 3, "$typeVersion": 0, "$template": "productInfo", "$scope": "enterprise_1234567", "$canEdit": true } ``` `enum`および`multiSelect`フィールドの場合、この新しい値には、そのフィールドに有効なオプションのいずれかを指定する必要があります。 ### 値の移動 値をあるフィールドから別のフィールドに移動するには、`move`操作を使用します。 ``` [ { "op": "copy", "from": "/name", "path": "/displayName" } ] ``` これにより、`name`フィールドの値と一致する値が設定された`displayName`フィールドが追加されます。この操作の前は、テンプレートの`displayName`フィールドに値がありませんでした。この操作の後、`name`フィールドはすでに存在しません。 ``` { // "name": "Model 3", // old value, no longer present now "displayName": "Model 3", // new value, copied from the name "category": "SUVs", "$type": "productInfo-8120731a-41e4-11ea-b77f-2e728ce88125", "$parent": "folder_3456", "$id": "22ba8c96-41e6-11ea-b77f-2e728ce88125", "$version": 3, "$typeVersion": 0, "$template": "productInfo", "$scope": "enterprise_1234567", "$canEdit": true } ``` `enum`および`multiSelect`フィールドの場合、この新しい値には、そのフィールドに有効なオプションのいずれかを指定する必要があります。 ### 値の削除 メタデータインスタンスから値を削除するには、`remove`操作を使用します。 ``` [ { "op": "remove", "path": "/name" } ] ``` これにより、`name`フィールドがメタデータインスタンスから完全に削除されます。 ``` { // "name": "Model 3", // old value, no longer present now "category": "SUVs", "$type": "productInfo-8120731a-41e4-11ea-b77f-2e728ce88125", "$parent": "folder_3456", "$id": "22ba8c96-41e6-11ea-b77f-2e728ce88125", "$version": 3, "$typeVersion": 0, "$template": "productInfo", "$scope": "enterprise_1234567", "$canEdit": true } ``` `enum`および`multiSelect`フィールドの場合、この新しい値には、そのフィールドに有効なオプションのいずれかを指定する必要があります。 ### 値のテスト フィールドに期待する値が設定されていることをテストするには、`test`操作を使用します。 ``` [ { "op": "test", "path": "/name", "value": "Model 4" } ] ``` テストに失敗すると、APIはいずれの操作も実行せず、次のエラーとともにHTTPステータス`409 Conflict`を返します。 ``` { "message": "value differs from expectations", "code": "failed_json_patch_application", "request_id": "bzxgr1gbcq5h67pj" } ``` この操作の主な目的は、何らかの操作が実行される前に、メタデータインスタンスの値が予想どおりであることを確認することです。Box APIでは、変更がすべて実行されるかまったく実行されないかのいずれかであるため、テストの失敗は、変換が適用される前にすべての値が予想どおりかどうかを確認するのに非常に役立ちます。 **Source:** [https://ja.developer.box.com/guides/metadata/instances/update/](https://ja.developer.box.com/guides/metadata/instances/update/) --- ### 項目へのメタデータの適用 **Type:** guide | **Category:** メタデータ | **Section:** Developer Guides 項目へのメタデータの適用 メタデータテンプレートは、項目のid、テンプレートのtemplateKeyとscope、およびテンプレート内の各フィールドの値のセットを使用してファイルまたはフォルダに適用できます。 メタデータのスコープには、global… # 項目へのメタデータの適用 メタデータテンプレートは、項目の`id`、テンプレートの`templateKey`と`scope`、およびテンプレート内の各フィールドの値のセットを使用してファイルまたはフォルダに適用できます。 メタデータの[スコープ](g://metadata/scopes)には、`global` (すべての会社が利用できるテンプレートの場合)、`enterprise` (現在の会社が利用できるテンプレートの場合)、または`enterprise_:id` (IDがスコープ名の`:id`である会社に属するテンプレートの場合) のいずれかを指定できます。 特定のファイルまたはフォルダには最大100個のテンプレートを割り当てることができます。 ## ファイルへのメタデータの適用 メタデータテンプレートのインスタンスをファイルに適用するには、ファイルの`file_id`、テンプレートの`scope`と`templateKey`、および必要に応じてテンプレート内の各[フィールド](g://metadata/fields)の値のセットを指定して[`POST /files/:file_id/metadata/:scope/:templateKey`](e://post_files_id_metadata_id_id) APIエンドポイントを呼び出します。 テンプレートの`scope`と`templateKey`を取得するには、[すべてのメタデータテンプレートのリストを取得](g://metadata/templates/list)するか、[ファイルのすべてのインスタンスのリストを取得](g://metadata/instances/list)します。 ## タプルがすでに存在することを示すエラー 指定されたメタデータテンプレートでこのファイルにすでにメタデータが適用されている場合、エラーコード`tuple_already_exists`でエラーが返されます。この場合は、インスタンスを[代わりに更新する](g://metadata/instances/update)必要があります。 ## フォルダにメタデータを適用 メタデータテンプレートのインスタンスをフォルダに適用するには、フォルダの`folder_id`、テンプレートの`scope`と`templateKey`、および必要に応じてテンプレート内の各[フィールド](g://metadata/fields)の値のセットを指定して[`POST /folders/:folder_id/metadata/:scope/:templateKey`](e://post_folders_id_metadata_id_id) APIエンドポイントを呼び出します。 テンプレートの`scope`と`templateKey`を取得するには、[すべてのメタデータテンプレートのリストを取得](g://metadata/templates/list)するか、[フォルダのすべてのインスタンスのリストを取得](g://metadata/instances/list)します。 ## タプルがすでに存在することを示すエラー 指定されたメタデータテンプレートでこのフォルダにすでにメタデータが適用されている場合、エラーコード`tuple_already_exists`でエラーが返されます。この場合は、インスタンスを[代わりに更新する](g://metadata/instances/update)必要があります。 ## リクエスト本文 リクエストの本文には、テンプレート内の各[フィールド](g://metadata/fields)の値を含めることができます。テンプレートに存在するフィールドを調べるには、[メタデータテンプレートを調査](g://metadata/templates/get)してください。 たとえば、次のテンプレートについて考えましょう。 ``` { "id": "8120731a-41e4-11ea-b77f-2e728ce88125", "type": "metadata_template", "templateKey": "productInfo", "scope": "enterprise_1234567", "displayName": "Product Info", "hidden": false, "copyInstanceOnItemCopy": true, "fields": [ { "id": "feed71de-41e5-11ea-b77f-2e728ce88125", "type": "string", "key": "name", "displayName": "Name", "hidden": false }, { "id": "02b36bb6-41e6-11ea-b77f-2e728ce88125", "type": "enum", "key": "category", "displayName": "Category", "hidden": false, "options": [ { "id": "06a7bcc2-41e6-11ea-b77f-2e728ce88125", "key": "SUVs" }, { "id": "0a50df02-41e6-11ea-b77f-2e728ce88125", "key": "Saloons" }, { "id": "0e466be0-41e6-11ea-b77f-2e728ce88125", "key": "Cabriolets" } ] } ] } ``` このテンプレートには、2つの[テンプレートフィールド](g://metadata/fields)として`name`と`category`があります。`name`フィールドは通常のテキストフィールドで、`category`は列挙型フィールドです。 このテンプレートをファイルまたはフォルダに割り当てるリクエストの本文には、テンプレートの任意のフィールドの値を含めることができます。本文にフィールドも値も含めないことも可能です。 この場合、次のリクエスト本文は有効な例です。 ``` { "name": "Model 3", "category": "SUVs" } ``` キー`properties`を使用してスコープが`global`に設定されたテンプレートは例外で、テンプレートに任意のデータを割り当てることができます。このテンプレートを使用すると、一連のキー/値ペアをテンプレートに割り当てることができます。 この例の`category`フィールドは`enum`フィールドで、このフィールドで使用できるオプションのいずれかを指定する必要があります。 **Source:** [https://ja.developer.box.com/guides/metadata/instances/create/](https://ja.developer.box.com/guides/metadata/instances/create/) --- ## API Reference ### AI LLMエンドポイントパラメータ (AWS) **Type:** resource | **Category:** api-resource | **Section:** API Reference AI LLMエンドポイントパラメータ (AWS) オブジェクト。 # AI LLMエンドポイントパラメータ (AWS) AI LLMエンドポイントパラメータ (AWS) オブジェクト。 --- ### AI LLMエンドポイントパラメータ (Google) **Type:** resource | **Category:** api-resource | **Section:** API Reference AI LLMエンドポイントパラメータ (Google) オブジェクト。 # AI LLMエンドポイントパラメータ (Google) AI LLMエンドポイントパラメータ (Google) オブジェクト。 --- ### AI LLMエンドポイントパラメータ (IBM) **Type:** resource | **Category:** api-resource | **Section:** API Reference AI LLMエンドポイントパラメータ (IBM) オブジェクト。 # AI LLMエンドポイントパラメータ (IBM) AI LLMエンドポイントパラメータ (IBM) オブジェクト。 --- ### AI LLMエンドポイントパラメータ (OpenAI) **Type:** resource | **Category:** api-resource | **Section:** API Reference AI LLMエンドポイントパラメータ (OpenAI) オブジェクト。 # AI LLMエンドポイントパラメータ (OpenAI) AI LLMエンドポイントパラメータ (OpenAI) オブジェクト。 --- ### AIエージェント **Type:** resource | **Category:** api-resource | **Section:** API Reference AIエージェントインスタンスのStandard版の表示。 # AIエージェント AIエージェントインスタンスのStandard版の表示。 --- ### AIエージェント (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference AIエージェントインスタンスのFull版の表示。 # AIエージェント (Full) AIエージェントインスタンスのFull版の表示。 --- ### AIエージェントのデフォルト構成を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-ai-agent-default/ **Source:** [https://ja.developer.box.com/reference/get-ai-agent-default/](https://ja.developer.box.com/reference/get-ai-agent-default/) --- ### AIエージェントのリスト **Type:** resource | **Category:** api-resource | **Section:** API Reference ページネーションを使用したAIエージェントのリスト。 # AIエージェントのリスト ページネーションを使用したAIエージェントのリスト。 --- ### AIエージェントのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-ai-agents/ **Source:** [https://ja.developer.box.com/reference/get-ai-agents/](https://ja.developer.box.com/reference/get-ai-agents/) --- ### AIエージェントの参照 **Type:** resource | **Category:** api-resource | **Section:** API Reference クエリの処理に使用されるAIエージェント。 # AIエージェントの参照 クエリの処理に使用されるAIエージェント。 --- ### AIエージェントの機能 (テキスト生成) **Type:** resource | **Category:** api-resource | **Section:** API Reference テキストの生成に使用するAIエージェント。 # AIエージェントの機能 (テキスト生成) テキストの生成に使用するAIエージェント。 --- ### AIエージェントの機能 (テキスト生成リクエスト) **Type:** resource | **Category:** api-resource | **Section:** API Reference テキストの生成に使用するAIエージェント。 # AIエージェントの機能 (テキスト生成リクエスト) テキストの生成に使用するAIエージェント。 --- ### AIエージェントの機能 (抽出) **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータ抽出に使用するAIエージェント。 # AIエージェントの機能 (抽出) メタデータ抽出に使用するAIエージェント。 --- ### AIエージェントの機能 (抽出リクエスト) **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータ抽出に使用するAIエージェント。 # AIエージェントの機能 (抽出リクエスト) メタデータ抽出に使用するAIエージェント。 --- ### AIエージェントの機能 (質問) **Type:** resource | **Category:** api-resource | **Section:** API Reference 質問に使用するAIエージェント。 # AIエージェントの機能 (質問) 質問に使用するAIエージェント。 --- ### AIエージェントの機能 (質問リクエスト) **Type:** resource | **Category:** api-resource | **Section:** API Reference クエリの処理に使用するAIエージェント。 # AIエージェントの機能 (質問リクエスト) クエリの処理に使用するAIエージェント。 --- ### AIエージェントを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-ai-agents/ **Source:** [https://ja.developer.box.com/reference/post-ai-agents/](https://ja.developer.box.com/reference/post-ai-agents/) --- ### AIエージェントを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-ai-agents-id/ **Source:** [https://ja.developer.box.com/reference/delete-ai-agents-id/](https://ja.developer.box.com/reference/delete-ai-agents-id/) --- ### AIエージェントを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-ai-agents-id/ **Source:** [https://ja.developer.box.com/reference/put-ai-agents-id/](https://ja.developer.box.com/reference/put-ai-agents-id/) --- ### AIによる抽出 (構造化) のレスポンス **Type:** resource | **Category:** api-resource | **Section:** API Reference AIによる抽出 (構造化) のレスポンス。 # AIによる抽出 (構造化) のレスポンス AIによる抽出 (構造化) のレスポンス。 --- ### AIによる抽出のレスポンス **Type:** resource | **Category:** api-resource | **Section:** API Reference AIによる抽出のレスポンス。このレスポンスのコンテンツは、リクエストされた構成に応じて異なる場合があります。 # AIによる抽出のレスポンス AIによる抽出のレスポンス。このレスポンスのコンテンツは、リクエストされた構成に応じて異なる場合があります。 --- ### AIの応答 **Type:** resource | **Category:** api-resource | **Section:** API Reference AIの応答。 # AIの応答 AIの応答。 --- ### AIの応答 (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference AIの質問への応答。 # AIの応答 (Full) AIの質問への応答。 --- ### AppItemイベントソース **Type:** resource | **Category:** api-resource | **Section:** API Reference イベントストリーム内のイベントをトリガーしたAppItem。 # AppItemイベントソース イベントストリーム内のイベントをトリガーしたAppItem。 --- ### Archive **Type:** resource | **Category:** api-resource | **Section:** API Reference アーカイブとは、冗長なコンテンツ、古くなったコンテンツ、または重要でないコンテンツの保存専用のフォルダです。アーカイブ内のコンテンツには、その所有者とコラボレータはアクセスできません。この機能を使用するには、Boxアプリケーションに対してGCMスコープをリクエストする必要があります。 # Archive アーカイブとは、冗長なコンテンツ、古くなったコンテンツ、または重要でないコンテンツの保存専用のフォルダです。アーカイブ内のコンテンツには、その所有者とコラボレータはアクセスできません。この機能を使用するには、Boxアプリケーションに対してGCMスコープをリクエストする必要があります。 --- ### Archives **Type:** resource | **Category:** api-resource | **Section:** API Reference アーカイブのリスト。 # Archives アーカイブのリスト。 --- ### Box Doc Genジョブ **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Doc GenジョブのStandard版の表示。 # Box Doc Genジョブ Box Doc GenジョブのStandard版の表示。 --- ### Box Doc Genジョブ **Type:** resource | **Category:** api-resource | **Section:** API Reference 標準のパラメータのセットを含むBox Doc Genジョブのリスト。 # Box Doc Genジョブ 標準のパラメータのセットを含むBox Doc Genジョブのリスト。 --- ### Box Doc Genジョブ (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Doc GenジョブのBase版の表示。 # Box Doc Genジョブ (Base) Box Doc GenジョブのBase版の表示。 --- ### Box Doc Genジョブ (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Doc GenジョブのFull版の表示。 # Box Doc Genジョブ (Full) Box Doc GenジョブのFull版の表示。 --- ### Box Doc Genジョブ (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference すべてのパラメータを含むBox Doc Genジョブのリスト。 # Box Doc Genジョブ (Full) すべてのパラメータを含むBox Doc Genジョブのリスト。 --- ### Box Doc Genタグ **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Doc Genタグのリスト。 # Box Doc Genタグ Box Doc Genタグのリスト。 --- ### Box Doc Genタグの処理メッセージ **Type:** resource | **Category:** api-resource | **Section:** API Reference ドキュメントのタグがまだ処理中であることをユーザーに通知するメッセージ。 # Box Doc Genタグの処理メッセージ ドキュメントのタグがまだ処理中であることをユーザーに通知するメッセージ。 --- ### Box Doc Genテンプレート **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Doc Genテンプレートオブジェクト。 # Box Doc Genテンプレート Box Doc Genテンプレートオブジェクト。 --- ### Box Doc Genテンプレート **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Doc Genテンプレートのリスト。 # Box Doc Genテンプレート Box Doc Genテンプレートのリスト。 --- ### Box Doc Genテンプレート (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference 他のリソース内にネストされたときに使用されるBox Doc GenテンプレートのBase版の表示。 # Box Doc Genテンプレート (Base) 他のリソース内にネストされたときに使用されるBox Doc GenテンプレートのBase版の表示。 --- ### Box Doc Genテンプレートタグ **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Doc Genテンプレートタグオブジェクト。 # Box Doc Genテンプレートタグ Box Doc Genテンプレートタグオブジェクト。 --- ### Box Doc Genテンプレートのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-docgen-templates/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-docgen-templates/](https://ja.developer.box.com/reference/v2025.0/get-docgen-templates/) --- ### Box Doc Genテンプレートを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/post-docgen-templates/ **Source:** [https://ja.developer.box.com/reference/v2025.0/post-docgen-templates/](https://ja.developer.box.com/reference/v2025.0/post-docgen-templates/) --- ### Box Doc Genテンプレートを使用してドキュメントを生成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/post-docgen-batches/ **Source:** [https://ja.developer.box.com/reference/v2025.0/post-docgen-batches/](https://ja.developer.box.com/reference/v2025.0/post-docgen-batches/) --- ### Box Doc Genテンプレートを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/delete-docgen-templates-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/delete-docgen-templates-id/](https://ja.developer.box.com/reference/v2025.0/delete-docgen-templates-id/) --- ### Box Doc Genのバッチ (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Doc GenバッチオブジェクトのBase版の表示。Box Doc Genのバッチには、1つ以上のBox Doc Genジョブが含まれています。 # Box Doc Genのバッチ (Base) Box Doc GenバッチオブジェクトのBase版の表示。Box Doc Genのバッチには、1つ以上のBox Doc Genジョブが含まれています。 --- ### Box Hub **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のBox Hubs APIエンドポイントからデフォルトで返されるBox HubのStandard版の表示。 # Box Hub 任意のBox Hubs APIエンドポイントからデフォルトで返されるBox HubのStandard版の表示。 --- ### Box Hub (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference 最も基本的なBox HubのBase版の表示。 # Box Hub (Base) 最も基本的なBox HubのBase版の表示。 --- ### Box Hubs **Type:** resource | **Category:** api-resource | **Section:** API Reference Hubのページ割りされたリスト。 # Box Hubs Hubのページ割りされたリスト。 --- ### Box Hubコラボレーション **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Hubコラボレーションオブジェクトは、特定のロールによって定義される権限を含んだBox Hubへのアクセス権限をユーザーまたはグループに付与します。 # Box Hubコラボレーション Box Hubコラボレーションオブジェクトは、特定のロールによって定義される権限を含んだBox Hubへのアクセス権限をユーザーまたはグループに付与します。 --- ### Box Hubコラボレーション **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Hubコラボレーションのリスト。 # Box Hubコラボレーション Box Hubコラボレーションのリスト。 --- ### Box Hubコラボレーションを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/post-hub-collaborations/ **Source:** [https://ja.developer.box.com/reference/v2025.0/post-hub-collaborations/](https://ja.developer.box.com/reference/v2025.0/post-hub-collaborations/) --- ### Box Hubコラボレーションを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/delete-hub-collaborations-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/delete-hub-collaborations-id/](https://ja.developer.box.com/reference/v2025.0/delete-hub-collaborations-id/) --- ### Box Hubコラボレーションを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-hub-collaborations/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-hub-collaborations/](https://ja.developer.box.com/reference/v2025.0/get-hub-collaborations/) --- ### Box Hubコラボレーションを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/put-hub-collaborations-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/put-hub-collaborations-id/](https://ja.developer.box.com/reference/v2025.0/put-hub-collaborations-id/) --- ### Box Hubの項目 **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Hubの項目とは、Box Hubで参照されるBox項目のことです。 # Box Hubの項目 Box Hubの項目とは、Box Hubで参照されるBox項目のことです。 --- ### Box Hubの項目 **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Hubの項目のリスト。 # Box Hubの項目 Box Hubの項目のリスト。 --- ### Box Hubの項目の管理のレスポンス **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Hubの項目の管理操作のステータスを表すレスポンスのスキーマ。 # Box Hubの項目の管理のレスポンス Box Hubの項目の管理操作のステータスを表すレスポンスのスキーマ。 --- ### Box Hubの項目を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-hub-items/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-hub-items/](https://ja.developer.box.com/reference/v2025.0/get-hub-items/) --- ### Box Hubの項目を管理 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/post-hubs-id-manage-items/ **Source:** [https://ja.developer.box.com/reference/v2025.0/post-hubs-id-manage-items/](https://ja.developer.box.com/reference/v2025.0/post-hubs-id-manage-items/) --- ### Box Hubをコピー **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/post-hubs-id-copy/ **Source:** [https://ja.developer.box.com/reference/v2025.0/post-hubs-id-copy/](https://ja.developer.box.com/reference/v2025.0/post-hubs-id-copy/) --- ### Box Hubを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/post-hubs/ **Source:** [https://ja.developer.box.com/reference/v2025.0/post-hubs/](https://ja.developer.box.com/reference/v2025.0/post-hubs/) --- ### Box Hubを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/delete-hubs-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/delete-hubs-id/](https://ja.developer.box.com/reference/v2025.0/delete-hubs-id/) --- ### Box Signテンプレート **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Signテンプレートオブジェクト。 # Box Signテンプレート Box Signテンプレートオブジェクト。 --- ### Box Signテンプレート **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のBox Sign APIエンドポイントからデフォルトで返されるテンプレートのリスト。 # Box Signテンプレート 任意のBox Sign APIエンドポイントからデフォルトで返されるテンプレートのリスト。 --- ### Box Signテンプレートのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-sign-templates/ **Source:** [https://ja.developer.box.com/reference/get-sign-templates/](https://ja.developer.box.com/reference/get-sign-templates/) --- ### Box Signリクエスト **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Signリクエストオブジェクト。 # Box Signリクエスト Box Signリクエストオブジェクト。 --- ### Box Signリクエスト **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のBox Sign APIエンドポイントからデフォルトで返される署名リクエストのStandard版の表示。 # Box Signリクエスト 任意のBox Sign APIエンドポイントからデフォルトで返される署名リクエストのStandard版の表示。 --- ### Box Signリクエストのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-sign-requests/ **Source:** [https://ja.developer.box.com/reference/get-sign-requests/](https://ja.developer.box.com/reference/get-sign-requests/) --- ### Box Signリクエストをキャンセル **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-sign-requests-id-cancel/ **Source:** [https://ja.developer.box.com/reference/post-sign-requests-id-cancel/](https://ja.developer.box.com/reference/post-sign-requests-id-cancel/) --- ### Box Signリクエストを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-sign-requests/ **Source:** [https://ja.developer.box.com/reference/post-sign-requests/](https://ja.developer.box.com/reference/post-sign-requests/) --- ### Box Signリクエストを作成する **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Signリクエストオブジェクトを作成します。 # Box Signリクエストを作成する Box Signリクエストオブジェクトを作成します。 --- ### Box Signリクエストを再送信 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-sign-requests-id-resend/ **Source:** [https://ja.developer.box.com/reference/post-sign-requests-id-resend/](https://ja.developer.box.com/reference/post-sign-requests-id-resend/) --- ### Collaboration **Type:** resource | **Category:** api-resource | **Section:** API Reference アクセス制御リストと同様に、コラボレーションではファイルとフォルダに 対するユーザーおよびグループのアクセス権限が定義されます。コラボレーションオブジェクトは、特定のロールによって定義される権限を含んだファイルまたはフォルダへのアクセス権限をユーザーまたはグループに付与します。 # Collaboration アクセス制御リストと同様に、コラボレーションではファイルとフォルダに 対するユーザーおよびグループのアクセス権限が定義されます。コラボレーションオブジェクトは、特定のロールによって定義される権限を含んだファイルまたはフォルダへのアクセス権限をユーザーまたはグループに付与します。 --- ### Collaborations **Type:** resource | **Category:** api-resource | **Section:** API Reference コラボレーションのリスト。 # Collaborations コラボレーションのリスト。 --- ### Collaborations **Type:** resource | **Category:** api-resource | **Section:** API Reference コラボレーションのリスト。 # Collaborations コラボレーションのリスト。 --- ### Collection **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルやフォルダなどの項目のコレクション。 現時点で利用可能なコレクションは、`favorites`コレクションのみです。 コレクションのコンテンツは、フォルダのコンテンツと同じ方法で調べることができます。 # Collection ファイルやフォルダなどの項目のコレクション。 現時点で利用可能なコレクションは、`favorites`コレクションのみです。 コレクションのコンテンツは、フォルダのコンテンツと同じ方法で調べることができます。 --- ### Collections **Type:** resource | **Category:** api-resource | **Section:** API Reference コレクションのリスト。 # Collections コレクションのリスト。 --- ### Comment **Type:** resource | **Category:** api-resource | **Section:** API Reference コメントのStandard版の表示。 # Comment コメントのStandard版の表示。 --- ### Comments **Type:** resource | **Category:** api-resource | **Section:** API Reference コメントのリスト。 # Comments コメントのリスト。 --- ### Device Pinner **Type:** resource | **Category:** api-resource | **Section:** API Reference デバイスピンを使用すると、どのデバイスでネイティブBoxアプリケーションの使用を許可するかを会社レベルで制御できます。 # Device Pinner デバイスピンを使用すると、どのデバイスでネイティブBoxアプリケーションの使用を許可するかを会社レベルで制御できます。 --- ### Device Pinners **Type:** resource | **Category:** api-resource | **Section:** API Reference デバイスピンのリスト。 # Device Pinners デバイスピンのリスト。 --- ### Enterprise **Type:** resource | **Category:** api-resource | **Section:** API Reference 他のリソース内にネストされたときに使用されるEnterpriseのレプリゼンテーション。 # Enterprise 他のリソース内にネストされたときに使用されるEnterpriseのレプリゼンテーション。 --- ### Enterprise構成 **Type:** resource | **Category:** api-resource | **Section:** API Reference 指定したEnterpriseのEnterprise構成。 # Enterprise構成 指定したEnterpriseのEnterprise構成。 --- ### Enterprise構成 (Shield) **Type:** resource | **Category:** api-resource | **Section:** API Reference ShieldカテゴリのEnterprise構成。 # Enterprise構成 (Shield) ShieldカテゴリのEnterprise構成。 --- ### Enterprise構成 (コンテンツと共有) **Type:** resource | **Category:** api-resource | **Section:** API Reference コンテンツと共有カテゴリのEnterprise構成。 # Enterprise構成 (コンテンツと共有) コンテンツと共有カテゴリのEnterprise構成。 --- ### Enterprise構成 (セキュリティ) **Type:** resource | **Category:** api-resource | **Section:** API Reference セキュリティカテゴリのEnterprise構成。 # Enterprise構成 (セキュリティ) セキュリティカテゴリのEnterprise構成。 --- ### Enterprise構成 (ユーザー設定) **Type:** resource | **Category:** api-resource | **Section:** API Reference ユーザー設定カテゴリのEnterprise構成。 # Enterprise構成 (ユーザー設定) ユーザー設定カテゴリのEnterprise構成。 --- ### Enterprise構成を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-enterprise-configurations-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-enterprise-configurations-id/](https://ja.developer.box.com/reference/v2025.0/get-enterprise-configurations-id/) --- ### Event **Type:** resource | **Category:** api-resource | **Section:** API Reference Box内で発生したイベントの説明。 # Event Box内で発生したイベントの説明。 --- ### Events **Type:** resource | **Category:** api-resource | **Section:** API Reference イベントオブジェクトのリスト。 # Events イベントオブジェクトのリスト。 --- ### File **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のファイルAPIエンドポイントからデフォルトで返されるファイルのStandard版の表示。 # File 任意のファイルAPIエンドポイントからデフォルトで返されるファイルのStandard版の表示。 --- ### Files **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルのリスト。 # Files ファイルのリスト。 --- ### Folder **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のフォルダAPIエンドポイントからデフォルトで返されるフォルダのStandard版の表示。 # Folder 任意のフォルダAPIエンドポイントからデフォルトで返されるフォルダのStandard版の表示。 --- ### Group **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のグループAPIエンドポイントからデフォルトで返されるグループのStandard版の表示。 # Group 任意のグループAPIエンドポイントからデフォルトで返されるグループのStandard版の表示。 --- ### Groups **Type:** resource | **Category:** api-resource | **Section:** API Reference グループのリスト。 # Groups グループのリスト。 --- ### IDを指定してBox Doc Genジョブを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-docgen-jobs-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-docgen-jobs-id/](https://ja.developer.box.com/reference/v2025.0/get-docgen-jobs-id/) --- ### IDを指定してBox Doc Genテンプレートを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-docgen-templates-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-docgen-templates-id/](https://ja.developer.box.com/reference/v2025.0/get-docgen-templates-id/) --- ### IDを指定してBox Hubの情報を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-hubs-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-hubs-id/](https://ja.developer.box.com/reference/v2025.0/get-hubs-id/) --- ### IDを指定してBox Hubの情報を更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/put-hubs-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/put-hubs-id/](https://ja.developer.box.com/reference/v2025.0/put-hubs-id/) --- ### IDを指定してBox Signテンプレートを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-sign-templates-id/ **Source:** [https://ja.developer.box.com/reference/get-sign-templates-id/](https://ja.developer.box.com/reference/get-sign-templates-id/) --- ### IDを指定してBox Signリクエストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-sign-requests-id/ **Source:** [https://ja.developer.box.com/reference/get-sign-requests-id/](https://ja.developer.box.com/reference/get-sign-requests-id/) --- ### IDを指定してShield情報バリアのセグメントメンバーを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-shield-information-barrier-segment-members-id/ **Source:** [https://ja.developer.box.com/reference/delete-shield-information-barrier-segment-members-id/](https://ja.developer.box.com/reference/delete-shield-information-barrier-segment-members-id/) --- ### IDを指定してShield情報バリアのセグメントメンバーを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shield-information-barrier-segment-members-id/ **Source:** [https://ja.developer.box.com/reference/get-shield-information-barrier-segment-members-id/](https://ja.developer.box.com/reference/get-shield-information-barrier-segment-members-id/) --- ### IDを指定してShield情報バリアのセグメント制限を削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-shield-information-barrier-segment-restrictions-id/ **Source:** [https://ja.developer.box.com/reference/delete-shield-information-barrier-segment-restrictions-id/](https://ja.developer.box.com/reference/delete-shield-information-barrier-segment-restrictions-id/) --- ### IDを指定してShield情報バリアのセグメント制限を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shield-information-barrier-segment-restrictions-id/ **Source:** [https://ja.developer.box.com/reference/get-shield-information-barrier-segment-restrictions-id/](https://ja.developer.box.com/reference/get-shield-information-barrier-segment-restrictions-id/) --- ### IDを指定してShield情報バリアレポートを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shield-information-barrier-reports-id/ **Source:** [https://ja.developer.box.com/reference/get-shield-information-barrier-reports-id/](https://ja.developer.box.com/reference/get-shield-information-barrier-reports-id/) --- ### IDを指定してコレクションを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-collections-id/ **Source:** [https://ja.developer.box.com/reference/get-collections-id/](https://ja.developer.box.com/reference/get-collections-id/) --- ### IDを指定してメタデータテンプレートを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-templates-id/ **Source:** [https://ja.developer.box.com/reference/get-metadata-templates-id/](https://ja.developer.box.com/reference/get-metadata-templates-id/) --- ### IDを指定してメタデータ階層ノードを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-taxonomies-id-id-nodes-id/ **Source:** [https://ja.developer.box.com/reference/get-metadata-taxonomies-id-id-nodes-id/](https://ja.developer.box.com/reference/get-metadata-taxonomies-id-id-nodes-id/) --- ### Invite **Type:** resource | **Category:** api-resource | **Section:** API Reference 会社へのユーザーの招待。 # Invite 会社へのユーザーの招待。 --- ### Items **Type:** resource | **Category:** api-resource | **Section:** API Reference Mini版の表示に含まれるファイル、フォルダ、ウェブリンクのリスト。 # Items Mini版の表示に含まれるファイル、フォルダ、ウェブリンクのリスト。 --- ### Items **Type:** resource | **Category:** api-resource | **Section:** API Reference Mini版の表示に含まれるファイル、フォルダ、ウェブリンクのリスト。 # Items Mini版の表示に含まれるファイル、フォルダ、ウェブリンクのリスト。 --- ### OAuth 2.0エラー **Type:** resource | **Category:** api-resource | **Section:** API Reference OAuth 2.0エラー。 # OAuth 2.0エラー OAuth 2.0エラー。 --- ### Shieldリスト **Type:** resource | **Category:** api-resource | **Section:** API Reference ShieldリストのStandard版の表示。 # Shieldリスト ShieldリストのStandard版の表示。 --- ### Shieldリスト (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference ShieldリストのMini版の表示。 # Shieldリスト (Mini) ShieldリストのMini版の表示。 --- ### ShieldリストIDを指定して1つのShieldリストを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/delete-shield-lists-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/delete-shield-lists-id/](https://ja.developer.box.com/reference/v2025.0/delete-shield-lists-id/) --- ### ShieldリストIDを指定して1つのShieldリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-shield-lists-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-shield-lists-id/](https://ja.developer.box.com/reference/v2025.0/get-shield-lists-id/) --- ### Shieldリストのコンテンツ (IP) **Type:** resource | **Category:** api-resource | **Section:** API Reference IPアドレスのデータを含むShieldリストのコンテンツの表示。 # Shieldリストのコンテンツ (IP) IPアドレスのデータを含むShieldリストのコンテンツの表示。 --- ### Shieldリストのコンテンツ (ドメイン) **Type:** resource | **Category:** api-resource | **Section:** API Reference ドメインのデータを含むShieldリストのコンテンツの表示。 # Shieldリストのコンテンツ (ドメイン) ドメインのデータを含むShieldリストのコンテンツの表示。 --- ### Shieldリストのコンテンツ (メールアドレス) **Type:** resource | **Category:** api-resource | **Section:** API Reference メールアドレスのデータを含むShieldリストのコンテンツの表示。 # Shieldリストのコンテンツ (メールアドレス) メールアドレスのデータを含むShieldリストのコンテンツの表示。 --- ### Shieldリストのコンテンツ (国) **Type:** resource | **Category:** api-resource | **Section:** API Reference 国のデータを含むShieldリストのコンテンツの表示。 # Shieldリストのコンテンツ (国) 国のデータを含むShieldリストのコンテンツの表示。 --- ### Shieldリストのコンテンツ (統合) **Type:** resource | **Category:** api-resource | **Section:** API Reference 統合のデータを含むShieldリストのコンテンツの表示。 # Shieldリストのコンテンツ (統合) 統合のデータを含むShieldリストのコンテンツの表示。 --- ### Shieldリストのリスト **Type:** resource | **Category:** api-resource | **Section:** API Reference Shieldリストオブジェクトのリスト。 # Shieldリストのリスト Shieldリストオブジェクトのリスト。 --- ### Shieldリストを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/post-shield-lists/ **Source:** [https://ja.developer.box.com/reference/v2025.0/post-shield-lists/](https://ja.developer.box.com/reference/v2025.0/post-shield-lists/) --- ### Shieldリストを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/put-shield-lists-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/put-shield-lists-id/](https://ja.developer.box.com/reference/v2025.0/put-shield-lists-id/) --- ### Shield情報バリア **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアオブジェクトのStandard版の表示。 # Shield情報バリア Shield情報バリアオブジェクトのStandard版の表示。 --- ### Shield情報バリア (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアオブジェクトのBase版の表示。 # Shield情報バリア (Base) Shield情報バリアオブジェクトのBase版の表示。 --- ### Shield情報バリアのセグメント **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアのセグメントオブジェクト。 # Shield情報バリアのセグメント Shield情報バリアのセグメントオブジェクト。 --- ### Shield情報バリアのセグメントのリスト **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアのセグメントオブジェクトのリスト。 # Shield情報バリアのセグメントのリスト Shield情報バリアのセグメントオブジェクトのリスト。 --- ### Shield情報バリアのセグメントのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shield-information-barrier-segments/ **Source:** [https://ja.developer.box.com/reference/get-shield-information-barrier-segments/](https://ja.developer.box.com/reference/get-shield-information-barrier-segments/) --- ### Shield情報バリアのセグメントメンバー **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアのセグメントメンバーオブジェクトのStandard版の表示。 # Shield情報バリアのセグメントメンバー Shield情報バリアのセグメントメンバーオブジェクトのStandard版の表示。 --- ### Shield情報バリアのセグメントメンバー (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアのセグメントメンバーオブジェクトのBase版の表示。 # Shield情報バリアのセグメントメンバー (Base) Shield情報バリアのセグメントメンバーオブジェクトのBase版の表示。 --- ### Shield情報バリアのセグメントメンバー (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアのセグメントメンバーオブジェクトのMini版の表示。 # Shield情報バリアのセグメントメンバー (Mini) Shield情報バリアのセグメントメンバーオブジェクトのMini版の表示。 --- ### Shield情報バリアのセグメントメンバーのリスト **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアのメンバーオブジェクトのリスト。 # Shield情報バリアのセグメントメンバーのリスト Shield情報バリアのメンバーオブジェクトのリスト。 --- ### Shield情報バリアのセグメントメンバーのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shield-information-barrier-segment-members/ **Source:** [https://ja.developer.box.com/reference/get-shield-information-barrier-segment-members/](https://ja.developer.box.com/reference/get-shield-information-barrier-segment-members/) --- ### Shield情報バリアのセグメントメンバーを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-shield-information-barrier-segment-members/ **Source:** [https://ja.developer.box.com/reference/post-shield-information-barrier-segment-members/](https://ja.developer.box.com/reference/post-shield-information-barrier-segment-members/) --- ### Shield情報バリアのセグメントを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-shield-information-barrier-segments/ **Source:** [https://ja.developer.box.com/reference/post-shield-information-barrier-segments/](https://ja.developer.box.com/reference/post-shield-information-barrier-segments/) --- ### Shield情報バリアのセグメントを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-shield-information-barrier-segments-id/ **Source:** [https://ja.developer.box.com/reference/delete-shield-information-barrier-segments-id/](https://ja.developer.box.com/reference/delete-shield-information-barrier-segments-id/) --- ### Shield情報バリアのセグメント制限 **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアオブジェクトのセグメント制限のStandard版の表示。 # Shield情報バリアのセグメント制限 Shield情報バリアオブジェクトのセグメント制限のStandard版の表示。 --- ### Shield情報バリアのセグメント制限 (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアのセグメント制限オブジェクトのBase版の表示。 # Shield情報バリアのセグメント制限 (Base) Shield情報バリアのセグメント制限オブジェクトのBase版の表示。 --- ### Shield情報バリアのセグメント制限 (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアのセグメント制限オブジェクトのMini版の表示。 # Shield情報バリアのセグメント制限 (Mini) Shield情報バリアのセグメント制限オブジェクトのMini版の表示。 --- ### Shield情報バリアのセグメント制限のリスト **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアのセグメント制限オブジェクトのリスト。 # Shield情報バリアのセグメント制限のリスト Shield情報バリアのセグメント制限オブジェクトのリスト。 --- ### Shield情報バリアのセグメント制限のリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shield-information-barrier-segment-restrictions/ **Source:** [https://ja.developer.box.com/reference/get-shield-information-barrier-segment-restrictions/](https://ja.developer.box.com/reference/get-shield-information-barrier-segment-restrictions/) --- ### Shield情報バリアのセグメント制限を作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-shield-information-barrier-segment-restrictions/ **Source:** [https://ja.developer.box.com/reference/post-shield-information-barrier-segment-restrictions/](https://ja.developer.box.com/reference/post-shield-information-barrier-segment-restrictions/) --- ### Shield情報バリアのリスト **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアオブジェクトのリスト。 # Shield情報バリアのリスト Shield情報バリアオブジェクトのリスト。 --- ### Shield情報バリアのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shield-information-barriers/ **Source:** [https://ja.developer.box.com/reference/get-shield-information-barriers/](https://ja.developer.box.com/reference/get-shield-information-barriers/) --- ### Shield情報バリアレポート **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアレポートオブジェクトのStandard版の表示。 # Shield情報バリアレポート Shield情報バリアレポートオブジェクトのStandard版の表示。 --- ### Shield情報バリアレポート (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference Shield情報バリアレポートオブジェクトのBase版の表示。 # Shield情報バリアレポート (Base) Shield情報バリアレポートオブジェクトのBase版の表示。 --- ### Shield情報バリアレポートのリスト **Type:** resource | **Category:** api-resource | **Section:** API Reference Shieldバリアレポートのリスト。 # Shield情報バリアレポートのリスト Shieldバリアレポートのリスト。 --- ### Shield情報バリアレポートのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shield-information-barrier-reports/ **Source:** [https://ja.developer.box.com/reference/get-shield-information-barrier-reports/](https://ja.developer.box.com/reference/get-shield-information-barrier-reports/) --- ### Shield情報バリアレポートの詳細 **Type:** resource | **Category:** api-resource | **Section:** API Reference レポートの生成時に、レポートファイルが配置されているフォルダとエラー (ある場合) を示します。 # Shield情報バリアレポートの詳細 レポートの生成時に、レポートファイルが配置されているフォルダとエラー (ある場合) を示します。 --- ### Shield情報バリアレポートを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-shield-information-barrier-reports/ **Source:** [https://ja.developer.box.com/reference/post-shield-information-barrier-reports/](https://ja.developer.box.com/reference/post-shield-information-barrier-reports/) --- ### Shield情報バリアを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-shield-information-barriers/ **Source:** [https://ja.developer.box.com/reference/post-shield-information-barriers/](https://ja.developer.box.com/reference/post-shield-information-barriers/) --- ### Shield情報バリア参照 **Type:** resource | **Category:** api-resource | **Section:** API Reference リクエストおよびレスポンスのShield情報バリア参照。 # Shield情報バリア参照 リクエストおよびレスポンスのShield情報バリア参照。 --- ### Skillsメタデータインスタンス **Type:** resource | **Category:** api-resource | **Section:** API Reference Boxスキルの使用に割り当てられたメタデータ。 # Skillsメタデータインスタンス Boxスキルの使用に割り当てられたメタデータ。 --- ### Slack統合マッピング **Type:** resource | **Category:** api-resource | **Section:** API Reference 統合マッピングオブジェクトのSlack固有のレプリゼンテーション。 # Slack統合マッピング 統合マッピングオブジェクトのSlack固有のレプリゼンテーション。 --- ### Slack統合マッピング (リスト) **Type:** resource | **Category:** api-resource | **Section:** API Reference 統合マッピングオブジェクトのリスト。 # Slack統合マッピング (リスト) 統合マッピングオブジェクトのリスト。 --- ### Slack統合マッピングのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-integration-mappings-slack/ **Source:** [https://ja.developer.box.com/reference/get-integration-mappings-slack/](https://ja.developer.box.com/reference/get-integration-mappings-slack/) --- ### Slack統合マッピングリクエストを作成 **Type:** resource | **Category:** api-resource | **Section:** API Reference Slack統合マッピングオブジェクトを作成するリクエスト。 # Slack統合マッピングリクエストを作成 Slack統合マッピングオブジェクトを作成するリクエスト。 --- ### Slack統合マッピングを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-integration-mappings-slack/ **Source:** [https://ja.developer.box.com/reference/post-integration-mappings-slack/](https://ja.developer.box.com/reference/post-integration-mappings-slack/) --- ### Slack統合マッピングを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-integration-mappings-slack-id/ **Source:** [https://ja.developer.box.com/reference/delete-integration-mappings-slack-id/](https://ja.developer.box.com/reference/delete-integration-mappings-slack-id/) --- ### Slack統合マッピングを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-integration-mappings-slack-id/ **Source:** [https://ja.developer.box.com/reference/put-integration-mappings-slack-id/](https://ja.developer.box.com/reference/put-integration-mappings-slack-id/) --- ### Task **Type:** resource | **Category:** api-resource | **Section:** API Reference タスクを使用すると、Boxでファイル中心のワークフローを実現できます。ユーザーはファイルに関連するタスクを作成し、タスクを完了するために他のユーザーに割り当てることができます。 # Task タスクを使用すると、Boxでファイル中心のワークフローを実現できます。ユーザーはファイルに関連するタスクを作成し、タスクを完了するために他のユーザーに割り当てることができます。 --- ### Tasks **Type:** resource | **Category:** api-resource | **Section:** API Reference タスクのリスト。 # Tasks タスクのリスト。 --- ### Teams統合マッピング **Type:** resource | **Category:** api-resource | **Section:** API Reference 統合マッピングオブジェクトのMicrosoft Teams固有のレプリゼンテーション。 # Teams統合マッピング 統合マッピングオブジェクトのMicrosoft Teams固有のレプリゼンテーション。 --- ### Teams統合マッピング (リスト) **Type:** resource | **Category:** api-resource | **Section:** API Reference 統合マッピングオブジェクトのリスト。 # Teams統合マッピング (リスト) 統合マッピングオブジェクトのリスト。 --- ### Teams統合マッピングのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-integration-mappings-teams/ **Source:** [https://ja.developer.box.com/reference/get-integration-mappings-teams/](https://ja.developer.box.com/reference/get-integration-mappings-teams/) --- ### Teams統合マッピングリクエストを作成 **Type:** resource | **Category:** api-resource | **Section:** API Reference Teams統合マッピングオブジェクトを作成するリクエスト。 # Teams統合マッピングリクエストを作成 Teams統合マッピングオブジェクトを作成するリクエスト。 --- ### Teams統合マッピングを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-integration-mappings-teams/ **Source:** [https://ja.developer.box.com/reference/post-integration-mappings-teams/](https://ja.developer.box.com/reference/post-integration-mappings-teams/) --- ### Teams統合マッピングを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-integration-mappings-teams-id/ **Source:** [https://ja.developer.box.com/reference/delete-integration-mappings-teams-id/](https://ja.developer.box.com/reference/delete-integration-mappings-teams-id/) --- ### Teams統合マッピングを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-integration-mappings-teams-id/ **Source:** [https://ja.developer.box.com/reference/put-integration-mappings-teams-id/](https://ja.developer.box.com/reference/put-integration-mappings-teams-id/) --- ### Upload part **Type:** resource | **Category:** api-resource | **Section:** API Reference アップロードセッションチャンクのレプリゼンテーション。 # Upload part アップロードセッションチャンクのレプリゼンテーション。 --- ### Upload part **Type:** resource | **Category:** api-resource | **Section:** API Reference アップロードセッションのアップロード済みチャンクのリスト。 # Upload part アップロードセッションのアップロード済みチャンクのリスト。 --- ### User **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のユーザーAPIエンドポイントからデフォルトで返されるユーザーのStandard版の表示。 # User 任意のユーザーAPIエンドポイントからデフォルトで返されるユーザーのStandard版の表示。 --- ### User EventおよびEnterprise Eventのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-events/ **Source:** [https://ja.developer.box.com/reference/get-events/](https://ja.developer.box.com/reference/get-events/) --- ### Users **Type:** resource | **Category:** api-resource | **Section:** API Reference ユーザーのリスト。 # Users ユーザーのリスト。 --- ### Watermark **Type:** resource | **Category:** api-resource | **Section:** API Reference 電子すかしとは、埋め込みファイルのプレビューに適用される半透明のオーバーレイです。電子すかしには、ビューアーのメールアドレスまたはユーザーIDと、ファイルのコンテンツのアクセス日時が表示されます。 # Watermark 電子すかしとは、埋め込みファイルのプレビューに適用される半透明のオーバーレイです。電子すかしには、ビューアーのメールアドレスまたはユーザーIDと、ファイルのコンテンツのアクセス日時が表示されます。 --- ### Webhook **Type:** resource | **Category:** api-resource | **Section:** API Reference 設定されたWebhookを表します。 # Webhook 設定されたWebhookを表します。 --- ### Webhook (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference 設定されたWebhookを表します。 # Webhook (Mini) 設定されたWebhookを表します。 --- ### Webhooks **Type:** resource | **Category:** api-resource | **Section:** API Reference Webhookのリスト。 # Webhooks Webhookのリスト。 --- ### Webhookを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-webhooks/ **Source:** [https://ja.developer.box.com/reference/post-webhooks/](https://ja.developer.box.com/reference/post-webhooks/) --- ### Webhookを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-webhooks-id/ **Source:** [https://ja.developer.box.com/reference/delete-webhooks-id/](https://ja.developer.box.com/reference/delete-webhooks-id/) --- ### Webhookを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-webhooks-id/ **Source:** [https://ja.developer.box.com/reference/get-webhooks-id/](https://ja.developer.box.com/reference/get-webhooks-id/) --- ### Webhookを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-webhooks-id/ **Source:** [https://ja.developer.box.com/reference/put-webhooks-id/](https://ja.developer.box.com/reference/put-webhooks-id/) --- ### Workflow **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Relayワークフローは、名前が付けられたフローのコレクションを表すオブジェクトです。 アプリケーションは、このリソースを使用するために、開発者コンソールでの`Manage Box Relay`アプリケーションスコープの使用が承認されている必要があります。 # Workflow Box Relayワークフローは、名前が付けられたフローのコレクションを表すオブジェクトです。 アプリケーションは、このリソースを使用するために、開発者コンソールでの`Manage Box Relay`アプリケーションスコープの使用が承認されている必要があります。 --- ### zipアーカイブをダウンロード **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-zip-downloads-id-content/ **Source:** [https://ja.developer.box.com/reference/get-zip-downloads-id-content/](https://ja.developer.box.com/reference/get-zip-downloads-id-content/) --- ### zipダウンロード **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルやフォルダのリストの`zip`アーカイブを作成するリクエストが成功したことを表します。 # zipダウンロード ファイルやフォルダのリストの`zip`アーカイブを作成するリクエストが成功したことを表します。 --- ### zipダウンロードのステータス **Type:** resource | **Category:** api-resource | **Section:** API Reference ダウンロード中の`zip`アーカイブのステータス。 # zipダウンロードのステータス ダウンロード中の`zip`アーカイブのステータス。 --- ### zipダウンロードのステータスを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-zip-downloads-id-status/ **Source:** [https://ja.developer.box.com/reference/get-zip-downloads-id-status/](https://ja.developer.box.com/reference/get-zip-downloads-id-status/) --- ### zipダウンロードを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-zip-downloads/ **Source:** [https://ja.developer.box.com/reference/post-zip-downloads/](https://ja.developer.box.com/reference/post-zip-downloads/) --- ### アーカイブのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-archives/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-archives/](https://ja.developer.box.com/reference/v2025.0/get-archives/) --- ### アーカイブを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/post-archives/ **Source:** [https://ja.developer.box.com/reference/v2025.0/post-archives/](https://ja.developer.box.com/reference/v2025.0/post-archives/) --- ### アーカイブを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/delete-archives-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/delete-archives-id/](https://ja.developer.box.com/reference/v2025.0/delete-archives-id/) --- ### アーカイブを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/put-archives-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/put-archives-id/](https://ja.developer.box.com/reference/v2025.0/put-archives-id/) --- ### アクセストークン **Type:** resource | **Category:** api-resource | **Section:** API Reference 認証済みのAPIコールを行うために使用できるトークン。 # アクセストークン 認証済みのAPIコールを行うために使用できるトークン。 --- ### アクセストークンをリクエスト **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-oauth2-token/ **Source:** [https://ja.developer.box.com/reference/post-oauth2-token/](https://ja.developer.box.com/reference/post-oauth2-token/) --- ### アクセストークンを取り消し **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-oauth2-revoke/ **Source:** [https://ja.developer.box.com/reference/post-oauth2-revoke/](https://ja.developer.box.com/reference/post-oauth2-revoke/) --- ### アクセストークンを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-oauth2-token--refresh/ **Source:** [https://ja.developer.box.com/reference/post-oauth2-token--refresh/](https://ja.developer.box.com/reference/post-oauth2-token--refresh/) --- ### アップロードURL **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルのアップロードセッションの詳細。 # アップロードURL ファイルのアップロードセッションの詳細。 --- ### アップロードされたパーツ **Type:** resource | **Category:** api-resource | **Section:** API Reference いくつかのエンドポイントで返されるように、アップロードセッションの一部としてアップロードされたファイルのチャンク。 # アップロードされたパーツ いくつかのエンドポイントで返されるように、アップロードセッションの一部としてアップロードされたファイルのチャンク。 --- ### アップロードセッション **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルをアップロードするチャンクのアップロードセッション。 # アップロードセッション ファイルをアップロードするチャンクのアップロードセッション。 --- ### アップロードセッションをコミット **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-upload-sessions-id-commit/ **Source:** [https://ja.developer.box.com/reference/post-files-upload-sessions-id-commit/](https://ja.developer.box.com/reference/post-files-upload-sessions-id-commit/) --- ### アップロードセッションを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-upload-sessions/ **Source:** [https://ja.developer.box.com/reference/post-files-upload-sessions/](https://ja.developer.box.com/reference/post-files-upload-sessions/) --- ### アップロードセッションを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-files-upload-sessions-id/ **Source:** [https://ja.developer.box.com/reference/delete-files-upload-sessions-id/](https://ja.developer.box.com/reference/delete-files-upload-sessions-id/) --- ### アップロードセッションを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-upload-sessions-id/ **Source:** [https://ja.developer.box.com/reference/get-files-upload-sessions-id/](https://ja.developer.box.com/reference/get-files-upload-sessions-id/) --- ### アップロード前の事前チェック **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/options-files-content/ **Source:** [https://ja.developer.box.com/reference/options-files-content/](https://ja.developer.box.com/reference/options-files-content/) --- ### アプリ項目 **Type:** resource | **Category:** api-resource | **Section:** API Reference アプリ項目は、アプリケーションが所有するコンテンツオブジェクトを表します。これは、さまざまなパスからファイルやフォルダをまとめてグループ化でき、そのセットは、コラボレーションを利用して共有できます。 # アプリ項目 アプリ項目は、アプリケーションが所有するコンテンツオブジェクトを表します。これは、さまざまなパスからファイルやフォルダをまとめてグループ化でき、そのセットは、コラボレーションを利用して共有できます。 --- ### アプリ項目の関連付け **Type:** resource | **Category:** api-resource | **Section:** API Reference アプリ項目の関連付けは、ファイルやフォルダとアプリ項目の関連付けを表します。フォルダとアプリ項目の関連付けは、そのフォルダのすべての子孫にカスケードされます。 # アプリ項目の関連付け アプリ項目の関連付けは、ファイルやフォルダとアプリ項目の関連付けを表します。フォルダとアプリ項目の関連付けは、そのフォルダのすべての子孫にカスケードされます。 --- ### アプリ項目の関連付け **Type:** resource | **Category:** api-resource | **Section:** API Reference アプリ項目の関連付けのリスト。 # アプリ項目の関連付け アプリ項目の関連付けのリスト。 --- ### イベントソース **Type:** resource | **Category:** api-resource | **Section:** API Reference イベントストリーム内のイベントを開始させるソースファイルまたはフォルダ。 # イベントソース イベントストリーム内のイベントを開始させるソースファイルまたはフォルダ。 --- ### イベントのLong pollingエンドポイントを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/options-events/ **Source:** [https://ja.developer.box.com/reference/options-events/](https://ja.developer.box.com/reference/options-events/) --- ### インスタンスIDでメタデータテンプレートを検索 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-templates/ **Source:** [https://ja.developer.box.com/reference/get-metadata-templates/](https://ja.developer.box.com/reference/get-metadata-templates/) --- ### ウェブリンク **Type:** resource | **Category:** api-resource | **Section:** API Reference ウェブリンクとは、URLを指すオブジェクトです。これらのオブジェクトはBoxウェブアプリケーション内ではブックマークとも呼ばれます。 ウェブリンクオブジェクトはファイルオブジェクトと同様に扱われ、通常のファイルに適用されるアクションの大部分もサポートしています。 # ウェブリンク ウェブリンクとは、URLを指すオブジェクトです。これらのオブジェクトはBoxウェブアプリケーション内ではブックマークとも呼ばれます。 ウェブリンクオブジェクトはファイルオブジェクトと同様に扱われ、通常のファイルに適用されるアクションの大部分もサポートしています。 --- ### ウェブリンク (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference ウェブリンクとは、URLを指すオブジェクトです。これらのオブジェクトはBoxウェブアプリケーション内ではブックマークとも呼ばれます。 ウェブリンクオブジェクトはファイルオブジェクトと同様に扱われ、通常のファイルに適用されるアクションの大部分もサポートしています。 # ウェブリンク (Base) ウェブリンクとは、URLを指すオブジェクトです。これらのオブジェクトはBoxウェブアプリケーション内ではブックマークとも呼ばれます。 ウェブリンクオブジェクトはファイルオブジェクトと同様に扱われ、通常のファイルに適用されるアクションの大部分もサポートしています。 --- ### ウェブリンク (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference ウェブリンクとは、URLを指すオブジェクトです。これらのオブジェクトはBoxウェブアプリケーション内ではブックマークとも呼ばれます。 ウェブリンクオブジェクトはファイルオブジェクトと同様に扱われ、通常のファイルに適用されるアクションの大部分もサポートしています。 # ウェブリンク (Mini) ウェブリンクとは、URLを指すオブジェクトです。これらのオブジェクトはBoxウェブアプリケーション内ではブックマークとも呼ばれます。 ウェブリンクオブジェクトはファイルオブジェクトと同様に扱われ、通常のファイルに適用されるアクションの大部分もサポートしています。 --- ### ウェブリンクから共有リンクを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-web-links-id--remove-shared-link/ **Source:** [https://ja.developer.box.com/reference/put-web-links-id--remove-shared-link/](https://ja.developer.box.com/reference/put-web-links-id--remove-shared-link/) --- ### ウェブリンクに共有リンクを追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-web-links-id--add-shared-link/ **Source:** [https://ja.developer.box.com/reference/put-web-links-id--add-shared-link/](https://ja.developer.box.com/reference/put-web-links-id--add-shared-link/) --- ### ウェブリンクの共有リンクを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-web-links-id--get-shared-link/ **Source:** [https://ja.developer.box.com/reference/get-web-links-id--get-shared-link/](https://ja.developer.box.com/reference/get-web-links-id--get-shared-link/) --- ### ウェブリンクの共有リンクを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-web-links-id--update-shared-link/ **Source:** [https://ja.developer.box.com/reference/put-web-links-id--update-shared-link/](https://ja.developer.box.com/reference/put-web-links-id--update-shared-link/) --- ### ウェブリンクを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-web-links/ **Source:** [https://ja.developer.box.com/reference/post-web-links/](https://ja.developer.box.com/reference/post-web-links/) --- ### ウェブリンクを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-web-links-id/ **Source:** [https://ja.developer.box.com/reference/delete-web-links-id/](https://ja.developer.box.com/reference/delete-web-links-id/) --- ### ウェブリンクを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-web-links-id/ **Source:** [https://ja.developer.box.com/reference/get-web-links-id/](https://ja.developer.box.com/reference/get-web-links-id/) --- ### ウェブリンクを完全に削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-web-links-id-trash/ **Source:** [https://ja.developer.box.com/reference/delete-web-links-id-trash/](https://ja.developer.box.com/reference/delete-web-links-id-trash/) --- ### ウェブリンクを復元 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-web-links-id/ **Source:** [https://ja.developer.box.com/reference/post-web-links-id/](https://ja.developer.box.com/reference/post-web-links-id/) --- ### ウェブリンクを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-web-links-id/ **Source:** [https://ja.developer.box.com/reference/put-web-links-id/](https://ja.developer.box.com/reference/put-web-links-id/) --- ### エージェントIDを指定してAIエージェントを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-ai-agents-id/ **Source:** [https://ja.developer.box.com/reference/get-ai-agents-id/](https://ja.developer.box.com/reference/get-ai-agents-id/) --- ### キーワードスキルカード **Type:** resource | **Category:** api-resource | **Section:** API Reference 一連のキーワードを含むスキルカード。 # キーワードスキルカード 一連のキーワードを含むスキルカード。 --- ### クライアントエラー **Type:** resource | **Category:** api-resource | **Section:** API Reference 一般的なエラー。 # クライアントエラー 一般的なエラー。 --- ### クライアントエラー **Type:** resource | **Category:** api-resource | **Section:** API Reference 一般的なエラー。 # クライアントエラー 一般的なエラー。 --- ### グループ (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference グループのBase版の表示。 # グループ (Base) グループのBase版の表示。 --- ### グループ (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference グループは複数のユーザーを含み、グループを使用するとコラボレーションなどの一部の操作をユーザーの代わりに実行できます。 # グループ (Full) グループは複数のユーザーを含み、グループを使用するとコラボレーションなどの一部の操作をユーザーの代わりに実行できます。 --- ### グループ (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference グループのIDや名前を含むグループのMini版の表示。 # グループ (Mini) グループのIDや名前を含むグループのMini版の表示。 --- ### グループコラボレーションのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-groups-id-collaborations/ **Source:** [https://ja.developer.box.com/reference/get-groups-id-collaborations/](https://ja.developer.box.com/reference/get-groups-id-collaborations/) --- ### グループのメンバーのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-groups-id-memberships/ **Source:** [https://ja.developer.box.com/reference/get-groups-id-memberships/](https://ja.developer.box.com/reference/get-groups-id-memberships/) --- ### グループメンバーシップ **Type:** resource | **Category:** api-resource | **Section:** API Reference メンバーシップは、ユーザーがグループに属していることを示すために使用されます。 # グループメンバーシップ メンバーシップは、ユーザーがグループに属していることを示すために使用されます。 --- ### グループメンバーシップ **Type:** resource | **Category:** api-resource | **Section:** API Reference グループメンバーシップのリスト。 # グループメンバーシップ グループメンバーシップのリスト。 --- ### グループメンバーシップを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-group-memberships-id/ **Source:** [https://ja.developer.box.com/reference/get-group-memberships-id/](https://ja.developer.box.com/reference/get-group-memberships-id/) --- ### グループメンバーシップを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-group-memberships-id/ **Source:** [https://ja.developer.box.com/reference/put-group-memberships-id/](https://ja.developer.box.com/reference/put-group-memberships-id/) --- ### グループを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-groups/ **Source:** [https://ja.developer.box.com/reference/post-groups/](https://ja.developer.box.com/reference/post-groups/) --- ### グループを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-groups-id/ **Source:** [https://ja.developer.box.com/reference/delete-groups-id/](https://ja.developer.box.com/reference/delete-groups-id/) --- ### グループを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-groups-id/ **Source:** [https://ja.developer.box.com/reference/get-groups-id/](https://ja.developer.box.com/reference/get-groups-id/) --- ### グループを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-groups-id/ **Source:** [https://ja.developer.box.com/reference/put-groups-id/](https://ja.developer.box.com/reference/put-groups-id/) --- ### ごみ箱に移動されたウェブリンクを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-web-links-id-trash/ **Source:** [https://ja.developer.box.com/reference/get-web-links-id-trash/](https://ja.developer.box.com/reference/get-web-links-id-trash/) --- ### ごみ箱内のウェブリンク **Type:** resource | **Category:** api-resource | **Section:** API Reference ごみ箱内のウェブリンクを表します。 # ごみ箱内のウェブリンク ごみ箱内のウェブリンクを表します。 --- ### ごみ箱内のウェブリンク (復元済み) **Type:** resource | **Category:** api-resource | **Section:** API Reference ごみ箱から復元されたウェブリンクを表します。 # ごみ箱内のウェブリンク (復元済み) ごみ箱から復元されたウェブリンクを表します。 --- ### ごみ箱内のファイル **Type:** resource | **Category:** api-resource | **Section:** API Reference ごみ箱内のファイルを表します。 # ごみ箱内のファイル ごみ箱内のファイルを表します。 --- ### ごみ箱内のファイル (復元済み) **Type:** resource | **Category:** api-resource | **Section:** API Reference ごみ箱から復元されたファイルを表します。 # ごみ箱内のファイル (復元済み) ごみ箱から復元されたファイルを表します。 --- ### ごみ箱内のファイルを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-trash/ **Source:** [https://ja.developer.box.com/reference/get-files-id-trash/](https://ja.developer.box.com/reference/get-files-id-trash/) --- ### ごみ箱内のフォルダ **Type:** resource | **Category:** api-resource | **Section:** API Reference ごみ箱内のフォルダを表します。 # ごみ箱内のフォルダ ごみ箱内のフォルダを表します。 --- ### ごみ箱内のフォルダ (復元済み) **Type:** resource | **Category:** api-resource | **Section:** API Reference ごみ箱から復元されたフォルダを表します。 # ごみ箱内のフォルダ (復元済み) ごみ箱から復元されたフォルダを表します。 --- ### ごみ箱内のフォルダを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-id-trash/ **Source:** [https://ja.developer.box.com/reference/get-folders-id-trash/](https://ja.developer.box.com/reference/get-folders-id-trash/) --- ### ごみ箱内の項目のリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-trash-items/ **Source:** [https://ja.developer.box.com/reference/get-folders-trash-items/](https://ja.developer.box.com/reference/get-folders-trash-items/) --- ### コメント (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference コメントのBase版の表示。 # コメント (Base) コメントのBase版の表示。 --- ### コメント (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference コメントとは、ファイルに関して作成されるメッセージです。コメントは単独で作成することも、他のコメントへの返答として作成することもできます。 # コメント (Full) コメントとは、ファイルに関して作成されるメッセージです。コメントは単独で作成することも、他のコメントへの返答として作成することもできます。 --- ### コメントを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-comments/ **Source:** [https://ja.developer.box.com/reference/post-comments/](https://ja.developer.box.com/reference/post-comments/) --- ### コメントを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-comments-id/ **Source:** [https://ja.developer.box.com/reference/delete-comments-id/](https://ja.developer.box.com/reference/delete-comments-id/) --- ### コメントを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-comments-id/ **Source:** [https://ja.developer.box.com/reference/get-comments-id/](https://ja.developer.box.com/reference/get-comments-id/) --- ### コメントを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-comments-id/ **Source:** [https://ja.developer.box.com/reference/put-comments-id/](https://ja.developer.box.com/reference/put-comments-id/) --- ### コラボレーションIDを指定してBox Hubコラボレーションを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-hub-collaborations-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-hub-collaborations-id/](https://ja.developer.box.com/reference/v2025.0/get-hub-collaborations-id/) --- ### コラボレーションドメインの制限からのユーザー除外を作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-collaboration-whitelist-exempt-targets/ **Source:** [https://ja.developer.box.com/reference/post-collaboration-whitelist-exempt-targets/](https://ja.developer.box.com/reference/post-collaboration-whitelist-exempt-targets/) --- ### コラボレーションドメインの制限から除外するユーザーのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-collaboration-whitelist-exempt-targets/ **Source:** [https://ja.developer.box.com/reference/get-collaboration-whitelist-exempt-targets/](https://ja.developer.box.com/reference/get-collaboration-whitelist-exempt-targets/) --- ### コラボレーションドメインの制限から除外するユーザーを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-collaboration-whitelist-exempt-targets-id/ **Source:** [https://ja.developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id/](https://ja.developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id/) --- ### コラボレーションを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-collaborations/ **Source:** [https://ja.developer.box.com/reference/post-collaborations/](https://ja.developer.box.com/reference/post-collaborations/) --- ### コラボレーションを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-collaborations-id/ **Source:** [https://ja.developer.box.com/reference/delete-collaborations-id/](https://ja.developer.box.com/reference/delete-collaborations-id/) --- ### コラボレーションを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-collaborations-id/ **Source:** [https://ja.developer.box.com/reference/get-collaborations-id/](https://ja.developer.box.com/reference/get-collaborations-id/) --- ### コラボレーションを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-collaborations-id/ **Source:** [https://ja.developer.box.com/reference/put-collaborations-id/](https://ja.developer.box.com/reference/put-collaborations-id/) --- ### コレクション項目のリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-collections-id-items/ **Source:** [https://ja.developer.box.com/reference/get-collections-id-items/](https://ja.developer.box.com/reference/get-collections-id-items/) --- ### コンテンツを検索 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-search/ **Source:** [https://ja.developer.box.com/reference/get-search/](https://ja.developer.box.com/reference/get-search/) --- ### サービス利用規約 **Type:** resource | **Category:** api-resource | **Section:** API Reference 1つのサービス利用規約に該当するとみなされるルートレベルのレコード。 # サービス利用規約 1つのサービス利用規約に該当するとみなされるルートレベルのレコード。 --- ### サービス利用規約 **Type:** resource | **Category:** api-resource | **Section:** API Reference サービス利用規約のリスト。 # サービス利用規約 サービス利用規約のリスト。 --- ### サービス利用規約 (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference 1つのサービス利用規約に該当するとみなされるルートレベルのレコード。 # サービス利用規約 (Base) 1つのサービス利用規約に該当するとみなされるルートレベルのレコード。 --- ### サービス利用規約のユーザーステータス **Type:** resource | **Category:** api-resource | **Section:** API Reference サービス利用規約とユーザーの関連付け。 # サービス利用規約のユーザーステータス サービス利用規約とユーザーの関連付け。 --- ### サービス利用規約のユーザーステータス **Type:** resource | **Category:** api-resource | **Section:** API Reference サービス利用規約のユーザーステータスのリスト。 # サービス利用規約のユーザーステータス サービス利用規約のユーザーステータスのリスト。 --- ### サービス利用規約のユーザーステータスのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-terms-of-service-user-statuses/ **Source:** [https://ja.developer.box.com/reference/get-terms-of-service-user-statuses/](https://ja.developer.box.com/reference/get-terms-of-service-user-statuses/) --- ### サービス利用規約のリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-terms-of-services/ **Source:** [https://ja.developer.box.com/reference/get-terms-of-services/](https://ja.developer.box.com/reference/get-terms-of-services/) --- ### サービス利用規約を作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-terms-of-services/ **Source:** [https://ja.developer.box.com/reference/post-terms-of-services/](https://ja.developer.box.com/reference/post-terms-of-services/) --- ### サービス利用規約を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-terms-of-services-id/ **Source:** [https://ja.developer.box.com/reference/get-terms-of-services-id/](https://ja.developer.box.com/reference/get-terms-of-services-id/) --- ### サービス利用規約を更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-terms-of-services-id/ **Source:** [https://ja.developer.box.com/reference/put-terms-of-services-id/](https://ja.developer.box.com/reference/put-terms-of-services-id/) --- ### ステータススキルカード **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータサイドバーにステータスメッセージを配置するBox Skillメタデータカード。 # ステータススキルカード メタデータサイドバーにステータスメッセージを配置するBox Skillメタデータカード。 --- ### ストレージポリシー **Type:** resource | **Category:** api-resource | **Section:** API Reference ストレージポリシーのリスト。 # ストレージポリシー ストレージポリシーのリスト。 --- ### ストレージポリシー **Type:** resource | **Category:** api-resource | **Section:** API Reference ストレージゾーンを示すストレージポリシーオブジェクト。 # ストレージポリシー ストレージゾーンを示すストレージポリシーオブジェクト。 --- ### ストレージポリシー (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference ストレージポリシーオブジェクトのMini版の説明。 # ストレージポリシー (Mini) ストレージポリシーオブジェクトのMini版の説明。 --- ### ストレージポリシーのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-storage-policies/ **Source:** [https://ja.developer.box.com/reference/get-storage-policies/](https://ja.developer.box.com/reference/get-storage-policies/) --- ### ストレージポリシーの割り当てを解除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-storage-policy-assignments-id/ **Source:** [https://ja.developer.box.com/reference/delete-storage-policy-assignments-id/](https://ja.developer.box.com/reference/delete-storage-policy-assignments-id/) --- ### ストレージポリシーを割り当て **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-storage-policy-assignments/ **Source:** [https://ja.developer.box.com/reference/post-storage-policy-assignments/](https://ja.developer.box.com/reference/post-storage-policy-assignments/) --- ### ストレージポリシーを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-storage-policies-id/ **Source:** [https://ja.developer.box.com/reference/get-storage-policies-id/](https://ja.developer.box.com/reference/get-storage-policies-id/) --- ### ストレージポリシー割り当て **Type:** resource | **Category:** api-resource | **Section:** API Reference ユーザーまたは企業へのストレージポリシーの割り当て。 # ストレージポリシー割り当て ユーザーまたは企業へのストレージポリシーの割り当て。 --- ### ストレージポリシー割り当て **Type:** resource | **Category:** api-resource | **Section:** API Reference ストレージポリシー割り当てのリスト。 # ストレージポリシー割り当て ストレージポリシー割り当てのリスト。 --- ### ストレージポリシー割り当てのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-storage-policy-assignments/ **Source:** [https://ja.developer.box.com/reference/get-storage-policy-assignments/](https://ja.developer.box.com/reference/get-storage-policy-assignments/) --- ### ストレージポリシー割り当てを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-storage-policy-assignments-id/ **Source:** [https://ja.developer.box.com/reference/get-storage-policy-assignments-id/](https://ja.developer.box.com/reference/get-storage-policy-assignments-id/) --- ### ストレージポリシー割り当てを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-storage-policy-assignments-id/ **Source:** [https://ja.developer.box.com/reference/put-storage-policy-assignments-id/](https://ja.developer.box.com/reference/put-storage-policy-assignments-id/) --- ### すべてのBox Doc Genジョブのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-docgen-jobs/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-docgen-jobs/](https://ja.developer.box.com/reference/v2025.0/get-docgen-jobs/) --- ### すべてのBox Hubのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-hubs/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-hubs/](https://ja.developer.box.com/reference/v2025.0/get-hubs/) --- ### すべてのWebhookのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-webhooks/ **Source:** [https://ja.developer.box.com/reference/get-webhooks/](https://ja.developer.box.com/reference/get-webhooks/) --- ### すべてのグローバルメタデータテンプレートのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-templates-global/ **Source:** [https://ja.developer.box.com/reference/get-metadata-templates-global/](https://ja.developer.box.com/reference/get-metadata-templates-global/) --- ### すべてのコレクションのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-collections/ **Source:** [https://ja.developer.box.com/reference/get-collections/](https://ja.developer.box.com/reference/get-collections/) --- ### すべてのファイルバージョンのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-versions/ **Source:** [https://ja.developer.box.com/reference/get-files-id-versions/](https://ja.developer.box.com/reference/get-files-id-versions/) --- ### すべてのリーガルホールドポリシーのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-legal-hold-policies/ **Source:** [https://ja.developer.box.com/reference/get-legal-hold-policies/](https://ja.developer.box.com/reference/get-legal-hold-policies/) --- ### すべての分類のリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/ **Source:** [https://ja.developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/](https://ja.developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/) --- ### セッション終了メッセージ **Type:** resource | **Category:** api-resource | **Section:** API Reference 終了ジョブステータスについて通知するメッセージ。 # セッション終了メッセージ 終了ジョブステータスについて通知するメッセージ。 --- ### タイプとIDが指定されたエンティティ **Type:** resource | **Category:** api-resource | **Section:** API Reference タイプとIDが指定されたエンティティ。 # タイプとIDが指定されたエンティティ タイプとIDが指定されたエンティティ。 --- ### タイムラインスキルカード **Type:** resource | **Category:** api-resource | **Section:** API Reference タイムラインに画像のリストを配置するBox Skillメタデータカード。 # タイムラインスキルカード タイムラインに画像のリストを配置するBox Skillメタデータカード。 --- ### タスクを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-tasks/ **Source:** [https://ja.developer.box.com/reference/post-tasks/](https://ja.developer.box.com/reference/post-tasks/) --- ### タスクを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-tasks-id/ **Source:** [https://ja.developer.box.com/reference/delete-tasks-id/](https://ja.developer.box.com/reference/delete-tasks-id/) --- ### タスクを割り当て **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-task-assignments/ **Source:** [https://ja.developer.box.com/reference/post-task-assignments/](https://ja.developer.box.com/reference/post-task-assignments/) --- ### タスクを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-tasks-id/ **Source:** [https://ja.developer.box.com/reference/get-tasks-id/](https://ja.developer.box.com/reference/get-tasks-id/) --- ### タスクを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-tasks-id/ **Source:** [https://ja.developer.box.com/reference/put-tasks-id/](https://ja.developer.box.com/reference/put-tasks-id/) --- ### タスク割り当て **Type:** resource | **Category:** api-resource | **Section:** API Reference タスク割り当てでは、完了するためにどのタスクをどのユーザーに割り当てるかを定義します。 # タスク割り当て タスク割り当てでは、完了するためにどのタスクをどのユーザーに割り当てるかを定義します。 --- ### タスク割り当て **Type:** resource | **Category:** api-resource | **Section:** API Reference タスク割り当てのリスト。 # タスク割り当て タスク割り当てのリスト。 --- ### タスク割り当てのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-tasks-id-assignments/ **Source:** [https://ja.developer.box.com/reference/get-tasks-id-assignments/](https://ja.developer.box.com/reference/get-tasks-id-assignments/) --- ### タスク割り当てを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-task-assignments-id/ **Source:** [https://ja.developer.box.com/reference/get-task-assignments-id/](https://ja.developer.box.com/reference/get-task-assignments-id/) --- ### タスク割り当てを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-task-assignments-id/ **Source:** [https://ja.developer.box.com/reference/put-task-assignments-id/](https://ja.developer.box.com/reference/put-task-assignments-id/) --- ### タスク割り当てを解除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-task-assignments-id/ **Source:** [https://ja.developer.box.com/reference/delete-task-assignments-id/](https://ja.developer.box.com/reference/delete-task-assignments-id/) --- ### テキストを生成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-ai-text-gen/ **Source:** [https://ja.developer.box.com/reference/post-ai-text-gen/](https://ja.developer.box.com/reference/post-ai-text-gen/) --- ### テキスト生成リクエスト用のAIエージェント **Type:** resource | **Category:** api-resource | **Section:** API Reference テキストの生成に使用されるAIエージェント。 # テキスト生成リクエスト用のAIエージェント テキストの生成に使用されるAIエージェント。 --- ### デバイスピンを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-device-pinners-id/ **Source:** [https://ja.developer.box.com/reference/delete-device-pinners-id/](https://ja.developer.box.com/reference/delete-device-pinners-id/) --- ### デバイスピンを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-device-pinners-id/ **Source:** [https://ja.developer.box.com/reference/get-device-pinners-id/](https://ja.developer.box.com/reference/get-device-pinners-id/) --- ### テンプレートのすべてのBox Doc Genジョブのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-docgen-template-jobs-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-docgen-template-jobs-id/](https://ja.developer.box.com/reference/v2025.0/get-docgen-template-jobs-id/) --- ### テンプレート内のすべてのBox Doc Genテンプレートタグのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-docgen-templates-id-tags/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-docgen-templates-id-tags/](https://ja.developer.box.com/reference/v2025.0/get-docgen-templates-id-tags/) --- ### ドメインの制限から除外されるユーザーのリストからユーザーを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-collaboration-whitelist-exempt-targets-id/ **Source:** [https://ja.developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id/](https://ja.developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id/) --- ### トランスクリプトスキルカード **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルにトランスクリプトを追加するBox Skillメタデータカード。 # トランスクリプトスキルカード ファイルにトランスクリプトを追加するBox Skillメタデータカード。 --- ### パーツのアップロード (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference アップロードセッションチャンクのBase版の表示。 # パーツのアップロード (Mini) アップロードセッションチャンクのBase版の表示。 --- ### パーツのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-upload-sessions-id-parts/ **Source:** [https://ja.developer.box.com/reference/get-files-upload-sessions-id-parts/](https://ja.developer.box.com/reference/get-files-upload-sessions-id-parts/) --- ### バッチIDを指定してBox Doc Genジョブを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-docgen-batch-jobs-id/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id/](https://ja.developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id/) --- ### ファイル (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference 最も基本的なファイルのBase版の表示。`fields`クエリパラメータを使用すると、最小限の数のフィールドが返されます。 # ファイル (Base) 最も基本的なファイルのBase版の表示。`fields`クエリパラメータを使用すると、最小限の数のフィールドが返されます。 --- ### ファイル (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のファイルAPIエンドポイントからデフォルトで返される可能性があるファイルのFull版の表示。 # ファイル (Full) 任意のファイルAPIエンドポイントからデフォルトで返される可能性があるファイルのFull版の表示。 --- ### ファイル (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference 他のリソースの下にネストされたときに使用されるファイルのMini版の表示。 # ファイル (Mini) 他のリソースの下にネストされたときに使用されるファイルのMini版の表示。 --- ### ファイル (競合) **Type:** resource | **Category:** api-resource | **Section:** API Reference 以前出力されていたファイルの表示。 # ファイル (競合) 以前出力されていたファイルの表示。 --- ### ファイルからBox Skillカードを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-files-id-metadata-global-boxSkillsCards/ **Source:** [https://ja.developer.box.com/reference/delete-files-id-metadata-global-boxSkillsCards/](https://ja.developer.box.com/reference/delete-files-id-metadata-global-boxSkillsCards/) --- ### ファイルからメタデータインスタンスを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-files-id-metadata-id-id/ **Source:** [https://ja.developer.box.com/reference/delete-files-id-metadata-id-id/](https://ja.developer.box.com/reference/delete-files-id-metadata-id-id/) --- ### ファイルから共有リンクを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-files-id--remove-shared-link/ **Source:** [https://ja.developer.box.com/reference/put-files-id--remove-shared-link/](https://ja.developer.box.com/reference/put-files-id--remove-shared-link/) --- ### ファイルから分類を削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/ **Source:** [https://ja.developer.box.com/reference/delete-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/](https://ja.developer.box.com/reference/delete-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/) --- ### ファイルから電子すかしを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-files-id-watermark/ **Source:** [https://ja.developer.box.com/reference/delete-files-id-watermark/](https://ja.developer.box.com/reference/delete-files-id-watermark/) --- ### ファイルサムネイルを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-thumbnail-id/ **Source:** [https://ja.developer.box.com/reference/get-files-id-thumbnail-id/](https://ja.developer.box.com/reference/get-files-id-thumbnail-id/) --- ### ファイルにBox Skillカードを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-id-metadata-global-boxSkillsCards/ **Source:** [https://ja.developer.box.com/reference/post-files-id-metadata-global-boxSkillsCards/](https://ja.developer.box.com/reference/post-files-id-metadata-global-boxSkillsCards/) --- ### ファイルにメタデータインスタンスを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-id-metadata-id-id/ **Source:** [https://ja.developer.box.com/reference/post-files-id-metadata-id-id/](https://ja.developer.box.com/reference/post-files-id-metadata-id-id/) --- ### ファイルに共有リンクを追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-files-id--add-shared-link/ **Source:** [https://ja.developer.box.com/reference/put-files-id--add-shared-link/](https://ja.developer.box.com/reference/put-files-id--add-shared-link/) --- ### ファイルに分類を追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/ **Source:** [https://ja.developer.box.com/reference/post-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/](https://ja.developer.box.com/reference/post-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/) --- ### ファイルに対するタスクのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-tasks/ **Source:** [https://ja.developer.box.com/reference/get-files-id-tasks/](https://ja.developer.box.com/reference/get-files-id-tasks/) --- ### ファイルに電子すかしを適用 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-files-id-watermark/ **Source:** [https://ja.developer.box.com/reference/put-files-id-watermark/](https://ja.developer.box.com/reference/put-files-id-watermark/) --- ### ファイルのBox Skillカードのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-metadata-global-boxSkillsCards/ **Source:** [https://ja.developer.box.com/reference/get-files-id-metadata-global-boxSkillsCards/](https://ja.developer.box.com/reference/get-files-id-metadata-global-boxSkillsCards/) --- ### ファイルのBox Skillカードを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-files-id-metadata-global-boxSkillsCards/ **Source:** [https://ja.developer.box.com/reference/put-files-id-metadata-global-boxSkillsCards/](https://ja.developer.box.com/reference/put-files-id-metadata-global-boxSkillsCards/) --- ### ファイルのアプリ項目の関連付けのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-app-item-associations/ **Source:** [https://ja.developer.box.com/reference/get-files-id-app-item-associations/](https://ja.developer.box.com/reference/get-files-id-app-item-associations/) --- ### ファイルのコメントのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-comments/ **Source:** [https://ja.developer.box.com/reference/get-files-id-comments/](https://ja.developer.box.com/reference/get-files-id-comments/) --- ### ファイルのコラボレーションのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-collaborations/ **Source:** [https://ja.developer.box.com/reference/get-files-id-collaborations/](https://ja.developer.box.com/reference/get-files-id-collaborations/) --- ### ファイルのすべてのBox Skillカードを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-skill-invocations-id/ **Source:** [https://ja.developer.box.com/reference/put-skill-invocations-id/](https://ja.developer.box.com/reference/put-skill-invocations-id/) --- ### ファイルのメタデータインスタンスのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-metadata/ **Source:** [https://ja.developer.box.com/reference/get-files-id-metadata/](https://ja.developer.box.com/reference/get-files-id-metadata/) --- ### ファイルのメタデータインスタンスを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-metadata-id-id/ **Source:** [https://ja.developer.box.com/reference/get-files-id-metadata-id-id/](https://ja.developer.box.com/reference/get-files-id-metadata-id-id/) --- ### ファイルのメタデータインスタンスを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-files-id-metadata-id-id/ **Source:** [https://ja.developer.box.com/reference/put-files-id-metadata-id-id/](https://ja.developer.box.com/reference/put-files-id-metadata-id-id/) --- ### ファイルのリテンションを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-file-version-retentions-id/ **Source:** [https://ja.developer.box.com/reference/get-file-version-retentions-id/](https://ja.developer.box.com/reference/get-file-version-retentions-id/) --- ### ファイルの一部をアップロード **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-files-upload-sessions-id/ **Source:** [https://ja.developer.box.com/reference/put-files-upload-sessions-id/](https://ja.developer.box.com/reference/put-files-upload-sessions-id/) --- ### ファイルの共有リンクを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id--get-shared-link/ **Source:** [https://ja.developer.box.com/reference/get-files-id--get-shared-link/](https://ja.developer.box.com/reference/get-files-id--get-shared-link/) --- ### ファイルの共有リンクを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-files-id--update-shared-link/ **Source:** [https://ja.developer.box.com/reference/put-files-id--update-shared-link/](https://ja.developer.box.com/reference/put-files-id--update-shared-link/) --- ### ファイルの分類を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/ **Source:** [https://ja.developer.box.com/reference/get-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/](https://ja.developer.box.com/reference/get-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/) --- ### ファイルの分類を更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/ **Source:** [https://ja.developer.box.com/reference/put-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/](https://ja.developer.box.com/reference/put-files-id-metadata-enterprise-securityClassification-6VMVochwUWo/) --- ### ファイルの電子すかしを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-watermark/ **Source:** [https://ja.developer.box.com/reference/get-files-id-watermark/](https://ja.developer.box.com/reference/get-files-id-watermark/) --- ### ファイルバージョン **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルバージョンのStandard版の表示。 # ファイルバージョン ファイルバージョンのStandard版の表示。 --- ### ファイルバージョン **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルバージョンのリスト。 # ファイルバージョン ファイルバージョンのリスト。 --- ### ファイルバージョン (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference 最も基本的なファイルバージョンのBase版の表示。`fields`クエリパラメータを使用すると、最小限の数のフィールドが返されます。 # ファイルバージョン (Base) 最も基本的なファイルバージョンのBase版の表示。`fields`クエリパラメータを使用すると、最小限の数のフィールドが返されます。 --- ### ファイルバージョン (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のファイルバージョンAPIエンドポイントからデフォルトで返される可能性がある、ファイルバージョンのFull版の表示。 # ファイルバージョン (Full) 任意のファイルバージョンAPIエンドポイントからデフォルトで返される可能性がある、ファイルバージョンのFull版の表示。 --- ### ファイルバージョン (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference 他のリソース内にネストされたときに使用されるファイルバージョンのMini版の表示。 # ファイルバージョン (Mini) 他のリソース内にネストされたときに使用されるファイルバージョンのMini版の表示。 --- ### ファイルバージョンリーガルホールド **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルバージョンリーガルホールドは、ファイルバージョンのすべてのリーガルホールドを表すエンティティです。 # ファイルバージョンリーガルホールド ファイルバージョンリーガルホールドは、ファイルバージョンのすべてのリーガルホールドを表すエンティティです。 --- ### ファイルバージョンリーガルホールド **Type:** resource | **Category:** api-resource | **Section:** API Reference リーガルホールドが設定されたファイルバージョンのリスト。 # ファイルバージョンリーガルホールド リーガルホールドが設定されたファイルバージョンのリスト。 --- ### ファイルバージョンリーガルホールドのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-file-version-legal-holds/ **Source:** [https://ja.developer.box.com/reference/get-file-version-legal-holds/](https://ja.developer.box.com/reference/get-file-version-legal-holds/) --- ### ファイルバージョンリーガルホールドを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-file-version-legal-holds-id/ **Source:** [https://ja.developer.box.com/reference/get-file-version-legal-holds-id/](https://ja.developer.box.com/reference/get-file-version-legal-holds-id/) --- ### ファイルバージョンリテンション **Type:** resource | **Category:** api-resource | **Section:** API Reference リテンションポリシーは、指定した期間にわたってコンテンツが完全に削除されるのを防止します。管理者はポリシーを特定のフォルダや企業全体に適用できます。ファイルバージョンリテンションとは、保持されているファイルバージョンのレコードです。この機能を使用するには、アプリケーション管理コンソールから、APIキーに対して \[リテンションポリシーを管理する] スコープを有効にする必要があります。 **注**: ファイルリテンションAPIは**非推奨**になりました。リテンションの対象となるファイルおよびファイルバージョンに関する情報を取得するには、[リテンションの対象となるファイル](/reference/get-retention-policy-assignments-id-files-under-retention)または[リテンションの対象となるファイルバージョン](/reference/get-retention-policy-assignments-id-file-versions-under-retention)のエンドポイントを参照してください。 # ファイルバージョンリテンション リテンションポリシーは、指定した期間にわたってコンテンツが完全に削除されるのを防止します。管理者はポリシーを特定のフォルダや企業全体に適用できます。ファイルバージョンリテンションとは、保持されているファイルバージョンのレコードです。この機能を使用するには、アプリケーション管理コンソールから、APIキーに対して \[リテンションポリシーを管理する] スコープを有効にする必要があります。 **注**: ファイルリテンションAPIは**非推奨**になりました。リテンションの対象となるファイルおよびファイルバージョンに関する情報を取得するには、[リテンションの対象となるファイル](https://ja.developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention)または[リテンションの対象となるファイルバージョン](https://ja.developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention)のエンドポイントを参照してください。 --- ### ファイルバージョンリテンション **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルバージョンリテンションのリスト。 **注**: ファイルリテンションAPIは**非推奨**になりました。リテンションの対象となるファイルおよびファイルバージョンに関する情報を取得するには、[リテンションの対象となるファイル](/reference/get-retention-policy-assignments-id-files-under-retention)または[リテンションの対象となるファイルバージョン](/reference/get-retention-policy-assignments-id-file-versions-under-retention)のエンドポイントを参照してください。 # ファイルバージョンリテンション ファイルバージョンリテンションのリスト。 **注**: ファイルリテンションAPIは**非推奨**になりました。リテンションの対象となるファイルおよびファイルバージョンに関する情報を取得するには、[リテンションの対象となるファイル](https://ja.developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention)または[リテンションの対象となるファイルバージョン](https://ja.developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention)のエンドポイントを参照してください。 --- ### ファイルバージョンリテンションのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-file-version-retentions/ **Source:** [https://ja.developer.box.com/reference/get-file-version-retentions/](https://ja.developer.box.com/reference/get-file-version-retentions/) --- ### ファイルバージョンをアップロード **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-id-content/ **Source:** [https://ja.developer.box.com/reference/post-files-id-content/](https://ja.developer.box.com/reference/post-files-id-content/) --- ### ファイルバージョンを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-files-id-versions-id/ **Source:** [https://ja.developer.box.com/reference/delete-files-id-versions-id/](https://ja.developer.box.com/reference/delete-files-id-versions-id/) --- ### ファイルバージョンを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-versions-id/ **Source:** [https://ja.developer.box.com/reference/get-files-id-versions-id/](https://ja.developer.box.com/reference/get-files-id-versions-id/) --- ### ファイルバージョンを復元 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-files-id-versions-id/ **Source:** [https://ja.developer.box.com/reference/put-files-id-versions-id/](https://ja.developer.box.com/reference/put-files-id-versions-id/) --- ### ファイルバージョンを昇格 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-id-versions-current/ **Source:** [https://ja.developer.box.com/reference/post-files-id-versions-current/](https://ja.developer.box.com/reference/post-files-id-versions-current/) --- ### ファイルリクエスト **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のファイルリクエストAPIエンドポイントからデフォルトで返されるファイルリクエストのStandard版の表示。 # ファイルリクエスト 任意のファイルリクエストAPIエンドポイントからデフォルトで返されるファイルリクエストのStandard版の表示。 --- ### ファイルリクエストをコピー **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-file-requests-id-copy/ **Source:** [https://ja.developer.box.com/reference/post-file-requests-id-copy/](https://ja.developer.box.com/reference/post-file-requests-id-copy/) --- ### ファイルリクエストを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-file-requests-id/ **Source:** [https://ja.developer.box.com/reference/delete-file-requests-id/](https://ja.developer.box.com/reference/delete-file-requests-id/) --- ### ファイルリクエストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-file-requests-id/ **Source:** [https://ja.developer.box.com/reference/get-file-requests-id/](https://ja.developer.box.com/reference/get-file-requests-id/) --- ### ファイルリクエストを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-file-requests-id/ **Source:** [https://ja.developer.box.com/reference/put-file-requests-id/](https://ja.developer.box.com/reference/put-file-requests-id/) --- ### ファイルをアップロード **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-content/ **Source:** [https://ja.developer.box.com/reference/post-files-content/](https://ja.developer.box.com/reference/post-files-content/) --- ### ファイルをコピー **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-id-copy/ **Source:** [https://ja.developer.box.com/reference/post-files-id-copy/](https://ja.developer.box.com/reference/post-files-id-copy/) --- ### ファイルをダウンロード **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id-content/ **Source:** [https://ja.developer.box.com/reference/get-files-id-content/](https://ja.developer.box.com/reference/get-files-id-content/) --- ### ファイルを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-files-id/ **Source:** [https://ja.developer.box.com/reference/delete-files-id/](https://ja.developer.box.com/reference/delete-files-id/) --- ### ファイルを完全に削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-files-id-trash/ **Source:** [https://ja.developer.box.com/reference/delete-files-id-trash/](https://ja.developer.box.com/reference/delete-files-id-trash/) --- ### ファイルを復元 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-id/ **Source:** [https://ja.developer.box.com/reference/post-files-id/](https://ja.developer.box.com/reference/post-files-id/) --- ### ファイルを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-files-id/ **Source:** [https://ja.developer.box.com/reference/put-files-id/](https://ja.developer.box.com/reference/put-files-id/) --- ### ファイル情報を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-files-id/ **Source:** [https://ja.developer.box.com/reference/get-files-id/](https://ja.developer.box.com/reference/get-files-id/) --- ### フォルダ (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference 最も基本的なフォルダのBase版の表示。`fields`クエリパラメータを使用すると、最小限の数のフィールドが返されます。 # フォルダ (Base) 最も基本的なフォルダのBase版の表示。`fields`クエリパラメータを使用すると、最小限の数のフィールドが返されます。 --- ### フォルダ (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のフォルダAPIエンドポイントからデフォルトで返される可能性があるフォルダのFull版の表示。 # フォルダ (Full) 任意のフォルダAPIエンドポイントからデフォルトで返される可能性があるフォルダのFull版の表示。 --- ### フォルダ (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference 他のリソースの下にネストされたときに使用されるファイルバージョンのMini版の表示。 # フォルダ (Mini) 他のリソースの下にネストされたときに使用されるファイルバージョンのMini版の表示。 --- ### フォルダからメタデータインスタンスを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-folders-id-metadata-id-id/ **Source:** [https://ja.developer.box.com/reference/delete-folders-id-metadata-id-id/](https://ja.developer.box.com/reference/delete-folders-id-metadata-id-id/) --- ### フォルダから共有リンクを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-folders-id--remove-shared-link/ **Source:** [https://ja.developer.box.com/reference/put-folders-id--remove-shared-link/](https://ja.developer.box.com/reference/put-folders-id--remove-shared-link/) --- ### フォルダから分類を削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/ **Source:** [https://ja.developer.box.com/reference/delete-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/](https://ja.developer.box.com/reference/delete-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/) --- ### フォルダから電子すかしを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-folders-id-watermark/ **Source:** [https://ja.developer.box.com/reference/delete-folders-id-watermark/](https://ja.developer.box.com/reference/delete-folders-id-watermark/) --- ### フォルダコラボレーションのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-id-collaborations/ **Source:** [https://ja.developer.box.com/reference/get-folders-id-collaborations/](https://ja.developer.box.com/reference/get-folders-id-collaborations/) --- ### フォルダにメタデータインスタンスを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-folders-id-metadata-id-id/ **Source:** [https://ja.developer.box.com/reference/post-folders-id-metadata-id-id/](https://ja.developer.box.com/reference/post-folders-id-metadata-id-id/) --- ### フォルダにメタデータカスケードポリシーを強制適用 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-metadata-cascade-policies-id-apply/ **Source:** [https://ja.developer.box.com/reference/post-metadata-cascade-policies-id-apply/](https://ja.developer.box.com/reference/post-metadata-cascade-policies-id-apply/) --- ### フォルダに共有リンクを追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-folders-id--add-shared-link/ **Source:** [https://ja.developer.box.com/reference/put-folders-id--add-shared-link/](https://ja.developer.box.com/reference/put-folders-id--add-shared-link/) --- ### フォルダに分類を追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/ **Source:** [https://ja.developer.box.com/reference/post-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/](https://ja.developer.box.com/reference/post-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/) --- ### フォルダに電子すかしを適用 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-folders-id-watermark/ **Source:** [https://ja.developer.box.com/reference/put-folders-id-watermark/](https://ja.developer.box.com/reference/put-folders-id-watermark/) --- ### フォルダのアプリ項目の関連付けのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-id-app-item-associations/ **Source:** [https://ja.developer.box.com/reference/get-folders-id-app-item-associations/](https://ja.developer.box.com/reference/get-folders-id-app-item-associations/) --- ### フォルダのメタデータインスタンスのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-id-metadata/ **Source:** [https://ja.developer.box.com/reference/get-folders-id-metadata/](https://ja.developer.box.com/reference/get-folders-id-metadata/) --- ### フォルダのメタデータインスタンスを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-id-metadata-id-id/ **Source:** [https://ja.developer.box.com/reference/get-folders-id-metadata-id-id/](https://ja.developer.box.com/reference/get-folders-id-metadata-id-id/) --- ### フォルダのメタデータインスタンスを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-folders-id-metadata-id-id/ **Source:** [https://ja.developer.box.com/reference/put-folders-id-metadata-id-id/](https://ja.developer.box.com/reference/put-folders-id-metadata-id-id/) --- ### フォルダの共有リンクを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-id--get-shared-link/ **Source:** [https://ja.developer.box.com/reference/get-folders-id--get-shared-link/](https://ja.developer.box.com/reference/get-folders-id--get-shared-link/) --- ### フォルダの共有リンクを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-folders-id--update-shared-link/ **Source:** [https://ja.developer.box.com/reference/put-folders-id--update-shared-link/](https://ja.developer.box.com/reference/put-folders-id--update-shared-link/) --- ### フォルダの分類を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/ **Source:** [https://ja.developer.box.com/reference/get-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/](https://ja.developer.box.com/reference/get-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/) --- ### フォルダの分類を更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/ **Source:** [https://ja.developer.box.com/reference/put-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/](https://ja.developer.box.com/reference/put-folders-id-metadata-enterprise-securityClassification-6VMVochwUWo/) --- ### フォルダの電子すかしを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-id-watermark/ **Source:** [https://ja.developer.box.com/reference/get-folders-id-watermark/](https://ja.developer.box.com/reference/get-folders-id-watermark/) --- ### フォルダロック **Type:** resource | **Category:** api-resource | **Section:** API Reference フォルダロックでは、特定のフォルダが移動または削除されないように、フォルダ所有者によって設定されるアクセス制限を定義します。 # フォルダロック フォルダロックでは、特定のフォルダが移動または削除されないように、フォルダ所有者によって設定されるアクセス制限を定義します。 --- ### フォルダロック **Type:** resource | **Category:** api-resource | **Section:** API Reference フォルダロックのリスト。 # フォルダロック フォルダロックのリスト。 --- ### フォルダロックのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folder-locks/ **Source:** [https://ja.developer.box.com/reference/get-folder-locks/](https://ja.developer.box.com/reference/get-folder-locks/) --- ### フォルダロックを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-folder-locks/ **Source:** [https://ja.developer.box.com/reference/post-folder-locks/](https://ja.developer.box.com/reference/post-folder-locks/) --- ### フォルダロックを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-folder-locks-id/ **Source:** [https://ja.developer.box.com/reference/delete-folder-locks-id/](https://ja.developer.box.com/reference/delete-folder-locks-id/) --- ### フォルダをコピー **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-folders-id-copy/ **Source:** [https://ja.developer.box.com/reference/post-folders-id-copy/](https://ja.developer.box.com/reference/post-folders-id-copy/) --- ### フォルダを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-folders/ **Source:** [https://ja.developer.box.com/reference/post-folders/](https://ja.developer.box.com/reference/post-folders/) --- ### フォルダを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-folders-id/ **Source:** [https://ja.developer.box.com/reference/delete-folders-id/](https://ja.developer.box.com/reference/delete-folders-id/) --- ### フォルダを完全に削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-folders-id-trash/ **Source:** [https://ja.developer.box.com/reference/delete-folders-id-trash/](https://ja.developer.box.com/reference/delete-folders-id-trash/) --- ### フォルダを復元 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-folders-id/ **Source:** [https://ja.developer.box.com/reference/post-folders-id/](https://ja.developer.box.com/reference/post-folders-id/) --- ### フォルダを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-folders-id/ **Source:** [https://ja.developer.box.com/reference/put-folders-id/](https://ja.developer.box.com/reference/put-folders-id/) --- ### フォルダ内の項目のリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-id-items/ **Source:** [https://ja.developer.box.com/reference/get-folders-id-items/](https://ja.developer.box.com/reference/get-folders-id-items/) --- ### フォルダ情報を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-folders-id/ **Source:** [https://ja.developer.box.com/reference/get-folders-id/](https://ja.developer.box.com/reference/get-folders-id/) --- ### メールエイリアス **Type:** resource | **Category:** api-resource | **Section:** API Reference ユーザーのメールエイリアス。 # メールエイリアス ユーザーのメールエイリアス。 --- ### メールエイリアス **Type:** resource | **Category:** api-resource | **Section:** API Reference メールエイリアスのリスト。 # メールエイリアス メールエイリアスのリスト。 --- ### メールエイリアスを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-users-id-email-aliases/ **Source:** [https://ja.developer.box.com/reference/post-users-id-email-aliases/](https://ja.developer.box.com/reference/post-users-id-email-aliases/) --- ### メールエイリアスを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-users-id-email-aliases-id/ **Source:** [https://ja.developer.box.com/reference/delete-users-id-email-aliases-id/](https://ja.developer.box.com/reference/delete-users-id-email-aliases-id/) --- ### メタデータインスタンス **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルまたはフォルダに適用された、メタデータテンプレートのインスタンス。 # メタデータインスタンス ファイルまたはフォルダに適用された、メタデータテンプレートのインスタンス。 --- ### メタデータインスタンス **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルまたはフォルダに適用されているメタデータインスタンスのリスト。 # メタデータインスタンス ファイルまたはフォルダに適用されているメタデータインスタンスのリスト。 --- ### メタデータインスタンス (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータインスタンスのBase版の表示。 # メタデータインスタンス (Base) メタデータインスタンスのBase版の表示。 --- ### メタデータインスタンス (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルまたはフォルダに適用された、メタデータテンプレートのインスタンス。 # メタデータインスタンス (Full) ファイルまたはフォルダに適用された、メタデータテンプレートのインスタンス。 --- ### メタデータエラー **Type:** resource | **Category:** api-resource | **Section:** API Reference 一般的なメタデータ操作エラー。 # メタデータエラー 一般的なメタデータ操作エラー。 --- ### メタデータカスケードポリシー **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータカスケードポリシーのリスト。 # メタデータカスケードポリシー メタデータカスケードポリシーのリスト。 --- ### メタデータカスケードポリシー **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータカスケードポリシーにより、メタデータテンプレートインスタンスが自動的にターゲットフォルダ内のすべてのファイルとフォルダに適用されます。 # メタデータカスケードポリシー メタデータカスケードポリシーにより、メタデータテンプレートインスタンスが自動的にターゲットフォルダ内のすべてのファイルとフォルダに適用されます。 --- ### メタデータカスケードポリシーのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-cascade-policies/ **Source:** [https://ja.developer.box.com/reference/get-metadata-cascade-policies/](https://ja.developer.box.com/reference/get-metadata-cascade-policies/) --- ### メタデータカスケードポリシーを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-metadata-cascade-policies/ **Source:** [https://ja.developer.box.com/reference/post-metadata-cascade-policies/](https://ja.developer.box.com/reference/post-metadata-cascade-policies/) --- ### メタデータカスケードポリシーを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-metadata-cascade-policies-id/ **Source:** [https://ja.developer.box.com/reference/delete-metadata-cascade-policies-id/](https://ja.developer.box.com/reference/delete-metadata-cascade-policies-id/) --- ### メタデータカスケードポリシーを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-cascade-policies-id/ **Source:** [https://ja.developer.box.com/reference/get-metadata-cascade-policies-id/](https://ja.developer.box.com/reference/get-metadata-cascade-policies-id/) --- ### メタデータクエリの検索結果 **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータクエリと一致したファイルおよびフォルダのページ。 # メタデータクエリの検索結果 メタデータクエリと一致したファイルおよびフォルダのページ。 --- ### メタデータテンプレート **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルやフォルダに適用可能なメタデータのテンプレート。 # メタデータテンプレート ファイルやフォルダに適用可能なメタデータのテンプレート。 --- ### メタデータテンプレート **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータテンプレートのリスト。 # メタデータテンプレート メタデータテンプレートのリスト。 --- ### メタデータテンプレートのメタデータ階層フィールドオプションのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-templates-id-id-fields-id-options/ **Source:** [https://ja.developer.box.com/reference/get-metadata-templates-id-id-fields-id-options/](https://ja.developer.box.com/reference/get-metadata-templates-id-id-fields-id-options/) --- ### メタデータテンプレートを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-metadata-templates-schema/ **Source:** [https://ja.developer.box.com/reference/post-metadata-templates-schema/](https://ja.developer.box.com/reference/post-metadata-templates-schema/) --- ### メタデータテンプレートを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-metadata-templates-id-id-schema/ **Source:** [https://ja.developer.box.com/reference/delete-metadata-templates-id-id-schema/](https://ja.developer.box.com/reference/delete-metadata-templates-id-id-schema/) --- ### メタデータテンプレートを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-metadata-templates-id-id-schema/ **Source:** [https://ja.developer.box.com/reference/put-metadata-templates-id-id-schema/](https://ja.developer.box.com/reference/put-metadata-templates-id-id-schema/) --- ### メタデータによるファイル/フォルダに対するクエリ **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-metadata-queries-execute-read/ **Source:** [https://ja.developer.box.com/reference/post-metadata-queries-execute-read/](https://ja.developer.box.com/reference/post-metadata-queries-execute-read/) --- ### メタデータフィールドのフィルタ (日付範囲) **Type:** resource | **Category:** api-resource | **Section:** API Reference 検索結果のフィルタに使用するテンプレートの`date`フィールドを指定して、照合する日付の範囲を指定します。 # メタデータフィールドのフィルタ (日付範囲) 検索結果のフィルタに使用するテンプレートの`date`フィールドを指定して、照合する日付の範囲を指定します。 --- ### メタデータフィールドのフィルタ (浮動小数点の範囲) **Type:** resource | **Category:** api-resource | **Section:** API Reference 検索結果のフィルタに使用するテンプレートの`float`フィールドを指定して、照合する値の範囲を指定します。 # メタデータフィールドのフィルタ (浮動小数点の範囲) 検索結果のフィルタに使用するテンプレートの`float`フィールドを指定して、照合する値の範囲を指定します。 --- ### メタデータフィルタ **Type:** resource | **Category:** api-resource | **Section:** API Reference 検索結果のフィルタに使用されたメタデータテンプレート。 # メタデータフィルタ 検索結果のフィルタに使用されたメタデータテンプレート。 --- ### メタデータを抽出 (構造化) **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-ai-extract-structured/ **Source:** [https://ja.developer.box.com/reference/post-ai-extract-structured/](https://ja.developer.box.com/reference/post-ai-extract-structured/) --- ### メタデータを抽出 (自由形式) **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-ai-extract/ **Source:** [https://ja.developer.box.com/reference/post-ai-extract/](https://ja.developer.box.com/reference/post-ai-extract/) --- ### メタデータ階層 **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータ階層のリスト。 # メタデータ階層 メタデータ階層のリスト。 --- ### メタデータ階層 **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータテンプレートで使用可能なメタデータ階層のオブジェクト。 # メタデータ階層 メタデータテンプレートで使用可能なメタデータ階層のオブジェクト。 --- ### メタデータ階層キーを指定してメタデータ階層を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-taxonomies-id-id/ **Source:** [https://ja.developer.box.com/reference/get-metadata-taxonomies-id-id/](https://ja.developer.box.com/reference/get-metadata-taxonomies-id-id/) --- ### メタデータ階層ノード **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータテンプレートで使用可能なメタデータ階層のノードオブジェクト。 # メタデータ階層ノード メタデータテンプレートで使用可能なメタデータ階層のノードオブジェクト。 --- ### メタデータ階層ノード **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータ階層ノードのリスト。 # メタデータ階層ノード メタデータ階層ノードのリスト。 --- ### メタデータ階層ノードのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-taxonomies-id-id-nodes/ **Source:** [https://ja.developer.box.com/reference/get-metadata-taxonomies-id-id-nodes/](https://ja.developer.box.com/reference/get-metadata-taxonomies-id-id-nodes/) --- ### メタデータ階層ノードを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-metadata-taxonomies-id-id-nodes/ **Source:** [https://ja.developer.box.com/reference/post-metadata-taxonomies-id-id-nodes/](https://ja.developer.box.com/reference/post-metadata-taxonomies-id-id-nodes/) --- ### メタデータ階層ノードを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-metadata-taxonomies-id-id-nodes-id/ **Source:** [https://ja.developer.box.com/reference/delete-metadata-taxonomies-id-id-nodes-id/](https://ja.developer.box.com/reference/delete-metadata-taxonomies-id-id-nodes-id/) --- ### メタデータ階層ノードを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/patch-metadata-taxonomies-id-id-nodes-id/ **Source:** [https://ja.developer.box.com/reference/patch-metadata-taxonomies-id-id-nodes-id/](https://ja.developer.box.com/reference/patch-metadata-taxonomies-id-id-nodes-id/) --- ### メタデータ階層レベル **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータ階層のレベルは、メタデータ階層構造内の階層カテゴリを表します。 # メタデータ階層レベル メタデータ階層のレベルは、メタデータ階層構造内の階層カテゴリを表します。 --- ### メタデータ階層レベル **Type:** resource | **Category:** api-resource | **Section:** API Reference メタデータ階層のレベルは、メタデータ階層構造内の階層カテゴリを表します。 # メタデータ階層レベル メタデータ階層のレベルは、メタデータ階層構造内の階層カテゴリを表します。 --- ### メタデータ階層レベルを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-metadata-taxonomies-id-id-levels/ **Source:** [https://ja.developer.box.com/reference/post-metadata-taxonomies-id-id-levels/](https://ja.developer.box.com/reference/post-metadata-taxonomies-id-id-levels/) --- ### メタデータ階層レベルを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-metadata-taxonomies-id-id-levels:trim/ **Source:** [https://ja.developer.box.com/reference/post-metadata-taxonomies-id-id-levelstrim/](https://ja.developer.box.com/reference/post-metadata-taxonomies-id-id-levelstrim/) --- ### メタデータ階層レベルを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/patch-metadata-taxonomies-id-id-levels-id/ **Source:** [https://ja.developer.box.com/reference/patch-metadata-taxonomies-id-id-levels-id/](https://ja.developer.box.com/reference/patch-metadata-taxonomies-id-id-levels-id/) --- ### メタデータ階層レベルを追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-metadata-taxonomies-id-id-levels:append/ **Source:** [https://ja.developer.box.com/reference/post-metadata-taxonomies-id-id-levelsappend/](https://ja.developer.box.com/reference/post-metadata-taxonomies-id-id-levelsappend/) --- ### メタデータ階層を作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-metadata-taxonomies/ **Source:** [https://ja.developer.box.com/reference/post-metadata-taxonomies/](https://ja.developer.box.com/reference/post-metadata-taxonomies/) --- ### メタデータ階層を削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-metadata-taxonomies-id-id/ **Source:** [https://ja.developer.box.com/reference/delete-metadata-taxonomies-id-id/](https://ja.developer.box.com/reference/delete-metadata-taxonomies-id-id/) --- ### メタデータ階層を更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/patch-metadata-taxonomies-id-id/ **Source:** [https://ja.developer.box.com/reference/patch-metadata-taxonomies-id-id/](https://ja.developer.box.com/reference/patch-metadata-taxonomies-id-id/) --- ### ユーザー (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference 他のリソース内にネストされたときに使用されるユーザーのMini版の表示。 # ユーザー (Base) 他のリソース内にネストされたときに使用されるユーザーのMini版の表示。 --- ### ユーザー (Full) **Type:** resource | **Category:** api-resource | **Section:** API Reference 任意のユーザーAPIエンドポイントから返される可能性があるユーザーのFull版の表示。 # ユーザー (Full) 任意のユーザーAPIエンドポイントから返される可能性があるユーザーのFull版の表示。 --- ### ユーザー (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference 他のリソース内にネストされたときに返される可能性があるユーザーのMini版の表示。 # ユーザー (Mini) 他のリソース内にネストされたときに返される可能性があるユーザーのMini版の表示。 --- ### ユーザー (コラボレーション) **Type:** resource | **Category:** api-resource | **Section:** API Reference ユーザーのMini版の表示は、ステータスが`pending`の場合にのみ返すことができます。 # ユーザー (コラボレーション) ユーザーのMini版の表示は、ステータスが`pending`の場合にのみ返すことができます。 --- ### ユーザー (統合マッピング) **Type:** resource | **Category:** api-resource | **Section:** API Reference 統合マッピングAPIのためのユーザーのレプリゼンテーション。フィールド名とログインは必要ありません。 # ユーザー (統合マッピング) 統合マッピングAPIのためのユーザーのレプリゼンテーション。フィールド名とログインは必要ありません。 --- ### ユーザーグループのセッションを終了させるジョブを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-groups-terminate-sessions/ **Source:** [https://ja.developer.box.com/reference/post-groups-terminate-sessions/](https://ja.developer.box.com/reference/post-groups-terminate-sessions/) --- ### ユーザーのアバター **Type:** resource | **Category:** api-resource | **Section:** API Reference BoxアプリケーションにアップロードされたアバターへのURLを保持するリソース。 # ユーザーのアバター BoxアプリケーションにアップロードされたアバターへのURLを保持するリソース。 --- ### ユーザーのアバターを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-users-id-avatar/ **Source:** [https://ja.developer.box.com/reference/delete-users-id-avatar/](https://ja.developer.box.com/reference/delete-users-id-avatar/) --- ### ユーザーのアバターを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-users-id-avatar/ **Source:** [https://ja.developer.box.com/reference/get-users-id-avatar/](https://ja.developer.box.com/reference/get-users-id-avatar/) --- ### ユーザーのアバターを追加または更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-users-id-avatar/ **Source:** [https://ja.developer.box.com/reference/post-users-id-avatar/](https://ja.developer.box.com/reference/post-users-id-avatar/) --- ### ユーザーのグループのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-users-id-memberships/ **Source:** [https://ja.developer.box.com/reference/get-users-id-memberships/](https://ja.developer.box.com/reference/get-users-id-memberships/) --- ### ユーザーのセッションを終了させるジョブを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-users-terminate-sessions/ **Source:** [https://ja.developer.box.com/reference/post-users-terminate-sessions/](https://ja.developer.box.com/reference/post-users-terminate-sessions/) --- ### ユーザーのメールエイリアスのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-users-id-email-aliases/ **Source:** [https://ja.developer.box.com/reference/get-users-id-email-aliases/](https://ja.developer.box.com/reference/get-users-id-email-aliases/) --- ### ユーザーをグループから削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-group-memberships-id/ **Source:** [https://ja.developer.box.com/reference/delete-group-memberships-id/](https://ja.developer.box.com/reference/delete-group-memberships-id/) --- ### ユーザーをグループに追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-group-memberships/ **Source:** [https://ja.developer.box.com/reference/post-group-memberships/](https://ja.developer.box.com/reference/post-group-memberships/) --- ### ユーザーを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-users/ **Source:** [https://ja.developer.box.com/reference/post-users/](https://ja.developer.box.com/reference/post-users/) --- ### ユーザーを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-users-id/ **Source:** [https://ja.developer.box.com/reference/delete-users-id/](https://ja.developer.box.com/reference/delete-users-id/) --- ### ユーザーを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-users-id/ **Source:** [https://ja.developer.box.com/reference/get-users-id/](https://ja.developer.box.com/reference/get-users-id/) --- ### ユーザーを承認 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-authorize/ **Source:** [https://ja.developer.box.com/reference/get-authorize/](https://ja.developer.box.com/reference/get-authorize/) --- ### ユーザーを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-users-id/ **Source:** [https://ja.developer.box.com/reference/put-users-id/](https://ja.developer.box.com/reference/put-users-id/) --- ### ユーザー招待ステータスを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-invites-id/ **Source:** [https://ja.developer.box.com/reference/get-invites-id/](https://ja.developer.box.com/reference/get-invites-id/) --- ### ユーザー招待を作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-invites/ **Source:** [https://ja.developer.box.com/reference/post-invites/](https://ja.developer.box.com/reference/post-invites/) --- ### リーガルホールドが設定されているファイル **Type:** resource | **Category:** api-resource | **Section:** API Reference リーガルホールドポリシー割り当てにより、リーガルホールドが設定されているファイルのリスト。 # リーガルホールドが設定されているファイル リーガルホールドポリシー割り当てにより、リーガルホールドが設定されているファイルのリスト。 --- ### リーガルホールドが設定されているファイルバージョン **Type:** resource | **Category:** api-resource | **Section:** API Reference リーガルホールドポリシー割り当てにより、リーガルホールドが設定されているファイルのリスト。 # リーガルホールドが設定されているファイルバージョン リーガルホールドポリシー割り当てにより、リーガルホールドが設定されているファイルのリスト。 --- ### リーガルホールドポリシー **Type:** resource | **Category:** api-resource | **Section:** API Reference リーガルホールドポリシーのリスト。 # リーガルホールドポリシー リーガルホールドポリシーのリスト。 --- ### リーガルホールドポリシー **Type:** resource | **Category:** api-resource | **Section:** API Reference リーガルホールドポリシー情報には、名前、説明、フィルタ日付など、ポリシーの基本的な特性が記載されています。 # リーガルホールドポリシー リーガルホールドポリシー情報には、名前、説明、フィルタ日付など、ポリシーの基本的な特性が記載されています。 --- ### リーガルホールドポリシー (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference Mini版のリーガルホールドポリシー。 # リーガルホールドポリシー (Mini) Mini版のリーガルホールドポリシー。 --- ### リーガルホールドポリシーの割り当てを解除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-legal-hold-policy-assignments-id/ **Source:** [https://ja.developer.box.com/reference/delete-legal-hold-policy-assignments-id/](https://ja.developer.box.com/reference/delete-legal-hold-policy-assignments-id/) --- ### リーガルホールドポリシーを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-legal-hold-policies/ **Source:** [https://ja.developer.box.com/reference/post-legal-hold-policies/](https://ja.developer.box.com/reference/post-legal-hold-policies/) --- ### リーガルホールドポリシーを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-legal-hold-policies-id/ **Source:** [https://ja.developer.box.com/reference/delete-legal-hold-policies-id/](https://ja.developer.box.com/reference/delete-legal-hold-policies-id/) --- ### リーガルホールドポリシーを割り当て **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-legal-hold-policy-assignments/ **Source:** [https://ja.developer.box.com/reference/post-legal-hold-policy-assignments/](https://ja.developer.box.com/reference/post-legal-hold-policy-assignments/) --- ### リーガルホールドポリシーを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-legal-hold-policies-id/ **Source:** [https://ja.developer.box.com/reference/get-legal-hold-policies-id/](https://ja.developer.box.com/reference/get-legal-hold-policies-id/) --- ### リーガルホールドポリシーを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-legal-hold-policies-id/ **Source:** [https://ja.developer.box.com/reference/put-legal-hold-policies-id/](https://ja.developer.box.com/reference/put-legal-hold-policies-id/) --- ### リーガルホールドポリシー割り当て **Type:** resource | **Category:** api-resource | **Section:** API Reference リーガルホールド割り当ては、ユーザー、フォルダ、ファイル、またはファイルバージョンにリーガルホールドポリシーを割り当てる目的に使用されます。 リーガルホールド割り当てを作成すると、その割り当ての「apply-to」エンティティに属するファイルバージョンにホールドが適用されます。 # リーガルホールドポリシー割り当て リーガルホールド割り当ては、ユーザー、フォルダ、ファイル、またはファイルバージョンにリーガルホールドポリシーを割り当てる目的に使用されます。 リーガルホールド割り当てを作成すると、その割り当ての「apply-to」エンティティに属するファイルバージョンにホールドが適用されます。 --- ### リーガルホールドポリシー割り当て **Type:** resource | **Category:** api-resource | **Section:** API Reference リーガルホールドポリシー割り当てのリスト。 # リーガルホールドポリシー割り当て リーガルホールドポリシー割り当てのリスト。 --- ### リーガルホールドポリシー割り当て (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference リーガルホールド割り当ては、ユーザー、フォルダ、ファイル、またはファイルバージョンにリーガルホールドポリシーを割り当てる目的に使用されます。 リーガルホールド割り当てを作成すると、その割り当ての「apply-to」エンティティに属するファイルバージョンにホールドが適用されます。 # リーガルホールドポリシー割り当て (Base) リーガルホールド割り当ては、ユーザー、フォルダ、ファイル、またはファイルバージョンにリーガルホールドポリシーを割り当てる目的に使用されます。 リーガルホールド割り当てを作成すると、その割り当ての「apply-to」エンティティに属するファイルバージョンにホールドが適用されます。 --- ### リーガルホールドポリシー割り当てに関する以前のファイルバージョンのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-legal-hold-policy-assignments-id-file-versions-on-hold/ **Source:** [https://ja.developer.box.com/reference/get-legal-hold-policy-assignments-id-file-versions-on-hold/](https://ja.developer.box.com/reference/get-legal-hold-policy-assignments-id-file-versions-on-hold/) --- ### リーガルホールドポリシー割り当てに関する現在のファイルバージョンを含むファイルのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-legal-hold-policy-assignments-id-files-on-hold/ **Source:** [https://ja.developer.box.com/reference/get-legal-hold-policy-assignments-id-files-on-hold/](https://ja.developer.box.com/reference/get-legal-hold-policy-assignments-id-files-on-hold/) --- ### リーガルホールドポリシー割り当てのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-legal-hold-policy-assignments/ **Source:** [https://ja.developer.box.com/reference/get-legal-hold-policy-assignments/](https://ja.developer.box.com/reference/get-legal-hold-policy-assignments/) --- ### リーガルホールドポリシー割り当てを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-legal-hold-policy-assignments-id/ **Source:** [https://ja.developer.box.com/reference/get-legal-hold-policy-assignments-id/](https://ja.developer.box.com/reference/get-legal-hold-policy-assignments-id/) --- ### リアルタイムサーバー **Type:** resource | **Category:** api-resource | **Section:** API Reference Long polling User Eventに使用できるリアルタイムサーバー。 # リアルタイムサーバー Long polling User Eventに使用できるリアルタイムサーバー。 --- ### リアルタイムサーバー **Type:** resource | **Category:** api-resource | **Section:** API Reference Long pollingに使用できるリアルタイムサーバーのリスト。 # リアルタイムサーバー Long pollingに使用できるリアルタイムサーバーのリスト。 --- ### リクエストしている企業のすべてのBox Hubのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-enterprise-hubs/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-enterprise-hubs/](https://ja.developer.box.com/reference/v2025.0/get-enterprise-hubs/) --- ### リクエスト本文に基づいてワークフローを開始 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-workflows-id-start/ **Source:** [https://ja.developer.box.com/reference/post-workflows-id-start/](https://ja.developer.box.com/reference/post-workflows-id-start/) --- ### リテンションの対象となるファイル **Type:** resource | **Category:** api-resource | **Section:** API Reference リテンションの対象となるファイルのリスト。 # リテンションの対象となるファイル リテンションの対象となるファイルのリスト。 --- ### リテンションの対象となるファイルバージョンを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-retention-policy-assignments-id-file-versions-under-retention/ **Source:** [https://ja.developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention/](https://ja.developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention/) --- ### リテンションの対象となるファイルを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-retention-policy-assignments-id-files-under-retention/ **Source:** [https://ja.developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention/](https://ja.developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention/) --- ### リテンションポリシー **Type:** resource | **Category:** api-resource | **Section:** API Reference リテンションポリシーのリスト。 # リテンションポリシー リテンションポリシーのリスト。 --- ### リテンションポリシー **Type:** resource | **Category:** api-resource | **Section:** API Reference リテンションポリシーは、指定した期間にわたってコンテンツが完全に削除されるのを防止します。管理者はリテンションポリシーを作成して特定のフォルダ、メタデータテンプレート、または企業全体に割り当てることができます。この機能を使用するには、アプリケーション管理コンソールから、APIキーに対して \[リテンションポリシーを管理する] スコープを有効にする必要があります。 # リテンションポリシー リテンションポリシーは、指定した期間にわたってコンテンツが完全に削除されるのを防止します。管理者はリテンションポリシーを作成して特定のフォルダ、メタデータテンプレート、または企業全体に割り当てることができます。この機能を使用するには、アプリケーション管理コンソールから、APIキーに対して \[リテンションポリシーを管理する] スコープを有効にする必要があります。 --- ### リテンションポリシー (Base) **Type:** resource | **Category:** api-resource | **Section:** API Reference リテンションポリシーのBase版の表示。 # リテンションポリシー (Base) リテンションポリシーのBase版の表示。 --- ### リテンションポリシー (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference 他のリソース内にネストされたときに使用されるリテンションポリシーのMini版の表示。 # リテンションポリシー (Mini) 他のリソース内にネストされたときに使用されるリテンションポリシーのMini版の表示。 --- ### リテンションポリシーのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-retention-policies/ **Source:** [https://ja.developer.box.com/reference/get-retention-policies/](https://ja.developer.box.com/reference/get-retention-policies/) --- ### リテンションポリシーを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-retention-policies/ **Source:** [https://ja.developer.box.com/reference/post-retention-policies/](https://ja.developer.box.com/reference/post-retention-policies/) --- ### リテンションポリシーを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-retention-policies-id/ **Source:** [https://ja.developer.box.com/reference/delete-retention-policies-id/](https://ja.developer.box.com/reference/delete-retention-policies-id/) --- ### リテンションポリシーを割り当て **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-retention-policy-assignments/ **Source:** [https://ja.developer.box.com/reference/post-retention-policy-assignments/](https://ja.developer.box.com/reference/post-retention-policy-assignments/) --- ### リテンションポリシーを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-retention-policies-id/ **Source:** [https://ja.developer.box.com/reference/get-retention-policies-id/](https://ja.developer.box.com/reference/get-retention-policies-id/) --- ### リテンションポリシーを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-retention-policies-id/ **Source:** [https://ja.developer.box.com/reference/put-retention-policies-id/](https://ja.developer.box.com/reference/put-retention-policies-id/) --- ### リテンションポリシー割り当て **Type:** resource | **Category:** api-resource | **Section:** API Reference リテンションの割り当ては、リテンションポリシーで保持されるファイルを指定するルールを表します。割り当てにより、フォルダまたはメタデータに基づいてファイルを保持したり、企業内のすべてのファイルを保持したりできます。 # リテンションポリシー割り当て リテンションの割り当ては、リテンションポリシーで保持されるファイルを指定するルールを表します。割り当てにより、フォルダまたはメタデータに基づいてファイルを保持したり、企業内のすべてのファイルを保持したりできます。 --- ### リテンションポリシー割り当て **Type:** resource | **Category:** api-resource | **Section:** API Reference リテンションポリシー割り当てのリスト。 # リテンションポリシー割り当て リテンションポリシー割り当てのリスト。 --- ### リテンションポリシー割り当てのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-retention-policies-id-assignments/ **Source:** [https://ja.developer.box.com/reference/get-retention-policies-id-assignments/](https://ja.developer.box.com/reference/get-retention-policies-id-assignments/) --- ### リテンションポリシー割り当てを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-retention-policy-assignments-id/ **Source:** [https://ja.developer.box.com/reference/delete-retention-policy-assignments-id/](https://ja.developer.box.com/reference/delete-retention-policy-assignments-id/) --- ### リテンションポリシー割り当てを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-retention-policy-assignments-id/ **Source:** [https://ja.developer.box.com/reference/get-retention-policy-assignments-id/](https://ja.developer.box.com/reference/get-retention-policy-assignments-id/) --- ### ワークフロー (Mini) **Type:** resource | **Category:** api-resource | **Section:** API Reference Box Relayワークフローは、名前が付けられたフローのコレクションを表すオブジェクトです。 アプリケーションは、このリソースを使用するために、開発者コンソールでの`Manage Box Relay`アプリケーションスコープの使用が承認されている必要があります。 # ワークフロー (Mini) Box Relayワークフローは、名前が付けられたフローのコレクションを表すオブジェクトです。 アプリケーションは、このリソースを使用するために、開発者コンソールでの`Manage Box Relay`アプリケーションスコープの使用が承認されている必要があります。 --- ### ワークフロー (リスト) **Type:** resource | **Category:** api-resource | **Section:** API Reference ワークフローのリスト。 アプリケーションは、このリソースを使用するために、開発者コンソールでの`Manage Box Relay`アプリケーションスコープの使用が承認されている必要があります。 # ワークフロー (リスト) ワークフローのリスト。 アプリケーションは、このリソースを使用するために、開発者コンソールでの`Manage Box Relay`アプリケーションスコープの使用が承認されている必要があります。 --- ### ワークフローのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-workflows/ **Source:** [https://ja.developer.box.com/reference/get-workflows/](https://ja.developer.box.com/reference/get-workflows/) --- ### 企業のShieldリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/get-shield-lists/ **Source:** [https://ja.developer.box.com/reference/v2025.0/get-shield-lists/](https://ja.developer.box.com/reference/v2025.0/get-shield-lists/) --- ### 企業のすべてのメタデータテンプレートのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-templates-enterprise/ **Source:** [https://ja.developer.box.com/reference/get-metadata-templates-enterprise/](https://ja.developer.box.com/reference/get-metadata-templates-enterprise/) --- ### 会社のグループのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-groups/ **Source:** [https://ja.developer.box.com/reference/get-groups/](https://ja.developer.box.com/reference/get-groups/) --- ### 会社のデバイスピンのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-enterprises-id-device-pinners/ **Source:** [https://ja.developer.box.com/reference/get-enterprises-id-device-pinners/](https://ja.developer.box.com/reference/get-enterprises-id-device-pinners/) --- ### 会社ユーザーのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-users/ **Source:** [https://ja.developer.box.com/reference/get-users/](https://ja.developer.box.com/reference/get-users/) --- ### 保留中のコラボレーションのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-collaborations/ **Source:** [https://ja.developer.box.com/reference/get-collaborations/](https://ja.developer.box.com/reference/get-collaborations/) --- ### 共有リンクのアプリ項目を検索 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shared-items--app-items/ **Source:** [https://ja.developer.box.com/reference/get-shared-items--app-items/](https://ja.developer.box.com/reference/get-shared-items--app-items/) --- ### 共有リンクのウェブリンクを検索 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shared-items--web-links/ **Source:** [https://ja.developer.box.com/reference/get-shared-items--web-links/](https://ja.developer.box.com/reference/get-shared-items--web-links/) --- ### 共有リンクのファイルを検索 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shared-items/ **Source:** [https://ja.developer.box.com/reference/get-shared-items/](https://ja.developer.box.com/reference/get-shared-items/) --- ### 共有リンクのフォルダを検索 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shared-items--folders/ **Source:** [https://ja.developer.box.com/reference/get-shared-items--folders/](https://ja.developer.box.com/reference/get-shared-items--folders/) --- ### 最初の分類を追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-metadata-templates-schema--classifications/ **Source:** [https://ja.developer.box.com/reference/post-metadata-templates-schema--classifications/](https://ja.developer.box.com/reference/post-metadata-templates-schema--classifications/) --- ### 最近アクセスした項目のリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-recent-items/ **Source:** [https://ja.developer.box.com/reference/get-recent-items/](https://ja.developer.box.com/reference/get-recent-items/) --- ### 最近使用した項目 **Type:** resource | **Category:** api-resource | **Section:** API Reference ユーザーが最近アクセスした項目。 # 最近使用した項目 ユーザーが最近アクセスした項目。 --- ### 最近使用した項目 **Type:** resource | **Category:** api-resource | **Section:** API Reference 最近使用した項目のリスト。 # 最近使用した項目 最近使用した項目のリスト。 --- ### 分類 **Type:** resource | **Category:** api-resource | **Section:** API Reference ファイルまたはフォルダに適用される分類を含む、分類メタデータテンプレートのインスタンス。 項目に適用される分類に関する詳細を取得するには、分類メタデータテンプレートをリクエストしてください。 # 分類 ファイルまたはフォルダに適用される分類を含む、分類メタデータテンプレートのインスタンス。 項目に適用される分類に関する詳細を取得するには、分類メタデータテンプレートをリクエストしてください。 --- ### 分類テンプレート **Type:** resource | **Category:** api-resource | **Section:** API Reference 会社が定義したセキュリティ分類を保持するメタデータテンプレート。 # 分類テンプレート 会社が定義したセキュリティ分類を保持するメタデータテンプレート。 --- ### 分類を更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/ **Source:** [https://ja.developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/](https://ja.developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/) --- ### 分類を追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/ **Source:** [https://ja.developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/](https://ja.developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/) --- ### 名前を指定してメタデータテンプレートを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-templates-id-id-schema/ **Source:** [https://ja.developer.box.com/reference/get-metadata-templates-id-id-schema/](https://ja.developer.box.com/reference/get-metadata-templates-id-id-schema/) --- ### 名前空間のメタデータ階層を取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-metadata-taxonomies-id/ **Source:** [https://ja.developer.box.com/reference/get-metadata-taxonomies-id/](https://ja.developer.box.com/reference/get-metadata-taxonomies-id/) --- ### 外部ユーザーの削除ジョブを送信 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/v2025.0/post-external-users-submit-delete-job/ **Source:** [https://ja.developer.box.com/reference/v2025.0/post-external-users-submit-delete-job/](https://ja.developer.box.com/reference/v2025.0/post-external-users-submit-delete-job/) --- ### 外部ユーザー削除ジョブ送信のレスポンス **Type:** resource | **Category:** api-resource | **Section:** API Reference 各外部ユーザー削除リクエストの結果を含む複数のステータスのレスポンス。 # 外部ユーザー削除ジョブ送信のレスポンス 各外部ユーザー削除リクエストの結果を含む複数のステータスのレスポンス。 --- ### 所有フォルダの移動 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-users-id-folders-0/ **Source:** [https://ja.developer.box.com/reference/put-users-id-folders-0/](https://ja.developer.box.com/reference/put-users-id-folders-0/) --- ### 抽出 (構造化) リクエスト用のAIエージェント **Type:** resource | **Category:** api-resource | **Section:** API Reference 抽出 (構造化) に使用されるAIエージェント。 # 抽出 (構造化) リクエスト用のAIエージェント 抽出 (構造化) に使用されるAIエージェント。 --- ### 抽出リクエスト用のAIエージェント **Type:** resource | **Category:** api-resource | **Section:** API Reference 抽出に使用されるAIエージェント。 # 抽出リクエスト用のAIエージェント 抽出に使用されるAIエージェント。 --- ### 指定したIDのShield情報バリアのセグメントを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shield-information-barrier-segments-id/ **Source:** [https://ja.developer.box.com/reference/get-shield-information-barrier-segments-id/](https://ja.developer.box.com/reference/get-shield-information-barrier-segments-id/) --- ### 指定したIDのShield情報バリアのセグメントを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-shield-information-barrier-segments-id/ **Source:** [https://ja.developer.box.com/reference/put-shield-information-barrier-segments-id/](https://ja.developer.box.com/reference/put-shield-information-barrier-segments-id/) --- ### 指定したIDのShield情報バリアの変更されたステータスを追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-shield-information-barriers-change-status/ **Source:** [https://ja.developer.box.com/reference/post-shield-information-barriers-change-status/](https://ja.developer.box.com/reference/post-shield-information-barriers-change-status/) --- ### 指定したIDのShield情報バリアを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-shield-information-barriers-id/ **Source:** [https://ja.developer.box.com/reference/get-shield-information-barriers-id/](https://ja.developer.box.com/reference/get-shield-information-barriers-id/) --- ### 新規ユーザーのサービス利用規約のステータスを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-terms-of-service-user-statuses/ **Source:** [https://ja.developer.box.com/reference/post-terms-of-service-user-statuses/](https://ja.developer.box.com/reference/post-terms-of-service-user-statuses/) --- ### 既存ファイルのアップロードセッションを作成 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-files-id-upload-sessions/ **Source:** [https://ja.developer.box.com/reference/post-files-id-upload-sessions/](https://ja.developer.box.com/reference/post-files-id-upload-sessions/) --- ### 既存ユーザーのサービス利用規約のステータスを更新 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/put-terms-of-service-user-statuses-id/ **Source:** [https://ja.developer.box.com/reference/put-terms-of-service-user-statuses-id/](https://ja.developer.box.com/reference/put-terms-of-service-user-statuses-id/) --- ### 検索結果 **Type:** resource | **Category:** api-resource | **Section:** API Reference 検索クエリに一致するファイル、フォルダ、およびウェブリンクのリスト。 # 検索結果 検索クエリに一致するファイル、フォルダ、およびウェブリンクのリスト。 --- ### 検索結果 (共有リンクを含む) **Type:** resource | **Category:** api-resource | **Section:** API Reference 検索クエリと一致したファイル、フォルダ、ウェブリンクの単一リスト (項目がユーザーと共有されたときに使用された共有リンクに関する追加情報を含む)。 このレスポンス形式は、`include_recent_shared_links`クエリパラメータが`true`に設定されている場合にのみ返されます。 # 検索結果 (共有リンクを含む) 検索クエリと一致したファイル、フォルダ、ウェブリンクの単一リスト (項目がユーザーと共有されたときに使用された共有リンクに関する追加情報を含む)。 このレスポンス形式は、`include_recent_shared_links`クエリパラメータが`true`に設定されている場合にのみ返されます。 --- ### 検索結果 (複数の共有リンクを含む) **Type:** resource | **Category:** api-resource | **Section:** API Reference 検索クエリと一致したファイル、フォルダ、ウェブリンクのリスト (項目がユーザーと共有されたときに使用されたすべての共有リンクに関する追加情報を含む)。 このレスポンス形式は、`include_recent_shared_links`クエリパラメータが`true`に設定されている場合にのみ返されます。 # 検索結果 (複数の共有リンクを含む) 検索クエリと一致したファイル、フォルダ、ウェブリンクのリスト (項目がユーザーと共有されたときに使用されたすべての共有リンクに関する追加情報を含む)。 このレスポンス形式は、`include_recent_shared_links`クエリパラメータが`true`に設定されている場合にのみ返されます。 --- ### 汎用的なソース **Type:** resource | **Category:** api-resource | **Section:** API Reference 汎用的なイベントソースタイプ。 # 汎用的なソース 汎用的なイベントソースタイプ。 --- ### 現在のユーザーを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-users-me/ **Source:** [https://ja.developer.box.com/reference/get-users-me/](https://ja.developer.box.com/reference/get-users-me/) --- ### 競合エラー **Type:** resource | **Category:** api-resource | **Section:** API Reference 競合が原因でファイルを作成できなかったときに発生するエラー。 # 競合エラー 競合が原因でファイルを作成できなかったときに発生するエラー。 --- ### 許可されたコラボレーションドメイン **Type:** resource | **Category:** api-resource | **Section:** API Reference コラボレーションが許可されたドメインのリスト。 # 許可されたコラボレーションドメイン コラボレーションが許可されたドメインのリスト。 --- ### 許可されたコラボレーションドメイン **Type:** resource | **Category:** api-resource | **Section:** API Reference ユーザーが社内のファイルやフォルダでコラボレーションできる (またはコラボレーションできない) 承認済みドメインを表すエントリ。 # 許可されたコラボレーションドメイン ユーザーが社内のファイルやフォルダでコラボレーションできる (またはコラボレーションできない) 承認済みドメインを表すエントリ。 --- ### 許可されたコラボレーションドメインからユーザーを除外 **Type:** resource | **Category:** api-resource | **Section:** API Reference この会社に許可されたコラボレーションドメインのリストによって課せられた制限から除外されるユーザー。 # 許可されたコラボレーションドメインからユーザーを除外 この会社に許可されたコラボレーションドメインのリストによって課せられた制限から除外されるユーザー。 --- ### 許可されたコラボレーションドメインからユーザーを除外 **Type:** resource | **Category:** api-resource | **Section:** API Reference この企業に許可されたコラボレーションドメインのリストによって課せられた制限から除外されるユーザーのリスト。 # 許可されたコラボレーションドメインからユーザーを除外 この企業に許可されたコラボレーションドメインのリストによって課せられた制限から除外されるユーザーのリスト。 --- ### 許可されたコラボレーションドメインのリストからドメインを削除 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/delete-collaboration-whitelist-entries-id/ **Source:** [https://ja.developer.box.com/reference/delete-collaboration-whitelist-entries-id/](https://ja.developer.box.com/reference/delete-collaboration-whitelist-entries-id/) --- ### 許可されたコラボレーションドメインのリストにドメインを追加 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-collaboration-whitelist-entries/ **Source:** [https://ja.developer.box.com/reference/post-collaboration-whitelist-entries/](https://ja.developer.box.com/reference/post-collaboration-whitelist-entries/) --- ### 許可されたコラボレーションドメインのリストを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-collaboration-whitelist-entries/ **Source:** [https://ja.developer.box.com/reference/get-collaboration-whitelist-entries/](https://ja.developer.box.com/reference/get-collaboration-whitelist-entries/) --- ### 許可されたコラボレーションドメインを取得 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/get-collaboration-whitelist-entries-id/ **Source:** [https://ja.developer.box.com/reference/get-collaboration-whitelist-entries-id/](https://ja.developer.box.com/reference/get-collaboration-whitelist-entries-id/) --- ### 質問リクエスト用のAIエージェント **Type:** resource | **Category:** api-resource | **Section:** API Reference クエリの処理に使用されるAIエージェント。 # 質問リクエスト用のAIエージェント クエリの処理に使用されるAIエージェント。 --- ### 質問を送信 **Type:** endpoint | **Category:** api-endpoint | **Section:** API Reference # undefined /reference/post-ai-ask/ **Source:** [https://ja.developer.box.com/reference/post-ai-ask/](https://ja.developer.box.com/reference/post-ai-ask/) --- ## Box AI Developer Zone ### Box AI Developer Zone **Type:** page | **Category:** Box AI Developer Zone | **Section:** Box AI Developer Zone Box AI Developer Zone Box AI Developer Zone Box AI Developer Zoneでは、AI… # Box AI Developer Zone Box AI Developer Zone Box AI Developer Zoneでは、AIエージェントやインテリジェントなワークフローを作成するための対話型のデモ、サンプルコード、ツールを紹介します。ユースケースを確認したり、Box AI APIを実際に体験したり、Box AI Studioでエージェントを作成したりしてみましょう。 対話型のデモをお試しください Box AI APIは、Business以上をご利用のすべてのお客様が利用できます。 選択した語調でドキュメントを要約します。 デモ 自然言語を使用するか文字列化したデータ構造を渡して、Box AI APIでメタデータを抽出します。 デモ ドキュメントのメタデータの候補を抽出します。BoxメタデータテンプレートIDまたはあらかじめ定義されたデータ構造を渡します。 デモ 新しい抽出エージェント (強化) を使用して、ドキュメントのメタデータの候補を抽出します。思考連鎖処理により最良の回答が得られます。 新着 チュートリアル ドキュメント Box AI APIを使用する際は、以下のリソースが参考になります。 仕様の詳細については、APIリファレンスをご確認ください。 ドキュメント Box AI APIの使用方法については、ガイドをご覧ください。 ドキュメント Boxでは、さまざまなAIモデルがサポートされており、アクセスレベルと機能レベルという2つの側面で分類されます。サポートされているAIモデルのリストを確認できます。 ドキュメント デフォルトのAIモデルの構成を上書きし、Box AI APIを使用してLLMを微調整します。 ドキュメント MCPサーバー Box MCPサーバーを使用する際は、以下のリソースが参考になります。 リモートBox MCPサーバーを使用すると、サードパーティ製のAIシステムを安全にBoxに接続してコンテンツを操作することができます。 新着 MCP PythonのDeveloper Communityオープンソースプロジェクト。これは、さまざまな操作 (ファイル検索、テキスト抽出、AIベースのクエリ実行、データ抽出など) を行うためにBox APIと統合されています。 MCP Deeplearning.aiと共同で作成された、Box CTOのBen Kusによる簡単なオンラインコースにご参加ください。 簡単なコース Box MCPサーバーからBox Doc Genを使用して、AIを活用したドキュメント生成を行います。 チュートリアル LangChain MCPアダプタを使用して、Box MCPサーバーをLangChain互換のエージェントに変換します。 チュートリアル AIエージェント Boxで高度なAIエージェントを作成する方法を確認します。 Box AI Studio APIを使用してカスタムAIエージェントを作成および管理します。 新着 Box AI Studio Salesforce内でワークフローを自動化したり、インテリジェントなエージェントベースのプロセスを強化したりするのに役立つ、再利用可能なAgentforceアクションの利用を開始します。 新着 Salesforce OpenAI Responses APIとBoxエージェントを使用して、Boxインスタンスからエージェント型ワークフローに非構造化データを追加します。 OpenAI BoxのAIエージェントを作成するためのPythonライブラリの利用を開始します。 ベータ BoxのAI統合 BoxのAI統合を使用して、LLMモデルの既存のナレッジベースを拡張します。 LangChain.js向けのBox loaderを使用して、BoxコンテンツをLLMワークフローに含めます。 新着 統合 Box内の非構造化コンテンツをSnowflakeの強力な分析機能にシームレスに接続し、新しいインサイトを取得してデータ駆動型のワークフローを自動化します。 統合 Airbyteソースコネクタ「Box Data Extract」を使用して、非構造化ドキュメントを照会可能な構造化データに変換します。 統合 WeaviateのベクトルデータベースにBoxコンテンツを埋め込み、Weaviateの新しいQuery Agentを利用して、RAGワークフローを作成します。 統合 BoxとPineconeを関連付けることで、ベクトル埋め込みをカスタマイズし、LLMからより関連性の高い回答を取得できます。 統合 LlamaIndex用のBox reader一式を使用して、LLMワークフロー内でのBoxコンテンツへのアクセスを可能にします。 統合 LangChain向けのBox loaderを使用して、BoxコンテンツをLLMワークフローに含めます。 統合 Box MCPサーバーを使用して、BoxのセキュアなコンテンツでPydantic AIエージェントを拡張します。 デモ 動画 Box AI APIに関する最新のチュートリアルやデモをご覧ください。 Box AI APIの主要な機能を1分程で確認できます。 Box AI APIのテキスト生成エンドポイントのデモをご確認ください。 Box AI APIのドキュメントのQ&Aエンドポイントのデモをご確認ください。 Box AI APIを使用して、さまざまなプロンプトの形式でメタデータを抽出します。 Box AI APIを使用して、あらかじめ定義された構造でメタデータを抽出します。 Boxが公開APIを介してBox AIを公開することを選択した理由をご確認ください。 さらに動画を表示 **Source:** [https://ja.developer.box.com/ai-dev-zone/](https://ja.developer.box.com/ai-dev-zone/) --- ## Changelog ### `Google PaLM`の廃止と削除 **Type:** changelog | **Section:** Changelog Google PaLMの廃止と削除 # Google PaLMの廃止と削除 `Google`は`Google Pathways Language Models (PaLM)`の廃止を予定しています。 これに従い、日本時間2025年1月18日にBox AIから以下のモデルが削除される予定です。 - `text_bison` - `text_bison_32k` - `text_unicorn` - `google_text_embedding_gecko*` エージェントの上書きでこれらのモデルのいずれかを使用している場合は、[サポートされているモデルのリスト](g://box-ai/ai-agents/)をご確認ください。 **Source:** [https://ja.developer.box.com/changelog/2025-01-09-google-palm-deprecation-and-removal](https://ja.developer.box.com/changelog/2025-01-09-google-palm-deprecation-and-removal) --- ### `stream_type`をライブで監視する新しいイベントストリーム **Type:** changelog | **Section:** Changelog stream_typeをライブで監視する新しいイベントストリーム admin_logs_streamingというGET /events API用に新しいstream_typeをリリースしました。これにより、Boxで発生したイベントをほぼリアルタイムで監視できるようになります。 # stream_typeをライブで監視する新しいイベントストリーム `admin_logs_streaming`という[`GET /events`](e://get-events) API用に新しい`stream_type`をリリースしました。これにより、Boxで発生したイベントをほぼリアルタイムで監視できるようになります。 `admin_logs`を使用してライブイベントを登録しているアプリケーションは、最も低く一貫性のあるレイテンシを実現するために、`admin_logs_streaming`に移行することをお勧めします。この`stream_type`を使用するには、ユーザーは、**新規レポートの実行および既存レポートへのアクセスを行う**ための権限を持つEnterprise管理者または共同管理者である必要があります。 ## 更新内容 この新しいオプションについて説明するために、ドキュメントを更新しました。 - わかりやすくするために[イベント](g://events)ガイドを全面的に再編しました (各種セクションのすべてのページへの情報の追加を含む) - [`GET /events`](e://get-events)エンドポイントに関するOpenAPIの仕様を更新して、`admin_logs_streaming`の新しい`stream_type`オプションを含めました - 切り替え時の手順を含め、[`stream_type`ページ](g://events/enterprise-events/migrate-to-stream)の新しい移行方法を追加しました ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-11-17-new-event-stream-live-monitoring](https://ja.developer.box.com/changelog/2021-11-17-new-event-stream-live-monitoring) --- ### 2019年12月31日にRelay APIエンドポイントを廃止 **Type:** changelog | **Section:** Changelog 2019年12月31日にRelay APIエンドポイントを廃止 2019年12月31日、すべてのRelay Classic APIエンドポイントが廃止されます。これには以下の機能が含まれます。 公開されているRelay Classicテンプレートのリストの取得 Relay… # 2019年12月31日にRelay APIエンドポイントを廃止 2019年12月31日、すべてのRelay Classic APIエンドポイントが廃止されます。これには以下の機能が含まれます。 - 公開されているRelay Classicテンプレートのリストの取得 - Relay Classicワークフローのリストの取得 - Relay Classicワークフローの開始 12月31日以降もアプリケーションを引き続き機能させるために、上記のRelay Classic APIへの呼び出しをすべて削除してください。 詳細については、この件に関する[コミュニティスレッド](https://community.box.com/t5/Platform-and-Development-Forum/Relay-Classic-APIs-to-EOL-on-December-31st-2019/m-p/77729#M7276)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2019-10-18-relay-api-endpoints-will-eol-on-december-31st-2019](https://ja.developer.box.com/changelog/2019-10-18-relay-api-endpoints-will-eol-on-december-31st-2019) --- ### Adobe Creative Cloudプレビューのサポート **Type:** changelog | **Section:** Changelog Adobe Creative Cloudプレビューのサポート ウェブアプリプレビューとの連携で、Adobe Photoshop、Illustrator、およびInDesignのファイルがAPIでサポートされるようになりました。 更新内容 拡張子がindt、idml、indd… # Adobe Creative Cloudプレビューのサポート ウェブアプリプレビューとの連携で、Adobe Photoshop、Illustrator、およびInDesignのファイルがAPIでサポートされるようになりました。 ## 更新内容 拡張子が`indt`、`idml`、`indd`、`inx`のファイルは、以下の機能でサポートされます。 - [サムネイル](g://representations/thumbnail) - [画像ビューアーUI Element](g://embed/ui-elements/viewers-and-events/#image-viewer) - [注釈](g://embed/ui-elements/annotations) - [サムネイルレプリゼンテーション](g://representations/thumbnail-representation) **Source:** [https://ja.developer.box.com/changelog/2021-10-06-support-for-adobe-creative-cloud-preview](https://ja.developer.box.com/changelog/2021-10-06-support-for-adobe-creative-cloud-preview) --- ### AI Studio v2 **Type:** changelog | **Section:** Changelog AI Studio v2 AI Studio機能の最新バージョンのリリースでは、以下に示す機能強化を実施しました。 ユーザーは、エージェントで問題が発生した場合に、AI Studio UIで直接、通知を受け取ります。 エージェントはリアルタイムで検証されます。検証に合格しないエージェントはユーザーに表示されません。 管理者は以下の操作が可能です。 ユーザーがカスタムAIエージェントの操作を開始したときに表示される質問の候補を制御する。 LLMのリクエストとレスポンスの詳細 (システムプロンプト、モデル、カスタム指示など) を確認する。 カスタムエージェントでBox AI画像プロセッサのパラメータを制御する。このパラメータは、特定の画像についてLLMに質問するために必要です。 # AI Studio v2 AI Studio機能の最新バージョンのリリースでは、以下に示す[機能強化](e://get-ai-agents/)を実施しました。 - **ユーザー**は、エージェントで問題が発生した場合に、AI Studio UIで直接、通知を受け取ります。 - エージェントはリアルタイムで検証されます。検証に合格しないエージェントはユーザーに表示されません。 **管理者**は以下の操作が可能です。 - ユーザーがカスタムAIエージェントの操作を開始したときに表示される質問の候補を制御する。 - LLMのリクエストとレスポンスの詳細 (システムプロンプト、モデル、カスタム指示など) を確認する。 - カスタムエージェントでBox AI画像プロセッサのパラメータを制御する。このパラメータは、特定の画像についてLLMに質問するために必要です。 詳細については、Boxの[API](e://get-ai-agents/)および[製品ドキュメント](https://support.box.com/hc/en-us/articles/37228357884179-Creating-and-Configuring-Agents)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-06-24-AI-studio-v2](https://ja.developer.box.com/changelog/2025-06-24-AI-studio-v2) --- ### Android SDKのサポート終了 (日本時間2023年6月1日) **Type:** changelog | **Section:** Changelog Android SDKのサポート終了 (日本時間2023年6月1日) 日本時間2023年6月1日をもって、Android SDKのサポートを終了いたします。既存のAndroid SDKアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。最新のAndroid機能を引き続きご利用いただくために、Java SDKを使用してAndroid版アプリを作成することをお勧めします。詳細については、こちらのドキュメントを参照してください。 # Android SDKのサポート終了 (日本時間2023年6月1日) 日本時間2023年6月1日をもって、[Android SDK](https://github.com/box/box-android-sdk)のサポートを終了いたします。既存のAndroid SDKアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。最新のAndroid機能を引き続きご利用いただくために、Java SDKを使用してAndroid版アプリを作成することをお勧めします。詳細については、[こちら](https://github.com/box/box-java-sdk/blob/main/doc/android.md)のドキュメントを参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-02-24-android-end-of-support](https://ja.developer.box.com/changelog/2023-02-24-android-end-of-support) --- ### App Diagnosticsレポートへのフィードバック **Type:** changelog | **Section:** Changelog App Diagnosticsレポートへのフィードバック 新しいApp Diagnosticsレポートのリリースを開始しました。ぜひ皆様のご意見やご感想をお寄せください。フィードバックの提供については、フォーラムの投稿を参照してください。 # App Diagnosticsレポートへのフィードバック 新しい[App Diagnosticsレポート](g://api-calls/permissions-and-errors/app-diagnostics-report/)の[リリースを開始](page/changelog/#2021-10-07-new-app-diagnostics-report)しました。ぜひ皆様のご意見やご感想をお寄せください。フィードバックの提供については、[フォーラムの投稿](https://support.box.com/hc/en-us/community/posts/4408877038483-App-Diagnostics-Report-Feedback)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2021-10-20-app-diagnostics-report-feedback](https://ja.developer.box.com/changelog/2021-10-20-app-diagnostics-report-feedback) --- ### Box `user_id`フィールドのサイズを変更 **Type:** changelog | **Section:** Changelog Box user_idフィールドのサイズを変更 すべてのPlatformユーザー (管理対象ユーザー、外部管理ユーザー、App User) の追跡に使用されるuser_idフィールドは、まもなく現在の32ビット整数ではなく、6… # Box user_idフィールドのサイズを変更 すべてのPlatformユーザー (管理対象ユーザー、外部管理ユーザー、App User) の追跡に使用される`user_id`フィールドは、まもなく現在の32ビット整数ではなく、64ビット整数の生成を開始するよう更新されます。 この更新は内部システムに影響するため、APIから生成された`user_id`文字列を32ビット整数フィールドに変換している場合には、新しい64ビット`user_id`の整数サイズをサポートするよう更新する必要があります。[APIドキュメント](endpoint://resources/user/)に従って、すべての`user_id`フィールドを文字列として保存することをお勧めします。 **Source:** [https://ja.developer.box.com/changelog/2018-08-17-box-user_id-field-size-changed](https://ja.developer.box.com/changelog/2018-08-17-box-user_id-field-size-changed) --- ### Box AI API - AWS AIモデルの提供開始 **Type:** changelog | **Section:** Changelog Box AI API - AWS AIモデルの提供開始 利用可能なAIモデルのリストが更新され、以下のAWSモデルが追加されました。 AWS Claude 3 Sonnet AWS Claude 3.5 Sonnet AWS Claude 3 Haiku AWS Titan Text Lite プレビューモードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されているデフォルトモデルを上書きできます。Box AI APIの詳細については、ガイドとAPIリファレンスを参照してください。 # Box AI API - AWS AIモデルの提供開始 [利用可能なAIモデル](g://box-ai/ai-models)のリストが更新され、以下のAWSモデルが追加されました。 - AWS Claude 3 Sonnet - AWS Claude 3.5 Sonnet - AWS Claude 3 Haiku - AWS Titan Text Lite **プレビュー**モードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されている[デフォルトモデルを上書き](g://box-ai/ai-models)できます。Box AI APIの詳細については、[ガイド](g://box-ai)と[APIリファレンス](e://post-ai-ask)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-10-24-box-ai-aws-models](https://ja.developer.box.com/changelog/2024-10-24-box-ai-aws-models) --- ### Box AI API - AWS Claude 3.7 Sonnetの提供開始 **Type:** changelog | **Section:** Changelog Box AI API - AWS Claude 3.7 Sonnetの提供開始 利用可能なAIモデルのリストが更新され、AWS Claude 3.7 Sonnetが追加されました。 プレビューモードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されているデフォルトモデルを上書きできます。Box AI APIの詳細については、ガイドとAPIリファレンスを参照してください。 # Box AI API - AWS Claude 3.7 Sonnetの提供開始 [利用可能なAIモデル](g://box-ai/ai-models)のリストが更新され、AWS Claude 3.7 Sonnetが追加されました。 **プレビュー**モードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されている[デフォルトモデルを上書き](g://box-ai/ai-models)できます。Box AI APIの詳細については、[ガイド](g://box-ai)と[APIリファレンス](e://post-ai-ask)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-02-26-aws-claude-3-7](https://ja.developer.box.com/changelog/2025-02-26-aws-claude-3-7) --- ### Box AI API - AWS Claude 4.5 Sonnetの提供開始 **Type:** changelog | **Section:** Changelog Box AI API - AWS Claude 4.5 Sonnetの提供開始 利用可能なAIモデルのリストが更新され、AWS Claude 4.5 Sonnetが追加されました。 プレビューモードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されているデフォルトモデルを上書きできます。Box AI APIの詳細については、ガイドとAPIリファレンスを参照してください。 # Box AI API - AWS Claude 4.5 Sonnetの提供開始 [利用可能なAIモデル](g://box-ai/ai-models)のリストが更新され、AWS Claude 4.5 Sonnetが追加されました。 **プレビュー**モードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されている[デフォルトモデルを上書き](g://box-ai/ai-models)できます。Box AI APIの詳細については、[ガイド](g://box-ai)と[APIリファレンス](e://post-ai-ask)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-09-30-aws-claude-sonnet-4-5](https://ja.developer.box.com/changelog/2025-09-30-aws-claude-sonnet-4-5) --- ### Box AI API - Google Gemini 2.5 Proの提供開始 (Gemini 2.5 Flash PreviewおよびPro Previewの廃止) **Type:** changelog | **Section:** Changelog Box AI API - Google Gemini 2.5 Proの提供開始 (Gemini 2.5 Flash PreviewおよびPro Previewの廃止) 利用可能なAIモデルのリストが更新され、Google Gemini 2.5 Proが追加されました。 以下のモデルは廃止されました。 Google Gemini 2.5 Flash Preview Google Gemini 2.5 Pro Preview 詳細については、廃止されたモデルを参照してください。 プレビューモードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されているデフォルトモデルを上書きできます。Box AI APIの詳細については、ガイドとAPIリファレンスを参照してください。 # Box AI API - Google Gemini 2.5 Proの提供開始 (Gemini 2.5 Flash PreviewおよびPro Previewの廃止) [利用可能なAIモデル](g://box-ai/ai-models)のリストが更新され、Google Gemini 2.5 Proが追加されました。 以下のモデルは廃止されました。 - Google Gemini 2.5 Flash Preview - Google Gemini 2.5 Pro Preview 詳細については、[廃止されたモデル](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions#expandable-1)を参照してください。 **プレビュー**モードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されている[デフォルトモデルを上書き](g://box-ai/ai-agents/ai-agent-overrides)できます。Box AI APIの詳細については、[ガイド](g://box-ai)と[APIリファレンス](e://post-ai-ask/)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-07-27-new-model-deprecated-models](https://ja.developer.box.com/changelog/2025-07-27-new-model-deprecated-models) --- ### Box AI API - 新しく利用可能になったAIモデル **Type:** changelog | **Section:** Changelog Box AI API - 新しく利用可能になったAIモデル 利用可能なAIモデルのリストが更新され、以下のモデルが追加されました。 Azure OpenAI GPT-4.1 Azure OpenAI GPT-4.1 Mini Gemini 2.5 Pro Preview Gemini 2.5 Flash Preview IBM Llama 4 Scout IBM Llama 3.2 Instruct プレビューモードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されているデフォルトモデルを上書きできます。Box AI APIの詳細については、ガイドとAPIリファレンスを参照してください。 # Box AI API - 新しく利用可能になったAIモデル [利用可能なAIモデル](g://box-ai/ai-models)のリストが更新され、以下のモデルが追加されました。 - Azure OpenAI GPT-4.1 - Azure OpenAI GPT-4.1 Mini - Gemini 2.5 Pro Preview - Gemini 2.5 Flash Preview - IBM Llama 4 Scout - IBM Llama 3.2 Instruct **プレビュー**モードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されている[デフォルトモデルを上書き](g://box-ai/ai-agents/ai-agent-overrides)できます。Box AI APIの詳細については、[ガイド](g://box-ai)と[APIリファレンス](e://post-ai-ask/)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-04-29-new-ai-models](https://ja.developer.box.com/changelog/2025-04-29-new-ai-models) --- ### Box AI API - 新しく利用可能になったAIモデル **Type:** changelog | **Section:** Changelog Box AI API - 新しく利用可能になったAIモデル 利用可能なAIモデルのリストが更新され、以下のモデルが追加されました。 Azure OpenAI o3 (ベータ) Azure OpenAI o4 mini (ベータ) xAI Grok 3 (ベータ) xAI Grok 3 mini (ベータ) プレビューモードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されているデフォルトモデルを上書きできます。Box AI APIの詳細については、ガイドとAPIリファレンスを参照してください。 # Box AI API - 新しく利用可能になったAIモデル [利用可能なAIモデル](g://box-ai/ai-models)のリストが更新され、以下のモデルが追加されました。 - Azure OpenAI o3 (ベータ) - Azure OpenAI o4 mini (ベータ) - xAI Grok 3 (ベータ) - xAI Grok 3 mini (ベータ) **プレビュー**モードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されている[デフォルトモデルを上書き](g://box-ai/ai-agents/ai-agent-overrides)できます。Box AI APIの詳細については、[ガイド](g://box-ai)と[APIリファレンス](e://post-ai-ask/)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-04-30-new-ai-models](https://ja.developer.box.com/changelog/2025-04-30-new-ai-models) --- ### Box AI API - 新しく利用可能になったAIモデルとGemini 1.5モデルの廃止 **Type:** changelog | **Section:** Changelog Box AI API - 新しく利用可能になったAIモデルとGemini 1.5モデルの廃止 利用可能なAIモデルのリストが更新され、以下のモデルが追加されました。 AWS Claude 4 Sonnet AWS Claude 4 Opus 以下のモデルは廃止されました。 Google Gemini 1.5 Flash 001 Google Gemini 1.5 Pro 001 詳細については、廃止されたモデルを参照してください。 Azure OpenAI GPT o4 Miniモデルは削除されました。 プレビューモードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されているデフォルトモデルを上書きできます。Box AI APIの詳細については、ガイドとAPIリファレンスを参照してください。 # Box AI API - 新しく利用可能になったAIモデルとGemini 1.5モデルの廃止 [利用可能なAIモデル](g://box-ai/ai-models)のリストが更新され、以下のモデルが追加されました。 - AWS Claude 4 Sonnet - AWS Claude 4 Opus 以下のモデルは廃止されました。 - Google Gemini 1.5 Flash 001 - Google Gemini 1.5 Pro 001 詳細については、[廃止されたモデル](https://cloud.google.com/vertex-ai/generative-ai/docs/learn/model-versions#expandable-1)を参照してください。 Azure OpenAI GPT o4 Miniモデルは削除されました。 **プレビュー**モードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されている[デフォルトモデルを上書き](g://box-ai/ai-agents/ai-agent-overrides)できます。Box AI APIの詳細については、[ガイド](g://box-ai)と[APIリファレンス](e://post-ai-ask)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-05-24-new-models-deprecated-models](https://ja.developer.box.com/changelog/2025-05-24-new-models-deprecated-models) --- ### Box AI API — ドキュメントのQ&Aおよびテキスト生成機能の正式リリース **Type:** changelog | **Section:** Changelog Box AI API — ドキュメントのQ&Aおよびテキスト生成機能の正式リリース Box AI APIのBox AIに質問する機能およびBox AIを使用してテキストを生成する機能が、Enterprise Plusをご利用のすべてのお客様に提供されるようになりました。 Box AI APIを使用すると、カスタムアプリケーション内でBox AI機能を利用できます。たとえば、Box AIの質疑応答機能をサードパーティ製アプリケーションに実装したり、自社製品のコンテンツエディタ内で直接コンテンツを生成したりできます。また、指定したドキュメントからメタデータを抽出することもできます。 メタデータ抽出に関連したエンドポイントは、現在、BoxのMain Beta Agreementに従い提供されるベータ機能のため、利用可能な機能は変更される可能性があります。 # Box AI API — ドキュメントのQ&Aおよびテキスト生成機能の正式リリース Box AI APIの[Box AIに質問する](g://box-ai/ai-tutorials/ask-questions/)機能および[Box AIを使用してテキストを生成する](g://box-ai/ai-tutorials/generate-text/)機能が、**Enterprise Plus**をご利用のすべてのお客様に提供されるようになりました。 [Box AI API](g://box-ai)を使用すると、カスタムアプリケーション内でBox AI機能を利用できます。たとえば、Box AIの質疑応答機能をサードパーティ製アプリケーションに実装したり、自社製品のコンテンツエディタ内で直接コンテンツを生成したりできます。また、指定したドキュメントからメタデータを抽出することもできます。 *メタデータ抽出に関連したエンドポイントは、現在、BoxのMain Beta Agreementに従い提供されるベータ機能のため、利用可能な機能は変更される可能性があります。* 現時点では、Box AI機能を使用すると、以下のことが可能です。 - 質問に対する応答を取得する。 - ドキュメントの要約を取得する。 - ドキュメント内で使用できるテキストを生成する。 - さらに高い自由度でプロンプトを使用し、指定したファイルから柔軟な方法でメタデータを抽出する。 - 指定したファイルから、[メタデータテンプレート](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates)または`fields`構造を使用してメタデータを抽出する。 - デフォルトのAPIモデルの構成を取得して上書きする。 Box AIの詳細については、[Box AI APIの開発者向けガイド](g://box-ai)を参照してください。また、Box AI APIの詳細については、[APIリファレンス](e://ai-agent-ask/)を参照してください。 ## Box AI for UI Elements [Box AI for UI Elements](g://embed/ui-elements/preview#box-ai-ui-element)では、Box AIのドキュメントのQ&A機能とテキスト生成機能で[コンテンツプレビュー](g://embed/ui-elements/preview)を強化します。Box AI for UI Elementsの強化により、ユーザーは、カスタムアプリケーションにAI機能を埋め込み、質問への回答、ドキュメントの要約、引用情報の追加、会話履歴の使用、書式設定のサポートのような操作を円滑に進めることができます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-10-22-box-ai-text-gen-ask-ga](https://ja.developer.box.com/changelog/2024-10-22-box-ai-text-gen-ask-ga) --- ### Box AI API — 利用可能な新しいAIモデルとデフォルトモデルの更新 **Type:** changelog | **Section:** Changelog Box AI API — 利用可能な新しいAIモデルとデフォルトモデルの更新 利用可能なAIモデルのリストが更新され、以下のモデルが追加されました。 Mistral Medium 3 Mistral Small 3.1 Claude Haiku 4.5 また、Box AI (Box AI for Hubs、Box AI for Documents、Box AI for Notes Q&A) のデフォルトモデルがOpenAI GPT 5になりました。 # Box AI API — 利用可能な新しいAIモデルとデフォルトモデルの更新 [利用可能なAIモデル](g://box-ai/ai-models)のリストが更新され、以下のモデルが追加されました。 - [Mistral Medium 3](g://box-ai/ai-models/ibm-mistral-medium-3-model-card) - [Mistral Small 3.1](g://box-ai/ai-models/ibm-mistral-small-3-1-model-card) - [Claude Haiku 4.5](g://box-ai/ai-models/aws-claude-4-5-haiku-model-card) また、Box AI (Box AI for Hubs、Box AI for Documents、Box AI for Notes Q&A) のデフォルトモデルが[OpenAI GPT 5](g://box-ai/ai-models/openai-gpt-5-model-card)になりました。 **注:** **プレビュー**モードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されている[デフォルトモデルを上書き](g://box-ai/ai-agents/ai-agent-overrides)できます。Box AI APIの詳細については、[ガイド](g://box-ai)と[APIリファレンス](e://post-ai-ask)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-10-23-new-ai-models](https://ja.developer.box.com/changelog/2025-10-23-new-ai-models) --- ### Box AI API — 利用可能な新しいAIモデルとデフォルトモデルの更新 **Type:** changelog | **Section:** Changelog Box AI API — 利用可能な新しいAIモデルとデフォルトモデルの更新 利用可能なAIモデルのリストが更新され、以下のモデルが追加されました。 OpenAI GPT-5.1 OpenAI GPT-5 mini Gemini 3 Pro Llama 4 Maverick # Box AI API — 利用可能な新しいAIモデルとデフォルトモデルの更新 [利用可能なAIモデル](g://box-ai/ai-models)のリストが更新され、以下のモデルが追加されました。 - [OpenAI GPT-5.1](g://box-ai/ai-models/openai-gpt-5-1-model-card) - [OpenAI GPT-5 mini](g://box-ai/ai-models/openai-gpt-5-mini-model-card) - [Gemini 3 Pro](g://box-ai/ai-models/google-gemini-3-pro-model-card) - [Llama 4 Maverick](g://box-ai/ai-models/ibm-llama-4-maverick-model-card) さらに、デフォルトのAIモデルは、Box AI機能に対応するために更新されました。 - Box AI抽出エージェント (強化) のデフォルトモデルが[Gemini 2.5 Pro](g://box-ai/ai-models/google-gemini-2-5-pro-model-card)になりました。 - Box AI抽出エージェント (標準) のデフォルトモデルが[Gemini 2.5 Flash](g://box-ai/ai-models/google-gemini-2-5-flash-model-card)になりました。 - Box AI for Hubs、Box AI for Documents、Box AI for Notes Q&AのBox AI Advancedのデフォルトモデルが[OpenAI GPT-5](g://box-ai/ai-models/openai-gpt-5-model-card)になりました。 - Box AI for Hubs、Box AI for Documents、Box AI for Notes Q&Aのデフォルトモデルが[OpenAI GPT-5 mini](g://box-ai/ai-models/openai-gpt-5-mini-model-card)になりました。 **注:** **プレビュー**モードで提供されているモデルはパフォーマンスが大規模にテストされておらず、現状のままでの利用となるため、モデル/出力の品質、可用性、精度にはばらつきがある可能性があります。 提供されているモデルを使用して、AIエージェントの構成で使用されている[デフォルトモデルを上書き](g://box-ai/ai-agents/ai-agent-overrides)できます。Box AI APIの詳細については、[ガイド](g://box-ai)と[APIリファレンス](e://post-ai-ask)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-11-27-new-ai-models](https://ja.developer.box.com/changelog/2025-11-27-new-ai-models) --- ### Box AI APIとBox AI Dev Zoneの導入 **Type:** changelog | **Section:** Changelog Box AI APIとBox AI Dev Zoneの導入 Box AI APIを使用すると、カスタムアプリケーション内でBox AI機能を利用できます。たとえば、Box AIの質疑応答機能をサードパーティ製アプリケーションに実装したり、自社製品のコンテンツエディタ内で直接コンテンツを生成したりできます。 Box AI APIとBox AI for UI Elementsはベータ機能のため、利用可能な機能は変更される可能性があります。Box AIの機能は、Enterprise Plusをご利用のすべてのお客様が利用できます。 # Box AI APIとBox AI Dev Zoneの導入 Box AI APIを使用すると、カスタムアプリケーション内でBox AI機能を利用できます。たとえば、Box AIの質疑応答機能をサードパーティ製アプリケーションに実装したり、自社製品のコンテンツエディタ内で直接コンテンツを生成したりできます。 *Box AI APIとBox AI for UI Elementsはベータ機能のため、利用可能な機能は変更される可能性があります。Box AIの機能は、**Enterprise Plus**をご利用のすべてのお客様が利用できます。* 現在は、Box AIに対して、質問への回答、ドキュメンのコンテンツの要約、ドキュメントで使用できるテキストの生成を求めることができます。Box AIの詳細については、[Box AI APIの開発者向けガイド](g://box-ai)をご確認ください。また、詳細については、APIリファレンスをご確認ください。 ## Box AI Developer Zone Boxでは、Box AI APIと一緒に、Developerドキュメントのデモページを新しくリリースしました。[Box AI Dev Zone](pages/ai-dev-zone)では、対話型の優れたエクスペリエンスを通じてBox AI APIを確認できます。ユースケース、プロンプトと応答の例、サンプルコードが用意されています。 ## Box AI for UI Elements [Box AI for UI Elements](g://embed/ui-elements/preview#box-ai-ui-element)では、AIの質疑応答機能を使用して[コンテンツプレビュー](g://embed/ui-elements/preview)ヘッダーを強化します。この新しいBox AI for UI Elementsにより、ユーザーは、カスタムアプリケーションにAI機能を埋め込み、質問への回答やドキュメントの要約のような操作を円滑に進めることができます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-05-02-introducing-box-ai](https://ja.developer.box.com/changelog/2024-05-02-introducing-box-ai) --- ### Box AI APIのデフォルトモデルの更新 **Type:** changelog | **Section:** Changelog Box AI APIのデフォルトモデルの更新 Box AI Platform APIのPOST /2.0/ai/askエンドポイントが新しいデフォルトモデルに更新され、単一ドキュメントと複数ドキュメントの両方のモードがAzureのgpt-4o-miniに基づくようになりました。 注: Box AI Platform APIは、現在、BoxのMain Beta Agreementに従い提供されるベータ機能のため、利用可能な機能は変更される可能性があります。Box AI Platform APIは、Enterprise Plusをご利用のすべてのお客様が利用できます。 # Box AI APIのデフォルトモデルの更新 Box AI Platform APIの`POST /2.0/ai/ask`エンドポイントが新しいデフォルトモデルに更新され、単一ドキュメントと複数ドキュメントの両方のモードがAzureの`gpt-4o-mini`に基づくようになりました。 **注**: Box AI Platform APIは、現在、BoxのMain Beta Agreementに従い提供されるベータ機能のため、利用可能な機能は変更される可能性があります。Box AI Platform APIは、Enterprise Plusをご利用のすべてのお客様が利用できます。 [デフォルトのエージェント構成](g://box-ai/ai-agents/get-agent-default-config)と[サポートされているAIモデル](g://box-ai/ai-models)の詳細については、開発者向けガイドを参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://community.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-09-23-box-ai-api-defaul-model-update](https://ja.developer.box.com/changelog/2024-09-23-box-ai-api-defaul-model-update) --- ### Box AI Platform API (ベータ版) によるメタデータ抽出の提供開始 **Type:** changelog | **Section:** Changelog Box AI Platform API (ベータ版) によるメタデータ抽出の提供開始 最近この機能が追加されたBox AI Platform APIを使用すると、指定した入力データからメタデータを抽出できます。たとえば、請求書から金融情報を抽出したり、診断書から患者のデータを抽出したりすることができます。 注: Box AI Platform APIは、現在、BoxのMain Beta Agreementに従い提供されるベータ機能のため、利用可能な機能は変更される可能性があります。Box AI Platform APIは、Enterprise Plusをご利用のすべてのお客様が利用できます。 # Box AI Platform API (ベータ版) によるメタデータ抽出の提供開始 最近この機能が追加されたBox AI Platform APIを使用すると、指定した入力データからメタデータを抽出できます。たとえば、請求書から金融情報を抽出したり、診断書から患者のデータを抽出したりすることができます。 **注**: Box AI Platform APIは、現在、BoxのMain Beta Agreementに従い提供されるベータ機能のため、利用可能な機能は変更される可能性があります。Box AI Platform APIは、Enterprise Plusをご利用のすべてのお客様が利用できます。 以下のオプションがあります。 [`POST /2.0/ai_extract`](e://post-ai-extract)エンドポイントを使用すると、指定したファイルから自由な形式でメタデータを抽出できます。つまり、プロンプトの作成の自由度が増すため、リクエストを実行するのにメタデータテンプレートは必要ありません。[`POST /2.0/ai_extract_structured`](e://post-ai-extract-structured)エンドポイントを使用すると、[メタデータテンプレート](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates)または`fields`構造を使用して、指定したファイルからメタデータを抽出できます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-09-17-box-ai-extract](https://ja.developer.box.com/changelog/2024-09-17-box-ai-extract) --- ### Box AI Studio API **Type:** changelog | **Section:** Changelog Box AI Studio API Enterprise Advancedをご利用のすべてのお客様に、Box AI Studio APIの提供を開始しました。Box AI Studioを使用すると、ビジネスニーズに最適なカスタムAIエージェントを作成して管理できます。たとえば、コンプライアンスコンサルタントとして機能し、特定のコンプライアンスルールを念頭に置いて顧客のドキュメントに関する質問に回答するAIエージェントを作成できます。 # Box AI Studio API Enterprise Advancedをご利用のすべてのお客様に、Box AI Studio APIの提供を開始しました。[Box AI Studio](https://support.box.com/hc/en-us/articles/37228079461267-Enabling-Box-AI-Studio-and-Managing-Agents)を使用すると、ビジネスニーズに最適なカスタムAIエージェントを作成して管理できます。たとえば、コンプライアンスコンサルタントとして機能し、特定のコンプライアンスルールを念頭に置いて顧客のドキュメントに関する質問に回答するAIエージェントを作成できます。 Box AI Studio APIを使用すると、以下を実行できます。 - すべてのAIエージェントのリストを取得する - AIエージェントの詳細を取得する - AIエージェントを新規作成する - 既存のAIエージェントを更新する - AIエージェントを削除する この機能の詳細については、Box AI Studio APIの開発者向け[ガイド](g://ai-studio/getting-started-ai-studio)と[APIリファレンス](e://get-ai-agents)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://community.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-02-18-box-ai-studio](https://ja.developer.box.com/changelog/2025-02-18-box-ai-studio) --- ### Box Android SDK `v4.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Android SDK v4.2.0のリリース このバージョンは、TLS 1.0のサポート終了後に16台以上のデバイスをサポートすることを目的としています。 # Box Android SDK v4.2.0のリリース このバージョンは、TLS 1.0のサポート終了後に16台以上のデバイスをサポートすることを目的としています。 **Source:** [https://ja.developer.box.com/changelog/2018-06-18-box-android-sdk-v420-released](https://ja.developer.box.com/changelog/2018-06-18-box-android-sdk-v420-released) --- ### Box Android SDK `v4.2.3`のリリース **Type:** changelog | **Section:** Changelog Box Android SDK v4.2.3のリリース さまざまなバグ修正と安定性の改善が含まれます。 # Box Android SDK v4.2.3のリリース さまざまなバグ修正と安定性の改善が含まれます。 **Source:** [https://ja.developer.box.com/changelog/2019-03-18-box-android-sdk-v423-released](https://ja.developer.box.com/changelog/2019-03-18-box-android-sdk-v423-released) --- ### Box APIを使用したZIPアーカイブのダウンロード **Type:** changelog | **Section:** Changelog Box APIを使用したZIPアーカイブのダウンロード 最近リリースされたガイドで、大量のデータのダウンロードについて説明しています。Box APIを使用して、ファイル、フォルダ、またはその両方を含むZIP… # Box APIを使用したZIPアーカイブのダウンロード 最近リリースされた[ガイド](g://downloads/zip-archive)で、大量のデータのダウンロードについて説明しています。Box APIを使用して、ファイル、フォルダ、またはその両方を含むZIPアーカイブを[作成](e://post-zip-downloads)および[ダウンロード](e://get-zip-downloads-id-content)できます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-03-08-downloading-zip-archives](https://ja.developer.box.com/changelog/2023-03-08-downloading-zip-archives) --- ### Box CLI `v1.2.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v1.2.0のリリース 次のコマンドの一括操作が作成されました: ユーザー 更新 グループ 作成 更新 削除 グループメンバーシップ 作成 更新 削除 コラボレーション 追加 更新 削除 イベントタイプによるフィルタをbox events getおよびbox… # Box CLI v1.2.0のリリース - 次のコマンドの一括操作が作成されました: - ユーザー - 更新 - グループ - 作成 - 更新 - 削除 - グループメンバーシップ - 作成 - 更新 - 削除 - コラボレーション - 追加 - 更新 - 削除 - イベントタイプによるフィルタを`box events get`および`box events poll`に追加 - ファイルやフォルダからメタデータテンプレートを削除するコマンドを追加 - 基になる`box-windows-sdk`を`v3.6.0`に昇格 - ファイルやフォルダのメタデータへの浮動小数点型の作成を妨げるバグが修正されました。 - `User-Agent` HTTPヘッダーが正しく割り当てられないバグが修正されました。 - すべてのエラーが`stderr`に報告されないバグを修正しました。 - メタデータテンプレートの一括作成に関するバグが修正されました。 - グループの`membership`コマンドでコマンドが重複するバグが修正されました。 - ユーザーの`tracking_codes`に間違ったオブジェクトが作成されるバグが修正されました。 - ユーザーの一括作成時にCSVファイルのIDが要求されるバグが修正されました。 **Source:** [https://ja.developer.box.com/changelog/2018-04-11-box-cli-v120-release](https://ja.developer.box.com/changelog/2018-04-11-box-cli-v120-release) --- ### Box CLI `v1.4.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v1.4.0のリリース コラボレーションの有効期限を更新するオプションを追加 # Box CLI v1.4.0のリリース - コラボレーションの有効期限を更新するオプションを追加 **Source:** [https://ja.developer.box.com/changelog/2019-04-10-box-cli-v140-release](https://ja.developer.box.com/changelog/2019-04-10-box-cli-v140-release) --- ### Box CLI `v2.2.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v2.2.0のリリース v2.2.0リリースの変更ログを更新 (#143) 96b49d5 不要な依存関係を削除 (#141) 7ac5563 サードパーティライセンスのテキストを記録 (#142) 47b78f… # Box CLI v2.2.0のリリース - `v2.2.0`リリースの変更ログを更新 ([#143](https://github.com/box/boxcli/pull/143)) [`96b49d5`](https://github.com/box/boxcli/commit/96b49d5) - 不要な依存関係を削除 ([#141](https://github.com/box/boxcli/pull/141)) [`7ac5563`](https://github.com/box/boxcli/commit/7ac5563) - サードパーティライセンスのテキストを記録 ([#142](https://github.com/box/boxcli/pull/142)) [`47b78f1`](https://github.com/box/boxcli/commit/47b78f1) - コマンドドキュメントを別のページに作成 ([#139](https://github.com/box/boxcli/pull/139)) [`01534f1`](https://github.com/box/boxcli/commit/01534f1) - 変換された委任コマンドで一括入力エラーをキャッチ ([#134](https://github.com/box/boxcli/pull/134)) [`5cd5eee`](https://github.com/box/boxcli/commit/5cd5eee) - メタデータ設定コマンドを追加 ([#136](https://github.com/box/boxcli/pull/136)) [`efa33ed`](https://github.com/box/boxcli/commit/efa33ed) - Issueテンプレートを追加 ([#138](https://github.com/box/boxcli/pull/138)) [`a5cbddf`](https://github.com/box/boxcli/commit/a5cbddf) - 委任されたコマンドでの一括入力中に発生する重複呼び出しを修正 ([#133](https://github.com/box/boxcli/pull/133)) [`ba3d65a`](https://github.com/box/boxcli/commit/ba3d65a) - コレクションへの`web_links`の追加を修正 ([#132](https://github.com/box/boxcli/pull/132)) [`8fc2023`](https://github.com/box/boxcli/commit/8fc2023) - 検索の並べ替えフラグを追加 ([#131](https://github.com/box/boxcli/pull/131)) [`57f8d3d`](https://github.com/box/boxcli/commit/57f8d3d) [`v2.1.0...v2.2.0`](https://github.com/box/boxcli/compare/%60v2.1.0...v2.2.0%60) **Source:** [https://ja.developer.box.com/changelog/2019-05-10-box-cli-v220-release](https://ja.developer.box.com/changelog/2019-05-10-box-cli-v220-release) --- ### Box CLI `v2.3.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v2.3.0のリリース 変更ログ v2.2.0...v2.3.0 # Box CLI v2.3.0のリリース [変更ログ](https://github.com/box/boxcli/blob/master/CHANGELOG.md#230-2019-05-23) [`v2.2.0...v2.3.0`](https://github.com/box/boxcli/compare/%60v2.2.0...v2.3.0%60) **Source:** [https://ja.developer.box.com/changelog/2019-05-23-box-cli-v230-release](https://ja.developer.box.com/changelog/2019-05-23-box-cli-v230-release) --- ### Box CLI `v2.4.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v2.4.0のリリース 変更ログ コラボレーションロールを所有者に更新する際の出力を修正 (#165) f8be639 異種コレクションのすべての列をCSVに出力 (#164) a8dda02 plugin-helpを更新してlodash.template… # Box CLI v2.4.0のリリース [変更ログ](https://github.com/box/boxcli/blob/master/CHANGELOG.md#240-2019-08-29) - コラボレーションロールを所有者に更新する際の出力を修正 ([#165](https://github.com/box/boxcli/pull/165)) [`f8be639`](https://github.com/box/boxcli/commit/f8be639) - 異種コレクションのすべての列をCSVに出力 ([#164](https://github.com/box/boxcli/pull/164)) [`a8dda02`](https://github.com/box/boxcli/commit/a8dda02) - plugin-helpを更新して`lodash.template`に関する警告を解決 ([#160](https://github.com/box/boxcli/pull/160)) [`3730bc5`](https://github.com/box/boxcli/commit/3730bc5) - `lodash`を4.17.11から4.17.13に昇格 ([#156](https://github.com/box/boxcli/pull/156)) [`d035e74`](https://github.com/box/boxcli/commit/d035e74) - 外部App User IDの設定のサポートを追加 ([#153](https://github.com/box/boxcli/pull/153)) [`d68b61b`](https://github.com/box/boxcli/commit/d68b61b) - `js-yaml`を3.13.1に更新 ([#151](https://github.com/box/boxcli/pull/151)) [`13745df`](https://github.com/box/boxcli/commit/13745df) [`v2.3.0...v2.4.0`](https://github.com/box/boxcli/compare/%60v2.3.0...v2.4.0%60) **Source:** [https://ja.developer.box.com/changelog/2019-08-29-box-cli-v240-release](https://ja.developer.box.com/changelog/2019-08-29-box-cli-v240-release) --- ### Box CLI `v2.5.1`のリリース **Type:** changelog | **Section:** Changelog Box CLI v2.5.1のリリース 変更ログ stderrへのエラー以外の出力を抑制する--quietフラグを追加 (#167) 27045c6 box folders:updateの--restrict-collaboration… # Box CLI v2.5.1のリリース [変更ログ](https://github.com/box/boxcli/blob/master/CHANGELOG.md#251-2020-04-14) - `stderr`へのエラー以外の出力を抑制する`--quiet`フラグを追加 ([#167](https://github.com/box/boxcli/pull/167)) [`27045c6`](https://github.com/box/boxcli/commit/27045c6) - `box folders:update`の`--restrict-collaboration`フラグのバグを修正。これまで、このフラグは、trueとして渡された場合にコラボレーションが制限されず、falseとして渡された場合にコラボレーションが制限されていました ([#175](https://github.com/box/boxcli/pull/175)) [`e6e1120`](https://github.com/box/boxcli/commit/e6e1120) - ごみ箱内の項目を復元する`box trash:restore`とごみ箱内の項目の情報を取得する`box trash:get`を追加 ([#179](https://github.com/box/boxcli/pull/179)) [`74db947`](https://github.com/box/boxcli/commit/74db947) - 単一のコマンドで複数回指定できるフラグが一括コマンドのコマンドラインで渡されないバグを修正 ([#183](https://github.com/box/boxcli/pull/183)) [`63db0ac`](https://github.com/box/boxcli/commit/63db0ac) - **注**: 新しいリリースプロセスの開発のため、バージョン2.5.0はスキップされました [`v2.4.0...v2.5.1`](https://github.com/box/boxcli/compare/%60v2.4.0...v2.5.1%60) **Source:** [https://ja.developer.box.com/changelog/2020-04-21-box-cli-v251-release](https://ja.developer.box.com/changelog/2020-04-21-box-cli-v251-release) --- ### Box CLI `v2.6.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v2.6.0のリリース 変更ログ Zip機能の追加 (#203) 1953639 http、https、socks、pacプロトコルのプロキシサポートの追加。プロキシ設定は、box configure:settings (#202) 21671c… # Box CLI v2.6.0のリリース [変更ログ](https://github.com/box/boxcli/blob/master/CHANGELOG.md#260-2020-08-20) - Zip機能の追加 ([#203](https://github.com/box/boxcli/issues/203)) [`1953639`](https://github.com/box/boxcli/commit/1953639fe78def22e9c9d392e784577fc089f842) - `http`、`https`、`socks`、`pac`プロトコルのプロキシサポートの追加。プロキシ設定は、`box configure:settings` ([#202](https://github.com/box/boxcli/issues/202)) [`21671c8`](https://github.com/box/boxcli/commit/21671c854a3fe835eb46df6e640fa2237d23a313)で確認できます。 - Windowsでレポートを保存する際に発生するファイル名の問題を修正 ([#195](https://github.com/box/boxcli/issues/195)) [`31853d3`](https://github.com/box/boxcli/commit/31853d30e9e20a1dc6967a8277fa38165ca671f4) [https://github.com/box/boxcli/compare/v2.5.1...v2.6.0](https://github.com/box/boxcli/compare/v2.5.1...v2.6.0) **Source:** [https://ja.developer.box.com/changelog/2020-08-21-box-cli-v260-released](https://ja.developer.box.com/changelog/2020-08-21-box-cli-v260-released) --- ### Box CLI `v2.7.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v2.7.0のリリース 新機能と機能強化: 以前非表示になっていたコマンドcollaborations:add、shared-links:update、shared-links:delete、users:searchが使用可能になりました (#21… # Box CLI v2.7.0のリリース **新機能と機能強化:** - 以前非表示になっていたコマンド`collaborations:add`、`shared-links:update`、`shared-links:delete`、`users:search`が使用可能になりました ([#211](https://github.com/box/boxcli/issues/211)) - `filter_term`パラメータを`groups:list`に追加 ([#210](https://github.com/box/boxcli/issues/210)) **バグ修正:** - プロキシ設定に関するバグを修正 ([#213](https://github.com/box/boxcli/issues/213)) **Source:** [https://ja.developer.box.com/changelog/2020-11-04-box-cli-v270-released](https://ja.developer.box.com/changelog/2020-11-04-box-cli-v270-released) --- ### Box CLI `v2.8.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v2.8.0のリリース 警告: (#217) の変更により、Box項目の詳細が一部のコマンドに対して返されるようになりました。 新機能と機能強化: 一括コマンドの配列の内容を出力 (#217) バグ修正: プロキシ設定に関するバグを修正 (#218) # Box CLI v2.8.0のリリース **警告:** - ([#217](https://github.com/box/boxcli/pull/217)) の変更により、Box項目の詳細が一部のコマンドに対して返されるようになりました。 **新機能と機能強化:** - 一括コマンドの配列の内容を出力 ([#217](https://github.com/box/boxcli/pull/217)) **バグ修正:** - プロキシ設定に関するバグを修正 ([#218](https://github.com/box/boxcli/pull/218)) **Source:** [https://ja.developer.box.com/changelog/2020-12-03-box-cli-v280-released](https://ja.developer.box.com/changelog/2020-12-03-box-cli-v280-released) --- ### Box CLI `v2.9.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v2.9.0のリリース 新機能と機能強化 メタデータテンプレートの複数選択フィールドにオプションを追加する機能を追加 (#230) フォルダロック機能を追加 (#232) 共有リンク項目を取得するための検索パラメータのサポートを追加 (#23… # Box CLI v2.9.0のリリース ## 新機能と機能強化 - メタデータテンプレートの複数選択フィールドにオプションを追加する機能を追加 ([#230](https://github.com/box/boxcli/pull/230)) - フォルダロック機能を追加 ([#232](https://github.com/box/boxcli/pull/232)) - 共有リンク項目を取得するための検索パラメータのサポートを追加 ([#233](https://github.com/box/boxcli/pull/233)) ## バグ修正 - ストリーム位置のフラグが存在しない場合に発生するイベントコマンドのバグを修正 ([#234](https://github.com/box/boxcli/pull/234)) - folders:uploadコマンドでフォルダのコンテンツをアップロードできないバグを修正 ([#231](https://github.com/box/boxcli/issues/231)) **Source:** [https://ja.developer.box.com/changelog/2021-02-26-box-cli-v290-released](https://ja.developer.box.com/changelog/2021-02-26-box-cli-v290-released) --- ### Box CLI `v3.0.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.0.0のリリース Box CLIのv3.0.0をリリースしました。このリリースでは、OAuth 2.0サポートの追加のほか、いくつかの機能強化を実施しました。 # Box CLI v3.0.0のリリース [Box CLI](https://github.com/box/boxcli/releases)の`v3.0.0`をリリースしました。このリリースでは、OAuth 2.0サポートの追加のほか、いくつかの機能強化を実施しました。 CLIの機能強化やドキュメントの変更に加え、新しく[YouTube動画](https://www.youtube.com/watch?v=whxT3Bdx3E0&list=PL0F3BD5B64D6A39F1) (英語) もリリースしました。この動画では、Box CLIのクイックスタートガイドを使用して、5分ほどでCLIを利用する方法を紹介しています。 ## Developerドキュメントの変更 - OAuth 2.0認証方法の使用について[Box CLIのクイックスタートガイド](g://cli/quick-start)を更新 - [JWTの設定手順](g://cli/cli-docs/jwt-cli)を付録に移動 ## 新機能と機能強化 - OAuthを使用したログインのサポートを追加 ([#240](https://github.com/box/boxcli/pull/240)) - 機能: ファイルの一括処理時やトークンがある場合にas-userフラグをサポート ([#270](https://github.com/box/boxcli/pull/270)) - メタデータテンプレートの`copyInstanceOnItemCopy`フィールドのサポートを追加 ([#239](https://github.com/box/boxcli/pull/239)) - 検索の`mdfilter`の等価チェックにサポートに関する注記を追加 ([#253](https://github.com/box/boxcli/pull/253)) - Box Sign APIのサポートを追加 ([#258](https://github.com/box/boxcli/pull/258)) - メタデータクエリAPIのサポートを追加 ([#259](https://github.com/box/boxcli/pull/259)) - 修正: `folder:collaborations:add`が`role`を必須のフラグに設定 (`SDK-1070`) ([#261](https://github.com/box/boxcli/pull/261)) - 依存関係のマイナーアップグレード - リテンションの対象となっているファイルおよびファイルバージョン用に新しいAPIを追加 ([#250](https://github.com/box/boxcli/issues/250)) - 署名リクエストのサポートを追加 ([#258](https://github.com/box/boxcli/issues/258)) - メタデータクエリAPIをサポート ([#259](https://github.com/box/boxcli/issues/259)) - 作業: 従来のコミットを適用 ([#268](https://github.com/box/boxcli/issues/268)) - 機能: ファイルの一括処理時やトークンがある場合にas-userフラグをサポート ([#270](https://github.com/box/boxcli/issues/270)) ## 重大な変更 - Node 10のサポートを終了 - 不適切な用語の変更 ([#247](https://github.com/box/boxcli/issues/247)、[#252](https://github.com/box/boxcli/issues/252)) ## バグ修正 - 修正: folder:collaborations:addがroleを必須のフラグに設定 ([#261](https://github.com/box/boxcli/issues/261)) - 修正: 共有リンクの削除の例を修正 ([#262](https://github.com/box/boxcli/issues/262)) ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。また、それぞれのGitHubリポジトリでSDKチームにお問い合わせいただくことも可能です。 **Source:** [https://ja.developer.box.com/changelog/2022-02-01-box-cli-v300-released](https://ja.developer.box.com/changelog/2022-02-01-box-cli-v300-released) --- ### Box CLI `v3.1.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.1.0のリリース 新機能と機能強化 検索に、すべての結果を返す--allフラグを追加 (#336) (23ea0a5) OAuth2ログインに一意のstateパラメータを追加 (#292) (5ce6a40) ベースURLの変更を許可 (#303) (e… # Box CLI v3.1.0のリリース ### 新機能と機能強化 - 検索に、すべての結果を返す--allフラグを追加 ([#336](https://github.com/box/boxcli/issues/336)) ([`23ea0a5`](https://github.com/box/boxcli/commit/23ea0a5c5b065ea3b91b73b64bb7b267a6ff0a18)) - `OAuth2`ログインに一意のstateパラメータを追加 ([#292](https://github.com/box/boxcli/issues/292)) ([`5ce6a40`](https://github.com/box/boxcli/commit/5ce6a40b4c6e2fc78b2b598a8b1529200c63902e)) - ベースURLの変更を許可 ([#303](https://github.com/box/boxcli/issues/303)) ([`e284059`](https://github.com/box/boxcli/commit/e28405971ebcf2c2284bb875b40ceb7eaebb41c4)) - コマンドラインから`oauth`承認を取得 ([#299](https://github.com/box/boxcli/issues/299)) ([`18c88bb`](https://github.com/box/boxcli/commit/18c88bb6835509394b92eb0685e3a9306ede8984)) - macOSとWindowsにネイティブの資格情報ストレージを使用 ([#295](https://github.com/box/boxcli/issues/295)) ([`74c4922`](https://github.com/box/boxcli/commit/74c492271ebc54e15500abbaaa2c7aac32be5070)) ### バグ修正 - `users:transfer-content`でquietフラグを考慮 ([#288](https://github.com/box/boxcli/issues/288)) ([`1d0bbab`](https://github.com/box/boxcli/commit/1d0bbab652bf74a59c8486fc4d5eac415161254c)) - `copy-instance-on-item-copy`フラグを正しく渡す ([#285](https://github.com/box/boxcli/issues/285)) ([`cd4fbf4`](https://github.com/box/boxcli/commit/cd4fbf4f746b83c2b066efb31b2e2952dba1312d)) - webhookトリガーの更新を修正 ([#297](https://github.com/box/boxcli/issues/297)) ([`09e94c3`](https://github.com/box/boxcli/commit/09e94c32ed8e4243e76dd19e67b6d1c17c2cdc04)) - `json.stringify`の置き換えにより、`json`フラグ使用時の大量の出力をサポート ([#328](https://github.com/box/boxcli/issues/328)) ([`1204f2c`](https://github.com/box/boxcli/commit/1204f2c146c713124060730e0554ab2f2dde27fa)) - Boxの検索でlimitフラグをサポート ([#323](https://github.com/box/boxcli/issues/323)) ([`0009a77`](https://github.com/box/boxcli/commit/0009a77ee3fc4b72ef01bbbeff0ea588c10a6f89))、[#322](https://github.com/box/boxcli/issues/322)をクローズ - 複数のリダイレクトURIでのOAuthをサポート ([#302](https://github.com/box/boxcli/issues/302)) ([`9fe216e`](https://github.com/box/boxcli/commit/9fe216e8d2f59e4375a4b7c766844366f7166a0a)) **Source:** [https://ja.developer.box.com/changelog/2022-06-17-box-cli-v310-released](https://ja.developer.box.com/changelog/2022-06-17-box-cli-v310-released) --- ### Box CLI `v3.10.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.10.0のリリース 新機能と機能強化 ユーザー追跡コードのサポートを更新 (#489) (159e6d0) # Box CLI v3.10.0のリリース ### 新機能と機能強化 - ユーザー追跡コードのサポートを更新 ([#489](https://github.com/box/boxcli/issues/489)) ([`159e6d0`](https://github.com/box/boxcli/commit/159e6d07fa91f2b199ca85207a4cad5cf4274f0e)) **Source:** [https://ja.developer.box.com/changelog/2023-08-16-box-cli-v3100-released](https://ja.developer.box.com/changelog/2023-08-16-box-cli-v3100-released) --- ### Box CLI `v3.12.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.12.0のリリース 新機能と機能強化 Signテンプレートをサポート (#496) (955106f) # Box CLI v3.12.0のリリース ### 新機能と機能強化 - Signテンプレートをサポート ([#496](https://github.com/box/boxcli/issues/496)) ([`955106f`](https://github.com/box/boxcli/commit/955106ffa5d7938c567e5440868f2ec3c87045ce)) **Source:** [https://ja.developer.box.com/changelog/2023-09-18-box-cli-v3120-released](https://ja.developer.box.com/changelog/2023-09-18-box-cli-v3120-released) --- ### Box CLI `v3.12.1`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.12.1のリリース バグ修正 ユーザーの取得でオフセットベースのページネーションを強制 (#504) (9bed083) # Box CLI v3.12.1のリリース ### バグ修正 - ユーザーの取得でオフセットベースのページネーションを強制 ([#504](https://github.com/box/boxcli/issues/504)) ([`9bed083`](https://github.com/box/boxcli/commit/9bed083d59b2386d045619fdf2f3ea915e44d231)) **Source:** [https://ja.developer.box.com/changelog/2023-11-06-box-cli-v3121-released](https://ja.developer.box.com/changelog/2023-11-06-box-cli-v3121-released) --- ### Box CLI `v3.12.2`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.12.2のリリース バグ修正 box-node-sdkを昇格 (#510) (2621f41) # Box CLI v3.12.2のリリース ### バグ修正 - `box-node-sdk`を昇格 ([#510](https://github.com/box/boxcli/issues/510)) ([`2621f41`](https://github.com/box/boxcli/commit/2621f4121999ff6e9d0cc0c391dfd3aa93aefe49)) **Source:** [https://ja.developer.box.com/changelog/2023-11-08-box-cli-v3122-released](https://ja.developer.box.com/changelog/2023-11-08-box-cli-v3122-released) --- ### Box CLI `v3.13.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.13.0のリリース 新機能と機能強化 UseDisplayNameフラグをメタデータ抽出スクリプトに追加 (#515) (b900fdb) 例外をスローする際のコンテキスト情報を追加 (#519) (b99a58d… # Box CLI v3.13.0のリリース ### 新機能と機能強化 - `UseDisplayName`フラグをメタデータ抽出スクリプトに追加 ([#515](https://github.com/box/boxcli/issues/515)) ([`b900fdb`](https://github.com/box/boxcli/commit/b900fdb984345c0fdfeb09e531f6a358ad8c3b8e)) - 例外をスローする際のコンテキスト情報を追加 ([#519](https://github.com/box/boxcli/issues/519)) ([`b99a58d`](https://github.com/box/boxcli/commit/b99a58d930eccf5363c82b84e4415336d7d69541)) - フォルダダウンロード時の上書き/スキップをサポート ([#516](https://github.com/box/boxcli/issues/516)) ([`300f914`](https://github.com/box/boxcli/commit/300f914ba8bb94d9c399699d126d81aba0b22142)) ### バグ修正 - メタデータ抽出スクリプトを修正 ([#514](https://github.com/box/boxcli/issues/514)) ([`2fad540`](https://github.com/box/boxcli/commit/2fad540badf60538fe1456f8071b74bf917f7464)) - 上書きフラグの機能を修正 ([#513](https://github.com/box/boxcli/issues/513)) ([`f4bf7af`](https://github.com/box/boxcli/commit/f4bf7af8e0bbdf7e73fab23d920259ef16672be0)) **Source:** [https://ja.developer.box.com/changelog/2024-02-22-box-cli-v3130-released](https://ja.developer.box.com/changelog/2024-02-22-box-cli-v3130-released) --- ### Box CLI `v3.14.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.14.0のリリース 新機能と機能強化 shared-links作成時のvanity_nameのサポートを追加 (#524) (38164bc) 署名リクエストの署名者グループIDをサポート (#521) (f7b1b44) # Box CLI v3.14.0のリリース ### 新機能と機能強化 - `shared-links`作成時の`vanity_name`のサポートを追加 ([#524](https://github.com/box/boxcli/issues/524)) ([`38164bc`](https://github.com/box/boxcli/commit/38164bc716879aef0a8a2b973a9c6fc7eb705978)) - 署名リクエストの署名者グループIDをサポート ([#521](https://github.com/box/boxcli/issues/521)) ([`f7b1b44`](https://github.com/box/boxcli/commit/f7b1b4409e0f72c264cc23a0f1ca1849060bf121)) **Source:** [https://ja.developer.box.com/changelog/2024-03-06-box-cli-v3140-released](https://ja.developer.box.com/changelog/2024-03-06-box-cli-v3140-released) --- ### Box CLI `v3.14.1`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.14.1のリリース バグ修正 searchコマンドの一括操作を修正 (#528) (782b0e6) sign-requests:createコマンドの一括操作を修正 (#531) (6d9cd6b) # Box CLI v3.14.1のリリース ### バグ修正 - `search`コマンドの一括操作を修正 ([#528](https://github.com/box/boxcli/issues/528)) ([`782b0e6`](https://github.com/box/boxcli/commit/782b0e6b00905d9724289cb05cf03a708c32ebb3)) - `sign-requests:create`コマンドの一括操作を修正 ([#531](https://github.com/box/boxcli/issues/531)) ([`6d9cd6b`](https://github.com/box/boxcli/commit/6d9cd6b82088185c1b98e8c4ed9ac26af4ee3362)) **Source:** [https://ja.developer.box.com/changelog/2024-06-06-box-cli-v3141-released](https://ja.developer.box.com/changelog/2024-06-06-box-cli-v3141-released) --- ### Box CLI `v3.15.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.15.0のリリース 新機能と機能強化 Box Node SDKの使用でAI APIをサポート (#539) (59551d2) # Box CLI v3.15.0のリリース ### 新機能と機能強化 - Box Node SDKの使用でAI APIをサポート ([#539](https://github.com/box/boxcli/issues/539)) ([`59551d2`](https://github.com/box/boxcli/commit/59551d2153549b5a87b2c3fae01eb3089d640c89)) **Source:** [https://ja.developer.box.com/changelog/2024-08-06-box-cli-v3150-released](https://ja.developer.box.com/changelog/2024-08-06-box-cli-v3150-released) --- ### Box CLI `v3.16.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.16.0のリリース 新機能と機能強化 署名リクエストの作成時のtemplate_idのサポートを追加 (#549) (95963c1) バグ修正 ユーザーのゾーンの一括更新スクリプトでゾーン名を変更 (#546) (1a1d603) # Box CLI v3.16.0のリリース ### 新機能と機能強化 - 署名リクエストの作成時の`template_id`のサポートを追加 ([#549](https://github.com/box/boxcli/issues/549)) ([`95963c1`](https://github.com/box/boxcli/commit/95963c19650937f9d67c47184cc8a743166eae60)) ### バグ修正 - ユーザーのゾーンの一括更新スクリプトでゾーン名を変更 ([#546](https://github.com/box/boxcli/issues/546)) ([`1a1d603`](https://github.com/box/boxcli/commit/1a1d603267b928e08df32394637f53264e9e57c9)) **Source:** [https://ja.developer.box.com/changelog/2024-11-25-box-cli-v3160-released](https://ja.developer.box.com/changelog/2024-11-25-box-cli-v3160-released) --- ### Box CLI `v3.2.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.2.0のリリース 新機能と機能強化 ストリームタイプadmin_logs_streamingのサポートを追加 (#337) (7596157) バグ修正 ネイティブストレージエラーを修正 (#345) (b73b841) # Box CLI v3.2.0のリリース ### 新機能と機能強化 - ストリームタイプ`admin_logs_streaming`のサポートを追加 ([#337](https://github.com/box/boxcli/issues/337)) ([`7596157`](https://github.com/box/boxcli/commit/7596157e3a72ef152be44a04198e38d6c57de250)) ### バグ修正 - ネイティブストレージエラーを修正 ([#345](https://github.com/box/boxcli/issues/345)) ([`b73b841`](https://github.com/box/boxcli/commit/b73b841224ad7f5bb543c92962adb7fc5960bb8c)) **Source:** [https://ja.developer.box.com/changelog/2022-06-30-box-cli-v320-released](https://ja.developer.box.com/changelog/2022-06-30-box-cli-v320-released) --- ### Box CLI `v3.3.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.3.0のリリース 新機能と機能強化 編集可能な共有リンクのサポートを追加 (#350) (ab639e7) ファイルリクエスト API のサポートを追加 (#355) (73f0490) カスタム分析ヘッダーを設定できる機能を追加 (#348) (5a… # Box CLI v3.3.0のリリース ### 新機能と機能強化 - 編集可能な共有リンクのサポートを追加 ([#350](https://github.com/box/boxcli/issues/350)) ([`ab639e7`](https://github.com/box/boxcli/commit/ab639e7e9336e8745ef84dd6dfc646c987638ec3)) - ファイルリクエスト API のサポートを追加 ([#355](https://github.com/box/boxcli/issues/355)) ([`73f0490`](https://github.com/box/boxcli/commit/73f0490ff3c3dfefb89e14dde933d3a3ffc4113f)) - カスタム分析ヘッダーを設定できる機能を追加 ([#348](https://github.com/box/boxcli/issues/348)) ([`5a3387f`](https://github.com/box/boxcli/commit/5a3387fb687bcbd5d8441117c497312ac1d20f27)) - メタデータテンプレートの更新用に--copy-instance-on-item-copyフラグをサポート ([#357](https://github.com/box/boxcli/issues/357)) ([`5d8272a`](https://github.com/box/boxcli/commit/5d8272a0559ec97a345a2032456998383e7a6716)) - 認証方法としてクライアント資格情報許可をサポート ([#335](https://github.com/box/boxcli/issues/335)) ([`4649d8a`](https://github.com/box/boxcli/commit/4649d8adf39f64c8292b70c35b7bffa96e462edc)) **Source:** [https://ja.developer.box.com/changelog/2022-07-19-box-cli-v330-released](https://ja.developer.box.com/changelog/2022-07-19-box-cli-v330-released) --- ### Box CLI `v3.3.1`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.3.1のリリース バグ修正 OAuthログインを修正 (#364) (579b44b) # Box CLI v3.3.1のリリース ### バグ修正 - OAuthログインを修正 ([#364](https://github.com/box/boxcli/issues/364)) ([`579b44b`](https://github.com/box/boxcli/commit/579b44b83c60f6568c98cb5f1417effbac26c58c)) **Source:** [https://ja.developer.box.com/changelog/2022-07-25-box-cli-v331-released](https://ja.developer.box.com/changelog/2022-07-25-box-cli-v331-released) --- ### Box CLI `v3.3.2`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.3.2のリリース バグ修正 本文なしで呼び出す場合についてリクエストコマンドを修正 (#369) (9317888) # Box CLI v3.3.2のリリース ### バグ修正 - 本文なしで呼び出す場合についてリクエストコマンドを修正 ([#369](https://github.com/box/boxcli/issues/369)) ([`9317888`](https://github.com/box/boxcli/commit/9317888c3f1bff56ef784d7319f1b8ccf12239ef)) **Source:** [https://ja.developer.box.com/changelog/2022-07-29-box-cli-v332-released](https://ja.developer.box.com/changelog/2022-07-29-box-cli-v332-released) --- ### Box CLI `v3.4.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.4.0のリリース 新機能と機能強化 User DeprovisionサンプルスクリプトにDryRunモードを追加 (#392) (584a30e) 署名リクエストにredirect_urlとdeclined_redirect_urlを追加 (#39… # Box CLI v3.4.0のリリース ### 新機能と機能強化 - `User Deprovision`サンプルスクリプトに`DryRun`モードを追加 ([#392](https://github.com/box/boxcli/issues/392)) ([`584a30e`](https://github.com/box/boxcli/commit/584a30ef33446a6687ce558c810804202650299f)) - 署名リクエストに`redirect_url`と`declined_redirect_url`を追加 ([#395](https://github.com/box/boxcli/issues/395)) ([`261b7d2`](https://github.com/box/boxcli/commit/261b7d22a5e5adf3647276cbf59454cca9bf607f)) - ファイルのダウンロードと一括コマンド用に進捗バーを追加 ([#376](https://github.com/box/boxcli/issues/376)) ([`68359c7`](https://github.com/box/boxcli/commit/68359c7e97ce2b606184426cbbaac73914ceb81a)) - ダウンロード中に宛先パスを作成 ([#393](https://github.com/box/boxcli/issues/393)) ([`40881dd`](https://github.com/box/boxcli/commit/40881ddbd2c86e80f19689f012736fb19f18d945)) - 新しいライブラリを使用したWindowsにネイティブの資格情報ストレージ ([#385](https://github.com/box/boxcli/issues/385)) ([`a6918aa`](https://github.com/box/boxcli/commit/a6918aaa6e28bd29619bea31c97b845d8d429fec)) ### バグ修正 - フォルダのダウンロードでのホーム`dir`を正しく解決 ([#398](https://github.com/box/boxcli/issues/398)) ([`86d3230`](https://github.com/box/boxcli/commit/86d3230456827a042be04f5ef372b15d83fd6a10)) - `Users Deprovisioning`スクリプトのログを修正 ([#381](https://github.com/box/boxcli/issues/381)) ([`c85f77b`](https://github.com/box/boxcli/commit/c85f77b3042dfc3ddfe54b2acd94b220f6ee0e9b)) - `keytar`ライブラリの問題を修正 ([#394](https://github.com/box/boxcli/issues/394)) ([`1979f01`](https://github.com/box/boxcli/commit/1979f01758a30cd1dbf9d32c19ce2f3a00c0d5ec)) ### 注 格納用Box CLI環境をシステム資格情報ストレージに移行するには、次のコマンドをターミナルで実行します。([#295](https://github.com/box/boxcli/issues/295)) `box configure:environments:update` **Source:** [https://ja.developer.box.com/changelog/2022-09-26-box-cli-v340-released](https://ja.developer.box.com/changelog/2022-09-26-box-cli-v340-released) --- ### Box CLI `v3.5.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.5.0のリリース 新機能と機能強化 ダウンロードしたファイルの名前をsave-asパラメータで変更するオプションを追加 (#415) (81fe64e) 変更可能リテンションポリシーのサポートを追加し、リテンションポリシー割り当ての削除を有効化 (#42… # Box CLI v3.5.0のリリース ### 新機能と機能強化 - ダウンロードしたファイルの名前を`save-as`パラメータで変更するオプションを追加 ([#415](https://github.com/box/boxcli/issues/415)) ([`81fe64e`](https://github.com/box/boxcli/commit/81fe64eb2891e7ab55564e2428f64f1129b468e8)) - 変更可能リテンションポリシーのサポートを追加し、リテンションポリシー割り当ての削除を有効化 ([#420](https://github.com/box/boxcli/issues/420)) ([`26ab5b4`](https://github.com/box/boxcli/commit/26ab5b4d7ec49576fdac48abc025903622f8efe0)) **Source:** [https://ja.developer.box.com/changelog/2022-11-02-box-cli-v350-released](https://ja.developer.box.com/changelog/2022-11-02-box-cli-v350-released) --- ### Box CLI `v3.6.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.6.0のリリース 新機能と機能強化 idおよびtypeフィールドをshared-links:createレスポンスに追加 (#427) (5ea4cb8) リテンションの対象となるファイル用にdisposition_atフィールドを追加 (#429) (db… # Box CLI v3.6.0のリリース ### 新機能と機能強化 - `id`および`type`フィールドをshared-links:createレスポンスに追加 ([#427](https://github.com/box/boxcli/issues/427)) ([`5ea4cb8`](https://github.com/box/boxcli/commit/5ea4cb82294188dd30563ef9cea2c8e0b76bbfae)) - リテンションの対象となるファイル用に`disposition_at`フィールドを追加 ([#429](https://github.com/box/boxcli/issues/429)) ([`db824ef`](https://github.com/box/boxcli/commit/db824ef0b4111810b7902896062c950ef9ac01b3)) ### バグ修正 - `event:poll` polling-intervalを修正 ([#430](https://github.com/box/boxcli/issues/430)) ([`9ada74b`](https://github.com/box/boxcli/commit/9ada74b09eb5aa0e09881946a4f7f30e2d68e037)) **Source:** [https://ja.developer.box.com/changelog/2022-11-22-box-cli-v360-released](https://ja.developer.box.com/changelog/2022-11-22-box-cli-v360-released) --- ### Box CLI `v3.7.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.7.0のリリース 新機能と機能強化 フォルダの更新のコラボレータ用にフラグを追加 (#438) (83ac6d7) セッション終了のサポートを追加 (#446) (aef15a8) バグ修正 ディスクからのトークンのキャッシュの削除を修正 (#44… # Box CLI v3.7.0のリリース ### 新機能と機能強化 - フォルダの更新のコラボレータ用にフラグを追加 ([#438](https://github.com/box/boxcli/issues/438)) ([`83ac6d7`](https://github.com/box/boxcli/commit/83ac6d7c8eeb7f3dc8562c8132cade4f5af80ee1)) - セッション終了のサポートを追加 ([#446](https://github.com/box/boxcli/issues/446)) ([`aef15a8`](https://github.com/box/boxcli/commit/aef15a8d2c7ee904db320d879deb6ebf0f934d22)) ### バグ修正 - ディスクからのトークンのキャッシュの削除を修正 ([#445](https://github.com/box/boxcli/issues/445)) ([`aafb68a`](https://github.com/box/boxcli/commit/aafb68ae38a8280bd97cf978042a8df5b71b2f52)) - 列挙型に複数のオプションを追加する際のメタデータテンプレートの更新を修正 ([#442](https://github.com/box/boxcli/issues/442)) ([`8779eec`](https://github.com/box/boxcli/commit/8779eecf24bda5b093bc891f5097879e1876b601)) - Node 16での単一ファイルのアップロード ([#441](https://github.com/box/boxcli/issues/441)) ([`d94ab35`](https://github.com/box/boxcli/commit/d94ab35a38938daf4edbbd134774a3809facecbd)) **Source:** [https://ja.developer.box.com/changelog/2023-01-19-box-cli-v370-released](https://ja.developer.box.com/changelog/2023-01-19-box-cli-v370-released) --- ### Box CLI `v3.8.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.8.0のリリース 新機能と機能強化 メタデータカスケードポリシーの作成用のエイリアスを追加 (#460) (8d2f683) ログインコマンドに--reauthorizeフラグのサポートを追加 (#457) (f653a0d) バグ修正 keychain… # Box CLI v3.8.0のリリース ### 新機能と機能強化 - メタデータカスケードポリシーの作成用のエイリアスを追加 ([#460](https://github.com/box/boxcli/issues/460)) ([`8d2f683`](https://github.com/box/boxcli/commit/8d2f683e092c036efe352e6fd70904083ad7c208)) - ログインコマンドに`--reauthorize`フラグのサポートを追加 ([#457](https://github.com/box/boxcli/issues/457)) ([`f653a0d`](https://github.com/box/boxcli/commit/f653a0d526c7194f0a5e80dc837f0f16a9d4f27b)) ### バグ修正 - `keychain`ライブラリを`1.4.0`に昇格することで`keychain`アクセスを修正 ([#459](https://github.com/box/boxcli/issues/459)) ([`56919ce`](https://github.com/box/boxcli/commit/56919cefabef6de4d96a1f69f7c80740a680876c)) - 単体テストを修正 ([#456](https://github.com/box/boxcli/issues/456)) ([`f89d9ef`](https://github.com/box/boxcli/commit/f89d9ef5c3c4e7bf00c0be40f128428b1e7e6983)) **Source:** [https://ja.developer.box.com/changelog/2023-03-03-box-cli-v380-released](https://ja.developer.box.com/changelog/2023-03-03-box-cli-v380-released) --- ### Box CLI `v3.9.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.9.0のリリース 新機能と機能強化 max-itemsを追加、エンドポイントのリストのパフォーマンスを改善 (#470) (8f386f3) 統合マッピングAPIのサポートを追加 (#472) (bbf2548) retention-policy… # Box CLI v3.9.0のリリース ### 新機能と機能強化 - `max-items`を追加、エンドポイントのリストのパフォーマンスを改善 ([#470](https://github.com/box/boxcli/issues/470)) ([`8f386f3`](https://github.com/box/boxcli/commit/8f386f3b7c4ff4efbaa941321fd672694ce3c7a1)) - 統合マッピングAPIのサポートを追加 ([#472](https://github.com/box/boxcli/issues/472)) ([`bbf2548`](https://github.com/box/boxcli/commit/bbf2548223e0d07ce2412c04991e7d8f00022fa7)) - `retention-policy`と`retention-policy-assignment`の新しいフィールド ([#466](https://github.com/box/boxcli/issues/466)) ([`f960e59`](https://github.com/box/boxcli/commit/f960e59aaf55fe0a0507e9f4c9d867e7c3dd039a)) **Source:** [https://ja.developer.box.com/changelog/2023-06-02-box-cli-v390-released](https://ja.developer.box.com/changelog/2023-06-02-box-cli-v390-released) --- ### Box CLI `v3.9.1`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.9.1のリリース 新機能と機能強化 box-node-sdkおよびcsvライブラリのバージョンを昇格 (483) (fecb04b) # Box CLI v3.9.1のリリース ### 新機能と機能強化 - `box-node-sdk`および`csv`ライブラリのバージョンを昇格 ([483]((https://github.com/box/boxcli/pull/483))) ([`fecb04b`]((https://github.com/box/boxcli/pull/483/commits/fecb04b635980baf37a7fefc8860b5e07b0bc4e6))) **Source:** [https://ja.developer.box.com/changelog/2023-07-19-box-cli-v391-released](https://ja.developer.box.com/changelog/2023-07-19-box-cli-v391-released) --- ### Box CLI `v3.9.2`のリリース **Type:** changelog | **Section:** Changelog Box CLI v3.9.2のリリース バグ修正 コマンドに入力を渡す場合のエスケープされたスラッシュを修正 (#486) (7670210) # Box CLI v3.9.2のリリース ### バグ修正 - コマンドに入力を渡す場合のエスケープされたスラッシュを修正 ([#486](https://github.com/box/boxcli/issues/486)) ([`7670210`](https://github.com/box/boxcli/commit/7670210ffb5c38cef8dd153e823029d5237080b6)) **Source:** [https://ja.developer.box.com/changelog/2023-08-08-box-cli-v392-released](https://ja.developer.box.com/changelog/2023-08-08-box-cli-v392-released) --- ### Box CLI `v4.0.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v4.0.0のリリース ⚠ 重大な変更 古いNodeバージョンのサポートを終了し、TypeScript SDKを統合 (#548) 新機能と機能強化 古いNodeバージョンのサポートを終了し、TypeScript SDKを統合 (#548) (22179ec… # Box CLI v4.0.0のリリース ### ⚠ 重大な変更 - 古いNodeバージョンのサポートを終了し、TypeScript SDKを統合 ([#548](https://github.com/box/boxcli/issues/548)) ### 新機能と機能強化 - 古いNodeバージョンのサポートを終了し、TypeScript SDKを統合 ([#548](https://github.com/box/boxcli/issues/548)) ([`22179ec`](https://github.com/box/boxcli/commit/22179ecfc68b8dd315339ac204a7274d712d5a8e)) - Boxログイン用のブラウザのIncognitoオプション ([#561](https://github.com/box/boxcli/issues/561)) ([`a666766`](https://github.com/box/boxcli/commit/a6667664d6b43fd80de9e57482b0f4138efcd6cf)) - `@oclif/command`を`@oclif/core`ライブラリに置き換え ([#553](https://github.com/box/boxcli/issues/553)) ([`aed470b`](https://github.com/box/boxcli/commit/aed470b22d28ed19040b4417e3143f3323b9a916)) ### バグ修正 - CCG認証およびOAuthに対する環境の`defaultAsUserId`の使用を考慮 ([#554](https://github.com/box/boxcli/issues/554)) ([`b3a691e`](https://github.com/box/boxcli/commit/b3a691e8c886f7bb3a25ae8f7986f284a695f046)) **Source:** [https://ja.developer.box.com/changelog/2025-01-28-box-cli-v400-released](https://ja.developer.box.com/changelog/2025-01-28-box-cli-v400-released) --- ### Box CLI `v4.0.1`のリリース **Type:** changelog | **Section:** Changelog Box CLI v4.0.1のリリース バグ修正 configure:environments:set-currentコマンドを修正 (#568) (dc0905f) # Box CLI v4.0.1のリリース ### バグ修正 - `configure:environments:set-current`コマンドを修正 ([#568](https://github.com/box/boxcli/issues/568)) ([`dc0905f`](https://github.com/box/boxcli/commit/dc0905f7b85a32373e93ec7726afb261223e9fac)) **Source:** [https://ja.developer.box.com/changelog/2025-03-07-box-cli-v401-released](https://ja.developer.box.com/changelog/2025-03-07-box-cli-v401-released) --- ### Box CLI `v4.1.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v4.1.0のリリース 新機能と機能強化 AI抽出エンドポイントをサポート (#574) (0b4ff6b) バグ修正 正しくないprocess.stderr.setEncodingコールを削除 (486779e)、#571をクローズ # Box CLI v4.1.0のリリース ### 新機能と機能強化 - AI抽出エンドポイントをサポート ([#574](https://github.com/box/boxcli/issues/574)) ([`0b4ff6b`](https://github.com/box/boxcli/commit/0b4ff6b63c8707c6842f3812d2a69071d195b799)) ### バグ修正 - 正しくない`process.stderr.setEncoding`コールを削除 ([`486779e`](https://github.com/box/boxcli/commit/486779ee3b8403805286b7ae6d3ab5c802c6f948))、[#571](https://github.com/box/boxcli/issues/571)をクローズ **Source:** [https://ja.developer.box.com/changelog/2025-05-15-box-cli-v410-released](https://ja.developer.box.com/changelog/2025-05-15-box-cli-v410-released) --- ### Box CLI `v4.2.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v4.2.0のリリース 新機能と機能強化 TS SDKのBox CLIにプロキシを設定 (#577) (ec42077) フォルダの移動でowned-byフラグをサポート (#580) (2ec8e7f) Teams統合マッピングをサポート (#57… # Box CLI v4.2.0のリリース ### 新機能と機能強化 - TS SDKのBox CLIにプロキシを設定 ([#577](https://github.com/box/boxcli/issues/577)) ([`ec42077`](https://github.com/box/boxcli/commit/ec4207715360cc284574e1cbb573586218379517)) - フォルダの移動で`owned-by`フラグをサポート ([#580](https://github.com/box/boxcli/issues/580)) ([`2ec8e7f`](https://github.com/box/boxcli/commit/2ec8e7fcf241dcd2c5841b8912e178e2384db426)) - Teams統合マッピングをサポート ([#579](https://github.com/box/boxcli/issues/579)) ([`163a367`](https://github.com/box/boxcli/commit/163a36727c5f76b0e3b1c36049b3abae50148eb6)) - 配列を使用したメタデータクエリをサポート ([#581](https://github.com/box/boxcli/issues/581)) ([`6750708`](https://github.com/box/boxcli/commit/675070856eac6d06f2091203f4f19e41055dd97d)) **Source:** [https://ja.developer.box.com/changelog/2025-06-20-box-cli-v420-released](https://ja.developer.box.com/changelog/2025-06-20-box-cli-v420-released) --- ### Box CLI `v4.3.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v4.3.0のリリース 新機能と機能強化 ai:askコマンドにエージェントのサポートを追加 (#589) (095f411) バグ修正 メタデータクエリ配列のサポートを修正 (#583) (112db16) folders:create… # Box CLI v4.3.0のリリース ### 新機能と機能強化 - `ai:ask`コマンドにエージェントのサポートを追加 ([#589](https://github.com/box/boxcli/issues/589)) ([`095f411`](https://github.com/box/boxcli/commit/095f4110274f67c5b1024de49a256b5bbe35cf18)) ### バグ修正 - メタデータクエリ配列のサポートを修正 ([#583](https://github.com/box/boxcli/issues/583)) ([`112db16`](https://github.com/box/boxcli/commit/112db160230e5bb75f84e44cb86a8372341dd8ad)) - folders:createコマンドから`description`フラグを削除 ([#587](https://github.com/box/boxcli/issues/587)) ([`adca76b`](https://github.com/box/boxcli/commit/adca76b5fb03f62daf2104500b87f8a962382a35)) **Source:** [https://ja.developer.box.com/changelog/2025-08-07-box-cli-v430-released](https://ja.developer.box.com/changelog/2025-08-07-box-cli-v430-released) --- ### Box CLI `v4.3.1`のリリース **Type:** changelog | **Section:** Changelog Box CLI v4.3.1のリリース バグ修正 ai:askコマンドの複数項目モードを修正 (#593) (5081d43) # Box CLI v4.3.1のリリース ### バグ修正 - `ai:ask`コマンドの複数項目モードを修正 ([#593](https://github.com/box/boxcli/issues/593)) ([`5081d43`](https://github.com/box/boxcli/commit/5081d432d8ded16c8bf759352d28be0214fbe4ec)) **Source:** [https://ja.developer.box.com/changelog/2025-09-29-box-cli-v431-released](https://ja.developer.box.com/changelog/2025-09-29-box-cli-v431-released) --- ### Box CLI `v4.4.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v4.4.0のリリース 新機能と機能強化 ユーザー更新の通知メールをサポート (#596) (49356f4) # Box CLI v4.4.0のリリース ### 新機能と機能強化 - ユーザー更新の通知メールをサポート ([#596](https://github.com/box/boxcli/issues/596)) ([`49356f4`](https://github.com/box/boxcli/commit/49356f4ad954caf0c0d60646debc2bc047bddf7a)) **Source:** [https://ja.developer.box.com/changelog/2025-10-14-box-cli-v440-released](https://ja.developer.box.com/changelog/2025-10-14-box-cli-v440-released) --- ### Box CLI `v4.4.1`のリリース **Type:** changelog | **Section:** Changelog Box CLI v4.4.1のリリース バグ修正 ユーザーコマンドcreateおよびupdateの--exempt-from-2faフラグを修正 (#598) (8f897fe) # Box CLI v4.4.1のリリース ### バグ修正 - ユーザーコマンド`create`および`update`の`--exempt-from-2fa`フラグを修正 ([#598](https://github.com/box/boxcli/issues/598)) ([`8f897fe`](https://github.com/box/boxcli/commit/8f897feb677a0089e7854aaf8ef6b2babb70ab16)) **Source:** [https://ja.developer.box.com/changelog/2025-10-21-box-cli-v441-released](https://ja.developer.box.com/changelog/2025-10-21-box-cli-v441-released) --- ### Box CLI `v4.5.0`のリリース **Type:** changelog | **Section:** Changelog Box CLI v4.5.0のリリース 新機能と機能強化 GitHubリリースを使用して自動更新をサポート (#603) (2460e1b) バグ修正 tmpの脆弱性を修正するために依存関係を更新 (#600) (7e270eb) # Box CLI v4.5.0のリリース ### 新機能と機能強化 - GitHubリリースを使用して自動更新をサポート ([#603](https://github.com/box/boxcli/issues/603)) ([`2460e1b`](https://github.com/box/boxcli/commit/2460e1b51002e94c3a16356099c4511faa96b87c)) ### バグ修正 - `tmp`の脆弱性を修正するために依存関係を更新 ([#600](https://github.com/box/boxcli/issues/600)) ([`7e270eb`](https://github.com/box/boxcli/commit/7e270eb8daf254a64eb3ce373444e9ad96e5e5be)) **Source:** [https://ja.developer.box.com/changelog/2025-11-20-box-cli-v450-released](https://ja.developer.box.com/changelog/2025-11-20-box-cli-v450-released) --- ### Box CLI 2.1.0のリリース **Type:** changelog | **Section:** Changelog Box CLI 2.1.0のリリース Box CLIの新しいバージョンがリリースされ、バージョンが2.0.0から2.1.0になりました。このリリースには、以下のように多数の機能強化とバグ修正が含まれています。 イベントコマンドのページングの修正(リンク) lodash… # Box CLI 2.1.0のリリース Box CLIの新しいバージョンがリリースされ、バージョンが2.0.0から2.1.0になりました。このリリースには、以下のように多数の機能強化とバグ修正が含まれています。 - イベントコマンドのページングの修正([リンク](https://github.com/box/boxcli/pull/126)) - `lodash`バージョンの更新([リンク](https://github.com/box/boxcli/pull/129)) - `--fields`フラグの使用時にAPIにフィールドパラメータを送信([リンク](https://github.com/box/boxcli/pull/113)) - イベントタイプフラグの修正([リンク](https://github.com/box/boxcli/pull/120)) - NPMビルドスクリプトの追加([リンク](https://github.com/box/boxcli/commit/f0f88f66e3014afba616b5a2994157d435094b56)) **Source:** [https://ja.developer.box.com/changelog/2019-03-29-box-cli-210-released](https://ja.developer.box.com/changelog/2019-03-29-box-cli-210-released) --- ### Box CLI V2のリリース **Type:** changelog | **Section:** Changelog Box CLI V2のリリース [Box CLI][guide]のメジャーバージョン (V2) がリリースされました。 更新情報については次のリンクを参照してください。 リリースノート: 大きな修正の詳細、重大な変更、バグの修正。 コマンドの一覧: 新しいCLI… # Box CLI V2のリリース [Box CLI][guide]のメジャーバージョン (V2) がリリースされました。 更新情報については次のリンクを参照してください。 - [リリースノート](https://github.com/box/boxcli/blob/master/CHANGELOG.md#200): 大きな修正の詳細、重大な変更、バグの修正。 - [コマンドの一覧](https://github.com/box/boxcli#command-topics): 新しいCLIで利用可能なすべてのコマンド。 - [インストールオプション][guide]: スタンドアロンインストーラとソースコードオプション。 [ガイド][guide]: [g://cli/quick-start/install-and-configure][g://cli/quick-start/install-and-configure] **Source:** [https://ja.developer.box.com/changelog/2018-12-21-box-cli-v2-released](https://ja.developer.box.com/changelog/2018-12-21-box-cli-v2-released) --- ### Box CLIとスクリプトライブラリによるタスクの自動化 **Type:** changelog | **Section:** Changelog Box CLIとスクリプトライブラリによるタスクの自動化 Box CLIは、タスクの自動化に使用できるテンプレートを含むサンプルスクリプトライブラリに対応するようになりました。まずは、以下を実行できるPowerShellスクリプトを提供します: フォルダ構造を設定する 管理対象ユーザーを作成する ユーザーをフォルダ構造にコラボレータとして追加する # Box CLIとスクリプトライブラリによるタスクの自動化 [Box CLI](g://cli)は、タスクの自動化に使用できるテンプレートを含むサンプルスクリプトライブラリに対応するようになりました。まずは、以下を実行できるPowerShellスクリプトを提供します: - フォルダ構造を設定する - 管理対象ユーザーを作成する - ユーザーをフォルダ構造にコラボレータとして追加する ## 更新内容 - Box CLIの[クイックスタートガイド](g://cli/quick-start/powershell-script-templates)に、PowerShellスクリプトを使用してフォルダ構造とコラボレータを作成する手順を記載しました。 - サンプルスクリプトはすべて[スクリプトライブラリ](https://github.com/box/boxcli/tree/main/examples)に含まれています。現在はPowerShellスクリプトが含まれていますが、今後さらにサンプルが追加される予定です。 ## 開発者向けリソース Box App Centerでのアプリケーションの作成、またはBoxパートナーへの参加をご希望の場合、詳細については[Box Partner Resources](https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources)のガイド (英語) を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-06-23-new-cli-script](https://ja.developer.box.com/changelog/2022-06-23-new-cli-script) --- ### Box CLIの更新 **Type:** changelog | **Section:** Changelog Box CLIの更新 Box CLIへの更新がリリースされました。このバージョンには以下の更新が含まれます。 新しいマルチゾーンコマンド: データ保管場所用のBox Multizonesのサポートが追加されました。 ユーザーによるCSV操作の修正: ユーザーがOpen With… # Box CLIの更新 [Box CLI](guide://cli/quick-start)への更新がリリースされました。このバージョンには以下の更新が含まれます。 **[新しいマルチゾーンコマンド](https://github.com/box/boxcli/pull/91)**: データ保管場所用の[Box Multizones](https://blog.box.com/blog/multizones-storage-data-residency-compliance/)のサポートが追加されました。 **[ユーザーによるCSV操作の修正](https://github.com/box/boxcli/pull/82)**: ユーザーがOpen With Elementを使用できなかったバグが修正されました。Open With Elementが、ユーザーデータのベータをCSVファイルに保存しなくなりました。 **[フォルダの更新時に`can_non_owners_invite`を設定する機能](https://github.com/box/boxcli/pull/92)**: 所有者以外のユーザーが他のユーザーをフォルダでのコラボレーションに招待できるかどうかを設定できるようになりました。 **[新しいCLI構成のダンプコマンド](https://github.com/box/boxcli/pull/83)**: 値をコピーして一般的な用途に使えるよう、Box構成ファイルを単一の文字列としてダンプする機能が追加されました。オプションで、エスケープ引用符を追加できます。Open Withは、環境変数または構成プロパティを (AWSの個別のボタンやAzureなどで) 提供します。 **Source:** [https://ja.developer.box.com/changelog/2018-06-25-update-to-the-box-cli](https://ja.developer.box.com/changelog/2018-06-25-update-to-the-box-cli) --- ### Box CLIの更新 **Type:** changelog | **Section:** Changelog Box CLIの更新 Box CLIスクリプトライブラリとCLIガイドへの最近の追加により、自動化がさらに改善され、反復タスクの処理が簡素化されました。 # Box CLIの更新 [Box CLIスクリプトライブラリ](g://cli/scripts)と[CLIガイド](g://cli/cli-docs)への最近の追加により、自動化がさらに改善され、反復タスクの処理が簡素化されました。 ## 新しいCLIスクリプト サンプルスクリプトライブラリに次のスクリプトが含まれ、使用できるようになりました。 - [ユーザーとフォルダのプロビジョニング](g://cli/scripts/provision-users-folders): 実装するフォルダ構造を構築してユーザーを追加します。 - [グループとコラボレーションの管理](g://cli/scripts/manage-groups-collaborations): グループを作成または更新し、グループにユーザーを追加して、最後にコラボレータとしてグループをフォルダに追加します。 - [非アクティブなユーザーのレポート](g://cli/scripts/report-inactive-users): 一定の日数の間非アクティブであったユーザーのリストをCSVファイルで生成します。 - [ユーザーのゾーンの更新](g://cli/scripts/user-zones-mass-update): マルチゾーンのBoxテナント内の特定のデータ保管場所のゾーンにユーザーをプロビジョニングします。 - [ユーザーのプロビジョニング解除](g://cli/scripts/deprovision-users): ユーザーを削除します。 ## 一括コマンドガイド [一括コマンドガイド](g://cli/cli-docs/bulk-commands)では、単一のコマンドを使用して、複数の項目が関与する操作を実行する方法について説明します。 ## 開発者向けリソース Box App Centerでのアプリケーションの作成、またはBoxパートナーへの参加をご希望の場合、詳細については[Box Partner Resources](https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources)のガイド (英語) を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-08-24-new-cli-scripts-added](https://ja.developer.box.com/changelog/2022-08-24-new-cli-scripts-added) --- ### Box CLIの高度な機能についてのYouTube動画のリリース **Type:** changelog | **Section:** Changelog Box CLIの高度な機能についてのYouTube動画のリリース 2月に、Box CLIのOAuth 2.0バージョンと並行して新しいYouTubeコンテンツをリリースしました。本日、このシリーズの3つ目の動画をリリースしました。この動画ではas-userヘッダーと一括コマンドオプションの使用について説明しています。 # Box CLIの高度な機能についてのYouTube動画のリリース 2月に、Box CLIのOAuth 2.0バージョンと並行して新しいYouTubeコンテンツを[リリース](page/changelog/#2022-02-01-box-cli-v300-released)しました。本日、このシリーズの[3つ目の動画](https://youtu.be/WXkBctPosLE)をリリースしました。この動画ではas-userヘッダーと一括コマンドオプションの使用について説明しています。 [YouTube](https://www.youtube.com/playlist?list=PL0F3BD5B64D6A39F1)のBox Platform and Developerというプレイリストをご確認ください。このシリーズではもう1つの動画 (PowerShellを使用したCLI自動化) を予定しています。 最新のコンテンツをすべて入手するには、ぜひBoxチャンネルに[ご登録](https://www.youtube.com/user/box/featured)ください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-09-06-cli-video-3](https://ja.developer.box.com/changelog/2022-09-06-cli-video-3) --- ### Box Content Preview `v2.57.0`のリリース **Type:** changelog | **Section:** Changelog Box Content Preview v2.57.0のリリース 新機能と機能強化: コアコントロールコンポーネントのReactバージョンを追加 (#1282) 既存のコントロールアイコンのReactバージョンを追加 (#128… # Box Content Preview v2.57.0のリリース **新機能と機能強化:** - コアコントロールコンポーネントのReactバージョンを追加 ([#1282](https://github.com/box/box-content-preview/pull/1282)) - 既存のコントロールアイコンのReactバージョンを追加 ([#1280](https://github.com/box/box-content-preview/pull/1280)) - 全画面コントロールとズームコントロールのReactバージョンを追加 ([#1283](https://github.com/box/box-content-preview/pull/1283)) - テキストビューアーコントロールのReactバージョンを追加 ([#1284](https://github.com/box/box-content-preview/pull/1284)) - 注釈作成の手段を追加 ([#1275](https://github.com/box/box-content-preview/pull/1275)) - `react`および`react-dom`を`^16.9.0`にアップグレード ([#1278](https://github.com/box/box-content-preview/pull/1278)) **バグ修正:** - 新しく作成した注釈を選択 ([#1276](https://github.com/box/box-content-preview/pull/1276)) - Chromeで埋め込みリンクを使用したファイルのダウンロードを許可 ([#1277](https://github.com/box/box-content-preview/pull/1277)) - フォントのレンダリングに関する問題により`pdf.js`を`v2.2.228`に戻す ([#1274](https://github.com/box/box-content-preview/pull/1274)) **Source:** [https://ja.developer.box.com/changelog/2020-11-13-box-content-preview-v2570-released](https://ja.developer.box.com/changelog/2020-11-13-box-content-preview-v2570-released) --- ### Box Developer Communityサイト (英語のみ) **Type:** changelog | **Section:** Changelog Box Developer Communityサイト (英語のみ) 開発者と管理者向けに、Box Developer Communityサイト (英語のみ) を公開しました。ここでは、仲間や専門家とつながって、Boxのクラウドコンテンツ管理とコラボレーションプラットフォーム上に革新的なアプリケーションを構築することができます。https://forum.box.comからご参加ください。 # Box Developer Communityサイト (英語のみ) 開発者と管理者向けに、Box Developer Communityサイト (英語のみ) を公開しました。ここでは、仲間や専門家とつながって、Boxのクラウドコンテンツ管理とコラボレーションプラットフォーム上に革新的なアプリケーションを構築することができます。[https://forum.box.com](https://forum.box.com)からご参加ください。 # 参加してつながり、学習する - サポートを受けてフィードバックを提供する - 知識を共有してコミュニティリーダーになる - 他のBox開発者や管理者とつながってチャットで会話する - 他のコミュニティのメンバーやBoxに関するエキスパートから学習する - 最新の機能、更新情報、開発者向けのイベント、ブログ投稿などにアクセスする ## サポートを受けるための新しい場所 今後は新しい[Box Developer Communityフォーラム](https://forum.box.com/)で質問したり、ガイダンスを受けたりすることができます。この新しいフォーラムを利用すると、Box Developer Relationsチーム、同僚、Boxに関するエキスパートと直接会話できます。 **Source:** [https://ja.developer.box.com/changelog/2023-06-13-join-box-developer-community](https://ja.developer.box.com/changelog/2023-06-13-join-box-developer-community) --- ### Box Doc Gen **Type:** changelog | **Section:** Changelog Box Doc Gen Enterprise Advancedをご利用のすべてのお客様に、Box Doc Genの提供を開始しました。 Box Doc Genを使用すると、BoxにアップロードしたBox Doc Genテンプレートに基づいて、さまざまなビジネスドキュメントを生成できます。Box Doc Gen APIの使用により、データフィールドへの動的な入力も可能です。 # Box Doc Gen **Enterprise Advanced**をご利用のすべてのお客様に、[Box Doc Gen](g://docgen/docgen-getting-started)の提供を開始しました。 [Box Doc Gen](g://docgen)を使用すると、BoxにアップロードしたBox Doc Genテンプレートに基づいて、さまざまなビジネスドキュメントを生成できます。Box Doc Gen APIの使用により、データフィールドへの動的な入力も可能です。 Box Doc Genの機能を使用すると、以下を実行できます。 - [ファイルをBox Doc Genテンプレートとして設定](g://docgen/mark-template) - [ドキュメントを生成](g://docgen/generate-document) - [Box Doc Genジョブ](g://docgen/docgen-jobs)のステータスを確認 Box Doc GenおよびBox Doc Gen APIの詳細については、[Box Doc Genの開発者向けガイド](g://docgen)および[APIリファレンス](e://post-docgen-templates)をそれぞれご確認ください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-01-13-box-doc-gen](https://ja.developer.box.com/changelog/2025-01-13-box-doc-gen) --- ### Box Dotnet SDK Generated `v0.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v0.4.0のリリース バグ修正 ベースURLを変更 (box/box-codegen#491) (#126) (b4c6025) 自動更新のプルリクエストのCIを修正 (box/box-codegen#506) (#15… # Box Dotnet SDK Generated v0.4.0のリリース ### バグ修正 - ベースURLを変更 (box/box-codegen[#491](https://github.com/box/box-codegen/issues/491)) ([#126](https://github.com/box/box-codegen/issues/126)) ([`b4c6025`](https://github.com/box/box-codegen/commit/b4c6025dc7039e923b19282333f162bb9d3469a9)) - 自動更新のプルリクエストのCIを修正 (box/box-codegen[#506](https://github.com/box/box-codegen/issues/506)) ([#152](https://github.com/box/box-codegen/issues/152)) ([`766f03c`](https://github.com/box/box-codegen/commit/766f03c743b7a2ab363135ff282e468b6b71d377)) - ファイルやフォルダの分類を更新するためのスキーマを修正 (box/box-openapi[#423](https://github.com/box/box-codegen/issues/423)) ([#117](https://github.com/box/box-codegen/issues/117)) ([`40f5a97`](https://github.com/box/box-codegen/commit/40f5a97ea44118ff9425e8b0ebb767d9ed08cee7)) - Box Signの表現を改善 (box/box-openapi[#424](https://github.com/box/box-codegen/issues/424)) ([#122](https://github.com/box/box-codegen/issues/122)) ([`64b3bcd`](https://github.com/box/box-codegen/commit/64b3bcd2d99039d1c881a565de6e7bc40dfe7aa9)) ### 新機能と機能強化 - インターフェースメソッドのデフォルトの実装を追加 (box/box-codegen[#502](https://github.com/box/box-codegen/issues/502)) ([#148](https://github.com/box/box-codegen/issues/148)) ([`0f39071`](https://github.com/box/box-codegen/commit/0f39071d2442b9d07f9c51de8a5a757b16cc4fe7)) - ドキュメントの改善とマーカーページネーションを追加 (box/box-openapi[#431](https://github.com/box/box-codegen/issues/431)) ([#153](https://github.com/box/box-codegen/issues/153)) ([`780a58b`](https://github.com/box/box-codegen/commit/780a58b4d4b18c357381c76dd5e72dd791a20d89)) - 汎用型の`ExtraData`のサポートを追加 (box/box-codegen[#521](https://github.com/box/box-codegen/issues/521)) ([#170](https://github.com/box/box-codegen/issues/170)) ([`2a2208d`](https://github.com/box/box-codegen/commit/2a2208d422f5beb1718576acdc10d9eb973ba95c)) - プリミティブ型の共用体のサポートを追加 (box/box-codegen[#501](https://github.com/box/box-codegen/issues/501)) ([#150](https://github.com/box/box-codegen/issues/150)) ([`e75ce82`](https://github.com/box/box-codegen/commit/e75ce82b09641d4bec439d620facbbf25da97845)) - モデルを変更不可に設定し、認証に関するフィールドを非表示にする (box/box-codegen[#494](https://github.com/box/box-codegen/issues/494)) ([#127](https://github.com/box/box-codegen/issues/127)) ([`8adcc85`](https://github.com/box/box-codegen/commit/8adcc858ef0f924f168406b031d379c786fa90d0)) - Box Signの`SuppressNotifications`および`ExternalSystemName`フィールドを追加 (box/box-openapi[#425](https://github.com/box/box-codegen/issues/425)) ([#124](https://github.com/box/box-codegen/issues/124)) ([`c841881`](https://github.com/box/box-codegen/commit/c841881cea9b0636bb624fe45d77c2817327dd35)) - `StringEnum`をサポート (box/box-codegen[#514](https://github.com/box/box-codegen/issues/514)) ([#162](https://github.com/box/box-codegen/issues/162)) ([`6ac2fe9`](https://github.com/box/box-codegen/commit/6ac2fe9811efde6b02cd3ca50834b0bdafea1ab3)) **Source:** [https://ja.developer.box.com/changelog/2024-07-03-box-dotnet-sdk-generated-v040-released](https://ja.developer.box.com/changelog/2024-07-03-box-dotnet-sdk-generated-v040-released) --- ### Box Dotnet SDK Generated `v1.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.0.0のリリース バグ修正 IntegrationMappingPartnerItemSlackをIntegrationMappingPartnerItemSlackUnionに抽出 (box/box-codegen#53… # Box Dotnet SDK Generated v1.0.0のリリース ### バグ修正 - `IntegrationMappingPartnerItemSlack`を`IntegrationMappingPartnerItemSlackUnion`に抽出 (box/box-codegen[#530](https://github.com/box/box-codegen/issues/530)) ([#183](https://github.com/box/box-codegen/issues/183)) ([`3b1b634`](https://github.com/box/box-codegen/commit/3b1b634904edc73af094aa8aa6e89d32b9e92aee)) - 分割アップロードの信頼性を改善 (box/box-codegen[#529](https://github.com/box/box-codegen/issues/529)) ([#182](https://github.com/box/box-codegen/issues/182)) ([`e2a045f`](https://github.com/box/box-codegen/commit/e2a045f5d2afbe15be0284099ee2236f9c19cd73)) - 必須フィールドの一部から`init`を削除、`nullability`の修正 (box/box-codegen[#532](https://github.com/box/box-codegen/issues/532)) ([#190](https://github.com/box/box-codegen/issues/190)) ([`c58f8af`](https://github.com/box/box-codegen/commit/c58f8afa41fa4346eb3f2ced9e48695980e917e1)) - `retry-after`ヘッダーが設定されているステータスコード202のリクエストを再試行 (box/box-codegen[#533](https://github.com/box/box-codegen/issues/533)) ([#191](https://github.com/box/box-codegen/issues/191)) ([`abaafd7`](https://github.com/box/box-codegen/commit/abaafd70b982ae560430ff083b4bee1d533d5275)) - 分割アップロードを更新 (box/box-codegen[#523](https://github.com/box/box-codegen/issues/523)) ([#177](https://github.com/box/box-codegen/issues/177)) ([`9bcaf51`](https://github.com/box/box-codegen/commit/9bcaf51e0bcd3134dea2b37277a24abaa483754a)) ### 新機能と機能強化 - ユーザーコラボレーションに`is_active`パラメータを追加 (box/box-openapi[#437](https://github.com/box/box-codegen/issues/437)) ([#181](https://github.com/box/box-codegen/issues/181)) ([`ec5f2d1`](https://github.com/box/box-codegen/commit/ec5f2d1d2cdba330f26a7db40042b70d3ec5bca2)) - `namespaces`を簡略化 (box/box-codegen[#518](https://github.com/box/box-codegen/issues/518)) ([#175](https://github.com/box/box-codegen/issues/175)) ([`7831b09`](https://github.com/box/box-codegen/commit/7831b098971616497cbc90a8c277fee9b2c42c39)) - AIエージェントAPIをサポート (box/box-codegen[#531](https://github.com/box/box-codegen/issues/531)) ([#188](https://github.com/box/box-codegen/issues/188)) ([`0c29645`](https://github.com/box/box-codegen/commit/0c296458ef966e57c5aba2a8068034d4de820ef9)) - デフォルトのインターフェースプロパティをサポートし、依存関係を昇格 (box/box-codegen[#527](https://github.com/box/box-codegen/issues/527)) ([#184](https://github.com/box/box-codegen/issues/184)) ([`6b52792`](https://github.com/box/box-codegen/commit/6b52792057ab94f6bcc2f86b47e0ed5f25900adf)) **Source:** [https://ja.developer.box.com/changelog/2024-07-24-box-dotnet-sdk-generated-v100-released](https://ja.developer.box.com/changelog/2024-07-24-box-dotnet-sdk-generated-v100-released) --- ### Box Dotnet SDK Generated `v1.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.1.0のリリース バグ修正 不足していたitem_uploadスコープを追加 (#201) (483b055) Signテンプレートの署名者に不足していたフィールドを追加し、AIスキーマを修正 (box/box… # Box Dotnet SDK Generated v1.1.0のリリース ### バグ修正 - 不足していた`item_upload`スコープを追加 ([#201](https://github.com/box/box-codegen/issues/201)) ([`483b055`](https://github.com/box/box-codegen/commit/483b05586f8e45771e101d286fddebc564ff89bd)) - Signテンプレートの署名者に不足していたフィールドを追加し、AIスキーマを修正 (box/box-openapi[#451](https://github.com/box/box-codegen/issues/451)) ([#229](https://github.com/box/box-codegen/issues/229)) ([`121f733`](https://github.com/box/box-codegen/commit/121f733f52e945927125f4941206b1553202914d)) - `IntegrationMapping`スキーマを修正 (box/box-codegen[#551](https://github.com/box/box-codegen/issues/551)) ([#226](https://github.com/box/box-codegen/issues/226)) ([`3eca154`](https://github.com/box/box-codegen/commit/3eca15434b65bc0bb2421d36ec50691e7fe40e3b)) - ネットワークの例外処理を改善し、大きなファイルのアップロードを処理 (box/box-openapi[#444](https://github.com/box/box-codegen/issues/444)) ([#222](https://github.com/box/box-codegen/issues/222)) ([`75ccd07`](https://github.com/box/box-codegen/commit/75ccd078e29015b865462ea1aaf0420d5e63d9cd)) ### 新機能と機能強化 - Box AIのメソッドに新しいパラメータを追加し、`AiResponseFull`バリアントを導入 (box/box-openapi[#446](https://github.com/box/box-codegen/issues/446)) ([#224](https://github.com/box/box-codegen/issues/224)) ([`6d205c4`](https://github.com/box/box-codegen/commit/6d205c4e28a657ad65ae704a7343a8670806f7f1)) - `FetchOptions`にURLを追加 (box/box-codegen[#549](https://github.com/box/box-codegen/issues/549)) ([#231](https://github.com/box/box-codegen/issues/231)) ([`41c45dc`](https://github.com/box/box-codegen/commit/41c45dcf6476b6cae7941c0952c375aa76ce42a1)) - 分割アップロードのエンドポイントURLをパラメータ化 (box/box-openapi[#444](https://github.com/box/box-codegen/issues/444)) ([#208](https://github.com/box/box-codegen/issues/208)) ([`feac37c`](https://github.com/box/box-codegen/commit/feac37c34f99b5951731b605ef895f7f3b5de6dd)) - `nullable`フィールドをサポート (box/box-codegen[#550](https://github.com/box/box-codegen/issues/550)) ([#230](https://github.com/box/box-codegen/issues/230)) ([`b9da32b`](https://github.com/box/box-codegen/commit/b9da32b27f506618faa0119f725528555be14f60)) **Source:** [https://ja.developer.box.com/changelog/2024-08-23-box-dotnet-sdk-generated-v110-released](https://ja.developer.box.com/changelog/2024-08-23-box-dotnet-sdk-generated-v110-released) --- ### Box Dotnet SDK Generated `v1.10.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.10.0のリリース 新機能と機能強化 UploadWithPreflightCheckコンビニエンスメソッドを追加 (box/box-codegen#705) (#469) (8dff7bb) AI… # Box Dotnet SDK Generated v1.10.0のリリース ### 新機能と機能強化 - `UploadWithPreflightCheck`コンビニエンスメソッドを追加 (box/box-codegen[#705](https://github.com/box/box-dotnet-sdk-gen/issues/705)) ([#469](https://github.com/box/box-dotnet-sdk-gen/issues/469)) ([`8dff7bb`](https://github.com/box/box-dotnet-sdk-gen/commit/8dff7bb859cd034d4e43b81c7c11b9a3fdb396e8)) - AIエージェントの警告を追加し、より多くの種類のメタデータ値を許可 (box/box-openapi[#520](https://github.com/box/box-dotnet-sdk-gen/issues/520)) ([#474](https://github.com/box/box-dotnet-sdk-gen/issues/474)) ([`a53cff5`](https://github.com/box/box-dotnet-sdk-gen/commit/a53cff54395db91bad179d3c5bbae9800c1b79dd)) - Signテンプレートスキーマにセキュリティ設定のプロパティを追加 (box/box-openapi[#518](https://github.com/box/box-dotnet-sdk-gen/issues/518)) ([#462](https://github.com/box/box-dotnet-sdk-gen/issues/462)) ([`7fddaea`](https://github.com/box/box-dotnet-sdk-gen/commit/7fddaeab425a859dc1aa5dc3420891047d27efdf)) - AI APIにIBMモデルのサポートを追加 (box/box-openapi[#522](https://github.com/box/box-dotnet-sdk-gen/issues/522)) ([#475](https://github.com/box/box-dotnet-sdk-gen/issues/475)) ([`a187301`](https://github.com/box/box-dotnet-sdk-gen/commit/a187301543d6741c77799b66fde0f12d4fca710d)) - エラーの機密データのサニタイズをサポート (box/box-codegen[#695](https://github.com/box/box-dotnet-sdk-gen/issues/695)) ([#453](https://github.com/box/box-dotnet-sdk-gen/issues/453)) ([`5ee0c93`](https://github.com/box/box-dotnet-sdk-gen/commit/5ee0c932254a0cd1cc7bc814c29fe5f9e2151462)) **Source:** [https://ja.developer.box.com/changelog/2025-05-13-box-dotnet-sdk-generated-v1100-released](https://ja.developer.box.com/changelog/2025-05-13-box-dotnet-sdk-generated-v1100-released) --- ### Box Dotnet SDK Generated `v1.11.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.11.0のリリース バグ修正 トークンの取得にretrieveTokenメソッドを使用するようダウンスコープトークンを修正 (box/box-codegen#731) (#492) (292360e) イベントのnext… # Box Dotnet SDK Generated v1.11.0のリリース ### バグ修正 - トークンの取得に`retrieveToken`メソッドを使用するようダウンスコープトークンを修正 (box/box-codegen[#731](https://github.com/box/box-dotnet-sdk-gen/issues/731)) ([#492](https://github.com/box/box-dotnet-sdk-gen/issues/492)) ([`292360e`](https://github.com/box/box-dotnet-sdk-gen/commit/292360efe86797e42dbfb388a5bd2f5b41efa0c1)) - イベントの`next_stream_position`プロパティタイプを`long`に指定 (box/box-openapi[#535](https://github.com/box/box-dotnet-sdk-gen/issues/535)) ([#536](https://github.com/box/box-dotnet-sdk-gen/issues/536)) ([`da265bd`](https://github.com/box/box-dotnet-sdk-gen/commit/da265bd5c40defc4b2036811aefad59447faca09)) ### 新機能と機能強化 - Unionに`ReadOnlyCollection`型へのimplicit演算子を追加 (box/box-codegen[#633](https://github.com/box/box-dotnet-sdk-gen/issues/633)) ([#483](https://github.com/box/box-dotnet-sdk-gen/issues/483)) ([`a1fc2c5`](https://github.com/box/box-dotnet-sdk-gen/commit/a1fc2c584021c151fc9d1815877ffe73c972f711)) - AIスプレッドシートプロセッサを追加 (box/box-openapi[#533](https://github.com/box/box-dotnet-sdk-gen/issues/533)) ([#519](https://github.com/box/box-dotnet-sdk-gen/issues/519)) ([`c344023`](https://github.com/box/box-dotnet-sdk-gen/commit/c34402355243145a1cab7da78c6c2facde39fb36)) - アーカイブの公開APIを追加 (box/box-openapi[#540](https://github.com/box/box-dotnet-sdk-gen/issues/540)) ([#543](https://github.com/box/box-dotnet-sdk-gen/issues/543)) ([`be0bb9d`](https://github.com/box/box-dotnet-sdk-gen/commit/be0bb9d3e58f97bc87f749d08d828c990c71789b)) - 新しいHubs APIとHubの項目APIを追加 (box/box-openapi[#538](https://github.com/box/box-dotnet-sdk-gen/issues/538)) ([#537](https://github.com/box/box-dotnet-sdk-gen/issues/537)) ([`f2584cd`](https://github.com/box/box-dotnet-sdk-gen/commit/f2584cd9be40b67eaa3a500411b367543a26f830)) - `Metadata Error`の新しいスキーマを追加 (box/box-openapi[#539](https://github.com/box/box-dotnet-sdk-gen/issues/539)) ([#538](https://github.com/box/box-dotnet-sdk-gen/issues/538)) ([`425b4ad`](https://github.com/box/box-dotnet-sdk-gen/commit/425b4add7975d49584c8ed18a791caf72559203c)) - ShieldリストAPIを追加 (box/box-openapi[#528](https://github.com/box/box-dotnet-sdk-gen/issues/528)) ([#496](https://github.com/box/box-dotnet-sdk-gen/issues/496)) ([`8b81c87`](https://github.com/box/box-dotnet-sdk-gen/commit/8b81c879c8b8bb5c020ecb573e527e2a5d9f1701)) - JWTの秘密キー復号メカニズムの挿入を許可 (box/box-codegen[#754](https://github.com/box/box-dotnet-sdk-gen/issues/754)) ([#528](https://github.com/box/box-dotnet-sdk-gen/issues/528)) ([`865c729`](https://github.com/box/box-dotnet-sdk-gen/commit/865c729395556a3c4a8bb1f1418c3932d268bdc4)) - `OneOf`クラスをpublicに変更 (box/box-codegen[#773](https://github.com/box/box-dotnet-sdk-gen/issues/773)) ([#551](https://github.com/box/box-dotnet-sdk-gen/issues/551)) ([`f7dcc32`](https://github.com/box/box-dotnet-sdk-gen/commit/f7dcc3262b289da55ebc6210c5656cc98e3b14b4)) - Hubsのベータ版エンドポイントをサポート (box/box-openapi[#531](https://github.com/box/box-dotnet-sdk-gen/issues/531)) ([#511](https://github.com/box/box-dotnet-sdk-gen/issues/511)) ([`59c43b8`](https://github.com/box/box-dotnet-sdk-gen/commit/59c43b868e46edd26be0be13a5e1772a4d731128)) - AI Studioの新しいツールをサポート (box/box-openapi[#534](https://github.com/box/box-dotnet-sdk-gen/issues/534)) ([#520](https://github.com/box/box-dotnet-sdk-gen/issues/520)) ([`0b47597`](https://github.com/box/box-dotnet-sdk-gen/commit/0b47597f259884a2a5f567608e9e07997e3c6dc9)) - リーガルホールドとAIモデルを更新 (box/box-openapi[#526](https://github.com/box/box-dotnet-sdk-gen/issues/526)) ([#494](https://github.com/box/box-dotnet-sdk-gen/issues/494)) ([`6310e56`](https://github.com/box/box-dotnet-sdk-gen/commit/6310e560df6d9520598295139f55ec8a0a4d69d9)) **Source:** [https://ja.developer.box.com/changelog/2025-08-05-box-dotnet-sdk-generated-v1110-released](https://ja.developer.box.com/changelog/2025-08-05-box-dotnet-sdk-generated-v1110-released) --- ### Box Dotnet SDK Generated `v1.12.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.12.0のリリース 新機能と機能強化 不足していたWebhookイベントを追加 (box/box-openapi#554) (#600) (46c6d33) # Box Dotnet SDK Generated v1.12.0のリリース ### 新機能と機能強化 - 不足していたWebhookイベントを追加 (box/box-openapi[#554](https://github.com/box/box-dotnet-sdk-gen/issues/554)) ([#600](https://github.com/box/box-dotnet-sdk-gen/issues/600)) ([`46c6d33`](https://github.com/box/box-dotnet-sdk-gen/commit/46c6d33238b7a97352a434333e18054d8adccd03)) **Source:** [https://ja.developer.box.com/changelog/2025-09-05-box-dotnet-sdk-generated-v1120-released](https://ja.developer.box.com/changelog/2025-09-05-box-dotnet-sdk-generated-v1120-released) --- ### Box Dotnet SDK Generated `v1.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.2.0のリリース バグ修正 queryParamsでdatetimeを正しく送信 (box/box-codegen#560) (#243) (9657526) メタデータクエリの結果のバリアントを修正 (box/box… # Box Dotnet SDK Generated v1.2.0のリリース ### バグ修正 - `queryParams`で`datetime`を正しく送信 (box/box-codegen[#560](https://github.com/box/box-codegen/issues/560)) ([#243](https://github.com/box/box-codegen/issues/243)) ([`9657526`](https://github.com/box/box-codegen/commit/9657526667753d77eacfd674cde60ab4030ae42d)) - メタデータクエリの結果のバリアントを修正 (box/box-openapi[#456](https://github.com/box/box-codegen/issues/456)) ([#249](https://github.com/box/box-codegen/issues/249)) ([`37625ea`](https://github.com/box/box-codegen/commit/37625eabe4f87d57a9f58920829c00cddd34bcb1)) ### 新機能と機能強化 - Hubsベータ版を追加 (box/box-openapi[#453](https://github.com/box/box-codegen/issues/453)) ([#241](https://github.com/box/box-codegen/issues/241)) ([`c28f660`](https://github.com/box/box-codegen/commit/c28f6605c94e250bbab853ef610c46c1d3c9ef95)) - タイプに未加工の`json`を追加 (box/box-codegen[#567](https://github.com/box/box-codegen/issues/567)) ([#258](https://github.com/box/box-codegen/issues/258)) ([`a1e7bc5`](https://github.com/box/box-codegen/commit/a1e7bc55da0dec8bfd1159a1c158154177581019)) - `ai/extract`および`ai/extract_structured`エンドポイントをサポート (box/box-codegen[#564](https://github.com/box/box-codegen/issues/564)) ([#253](https://github.com/box/box-codegen/issues/253)) ([`a17d8f8`](https://github.com/box/box-codegen/commit/a17d8f8dbce8ac7f42b9e23c8c216e992a64d762)) **Source:** [https://ja.developer.box.com/changelog/2024-09-26-box-dotnet-sdk-generated-v120-released](https://ja.developer.box.com/changelog/2024-09-26-box-dotnet-sdk-generated-v120-released) --- ### Box Dotnet SDK Generated `v1.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.3.0のリリース バグ修正 system.text.jsonを8.0.5に昇格 (box/box-codegen#578) (#271) (dad2f52) 新機能と機能強化 プロキシをサポート (box/box… # Box Dotnet SDK Generated v1.3.0のリリース ### バグ修正 - `system.text.json`を8.0.5に昇格 (box/box-codegen[#578](https://github.com/box/box-codegen/issues/578)) ([#271](https://github.com/box/box-codegen/issues/271)) ([`dad2f52`](https://github.com/box/box-codegen/commit/dad2f521066e73c3dcdaec196cd6940401e31f3a)) ### 新機能と機能強化 - プロキシをサポート (box/box-codegen[#564](https://github.com/box/box-codegen/issues/577)) ([#253](https://github.com/box/box-codegen/issues/274)) ([`dea1937`](https://github.com/box/box-codegen/commit/dea19373a7169365acb968a66c78c5937ef698e1)) **Source:** [https://ja.developer.box.com/changelog/2024-10-17-box-dotnet-sdk-generated-v130-released](https://ja.developer.box.com/changelog/2024-10-17-box-dotnet-sdk-generated-v130-released) --- ### Box Dotnet SDK Generated `v1.3.1`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.3.1のリリース バグ修正 クエリのparams内でStringEnumリストを正しくシリアル化 (#288) (dac8392) スキーマエラーをサポートするようクライアントエラースキーマを更新 (box/box… # Box Dotnet SDK Generated v1.3.1のリリース ### バグ修正 - クエリの`params`内で`StringEnum`リストを正しくシリアル化 ([#288](https://github.com/box/box-codegen/issues/288)) ([`dac8392`](https://github.com/box/box-codegen/commit/dac839280b43f4bd954d3966032ff4925150c061)) - スキーマエラーをサポートするようクライアントエラースキーマを更新 (box/box-openapi[#467](https://github.com/box/box-codegen/issues/467)) ([#281](https://github.com/box/box-codegen/issues/281)) ([`bef2632`](https://github.com/box/box-codegen/commit/bef2632af99f0477bd009bcb91248c678b4e1bab)) - 統合マッピングのレスポンスの説明を更新 (box/box-openapi[#463](https://github.com/box/box-codegen/issues/463)) ([#279](https://github.com/box/box-codegen/issues/279)) ([`05e07b0`](https://github.com/box/box-codegen/commit/05e07b025c234de4c4161e567c0919748d24f804)) **Source:** [https://ja.developer.box.com/changelog/2024-10-24-box-dotnet-sdk-generated-v131-released](https://ja.developer.box.com/changelog/2024-10-24-box-dotnet-sdk-generated-v131-released) --- ### Box Dotnet SDK Generated `v1.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.4.0のリリース バグ修正 MetadataQueryのQueryParamsのタイプをDictionaryからDictionaryに変更 (box/box… # Box Dotnet SDK Generated v1.4.0のリリース ### バグ修正 - `MetadataQuery`の`QueryParams`のタイプを`Dictionary<string, string>`から`Dictionary<string, object>`に変更 (box/box-openapi[#479](https://github.com/box/box-codegen/issues/479)) ([#298](https://github.com/box/box-codegen/issues/298)) ([`656b495`](https://github.com/box/box-codegen/commit/656b495bea779879bb82b2cda0cca5a30a8ad8ca)) - `RSAKey`への変換を修正 (box/box-codegen[#591](https://github.com/box/box-codegen/issues/591)) ([#297](https://github.com/box/box-codegen/issues/297)) ([`068b1f7`](https://github.com/box/box-codegen/commit/068b1f7b3ea3c62647e03e0e17176bde049949db)) ### 新機能と機能強化 - AI LLMエンドポイントのAWS `params`を追加。タイプを`AiLlmEndpointParamsGoogleOrAiLlmEndpointParamsOpenAi`から`AiLlmEndpointParamsAwsOrAiLlmEndpointParamsGoogleOrAiLlmEndpointParamsOpenAi`に変更 (box/box-openapi[#478](https://github.com/box/box-codegen/issues/478)) ([#291](https://github.com/box/box-codegen/issues/291)) ([`dcb8a20`](https://github.com/box/box-codegen/commit/dcb8a201577be08b644266c157db45cd6797c71c)) **Source:** [https://ja.developer.box.com/changelog/2024-10-31-box-dotnet-sdk-generated-v140-released](https://ja.developer.box.com/changelog/2024-10-31-box-dotnet-sdk-generated-v140-released) --- ### Box Dotnet SDK Generated `v1.5.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.5.0のリリース バグ修正 コンテンツのないステータスコードをサポート (box/box-codegen#604) (#314) (57747d5) コラボレーション、メタデータ、コレクションのリソースを更新 (box… # Box Dotnet SDK Generated v1.5.0のリリース ### バグ修正 - コンテンツのないステータスコードをサポート (box/box-codegen[#604](https://github.com/box/box-dotnet-sdk-gen/issues/604)) ([#314](https://github.com/box/box-dotnet-sdk-gen/issues/314)) ([`57747d5`](https://github.com/box/box-dotnet-sdk-gen/commit/57747d50c48dd4c433dad342a5e2a20ac0b15952)) - コラボレーション、メタデータ、コレクションのリソースを更新 (box/box-openapi[#483](https://github.com/box/box-dotnet-sdk-gen/issues/483)) ([#316](https://github.com/box/box-dotnet-sdk-gen/issues/316)) ([`d331f8a`](https://github.com/box/box-dotnet-sdk-gen/commit/d331f8a1f7110e5e00df170cedef85af682d58b4)) ### 新機能と機能強化 - 省略可能なURLパラメータを`FetchResponse`に追加 (box/box-codegen[#617](https://github.com/box/box-dotnet-sdk-gen/issues/617)) ([#331](https://github.com/box/box-dotnet-sdk-gen/issues/331)) ([`61484ec`](https://github.com/box/box-dotnet-sdk-gen/commit/61484ec9fbf96c0ae62116ec1ee0cbb50aae7493)) - プロキシに対するデフォルトの資格情報の使用を許可 (box/box-codegen[#623](https://github.com/box/box-dotnet-sdk-gen/issues/623)) ([#334](https://github.com/box/box-dotnet-sdk-gen/issues/334)) ([`bc4636e`](https://github.com/box/box-dotnet-sdk-gen/commit/bc4636e64859fd7d0b1449ec34b6144d0eb1a768))、[#333](https://github.com/box/box-dotnet-sdk-gen/issues/333)をクローズ - カスタムHTTPリクエストを行うためのメソッドを公開 (box/box-codegen[#622](https://github.com/box/box-dotnet-sdk-gen/issues/622)) ([#329](https://github.com/box/box-dotnet-sdk-gen/issues/329)) ([`e689140`](https://github.com/box/box-dotnet-sdk-gen/commit/e689140d6d3be772ff2370e7de5797707df7bdad)) - IDを指定してコレクションを取得エンドポイントをサポート (box/box-codegen[#595](https://github.com/box/box-dotnet-sdk-gen/issues/595)) ([#304](https://github.com/box/box-dotnet-sdk-gen/issues/304)) ([`9ebf59a`](https://github.com/box/box-dotnet-sdk-gen/commit/9ebf59ae388aa9aec5d8a0a3551f13e544c7571d)) **Source:** [https://ja.developer.box.com/changelog/2024-12-04-box-dotnet-sdk-generated-v150-released](https://ja.developer.box.com/changelog/2024-12-04-box-dotnet-sdk-generated-v150-released) --- ### Box Dotnet SDK Generated `v1.6.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.6.0のリリース バグ修正 不足していたトークンのスコープを追加 (box/box-openapi#490) (#353) (d41e1c8) Slack統合マッピングのバリアント構成の誤りを修正 (box/box… # Box Dotnet SDK Generated v1.6.0のリリース ### バグ修正 - 不足していたトークンのスコープを追加 (box/box-openapi[#490](https://github.com/box/box-dotnet-sdk-gen/issues/490)) ([#353](https://github.com/box/box-dotnet-sdk-gen/issues/353)) ([`d41e1c8`](https://github.com/box/box-dotnet-sdk-gen/commit/d41e1c8c3195a08850f3217fe747e9751a979c76)) - Slack統合マッピングのバリアント構成の誤りを修正 (box/box-openapi[#492](https://github.com/box/box-dotnet-sdk-gen/issues/492)) ([#356](https://github.com/box/box-dotnet-sdk-gen/issues/356)) ([`8320fb7`](https://github.com/box/box-dotnet-sdk-gen/commit/8320fb7da8449a8ae9965bd3496523a0f3bfe5af)) - `IntegrationMapping`スキーマ内のフィールドの順序を修正 (box/box-openapi[#497](https://github.com/box/box-dotnet-sdk-gen/issues/497)) ([#370](https://github.com/box/box-dotnet-sdk-gen/issues/370)) ([`3361ad1`](https://github.com/box/box-dotnet-sdk-gen/commit/3361ad1833670f9e99902b2206112592f7272ab8)) - `SignRequest`から未使用のパラメータを削除 (box/box-openapi[#489](https://github.com/box/box-dotnet-sdk-gen/issues/489)) ([#343](https://github.com/box/box-dotnet-sdk-gen/issues/343)) ([`5d88a51`](https://github.com/box/box-dotnet-sdk-gen/commit/5d88a5176489f82057a93bd5dc119e4ae3afdcd7)) ### 新機能と機能強化 - `AiResponse`に`aiAgent`情報を追加 (box/box-openapi[#485](https://github.com/box/box-dotnet-sdk-gen/issues/485)) ([#336](https://github.com/box/box-dotnet-sdk-gen/issues/336)) ([`cbf91fc`](https://github.com/box/box-dotnet-sdk-gen/commit/cbf91fc23012588f0f4175a713d562738818218e)) - ネットワーククライアントの実装を置き換えるサポートを追加 (box/box-codegen[#629](https://github.com/box/box-dotnet-sdk-gen/issues/629)) ([#347](https://github.com/box/box-dotnet-sdk-gen/issues/347)) ([`29d904e`](https://github.com/box/box-dotnet-sdk-gen/commit/29d904e72fd9c4511183ba35454a82ff9c2d7358)) - Box Doc Gen APIをサポート (box/box-codegen[#644](https://github.com/box/box-dotnet-sdk-gen/issues/644)) ([#378](https://github.com/box/box-dotnet-sdk-gen/issues/378)) ([`5cd0fde`](https://github.com/box/box-dotnet-sdk-gen/commit/5cd0fdefb6a976fb8904beb08752f3e7dbb7428b)) - ファイルのダウンロードURLとファイルのサムネイルURLの取得をサポート (box/box-codegen[#642](https://github.com/box/box-dotnet-sdk-gen/issues/642)) ([#374](https://github.com/box/box-dotnet-sdk-gen/issues/374)) ([`76b1513`](https://github.com/box/box-dotnet-sdk-gen/commit/76b151371f405940eef5ef34fb00809c8f1d8f35)) - ファイル、フォルダ、ウェブリンクの更新で`userId`パラメータ (省略可) をサポート (box/box-openapi[#488](https://github.com/box/box-dotnet-sdk-gen/issues/488)) ([#340](https://github.com/box/box-dotnet-sdk-gen/issues/340)) ([`fd1c597`](https://github.com/box/box-dotnet-sdk-gen/commit/fd1c59739c5361ec4462d2597f504fa3cff5be17)) **Source:** [https://ja.developer.box.com/changelog/2025-01-21-box-dotnet-sdk-generated-v160-released](https://ja.developer.box.com/changelog/2025-01-21-box-dotnet-sdk-generated-v160-released) --- ### Box Dotnet SDK Generated `v1.7.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.7.0のリリース バグ修正 ファイルレプリゼンテーションのpagedおよびthumbプロパティのタイプを修正 (box/box-openapi#503) (#383) (d6995ad… # Box Dotnet SDK Generated v1.7.0のリリース ### バグ修正 - ファイルレプリゼンテーションの`paged`および`thumb`プロパティのタイプを修正 (box/box-openapi[#503](https://github.com/box/box-dotnet-sdk-gen/issues/503)) ([#383](https://github.com/box/box-dotnet-sdk-gen/issues/383)) ([`d6995ad`](https://github.com/box/box-dotnet-sdk-gen/commit/d6995ad8ffa4f2cceb8195ffbfb6606f934a671f)) - クロスオリジンのリダイレクト時に`Authentication`ヘッダーが渡されるのを防止 (box/box-codegen[#648](https://github.com/box/box-dotnet-sdk-gen/issues/648)) ([#382](https://github.com/box/box-dotnet-sdk-gen/issues/382)) ([`a64d373`](https://github.com/box/box-dotnet-sdk-gen/commit/a64d373a935cd2a8e6f72184b8dc129a973e9d45)) ### 新機能と機能強化 - Box Signの共有リクエストを追加 (box/box-openapi[#504](https://github.com/box/box-dotnet-sdk-gen/issues/504)) ([#384](https://github.com/box/box-dotnet-sdk-gen/issues/384)) ([`d563886`](https://github.com/box/box-dotnet-sdk-gen/commit/d563886f2a2f48a20df13600f9c25ff95198a56f)) - 機能: /ai/askにHubのサポートを追加。`AiAsk`クラスの`Items`プロパティのタイプを`IReadOnlyList<AiItemBase>`から`IReadOnlyList<AiItemAsk>`に置き換え (box/box-codegen[#656](https://github.com/box/box-dotnet-sdk-gen/issues/656)) ([#397](https://github.com/box/box-dotnet-sdk-gen/issues/397)) ([`32b6d03`](https://github.com/box/box-dotnet-sdk-gen/commit/32b6d03aba97c18a8901efe98fc60c74e10197ce)) - `/ai/extract_structured`レスポンスのスキーマを更新 (box/box-codegen[#641](https://github.com/box/box-dotnet-sdk-gen/issues/641)) ([#391](https://github.com/box/box-dotnet-sdk-gen/issues/391)) ([`5f79a03`](https://github.com/box/box-dotnet-sdk-gen/commit/5f79a03453b9339a26eb130113d8f55748f0d912)) **Source:** [https://ja.developer.box.com/changelog/2025-02-06-box-dotnet-sdk-generated-v170-released](https://ja.developer.box.com/changelog/2025-02-06-box-dotnet-sdk-generated-v170-released) --- ### Box Dotnet SDK Generated `v1.8.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.8.0のリリース バグ修正 TaskCanceledExceptionがスローされた場合にHTTPリクエストを再試行しない (box/box-codegen#665) (#406) (1af0a6a) 新機能と機能強化 AI… # Box Dotnet SDK Generated v1.8.0のリリース ### バグ修正 - `TaskCanceledException`がスローされた場合にHTTPリクエストを再試行しない (box/box-codegen[#665](https://github.com/box/box-dotnet-sdk-gen/issues/665)) ([#406](https://github.com/box/box-dotnet-sdk-gen/issues/406)) ([`1af0a6a`](https://github.com/box/box-dotnet-sdk-gen/commit/1af0a6aaf5f1e80f092ce506abe1cc01bf110bb8)) ### 新機能と機能強化 - AI Studio APIをサポート (box/box-codegen[#626](https://github.com/box/box-dotnet-sdk-gen/issues/626)) ([#409](https://github.com/box/box-dotnet-sdk-gen/issues/409)) ([`9661450`](https://github.com/box/box-dotnet-sdk-gen/commit/966145021d4a1dd450cd199cc9ed3e9457f5a141)) **Source:** [https://ja.developer.box.com/changelog/2025-02-20-box-dotnet-sdk-generated-v180-released](https://ja.developer.box.com/changelog/2025-02-20-box-dotnet-sdk-generated-v180-released) --- ### Box Dotnet SDK Generated `v1.9.0`のリリース **Type:** changelog | **Section:** Changelog Box Dotnet SDK Generated v1.9.0のリリース バグ修正 verification_phone_numberプロパティを追加して署名リクエストを作成 (box/box-openapi#515) (#427) (d90faea) 単一の.NET… # Box Dotnet SDK Generated v1.9.0のリリース ### バグ修正 - `verification_phone_number`プロパティを追加して署名リクエストを作成 (box/box-openapi[#515](https://github.com/box/box-dotnet-sdk-gen/issues/515)) ([#427](https://github.com/box/box-dotnet-sdk-gen/issues/427)) ([`d90faea`](https://github.com/box/box-dotnet-sdk-gen/commit/d90faea77650a37ce794a93c51bd9a8eb91f619c)) - 単一の.NETバージョンがサポートされている場合に`targetFramework`を使用 (box/box-codegen[#684](https://github.com/box/box-dotnet-sdk-gen/issues/684)) ([#438](https://github.com/box/box-dotnet-sdk-gen/issues/438)) ([`4e64174`](https://github.com/box/box-dotnet-sdk-gen/commit/4e64174c21c6f1dd2cef75f1f29ebe2ace92d852)) ### 新機能と機能強化 - 共有リンクのアプリ項目を検索するエンドポイントを追加 (box/box-openapi[#514](https://github.com/box/box-dotnet-sdk-gen/issues/514)) ([#426](https://github.com/box/box-dotnet-sdk-gen/issues/426)) ([`4dc5dc1`](https://github.com/box/box-dotnet-sdk-gen/commit/4dc5dc14e3c204c537180df166d07735ae1c4e40)) - Teams統合マッピング (リスト) APIを追加 (box/box-openapi[#517](https://github.com/box/box-dotnet-sdk-gen/issues/517)) ([#429](https://github.com/box/box-dotnet-sdk-gen/issues/429)) ([`92063c4`](https://github.com/box/box-dotnet-sdk-gen/commit/92063c435d7cb38a7eeca2e71f42e32b995a659a)) - 認証クラス用のトークンストレージを公開 (box/box-codegen[#682](https://github.com/box/box-dotnet-sdk-gen/issues/682)) ([#435](https://github.com/box/box-dotnet-sdk-gen/issues/435)) ([`413058e`](https://github.com/box/box-dotnet-sdk-gen/commit/413058e78cb69c89be6a819c0e63f9457bd7f2f5)) **Source:** [https://ja.developer.box.com/changelog/2025-03-18-box-dotnet-sdk-generated-v190-released](https://ja.developer.box.com/changelog/2025-03-18-box-dotnet-sdk-generated-v190-released) --- ### Box Embedガイドの更新 **Type:** changelog | **Section:** Changelog Box Embedガイドの更新 Box Embedを使用すると、Boxウェブアプリをアプリケーションの任意の場所に埋め込むことができます。更新されたウェブアプリは、さまざまな変更に対応可能です。たとえば、統合で埋め込まれたBox… # Box Embedガイドの更新 [Box Embed](g://embed/box-embed/)を使用すると、Boxウェブアプリをアプリケーションの任意の場所に埋め込むことができます。更新されたウェブアプリは、さまざまな変更に対応可能です。たとえば、統合で埋め込まれたBoxウェブアプリが縮小された場合、ボタンやリストなどすべてのUIコンポーネントも、引き続き使用できるようにサイズが変更されます。 また、この更新にはクラウドゲーム (クリックジャッキングを防止してセキュリティを強化するためのウィジェット) の説明も含まれます。 # サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-04-20-box-embed-guide-update](https://ja.developer.box.com/changelog/2023-04-20-box-embed-guide-update) --- ### Box for Salesforce管理パッケージのUI Elements **Type:** changelog | **Section:** Changelog Box for Salesforce管理パッケージのUI Elements Box for Salesforce管理パッケージで、Content Picker、エクスプローラ、プレビュー、アップローダーのUI ElementsをLightning… # Box for Salesforce管理パッケージのUI Elements [Box for Salesforce](g://tooling/salesforce-toolkit/)管理パッケージで、[Content Picker](g://embed/ui-elements/picker/)、[エクスプローラ](g://embed/ui-elements/explorer)、[プレビュー](g://embed/ui-elements/preview)、[アップローダー](g://embed/ui-elements/uploader)の[UI Elements](g://embed/ui-elements/)をLightningコンポーネントとして使用できます。これらのUI ElementsはLightningページまたはLightningフローで使用できます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-05-26-salesforce-ui-elements](https://ja.developer.box.com/changelog/2023-05-26-salesforce-ui-elements) --- ### Box Hubs API **Type:** changelog | **Section:** Changelog Box Hubs API Box Hubs APIを使用すると、アプリケーション内でプログラムによってコンテンツのHubの作成、管理、コラボレーションを行うことができます。Hubにより、チームやプロジェクト間のコンテンツの整理や共有を1か所で行うことができます。 Hubs APIを使用してできること Hubs APIは、主に以下の3種類のリソースで構成されており、これらのリソースにより包括的なHub管理機能を構築できます。 # Box Hubs API Box Hubs APIを使用すると、アプリケーション内でプログラムによってコンテンツのHubの作成、管理、コラボレーションを行うことができます。Hubにより、チームやプロジェクト間のコンテンツの整理や共有を1か所で行うことができます。 ## Hubs APIを使用してできること Hubs APIは、主に以下の3種類のリソースで構成されており、これらのリソースにより包括的なHub管理機能を構築できます。 [Hub](r://hub) - Hubを作成 - Hubをコピー - IDを指定してHubの情報を更新 - Hubを削除 - すべてのHubのリストを取得 - リクエストしている企業のすべてのHubのリストを取得 - IDを指定してHubの情報を取得 [Hubコラボレーション](r://hub-collaboration) - Hubコラボレーションを作成 - Hubコラボレーションを更新 - Hubコラボレーションを削除 - Hubコラボレーションを取得 - コラボレーションIDを指定してHubコラボレーションを取得 [Hubの項目](r://hub-item) - Hubの項目を取得 - Hubの項目を管理 Box Hubsの使用の詳細については、[Box Hubsのサポートドキュメント](https://support.box.com/hc/en-us/sections/26102544955027-Box-Hubs)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://community.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-08-01-box-hubs-apis](https://ja.developer.box.com/changelog/2025-08-01-box-hubs-apis) --- ### Box iOS SDK `10.0.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK 10.0.0のリリース 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、**Box iOS SDK v10**を導入しました。現在は個別のsdk-genブランチとして利用可能なv1… # Box iOS SDK 10.0.0のリリース 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、**`Box iOS SDK v10`**を導入しました。現在は個別の[`sdk-gen`](https://github.com/box/box-ios-sdk/tree/sdk-gen)ブランチとして利用可能な`v10`が、最終的にメインブランチになります。 ### 重大な変更 - このSDKのバージョンは、自動生成されており、すべてのメソッドに新しいインターフェースを導入しています。詳細なドキュメントについては、[こちら](https://github.com/box/box-ios-sdk/tree/sdk-gen/docs)を参照してください。 ### v10の新機能 **APIの全面的なサポート** — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 **迅速なAPIの更新** — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 **ドキュメントへの埋め込み** — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 **便利なメソッドの強化** — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 ### 重要な注意事項 ## このバージョンには、BoxのコアSDKと並行して以前に開発された、Boxの次世代SDKのアーティファクトが含まれています。Boxでは、移行を促進し、最新の機能を利用できるようにするため、まもなく、両方のアーティファクトを兼ね備えたメジャーバージョンを追加でリリースする予定です。v10への移行には重大な変更が含まれるため、詳細については移行ガイドを確認してください。詳細については、SDKのバージョン戦略に関するドキュメントを参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 ### 新機能 (Box Swift SDK Gen v0.6.3との比較) ### 新機能と機能強化 - 外部ユーザー削除APIを追加 (box/box-codegen[#550](https://github.com/box/box-ios-sdk/issues/969)) ([`74571fb`](https://github.com/box/box-ios-sdk/commit/74571fb6675d0ff90d0ec4ef2baf7113816093f8)) - 不足していたWebhookイベントを追加 (box/box-openapi[#554](https://github.com/box/box-ios-sdk/issues/554)) ([#1048](https://github.com/box/box-ios-sdk/issues/1048)) ([`b8bf1ad`](https://github.com/box/box-ios-sdk/commit/b8bf1add360119f70a626f663cd810f9598ec794)) - Swiftのネットワークエラーに対するリクエストを再試行 (box/box-codegen[#820](https://github.com/box/box-ios-sdk/issues/820)) ([#1051](https://github.com/box/box-ios-sdk/issues/1051)) ([`ba21450`](https://github.com/box/box-ios-sdk/commit/ba214507b37d2a842bcf044b5b4392b442486d6f)) 詳細については、`box-swift-sdk-gen` `v0`から`box-ios-sdk` `v10`への[移行ガイド](https://github.com/box/box-ios-sdk/blob/sdk-gen/migration-guides/from-box-swift-sdk-gen-v0-to-box-ios-sdk-v10.md)をご確認ください。 **Source:** [https://ja.developer.box.com/changelog/2025-09-17-box-ios-sdk-1000-released](https://ja.developer.box.com/changelog/2025-09-17-box-ios-sdk-1000-released) --- ### Box iOS SDK `10.0.1`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK 10.0.1のリリース バグ修正 AiExtractResponse.answerおよびEvent.additionalDetailsで柔軟なキーと値のデータを許可 (box/box-openapi#556) (#1128) (3e9a78c… # Box iOS SDK 10.0.1のリリース ### バグ修正 - `AiExtractResponse.answer`および`Event.additionalDetails`で柔軟なキーと値のデータを許可 (box/box-openapi[#556](https://github.com/box/box-ios-sdk/issues/556)) ([#1128](https://github.com/box/box-ios-sdk/issues/1128)) ([`3e9a78c`](https://github.com/box/box-ios-sdk/commit/3e9a78ce710b0161e0912d1ee6af0b7758875fbc)) - コラボレーション更新の`role`パラメータを任意化 (box/box-openapi[#557](https://github.com/box/box-ios-sdk/issues/557)) ([#1138](https://github.com/box/box-ios-sdk/issues/1138)) ([`3fc5dc9`](https://github.com/box/box-ios-sdk/commit/3fc5dc9a62bd0cabc8987d56c0d63b94fa7ef14d)) **Source:** [https://ja.developer.box.com/changelog/2025-10-06-box-ios-sdk-1001-released](https://ja.developer.box.com/changelog/2025-10-06-box-ios-sdk-1001-released) --- ### Box iOS SDK `10.1.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK 10.1.0のリリース 新機能と機能強化 Enterprise構成の取得APIをサポート (box/box-openapi#559) (#1179) (936edf7) アーカイブAPIをサポート (box/box-openapi#563) (#123… # Box iOS SDK 10.1.0のリリース ### 新機能と機能強化 - Enterprise構成の取得APIをサポート (box/box-openapi[#559](https://github.com/box/box-ios-sdk/issues/559)) ([#1179](https://github.com/box/box-ios-sdk/issues/1179)) ([`936edf7`](https://github.com/box/box-ios-sdk/commit/936edf7532765dfe3c0ccb7175966ee4ec265cf3)) - アーカイブAPIをサポート (box/box-openapi[#563](https://github.com/box/box-ios-sdk/issues/563)) ([#1238](https://github.com/box/box-ios-sdk/issues/1238)) ([`a2662e3`](https://github.com/box/box-ios-sdk/commit/a2662e3bd088956769ed95d588e71623d0537c40)) **Source:** [https://ja.developer.box.com/changelog/2025-11-20-box-ios-sdk-1010-released](https://ja.developer.box.com/changelog/2025-11-20-box-ios-sdk-1010-released) --- ### Box iOS SDK `10.2.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK 10.2.0のリリース バグ修正 重複したオプションのラッピングを削除 (box/box-codegen#898) (#1301) (0fff45e) 新機能と機能強化 AI抽出からconfidence_scoreとinclude_confidence… # Box iOS SDK 10.2.0のリリース ### バグ修正 - 重複したオプションのラッピングを削除 (box/box-codegen[#898](https://github.com/box/box-ios-sdk/issues/898)) ([#1301](https://github.com/box/box-ios-sdk/issues/1301)) ([`0fff45e`](https://github.com/box/box-ios-sdk/commit/0fff45ed3139ffebaafc9af4113bbb61d7fd3945)) ### 新機能と機能強化 - AI抽出から`confidence_score`と`include_confidence_score`を削除 (box/box-openapi[#567](https://github.com/box/box-ios-sdk/issues/567)) ([#1305](https://github.com/box/box-ios-sdk/issues/1305)) ([`702de7b`](https://github.com/box/box-ios-sdk/commit/702de7b8bba3e423b749b9cf11a5bbb77fc1ad41)) - 新しい署名リクエストのメタデータをサポート (box/box-openapi[#565](https://github.com/box/box-ios-sdk/issues/565)) ([#1285](https://github.com/box/box-ios-sdk/issues/1285)) ([`d541f12`](https://github.com/box/box-ios-sdk/commit/d541f128badac0929d586fe2de2f8e2a2c5a786b)) **Source:** [https://ja.developer.box.com/changelog/2025-12-10-box-ios-sdk-1020-released](https://ja.developer.box.com/changelog/2025-12-10-box-ios-sdk-1020-released) --- ### Box iOS SDK `10.3.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK 10.3.0のリリース バグ修正 メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi#572) (#1335) (3dae5b0) Retry-Afterヘッダーがない場合のRetryAfter… # Box iOS SDK 10.3.0のリリース ### バグ修正 - メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi[#572](https://github.com/box/box-ios-sdk/issues/572)) ([#1335](https://github.com/box/box-ios-sdk/issues/1335)) ([`3dae5b0`](https://github.com/box/box-ios-sdk/commit/3dae5b0335474a8b2a01f41d5ca71e21d0d77366)) - `Retry-After`ヘッダーがない場合の`RetryAfter`関数を修正 (box/box-codegen[#903](https://github.com/box/box-ios-sdk/issues/903)) ([#1313](https://github.com/box/box-ios-sdk/issues/1313)) ([`52a72ad`](https://github.com/box/box-ios-sdk/commit/52a72ad706de7b9079df55d5be5dd9e1fab247c3)) ### 新機能と機能強化 - メタデータ階層APIを追加 (box/box-openapi[#569](https://github.com/box/box-ios-sdk/issues/569)) ([#1321](https://github.com/box/box-ios-sdk/issues/1321)) ([`20497cc`](https://github.com/box/box-ios-sdk/commit/20497cce040703560a686b5640b943fb3f363f0d)) - Box Signのテキスト入力の検証 (box/box-openapi[#568](https://github.com/box/box-ios-sdk/issues/568)) ([#1315](https://github.com/box/box-ios-sdk/issues/1315)) ([`7ffe641`](https://github.com/box/box-ios-sdk/commit/7ffe641fda1a0a3ffe5a3eded0c8cafc840bb76f)) - `nullable`フィールドを省略可として処理 (box/box-codegen[#906](https://github.com/box/box-ios-sdk/issues/906)) ([#1325](https://github.com/box/box-ios-sdk/issues/1325)) ([`af828ea`](https://github.com/box/box-ios-sdk/commit/af828ea1d2585b3d117035722028f28a2ad3dcbc)) **Source:** [https://ja.developer.box.com/changelog/2025-12-19-box-ios-sdk-1030-released](https://ja.developer.box.com/changelog/2025-12-19-box-ios-sdk-1030-released) --- ### Box iOS SDK `6.0.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK 6.0.0のリリース 2つのモジュール (手動で管理されているモジュールと生成されたモジュール) を含むBox iOS SDK v6の新しいメジャーバージョンを導入しました。共存するこれらのモジュールにより、最新のBox API… # Box iOS SDK 6.0.0のリリース 2つのモジュール (手動で管理されているモジュールと生成されたモジュール) を含むBox iOS SDK `v6`の新しいメジャーバージョンを導入しました。共存するこれらのモジュールにより、最新のBox APIの機能をより簡単に使用できるようになるほか、生成されたスタンドアロンのモジュールへの段階的な移行がサポートされます。 ### 重大な変更 - Box iOS SDKの`v6`により、`iOS 11.0`、`macOS 10.13`、`tvOS 11.0`、および`watchOS 4.0`のサポートが終了しました。 `v6`以降、サポート対象の最小バージョンは`iOS 13.0`、`macOS 10.15`、`tvOS 13.0`、`watchOS 6.0`になります。 今回の更新により、SDKは現在のAppleの開発基準に準拠するため、BoxSdkGenモジュールで使用可能な新機能を採用するにはこの更新が必要になります。 最新の提出要件およびSDK `toolchain`の要件については、AppleのSDKの最小要件に関する[Apple Developer](https://developer.apple.com/news/upcoming-requirements/?id=02212025a)を参照してください。 `v6`への移行の詳細については、[`v5`から`v6`への移行ガイド](https://github.com/box/box-ios-sdk/blob/combined-sdk/migration-guides/from-v5-to-v6.md)を参照してください。 ### v6の新機能 このSDKバージョンでは、既存の`BoxSDK`モジュールに加え、新しい`BoxSdkGen`モジュールを導入します。これにより、以下を利用できます。 **APIの全面的なサポート** — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 **迅速なAPIの更新** — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 **ドキュメントへの埋め込み** — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 **便利なメソッドの強化** — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 ### 重要な注意事項 このバージョンにより、ご利用のコードベースを`BoxSdkGen`モジュールに段階的に移行できます。モジュール間の主な違いについては、[モジュールの移行ガイド](https://github.com/box/box-ios-sdk/blob/combined-sdk/migration-guides/from-BoxSDK-to-BoxSdkGen.md)を参照してください。 最終的には、生成された`BoxSdkGen`モジュールのみを含む`v10`に移行することをお勧めします。`v6`から`v10`に移行するには、こちらの[移行ガイド](https://github.com/box/box-ios-sdk/blob/combined-sdk/migration-guides/from-v6-to-v10.md)に従います。 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning)を参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 **Source:** [https://ja.developer.box.com/changelog/2025-10-23-box-ios-sdk-600-released](https://ja.developer.box.com/changelog/2025-10-23-box-ios-sdk-600-released) --- ### Box iOS SDK `6.1.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK 6.1.0のリリース 新機能と機能強化 boxsdkgen: Enterprise構成の取得APIをサポート (box/box-openapi#559) (#1190) (c91bb4f) boxsdkgen: アーカイブAPIをサポート (box/box… # Box iOS SDK 6.1.0のリリース ### 新機能と機能強化 - **boxsdkgen:** Enterprise構成の取得APIをサポート (box/box-openapi[#559](https://github.com/box/box-ios-sdk/issues/559)) ([#1190](https://github.com/box/box-ios-sdk/issues/1190)) ([`c91bb4f`](https://github.com/box/box-ios-sdk/commit/c91bb4fa1b5907698fd6d0fd38560501c4d0274b)) - **boxsdkgen:** アーカイブAPIをサポート (box/box-openapi[#563](https://github.com/box/box-ios-sdk/issues/563)) ([#1237](https://github.com/box/box-ios-sdk/issues/1237)) ([`07aaf3a`](https://github.com/box/box-ios-sdk/commit/07aaf3adde1ec46ed6f2423093b451b975005368)) **Source:** [https://ja.developer.box.com/changelog/2025-11-20-box-ios-sdk-610-released](https://ja.developer.box.com/changelog/2025-11-20-box-ios-sdk-610-released) --- ### Box iOS SDK `6.2.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK 6.2.0のリリース バグ修正 boxsdkgen: 重複したオプションのラッピングを削除 (box/box-codegen#898) (#1302) (4fae34a) 新機能と機能強化 boxsdkgen: AI抽出からconfidence_score… # Box iOS SDK 6.2.0のリリース ### バグ修正 - **boxsdkgen:** 重複したオプションのラッピングを削除 (box/box-codegen[#898](https://github.com/box/box-ios-sdk/issues/898)) ([#1302](https://github.com/box/box-ios-sdk/issues/1302)) ([`4fae34a`](https://github.com/box/box-ios-sdk/commit/4fae34add0569ac907d2f50e1ab2a7da7a223f6b)) ### 新機能と機能強化 - **boxsdkgen:** AI抽出から`confidence_score`と`include_confidence_score`を削除 (box/box-openapi[#567](https://github.com/box/box-ios-sdk/issues/567)) ([#1304](https://github.com/box/box-ios-sdk/issues/1304)) ([`143ef03`](https://github.com/box/box-ios-sdk/commit/143ef03119c6ac6f7f4bff198ce8578a78abd353)) - **boxsdkgen:** 新しい署名リクエストのメタデータをサポート (box/box-openapi[#565](https://github.com/box/box-ios-sdk/issues/565)) ([#1286](https://github.com/box/box-ios-sdk/issues/1286)) ([`e6c0826`](https://github.com/box/box-ios-sdk/commit/e6c082659f65bfcc8eb17de1552d23d07eeb7d56)) **Source:** [https://ja.developer.box.com/changelog/2025-12-10-box-ios-sdk-620-released](https://ja.developer.box.com/changelog/2025-12-10-box-ios-sdk-620-released) --- ### Box iOS SDK `6.3.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK 6.3.0のリリース バグ修正 boxsdkgen: メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi#572) (#1334) (373240a) boxsdkgen: Retry-After… # Box iOS SDK 6.3.0のリリース ### バグ修正 - **boxsdkgen:** メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi[#572](https://github.com/box/box-ios-sdk/issues/572)) ([#1334](https://github.com/box/box-ios-sdk/issues/1334)) ([`373240a`](https://github.com/box/box-ios-sdk/commit/373240ae0884f94c64a0caa2951f29212becd0fd)) - **boxsdkgen:** `Retry-After`ヘッダーがない場合の`RetryAfter`関数を修正 (box/box-codegen[#903](https://github.com/box/box-ios-sdk/issues/903)) ([#1312](https://github.com/box/box-ios-sdk/issues/1312)) ([`783ef91`](https://github.com/box/box-ios-sdk/commit/783ef91c6744caeddb4fda3d83c070095733f6c1)) ### 新機能と機能強化 - **boxsdkgen:** メタデータ階層APIを追加 (box/box-openapi[#569](https://github.com/box/box-ios-sdk/issues/569)) ([#1320](https://github.com/box/box-ios-sdk/issues/1320)) ([`2b52332`](https://github.com/box/box-ios-sdk/commit/2b52332460bb03412bd96df77e8cf45bb8abf35f)) - **boxsdkgen:** Box Signのテキスト入力の検証 (box/box-openapi[#568](https://github.com/box/box-ios-sdk/issues/568)) ([#1314](https://github.com/box/box-ios-sdk/issues/1314)) ([`bebd148`](https://github.com/box/box-ios-sdk/commit/bebd148378927efc4d015f88914d2b0a5915c41d)) - **boxsdkgen:** `nullable`フィールドを省略可として処理 (box/box-codegen[#906](https://github.com/box/box-ios-sdk/issues/906)) ([#1324](https://github.com/box/box-ios-sdk/issues/1324)) ([`c17e23a`](https://github.com/box/box-ios-sdk/commit/c17e23af55829f182e3d302682d0444520693217)) **Source:** [https://ja.developer.box.com/changelog/2025-12-19-box-ios-sdk-630-released](https://ja.developer.box.com/changelog/2025-12-19-box-ios-sdk-630-released) --- ### Box iOS SDK `v4.0.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v4.0.0のリリース Box iOS SDK 重大な変更: タスク割り当てのstatusフィールドを文字列から列挙型に変更 macOS、tvOS、およびwatchOSのサポートを削除 新機能と機能強化: 認証セッションクラスOAuth2Session… # Box iOS SDK v4.0.0のリリース Box iOS SDK **重大な変更:** - タスク割り当ての`status`フィールドを文字列から列挙型に変更 - `macOS`、`tvOS`、および`watchOS`のサポートを削除 **新機能と機能強化:** - 認証セッションクラス`OAuth2Session`、`SingleTokenSession`、`DelegatedAuthSession`を公開 **Source:** [https://ja.developer.box.com/changelog/2020-02-13-box-ios-sdk-v400-released](https://ja.developer.box.com/changelog/2020-02-13-box-ios-sdk-v400-released) --- ### Box iOS SDK `v4.1.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v4.1.0のリリース Box iOS SDK… # Box iOS SDK v4.1.0のリリース Box iOS SDK **重大な変更:** **新機能と機能強化:** - アップロードとダウンロードをキャンセルする機能を追加 - ファイルとファイルバージョンのアップローダー表示名フィールドのサポートを追加 - ファイルとフォルダの分類フィールドのサポートを追加 - パスパラメータのサニタイズを追加 **バグ修正:** - APIレスポンスのログ記録を修正 **Source:** [https://ja.developer.box.com/changelog/2020-05-15-box-ios-sdk-v410-released](https://ja.developer.box.com/changelog/2020-05-15-box-ios-sdk-v410-released) --- ### Box iOS SDK `v4.2.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v4.2.0のリリース 重大な変更: 新機能と機能強化: 接続が切断されたOAuthウェブセッションのエラー情報を追加 バグ修正: コラボレーションの作成に関するバグを修正 Enterprise Eventの取得に関するバグを修正 # Box iOS SDK v4.2.0のリリース **重大な変更:** **新機能と機能強化:** - 接続が切断されたOAuthウェブセッションのエラー情報を追加 **バグ修正:** - コラボレーションの作成に関するバグを修正 - Enterprise Eventの取得に関するバグを修正 **Source:** [https://ja.developer.box.com/changelog/2020-11-17-box-ios-sdk-v420-released](https://ja.developer.box.com/changelog/2020-11-17-box-ios-sdk-v420-released) --- ### Box iOS SDK `v4.3.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v4.3.0のリリース 重大な変更: 新機能と機能強化: OAuth 2カスタムコールバックURLのサポートを追加 (#746) zipダウンロードのサポートを追加 (#749) バグ修正: kramdownの脆弱性にパッチを適用するためにgem… # Box iOS SDK v4.3.0のリリース **重大な変更:** **新機能と機能強化:** - OAuth 2カスタムコールバックURLのサポートを追加 ([#746](https://github.com/box/box-ios-sdk/pull/746)) - zipダウンロードのサポートを追加 ([#749](https://github.com/box/box-ios-sdk/pull/749)) **バグ修正:** - `kramdown`の脆弱性にパッチを適用するためにgemを更新 ([#742](https://github.com/box/box-ios-sdk/pull/742)) - `activesupport`の脆弱性にパッチを適用するためにgemを更新 ([#745](https://github.com/box/box-ios-sdk/pull/745)) **Source:** [https://ja.developer.box.com/changelog/2021-02-01-box-ios-sdk-v430-released](https://ja.developer.box.com/changelog/2021-02-01-box-ios-sdk-v430-released) --- ### Box iOS SDK `v4.4.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v4.4.0のリリース 重大な変更: 新機能と機能強化: 共有リンク項目を取得するための検索パラメータのサポートを追加 (#756) フォルダロック機能のサポートを追加 (#759) メタデータテンプレートのcopyInstanceOnItemCopy… # Box iOS SDK v4.4.0のリリース **重大な変更:** **新機能と機能強化:** - 共有リンク項目を取得するための検索パラメータのサポートを追加 ([#756](https://github.com/box/box-ios-sdk/pull/756)) - フォルダロック機能のサポートを追加 ([#759](https://github.com/box/box-ios-sdk/pull/759)) - メタデータテンプレートの`copyInstanceOnItemCopy`フィールドのサポートを追加 ([#763](https://github.com/box/box-ios-sdk/pull/763)) - 新しいファイルバージョンのストリームアップロードのサポートを追加、新しいファイルバージョンのアップロード時の「If-Match」ヘッダーのサポートを追加 ([#766](https://github.com/box/box-ios-sdk/pull/766)) - `Event`モデルの詳細フィールドを追加 ([#770](https://github.com/box/box-ios-sdk/pull/770)) **バグ修正:** - iOS認証APIにスキーマのみを渡す ([#755](https://github.com/box/box-ios-sdk/pull/755)) - 名前によるフィルタにドキュメントされたパラメータを使用するよう`listEnterpriseGroups()`を更新 ([#757](https://github.com/box/box-ios-sdk/pull/757)) - トークンが取り消された場合にコールバックが呼び出されない、OAuthのバグを修正 ([#762](https://github.com/box/box-ios-sdk/pull/762)) **Source:** [https://ja.developer.box.com/changelog/2021-04-20-box-ios-sdk-v440-released](https://ja.developer.box.com/changelog/2021-04-20-box-ios-sdk-v440-released) --- ### Box iOS SDK `v5.0.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v5.0.0のリリース 重大な変更: ページを返してロジックを簡素化するようPagingIteratorを更新 (#737) BoxClientの不適切な用語フィールドcollaborationWhiteList… # Box iOS SDK v5.0.0のリリース **重大な変更:** - ページを返してロジックを簡素化するようPagingIteratorを更新 ([#737](https://github.com/box/box-ios-sdk/pull/737)) - BoxClientの不適切な用語フィールド`collaborationWhiteList`を削除し、代わりに`collaborationAllowList`を使用 ([#790](https://github.com/box/box-ios-sdk/pull/790)) **新機能と機能強化:** - 不適切なイベントタイプを置き換え ([#785](https://github.com/box/box-ios-sdk/pull/785)) - SignAPIのサポートを追加 ([#792](https://github.com/box/box-ios-sdk/pull/792)) **Source:** [https://ja.developer.box.com/changelog/2021-10-28-box-ios-sdk-v500-released](https://ja.developer.box.com/changelog/2021-10-28-box-ios-sdk-v500-released) --- ### Box iOS SDK `v5.1.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v5.1.0のリリース 新機能と機能強化 OAuth2承認ページのURLのカスタマイズを許可 (#811) (1901d29) Events: admin_logs_streaming streamタイプのサポートを追加 (#800) (0a3118e… # Box iOS SDK v5.1.0のリリース ### 新機能と機能強化 - `OAuth2`承認ページのURLのカスタマイズを許可 ([#811](https://github.com/box/box-ios-sdk/issues/811)) ([`1901d29`](https://github.com/box/box-ios-sdk/commit/1901d296a2be4b0f2eef25eda06928aebc81de9a)) - **`Events`:** `admin_logs_streaming stream`タイプのサポートを追加 ([#800](https://github.com/box/box-ios-sdk/issues/800)) ([`0a3118e`](https://github.com/box/box-ios-sdk/commit/0a3118ef95c2eb42b0080d0352784849e85eb422)) - **`RetentionPolicy`:** リテンションの対象となっているファイルおよびファイルバージョンを取得するための新しいAPI ([#807](https://github.com/box/box-ios-sdk/issues/807)) ([`38327f0`](https://github.com/box/box-ios-sdk/commit/38327f09a92dba7827e1866940a643d624757762)) - **`SharedLink`:** `vanity_name`のサポートを追加 ([#799](https://github.com/box/box-ios-sdk/issues/799)) ([`3ea6eb2`](https://github.com/box/box-ios-sdk/commit/3ea6eb2a1c2b713fd0769e93a2dc4ee51da695fd)) ### バグ修正 - **`SignRequest`:** `prefillTag`でエンコード`date_value`を`yyyy-mm-dd`形式に修正 ([#806](https://github.com/box/box-ios-sdk/issues/806)) ([`4f902a4`](https://github.com/box/box-ios-sdk/commit/4f902a47482de55ec69b5522e6cf5affd653b4c8)) **Source:** [https://ja.developer.box.com/changelog/2022-01-17-box-ios-sdk-v510-released](https://ja.developer.box.com/changelog/2022-01-17-box-ios-sdk-v510-released) --- ### Box iOS SDK `v5.2.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v5.2.0のリリース 新機能と機能強化 disposition_atフィールドをFileオブジェクトに追加 (#814) (3c90df0) クライアント資格情報許可による認証方法のサポートを追加 (#821) (f6d7542) # Box iOS SDK v5.2.0のリリース ### 新機能と機能強化 - `disposition_at`フィールドを`File`オブジェクトに追加 ([#814](https://github.com/box/box-ios-sdk/issues/814)) ([`3c90df0`](https://github.com/box/box-ios-sdk/commit/3c90df038b9f490a9d38af85404fa1d6ddcd5d0d)) - クライアント資格情報許可による認証方法のサポートを追加 ([#821](https://github.com/box/box-ios-sdk/issues/821)) ([`f6d7542`](https://github.com/box/box-ios-sdk/commit/f6d75424e8c0d91517e3ffb8df67f77ad3f2374b)) **Source:** [https://ja.developer.box.com/changelog/2022-03-18-box-ios-sdk-v520-released](https://ja.developer.box.com/changelog/2022-03-18-box-ios-sdk-v520-released) --- ### Box iOS SDK `v5.2.1`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v5.2.1のリリース バグ修正 カスタムAPIコール用にBoxResponseからフィールドを公開 (#833) (bae1536) # Box iOS SDK v5.2.1のリリース ### バグ修正 - カスタムAPIコール用に`BoxResponse`からフィールドを公開 ([#833](https://github.com/box/box-ios-sdk/issues/833)) ([`bae1536`](https://github.com/box/box-ios-sdk/commit/bae1536236a22de198281012b0ee43c84b0e3485)) **Source:** [https://ja.developer.box.com/changelog/2022-04-22-box-ios-sdk-v521-released](https://ja.developer.box.com/changelog/2022-04-22-box-ios-sdk-v521-released) --- ### Box iOS SDK `v5.3.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v5.3.0のリリース 新機能と機能強化 version_numberをFileVersionに追加 (#853) (ac81667) FoldersModuleに非同期APIのサポートを追加 (#851) (58b9dde) ファイルリクエストAPI… # Box iOS SDK v5.3.0のリリース ### 新機能と機能強化 - `version_number`を`FileVersion`に追加 ([#853](https://github.com/box/box-ios-sdk/issues/853)) ([`ac81667`](https://github.com/box/box-ios-sdk/commit/ac81667ea409cbbe3de9be0c316c630ec6fbc2f5)) - `FoldersModule`に非同期APIのサポートを追加 ([#851](https://github.com/box/box-ios-sdk/issues/851)) ([`58b9dde`](https://github.com/box/box-ios-sdk/commit/58b9dde412eddc76915c99b960702f4af95b62a4)) - ファイルリクエストAPIのサポートを追加 ([#867](https://github.com/box/box-ios-sdk/issues/867)) ([`ec7813e`](https://github.com/box/box-ios-sdk/commit/ec7813e31706c08aaaeac75debdba8d7802786cb)) - アバターAPIにアップロードと削除のサポートを追加 ([#863](https://github.com/box/box-ios-sdk/issues/863)) ([`1e967f5`](https://github.com/box/box-ios-sdk/commit/1e967f5a3eaafbeb894cf8289032ad8ce8664266)) - 編集可能な共有リンクのサポートを追加 ([#861](https://github.com/box/box-ios-sdk/issues/861)) ([`bc6ea18`](https://github.com/box/box-ios-sdk/commit/bc6ea18bf2e10bebeb62401a55001139f05c76df)) - `send()`メソッドを`BoxClient`でパブリックに公開 ([#843](https://github.com/box/box-ios-sdk/issues/843)) ([`23caaca`](https://github.com/box/box-ios-sdk/commit/23caaca5b6fe8ec1b23470193bc011a62c66d49f)) ### バグ修正 - カスタムヘッダーからのContent-Typeを考慮 ([#841](https://github.com/box/box-ios-sdk/issues/841)) ([`a7c69a7`](https://github.com/box/box-ios-sdk/commit/a7c69a73c6142d4b82c718d2d311098dd2b70250)) **Source:** [https://ja.developer.box.com/changelog/2022-08-19-box-ios-sdk-v530-released](https://ja.developer.box.com/changelog/2022-08-19-box-ios-sdk-v530-released) --- ### Box iOS SDK `v5.4.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v5.4.0のリリース 新機能と機能強化 SignRequestSignerにcontent_typeフィールドを追加 (#871) (1ec5b01) 署名リクエストにredirect_urlとdeclined_redirect_urlを追加 (#87… # Box iOS SDK v5.4.0のリリース ### 新機能と機能強化 - SignRequestSignerに`content_type`フィールドを追加 ([#871](https://github.com/box/box-ios-sdk/issues/871)) ([`1ec5b01`](https://github.com/box/box-ios-sdk/commit/1ec5b0149f01cd3a18f5cba39b77e01678655932)) - 署名リクエストに`redirect_url`と`declined_redirect_url`を追加 ([#870](https://github.com/box/box-ios-sdk/issues/870)) ([`f94d988`](https://github.com/box/box-ios-sdk/commit/f94d98862d2fdb2603f4684b963d29d04e0fdb3d)) - `sign` Webhookトリガーのサポートを追加 ([#875](https://github.com/box/box-ios-sdk/issues/875)) ([`994bfaf`](https://github.com/box/box-ios-sdk/commit/994bfaf3ead983f5014808f6c9e5ffe167ab8e42)) - リテンションポリシー割り当てを削除するメソッドを追加 ([#873](https://github.com/box/box-ios-sdk/issues/873)) ([`c5f146c`](https://github.com/box/box-ios-sdk/commit/c5f146c960bb1f940418975078d83fb63ff3bdec)) - 変更可能リテンションポリシーのサポートを追加 ([#872](https://github.com/box/box-ios-sdk/issues/872)) ([`e2b7a17`](https://github.com/box/box-ios-sdk/commit/e2b7a178c6592c9f7d1e7ce691c215680b3f45d0)) **Source:** [https://ja.developer.box.com/changelog/2022-11-08-box-ios-sdk-v540-released](https://ja.developer.box.com/changelog/2022-11-08-box-ios-sdk-v540-released) --- ### Box iOS SDK `v5.4.1`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v5.4.1のリリース バグ修正 RetentionPolicyModuleのlistAssignmentsおよびassignメソッドを修正 (#886) (b668888) # Box iOS SDK v5.4.1のリリース ### バグ修正 - `RetentionPolicyModule`の`listAssignments`および`assign`メソッドを修正 ([#886](https://github.com/box/box-ios-sdk/issues/886)) ([`b668888`](https://github.com/box/box-ios-sdk/commit/b668888f35136dd1239526b70cc31a10bdd04744)) **Source:** [https://ja.developer.box.com/changelog/2023-02-24-box-ios-sdk-v541-released](https://ja.developer.box.com/changelog/2023-02-24-box-ios-sdk-v541-released) --- ### Box iOS SDK `v5.4.2`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v5.4.2のリリース バグ修正 空の文字列nextMarkerはページの末尾として扱うよう変更 (#893) (49c17de) # Box iOS SDK v5.4.2のリリース ### バグ修正 - 空の文字列`nextMarker`はページの末尾として扱うよう変更 ([#893](https://github.com/box/box-ios-sdk/issues/893)) ([`49c17de`](https://github.com/box/box-ios-sdk/commit/49c17de588fcffcd2d151ce9047ebc09965f80ce)) **Source:** [https://ja.developer.box.com/changelog/2023-04-19-box-ios-sdk-v542-released](https://ja.developer.box.com/changelog/2023-04-19-box-ios-sdk-v542-released) --- ### Box iOS SDK `v5.5.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v5.5.0のリリース 新機能と機能強化 SignRequestSignerInputContentTypeおよびSignRequestStatusで欠落している値をテストとともに追加 (#907) (56a8250) バグ修正 Apple… # Box iOS SDK v5.5.0のリリース ### 新機能と機能強化 - `SignRequestSignerInputContentType`および`SignRequestStatus`で欠落している値をテストとともに追加 ([#907](https://github.com/box/box-ios-sdk/issues/907)) ([`56a8250`](https://github.com/box/box-ios-sdk/commit/56a82500c0abe648825d8300979601a25f792c84)) ### バグ修正 - Appleシリコン上のiPhone Simulatorを識別 ([#902](https://github.com/box/box-ios-sdk/issues/902)) ([`7731a7f`](https://github.com/box/box-ios-sdk/commit/7731a7f434add74e163a76511fe1e2a3f26517f7)) - [#900](https://github.com/box/box-ios-sdk/issues/900)コードをmacOSに対応させる ([#900](https://github.com/box/box-ios-sdk/issues/900)) ([`3b0016e`](https://github.com/box/box-ios-sdk/commit/3b0016e44e674db0ea429273c03e5a29177372bf)) - 非推奨となった文字列スキャナAPIの使用を削除 ([#901](https://github.com/box/box-ios-sdk/issues/901)) ([`af5f0e5`](https://github.com/box/box-ios-sdk/commit/af5f0e52d184fbd27f56d972fb93b3e543547773)) **Source:** [https://ja.developer.box.com/changelog/2023-08-08-box-ios-sdk-v550-released](https://ja.developer.box.com/changelog/2023-08-08-box-ios-sdk-v550-released) --- ### Box iOS SDK `v5.6.0`のリリース **Type:** changelog | **Section:** Changelog Box iOS SDK v5.6.0のリリース 新機能と機能強化 Privacy Manifestファイルを追加 (#924) (cbef168) visionOSのサポートを追加 (#916) (a05b243) SignRequest… # Box iOS SDK v5.6.0のリリース ### 新機能と機能強化 - Privacy Manifestファイルを追加 ([#924](https://github.com/box/box-ios-sdk/issues/924)) ([`cbef168`](https://github.com/box/box-ios-sdk/commit/cbef168bb872941899be26116c647ac29f5dd44b)) - `visionOS`のサポートを追加 ([#916](https://github.com/box/box-ios-sdk/issues/916)) ([`a05b243`](https://github.com/box/box-ios-sdk/commit/a05b2433f1b2d0c1ec72f946e0706d03a4548703)) - `SignRequest`で追加のフィールドのサポートを追加 ([#919](https://github.com/box/box-ios-sdk/issues/919)) ([`36f464c`](https://github.com/box/box-ios-sdk/commit/36f464c23a161f5d0fcc6858c3615d884ce8ee07)) - `TokenInfo`のフィールドをpublicに変更 ([#920](https://github.com/box/box-ios-sdk/issues/920)) ([`eb26f47`](https://github.com/box/box-ios-sdk/commit/eb26f47bbde6749f44f149e95b3610e41c16d2f2)) **Source:** [https://ja.developer.box.com/changelog/2024-04-05-box-ios-sdk-v560-released](https://ja.developer.box.com/changelog/2024-04-05-box-ios-sdk-v560-released) --- ### Box Java SDK `v10.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v10.0.0のリリース 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、**Box SDK v10**を導入しました。現在は個別のsdk-genブランチとして利用可能なv1… # Box Java SDK v10.0.0のリリース 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、**`Box SDK v10`**を導入しました。現在は個別の[`sdk-gen`](https://github.com/box/box-java-sdk/tree/sdk-gen)ブランチとして利用可能な`v10`が、最終的にメインブランチになります。 ### 重大な変更 - このSDKのバージョンは、自動生成されており、すべてのメソッドに新しいインターフェースを導入しています。詳細なドキュメントについては、[こちら](https://github.com/box/box-java-sdk/tree/sdk-gen/docs)を参照してください。 ### v10の新機能 **APIの全面的なサポート** — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 **迅速なAPIの更新** — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 **ドキュメントへの埋め込み** — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 **便利なメソッドの強化** — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 ### 重要な注意事項 ## このバージョンには、BoxのコアSDKと並行して以前に開発された、Boxの次世代SDKのアーティファクトが含まれています。Boxでは、移行を促進し、最新の機能を利用できるようにするため、まもなく、両方のアーティファクトを兼ね備えたメジャーバージョンを追加でリリースする予定です。v10への移行には重大な変更が含まれるため、詳細については移行ガイドを確認してください。詳細については、SDKのバージョン戦略に関するドキュメントを参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 ### 新機能 (Java SDK Gen v0.8.1との比較) #### ⚠ 重大な変更 - 共用体の名前を変更 (box/box-codegen[#787](https://github.com/box/box-java-sdk/issues/787)) ([#1359](https://github.com/box/box-java-sdk/issues/1359)) ([`114e778`](https://github.com/box/box-java-sdk/commit/114e7785031e19fb58933f231e656a991b5effb7)) - スキーマから未使用のモデルを削除 (box/box-openapi[#547](https://github.com/box/box-java-sdk/issues/547)) ([#1354](https://github.com/box/box-java-sdk/issues/1354)) ([`e031308`](https://github.com/box/box-java-sdk/commit/e031308f102137351238bf3823372150d3927442))、[box/`box-openapi#542`](https://github.com/box/box-openapi/issues/542) [box/`box-openapi#544`](https://github.com/box/box-openapi/issues/544) [box/`box-codegen#781`](https://github.com/box/box-codegen/issues/781) [box/`box-openapi#545`](https://github.com/box/box-openapi/issues/545) [`box/box-codegen#782`](https://github.com/box/box-codegen/issues/782)をクローズ - `Date`を`OffsetDateTime`に置き換え (box/box-codegen[#826](https://github.com/box/box-java-sdk/issues/826)) ([#1419](https://github.com/box/box-java-sdk/issues/1419)) ([`ed04407`](https://github.com/box/box-java-sdk/commit/ed04407e8effa8811bc85023783097f8a95e5223)) #### 新機能と機能強化 - プロキシのサポートを追加 (box/box-codegen[#830](https://github.com/box/box-java-sdk/issues/830)) ([#1424](https://github.com/box/box-java-sdk/issues/1424)) ([`cc53247`](https://github.com/box/box-java-sdk/commit/cc532475cdaf5ec3fd710149b41a6e7b04dcd32f)) 詳細については、`box-java-sdk-gen` `v0`から`box-java-sdk` `v10`への[移行ガイド](https://github.com/box/box-java-sdk/blob/sdk-gen/migration-guides/from-box-java-sdk-gen-v0-to-box-java-sdk-v10.md)をご確認ください。 **Source:** [https://ja.developer.box.com/changelog/2025-09-17-box-java-sdk-v1000-released](https://ja.developer.box.com/changelog/2025-09-17-box-java-sdk-v1000-released) --- ### Box Java SDK `v10.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v10.1.0のリリース バグ修正 AiExtractResponse.answerおよびEvent.additionalDetailsで柔軟なキーと値のデータを許可 (box/box-openapi#556) (#1470) (e215a5f… # Box Java SDK v10.1.0のリリース ### バグ修正 - `AiExtractResponse.answer`および`Event.additionalDetails`で柔軟なキーと値のデータを許可 (box/box-openapi[#556](https://github.com/box/box-java-sdk/issues/556)) ([#1470](https://github.com/box/box-java-sdk/issues/1470)) ([`e215a5f`](https://github.com/box/box-java-sdk/commit/e215a5f2502e694421a05d8da550d2b305c09460)) - コラボレーション更新の`role`パラメータを任意化 (box/box-openapi[#557](https://github.com/box/box-java-sdk/issues/557)) ([#1479](https://github.com/box/box-java-sdk/issues/1479)) ([`6896386`](https://github.com/box/box-java-sdk/commit/6896386c6086996399066b09b5afc998a5a95ca4)) ### 新機能と機能強化 - `Javadoc`のコメントを追加 (box/box-codegen[#839](https://github.com/box/box-java-sdk/issues/839)) ([#1465](https://github.com/box/box-java-sdk/issues/1465)) ([`c72407d`](https://github.com/box/box-java-sdk/commit/c72407dc77cc67f3a178d607a2b1bd4e90e832a8)) **Source:** [https://ja.developer.box.com/changelog/2025-10-06-box-java-sdk-v1010-released](https://ja.developer.box.com/changelog/2025-10-06-box-java-sdk-v1010-released) --- ### Box Java SDK `v10.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v10.2.0のリリース バグ修正 文字列からのOffsetDateTimeの解析を修正 (box/box-codegen#887) (#1582) (d1288c4) 新機能と機能強化 Enterprise構成の取得APIをサポート (box/box… # Box Java SDK v10.2.0のリリース ### バグ修正 - 文字列からの`OffsetDateTime`の解析を修正 (box/box-codegen[#887](https://github.com/box/box-java-sdk/issues/887)) ([#1582](https://github.com/box/box-java-sdk/issues/1582)) ([`d1288c4`](https://github.com/box/box-java-sdk/commit/d1288c4804b032d5211d664c396e212a08a5775b)) ### 新機能と機能強化 - Enterprise構成の取得APIをサポート (box/box-openapi[#559](https://github.com/box/box-java-sdk/issues/559)) ([#1519](https://github.com/box/box-java-sdk/issues/1519)) ([`88dd8d2`](https://github.com/box/box-java-sdk/commit/88dd8d2867d85ca8fc3b48d2aee61060ef328821)) - 接続に失敗した場合のOkHttpの自動再試行を無効化 (box/box-codegen[#874](https://github.com/box/box-java-sdk/issues/874)) ([#1541](https://github.com/box/box-java-sdk/issues/1541)) ([`c2bd137`](https://github.com/box/box-java-sdk/commit/c2bd137e469b9e67a14a33bb073107ff5db44175)) - アーカイブAPIをサポート (box/box-openapi[#563](https://github.com/box/box-java-sdk/issues/563)) ([#1553](https://github.com/box/box-java-sdk/issues/1553)) ([`609e8bb`](https://github.com/box/box-java-sdk/commit/609e8bb5eb7143281543dcfaada23f2649acae9d)) **Source:** [https://ja.developer.box.com/changelog/2025-11-19-box-java-sdk-v1020-released](https://ja.developer.box.com/changelog/2025-11-19-box-java-sdk-v1020-released) --- ### Box Java SDK `v10.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v10.3.0のリリース 新機能と機能強化 AI抽出からconfidence_scoreとinclude_confidence_scoreを削除 (box/box-openapi#567) (#1615) (0a069cd… # Box Java SDK v10.3.0のリリース ### 新機能と機能強化 - AI抽出から`confidence_score`と`include_confidence_score`を削除 (box/box-openapi[#567](https://github.com/box/box-java-sdk/issues/567)) ([#1615](https://github.com/box/box-java-sdk/issues/1615)) ([`0a069cd`](https://github.com/box/box-java-sdk/commit/0a069cdecc4837d8bdb6f1e91401d88c58af5a92)) - 新しい署名リクエストのメタデータをサポート (box/box-openapi[#565](https://github.com/box/box-java-sdk/issues/565)) ([#1599](https://github.com/box/box-java-sdk/issues/1599)) ([`b3c46bb`](https://github.com/box/box-java-sdk/commit/b3c46bbf2f2f7b9b25befcd6442a4e5c9a92e790)) **Source:** [https://ja.developer.box.com/changelog/2025-12-10-box-java-sdk-v1030-released](https://ja.developer.box.com/changelog/2025-12-10-box-java-sdk-v1030-released) --- ### Box Java SDK `v10.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v10.4.0のリリース バグ修正 メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi#572) (#1644) (61235da) Retry-Afterヘッダーがない場合のRetryAfter… # Box Java SDK v10.4.0のリリース ### バグ修正 - メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi[#572](https://github.com/box/box-java-sdk/issues/572)) ([#1644](https://github.com/box/box-java-sdk/issues/1644)) ([`61235da`](https://github.com/box/box-java-sdk/commit/61235da7d51a64845d344a8286821e59b217a848)) - `Retry-After`ヘッダーがない場合の`RetryAfter`関数を修正 (box/box-codegen[#903](https://github.com/box/box-java-sdk/issues/903)) ([#1622](https://github.com/box/box-java-sdk/issues/1622)) ([`f135e2b`](https://github.com/box/box-java-sdk/commit/f135e2b62d4b2d2d266ab40b3b366c8c7968d2db)) ### 新機能と機能強化 - メタデータ階層APIを追加 (box/box-openapi[#569](https://github.com/box/box-java-sdk/issues/569)) ([#1630](https://github.com/box/box-java-sdk/issues/1630)) ([`d1e8924`](https://github.com/box/box-java-sdk/commit/d1e8924ad123e5fcbf014be50fbbf52ea45d546b)) - Box Signのテキスト入力の検証 (box/box-openapi[#568](https://github.com/box/box-java-sdk/issues/568)) ([#1624](https://github.com/box/box-java-sdk/issues/1624)) ([`8c5b5c1`](https://github.com/box/box-java-sdk/commit/8c5b5c17285c1c0d4a644eb8187dac92f1f96f28)) - `nullable`フィールドを省略可として処理 (box/box-codegen[#906](https://github.com/box/box-java-sdk/issues/906)) ([#1634](https://github.com/box/box-java-sdk/issues/1634)) ([`cacc729`](https://github.com/box/box-java-sdk/commit/cacc729dc246c914eb1a6d8281f4261c96711dc1)) **Source:** [https://ja.developer.box.com/changelog/2025-12-19-box-java-sdk-v1040-released](https://ja.developer.box.com/changelog/2025-12-19-box-java-sdk-v1040-released) --- ### Box Java SDK `v2.48.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.48.0のリリース v2.48.0 フィールドオプションにより名前ごとにグループを取得する機能を追加 (#789) 共有リンクのダウンスコープを追加 (#785) メタデータ値の浮動小数点の使用を非推奨にして、基になる値 (double… # Box Java SDK v2.48.0のリリース `v2.48.0` 1. フィールドオプションにより名前ごとにグループを取得する機能を追加 ([#789](https://github.com/box/box-java-sdk/issues/789)) 2. 共有リンクのダウンスコープを追加 ([#785](https://github.com/box/box-java-sdk/issues/785)) 3. メタデータ値の浮動小数点の使用を非推奨にして、基になる値 (double) を優先 ([#811](https://github.com/box/box-java-sdk/issues/811)) 4. グループコラボレーション用に反復子のサポートを追加 ([#813](https://github.com/box/box-java-sdk/issues/813)) 5. ファイルの新しいバージョンをアップロードする際にファイル名を設定する機能を追加 ([#810](https://github.com/box/box-java-sdk/issues/810)) 6. ファイルとフォルダの分類フィールドのサポートを追加 ([#809](https://github.com/box/box-java-sdk/issues/809)) 7. 追跡コードの設定のサポートを追加 ([#766](https://github.com/box/box-java-sdk/issues/766)) 8. ファイルとフォルダの`getIsExternallyOwned()`に関する問題を修正 ([#808](https://github.com/box/box-java-sdk/issues/808)) **Source:** [https://ja.developer.box.com/changelog/2020-06-24-box-java-sdk-v2480-released](https://ja.developer.box.com/changelog/2020-06-24-box-java-sdk-v2480-released) --- ### Box Java SDK `v2.49.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.49.0のリリース メタデータクエリのfieldsパラメータを追加 (#826) 圧縮機能を追加 (#825) 共有リンクの共有解除日を設定してバグを修正 (#819) # Box Java SDK v2.49.0のリリース 1. メタデータクエリの`fields`パラメータを追加 ([#826](https://github.com/box/box-java-sdk/issues/826)) 2. 圧縮機能を追加 ([#825](https://github.com/box/box-java-sdk/issues/825)) 3. 共有リンクの共有解除日を設定してバグを修正 ([#819](https://github.com/box/box-java-sdk/issues/819)) **Source:** [https://ja.developer.box.com/changelog/2020-07-17-box-java-sdk-v2490-released](https://ja.developer.box.com/changelog/2020-07-17-box-java-sdk-v2490-released) --- ### Box Java SDK `v2.50.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.50.0のリリース v2.50.0 リクエスト作成エラー時の再試行回数を追加 (#828) # Box Java SDK v2.50.0のリリース `v2.50.0` 1. リクエスト作成エラー時の再試行回数を追加 ([#828](https://github.com/box/box-java-sdk/issues/828)) **Source:** [https://ja.developer.box.com/changelog/2020-07-22-box-java-sdk-v2500-released](https://ja.developer.box.com/changelog/2020-07-22-box-java-sdk-v2500-released) --- ### Box Java SDK `v2.50.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.50.1のリリース Box内のフォルダのトークンをダウンスコープする際に発生するバグを修正 # Box Java SDK v2.50.1のリリース Box内のフォルダのトークンをダウンスコープする際に発生するバグを修正 **Source:** [https://ja.developer.box.com/changelog/2020-08-20-box-java-sdk-v2501-released](https://ja.developer.box.com/changelog/2020-08-20-box-java-sdk-v2501-released) --- ### Box Java SDK `v2.51.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.51.0のリリース 新機能と機能強化: メタデータテンプレートのcopyInstanceOnItemCopyフィールドのサポートを追加 (#850) BoxCollaborator.Infoでのより多くのフィールドのサポートを追加 (#84… # Box Java SDK v2.51.0のリリース **新機能と機能強化:** - メタデータテンプレートの`copyInstanceOnItemCopy`フィールドのサポートを追加 ([#850](https://github.com/box/box-java-sdk/pull/850)) - `BoxCollaborator.Info`でのより多くのフィールドのサポートを追加 ([#843](https://github.com/box/box-java-sdk/pull/843)) **バグ修正:** - ドキュメントされたパラメータを使用するための`getAllGroupsByName()`のアップデート ([#851](https://github.com/box/box-java-sdk/pull/851)) **Source:** [https://ja.developer.box.com/changelog/2020-10-29-box-java-sdk-v2510-released](https://ja.developer.box.com/changelog/2020-10-29-box-java-sdk-v2510-released) --- ### Box Java SDK `v2.51.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.51.1のリリース バグ修正: Enterprise間でのコラボレータによるファイルに対するupdateMetadataの呼び出しの修正 # Box Java SDK v2.51.1のリリース **バグ修正:** - Enterprise間でのコラボレータによるファイルに対する`updateMetadata`の呼び出しの修正 **Source:** [https://ja.developer.box.com/changelog/2020-11-13-box-java-sdk-v2511-released](https://ja.developer.box.com/changelog/2020-11-13-box-java-sdk-v2511-released) --- ### Box Java SDK `v2.52.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.52.0のリリース 新機能と機能強化: フォルダロック機能を追加 (#856) 共有リンク項目を取得するための検索パラメータのサポートを追加 (#855) バグ修正: 追跡コードを更新する際のバグを修正 (#857) # Box Java SDK v2.52.0のリリース **新機能と機能強化:** - フォルダロック機能を追加 ([#856](https://github.com/box/box-java-sdk/pull/856)) - 共有リンク項目を取得するための検索パラメータのサポートを追加 ([#855](https://github.com/box/box-java-sdk/pull/855)) **バグ修正:** - 追跡コードを更新する際のバグを修正 ([#857](https://github.com/box/box-java-sdk/pull/857)) **Source:** [https://ja.developer.box.com/changelog/2020-11-24-box-java-sdk-v2520-released](https://ja.developer.box.com/changelog/2020-11-24-box-java-sdk-v2520-released) --- ### Box Java SDK `v2.53.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.53.0のリリース 新機能と機能強化: BoxFolder.getChildrenへのオフセットおよび制限パラメータの追加 (#861) # Box Java SDK v2.53.0のリリース **新機能と機能強化:** - `BoxFolder.getChildren`へのオフセットおよび制限パラメータの追加 ([#861](https://github.com/box/box-java-sdk/pull/861)) **Source:** [https://ja.developer.box.com/changelog/2021-01-09-box-java-sdk-v2530-released](https://ja.developer.box.com/changelog/2021-01-09-box-java-sdk-v2530-released) --- ### Box Java SDK `v2.54.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.54.0のリリース 新機能と機能強化: ファイルリクエストのサポートを追加 (#869) バグ修正: BoxWeblinkの逆シリアル化を修正 (#881) # Box Java SDK v2.54.0のリリース **新機能と機能強化:** - ファイルリクエストのサポートを追加 ([#869](https://github.com/box/box-java-sdk/pull/869)) **バグ修正:** - `BoxWeblink`の逆シリアル化を修正 ([#881](https://github.com/box/box-java-sdk/pull/881)) **Source:** [https://ja.developer.box.com/changelog/2021-04-01-box-java-sdk-v2540-released](https://ja.developer.box.com/changelog/2021-04-01-box-java-sdk-v2540-released) --- ### Box Java SDK `v2.55.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.55.0のリリース 注: 以下の「重大な変更」による悪影響はないため、Boxでは、このリリースについてメジャーバージョンを上げないことを決定しました。この変更によるお客様への影響はありません。 重大な変更: API… # Box Java SDK v2.55.0のリリース 注: 以下の「重大な変更」による悪影響はないため、Boxでは、このリリースについてメジャーバージョンを上げないことを決定しました。この変更によるお客様への影響はありません。 **重大な変更:** - APIレスポンスと一致するようメタデータ実行クエリを更新 ([#890](https://github.com/box/box-java-sdk/pull/890)) - 注: この変更により、メソッドは、サポートが終了されることなく、削除されます。このメソッドは、基になるサービスでサポートされなくなったため、正しく使用できなくなりました。 **新機能と機能強化:** - 不適切な用語を削除または廃止 ([[#889](https://github.com/box/box-java-sdk/issues/889)])([https://github.com/box/box-java-sdk/pull/889](https://github.com/box/box-java-sdk/pull/889) ) - ユーザーの`is_external_collab_restricted`パラメータのサポートを追加 ([#896](https://github.com/box/box-java-sdk/pull/896)) - `GroupMembership`の設定可能な権限のサポートを追加 ([#897](https://github.com/box/box-java-sdk/pull/897)) - `SHIELD_JUSTIFICATION_APPROVAL`イベントタイプを追加 ([#898](https://github.com/box/box-java-sdk/pull/898)) - 割り当てのリテンションの対象となるファイルおよびファイルバージョンを取得する機能を追加 ([#899](https://github.com/box/box-java-sdk/pull/899)) - `TASK_UPDATE`、`FILE_VERSION_RESTORE`、`ADVANCED_FOLDER_SETTINGS_UPDATE`イベントタイプを追加 ([#902](https://github.com/box/box-java-sdk/pull/902)) - Box Sign APIのサポートを追加 ([#904](https://github.com/box/box-java-sdk/pull/904)) **バグ修正:** - `BoxLegalHoldPolicy`のセッターを追加 ([#885](https://github.com/box/box-java-sdk/pull/885)) - `BoxTaskAssignment`のセッターを追加 ([#886](https://github.com/box/box-java-sdk/pull/886)) - グループメンバーシップおよびウェブリンクのセッターを追加 ([#887](https://github.com/box/box-java-sdk/pull/887)) - Webhookのセッターを追加 ([#888](https://github.com/box/box-java-sdk/pull/888)) - `BoxFile.getThumbnail`のサポートを終了して`BoxFile.getRepresentationContent`を推奨 ([#891](https://github.com/box/box-java-sdk/pull/891)) **Source:** [https://ja.developer.box.com/changelog/2021-07-26-box-java-sdk-v2550-released](https://ja.developer.box.com/changelog/2021-07-26-box-java-sdk-v2550-released) --- ### Box Java SDK `v2.55.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.55.1のリリース バグ修正: #890で削除されたメタデータクエリ実行の方式を復元し、非推奨としてマーク (#905) # Box Java SDK v2.55.1のリリース **バグ修正:** - [#890](https://github.com/box/box-java-sdk/pull/890)で削除されたメタデータクエリ実行の方式を復元し、非推奨としてマーク ([#905](https://github.com/box/box-java-sdk/pull/905)) **Source:** [https://ja.developer.box.com/changelog/2021-07-30-box-java-sdk-v2551-released](https://ja.developer.box.com/changelog/2021-07-30-box-java-sdk-v2551-released) --- ### Box Java SDK `v2.56.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.56.0のリリース 新機能と機能強化: submaster GroupMembershipRoleをcoadminに置き換え、MASTER_INVITE_ACCEPTおよびMASTER_INVITE_REJECTをADMIN_INVITE… # Box Java SDK v2.56.0のリリース **新機能と機能強化:** - `submaster` `GroupMembershipRole`を`coadmin`に置き換え、`MASTER_INVITE_ACCEPT`および`MASTER_INVITE_REJECT`を`ADMIN_INVITE_ACCEPT`および`ADMIN_INVITE_REJECT`に置き換え ([#907](https://github.com/box/box-java-sdk/pull/907)) - ユーザーの作成APIコールに`tracking_codes`を追加 ([#910](https://github.com/box/box-java-sdk/pull/910)) **バグ修正:** - `BoxFileRequest.Info`オブジェクトの`url`を修正 ([#906](https://github.com/box/box-java-sdk/pull/906)) - アクセストークンの更新時に発生するスレッドロックの問題の修正を試行 ([#912](https://github.com/box/box-java-sdk/pull/912)) **Source:** [https://ja.developer.box.com/changelog/2021-08-31-box-java-sdk-v2560-released](https://ja.developer.box.com/changelog/2021-08-31-box-java-sdk-v2560-released) --- ### Box Java SDK `v2.57.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.57.0のリリース 新機能と機能強化: BoxFolder.getChildrenでのマーカーベースのページ割りのサポートを追加 (#927) minimal-jsonをバージョン0.9.5にアップグレード jose4jをバージョン0.7.… # Box Java SDK v2.57.0のリリース **新機能と機能強化:** - `BoxFolder.getChildren`でのマーカーベースのページ割りのサポートを追加 ([#927](https://github.com/box/box-java-sdk/pull/927)) - `minimal-json`をバージョン0.9.5にアップグレード - `jose4j`をバージョン0.7.9にアップグレード - バージョン4.0.1にGradleラッパーを追加 ([#928](https://github.com/box/box-java-sdk/pull/928)) **バグ修正:** - 無限再帰の修正 ([#924](https://github.com/box/box-java-sdk/pull/924)) - `BoxFile`および`BoxFolder`の`BoxSharedLink`にバニティURLを設定できないバグの修正 ([#925](https://github.com/box/box-java-sdk/issues/925)) **Source:** [https://ja.developer.box.com/changelog/2021-10-18-box-java-sdk-v2570-released](https://ja.developer.box.com/changelog/2021-10-18-box-java-sdk-v2570-released) --- ### Box Java SDK `v2.58.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v2.58.0のリリース 新機能と機能強化: 新しいGET /events stream_typeであるadmin_logs_streamingのSDKサポート (#938) 管理対象ユーザーまたはApp User… # Box Java SDK v2.58.0のリリース **新機能と機能強化:** - 新しいGET /events `stream_type`である`admin_logs_streaming`のSDKサポート ([#938](https://github.com/box/box-java-sdk/pull/938)) - 管理対象ユーザーまたはApp Userにこの接続を使用できることを示すために`BoxDeveloperEditionAPIConnection#getUserConnection`を追加 ([#940](https://github.com/box/box-java-sdk/pull/940)) **バグ修正:** - 非推奨の列挙型が使用されている問題を修正 ([#931](https://github.com/box/box-java-sdk/issues/931)) **Source:** [https://ja.developer.box.com/changelog/2021-11-23-box-java-sdk-v2580-released](https://ja.developer.box.com/changelog/2021-11-23-box-java-sdk-v2580-released) --- ### Box Java SDK `v3.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.0.0のリリース ⚠ 重大な変更 BoxFileVersionクラスを変更してfileVersionフィールドを削除 (#978) 非推奨となったAPI BoxCollaborationWhitelist… # Box Java SDK v3.0.0のリリース ### ⚠ 重大な変更 - `BoxFileVersion`クラスを変更して`fileVersion`フィールドを削除 ([#978](https://github.com/box/box-java-sdk/issues/978)) - 非推奨となったAPI `BoxCollaborationWhitelist`を削除して`BoxCollaborationAllowlist`に置き換え、`BoxCollaborationWhitelistExemptTarget`を削除して`BoxCollaborationAllowlistExemptTarget`に置き換え ([#969](https://github.com/box/box-java-sdk/issues/969)) - Java 7のサポートを終了 ([#962](https://github.com/box/box-java-sdk/issues/962)) - `bouncycastle`ライブラリを1.57にダウングレード ([#942](https://github.com/box/box-java-sdk/issues/942)) ### 新機能と機能強化 - `BoxEvent.EventType`にマップされていない場合でも、イベントの名前を含む`typeName`を`BoxEvent`に追加 ([#979](https://github.com/box/box-java-sdk/issues/979)) ([`b30f61f`](https://github.com/box/box-java-sdk/commit/b30f61f8cc9c02a1fc4cd5eb35469749e1a16558))、[#968](https://github.com/box/box-java-sdk/issues/968)をクローズ - 省略可能な`description`パラメータを`retention_policies`エンドポイント、`start_date_field`パラメータを`retention_policy_assignments endpoint`エンドポイントに新しく追加 ([#967](https://github.com/box/box-java-sdk/issues/967)) ([`0aa4ff4`](https://github.com/box/box-java-sdk/commit/0aa4ff48a1e035efc9ac6aaa42f18f4c92955b7b)) - ユーザーが抽出したい情報を指定できるように`BoxFile#getVersions(String... fields)`を追加。[#946](https://github.com/box/box-java-sdk/issues/946)を修正。([#947](https://github.com/box/box-java-sdk/issues/947)) ([`a2eb638`](https://github.com/box/box-java-sdk/commit/a2eb63896606a6c00ccee6bd9745f4c51f8d89a2)) - `BoxAPI`ドキュメントから`eventTypes`を削除。[#974](https://github.com/box/box-java-sdk/issues/974)を修正 ([#975](https://github.com/box/box-java-sdk/issues/975)) [`2c69360`](https://github.com/box/box-java-sdk/commit/2c69360e80b1bdd6213933cf2f4da195d52c92d4) - 非推奨となったAPI `BoxCollaborationWhitelist`を削除して`BoxCollaborationAllowlist`に置き換え、`BoxCollaborationWhitelistExemptTarget`を削除して`BoxCollaborationAllowlistExemptTarget`に置き換え ([#969](https://github.com/box/box-java-sdk/issues/969)) ([`2fd4d6f`](https://github.com/box/box-java-sdk/commit/2fd4d6f884410c8884c4c038687bfc8f32837b55)) ### バグ修正 - `BoxFileVersion`クラスを変更して`fileVersion`フィールドを削除 ([#978](https://github.com/box/box-java-sdk/issues/978)) ([`8c39451`](https://github.com/box/box-java-sdk/commit/8c3945167581400043a070c2f6906ef05d3d7b85)) - SDKロガーの名前を`"com.box.sdk"`に変更し、[#638](https://github.com/box/box-java-sdk/issues/638)を修正 ([#950](https://github.com/box/box-java-sdk/issues/950)) ([`443c230`](https://github.com/box/box-java-sdk/commit/443c23085e55bbcaa1524c5b9e1bf852a1e2a1ce)) - 日付値を使用して`BoxSignRequestPrefillTag`を作成したときの日付解析エラー。([#970](https://github.com/box/box-java-sdk/issues/970)) ([`cc2c8da`](https://github.com/box/box-java-sdk/commit/cc2c8da9ea7d066ae2c247c2de5ac8b8bbba9b99)) - `EventLog`の制限パラメータの送信を修正 ([#977](https://github.com/box/box-java-sdk/issues/977)) ([`96bdccc`](https://github.com/box/box-java-sdk/commit/96bdccc9ca40ed43a6028a2b0d055d9d9a8de525)) - `BoxFile`または`BoxFolder`で空のメタデータが使用されたときの`NullPointerException`を修正 ([#918](https://github.com/box/box-java-sdk/issues/918)) ([#945](https://github.com/box/box-java-sdk/issues/945)) ([`68bc3c5`](https://github.com/box/box-java-sdk/commit/68bc3c578d760b7239f6d704fed9bb5a834bf52a)) - 署名リクエストを逆シリアル化できない問題を修正 ([#951](https://github.com/box/box-java-sdk/issues/951))。([#952](https://github.com/box/box-java-sdk/issues/952)) ([`070bdc5`](https://github.com/box/box-java-sdk/commit/070bdc56074a1533c41f9085943d09502c79a7f4)) ### 依存関係のアップグレード - Java 7のサポートを終了 ([#962](https://github.com/box/box-java-sdk/issues/962)) ([`953ad78`](https://github.com/box/box-java-sdk/commit/953ad78ac84833082439d0def1dcc63dc11ac04a)) - `bouncycastle`ライブラリを1.57にダウングレード ([#942](https://github.com/box/box-java-sdk/issues/942)) ([`26aaed5`](https://github.com/box/box-java-sdk/commit/26aaed51fd914eaf2061da735f11830524e4cfe4)) **Source:** [https://ja.developer.box.com/changelog/2022-01-17-box-java-sdk-v300-released](https://ja.developer.box.com/changelog/2022-01-17-box-java-sdk-v300-released) --- ### Box Java SDK `v3.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.1.0のリリース 新機能と機能強化 クライアント資格情報許可による認証方法のサポートを追加 (#1002) (9cfcaff) ファイルの廃棄日を延長するAPI (#1001) (f3f6b60) メタデータクエリ実行時のindexName… # Box Java SDK v3.1.0のリリース ### 新機能と機能強化 - クライアント資格情報許可による認証方法のサポートを追加 ([#1002](https://github.com/box/box-java-sdk/issues/1002)) ([`9cfcaff`](https://github.com/box/box-java-sdk/commit/9cfcaff243dbf0541409f91f9f863a207345dc47)) - ファイルの廃棄日を延長するAPI ([#1001](https://github.com/box/box-java-sdk/issues/1001)) ([`f3f6b60`](https://github.com/box/box-java-sdk/commit/f3f6b6043eec362c5a8ad9a01d6588538ca34e71)) - メタデータクエリ実行時の`indexName`のサポート終了 ([#1000](https://github.com/box/box-java-sdk/issues/1000)) ([`c20dbbf`](https://github.com/box/box-java-sdk/commit/c20dbbf6a927e31cfdd7ffa71069c0897f7a0536)) ### 依存関係のアップグレード - Gradleを7.3.3にアップグレード ([#985](https://github.com/box/box-java-sdk/issues/985)) [`e4acbb1`](https://github.com/box/box-java-sdk/commit/e4acbb1f0c10ccdeeee139e2566b344052680010) **Source:** [https://ja.developer.box.com/changelog/2022-02-18-box-java-sdk-v310-released](https://ja.developer.box.com/changelog/2022-02-18-box-java-sdk-v310-released) --- ### Box Java SDK `v3.1.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.1.1のリリース バグ修正 エラーフィールドにエラーコードが含まれている場合にjwt認証を再試行 (#1020) (8c9d11d)、#1019をクローズ # Box Java SDK v3.1.1のリリース ### バグ修正 - エラーフィールドにエラーコードが含まれている場合に`jwt`認証を再試行 ([#1020](https://github.com/box/box-java-sdk/issues/1020)) ([`8c9d11d`](https://github.com/box/box-java-sdk/commit/8c9d11d1b3556552751c9f4ac99a0f7180af97f3))、[#1019](https://github.com/box/box-java-sdk/issues/1019)をクローズ **Source:** [https://ja.developer.box.com/changelog/2022-02-28-box-java-sdk-v311-released](https://ja.developer.box.com/changelog/2022-02-28-box-java-sdk-v311-released) --- ### Box Java SDK `v3.1.2`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.1.2のリリース バグ修正 CCG認証でのAs-Userヘッダーの使用を許可 (#1031) (b0c2389) Retry-Afterヘッダーが存在する場合の再試行ロジックを修正 (#1033) (05224c4) # Box Java SDK v3.1.2のリリース ### バグ修正 - CCG認証での`As-User`ヘッダーの使用を許可 ([#1031](https://github.com/box/box-java-sdk/issues/1031)) ([`b0c2389`](https://github.com/box/box-java-sdk/commit/b0c238913cc1dbcecfd546a5eae68277c3c76d42)) - `Retry-After`ヘッダーが存在する場合の再試行ロジックを修正 ([#1033](https://github.com/box/box-java-sdk/issues/1033)) ([`05224c4`](https://github.com/box/box-java-sdk/commit/05224c433d2a101a01959644674153df9542b711)) **Source:** [https://ja.developer.box.com/changelog/2022-03-22-box-java-sdk-v312-released](https://ja.developer.box.com/changelog/2022-03-22-box-java-sdk-v312-released) --- ### Box Java SDK `v3.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.2.0のリリース 新機能と機能強化 ベースURLの設定を刷新 (#1042) (129baf7) アバターV2 APIをサポート (#1044) (18651d7) # Box Java SDK v3.2.0のリリース ### 新機能と機能強化 - ベースURLの設定を刷新 ([#1042](https://github.com/box/box-java-sdk/issues/1042)) ([`129baf7`](https://github.com/box/box-java-sdk/commit/129baf704ced127788bb0f62ef9f4fb6a50fdc63)) - アバターV2 APIをサポート ([#1044](https://github.com/box/box-java-sdk/issues/1044)) ([`18651d7`](https://github.com/box/box-java-sdk/commit/18651d7a5b419796e3733c7582ae471d7af7ed5c)) **Source:** [https://ja.developer.box.com/changelog/2022-05-24-box-java-sdk-v320-released](https://ja.developer.box.com/changelog/2022-05-24-box-java-sdk-v320-released) --- ### Box Java SDK `v3.2.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.2.1のリリース バグ修正 OAuthで認証するための適切なURLを取得するよう修正 (#1059) (42876b4)、#1057をクローズ # Box Java SDK v3.2.1のリリース ### バグ修正 - OAuthで認証するための適切なURLを取得するよう修正 ([#1059](https://github.com/box/box-java-sdk/issues/1059)) ([`42876b4`](https://github.com/box/box-java-sdk/commit/42876b45ccdb7fa6f357186cecaba051abf1c269))、[#1057](https://github.com/box/box-java-sdk/issues/1057)をクローズ **Source:** [https://ja.developer.box.com/changelog/2022-06-11-box-java-sdk-v321-released](https://ja.developer.box.com/changelog/2022-06-11-box-java-sdk-v321-released) --- ### Box Java SDK `v3.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.3.0のリリース 新機能と機能強化 編集可能な共有リンクのサポートを追加 (#1064) (9b7d60c) バグ修正 閉じたストリームの例外をcanUploadメソッドで修正 (#1067) (543f91c) # Box Java SDK v3.3.0のリリース ### 新機能と機能強化 - 編集可能な共有リンクのサポートを追加 ([#1064](https://github.com/box/box-java-sdk/issues/1064)) ([`9b7d60c`](https://github.com/box/box-java-sdk/commit/9b7d60c41fbd481465bf3f2a5877746f10849712)) ### バグ修正 - 閉じたストリームの例外を`canUpload`メソッドで修正 ([#1067](https://github.com/box/box-java-sdk/issues/1067)) ([`543f91c`](https://github.com/box/box-java-sdk/commit/543f91c46dfcc9de7e61ce11cd93d472916533ac)) **Source:** [https://ja.developer.box.com/changelog/2022-07-04-box-java-sdk-v330-released](https://ja.developer.box.com/changelog/2022-07-04-box-java-sdk-v330-released) --- ### Box Java SDK `v3.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.4.0のリリース 新機能と機能強化 新しいBoxTrash#items APIでごみ箱内の項目を取得する際のページネーション機能を追加 (#1072) (9cd411d) バグ修正 本文の書き込みをバッファリングし、SDKログを修正 (#107… # Box Java SDK v3.4.0のリリース ### 新機能と機能強化 - 新しい`BoxTrash#items` APIでごみ箱内の項目を取得する際のページネーション機能を追加 ([#1072](https://github.com/box/box-java-sdk/issues/1072)) ([`9cd411d`](https://github.com/box/box-java-sdk/commit/9cd411d20af1bc76ae815905396d72008af62539)) ### バグ修正 - 本文の書き込みをバッファリングし、SDKログを修正 ([#1079](https://github.com/box/box-java-sdk/issues/1079)) ([`bc35ef3`](https://github.com/box/box-java-sdk/commit/bc35ef3279e68a3d794de454f506ba41d14c3b16)) **Source:** [https://ja.developer.box.com/changelog/2022-08-11-box-java-sdk-v340-released](https://ja.developer.box.com/changelog/2022-08-11-box-java-sdk-v340-released) --- ### Box Java SDK `v3.5.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.5.0のリリース 新機能と機能強化 署名リクエストとレスポンスにcontent-typeを追加 (#1087) (49411aa) notification_emailをBoxUserに追加 (#1088) (547722… # Box Java SDK v3.5.0のリリース ### 新機能と機能強化 - 署名リクエストとレスポンスに`content-type`を追加 ([#1087](https://github.com/box/box-java-sdk/issues/1087)) ([`49411aa`](https://github.com/box/box-java-sdk/commit/49411aaeea6d3ff8de10e3fbc3c60bba1bc54748)) - `notification_email`を`BoxUser`に追加 ([#1088](https://github.com/box/box-java-sdk/issues/1088)) ([`5477223`](https://github.com/box/box-java-sdk/commit/547722347a920ba11e5fff7a8df5201720af815a)) - 署名リクエストとレスポンスに`redirect_url`と`declined_redirect_url`を追加 ([#1089](https://github.com/box/box-java-sdk/issues/1089)) ([`3921fe1`](https://github.com/box/box-java-sdk/commit/3921fe1a4a6249146a8dd2f22e15801846bc073b)) ### バグ修正 - 空の本文が原因の署名リクエストのキャンセルの失敗を修正 ([#1085](https://github.com/box/box-java-sdk/issues/1085)) ([`32b8e79`](https://github.com/box/box-java-sdk/commit/32b8e79ebc8995ab933c32d28c3e2f17d9627a70)) **Source:** [https://ja.developer.box.com/changelog/2022-08-26-box-java-sdk-v350-released](https://ja.developer.box.com/changelog/2022-08-26-box-java-sdk-v350-released) --- ### Box Java SDK `v3.6.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.6.0のリリース 新機能と機能強化 変更可能リテンションポリシーのサポートと、リテンションポリシー割り当ての削除機能を追加 (#1093) (30e2fcb… # Box Java SDK v3.6.0のリリース ### 新機能と機能強化 - 変更可能リテンションポリシーのサポートと、リテンションポリシー割り当ての削除機能を追加 ([#1093](https://github.com/box/box-java-sdk/issues/1093)) ([`30e2fcb`](https://github.com/box/box-java-sdk/commit/30e2fcb74c12867fd3859c3490539557b47ab006)) ### バグ修正 - ユーザーの作成時に指定されていない省略可能なフィールドを送信しないように修正 ([#1095](https://github.com/box/box-java-sdk/issues/1095)) ([`b7d894d`](https://github.com/box/box-java-sdk/commit/b7d894d3f134137f3a5925f09accfd4334837f81)) **Source:** [https://ja.developer.box.com/changelog/2022-09-07-box-java-sdk-v360-released](https://ja.developer.box.com/changelog/2022-09-07-box-java-sdk-v360-released) --- ### Box Java SDK `v3.7.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.7.0のリリース 新機能と機能強化 ファイルとフォルダにis_accessible_via_shared_linkフィールドを追加 (#1103) (45e9906) バグ修正 BoxCollaboration.getItem… # Box Java SDK v3.7.0のリリース ### 新機能と機能強化 - ファイルとフォルダに`is_accessible_via_shared_link`フィールドを追加 ([#1103](https://github.com/box/box-java-sdk/issues/1103)) ([`45e9906`](https://github.com/box/box-java-sdk/commit/45e9906efca6a7f2d4d738914dc804de12d3646e)) ### バグ修正 - `BoxCollaboration.getItem()`が`BoxFolder.Info`ではなく`BoxItem.Info`を返すように修正 ([#1102](https://github.com/box/box-java-sdk/issues/1102)) ([`135850d`](https://github.com/box/box-java-sdk/commit/135850d97164ee5f6d74708d74c531f7fa8bee26))、[#1101](https://github.com/box/box-java-sdk/issues/1101) [#1100](https://github.com/box/box-java-sdk/issues/1100)をクローズ。以前、`BoxCollaboration.getItem()`は`BoxFolder.Info`を返していました。ただし、ファイルにコラボレーションが追加された場合は引き続き`BoxFolder.Info`が返され、その結果、任意のAPIコールを実行する際に`BoxAPIException`がスローされます。コラボレーション項目を取得する場合は`BoxItem.Info`として格納するか、その種類を確認して`BoxFile.Info`または`BoxFolder.Info`として格納することをお勧めします。 - 不足していたコンストラクタを`BoxNotificationEmail`クラスに追加 ([#1098](https://github.com/box/box-java-sdk/issues/1098)) ([`2534f34`](https://github.com/box/box-java-sdk/commit/2534f34133f9554abd1e80fc1555659a2c52b23f)) **Source:** [https://ja.developer.box.com/changelog/2022-09-21-box-java-sdk-v370-released](https://ja.developer.box.com/changelog/2022-09-21-box-java-sdk-v370-released) --- ### Box Java SDK `v3.7.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.7.1のリリース バグ修正 JSONを解析できなかった場合のログを改善 (#1106) (5e66ef8) # Box Java SDK v3.7.1のリリース ### バグ修正 - JSONを解析できなかった場合のログを改善 ([#1106](https://github.com/box/box-java-sdk/issues/1106)) ([`5e66ef8`](https://github.com/box/box-java-sdk/commit/5e66ef8cc983a6cff34995efc75e9effd3195d48)) **Source:** [https://ja.developer.box.com/changelog/2022-09-30-box-java-sdk-v371-released](https://ja.developer.box.com/changelog/2022-09-30-box-java-sdk-v371-released) --- ### Box Java SDK `v3.8.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.8.0のリリース 新機能と機能強化 Box Sign Webhookを追加 (#1109) (99051a5) バグ修正 BoxSignRequestPrefillTagを使用する際のNullPointerException (#112… # Box Java SDK v3.8.0のリリース ### 新機能と機能強化 - Box Sign Webhookを追加 ([#1109](https://github.com/box/box-java-sdk/issues/1109)) ([`99051a5`](https://github.com/box/box-java-sdk/commit/99051a575f120a8c0939359c1f4875b16b98b7f0)) ### バグ修正 - `BoxSignRequestPrefillTag`を使用する際の`NullPointerException` ([#1121](https://github.com/box/box-java-sdk/issues/1121)) ([`73fd5b6`](https://github.com/box/box-java-sdk/commit/73fd5b6e6e40f7e79b385edf46b8eee5ff612ace))、[#1120](https://github.com/box/box-java-sdk/issues/1120)をクローズ - JTIクレームが拒否された場合にJWT IDを再生成し、認証リクエストを再試行 ([#1110](https://github.com/box/box-java-sdk/issues/1110)) ([`420da0f`](https://github.com/box/box-java-sdk/commit/420da0f2c80bfe8cfbaba4fa8dec4826c4cb6337)) ### 依存関係のアップグレード - `org.bitbucket.b_c:jose4j:0.9.0`を昇格 ([#1111](https://github.com/box/box-java-sdk/issues/1111)) ([`349694d`](https://github.com/box/box-java-sdk/commit/349694ddcfeb701a9ecdfd5ae555d49bea4d1030)) **Source:** [https://ja.developer.box.com/changelog/2022-11-16-box-java-sdk-v380-released](https://ja.developer.box.com/changelog/2022-11-16-box-java-sdk-v380-released) --- ### Box Java SDK `v3.8.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.8.1のリリース バグ修正 以前のSDKバージョンの作業から状態をリストア (#1134) (b6d97dd) # Box Java SDK v3.8.1のリリース ### バグ修正 - 以前の`SDK`バージョンの作業から状態をリストア ([#1134](https://github.com/box/box-java-sdk/issues/1134)) ([`b6d97dd`](https://github.com/box/box-java-sdk/commit/b6d97dd5b0cc91eb2e4c922ff217e0878e0f63ec)) **Source:** [https://ja.developer.box.com/changelog/2022-12-19-box-java-sdk-v381-released](https://ja.developer.box.com/changelog/2022-12-19-box-java-sdk-v381-released) --- ### Box Java SDK `v3.8.2`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v3.8.2のリリース バグ修正 更新トークンがない場合の状態の復元を修正 (#1139) (3544709) # Box Java SDK v3.8.2のリリース ### バグ修正 - 更新トークンがない場合の状態の復元を修正 ([#1139](https://github.com/box/box-java-sdk/issues/1139)) ([`3544709`](https://github.com/box/box-java-sdk/commit/3544709480eb03e5bd50f5dc99be7409569304c4)) **Source:** [https://ja.developer.box.com/changelog/2023-01-04-box-java-sdk-v382-released](https://ja.developer.box.com/changelog/2023-01-04-box-java-sdk-v382-released) --- ### Box Java SDK `v4.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.0.0のリリース このリリースに含まれる最も重要な変更は、ネイティブのHTTPライブラリからOkHttpのライブラリへの置き換えです。これにより、SDKで以下が可能になります。 HTTPプロトコルのHTTP2バージョンのサポート Basic… # Box Java SDK v4.0.0のリリース このリリースに含まれる最も重要な変更は、ネイティブのHTTPライブラリから[OkHttp](https://square.github.io/okhttp/)のライブラリへの置き換えです。これにより、SDKで以下が可能になります。 - HTTPプロトコルのHTTP2バージョンのサポート - Basic認証方法以外も使用するプロキシのサポート。カスタムプロキシ認証の作成の詳細とNTLMプロキシ認証の例については、[こちら](https://github.com/box/box-java-sdk/blob/main/doc/configuration.md#example-ntlm-authenticator)を参照してください。 ### 重大な変更 - `BatchAPIRequest`はSDKのサポート対象外になりました - `BoxAPIConnection#DEFAULT_MAX_ATTEMPTS`は`BoxAPIConnection#DEFAULT_MAX_RETRIES`に置き換えられました - `BoxRedirectResponse`は削除され、置き換えはありません - `BoxEvent.Type`は`EventType`に置き換えられました - 非推奨となったメソッドが`BoxFile`、`BoxFileVersionRetention`、`BoxFolder`、`BoxGroup`、`BoxGroupMembership`、`BoxItem`、`BoxRetentionPolicy`、`BoxTask`、`BoxUser`、`BoxWebLink`、`EventLog`、`Metadata`、`MetadataTemplate`から削除されました 移行の詳細については[こちら](https://github.com/box/box-java-sdk/blob/main/doc/upgrades/3.x.x%20to%204.x.x.md)を参照してください。 ### 新機能と機能強化 - Java SDKでの`OkHttp`の使用 ([#1083](https://github.com/box/box-java-sdk/issues/1083)) ([`2656698`](https://github.com/box/box-java-sdk/commit/265669897100dd8f1757fc2c5f25665da42c2889)) **Source:** [https://ja.developer.box.com/changelog/2023-01-18-box-java-sdk-v400-released](https://ja.developer.box.com/changelog/2023-01-18-box-java-sdk-v400-released) --- ### Box Java SDK `v4.0.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.0.1のリリース バグ修正 OAUTH_SUFFIXがbaseAuthorizationURLに2回付加される (#1148) (3164770)、#1147をクローズ AbstractBoxMultipartRequest… # Box Java SDK v4.0.1のリリース ### バグ修正 - `OAUTH_SUFFIX`が`baseAuthorizationURL`に2回付加される ([#1148](https://github.com/box/box-java-sdk/issues/1148)) ([`3164770`](https://github.com/box/box-java-sdk/commit/3164770498e5115a43318640735317a896950f54))、[#1147](https://github.com/box/box-java-sdk/issues/1147)をクローズ - `AbstractBoxMultipartRequest`によって誤った進捗が`ProgressListener`に報告される ([#1151](https://github.com/box/box-java-sdk/issues/1151)) ([`947ded3`](https://github.com/box/box-java-sdk/commit/947ded394490fc840b8191bc7ad69ae0ea5f5c7d))、[#1149](https://github.com/box/box-java-sdk/issues/1149)をクローズ **Source:** [https://ja.developer.box.com/changelog/2023-03-06-box-java-sdk-v401-released](https://ja.developer.box.com/changelog/2023-03-06-box-java-sdk-v401-released) --- ### Box Java SDK `v4.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.1.0のリリース 新機能と機能強化 BoxUserメソッドの作成、更新で不足していたfieldsパラメータを追加 (#1155) (be3820d)、#1154をクローズ バグ修正 カスタムロガーハンドラの登録を許可 (#1156) (7373d… # Box Java SDK v4.1.0のリリース ### 新機能と機能強化 - `BoxUser`メソッドの作成、更新で不足していた`fields`パラメータを追加 ([#1155](https://github.com/box/box-java-sdk/issues/1155)) ([`be3820d`](https://github.com/box/box-java-sdk/commit/be3820dc4df15e99dfc13602d4f7269841bd15b3))、[#1154](https://github.com/box/box-java-sdk/issues/1154)をクローズ ### バグ修正 - カスタムロガーハンドラの登録を許可 ([#1156](https://github.com/box/box-java-sdk/issues/1156)) ([`7373d5c`](https://github.com/box/box-java-sdk/commit/7373d5cc2bf49bc198cbca70d056e43f0dffdb3a)) - `BoxAPIConnection`の復元時に`maxRetryAttempts`のデフォルト値にフォールバック ([#1161](https://github.com/box/box-java-sdk/issues/1161)) ([`2a10e5d`](https://github.com/box/box-java-sdk/commit/2a10e5d07497611e077a9207fe98c1d8146cfd22))、[#1160](https://github.com/box/box-java-sdk/issues/1160)をクローズ **Source:** [https://ja.developer.box.com/changelog/2023-04-24-box-java-sdk-v410-released](https://ja.developer.box.com/changelog/2023-04-24-box-java-sdk-v410-released) --- ### Box Java SDK `v4.1.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.1.1のリリース バグ修正 認証ヘッダーの追加の無効化をユーザーに許可 (#1167) (3433e5a) リクエストの再試行時にヘッダーをログに記録 (#1164) (e0c3d8e) # Box Java SDK v4.1.1のリリース ### バグ修正 - 認証ヘッダーの追加の無効化をユーザーに許可 ([#1167](https://github.com/box/box-java-sdk/issues/1167)) ([`3433e5a`](https://github.com/box/box-java-sdk/commit/3433e5a405ceb9bc32791642518b1fd65c4b4032)) - リクエストの再試行時にヘッダーをログに記録 ([#1164](https://github.com/box/box-java-sdk/issues/1164)) ([`e0c3d8e`](https://github.com/box/box-java-sdk/commit/e0c3d8e730962ba5c97105ce506ee931a3bba362)) **Source:** [https://ja.developer.box.com/changelog/2023-05-16-box-java-sdk-v411-released](https://ja.developer.box.com/changelog/2023-05-16-box-java-sdk-v411-released) --- ### Box Java SDK `v4.1.2`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.1.2のリリース バグ修正 大きいファイルをアップロードする際のClassCastException (#1174) (e7d28bd)、#1173をクローズ SharedLinkAPIConnectionコンストラクタをpublic… # Box Java SDK v4.1.2のリリース ### バグ修正 - 大きいファイルをアップロードする際のClassCastException ([#1174](https://github.com/box/box-java-sdk/issues/1174)) ([`e7d28bd`](https://github.com/box/box-java-sdk/commit/e7d28bddb706c8b4fd1328f0eebc50db19a8c656))、[#1173](https://github.com/box/box-java-sdk/issues/1173)をクローズ - `SharedLinkAPIConnection`コンストラクタをpublicに変更 ([#1172](https://github.com/box/box-java-sdk/issues/1172)) ([`4d1616d`](https://github.com/box/box-java-sdk/commit/4d1616ddd2c39d1cb0d03af998d2c47efe607853)) - 無効なグループメンバーシップロールを削除 ([#1171](https://github.com/box/box-java-sdk/issues/1171)) ([`a5915f9`](https://github.com/box/box-java-sdk/commit/a5915f94114a8269287831280a57949ed203e4e8)) **Source:** [https://ja.developer.box.com/changelog/2023-06-14-box-java-sdk-v412-released](https://ja.developer.box.com/changelog/2023-06-14-box-java-sdk-v412-released) --- ### Box Java SDK `v4.10.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.10.0のリリース 新機能と機能強化 maxRetriesパラメータを使用してgetRepresentationContentメソッドをオーバーロード (#1251) (d26bd4f) 署名リクエストでlogin_required… # Box Java SDK v4.10.0のリリース ### 新機能と機能強化 - `maxRetries`パラメータを使用して`getRepresentationContent`メソッドをオーバーロード ([#1251](https://github.com/box/box-java-sdk/issues/1251)) ([`d26bd4f`](https://github.com/box/box-java-sdk/commit/d26bd4f5a141150a372159bc3867abbbbdda1406)) - 署名リクエストで`login_required`、`password`、`suppress_nofitications`、`verification_phone_number`、`additional_info`フィールドをサポート ([#1250](https://github.com/box/box-java-sdk/issues/1250)) ([`3ee55b3`](https://github.com/box/box-java-sdk/commit/3ee55b3613c5f5fa92cdd4a17c0cb3e2cc86a9a4)) **Source:** [https://ja.developer.box.com/changelog/2024-06-06-box-java-sdk-v4100-released](https://ja.developer.box.com/changelog/2024-06-06-box-java-sdk-v4100-released) --- ### Box Java SDK `v4.11.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.11.0のリリース 新機能と機能強化 OkHttp呼び出しの作成のオーバーライドを許可 (#1257) (bd6fde6) バグ修正 分類テンプレートの更新時に不足していたフィールドを追加 (#1255) (f17f817) BoxFile… # Box Java SDK v4.11.0のリリース ### 新機能と機能強化 - OkHttp呼び出しの作成のオーバーライドを許可 ([#1257](https://github.com/box/box-java-sdk/issues/1257)) ([`bd6fde6`](https://github.com/box/box-java-sdk/commit/bd6fde6689bebe6cb5889c91214db68e08a4ec8b)) ### バグ修正 - 分類テンプレートの更新時に不足していたフィールドを追加 ([#1255](https://github.com/box/box-java-sdk/issues/1255)) ([`f17f817`](https://github.com/box/box-java-sdk/commit/f17f817bde5a412358bf3de8e489ed080715ec4b)) - `BoxFile`および`BoxFolder`の権限の逆シリアル化を修正 ([#1256](https://github.com/box/box-java-sdk/issues/1256)) ([`f088448`](https://github.com/box/box-java-sdk/commit/f08844889800a01f7c78941036f6228502fca8b0)) **Source:** [https://ja.developer.box.com/changelog/2024-07-15-box-java-sdk-v4110-released](https://ja.developer.box.com/changelog/2024-07-15-box-java-sdk-v4110-released) --- ### Box Java SDK `v4.11.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.11.1のリリース バグ修正 ファイルアップロードのマルチパートリクエストの順序を修正 (#1261) (7200ac7) # Box Java SDK v4.11.1のリリース ### バグ修正 - ファイルアップロードのマルチパートリクエストの順序を修正 ([#1261](https://github.com/box/box-java-sdk/issues/1261)) ([`7200ac7`](https://github.com/box/box-java-sdk/commit/7200ac77888b3639f2c294486be278e316efcfb0)) **Source:** [https://ja.developer.box.com/changelog/2024-07-16-box-java-sdk-v4111-released](https://ja.developer.box.com/changelog/2024-07-16-box-java-sdk-v4111-released) --- ### Box Java SDK `v4.12.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.12.0のリリース 新機能と機能強化 AIエージェントをサポート (#1265) (3cb2c7c) AIによる抽出 (自由形式および構造化) をサポート (#1266) (7ba90b9) # Box Java SDK v4.12.0のリリース ### 新機能と機能強化 - AIエージェントをサポート ([#1265](https://github.com/box/box-java-sdk/issues/1265)) ([`3cb2c7c`](https://github.com/box/box-java-sdk/commit/3cb2c7c275761a24be9403a6a2b41d0725ba8d9b)) - AIによる抽出 (自由形式および構造化) をサポート ([#1266](https://github.com/box/box-java-sdk/issues/1266)) ([`7ba90b9`](https://github.com/box/box-java-sdk/commit/7ba90b96070a32b3e2ac60e5c55bd04d0a5973c0)) **Source:** [https://ja.developer.box.com/changelog/2024-10-18-box-java-sdk-v4120-released](https://ja.developer.box.com/changelog/2024-10-18-box-java-sdk-v4120-released) --- ### Box Java SDK `v4.13.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.13.0のリリース 新機能と機能強化 BoxFileレプリゼンテーションでContent-Lengthヘッダーからのバイトの完全一致の読み取りを適用 (#1274) (0b45cdb) BoxFileでgetVersionByID… # Box Java SDK v4.13.0のリリース ### 新機能と機能強化 - `BoxFile`レプリゼンテーションで`Content-Length`ヘッダーからのバイトの完全一致の読み取りを適用 ([#1274](https://github.com/box/box-java-sdk/issues/1274)) ([`0b45cdb`](https://github.com/box/box-java-sdk/commit/0b45cdb74c21996d1dfea505d25430a1fa9ee730)) - `BoxFile`で`getVersionByID`メソッドを公開 ([#1268](https://github.com/box/box-java-sdk/issues/1268)) ([`6ea70f7`](https://github.com/box/box-java-sdk/commit/6ea70f79ad39dd9a427ee574b5536d0ab1e3a9a4)) - Box API接続の`tryRestoreUsingAccessTokenCache`をpublicに変更 ([#1272](https://github.com/box/box-java-sdk/issues/1272)) ([`50f5a61`](https://github.com/box/box-java-sdk/commit/50f5a61184bd1a17a17e811536166f9f8e081a13)) ### バグ修正 - `accessToken`のロックメカニズムを修正 ([#1270](https://github.com/box/box-java-sdk/issues/1270)) ([`5eb4c93`](https://github.com/box/box-java-sdk/commit/5eb4c93bd3653b28dc7def747779d008369f486a)) **Source:** [https://ja.developer.box.com/changelog/2024-11-21-box-java-sdk-v4130-released](https://ja.developer.box.com/changelog/2024-11-21-box-java-sdk-v4130-released) --- ### Box Java SDK `v4.13.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.13.1のリリース バグ修正 ストリームから読み取る際にContent-Lengthを正しく計算 (#1277) (b1d5371) # Box Java SDK v4.13.1のリリース ### バグ修正 - ストリームから読み取る際に`Content-Length`を正しく計算 ([#1277](https://github.com/box/box-java-sdk/issues/1277)) ([`b1d5371`](https://github.com/box/box-java-sdk/commit/b1d5371491abe1729a95eb9dc39d375135c8681d)) **Source:** [https://ja.developer.box.com/changelog/2024-11-29-box-java-sdk-v4131-released](https://ja.developer.box.com/changelog/2024-11-29-box-java-sdk-v4131-released) --- ### Box Java SDK `v4.14.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.14.0のリリース 新機能と機能強化 共有リンクからのファイルのダウンロードをサポート (#1282) (9b7f28b) バグ修正 BoxAPIExceptionがリクエストをログに記録した際に機密データを削除 (#1284) (f1e226f… # Box Java SDK v4.14.0のリリース ### 新機能と機能強化 - 共有リンクからのファイルのダウンロードをサポート ([#1282](https://github.com/box/box-java-sdk/issues/1282)) ([`9b7f28b`](https://github.com/box/box-java-sdk/commit/9b7f28b0288977513b0db3ed4f800647545e1f2c)) ### バグ修正 - `BoxAPIException`がリクエストをログに記録した際に機密データを削除 ([#1284](https://github.com/box/box-java-sdk/issues/1284)) ([`f1e226f`](https://github.com/box/box-java-sdk/commit/f1e226f710c301202acff067ef34687ddbb57b7b)) - 開始日を指定した継続的なリーガルホールドポリシーの作成をサポート ([#1281](https://github.com/box/box-java-sdk/issues/1281)) ([`d9564e2`](https://github.com/box/box-java-sdk/commit/d9564e2e86ea110af933ca3dd0f728111d7140ae)) **Source:** [https://ja.developer.box.com/changelog/2025-01-22-box-java-sdk-v4140-released](https://ja.developer.box.com/changelog/2025-01-22-box-java-sdk-v4140-released) --- ### Box Java SDK `v4.15.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.15.0のリリース 新機能と機能強化 BoxFolderにcanNonOwnersViewCollaboratorsフラグを追加 (#1288) (9119adc) ダウンロードでzstdエンコードをサポート (#1287) (0e3c4c… # Box Java SDK v4.15.0のリリース ### 新機能と機能強化 - `BoxFolder`に`canNonOwnersViewCollaborators`フラグを追加 ([#1288](https://github.com/box/box-java-sdk/issues/1288)) ([`9119adc`](https://github.com/box/box-java-sdk/commit/9119adceae35e892e73ed61ed30cf82ad912960d)) - ダウンロードで`zstd`エンコードをサポート ([#1287](https://github.com/box/box-java-sdk/issues/1287)) ([`0e3c4c0`](https://github.com/box/box-java-sdk/commit/0e3c4c07e65ef1887cd5c393e3daf98aeb50ee47)) ### バグ修正 - AIの会話履歴を修正 ([#1289](https://github.com/box/box-java-sdk/issues/1289)) ([`29b6519`](https://github.com/box/box-java-sdk/commit/29b651987a5cbeead4b129cab20970f983cb6889)) **Source:** [https://ja.developer.box.com/changelog/2025-02-19-box-java-sdk-v4150-released](https://ja.developer.box.com/changelog/2025-02-19-box-java-sdk-v4150-released) --- ### Box Java SDK `v4.15.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.15.1のリリース バグ修正 content-lengthヘッダーの解析を修正 (#1292) (3bcf788) # Box Java SDK v4.15.1のリリース ### バグ修正 - content-lengthヘッダーの解析を修正 ([#1292](https://github.com/box/box-java-sdk/issues/1292)) ([`3bcf788`](https://github.com/box/box-java-sdk/commit/3bcf788dd9849305aa2cc85b8e5f88b35803ecb2)) **Source:** [https://ja.developer.box.com/changelog/2025-02-24-box-java-sdk-v4151-released](https://ja.developer.box.com/changelog/2025-02-24-box-java-sdk-v4151-released) --- ### Box Java SDK `v4.15.2`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.15.2のリリース バグ修正 APIリクエストとAPIレスポンスのログ記録を改善 (#1295) (6eb1f57) # Box Java SDK v4.15.2のリリース ### バグ修正 - APIリクエストとAPIレスポンスのログ記録を改善 ([#1295](https://github.com/box/box-java-sdk/issues/1295)) ([`6eb1f57`](https://github.com/box/box-java-sdk/commit/6eb1f57a584571b46daa14d045a36bca382493fa)) **Source:** [https://ja.developer.box.com/changelog/2025-02-26-box-java-sdk-v4152-released](https://ja.developer.box.com/changelog/2025-02-26-box-java-sdk-v4152-released) --- ### Box Java SDK `v4.15.3`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.15.3のリリース バグ修正 content-lengthヘッダーの値をトリミング (#1297) (fa11d14) # Box Java SDK v4.15.3のリリース ### バグ修正 - `content-length`ヘッダーの値をトリミング ([#1297](https://github.com/box/box-java-sdk/issues/1297)) ([`fa11d14`](https://github.com/box/box-java-sdk/commit/fa11d141edf511eabc5f2398e55dc411d0cdcd31)) **Source:** [https://ja.developer.box.com/changelog/2025-03-12-box-java-sdk-v4153-released](https://ja.developer.box.com/changelog/2025-03-12-box-java-sdk-v4153-released) --- ### Box Java SDK `v4.16.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.16.0のリリース 新機能と機能強化 zstd-jniのバージョンを昇格 (#1302) (9ebf8b5) # Box Java SDK v4.16.0のリリース ### 新機能と機能強化 - `zstd-jni`のバージョンを昇格 ([#1302](https://github.com/box/box-java-sdk/issues/1302)) ([`9ebf8b5`](https://github.com/box/box-java-sdk/commit/9ebf8b5d16c0ab8f4aa19849fdaa86935d38b294)) **Source:** [https://ja.developer.box.com/changelog/2025-04-15-box-java-sdk-v4160-released](https://ja.developer.box.com/changelog/2025-04-15-box-java-sdk-v4160-released) --- ### Box Java SDK `v4.16.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.16.1のリリース バグ修正 Locale.ROOTを使用して米国以外のロケールでの問題を防止 (#1306) (f083092) # Box Java SDK v4.16.1のリリース ### バグ修正 - `Locale.ROOT`を使用して米国以外のロケールでの問題を防止 ([#1306](https://github.com/box/box-java-sdk/issues/1306)) ([`f083092`](https://github.com/box/box-java-sdk/commit/f083092d5fdac37c93493945ab0c05ecdcdbc838)) **Source:** [https://ja.developer.box.com/changelog/2025-04-29-box-java-sdk-v4161-released](https://ja.developer.box.com/changelog/2025-04-29-box-java-sdk-v4161-released) --- ### Box Java SDK `v4.16.2`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.16.2のリリース バグ修正 BoxZipDownloadStatusのdownloadFileCountプロパティの解析を修正 (50c2249) # Box Java SDK v4.16.2のリリース ### バグ修正 - `BoxZipDownloadStatus`の`downloadFileCount`プロパティの解析を修正 ([`50c2249`](https://github.com/box/box-java-sdk/commit/50c2249ff5e0f0d1fdc99c9ff8786e9c134e58eb)) **Source:** [https://ja.developer.box.com/changelog/2025-06-02-box-java-sdk-v4162-released](https://ja.developer.box.com/changelog/2025-06-02-box-java-sdk-v4162-released) --- ### Box Java SDK `v4.16.3`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.16.3のリリース バグ修正 Webhookメッセージの署名の比較を修正 (#1315) (e2d407d) 有効なデータを返すよう、ファイルリクエストのコピーメソッドを修正 (#1320) (8392a43) # Box Java SDK v4.16.3のリリース ### バグ修正 - Webhookメッセージの署名の比較を修正 ([#1315](https://github.com/box/box-java-sdk/issues/1315)) ([`e2d407d`](https://github.com/box/box-java-sdk/commit/e2d407ded3370ffee6eb074044fd562629a904be)) - 有効なデータを返すよう、ファイルリクエストのコピーメソッドを修正 ([#1320](https://github.com/box/box-java-sdk/issues/1320)) ([`8392a43`](https://github.com/box/box-java-sdk/commit/8392a437c1a738bebb4e7d0f84d6bf833c76bdf3)) **Source:** [https://ja.developer.box.com/changelog/2025-07-23-box-java-sdk-v4163-released](https://ja.developer.box.com/changelog/2025-07-23-box-java-sdk-v4163-released) --- ### Box Java SDK `v4.16.4`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.16.4のリリース バグ修正 CVE-2025-8916を修正するためにBouncy Castleを昇格 (#1454) (a3605f4) # Box Java SDK v4.16.4のリリース ### バグ修正 - `CVE-2025-8916`を修正するためにBouncy Castleを昇格 ([#1454](https://github.com/box/box-java-sdk/issues/1454)) ([`a3605f4`](https://github.com/box/box-java-sdk/commit/a3605f47b4c5ee6b053f0940f9a06cba0a5c2584)) **Source:** [https://ja.developer.box.com/changelog/2025-10-03-box-java-sdk-v4164-released](https://ja.developer.box.com/changelog/2025-10-03-box-java-sdk-v4164-released) --- ### Box Java SDK `v4.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.2.0のリリース 新機能と機能強化 フィールドの指定をコラボレータに許可 (#1178) (1694d75) # Box Java SDK v4.2.0のリリース ### 新機能と機能強化 - フィールドの指定をコラボレータに許可 ([#1178](https://github.com/box/box-java-sdk/issues/1178)) ([`1694d75`](https://github.com/box/box-java-sdk/commit/1694d75fff0fbddb938426ef03ba24f360a344aa)) **Source:** [https://ja.developer.box.com/changelog/2023-06-21-box-java-sdk-v420-released](https://ja.developer.box.com/changelog/2023-06-21-box-java-sdk-v420-released) --- ### Box Java SDK `v4.2.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.2.1のリリース バグ修正 動的ソースからのデータである場合のアップロードを修正 (#1189) (77b39f2)、#1183 #1190をクローズ # Box Java SDK v4.2.1のリリース ### バグ修正 - 動的ソースからのデータである場合のアップロードを修正 ([#1189](https://github.com/box/box-java-sdk/issues/1189)) ([`77b39f2`](https://github.com/box/box-java-sdk/commit/77b39f2645d53bdab0ade23b637c211ea070fcf5))、[#1183](https://github.com/box/box-java-sdk/issues/1183) [#1190](https://github.com/box/box-java-sdk/issues/1190)をクローズ **Source:** [https://ja.developer.box.com/changelog/2023-08-03-box-java-sdk-v421-released](https://ja.developer.box.com/changelog/2023-08-03-box-java-sdk-v421-released) --- ### Box Java SDK `v4.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.3.0のリリース 新機能と機能強化 アクセスのみのコラボレーションをサポート (#1193) (664c01f) # Box Java SDK v4.3.0のリリース ### 新機能と機能強化 - アクセスのみのコラボレーションをサポート ([#1193](https://github.com/box/box-java-sdk/issues/1193)) ([`664c01f`](https://github.com/box/box-java-sdk/commit/664c01f80ca0647645c60920eb0ef1f9353a619f)) **Source:** [https://ja.developer.box.com/changelog/2023-08-11-box-java-sdk-v430-released](https://ja.developer.box.com/changelog/2023-08-11-box-java-sdk-v430-released) --- ### Box Java SDK `v4.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.4.0のリリース 新機能と機能強化 Signのテンプレートと新しいステータスをサポート (#1197) (e37c0dc) # Box Java SDK v4.4.0のリリース ### 新機能と機能強化 - Signのテンプレートと新しいステータスをサポート ([#1197](https://github.com/box/box-java-sdk/issues/1197)) ([`e37c0dc`](https://github.com/box/box-java-sdk/commit/e37c0dce86a422de5e8e6ed26fd93f1324f4b3e3)) **Source:** [https://ja.developer.box.com/changelog/2023-08-29-box-java-sdk-v440-released](https://ja.developer.box.com/changelog/2023-08-29-box-java-sdk-v440-released) --- ### Box Java SDK `v4.5.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.5.0のリリース 新機能と機能強化 iframeable_embed_urlフィールドをBoxSignRequestSignerクラスに追加 (#1202) (2e931d8) バグ修正 SharedLinkAPIConnection… # Box Java SDK v4.5.0のリリース ### 新機能と機能強化 - `iframeable_embed_url`フィールドを`BoxSignRequestSigner`クラスに追加 ([#1202](https://github.com/box/box-java-sdk/issues/1202)) ([`2e931d8`](https://github.com/box/box-java-sdk/commit/2e931d8c36694a665d1c6315d3bf2d226929b713)) ### バグ修正 - `SharedLinkAPIConnection`でリクエストインターセプタを使用 ([#1203](https://github.com/box/box-java-sdk/issues/1203)) ([`b2b6a1d`](https://github.com/box/box-java-sdk/commit/b2b6a1dba316ba50a1e011250c320fca156c6708))、[#1200](https://github.com/box/box-java-sdk/issues/1200)をクローズ - 列挙型の不足についてSignテンプレートを更新 ([#1201](https://github.com/box/box-java-sdk/issues/1201)) ([`fcb6657`](https://github.com/box/box-java-sdk/commit/fcb6657bb2375e32c3fb0f861e7ecaeb84503f2c)) **Source:** [https://ja.developer.box.com/changelog/2023-09-14-box-java-sdk-v450-released](https://ja.developer.box.com/changelog/2023-09-14-box-java-sdk-v450-released) --- ### Box Java SDK `v4.6.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.6.0のリリース 新機能と機能強化 削除済み項目の検索フィルタをサポート (#1207) (5e0e9ed) バグ修正 trustManagerとhostnameVerifier向けにprotectedアクセサを追加 (#1206) (0c79d… # Box Java SDK v4.6.0のリリース ### 新機能と機能強化 - 削除済み項目の検索フィルタをサポート ([#1207](https://github.com/box/box-java-sdk/issues/1207)) ([`5e0e9ed`](https://github.com/box/box-java-sdk/commit/5e0e9ed9aea2818da6fba0d562b56987c4948aaa)) ### バグ修正 - trustManagerとhostnameVerifier向けにprotectedアクセサを追加 ([#1206](https://github.com/box/box-java-sdk/issues/1206)) ([`0c79d17`](https://github.com/box/box-java-sdk/commit/0c79d1754bffeb3f0487e10d55d716ba1cbed1aa)) - クローズされていないレスポンス本文を修正 ([#1208](https://github.com/box/box-java-sdk/issues/1208)) ([`ab5e170`](https://github.com/box/box-java-sdk/commit/ab5e1702934607b258802b33f3663af3e9c56027)) **Source:** [https://ja.developer.box.com/changelog/2023-09-29-box-java-sdk-v460-released](https://ja.developer.box.com/changelog/2023-09-29-box-java-sdk-v460-released) --- ### Box Java SDK `v4.6.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.6.1のリリース 依存関係のアップグレード org.bitbucket.b_c:jose4j:0.9.3を昇格 (#1212) (f522a56) # Box Java SDK v4.6.1のリリース ### 依存関係のアップグレード - `org.bitbucket.b_c:jose4j:0.9.3`を昇格 ([#1212](https://github.com/box/box-java-sdk/issues/1212)) ([`f522a56`](https://github.com/box/box-java-sdk/commit/f522a5660f3522b11a0516774ba0cca69db3ec31)) **Source:** [https://ja.developer.box.com/changelog/2023-11-02-box-java-sdk-v461-released](https://ja.developer.box.com/changelog/2023-11-02-box-java-sdk-v461-released) --- ### Box Java SDK `v4.7.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.7.0のリリース 新機能と機能強化 署名者用にsigner_group_idを署名リクエストに追加 (#1220) (f560db8) BouncyCastleをv.1.70にアップグレード 注: BouncyCastle… # Box Java SDK v4.7.0のリリース ### 新機能と機能強化 - 署名者用に`signer_group_id`を署名リクエストに追加 ([#1220](https://github.com/box/box-java-sdk/issues/1220)) ([`f560db8`](https://github.com/box/box-java-sdk/commit/f560db8d5587406099066803789d16374ec7dbb9)) `BouncyCastle`をv.`1.70`にアップグレード **注**: `BouncyCastle`の新しいバージョンはFIPSとの互換性がありません。 - `IPrivateKeyDecryptor`を導入し、カスタム暗号化プロバイダの使用を許可 ([#1226](https://github.com/box/box-java-sdk/issues/1226)) ([`727e6d7`](https://github.com/box/box-java-sdk/commit/727e6d71ee375a48b4241a26a093becfe0965898)) ### バグ修正 - 分類の削除に関する記述を削除 ([#1222](https://github.com/box/box-java-sdk/issues/1222)) ([`9814038`](https://github.com/box/box-java-sdk/commit/981403896b4cd16a42c9feeecf30e75e1e8fa072)) **Source:** [https://ja.developer.box.com/changelog/2024-01-16-box-java-sdk-v470-released](https://ja.developer.box.com/changelog/2024-01-16-box-java-sdk-v470-released) --- ### Box Java SDK `v4.8.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.8.0のリリース 新機能と機能強化 BoxAPIRequest URLの変更を許可 (#1236) (eaea019) org.bouncycastle:bcprov-jdk18on:1.77とorg.bouncycastle:bcpkix-jdk… # Box Java SDK v4.8.0のリリース ### 新機能と機能強化 - `BoxAPIRequest` URLの変更を許可 ([#1236](https://github.com/box/box-java-sdk/issues/1236)) ([`eaea019`](https://github.com/box/box-java-sdk/commit/eaea0193ab7e72b73746ea85806e62468825bbce)) - `org.bouncycastle:bcprov-jdk18on:1.77`と`org.bouncycastle:bcpkix-jdk18on:1.77`を昇格 ([#1237](https://github.com/box/box-java-sdk/issues/1237)) ([`6c7fe7b`](https://github.com/box/box-java-sdk/commit/6c7fe7b74dbfb34e729fcecf8a29a1d3a1ba596f))、[#1235](https://github.com/box/box-java-sdk/issues/1235)をクローズ ### バグ修正 - 空のファイルのダウンロードについて修正 ([#1231](https://github.com/box/box-java-sdk/issues/1231)) ([`0e2230b`](https://github.com/box/box-java-sdk/commit/0e2230b0be36f6bfb35f1d6b9dd4ba58e4d125ec)) - `getSharedItem()`での`SharedLinkAPIConnection`の使用を停止 ([#1234](https://github.com/box/box-java-sdk/issues/1234)) ([`9f9af8e`](https://github.com/box/box-java-sdk/commit/9f9af8e22b4a38dc9a31a611ff1b962966bbd6b5)) **Source:** [https://ja.developer.box.com/changelog/2024-02-27-box-java-sdk-v480-released](https://ja.developer.box.com/changelog/2024-02-27-box-java-sdk-v480-released) --- ### Box Java SDK `v4.9.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.9.0のリリース 新機能と機能強化 AI APIをサポート (#1243) (4e64f27) ファイルバージョンのページネーションをサポート (#1240) (7e7af3f) バグ修正 空の共有リンクの作成をサポート (#1241) (0c… # Box Java SDK v4.9.0のリリース ### 新機能と機能強化 - AI APIをサポート ([#1243](https://github.com/box/box-java-sdk/issues/1243)) ([`4e64f27`](https://github.com/box/box-java-sdk/commit/4e64f27874fabf36f7fbf385ca4a60683f4a7670)) - ファイルバージョンのページネーションをサポート ([#1240](https://github.com/box/box-java-sdk/issues/1240)) ([`7e7af3f`](https://github.com/box/box-java-sdk/commit/7e7af3f6e40a44522a7649817547846e3f633fc8)) ### バグ修正 - 空の共有リンクの作成をサポート ([#1241](https://github.com/box/box-java-sdk/issues/1241)) ([`0c86487`](https://github.com/box/box-java-sdk/commit/0c86487848e5004a713873baffa2d9dcc63b1502)) - レプリゼンテーションコンテンツ取得に関する例外メッセージを更新 ([#1239](https://github.com/box/box-java-sdk/issues/1239)) ([`a608f9a`](https://github.com/box/box-java-sdk/commit/a608f9a4350b723e9f07eaf00af45243737a17c9)) **Source:** [https://ja.developer.box.com/changelog/2024-05-07-box-java-sdk-v490-released](https://ja.developer.box.com/changelog/2024-05-07-box-java-sdk-v490-released) --- ### Box Java SDK `v4.9.1`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v4.9.1のリリース バグ修正 org.bouncycastle:bcprov-jdk18on:1.78.1およびorg.bouncycastle:bcpkix-jdk18on:1.78.1を昇格 (#1246) (0557bed) # Box Java SDK v4.9.1のリリース ### バグ修正 - `org.bouncycastle:bcprov-jdk18on:1.78.1`および`org.bouncycastle:bcpkix-jdk18on:1.78.1`を昇格 ([#1246](https://github.com/box/box-java-sdk/issues/1246)) ([`0557bed`](https://github.com/box/box-java-sdk/commit/0557bed2b65d1be717b64a612d74fca73ba21096)) **Source:** [https://ja.developer.box.com/changelog/2024-06-06-box-java-sdk-v491-released](https://ja.developer.box.com/changelog/2024-06-06-box-java-sdk-v491-released) --- ### Box Java SDK `v5.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v5.0.0のリリース 2つのパッケージ (手動で管理されているcom.box.sdkパッケージと生成されたcom.box.sdkgenパッケージ) を含むBox Java SDK v… # Box Java SDK v5.0.0のリリース 2つのパッケージ (手動で管理されている`com.box.sdk`パッケージと生成された`com.box.sdkgen`パッケージ) を含むBox Java SDK `v5`の新しいメジャーバージョンを導入しました。共存するこれらのパッケージにより、最新のBox APIの機能をより簡単に使用できるようになるほか、生成されたスタンドアロンのパッケージへの段階的な移行がサポートされます。 Box Java SDKの`v4`と`v5`の間には重大な変更はありません。`v5`への移行の詳細については、[`v4`から`v5`への移行ガイド](https://github.com/box/box-java-sdk/blob/combined-sdk/migration-guides/from-v4-to-v5.md)を参照してください。 ### v5の新機能 このSDKバージョンでは、既存の`com.box.sdk`パッケージに加え、新しい`com.box.sdkgen`パッケージを導入します。これにより、以下を利用できます。 **APIの全面的なサポート** — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 **迅速なAPIの更新** — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 **ドキュメントへの埋め込み** — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 **便利なメソッドの強化** — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 ### 重要な注意事項 このバージョンにより、ご利用のコードベースを`com.box.sdkgen`パッケージに段階的に移行できます。パッケージ間の主な違いについては、[パッケージの移行ガイド](https://github.com/box/box-java-sdk/blob/combined-sdk/migration-guides/from-com-box-sdk-to-com-box-sdkgen.md)を参照してください。 最終的には、生成された`com.box.sdkgen`パッケージのみを含む`v10`に移行することをお勧めします。`v5`から`v10`に移行するには、こちらの[移行ガイド](https://github.com/box/box-java-sdk/blob/combined-sdk/migration-guides/from-v5-to-v10.md)に従います。 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning)を参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 **Source:** [https://ja.developer.box.com/changelog/2025-10-23-box-java-sdk-v500-released](https://ja.developer.box.com/changelog/2025-10-23-box-java-sdk-v500-released) --- ### Box Java SDK `v5.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v5.1.0のリリース 新機能と機能強化 boxsdkgen: Enterprise構成の取得APIをサポート (box/box-openapi#559) (#1529) (e6924bb) boxsdkgen: 接続に失敗した場合のOkHttp… # Box Java SDK v5.1.0のリリース ### 新機能と機能強化 - **boxsdkgen:** Enterprise構成の取得APIをサポート (box/box-openapi[#559](https://github.com/box/box-java-sdk/issues/559)) ([#1529](https://github.com/box/box-java-sdk/issues/1529)) ([`e6924bb`](https://github.com/box/box-java-sdk/commit/e6924bb758bd34177706a1b6e04eeba2b57f92d4)) - **boxsdkgen:** 接続に失敗した場合のOkHttpの自動再試行を無効化 (box/box-codegen[#874](https://github.com/box/box-java-sdk/issues/874)) ([#1540](https://github.com/box/box-java-sdk/issues/1540)) ([`6842fa4`](https://github.com/box/box-java-sdk/commit/6842fa448d205625ee33df850414b4cac94f1851))、[`box/box-codegen#873`](https://github.com/box/box-codegen/issues/873)をクローズ - **boxsdkgen:** アーカイブAPIをサポート (box/box-openapi[#563](https://github.com/box/box-java-sdk/issues/563)) ([#1552](https://github.com/box/box-java-sdk/issues/1552)) ([`ba7f012`](https://github.com/box/box-java-sdk/commit/ba7f012276bbc3526eee3ccd3a83a70a20185dcb)) ### バグ修正 - **boxsdkgen:** 文字列からの`OffsetDateTime`の解析を修正 (box/box-codegen[#887](https://github.com/box/box-java-sdk/issues/887)) ([#1581](https://github.com/box/box-java-sdk/issues/1581)) ([`4f9e1b3`](https://github.com/box/box-java-sdk/commit/4f9e1b385835b233a08a9f21768ad20f2c77b1fd)) **Source:** [https://ja.developer.box.com/changelog/2025-11-19-box-java-sdk-v510-released](https://ja.developer.box.com/changelog/2025-11-19-box-java-sdk-v510-released) --- ### Box Java SDK `v5.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v5.2.0のリリース 新機能と機能強化 boxsdkgen: AI抽出からconfidence_scoreとinclude_confidence_scoreを削除 (box/box-openapi#567) (#1614) (e5e954… # Box Java SDK v5.2.0のリリース ### 新機能と機能強化 - **boxsdkgen:** AI抽出から`confidence_score`と`include_confidence_score`を削除 (box/box-openapi[#567](https://github.com/box/box-java-sdk/issues/567)) ([#1614](https://github.com/box/box-java-sdk/issues/1614)) ([`e5e9545`](https://github.com/box/box-java-sdk/commit/e5e9545cc539c6c8f3ce4e99926840529437039b)) - **boxsdkgen:** 新しい署名リクエストのメタデータをサポート (box/box-openapi[#565](https://github.com/box/box-java-sdk/issues/565)) ([#1598](https://github.com/box/box-java-sdk/issues/1598)) ([`87d1182`](https://github.com/box/box-java-sdk/commit/87d1182ec362bfbf800edda79360a2446ba7eaab)) **Source:** [https://ja.developer.box.com/changelog/2025-12-10-box-java-sdk-v520-released](https://ja.developer.box.com/changelog/2025-12-10-box-java-sdk-v520-released) --- ### Box Java SDK `v5.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Java SDK v5.3.0のリリース 新機能と機能強化 boxsdkgen: メタデータ階層APIを追加 (box/box-openapi#569) (#1629) (7236f16) boxsdkgen: Box Signのテキスト入力の検証 (box/box… # Box Java SDK v5.3.0のリリース ### 新機能と機能強化 - **boxsdkgen:** メタデータ階層APIを追加 (box/box-openapi[#569](https://github.com/box/box-java-sdk/issues/569)) ([#1629](https://github.com/box/box-java-sdk/issues/1629)) ([`7236f16`](https://github.com/box/box-java-sdk/commit/7236f16bf39a3376eaad4ba6e143633cc5c2f4b2)) - **boxsdkgen:** Box Signのテキスト入力の検証 (box/box-openapi[#568](https://github.com/box/box-java-sdk/issues/568)) ([#1623](https://github.com/box/box-java-sdk/issues/1623)) ([`a5d74ee`](https://github.com/box/box-java-sdk/commit/a5d74eeb4b9b053ab00ebf33cf4f9b862ea4b586)) - **boxsdkgen:** `nullable`フィールドを省略可として処理 (box/box-codegen[#906](https://github.com/box/box-java-sdk/issues/906)) ([#1633](https://github.com/box/box-java-sdk/issues/1633)) ([`e14e97b`](https://github.com/box/box-java-sdk/commit/e14e97bb7a53c967851f7b92bc43400bdfc8da8b)) ### バグ修正 - **boxsdkgen:** メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi[#572](https://github.com/box/box-java-sdk/issues/572)) ([#1643](https://github.com/box/box-java-sdk/issues/1643)) ([`492684e`](https://github.com/box/box-java-sdk/commit/492684e45730b7f56bc1539c4086be45b30127ae)) - **boxsdkgen:** `Retry-After`ヘッダーがない場合の`RetryAfter`関数を修正 (box/box-codegen[#903](https://github.com/box/box-java-sdk/issues/903)) ([#1621](https://github.com/box/box-java-sdk/issues/1621)) ([`af4861f`](https://github.com/box/box-java-sdk/commit/af4861f832e03d68614d6bd3c9852ca48a49ae0f)) **Source:** [https://ja.developer.box.com/changelog/2025-12-19-box-java-sdk-v530-released](https://ja.developer.box.com/changelog/2025-12-19-box-java-sdk-v530-released) --- ### Box Node SDK `v1.33.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.33.0のリリース パスパラメータのサニタイズを追加 (#505) 46b780a ファイルのアップロードのためにすべてのストリームのサポートを追加 (#519) 93a27ec https://github.com/box/box-node… # Box Node SDK v1.33.0のリリース - パスパラメータのサニタイズを追加 ([#505](https://github.com/box/box-node-sdk/issues/505)) [`46b780a`](https://github.com/box/box-node-sdk/commit/46b780a577999262f09f167c577471275c066609) - ファイルのアップロードのためにすべてのストリームのサポートを追加 ([#519](https://github.com/box/box-node-sdk/issues/519)) [`93a27ec`](https://github.com/box/box-node-sdk/commit/93a27ec8a5cdf4cb23d16d322e1e884913472239) [https://github.com/box/box-node-sdk/compare/v1.32.0...v1.33.0](https://github.com/box/box-node-sdk/compare/v1.32.0...v1.33.0) **Source:** [https://ja.developer.box.com/changelog/2020-06-25-box-node-sdk-v1330-released](https://ja.developer.box.com/changelog/2020-06-25-box-node-sdk-v1330-released) --- ### Box Node SDK `v1.34.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.34.0のリリース Zip機能の追加 (#525) 2f89357 HTTP、HTTPS、SOCKS、PACプロトコルのプロキシサポートの追加 (#529) b08cc24 https://github.com/box/box-node-sdk… # Box Node SDK v1.34.0のリリース - Zip機能の追加 ([#525](https://github.com/box/box-node-sdk/issues/525)) [`2f89357`](https://github.com/box/box-node-sdk/commit/2f893577fd06dcac449ac9bfeb72cd76e1e839ae) - HTTP、HTTPS、SOCKS、PACプロトコルのプロキシサポートの追加 ([#529](https://github.com/box/box-node-sdk/issues/529)) [`b08cc24`](https://github.com/box/box-node-sdk/commit/b08cc24f240075fb24d9e5827f50ec9e26eeebc8) [https://github.com/box/box-node-sdk/compare/v1.33.0...v1.34.0](https://github.com/box/box-node-sdk/compare/v1.33.0...v1.34.0) **Source:** [https://ja.developer.box.com/changelog/2020-08-07-box-node-sdk-v1340-released](https://ja.developer.box.com/changelog/2020-08-07-box-node-sdk-v1340-released) --- ### Box Node SDK `v1.34.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.34.1のリリース 新しいファイルバージョンをアップロードする際の反復子のバグを修正 (#531) 69b1387 https://github.com/box/box-node-sdk/compare/v1.34.0...v1.34.1 # Box Node SDK v1.34.1のリリース - 新しいファイルバージョンをアップロードする際の反復子のバグを修正 ([#531](https://github.com/box/box-node-sdk/issues/531)) [`69b1387`](https://github.com/box/box-node-sdk/commit/69b138746c64ac8ee68b421853ca9ff4cc28531e) [https://github.com/box/box-node-sdk/compare/v1.34.0...v1.34.1](https://github.com/box/box-node-sdk/compare/v1.34.0...v1.34.1) **Source:** [https://ja.developer.box.com/changelog/2020-08-17-box-node-sdk-v1341-released](https://ja.developer.box.com/changelog/2020-08-17-box-node-sdk-v1341-released) --- ### Box Node SDK `v1.34.2`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.34.2のリリース ファイルをアップロードする際の反復子のバグを修正 (#534) b0baa18 https://github.com/box/box-node-sdk/compare/v1.34.1...v1.34.2 # Box Node SDK v1.34.2のリリース - ファイルをアップロードする際の反復子のバグを修正 ([#534](https://github.com/box/box-node-sdk/issues/534)) [`b0baa18`](https://github.com/box/box-node-sdk/commit/b0baa18ef6d9dab99fd1db5b898d2cce46e5521d) [https://github.com/box/box-node-sdk/compare/v1.34.1...v1.34.2](https://github.com/box/box-node-sdk/compare/v1.34.1...v1.34.2) **Source:** [https://ja.developer.box.com/changelog/2020-08-20-box-node-sdk-v1342-released](https://ja.developer.box.com/changelog/2020-08-20-box-node-sdk-v1342-released) --- ### Box Node SDK `v1.34.3`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.34.3のリリース バグ修正: ajv依存関係のアップグレード (#545) # Box Node SDK v1.34.3のリリース バグ修正: - `ajv`依存関係のアップグレード ([#545](https://github.com/box/box-node-sdk/issues/545)) **Source:** [https://ja.developer.box.com/changelog/2020-10-05-box-node-sdk-v1343-released](https://ja.developer.box.com/changelog/2020-10-05-box-node-sdk-v1343-released) --- ### Box Node SDK `v1.35.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.35.0のリリース 新機能と機能強化: 共有リンク項目を取得するための検索パラメータのサポートを追加 (#547) # Box Node SDK v1.35.0のリリース **新機能と機能強化:** - 共有リンク項目を取得するための検索パラメータのサポートを追加 ([#547](https://github.com/box/box-node-sdk/issues/547)) **Source:** [https://ja.developer.box.com/changelog/2020-11-02-box-node-sdk-v1350-released](https://ja.developer.box.com/changelog/2020-11-02-box-node-sdk-v1350-released) --- ### Box Node SDK `v1.36.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.36.0のリリース 新機能と機能強化: フォルダロック機能を追加 (#560) 名前によるグループのフィルタのサポートを追加 (#561) バグ修正: プロキシサポートの問題にパッチを適用するためのプロキシエージェントの更新 (#56… # Box Node SDK v1.36.0のリリース **新機能と機能強化:** - フォルダロック機能を追加 ([#560](https://github.com/box/box-node-sdk/pull/560)) - 名前によるグループのフィルタのサポートを追加 ([#561](https://github.com/box/box-node-sdk/pull/561)) **バグ修正:** - プロキシサポートの問題にパッチを適用するためのプロキシエージェントの更新 ([#563](https://github.com/box/box-node-sdk/pull/563)) - セキュリティの脆弱性にパッチを適用するための依存関係の更新 ([#566](https://github.com/box/box-node-sdk/pull/566)) **Source:** [https://ja.developer.box.com/changelog/2021-01-28-box-node-sdk-v1360-released](https://ja.developer.box.com/changelog/2021-01-28-box-node-sdk-v1360-released) --- ### Box Node SDK `v1.37.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.37.0のリリース 新機能と機能強化: メタデータテンプレートのcopyInstanceOnItemCopyフィールドのサポートを追加 (#572) バグ修正: Webhook署名の検証を修正 (#56… # Box Node SDK v1.37.0のリリース **新機能と機能強化:** - メタデータテンプレートの`copyInstanceOnItemCopy`フィールドのサポートを追加 ([#572](https://github.com/box/box-node-sdk/pull/572)) **バグ修正:** - Webhook署名の検証を修正 ([#568](https://github.com/box/box-node-sdk/pull/568)) - セキュリティの脆弱性にパッチを適用するための依存関係の更新 ([#578](https://github.com/box/box-node-sdk/pull/578)) **Source:** [https://ja.developer.box.com/changelog/2021-04-16-box-node-sdk-v1370-released](https://ja.developer.box.com/changelog/2021-04-16-box-node-sdk-v1370-released) --- ### Box Node SDK `v1.37.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.37.1のリリース バグ修正: 不適切な用語: whitelistからallowlistへの変更 (#625) # Box Node SDK v1.37.1のリリース **バグ修正:** - 不適切な用語: `whitelist`から`allowlist`への変更 ([#625](https://github.com/box/box-node-sdk/pull/625)) **Source:** [https://ja.developer.box.com/changelog/2021-05-19-box-node-sdk-v1371-released](https://ja.developer.box.com/changelog/2021-05-19-box-node-sdk-v1371-released) --- ### Box Node SDK `v1.37.2`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.37.2のリリース バグ修正: 一部のTypeScript@typesを直接的な依存関係として移動することで、後方互換性の問題を修正 (#630) # Box Node SDK v1.37.2のリリース **バグ修正:** - 一部のTypeScript[`@types`](https://github.com/types)を直接的な依存関係として移動することで、後方互換性の問題を修正 ([#630](https://github.com/box/box-node-sdk/pull/630)) **Source:** [https://ja.developer.box.com/changelog/2021-05-20-box-node-sdk-v1372-released](https://ja.developer.box.com/changelog/2021-05-20-box-node-sdk-v1372-released) --- ### Box Node SDK `v1.38.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.38.0のリリース 新機能と機能強化: 管理者による招待のために機密性の高い言語イベントタイプを追加 (#648) BetterDocsを使用してJSDocsをTypeScriptに適合 (#646) ProxyAgent… # Box Node SDK v1.38.0のリリース **新機能と機能強化:** - 管理者による招待のために機密性の高い言語イベントタイプを追加 ([#648](https://github.com/box/box-node-sdk/pull/648)) - `BetterDocs`を使用して`JSDocs`を`TypeScript`に適合 ([#646](https://github.com/box/box-node-sdk/pull/646)) - `ProxyAgent`のインポートを動的に変更 ([#641](https://github.com/box/box-node-sdk/pull/641)) - リテンションの対象となっているファイルおよびファイルバージョンを取得するための新しいAPI ([#585](https://github.com/box/box-node-sdk/pull/585)) **バグ修正:** - BuffersおよびReadableストリームを除くConfigを強く固定 ([#651](https://github.com/box/box-node-sdk/pull/651)) - `src/managers/search.ts`のドキュメントの誤字を修正 ([#649](https://github.com/box/box-node-sdk/pull/649)) - ドキュメントのリンク切れを更新 ([#647](https://github.com/box/box-node-sdk/pull/647)) - `exchangeToken`関数の型注釈を修正 ([#645](https://github.com/box/box-node-sdk/pull/645)) - ファイルの`getThumbnail` APIのサポートを終了して`getRepresentationContent`を推奨 ([#627](https://github.com/box/box-node-sdk/pull/627)) **Source:** [https://ja.developer.box.com/changelog/2021-08-06-box-node-sdk-v1380-released](https://ja.developer.box.com/changelog/2021-08-06-box-node-sdk-v1380-released) --- ### Box Node SDK `v1.39.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v1.39.0のリリース 新機能と機能強化: Box Sign APIのサポートを追加 (#658) TS Importsを強化 (#656) # Box Node SDK v1.39.0のリリース **新機能と機能強化:** - Box Sign APIのサポートを追加 ([#658](https://github.com/box/box-node-sdk/pull/658)) - TS Importsを強化 ([#656](https://github.com/box/box-node-sdk/pull/656)) **Source:** [https://ja.developer.box.com/changelog/2021-08-30-box-node-sdk-v1390-released](https://ja.developer.box.com/changelog/2021-08-30-box-node-sdk-v1390-released) --- ### Box Node SDK `v10.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v10.0.0のリリース 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、**Box Node SDK v10**を導入しました。現在は個別のsdk-genブランチとして利用可能なv1… # Box Node SDK v10.0.0のリリース 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、**`Box Node SDK v10`**を導入しました。現在は個別の[`sdk-gen`](https://github.com/box/box-node-sdk/tree/sdk-gen)ブランチとして利用可能な`v10`が、最終的にメインブランチになります。 ### 重大な変更 - このSDKのバージョンは、自動生成されており、すべてのメソッドに新しいインターフェースを導入しています。詳細なドキュメントについては、[こちら](https://github.com/box/box-node-sdk/tree/sdk-gen/docs)を参照してください。 ### v10の新機能 **APIの全面的なサポート** — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 **迅速なAPIの更新** — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 **ドキュメントへの埋め込み** — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 **便利なメソッドの強化** — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 ### 重要な注意事項 ## このバージョンには、BoxのコアSDKと並行して以前に開発された、Boxの次世代SDKのアーティファクトが含まれています。Boxでは、移行を促進し、最新の機能を利用できるようにするため、まもなく、両方のアーティファクトを兼ね備えたメジャーバージョンを追加でリリースする予定です。v10への移行には重大な変更が含まれるため、詳細については移行ガイドを確認してください。詳細については、SDKのバージョン戦略に関するドキュメントを参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 ### 新機能 (Typescript SDK Gen v1.19.1との比較) #### ⚠ 重大な変更 - 共用体の名前を変更 (box/box-codegen[#787](https://github.com/box/box-node-sdk/issues/787)) ([#938](https://github.com/box/box-node-sdk/issues/938)) ([`06a8e9b`](https://github.com/box/box-node-sdk/commit/06a8e9bb6de67547dd900b74778c8203aa388a91)) - スキーマから未使用のモデルを削除 (box/box-openapi[#547](https://github.com/box/box-node-sdk/issues/547)) ([#933](https://github.com/box/box-node-sdk/issues/933)) ([`35690f4`](https://github.com/box/box-node-sdk/commit/35690f4e4ef7383cae890d4df810ed77168384e1))、box/box-codegen[#773](https://github.com/box/box-codegen/issues/773) box/box-openapi[#542](https://github.com/box/box-openapi/issues/542) box/box-openapi[#544](https://github.com/box/box-openapi/issues/544) box/box-codegen[#781](https://github.com/box/box-codegen/issues/781) box/box-openapi[#545](https://github.com/box/box-openapi/issues/545)をクローズ - 生成されたサフィックスをファイルから削除 (box/box-codegen[#779](https://github.com/box/box-node-sdk/issues/779)) ([#948](https://github.com/box/box-node-sdk/issues/948)) ([`4bfb073`](https://github.com/box/box-node-sdk/commit/4bfb07350be95a5717ee9be032af4995d1d97395)) - インポートとエクスポートを調整 (box/box-codegen[#801](https://github.com/box/box-node-sdk/issues/801)) ([#965](https://github.com/box/box-node-sdk/issues/965)) ([`d8e6a0a`](https://github.com/box/box-node-sdk/commit/d8e6a0a466d367dd6c871bc20534f1b950732997)) #### バグ修正 - Unionのシリアル化を修正 (box/box-codegen[#800](https://github.com/box/box-node-sdk/issues/800)) ([#954](https://github.com/box/box-node-sdk/issues/954)) ([`7f75f6d`](https://github.com/box/box-node-sdk/commit/7f75f6d6d87f2a9b6d500306fcc0dddf023b7118)) #### 新機能と機能強化 - 不足していたWebhookイベントを追加 (box/box-openapi[#554](https://github.com/box/box-node-sdk/issues/554)) ([#982](https://github.com/box/box-node-sdk/issues/982)) ([`2f5e245`](https://github.com/box/box-node-sdk/commit/2f5e24574dbaff7d23140a2a5c22e54b1f047bf6)) - 外部ユーザー削除APIをサポート (box/box-codegen[#796](https://github.com/box/box-node-sdk/issues/796)) ([#946](https://github.com/box/box-node-sdk/issues/946)) ([`44b37a4`](https://github.com/box/box-node-sdk/commit/44b37a49ddbf587575f005342c9457cc46b5a573)) 詳細については、`box-typescript-sdk-gen` `v1`から`box-node-sdk` `v10`への[移行ガイド](https://github.com/box/box-node-sdk/blob/sdk-gen/docs/migration-guides/from-box-typescript-sdk-gen-v1-to-box-node-sdk-v10.md)をご確認ください。 **Source:** [https://ja.developer.box.com/changelog/2025-09-17-box-node-sdk-v1000-released](https://ja.developer.box.com/changelog/2025-09-17-box-node-sdk-v1000-released) --- ### Box Node SDK `v10.0.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v10.0.1のリリース バグ修正 AiExtractResponse.answerおよびEvent.additionalDetailsで柔軟なキーと値のデータを許可 (box/box-openapi#556) (#1051) (70a227… # Box Node SDK v10.0.1のリリース ### バグ修正 - `AiExtractResponse.answer`および`Event.additionalDetails`で柔軟なキーと値のデータを許可 (box/box-openapi[#556](https://github.com/box/box-node-sdk/issues/556)) ([#1051](https://github.com/box/box-node-sdk/issues/1051)) ([`70a2275`](https://github.com/box/box-node-sdk/commit/70a2275ada40f079178166d60c7f5d0a48bd5e40)) - コラボレーション更新の`role`パラメータを任意化 (box/box-openapi[#557](https://github.com/box/box-node-sdk/issues/557)) ([#1068](https://github.com/box/box-node-sdk/issues/1068)) ([`3992171`](https://github.com/box/box-node-sdk/commit/3992171af8587d9f43888ecd2fcbcd70a9f1b2b6)) - 厳密な`content-type`のチェックを削除してJSONの逆シリアル化のガードを緩和 (box/box-codegen[#844](https://github.com/box/box-node-sdk/issues/844)) ([#1033](https://github.com/box/box-node-sdk/issues/1033)) ([`1eb2c32`](https://github.com/box/box-node-sdk/commit/1eb2c32a923be1762bf9dfbb2dfdb9e5b3e78af5)) **Source:** [https://ja.developer.box.com/changelog/2025-10-06-box-node-sdk-v1001-released](https://ja.developer.box.com/changelog/2025-10-06-box-node-sdk-v1001-released) --- ### Box Node SDK `v10.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v10.1.0のリリース バグ修正 TSでのエラー処理を修正 (box/box-codegen#882) (#1180) (2b68145) Node SDKでエラー伝搬およびレスポンスの取得が空であった場合の処理を修正 (box/box-codegen… # Box Node SDK v10.1.0のリリース ### バグ修正 - TSでのエラー処理を修正 (box/box-codegen[#882](https://github.com/box/box-node-sdk/issues/882)) ([#1180](https://github.com/box/box-node-sdk/issues/1180)) ([`2b68145`](https://github.com/box/box-node-sdk/commit/2b68145d9d8e46e26d08b8bc774ba757ef3b444f)) - Node SDKでエラー伝搬およびレスポンスの取得が空であった場合の処理を修正 (`box/box-codegen`[#883](https://github.com/box/box-node-sdk/issues/883)) ([#1192](https://github.com/box/box-node-sdk/issues/1192)) ([`5664231`](https://github.com/box/box-node-sdk/commit/56642319c5b77ab0113ed4e1af5df30100449fcd)) - Enterprise構成を取得エンドポイントから列挙型を削除 (box/box-openapi[#560](https://github.com/box/box-node-sdk/issues/560)) ([#1155](https://github.com/box/box-node-sdk/issues/1155)) ([`3ba01aa`](https://github.com/box/box-node-sdk/commit/3ba01aaac7861ce3f0578af65d838f61b78b7dcb))、[`box/box-openapi#558`](https://github.com/box/box-openapi/issues/558) [`box/box-openapi#558`](https://github.com/box/box-openapi/issues/558) [`box/box-openapi#559`](https://github.com/box/box-openapi/issues/559) [`box/box-codegen#869`](https://github.com/box/box-codegen/issues/869) [`box/box-codegen#871`](https://github.com/box/box-codegen/issues/871) [`box/box-codegen#872`](https://github.com/box/box-codegen/issues/872)をクローズ ### 新機能と機能強化 - Enterprise構成を取得エンドポイントを追加 (box/box-openapi[#559](https://github.com/box/box-node-sdk/issues/559)) ([#1143](https://github.com/box/box-node-sdk/issues/1143)) ([`5eeeb4f`](https://github.com/box/box-node-sdk/commit/5eeeb4fe7d0fff376cb31b820597e63d71dd0b69)) - アーカイブを削除エンドポイントをサポート (box/box-openapi[#563](https://github.com/box/box-node-sdk/issues/563)) ([#1173](https://github.com/box/box-node-sdk/issues/1173)) ([`7dc774d`](https://github.com/box/box-node-sdk/commit/7dc774d8764a3a0b3f60525e416ed5345d4a71b1)) **Source:** [https://ja.developer.box.com/changelog/2025-11-10-box-node-sdk-v1010-released](https://ja.developer.box.com/changelog/2025-11-10-box-node-sdk-v1010-released) --- ### Box Node SDK `v10.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v10.2.0のリリース バグ修正 unionタイプの重複を削除 (box/box-codegen#898) (#1240) (0b03b60) 新機能と機能強化 AI抽出からconfidence_scoreとinclude_confidence… # Box Node SDK v10.2.0のリリース ### バグ修正 - unionタイプの重複を削除 (box/box-codegen[#898](https://github.com/box/box-node-sdk/issues/898)) ([#1240](https://github.com/box/box-node-sdk/issues/1240)) ([`0b03b60`](https://github.com/box/box-node-sdk/commit/0b03b607789ccf6a94253101760aa530a9737e78)) ### 新機能と機能強化 - AI抽出から`confidence_score`と`include_confidence_score`を削除 (box/box-openapi[#567](https://github.com/box/box-node-sdk/issues/567)) ([#1243](https://github.com/box/box-node-sdk/issues/1243)) ([`55d6cd0`](https://github.com/box/box-node-sdk/commit/55d6cd00790a81fa5c54379c045b4e652173dcb8)) - AIによる抽出 (構造化) で`includeConfidenceScore`および`includeConfidenceScore`フィールドをサポート (box/box-openapi[#566](https://github.com/box/box-node-sdk/issues/566)) ([#1228](https://github.com/box/box-node-sdk/issues/1228)) ([`4bf9f46`](https://github.com/box/box-node-sdk/commit/4bf9f46baaeaa213878c9102c0628e3c351c7b3c)) - 新しい署名リクエストのメタデータをサポート (box/box-openapi[#565](https://github.com/box/box-node-sdk/issues/565)) ([#1226](https://github.com/box/box-node-sdk/issues/1226)) ([`8dfc1cc`](https://github.com/box/box-node-sdk/commit/8dfc1ccc9c600c24d4d5e7879eaebfd6bf1f9a0e)) - 例外のエラーメッセージを更新 (box/box-codegen[#896](https://github.com/box/box-node-sdk/issues/896)) ([#1233](https://github.com/box/box-node-sdk/issues/1233)) ([`b298afa`](https://github.com/box/box-node-sdk/commit/b298afa69fce884f7def10a8022aa67dc58ac949)) **Source:** [https://ja.developer.box.com/changelog/2025-12-10-box-node-sdk-v1020-released](https://ja.developer.box.com/changelog/2025-12-10-box-node-sdk-v1020-released) --- ### Box Node SDK `v10.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v10.3.0のリリース バグ修正 メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi#572) (#1275) (0935d71) Retry-Afterヘッダーがない場合のRetryAfter… # Box Node SDK v10.3.0のリリース ### バグ修正 - メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi[#572](https://github.com/box/box-node-sdk/issues/572)) ([#1275](https://github.com/box/box-node-sdk/issues/1275)) ([`0935d71`](https://github.com/box/box-node-sdk/commit/0935d7116e0c5f7e0e4bc38f6a9f46344acaccba)) - `Retry-After`ヘッダーがない場合の`RetryAfter`関数を修正 (box/box-codegen[#903](https://github.com/box/box-node-sdk/issues/903)) ([#1251](https://github.com/box/box-node-sdk/issues/1251)) ([`a334d81`](https://github.com/box/box-node-sdk/commit/a334d81190d9f90c7c1cec5cee8187f1cd18dac9)) ### 新機能と機能強化 - メタデータ階層APIを追加 (box/box-openapi[#569](https://github.com/box/box-node-sdk/issues/569)) ([#1263](https://github.com/box/box-node-sdk/issues/1263)) ([`ee11f67`](https://github.com/box/box-node-sdk/commit/ee11f678724912ebf862edc47c4ab1a2ea348f2b)) - Box Signのテキスト入力の検証 (box/box-openapi[#568](https://github.com/box/box-node-sdk/issues/568)) ([#1260](https://github.com/box/box-node-sdk/issues/1260)) ([`8686901`](https://github.com/box/box-node-sdk/commit/868690186705d657b2af07d8fb45a4e4b99b7877)) - `nullable`フィールドを省略可として処理 (box/box-codegen[#906](https://github.com/box/box-node-sdk/issues/906)) ([#1265](https://github.com/box/box-node-sdk/issues/1265)) ([`91d0c74`](https://github.com/box/box-node-sdk/commit/91d0c74f488948772e29116e668b69d2bdbbc1c8)) **Source:** [https://ja.developer.box.com/changelog/2025-12-19-box-node-sdk-v1030-released](https://ja.developer.box.com/changelog/2025-12-19-box-node-sdk-v1030-released) --- ### Box Node SDK `v2.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.0.0のリリース 重要な変更: Node 6、7のサポートを終了 (#670) 新機能と機能強化: is_external_collab_restrictedユーザープロパティのサポートを追加 (#668) プロキシエージェントを4.0.0から… # Box Node SDK v2.0.0のリリース **重要な変更:** - Node 6、7のサポートを終了 ([#670](https://github.com/box/box-node-sdk/pull/670)) **新機能と機能強化:** - `is_external_collab_restricted`ユーザープロパティのサポートを追加 ([#668](https://github.com/box/box-node-sdk/pull/668)) - プロキシエージェントを4.0.0から5.0.0に昇格 ([#664](https://github.com/box/box-node-sdk/pull/664)) **Source:** [https://ja.developer.box.com/changelog/2021-09-29-box-node-sdk-v200-released](https://ja.developer.box.com/changelog/2021-09-29-box-node-sdk-v200-released) --- ### Box Node SDK `v2.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.1.0のリリース 新機能と機能強化 クライアント資格情報許可による認証方法 (#709) (fbf4e80) メタデータクエリ実行時のindex_nameのサポート終了 (#686) (e01cc65) テスト: Jest… # Box Node SDK v2.1.0のリリース ### 新機能と機能強化 - クライアント資格情報許可による認証方法 ([#709](https://github.com/box/box-node-sdk/issues/709)) ([`fbf4e80`](https://github.com/box/box-node-sdk/commit/fbf4e80648821e38479b24bf489e7d222ae6c18f)) - メタデータクエリ実行時の`index_name`のサポート終了 ([#686](https://github.com/box/box-node-sdk/issues/686)) ([`e01cc65`](https://github.com/box/box-node-sdk/commit/e01cc650e4e793955be543e93928ad82a3254492)) - **テスト:** Jestによるテストのサポートを追加 ([#676](https://github.com/box/box-node-sdk/issues/676)) ([`1a11759`](https://github.com/box/box-node-sdk/commit/1a11759db999510c69d6a27f7becd565620bb000)) ### バグ修正 - クライアント資格情報許可による認証方法でトークンのダウンスコープをサポート ([#710](https://github.com/box/box-node-sdk/issues/710)) ([`730368f`](https://github.com/box/box-node-sdk/commit/730368f410ff56e9a8c90feea2192b29c08df198)) - 整数ではなく浮動小数点にJWT有効期限フィールドを修正 ([#715](https://github.com/box/box-node-sdk/issues/715)) ([`7e950f1`](https://github.com/box/box-node-sdk/commit/7e950f1265a52ce251c42a186c8196089a9ed858))、[#713](https://github.com/box/box-node-sdk/issues/713)をクローズ **Source:** [https://ja.developer.box.com/changelog/2022-03-28-box-node-sdk-v210-released](https://ja.developer.box.com/changelog/2022-03-28-box-node-sdk-v210-released) --- ### Box Node SDK `v2.10.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.10.0のリリース 新機能と機能強化 情報バリアAPIのサポートを追加 (#822) (4814af3) SignRequestタイプとSignRequestCreateRequestタイプにnameフィールドとsignature_color… # Box Node SDK v2.10.0のリリース ### 新機能と機能強化 - 情報バリアAPIのサポートを追加 ([#822](https://github.com/box/box-node-sdk/issues/822)) ([`4814af3`](https://github.com/box/box-node-sdk/commit/4814af35c1741fbfe3fa03f8f0412ade8b38dfcc)) - `SignRequest`タイプと`SignRequestCreateRequest`タイプに`name`フィールドと`signature_color`フィールド、`SignRequestCreateSigner`タイプに`login_required`フィールドを追加 ([#822](https://github.com/box/box-node-sdk/issues/822)) ([`4814af3`](https://github.com/box/box-node-sdk/commit/4814af35c1741fbfe3fa03f8f0412ade8b38dfcc)) **Source:** [https://ja.developer.box.com/changelog/2023-05-11-box-node-sdk-v2100-released](https://ja.developer.box.com/changelog/2023-05-11-box-node-sdk-v2100-released) --- ### Box Node SDK `v2.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.2.0のリリース 新機能と機能強化 編集可能な共有リンク (#722) (f0c0135) # Box Node SDK v2.2.0のリリース ### 新機能と機能強化 - 編集可能な共有リンク ([#722](https://github.com/box/box-node-sdk/issues/722)) ([`f0c0135`](https://github.com/box/box-node-sdk/commit/f0c0135511fde46144e6c496432104321af443f6)) **Source:** [https://ja.developer.box.com/changelog/2022-04-20-box-node-sdk-v220-released](https://ja.developer.box.com/changelog/2022-04-20-box-node-sdk-v220-released) --- ### Box Node SDK `v2.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.3.0のリリース 新機能と機能強化 descriptionパラメータをuploadFileメソッドに追加 (#730) (2596584) バグ修正 不足していたjs-docsを共有リンクに追加 (#731) (3554d41) # Box Node SDK v2.3.0のリリース ### 新機能と機能強化 - `description`パラメータを`uploadFile`メソッドに追加 ([#730](https://github.com/box/box-node-sdk/issues/730)) ([`2596584`](https://github.com/box/box-node-sdk/commit/2596584dffb44c1995c8b6b3faa67564f4d32499)) ### バグ修正 - 不足していた`js-docs`を共有リンクに追加 ([#731](https://github.com/box/box-node-sdk/issues/731)) ([`3554d41`](https://github.com/box/box-node-sdk/commit/3554d41d9050e7a81224c35e3e2e257604a0b41b)) **Source:** [https://ja.developer.box.com/changelog/2022-04-28-box-node-sdk-v230-released](https://ja.developer.box.com/changelog/2022-04-28-box-node-sdk-v230-released) --- ### Box Node SDK `v2.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.4.0のリリース 新機能と機能強化 ファイルリクエストのサポートを追加 (#742) (30b2e76) admin_logs_streamingストリームタイプのサポートを追加 (#740) (406950a… # Box Node SDK v2.4.0のリリース ### 新機能と機能強化 - ファイルリクエストのサポートを追加 ([#742](https://github.com/box/box-node-sdk/issues/742)) ([`30b2e76`](https://github.com/box/box-node-sdk/commit/30b2e767c6c3af68e1463cc801914f9889dc593c)) - `admin_logs_streaming`ストリームタイプのサポートを追加 ([#740](https://github.com/box/box-node-sdk/issues/740)) ([`406950a`](https://github.com/box/box-node-sdk/commit/406950a03af54a022427e0532e889a61e0d25152)) ### バグ修正 - ストリームのクライアントエラーを適切に処理 ([#736](https://github.com/box/box-node-sdk/issues/736)) ([`12378d6`](https://github.com/box/box-node-sdk/commit/12378d6755c2e3cddcb79439cdcbbe8e1e61df13)) **Source:** [https://ja.developer.box.com/changelog/2022-07-13-box-node-sdk-v240-released](https://ja.developer.box.com/changelog/2022-07-13-box-node-sdk-v240-released) --- ### Box Node SDK `v2.5.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.5.0のリリース 新機能と機能強化 ユーザーアバターの更新と削除のサポートを追加 (#744) (aaf6175) バグ修正 OAuthを使用してトークンを生成する際のエラーを修正 (#750) (f826291)、#28… # Box Node SDK v2.5.0のリリース ### 新機能と機能強化 - ユーザーアバターの更新と削除のサポートを追加 ([#744](https://github.com/box/box-node-sdk/issues/744)) ([`aaf6175`](https://github.com/box/box-node-sdk/commit/aaf617528de5c61e19cfb25e28fe77c01532b9fa)) ### バグ修正 - OAuthを使用してトークンを生成する際のエラーを修正 ([#750](https://github.com/box/box-node-sdk/issues/750)) ([`f826291`](https://github.com/box/box-node-sdk/commit/f82629108a1af6c4d160de1976fd01fdf0d8dde3))、[#286](https://github.com/box/box-node-sdk/issues/286)をクローズ - テストファイルのlintエラーを修正 ([#747](https://github.com/box/box-node-sdk/issues/747)) ([`3b1e10d`](https://github.com/box/box-node-sdk/commit/3b1e10d206aa88a8bf99989bb7ff85776a9864a4)) **Source:** [https://ja.developer.box.com/changelog/2022-08-09-box-node-sdk-v250-released](https://ja.developer.box.com/changelog/2022-08-09-box-node-sdk-v250-released) --- ### Box Node SDK `v2.6.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.6.0のリリース 新機能と機能強化 署名リクエストにcontent_typeおよびredirect_urlフィールドを追加 (#758) (8abb9b6) 署名リクエストのWebhookを追加 (#760) (e92d1ab… # Box Node SDK v2.6.0のリリース ### 新機能と機能強化 - 署名リクエストに`content_type`および`redirect_url`フィールドを追加 ([#758](https://github.com/box/box-node-sdk/issues/758)) ([`8abb9b6`](https://github.com/box/box-node-sdk/commit/8abb9b602b13cd72c6c8de549d19756ae147b403)) - 署名リクエストのWebhookを追加 ([#760](https://github.com/box/box-node-sdk/issues/760)) ([`e92d1ab`](https://github.com/box/box-node-sdk/commit/e92d1abee5faf58166f4892d7b2e6bc3c6480ac6)) - アクセスのみのコラボレーションのサポートを追加 ([#759](https://github.com/box/box-node-sdk/issues/759)) ([`dd8261f`](https://github.com/box/box-node-sdk/commit/dd8261f970c207854058c3ed86ccabf9bec05ea8)) **Source:** [https://ja.developer.box.com/changelog/2022-09-23-box-node-sdk-v260-released](https://ja.developer.box.com/changelog/2022-09-23-box-node-sdk-v260-released) --- ### Box Node SDK `v2.7.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.7.0のリリース 新機能と機能強化 変更可能リテンションポリシーのサポートを追加し、リテンションポリシー割り当ての削除を有効化 (#769) (5e8c776) # Box Node SDK v2.7.0のリリース ### 新機能と機能強化 - 変更可能リテンションポリシーのサポートを追加し、リテンションポリシー割り当ての削除を有効化 ([#769](https://github.com/box/box-node-sdk/issues/769)) ([`5e8c776`](https://github.com/box/box-node-sdk/commit/5e8c776fc94e9dcf313cc15c96e42fbffaf36b74)) **Source:** [https://ja.developer.box.com/changelog/2022-10-27-box-node-sdk-v270-released](https://ja.developer.box.com/changelog/2022-10-27-box-node-sdk-v270-released) --- ### Box Node SDK `v2.7.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.7.1のリリース バグ修正 欠落していたRetentionTypeをエクスポート (#774) (7e6b244) # Box Node SDK v2.7.1のリリース ### バグ修正 - 欠落していた`RetentionType`をエクスポート ([#774](https://github.com/box/box-node-sdk/issues/774)) ([`7e6b244`](https://github.com/box/box-node-sdk/commit/7e6b244ba63d363ecc921be570140c9e1ed1d032)) **Source:** [https://ja.developer.box.com/changelog/2022-10-28-box-node-sdk-v271-released](https://ja.developer.box.com/changelog/2022-10-28-box-node-sdk-v271-released) --- ### Box Node SDK `v2.7.2`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.7.2のリリース バグ修正 ファイルとフォルダの更新にfieldsクエリパラメータを追加 (#776) (a327deb) # Box Node SDK v2.7.2のリリース ### バグ修正 - ファイルとフォルダの更新に`fields`クエリパラメータを追加 ([#776](https://github.com/box/box-node-sdk/issues/776)) ([`a327deb`](https://github.com/box/box-node-sdk/commit/a327debc83d98a4190a5a16cf848417ea5714db9)) **Source:** [https://ja.developer.box.com/changelog/2022-11-10-box-node-sdk-v272-released](https://ja.developer.box.com/changelog/2022-11-10-box-node-sdk-v272-released) --- ### Box Node SDK `v2.8.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.8.0のリリース 新機能と機能強化 セッション終了 (#782) (7fb56c6) # Box Node SDK v2.8.0のリリース ### 新機能と機能強化 - セッション終了 ([#782](https://github.com/box/box-node-sdk/issues/782)) ([`7fb56c6`](https://github.com/box/box-node-sdk/commit/7fb56c625f8eb03e6a5354b67a0debfd9e4ad7c8)) **Source:** [https://ja.developer.box.com/changelog/2022-12-21-box-node-sdk-v280-released](https://ja.developer.box.com/changelog/2022-12-21-box-node-sdk-v280-released) --- ### Box Node SDK `v2.8.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.8.1のリリース バグ修正 getReadStreamの読み取りの遅延を修正 (#790) (6bfc1ee) # Box Node SDK v2.8.1のリリース ### バグ修正 - `getReadStream`の読み取りの遅延を修正 ([#790](https://github.com/box/box-node-sdk/issues/790)) ([`6bfc1ee`](https://github.com/box/box-node-sdk/commit/6bfc1eebeb9a31606ff96127eeb1ad03d2f13d9c)) **Source:** [https://ja.developer.box.com/changelog/2023-01-05-box-node-sdk-v281-released](https://ja.developer.box.com/changelog/2023-01-05-box-node-sdk-v281-released) --- ### Box Node SDK `v2.9.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v2.9.0のリリース 新機能と機能強化 retention-policyとretention-policy-assignmentの新しいフィールド (#803) (f14ba84) バグ修正 tos… # Box Node SDK v2.9.0のリリース ### 新機能と機能強化 - `retention-policy`と`retention-policy-assignment`の新しいフィールド ([#803](https://github.com/box/box-node-sdk/issues/803)) ([`f14ba84`](https://github.com/box/box-node-sdk/commit/f14ba84013985513854ad396581d085d1d4f0255)) ### バグ修正 - `tos`ステータスが存在しない場合に空のオブジェクトを返す ([#797](https://github.com/box/box-node-sdk/issues/797)) ([`12fd9b0`](https://github.com/box/box-node-sdk/commit/12fd9b053707471722f53cd1760c8cf59451fe8d)) **Source:** [https://ja.developer.box.com/changelog/2023-04-19-box-node-sdk-v290-released](https://ja.developer.box.com/changelog/2023-04-19-box-node-sdk-v290-released) --- ### Box Node SDK `v3.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.0.0のリリース このリリースの最も重要な変更は、バージョン12未満のNodeのサポートの終了とNode 12からNode 16へのサポート環境の変更です。 重大な変更 use_indexの使用を削除 (#812) (d56799a… # Box Node SDK v3.0.0のリリース このリリースの最も重要な変更は、**バージョン12未満のNodeのサポートの終了**と**Node 12からNode 16へのサポート環境**の変更です。 ### 重大な変更 - `use_index`の使用を削除 ([#812](https://github.com/box/box-node-sdk/pull/812)) ([`d56799a`](https://github.com/box/box-node-sdk/commit/d56799a61f42265d7785f99e92a449c58d125aef)) - 非推奨の`BoxClient.batch()`および`BoxClient.batchExec()`メソッドを削除 - 非推奨の`CollaborationWhitelist`クラスを削除、代わりに`CollaborationAllowlist`を使用 - 非推奨の`CollaborationAllowlist.getWhitelistedDomain()`メソッドを削除、代わりに`CollaborationAllowlist.getAllowlistedDomain()`を使用 - 非推奨の`CollaborationAllowlist.getAllWhitelistedDomains()`メソッドを削除、代わりに`CollaborationAllowlist.getAllAllowlistedDomains()`を使用 - 非推奨の`Files.getThumbnail(fileID: string, options?: Record<string, any>, callback?: Function)`メソッドを削除、代わりに`Files.getRepresentationContent( fileID, representationType, options, callback)`を使用 移行の詳細は[こちら](https://github.com/box/box-node-sdk/blob/v3.0.0/docs/upgrade/2.x.x%20to%203.x.x.md)で確認できます。 ### 依存関係のアップグレード - `jsonwebtoken`を8.5.1から9.0.0に昇格 ([#802](https://github.com/box/box-node-sdk/pull/802)) ([`5b1d4e9`](https://github.com/box/box-node-sdk/pull/828/commits/5b1d4e9ec557c14c1d27695733cc0bcae49061cb)) - `vm2`を3.9.11から3.9.19に昇格 ([#826](https://github.com/box/box-node-sdk/pull/826)) ([`220df76`](https://github.com/box/box-node-sdk/commit/220df765080bc27c91daed51ac46620f6bc8b9ed)) **Source:** [https://ja.developer.box.com/changelog/2023-05-23-box-node-sdk-v300-released](https://ja.developer.box.com/changelog/2023-05-23-box-node-sdk-v300-released) --- ### Box Node SDK `v3.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.1.0のリリース 新機能と機能強化 統合マッピングAPIのサポートを追加 (#831) (a525327) バグ修正 コラボレーションの作成用にuserIdとgroupIdのタイプを修正 (#833) (f803ff8)、#832をクローズ # Box Node SDK v3.1.0のリリース ### 新機能と機能強化 - 統合マッピングAPIのサポートを追加 ([#831](https://github.com/box/box-node-sdk/issues/831)) ([`a525327`](https://github.com/box/box-node-sdk/commit/a525327c1362628a0ffdb36cb4bf3346ca0e0153)) ### バグ修正 - コラボレーションの作成用に`userId`と`groupId`のタイプを修正 ([#833](https://github.com/box/box-node-sdk/issues/833)) ([`f803ff8`](https://github.com/box/box-node-sdk/commit/f803ff82330fd78a8dc4875452a21aab54686b2e))、[#832](https://github.com/box/box-node-sdk/issues/832)をクローズ **Source:** [https://ja.developer.box.com/changelog/2023-06-01-box-node-sdk-v310-released](https://ja.developer.box.com/changelog/2023-06-01-box-node-sdk-v310-released) --- ### Box Node SDK `v3.1.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.1.1のリリース 新機能と機能強化 proxy-agentをバージョン6.3.0に昇格 (845) (3f89f83) # Box Node SDK v3.1.1のリリース ### 新機能と機能強化 - proxy-agentをバージョン6.3.0に昇格 ([845]((https://github.com/box/box-node-sdk/pull/845))) ([`3f89f83`]((https://github.com/box/box-node-sdk/commit/3f89f83e939de5c1e6e48abbfb56212b56e70526))) **Source:** [https://ja.developer.box.com/changelog/2023-07-19-box-node-sdk-v311-released](https://ja.developer.box.com/changelog/2023-07-19-box-node-sdk-v311-released) --- ### Box Node SDK `v3.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.2.0のリリース 新機能と機能強化 Signテンプレートをサポート (#848) (18d3413) # Box Node SDK v3.2.0のリリース ### 新機能と機能強化 - Signテンプレートをサポート ([#848](https://github.com/box/box-node-sdk/issues/848)) ([`18d3413`](https://github.com/box/box-node-sdk/commit/18d3413afeddf43c62dfd0caf1279e61c99b6b83)) **Source:** [https://ja.developer.box.com/changelog/2023-09-07-box-node-sdk-v320-released](https://ja.developer.box.com/changelog/2023-09-07-box-node-sdk-v320-released) --- ### Box Node SDK `v3.2.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.2.1のリリース バグ修正 tough-cookieの依存関係を上書き (#852) (99df873) # Box Node SDK v3.2.1のリリース ### バグ修正 - tough-cookieの依存関係を上書き ([#852](https://github.com/box/box-node-sdk/issues/852)) ([`99df873`](https://github.com/box/box-node-sdk/commit/99df873e1a1dad4a0073d53b4ed57c0eeb859401)) **Source:** [https://ja.developer.box.com/changelog/2023-10-06-box-node-sdk-v321-released](https://ja.developer.box.com/changelog/2023-10-06-box-node-sdk-v321-released) --- ### Box Node SDK `v3.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.3.0のリリース 新機能と機能強化 requestライブラリを@cypress/requestに置き換え (#860) (d365ae8) バグ修正 承認関数のコールバックをオプションとしてマーク (#858) (55f22fe) # Box Node SDK v3.3.0のリリース ### 新機能と機能強化 - `request`ライブラリを`@cypress/request`に置き換え ([#860](https://github.com/box/box-node-sdk/issues/860)) ([`d365ae8`](https://github.com/box/box-node-sdk/commit/d365ae8368c549ecdceb7dd5b928904fd3c58978)) ### バグ修正 - 承認関数のコールバックをオプションとしてマーク ([#858](https://github.com/box/box-node-sdk/issues/858)) ([`55f22fe`](https://github.com/box/box-node-sdk/commit/55f22fec7d7d35e487f3fb51bc9bbd3e848842ab)) **Source:** [https://ja.developer.box.com/changelog/2023-10-26-box-node-sdk-v330-released](https://ja.developer.box.com/changelog/2023-10-26-box-node-sdk-v330-released) --- ### Box Node SDK `v3.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.4.0のリリース 新機能と機能強化 PassThroughをスキップするためのリクエストオプションを追加 (#863) (726db45) # Box Node SDK v3.4.0のリリース ### 新機能と機能強化 - `PassThrough`をスキップするためのリクエストオプションを追加 ([#863](https://github.com/box/box-node-sdk/issues/863)) ([`726db45`](https://github.com/box/box-node-sdk/commit/726db45cfbb992e545fe2865283df63c898656ac)) **Source:** [https://ja.developer.box.com/changelog/2023-11-03-box-node-sdk-v340-released](https://ja.developer.box.com/changelog/2023-11-03-box-node-sdk-v340-released) --- ### Box Node SDK `v3.4.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.4.1のリリース バグ修正 proxy-agentの使用を更新、Node 12のサポートを終了 (#865) (e229d3f) # Box Node SDK v3.4.1のリリース ### バグ修正 - `proxy-agent`の使用を更新、Node 12のサポートを終了 ([#865](https://github.com/box/box-node-sdk/issues/865)) ([`e229d3f`](https://github.com/box/box-node-sdk/commit/e229d3f93de350c00768528a1c0d3a6ecfc697a9)) **Source:** [https://ja.developer.box.com/changelog/2023-11-03-box-node-sdk-v341-released](https://ja.developer.box.com/changelog/2023-11-03-box-node-sdk-v341-released) --- ### Box Node SDK `v3.4.2`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.4.2のリリース バグ修正 proxy-agentを修正 (#867) (3de7586) # Box Node SDK v3.4.2のリリース ### バグ修正 - `proxy-agent`を修正 ([#867](https://github.com/box/box-node-sdk/issues/867)) ([`3de7586`](https://github.com/box/box-node-sdk/commit/3de7586e44dbb7c8e1bff8f34471964805c810f5)) **Source:** [https://ja.developer.box.com/changelog/2023-11-08-box-node-sdk-v342-released](https://ja.developer.box.com/changelog/2023-11-08-box-node-sdk-v342-released) --- ### Box Node SDK `v3.5.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.5.0のリリース 新機能と機能強化 署名リクエストグループ (#870) (11bf5d2) バグ修正 proxy-agentを6.4.0に昇格 (#874) (55a8a0b) 分類の削除に関する記述を削除 (#869) (22384ab) # Box Node SDK v3.5.0のリリース ### 新機能と機能強化 - 署名リクエストグループ ([#870](https://github.com/box/box-node-sdk/issues/870)) ([`11bf5d2`](https://github.com/box/box-node-sdk/commit/11bf5d2db7e0cefc669aab99c8b65c632289ac46)) ### バグ修正 - proxy-agentを6.4.0に昇格 ([#874](https://github.com/box/box-node-sdk/issues/874)) ([`55a8a0b`](https://github.com/box/box-node-sdk/commit/55a8a0baebe151f4107fdbec0a1022e9534f88a4)) - 分類の削除に関する記述を削除 ([#869](https://github.com/box/box-node-sdk/issues/869)) ([`22384ab`](https://github.com/box/box-node-sdk/commit/22384abc3abbc35800cbcdea7c7eb9a452cc4859)) **Source:** [https://ja.developer.box.com/changelog/2024-02-19-box-node-sdk-v350-released](https://ja.developer.box.com/changelog/2024-02-19-box-node-sdk-v350-released) --- ### Box Node SDK `v3.5.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.5.1のリリース バグ修正 メタデータクエリメソッドのoptionsパラメータを修正 (#878) (7943420) # Box Node SDK v3.5.1のリリース ### バグ修正 - メタデータクエリメソッドの`options`パラメータを修正 ([#878](https://github.com/box/box-node-sdk/issues/878)) ([`7943420`](https://github.com/box/box-node-sdk/commit/79434209c572cd77c329d6008cda9837a9dba411)) **Source:** [https://ja.developer.box.com/changelog/2024-05-02-box-node-sdk-v351-released](https://ja.developer.box.com/changelog/2024-05-02-box-node-sdk-v351-released) --- ### Box Node SDK `v3.6.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.6.0のリリース 新機能と機能強化 安定したステータスに移行 (#880) (ae996ea) # Box Node SDK v3.6.0のリリース ### 新機能と機能強化 - 安定したステータスに移行 ([#880](https://github.com/box/box-node-sdk/issues/880)) ([`ae996ea`](https://github.com/box/box-node-sdk/commit/ae996eafd9e34de99119a7780384b90758908313)) **Source:** [https://ja.developer.box.com/changelog/2024-05-20-box-node-sdk-v360-released](https://ja.developer.box.com/changelog/2024-05-20-box-node-sdk-v360-released) --- ### Box Node SDK `v3.7.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.7.0のリリース 新機能と機能強化 AI APIをサポート (#883) (bb81e07) # Box Node SDK v3.7.0のリリース ### 新機能と機能強化 - AI APIをサポート ([#883](https://github.com/box/box-node-sdk/issues/883)) ([`bb81e07`](https://github.com/box/box-node-sdk/commit/bb81e074eb1017bd742c90159e6cf4e6ce9d9776)) **Source:** [https://ja.developer.box.com/changelog/2024-07-16-box-node-sdk-v370-released](https://ja.developer.box.com/changelog/2024-07-16-box-node-sdk-v370-released) --- ### Box Node SDK `v3.7.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.7.1のリリース バグ修正 ファイルをコピーする際のオプションのバージョンに型注釈を追加 (#885) (4f9312c) # Box Node SDK v3.7.1のリリース ### バグ修正 - ファイルをコピーする際のオプションのバージョンに型注釈を追加 ([#885](https://github.com/box/box-node-sdk/issues/885)) ([`4f9312c`](https://github.com/box/box-node-sdk/commit/4f9312c63138f8cf8e0a9e46a9e1345172dbdc6b)) **Source:** [https://ja.developer.box.com/changelog/2024-08-06-box-node-sdk-v371-released](https://ja.developer.box.com/changelog/2024-08-06-box-node-sdk-v371-released) --- ### Box Node SDK `v3.8.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.8.0のリリース 新機能と機能強化 AIエージェントをサポート (#887) (5b109ad) # Box Node SDK v3.8.0のリリース ### 新機能と機能強化 - AIエージェントをサポート ([#887](https://github.com/box/box-node-sdk/issues/887)) ([`5b109ad`](https://github.com/box/box-node-sdk/commit/5b109adbd506510fc83b1c90af13b063ddefab37)) **Source:** [https://ja.developer.box.com/changelog/2025-04-09-box-node-sdk-v380-released](https://ja.developer.box.com/changelog/2025-04-09-box-node-sdk-v380-released) --- ### Box Node SDK `v3.8.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.8.1のリリース バグ修正 HMAC署名に定数時間比較を使用 (#893) (d819efe) # Box Node SDK v3.8.1のリリース ### バグ修正 - HMAC署名に定数時間比較を使用 ([#893](https://github.com/box/box-node-sdk/issues/893)) ([`d819efe`](https://github.com/box/box-node-sdk/commit/d819efe663a59fce53412fbe153a76dd346d4536)) **Source:** [https://ja.developer.box.com/changelog/2025-06-11-box-node-sdk-v381-released](https://ja.developer.box.com/changelog/2025-06-11-box-node-sdk-v381-released) --- ### Box Node SDK `v3.8.2`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v3.8.2のリリース バグ修正 form-dataに関するCVE-2025-7783を解決するためにcypress/requestを昇格 (#904) (8e8d2da) # Box Node SDK v3.8.2のリリース ### バグ修正 - `form-data`に関する`CVE-2025-7783`を解決するために`cypress/request`を昇格 ([#904](https://github.com/box/box-node-sdk/issues/904)) ([`8e8d2da`](https://github.com/box/box-node-sdk/commit/8e8d2da58ab42bdfb9e5a49ca25e9b9fc50e0d61)) **Source:** [https://ja.developer.box.com/changelog/2025-07-29-box-node-sdk-v382-released](https://ja.developer.box.com/changelog/2025-07-29-box-node-sdk-v382-released) --- ### Box Node SDK `v4.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v4.0.0のリリース 2つのモジュール (手動で管理されているモジュールと生成されたモジュール) を含むBox Node SDK v4の新しいメジャーバージョンを導入しました。共存するこれらのモジュールにより、最新のBox API… # Box Node SDK v4.0.0のリリース 2つのモジュール (手動で管理されているモジュールと生成されたモジュール) を含むBox Node SDK `v4`の新しいメジャーバージョンを導入しました。共存するこれらのモジュールにより、最新のBox APIの機能をより簡単に使用できるようになるほか、生成されたスタンドアロンのモジュールへの段階的な移行がサポートされます。 ### 重大な変更 Box Node SDKの`v4`により、バージョン18未満のNodeのサポートが終了しました。18未満のNodeでもこのSDKをダウンロードして使用することは可能ですが、そのバージョンで発生した問題についてサポートは提供されません。 ESモジュールをサポートし、生成された`sdk-gen`モジュールとの一貫性を高めるために、手動で管理されている`box-node-sdk`モジュールでモジュールのエクスポートスタイルを更新しました。手動のSDKのクラスは、現在、個々のファイルからデフォルトのエクスポートとしてエクスポートされるようになりました。`CommonJS` (`require`) を使用してインポートする際は、`.default`を使用してクラス (例: `const BoxSDK = require('box-node-sdk').default;`) にアクセスしてください。 `v4`への移行の詳細については、[`v3`から`v4`への移行ガイド](https://github.com/box/box-node-sdk/blob/combined-sdk/migration-guides/from-v3-to-v4.md)を参照してください。 ### v4の新機能 このSDKバージョンでは、既存の手動で管理されているモジュールに加え、インポートパス`box-node-sdk/sdk-gen`で新しく生成された`sdk-gen`モジュールを導入します。これにより、以下を利用できます。 **APIの全面的なサポート** — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 **迅速なAPIの更新** — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 **ドキュメントへの埋め込み** — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 **便利なメソッドの強化** — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 ### 重要な注意事項 このバージョンにより、ご利用のコードベースを`sdk-gen`モジュールに段階的に移行できます。モジュール間の主な違いについては、[モジュールの移行ガイド](https://github.com/box/box-node-sdk/blob/combined-sdk/migration-guides/from-box-node-sdk-to-sdk-gen.md)を参照してください。 最終的には、生成された`sdk-gen`モジュールのみを含む`v10`に移行することをお勧めします。`v4`から`v10`に移行するには、こちらの[移行ガイド](https://github.com/box/box-node-sdk/blob/combined-sdk/migration-guides/from-v4-to-v10.md)に従います。 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning/)を参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 **Source:** [https://ja.developer.box.com/changelog/2025-10-23-box-node-sdk-v400-released](https://ja.developer.box.com/changelog/2025-10-23-box-node-sdk-v400-released) --- ### Box Node SDK `v4.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v4.1.0のリリース バグ修正 boxsdkgen: TSでエラーの処理を修正 (box/box-codegen#882) (#1182) (c6c0f50) boxsdkgen: Enterprise構成を取得エンドポイントから列挙型を削除 (box… # Box Node SDK v4.1.0のリリース ### バグ修正 - **boxsdkgen:** TSでエラーの処理を修正 (box/box-codegen[#882](https://github.com/box/box-node-sdk/issues/882)) ([#1182](https://github.com/box/box-node-sdk/issues/1182)) ([`c6c0f50`](https://github.com/box/box-node-sdk/commit/c6c0f50e15058bfb3632649135a47624cefbc6aa)) - **boxsdkgen:** Enterprise構成を取得エンドポイントから列挙型を削除 (box/box-openapi[#560](https://github.com/box/box-node-sdk/issues/560)) ([#1154](https://github.com/box/box-node-sdk/issues/1154)) ([`5fd824b`](https://github.com/box/box-node-sdk/commit/5fd824b9757c5250f5dc9b6e02578a43dbb129fe))、[`box/box-codegen#869`](https://github.com/box/box-codegen/issues/869) [`box/box-openapi#559`](https://github.com/box/box-openapi/issues/559) [`box/box-codegen#872`](https://github.com/box/box-codegen/issues/872)をクローズ ### 新機能と機能強化 - **boxsdkgen:** Enterprise構成を取得エンドポイントを追加 (box/box-openapi[#559](https://github.com/box/box-node-sdk/issues/559)) ([#1149](https://github.com/box/box-node-sdk/issues/1149)) ([`55ffde1`](https://github.com/box/box-node-sdk/commit/55ffde14b60682628f8229cd4856d23a2be3babf)) - **boxsdkgen:** アーカイブAPIの更新を追加 (box/box-openapi[#563](https://github.com/box/box-node-sdk/issues/563)) ([#1172](https://github.com/box/box-node-sdk/issues/1172)) ([`fbe3d0f`](https://github.com/box/box-node-sdk/commit/fbe3d0fcd2a15487ac17a93c9189e7cc70b2bba1)) **Source:** [https://ja.developer.box.com/changelog/2025-11-07-box-node-sdk-v410-released](https://ja.developer.box.com/changelog/2025-11-07-box-node-sdk-v410-released) --- ### Box Node SDK `v4.1.1`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v4.1.1のリリース バグ修正 boxsdkgen: Node SDKでエラー伝搬およびレスポンスの取得が空であった場合の処理を修正 (box/box-codegen#883) (#1196) (9615a34) # Box Node SDK v4.1.1のリリース ### バグ修正 - **boxsdkgen:** Node SDKでエラー伝搬およびレスポンスの取得が空であった場合の処理を修正 (box/box-codegen[#883](https://github.com/box/box-node-sdk/issues/883)) ([#1196](https://github.com/box/box-node-sdk/issues/1196)) ([`9615a34`](https://github.com/box/box-node-sdk/commit/9615a3480686eb8af9374691a2ec1de82688eaa1)) **Source:** [https://ja.developer.box.com/changelog/2025-11-12-box-node-sdk-v411-released](https://ja.developer.box.com/changelog/2025-11-12-box-node-sdk-v411-released) --- ### Box Node SDK `v4.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Node SDK v4.2.0のリリース バグ修正 boxsdkgen: unionタイプの重複を削除 (box/box-codegen#898) (#1241) (c56f808) jsonwebtokenの依存関係を昇格 (#1244) (49692e… # Box Node SDK v4.2.0のリリース ### バグ修正 - **boxsdkgen:** unionタイプの重複を削除 (box/box-codegen[#898](https://github.com/box/box-node-sdk/issues/898)) ([#1241](https://github.com/box/box-node-sdk/issues/1241)) ([`c56f808`](https://github.com/box/box-node-sdk/commit/c56f808315fab6da134de17517bbb33067523859)) - `jsonwebtoken`の依存関係を昇格 ([#1244](https://github.com/box/box-node-sdk/issues/1244)) ([`49692e3`](https://github.com/box/box-node-sdk/commit/49692e3724c9aa40a855f85a7b0771db1c984b6f)) ### 新機能と機能強化 - **boxsdkgen:** AI抽出から`confidence_score`と`include_confidence_score`を削除 (box/box-openapi[#567](https://github.com/box/box-node-sdk/issues/567)) ([#1245](https://github.com/box/box-node-sdk/issues/1245)) ([`3a74388`](https://github.com/box/box-node-sdk/commit/3a74388b46e4842708c11ada8f931b810c0b3230)) - **boxsdkgen:** AIによる抽出 (構造化) で`includeConfidenceScore`および`includeConfidenceScore`フィールドをサポート (box/box-openapi[#566](https://github.com/box/box-node-sdk/issues/566)) ([#1227](https://github.com/box/box-node-sdk/issues/1227)) ([`8e2b109`](https://github.com/box/box-node-sdk/commit/8e2b109ebacd48ed268a9310cb01d8f6ae5ebca4)) - **boxsdkgen:** 新しい署名リクエストのメタデータをサポート (box/box-openapi[#565](https://github.com/box/box-node-sdk/issues/565)) ([#1225](https://github.com/box/box-node-sdk/issues/1225)) ([`955b6ba`](https://github.com/box/box-node-sdk/commit/955b6ba5df942c5c1c0340c307cefad70549db53)) - **boxsdkgen:** 例外のエラーメッセージを更新 (box/box-codegen[#896](https://github.com/box/box-node-sdk/issues/896)) ([#1232](https://github.com/box/box-node-sdk/issues/1232)) ([`b140428`](https://github.com/box/box-node-sdk/commit/b140428c303de789bc1cee49c1e8c03139602c65)) **Source:** [https://ja.developer.box.com/changelog/2025-12-10-box-node-sdk-v420-released](https://ja.developer.box.com/changelog/2025-12-10-box-node-sdk-v420-released) --- ### Box Platformの用語集 **Type:** changelog | **Section:** Changelog Box Platformの用語集 Box PlatformとBoxドキュメントにおけるエクスペリエンスの改善のため、Box Platformの用語集を作成しました。Boxのコンテンツベースおよびクラウドベースのソリューションでの作業を開始するために最も重要な用語や概念を確認できます。 # Box Platformの用語集 Box PlatformとBoxドキュメントにおけるエクスペリエンスの改善のため、[Box Platformの用語集](page/platform/box-glossary/)を作成しました。Boxのコンテンツベースおよびクラウドベースのソリューションでの作業を開始するために最も重要な用語や概念を確認できます。 包括的で詳細な用語リストにするため、このリストは定期的に更新される予定です。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-10-06-box-platform-glossary](https://ja.developer.box.com/changelog/2023-10-06-box-platform-glossary) --- ### Box Preview SDKに影響を及ぼす`PDF.js`の脆弱性 **Type:** changelog | **Section:** Changelog Box Preview SDKに影響を及ぼすPDF.jsの脆弱性 Box Preview SDKで使用されているPDF.jsライブラリでCVE-2024-4367の脆弱性が明らかになりました。この脆弱性により、PDF.jsタイプの欠陥が危険にさらされ、プレビューで開いたときに任意のJavaScriptの実行を許可するコードがチェックされます。 # Box Preview SDKに影響を及ぼすPDF.jsの脆弱性 [Box Preview SDK](https://github.com/box/box-content-preview/blob/master/README.md)で使用されている`PDF.js`ライブラリで`CVE-2024-4367`の脆弱性が明らかになりました。この脆弱性により、`PDF.js`タイプの欠陥が危険にさらされ、プレビューで開いたときに任意のJavaScriptの実行を許可するコードがチェックされます。 この脆弱性は、`4.1.392`以下のすべてのバージョンの`PDF.js`に存在するため、`2.106.0`未満のすべてのバージョンのPreview SDKに影響します。この脆弱性を軽減するには、アプリで使用されているPreview SDKを`2.106.0`以上にアップグレードしてください。 影響を受ける可能性があるユーザーとアプリケーション所有者全員に、メールで直接通知済みです。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-05-23-pdf-js-vulnerability](https://ja.developer.box.com/changelog/2024-05-23-pdf-js-vulnerability) --- ### Box Python SDK `v10.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v10.0.0のリリース 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、**Box SDK v10**を導入しました。現在は個別のsdk-genブランチとして利用可能なv1… # Box Python SDK v10.0.0のリリース 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、**`Box SDK v10`**を導入しました。現在は個別の[`sdk-gen`](https://github.com/box/box-python-sdk/tree/sdk-gen)ブランチとして利用可能な`v10`が、最終的にメインブランチになります。 ### 重大な変更 - このSDKのバージョンは、自動生成されており、すべてのメソッドに新しいインターフェースを導入しています。詳細なドキュメントについては、[こちら](https://github.com/box/box-python-sdk/tree/sdk-gen/docs)を参照してください。 ### v10の新機能 **APIの全面的なサポート** — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 **迅速なAPIの更新** — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 **ドキュメントへの埋め込み** — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 **便利なメソッドの強化** — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 ### 重要な注意事項 ## このバージョンには、BoxのコアSDKと並行して以前に開発された、Boxの次世代SDKのアーティファクトが含まれています。Boxでは、移行を促進し、最新の機能を利用できるようにするため、まもなく、両方のアーティファクトを兼ね備えたメジャーバージョンを追加でリリースする予定です。v10への移行には重大な変更が含まれるため、詳細については移行ガイドを確認してください。詳細については、SDKのバージョン戦略に関するドキュメントを参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 ### 新機能 (Python SDK Gen v1.17.0との比較) #### 新機能と機能強化 外部ユーザー削除APIを追加 (box/box-openapi[#550](https://github.com/box/box-python-sdk/issues/550)) ([#941](https://github.com/box/box-python-sdk/issues/941)) ([`a80ad85`](https://github.com/box/box-python-sdk/commit/a80ad856b3193e54272e04f01ddb025b2d9f781f)) 不足していたWebhookイベントを追加 (box/box-openapi[#554](https://github.com/box/box-python-sdk/issues/554)) ([#988](https://github.com/box/box-python-sdk/issues/988)) ([`575ce0b`](https://github.com/box/box-python-sdk/commit/575ce0b6d48f90db90349244414e98afe5fcbb9f)) 共用体の名前を変更 (box/box-codegen[#789](https://github.com/box/box-python-sdk/issues/789)) ([#939](https://github.com/box/box-python-sdk/issues/939)) ([`cf2b1d5`](https://github.com/box/box-python-sdk/commit/cf2b1d5b12be0ff2453867b7d3502437283bf695)) スキーマから未使用のモデルを削除 (box/box-openapi[#547](https://github.com/box/box-python-sdk/issues/547)) ([#932](https://github.com/box/box-python-sdk/issues/932)) ([`6ef6d63`](https://github.com/box/box-python-sdk/commit/6ef6d63c37e6eccc3489a9076e0a0b0940a6e0d6))、box/box-openapi[#542](https://github.com/box/box-openapi/issues/542)、box/box-openapi[#544](https://github.com/box/box-openapi/issues/544)、box/box-codegen[#781](https://github.com/box/box-codegen/issues/781)、box/box-openapi[#545](https://github.com/box/box-openapi/issues/545)をクローズ 詳細については、`box-python-sdk-gen` `v1`から`box-python-sdk` `v10`への[移行ガイド](https://github.com/box/box-python-sdk/blob/sdk-gen/migration-guides/from-box-python-sdk-gen-v1-to-box-python-sdk-v10.md)をご確認ください。 **Source:** [https://ja.developer.box.com/changelog/2025-09-17-box-python-sdk-v1000-released](https://ja.developer.box.com/changelog/2025-09-17-box-python-sdk-v1000-released) --- ### Box Python SDK `v10.0.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v10.0.1のリリース バグ修正 AiExtractResponse.answerおよびEvent.additionalDetailsで柔軟なキーと値のデータを許可 (box/box-openapi#556) (#1084) (f63cffe… # Box Python SDK v10.0.1のリリース ### バグ修正 - `AiExtractResponse.answer`および`Event.additionalDetails`で柔軟なキーと値のデータを許可 (box/box-openapi[#556](https://github.com/box/box-python-sdk/issues/556)) ([#1084](https://github.com/box/box-python-sdk/issues/1084)) ([`f63cffe`](https://github.com/box/box-python-sdk/commit/f63cffec92ccf98af21d6227328aab00fa159187)) - コラボレーション更新の`role`パラメータを任意化 (box/box-openapi[#557](https://github.com/box/box-python-sdk/issues/557)) ([#1093](https://github.com/box/box-python-sdk/issues/1093)) ([`5c21907`](https://github.com/box/box-python-sdk/commit/5c21907869d359fdb8fe4c83317a9eca5aeffdc3)) **Source:** [https://ja.developer.box.com/changelog/2025-10-06-box-python-sdk-v1001-released](https://ja.developer.box.com/changelog/2025-10-06-box-python-sdk-v1001-released) --- ### Box Python SDK `v10.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v10.1.0のリリース 新機能と機能強化 Enterprise構成の取得APIをサポート (box/box-openapi#559) (#1134) (1106d32) アーカイブAPIをサポート (box/box-openapi#56… # Box Python SDK v10.1.0のリリース ### 新機能と機能強化 - Enterprise構成の取得APIをサポート (box/box-openapi[#559](https://github.com/box/box-python-sdk/issues/559)) ([#1134](https://github.com/box/box-python-sdk/issues/1134)) ([`1106d32`](https://github.com/box/box-python-sdk/commit/1106d325973df9704f5102538ac0130bda6e9c38)) - アーカイブAPIをサポート (box/box-openapi[#563](https://github.com/box/box-python-sdk/issues/563)) ([#1174](https://github.com/box/box-python-sdk/issues/1174)) ([`d21ec4d`](https://github.com/box/box-python-sdk/commit/d21ec4df82ab43539ff07d306cf304f86bbb0593)) **Source:** [https://ja.developer.box.com/changelog/2025-11-19-box-python-sdk-v1010-released](https://ja.developer.box.com/changelog/2025-11-19-box-python-sdk-v1010-released) --- ### Box Python SDK `v10.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v10.2.0のリリース 新機能と機能強化 AI抽出からconfidence_scoreとinclude_confidence_scoreを削除 (box/box-openapi#567) (#1238) (66267ba… # Box Python SDK v10.2.0のリリース ### 新機能と機能強化 - AI抽出から`confidence_score`と`include_confidence_score`を削除 (box/box-openapi[#567](https://github.com/box/box-python-sdk/issues/567)) ([#1238](https://github.com/box/box-python-sdk/issues/1238)) ([`66267ba`](https://github.com/box/box-python-sdk/commit/66267bae7395ce2886cc4cd7504a51d22394b738)) - 新しい署名リクエストのメタデータをサポート (box/box-openapi[#565](https://github.com/box/box-python-sdk/issues/565)) ([#1222](https://github.com/box/box-python-sdk/issues/1222)) ([`6c3d332`](https://github.com/box/box-python-sdk/commit/6c3d3325a19b3217225a80c2cd5d15c7bb068494)) **Source:** [https://ja.developer.box.com/changelog/2025-12-10-box-python-sdk-v1020-released](https://ja.developer.box.com/changelog/2025-12-10-box-python-sdk-v1020-released) --- ### Box Python SDK `v10.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v10.3.0のリリース バグ修正 メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi#572) (#1269) (7bb9bdc) Retry-Afterヘッダーがない場合のRetryAfter… # Box Python SDK v10.3.0のリリース ### バグ修正 - メタデータフィールド (読み取り) の定義にメタデータ階層を追加 (box/box-openapi[#572](https://github.com/box/box-python-sdk/issues/572)) ([#1269](https://github.com/box/box-python-sdk/issues/1269)) ([`7bb9bdc`](https://github.com/box/box-python-sdk/commit/7bb9bdc894cb6d765a09ecbedda58b6edb9181d0)) - `Retry-After`ヘッダーがない場合の`RetryAfter`関数を修正 (box/box-codegen[#903](https://github.com/box/box-python-sdk/issues/903)) ([#1244](https://github.com/box/box-python-sdk/issues/1244)) ([`d7cc019`](https://github.com/box/box-python-sdk/commit/d7cc019dd186ef3cdb6214a6cf1625ec49c1fd37)) ### 新機能と機能強化 - メタデータ階層APIを追加 (box/box-openapi[#569](https://github.com/box/box-python-sdk/issues/569)) ([#1252](https://github.com/box/box-python-sdk/issues/1252)) ([`7850463`](https://github.com/box/box-python-sdk/commit/7850463204ef9f7802a759ef69a3b7f4b6dd328b)) - Box Signのテキスト入力の検証 (box/box-openapi[#568](https://github.com/box/box-python-sdk/issues/568)) ([#1246](https://github.com/box/box-python-sdk/issues/1246)) ([`f99512f`](https://github.com/box/box-python-sdk/commit/f99512fcfca75edae48bb5a1b6a1897d330f5dd3)) - `nullable`フィールドを省略可として処理 (box/box-codegen[#906](https://github.com/box/box-python-sdk/issues/906)) ([#1256](https://github.com/box/box-python-sdk/issues/1256)) ([`12c05dc`](https://github.com/box/box-python-sdk/commit/12c05dcebae13a696956288f41ec55fed8a4011e)) **Source:** [https://ja.developer.box.com/changelog/2025-12-19-box-python-sdk-v1030-released](https://ja.developer.box.com/changelog/2025-12-19-box-python-sdk-v1030-released) --- ### Box Python SDK `v2.10.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v2.10.0のリリース 新機能と機能強化: メタデータテンプレートのcopyInstanceOnItemCopyフィールドのサポートを追加 (#546) actionパラメータとcompletion_rule… # Box Python SDK v2.10.0のリリース **新機能と機能強化:** - メタデータテンプレートの`copyInstanceOnItemCopy`フィールドのサポートを追加 ([#546](https://github.com/box/box-ios-sdk/pull/546)) - `action`パラメータと`completion_rule`パラメータを使用したタスクの作成を許可 ([#544](https://github.com/box/box-ios-sdk/pull/544)) - 圧縮機能を追加 ([#539](https://github.com/box/box-ios-sdk/pull/539)) **バグ修正:** - コラボレーションロールを所有者に更新する際のバグを修正 ([#536](https://github.com/box/box-ios-sdk/pull/536)) - `ints`を項目IDとして渡すことを許可 ([#530](https://github.com/box/box-ios-sdk/pull/530)) **Source:** [https://ja.developer.box.com/changelog/2020-10-02-box-python-sdk-v2100-released](https://ja.developer.box.com/changelog/2020-10-02-box-python-sdk-v2100-released) --- ### Box Python SDK `v2.11.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v2.11.0のリリース 新機能と機能強化: サムネイルを取得するためのメソッドの廃止および追加 (#572) # Box Python SDK v2.11.0のリリース **新機能と機能強化:** - サムネイルを取得するためのメソッドの廃止および追加 ([#572](https://github.com/box/box-python-sdk/pull/572)) **Source:** [https://ja.developer.box.com/changelog/2021-01-11-box-python-sdk-v2110-released](https://ja.developer.box.com/changelog/2021-01-11-box-python-sdk-v2110-released) --- ### Box Python SDK `v2.12.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v2.12.0のリリース 新機能と機能強化: メタデータクエリ機能を追加 (#574) フォルダロック機能を追加 (#581) include_recent_shared_linksフィールドの検索クエリサポートを追加 (#58… # Box Python SDK v2.12.0のリリース **新機能と機能強化:** - メタデータクエリ機能を追加 ([#574](https://github.com/box/box-python-sdk/pull/574)) - フォルダロック機能を追加 ([#581](https://github.com/box/box-python-sdk/pull/581)) - `include_recent_shared_links`フィールドの検索クエリサポートを追加 ([#582](https://github.com/box/box-python-sdk/pull/582)) - ドキュメントされたパラメータを使用して名前でフィルタをかけるために`get_groups()`を更新 ([#586](https://github.com/box/box-python-sdk/pull/586)) **Source:** [https://ja.developer.box.com/changelog/2021-04-16-box-python-sdk-v2120-released](https://ja.developer.box.com/changelog/2021-04-16-box-python-sdk-v2120-released) --- ### Box Python SDK `v2.12.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v2.12.1のリリース バグ修正: サムネイルレプリゼンテーションが見つからない場合のバグの修正 (#597) # Box Python SDK v2.12.1のリリース **バグ修正:** - サムネイルレプリゼンテーションが見つからない場合のバグの修正 ([#597](https://github.com/box/box-python-sdk/pull/597)) **Source:** [https://ja.developer.box.com/changelog/2021-06-16-box-python-sdk-v2121-released](https://ja.developer.box.com/changelog/2021-06-16-box-python-sdk-v2121-released) --- ### Box Python SDK `v2.13.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v2.13.0のリリース 新機能と機能強化: 不適切な用語の変更 (#609) Box Signのサポートを追加 (#617) バグ修正: 暗号化技術をバージョン3にアップグレード (#620) # Box Python SDK v2.13.0のリリース **新機能と機能強化:** - 不適切な用語の変更 ([#609](https://github.com/box/box-python-sdk/pull/609)) - Box Signのサポートを追加 ([#617](https://github.com/box/box-python-sdk/pull/617)) **バグ修正:** - 暗号化技術をバージョン3にアップグレード ([#620](https://github.com/box/box-python-sdk/pull/620)) **Source:** [https://ja.developer.box.com/changelog/2021-09-30-box-python-sdk-v2130-released](https://ja.developer.box.com/changelog/2021-09-30-box-python-sdk-v2130-released) --- ### Box Python SDK `v2.14.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v2.14.0のリリース 新機能と機能強化: イベントストリームに対するadmin_logs_streamingのサポートを追加 (#623) ファイルまたはフォルダへの共有リンクを作成するためのvanity_nameパラメータを追加 (#63… # Box Python SDK v2.14.0のリリース **新機能と機能強化:** - イベントストリームに対する`admin_logs_streaming`のサポートを追加 ([#623](https://github.com/box/box-python-sdk/pull/623)) - ファイルまたはフォルダへの共有リンクを作成するための`vanity_name`パラメータを追加 ([#637](https://github.com/box/box-python-sdk/pull/637)) - リテンションポリシー割り当てのために、リテンションの対象となるファイルおよびファイルバージョンの取得を追加 ([#633](https://github.com/box/box-python-sdk/pull/633)) - WebLinkクラスの基本の項目操作をサポート ([#639](https://github.com/box/box-python-sdk/pull/639)) **バグ修正:** - 暗号化技術をバージョン3.5.0未満に制限 ([#636](https://github.com/box/box-python-sdk/pull/636)) - ファイルのサムネイルを生成できないときの404エラーの発生を回避 ([#642](https://github.com/box/box-python-sdk/pull/642)) **Source:** [https://ja.developer.box.com/changelog/2021-12-08-box-python-sdk-v2140-released](https://ja.developer.box.com/changelog/2021-12-08-box-python-sdk-v2140-released) --- ### Box Python SDK `v2.9.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v2.9.0のリリース OAuthの例外処理を修正 パスパラメータのサニタイズを修正 # Box Python SDK v2.9.0のリリース - OAuthの例外処理を修正 - パスパラメータのサニタイズを修正 **Source:** [https://ja.developer.box.com/changelog/2020-06-23-box-python-sdk-v290-released](https://ja.developer.box.com/changelog/2020-06-23-box-python-sdk-v290-released) --- ### Box Python SDK `v3.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.0.0のリリース 重大な変更 Python 2.7のサポートを終了 (#645) 不足しているパラメータstream_position to get_admin_eventsメソッドを追加 (#648) Python 3.… # Box Python SDK v3.0.0のリリース **重大な変更** - Python 2.7のサポートを終了 ([#645](https://github.com/box/box-python-sdk/pull/645)) - 不足しているパラメータ`stream_position to get_admin_events`メソッドを追加 ([#648](https://github.com/box/box-python-sdk/pull/648)) - Python 3.5のサポートを終了 ([#654](https://github.com/box/box-python-sdk/pull/654)) - 不適切な用語を使用している非推奨のコードを削除 ([#651](https://github.com/box/box-python-sdk/pull/651)) - 一部の関数でキーワードのみの引数の使用を強制 ([#656](https://github.com/box/box-python-sdk/pull/656)) **新機能と機能強化:** - `six`ライブラリと`__future__` importを削除 ([#646](https://github.com/box/box-python-sdk/pull/646)) - メソッドのパラメータにタイプヒントを追加 ([#650](https://github.com/box/box-python-sdk/pull/650)) **バグ修正:** - `multi-input`の呼び出しに不足している`api_call`デコレータを追加 ([#653](https://github.com/box/box-python-sdk/pull/653)) - `mypy`がタイプヒントを認識できるように`py.typed`ファイルを追加 ([#657](https://github.com/box/box-python-sdk/pull/657)) **Source:** [https://ja.developer.box.com/changelog/2022-01-17-box-python-sdk-v300-released](https://ja.developer.box.com/changelog/2022-01-17-box-python-sdk-v300-released) --- ### Box Python SDK `v3.0.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.0.1のリリース バグ修正: sphinxをテスト要件に移動 (#662) # Box Python SDK v3.0.1のリリース **バグ修正:** - sphinxをテスト要件に移動 ([#662](https://github.com/box/box-python-sdk/pull/662)) **Source:** [https://ja.developer.box.com/changelog/2022-01-26-box-python-sdk-v301-released](https://ja.developer.box.com/changelog/2022-01-26-box-python-sdk-v301-released) --- ### Box Python SDK `v3.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.1.0のリリース 新機能と機能強化 Python 3.10のサポートを追加 (#692) (d4aed82) Python 3.8、Python 3.9、pypy-3.7、およびpypy-3.8のサポートを追加 (#689) (0aa94cc… # Box Python SDK v3.1.0のリリース ### 新機能と機能強化 - Python 3.10のサポートを追加 ([#692](https://github.com/box/box-python-sdk/issues/692)) ([`d4aed82`](https://github.com/box/box-python-sdk/commit/d4aed82831af97305bace9a4588d27b23856c306)) - Python 3.8、Python 3.9、`pypy-3.7`、および`pypy-3.8`のサポートを追加 ([#689](https://github.com/box/box-python-sdk/issues/689)) ([`0aa94cc`](https://github.com/box/box-python-sdk/commit/0aa94cc8a5c4db0fc204b27a60690b73c98a89cb)) - ファイル/フォルダの`MDQ`にある`use_index`パラメータを廃止 ([#666](https://github.com/box/box-python-sdk/issues/666)) ([`2595720`](https://github.com/box/box-python-sdk/commit/25957204b82c878e15dc3d118505a741171e9772)) - 外部パッケージの`mock`をPython標準ライブラリの`unittest.mock`に置き換え ([#697](https://github.com/box/box-python-sdk/issues/697)) ([`6fd6366`](https://github.com/box/box-python-sdk/commit/6fd63667aa7da4c794b4fb880d5c2949efe0073f)) - 暗号化技術ライブラリを最新バージョンにアップグレード ([#668](https://github.com/box/box-python-sdk/issues/668)) ([`9c94d08`](https://github.com/box/box-python-sdk/commit/9c94d0878515dc75c1f267e2fb1f189a852772b6))、[#667](https://github.com/box/box-python-sdk/issues/667)をクローズ ### バグ修正 - 再試行の上限に達したときに`UploadSession.commit`によって`None`が返される ([#696](https://github.com/box/box-python-sdk/issues/696)) ([`9456fe0`](https://github.com/box/box-python-sdk/commit/9456fe0124f4ac4e9c8a7bcc49039f07f310c477)) - `create_upload_session`に欠落している`api_call`デコレータを追加 ([#686](https://github.com/box/box-python-sdk/issues/686)) ([`3510d3a`](https://github.com/box/box-python-sdk/commit/3510d3ac085767205854014ecef80fd078d71773)) - 分割アップロードを修正 ([#673](https://github.com/box/box-python-sdk/issues/673)) ([`2605fd7`](https://github.com/box/box-python-sdk/commit/2605fd782396ad6e42bd11c10f846e771634b7a0))、[#671](https://github.com/box/box-python-sdk/issues/671)をクローズ **Source:** [https://ja.developer.box.com/changelog/2022-02-16-box-python-sdk-v310-released](https://ja.developer.box.com/changelog/2022-02-16-box-python-sdk-v310-released) --- ### Box Python SDK `v3.10.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.10.0のリリース 新機能と機能強化 安定したステータスに移行 (#872) (6203606) バグ修正 位置ヘッダーが存在しない場合の例外タイプを変更 (#871) (8c5e0ec) OAuthのaccess_token… # Box Python SDK v3.10.0のリリース ### 新機能と機能強化 - 安定したステータスに移行 ([#872](https://github.com/box/box-python-sdk/issues/872)) ([`6203606`](https://github.com/box/box-python-sdk/commit/620360607a51ee302cde61401db1424c9bf48d81)) ### バグ修正 - 位置ヘッダーが存在しない場合の例外タイプを変更 ([#871](https://github.com/box/box-python-sdk/issues/871)) ([`8c5e0ec`](https://github.com/box/box-python-sdk/commit/8c5e0eca7e494baa8138dceededa2009abc1717b)) - OAuthの`access_token`の注釈を修正 ([#855](https://github.com/box/box-python-sdk/issues/855)) ([`804780e`](https://github.com/box/box-python-sdk/commit/804780e4c8d410590fa20cdb6dd35224d59d2ec0)) - リテンションポリシー統合テストを修正 ([#867](https://github.com/box/box-python-sdk/issues/867)) ([`8e0d640`](https://github.com/box/box-python-sdk/commit/8e0d6406f26be87799838b0aa57acd62c79d59a2)) - 分類の削除に関する記述を削除 ([#861](https://github.com/box/box-python-sdk/issues/861)) ([`393cfef`](https://github.com/box/box-python-sdk/commit/393cfefa57e729f34221a4e5923a4a50532f4013)) - 例外ファイル取得のダウンロードURLを更新 ([#866](https://github.com/box/box-python-sdk/issues/866)) ([`94dcbcd`](https://github.com/box/box-python-sdk/commit/94dcbcd490d98ff19afd38c9880de8022ad2ec89)) **Source:** [https://ja.developer.box.com/changelog/2024-05-22-box-python-sdk-v3100-released](https://ja.developer.box.com/changelog/2024-05-22-box-python-sdk-v3100-released) --- ### Box Python SDK `v3.11.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.11.0のリリース 新機能と機能強化 分割アップロードにアップロードセッションurlsを使用 (#875) (c67b03c) # Box Python SDK v3.11.0のリリース ### 新機能と機能強化 - 分割アップロードにアップロードセッション`urls`を使用 ([#875](https://github.com/box/box-python-sdk/issues/875)) ([`c67b03c`](https://github.com/box/box-python-sdk/commit/c67b03c7d88533773d62d72f0b626031805d61eb)) **Source:** [https://ja.developer.box.com/changelog/2024-06-07-box-python-sdk-v3110-released](https://ja.developer.box.com/changelog/2024-06-07-box-python-sdk-v3110-released) --- ### Box Python SDK `v3.12.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.12.0のリリース 新機能と機能強化 必須パラメータが異なるcreate_sign_request関数を追加 (#878) (d972f54) Box AI機能をサポート (#877) (3026d2a) # Box Python SDK v3.12.0のリリース ### 新機能と機能強化 - 必須パラメータが異なるcreate_sign_request関数を追加 ([#878](https://github.com/box/box-python-sdk/issues/878)) ([`d972f54`](https://github.com/box/box-python-sdk/commit/d972f54dcf9962c6b911422793a682d8f6289f9e)) - Box AI機能をサポート ([#877](https://github.com/box/box-python-sdk/issues/877)) ([`3026d2a`](https://github.com/box/box-python-sdk/commit/3026d2ab9932cd07aa9ff15a3ac3c3c14d3089b0)) **Source:** [https://ja.developer.box.com/changelog/2024-08-06-box-python-sdk-v3120-released](https://ja.developer.box.com/changelog/2024-08-06-box-python-sdk-v3120-released) --- ### Box Python SDK `v3.13.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.13.0のリリース 新機能と機能強化 AIエージェントのデフォルトのサポートを追加 (#883) (c1010e0) # Box Python SDK v3.13.0のリリース ### 新機能と機能強化 - AIエージェントのデフォルトのサポートを追加 ([#883](https://github.com/box/box-python-sdk/issues/883)) ([`c1010e0`](https://github.com/box/box-python-sdk/commit/c1010e0349847586a9f00046570e975ec48eb0c5)) **Source:** [https://ja.developer.box.com/changelog/2024-08-22-box-python-sdk-v3130-released](https://ja.developer.box.com/changelog/2024-08-22-box-python-sdk-v3130-released) --- ### Box Python SDK `v3.14.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.14.0のリリース 新機能と機能強化 uploadメソッドにstream_file_contentパラメータを追加 (#890) (0e63c00) # Box Python SDK v3.14.0のリリース ### 新機能と機能強化 - uploadメソッドに`stream_file_content`パラメータを追加 ([#890](https://github.com/box/box-python-sdk/issues/890)) ([`0e63c00`](https://github.com/box/box-python-sdk/commit/0e63c002ee17618c08200c12caae4bb3890b1e90)) **Source:** [https://ja.developer.box.com/changelog/2025-04-09-box-python-sdk-v3140-released](https://ja.developer.box.com/changelog/2025-04-09-box-python-sdk-v3140-released) --- ### Box Python SDK `v3.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.2.0のリリース 新機能と機能強化 リテンションの対象となるファイル用にdisposition_atフィールドの設定を追加 (#710) (91b1373) クライアント資格情報許可による認証方法のサポートを追加 (#705) (d33d16d… # Box Python SDK v3.2.0のリリース ### 新機能と機能強化 - リテンションの対象となるファイル用に`disposition_at`フィールドの設定を追加 ([#710](https://github.com/box/box-python-sdk/issues/710)) ([`91b1373`](https://github.com/box/box-python-sdk/commit/91b13730a0beef2cf2a8a8c71087b11557fa5982)) - クライアント資格情報許可による認証方法のサポートを追加 ([#705](https://github.com/box/box-python-sdk/issues/705)) ([`d33d16d`](https://github.com/box/box-python-sdk/commit/d33d16db656cb5578f057a7e24f5396d635b5361)) ### バグ修正 - 欠落している`box_sign`オブジェクトを`__all__`リストに追加 ([#708](https://github.com/box/box-python-sdk/issues/708)) ([`5d80481`](https://github.com/box/box-python-sdk/commit/5d8048116640fa672d6a1d700a6c1111faf87bb9)) - `jwt`インポートのエラーを修正 ([#711](https://github.com/box/box-python-sdk/issues/711)) ([`ee7bb6f`](https://github.com/box/box-python-sdk/commit/ee7bb6f1dc5aa65dbf6ffeb18ee130f765f7b49b)) **Source:** [https://ja.developer.box.com/changelog/2022-03-11-box-python-sdk-v320-released](https://ja.developer.box.com/changelog/2022-03-11-box-python-sdk-v320-released) --- ### Box Python SDK `v3.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.3.0のリリース 新機能と機能強化 複数の日時形式のサポートを追加 (#722) (92364de) バグ修正 不足していたフィールドをmetadata templateフィールドに追加 (#719) (9e574a3)、#71… # Box Python SDK v3.3.0のリリース ### 新機能と機能強化 - 複数の日時形式のサポートを追加 ([#722](https://github.com/box/box-python-sdk/issues/722)) ([`92364de`](https://github.com/box/box-python-sdk/commit/92364de1e7c1eee1e85857546af65c307ca863a0)) ### バグ修正 - 不足していたフィールドをmetadata templateフィールドに追加 ([#719](https://github.com/box/box-python-sdk/issues/719)) ([`9e574a3`](https://github.com/box/box-python-sdk/commit/9e574a3e56f72c0e78a31ddda78bc11d36ff3516))、[#717](https://github.com/box/box-python-sdk/issues/717)をクローズ - upload_sessionのコミットで202の場合にNoneを戻す ([#718](https://github.com/box/box-python-sdk/issues/718)) ([`86a1856`](https://github.com/box/box-python-sdk/commit/86a185630e6cce8f742123c7340da08267621313))、[#715](https://github.com/box/box-python-sdk/issues/715)をクローズ **Source:** [https://ja.developer.box.com/changelog/2022-04-28-box-python-sdk-v330-released](https://ja.developer.box.com/changelog/2022-04-28-box-python-sdk-v330-released) --- ### Box Python SDK `v3.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.4.0のリリース 新機能と機能強化 ファイル用の編集可能な共有リンクのサポートを追加 (#737) (1396200) ユーザーアバターのアップロードと削除をサポート (#743) (fe00a9e) # Box Python SDK v3.4.0のリリース ### 新機能と機能強化 - ファイル用の編集可能な共有リンクのサポートを追加 ([#737](https://github.com/box/box-python-sdk/issues/737)) ([`1396200`](https://github.com/box/box-python-sdk/commit/1396200c24bf62de63f9cb7949af5997593b9fac)) - ユーザーアバターのアップロードと削除をサポート ([#743](https://github.com/box/box-python-sdk/issues/743)) ([`fe00a9e`](https://github.com/box/box-python-sdk/commit/fe00a9eb3434ee14bc4f01332d54c0272ed5f2d3)) **Source:** [https://ja.developer.box.com/changelog/2022-07-06-box-python-sdk-v340-released](https://ja.developer.box.com/changelog/2022-07-06-box-python-sdk-v340-released) --- ### Box Python SDK `v3.5.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.5.0のリリース 新機能と機能強化 署名リクエストにredirect_urlおよびdeclined_redirect_urlフィールドを追加 (#752) (5d1f60… # Box Python SDK v3.5.0のリリース ### 新機能と機能強化 - 署名リクエストに`redirect_url`および`declined_redirect_url`フィールドを追加 ([#752](https://github.com/box/box-python-sdk/issues/752)) ([`5d1f609`](https://github.com/box/box-python-sdk/commit/5d1f609ed4c2ddb24bd88ffac256a2809a012698)) - 変更可能リテンションポリシーサポートを追加し、リテンションポリシー割り当ての削除を有効化 ([#759](https://github.com/box/box-python-sdk/issues/759)) ([`847301b`](https://github.com/box/box-python-sdk/commit/847301b43be335365858a80420459dffaada4302)) - ファイルリクエストAPIのサポート ([#747](https://github.com/box/box-python-sdk/issues/747)) ([`71895e3`](https://github.com/box/box-python-sdk/commit/71895e33ff7cf339fd8e095a5393f04b86791d5a)) ### バグ修正 - ダウンロードしたファイルのコンテンツをログに記録しないよう修正 ([#760](https://github.com/box/box-python-sdk/issues/760)) ([`5d26431`](https://github.com/box/box-python-sdk/commit/5d264314f949c1f4d9136efd5cf8f13dd5897c05)) - 分割アップロード後のファイルのクローズ処理を修正 ([#761](https://github.com/box/box-python-sdk/issues/761)) ([`b433692`](https://github.com/box/box-python-sdk/commit/b433692ecc07d62d011785a557128c1780ea1647)) **Source:** [https://ja.developer.box.com/changelog/2022-09-23-box-python-sdk-v350-released](https://ja.developer.box.com/changelog/2022-09-23-box-python-sdk-v350-released) --- ### Box Python SDK `v3.5.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.5.1のリリース バグ修正 接続のリセットエラーが発生した場合に接続を更新 (#771) (bcaab27)、#756 #757 #763 #765 #766 #770をクローズ 一意のjtiクレームが必要というエラーが発生した場合にJWT… # Box Python SDK v3.5.1のリリース ### バグ修正 - 接続のリセットエラーが発生した場合に接続を更新 ([#771](https://github.com/box/box-python-sdk/issues/771)) ([`bcaab27`](https://github.com/box/box-python-sdk/commit/bcaab277c3cabba498076d066366abbaa5507904))、[#756](https://github.com/box/box-python-sdk/issues/756) [#757](https://github.com/box/box-python-sdk/issues/757) [#763](https://github.com/box/box-python-sdk/issues/763) [#765](https://github.com/box/box-python-sdk/issues/765) [#766](https://github.com/box/box-python-sdk/issues/766) [#770](https://github.com/box/box-python-sdk/issues/770)をクローズ - 一意の`jti`クレームが必要というエラーが発生した場合にJWT認証を再試行 ([#768](https://github.com/box/box-python-sdk/issues/768)) ([`878e958`](https://github.com/box/box-python-sdk/commit/878e958abfb01740656aaff42492777753e4c8ea)) - Python 3.10で動作するように`pyjtw`の依存関係を更新 ([#772](https://github.com/box/box-python-sdk/issues/772)) ([`b13c5cd`](https://github.com/box/box-python-sdk/commit/b13c5cd34105d3f774d3f6d35db7aaf51dd3e247)) **Source:** [https://ja.developer.box.com/changelog/2022-11-30-box-python-sdk-v351-released](https://ja.developer.box.com/changelog/2022-11-30-box-python-sdk-v351-released) --- ### Box Python SDK `v3.6.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.6.0のリリース 新機能と機能強化 ごみ箱の項目の取得にマーカーのサポートを追加 (#781) (e2d1846) プロキシ資格情報をサニタイズ (#782) (97fb5aa… # Box Python SDK v3.6.0のリリース ### 新機能と機能強化 - ごみ箱の項目の取得にマーカーのサポートを追加 ([#781](https://github.com/box/box-python-sdk/issues/781)) ([`e2d1846`](https://github.com/box/box-python-sdk/commit/e2d1846818aeccfcba2a2f09a5cd924c9f6cd534)) - プロキシ資格情報をサニタイズ ([#782](https://github.com/box/box-python-sdk/issues/782)) ([`97fb5aa`](https://github.com/box/box-python-sdk/commit/97fb5aa2ed72008570abb327269ecec150632af9)) ### バグ修正 - ユーザーサービス利用規約のステータスの空のリストを取得する際のインデックスエラーを修正 ([#780](https://github.com/box/box-python-sdk/issues/780)) ([`23d763a`](https://github.com/box/box-python-sdk/commit/23d763ac4ba592131c43eb0319929db25d041c30)) - 再試行が必要な例外を指定 ([#784](https://github.com/box/box-python-sdk/issues/784)) ([`833cd46`](https://github.com/box/box-python-sdk/commit/833cd46bafe774f19925f78600df90477bf07055)) **Source:** [https://ja.developer.box.com/changelog/2023-01-03-box-python-sdk-v360-released](https://ja.developer.box.com/changelog/2023-01-03-box-python-sdk-v360-released) --- ### Box Python SDK `v3.6.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.6.1のリリース バグ修正 接続リセットエラーが発生した場合に、CCGおよびJWT認証リクエストを再試行 (#790) (205997d)、#789をクローズ # Box Python SDK v3.6.1のリリース ### バグ修正 - 接続リセットエラーが発生した場合に、CCGおよびJWT認証リクエストを再試行 ([#790](https://github.com/box/box-python-sdk/issues/790)) ([`205997d`](https://github.com/box/box-python-sdk/commit/205997db9870395b9dd042854c4201338dcf925f))、[#789](https://github.com/box/box-python-sdk/issues/789)をクローズ **Source:** [https://ja.developer.box.com/changelog/2023-01-09-box-python-sdk-v361-released](https://ja.developer.box.com/changelog/2023-01-09-box-python-sdk-v361-released) --- ### Box Python SDK `v3.6.2`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.6.2のリリース バグ修正 Connection brokenおよびConnection resetリクエストエラーの再試行 (#794) (f1a0aa4) # Box Python SDK v3.6.2のリリース ### バグ修正 - `Connection broken`および`Connection reset`リクエストエラーの再試行 ([#794](https://github.com/box/box-python-sdk/issues/794)) ([`f1a0aa4`](https://github.com/box/box-python-sdk/commit/f1a0aa434369f06e80654a9f5c4b796100881aa6)) **Source:** [https://ja.developer.box.com/changelog/2023-02-07-box-python-sdk-v362-released](https://ja.developer.box.com/changelog/2023-02-07-box-python-sdk-v362-released) --- ### Box Python SDK `v3.7.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.7.0のリリース 新機能と機能強化 retention_policiesとretention_policy_assignmentsに省略可能な新しいフィールドを追加 (#803) (8b72f7e… # Box Python SDK v3.7.0のリリース ### 新機能と機能強化 - `retention_policies`と`retention_policy_assignments`に省略可能な新しいフィールドを追加 ([#803](https://github.com/box/box-python-sdk/issues/803)) ([`8b72f7e`](https://github.com/box/box-python-sdk/commit/8b72f7e992bce676723a40ac12bde06c8cca3bfb)) - 分割アップロードにマルチスレッドを使用 ([#800](https://github.com/box/box-python-sdk/issues/800)) ([`506ce0d`](https://github.com/box/box-python-sdk/commit/506ce0d1e72ab4eeb6c5933a32c753e232a2f624)) **Source:** [https://ja.developer.box.com/changelog/2023-03-08-box-python-sdk-v370-released](https://ja.developer.box.com/changelog/2023-03-08-box-python-sdk-v370-released) --- ### Box Python SDK `v3.7.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.7.1のリリース バグ修正 ドキュメントに従って、リーガルホールドの作成における日付のフィルタのパラメータ名を変更 (#810) (f52c66a) # Box Python SDK v3.7.1のリリース ### バグ修正 - ドキュメントに従って、リーガルホールドの作成における日付のフィルタのパラメータ名を変更 ([#810](https://github.com/box/box-python-sdk/issues/810)) ([`f52c66a`](https://github.com/box/box-python-sdk/commit/f52c66a8a8399a776493537f692460ace2995e40)) **Source:** [https://ja.developer.box.com/changelog/2023-04-18-box-python-sdk-v371-released](https://ja.developer.box.com/changelog/2023-04-18-box-python-sdk-v371-released) --- ### Box Python SDK `v3.7.2`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.7.2のリリース バグ修正 urllib3の古いバージョンを使用 (#815) (ee29aa3) # Box Python SDK v3.7.2のリリース ### バグ修正 - `urllib3`の古いバージョンを使用 ([#815](https://github.com/box/box-python-sdk/issues/815)) ([`ee29aa3`](https://github.com/box/box-python-sdk/commit/ee29aa3fcf9ac71e9866913a87414cf625c0b805)) **Source:** [https://ja.developer.box.com/changelog/2023-05-26-box-python-sdk-v372-released](https://ja.developer.box.com/changelog/2023-05-26-box-python-sdk-v372-released) --- ### Box Python SDK `v3.7.3`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.7.3のリリース バグ修正 ログ記録が非アクティブな場合にログ記録用のデータ処理を停止し、json形式のレスポンスをキャッシュ (#824) (3079171) # Box Python SDK v3.7.3のリリース ### バグ修正 - ログ記録が非アクティブな場合にログ記録用のデータ処理を停止し、`json`形式のレスポンスをキャッシュ ([#824](https://github.com/box/box-python-sdk/issues/824)) ([`3079171`](https://github.com/box/box-python-sdk/commit/3079171f8dfc1a4c85f8587e8ce90e8fbd826ee4)) **Source:** [https://ja.developer.box.com/changelog/2023-07-07-box-python-sdk-v373-released](https://ja.developer.box.com/changelog/2023-07-07-box-python-sdk-v373-released) --- ### Box Python SDK `v3.8.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.8.0のリリース 新機能と機能強化 collaborationのすべてのフィールドの更新をサポート (#829) (6dc7ecc) # Box Python SDK v3.8.0のリリース ### 新機能と機能強化 - `collaboration`のすべてのフィールドの更新をサポート ([#829](https://github.com/box/box-python-sdk/issues/829)) ([`6dc7ecc`](https://github.com/box/box-python-sdk/commit/6dc7ecc6f9c94e7531c4147a3645927b85928b2c)) **Source:** [https://ja.developer.box.com/changelog/2023-07-25-box-python-sdk-v380-released](https://ja.developer.box.com/changelog/2023-07-25-box-python-sdk-v380-released) --- ### Box Python SDK `v3.8.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.8.1のリリース バグ修正 JSONレスポンス検証の再試行戦略を修正 (#831) (69834eb) # Box Python SDK v3.8.1のリリース ### バグ修正 - JSONレスポンス検証の再試行戦略を修正 ([#831](https://github.com/box/box-python-sdk/issues/831)) ([`69834eb`](https://github.com/box/box-python-sdk/commit/69834eb4c91a5aa4bc294a9fa49ecf753979d029)) **Source:** [https://ja.developer.box.com/changelog/2023-08-01-box-python-sdk-v381-released](https://ja.developer.box.com/changelog/2023-08-01-box-python-sdk-v381-released) --- ### Box Python SDK `v3.9.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.9.0のリリース 新機能と機能強化 SignテンプレートAPIをサポート (#835) (fbc783d) テンプレートIDを使用した署名リクエストの作成をサポート (#834) (4f11d75) バグ修正 ChunkedUploader… # Box Python SDK v3.9.0のリリース ### 新機能と機能強化 - SignテンプレートAPIをサポート ([#835](https://github.com/box/box-python-sdk/issues/835)) ([`fbc783d`](https://github.com/box/box-python-sdk/commit/fbc783d5af2e75f883f1a0051613c513139f68fb)) - テンプレートIDを使用した署名リクエストの作成をサポート ([#834](https://github.com/box/box-python-sdk/issues/834)) ([`4f11d75`](https://github.com/box/box-python-sdk/commit/4f11d7596488194fc740936fe987f42864003d41)) ### バグ修正 - `ChunkedUploader`がクローズされていない`ThreadPoolExecutor`インスタンスを再開 ([#840](https://github.com/box/box-python-sdk/issues/840)) ([`f210f00`](https://github.com/box/box-python-sdk/commit/f210f00ad823d7755309f2e8804641e0debf8197)) **Source:** [https://ja.developer.box.com/changelog/2023-09-06-box-python-sdk-v390-released](https://ja.developer.box.com/changelog/2023-09-06-box-python-sdk-v390-released) --- ### Box Python SDK `v3.9.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.9.1のリリース バグ修正 レスポンスコードが202の場合に、ZIPの作成を再試行しない (#845) (3f6ed4e)、#844をクローズ # Box Python SDK v3.9.1のリリース ### バグ修正 - レスポンスコードが202の場合に、ZIPの作成を再試行しない ([#845](https://github.com/box/box-python-sdk/issues/845)) ([`3f6ed4e`](https://github.com/box/box-python-sdk/commit/3f6ed4e1053a494ed9f2b79828850e059d0a1617))、[#844](https://github.com/box/box-python-sdk/issues/844)をクローズ **Source:** [https://ja.developer.box.com/changelog/2023-09-14-box-python-sdk-v391-released](https://ja.developer.box.com/changelog/2023-09-14-box-python-sdk-v391-released) --- ### Box Python SDK `v3.9.2`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v3.9.2のリリース バグ修正 urllib3ライブラリに対するバージョン2未満の制限を削除 (#851) (1dcd82e) # Box Python SDK v3.9.2のリリース ### バグ修正 - `urllib3`ライブラリに対するバージョン2未満の制限を削除 ([#851](https://github.com/box/box-python-sdk/issues/851)) ([`1dcd82e`](https://github.com/box/box-python-sdk/commit/1dcd82e93267bfc68e3a7f8068b3c45ab7e86daf)) **Source:** [https://ja.developer.box.com/changelog/2023-10-18-box-python-sdk-v392-released](https://ja.developer.box.com/changelog/2023-10-18-box-python-sdk-v392-released) --- ### Box Python SDK `v4.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v4.0.0のリリース 2つのパッケージ (手動で管理されているboxsdkパッケージと生成されたbox_sdk_genパッケージ) を含むBox Python SDK v… # Box Python SDK v4.0.0のリリース 2つのパッケージ (手動で管理されている`boxsdk`パッケージと生成された`box_sdk_gen`パッケージ) を含むBox Python SDK `v4`の新しいメジャーバージョンを導入しました。共存するこれらのパッケージにより、最新のBox APIの機能をより簡単に使用できるようになるほか、生成されたスタンドアロンのパッケージへの段階的な移行がサポートされます。 ### 重大な変更 - Box Python SDKの`v4`でサポートされるのは、Pythonバージョン3.8以上です。`v3`と比較した場合、Python 3.6と3.7のサポートは終了しています。 `v4`への移行の詳細については、[`v3`から`v4`への移行ガイド](https://github.com/box/box-python-sdk/blob/combined-sdk/migration-guides/from-v3-to-v4.md)を参照してください。 ### v4の新機能 このSDKバージョンでは、既存の`boxsdk`パッケージに加え、新しい`box_sdk_gen`パッケージを導入します。これにより、以下を利用できます。 **APIの全面的なサポート** — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 **迅速なAPIの更新** — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 **ドキュメントへの埋め込み** — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 **便利なメソッドの強化** — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 ### 重要な注意事項 このバージョンにより、ご利用のコードベースを`box_sdk_gen`パッケージに段階的に移行できます。パッケージ間の主な違いについては、[パッケージの移行ガイド](https://github.com/box/box-python-sdk/blob/combined-sdk/migration-guides/from-boxsdk-to-box_sdk_gen.md)を参照してください。 最終的には、生成された`box_sdk_gen`パッケージのみを含む`v10`に移行することをお勧めします。`v4`から`v10`に移行するには、こちらの[移行ガイド](https://github.com/box/box-python-sdk/blob/combined-sdk/migration-guides/from-v4-to-v10.md)に従います。 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning/)を参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 **Source:** [https://ja.developer.box.com/changelog/2025-10-23-box-python-sdk-v400-released](https://ja.developer.box.com/changelog/2025-10-23-box-python-sdk-v400-released) --- ### Box Python SDK `v4.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK v4.2.0のリリース 新機能と機能強化 boxsdkgen: AI抽出からconfidence_scoreとinclude_confidence_scoreを削除 (box/box-openapi#567) (#1237) (2ac940… # Box Python SDK v4.2.0のリリース ### 新機能と機能強化 - **boxsdkgen:** AI抽出から`confidence_score`と`include_confidence_score`を削除 (box/box-openapi[#567](https://github.com/box/box-python-sdk/issues/567)) ([#1237](https://github.com/box/box-python-sdk/issues/1237)) ([`2ac9408`](https://github.com/box/box-python-sdk/commit/2ac9408be69a86b7f57e7efdb433c8c049568fad)) - **boxsdkgen:** 新しい署名リクエストのメタデータをサポート (box/box-openapi[#565](https://github.com/box/box-python-sdk/issues/565)) ([#1221](https://github.com/box/box-python-sdk/issues/1221)) ([`56a93ac`](https://github.com/box/box-python-sdk/commit/56a93ac02fd746799ec8a831b61e06b2b7464479)) **Source:** [https://ja.developer.box.com/changelog/2025-12-10-box-python-sdk-v420-released](https://ja.developer.box.com/changelog/2025-12-10-box-python-sdk-v420-released) --- ### Box Python SDK Generated `v1.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.1.0のリリース バグ修正 自動更新のプルリクエストのCIを修正 (box/box-codegen#506) (#187) (5e59f6… # Box Python SDK Generated v1.1.0のリリース ### バグ修正 - 自動更新のプルリクエストのCIを修正 (`box/box-codegen`[#506](https://github.com/box/box-codegen/issues/506)) ([#187](https://github.com/box/box-codegen/issues/187)) ([`5e59f69`](https://github.com/box/box-codegen/commit/5e59f69591e01cd2caf0033e0023061093989aa5)) ### 新機能と機能強化 - 不足していたマーカーページネーションフィールドを追加し、新しいイベントタイプ`AppItemEventSource` `(box/box-openapi[#431](https://github.com/box/box-codegen/issues/431))`を導入 ([#189](https://github.com/box/box-codegen/issues/189)) ([`8d22ce2`](https://github.com/box/box-codegen/commit/8d22ce20d57f4b5dcb5b344ff6bfc67bcaa3568d)) **Source:** [https://ja.developer.box.com/changelog/2024-06-12-box-python-sdk-generated-v110-released](https://ja.developer.box.com/changelog/2024-06-12-box-python-sdk-generated-v110-released) --- ### Box Python SDK Generated `v1.10.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.10.0のリリース バグ修正 不足していたトークンのスコープを追加 (box/box-openapi#490) (#420) (41afe8b) Slack統合マッピングのバリアント構成の誤りを修正 (box/box… # Box Python SDK Generated v1.10.0のリリース ### バグ修正 - 不足していたトークンのスコープを追加 (box/box-openapi[#490](https://github.com/box/box-python-sdk-gen/issues/490)) ([#420](https://github.com/box/box-python-sdk-gen/issues/420)) ([`41afe8b`](https://github.com/box/box-python-sdk-gen/commit/41afe8bcbfc20e3ff22d34a273dcb416afb455da)) - Slack統合マッピングのバリアント構成の誤りを修正 (box/box-openapi[#492](https://github.com/box/box-python-sdk-gen/issues/492)) ([#423](https://github.com/box/box-python-sdk-gen/issues/423)) ([`d03ccd4`](https://github.com/box/box-python-sdk-gen/commit/d03ccd46b88c71450c1c67ecef439e25b97cbad7)) - `IntegrationMapping`スキーマ内のフィールドの順序を修正 (box/box-openapi[#497](https://github.com/box/box-python-sdk-gen/issues/497)) ([#438](https://github.com/box/box-python-sdk-gen/issues/438)) ([`13dea88`](https://github.com/box/box-python-sdk-gen/commit/13dea88c4e43748eed600f55a638c14ef0a1a60a)) ### 新機能と機能強化 - Box Doc Gen APIをサポート (box/box-codegen[#644](https://github.com/box/box-python-sdk-gen/issues/644)) ([#446](https://github.com/box/box-python-sdk-gen/issues/446)) ([`41fa63c`](https://github.com/box/box-python-sdk-gen/commit/41fa63c0a3c957a34b03163dfeaa44a03a5873ff)) **Source:** [https://ja.developer.box.com/changelog/2025-01-21-box-python-sdk-generated-v1100-released](https://ja.developer.box.com/changelog/2025-01-21-box-python-sdk-generated-v1100-released) --- ### Box Python SDK Generated `v1.11.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.11.0のリリース バグ修正 ファイルレプリゼンテーションのpagedおよびthumbプロパティのタイプを修正 (box/box-openapi#503) (#451) (e818fa6) 新機能と機能強化 Box Sign… # Box Python SDK Generated v1.11.0のリリース ### バグ修正 - ファイルレプリゼンテーションの`paged`および`thumb`プロパティのタイプを修正 (box/box-openapi[#503](https://github.com/box/box-python-sdk-gen/issues/503)) ([#451](https://github.com/box/box-python-sdk-gen/issues/451)) ([`e818fa6`](https://github.com/box/box-python-sdk-gen/commit/e818fa6c9c80e61a293fc24ed6f1a15978681662)) ### 新機能と機能強化 - Box Signの共有リクエストを追加 (box/box-openapi[#504](https://github.com/box/box-python-sdk-gen/issues/504)) ([#453](https://github.com/box/box-python-sdk-gen/issues/453)) ([`3590918`](https://github.com/box/box-python-sdk-gen/commit/359091873d26111b82f000e7837553cc799f2433)) - 機能: `/ai/ask`にHubのサポートを追加。`create_ai_ask`メソッドの`items`パラメータのタイプを`List[AiItemBase]`から`List[AiItemAsk]`に置き換え (box/box-openapi[#506](https://github.com/box/box-python-sdk-gen/issues/506)) ([#466](https://github.com/box/box-python-sdk-gen/issues/466)) ([`29f0364`](https://github.com/box/box-python-sdk-gen/commit/29f03649f3ec1471e859609d2b8bd77ad5d09106)) - `/ai/extract_structured`レスポンスのスキーマを更新 (box/box-codegen[#641](https://github.com/box/box-python-sdk-gen/issues/641)) ([#459](https://github.com/box/box-python-sdk-gen/issues/459)) ([`7c73cea`](https://github.com/box/box-python-sdk-gen/commit/7c73ceaa8888332b23bca4d6b64ef4999f942940)) **Source:** [https://ja.developer.box.com/changelog/2025-02-06-box-python-sdk-generated-v1110-released](https://ja.developer.box.com/changelog/2025-02-06-box-python-sdk-generated-v1110-released) --- ### Box Python SDK Generated `v1.11.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.11.1のリリース バグ修正 プロキシの使用を修正 (box/box-codegen#662) (#476) (e1d62ac) # Box Python SDK Generated v1.11.1のリリース ### バグ修正 - プロキシの使用を修正 (box/box-codegen[#662](https://github.com/box/box-python-sdk-gen/issues/662)) ([#476](https://github.com/box/box-python-sdk-gen/issues/476)) ([`e1d62ac`](https://github.com/box/box-python-sdk-gen/commit/e1d62ac5a8063bf37244329329100752c3a069af)) **Source:** [https://ja.developer.box.com/changelog/2025-02-12-box-python-sdk-generated-v1111-released](https://ja.developer.box.com/changelog/2025-02-12-box-python-sdk-generated-v1111-released) --- ### Box Python SDK Generated `v1.12.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.12.0のリリース バグ修正 誤ったJSONを含むレスポンスの処理を修正 (box/box-codegen#667) (#485) (46399d8)、#470をクローズ 新機能と機能強化 AI Studio API… # Box Python SDK Generated v1.12.0のリリース ### バグ修正 - 誤ったJSONを含むレスポンスの処理を修正 (box/box-codegen[#667](https://github.com/box/box-python-sdk-gen/issues/667)) ([#485](https://github.com/box/box-python-sdk-gen/issues/485)) ([`46399d8`](https://github.com/box/box-python-sdk-gen/commit/46399d8d91d9a22c75e03e870b091cac6d81237f))、[#470](https://github.com/box/box-python-sdk-gen/issues/470)をクローズ ### 新機能と機能強化 - AI Studio APIをサポート (box/box-codegen[#626](https://github.com/box/box-python-sdk-gen/issues/626)) ([#483](https://github.com/box/box-python-sdk-gen/issues/483)) ([`bd7fefa`](https://github.com/box/box-python-sdk-gen/commit/bd7fefad8f2d941676732ea66c5b0d75bae9e703)) **Source:** [https://ja.developer.box.com/changelog/2025-02-20-box-python-sdk-generated-v1120-released](https://ja.developer.box.com/changelog/2025-02-20-box-python-sdk-generated-v1120-released) --- ### Box Python SDK Generated `v1.13.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.13.0のリリース バグ修正 verification_phone_numberプロパティを追加して署名リクエストを作成 (box/box-openapi#515) (#503) (6d19d1… # Box Python SDK Generated v1.13.0のリリース ### バグ修正 - `verification_phone_number`プロパティを追加して署名リクエストを作成 (box/box-openapi[#515](https://github.com/box/box-python-sdk-gen/issues/515)) ([#503](https://github.com/box/box-python-sdk-gen/issues/503)) ([`6d19d19`](https://github.com/box/box-python-sdk-gen/commit/6d19d197481a578d7d5ad8d632ac6f5c06bd3dce)) ### 新機能と機能強化 - 共有リンクのアプリ項目を検索するエンドポイントを追加 (box/box-openapi[#514](https://github.com/box/box-python-sdk-gen/issues/514)) ([#502](https://github.com/box/box-python-sdk-gen/issues/502)) ([`fd6c693`](https://github.com/box/box-python-sdk-gen/commit/fd6c6933f0fb518830e9ac810fd511a0cf60b429)) - Teams統合マッピング (リスト) APIを追加 (box/box-openapi[#517](https://github.com/box/box-python-sdk-gen/issues/517)) ([#505](https://github.com/box/box-python-sdk-gen/issues/505)) ([`d1aa250`](https://github.com/box/box-python-sdk-gen/commit/d1aa250fb01fbf742daf266d4458ba2eab2c5669)) - 事前チェックを伴うアップロードをサポート (box/box-codegen[#676](https://github.com/box/box-python-sdk-gen/issues/676)) ([#515](https://github.com/box/box-python-sdk-gen/issues/515)) ([`bb4597e`](https://github.com/box/box-python-sdk-gen/commit/bb4597e40d49e20eca44c4414e406b1352af1a2b)) **Source:** [https://ja.developer.box.com/changelog/2025-03-18-box-python-sdk-generated-v1130-released](https://ja.developer.box.com/changelog/2025-03-18-box-python-sdk-generated-v1130-released) --- ### Box Python SDK Generated `v1.14.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.14.0のリリース バグ修正 リクエストのデフォルトのタイムアウトを設定 (box/box-codegen#707) (#552) (66b87c8) 新機能と機能強化 Sign… # Box Python SDK Generated v1.14.0のリリース ### バグ修正 - リクエストのデフォルトのタイムアウトを設定 (box/box-codegen[#707](https://github.com/box/box-python-sdk-gen/issues/707)) ([#552](https://github.com/box/box-python-sdk-gen/issues/552)) ([`66b87c8`](https://github.com/box/box-python-sdk-gen/commit/66b87c8986ce2f5fdb3a9eac995ef8a9643bcd76)) ### 新機能と機能強化 - Signテンプレートスキーマにセキュリティ設定のプロパティを追加 (box/box-openapi[#518](https://github.com/box/box-python-sdk-gen/issues/518)) ([#543](https://github.com/box/box-python-sdk-gen/issues/543)) ([`0a45d21`](https://github.com/box/box-python-sdk-gen/commit/0a45d218d1aa3fa62da7b5c8c01506fb657c0b36)) - エラーの機密データのサニタイズをサポート (box/box-codegen[#695](https://github.com/box/box-python-sdk-gen/issues/695)) ([#533](https://github.com/box/box-python-sdk-gen/issues/533)) ([`abb7b1d`](https://github.com/box/box-python-sdk-gen/commit/abb7b1d16a192edd99ff1fc4fb7c4caf79ee5f10)) **Source:** [https://ja.developer.box.com/changelog/2025-05-02-box-python-sdk-generated-v1140-released](https://ja.developer.box.com/changelog/2025-05-02-box-python-sdk-generated-v1140-released) --- ### Box Python SDK Generated `v1.15.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.15.0のリリース バグ修正 本文をエスケープする場合としない場合のWebhook署名を計算 (box/box-codegen#737) (#607) (e5118b8) トークンの取得にretrieveToken… # Box Python SDK Generated v1.15.0のリリース ### バグ修正 - 本文をエスケープする場合としない場合のWebhook署名を計算 (box/box-codegen[#737](https://github.com/box/box-python-sdk-gen/issues/737)) ([#607](https://github.com/box/box-python-sdk-gen/issues/607)) ([`e5118b8`](https://github.com/box/box-python-sdk-gen/commit/e5118b8a257a042510374d91bd62a1f98c662fef)) - トークンの取得に`retrieveToken`メソッドを使用するようダウンスコープトークンを修正 (box/box-codegen[#731](https://github.com/box/box-python-sdk-gen/issues/731)) ([#598](https://github.com/box/box-python-sdk-gen/issues/598)) ([`e492685`](https://github.com/box/box-python-sdk-gen/commit/e4926851edccd4ee7e66157050cedd0d01cec5ea)) - Webhook署名を計算する際のスラッシュのエスケープを修正 (box/box-codegen[#736](https://github.com/box/box-python-sdk-gen/issues/736)) ([#603](https://github.com/box/box-python-sdk-gen/issues/603)) ([`430b175`](https://github.com/box/box-python-sdk-gen/commit/430b1754ec840582e28a277c6c8d369cbe7ebdf5)) - HMAC署名に定数時間比較を使用 (box/box-codegen[#739](https://github.com/box/box-python-sdk-gen/issues/739)) ([#610](https://github.com/box/box-python-sdk-gen/issues/610)) ([`6f6660c`](https://github.com/box/box-python-sdk-gen/commit/6f6660c8f3aa2b7b75b0fcd4ed015d8d761cd77f)) ### 新機能と機能強化 - AIエージェントの警告を追加し、より多くの種類のメタデータ値を許可 (box/box-openapi[#520](https://github.com/box/box-python-sdk-gen/issues/520)) ([#567](https://github.com/box/box-python-sdk-gen/issues/567)) ([`86aa1cc`](https://github.com/box/box-python-sdk-gen/commit/86aa1ccadac9acead7bceeafb50e45f38eb2d9cc)) - ShieldリストのAPIを追加 (box/box-openapi[#528](https://github.com/box/box-python-sdk-gen/issues/528)) ([#601](https://github.com/box/box-python-sdk-gen/issues/601)) ([`f980f65`](https://github.com/box/box-python-sdk-gen/commit/f980f6544a58a5c64ab0b3ec13b2771b81ea25ed)) - AI APIにIBMモデルのサポートを追加 (box/box-openapi[#522](https://github.com/box/box-python-sdk-gen/issues/522)) ([#568](https://github.com/box/box-python-sdk-gen/issues/568)) ([`767547a`](https://github.com/box/box-python-sdk-gen/commit/767547ae070909852800c447e65cbcc95b97c5a3)) - リーガルホールドとAIモデルを更新 (box/box-openapi[#526](https://github.com/box/box-python-sdk-gen/issues/526)) ([#599](https://github.com/box/box-python-sdk-gen/issues/599)) ([`d56228d`](https://github.com/box/box-python-sdk-gen/commit/d56228d81bd9777af5431ccc9d05233e13a0c2ed)) **Source:** [https://ja.developer.box.com/changelog/2025-06-12-box-python-sdk-generated-v1150-released](https://ja.developer.box.com/changelog/2025-06-12-box-python-sdk-generated-v1150-released) --- ### Box Python SDK Generated `v1.16.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.16.0のリリース バグ修正 イベントのnext_stream_positionプロパティタイプをintに指定 (box/box-openapi#535) (#644) (64069db) 新機能と機能強化 AI… # Box Python SDK Generated v1.16.0のリリース ### バグ修正 - イベントの`next_stream_position`プロパティタイプを`int`に指定 (box/box-openapi[#535](https://github.com/box/box-python-sdk-gen/issues/535)) ([#644](https://github.com/box/box-python-sdk-gen/issues/644)) ([`64069db`](https://github.com/box/box-python-sdk-gen/commit/64069db8da33988c173380defd6be065daa02496)) ### 新機能と機能強化 - AIスプレッドシートプロセッサを追加 (box/box-openapi[#533](https://github.com/box/box-python-sdk-gen/issues/533)) ([#630](https://github.com/box/box-python-sdk-gen/issues/630)) ([`6635757`](https://github.com/box/box-python-sdk-gen/commit/66357578218913240bc923cb0dc771157ec95f54)) - アーカイブの公開APIを追加 (box/box-openapi[#540](https://github.com/box/box-python-sdk-gen/issues/540)) ([#651](https://github.com/box/box-python-sdk-gen/issues/651)) ([`c36d1db`](https://github.com/box/box-python-sdk-gen/commit/c36d1dbff42c89876c037983c792c5c7282459cc)) - 新しいHubs APIとHubの項目APIを追加 (box/box-openapi[#538](https://github.com/box/box-python-sdk-gen/issues/538)) ([#645](https://github.com/box/box-python-sdk-gen/issues/645)) ([`1daa3e8`](https://github.com/box/box-python-sdk-gen/commit/1daa3e8814403c78ed2a1d64187b8e4c379028fe)) - ネットワークの例外の再試行戦略に新しいプロパティを追加 (box/box-codegen[#763](https://github.com/box/box-python-sdk-gen/issues/763)) ([#650](https://github.com/box/box-python-sdk-gen/issues/650)) ([`13f9593`](https://github.com/box/box-python-sdk-gen/commit/13f9593dbc4a45d094ee5709d602188ef341a1a5)) - `Metadata Error`の新しいスキーマを追加 (box/box-openapi[#539](https://github.com/box/box-python-sdk-gen/issues/539)) ([#646](https://github.com/box/box-python-sdk-gen/issues/646)) ([`49d7f34`](https://github.com/box/box-python-sdk-gen/commit/49d7f349e1be4e23939ef10db1edfc6042b98175)) - JWTの秘密キー復号メカニズムの挿入を許可 (box/box-codegen[#754](https://github.com/box/box-python-sdk-gen/issues/754)) ([#636](https://github.com/box/box-python-sdk-gen/issues/636)) ([`4ea0af5`](https://github.com/box/box-python-sdk-gen/commit/4ea0af5f8f5b5516a7c23d7912c34690c017db29)) - Webhookの検証チェックを改善 (box/box-codegen[#745](https://github.com/box/box-python-sdk-gen/issues/745)) ([#628](https://github.com/box/box-python-sdk-gen/issues/628)) ([`f0ece63`](https://github.com/box/box-python-sdk-gen/commit/f0ece639d761c765b3bc59fbe3ba8582af755178)) - Hubsのベータ版エンドポイントをサポート (box/box-openapi[#531](https://github.com/box/box-python-sdk-gen/issues/531)) ([#622](https://github.com/box/box-python-sdk-gen/issues/622)) ([`b5e95fe`](https://github.com/box/box-python-sdk-gen/commit/b5e95fe5b219d067028aa395170718eca0d62189)) - AI Studioの新しいツールをサポート (box/box-openapi[#534](https://github.com/box/box-python-sdk-gen/issues/534)) ([#633](https://github.com/box/box-python-sdk-gen/issues/633)) ([`ac76eb2`](https://github.com/box/box-python-sdk-gen/commit/ac76eb2d7c5560b30c4cec171dd90b0a0ece4ab5)) **Source:** [https://ja.developer.box.com/changelog/2025-08-05-box-python-sdk-generated-v1160-released](https://ja.developer.box.com/changelog/2025-08-05-box-python-sdk-generated-v1160-released) --- ### Box Python SDK Generated `v1.17.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.17.0のリリース 新機能と機能強化 不足していたWebhookイベントを追加 (box/box-openapi#554) (#708) (3d25542) Long pollingを行うイベントをサポート (box/box… # Box Python SDK Generated v1.17.0のリリース ### 新機能と機能強化 - 不足していたWebhookイベントを追加 (box/box-openapi[#554](https://github.com/box/box-python-sdk-gen/issues/554)) ([#708](https://github.com/box/box-python-sdk-gen/issues/708)) ([`3d25542`](https://github.com/box/box-python-sdk-gen/commit/3d2554239b0bede7a3158cf88913592643c3e22b)) - Long pollingを行うイベントをサポート (box/box-codegen[#757](https://github.com/box/box-python-sdk-gen/issues/757)) ([#673](https://github.com/box/box-python-sdk-gen/issues/673)) ([`481fbeb`](https://github.com/box/box-python-sdk-gen/commit/481fbeb1412ecc137c0090dd4b37fe9ad75db6b0)) **Source:** [https://ja.developer.box.com/changelog/2025-09-05-box-python-sdk-generated-v1170-released](https://ja.developer.box.com/changelog/2025-09-05-box-python-sdk-generated-v1170-released) --- ### Box Python SDK Generated `v1.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.2.0のリリース バグ修正 分割アップロードの信頼性を改善 (#224) (05f0353) 新機能と機能強化 ユーザーコラボレーションにis_activeパラメータを追加 (box/box-openapi#43… # Box Python SDK Generated v1.2.0のリリース ### バグ修正 - 分割アップロードの信頼性を改善 ([#224](https://github.com/box/box-codegen/issues/224)) ([`05f0353`](https://github.com/box/box-codegen/commit/05f035354a76dac0d71849523e4a28641ac92aee)) ### 新機能と機能強化 - ユーザーコラボレーションに`is_active`パラメータを追加 (box/box-openapi[#437](https://github.com/box/box-codegen/issues/437)) ([#222](https://github.com/box/box-codegen/issues/222)) ([`2b7bbe4`](https://github.com/box/box-codegen/commit/2b7bbe41ed23e50c6717148fa5e9e2c24a3f5897)) - ステータスコード`202`のリクエストを再試行 (box/box-codegen[#511](https://github.com/box/box-codegen/issues/511)) ([#204](https://github.com/box/box-codegen/issues/204)) ([`f50ad6e`](https://github.com/box/box-codegen/commit/f50ad6e236003901792eb333738020cbdd8c8ae3)) - AIエージェントAPIをサポート (box/box-codegen[#531](https://github.com/box/box-codegen/issues/531)) ([#229](https://github.com/box/box-codegen/issues/229)) ([`c565383`](https://github.com/box/box-codegen/commit/c5653839e1a150377e7d5c4764d4c2a7b7d07c4a)) - `null`値のフィールドの送信をサポート (box/box-codegen[#528](https://github.com/box/box-codegen/issues/528)) ([#230](https://github.com/box/box-codegen/issues/230)) ([`f91076e`](https://github.com/box/box-codegen/commit/f91076e1bfbccae4a0dff4b66d7bafb5357858c5))、[#202](https://github.com/box/box-codegen/issues/202)をクローズ **Source:** [https://ja.developer.box.com/changelog/2024-07-26-box-python-sdk-generated-v120-released](https://ja.developer.box.com/changelog/2024-07-26-box-python-sdk-generated-v120-released) --- ### Box Python SDK Generated `v1.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.3.0のリリース バグ修正 マルチパートリクエストのfetchメソッドを修正 (box/box-codegen#545) (#266) (08a0818) 新機能と機能強化 分割アップロードのエンドポイントURL… # Box Python SDK Generated v1.3.0のリリース ### バグ修正 - マルチパートリクエストのfetchメソッドを修正 (box/box-codegen[#545](https://github.com/box/box-codegen/issues/545)) ([#266](https://github.com/box/box-codegen/issues/266)) ([`08a0818`](https://github.com/box/box-codegen/commit/08a0818995d64995c3e2720a459f9221c9ca1dea)) ### 新機能と機能強化 - 分割アップロードのエンドポイントURLをパラメータ化 (box/box-openapi[#444](https://github.com/box/box-codegen/issues/444)) ([#264](https://github.com/box/box-codegen/issues/264)) ([`b5bce24`](https://github.com/box/box-codegen/commit/b5bce24478c70ae6bb997adc773a0e2a76223568)) **Source:** [https://ja.developer.box.com/changelog/2024-08-12-box-python-sdk-generated-v130-released](https://ja.developer.box.com/changelog/2024-08-12-box-python-sdk-generated-v130-released) --- ### Box Python SDK Generated `v1.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.4.0のリリース バグ修正 Signテンプレートの署名者に不足していたフィールドを追加し、AIスキーマを修正 (box/box-openapi#451) (#281) (0708351) IntegrationMapping… # Box Python SDK Generated v1.4.0のリリース ### バグ修正 - Signテンプレートの署名者に不足していたフィールドを追加し、AIスキーマを修正 (box/box-openapi[#451](https://github.com/box/box-codegen/issues/451)) ([#281](https://github.com/box/box-codegen/issues/281)) ([`0708351`](https://github.com/box/box-codegen/commit/0708351171eca1fe4914b823a4257bbabd3cd075)) - `IntegrationMapping`スキーマを修正 (box/box-codegen[#551](https://github.com/box/box-codegen/issues/551)) ([#279](https://github.com/box/box-codegen/issues/279)) ([`0337e06`](https://github.com/box/box-codegen/commit/0337e06c6bf6d35dd51409c429b7fef295f5a406)) ### 新機能と機能強化 - Box AIのメソッドに新しいパラメータを追加し、`AiResponseFull`バリアントを導入 (box/box-openapi[#446](https://github.com/box/box-codegen/issues/446)) ([#277](https://github.com/box/box-codegen/issues/277)) ([`1267a21`](https://github.com/box/box-codegen/commit/1267a215fbc8292059603665a53b0159d7a1242c)) - `FetchOptions`にURLを追加 (box/box-codegen[#549](https://github.com/box/box-codegen/issues/549)) ([#283](https://github.com/box/box-codegen/issues/283)) ([`dd05b1c`](https://github.com/box/box-codegen/commit/dd05b1c2b1687d8647f4116c022dbf1890984adc)) **Source:** [https://ja.developer.box.com/changelog/2024-08-23-box-python-sdk-generated-v140-released](https://ja.developer.box.com/changelog/2024-08-23-box-python-sdk-generated-v140-released) --- ### Box Python SDK Generated `v1.4.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.4.1のリリース バグ修正 Pythonでのダウンロード処理中にデータをメモリ内に保存しない (box/box-codegen#557) (#294) (7c645ae) # Box Python SDK Generated v1.4.1のリリース ### バグ修正 - Pythonでのダウンロード処理中にデータをメモリ内に保存しない (box/box-codegen[#557](https://github.com/box/box-codegen/issues/557)) ([#294](https://github.com/box/box-codegen/issues/294)) ([`7c645ae`](https://github.com/box/box-codegen/commit/7c645aea9fa8575531e0b40ffc997a0f65b6e409)) **Source:** [https://ja.developer.box.com/changelog/2024-08-30-box-python-sdk-generated-v141-released](https://ja.developer.box.com/changelog/2024-08-30-box-python-sdk-generated-v141-released) --- ### Box Python SDK Generated `v1.5.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.5.0のリリース バグ修正 不足していたライセンスをsetup.pyに追加 (box/box-codegen#562) (#307) (679d789) メタデータクエリの結果のバリアントを修正 (box/box… # Box Python SDK Generated v1.5.0のリリース ### バグ修正 - 不足していたライセンスを`setup.py`に追加 (box/box-codegen[#562](https://github.com/box/box-codegen/issues/562)) ([#307](https://github.com/box/box-codegen/issues/307)) ([`679d789`](https://github.com/box/box-codegen/commit/679d7891b2a20e7407b8c9f00bd95c3b294ab861)) - メタデータクエリの結果のバリアントを修正 (box/box-openapi[#456](https://github.com/box/box-codegen/issues/456)) ([#313](https://github.com/box/box-codegen/issues/313)) ([`8830303`](https://github.com/box/box-codegen/commit/883030335e2a3c12a5e0b01d8a82df30ccce16a6)) ### 新機能と機能強化 - プロキシのサポートを追加 (box/box-codegen[#559](https://github.com/box/box-codegen/issues/559)) ([#302](https://github.com/box/box-codegen/issues/302)) ([`3d881ac`](https://github.com/box/box-codegen/commit/3d881acdebf2b18e2f0f82211f5abdcc32d1ddb0)) - 未加工の`json`レスポンスを格納するための`raw_data`フィールドを導入 (box/box-codegen[#566](https://github.com/box/box-codegen/issues/566)) ([#319](https://github.com/box/box-codegen/issues/319)) ([`3776dc3`](https://github.com/box/box-codegen/commit/3776dc3d44bc09eb68da99f45e36e058dca2607e)) - `ai/extract`および`ai/extract_structured`エンドポイントをサポート (box/box-codegen[#564](https://github.com/box/box-codegen/issues/564)) ([#317](https://github.com/box/box-codegen/issues/317)) ([`b3d8da4`](https://github.com/box/box-codegen/commit/b3d8da41007a9d47b73b699fd84da6f9540866d2)) - アプリ項目の関連付けをサポート (box/box-codegen[#561](https://github.com/box/box-codegen/issues/561)) ([#299](https://github.com/box/box-codegen/issues/299)) ([`8b6ea0b`](https://github.com/box/box-codegen/commit/8b6ea0bbec719a36eb11b6d214c08801c4f1a40b)) **Source:** [https://ja.developer.box.com/changelog/2024-09-18-box-python-sdk-generated-v150-released](https://ja.developer.box.com/changelog/2024-09-18-box-python-sdk-generated-v150-released) --- ### Box Python SDK Generated `v1.5.1`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.5.1のリリース バグ修正 プロキシ資格情報のないプロキシurlを修正 (box/box-codegen#568) (#322) (fb19160)、#31… # Box Python SDK Generated v1.5.1のリリース ### バグ修正 - プロキシ資格情報のないプロキシ`url`を修正 (box/box-codegen[#568](https://github.com/box/box-codegen/issues/568)) ([#322](https://github.com/box/box-codegen/issues/322)) ([`fb19160`](https://github.com/box/box-codegen/commit/fb19160307b58d5f08bb12e0f846d71ff936ad6a))、[#318](https://github.com/box/box-codegen/issues/318)をクローズ - 分割アップロードで最後の空のチャンクを送信しないように修正 (box/box-codegen[#569](https://github.com/box/box-codegen/issues/569)) ([#324](https://github.com/box/box-codegen/issues/324)) ([`1605f04`](https://github.com/box/box-codegen/commit/1605f0495994b333e735bc98f28fa714324b75f5))、[#321](https://github.com/box/box-codegen/issues/321)をクローズ **Source:** [https://ja.developer.box.com/changelog/2024-09-19-box-python-sdk-generated-v151-released](https://ja.developer.box.com/changelog/2024-09-19-box-python-sdk-generated-v151-released) --- ### Box Python SDK Generated `v1.6.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.6.0のリリース バグ修正 マルチパートリクエストのストリーム位置を0に設定 (box/box-codegen#581) (#348) (fa6942c) クライアントエラースキーマを更新 (box/box-openapi… # Box Python SDK Generated v1.6.0のリリース ### バグ修正 - マルチパートリクエストのストリーム位置を0に設定 (box/box-codegen[#581](https://github.com/box/box-codegen/issues/581)) ([#348](https://github.com/box/box-codegen/issues/348)) ([`fa6942c`](https://github.com/box/box-codegen/commit/fa6942c231024947250955ccc52f352744ab5f38)) - クライアントエラースキーマを更新 (box/box-openapi[#467](https://github.com/box/box-codegen/issues/467)) ([#347](https://github.com/box/box-codegen/issues/347)) ([`a42a253`](https://github.com/box/box-codegen/commit/a42a2532337c79d20b6524fda0acf717d9ccbd5f)) - リクエストの再試行時に元のストリーム位置を使用 (box/box-codegen[#583](https://github.com/box/box-codegen/issues/583)) ([#358](https://github.com/box/box-codegen/issues/358)) ([`060b4dc`](https://github.com/box/box-codegen/commit/060b4dc2b8bbbc1e17cce0fc049394e0527952b7)) - コメントにバックスラッシュが含まれる場合に未加工の`docstrings`を使用 (box/box-codegen[#571](https://github.com/box/box-codegen/issues/571)) ([#330](https://github.com/box/box-codegen/issues/330)) ([`8dd8cb7`](https://github.com/box/box-codegen/commit/8dd8cb71105c200bd03f5f894a4dbfb42baf0865)) ### 新機能と機能強化 - `download_file_to_output_stream`メソッドを`DownloadsManager`に追加 (box/box-codegen[#575](https://github.com/box/box-codegen/issues/575)) ([#334](https://github.com/box/box-codegen/issues/334)) ([`6820d08`](https://github.com/box/box-codegen/commit/6820d08f37c5c0605a580391bef2dc4f2a384c00)) - AI LLMエンドポイントのAWS `params`を追加 (box/box-openapi[#478](https://github.com/box/box-codegen/issues/478)) ([#354](https://github.com/box/box-codegen/issues/354)) ([`c8fa2c1`](https://github.com/box/box-codegen/commit/c8fa2c1131154d07a500290db6a7b34b06005c2b)) **Source:** [https://ja.developer.box.com/changelog/2024-10-30-box-python-sdk-generated-v160-released](https://ja.developer.box.com/changelog/2024-10-30-box-python-sdk-generated-v160-released) --- ### Box Python SDK Generated `v1.7.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.7.0のリリース 新機能と機能強化 IDを指定してコレクションを取得エンドポイントをサポート (box/box-codegen#595) (#366) (1db5722)、#355をクローズ # Box Python SDK Generated v1.7.0のリリース ### 新機能と機能強化 - IDを指定してコレクションを取得エンドポイントをサポート (box/box-codegen[#595](https://github.com/box/box-codegen/issues/595)) ([#366](https://github.com/box/box-codegen/issues/366)) ([`1db5722`](https://github.com/box/box-codegen/commit/1db5722f7d02694739f1a52a6b2ebe0c406960b0))、[#355](https://github.com/box/box-codegen/issues/355)をクローズ **Source:** [https://ja.developer.box.com/changelog/2024-11-04-box-python-sdk-generated-v170-released](https://ja.developer.box.com/changelog/2024-11-04-box-python-sdk-generated-v170-released) --- ### Box Python SDK Generated `v1.8.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.8.0のリリース バグ修正 列挙型の使用を修正 (box/box-codegen#615) (#387) (a9abccb)、#385をクローズ コンテンツのないステータスコードをサポート (box/box-codegen… # Box Python SDK Generated v1.8.0のリリース ### バグ修正 - 列挙型の使用を修正 (box/box-codegen[#615](https://github.com/box/box-python-sdk-gen/issues/615)) ([#387](https://github.com/box/box-python-sdk-gen/issues/387)) ([`a9abccb`](https://github.com/box/box-python-sdk-gen/commit/a9abccb8e552c971774ea1a9fa2096395a40317b))、[#385](https://github.com/box/box-python-sdk-gen/issues/385)をクローズ - コンテンツのないステータスコードをサポート (box/box-codegen[#604](https://github.com/box/box-python-sdk-gen/issues/604)) ([#378](https://github.com/box/box-python-sdk-gen/issues/378)) ([`051716c`](https://github.com/box/box-python-sdk-gen/commit/051716c84b4f0ab32b82608f94e3cf3ba09b390b)) - コラボレーション、メタデータ、コレクションのリソースを更新 (box/box-openapi[#483](https://github.com/box/box-python-sdk-gen/issues/483)) ([#380](https://github.com/box/box-python-sdk-gen/issues/380)) ([`0d45fed`](https://github.com/box/box-python-sdk-gen/commit/0d45fedc0b7b96234ef3901f412f259b1cae4c1a)) ### 新機能と機能強化 - カスタムHTTPリクエストを行うためのメソッドを公開 (box/box-codegen[#610](https://github.com/box/box-python-sdk-gen/issues/610)) ([#393](https://github.com/box/box-python-sdk-gen/issues/393)) ([`55a23d9`](https://github.com/box/box-python-sdk-gen/commit/55a23d9d6840642c248ab3b967ad5c2635484c8c)) - ファイルのダウンロードURLとファイルのサムネイルURLの取得をサポート (box/box-codegen[#617](https://github.com/box/box-python-sdk-gen/issues/617)) ([#397](https://github.com/box/box-python-sdk-gen/issues/397)) ([`fd609ab`](https://github.com/box/box-python-sdk-gen/commit/fd609ab9fe94da43b1a71815597c49471e157bb8)) **Source:** [https://ja.developer.box.com/changelog/2024-12-02-box-python-sdk-generated-v180-released](https://ja.developer.box.com/changelog/2024-12-02-box-python-sdk-generated-v180-released) --- ### Box Python SDK Generated `v1.9.0`のリリース **Type:** changelog | **Section:** Changelog Box Python SDK Generated v1.9.0のリリース バグ修正 SignRequestから未使用のパラメータを削除 (box/box-openapi#489) (#411) (578d9b4) 新機能と機能強化 ai_agentの情報をAiResponse… # Box Python SDK Generated v1.9.0のリリース ### バグ修正 - `SignRequest`から未使用のパラメータを削除 (box/box-openapi[#489](https://github.com/box/box-python-sdk-gen/issues/489)) ([#411](https://github.com/box/box-python-sdk-gen/issues/411)) ([`578d9b4`](https://github.com/box/box-python-sdk-gen/commit/578d9b48da7e55d2e3e4736c871400dc90d826b1)) ### 新機能と機能強化 - `ai_agent`の情報を`AiResponse`に追加 (box/box-openapi[#485](https://github.com/box/box-python-sdk-gen/issues/485)) ([#402](https://github.com/box/box-python-sdk-gen/issues/402)) ([`351a5b8`](https://github.com/box/box-python-sdk-gen/commit/351a5b8dfbc8a0095bafbbf0245d8575217fc3c9)) - ネットワーククライアントの実装を置き換えるサポートを追加 (box/box-codegen[#629](https://github.com/box/box-python-sdk-gen/issues/629)) ([#415](https://github.com/box/box-python-sdk-gen/issues/415)) ([`fb118dd`](https://github.com/box/box-python-sdk-gen/commit/fb118ddb1cbfb1d6a72e657bed57088fdff1ec02)) - 再試行戦略のカスタマイズを許可 (box/box-codegen[#635](https://github.com/box/box-python-sdk-gen/issues/635)) ([#418](https://github.com/box/box-python-sdk-gen/issues/418)) ([`8dfb3ed`](https://github.com/box/box-python-sdk-gen/commit/8dfb3ed13196de37a78a53325079e284c7e921d5)) - ファイル、フォルダ、ウェブリンクの更新で`userId`パラメータ (省略可) をサポート (box/box-openapi[#488](https://github.com/box/box-python-sdk-gen/issues/488)) ([#406](https://github.com/box/box-python-sdk-gen/issues/406)) ([`d9cff4c`](https://github.com/box/box-python-sdk-gen/commit/d9cff4c6adc9c5cc9ce1edf73dffe8ac5979ce71)) - Webhookメッセージの検証をサポート (box/box-codegen[#631](https://github.com/box/box-python-sdk-gen/issues/631)) ([#416](https://github.com/box/box-python-sdk-gen/issues/416)) ([`0fec20b`](https://github.com/box/box-python-sdk-gen/commit/0fec20b281fe195f0dd6aaf8f164bdd414587fc4)) **Source:** [https://ja.developer.box.com/changelog/2024-12-30-box-python-sdk-generated-v190-released](https://ja.developer.box.com/changelog/2024-12-30-box-python-sdk-generated-v190-released) --- ### Box SDKの`v10` **Type:** changelog | **Section:** Changelog Box SDKのv10 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、Box SDK v10を導入しました。現在は各SDKで個別のブランチとして利用可能なv10が、最終的にメインブランチになります。 # Box SDKのv10 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、Box SDK `v10`を導入しました。現在は各SDKで個別のブランチとして利用可能な`v10`が、最終的にメインブランチになります。 `v10`の新機能: - APIの全面的なサポート — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 - 迅速なAPIの更新 — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 - ドキュメントへの埋め込み — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 - 便利なメソッドの強化 — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 このバージョンには、BoxのコアSDKと並行して以前に開発された、Boxの次世代SDKのアーティファクトが含まれています。Boxでは、移行を促進し、最新の機能を利用できるようにするため、まもなく、両方のアーティファクトを含むメジャーバージョンを追加でリリースする予定です。すぐに対応する必要はありません。現在のSDKのバージョンを使用している場合、既存のコードは、変更しなくても引き続き動作します。ただし、`v10`への移行には重大な変更が伴います。詳細や移行ガイドについては、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning)を参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://community.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-09-17-box-sdk-v10](https://ja.developer.box.com/changelog/2025-09-17-box-sdk-v10) --- ### Box SDKのメジャーバージョン **Type:** changelog | **Section:** Changelog Box SDKのメジャーバージョン 2つのパッケージ (手動で管理されているパッケージと生成されたパッケージ) を含むBox SDKの新しいメジャーリリースを導入しました。共存するこれらのパッケージにより、最新のBox APIの機能をより簡単に使用できるようになるほか、生成されたスタンドアロンのパッケージへの段階的な移行がサポートされます。 # Box SDKのメジャーバージョン 2つのパッケージ (手動で管理されているパッケージと生成されたパッケージ) を含むBox SDKの新しいメジャーリリースを導入しました。共存するこれらのパッケージにより、最新のBox APIの機能をより簡単に使用できるようになるほか、生成されたスタンドアロンのパッケージへの段階的な移行がサポートされます。 ## 概要 この移行プロセスを容易にするために、積極的に管理されているBoxコアSDKのメジャーバージョンが2つあります。 - 手動で管理されているパッケージと生成されたパッケージを含む、**シーケンシャルなバージョン管理に従っている最新のメジャーバージョン**。このSDKバージョンは、共存するパッケージを同時に利用できるようにするほか、移行フェーズとして機能します。各BoxコアSDKの統合バージョンのサポートは2027年も継続されます。 - **生成されたパッケージのみ**を含む`v10`。これは、Box SDKのすべてのアーティファクトで一貫したバージョン番号です。 ## 詳細と移行ガイド 推奨される操作と移行ガイドの詳細については、[Box SDKのバージョン戦略ページ](g://tooling/sdks/sdk-versioning/)を参照してください。 ## サポート情報 本件に関するご質問は、[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿していただくか、GitHubの個々のBox SDKリポジトリで直接問題をご報告ください。 **Source:** [https://ja.developer.box.com/changelog/2025-10-23-box-sdks-major-version](https://ja.developer.box.com/changelog/2025-10-23-box-sdks-major-version) --- ### Box SDKのメジャーリリースに関するお知らせ **Type:** changelog | **Section:** Changelog Box SDKのメジャーリリースに関するお知らせ 2023年1月に、Box Windows V2 SDKとBox Java SDKの2つのメジャーリリースを予定しています。 # Box SDKのメジャーリリースに関するお知らせ 2023年1月に、Box Windows V2 SDKとBox Java SDKの2つのメジャーリリースを予定しています。 Box Windows V2 SDKでは、.NET Frameworkの最小サポートバージョンを4.5から4.6.2以上に変更します。Box Java SDKでは、ネットワークライブラリの置き換えと、[OkHttp](https://square.github.io/okhttp/)の導入を行います。これにより、SDKでHTTP2プロトコルをサポートし、ユーザーはBasic認証以外でもプロキシを使用できるようになります。 両方のSDKで、サポートが終了したAPIを削除します。 - Box Windows V2 SDKの変更の詳細については、[こちら](https://github.com/box/box-windows-sdk-v2/releases/tag/v5.0.0-prerelease)を参照してください。 - Box Java SDKの変更の詳細については、[こちら](https://github.com/box/box-java-sdk/releases/tag/v4.0.0-prerelease)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-12-19-sdk-box-java-net-releases](https://ja.developer.box.com/changelog/2022-12-19-sdk-box-java-net-releases) --- ### Box Shieldアクセスポリシーの新しい監視モード **Type:** changelog | **Section:** Changelog Box Shieldアクセスポリシーの新しい監視モード 最近Box Shieldに追加された新機能により、管理者は、新しい監視モードでアクセスポリシーをテストできるようになりました。 # Box Shieldアクセスポリシーの新しい監視モード 最近Box Shieldに追加された[新機能](https://support.box.com/hc/en-us/articles/360044196353#enforce_vs_monitor)により、管理者は、新しい監視モードでアクセスポリシーをテストできるようになりました。 ## 更新内容 - [スマートアクセスイベントセクション](g://events/event-triggers/shield-alert-events/#smart-access)のすべてのイベントに新しい`controlMode`フィールドを追加 - スマートアクセスイベントセクションでアプリケーションおよびFTPの制限に関する情報を追加 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-02-14-new-box-shield-event-field](https://ja.developer.box.com/changelog/2022-02-14-new-box-shield-event-field) --- ### Box Shieldスマートアクセスイベント **Type:** changelog | **Section:** Changelog Box Shieldスマートアクセスイベント 外部コラボレーションの制限および正当な理由の承認のイベントがEnterprise Event Streamから使用可能になりました。 この高度なセキュリティ機能を活用するには、Box Shieldを購入し、Box Enterpriseで有効にする必要があります。 # Box Shieldスマートアクセスイベント 外部コラボレーションの制限および正当な理由の承認のイベントが[Enterprise Event](g://events/enterprise-events/for-enterprise/) Streamから使用可能になりました。 この高度なセキュリティ機能を活用するには、[Box Shield](https://www.box.com/shield)を購入し、Box Enterpriseで有効にする必要があります。 これらのイベントは、`event_type`値が次のいずれかに設定されている、標準的な[イベントオブジェクト](r://event/)スキーマに従います: `SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED_MISSING_JUSTIFICATION`、`SHIELD_EXTERNAL_COLLAB_INVITE_JUSTIFIED`、`SHIELD_EXTERNAL_COLLAB_INVITE_BLOCKED`、`SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED_MISSING_JUSTIFICATION`、`SHIELD_EXTERNAL_COLLAB_ACCESS_BLOCKED`、`SHIELD_JUSTIFICATION_APPROVAL`。 各イベントの`additional_details`ペイロードでは、より多くの情報が提供されます。詳細については、BoxのShieldイベントの[ガイド](g://events/event-triggers/shield-alert-events/#smart-access)を参照してください。 ## 機能 - Box Shieldの外部コラボレーションと正当な理由の承認のサポートをEnterprise Event Streamに追加 **Source:** [https://ja.developer.box.com/changelog/2021-02-26-box-shield-smart-access-events](https://ja.developer.box.com/changelog/2021-02-26-box-shield-smart-access-events) --- ### Box Sign APIでのリダイレクトURLの設定のサポート **Type:** changelog | **Section:** Changelog Box Sign APIでのリダイレクトURLの設定のサポート Box Sign APIで、署名リクエストに署名した、または署名リクエストを拒否したユーザーに対して、カスタムリダイレクトURLを設定するための新しいパラメータが提供されるようになりました。これにより、Box Signとアプリケーションを統合する際、署名者をアプリケーションにリダイレクトしたり、カスタムのランディングページを表示したりすることができます。 # Box Sign APIでのリダイレクトURLの設定のサポート [Box Sign API](r://post-sign-requests)で、署名リクエストに署名した、または署名リクエストを拒否したユーザーに対して、カスタムリダイレクトURLを設定するための新しいパラメータが提供されるようになりました。これにより、Box Signとアプリケーションを統合する際、署名者をアプリケーションにリダイレクトしたり、カスタムのランディングページを表示したりすることができます。 ## 更新内容 Box Sign APIは、[署名リクエストを作成](g://box-sign/create-sign-request)の呼び出しのリクエスト本文で渡すオプションのパラメータを提供します: - リクエストに署名した後に、ユーザーを特定のページにリダイレクトする`redirect_url` - リクエストを拒否した後に、ユーザーを特定のページにリダイレクトする`declined_redirect_url` リダイレクトURLは、すべての署名者に対してグローバルに定義することも、特定の署名者に対してのみ定義することもできます。詳細については、[署名リクエストを作成](g://box-sign/create-sign-request)のガイドを参照してください。 ## 開発者向けリソース Box App Centerでのアプリケーションの作成、またはBoxパートナーへの参加をご希望の場合、詳細については[Box Partner Resources](https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources)のガイド (英語) を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-06-24-new-redirect-url-parameters](https://ja.developer.box.com/changelog/2022-06-24-new-redirect-url-parameters) --- ### Box Sign APIのリリース **Type:** changelog | **Section:** Changelog Box Sign APIのリリース 日本時間2021年7月27日に、Box Signをリリースしました。Box Signのリクエストの作成、リスト取得、再送信、キャンセルを実行する最新のAPIエンドポイントを使用することで、Box Signウェブアプリの全機能をプログラムによって利用できます。 Box SignのAPIエンドポイントを使用するために管理者がBox Signを有効にする必要はありませんが、Box Signを企業に導入する必要があります。Box SignがBoxインスタンスで利用できるようになると、管理者に通知されます。 # Box Sign APIのリリース 日本時間2021年7月27日に、Box Signをリリースしました。Box Signのリクエストの作成、リスト取得、再送信、キャンセルを実行する最新のAPIエンドポイントを使用することで、[Box Signウェブアプリ](https://support.box.com/hc/en-us/articles/4404086827411-Introducing-Box-Sign)の全機能をプログラムによって利用できます。 Box SignのAPIエンドポイントを使用するために管理者がBox Signを有効にする必要はありませんが、Box Signを企業に導入する必要があります。Box SignがBoxインスタンスで利用できるようになると、管理者に通知されます。 少なくとも、Box Signのリクエストを作成するには、署名用ファイルのほか、署名済みファイル/[署名ログ](https://support.box.com/hc/en-us/articles/4404095202579-Viewing-the-signing-log)の保存先フォルダを選択し、署名者を指定する必要があります。現時点では、1つのリクエストにつき署名できるファイルは1つだけです。 ``` curl -i -X PUT "https://api.box.com/2.0/sign_requests" \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "signers": [ { "role": "signer", "email": "example_email@box.com" } ], "source_files": [ { "type": "file", "id": "123456789" } ], "parent_folder": { "type": "folder", "id": "0987654321" } }' ``` ## 機能 - Box Signのリクエストを**作成する**エンドポイントを追加: [ガイド](g://box-sign/create-sign-request) | [APIリファレンス](e:///post-sign-requests) - Box Signのリクエストの**リストを取得する**エンドポイントを追加: [ガイド](g://box-sign/list-sign-requests/#all) | [APIリファレンス](e://get-sign-requests) - IDを指定してBox Signのリクエストを**取得する**エンドポイントを追加: [ガイド](g://box-sign/list-sign-requests/#by-id) | [APIリファレンス](e://get-sign-requests-id) - Box Signのリクエストを**再送信する**エンドポイントを追加: [ガイド](g://box-sign/resend-sign-request) | [APIリファレンス](e://post-sign-requests-id-resend) - Box Signのリクエストを**キャンセルする**エンドポイントを追加: [ガイド](g://box-sign/cancel-sign-request) | [APIリファレンス](e://post-sign-requests-id-cancel) - Java SDKのサポート: [GitHub](https://github.com/box/box-java-sdk/blob/main/doc/sign_requests.md) **Source:** [https://ja.developer.box.com/changelog/2021-07-26-release-of-box-sign-api](https://ja.developer.box.com/changelog/2021-07-26-release-of-box-sign-api) --- ### Box Sign: 公開APIおよびテンプレートタグに対応したテキスト入力の検証 **Type:** changelog | **Section:** Changelog Box Sign: 公開APIおよびテンプレートタグに対応したテキスト入力の検証 Boxでは、公開APIとテンプレートタグの両方に対応するようBox Signのテキスト入力の検証機能を拡張しました。これにより、開発者およびユーザーは、プログラムやテンプレートで検証ルールを適用できるようになるため、企業のワークフローにおける重大な機能のギャップが解消されます。 新機能 # Box Sign: 公開APIおよびテンプレートタグに対応したテキスト入力の検証 Boxでは、公開APIとテンプレートタグの両方に対応するようBox Signのテキスト入力の検証機能を拡張しました。これにより、開発者およびユーザーは、プログラムやテンプレートで検証ルールを適用できるようになるため、企業のワークフローにおける重大な機能のギャップが解消されます。 ## 新機能 テキスト入力の検証は、以下を通じてサポートされるようになりました。 - **公開API**: Sign APIエンドポイントを使用して、検証ルール付きの署名リクエストを作成する。 - **テンプレートタグ**: 公開API、Doc Gen、Salesforce統合とともに使用するドキュメントテンプレート内で直接、検証ルールを適用する。 - **カスタム正規表現パターン**: あらかじめ定義された検証の種類以外にカスタム検証パターンを定義する。 ## これが重要な理由 今回の更新では、主な統合のニーズに対応しています。 - **公開APIの開発者**は、検証ルール (カスタム正規表現など) 付きの署名リクエストをプログラムによって作成できるため、大規模なデータ品質が保証されます。 - **Salesforce統合**のユーザーは、Salesforceと再度同期されるフィールドにテキスト入力の検証ルールを利用できるようになりました。 - **Doc Genのユーザー**は、自動化されたドキュメントワークフロー内でフィールドに検証を適用できます。検証がサポートされているテンプレートタグは、特に統合を介してプログラムによってテンプレートが使用されるワークフローに役立ち、ウェブインターフェースのみで検証が可能だった以前のギャップを解消します。 ## APIの更新 以下のエンドポイントでは、テキスト入力の検証がサポートされるようになりました。 - [`POST /sign_requests`](e://post-sign-requests) — 検証付きの署名リクエストを作成する。 - [`GET /:sign_request_id`](e://get-sign-requests-id) — 検証を含む署名リクエストの詳細を取得する。 - [`GET /sign_requests`](e://get-sign-requests) — 検証の情報を含む署名リクエストのリストを取得する。 - [`GET /:template_id`](e://get-sign-templates-id) — 検証ルールを使用してテンプレートを取得する。 - [`GET /sign_templates`](e://get-sign-templates) — 検証の情報を含むテンプレートのリストを取得する。 ## はじめに テキスト入力の検証を使用するには、以下を実行します。 1. 署名リクエストへの検証の追加について、[署名リクエストの作成エンドポイント](e://post-sign-requests)を確認します。 2. [テンプレートタグでの検証の適用](https://support.box.com/hc/en-us/articles/4404085855251-Creating-templates-using-tags)について、Box Signのドキュメントを確認します。 3. 高度な検証シナリオについて、[カスタム正規表現パターン](https://support.box.com/hc/en-us/articles/42924560611603-Using-Input-Text-Validation)を調査します。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-12-11-text-input-validations](https://ja.developer.box.com/changelog/2025-12-11-text-input-validations) --- ### Box Signクライアントの埋め込み機能の導入 **Type:** changelog | **Section:** Changelog Box Signクライアントの埋め込み機能の導入 Box Embedを使用して、ウェブサイトにBox Signの機能を埋め込むことができるようになりました。これにより、ユーザーはウェブサイトを離れ、Box Signにアクセスしてドキュメントに署名し、プロセスを完了するために戻る必要がなくなります。代わりに、Box Embedを使用すると、外部のウェブサイト内で署名プロセスを完了できます。 Box Signのエクスペリエンスをウェブサイトに統合するには、HTMLのiframeタグ内のドキュメントの署名を許可するために設計されたiframeable_embed_urlパラメータが必要です。 # Box Signクライアントの埋め込み機能の導入 [Box Embed](g://embed/box-embed)を使用して、ウェブサイトに[Box Signの機能を埋め込む](g://box-sign/create-sign-request#embedded-sign-client)ことができるようになりました。これにより、ユーザーはウェブサイトを離れ、Box Signにアクセスしてドキュメントに署名し、プロセスを完了するために戻る必要がなくなります。代わりに、Box Embedを使用すると、外部のウェブサイト内で署名プロセスを完了できます。 Box Signのエクスペリエンスをウェブサイトに統合するには、HTMLの`iframe`タグ内のドキュメントの署名を許可するために設計された[`iframeable_embed_url`](r://sign-request#param-signers-iframeable_embed_url)パラメータが必要です。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-08-16-embedded-sign-client](https://ja.developer.box.com/changelog/2023-08-16-embedded-sign-client) --- ### Box SignテンプレートAPI **Type:** changelog | **Section:** Changelog Box SignテンプレートAPI 新しいBox SignテンプレートAPIを使用すると、Box Signテンプレートのリストまたは特定のBox Sign… # Box SignテンプレートAPI 新しいBox SignテンプレートAPIを使用すると、[Box Signテンプレートのリスト](e://get-sign-templates)または[特定のBox Signテンプレートの詳細](e://get-sign-templates-id)を取得できます。この情報を使用して、テンプレートベースの署名リクエストを開始できます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-05-10-box-sign-templates](https://ja.developer.box.com/changelog/2023-05-10-box-sign-templates) --- ### Box SignのEnterprise Event **Type:** changelog | **Section:** Changelog Box SignのEnterprise Event Box Signイベントが、Enterprise Event Streamを使用して利用できるようになりました。詳細については、Box Sign… # Box SignのEnterprise Event [Box Sign](g://box-sign)イベントが、Enterprise Event Streamを使用して利用できるようになりました。詳細については、[Box Signイベントガイド](g://events/event-triggers/sign-events)をご参照ください。 ## 更新内容 署名リクエストの[ドキュメントイベント](g://events/event-triggers/sign-events/#document-events)を追加: 作成、変換、完了、キャンセル、期限切れ 署名リクエストの[署名者イベント](g://events/event-triggers/sign-events/#signer-events)を追加: 割り当て、署名者による表示、ダウンロード、転送、署名、拒否 2つの新しい[ステータス](e://resources/sign-requests/#param-status)を追加: `downloaded`、`downloaded and signed` **Source:** [https://ja.developer.box.com/changelog/2021-10-27-box-sign-enterprise-events](https://ja.developer.box.com/changelog/2021-10-27-box-sign-enterprise-events) --- ### Box Signの使用 **Type:** changelog | **Section:** Changelog Box Signの使用 Boxでは、専用リソースページとしてBox Signの使用を新しくリリースしました。この総合的なガイドは、開発者が自分のアプリケーションにBox Signをシームレスに統合できるようにすることを目的としており、この強力な電子サインソリューションを最大限に活用するためのツールや知識を提供します。 # Box Signの使用 Boxでは、専用リソースページとして[Box Signの使用](pages/sign)を新しくリリースしました。この総合的なガイドは、開発者が自分のアプリケーションにBox Signをシームレスに統合できるようにすることを目的としており、この強力な電子サインソリューションを最大限に活用するためのツールや知識を提供します。 ## 目次 - [クイックスタート](pages/sign/quick-start) - [技術的なユースケース](pages/sign/technical-use-cases) - [署名リクエストのオプション](pages/sign/request-options) - [Webhook](pages/sign/webhooks) - [ワークショップ](https://github.com/barduinor/box-python-gen-workshop/blob/main/workshops/sign/sign.md) **Source:** [https://ja.developer.box.com/changelog/2024-02-06-working-with-box-sign](https://ja.developer.box.com/changelog/2024-02-06-working-with-box-sign) --- ### Box Signの新しいWebhookトリガー **Type:** changelog | **Section:** Changelog Box Signの新しいWebhookトリガー Webhookイベントトリガーに、V2 Webhookのトリガーに使用できる次のBox Signイベントが含まれるようになりました。 SIGN_REQUEST.COMPLETED SIGN_REQUEST.DECLINED SIGN_REQUEST.EXPIRED Webhookの作成の詳細については、このガイドを参照してください。 # Box Signの新しいWebhookトリガー [Webhookイベントトリガー](g://webhooks/triggers)に、V2 Webhookのトリガーに使用できる次のBox Signイベントが含まれるようになりました。 - `SIGN_REQUEST.COMPLETED` - `SIGN_REQUEST.DECLINED` - `SIGN_REQUEST.EXPIRED` Webhookの作成の詳細については、[このガイド](g://webhooks/v2/create-v2)を参照してください。 ## 開発者向けリソース Box App Centerでのアプリケーションの作成、またはBoxパートナーへの参加をご希望の場合、詳細については[Box Partner Resources](https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources)のガイド (英語) を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-07-11-sign-webhooks-support](https://ja.developer.box.com/changelog/2022-07-11-sign-webhooks-support) --- ### Box Signの更新 **Type:** changelog | **Section:** Changelog Box Signの更新 署名リクエストでの複数ドキュメントの送信 Box Signの署名リクエストでの複数ドキュメントの送信が公開API… # Box Signの更新 ## 署名リクエストでの複数ドキュメントの送信 Box Signの署名リクエストでの[複数ドキュメントの送信](https://support.box.com/hc/en-us/sections/10302887198227-Multiple-documents-in-a-signature-request)が[公開API](e://post-sign-requests)でサポートされるようになりました。 ## 署名者向けの添付機能 [署名者向けの添付](r://sign-request#param-signers-inputs-content_type)機能により、ユーザーはファイル添付フィールドで署名者に追加ファイルをリクエストできます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-02-23-multidoc-support-API-and-signer-attachments](https://ja.developer.box.com/changelog/2023-02-23-multidoc-support-API-and-signer-attachments) --- ### Box Signの通知の抑制 **Type:** changelog | **Section:** Changelog Box Signの通知の抑制 Box Sign APIを使用すると、Box Signのワークフローの中で送信されるデフォルトのBoxメール通知を抑制できます。​​ # Box Signの通知の抑制 [Box Sign API](e://post-sign-requests)を使用すると、Box Signのワークフローの中で送信される**デフォルト**のBoxメール通知を抑制できます。​​ この機能により、デフォルトの通知をオフにして、独自のカスタマイズしたメッセージを使用したり、送信する際に経由するチャネルを決定したりすることができます。 ***注**: Box Signのメール通知を抑制することを選択すると、組織は、該当する場合に、使用される配信方法に対して署名者の同意を得ることを含め、適用されるすべての法律と規制に従い、署名プロセスにおいて適切なタイミングで適切な内容を含むすべての通知を署名者に確実に配信する責任を負うことになります。* ## Box Signの新しいWebhook Boxでは、通知の抑制機能とともに、電子サインワークフローのカスタマイズオプションを強化する以下の3つの[Webhook](pages/sign/webhooks)を新しく導入します。 - `SIGN.REQUEST.SIGNATURE_REQUESTED` - `SIGN.REQUEST.SIGNER_SIGNED` - `SIGN.REQUEST.ERROR_FINALIZING` 上記のWebhookを使用すると、自分のアプリケーションで操作をトリガーしたり、Box Signで発生したイベントについてユーザーに通知したりできます。​​ ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-05-08-notification-suppression-for-sign](https://ja.developer.box.com/changelog/2024-05-08-notification-suppression-for-sign) --- ### Box Swift SDK Generated `0.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Swift SDK Generated 0.3.0のリリース バグ修正 ベースURLを変更 (box/box-codegen#491) (#115) (d0a7adb) Box AIエンドポイントを修正 (box/box-openapi#418) (#88) (022f… # Box Swift SDK Generated 0.3.0のリリース ### バグ修正 - ベースURLを変更 (box/box-codegen[#491](https://github.com/box/box-codegen/issues/491)) ([#115](https://github.com/box/box-codegen/issues/115)) ([`d0a7adb`](https://github.com/box/box-codegen/commit/d0a7adb201c823313f0a5de25fa4fc5469590c97)) - Box AIエンドポイントを修正 (box/box-openapi[#418](https://github.com/box/box-codegen/issues/418)) ([#88](https://github.com/box/box-codegen/issues/88)) ([`022f83a`](https://github.com/box/box-codegen/commit/022f83aaa7fbe3f4292a06527875123ecc7b99f0)) - 自動更新のプルリクエストのCIを修正 (box/box-codegen[#506](https://github.com/box/box-codegen/issues/506)) ([#135](https://github.com/box/box-codegen/issues/135)) ([`a62e238`](https://github.com/box/box-codegen/commit/a62e238534cb625dbc98cbe59c98939c78b74f4a)) - Swiftで配列を使用したUnionの逆シリアル化を修正 (box/box-codegen[#486](https://github.com/box/box-codegen/issues/486)) ([#94](https://github.com/box/box-codegen/issues/94)) ([`4f187be`](https://github.com/box/box-codegen/commit/4f187bed1e88c93c1258be8723a39b45129ff21f)) - メタデータフィルタリソースを修正 (box/box-openapi[#419](https://github.com/box/box-codegen/issues/419)) ([#90](https://github.com/box/box-codegen/issues/90)) ([`b04f7ce`](https://github.com/box/box-codegen/commit/b04f7ceee9bca4f1f19d66401f38636e7737b4b1)) - ファイルやフォルダの分類を更新するためのスキーマを修正 (box/box-openapi[#423](https://github.com/box/box-codegen/issues/423)) ([#104](https://github.com/box/box-codegen/issues/104)) ([`caa9d2b`](https://github.com/box/box-codegen/commit/caa9d2b7d0a6c2728f543fa19acb7859f21fb5c9)) - Box Signの表現を改善 (box/box-openapi[#424](https://github.com/box/box-codegen/issues/424)) ([#111](https://github.com/box/box-codegen/issues/111)) ([`4fa69f0`](https://github.com/box/box-codegen/commit/4fa69f01ca3a2a7fc8dcdc71cbecb03c469a83e6)) ### 新機能と機能強化 - 不足していたマーカーページネーションフィールドを追加し、新しいイベントタイプを導入 `(box/box-openapi[#431](https://github.com/box/box-codegen/issues/431))` ([#136](https://github.com/box/box-codegen/issues/136)) ([`b186b11`](https://github.com/box/box-codegen/commit/b186b11a2c591cd4fdd3b50733750a7bb4ec94e9)) - `visionOS`のサポートを追加し、Swift用のPrivacy Manifestファイルを追加 `(box/box-codegen[#510](https://github.com/box/box-codegen/issues/510))` ([#139](https://github.com/box/box-codegen/issues/139)) ([`7fc76fc`](https://github.com/box/box-codegen/commit/7fc76fc1799db0a50ad22eb047d013c4597c5277)) - Swiftで日付のサポートを追加 (box/box-codegen[#488](https://github.com/box/box-codegen/issues/488)) ([#103](https://github.com/box/box-codegen/issues/103)) ([`7e1ea1a`](https://github.com/box/box-codegen/commit/7e1ea1af553cc8458eb9026c777608f7929e686d)) - Swiftでの分割アップロードを改善 `(box/box-codegen[#515](https://github.com/box/box-codegen/issues/515))` ([#143](https://github.com/box/box-codegen/issues/143)) ([`b8099ab`](https://github.com/box/box-codegen/commit/b8099ab41ea5b8706e14285a0f9db2fd3c0a7a6d)) - 通知の抑制をパブリックスキーマに移動 (box/box-openapi[#425](https://github.com/box/box-codegen/issues/425)) ([#113](https://github.com/box/box-codegen/issues/113)) ([`069be60`](https://github.com/box/box-codegen/commit/069be60613889b45b396bbe22262c5f8df32b158)) - スキーマを個別のモジュールに移動 (box/box-codegen[#483](https://github.com/box/box-codegen/issues/483)) ([#99](https://github.com/box/box-codegen/issues/99)) ([`c7a8506`](https://github.com/box/box-codegen/commit/c7a85069544c28e2be918eafd9e240f39660ead3)) - 一般的なエラーのスローを開始 `(box/box-codegen[#516](https://github.com/box/box-codegen/issues/516))` ([#147](https://github.com/box/box-codegen/issues/147)) ([`d12bbb7`](https://github.com/box/box-codegen/commit/d12bbb7d06bd3fcf39c31e316f1047065b56baac)) - Box AIエンドポイントをサポート (box/box-openapi[#416](https://github.com/box/box-codegen/issues/416)) ([#86](https://github.com/box/box-codegen/issues/86)) ([`175ab82`](https://github.com/box/box-codegen/commit/175ab82c18dc390bcd4c8e20aea8e405a2e31c4d)) - Swiftでの分割アップロードをサポート `(box/box-codegen[#513](https://github.com/box/box-codegen/issues/513))` ([#142](https://github.com/box/box-codegen/issues/142)) ([`9e0b4e2`](https://github.com/box/box-codegen/commit/9e0b4e26a9283b5900ae0fe0fa858394b732f51b)) - パーサーのエンドポイントおよびスキーマの除外をサポート (box/box-codegen[#487](https://github.com/box/box-codegen/issues/487)) ([#100](https://github.com/box/box-codegen/issues/100)) ([`af9e171`](https://github.com/box/box-codegen/commit/af9e171c101703c98ff9a53093d7fc9c306137d9)) **Source:** [https://ja.developer.box.com/changelog/2024-06-28-box-swift-sdk-generated-030-released](https://ja.developer.box.com/changelog/2024-06-28-box-swift-sdk-generated-030-released) --- ### Box Swift SDK Generated `0.3.1`のリリース **Type:** changelog | **Section:** Changelog Box Swift SDK Generated 0.3.1のリリース バグ修正 IntegrationMappingPartnerItemSlackをIntegrationMappingPartnerItemSlackUnionに抽出 (box/box-codegen#53… # Box Swift SDK Generated 0.3.1のリリース ### バグ修正 - `IntegrationMappingPartnerItemSlack`を`IntegrationMappingPartnerItemSlackUnion`に抽出 (box/box-codegen[#530](https://github.com/box/box-codegen/issues/530)) ([#165](https://github.com/box/box-codegen/issues/165)) ([`d51df9a`](https://github.com/box/box-codegen/commit/d51df9a19d06db886358e94ce70551c283e5cc45)) - 分割アップロードの信頼性を改善 (box/box-codegen[#529](https://github.com/box/box-codegen/issues/529)) ([#164](https://github.com/box/box-codegen/issues/164)) ([`5d87629`](https://github.com/box/box-codegen/commit/5d876299aa88b18accde22379950780bff100da0)) - ステータスコード202と`Retry-After`ヘッダーが設定されているリクエストを再試行 (box/box-codegen[#538](https://github.com/box/box-codegen/issues/538)) ([#177](https://github.com/box/box-codegen/issues/177)) ([`64f27b3`](https://github.com/box/box-codegen/commit/64f27b3858725adaa53a10a6e8df8c0bcfe73fea)) ### 新機能と機能強化 - ユーザーコラボレーションに`is_active`パラメータを追加 (box/box-openapi[#437](https://github.com/box/box-codegen/issues/437)) ([#163](https://github.com/box/box-codegen/issues/163)) ([`5f726bb`](https://github.com/box/box-codegen/commit/5f726bbffd682934ab5731e1620489b1ee54e5a1)) - Box AIのメソッドに新しいパラメータを追加し、`AiResponseFull`バリアントを導入 (box/box-openapi[#446](https://github.com/box/box-codegen/issues/446)) ([#201](https://github.com/box/box-codegen/issues/201)) ([`7c09090`](https://github.com/box/box-codegen/commit/7c0909032733742cb5a019c897910ced2e9d6788)) - Swift 5.6のサポートを追加 (box/box-codegen[#541](https://github.com/box/box-codegen/issues/541)) ([#180](https://github.com/box/box-codegen/issues/180)) ([`04b7020`](https://github.com/box/box-codegen/commit/04b7020f1220f73ad4637e6033d5539c56a64fcd)) - 分割アップロードのエンドポイントURLをパラメータ化 (box/box-openapi[#444](https://github.com/box/box-codegen/issues/444)) ([#192](https://github.com/box/box-codegen/issues/192)) ([`ea18f9e`](https://github.com/box/box-codegen/commit/ea18f9e5eb6558edb29ff378bceb5528ccd4fcfb)) - AIエージェントAPIをサポート (box/box-codegen[#531](https://github.com/box/box-codegen/issues/531)) ([#170](https://github.com/box/box-codegen/issues/170)) ([`fc9a00b`](https://github.com/box/box-codegen/commit/fc9a00bdcaffeaccfd87caad73fe666fb46c36ab)) **Source:** [https://ja.developer.box.com/changelog/2024-08-22-box-swift-sdk-generated-031-released](https://ja.developer.box.com/changelog/2024-08-22-box-swift-sdk-generated-031-released) --- ### Box Swift SDK Generated `0.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Swift SDK Generated 0.4.0のリリース バグ修正 Signテンプレートの署名者に不足していたフィールドを追加し、AIスキーマを修正 (box/box-openapi#451) (#206) (31920e6) IntegrationMapping… # Box Swift SDK Generated 0.4.0のリリース ### バグ修正 - Signテンプレートの署名者に不足していたフィールドを追加し、AIスキーマを修正 (box/box-openapi[#451](https://github.com/box/box-codegen/issues/451)) ([#206](https://github.com/box/box-codegen/issues/206)) ([`31920e6`](https://github.com/box/box-codegen/commit/31920e67692c16b0600c4c9f4c279e22d02e4598)) - `IntegrationMapping`スキーマを修正 (box/box-codegen[#551](https://github.com/box/box-codegen/issues/551)) ([#203](https://github.com/box/box-codegen/issues/203)) ([`0074ee3`](https://github.com/box/box-codegen/commit/0074ee326627d01057cf50cb257d2291b646ab08)) - Swiftでの分割アップロードを修正 (box/box-codegen[#555](https://github.com/box/box-codegen/issues/555)) ([#215](https://github.com/box/box-codegen/issues/215)) ([`93ff568`](https://github.com/box/box-codegen/commit/93ff5686415d99aa807d57d9e062f5a96380d707)) ### 新機能と機能強化 - `FetchOptions`にURLを追加 (box/box-codegen[#549](https://github.com/box/box-codegen/issues/549)) ([#208](https://github.com/box/box-codegen/issues/208)) ([`b65822d`](https://github.com/box/box-codegen/commit/b65822d379b1d5e9be7b179ed754e725f5a499fa)) **Source:** [https://ja.developer.box.com/changelog/2024-09-05-box-swift-sdk-generated-040-released](https://ja.developer.box.com/changelog/2024-09-05-box-swift-sdk-generated-040-released) --- ### Box Swift SDK Generated `0.5.0`のリリース **Type:** changelog | **Section:** Changelog Box Swift SDK Generated 0.5.0のリリース バグ修正 メタデータクエリの結果のバリアントを修正 (box/box-openapi#456) (#232) (be2fa52) 新機能と機能強化 Hubsベータ版を追加 (box/box-openapi… # Box Swift SDK Generated 0.5.0のリリース ### バグ修正 - メタデータクエリの結果のバリアントを修正 (box/box-openapi[#456](https://github.com/box/box-codegen/issues/456)) ([#232](https://github.com/box/box-codegen/issues/232)) ([`be2fa52`](https://github.com/box/box-codegen/commit/be2fa52bb0d086f6c9b20fd5c3bdcad4b98f3f37)) ### 新機能と機能強化 - Hubsベータ版を追加 (box/box-openapi[#453](https://github.com/box/box-codegen/issues/453)) ([#220](https://github.com/box/box-codegen/issues/220)) ([`546f487`](https://github.com/box/box-codegen/commit/546f487bde9dae2407ff65620eb6e6a81e45b149)) **Source:** [https://ja.developer.box.com/changelog/2024-09-11-box-swift-sdk-generated-050-released](https://ja.developer.box.com/changelog/2024-09-11-box-swift-sdk-generated-050-released) --- ### Box Swift SDK Generated `0.6.0`のリリース **Type:** changelog | **Section:** Changelog Box Swift SDK Generated 0.6.0のリリース バグ修正 不足していたトークンのスコープを追加 (box/box-openapi#490) (#319) (220134e) readBufferFromFileメソッドの署名を変更 (box/box… # Box Swift SDK Generated 0.6.0のリリース ### バグ修正 - 不足していたトークンのスコープを追加 (box/box-openapi[#490](https://github.com/box/box-swift-sdk-gen/issues/490)) ([#319](https://github.com/box/box-swift-sdk-gen/issues/319)) ([`220134e`](https://github.com/box/box-swift-sdk-gen/commit/220134efb4ba42628de51561749ae218707d5121)) - `readBufferFromFile`メソッドの署名を変更 (box/box-codegen[#575](https://github.com/box/box-swift-sdk-gen/issues/575)) ([#250](https://github.com/box/box-swift-sdk-gen/issues/250)) ([`21e08ff`](https://github.com/box/box-swift-sdk-gen/commit/21e08ff673da44c0dfe502c5fbbc14e382ef368b)) - ファイルレプリゼンテーションの`paged`および`thumb`プロパティのタイプを修正 (box/box-openapi[#503](https://github.com/box/box-swift-sdk-gen/issues/503)) ([#347](https://github.com/box/box-swift-sdk-gen/issues/347)) ([`58ff930`](https://github.com/box/box-swift-sdk-gen/commit/58ff9305b34306ca506b08d43b72f95349322172)) - `IntegrationMapping`スキーマの説明を修正 (box/box-openapi[#463](https://github.com/box/box-swift-sdk-gen/issues/463)) ([#257](https://github.com/box/box-swift-sdk-gen/issues/257)) ([`794f315`](https://github.com/box/box-swift-sdk-gen/commit/794f31548687b4e78e6f96b1a922e7e32dce0b9b)) - Slack統合マッピングのバリアント構成の誤りを修正 (box/box-openapi[#492](https://github.com/box/box-swift-sdk-gen/issues/492)) ([#322](https://github.com/box/box-swift-sdk-gen/issues/322)) ([`97f4f94`](https://github.com/box/box-swift-sdk-gen/commit/97f4f944555997b5e09afd66eb9c07008fae8a94)) - `IntegrationMapping`スキーマ内のフィールドの順序を修正 (box/box-openapi[#497](https://github.com/box/box-swift-sdk-gen/issues/497)) ([#335](https://github.com/box/box-swift-sdk-gen/issues/335)) ([`cb28e6d`](https://github.com/box/box-swift-sdk-gen/commit/cb28e6db015d84b59e6dccf6a2fa90c26de20efa)) - `SignRequest`から未使用のパラメータを削除 (box/box-openapi[#489](https://github.com/box/box-swift-sdk-gen/issues/489)) ([#310](https://github.com/box/box-swift-sdk-gen/issues/310)) ([`879897b`](https://github.com/box/box-swift-sdk-gen/commit/879897bec80669a46effc2528ec19ce15d7df3b1)) - コンテンツのないステータスコードをサポート (box/box-codegen[#604](https://github.com/box/box-swift-sdk-gen/issues/604)) ([#284](https://github.com/box/box-swift-sdk-gen/issues/284)) ([`5823d2b`](https://github.com/box/box-swift-sdk-gen/commit/5823d2b1591cb1c817e36a43a78cb41498fcf1b4)) - スキーマエラーをサポートするようクライアントエラースキーマを更新 (box/box-openapi[#467](https://github.com/box/box-swift-sdk-gen/issues/467)) ([#259](https://github.com/box/box-swift-sdk-gen/issues/259)) ([`40e2279`](https://github.com/box/box-swift-sdk-gen/commit/40e2279e222df4a88278125a6a9a13ee4605cd69)) - コラボレーション、メタデータ、コレクションのリソースを更新 (box/box-openapi[#483](https://github.com/box/box-swift-sdk-gen/issues/483)) ([#286](https://github.com/box/box-swift-sdk-gen/issues/286)) ([`f5b190a`](https://github.com/box/box-swift-sdk-gen/commit/f5b190a648f0c567abe688bd111a5b7c779a036c)) ### 新機能と機能強化 - `AiResponse`に`aiAgent`情報を追加 (box/box-openapi[#485](https://github.com/box/box-swift-sdk-gen/issues/485)) ([#304](https://github.com/box/box-swift-sdk-gen/issues/304)) ([`b614a6f`](https://github.com/box/box-swift-sdk-gen/commit/b614a6fe72689ed56947b05cac26a5b62104a621)) - AI LLMエンドポイントのAWS `params`を追加 (box/box-openapi[#478](https://github.com/box/box-swift-sdk-gen/issues/478)) ([#267](https://github.com/box/box-swift-sdk-gen/issues/267)) ([`36ee37d`](https://github.com/box/box-swift-sdk-gen/commit/36ee37d96ce0a50292036c02e4663fd124544736)) - Box Signの共有リクエストを追加 (box/box-openapi[#504](https://github.com/box/box-swift-sdk-gen/issues/504)) ([#348](https://github.com/box/box-swift-sdk-gen/issues/348)) ([`2f5e2f1`](https://github.com/box/box-swift-sdk-gen/commit/2f5e2f150d45f833fda2ef6e61e6c946ed0c36ad)) - ネットワーククライアントの実装を置き換えるサポートを追加 (box/box-codegen[#629](https://github.com/box/box-swift-sdk-gen/issues/629)) ([#313](https://github.com/box/box-swift-sdk-gen/issues/313)) ([`e08a117`](https://github.com/box/box-swift-sdk-gen/commit/e08a117c34e782b83a1fdd7a471938351cd00c6e)) - カスタムHTTPリクエストを行うためのメソッドを公開 (box/box-codegen[#610](https://github.com/box/box-swift-sdk-gen/issues/610)) ([#297](https://github.com/box/box-swift-sdk-gen/issues/297)) ([`f7da2e3`](https://github.com/box/box-swift-sdk-gen/commit/f7da2e31f8e49cdd0b0e62e798d7d93bcea6c50b)) - `ai/extract`および`ai/extract_structured`エンドポイントをサポート (box/box-codegen[#564](https://github.com/box/box-swift-sdk-gen/issues/564)) ([#239](https://github.com/box/box-swift-sdk-gen/issues/239)) ([`9b5d6e9`](https://github.com/box/box-swift-sdk-gen/commit/9b5d6e9f31cbcc2411f34be1572ec91c7e4808cf)) - Box Doc Gen APIをサポート (box/box-codegen[#644](https://github.com/box/box-swift-sdk-gen/issues/644)) ([#343](https://github.com/box/box-swift-sdk-gen/issues/343)) ([`8ef2533`](https://github.com/box/box-swift-sdk-gen/commit/8ef25335ecba4fcf2243c8043edc7edc46dbe932)) - IDを指定してコレクションを取得エンドポイントをサポート (box/box-codegen[#595](https://github.com/box/box-swift-sdk-gen/issues/595)) ([#276](https://github.com/box/box-swift-sdk-gen/issues/276)) ([`112828f`](https://github.com/box/box-swift-sdk-gen/commit/112828fc499c3148c385dde6adb4fcfe5b791495)) - ファイル、フォルダ、ウェブリンクの更新で`userId`パラメータ (省略可) をサポート (box/box-openapi[#488](https://github.com/box/box-swift-sdk-gen/issues/488)) ([#308](https://github.com/box/box-swift-sdk-gen/issues/308)) ([`8bd13d0`](https://github.com/box/box-swift-sdk-gen/commit/8bd13d024e7f74a15c3377ddfd54bfcdbec71e2b)) - スキーマエラーをサポートするようクライアントエラースキーマを更新 (box/box-openapi[#467](https://github.com/box/box-swift-sdk-gen/issues/467)) ([#266](https://github.com/box/box-swift-sdk-gen/issues/266)) ([`4bcf843`](https://github.com/box/box-swift-sdk-gen/commit/4bcf8439b03e8f3726e51f210bfa71ed3d8d6793)) - 取得時に`retrieveAuthorizationHeader`メソッドを使用 (box/box-codegen[#565](https://github.com/box/box-swift-sdk-gen/issues/565)) ([#235](https://github.com/box/box-swift-sdk-gen/issues/235)) ([`f68e141`](https://github.com/box/box-swift-sdk-gen/commit/f68e14174476a40b959280c391475ac8fef644e1)) **Source:** [https://ja.developer.box.com/changelog/2025-01-27-box-swift-sdk-generated-060-released](https://ja.developer.box.com/changelog/2025-01-27-box-swift-sdk-generated-060-released) --- ### Box Swift SDK Generated `0.6.1`のリリース **Type:** changelog | **Section:** Changelog Box Swift SDK Generated 0.6.1のリリース バグ修正 verification_phone_numberプロパティを追加して署名リクエストを作成 (box/box-openapi#515) (#391) (717b3a… # Box Swift SDK Generated 0.6.1のリリース ### バグ修正 - `verification_phone_number`プロパティを追加して署名リクエストを作成 (box/box-openapi[#515](https://github.com/box/box-swift-sdk-gen/issues/515)) ([#391](https://github.com/box/box-swift-sdk-gen/issues/391)) ([`717b3a8`](https://github.com/box/box-swift-sdk-gen/commit/717b3a8b285dfab92a9446cbd84443caa8dde148)) ### 新機能と機能強化 - 共有リンクのアプリ項目を検索するエンドポイントを追加 (box/box-openapi[#514](https://github.com/box/box-swift-sdk-gen/issues/514)) ([#390](https://github.com/box/box-swift-sdk-gen/issues/390)) ([`07b9be5`](https://github.com/box/box-swift-sdk-gen/commit/07b9be5d523f3d3fb89bdbb240e4ca9628a3736d)) - Hubsのサポートを`/ai/ask`に追加 (box/box-codegen[#656](https://github.com/box/box-swift-sdk-gen/issues/656)) ([#364](https://github.com/box/box-swift-sdk-gen/issues/364)) ([`9a49864`](https://github.com/box/box-swift-sdk-gen/commit/9a4986499eaefffdb4f2593968d59eaf030f516f)) - Teams統合マッピング (リスト) APIを追加 (box/box-openapi[#517](https://github.com/box/box-swift-sdk-gen/issues/517)) ([#393](https://github.com/box/box-swift-sdk-gen/issues/393)) ([`b9ed4e3`](https://github.com/box/box-swift-sdk-gen/commit/b9ed4e35d17f85c1d2bc2a4e9e148ae009551348)) - 認証クラス用のトークンストレージを公開 (box/box-codegen[#682](https://github.com/box/box-swift-sdk-gen/issues/682)) ([#400](https://github.com/box/box-swift-sdk-gen/issues/400)) ([`08221e5`](https://github.com/box/box-swift-sdk-gen/commit/08221e59cabc4042ea1d43bf578c2069ad66b444)) - AI Studio APIをサポート (box/box-codegen[#626](https://github.com/box/box-swift-sdk-gen/issues/626)) ([#375](https://github.com/box/box-swift-sdk-gen/issues/375)) ([`802571d`](https://github.com/box/box-swift-sdk-gen/commit/802571dd34977ae2ebf674dbdddd3e140829b819)) - 不明な列挙値をサポート (box/box-codegen[#670](https://github.com/box/box-swift-sdk-gen/issues/670)) ([#382](https://github.com/box/box-swift-sdk-gen/issues/382)) ([`8fe7ff4`](https://github.com/box/box-swift-sdk-gen/commit/8fe7ff45fa4e45f743acd4450270d945b0afd393)) - 事前チェックを伴うアップロードをサポート (box/box-codegen[#676](https://github.com/box/box-swift-sdk-gen/issues/676)) ([#399](https://github.com/box/box-swift-sdk-gen/issues/399)) ([`1befb4c`](https://github.com/box/box-swift-sdk-gen/commit/1befb4c1b4898375ea3ab353c7149fd10adc1f17)) - `/ai/extract_structured`レスポンスのスキーマを更新 (box/box-codegen[#641](https://github.com/box/box-swift-sdk-gen/issues/641)) ([#358](https://github.com/box/box-swift-sdk-gen/issues/358)) ([`430611a`](https://github.com/box/box-swift-sdk-gen/commit/430611a0036258d5f3ff8e1c6de0b833255ce0ed)) **Source:** [https://ja.developer.box.com/changelog/2025-03-18-box-swift-sdk-generated-061-released](https://ja.developer.box.com/changelog/2025-03-18-box-swift-sdk-generated-061-released) --- ### Box Swift SDK Generated `0.6.2`のリリース **Type:** changelog | **Section:** Changelog Box Swift SDK Generated 0.6.2のリリース バグ修正 トークンの取得にretrieveTokenメソッドを使用するようダウンスコープトークンを修正 (box/box-codegen#731) (#459) (8992b32) クエリパラメータへのDate… # Box Swift SDK Generated 0.6.2のリリース ### バグ修正 - トークンの取得に`retrieveToken`メソッドを使用するようダウンスコープトークンを修正 (box/box-codegen[#731](https://github.com/box/box-swift-sdk-gen/issues/731)) ([#459](https://github.com/box/box-swift-sdk-gen/issues/459)) ([`8992b32`](https://github.com/box/box-swift-sdk-gen/commit/8992b32e9dd058fc77b4d68418da81b162aea315)) - クエリパラメータへの`Date`の解析を修正 (box/box-codegen[#729](https://github.com/box/box-swift-sdk-gen/issues/729)) ([#449](https://github.com/box/box-swift-sdk-gen/issues/449)) ([`1a95d0c`](https://github.com/box/box-swift-sdk-gen/commit/1a95d0c80e0bd29dc1b467e7e98e6f5e6196ddfb)) - イベントの`next_stream_position`プロパティタイプを`int64`に指定 (box/box-openapi[#535](https://github.com/box/box-swift-sdk-gen/issues/535)) ([#502](https://github.com/box/box-swift-sdk-gen/issues/502)) ([`795fe1c`](https://github.com/box/box-swift-sdk-gen/commit/795fe1c7f0aa6074145b675fce4dd8e1432b0a64)) ### 新機能と機能強化 - `downloadZip`メソッドを追加 (box/box-codegen[#765](https://github.com/box/box-swift-sdk-gen/issues/765)) ([#505](https://github.com/box/box-swift-sdk-gen/issues/505)) ([`c03589d`](https://github.com/box/box-swift-sdk-gen/commit/c03589d6add3ee6d548f10b5380031cd38284e42)) - `rawData`プロパティを追加 (box/box-codegen[#724](https://github.com/box/box-swift-sdk-gen/issues/724)) ([#445](https://github.com/box/box-swift-sdk-gen/issues/445)) ([`77405ad`](https://github.com/box/box-swift-sdk-gen/commit/77405adc986adb8a1ce3bcff051ea8c481dbfd9d)) - AIエージェントの警告を追加し、より多くの種類のメタデータ値を許可 (box/box-openapi[#520](https://github.com/box/box-swift-sdk-gen/issues/520)) ([#435](https://github.com/box/box-swift-sdk-gen/issues/435)) ([`af1dc12`](https://github.com/box/box-swift-sdk-gen/commit/af1dc12763f9a84691573fd3ba8307925fc017d6)) - AIスプレッドシートプロセッサを追加 (box/box-openapi[#533](https://github.com/box/box-swift-sdk-gen/issues/533)) ([#484](https://github.com/box/box-swift-sdk-gen/issues/484)) ([`14726d1`](https://github.com/box/box-swift-sdk-gen/commit/14726d1952f5ddb2414f723a0b18fa5226269a64)) - アーカイブの公開APIを追加 (box/box-openapi[#540](https://github.com/box/box-swift-sdk-gen/issues/540)) ([#509](https://github.com/box/box-swift-sdk-gen/issues/509)) ([`8266386`](https://github.com/box/box-swift-sdk-gen/commit/82663868c61a31f43b229c6f24e29737913662a0)) - SwiftのCIを追加 (box/box-codegen[#755](https://github.com/box/box-swift-sdk-gen/issues/755)) ([#494](https://github.com/box/box-swift-sdk-gen/issues/494)) ([`76a3337`](https://github.com/box/box-swift-sdk-gen/commit/76a3337bed9bfc4629ec7dcb9af86bec4aa710f3)) - Hubs APIのベータ版エンドポイントを追加 (box/box-openapi[#531](https://github.com/box/box-swift-sdk-gen/issues/531)) ([#476](https://github.com/box/box-swift-sdk-gen/issues/476)) ([`a05aa5f`](https://github.com/box/box-swift-sdk-gen/commit/a05aa5fe2aaade1d7bdd7acb90c82fcb3a3bf262)) - 新しいHubs APIとHubの項目APIを追加 (box/box-openapi[#538](https://github.com/box/box-swift-sdk-gen/issues/538)) ([#503](https://github.com/box/box-swift-sdk-gen/issues/503)) ([`9058c45`](https://github.com/box/box-swift-sdk-gen/commit/9058c45c0bcd3e7f294a1bedac151637001aec63)) - `Metadata Error`の新しいスキーマを追加 (box/box-openapi[#539](https://github.com/box/box-swift-sdk-gen/issues/539)) ([#504](https://github.com/box/box-swift-sdk-gen/issues/504)) ([`2e9ecf9`](https://github.com/box/box-swift-sdk-gen/commit/2e9ecf9477854656958b715674b8aa0413508d31)) - Signテンプレートスキーマにセキュリティ設定のプロパティを追加 (box/box-openapi[#518](https://github.com/box/box-swift-sdk-gen/issues/518)) ([#426](https://github.com/box/box-swift-sdk-gen/issues/426)) ([`a741a73`](https://github.com/box/box-swift-sdk-gen/commit/a741a7305e2b2d174bc325e35ea9b77548a38095)) - ShieldリストAPIを追加 (box/box-openapi[#528](https://github.com/box/box-swift-sdk-gen/issues/528)) ([#462](https://github.com/box/box-swift-sdk-gen/issues/462)) ([`b5993b0`](https://github.com/box/box-swift-sdk-gen/commit/b5993b096b4fceb77301f76eba1c17225b2844d6)) - 任意の値が設定された`additionalProperties`のサポートを追加 (box/box-codegen[#711](https://github.com/box/box-swift-sdk-gen/issues/711)) ([#427](https://github.com/box/box-swift-sdk-gen/issues/427)) ([`7fbf706`](https://github.com/box/box-swift-sdk-gen/commit/7fbf7069eff66afddc328066f8aeb7321b249eea)) - `nullable`フィールドのサポートを追加 (box/box-codegen[#700](https://github.com/box/box-swift-sdk-gen/issues/700)) ([#420](https://github.com/box/box-swift-sdk-gen/issues/420)) ([`5d0ff41`](https://github.com/box/box-swift-sdk-gen/commit/5d0ff414b325db92db44c580cebb5636ab33553f)) - AI APIにIBMモデルのサポートを追加 (box/box-openapi[#522](https://github.com/box/box-swift-sdk-gen/issues/522)) ([#436](https://github.com/box/box-swift-sdk-gen/issues/436)) ([`0717222`](https://github.com/box/box-swift-sdk-gen/commit/071722246402e0ec2439ae1e5e3d26bca45a049f)) - `BoxClient`で`makeRequest`メソッドを公開 (box/box-codegen[#687](https://github.com/box/box-swift-sdk-gen/issues/687)) ([#408](https://github.com/box/box-swift-sdk-gen/issues/408)) ([`7ba7d09`](https://github.com/box/box-swift-sdk-gen/commit/7ba7d091b0c832276daa571fad2a7db75469676d)) - AI統合テストを改善 (box/box-codegen[#758](https://github.com/box/box-swift-sdk-gen/issues/758)) ([#499](https://github.com/box/box-swift-sdk-gen/issues/499)) ([`3c7e717`](https://github.com/box/box-swift-sdk-gen/commit/3c7e717c6ca076caf1a963b3f60d3bd88f8c4bff)) - `BoxAPIError`をスローする際にレスポンスの本文をサニタイズ (box/box-codegen[#760](https://github.com/box/box-swift-sdk-gen/issues/760)) ([#498](https://github.com/box/box-swift-sdk-gen/issues/498)) ([`2afc793`](https://github.com/box/box-swift-sdk-gen/commit/2afc7936dac87dee22adff3e22def92913f5854c)) - Swiftで`getDownloadUrl`をサポート (box/box-codegen[#751](https://github.com/box/box-swift-sdk-gen/issues/751)) ([#491](https://github.com/box/box-swift-sdk-gen/issues/491)) ([`5916ede`](https://github.com/box/box-swift-sdk-gen/commit/5916ede7454a1926de195e77b9a158c2af0fae2b)) - AI Studioの新しいツールをサポート (box/box-openapi[#534](https://github.com/box/box-swift-sdk-gen/issues/534)) ([#485](https://github.com/box/box-swift-sdk-gen/issues/485)) ([`e793d7b`](https://github.com/box/box-swift-sdk-gen/commit/e793d7b3a03e8d58ce6adb63a894a0330ae154d1)) - エラーの機密データのサニタイズをサポート (box/box-codegen[#695](https://github.com/box/box-swift-sdk-gen/issues/695)) ([#415](https://github.com/box/box-swift-sdk-gen/issues/415)) ([`330ca9a`](https://github.com/box/box-swift-sdk-gen/commit/330ca9ad17cbc79c93ffb114fd56c09a41f92694)) - リーガルホールドとAIモデルを更新 (box/box-openapi[#526](https://github.com/box/box-swift-sdk-gen/issues/526)) ([#460](https://github.com/box/box-swift-sdk-gen/issues/460)) ([`caa848a`](https://github.com/box/box-swift-sdk-gen/commit/caa848ac977c7fedeacbe018339d27b9d948bb1e)) **Source:** [https://ja.developer.box.com/changelog/2025-08-13-box-swift-sdk-generated-062-released](https://ja.developer.box.com/changelog/2025-08-13-box-swift-sdk-generated-062-released) --- ### Box Swift SDK Generated `0.6.3`のリリース **Type:** changelog | **Section:** Changelog Box Swift SDK Generated 0.6.3のリリース 新機能と機能強化 不足していたWebhookイベントを追加 (box/box-openapi#554) (#581) (966d171) # Box Swift SDK Generated 0.6.3のリリース ### 新機能と機能強化 - 不足していたWebhookイベントを追加 (box/box-openapi[#554](https://github.com/box/box-swift-sdk-gen/issues/554)) ([#581](https://github.com/box/box-swift-sdk-gen/issues/581)) ([`966d171`](https://github.com/box/box-swift-sdk-gen/commit/966d171baa3f6fa1139732b05081000e44b0e08a)) **Source:** [https://ja.developer.box.com/changelog/2025-09-05-box-swift-sdk-generated-063-released](https://ja.developer.box.com/changelog/2025-09-05-box-swift-sdk-generated-063-released) --- ### Box TypeScript SDK Generated `v1.1.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.1.0のリリース バグ修正 自動更新のプルリクエストのCIを修正 (box/box-codegen#506) (#221) (bbc14f6) queryParamsで日付またはdatetime… # Box TypeScript SDK Generated v1.1.0のリリース ### バグ修正 - 自動更新のプルリクエストのCIを修正 (`box/box-codegen`[#506](https://github.com/box/box-typescript-sdk-gen/issues/506)) ([#221](https://github.com/box/box-typescript-sdk-gen/issues/221)) ([`bbc14f6`](https://github.com/box/box-typescript-sdk-gen/commit/bbc14f66e14a9386c8d54a5d0bb36ec2cdc501c1)) - `queryParams`で日付または`datetime`が使用されている場合に引用符を削除 (box/`box-codegen`[#509](https://github.com/box/box-typescript-sdk-gen/issues/509)) ([#225](https://github.com/box/box-typescript-sdk-gen/issues/225)) ([`28d2220`](https://github.com/box/box-typescript-sdk-gen/commit/28d22200602cf02d73590189c304109f1c26db17)) ### 新機能と機能強化 - 不足していたマーカーページネーションフィールドを追加し、新しいイベントタイプ`AppItemEventSource` `(box/box-openapi[#431](https://github.com/box/box-typescript-sdk-gen/issues/431))`を導入 ([#224](https://github.com/box/box-typescript-sdk-gen/issues/224)) ([`6c18ca3`](https://github.com/box/box-typescript-sdk-gen/commit/6c18ca3b00da0b878d28e142a2361b6386ef0c15)) **Source:** [https://ja.developer.box.com/changelog/2024-06-12-box-typescript-sdk-generated-v110-released](https://ja.developer.box.com/changelog/2024-06-12-box-typescript-sdk-generated-v110-released) --- ### Box TypeScript SDK Generated `v1.10.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.10.0のリリース バグ修正 SignRequestから未使用のパラメータを削除 (box/box-openapi#489) (#450) (f5683b… # Box TypeScript SDK Generated v1.10.0のリリース ### バグ修正 - `SignRequest`から未使用のパラメータを削除 (box/box-openapi[#489](https://github.com/box/box-typescript-sdk-gen/issues/489)) ([#450](https://github.com/box/box-typescript-sdk-gen/issues/450)) ([`f5683b7`](https://github.com/box/box-typescript-sdk-gen/commit/f5683b703625dd8d504ca52100f692cb8440a474)) ### 新機能と機能強化 - ネットワーククライアントの実装を置き換えるサポートを追加 (box/box-codegen[#629](https://github.com/box/box-typescript-sdk-gen/issues/629)) ([#454](https://github.com/box/box-typescript-sdk-gen/issues/454)) ([`1cb7ddb`](https://github.com/box/box-typescript-sdk-gen/commit/1cb7ddb3ada79cebc27fbfce9df90cd8ebad353c)) - 再試行戦略のカスタマイズを許可 (box/box-codegen[#635](https://github.com/box/box-typescript-sdk-gen/issues/635)) ([#457](https://github.com/box/box-typescript-sdk-gen/issues/457)) ([`530ca33`](https://github.com/box/box-typescript-sdk-gen/commit/530ca33ff3635581bd8ee91a82bc9f000b18812b)) - Webhookメッセージの検証をサポート (box/box-codegen[#631](https://github.com/box/box-typescript-sdk-gen/issues/631)) ([#455](https://github.com/box/box-typescript-sdk-gen/issues/455)) ([`09765a4`](https://github.com/box/box-typescript-sdk-gen/commit/09765a42fe25f15095bd1bd0d1377f2da222c9e4)) **Source:** [https://ja.developer.box.com/changelog/2024-12-30-box-typescript-sdk-generated-v1100-released](https://ja.developer.box.com/changelog/2024-12-30-box-typescript-sdk-generated-v1100-released) --- ### Box TypeScript SDK Generated `v1.11.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.11.0のリリース バグ修正 コンストラクタで不足しているフィールド割り当てを追加 (box/box-codegen#646) (#485) (0592f7b) 不足していたトークンのスコープを追加 (box/box… # Box TypeScript SDK Generated v1.11.0のリリース ### バグ修正 - コンストラクタで不足しているフィールド割り当てを追加 (box/box-codegen[#646](https://github.com/box/box-typescript-sdk-gen/issues/646)) ([#485](https://github.com/box/box-typescript-sdk-gen/issues/485)) ([`0592f7b`](https://github.com/box/box-typescript-sdk-gen/commit/0592f7bcde962c50d88ec69f6c359af754200e56)) - 不足していたトークンのスコープを追加 (box/box-openapi[#490](https://github.com/box/box-typescript-sdk-gen/issues/490)) ([#459](https://github.com/box/box-typescript-sdk-gen/issues/459)) ([`f0c0d91`](https://github.com/box/box-typescript-sdk-gen/commit/f0c0d918c6d1a6466f9c02c760e3cbee18dab940)) - ファイルレプリゼンテーションのパラメータのタイプを修正 (box/box-openapi[#503](https://github.com/box/box-typescript-sdk-gen/issues/503)) ([#489](https://github.com/box/box-typescript-sdk-gen/issues/489)) ([`d11529a`](https://github.com/box/box-typescript-sdk-gen/commit/d11529a2958504e9106996fd475f0d99825b6926)) - Slack統合マッピングのバリアント構成の誤りを修正 (box/box-openapi[#492](https://github.com/box/box-typescript-sdk-gen/issues/492)) ([#462](https://github.com/box/box-typescript-sdk-gen/issues/462)) ([`660dc6e`](https://github.com/box/box-typescript-sdk-gen/commit/660dc6ecd0302930ef5ce4d051860bac69a12188)) - `IntegrationMapping`スキーマ内のフィールドの順序を修正 (box/box-openapi[#497](https://github.com/box/box-typescript-sdk-gen/issues/497)) ([#476](https://github.com/box/box-typescript-sdk-gen/issues/476)) ([`93e2bc3`](https://github.com/box/box-typescript-sdk-gen/commit/93e2bc3f878f28d11d66a680c75ef0c06eada991)) - `eval`の使用を削除 (box/box-codegen[#636](https://github.com/box/box-typescript-sdk-gen/issues/636)) ([#474](https://github.com/box/box-typescript-sdk-gen/issues/474)) ([`7c86f34`](https://github.com/box/box-typescript-sdk-gen/commit/7c86f345e863efa338ac5808c5ec43cb6c549953)) - クロスオリジンのリダイレクト時に認証を削除 (box/box-codegen[#648](https://github.com/box/box-typescript-sdk-gen/issues/648)) ([#488](https://github.com/box/box-typescript-sdk-gen/issues/488)) ([`56fb287`](https://github.com/box/box-typescript-sdk-gen/commit/56fb2879ab70ef6d5584b2591ff9c8d3ade2b7d7)) ### 新機能と機能強化 - Box Doc Gen APIをサポート (box/box-codegen[#644](https://github.com/box/box-typescript-sdk-gen/issues/644)) ([#486](https://github.com/box/box-typescript-sdk-gen/issues/486)) ([`0d3bc18`](https://github.com/box/box-typescript-sdk-gen/commit/0d3bc1813e11c1e482794f57c0843823e7e4cbc8)) - 拡張可能な列挙型を使用 (box/box-codegen[#639](https://github.com/box/box-typescript-sdk-gen/issues/639)) ([#487](https://github.com/box/box-typescript-sdk-gen/issues/487)) ([`2a24c7a`](https://github.com/box/box-typescript-sdk-gen/commit/2a24c7a0dbc3c946a69c5081939943d9b184d441)) **Source:** [https://ja.developer.box.com/changelog/2025-01-21-box-typescript-sdk-generated-v1110-released](https://ja.developer.box.com/changelog/2025-01-21-box-typescript-sdk-generated-v1110-released) --- ### Box TypeScript SDK Generated `v1.12.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.12.0のリリース 新機能と機能強化 Box Signの共有リクエストを追加 (box/box-openapi#504) (#491) (e90255c) 機能: /ai/askにHubのサポートを追加。AiAsk… # Box TypeScript SDK Generated v1.12.0のリリース ### 新機能と機能強化 - Box Signの共有リクエストを追加 (box/box-openapi[#504](https://github.com/box/box-typescript-sdk-gen/issues/504)) ([#491](https://github.com/box/box-typescript-sdk-gen/issues/491)) ([`e90255c`](https://github.com/box/box-typescript-sdk-gen/commit/e90255c5d97a7a1a10dd529b58426142c5c6f0d4)) - 機能: `/ai/ask`にHubのサポートを追加。`AiAsk`インターフェースの`items`プロパティのタイプを`AiItemBase[]`から`AiItemAsk[]`に置き換え (box/box-codegen[#656](https://github.com/box/box-typescript-sdk-gen/issues/656)) ([#507](https://github.com/box/box-typescript-sdk-gen/issues/507)) ([`9f29d8c`](https://github.com/box/box-typescript-sdk-gen/commit/9f29d8cb1f1d3b8c7625da1ddb9f2abd62d133f0)) - `/ai/extract_structured`レスポンスのスキーマを更新 (box/box-codegen[#641](https://github.com/box/box-typescript-sdk-gen/issues/641)) ([#498](https://github.com/box/box-typescript-sdk-gen/issues/498)) ([`502ac11`](https://github.com/box/box-typescript-sdk-gen/commit/502ac11a2ad4e56fceece0deb6a15dbfc8b429ff)) **Source:** [https://ja.developer.box.com/changelog/2025-02-06-box-typescript-sdk-generated-v1120-released](https://ja.developer.box.com/changelog/2025-02-06-box-typescript-sdk-generated-v1120-released) --- ### Box TypeScript SDK Generated `v1.13.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.13.0のリリース 新機能と機能強化 AI Studio APIをサポート (box/box-codegen#626) (#520) (949b856) # Box TypeScript SDK Generated v1.13.0のリリース ### 新機能と機能強化 - AI Studio APIをサポート (box/box-codegen[#626](https://github.com/box/box-typescript-sdk-gen/issues/626)) ([#520](https://github.com/box/box-typescript-sdk-gen/issues/520)) ([`949b856`](https://github.com/box/box-typescript-sdk-gen/commit/949b856ce1d77b1aa425b91b46440b46b383438a)) **Source:** [https://ja.developer.box.com/changelog/2025-02-20-box-typescript-sdk-generated-v1130-released](https://ja.developer.box.com/changelog/2025-02-20-box-typescript-sdk-generated-v1130-released) --- ### Box TypeScript SDK Generated `v1.13.1`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.13.1のリリース バグ修正 TypeScriptのpackage.jsonでブラウザ構成を分割 (box/box-codegen#672) (#538) (ca7e291) # Box TypeScript SDK Generated v1.13.1のリリース ### バグ修正 - TypeScriptの`package.json`でブラウザ構成を分割 (box/box-codegen[#672](https://github.com/box/box-typescript-sdk-gen/issues/672)) ([#538](https://github.com/box/box-typescript-sdk-gen/issues/538)) ([`ca7e291`](https://github.com/box/box-typescript-sdk-gen/commit/ca7e29180e450cbb346a76aadfdade1062559b1e)) **Source:** [https://ja.developer.box.com/changelog/2025-03-07-box-typescript-sdk-generated-v1131-released](https://ja.developer.box.com/changelog/2025-03-07-box-typescript-sdk-generated-v1131-released) --- ### Box TypeScript SDK Generated `v1.13.2`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.13.2のリリース バグ修正 Typescriptのrollupプラグインの出力ディレクトリを修正 (box/box-codegen#678) (#543) (f828d5e) # Box TypeScript SDK Generated v1.13.2のリリース ### バグ修正 - Typescriptの`rollup`プラグインの出力ディレクトリを修正 (box/box-codegen[#678](https://github.com/box/box-typescript-sdk-gen/issues/678)) ([#543](https://github.com/box/box-typescript-sdk-gen/issues/543)) ([`f828d5e`](https://github.com/box/box-typescript-sdk-gen/commit/f828d5e7e3079c48590e9766f0dccd25ee1af9ca)) **Source:** [https://ja.developer.box.com/changelog/2025-03-11-box-typescript-sdk-generated-v1132-released](https://ja.developer.box.com/changelog/2025-03-11-box-typescript-sdk-generated-v1132-released) --- ### Box TypeScript SDK Generated `v1.14.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.14.0のリリース バグ修正 verification_phone_numberプロパティを追加して署名リクエストを作成 (box/box-openapi#515) (#546) (916502c… # Box TypeScript SDK Generated v1.14.0のリリース ### バグ修正 - `verification_phone_number`プロパティを追加して署名リクエストを作成 (box/box-openapi[#515](https://github.com/box/box-typescript-sdk-gen/issues/515)) ([#546](https://github.com/box/box-typescript-sdk-gen/issues/546)) ([`916502c`](https://github.com/box/box-typescript-sdk-gen/commit/916502c47cb4936ab93a40b3f1552c1860173a8e)) ### 新機能と機能強化 - 共有リンクのアプリ項目を検索するエンドポイントを追加 (box/box-openapi[#514](https://github.com/box/box-typescript-sdk-gen/issues/514)) ([#545](https://github.com/box/box-typescript-sdk-gen/issues/545)) ([`7c32eaf`](https://github.com/box/box-typescript-sdk-gen/commit/7c32eaf2af3ef08299d9dd69e744304b20f4309f)) - Teams統合マッピング (リスト) APIを追加 (box/box-openapi[#517](https://github.com/box/box-typescript-sdk-gen/issues/517)) ([#548](https://github.com/box/box-typescript-sdk-gen/issues/548)) ([`6ce1c7c`](https://github.com/box/box-typescript-sdk-gen/commit/6ce1c7c78c9bc5d70383065e95f01bc8133fdd52)) - 事前チェックを伴うアップロードをサポート (box/box-codegen[#676](https://github.com/box/box-typescript-sdk-gen/issues/676)) ([#554](https://github.com/box/box-typescript-sdk-gen/issues/554)) ([`e3aa784`](https://github.com/box/box-typescript-sdk-gen/commit/e3aa784b73c7b473fdf06c05c7f657a54fc08e4c)) **Source:** [https://ja.developer.box.com/changelog/2025-03-18-box-typescript-sdk-generated-v1140-released](https://ja.developer.box.com/changelog/2025-03-18-box-typescript-sdk-generated-v1140-released) --- ### Box TypeScript SDK Generated `v1.15.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.15.0のリリース 新機能と機能強化 エラーの機密データのサニタイズをサポート (box/box-codegen#695) (#573) (488e76a) # Box TypeScript SDK Generated v1.15.0のリリース ### 新機能と機能強化 - エラーの機密データのサニタイズをサポート (box/box-codegen[#695](https://github.com/box/box-typescript-sdk-gen/issues/695)) ([#573](https://github.com/box/box-typescript-sdk-gen/issues/573)) ([`488e76a`](https://github.com/box/box-typescript-sdk-gen/commit/488e76a1e1f66d5d4ac56b16e6a7dae9e7f497a1)) **Source:** [https://ja.developer.box.com/changelog/2025-04-10-box-typescript-sdk-generated-v1150-released](https://ja.developer.box.com/changelog/2025-04-10-box-typescript-sdk-generated-v1150-released) --- ### Box TypeScript SDK Generated `v1.15.1`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.15.1のリリース バグ修正 TypeScriptのデータのサニタイズを修正 (box/box-codegen#702) (#582) (eb79c0f) # Box TypeScript SDK Generated v1.15.1のリリース ### バグ修正 - TypeScriptのデータのサニタイズを修正 (box/box-codegen[#702](https://github.com/box/box-typescript-sdk-gen/issues/702)) ([#582](https://github.com/box/box-typescript-sdk-gen/issues/582)) ([`eb79c0f`](https://github.com/box/box-typescript-sdk-gen/commit/eb79c0faa11f40667289155e71b8893a96eb558a)) **Source:** [https://ja.developer.box.com/changelog/2025-04-11-box-typescript-sdk-generated-v1151-released](https://ja.developer.box.com/changelog/2025-04-11-box-typescript-sdk-generated-v1151-released) --- ### Box TypeScript SDK Generated `v1.16.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.16.0のリリース バグ修正 本文をエスケープする場合としない場合のWebhook署名を計算 (box/box-codegen#737) (#627) (6a21b8e) boxNetworkClient… # Box TypeScript SDK Generated v1.16.0のリリース ### バグ修正 - 本文をエスケープする場合としない場合のWebhook署名を計算 (box/box-codegen[#737](https://github.com/box/box-typescript-sdk-gen/issues/737)) ([#627](https://github.com/box/box-typescript-sdk-gen/issues/627)) ([`6a21b8e`](https://github.com/box/box-typescript-sdk-gen/commit/6a21b8ed54ef26041feccaa5481951355965e514)) - `boxNetworkClient`の循環依存関係を修正 (box/box-codegen[#708](https://github.com/box/box-typescript-sdk-gen/issues/708)) ([#591](https://github.com/box/box-typescript-sdk-gen/issues/591)) ([`b383889`](https://github.com/box/box-typescript-sdk-gen/commit/b383889b9fdc91c6cfed7169e4d36a22a8c8a0fa)) - トークンの取得に`retrieveToken`メソッドを使用するようダウンスコープトークンを修正 (box/box-codegen[#731](https://github.com/box/box-typescript-sdk-gen/issues/731)) ([#618](https://github.com/box/box-typescript-sdk-gen/issues/618)) ([`90edb0c`](https://github.com/box/box-typescript-sdk-gen/commit/90edb0cc9bddc474c20b8b83770a4d314843edab)) - Webhook署名を計算する際のスラッシュのエスケープを修正 (box/box-codegen[#736](https://github.com/box/box-typescript-sdk-gen/issues/736)) ([#624](https://github.com/box/box-typescript-sdk-gen/issues/624)) ([`a0307d0`](https://github.com/box/box-typescript-sdk-gen/commit/a0307d0c4c5dfed1a66e395a1dfb4c8ff387561d)) - メタデータフィルタで文字列のリストを処理 (box/box-codegen[#716](https://github.com/box/box-typescript-sdk-gen/issues/716)) ([#597](https://github.com/box/box-typescript-sdk-gen/issues/597)) ([`979ff2c`](https://github.com/box/box-typescript-sdk-gen/commit/979ff2c82edce9a969444febf1896d866ca154bf)) - メモリにコンテンツを格納しないようにファイルのダウンロードを改善 (box/box-codegen[#701](https://github.com/box/box-typescript-sdk-gen/issues/701)) ([#589](https://github.com/box/box-typescript-sdk-gen/issues/589)) ([`513a15e`](https://github.com/box/box-typescript-sdk-gen/commit/513a15eb28736d28d665324949d145dd3387d27d)) - ブラウザのユーティリティ関数を変更 (box/box-codegen[#686](https://github.com/box/box-typescript-sdk-gen/issues/686)) ([#585](https://github.com/box/box-typescript-sdk-gen/issues/585)) ([`7232170`](https://github.com/box/box-typescript-sdk-gen/commit/7232170fe7901cb7ba9ebf79ffc6a7c0b376a1c8)) - HMAC署名に定数時間比較を使用 (box/box-codegen[#739](https://github.com/box/box-typescript-sdk-gen/issues/739)) ([#630](https://github.com/box/box-typescript-sdk-gen/issues/630)) ([`efdcaaf`](https://github.com/box/box-typescript-sdk-gen/commit/efdcaaf605fc6f14bbbf171e2797d73e97302bfe)) ### 新機能と機能強化 - AIエージェントの警告を追加し、より多くの種類のメタデータ値を許可 (box/box-openapi[#520](https://github.com/box/box-typescript-sdk-gen/issues/520)) ([#600](https://github.com/box/box-typescript-sdk-gen/issues/600)) ([`a5a555f`](https://github.com/box/box-typescript-sdk-gen/commit/a5a555f835df5b550b9839e3e1fcff5d9f2b9f96)) - Signテンプレートスキーマにセキュリティ設定のプロパティを追加 (box/box-openapi[#518](https://github.com/box/box-typescript-sdk-gen/issues/518)) ([#588](https://github.com/box/box-typescript-sdk-gen/issues/588)) ([`dfd3e5f`](https://github.com/box/box-typescript-sdk-gen/commit/dfd3e5f7ecf8a8e49d79ed7df4d7e1f88f3e8537)) - ShieldリストのAPIを追加 (box/box-openapi[#528](https://github.com/box/box-typescript-sdk-gen/issues/528)) ([#622](https://github.com/box/box-typescript-sdk-gen/issues/622)) ([`be3af44`](https://github.com/box/box-typescript-sdk-gen/commit/be3af441a66da02254d38576bb9ec258142f6d2d)) - AI APIにIBMモデルのサポートを追加 (box/box-openapi[#522](https://github.com/box/box-typescript-sdk-gen/issues/522)) ([#601](https://github.com/box/box-typescript-sdk-gen/issues/601)) ([`b060b8c`](https://github.com/box/box-typescript-sdk-gen/commit/b060b8c21a13abdfb12988f9c6e6beb014fa104f)) - AI抽出エンドポイントの項目数の上限を引き上げ (box/box-openapi[#525](https://github.com/box/box-typescript-sdk-gen/issues/525)) ([#602](https://github.com/box/box-typescript-sdk-gen/issues/602)) ([`86c5d14`](https://github.com/box/box-typescript-sdk-gen/commit/86c5d14bafe8789c306a1688bcf010207c302ca9)) - リーガルホールドとAIモデルを更新 (box/box-openapi[#526](https://github.com/box/box-typescript-sdk-gen/issues/526)) ([#620](https://github.com/box/box-typescript-sdk-gen/issues/620)) ([`de3df57`](https://github.com/box/box-typescript-sdk-gen/commit/de3df57cc90577a49ea40de278bde423d17c4f06)) **Source:** [https://ja.developer.box.com/changelog/2025-06-12-box-typescript-sdk-generated-v1160-released](https://ja.developer.box.com/changelog/2025-06-12-box-typescript-sdk-generated-v1160-released) --- ### Box TypeScript SDK Generated `v1.17.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.17.0のリリース バグ修正 form-dataに関するCVE-2025-7783を解決するためにcypressを昇格 (box/box-codegen#769) (#677) (077413e… # Box TypeScript SDK Generated v1.17.0のリリース ### バグ修正 - `form-data`に関する`CVE-2025-7783`を解決するために`cypress`を昇格 (box/box-codegen[#769](https://github.com/box/box-typescript-sdk-gen/issues/769)) ([#677](https://github.com/box/box-typescript-sdk-gen/issues/677)) ([`077413e`](https://github.com/box/box-typescript-sdk-gen/commit/077413ec525fad4d8ebc4c7209fce20046731295)) ### 新機能と機能強化 - AIスプレッドシートプロセッサを追加 (box/box-openapi[#533](https://github.com/box/box-typescript-sdk-gen/issues/533)) ([#649](https://github.com/box/box-typescript-sdk-gen/issues/649)) ([`254fb54`](https://github.com/box/box-typescript-sdk-gen/commit/254fb54d928ec3a76304674f341be1c67d78a143)) - アーカイブの公開APIを追加 (box/box-openapi[#540](https://github.com/box/box-typescript-sdk-gen/issues/540)) ([#674](https://github.com/box/box-typescript-sdk-gen/issues/674)) ([`1cbb124`](https://github.com/box/box-typescript-sdk-gen/commit/1cbb12485a417b813df8b6918cf3721ae781a286)) - 新しいHubs APIとHubの項目APIを追加 (box/box-openapi[#538](https://github.com/box/box-typescript-sdk-gen/issues/538)) ([#666](https://github.com/box/box-typescript-sdk-gen/issues/666)) ([`25c9596`](https://github.com/box/box-typescript-sdk-gen/commit/25c9596bc71fe88e0a2b6d5e01c65fa682c2fd38)) - `Metadata Error`の新しいスキーマを追加 (box/box-openapi[#539](https://github.com/box/box-typescript-sdk-gen/issues/539)) ([#667](https://github.com/box/box-typescript-sdk-gen/issues/667)) ([`9af46ab`](https://github.com/box/box-typescript-sdk-gen/commit/9af46abe837ee0d812bcc15f1edf0d5a6530bfe0)) - JWTの秘密キー復号メカニズムの挿入を許可 (box/box-codegen[#754](https://github.com/box/box-typescript-sdk-gen/issues/754)) ([#656](https://github.com/box/box-typescript-sdk-gen/issues/656)) ([`cb0c35d`](https://github.com/box/box-typescript-sdk-gen/commit/cb0c35df4a5b3f9b8c611006dd33d480949a0d36)) - Webhookの検証チェックを改善 (box/box-codegen[#745](https://github.com/box/box-typescript-sdk-gen/issues/745)) ([#647](https://github.com/box/box-typescript-sdk-gen/issues/647)) ([`98b3b92`](https://github.com/box/box-typescript-sdk-gen/commit/98b3b9293ff3f0e5922d0772d87504770bb9303c)) - ネットワークの例外でリクエストを再試行 (box/box-codegen[#776](https://github.com/box/box-typescript-sdk-gen/issues/776)) ([#684](https://github.com/box/box-typescript-sdk-gen/issues/684)) ([`c0c4dba`](https://github.com/box/box-typescript-sdk-gen/commit/c0c4dbac40970d34da4c9e52fc43f029ae2f91a6)) - ESMビルドとツリーシェイキングをサポート (box/box-codegen[#762](https://github.com/box/box-typescript-sdk-gen/issues/762)) ([#663](https://github.com/box/box-typescript-sdk-gen/issues/663)) ([`8ca3302`](https://github.com/box/box-typescript-sdk-gen/commit/8ca33023d904edd596819c7c6df42022006274ed)) - Hubsのベータ版エンドポイントをサポート (box/box-openapi[#531](https://github.com/box/box-typescript-sdk-gen/issues/531)) ([#641](https://github.com/box/box-typescript-sdk-gen/issues/641)) ([`d8c7bb6`](https://github.com/box/box-typescript-sdk-gen/commit/d8c7bb66736a3c4679b116916c61e2ead824a305)) - AI Studioの新しいツールをサポート (box/box-openapi[#534](https://github.com/box/box-typescript-sdk-gen/issues/534)) ([#652](https://github.com/box/box-typescript-sdk-gen/issues/652)) ([`db2501b`](https://github.com/box/box-typescript-sdk-gen/commit/db2501bb13fc6ecebbb4c535b4a19c9be2cf64c2)) **Source:** [https://ja.developer.box.com/changelog/2025-08-05-box-typescript-sdk-generated-v1170-released](https://ja.developer.box.com/changelog/2025-08-05-box-typescript-sdk-generated-v1170-released) --- ### Box TypeScript SDK Generated `v1.17.1`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.17.1のリリース バグ修正 libからインポートする際のエクスポートの構文を修正 (#700) (782a287) # Box TypeScript SDK Generated v1.17.1のリリース ### バグ修正 - `lib`からインポートする際のエクスポートの構文を修正 ([#700](https://github.com/box/box-typescript-sdk-gen/issues/700)) ([`782a287`](https://github.com/box/box-typescript-sdk-gen/commit/782a287efd3481fc056effcf83886f05bc9adbf9)) **Source:** [https://ja.developer.box.com/changelog/2025-08-07-box-typescript-sdk-generated-v1171-released](https://ja.developer.box.com/changelog/2025-08-07-box-typescript-sdk-generated-v1171-released) --- ### Box TypeScript SDK Generated `v1.18.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.18.0のリリース バグ修正 form-dataを4.0.4、types/node-fetchを2.6.13に昇格 (box/box-codegen#808) (#735) (7330b9… # Box TypeScript SDK Generated v1.18.0のリリース ### バグ修正 - form-dataを4.0.4、types/node-fetchを2.6.13に昇格 (box/box-codegen[#808](https://github.com/box/box-typescript-sdk-gen/issues/808)) ([#735](https://github.com/box/box-typescript-sdk-gen/issues/735)) ([`7330b95`](https://github.com/box/box-typescript-sdk-gen/commit/7330b95dc18baa56a24a06657f2cb3cc3f4c7c46)) - `MetadataFilterValue`のシリアル化を修正 (box/box-codegen[#800](https://github.com/box/box-typescript-sdk-gen/issues/800)) ([#727](https://github.com/box/box-typescript-sdk-gen/issues/727)) ([`d046405`](https://github.com/box/box-typescript-sdk-gen/commit/d046405e644d5533e07ac42411c176527efdd1fb)) ### 新機能と機能強化 - PythonおよびTSでLong pollingを行うイベントをサポート (box/box-codegen[#757](https://github.com/box/box-typescript-sdk-gen/issues/757)) ([#712](https://github.com/box/box-typescript-sdk-gen/issues/712)) ([`6f25fda`](https://github.com/box/box-typescript-sdk-gen/commit/6f25fdaf48b3538b3a7ba370d677454f6f0d2631)) **Source:** [https://ja.developer.box.com/changelog/2025-08-26-box-typescript-sdk-generated-v1180-released](https://ja.developer.box.com/changelog/2025-08-26-box-typescript-sdk-generated-v1180-released) --- ### Box TypeScript SDK Generated `v1.18.1`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.18.1のリリース バグ修正 インポートおよびエクスポートの処理を修正 (box/box-codegen#801) (#738) (cea513f) # Box TypeScript SDK Generated v1.18.1のリリース ### バグ修正 - インポートおよびエクスポートの処理を修正 (box/box-codegen[#801](https://github.com/box/box-typescript-sdk-gen/issues/801)) ([#738](https://github.com/box/box-typescript-sdk-gen/issues/738)) ([`cea513f`](https://github.com/box/box-typescript-sdk-gen/commit/cea513fcf3ed79b930e7067f06282c5bb08d8bd6)) **Source:** [https://ja.developer.box.com/changelog/2025-08-26-box-typescript-sdk-generated-v1181-released](https://ja.developer.box.com/changelog/2025-08-26-box-typescript-sdk-generated-v1181-released) --- ### Box TypeScript SDK Generated `v1.19.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.19.0のリリース バグ修正 privateアクセス修飾子を削除 (box/box-codegen#815) (#747) (1693ddc) 新機能と機能強化 不足していたWebhookイベントを追加 (box… # Box TypeScript SDK Generated v1.19.0のリリース ### バグ修正 - privateアクセス修飾子を削除 (box/box-codegen[#815](https://github.com/box/box-typescript-sdk-gen/issues/815)) ([#747](https://github.com/box/box-typescript-sdk-gen/issues/747)) ([`1693ddc`](https://github.com/box/box-typescript-sdk-gen/commit/1693ddc114b1c0452b2eddd6b4837a308155678a)) ### 新機能と機能強化 - 不足していたWebhookイベントを追加 (box/box-openapi[#554](https://github.com/box/box-typescript-sdk-gen/issues/554)) ([#753](https://github.com/box/box-typescript-sdk-gen/issues/753)) ([`2b77c98`](https://github.com/box/box-typescript-sdk-gen/commit/2b77c982d549ef8ad84d8c6b69f9afb37e53197e)) **Source:** [https://ja.developer.box.com/changelog/2025-09-05-box-typescript-sdk-generated-v1190-released](https://ja.developer.box.com/changelog/2025-09-05-box-typescript-sdk-generated-v1190-released) --- ### Box TypeScript SDK Generated `v1.19.1`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.19.1のリリース バグ修正 ESMビルドを修正しテストセットを追加 (box/box-codegen#828) (#768) (c198527) # Box TypeScript SDK Generated v1.19.1のリリース ### バグ修正 - ESMビルドを修正しテストセットを追加 (box/box-codegen[#828](https://github.com/box/box-typescript-sdk-gen/issues/828)) ([#768](https://github.com/box/box-typescript-sdk-gen/issues/768)) ([`c198527`](https://github.com/box/box-typescript-sdk-gen/commit/c19852701d4e14eb6f6a9c7f24b4621d57a08b60)) **Source:** [https://ja.developer.box.com/changelog/2025-09-16-box-typescript-sdk-generated-v1191-released](https://ja.developer.box.com/changelog/2025-09-16-box-typescript-sdk-generated-v1191-released) --- ### Box TypeScript SDK Generated `v1.2.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.2.0のリリース バグ修正 ブラウザでのアップロードを修正 (box/box-codegen#524) (#248) (88d747e) 分割アップロードを更新 (box/box-codegen#523) (#24… # Box TypeScript SDK Generated v1.2.0のリリース ### バグ修正 - ブラウザでのアップロードを修正 (box/box-codegen[#524](https://github.com/box/box-typescript-sdk-gen/issues/524)) ([#248](https://github.com/box/box-typescript-sdk-gen/issues/248)) ([`88d747e`](https://github.com/box/box-typescript-sdk-gen/commit/88d747e0f03dfa3c2d6089257c6e8b5b635775e0)) - 分割アップロードを更新 (box/box-codegen[#523](https://github.com/box/box-typescript-sdk-gen/issues/523)) ([#247](https://github.com/box/box-typescript-sdk-gen/issues/247)) ([`27ceb35`](https://github.com/box/box-typescript-sdk-gen/commit/27ceb35e6444843eea9b7ec6923fe958c9a74571)) ### 新機能と機能強化 - ステータスコード`202`のリクエストを再試行 (box/box-codegen[#511](https://github.com/box/box-typescript-sdk-gen/issues/511)) ([#235](https://github.com/box/box-typescript-sdk-gen/issues/235)) ([`03b8f43`](https://github.com/box/box-typescript-sdk-gen/commit/03b8f4314ada5ef5596706b7599cc76565fe96a5)) - Typescriptで拡張可能な列挙型をサポート (box/box-codegen[#520](https://github.com/box/box-typescript-sdk-gen/issues/520)) ([#243](https://github.com/box/box-typescript-sdk-gen/issues/243)) ([`5237972`](https://github.com/box/box-typescript-sdk-gen/commit/523797273bc08e3b22609ef0019432ab3e43c3ba)) **Source:** [https://ja.developer.box.com/changelog/2024-07-08-box-typescript-sdk-generated-v120-released](https://ja.developer.box.com/changelog/2024-07-08-box-typescript-sdk-generated-v120-released) --- ### Box TypeScript SDK Generated `v1.3.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.3.0のリリース バグ修正 IntegrationMappingPartnerItemSlackをunionタイプに抽出 (box/box-codegen#530) (#255) (fa8952a… # Box TypeScript SDK Generated v1.3.0のリリース ### バグ修正 - `IntegrationMappingPartnerItemSlack`をunionタイプに抽出 (box/box-codegen[#530](https://github.com/box/box-typescript-sdk-gen/issues/530)) ([#255](https://github.com/box/box-typescript-sdk-gen/issues/255)) ([`fa8952a`](https://github.com/box/box-typescript-sdk-gen/commit/fa8952a6582d9965bbb4ab66bbeff057f5c68851)) - 分割アップロードの信頼性を改善 (box/box-codegen[#529](https://github.com/box/box-typescript-sdk-gen/issues/529)) ([#254](https://github.com/box/box-typescript-sdk-gen/issues/254)) ([`12d9288`](https://github.com/box/box-typescript-sdk-gen/commit/12d928850e0a1cd60f336a9919474b9aaba33028)) ### 新機能と機能強化 - ユーザーコラボレーションに`is_active`パラメータを追加 (box/box-openapi[#437](https://github.com/box/box-typescript-sdk-gen/issues/437)) ([#253](https://github.com/box/box-typescript-sdk-gen/issues/253)) ([`4d8d436`](https://github.com/box/box-typescript-sdk-gen/commit/4d8d436977b3e487a47e7717626f1c0f2eb43227)) - AIエージェントAPIをサポート (box/box-codegen[#531](https://github.com/box/box-typescript-sdk-gen/issues/531)) ([#260](https://github.com/box/box-typescript-sdk-gen/issues/260)) ([`0ec40d4`](https://github.com/box/box-typescript-sdk-gen/commit/0ec40d44c86a8a9cf4fe594966cfad1866be457c)) **Source:** [https://ja.developer.box.com/changelog/2024-07-24-box-typescript-sdk-generated-v130-released](https://ja.developer.box.com/changelog/2024-07-24-box-typescript-sdk-generated-v130-released) --- ### Box TypeScript SDK Generated `v1.4.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.4.0のリリース バグ修正 不足していたトークンのスコープを追加 (box/box-openapi#442) (#281) (ca77f58) マルチパートリクエストのfetchメソッドを修正 (box/box… # Box TypeScript SDK Generated v1.4.0のリリース ### バグ修正 - 不足していたトークンのスコープを追加 (box/box-openapi[#442](https://github.com/box/box-typescript-sdk-gen/issues/442)) ([#281](https://github.com/box/box-typescript-sdk-gen/issues/281)) ([`ca77f58`](https://github.com/box/box-typescript-sdk-gen/commit/ca77f58b10d3a302748750584730f0fcdd8b4b55)) - マルチパートリクエストのfetchメソッドを修正 (box/box-codegen[#545](https://github.com/box/box-typescript-sdk-gen/issues/545)) ([#303](https://github.com/box/box-typescript-sdk-gen/issues/303)) ([`f8ceac0`](https://github.com/box/box-typescript-sdk-gen/commit/f8ceac005f043017e7cde310490e79ab9195f8d7)) ### 新機能と機能強化 - 分割アップロードのエンドポイントURLをパラメータ化 (box/box-openapi[#444](https://github.com/box/box-typescript-sdk-gen/issues/444)) ([#302](https://github.com/box/box-typescript-sdk-gen/issues/302)) ([`293a6e9`](https://github.com/box/box-typescript-sdk-gen/commit/293a6e9aeabbba37e4c12e2322a79717a10e1775)) - **ts:** プロパティおよびメソッドにコメントを追加 (box/box-codegen[#537](https://github.com/box/box-typescript-sdk-gen/issues/537)) ([#284](https://github.com/box/box-typescript-sdk-gen/issues/284)) ([`db3a2b5`](https://github.com/box/box-typescript-sdk-gen/commit/db3a2b57fbe0eec17373a2acf8089ff247c98225)) **Source:** [https://ja.developer.box.com/changelog/2024-08-12-box-typescript-sdk-generated-v140-released](https://ja.developer.box.com/changelog/2024-08-12-box-typescript-sdk-generated-v140-released) --- ### Box TypeScript SDK Generated `v1.5.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.5.0のリリース バグ修正 Signテンプレートの署名者に不足していたフィールドを追加し、AIスキーマを修正 (box/box-openapi#451) (#317) (340fbd… # Box TypeScript SDK Generated v1.5.0のリリース ### バグ修正 - Signテンプレートの署名者に不足していたフィールドを追加し、AIスキーマを修正 (box/box-openapi[#451](https://github.com/box/box-typescript-sdk-gen/issues/451)) ([#317](https://github.com/box/box-typescript-sdk-gen/issues/317)) ([`340fbd8`](https://github.com/box/box-typescript-sdk-gen/commit/340fbd84f6fa408155c6a2a4b9b7b03b88f76f24)) - `IntegrationMapping`スキーマを修正 (box/box-codegen[#551](https://github.com/box/box-typescript-sdk-gen/issues/551)) ([#315](https://github.com/box/box-typescript-sdk-gen/issues/315)) ([`a863b1e`](https://github.com/box/box-typescript-sdk-gen/commit/a863b1eb8fcfccd78714e3f52ce96d89ef69ca72)) ### 新機能と機能強化 - Box AIのメソッドに新しいパラメータを追加し、`AiResponseFull`バリアントを導入 (box/box-openapi[#446](https://github.com/box/box-typescript-sdk-gen/issues/446)) ([#313](https://github.com/box/box-typescript-sdk-gen/issues/313)) ([`d9664fd`](https://github.com/box/box-typescript-sdk-gen/commit/d9664fd7d431685c8e115415085bbe69d17f272d)) - `FetchOptions`にURLを追加 (box/box-codegen[#549](https://github.com/box/box-typescript-sdk-gen/issues/549)) ([#319](https://github.com/box/box-typescript-sdk-gen/issues/319)) ([`30eaa6b`](https://github.com/box/box-typescript-sdk-gen/commit/30eaa6ba7aa0fcd5e2f71026d7bf58729d387221)) **Source:** [https://ja.developer.box.com/changelog/2024-08-23-box-typescript-sdk-generated-v150-released](https://ja.developer.box.com/changelog/2024-08-23-box-typescript-sdk-generated-v150-released) --- ### Box TypeScript SDK Generated `v1.5.1`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.5.1のリリース バグ修正 インターセプタのfetchオプションを修正 (box/box-codegen#556) (#326) (3751eea) # Box TypeScript SDK Generated v1.5.1のリリース ### バグ修正 - インターセプタのfetchオプションを修正 (box/box-codegen[#556](https://github.com/box/box-typescript-sdk-gen/issues/556)) ([#326](https://github.com/box/box-typescript-sdk-gen/issues/326)) ([`3751eea`](https://github.com/box/box-typescript-sdk-gen/commit/3751eea67047021fe298c841596ae362ed1e47da)) **Source:** [https://ja.developer.box.com/changelog/2024-08-30-box-typescript-sdk-generated-v151-released](https://ja.developer.box.com/changelog/2024-08-30-box-typescript-sdk-generated-v151-released) --- ### Box TypeScript SDK Generated `v1.6.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.6.0のリリース バグ修正 不足していたライセンスをpackage.jsonに追加 (box/box-codegen#562) (#343) (cc9a8b8) メタデータクエリの結果のバリアントを修正 (box… # Box TypeScript SDK Generated v1.6.0のリリース ### バグ修正 - 不足していたライセンスを`package.json`に追加 (box/box-codegen[#562](https://github.com/box/box-typescript-sdk-gen/issues/562)) ([#343](https://github.com/box/box-typescript-sdk-gen/issues/343)) ([`cc9a8b8`](https://github.com/box/box-typescript-sdk-gen/commit/cc9a8b8ac628e348d32176f8ba69add649c555bd)) - メタデータクエリの結果のバリアントを修正 (box/box-openapi[#456](https://github.com/box/box-typescript-sdk-gen/issues/456)) ([#349](https://github.com/box/box-typescript-sdk-gen/issues/349)) ([`2131e98`](https://github.com/box/box-typescript-sdk-gen/commit/2131e98ff5530c7440ff50ec0da46cc317d0a4ae)) ### 新機能と機能強化 - Hubsベータ版を追加 (box/box-openapi[#453](https://github.com/box/box-typescript-sdk-gen/issues/453)) ([#333](https://github.com/box/box-typescript-sdk-gen/issues/333)) ([`40359c7`](https://github.com/box/box-typescript-sdk-gen/commit/40359c71aa25ecfe7ec53bfa19de62b9d83d4ace)) - プロキシのサポートを追加 (box/box-codegen[#559](https://github.com/box/box-typescript-sdk-gen/issues/559)) ([#337](https://github.com/box/box-typescript-sdk-gen/issues/337)) ([`0ffd9c8`](https://github.com/box/box-typescript-sdk-gen/commit/0ffd9c8095d1aa742144146383ae94f1f4526af0)) **Source:** [https://ja.developer.box.com/changelog/2024-09-11-box-typescript-sdk-generated-v160-released](https://ja.developer.box.com/changelog/2024-09-11-box-typescript-sdk-generated-v160-released) --- ### Box TypeScript SDK Generated `v1.7.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.7.0のリリース 新機能と機能強化 レスポンスオブジェクトに未加工のデータを追加 (box/box-codegen#576) (#375) (bdb9d0c) ai/extractおよびai/extract… # Box TypeScript SDK Generated v1.7.0のリリース ### 新機能と機能強化 - レスポンスオブジェクトに未加工のデータを追加 (box/box-codegen[#576](https://github.com/box/box-typescript-sdk-gen/issues/576)) ([#375](https://github.com/box/box-typescript-sdk-gen/issues/375)) ([`bdb9d0c`](https://github.com/box/box-typescript-sdk-gen/commit/bdb9d0caab1a54ca56aef5de4260215d1d3fbd35)) - `ai/extract`および`ai/extract_structured`エンドポイントをサポート (box/box-codegen[#566](https://github.com/box/box-typescript-sdk-gen/issues/566)) ([#356](https://github.com/box/box-typescript-sdk-gen/issues/356)) ([`4a33562`](https://github.com/box/box-typescript-sdk-gen/commit/4a335621c7eaa413162a5daa65d63d8353ba37f5)) **Source:** [https://ja.developer.box.com/changelog/2024-10-17-box-typescript-sdk-generated-v170-released](https://ja.developer.box.com/changelog/2024-10-17-box-typescript-sdk-generated-v170-released) --- ### Box TypeScript SDK Generated `v1.8.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.8.0のリリース バグ修正 ClientErrorのadditionalPropertiesを修正 (box/box-openapi#477) (#385) (454714… # Box TypeScript SDK Generated v1.8.0のリリース ### バグ修正 - `ClientError`の`additionalProperties`を修正 (box/box-openapi[#477](https://github.com/box/box-typescript-sdk-gen/issues/477)) ([#385](https://github.com/box/box-typescript-sdk-gen/issues/385)) ([`4547148`](https://github.com/box/box-typescript-sdk-gen/commit/454714861019998b1fc6b7c44696b0178ffa022b)) - ブラウザでの分割アップロードを修正 (box/box-codegen[#619](https://github.com/box/box-typescript-sdk-gen/issues/619)) ([#436](https://github.com/box/box-typescript-sdk-gen/issues/436)) ([`0af2484`](https://github.com/box/box-typescript-sdk-gen/commit/0af2484dd8387cce1a8c235068ac3f834f8ecf42)) - コンテンツのないステータスコードをサポート (box/box-codegen[#604](https://github.com/box/box-typescript-sdk-gen/issues/604)) ([#415](https://github.com/box/box-typescript-sdk-gen/issues/415)) ([`c3f14c6`](https://github.com/box/box-typescript-sdk-gen/commit/c3f14c6af55ab78ed5dc981909c67397b0d7219e)) - スキーマエラーをサポートするようクライアントエラースキーマを更新 (box/box-openapi[#467](https://github.com/box/box-typescript-sdk-gen/issues/467)) ([#381](https://github.com/box/box-typescript-sdk-gen/issues/381)) ([`b845f12`](https://github.com/box/box-typescript-sdk-gen/commit/b845f12d194d5f4e0cfd66db1db294e2f9a9bff8)) - 統合マッピングのレスポンスの説明を更新 (box/box-openapi[#463](https://github.com/box/box-typescript-sdk-gen/issues/463)) ([#379](https://github.com/box/box-typescript-sdk-gen/issues/379)) ([`e3d71e1`](https://github.com/box/box-typescript-sdk-gen/commit/e3d71e100500c5fa9e478b5228fd395f68242cf2)) ### 新機能と機能強化 - AI LLMエンドポイントのAWS `params`を追加 (box/box-openapi[#478](https://github.com/box/box-typescript-sdk-gen/issues/478)) ([#388](https://github.com/box/box-typescript-sdk-gen/issues/388)) ([`d2fd1ec`](https://github.com/box/box-typescript-sdk-gen/commit/d2fd1ec4bddb19b353e286908c99477e08b90457)) - カスタムHTTPリクエストを行うためのメソッドを公開し、`FetchOptions`をクラスに変換 (box/box-codegen[#610](https://github.com/box/box-typescript-sdk-gen/issues/610)) ([#431](https://github.com/box/box-typescript-sdk-gen/issues/431)) ([`9a9ea62`](https://github.com/box/box-typescript-sdk-gen/commit/9a9ea628fd21001437d92b32f1760d5ba14cb46b)) - IDを指定してコレクションを取得エンドポイントをサポート (box/box-codegen[#595](https://github.com/box/box-typescript-sdk-gen/issues/595)) ([#396](https://github.com/box/box-typescript-sdk-gen/issues/396)) ([`f1f47be`](https://github.com/box/box-typescript-sdk-gen/commit/f1f47bebfc0981a5e67f301b6fc2e3a8568d5845)) - ファイルのダウンロードURLとファイルのサムネイルURLの取得をサポート (box/box-codegen[#617](https://github.com/box/box-typescript-sdk-gen/issues/617)) ([#435](https://github.com/box/box-typescript-sdk-gen/issues/435)) ([`1cb4d5d`](https://github.com/box/box-typescript-sdk-gen/commit/1cb4d5d93fbd94b952b876457008973a92d5aa23)) - TypeScriptの`nullable`フィールドをサポート (box/box-codegen[#612](https://github.com/box/box-typescript-sdk-gen/issues/612)) ([#425](https://github.com/box/box-typescript-sdk-gen/issues/425)) ([`991dc29`](https://github.com/box/box-typescript-sdk-gen/commit/991dc29bc805bf0c5198277142efb9a85de1dd42)) **Source:** [https://ja.developer.box.com/changelog/2024-12-03-box-typescript-sdk-generated-v180-released](https://ja.developer.box.com/changelog/2024-12-03-box-typescript-sdk-generated-v180-released) --- ### Box TypeScript SDK Generated `v1.9.0`のリリース **Type:** changelog | **Section:** Changelog Box TypeScript SDK Generated v1.9.0のリリース バグ修正 InterceptorインターフェースのbeforeRequestメソッドの署名を修正 (box/box-codegen#625) (#446) (ef2e76… # Box TypeScript SDK Generated v1.9.0のリリース ### バグ修正 - `Interceptor`インターフェースの`beforeRequest`メソッドの署名を修正 (box/box-codegen[#625](https://github.com/box/box-typescript-sdk-gen/issues/625)) ([#446](https://github.com/box/box-typescript-sdk-gen/issues/446)) ([`ef2e765`](https://github.com/box/box-typescript-sdk-gen/commit/ef2e7658cab705906325e40d6c7c6e96e5703201)) ### 新機能と機能強化 - `AiResponse`に`aiAgent`の情報を追加 (box/box-codegen[#624](https://github.com/box/box-typescript-sdk-gen/issues/624)) ([#440](https://github.com/box/box-typescript-sdk-gen/issues/440)) ([`24c2013`](https://github.com/box/box-typescript-sdk-gen/commit/24c20131b8275d43ecb02f3c94ac8e6116de3ea9)) - ファイル、フォルダ、ウェブリンクの更新で`userId`パラメータ (省略可) をサポート (box/box-openapi[#488](https://github.com/box/box-typescript-sdk-gen/issues/488)) ([#445](https://github.com/box/box-typescript-sdk-gen/issues/445)) ([`874f259`](https://github.com/box/box-typescript-sdk-gen/commit/874f259ce12e8440301ffb1b2b65a6765b87803f)) **Source:** [https://ja.developer.box.com/changelog/2024-12-09-box-typescript-sdk-generated-v190-released](https://ja.developer.box.com/changelog/2024-12-09-box-typescript-sdk-generated-v190-released) --- ### Box UI Elements `v11.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v11.0.0のリリース 11.0.0 (2019年11月9日) バグ修正 activity-feed: Edgeのタスク/コメントの長いユーザー名を修正 (#1604) (572e4d7) activity-feed… # Box UI Elements v11.0.0のリリース ## 11.0.0 (2019年11月9日) ### バグ修正 - **`activity-feed`:** Edgeのタスク/コメントの長いユーザー名を修正 ([#1604](https://github.com/box/box-ui-elements/issues/1604)) ([`572e4d7`](https://github.com/box/box-ui-elements/commit/572e4d7)) - **`activity-feed`:** アクティビティフィードのバージョン順序を修正 ([#1272](https://github.com/box/box-ui-elements/issues/1272)) ([`533c112`](https://github.com/box/box-ui-elements/commit/533c112)) - **`activity-feed`:** フィード項目と空の状態のインラインエラーをリファクタリング ([#1697](https://github.com/box/box-ui-elements/issues/1697)) ([`2702367`](https://github.com/box/box-ui-elements/commit/2702367)) - **`annotation`:** Boxの注釈で使用されるセレクタを追加することでヘッダーを修正 ([#1637](https://github.com/box/box-ui-elements/issues/1637)) ([`9302486`](https://github.com/box/box-ui-elements/commit/9302486)) - **`app-activity`:** resin機能名からアンダースコアを削除 ([#1456](https://github.com/box/box-ui-elements/issues/1456)) ([`b7c21e7`](https://github.com/box/box-ui-elements/commit/b7c21e7)) - **`app-activity`:** コメント/タスクに一致するようアプリのアクティビティを更新 ([#1449](https://github.com/box/box-ui-elements/issues/1449)) ([`b58aa2f`](https://github.com/box/box-ui-elements/commit/b58aa2f)) - **`arrow-stepper`:** KeyBindingコンポーネントの矢印ステッパーを修正 ([#1654](https://github.com/box/box-ui-elements/issues/1654)) ([`a05b015`](https://github.com/box/box-ui-elements/commit/a05b015)) - **`avatar`:** アバターのイニシャルのv位置を修正 ([#1311](https://github.com/box/box-ui-elements/issues/1311)) ([`23e6d5f`](https://github.com/box/box-ui-elements/commit/23e6d5f)) - **`avatar`:** アクティビティサイドバーでのアバターの解像度を修正 ([#1243](https://github.com/box/box-ui-elements/issues/1243)) ([`88a5f1c`](https://github.com/box/box-ui-elements/commit/88a5f1c)) - **`avatar`:** URL変更の効果の代わりに派生状態を使用 ([#1643](https://github.com/box/box-ui-elements/issues/1643)) ([`f89c138`](https://github.com/box/box-ui-elements/commit/f89c138)) - **`bdl`:** 色変数名のSCSSチェックを追加 ([#1514](https://github.com/box/box-ui-elements/issues/1514)) ([`a4f446f`](https://github.com/box/box-ui-elements/commit/a4f446f)) - **`bdl`:** 標準と太字に一致するようフォントの太さを調整 `lato` ([#1517](https://github.com/box/box-ui-elements/issues/1517)) ([`35a4070`](https://github.com/box/box-ui-elements/commit/35a4070)) - **`beta-feedback`:** `aria-labelledby`属性名を更新 ([#1249](https://github.com/box/box-ui-elements/issues/1249)) ([`c164aec`](https://github.com/box/box-ui-elements/commit/c164aec)) - **`breadcrumb`:** 欠落しているimportを追加 ([#1657](https://github.com/box/box-ui-elements/issues/1657)) ([`fec4735`](https://github.com/box/box-ui-elements/commit/fec4735)) - **`button`:** ボタンから水平方向の余白を削除 ([#1362](https://github.com/box/box-ui-elements/issues/1362)) ([`a6989a0`](https://github.com/box/box-ui-elements/commit/a6989a0)) - **`button`:** ボタンからの水平方向の余白の削除を元に戻す ([#1362](https://github.com/box/box-ui-elements/issues/1362)) ([#1400](https://github.com/box/box-ui-elements/issues/1400)) ([`3ac424c`](https://github.com/box/box-ui-elements/commit/3ac424c)) - **`classification`:** バッジに`tabindex`を含めない ([#1622](https://github.com/box/box-ui-elements/issues/1622)) ([`4ab0c20`](https://github.com/box/box-ui-elements/commit/4ab0c20)) - **`classification`:** 分類バッジUXの微調整 ([#1378](https://github.com/box/box-ui-elements/issues/1378)) ([`fa82a8d`](https://github.com/box/box-ui-elements/commit/fa82a8d)) - **`classification`:** IE11で分類のツールチップが表示されない ([#1710](https://github.com/box/box-ui-elements/issues/1710)) ([`d08b53c`](https://github.com/box/box-ui-elements/commit/d08b53c)) - **`classification`:** `onclick`のフロー定義 ([#1712](https://github.com/box/box-ui-elements/issues/1712)) ([`9e620ce`](https://github.com/box/box-ui-elements/commit/9e620ce)) - **`classification`:** 分類バッジアイコンの復元 ([#1390](https://github.com/box/box-ui-elements/issues/1390)) ([`5db4b3e`](https://github.com/box/box-ui-elements/commit/5db4b3e)) - **`collaborator-avatars`:** キーボードアクセシビリティを追加 ([#1680](https://github.com/box/box-ui-elements/issues/1680)) ([`baefaed`](https://github.com/box/box-ui-elements/commit/baefaed)) - **`collapsible`:** 純粋なコンポーネントにする必要がある ([#1407](https://github.com/box/box-ui-elements/issues/1407)) ([`5e32c80`](https://github.com/box/box-ui-elements/commit/5e32c80)) - **`comment`:** 複数のコメントをサポートするためにコメント領域に高さを追加 ([#1474](https://github.com/box/box-ui-elements/issues/1474)) ([`e270131`](https://github.com/box/box-ui-elements/commit/e270131)) - **`comment`:** コメントUIのパディングと`a11y`の調整 ([#1358](https://github.com/box/box-ui-elements/issues/1358)) ([`927a34a`](https://github.com/box/box-ui-elements/commit/927a34a)) - **`comment`:** 冗長な`aria-label`を削除 ([#1291](https://github.com/box/box-ui-elements/issues/1291)) ([`ef48f88`](https://github.com/box/box-ui-elements/commit/ef48f88)) - **`comment`:** 確認ダイアログにオーバーレイのZインデックスを使用 ([#1270](https://github.com/box/box-ui-elements/issues/1270)) ([`bcf2852`](https://github.com/box/box-ui-elements/commit/bcf2852)) - **`comments`:** エディタの既存のコメントをフォーマット ([#1469](https://github.com/box/box-ui-elements/issues/1469)) ([`6b82510`](https://github.com/box/box-ui-elements/commit/6b82510)) - **`constants`:** 明示的な型のインポート ([#1584](https://github.com/box/box-ui-elements/issues/1584)) ([`7d38fb8`](https://github.com/box/box-ui-elements/commit/7d38fb8)) - **`content-explorer`:** `ContentExplorer`および`ContentPicker`でウェブリンクの共有の処理が可能に ([#1515](https://github.com/box/box-ui-elements/issues/1515)) ([`55edef7`](https://github.com/box/box-ui-elements/commit/55edef7)) - **`content-explorer`:** `MDVGridView`インポートの修正 ([#1333](https://github.com/box/box-ui-elements/issues/1333)) ([`9740342`](https://github.com/box/box-ui-elements/commit/9740342)) - **`content-explorer`:** ウィンドウを閉じた後に行が動作しなくなる問題を修正 ([#1245](https://github.com/box/box-ui-elements/issues/1245)) ([`d7f53ff`](https://github.com/box/box-ui-elements/commit/d7f53ff)) - **`content-preview`:** ナビゲーション時にディープリンクパスを削除 ([#1665](https://github.com/box/box-ui-elements/issues/1665)) ([`84b4ea4`](https://github.com/box/box-ui-elements/commit/84b4ea4)) - **`content-uploader`:** 100%に達したときにキャンセルボタンを無効化 ([#1511](https://github.com/box/box-ui-elements/issues/1511)) ([`a6de1b0`](https://github.com/box/box-ui-elements/commit/a6de1b0)) - **`content-uploader`:** タスクをキャンセルすると他のタスクが開始される問題を修正 ([#1653](https://github.com/box/box-ui-elements/issues/1653)) ([`f35b2ea`](https://github.com/box/box-ui-elements/commit/f35b2ea)) - **`content-uploader`:** 同時に重複ファイルがアップロードされる問題を修正 ([#1652](https://github.com/box/box-ui-elements/issues/1652)) ([`6faed59`](https://github.com/box/box-ui-elements/commit/6faed59)) - **`datetime`:**ミリ秒なしの時間のサポートを追加 ([#1191](https://github.com/box/box-ui-elements/issues/1191)) ([`19f3703`](https://github.com/box/box-ui-elements/commit/19f3703)) - **`deps`:** `axios`のピア依存関係をダウングレード ([#1329](https://github.com/box/box-ui-elements/issues/1329)) ([`d1a1bd9`](https://github.com/box/box-ui-elements/commit/d1a1bd9)) - **`examples`:** 現在のBoxの設計言語に合わせて色を変更 ([#1281](https://github.com/box/box-ui-elements/issues/1281)) ([`94869ad`](https://github.com/box/box-ui-elements/commit/94869ad)) - **`explorer`:** オンデマンドで共有リンクを取得 ([#1479](https://github.com/box/box-ui-elements/issues/1479)) ([`2d29628`](https://github.com/box/box-ui-elements/commit/2d29628)) - **`feed`:** フィード項目のディープリンクのインラインエラー ([#1655](https://github.com/box/box-ui-elements/issues/1655)) ([`e2be3bd`](https://github.com/box/box-ui-elements/commit/e2be3bd)) - **`feed`:** IE11でタスク担当者名が切り詰められる ([#1694](https://github.com/box/box-ui-elements/issues/1694)) ([`a20e610`](https://github.com/box/box-ui-elements/commit/a20e610)) - **`floatfield`:** 浮動小数点フィールドの末尾の`.`を常に許可 ([#1178](https://github.com/box/box-ui-elements/issues/1178)) ([`61d4e3d`](https://github.com/box/box-ui-elements/commit/61d4e3d)) - **`footer-indicator`:** フッターインジケータの上に表示されるようにツールチップを移動 ([`bf7782c`](https://github.com/box/box-ui-elements/commit/bf7782c)) - **`header-flyout`:** IE11のスクロールのバグを修正するためのウィンドウに対する制約 ([#1310](https://github.com/box/box-ui-elements/issues/1310)) ([`f8bb323`](https://github.com/box/box-ui-elements/commit/f8bb323)) - **`i18n`:** 「承諾済み」コピーを「承認済み」に変更 ([#1214](https://github.com/box/box-ui-elements/issues/1214)) ([`674bf45`](https://github.com/box/box-ui-elements/commit/674bf45)) - **`i18n`:** HTMLで始まるメッセージによって例外が発生するバグを修正 ([#1490](https://github.com/box/box-ui-elements/issues/1490)) ([`73d95b9`](https://github.com/box/box-ui-elements/commit/73d95b9)) - **`i18n`:** `Param`と`Plural`を`styleguide.conf`に含めない ([#1197](https://github.com/box/box-ui-elements/issues/1197)) ([`2d34ad4`](https://github.com/box/box-ui-elements/commit/2d34ad4)) - **`i18n`:** タスク担当者メッセージに複数形式を使用 ([#1345](https://github.com/box/box-ui-elements/issues/1345)) ([`10d6b76`](https://github.com/box/box-ui-elements/commit/10d6b76)) - **`icons`:** 地球アイコンの背景を塗りつぶし ([#1226](https://github.com/box/box-ui-elements/issues/1226)) ([`c91d320`](https://github.com/box/box-ui-elements/commit/c91d320)) - **`icons`:** 左ナビゲーションのユーザビリティのためにコレクションアイコンを修正 ([#1238](https://github.com/box/box-ui-elements/issues/1238)) ([`9e91115`](https://github.com/box/box-ui-elements/commit/9e91115)) - **`icons`:** コレクションアイコンにSUIT classNamesを指定 ([#1242](https://github.com/box/box-ui-elements/issues/1242)) ([`3b62245`](https://github.com/box/box-ui-elements/commit/3b62245)) - **`icons`:** 再試行および公開アイコンを更新 ([#1297](https://github.com/box/box-ui-elements/issues/1297)) ([`bfa075a`](https://github.com/box/box-ui-elements/commit/bfa075a)) - **`icons`:** ごみ箱、移動/コピー、追加、ダウンロード、アップロード、コレクションを更新 ([#1702](https://github.com/box/box-ui-elements/issues/1702)) ([`b126ecb`](https://github.com/box/box-ui-elements/commit/b126ecb)) - **`icons`:** 追加アイコンのスタイルを更新し、非表示の目のアイコンを追加 ([#1266](https://github.com/box/box-ui-elements/issues/1266)) ([`b47e22e`](https://github.com/box/box-ui-elements/commit/b47e22e)) - **`iconworkflow`:** 背景の長方形を`viewBox`と同じにする ([#1241](https://github.com/box/box-ui-elements/issues/1241)) ([`9e07f2e`](https://github.com/box/box-ui-elements/commit/9e07f2e)) - **`inlinenotice`:** Boxデザインの標準に更新 ([#1576](https://github.com/box/box-ui-elements/issues/1576)) ([`a814657`](https://github.com/box/box-ui-elements/commit/a814657)) - **`item-properties`:** 説明テキストエリアに`aria-labelledby`を追加 ([#1229](https://github.com/box/box-ui-elements/issues/1229)) ([`05d86b1`](https://github.com/box/box-ui-elements/commit/05d86b1)) - **`left-sidebar`:** リンクのラッパーをドロップするためのキーを追加 ([#1299](https://github.com/box/box-ui-elements/issues/1299)) ([`9c78135`](https://github.com/box/box-ui-elements/commit/9c78135)) - **`left-sidebar`:** インジケータを読み込むための余白を調整 ([#1545](https://github.com/box/box-ui-elements/issues/1545)) ([`6ba65c6`](https://github.com/box/box-ui-elements/commit/6ba65c6)) - **`left-sidebar`:** 画面サイズが中の場合に切り替えアイコンを非表示にする ([#1344](https://github.com/box/box-ui-elements/issues/1344)) ([`716fe01`](https://github.com/box/box-ui-elements/commit/716fe01)) - **`media`:** `.btn-plain`を回避するためメディアボタンのCSSの特異性を向上 ([#1463](https://github.com/box/box-ui-elements/issues/1463)) ([`943638d`](https://github.com/box/box-ui-elements/commit/943638d)) - **`mention-selector`:** `hasReceivedFirstInteraction`ロジックを修正 ([#1434](https://github.com/box/box-ui-elements/issues/1434)) ([`afd94fa`](https://github.com/box/box-ui-elements/commit/afd94fa)) - **`menu`:** メニュー項目ボタンのパディングを修正 ([#1446](https://github.com/box/box-ui-elements/issues/1446)) ([`5baeb5b`](https://github.com/box/box-ui-elements/commit/5baeb5b)) - **`menu`:** 表示されている場合のみマウント時にメニューを自動フォーカス ([#1175](https://github.com/box/box-ui-elements/issues/1175)) ([`2ba8a1d`](https://github.com/box/box-ui-elements/commit/2ba8a1d)) - **`metadata`:** メタデータ入力フィールドのオートコンプリートを表示 ([#1629](https://github.com/box/box-ui-elements/issues/1629)) ([`85995cd`](https://github.com/box/box-ui-elements/commit/85995cd)) - **`metadata`:** Safariのテンプレートドロップダウンスクロールバーの問題 ([#1192](https://github.com/box/box-ui-elements/issues/1192)) ([`1dc0d99`](https://github.com/box/box-ui-elements/commit/1dc0d99)) - **`metadata-sidebar`:** `onApiError`を適切にバインド ([#1713](https://github.com/box/box-ui-elements/issues/1713)) ([`50b72f2`](https://github.com/box/box-ui-elements/commit/50b72f2)) - **`modal`:** スクリーンリーダーを改良するために閉じるボタンをヘッダーの後に移動 `a11y` ([#1684](https://github.com/box/box-ui-elements/issues/1684)) ([`29a1220`](https://github.com/box/box-ui-elements/commit/29a1220)) - **`nav-sidebar`:** フォーカスのアウトラインを修正するために切り替えボタンのサイズを縮小 ([#1305](https://github.com/box/box-ui-elements/issues/1305)) ([`9a14ae7`](https://github.com/box/box-ui-elements/commit/9a14ae7)) - **`notifications`:** アクセシビリティの属性を追加 ([#1682](https://github.com/box/box-ui-elements/issues/1682)) ([`21af355`](https://github.com/box/box-ui-elements/commit/21af355)) - **`open-with`:** エラーメッセージを改善 ([#1489](https://github.com/box/box-ui-elements/issues/1489)) ([`d3d98a5`](https://github.com/box/box-ui-elements/commit/d3d98a5)) - **`pill-selector`:** 行区切りの値をコピーと貼り付けを許可 ([#1350](https://github.com/box/box-ui-elements/issues/1350)) ([`7933932`](https://github.com/box/box-ui-elements/commit/7933932)) - **`pill-selector`:** 入力をキャッチする`onInput`を公開 ([#1450](https://github.com/box/box-ui-elements/issues/1450)) ([`48d22a4`](https://github.com/box/box-ui-elements/commit/48d22a4)) - **`pill-selector`:** UXの微調整 ([#1315](https://github.com/box/box-ui-elements/issues/1315)) ([`e4fdf58`](https://github.com/box/box-ui-elements/commit/e4fdf58)) - **`pill-selector-dropdown`:** `PillSelector`が無効になるときにピルを無効化 ([#1357](https://github.com/box/box-ui-elements/issues/1357)) ([`2bf496e`](https://github.com/box/box-ui-elements/commit/2bf496e)) - **`pill-selector-dropdown`:** aria属性を修正 ([#1681](https://github.com/box/box-ui-elements/issues/1681)) ([`1e0d1ab`](https://github.com/box/box-ui-elements/commit/1e0d1ab)) - **`pill-selector-dropdown`:** クリック時にピルが削除される問題を修正 ([#1367](https://github.com/box/box-ui-elements/issues/1367)) ([`d67fcfe`](https://github.com/box/box-ui-elements/commit/d67fcfe)) - **`pills`:** ピルセレクタ入力テキストの垂直方向の中央揃えを修正 ([#1364](https://github.com/box/box-ui-elements/issues/1364)) ([`d47c69c`](https://github.com/box/box-ui-elements/commit/d47c69c)) - **`pillselectordropdown`:** コンテキストメニューからの貼り付けをサポート ([#1597](https://github.com/box/box-ui-elements/issues/1597)) ([`d16b0da`](https://github.com/box/box-ui-elements/commit/d16b0da)) - **`preview`:** プレビューのヘッダースタイルをクリーンアップし、余分な境界線を削除 ([#1484](https://github.com/box/box-ui-elements/issues/1484)) ([`6c1a363`](https://github.com/box/box-ui-elements/commit/6c1a363)) - **`quick-search`:** 境界線の半径をBDLに従うように更新 ([#1439](https://github.com/box/box-ui-elements/issues/1439)) ([`936f5e0`](https://github.com/box/box-ui-elements/commit/936f5e0)) - **`radio-group`:** 値のプロパティを渡すことでラジオボタングループを修正 ([#1452](https://github.com/box/box-ui-elements/issues/1452)) ([`c0c05be`](https://github.com/box/box-ui-elements/commit/c0c05be)) - **`radio-group`:** 残りのプロパティをラジオボタン入力に渡す ([#1448](https://github.com/box/box-ui-elements/issues/1448)) ([`85ca38a`](https://github.com/box/box-ui-elements/commit/85ca38a)) - **`scripts`:** プッシュ前にすべてのファイルをビルドして更新 ([#1415](https://github.com/box/box-ui-elements/issues/1415)) ([`e432c47`](https://github.com/box/box-ui-elements/commit/e432c47)) - **`scroll-if-needed`:** セレクタドロップダウンのscroll-if-neededを修正 ([#1280](https://github.com/box/box-ui-elements/issues/1280)) ([`3776dc8`](https://github.com/box/box-ui-elements/commit/3776dc8)) - **`search`:** `ContentExplorer`検索の丸みのある角を削除 ([#1478](https://github.com/box/box-ui-elements/issues/1478)) ([`7d9100b`](https://github.com/box/box-ui-elements/commit/7d9100b)) - **`security`:** セキュリティの脆弱性に対処するために`axios`をアップグレード ([#1228](https://github.com/box/box-ui-elements/issues/1228)) ([`db26743`](https://github.com/box/box-ui-elements/commit/db26743)) - **`security-badge`:** `SecurityBadge`フロータイプの修正 ([#1664](https://github.com/box/box-ui-elements/issues/1664)) ([`ae23f01`](https://github.com/box/box-ui-elements/commit/ae23f01)) - **`select-field`:** 選択フィールドでの矢印スクロールを有効化 ([#1671](https://github.com/box/box-ui-elements/issues/1671)) ([`9f040f2`](https://github.com/box/box-ui-elements/commit/9f040f2)) - **`sidebar`:** コメント入力にflex-shrink 0を追加 ([#1359](https://github.com/box/box-ui-elements/issues/1359)) ([`cd840f4`](https://github.com/box/box-ui-elements/commit/cd840f4)) - **`sidebar`:** マークアップとアクセシビリティをタブリストに追加 ([#1563](https://github.com/box/box-ui-elements/issues/1563)) ([`f90a0d7`](https://github.com/box/box-ui-elements/commit/f90a0d7)) - **`sidebar`:** バージョン履歴サイドバーのディープリンクを修正 ([#1649](https://github.com/box/box-ui-elements/issues/1649)) ([`e85e57a`](https://github.com/box/box-ui-elements/commit/e85e57a)) - **`sidebar`:** 大きなビューポートでサイドバーが自動で開かない問題を修正 ([#1508](https://github.com/box/box-ui-elements/issues/1508)) ([`dac39ee`](https://github.com/box/box-ui-elements/commit/dac39ee)) - **`sidebar`:** サイドバーナビゲーションの追加タブの高さの最大値を制限 ([#1557](https://github.com/box/box-ui-elements/issues/1557)) ([`e7f953e`](https://github.com/box/box-ui-elements/commit/e7f953e)) - **`sidebar`:** タブを意味的にわかりやすくする ([#1236](https://github.com/box/box-ui-elements/issues/1236)) ([`eb398fc`](https://github.com/box/box-ui-elements/commit/eb398fc)) - **`sidebar`:** 項目プロパティのバージョンのパディング ([#1263](https://github.com/box/box-ui-elements/issues/1263)) ([`853e106`](https://github.com/box/box-ui-elements/commit/853e106)) - **`sidebar`:** 空の状態の不要な括弧を削除 ([#1645](https://github.com/box/box-ui-elements/issues/1645)) ([`824f390`](https://github.com/box/box-ui-elements/commit/824f390)) - **`sidebar`:** サイドバーが強制的に開かれた場合にダーティ状態を設定 ([#1366](https://github.com/box/box-ui-elements/issues/1366)) ([`e71409c`](https://github.com/box/box-ui-elements/commit/e71409c)) - **`sidebar`:** アクティビティフィードコンテナの`flexbox`を更新 ([#1341](https://github.com/box/box-ui-elements/issues/1341)) ([`c5e07b1`](https://github.com/box/box-ui-elements/commit/c5e07b1)) - **`subheader`:** グリッドビューに関するロジックを追加 ([#1659](https://github.com/box/box-ui-elements/issues/1659)) ([`7a53050`](https://github.com/box/box-ui-elements/commit/7a53050)) - **`task`:** タスク完了ルールアイコンの文字列 ([#1573](https://github.com/box/box-ui-elements/issues/1573)) ([`79c3f00`](https://github.com/box/box-ui-elements/commit/79c3f00)) - **`task-form`:** フォーム送信時にタスク担当者のオートコンプリートをクリア ([#1605](https://github.com/box/box-ui-elements/issues/1605)) ([`63efa10`](https://github.com/box/box-ui-elements/commit/63efa10)) - **`task-form`:** 日付選択機能でのテキスト入力を禁止 ([#1540](https://github.com/box/box-ui-elements/issues/1540)) ([`af49827`](https://github.com/box/box-ui-elements/commit/af49827)) - **`task-form`:** タスクフォームの送信ボタンを無効にしない ([#1323](https://github.com/box/box-ui-elements/issues/1323)) ([`9a4137b`](https://github.com/box/box-ui-elements/commit/9a4137b)) - **`task-form`:** 重要ではないが必須のフィールドが残っている場合のエラーメッセージを更新 ([#1353](https://github.com/box/box-ui-elements/issues/1353)) ([`be10f37`](https://github.com/box/box-ui-elements/commit/be10f37)) - **`task-new`:**位置の修正、CSSリファクタリング ([#1312](https://github.com/box/box-ui-elements/issues/1312)) ([`411c3e9`](https://github.com/box/box-ui-elements/commit/411c3e9)) - **`task-new`:** タスクステータスのチェックマークの位置を修正 ([#1321](https://github.com/box/box-ui-elements/issues/1321)) ([`9f554ff`](https://github.com/box/box-ui-elements/commit/9f554ff)) - **`task-new`:** タスクメニューを追加するための視覚的な微調整 ([#1334](https://github.com/box/box-ui-elements/issues/1334)) ([`95a3c73`](https://github.com/box/box-ui-elements/commit/95a3c73)) - **`task-new`:** タスクメニューを追加するための視覚的な微調整 ([#1328](https://github.com/box/box-ui-elements/issues/1328)) ([`cf1acf1`](https://github.com/box/box-ui-elements/commit/cf1acf1)) - **`tasks`:** 欠落しているresinコンポーネントを追加 ([#1513](https://github.com/box/box-ui-elements/issues/1513)) ([`00e9707`](https://github.com/box/box-ui-elements/commit/00e9707)) - **`tasks`:** 担当者の入力フィールドのインタラクション ([#1621](https://github.com/box/box-ui-elements/issues/1621)) ([`dc33967`](https://github.com/box/box-ui-elements/commit/dc33967)) - **`tasks`:** プレビューのアクティビティサイドバーにコメントメニューが表示されない ([#1250](https://github.com/box/box-ui-elements/issues/1250)) ([`be7bc2f`](https://github.com/box/box-ui-elements/commit/be7bc2f)) - **`tasks`:** タスクの問題を修正 ([#1189](https://github.com/box/box-ui-elements/issues/1189)) ([`630fd38`](https://github.com/box/box-ui-elements/commit/630fd38)) - **`tasks`:** サイズ変更時にウィンドウが終了する ([#1603](https://github.com/box/box-ui-elements/issues/1603)) ([`2cbe014`](https://github.com/box/box-ui-elements/commit/2cbe014)) - **`tasks`:** 担当者のアバターのサイズ変更を防止 ([#1332](https://github.com/box/box-ui-elements/issues/1332)) ([`4e760f7`](https://github.com/box/box-ui-elements/commit/4e760f7)) - **`tasks`:** タスクタイプのサブテキストのコピーを更新 ([#1627](https://github.com/box/box-ui-elements/issues/1627)) ([`c788770`](https://github.com/box/box-ui-elements/commit/c788770)) - **`tasks_new`:** 欠落しているresinコンポーネントを追加 ([#1295](https://github.com/box/box-ui-elements/issues/1295)) ([`dbbf598`](https://github.com/box/box-ui-elements/commit/dbbf598)) - **`tasks-new`:** ウィンドウ終了時にセレクタの連絡先をリセット ([#1301](https://github.com/box/box-ui-elements/issues/1301)) ([`f387a9b`](https://github.com/box/box-ui-elements/commit/f387a9b)) - **`tasks-new`:** 削除されたユーザーの「以前のコラボレータ」を表示 ([#1313](https://github.com/box/box-ui-elements/issues/1313)) ([`c61fa77`](https://github.com/box/box-ui-elements/commit/c61fa77)) - **`tasks-new`:** タスクのアクションが更新されない ([#1302](https://github.com/box/box-ui-elements/issues/1302)) ([`2f88e96`](https://github.com/box/box-ui-elements/commit/2f88e96)) - **`tasks-new`:** ドキュメントと文字列を更新 ([#1317](https://github.com/box/box-ui-elements/issues/1317)) ([`6560b23`](https://github.com/box/box-ui-elements/commit/6560b23)) - **`template-dropdown`:** `onMenuToggle`ハンドラを`TemplateDropdown`に追加 ([#1318](https://github.com/box/box-ui-elements/issues/1318)) ([`2cdfcc4`](https://github.com/box/box-ui-elements/commit/2cdfcc4)) - **`text-input`:** ツールチップの切り替え時にフォーカスが失われる ([#1185](https://github.com/box/box-ui-elements/issues/1185)) ([`8a4c294`](https://github.com/box/box-ui-elements/commit/8a4c294)) - **`tooltip`:** 色のコントラストとレイアウトの修正 ([#1692](https://github.com/box/box-ui-elements/issues/1692)) ([`1c11770`](https://github.com/box/box-ui-elements/commit/1c11770)) - **`unfied-share-modal`:**共有リンクのアクセスレベル ([#1647](https://github.com/box/box-ui-elements/issues/1647)) ([`732a1dd`](https://github.com/box/box-ui-elements/commit/732a1dd)) - **`unified-share-modal`:** ウィンドウメニューに制約を追加 ([#1196](https://github.com/box/box-ui-elements/issues/1196)) ([`6501413`](https://github.com/box/box-ui-elements/commit/6501413)) - **`unified-share-modal`:** タイトルの分類 ([#1453](https://github.com/box/box-ui-elements/issues/1453)) ([`4ce5a06`](https://github.com/box/box-ui-elements/commit/4ce5a06)) - **`uploader`:** `MultiputUploads` IE11でのハングを停止 ([#1283](https://github.com/box/box-ui-elements/issues/1283)) ([`c49e52f`](https://github.com/box/box-ui-elements/commit/c49e52f)) - **`uploads`:** 進行中のタスクをキャンセルしても保留中のタスクが開始されない ([#1570](https://github.com/box/box-ui-elements/issues/1570)) ([`dbf115c`](https://github.com/box/box-ui-elements/commit/dbf115c)) - **`uploads`:** アップロードの再開時のハングを修正 ([#1695](https://github.com/box/box-ui-elements/issues/1695)) ([`3da93c8`](https://github.com/box/box-ui-elements/commit/3da93c8)) - **`uploads`:** 論理ゲートを削除 ([#1646](https://github.com/box/box-ui-elements/issues/1646)) ([`38d10e4`](https://github.com/box/box-ui-elements/commit/38d10e4)) - **`uploads`:** 再試行後に項目エラーをリセット ([#1600](https://github.com/box/box-ui-elements/issues/1600)) ([`0218f10`](https://github.com/box/box-ui-elements/commit/0218f10)) - **`uploads`:** アップロードのキャンセルのためのresin ([#1397](https://github.com/box/box-ui-elements/issues/1397)) ([`16311dc`](https://github.com/box/box-ui-elements/commit/16311dc)) - **`user-link`:** 長いユーザー名の折り返しを許可 ([#1602](https://github.com/box/box-ui-elements/issues/1602)) ([`bff49bb`](https://github.com/box/box-ui-elements/commit/bff49bb)) - **`usm`:** [リンク設定] では行の折り返しができない ([#1674](https://github.com/box/box-ui-elements/issues/1674)) ([`938c483`](https://github.com/box/box-ui-elements/commit/938c483)) - **`usm`:** `itemTypedId`を`onPillCreate`に追加 ([#1320](https://github.com/box/box-ui-elements/issues/1320)) ([`c4149ea`](https://github.com/box/box-ui-elements/commit/c4149ea)) - **`usm`:** `itemTypedID`を`getContactsByEmail`に渡さない ([#1354](https://github.com/box/box-ui-elements/issues/1354)) ([`e60b020`](https://github.com/box/box-ui-elements/commit/e60b020)) - **`versions`:** 電子すかし付きファイルの以前のバージョンのプレビューを無効化 ([#1405](https://github.com/box/box-ui-elements/issues/1405)) ([`9a527f2`](https://github.com/box/box-ui-elements/commit/9a527f2)) - **`versions`:** 最も関連性の高いバージョンアクションの日付と名前を表示 ([#1568](https://github.com/box/box-ui-elements/issues/1568)) ([`b68eccd`](https://github.com/box/box-ui-elements/commit/b68eccd)) - **`versions`:** 破棄されたAPIファクトリによる無限読み込みを修正 ([#1347](https://github.com/box/box-ui-elements/issues/1347)) ([`95949e2`](https://github.com/box/box-ui-elements/commit/95949e2)) - **`versions`:** バージョングループに前の月/年が折りたたまれている問題を修正 ([#1365](https://github.com/box/box-ui-elements/issues/1365)) ([`65d23b9`](https://github.com/box/box-ui-elements/commit/65d23b9)) - **`versions`:** 復元されたバージョンと昇格されたバージョンのエクスペリエンスを改善 ([#1631](https://github.com/box/box-ui-elements/issues/1631)) ([`25d0741`](https://github.com/box/box-ui-elements/commit/25d0741)) - **`versions`:** 電子すかし付きファイルの制限を緩和 ([#1342](https://github.com/box/box-ui-elements/issues/1342)) ([`2487b42`](https://github.com/box/box-ui-elements/commit/2487b42)) - **`versions`:** バージョンの昇格時にページを再読み込み (一時的) ([#1395](https://github.com/box/box-ui-elements/issues/1395)) ([`de7e74e`](https://github.com/box/box-ui-elements/commit/de7e74e)) - **`versions`:** 電子すかし付きファイルのアクションとプレビューを制限 ([#1339](https://github.com/box/box-ui-elements/issues/1339)) ([`fcb390d`](https://github.com/box/box-ui-elements/commit/fcb390d)) - **`versions`:** 電子すかし付きファイルのプレビューを制限 ([#1351](https://github.com/box/box-ui-elements/issues/1351)) ([`93b95c4`](https://github.com/box/box-ui-elements/commit/93b95c4)) - **`versions`:** ファイルバージョンの権限を取得してアクションに使用 ([#1193](https://github.com/box/box-ui-elements/issues/1193)) ([`9d7567e`](https://github.com/box/box-ui-elements/commit/9d7567e)) - **`versions`:** 選択されている場合にバージョンボタンをスクロールして表示 ([#1276](https://github.com/box/box-ui-elements/issues/1276)) ([`e0cd7e3`](https://github.com/box/box-ui-elements/commit/e0cd7e3)) - **`versions`:** バージョン履歴を非表示にせずにサーバーエラーを表示 ([#1275](https://github.com/box/box-ui-elements/issues/1275)) ([`ef3b2fd`](https://github.com/box/box-ui-elements/commit/ef3b2fd)) - **`versions`:** 不要なボタンを回避するようバージョンアクションを更新 ([#1556](https://github.com/box/box-ui-elements/issues/1556)) ([`bc9672e`](https://github.com/box/box-ui-elements/commit/bc9672e)) - **`versions`:** 最新のリテンションスキーマを使用するようバージョンサイドバーを更新 ([#1662](https://github.com/box/box-ui-elements/issues/1662)) ([`fa66232`](https://github.com/box/box-ui-elements/commit/fa66232)) - `Xhr.js`の`Accept-Language`ヘッダーを追加 ([#1368](https://github.com/box/box-ui-elements/issues/1368)) ([`361d73f`](https://github.com/box/box-ui-elements/commit/361d73f)) - 長いテキストにカーソルを合わせたときにツールチップを表示 ([#1230](https://github.com/box/box-ui-elements/issues/1230)) ([`c41dd47`](https://github.com/box/box-ui-elements/commit/c41dd47)) - チェックマークの位置を微調整 ([#1678](https://github.com/box/box-ui-elements/issues/1678)) ([`cfd055b`](https://github.com/box/box-ui-elements/commit/cfd055b)) - さまざまなフォームのアクセシビリティの改善 ([#1688](https://github.com/box/box-ui-elements/issues/1688)) ([`150cbbe`](https://github.com/box/box-ui-elements/commit/150cbbe)) - **`versions`:** 最新の契約と一致するようバージョンの復元呼び出しを更新 ([#1198](https://github.com/box/box-ui-elements/issues/1198)) ([`2e590d3`](https://github.com/box/box-ui-elements/commit/2e590d3)) ### 作業 - **`deps`:** `react`のピア/開発の依存関係を更新 ([#1606](https://github.com/box/box-ui-elements/issues/1606)) ([`1163db5`](https://github.com/box/box-ui-elements/commit/1163db5)) - **`formik`:** V2にアップグレード ([#1698](https://github.com/box/box-ui-elements/issues/1698)) ([`6b9ded9`](https://github.com/box/box-ui-elements/commit/6b9ded9)) ### コードのリファクタリング - `react`と`react-dom`を`v16.8`にアップグレードし、アバターをリファクタリング ([#1171](https://github.com/box/box-ui-elements/issues/1171)) ([`7dd1bdf`](https://github.com/box/box-ui-elements/commit/7dd1bdf))、[#761](https://github.com/box/box-ui-elements/issues/761)をクローズ - **`deps`:** ピアの依存関係を最新の作業バージョンにアップグレード ([#1180](https://github.com/box/box-ui-elements/issues/1180)) ([`48d711e`](https://github.com/box/box-ui-elements/commit/48d711e)) ### 機能 - **`activity-feed`:** タスクおよびコメントのディープリンクのサポートを追加 ([#1623](https://github.com/box/box-ui-elements/issues/1623)) ([`52ecdcb`](https://github.com/box/box-ui-elements/commit/52ecdcb)) - **`additional-tabs`:** 無効になっているアプリをグレー表示 ([#1503](https://github.com/box/box-ui-elements/issues/1503)) ([`132782d`](https://github.com/box/box-ui-elements/commit/132782d)) - **`avatarinitials`:** `backgroundColor`をSCSSに移動 ([#1585](https://github.com/box/box-ui-elements/issues/1585)) ([`781a246`](https://github.com/box/box-ui-elements/commit/781a246)) - **`bdl`:** SCSS `bdl`スコープのためのスクリプトを追加 ([#1546](https://github.com/box/box-ui-elements/issues/1546)) ([`9bdc1e6`](https://github.com/box/box-ui-elements/commit/9bdc1e6)) - **`classification`:** 分類/分類アクションのアイコンを変更 ([#1520](https://github.com/box/box-ui-elements/issues/1520)) ([`8eb68b3`](https://github.com/box/box-ui-elements/commit/8eb68b3)) - **`classification`:** 新しいバッジとレイアウト ([#1231](https://github.com/box/box-ui-elements/issues/1231)) ([`2336262`](https://github.com/box/box-ui-elements/commit/2336262)) - **`classification`:** 詳細サイドバー内の新しいセクション ([#1237](https://github.com/box/box-ui-elements/issues/1237)) ([`90bf2f3`](https://github.com/box/box-ui-elements/commit/90bf2f3)) - **`classification`:** 階層リンクから分類を削除 ([#1549](https://github.com/box/box-ui-elements/issues/1549)) ([`adae46d`](https://github.com/box/box-ui-elements/commit/adae46d)) - **`classification`:** 分類のUIを更新 ([#1566](https://github.com/box/box-ui-elements/issues/1566)) ([`52e2b17`](https://github.com/box/box-ui-elements/commit/52e2b17)) - **`comments`:** コメント編集を実装 ([#1468](https://github.com/box/box-ui-elements/issues/1468)) ([`33dd037`](https://github.com/box/box-ui-elements/commit/33dd037)) - **`content-explorer`:** サイズ列でコンテンツを並べ替える機能を追加 ([#1239](https://github.com/box/box-ui-elements/issues/1239)) ([`b29b6bf`](https://github.com/box/box-ui-elements/commit/b29b6bf)) - **`content-explorer`:** グリッドビューの切り替えボタンを追加 ([#1349](https://github.com/box/box-ui-elements/issues/1349)) ([`97a1d44`](https://github.com/box/box-ui-elements/commit/97a1d44)) - **`content-explorer`:** 検索と履歴のサムネイルを取得 ([#1475](https://github.com/box/box-ui-elements/issues/1475)) ([`1035afb`](https://github.com/box/box-ui-elements/commit/1035afb)) - **`content-explorer`:** グリッドビュースライダ ([#1482](https://github.com/box/box-ui-elements/issues/1482)) ([`ef4a7ee`](https://github.com/box/box-ui-elements/commit/ef4a7ee)) - **`content-explorer`:** グリッドビューのスタイル ([#1464](https://github.com/box/box-ui-elements/issues/1464)) ([`f32b8ca`](https://github.com/box/box-ui-elements/commit/f32b8ca))、[#1409](https://github.com/box/box-ui-elements/issues/1409)をクローズ - **`content-explorer`:** `MDVGridView`からファイルをインポート ([#1294](https://github.com/box/box-ui-elements/issues/1294)) ([`a2e5bd9`](https://github.com/box/box-ui-elements/commit/a2e5bd9)) - **`content-explorer`:** 表示モード設定のローカルストレージ ([#1476](https://github.com/box/box-ui-elements/issues/1476)) ([`803b0a0`](https://github.com/box/box-ui-elements/commit/803b0a0)) - **`content-explorer`:** ギャラリービューの機能の切り替えを削除 ([#1571](https://github.com/box/box-ui-elements/issues/1571)) ([`3e948b8`](https://github.com/box/box-ui-elements/commit/3e948b8)) - **`content-explorer`:** サムネイル付きのカードを表示 ([#1409](https://github.com/box/box-ui-elements/issues/1409)) ([`7bbc2e8`](https://github.com/box/box-ui-elements/commit/7bbc2e8)) - **`content-explorer`:** アイコンでグリッドを表示 ([#1372](https://github.com/box/box-ui-elements/issues/1372)) ([`64a099e`](https://github.com/box/box-ui-elements/commit/64a099e)) - **`content-picker`:** 単一選択にラジオボタンを使用 ([#1685](https://github.com/box/box-ui-elements/issues/1685)) ([`acc3395`](https://github.com/box/box-ui-elements/commit/acc3395)) - **`content-sidebar`:** 編集/作成用にタスクウィンドウモードを追加 ([#1257](https://github.com/box/box-ui-elements/issues/1257)) ([`0bdfc96`](https://github.com/box/box-ui-elements/commit/0bdfc96)) - **`content-sidebar`:** サイドバーパネルのプログラムによる更新 ([#1561](https://github.com/box/box-ui-elements/issues/1561)) ([`2adbaef`](https://github.com/box/box-ui-elements/commit/2adbaef)) - **`dropdown-menu`:** ドロップダウンが閉じている場合に`esc`の伝播を許可 ([#1686](https://github.com/box/box-ui-elements/issues/1686)) ([`3d4d59e`](https://github.com/box/box-ui-elements/commit/3d4d59e)) - **`features`:** メタデータリストビューでカーソルを合わせたときに背景色を追加 ([#1618](https://github.com/box/box-ui-elements/issues/1618)) ([`635808e`](https://github.com/box/box-ui-elements/commit/635808e)) - **`features`:** 新機能metadata-based-viewを追加 ([#1519](https://github.com/box/box-ui-elements/issues/1519)) ([`faef59e`](https://github.com/box/box-ui-elements/commit/faef59e)) - **`features`:** 項目名のクリック時にプレビューを表示 ([#1620](https://github.com/box/box-ui-elements/issues/1620)) ([`74e46b2`](https://github.com/box/box-ui-elements/commit/74e46b2)) - **`ghost`:** ゴースト状態のヘルパーコンポーネントを作成 ([#1498](https://github.com/box/box-ui-elements/issues/1498)) ([`73aadae`](https://github.com/box/box-ui-elements/commit/73aadae)) - **`i18n`:** 新しい`FormattedCompMessage`コンポーネントを実装 ([#976](https://github.com/box/box-ui-elements/issues/976)) ([`31fdf12`](https://github.com/box/box-ui-elements/commit/31fdf12)) - **`icon`:** ユーザー追加の空の状態アイコンを作成 ([#1638](https://github.com/box/box-ui-elements/issues/1638)) ([`33dfacb`](https://github.com/box/box-ui-elements/commit/33dfacb)) - **`icon`:** ログインとストレージのアイコンを作成 ([#1708](https://github.com/box/box-ui-elements/issues/1708)) ([`0115fb6`](https://github.com/box/box-ui-elements/commit/0115fb6)) - **`icons`:** `CollectionItemLink`アイコンを追加 ([#1550](https://github.com/box/box-ui-elements/issues/1550)) ([`1558d36`](https://github.com/box/box-ui-elements/commit/1558d36)) - **`icons`:** 電光と星のコレクションアイコンを追加 ([#1338](https://github.com/box/box-ui-elements/issues/1338)) ([`8e9d503`](https://github.com/box/box-ui-elements/commit/8e9d503)) - **`icons`:** コレクションの塗りつぶされた星アイコンを追加 ([#1547](https://github.com/box/box-ui-elements/issues/1547)) ([`55a182e`](https://github.com/box/box-ui-elements/commit/55a182e)) - **`icons`:** `IconFolderTree`アイコンを追加 ([#1696](https://github.com/box/box-ui-elements/issues/1696)) ([`add261b`](https://github.com/box/box-ui-elements/commit/add261b)) - **`icons`:** コレクションのアイコンを追加 ([#1224](https://github.com/box/box-ui-elements/issues/1224)) ([`a01ea82`](https://github.com/box/box-ui-elements/commit/a01ea82)) - **`icons`:** 新しい盾アイコンを追加 ([#1216](https://github.com/box/box-ui-elements/issues/1216)) ([`753d0e2`](https://github.com/box/box-ui-elements/commit/753d0e2)) - **`icons`:** サンドボックスとパズルのピースのアイコンを追加 ([#1370](https://github.com/box/box-ui-elements/issues/1370)) ([`67b6db4`](https://github.com/box/box-ui-elements/commit/67b6db4)) - **`icons`:** ワークフローアイコンを追加 ([#1225](https://github.com/box/box-ui-elements/issues/1225)) ([`9d73144`](https://github.com/box/box-ui-elements/commit/9d73144)) - **`icons`:** タスクの空の状態アイコンを作成 ([#1583](https://github.com/box/box-ui-elements/issues/1583)) ([`cac4023`](https://github.com/box/box-ui-elements/commit/cac4023)) - **`icons`:** 新しい稲妻アイコン ([#1183](https://github.com/box/box-ui-elements/issues/1183)) ([`ebccf18`](https://github.com/box/box-ui-elements/commit/ebccf18)) - **`icons`:** `IconShare`と`IconCollaboration`を新しい`32x32`アイコンに更新 ([#1232](https://github.com/box/box-ui-elements/issues/1232)) ([`4f4e31b`](https://github.com/box/box-ui-elements/commit/4f4e31b)) - **`icons`:** 新しい地球アイコンに更新し、新しい地球を追加 `tinycon` ([#1217](https://github.com/box/box-ui-elements/issues/1217)) ([`3dded61`](https://github.com/box/box-ui-elements/commit/3dded61)) - **`inline-edit`:** インスタンスフィールドの入力をユーザーに表示 ([#1172](https://github.com/box/box-ui-elements/issues/1172)) ([`1f90dde`](https://github.com/box/box-ui-elements/commit/1f90dde)) - **`left-nav`:** Box Relayアイコンを追加 ([#1207](https://github.com/box/box-ui-elements/issues/1207)) ([`29f07a6`](https://github.com/box/box-ui-elements/commit/29f07a6))、[#1206](https://github.com/box/box-ui-elements/issues/1206)をクローズ - **`left-sidebar`:** `LeftSidebar`がカスタム`navLinkRenderer`をサポート ([#1510](https://github.com/box/box-ui-elements/issues/1510)) ([`f9705a2`](https://github.com/box/box-ui-elements/commit/f9705a2)) - **`leftsidebar`:** カーソルを合わせたときにのみドロップ領域を表示 ([#1548](https://github.com/box/box-ui-elements/issues/1548)) ([`a45c998`](https://github.com/box/box-ui-elements/commit/a45c998)) - **`media`:** メディアオブジェクトコンポーネントを作成 ([#1383](https://github.com/box/box-ui-elements/issues/1383)) ([`5140c13`](https://github.com/box/box-ui-elements/commit/5140c13)) - **`metadata`:** メタデータテンプレートのフィルタを有効化 ([#1598](https://github.com/box/box-ui-elements/issues/1598)) ([`7b341f7`](https://github.com/box/box-ui-elements/commit/7b341f7)) - **`metadata-views`:** 編集と編集キャンセルのアクションを処理 ([#1703](https://github.com/box/box-ui-elements/issues/1703)) ([`d55f84a`](https://github.com/box/box-ui-elements/commit/d55f84a)) - **`metadata-views`:** メタデータビューに編集アイコンを表示 ([#1667](https://github.com/box/box-ui-elements/issues/1667)) ([`1b8a29d`](https://github.com/box/box-ui-elements/commit/1b8a29d)) - **`metadata-views`:** メタデータビューでメタデータ列のプロパティタイプを更新 ([#1666](https://github.com/box/box-ui-elements/issues/1666)) ([`cbf96ef`](https://github.com/box/box-ui-elements/commit/cbf96ef)) - **`new-tasks`:** タスクのコラボレータを取得 ([#1286](https://github.com/box/box-ui-elements/issues/1286)) ([`fb84aee`](https://github.com/box/box-ui-elements/commit/fb84aee)) - **`office-online`:** `xlsb`ファイルのExcelスプレッドシートアイコンを追加 ([`ee8569f`](https://github.com/box/box-ui-elements/commit/ee8569f)) - **`pill-selector`:** ピルセレクタの`formik`ラッパー ([#1194](https://github.com/box/box-ui-elements/issues/1194)) ([`c75a7bb`](https://github.com/box/box-ui-elements/commit/c75a7bb)) - **`pill-selector`:** ダウンストリームの問題のためにフロータイプを更新 ([#1210](https://github.com/box/box-ui-elements/issues/1210)) ([`69f25e8`](https://github.com/box/box-ui-elements/commit/69f25e8)) - **`preview`:** プレビューヘッダーでのカスタムロゴURLのサポートを追加 ([#1714](https://github.com/box/box-ui-elements/issues/1714)) ([`d37b9ec`](https://github.com/box/box-ui-elements/commit/d37b9ec)) - **`preview`:** ポリシーによってブロックされたときのメッセージを改良 ([#1346](https://github.com/box/box-ui-elements/issues/1346)) ([`a6cde28`](https://github.com/box/box-ui-elements/commit/a6cde28)) - **`preview`:** セキュリティブロックの新しいアイコン ([#1396](https://github.com/box/box-ui-elements/issues/1396)) ([`9355631`](https://github.com/box/box-ui-elements/commit/9355631)) - **`preview`:** box-content-previewのデフォルトバージョンを2.16.0にアップグレード ([#1562](https://github.com/box/box-ui-elements/issues/1562)) ([`7617fd2`](https://github.com/box/box-ui-elements/commit/7617fd2)) - **`radio`:** `RadioButton`の`formik`ラッパー ([#1204](https://github.com/box/box-ui-elements/issues/1204)) ([`0b51080`](https://github.com/box/box-ui-elements/commit/0b51080)) - **`react`:** 最大バージョン履歴のテキストを追加 ([#1630](https://github.com/box/box-ui-elements/issues/1630)) ([`705e71f`](https://github.com/box/box-ui-elements/commit/705e71f)) - **`scroll`:** 必要時にスクロール表示をアップグレード ([#1200](https://github.com/box/box-ui-elements/issues/1200)) ([`1532617`](https://github.com/box/box-ui-elements/commit/1532617)) - **`security`:** `SecurityBadge`コンポーネントを追加 ([#1663](https://github.com/box/box-ui-elements/issues/1663)) ([`3d210bb`](https://github.com/box/box-ui-elements/commit/3d210bb)) - **`select`:** 開閉時にキャレットをそれぞれ上下に回転 ([#1218](https://github.com/box/box-ui-elements/issues/1218)) ([`9627e2b`](https://github.com/box/box-ui-elements/commit/9627e2b)) - **`select-field`:** カスタムオプションのレンダリングを許可 ([#1516](https://github.com/box/box-ui-elements/issues/1516)) ([`53fe270`](https://github.com/box/box-ui-elements/commit/53fe270)) - **`shared-link-settings-modal`:** 分類済みの場合に直接ダウンロードを無効化 ([#1500](https://github.com/box/box-ui-elements/issues/1500)) ([`2ede02a`](https://github.com/box/box-ui-elements/commit/2ede02a)) - **`sidebar`:** 外部でのサイドバーの切り替えのサポートを追加 ([#1293](https://github.com/box/box-ui-elements/issues/1293)) ([`04468fc`](https://github.com/box/box-ui-elements/commit/04468fc)) - **`sidebar`:** プログラムによる更新 ([#1472](https://github.com/box/box-ui-elements/issues/1472)) ([`c7a19e7`](https://github.com/box/box-ui-elements/commit/c7a19e7)) - **`sidebar`:** リテンションポリシー情報をサイドバーに表示 ([#1648](https://github.com/box/box-ui-elements/issues/1648)) ([`cb9e714`](https://github.com/box/box-ui-elements/commit/cb9e714)) - **`sidebar`:** 切り替えボタン ([#1268](https://github.com/box/box-ui-elements/issues/1268)) ([`e2ad4ab`](https://github.com/box/box-ui-elements/commit/e2ad4ab)) - **`task-new`:** 担当者を追加/削除する機能を追加 ([#1284](https://github.com/box/box-ui-elements/issues/1284)) ([`8e87280`](https://github.com/box/box-ui-elements/commit/8e87280)) - **`task-new`:** 編集ウィンドウのサポートを追加 ([#1261](https://github.com/box/box-ui-elements/issues/1261)) ([`d13839c`](https://github.com/box/box-ui-elements/commit/d13839c)) - **`tasks`:**タスクアイコンとツールチップを追加 ([#1491](https://github.com/box/box-ui-elements/issues/1491)) ([`cf1c5b7`](https://github.com/box/box-ui-elements/commit/cf1c5b7)) - **`tasks`:** いずれか/すべてのチェックボックスを追加 ([#1487](https://github.com/box/box-ui-elements/issues/1487)) ([`21271e3`](https://github.com/box/box-ui-elements/commit/21271e3)) - **`tasks`:** タスクのコメント変更オプションを追加 ([#1247](https://github.com/box/box-ui-elements/issues/1247)) ([`b5775de`](https://github.com/box/box-ui-elements/commit/b5775de)) - **`tasks`:** 新しいタスク編集APIメソッドを追加 ([#1260](https://github.com/box/box-ui-elements/issues/1260)) ([`e05d5a7`](https://github.com/box/box-ui-elements/commit/e05d5a7)) - **`tasks`:** タイトルと説明を含む新しいエラーメッセージを処理 ([#1564](https://github.com/box/box-ui-elements/issues/1564)) ([`7d691df`](https://github.com/box/box-ui-elements/commit/7d691df)) - **`tasks`:** 完了ルールの文字列 ([#1471](https://github.com/box/box-ui-elements/issues/1471)) ([`cdaf285`](https://github.com/box/box-ui-elements/commit/cdaf285)) - **`tasks`:** アイコンを使用しないようにタスクのステータスを更新 ([#1169](https://github.com/box/box-ui-elements/issues/1169)) ([`b4b8bf0`](https://github.com/box/box-ui-elements/commit/b4b8bf0)) - **`tasks-new`:** 担当者リストを追加 ([#1287](https://github.com/box/box-ui-elements/issues/1287)) ([`04b7458`](https://github.com/box/box-ui-elements/commit/04b7458)) - **`tasks-new`:** `TaskForm`でタスクメッセージと期日を編集 ([#1269](https://github.com/box/box-ui-elements/issues/1269)) ([`7f63d97`](https://github.com/box/box-ui-elements/commit/7f63d97)) - **`tasks-new`:** ウィンドウヘッダーからベータ版のラベル機能を削除 ([#1314](https://github.com/box/box-ui-elements/issues/1314)) ([`dca414b`](https://github.com/box/box-ui-elements/commit/dca414b)) - **`tasks-new`:** 編集ウィンドウ用のタスクのresin追跡 ([#1327](https://github.com/box/box-ui-elements/issues/1327)) ([`5b5b354`](https://github.com/box/box-ui-elements/commit/5b5b354)) - **`typography`:** 本文のタイポグラフィを更新 ([#1442](https://github.com/box/box-ui-elements/issues/1442)) ([`375c336`](https://github.com/box/box-ui-elements/commit/375c336))、[#1439](https://github.com/box/box-ui-elements/issues/1439) [#1441](https://github.com/box/box-ui-elements/issues/1441)をクローズ - **`unified-share-modal`:** 外部コラボレーションの警告メッセージを追加 ([#1220](https://github.com/box/box-ui-elements/issues/1220)) ([`064bd2f`](https://github.com/box/box-ui-elements/commit/064bd2f)) - **`unified-share-modal`:** 連絡先の数を制限するプロパティを追加 ([#1304](https://github.com/box/box-ui-elements/issues/1304)) ([`2af11b1`](https://github.com/box/box-ui-elements/commit/2af11b1)) - **`unified-share-modal`:** 招待セクションのツールチップの変更 ([#1499](https://github.com/box/box-ui-elements/issues/1499)) ([`d7730c7`](https://github.com/box/box-ui-elements/commit/d7730c7))、[#1498](https://github.com/box/box-ui-elements/issues/1498)をクローズ - **`unified-share-modal`:** 招待セクションのツールチップの変更 ([#1504](https://github.com/box/box-ui-elements/issues/1504)) ([`b9486bc`](https://github.com/box/box-ui-elements/commit/b9486bc)) - **`unified-share-modal`:** ファイルの分類を表示 ([#1425](https://github.com/box/box-ui-elements/issues/1425)) ([`e3c7277`](https://github.com/box/box-ui-elements/commit/e3c7277)) - **`unified-share-modal`:** 外部コラボレータのインジケータを表示 ([#1256](https://github.com/box/box-ui-elements/issues/1256)) ([`613a438`](https://github.com/box/box-ui-elements/commit/613a438)) - **`uploads`:** アップロードマネージャのresinターゲットを追加 ([#1384](https://github.com/box/box-ui-elements/issues/1384)) ([`29d2af5`](https://github.com/box/box-ui-elements/commit/29d2af5)) - **`uploads`:** 単一ファイルのアップロードを再開 ([#1552](https://github.com/box/box-ui-elements/issues/1552)) ([`093f889`](https://github.com/box/box-ui-elements/commit/093f889)) - **`uploads`:** 複数の失敗したアップロードを再開 ([#1553](https://github.com/box/box-ui-elements/issues/1553)) ([`60406b9`](https://github.com/box/box-ui-elements/commit/60406b9)) - **`uploads`:** 再開可能なアップロード用のアップロードマネージャコンテンツ ([#1555](https://github.com/box/box-ui-elements/issues/1555)) ([`8380bc7`](https://github.com/box/box-ui-elements/commit/8380bc7)) - **`usm`:** `initiallySelectedContacts`に基づいて招待セクションを展開 ([#1470](https://github.com/box/box-ui-elements/issues/1470)) ([`b756a22`](https://github.com/box/box-ui-elements/commit/b756a22)) - **`validators`:** `host`、`ipv4`、およびドメイン名の検証機能 ([#1212](https://github.com/box/box-ui-elements/issues/1212)) ([`f653dac`](https://github.com/box/box-ui-elements/commit/f653dac)) - **`versions`:** バージョンアクションにクライアント側エラーメッセージを追加 ([#1404](https://github.com/box/box-ui-elements/issues/1404)) ([`8ead57c`](https://github.com/box/box-ui-elements/commit/8ead57c)) - **`versions`:** サイドバーの戻るボタンにresin追跡を追加 ([#1309](https://github.com/box/box-ui-elements/issues/1309)) ([`901c23d`](https://github.com/box/box-ui-elements/commit/901c23d)) - **`versions`:** すべてのバージョン履歴アクションにresin追跡を追加 ([#1285](https://github.com/box/box-ui-elements/issues/1285)) ([`a4942d3`](https://github.com/box/box-ui-elements/commit/a4942d3)) - **`versions`:** `ContentSidebar`へのディープリンクのサポートを追加 ([#1203](https://github.com/box/box-ui-elements/issues/1203)) ([`78ab636`](https://github.com/box/box-ui-elements/commit/78ab636)) - **`versions`:** ファイルバージョン復元アクションのサポートを追加 ([#1184](https://github.com/box/box-ui-elements/issues/1184)) ([`d5396bd`](https://github.com/box/box-ui-elements/commit/d5396bd)) - **`versions`:** バージョンアクションコールバックのサポートを追加 ([#1417](https://github.com/box/box-ui-elements/issues/1417)) ([`099a09e`](https://github.com/box/box-ui-elements/commit/099a09e)) - **`versions`:** バージョン制限のサポートをサイドバーに追加 ([#1316](https://github.com/box/box-ui-elements/issues/1316)) ([`bec5699`](https://github.com/box/box-ui-elements/commit/bec5699)) - **`versions`:** 相対日付に基づくバージョングループヘッダーを追加 ([#1330](https://github.com/box/box-ui-elements/issues/1330)) ([`51d5633`](https://github.com/box/box-ui-elements/commit/51d5633)) - `metadata_queries` APIレイヤーを追加 ([#1481](https://github.com/box/box-ui-elements/issues/1481)) ([`2f6ef29`](https://github.com/box/box-ui-elements/commit/2f6ef29)) - 再開可能なアップロード機能の切り替えに関するプロパティを追加 ([#1447](https://github.com/box/box-ui-elements/issues/1447)) ([`3f19a3b`](https://github.com/box/box-ui-elements/commit/3f19a3b)) - プロパティ`initiallySelectedContacts`を`UnifiedShareModal`に追加 ([#1424](https://github.com/box/box-ui-elements/issues/1424)) ([`8966016`](https://github.com/box/box-ui-elements/commit/8966016)) - デフォルトのタスクアイコンを`$bdl-box-blue`に ([#1509](https://github.com/box/box-ui-elements/issues/1509)) ([`dbc7103`](https://github.com/box/box-ui-elements/commit/dbc7103)) - タスク/コメントに取得されるファイルコラボレータを増加 ([#1483](https://github.com/box/box-ui-elements/issues/1483)) ([`05f65f4`](https://github.com/box/box-ui-elements/commit/05f65f4)) ### パフォーマンスの向上 - **`sidebar`:** 500ミリ秒の遅延なしでサイドバーパネルを遅延読み込み ([#1223](https://github.com/box/box-ui-elements/issues/1223)) ([`bb216b4`](https://github.com/box/box-ui-elements/commit/bb216b4)) - **`sidebar`:** 重複するAPIコールを回避するためにレスポンスをマージ ([#1617](https://github.com/box/box-ui-elements/issues/1617)) ([`69ad154`](https://github.com/box/box-ui-elements/commit/69ad154)) - **`version`:** バージョン履歴ウィンドウを削除 ([#1633](https://github.com/box/box-ui-elements/issues/1633)) ([`eb0aac6`](https://github.com/box/box-ui-elements/commit/eb0aac6)) ### 取り消し - **`avatar`:** アバターを非フックの実装に戻す ([#1186](https://github.com/box/box-ui-elements/issues/1186)) ([`69f329b`](https://github.com/box/box-ui-elements/commit/69f329b)) ### 重大な変更 **`formik`:** `inputProps`切り替えコンポーネントからの削除。`formik`は、V2にアップグレードされました。[ガイドをアップグレードしてください](https://github.com/jaredpalmer/formik/blob/master/docs/migrating-v2.md)。 ピア依存関係のReact要件が高くなりました リファクタリング (アバター): アバターがフックを使用するようリファクタリング 修正 (テスト): 各種テストの問題が修正され、Enzymeが3.8.0にダウングレードされました 修正 (アバター): 冗長なチェックが削除されました **`classification`:** また、用語の一貫性を保つために`advisoryMessage`プロパティが定義に変更されました 機能 (分類): 分類アイコンのストローク幅が大きくなりました **`typography`:** 本文の色がデフォルトで[#222](https://github.com/box/box-developer-changelog/issues/222) (`bdl-gray`) になります 機能 (タイポグラフィ): 一般的なタイポグラフィの文字間隔が更新されました **`typography`:** 一般的なタイポグラフィの文字間隔は`em`ではなく`px`になりました。スケーリングを確認してください。 **`classification`:** 分類データをサイドバーに提供するためのAPIが`{ advisoryMessage, name }`に変更されました 機能: デザインの変更 機能: 分類バッジの変更 修正: PRフィードバック 修正: スナップショット **`icons`:** `IconShield`が盾を表す新しいアイコンに置き換えられました。32 x 32のガイドラインに従っています。必要に応じてスタイルを上書きしてください。 **`deps`:** react-*ピア依存関係を16.9.0に更新 React 16.9への更新には、ライフサイクルメソッドの非推奨の警告が含まれます。これは、依存関係の1つであるreact-tetherに影響します。この警告が表示されないようにする計画は今のところありません。 **`security`:** [https://nvd.nist.gov/vuln/detail/CVE-2019-10742](https://nvd.nist.gov/vuln/detail/CVE-2019-10742)に対処するため、`axios`のピア依存関係をアップグレード **`icons`:** `16x16`の代わりにデフォルトで`20x20`を使用する新しい地球アイコンに更新し、新しい地球`tinycon`を導入 **`validators`:** メールとドメインの検証に使用される[**`@hapi/address`**](https://github.com/hapi/address)のピア依存関係を追加 修正: メールチェック用の一般的でない`tlds`が追加されました 修正: 不良な`tlds`が追加されました **`scroll`:** scroll-into-view-if-neededのメジャーバージョンアップグレード。 **`i18n`:** `i18n` `FormattedCompMessage`コンポーネントをサポートするため、追加のピア依存関係が追加されました 新しいコンポーネント`FormattedCompMessage`が実装されました。このコンポーネントは、タグのコンテンツを翻訳者またはハッカーから隠し、代わりにソース文字列のコンテンツを翻訳に使用することで、HTMLまたはその他のJSXコンポーネントを含む可能性のある文字列を安全に翻訳します。例: ``` <FormattedCompMessage id="mystring" description="translator's comment"> You can <span class="foo">delete</span> <Link to={url}>these files</Link>, or just <span id="x" class="unshare">unshare them</span>. </FormattedCompMessage> ``` `FormattedCompMessage`は`react-intl`の上にレイヤとして構築され、これを使用して実際の翻訳を行います。その機能の目的は、React要素のツリーをコード化された文字列に変換し、`react-intl`でその文字列を翻訳して、コード化された翻訳済みの文字列をReact要素のツリーに再度変換し、最終的にソースツリーの隠されたReact要素を翻訳ツリーの適切な場所に戻すことです。 このコンポーネントは、新しいbabelプラグイン`babel-plugin-box-i18n`を使用して、コード化されたテキストをソースコードから抽出し、`react-intl`babelプラグインによって生成された同じタイプのJSONファイルに配置します。この方法により、これより下流の翻訳プロセスはそれ以上変更しなくても機能します。翻訳はしばらく時間を置いてからプロパティファイルに表示され、`react-intl`によって通常どおりピックアップされます。`FormattedCompMessage`は`react-intl`を使用してこれらの翻訳を取得できます。また、`babel-pluging-box-i18n`プラグインは、すべての文字列に一意のIDと翻訳者の説明が必要であるなどのBoxのポリシーも適用します。 `FormattedCompMessage`コンポーネントは、`FormattedCompMessage`の本文に`<Plural>`コンポーネントを埋め込むことにより、Reactの慣用語法で複数形をサポートできます。 ``` <FormattedCompMessage id="mystring" description="translator's comment" count={count}> <Plural category="one">This is the <strong>singular</strong> string.</Plural> <Plural category="other">This is the <strong>plural</strong> string.</Plural> </FormattedCompMessage> ``` HTMLとサブコンポーネントは複数形の文字列でも使用できることに注意してください。 `FormattedCompMessage`コンポーネントは、`FormattedCompMessage`の本文に`<Param>`コンポーネントを埋め込むことにより、Reactの慣用語法で置換パラメータをサポートできます。 ``` <FormattedCompMessage id="mystring" description="translator's comment"> User <Param value={user.name} description="The user's full name"/> has already deleted this file. </FormattedCompMessage> ``` `Param`タグは、通常のコンポーネントであるため、`Plural`タグ内でも使用できることに注意してください。 - **`deps`:** ピア依存関係が更新されました。NPM警告を回避するには、ダウンストリームアプリケーションも更新する必要があります。 - **`icons`:** 古い`IconShare`はデフォルトで`26x26`、古い`IconCollaboration`はデフォルトで`27x26`になっていましたが、新しいアイコンはデフォルトで`32x32`になりました。また、デフォルトのSVGクラス名が`bdl-IconShare`および`bdl-IconCollaboration`に変更されました。 **Source:** [https://ja.developer.box.com/changelog/2019-11-09-box-ui-elements-v1100-released](https://ja.developer.box.com/changelog/2019-11-09-box-ui-elements-v1100-released) --- ### Box UI Elements `v11.0.2`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v11.0.2のリリース 11.0.2 (2019/11/26) バグ修正 ビルド: 古いリリースパッケージ (991ee17) # Box UI Elements v11.0.2のリリース ## 11.0.2 (2019/11/26) ### バグ修正 - **ビルド:** 古いリリースパッケージ ([`991ee17`](https://github.com/box/box-ui-elements/commit/991ee17)) **Source:** [https://ja.developer.box.com/changelog/2019-11-26-box-ui-elements-v1102-released](https://ja.developer.box.com/changelog/2019-11-26-box-ui-elements-v1102-released) --- ### Box UI Elements `v13.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v13.0.0のリリース 13.0.0 (2021/04/22) バグ修正と機能 このリリースでは、複数のバグが修正されます。全一覧については、リリースノートを参照してください。 # Box UI Elements v13.0.0のリリース ## 13.0.0 (2021/04/22) ## バグ修正と機能 このリリースでは、複数のバグが修正されます。全一覧については、[リリースノートを参照してください](https://github.com/box/box-ui-elements/releases/tag/v13.0.0)。 **Source:** [https://ja.developer.box.com/changelog/2021-04-22-box-ui-elements-v1300-released](https://ja.developer.box.com/changelog/2021-04-22-box-ui-elements-v1300-released) --- ### Box UI Elements `v14.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v14.0.0のリリース 14.0.0 (2021-10-20) バグ修正と機能 このリリースでは、複数のバグが修正されます。全一覧については、リリースノートを参照してください。 # Box UI Elements v14.0.0のリリース ## 14.0.0 (2021-10-20) ## バグ修正と機能 このリリースでは、複数のバグが修正されます。全一覧については、[リリースノートを参照してください](https://github.com/box/box-ui-elements/releases/tag/v14.0.0)。 **Source:** [https://ja.developer.box.com/changelog/2021-10-20-box-ui-elements-v1400-released](https://ja.developer.box.com/changelog/2021-10-20-box-ui-elements-v1400-released) --- ### Box UI Elements `v15.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v15.0.0のリリース 15.0.0 (2022-05-16) バグ修正と機能 このリリースではいくつかのバグを修正し、新機能を追加しました。すべての変更点のリストについては、リリースノートを参照してください。 # Box UI Elements v15.0.0のリリース ## 15.0.0 (2022-05-16) ## バグ修正と機能 このリリースではいくつかのバグを修正し、新機能を追加しました。すべての変更点のリストについては、[リリースノートを参照してください](https://github.com/box/box-ui-elements/releases/tag/v15.0.0)。 **Source:** [https://ja.developer.box.com/changelog/2022-05-16-box-ui-elements-v1500-released](https://ja.developer.box.com/changelog/2022-05-16-box-ui-elements-v1500-released) --- ### Box UI Elements `v16.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v16.0.0のリリース 16.0.0 (2022-10-20) バグ修正と機能 このリリースではいくつかのバグを修正し、新機能を追加しました。すべての変更点のリストについては、リリースノートを参照してください。 # Box UI Elements v16.0.0のリリース ## 16.0.0 (2022-10-20) ## バグ修正と機能 このリリースではいくつかのバグを修正し、新機能を追加しました。すべての変更点のリストについては、[リリースノートを参照してください](https://github.com/box/box-ui-elements/releases/tag/v16.0.0)。 **Source:** [https://ja.developer.box.com/changelog/2022-10-20-box-ui-elements-v1600-released](https://ja.developer.box.com/changelog/2022-10-20-box-ui-elements-v1600-released) --- ### Box UI Elements `v17.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v17.0.0のリリース 17.0.0 (2023/04/20) バグ修正 aci-toggle: 情報バッジの垂直方向の調整 (#3290) (f73b9f9) avatar: 外部ユーザーアイコンにaria-labelを追加 (#326… # Box UI Elements v17.0.0のリリース # 17.0.0 (2023/04/20) ### バグ修正 - **aci-toggle:** 情報バッジの垂直方向の調整 ([#3290](https://github.com/box/box-ui-elements/issues/3290)) ([`f73b9f9`](https://github.com/box/box-ui-elements/commit/f73b9f9)) - **avatar:** 外部ユーザーアイコンに`aria-label`を追加 ([#3263](https://github.com/box/box-ui-elements/issues/3263)) ([`18cdf3f`](https://github.com/box/box-ui-elements/commit/18cdf3f)) - **collaborator-list-item:** 冗長なタイトルを削除 ([#3255](https://github.com/box/box-ui-elements/issues/3255)) ([`d805249`](https://github.com/box/box-ui-elements/commit/d805249)) - **content-explorer:** 矢印のナビゲーションを追加 ([#3219](https://github.com/box/box-ui-elements/issues/3219)) ([`35bf8de`](https://github.com/box/box-ui-elements/commit/35bf8de)) - **content-explorer:** アイコンに`svg`のタイトルを追加 ([#3227](https://github.com/box/box-ui-elements/issues/3227)) ([`506ca45`](https://github.com/box/box-ui-elements/commit/506ca45)) - **content-explorer:** フォルダツリーの階層リンクのテキストの色を変更 ([#3268](https://github.com/box/box-ui-elements/issues/3268)) ([`fc95d4d`](https://github.com/box/box-ui-elements/commit/fc95d4d)) - **content-explorer:** 名前の末尾にスペースを含むフォルダの作成を有効化 ([#3246](https://github.com/box/box-ui-elements/issues/3246)) ([`e0b03c7`](https://github.com/box/box-ui-elements/commit/e0b03c7)) - **content-explorer:** 項目の詳細で色のコントラストの問題を修正 ([#3273](https://github.com/box/box-ui-elements/issues/3273)) ([`4db0231`](https://github.com/box/box-ui-elements/commit/4db0231)) - **content-explorer:** 色のコントラストの問題を修正 ([#3221](https://github.com/box/box-ui-elements/issues/3221)) ([`b7ecaab`](https://github.com/box/box-ui-elements/commit/b7ecaab)) - **content-explorer:** 項目リストの列見出しのロールを修正 ([#3232](https://github.com/box/box-ui-elements/issues/3232)) ([`718a71a`](https://github.com/box/box-ui-elements/commit/718a71a)) - **content-explorer:** 選択した項目行のボタンの境界線をフォーカス ([#3314](https://github.com/box/box-ui-elements/issues/3314)) ([`a596557`](https://github.com/box/box-ui-elements/commit/a596557)) - **content-explorer:** 階層リンクを非アクティブ化する代わりに非表示にする ([#3260](https://github.com/box/box-ui-elements/issues/3260)) ([`5b5fec1`](https://github.com/box/box-ui-elements/commit/5b5fec1)) - **content-explorer:** [サブフォルダを含める] のサブヘッダーの修正 ([#3259](https://github.com/box/box-ui-elements/issues/3259)) ([`6ec1512`](https://github.com/box/box-ui-elements/commit/6ec1512)) - **content-explorer:** [サブフォルダを含める] のステータスメッセージ ([#3261](https://github.com/box/box-ui-elements/issues/3261)) ([`3ce688d`](https://github.com/box/box-ui-elements/commit/3ce688d)) - **content-explorer:** 選択した行の共有ボタンの境界線を更新 ([#3278](https://github.com/box/box-ui-elements/issues/3278)) ([`28c79dd`](https://github.com/box/box-ui-elements/commit/28c79dd)) - **content-picker:** `disabled`属性を追加 ([#3243](https://github.com/box/box-ui-elements/issues/3243)) ([`a88a96c`](https://github.com/box/box-ui-elements/commit/a88a96c)) - **content-sharing:** APIの作成時にAPIの条件を削除 ([#3251](https://github.com/box/box-ui-elements/issues/3251)) ([`24dcba2`](https://github.com/box/box-ui-elements/commit/24dcba2)) - **content-uploader:** 非アクティブなボタンをフォーカス不可に変更 ([#3248](https://github.com/box/box-ui-elements/issues/3248)) ([`2302712`](https://github.com/box/box-ui-elements/commit/2302712)) - **flyout:** ポップアップのオーバーレイCSSの特異性を向上 ([#3257](https://github.com/box/box-ui-elements/issues/3257)) ([`0933062`](https://github.com/box/box-ui-elements/commit/0933062)) - **i18n:** 翻訳を更新 ([#3250](https://github.com/box/box-ui-elements/issues/3250)) ([`d84d1ca`](https://github.com/box/box-ui-elements/commit/d84d1ca)) - **i18n:** 翻訳を更新 ([#3276](https://github.com/box/box-ui-elements/issues/3276)) ([`018a99c`](https://github.com/box/box-ui-elements/commit/018a99c)) - **i18n:** 翻訳を更新 ([#3285](https://github.com/box/box-ui-elements/issues/3285)) ([`bfbcf55`](https://github.com/box/box-ui-elements/commit/bfbcf55)) - **i18n:** 翻訳を更新 ([#3300](https://github.com/box/box-ui-elements/issues/3300)) ([`88116cb`](https://github.com/box/box-ui-elements/commit/88116cb)) - **itemlist:** リストが空の場合にヘッダーセクションを削除 ([#3224](https://github.com/box/box-ui-elements/issues/3224)) ([`0274618`](https://github.com/box/box-ui-elements/commit/0274618)) - **makeselectable:** スライダで矢印のホットキーを禁止 ([#3299](https://github.com/box/box-ui-elements/issues/3299)) ([`a893e5a`](https://github.com/box/box-ui-elements/commit/a893e5a)) - **metadata:** テンプレートのドロップダウンが切り詰められる問題を修正 ([#3265](https://github.com/box/box-ui-elements/issues/3265)) ([`c3ae099`](https://github.com/box/box-ui-elements/commit/c3ae099)) - **select-field:** ドロップダウンが上部に配置されている場合に下の余白を追加 ([#3302](https://github.com/box/box-ui-elements/issues/3302)) ([`11e6979`](https://github.com/box/box-ui-elements/commit/11e6979)) - **select-field:** 選択ドロップダウンのtetherクラスを追加 ([#3303](https://github.com/box/box-ui-elements/issues/3303)) ([`ce27f70`](https://github.com/box/box-ui-elements/commit/ce27f70)) - **selector-dropdown:** ドロップダウンのオーバーレイに動的配置を追加 ([#3262](https://github.com/box/box-ui-elements/issues/3262)) ([`7f05653`](https://github.com/box/box-ui-elements/commit/7f05653)) - **usm:** コラボレータリストのDOMでアイコンの前にユーザーを指定 ([#3306](https://github.com/box/box-ui-elements/issues/3306)) ([`32c656d`](https://github.com/box/box-ui-elements/commit/32c656d)) - コンソールの警告を回避するために省略するプロパティを追加 ([#3286](https://github.com/box/box-ui-elements/issues/3286)) ([`11328fb`](https://github.com/box/box-ui-elements/commit/11328fb)) - BEの並べ替えボタンのメニューオプションを調整 ([#3231](https://github.com/box/box-ui-elements/issues/3231)) ([`dcc06e2`](https://github.com/box/box-ui-elements/commit/dcc06e2)) - BEヘッダーの検索の`aria-label`を修正 ([#3244](https://github.com/box/box-ui-elements/issues/3244)) ([`ca01965`](https://github.com/box/box-ui-elements/commit/ca01965)) - USMおよび共有リンクコンポーネントの`bdl-gray-62`を置き換え ([#3289](https://github.com/box/box-ui-elements/issues/3289)) ([`1f25b98`](https://github.com/box/box-ui-elements/commit/1f25b98)) - **makeselectable:** Shiftと矢印で最初の行を選択 ([#3223](https://github.com/box/box-ui-elements/issues/3223)) ([`9b209e5`](https://github.com/box/box-ui-elements/commit/9b209e5)) - **scss:** dart-sassのすべての除算記号を置換 ([#3253](https://github.com/box/box-ui-elements/issues/3253)) ([`ac92e21`](https://github.com/box/box-ui-elements/commit/ac92e21)) - **shared-link-section:** アクセシビリティのツールチップ ([#3216](https://github.com/box/box-ui-elements/issues/3216)) ([`4ecdd81`](https://github.com/box/box-ui-elements/commit/4ecdd81)) - **sub-header:** メニュー項目の並べ替えのアクセシビリティ ([#3230](https://github.com/box/box-ui-elements/issues/3230)) ([`20f4454`](https://github.com/box/box-ui-elements/commit/20f4454)) - **sub-header:** 選択コンポーネントを使用するように並べ替えを更新し、テストを更新 ([#3239](https://github.com/box/box-ui-elements/issues/3239)) ([`528a157`](https://github.com/box/box-ui-elements/commit/528a157)) - **toggle:** 切り替えのロールを追加 ([#3254](https://github.com/box/box-ui-elements/issues/3254)) ([`cf0c894`](https://github.com/box/box-ui-elements/commit/cf0c894)) - **tooltip:** `ariaHidden`が`true`のときに`aria-describedby`を非アクティブ化 ([#3233](https://github.com/box/box-ui-elements/issues/3233)) ([`d9108c4`](https://github.com/box/box-ui-elements/commit/d9108c4)) - **tooltip:** ツールチップにダイアログを指定 ([#3226](https://github.com/box/box-ui-elements/issues/3226))" ([#3264](https://github.com/box/box-ui-elements/issues/3264)) ([`fa68dd6`](https://github.com/box/box-ui-elements/commit/fa68dd6)) - **usm:** `aria-label`を削除して`aria-haspopup`を追加 ([#3281](https://github.com/box/box-ui-elements/issues/3281)) ([`fd1a82d`](https://github.com/box/box-ui-elements/commit/fd1a82d)) - **usm:** 冗長なボタン要素を削除 ([#3282](https://github.com/box/box-ui-elements/issues/3282)) ([`a7005ff`](https://github.com/box/box-ui-elements/commit/a7005ff)) - コンテンツ共有のボタンのタイプを「submit」から「button」に変更 ([#3277](https://github.com/box/box-ui-elements/issues/3277)) ([`26b7e5f`](https://github.com/box/box-ui-elements/commit/26b7e5f)) - 入力領域の境界線の色のコントラストを改善 ([#3234](https://github.com/box/box-ui-elements/issues/3234)) ([`3917bee`](https://github.com/box/box-ui-elements/commit/3917bee)) - プレースホルダテキストの色のコントラストを改善 ([#3228](https://github.com/box/box-ui-elements/issues/3228)) ([`1f7b9f9`](https://github.com/box/box-ui-elements/commit/1f7b9f9)) - 入力領域の`box-shadow`を更新 ([#3236](https://github.com/box/box-ui-elements/issues/3236)) ([`07cc347`](https://github.com/box/box-ui-elements/commit/07cc347)) - **assets:** アイコンの名前が変更された後に適切なアイコンを使用 ([#3138](https://github.com/box/box-ui-elements/issues/3138)) ([`2c80164`](https://github.com/box/box-ui-elements/commit/2c80164)) - **content-explorer:** `MoreOptions`ボタンに`aria-label`を追加 ([#3197](https://github.com/box/box-ui-elements/issues/3197)) ([`f4b69f0`](https://github.com/box/box-ui-elements/commit/f4b69f0)) - **content-explorer:** グリッドのスライダに`aria-label`を追加 ([#3189](https://github.com/box/box-ui-elements/issues/3189)) ([`e3900b3`](https://github.com/box/box-ui-elements/commit/e3900b3)) - **content-explorer:** 共有リンクが存在しない場合にデフォルトの共有リンクを作成 ([#3209](https://github.com/box/box-ui-elements/issues/3209)) ([`5d05a2b`](https://github.com/box/box-ui-elements/commit/5d05a2b)) - **content-explorer:** すべてのプロパティを`modalContainer`から`Modal`に渡す ([#3104](https://github.com/box/box-ui-elements/issues/3104)) ([`5d5b314`](https://github.com/box/box-ui-elements/commit/5d5b314)) - **content-explorer:** `styleguidist`の例からプロパティを削除 ([#3146](https://github.com/box/box-ui-elements/issues/3146)) ([`1f0809b`](https://github.com/box/box-ui-elements/commit/1f0809b)) - **content-picker:** フッターにわかりやすい名前を追加 ([#3177](https://github.com/box/box-ui-elements/issues/3177)) ([`bd8e1e6`](https://github.com/box/box-ui-elements/commit/bd8e1e6)) - **content-sidebar:** 返信操作のインタラクション ([#3103](https://github.com/box/box-ui-elements/issues/3103)) ([`9400f5a`](https://github.com/box/box-ui-elements/commit/9400f5a)) - **content-sidebar:** 返信操作のインタラクション ([#3123](https://github.com/box/box-ui-elements/issues/3123)) ([`8d2c3f1`](https://github.com/box/box-ui-elements/commit/8d2c3f1)) - **content-sidebar:** スレッド形式のフィード項目の選択状態とカーソルを合わせたときの状態 ([#3173](https://github.com/box/box-ui-elements/issues/3173)) ([`a7dc6a9`](https://github.com/box/box-ui-elements/commit/a7dc6a9)) - **content-uploader:** `UploadInput`のキーボードのアクセシビリティを修正 ([#3205](https://github.com/box/box-ui-elements/issues/3205)) ([`e918b5f`](https://github.com/box/box-ui-elements/commit/e918b5f)) - **dropdown-menu:** レスポンシブなドロップダウンメニューの位置を修正 ([#3149](https://github.com/box/box-ui-elements/issues/3149)) ([`729f6f1`](https://github.com/box/box-ui-elements/commit/729f6f1)) - **grid-view:** グリッドビュースライダのフォーカスのアウトラインを再表示 ([#3212](https://github.com/box/box-ui-elements/issues/3212)) ([`b35e977`](https://github.com/box/box-ui-elements/commit/b35e977)) - **i18n:** 翻訳を更新 ([#3105](https://github.com/box/box-ui-elements/issues/3105)) ([`b8521e4`](https://github.com/box/box-ui-elements/commit/b8521e4)) - **i18n:** 翻訳を更新 ([#3111](https://github.com/box/box-ui-elements/issues/3111)) ([`29fc19c`](https://github.com/box/box-ui-elements/commit/29fc19c)) - **i18n:** 翻訳を更新 ([#3121](https://github.com/box/box-ui-elements/issues/3121)) ([`16bc077`](https://github.com/box/box-ui-elements/commit/16bc077)) - **i18n:** 翻訳を更新 ([#3130](https://github.com/box/box-ui-elements/issues/3130)) ([`8ca714b`](https://github.com/box/box-ui-elements/commit/8ca714b)) - **i18n:** 翻訳を更新 ([#3135](https://github.com/box/box-ui-elements/issues/3135)) ([`53c0370`](https://github.com/box/box-ui-elements/commit/53c0370)) - **i18n:** 翻訳を更新 ([#3137](https://github.com/box/box-ui-elements/issues/3137)) ([`7fe32a6`](https://github.com/box/box-ui-elements/commit/7fe32a6)) - **i18n:** 翻訳を更新 ([#3139](https://github.com/box/box-ui-elements/issues/3139)) ([`82f414d`](https://github.com/box/box-ui-elements/commit/82f414d)) - **i18n:** 翻訳を更新 ([#3150](https://github.com/box/box-ui-elements/issues/3150)) ([`d428a43`](https://github.com/box/box-ui-elements/commit/d428a43)) - **i18n:** 翻訳を更新 ([#3158](https://github.com/box/box-ui-elements/issues/3158)) ([`02eb624`](https://github.com/box/box-ui-elements/commit/02eb624)) - **i18n:** 翻訳を更新 ([#3159](https://github.com/box/box-ui-elements/issues/3159)) ([`6df6f0d`](https://github.com/box/box-ui-elements/commit/6df6f0d)) - **i18n:** 翻訳を更新 ([#3174](https://github.com/box/box-ui-elements/issues/3174)) ([`0e9ea9d`](https://github.com/box/box-ui-elements/commit/0e9ea9d)) - **i18n:** 翻訳を更新 ([#3183](https://github.com/box/box-ui-elements/issues/3183)) ([`c32bbae`](https://github.com/box/box-ui-elements/commit/c32bbae)) - **i18n:** 翻訳を更新 ([#3199](https://github.com/box/box-ui-elements/issues/3199)) ([`eb1acee`](https://github.com/box/box-ui-elements/commit/eb1acee)) - **i18n:** 翻訳を更新 ([#3207](https://github.com/box/box-ui-elements/issues/3207)) ([`d9d571d`](https://github.com/box/box-ui-elements/commit/d9d571d)) - **i18n:** 翻訳を更新 ([#3213](https://github.com/box/box-ui-elements/issues/3213)) ([`64364c3`](https://github.com/box/box-ui-elements/commit/64364c3)) - **i18n:** 翻訳を更新 ([#3220](https://github.com/box/box-ui-elements/issues/3220)) ([`39739ab`](https://github.com/box/box-ui-elements/commit/39739ab)) - **i18n:** 翻訳を更新 ([#3222](https://github.com/box/box-ui-elements/issues/3222)) ([`429c856`](https://github.com/box/box-ui-elements/commit/429c856)) - **item-action:** `aria-label`を`PlainButton`に追加 ([#3180](https://github.com/box/box-ui-elements/issues/3180)) ([`2553713`](https://github.com/box/box-ui-elements/commit/2553713)) - **item-remove:** `aria-label`を追加 ([#3181](https://github.com/box/box-ui-elements/issues/3181)) ([`0fce635`](https://github.com/box/box-ui-elements/commit/0fce635)) - **menu:** メニューヘッダーの長いタイトルを修正 ([#3125](https://github.com/box/box-ui-elements/issues/3125)) ([`79420f2`](https://github.com/box/box-ui-elements/commit/79420f2)) - **modal:** 長いファイル名のウィンドウヘッダーが正しく表示されていない ([#3108](https://github.com/box/box-ui-elements/issues/3108)) ([`d8321aa`](https://github.com/box/box-ui-elements/commit/d8321aa)) - **react-virtualized:** `react-virtualized`を昇格 ([#3160](https://github.com/box/box-ui-elements/issues/3160)) ([`b256b07`](https://github.com/box/box-ui-elements/commit/b256b07)) - **react-virtualized:** 重複する`a11y`ラベルを削除 ([#3204](https://github.com/box/box-ui-elements/issues/3204)) ([`c67a4dd`](https://github.com/box/box-ui-elements/commit/c67a4dd)) - **react-virtualized:** `Table_Grid_innerScrollContainer`のロールを削除 ([#3218](https://github.com/box/box-ui-elements/issues/3218)) ([`cabb4a8`](https://github.com/box/box-ui-elements/commit/cabb4a8)) - **replies:** 返信を削除した後の`total_replies_count`値の更新を修正 ([#3147](https://github.com/box/box-ui-elements/issues/3147)) ([`8f75827`](https://github.com/box/box-ui-elements/commit/8f75827)) - **sharedlinksettings:** 有効期限のタイムスタンプを修正 ([#3179](https://github.com/box/box-ui-elements/issues/3179)) ([`1a698c5`](https://github.com/box/box-ui-elements/commit/1a698c5)) - **sub-header:** アクセシビリティラベルを`SortButton`に追加 ([#3178](https://github.com/box/box-ui-elements/issues/3178)) ([`ba66a34`](https://github.com/box/box-ui-elements/commit/ba66a34)) - **threaded-replies:** 保留ステータスの場合に返信ボタンを非アクティブ化 ([#3186](https://github.com/box/box-ui-elements/issues/3186)) ([`efbc532`](https://github.com/box/box-ui-elements/commit/efbc532)) - **threaded-replies:** 返信のスタイルを修正 ([#3110](https://github.com/box/box-ui-elements/issues/3110)) ([`f78e36b`](https://github.com/box/box-ui-elements/commit/f78e36b)) - **tooltips:** 小さい画面でエラーのツールチップが切り詰められている ([#3107](https://github.com/box/box-ui-elements/issues/3107)) ([`7e12d88`](https://github.com/box/box-ui-elements/commit/7e12d88)) - **usm:** `aria label`を追加 ([#3191](https://github.com/box/box-ui-elements/issues/3191)) ([`f1f5c81`](https://github.com/box/box-ui-elements/commit/f1f5c81)) - **usm:** `aria-label`を有効期限アイコンに追加 ([#3193](https://github.com/box/box-ui-elements/issues/3193)) ([`af3c567`](https://github.com/box/box-ui-elements/commit/af3c567)) - **usm:** ツールチップを閉じるボタンに`aria-label`を追加 ([#3211](https://github.com/box/box-ui-elements/issues/3211)) ([`529bf10`](https://github.com/box/box-ui-elements/commit/529bf10)) - **usm:** ロール`img`を共有リンクの有効期限のツールチップアイコンに追加 ([#3195](https://github.com/box/box-ui-elements/issues/3195)) ([`a79e193`](https://github.com/box/box-ui-elements/commit/a79e193)) - **usm:** ツールチップにダイアログを指定 ([#3226](https://github.com/box/box-ui-elements/issues/3226)) ([`f52ad0e`](https://github.com/box/box-ui-elements/commit/f52ad0e)) - `initialSelectedItems`を`ContentExplorer`に渡した場合に警告を削除 ([#3151](https://github.com/box/box-ui-elements/issues/3151)) ([`bf3256a`](https://github.com/box/box-ui-elements/commit/bf3256a)) ### コードのリファクタリング - `bdl-gray-62`の色を廃止 ([#3312](https://github.com/box/box-ui-elements/issues/3312)) ([`93720ce`](https://github.com/box/box-ui-elements/commit/93720ce)) ### 機能 - **aci-toggle:** 説明のために個別のプロパティを追加 ([#3307](https://github.com/box/box-ui-elements/issues/3307)) ([`cadab1d`](https://github.com/box/box-ui-elements/commit/cadab1d)) - **aci-toggle:** UIの調整 ([#3297](https://github.com/box/box-ui-elements/issues/3297)) ([`84f9abb`](https://github.com/box/box-ui-elements/commit/84f9abb)) - **annotation:** `AnnotationActivity`のアイコンインジケータを追加 ([#3176](https://github.com/box/box-ui-elements/issues/3176)) ([`f773aa3`](https://github.com/box/box-ui-elements/commit/f773aa3)) - **annotation-activity:** `AnnotationActivityLink`を非表示にする ([#3089](https://github.com/box/box-ui-elements/issues/3089)) ([`dc3642e`](https://github.com/box/box-ui-elements/commit/dc3642e)) - **annotation-thread:** 応答フォーム、UI、その他軽微な修正を追加 ([#3157](https://github.com/box/box-ui-elements/issues/3157)) ([`55ca058`](https://github.com/box/box-ui-elements/commit/55ca058)) - **annotation-thread:** 注釈スレッドのコメントの外観を修正 ([#3128](https://github.com/box/box-ui-elements/issues/3128)) ([`fac5133`](https://github.com/box/box-ui-elements/commit/fac5133)) - **annotation-thread:** 注釈スレッドのイベントの処理 ([#3196](https://github.com/box/box-ui-elements/issues/3196)) ([`1c07b41`](https://github.com/box/box-ui-elements/commit/1c07b41)) - **annotation-thread:** 注釈スレッドに関連したフックのリファクタリング ([#3192](https://github.com/box/box-ui-elements/issues/3192)) ([`0168f1a`](https://github.com/box/box-ui-elements/commit/0168f1a)) - **annotation-thread:** 注釈スレッドの返信イベントの処理 ([#3201](https://github.com/box/box-ui-elements/issues/3201)) ([`3df222a`](https://github.com/box/box-ui-elements/commit/3df222a)) - **annotation-thread:** `useAnnotationThread`を導入して`useAnnotatorEvents`を処理 ([#3097](https://github.com/box/box-ui-elements/issues/3097)) ([`a8d1985`](https://github.com/box/box-ui-elements/commit/a8d1985)) - **annotation-thread:** イベントエミッターとフックのリファクタリングの使用 ([#3184](https://github.com/box/box-ui-elements/issues/3184)) ([`cfed356`](https://github.com/box/box-ui-elements/commit/cfed356)) - **annotations:** `hasVersions`プロパティに基づいて`AnnotationActivityLink`を非表示にする ([#3132](https://github.com/box/box-ui-elements/issues/3132)) ([`3469413`](https://github.com/box/box-ui-elements/commit/3469413)) - **assets:** キャンセルフローのアセットを更新 ([#3117](https://github.com/box/box-ui-elements/issues/3117)) ([`42e1122`](https://github.com/box/box-ui-elements/commit/42e1122)) - **checkbox:** `onClick`イベントの`stopPropagation`を許可 ([#3122](https://github.com/box/box-ui-elements/issues/3122)) ([`9c25858`](https://github.com/box/box-ui-elements/commit/9c25858)) - **checkbox:** フォーカス動作を設定可能にする ([#3214](https://github.com/box/box-ui-elements/issues/3214)) ([`18b8ea6`](https://github.com/box/box-ui-elements/commit/18b8ea6)) - **checkbox:** 入力にクラスを追加するためのプロパティ ([#3194](https://github.com/box/box-ui-elements/issues/3194)) ([`e0cc12d`](https://github.com/box/box-ui-elements/commit/e0cc12d)) - **checkbox:** `onClick`イベントの`stopPropagation`を許可を取り消す ([#3127](https://github.com/box/box-ui-elements/issues/3127)) ([`e37de34`](https://github.com/box/box-ui-elements/commit/e37de34))、[#3122](https://github.com/box/box-ui-elements/issues/3122)をクローズ - **cloud-game:** セキュリティのクラウドゲームにアクセシビリティを追加 ([#3086](https://github.com/box/box-ui-elements/issues/3086)) ([`684e9f6`](https://github.com/box/box-ui-elements/commit/684e9f6)) - **collapsible-sidebar:** Boxのロゴを非表示にするためのプロパティを追加 ([#3256](https://github.com/box/box-ui-elements/issues/3256)) ([`43279c0`](https://github.com/box/box-ui-elements/commit/43279c0)) - **collapsible-sidebar:** `wrapperClassName`プロパティを追加 ([#3295](https://github.com/box/box-ui-elements/issues/3295)) ([`2cde065`](https://github.com/box/box-ui-elements/commit/2cde065)) - **content-explorer:** フォルダツリーを追加 ([#3240](https://github.com/box/box-ui-elements/issues/3240)) ([`03b0dea`](https://github.com/box/box-ui-elements/commit/03b0dea)) - **content-explorer:** `ContentExplorer`での空の選択を許可 ([#3175](https://github.com/box/box-ui-elements/issues/3175)) ([`fead6e4`](https://github.com/box/box-ui-elements/commit/fead6e4)) - **content-explorer:** [サブフォルダを含める] のクリック可能なステータスメッセージ ([#3266](https://github.com/box/box-ui-elements/issues/3266)) ([`3d8eaf8`](https://github.com/box/box-ui-elements/commit/3d8eaf8)) - **content-explorer:** [サブフォルダを含める] の切り替え ([#3242](https://github.com/box/box-ui-elements/issues/3242)) ([`b75c7ee`](https://github.com/box/box-ui-elements/commit/b75c7ee)) - **content-sidebar:** ファイル取得時のコールバック関数を追加 ([#3118](https://github.com/box/box-ui-elements/issues/3118)) ([`5373031`](https://github.com/box/box-ui-elements/commit/5373031)) - **content-sidebar:** アクティブなコメントの返信のサポートを追加 ([#3134](https://github.com/box/box-ui-elements/issues/3134)) ([`3ef81e1`](https://github.com/box/box-ui-elements/commit/3ef81e1)) - **content-sidebar:** 対応済みのコメント/注釈で「編集済み」を非表示にする ([#3152](https://github.com/box/box-ui-elements/issues/3152)) ([`07f5fc7`](https://github.com/box/box-ui-elements/commit/07f5fc7)) - **content-sidebar:** スレッド形式のフィード項目の選択状態とカーソルを合わせたときの状態 ([#3162](https://github.com/box/box-ui-elements/issues/3162)) ([`a6c125d`](https://github.com/box/box-ui-elements/commit/a6c125d)) - **input-with-copy:** 設定のボタン用にノードを追加 ([#3267](https://github.com/box/box-ui-elements/issues/3267)) ([`719b31f`](https://github.com/box/box-ui-elements/commit/719b31f)) - **insights:** 高度なコンテンツインサイトのサポートを追加 ([#3116](https://github.com/box/box-ui-elements/issues/3116)) ([`a66ec89`](https://github.com/box/box-ui-elements/commit/a66ec89)) - **left-nav:** `\_sizes.media.scss`で通常の幅を更新 ([#3131](https://github.com/box/box-ui-elements/issues/3131)) ([`aaf112d`](https://github.com/box/box-ui-elements/commit/aaf112d)) - **list-view:** リストビュー項目のカーソルを合わせたときの状態の変更 ([#3115](https://github.com/box/box-ui-elements/issues/3115)) ([`103a5d1`](https://github.com/box/box-ui-elements/commit/103a5d1)) - **make-selectable:** 選択してクリックする機能をチェックボックスのクリックに追加 ([#3112](https://github.com/box/box-ui-elements/issues/3112)) ([`ffc2e33`](https://github.com/box/box-ui-elements/commit/ffc2e33)) - **make-selectable:** `selectToggle`関数を公開 ([#3109](https://github.com/box/box-ui-elements/issues/3109)) ([`8d9fb90`](https://github.com/box/box-ui-elements/commit/8d9fb90)) - **mediaquery:** `isTouchScreen`のロジックを追加 ([#3269](https://github.com/box/box-ui-elements/issues/3269)) ([`3e80a06`](https://github.com/box/box-ui-elements/commit/3e80a06)) - **modal:** 共有リンクの読み込み時に権限を確認するコールバックを追加 ([#3188](https://github.com/box/box-ui-elements/issues/3188)) ([`2b316db`](https://github.com/box/box-ui-elements/commit/2b316db)) - **preview:** 機能フラグに新しい署名ドロップダウンを追加 ([#3190](https://github.com/box/box-ui-elements/issues/3190)) ([`37e8a19`](https://github.com/box/box-ui-elements/commit/37e8a19)) - **threaded-replies:** `Replies`コンポーネントを作成 ([#3288](https://github.com/box/box-ui-elements/issues/3288)) ([`006e33c`](https://github.com/box/box-ui-elements/commit/006e33c)) - **threaded-replies:** `RepliesToggle`コンポーネントを作成 ([#3294](https://github.com/box/box-ui-elements/issues/3294)) ([`92d0ddb`](https://github.com/box/box-ui-elements/commit/92d0ddb)) - **threaded-replies:** `Reply`ボタンコンポーネントを作成 ([#3298](https://github.com/box/box-ui-elements/issues/3298)) ([`f9d4130`](https://github.com/box/box-ui-elements/commit/f9d4130)) - **threaded-replies:** コメントから`ActivityCard`を分離 ([#3279](https://github.com/box/box-ui-elements/issues/3279)) ([`7d1d3bf`](https://github.com/box/box-ui-elements/commit/7d1d3bf)) - **threaded-replies:** 返信の作成と返信の切り替えを実装 ([#3304](https://github.com/box/box-ui-elements/issues/3304)) ([`044a336`](https://github.com/box/box-ui-elements/commit/044a336)) - **threaded-replies:** コメントコンポーネントが機能するようリファクタリング ([#3270](https://github.com/box/box-ui-elements/issues/3270)) ([`3900d1c`](https://github.com/box/box-ui-elements/commit/3900d1c)) - **threaded-replies:** アクティビティフィルタを更新して追加のオプションをサポート ([#3280](https://github.com/box/box-ui-elements/issues/3280)) ([`76e4010`](https://github.com/box/box-ui-elements/commit/76e4010)) - `ContentExplorerModalContainer`に`additionalColumns`プロパティを追加 ([#3143](https://github.com/box/box-ui-elements/issues/3143)) ([`d4eea59`](https://github.com/box/box-ui-elements/commit/d4eea59)) - `ContentExplorerModalContainer`にヘッダーを表示するためのオプションを追加 ([#3144](https://github.com/box/box-ui-elements/issues/3144)) ([`5685142`](https://github.com/box/box-ui-elements/commit/5685142)) - `DropdownMenu`に省略可能なtetherプロパティを追加 ([#3245](https://github.com/box/box-ui-elements/issues/3245)) ([`9db75e7`](https://github.com/box/box-ui-elements/commit/9db75e7)) - **threaded-replies:** 解決のスタイルを修正 ([#3129](https://github.com/box/box-ui-elements/issues/3129)) ([`b291c50`](https://github.com/box/box-ui-elements/commit/b291c50)) - **threaded-replies:** さらに返信を読み込んだときに返信を表示したままにする ([#3133](https://github.com/box/box-ui-elements/issues/3133)) ([`295533c`](https://github.com/box/box-ui-elements/commit/295533c)) - **tooltip:** エラーのツールチップの位置をサポート ([#3187](https://github.com/box/box-ui-elements/issues/3187)) ([`941e990`](https://github.com/box/box-ui-elements/commit/941e990)) - `ContentExplorerModal`に`rowHeight`プロパティを追加 ([#3140](https://github.com/box/box-ui-elements/issues/3140)) ([`476d739`](https://github.com/box/box-ui-elements/commit/476d739)) ### 取り消し - 「作業 (回答): content-answers要素の基盤を追加… ([#3249](https://github.com/box/box-ui-elements/issues/3249)) ([`56f58a5`](https://github.com/box/box-ui-elements/commit/56f58a5))、[#3247](https://github.com/box/box-ui-elements/issues/3247)をクローズ - **annotation-activity:** `AnnotationActivityLink`を非表示にする ([#3120](https://github.com/box/box-ui-elements/issues/3120)) ([`ba22807`](https://github.com/box/box-ui-elements/commit/ba22807))、[#3089](https://github.com/box/box-ui-elements/issues/3089)をクローズ ### 重大な変更 - `bdl-gray-62`は`bdl-gray-65`に置き換えられました **Source:** [https://ja.developer.box.com/changelog/2023-04-20-box-ui-elements-v1700-released](https://ja.developer.box.com/changelog/2023-04-20-box-ui-elements-v1700-released) --- ### Box UI Elements `v17.1.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v17.1.0のリリース 17.1.0 (2023-05-10) バグ修正 content-explorer: 空のフォルダの [すべて選択] チェックボックス (#3324) (a193adb) content-explorer… # Box UI Elements v17.1.0のリリース # 17.1.0 (2023-05-10) ### バグ修正 - **content-explorer:** 空のフォルダの [すべて選択] チェックボックス ([#3324](https://github.com/box/box-ui-elements/issues/3324)) ([`a193adb`](https://github.com/box/box-ui-elements/commit/a193adb)) - **content-explorer:** [すべて選択] チェックボックスの状態が`selectedItems`に一致 ([#3319](https://github.com/box/box-ui-elements/issues/3319)) ([`7473dfd`](https://github.com/box/box-ui-elements/commit/7473dfd)) - **i18n:** 翻訳を更新 ([#3313](https://github.com/box/box-ui-elements/issues/3313)) ([`dd9a1fd`](https://github.com/box/box-ui-elements/commit/dd9a1fd)) - **i18n:** 翻訳を更新 ([#3317](https://github.com/box/box-ui-elements/issues/3317)) ([`95618cf`](https://github.com/box/box-ui-elements/commit/95618cf)) - **pill-selector-dropdown:** `isPositionDynamic`のデフォルト値を削除 ([#3320](https://github.com/box/box-ui-elements/issues/3320)) ([`e74f824`](https://github.com/box/box-ui-elements/commit/e74f824)) - **preview:** Edgeで動画が読み込まれない ([#3326](https://github.com/box/box-ui-elements/issues/3326)) ([`e5aa7e5`](https://github.com/box/box-ui-elements/commit/e5aa7e5)) - **usm:** itemプロパティを任意化 ([#3322](https://github.com/box/box-ui-elements/issues/3322)) ([`fe7c4bb`](https://github.com/box/box-ui-elements/commit/fe7c4bb)) ### 機能 - **sharing:** Canvasファイルの共有リンクのメッセージを変更 ([#3315](https://github.com/box/box-ui-elements/issues/3315)) ([`fa17afd`](https://github.com/box/box-ui-elements/commit/fa17afd)) - **sharing:** Canvasファイルの共有リンクのメッセージを変更 ([#3318](https://github.com/box/box-ui-elements/issues/3318)) ([`60a3a6e`](https://github.com/box/box-ui-elements/commit/60a3a6e)) **Source:** [https://ja.developer.box.com/changelog/2023-05-10-box-ui-elements-v1710-released](https://ja.developer.box.com/changelog/2023-05-10-box-ui-elements-v1710-released) --- ### Box UI Elements `v18.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v18.0.0のリリース 18.0.0 (2023-06-27) バグ修正 ci: releaseスクリプトの変数から空白を削除 (#3355) (2553ec1) content-explorer… # Box UI Elements v18.0.0のリリース # 18.0.0 (2023-06-27) ### バグ修正 - **ci:** releaseスクリプトの変数から空白を削除 ([#3355](https://github.com/box/box-ui-elements/issues/3355)) ([`2553ec1`](https://github.com/box/box-ui-elements/commit/2553ec1)) - **content-explorer:** グリッドボタンのスタイルの詳細度を向上 ([#3328](https://github.com/box/box-ui-elements/issues/3328)) ([`b2c878a`](https://github.com/box/box-ui-elements/commit/b2c878a)) - **content-explorer:** 未定義のオブジェクトで呼び出されるマッピング ([#3341](https://github.com/box/box-ui-elements/issues/3341)) ([`da6ada0`](https://github.com/box/box-ui-elements/commit/da6ada0)) - **content-picker:** フォルダ作成時の名前入力のトリミング ([#3364](https://github.com/box/box-ui-elements/issues/3364)) ([`4629726`](https://github.com/box/box-ui-elements/commit/4629726)) - **css:** IE7 CSSハックを削除してParcelのサポートを修正 ([#3368](https://github.com/box/box-ui-elements/issues/3368)) ([`cbff7f1`](https://github.com/box/box-ui-elements/commit/cbff7f1)) - **i18n:** 翻訳を更新 ([#3323](https://github.com/box/box-ui-elements/issues/3323)) ([`c810383`](https://github.com/box/box-ui-elements/commit/c810383)) - **i18n:** 翻訳を更新 ([#3344](https://github.com/box/box-ui-elements/issues/3344)) ([`755d64b`](https://github.com/box/box-ui-elements/commit/755d64b)) - **i18n:** 翻訳を更新 ([#3349](https://github.com/box/box-ui-elements/issues/3349)) ([`6ba9f27`](https://github.com/box/box-ui-elements/commit/6ba9f27)) - **i18n:** 翻訳を更新 ([#3351](https://github.com/box/box-ui-elements/issues/3351)) ([`4ff75e8`](https://github.com/box/box-ui-elements/commit/4ff75e8)) - **i18n:** 翻訳を更新 ([#3352](https://github.com/box/box-ui-elements/issues/3352)) ([`80c795a`](https://github.com/box/box-ui-elements/commit/80c795a)) - **i18n:** 翻訳を更新 ([#3359](https://github.com/box/box-ui-elements/issues/3359)) ([`c94305c`](https://github.com/box/box-ui-elements/commit/c94305c)) - **preview:** サムネイルのサイドバーの幅を更新 ([#3363](https://github.com/box/box-ui-elements/issues/3363)) ([`33c8236`](https://github.com/box/box-ui-elements/commit/33c8236)) - **sharing:** Canvasファイルの共有リンクのメッセージを削除 ([#3337](https://github.com/box/box-ui-elements/issues/3337)) ([`9558474`](https://github.com/box/box-ui-elements/commit/9558474)) - 共有リンクのビューアー権限の調整 ([#3335](https://github.com/box/box-ui-elements/issues/3335)) ([`5d78c11`](https://github.com/box/box-ui-elements/commit/5d78c11)) - 要素のテストページでdistパスとReactバージョンを更新 ([#3350](https://github.com/box/box-ui-elements/issues/3350)) ([`38ff124`](https://github.com/box/box-ui-elements/commit/38ff124)) - **pill-selector-dropdown:** `showAvatars`プロパティを`RoundPill`にパス ([#3329](https://github.com/box/box-ui-elements/issues/3329)) ([`5632743`](https://github.com/box/box-ui-elements/commit/5632743)) - **share-form:** 未定義のオブジェクトで呼び出されるマッピング ([#3340](https://github.com/box/box-ui-elements/issues/3340)) ([`a24abb2`](https://github.com/box/box-ui-elements/commit/a24abb2)) - **usm:** 共有ウィンドウのアップグレード通知のメッセージを修正 ([#3334](https://github.com/box/box-ui-elements/issues/3334)) ([`4a945ce`](https://github.com/box/box-ui-elements/commit/4a945ce)) ### 作業 - **deps:** `react-beautiful-dnd`をバージョン11.0.5に昇格 ([#3345](https://github.com/box/box-ui-elements/issues/3345)) ([`610c9d2`](https://github.com/box/box-ui-elements/commit/610c9d2)) - **node:** Node 18にアップグレード ([#3347](https://github.com/box/box-ui-elements/issues/3347)) ([`cbb3840`](https://github.com/box/box-ui-elements/commit/cbb3840)) ### 機能 - **cloud-game:** クラウドゲームの外観を調整 ([#3361](https://github.com/box/box-ui-elements/issues/3361)) ([`fe7fb51`](https://github.com/box/box-ui-elements/commit/fe7fb51)) - **pill-selector-dropdown:** エラーのツールチップの位置設定を許可 ([#3330](https://github.com/box/box-ui-elements/issues/3330)) ([`8df1551`](https://github.com/box/box-ui-elements/commit/8df1551)) - **preview:** デフォルトのPreview SDKのバージョンを更新 ([#3366](https://github.com/box/box-ui-elements/issues/3366)) ([`aa7a875`](https://github.com/box/box-ui-elements/commit/aa7a875)) - **security-controls:** 電子すかしの [詳細を表示] リンクを削除 ([#3353](https://github.com/box/box-ui-elements/issues/3353)) ([`379d055`](https://github.com/box/box-ui-elements/commit/379d055)) - **threaded-replies:** 注釈に対する返信 ([#3331](https://github.com/box/box-ui-elements/issues/3331)) ([`4f65525`](https://github.com/box/box-ui-elements/commit/4f65525)) - **uaa-integration:** UAAを`ActivitySidebar`に統合 ([#3316](https://github.com/box/box-ui-elements/issues/3316)) ([`b81e976`](https://github.com/box/box-ui-elements/commit/b81e976)) ### 重大な変更 **deps:** 使用中のプロジェクトにおける`react-beautiful-dnd`のバージョン11.0.5へのアップグレードが必要 **node:** Node 18にアップグレード **Source:** [https://ja.developer.box.com/changelog/2023-06-27-box-ui-elements-v1800-released](https://ja.developer.box.com/changelog/2023-06-27-box-ui-elements-v1800-released) --- ### Box UI Elements `v18.1.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v18.1.0のリリース 18.1.0 (2023-07-12) バグ修正 content-picker: デフォルトの共有リンクの共有権限を確認 (#3371) (2bb1ddb) i18n: 翻訳を更新 (#3372) (f01fd6d… # Box UI Elements v18.1.0のリリース # 18.1.0 (2023-07-12) ### バグ修正 - **content-picker:** デフォルトの共有リンクの共有権限を確認 ([#3371](https://github.com/box/box-ui-elements/issues/3371)) ([`2bb1ddb`](https://github.com/box/box-ui-elements/commit/2bb1ddb)) - **i18n:** 翻訳を更新 ([#3372](https://github.com/box/box-ui-elements/issues/3372)) ([`f01fd6d`](https://github.com/box/box-ui-elements/commit/f01fd6d)) - **readme:** `langauge`の誤字を修正 ([#3373](https://github.com/box/box-ui-elements/issues/3373)) ([`50e7fe0`](https://github.com/box/box-ui-elements/commit/50e7fe0)) ### 機能 - **uaa-integration:** UAAのアクティビティタイプをフィルタ ([#3369](https://github.com/box/box-ui-elements/issues/3369)) ([`b9d196f`](https://github.com/box/box-ui-elements/commit/b9d196f)) **Source:** [https://ja.developer.box.com/changelog/2023-07-12-box-ui-elements-v1810-released](https://ja.developer.box.com/changelog/2023-07-12-box-ui-elements-v1810-released) --- ### Box UI Elements `v19.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v19.0.0のリリース 19.0.0 (2024/01/25) バグ修正 activity-feed-zoom: 項目コンテナにmin-heightプロパティを追加 (#3411) (a60a70d) button… # Box UI Elements v19.0.0のリリース # 19.0.0 (2024/01/25) ### バグ修正 - **activity-feed-zoom:** 項目コンテナにmin-heightプロパティを追加 ([#3411](https://github.com/box/box-ui-elements/issues/3411)) ([`a60a70d`](https://github.com/box/box-ui-elements/commit/a60a70d)) - **button:** アクセシビリティのためにariaラベルを追加 ([#3377](https://github.com/box/box-ui-elements/issues/3377)) ([`9a9b5e3`](https://github.com/box/box-ui-elements/commit/9a9b5e3)) - **content-answers:** stylesに`bdl`プレフィックスを追加 ([#3421](https://github.com/box/box-ui-elements/issues/3421)) ([`fdbfc4d`](https://github.com/box/box-ui-elements/commit/fdbfc4d)) - **content-explorer:** 404の発生時に`onDelete`コールバックの成功を許可 ([#3468](https://github.com/box/box-ui-elements/issues/3468)) ([`13ed6da`](https://github.com/box/box-ui-elements/commit/13ed6da)) - **content-explorer:** デバイスがダウンロードをサポートするかどうかを検出 ([#3480](https://github.com/box/box-ui-elements/issues/3480)) ([`fa68f9b`](https://github.com/box/box-ui-elements/commit/fa68f9b)) - **content-explorer:** 階層リンクにおけるテキストの省略を修正 ([#3481](https://github.com/box/box-ui-elements/issues/3481)) ([`6099b1d`](https://github.com/box/box-ui-elements/commit/6099b1d)) - **content-explorer:** 残っていた`contentPreviewProps`を削除 ([#3489](https://github.com/box/box-ui-elements/issues/3489)) ([`4181e0c`](https://github.com/box/box-ui-elements/commit/4181e0c)) - **content-explorer:** デバイスが小さい場合にページ数を表示 ([#3498](https://github.com/box/box-ui-elements/issues/3498)) ([`98537b9`](https://github.com/box/box-ui-elements/commit/98537b9)) - **content-picker:** ページネーションコンポーネントを使用して適切なスタイルをインポート ([#3472](https://github.com/box/box-ui-elements/issues/3472)) ([`6aef87b`](https://github.com/box/box-ui-elements/commit/6aef87b)) - **content-sidebar:** 注釈の上に積み重なるようにZインデックスを大きくする ([#3478](https://github.com/box/box-ui-elements/issues/3478)) ([`762b82d`](https://github.com/box/box-ui-elements/commit/762b82d)) - **content-uploader:** テキストの省略を追加して間隔を調整 ([#3479](https://github.com/box/box-ui-elements/issues/3479)) ([`36df228`](https://github.com/box/box-ui-elements/commit/36df228)) - **flyout:** Flyoutのデフォルトのロールを「dialog」に設定 ([#3388](https://github.com/box/box-ui-elements/issues/3388)) ([`942f6b7`](https://github.com/box/box-ui-elements/commit/942f6b7)) - **i18n:** 翻訳を更新 ([#3396](https://github.com/box/box-ui-elements/issues/3396)) ([`2175a82`](https://github.com/box/box-ui-elements/commit/2175a82)) - **i18n:** 翻訳を更新 ([#3398](https://github.com/box/box-ui-elements/issues/3398)) ([`4d71c62`](https://github.com/box/box-ui-elements/commit/4d71c62)) - **i18n:** 翻訳を更新 ([#3401](https://github.com/box/box-ui-elements/issues/3401)) ([`0911005`](https://github.com/box/box-ui-elements/commit/0911005)) - **i18n:** 翻訳を更新 ([#3409](https://github.com/box/box-ui-elements/issues/3409)) ([`4c95746`](https://github.com/box/box-ui-elements/commit/4c95746)) - **i18n:** 翻訳を更新 ([#3413](https://github.com/box/box-ui-elements/issues/3413)) ([`65eb428`](https://github.com/box/box-ui-elements/commit/65eb428)) - **i18n:** 翻訳を更新 ([#3417](https://github.com/box/box-ui-elements/issues/3417)) ([`9aab003`](https://github.com/box/box-ui-elements/commit/9aab003)) - **i18n:** 翻訳を更新 ([#3422](https://github.com/box/box-ui-elements/issues/3422)) ([`523492a`](https://github.com/box/box-ui-elements/commit/523492a)) - **i18n:** 翻訳を更新 ([#3430](https://github.com/box/box-ui-elements/issues/3430)) ([`7b705bc`](https://github.com/box/box-ui-elements/commit/7b705bc)) - **i18n:** 翻訳を更新 ([#3433](https://github.com/box/box-ui-elements/issues/3433)) ([`0e8decb`](https://github.com/box/box-ui-elements/commit/0e8decb)) - **i18n:** 翻訳を更新 ([#3434](https://github.com/box/box-ui-elements/issues/3434)) ([`15e2e2e`](https://github.com/box/box-ui-elements/commit/15e2e2e)) - **i18n:** 翻訳を更新 ([#3437](https://github.com/box/box-ui-elements/issues/3437)) ([`0d06403`](https://github.com/box/box-ui-elements/commit/0d06403)) - **i18n:** 翻訳を更新 ([#3438](https://github.com/box/box-ui-elements/issues/3438)) ([`a6f4868`](https://github.com/box/box-ui-elements/commit/a6f4868)) - **i18n:** 翻訳を更新 ([#3452](https://github.com/box/box-ui-elements/issues/3452)) ([`22bb031`](https://github.com/box/box-ui-elements/commit/22bb031)) - **i18n:** 翻訳を更新 ([#3453](https://github.com/box/box-ui-elements/issues/3453)) ([`85d2521`](https://github.com/box/box-ui-elements/commit/85d2521)) - **i18n:** 翻訳を更新 ([#3454](https://github.com/box/box-ui-elements/issues/3454)) ([`e83185e`](https://github.com/box/box-ui-elements/commit/e83185e)) - **i18n:** 翻訳を更新 ([#3455](https://github.com/box/box-ui-elements/issues/3455)) ([`a10aa5c`](https://github.com/box/box-ui-elements/commit/a10aa5c)) - **i18n:** 翻訳を更新 ([#3456](https://github.com/box/box-ui-elements/issues/3456)) ([`41ad809`](https://github.com/box/box-ui-elements/commit/41ad809)) - **i18n:** 翻訳を更新 ([#3457](https://github.com/box/box-ui-elements/issues/3457)) ([`b3f57ff`](https://github.com/box/box-ui-elements/commit/b3f57ff)) - **i18n:** 翻訳を更新 ([#3458](https://github.com/box/box-ui-elements/issues/3458)) ([`a1c42d7`](https://github.com/box/box-ui-elements/commit/a1c42d7)) - **i18n:** 翻訳を更新 ([#3459](https://github.com/box/box-ui-elements/issues/3459)) ([`1b6f4c2`](https://github.com/box/box-ui-elements/commit/1b6f4c2)) - **i18n:** 翻訳を更新 ([#3462](https://github.com/box/box-ui-elements/issues/3462)) ([`13fc9b0`](https://github.com/box/box-ui-elements/commit/13fc9b0)) - **i18n:** 翻訳を更新 ([#3464](https://github.com/box/box-ui-elements/issues/3464)) ([`d1a888d`](https://github.com/box/box-ui-elements/commit/d1a888d)) - **i18n:** 翻訳を更新 ([#3465](https://github.com/box/box-ui-elements/issues/3465)) ([`5413089`](https://github.com/box/box-ui-elements/commit/5413089)) - **i18n:** 翻訳を更新 ([#3469](https://github.com/box/box-ui-elements/issues/3469)) ([`2ffe17f`](https://github.com/box/box-ui-elements/commit/2ffe17f)) - **i18n:** 翻訳を更新 ([#3470](https://github.com/box/box-ui-elements/issues/3470)) ([`1139bb0`](https://github.com/box/box-ui-elements/commit/1139bb0)) - **i18n:** 翻訳を更新 ([#3471](https://github.com/box/box-ui-elements/issues/3471)) ([`41e02db`](https://github.com/box/box-ui-elements/commit/41e02db)) - **modal-dialog:** `ModalDialog`にaria-modalを追加 ([#3380](https://github.com/box/box-ui-elements/issues/3380)) ([`c8f8509`](https://github.com/box/box-ui-elements/commit/c8f8509)) - **modify-reply:** オブジェクトをパラメータにマッピング ([#3387](https://github.com/box/box-ui-elements/issues/3387)) ([`3989675`](https://github.com/box/box-ui-elements/commit/3989675)) - **preview:** 注釈のバッジタイプアイコンにアクセシビリティを追加 ([#3404](https://github.com/box/box-ui-elements/issues/3404)) ([`d4b7852`](https://github.com/box/box-ui-elements/commit/d4b7852)) - **preview:** バージョンのパネルで操作のフォーカスインジケータを変更 ([#3397](https://github.com/box/box-ui-elements/issues/3397)) ([`f111c64`](https://github.com/box/box-ui-elements/commit/f111c64)) - **preview:** 昇格者フィールドに適切なユーザーを表示 ([#3414](https://github.com/box/box-ui-elements/issues/3414)) ([`458fdbf`](https://github.com/box/box-ui-elements/commit/458fdbf)) - **preview:** `onDismiss`コールバックをオーバーライドしないようにHOCを拡張 ([#3431](https://github.com/box/box-ui-elements/issues/3431)) ([`4cc57a3`](https://github.com/box/box-ui-elements/commit/4cc57a3)) - **search-form:** 検索操作コンポーネントを抽出 ([#3475](https://github.com/box/box-ui-elements/issues/3475)) ([`8d77320`](https://github.com/box/box-ui-elements/commit/8d77320)) - ボタンが非アクティブの場合に`textInputWithCopyButton`でコピーを非アクティブ化 ([#3419](https://github.com/box/box-ui-elements/issues/3419)) ([`68b2def`](https://github.com/box/box-ui-elements/commit/68b2def)) - 表示されていない場合にスクリーンリーダーに対してアップロードマネージャの進捗バーを非表示にする ([#3383](https://github.com/box/box-ui-elements/issues/3383)) ([`5592a48`](https://github.com/box/box-ui-elements/commit/5592a48)) - examplesラッパーから`core-js`を削除 ([#3392](https://github.com/box/box-ui-elements/issues/3392)) ([`48ccdf7`](https://github.com/box/box-ui-elements/commit/48ccdf7)) - 内部Boxユーザーの名前を削除 ([#3390](https://github.com/box/box-ui-elements/issues/3390)) ([`65cc5cb`](https://github.com/box/box-ui-elements/commit/65cc5cb)) - **preview-sidebar:** プレビューのバージョンの動作を修正 ([#3203](https://github.com/box/box-ui-elements/issues/3203)) ([`d940782`](https://github.com/box/box-ui-elements/commit/d940782)) - テストページのソースパスを更新 ([#3378](https://github.com/box/box-ui-elements/issues/3378)) ([`ff6b349`](https://github.com/box/box-ui-elements/commit/ff6b349)) ### 機能 - **aci:** featuresプロパティに`ACI`の構成を追加 ([#3410](https://github.com/box/box-ui-elements/issues/3410)) ([`e95a35e`](https://github.com/box/box-ui-elements/commit/e95a35e)) - **activityitems:** 新しいレイアウト ([#3405](https://github.com/box/box-ui-elements/issues/3405)) ([`665d30a`](https://github.com/box/box-ui-elements/commit/665d30a)) - **annotations:** 注釈の返信を編集 ([#3412](https://github.com/box/box-ui-elements/issues/3412)) ([`025ad7e`](https://github.com/box/box-ui-elements/commit/025ad7e)) - **assets:** Box AIアセットを追加 ([#3393](https://github.com/box/box-ui-elements/issues/3393)) ([`bc6b04d`](https://github.com/box/box-ui-elements/commit/bc6b04d)) - **content-answers:** `contentAnswers`ウィンドウのヘッダーとフッターを追加 ([#3403](https://github.com/box/box-ui-elements/issues/3403)) ([`a7d0a3e`](https://github.com/box/box-ui-elements/commit/a7d0a3e)) - **content-answers:** インラインエラーを追加 ([#3444](https://github.com/box/box-ui-elements/issues/3444)) ([`405cdb4`](https://github.com/box/box-ui-elements/commit/405cdb4)) - **content-answers:** 最初のウェルカムメッセージを含むウィンドウ本文を追加 ([#3415](https://github.com/box/box-ui-elements/issues/3415)) ([`6748e73`](https://github.com/box/box-ui-elements/commit/6748e73)) - **content-answers:** `contentAnswers`の表示を制御するプロパティを追加 ([#3399](https://github.com/box/box-ui-elements/issues/3399)) ([`f0b0922`](https://github.com/box/box-ui-elements/commit/f0b0922)) - **content-answers:** 下までのスクロールを追加 ([#3442](https://github.com/box/box-ui-elements/issues/3442)) ([`59c8c45`](https://github.com/box/box-ui-elements/commit/59c8c45)) - **content-answers:** アバター ([#3418](https://github.com/box/box-ui-elements/issues/3418)) ([`45166f4`](https://github.com/box/box-ui-elements/commit/45166f4)) - **content-answers:** ボタンのフォーカス ([#3448](https://github.com/box/box-ui-elements/issues/3448)) ([`2358321`](https://github.com/box/box-ui-elements/commit/2358321)) - **content-answers:** Content Answersウィンドウのエラー ([#3425](https://github.com/box/box-ui-elements/issues/3425)) ([`a5084a5`](https://github.com/box/box-ui-elements/commit/a5084a5)) - **content-answers:** content-answersウィンドウの最初のボタンコンポーネントを作成 ([#3395](https://github.com/box/box-ui-elements/issues/3395)) ([`217a393`](https://github.com/box/box-ui-elements/commit/217a393)) - **content-answers:** 許可されてないファイルタイプの場合にボタンを非アクティブ化 ([#3406](https://github.com/box/box-ui-elements/issues/3406)) ([`f950772`](https://github.com/box/box-ui-elements/commit/f950772)) - **content-answers:** インテリジェンスAPI ([#3420](https://github.com/box/box-ui-elements/issues/3420)) ([`76fd991`](https://github.com/box/box-ui-elements/commit/76fd991)) - **content-answers:** Questions Answersインテリジェンスエンドポイント ([#3435](https://github.com/box/box-ui-elements/issues/3435)) ([`4c7c0c0`](https://github.com/box/box-ui-elements/commit/4c7c0c0)) - **content-answers:** 再試行ボタン ([#3451](https://github.com/box/box-ui-elements/issues/3451)) ([`e0976b8`](https://github.com/box/box-ui-elements/commit/e0976b8)) - **content-explorer:** 自動選択された項目をコンテンツエクスプローラに追加 ([#3474](https://github.com/box/box-ui-elements/issues/3474)) ([`215cfdd`](https://github.com/box/box-ui-elements/commit/215cfdd)) - **content-sidebar:** プレビューとサイドバーへのレスポンスを有効化 ([#3497](https://github.com/box/box-ui-elements/issues/3497)) ([`1652982`](https://github.com/box/box-ui-elements/commit/1652982)) - **label-primitive:** ラベルにプロパティを渡す ([#3473](https://github.com/box/box-ui-elements/issues/3473)) ([`7e88772`](https://github.com/box/box-ui-elements/commit/7e88772)) - **modal:** レスポンスの動作を有効化 ([#3492](https://github.com/box/box-ui-elements/issues/3492)) ([`7fe59b8`](https://github.com/box/box-ui-elements/commit/7fe59b8)) - **pill-selector:** テキスト入力に関するオプションをさらに追加 ([#3440](https://github.com/box/box-ui-elements/issues/3440)) ([`d782e4a`](https://github.com/box/box-ui-elements/commit/d782e4a)) - **preview:** 返信および変更用のコメントフォームをフォーカス ([#3407](https://github.com/box/box-ui-elements/issues/3407)) ([`69293d8`](https://github.com/box/box-ui-elements/commit/69293d8)) - **threaded-replies:** 注釈の対応/未対応を追加 ([#3423](https://github.com/box/box-ui-elements/issues/3423)) ([`c489ad3`](https://github.com/box/box-ui-elements/commit/c489ad3)) - **threaded-replies:** スレッド形式の返信コメントを削除 ([#3402](https://github.com/box/box-ui-elements/issues/3402)) ([`37437c5`](https://github.com/box/box-ui-elements/commit/37437c5)) - **uaa-integration:** コメントの権限がない場合に処理 ([#3394](https://github.com/box/box-ui-elements/issues/3394)) ([`5a28b49`](https://github.com/box/box-ui-elements/commit/5a28b49)) - **uaa-integration:** アプリアクティビティ項目を解析 ([#3386](https://github.com/box/box-ui-elements/issues/3386)) ([`44fd12b`](https://github.com/box/box-ui-elements/commit/44fd12b)) - **uaa-integration:** UAAからのバージョンのレスポンスを解析 ([#3385](https://github.com/box/box-ui-elements/issues/3385)) ([`0fa730f`](https://github.com/box/box-ui-elements/commit/0fa730f)) - **usm:** レスポンスの動作を有効化 ([#3494](https://github.com/box/box-ui-elements/issues/3494)) ([`76db2a5`](https://github.com/box/box-ui-elements/commit/76db2a5)) - IE11のブラウザサポートを削除 ([#3382](https://github.com/box/box-ui-elements/issues/3382)) ([`e151c87`](https://github.com/box/box-ui-elements/commit/e151c87)) ### 取り消し - 「作業 (コード所有者): コード所有者を一時的に更新 ([#3446](https://github.com/box/box-ui-elements/issues/3446))」([#3476](https://github.com/box/box-ui-elements/issues/3476)) ([`3e38fa5`](https://github.com/box/box-ui-elements/commit/3e38fa5)) ### 重大な変更 - Internet Explorer 11はサポートされなくなりました **Source:** [https://ja.developer.box.com/changelog/2024-01-25-box-ui-elements-v1900-released](https://ja.developer.box.com/changelog/2024-01-25-box-ui-elements-v1900-released) --- ### Box UI Elements `v20.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v20.0.0のリリース 20.0.0 (2024/05/22) バグ修正 content-answers: content answersウィンドウにスタイルをスコープ (#3548) (97d49ff) fonts… # Box UI Elements v20.0.0のリリース # 20.0.0 (2024/05/22) ### バグ修正 - **content-answers:** content answersウィンドウにスタイルをスコープ ([#3548](https://github.com/box/box-ui-elements/issues/3548)) ([`97d49ff`](https://github.com/box/box-ui-elements/commit/97d49ff)) - **fonts:** 共通するフォントのバージョンを更新 ([#3499](https://github.com/box/box-ui-elements/issues/3499)) ([`870de6d`](https://github.com/box/box-ui-elements/commit/870de6d)) - **i18n:** 翻訳を更新 ([#3508](https://github.com/box/box-ui-elements/issues/3508)) ([`785be2a`](https://github.com/box/box-ui-elements/commit/785be2a)) - **i18n:** 翻訳を更新 ([#3509](https://github.com/box/box-ui-elements/issues/3509)) ([`85ebf26`](https://github.com/box/box-ui-elements/commit/85ebf26)) - **i18n:** 翻訳を更新 ([#3516](https://github.com/box/box-ui-elements/issues/3516)) ([`cb470e9`](https://github.com/box/box-ui-elements/commit/cb470e9)) - **i18n:** 翻訳を更新 ([#3525](https://github.com/box/box-ui-elements/issues/3525)) ([`ffb447c`](https://github.com/box/box-ui-elements/commit/ffb447c)) - **i18n:** 翻訳を更新 ([#3528](https://github.com/box/box-ui-elements/issues/3528)) ([`1cf016f`](https://github.com/box/box-ui-elements/commit/1cf016f)) - **i18n:** 翻訳を更新 ([#3534](https://github.com/box/box-ui-elements/issues/3534)) ([`36e95a9`](https://github.com/box/box-ui-elements/commit/36e95a9)) - **i18n:** 翻訳を更新 ([#3535](https://github.com/box/box-ui-elements/issues/3535)) ([`c8d03c3`](https://github.com/box/box-ui-elements/commit/c8d03c3)) - **i18n:** 翻訳を更新 ([#3538](https://github.com/box/box-ui-elements/issues/3538)) ([`cde1b88`](https://github.com/box/box-ui-elements/commit/cde1b88)) - **i18n:** 翻訳を更新 ([#3540](https://github.com/box/box-ui-elements/issues/3540)) ([`a7043e6`](https://github.com/box/box-ui-elements/commit/a7043e6)) - **i18n:** 翻訳を更新 ([#3541](https://github.com/box/box-ui-elements/issues/3541)) ([`3ced4a5`](https://github.com/box/box-ui-elements/commit/3ced4a5)) - **`multiput-upload`:** アップロードのパフォーマンスを改善 ([#3512](https://github.com/box/box-ui-elements/issues/3512)) ([`2583e94`](https://github.com/box/box-ui-elements/commit/2583e94)) - **`npm`:** `npmignore`にchromatic configを追加 ([#3546](https://github.com/box/box-ui-elements/issues/3546)) ([`e2e6731`](https://github.com/box/box-ui-elements/commit/e2e6731)) - **preview:** デフォルトのプレビューバージョンを`2.106.0`に更新 ([#3555](https://github.com/box/box-ui-elements/issues/3555)) ([`f07d616`](https://github.com/box/box-ui-elements/commit/f07d616)) - **`react-intl`:** 相対時間の単体テストで日付をモック ([#3518](https://github.com/box/box-ui-elements/issues/3518)) ([`3ce175b`](https://github.com/box/box-ui-elements/commit/3ce175b)) - **shared-link-settings-modal:** 有効期限の形式を修正 ([#3545](https://github.com/box/box-ui-elements/issues/3545)) ([`e47892f`](https://github.com/box/box-ui-elements/commit/e47892f)) - **upload:** `multiput`のアップロードパフォーマンス2を改善 ([#3517](https://github.com/box/box-ui-elements/issues/3517)) ([`2440746`](https://github.com/box/box-ui-elements/commit/2440746)) - **usm:** 項目タイプをhubsに修正 ([#3532](https://github.com/box/box-ui-elements/issues/3532)) ([`0d1e9cf`](https://github.com/box/box-ui-elements/commit/0d1e9cf)) - **usm:** アップセルの表示時にリンクの説明を非表示にする ([#3553](https://github.com/box/box-ui-elements/issues/3553)) ([`838a2e8`](https://github.com/box/box-ui-elements/commit/838a2e8)) ### 機能 - **content-explorer:** ウィンドウのレンダリング時にPortalを使用しないことを許可 ([#3501](https://github.com/box/box-ui-elements/issues/3501)) ([`b096d38`](https://github.com/box/box-ui-elements/commit/b096d38)) - **content-uploader:** コンテンツアップローダーに`allowPrepopulateFiles`プロパティを追加 ([#3519](https://github.com/box/box-ui-elements/issues/3519)) ([`12427b1`](https://github.com/box/box-ui-elements/commit/12427b1)) - **content-uploader:** ファイルの転送を成功させるために部分的なアップロードを実装 ([#3529](https://github.com/box/box-ui-elements/issues/3529)) ([`e70825c`](https://github.com/box/box-ui-elements/commit/e70825c)) - **docgen:** docgenのサイドバーベース ([#3484](https://github.com/box/box-ui-elements/issues/3484)) ([`4b18b21`](https://github.com/box/box-ui-elements/commit/4b18b21)) - **`react-intl`:** `react-intl`パッケージを昇格 [重大な変更] ([#3466](https://github.com/box/box-ui-elements/issues/3466)) ([`307c6a4`](https://github.com/box/box-ui-elements/commit/307c6a4)) - **usm:** hubsのアクセスレベルのラベルを追加 ([#3526](https://github.com/box/box-ui-elements/issues/3526)) ([`6504480`](https://github.com/box/box-ui-elements/commit/6504480)) - **usm:** インライン通知をコンポーネントとして追加 ([#3549](https://github.com/box/box-ui-elements/issues/3549)) ([`d646c65`](https://github.com/box/box-ui-elements/commit/d646c65)) ### 重大な変更 **`react-intl`:** `react-intl`依存関係のメジャーバージョンをアップグレード 修正: `intl`のタイプを修正 修正: メッセージの構文を修正 修正: コメントおよびi18n readmeファイルを修正 修正: `react-intl`のバージョンのコメントを修正 修正: jsファイルで`IntlShape`を型として使用 修正: `IntlShape`の型のインポートを修正 修正: 解決策を追加 修正: 他のリポジトリに一致するよう正確なバージョンを使用 修正: `IntlShape`の型のインポートを修正 修正: 従来のバージョンのサポートをすべて削除 修正: `relativeTime`ヘルパー関数を追加 修正: `PresenceAvatarTooltipContent`コンポーネントの`relativeTime`を修正 修正: `PresenceCollaborator`コンポーネントの`relativeTime`を修正 修正: `relativeTime`ヘルパーで等号付き不等式を使用 修正: 不要な剰余演算を削除 修正: `ReadableTime`の`relativeTime`を修正し、スナップショットを修正 修正: `lastModifiedByCellRenderer`の`relativeTime`を修正 修正: テストを修正 修正: jsを使用 修正: インポートを修正 修正: elseステートメントを修正 修正: インポートの並べ替えを元に戻す **Source:** [https://ja.developer.box.com/changelog/2024-05-22-box-ui-elements-v2000-released](https://ja.developer.box.com/changelog/2024-05-22-box-ui-elements-v2000-released) --- ### Box UI Elements `v20.0.1-beta.1`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v20.0.1-beta.1のリリース 20.0.1-beta.1 (2024/05/31) バグ修正 avatars: アバターを取得するためのタイプを追加 (#3560) (14a194f) # Box UI Elements v20.0.1-beta.1のリリース ## 20.0.1-beta.1 (2024/05/31) ### バグ修正 - **avatars:** アバターを取得するためのタイプを追加 ([#3560](https://github.com/box/box-ui-elements/issues/3560)) ([`14a194f`](https://github.com/box/box-ui-elements/commit/14a194f)) **Source:** [https://ja.developer.box.com/changelog/2024-05-31-box-ui-elements-v2001-beta1-released](https://ja.developer.box.com/changelog/2024-05-31-box-ui-elements-v2001-beta1-released) --- ### Box UI Elements `v21.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v21.0.0のリリース 21.0.0 (2024/07/16) バグ修正 hapi/addressのパッケージ依存関係をアップグレード (#3579) (b089619) react-virtualized… # Box UI Elements v21.0.0のリリース # 21.0.0 (2024/07/16) ### バグ修正 - hapi/addressのパッケージ依存関係をアップグレード ([#3579](https://github.com/box/box-ui-elements/issues/3579)) ([`b089619`](https://github.com/box/box-ui-elements/commit/b0896194b79263ab60b47363abfbb98258244a47)) - react-virtualizedのピア依存関係をアップグレード ([#3578](https://github.com/box/box-ui-elements/issues/3578)) ([`3ebae37`](https://github.com/box/box-ui-elements/commit/3ebae376521ab8a4232005bae32e81c2b82da903)) - **avatars:** アバターを取得するためのタイプを追加 ([#3560](https://github.com/box/box-ui-elements/issues/3560)) ([`14a194f`](https://github.com/box/box-ui-elements/commit/14a194f449018932134cc5df741ecd36c774a321)) - **content-sidebar:** サイドバーアイコンのスタイルに更新 ([#3561](https://github.com/box/box-ui-elements/issues/3561)) ([`381a3b6`](https://github.com/box/box-ui-elements/commit/381a3b642b0148553c6f65cea159b0718271117a)) - **content-uploader:** 複数の項目が削除可能な問題を修正 ([#3565](https://github.com/box/box-ui-elements/issues/3565)) ([`87815de`](https://github.com/box/box-ui-elements/commit/87815de94e8fb607f24a0e17750ffbaa2e713125)) - **i18n:** 翻訳を更新 ([#3563](https://github.com/box/box-ui-elements/issues/3563)) ([`6d9c65f`](https://github.com/box/box-ui-elements/commit/6d9c65f0054d329a20a65ef814b9c0e867c9baf7)) - **i18n:** 翻訳を更新 ([#3564](https://github.com/box/box-ui-elements/issues/3564)) ([`7988af8`](https://github.com/box/box-ui-elements/commit/7988af8eb56a8e6e5abf8bb07d53f3250b148cf5)) - **i18n:** 翻訳を更新 ([#3566](https://github.com/box/box-ui-elements/issues/3566)) ([`3103983`](https://github.com/box/box-ui-elements/commit/310398302abd67bb48dbf5317dc858f054b0cc16)) - **preview:** プレビューのエラーメッセージを更新 ([#3562](https://github.com/box/box-ui-elements/issues/3562)) ([`aff6217`](https://github.com/box/box-ui-elements/commit/aff6217671d25015d314813295b871facfb8a9cc)) ### 機能 - **docgen:** docgenのアイコンを追加 ([#3573](https://github.com/box/box-ui-elements/issues/3573)) ([`f5d4955`](https://github.com/box/box-ui-elements/commit/f5d49554683c965335366ba0f7f34771cec4d4d4)) - **react:** 重大な変更: React 18にアップグレード ([#3556](https://github.com/box/box-ui-elements/issues/3556)) ([`91e0978`](https://github.com/box/box-ui-elements/commit/91e09787c545194ef61cb057e74df7dfd111728b)) - **webpack:** 重大な変更: webpack 5および`react-styleguidist` 12.0.1にアップグレード ([#3568](https://github.com/box/box-ui-elements/issues/3568)) ([`a812294`](https://github.com/box/box-ui-elements/commit/a81229420c1a133145c9899efe908a080f59bd9f)) ### 重大な変更 - 未定義のバッファ参照を解決するためにhapi/addressをアップグレード - React 18をサポートするためにreact-virtualizedのピア依存関係をアップグレード **Source:** [https://ja.developer.box.com/changelog/2024-07-16-box-ui-elements-v2100-released](https://ja.developer.box.com/changelog/2024-07-16-box-ui-elements-v2100-released) --- ### Box UI Elements `v22.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v22.0.0のリリース 22.0.0 (2024/10/21) バグ修正 esbuildの不足していたexportを解決 (#3719) (495f19e) content-answers: content-answersを昇格 (#371… # Box UI Elements v22.0.0のリリース # 22.0.0 (2024/10/21) ### バグ修正 - `esbuild`の不足していたexportを解決 ([#3719](https://github.com/box/box-ui-elements/issues/3719)) ([`495f19e`](https://github.com/box/box-ui-elements/commit/495f19e20c8e3d6b7ab9fe8b6f5c3f833d1c5c46)) - **content-answers:** content-answersを昇格 ([#3713](https://github.com/box/box-ui-elements/issues/3713)) ([`21c2de1`](https://github.com/box/box-ui-elements/commit/21c2de1b3e64ff4766c36ed18a1e720ff79ae5b6)) - **content-uploader:** `ItemAction`の問題を解決 ([#3631](https://github.com/box/box-ui-elements/issues/3631)) ([`ba299b1`](https://github.com/box/box-ui-elements/commit/ba299b1dcee18d3197e5f7df0f15823070a071cb)) - **docgen-sidebar:** ネストされたタグを非表示にするための折りたたみ可能なコンポーネントを追加 ([#3626](https://github.com/box/box-ui-elements/issues/3626)) ([`3480efb`](https://github.com/box/box-ui-elements/commit/3480efb5a03ee73f4d78a5b26f626f059aa31115)) - **draft-js:** 0.11.7にアップグレード ([#3580](https://github.com/box/box-ui-elements/issues/3580)) ([`179ff9f`](https://github.com/box/box-ui-elements/commit/179ff9f718845500ddc76a56e06129e06b386886)) - **hubs:** 共有リンクのテキストを修正 ([#3657](https://github.com/box/box-ui-elements/issues/3657)) ([`a938524`](https://github.com/box/box-ui-elements/commit/a9385240dc53a9efe5277956a2d81ec1c253716a)) - **i18n:** 翻訳を更新 ([#3603](https://github.com/box/box-ui-elements/issues/3603)) ([`a467823`](https://github.com/box/box-ui-elements/commit/a4678232af14c2220ce8c7125a55bb6714781b7a)) - **i18n:** 翻訳を更新 ([#3607](https://github.com/box/box-ui-elements/issues/3607)) ([`8ad18b8`](https://github.com/box/box-ui-elements/commit/8ad18b8b7887c07189dee590ebc0a931fa5010e8)) - **i18n:** 翻訳を更新 ([#3612](https://github.com/box/box-ui-elements/issues/3612)) ([`4bfceaa`](https://github.com/box/box-ui-elements/commit/4bfceaaf71ed4271ba62d6878ef714617a920c8c)) - **i18n:** 翻訳を更新 ([#3615](https://github.com/box/box-ui-elements/issues/3615)) ([`945fa23`](https://github.com/box/box-ui-elements/commit/945fa23a8ba08bebf3bb4415e2b1827377eecbbd)) - **i18n:** 翻訳を更新 ([#3619](https://github.com/box/box-ui-elements/issues/3619)) ([`bc011eb`](https://github.com/box/box-ui-elements/commit/bc011eb1369fc36762cfa3d7a206a538400d536d)) - **i18n:** 翻訳を更新 ([#3620](https://github.com/box/box-ui-elements/issues/3620)) ([`62a9ef7`](https://github.com/box/box-ui-elements/commit/62a9ef7489e42d3cafa8edfabcddf57928ae514d)) - **i18n:** 翻訳を更新 ([#3627](https://github.com/box/box-ui-elements/issues/3627)) ([`ae5cc3d`](https://github.com/box/box-ui-elements/commit/ae5cc3d0b0f0b2afacb37048f994b39867d9006a)) - **i18n:** 翻訳を更新 ([#3633](https://github.com/box/box-ui-elements/issues/3633)) ([`13894ca`](https://github.com/box/box-ui-elements/commit/13894caaf44775d80d54b4458a997160be359ed1)) - **i18n:** 翻訳を更新 ([#3636](https://github.com/box/box-ui-elements/issues/3636)) ([`0bee28b`](https://github.com/box/box-ui-elements/commit/0bee28b6208179a1f0d2ce2428a5200be199302f)) - **i18n:** 翻訳を更新 ([#3639](https://github.com/box/box-ui-elements/issues/3639)) ([`83b403c`](https://github.com/box/box-ui-elements/commit/83b403cecc8dcdc210b31cf84fb59461f3325c8e)) - **i18n:** 翻訳を更新 ([#3643](https://github.com/box/box-ui-elements/issues/3643)) ([`4cf5b3d`](https://github.com/box/box-ui-elements/commit/4cf5b3d55042274e8d73c8a9f1998ceed791179a)) - **i18n:** 翻訳を更新 ([#3648](https://github.com/box/box-ui-elements/issues/3648)) ([`297fabf`](https://github.com/box/box-ui-elements/commit/297fabfe2ab8207ccdcb6e97057a4fb2f3022284)) - **i18n:** 翻訳を更新 ([#3653](https://github.com/box/box-ui-elements/issues/3653)) ([`7b0e0fb`](https://github.com/box/box-ui-elements/commit/7b0e0fb44e3d205d28a10d8bc851ebaecaf5222f)) - **i18n:** 翻訳を更新 ([#3659](https://github.com/box/box-ui-elements/issues/3659)) ([`41a17fe`](https://github.com/box/box-ui-elements/commit/41a17fe815b9ab7da9403836276de3fca379e86f)) - **i18n:** 翻訳を更新 ([#3667](https://github.com/box/box-ui-elements/issues/3667)) ([`1f77bce`](https://github.com/box/box-ui-elements/commit/1f77bce4f470988d818ce7128954e1cd964d4f7f)) - **i18n:** 翻訳を更新 ([#3673](https://github.com/box/box-ui-elements/issues/3673)) ([`7e5f7c1`](https://github.com/box/box-ui-elements/commit/7e5f7c1af0a05c35097827af5a55d5edd3470872)) - **i18n:** 翻訳を更新 ([#3674](https://github.com/box/box-ui-elements/issues/3674)) ([`ebe8348`](https://github.com/box/box-ui-elements/commit/ebe8348b9cf0a79298ea102f27217b6cd10b631f)) - **i18n:** 翻訳を更新 ([#3679](https://github.com/box/box-ui-elements/issues/3679)) ([`4bf65f8`](https://github.com/box/box-ui-elements/commit/4bf65f8b1c8ed6080a340bb28097d6f04d08ecc0)) - **i18n:** 翻訳を更新 ([#3683](https://github.com/box/box-ui-elements/issues/3683)) ([`549188a`](https://github.com/box/box-ui-elements/commit/549188a9f005b8dd0f63c0ed4906e8a64144c3a4)) - **i18n:** 翻訳を更新 ([#3686](https://github.com/box/box-ui-elements/issues/3686)) ([`9927e53`](https://github.com/box/box-ui-elements/commit/9927e53f47e54380d0f2e44e857fbd6b0a6528fd)) - **i18n:** 翻訳を更新 ([#3689](https://github.com/box/box-ui-elements/issues/3689)) ([`47e7a6b`](https://github.com/box/box-ui-elements/commit/47e7a6be3036280bf89220f65ed978b3ef0bc2c7)) - **i18n:** 翻訳を更新 ([#3692](https://github.com/box/box-ui-elements/issues/3692)) ([`d2e59c8`](https://github.com/box/box-ui-elements/commit/d2e59c846c3d72ab9efbe59f1123c72745945aa7)) - **i18n:** 翻訳を更新 ([#3694](https://github.com/box/box-ui-elements/issues/3694)) ([`1850977`](https://github.com/box/box-ui-elements/commit/1850977829e4888139462a6f65794b1cffc52a08)) - **i18n:** 翻訳を更新 ([#3697](https://github.com/box/box-ui-elements/issues/3697)) ([`665aedf`](https://github.com/box/box-ui-elements/commit/665aedff1834ffbc4bc1e903262b0d4e0bef2cc3)) - **i18n:** 翻訳を更新 ([#3701](https://github.com/box/box-ui-elements/issues/3701)) ([`fe9f7cc`](https://github.com/box/box-ui-elements/commit/fe9f7cca9b100afe1521df41c697ed6f0f621f66)) - **i18n:** 翻訳を更新 ([#3705](https://github.com/box/box-ui-elements/issues/3705)) ([`fa89f87`](https://github.com/box/box-ui-elements/commit/fa89f876d54680b95bdc2fd3eb0d07a3c729f03e)) - **i18n:** 翻訳を更新 ([#3711](https://github.com/box/box-ui-elements/issues/3711)) ([`b6b61bf`](https://github.com/box/box-ui-elements/commit/b6b61bf47429541b1cbb1091fd94024c4ceeb6c8)) - **metadata-instance-editor:** サポートリンクを修正 ([#3671](https://github.com/box/box-ui-elements/issues/3671)) ([`b82687e`](https://github.com/box/box-ui-elements/commit/b82687e5cc0a55b6f82eb2c9aa1ea7b3482263b4)) - **metadata-sidebar:** 読み込み状態を修正 ([#3684](https://github.com/box/box-ui-elements/issues/3684)) ([`5c54eb5`](https://github.com/box/box-ui-elements/commit/5c54eb51287b1273ad84145952be132b84ef9e04)) - **metadata-sidebar:** メタデータサイドバーのAI機能を修正 ([#3681](https://github.com/box/box-ui-elements/issues/3681)) ([`fd164ec`](https://github.com/box/box-ui-elements/commit/fd164ec57c58ac912bdb4edbe4f9cdc30296b11a)) - **metadata-sidebar:** storybookテストを修正 ([#3695](https://github.com/box/box-ui-elements/issues/3695)) ([`8326472`](https://github.com/box/box-ui-elements/commit/83264724fa9de3e0935cc6f5762362dadcca884f)) - **metadata-sidebar:** テンプレートを編集するための`onCancel`アクションを処理 ([#3669](https://github.com/box/box-ui-elements/issues/3669)) ([`6ad083b`](https://github.com/box/box-ui-elements/commit/6ad083b4d14a721973df5ef3959913772c481922)) - **metadata-sidebar:** `UnsavedChangesModal`の変更 ([#3691](https://github.com/box/box-ui-elements/issues/3691)) ([`305d3af`](https://github.com/box/box-ui-elements/commit/305d3af23a162db91e16ce13cc8c0bced865500d)) - **notification:** 通知の下のUIのブロックを解除 ([#3661](https://github.com/box/box-ui-elements/issues/3661)) ([`33b34d9`](https://github.com/box/box-ui-elements/commit/33b34d9c532501824ed45c8965f82df690bb6e5c)) - **quick-search:** クイック検索ボタンとフッターのナビゲーション ([#3623](https://github.com/box/box-ui-elements/issues/3623)) ([`0427112`](https://github.com/box/box-ui-elements/commit/04271125b0beedaae80f3ec48273ca5fdf266ac7)) - **quick-search:** クイック検索のナビゲーション ([#3622](https://github.com/box/box-ui-elements/issues/3622)) ([`b814223`](https://github.com/box/box-ui-elements/commit/b8142235903cd8ee5d36ee9121437b01552a5597)) - eslintとconfigをクリーンアップ ([#3584](https://github.com/box/box-ui-elements/issues/3584)) ([`c0ff8d7`](https://github.com/box/box-ui-elements/commit/c0ff8d7d7b24a919fc440a8f06f74b26fb0f5fa1))、[#3583](https://github.com/box/box-ui-elements/issues/3583)をクローズ - `box/frontend`からの変更を解決 ([#3590](https://github.com/box/box-ui-elements/issues/3590)) ([`1d91171`](https://github.com/box/box-ui-elements/commit/1d9117162d658215fc9b62bbbfa0d351349901ff)) - **quick-search:** クイックフィルタのナビゲーション ([#3582](https://github.com/box/box-ui-elements/issues/3582)) ([`6880f67`](https://github.com/box/box-ui-elements/commit/6880f67d6005f549ca7c2fbc5d9c395f25cf7128)) - react-popperをアップグレード ([#3583](https://github.com/box/box-ui-elements/issues/3583)) ([`13396e4`](https://github.com/box/box-ui-elements/commit/13396e4f9f06c30b542fa5846659539f00edc392)) ### 機能 - **taxonomy:** メタデータ階層フィールドの表示/作成/更新のサポートを追加 ([#3716](https://github.com/box/box-ui-elements/issues/3716)) ([`cccb0b0`](https://github.com/box/box-ui-elements/commit/cccb0b084a52838eb9f7e16c084507ef30ba30e1)) - 「重大な変更」のblueprintピア依存関係の`noop` ([#3721](https://github.com/box/box-ui-elements/issues/3721)) ([`5a117ae`](https://github.com/box/box-ui-elements/commit/5a117ae1f4e887365b65d07dd0b8a3f00ebf45db)) - **api:** 空のメタデータの候補の処理を追加 ([#3608](https://github.com/box/box-ui-elements/issues/3608)) ([`ecd4c80`](https://github.com/box/box-ui-elements/commit/ecd4c80873ae0d447fd5dbfdcf622775eeeb206e)) - **api:** メタデータAPIの`getMetadata`を拡張 ([#3611](https://github.com/box/box-ui-elements/issues/3611)) ([`765f592`](https://github.com/box/box-ui-elements/commit/765f592647c41bb1e2bd48ea32dd7b7e1ba2f305)) - **blueprint:** blueprintを追加 ([#3585](https://github.com/box/box-ui-elements/issues/3585)) ([`0f2d876`](https://github.com/box/box-ui-elements/commit/0f2d87617838dc2af7c702c91dbc4321d7b31bf5)) - **boxai-sidebar:** `BoxAISidebar`ヘッダーを追加 ([#3698](https://github.com/box/box-ui-elements/issues/3698)) ([`130b6b6`](https://github.com/box/box-ui-elements/commit/130b6b69c45a0b8e4a22009e3e9f44fb285e45e1)) - **boxai-sidebar:** Box AI用の空のサイドバー ([#3668](https://github.com/box/box-ui-elements/issues/3668)) ([`611377c`](https://github.com/box/box-ui-elements/commit/611377ce21b3ed7a804c82eb2c29189851861dc2)) - **content-answers:** Content Answersをアップグレード ([#3658](https://github.com/box/box-ui-elements/issues/3658)) ([`002d496`](https://github.com/box/box-ui-elements/commit/002d4966fa2158c33371d9a218a41206e1462f6b))、[#3626](https://github.com/box/box-ui-elements/issues/3626)をクローズ - **content-explorer-modal-container:** 省略可能な情報通知を追加 ([#3634](https://github.com/box/box-ui-elements/issues/3634)) ([`20d4c3f`](https://github.com/box/box-ui-elements/commit/20d4c3f3ca981820bf3684afe4ee68775b4b30bd)) - **content-sidebar:** コンテンツプレビューのサイドバーにアーカイブの日付を追加 ([#3625](https://github.com/box/box-ui-elements/issues/3625)) ([`10e68f3`](https://github.com/box/box-ui-elements/commit/10e68f301183244062b6613006a5aa0cbdd33526)) - **content-sidebar:** メニュー項目にdata-target-idを追加 ([#3610](https://github.com/box/box-ui-elements/issues/3610)) ([`cf05167`](https://github.com/box/box-ui-elements/commit/cf05167884084a199512a1d18d41cc9fde7a4fc7)) - **content-sidebar:** プレースホルダ`metadatasidebar`のデザイン変更を追加 ([#3570](https://github.com/box/box-ui-elements/issues/3570)) ([`6a0d7ee`](https://github.com/box/box-ui-elements/commit/6a0d7ee0857d9c91719654e2ac387a6e7dc135b9)) - **content-sidebar:** アーカイブファイルのバージョン変更を無効化 ([#3637](https://github.com/box/box-ui-elements/issues/3637)) ([`e735c4c`](https://github.com/box/box-ui-elements/commit/e735c4c3f5b755f3a773d2e7f185cd9a961de3cd)) - **content-sidebar:** デザインが変更されたサイドバーに`metadata.aiSuggestions`フラグを渡す ([#3665](https://github.com/box/box-ui-elements/issues/3665)) ([`b672f70`](https://github.com/box/box-ui-elements/commit/b672f7059697e922d2ae193ef6a98217695c843d)) - **metadata-sidebar:** `Autofill`ボタンのハンドラを追加 ([#3700](https://github.com/box/box-ui-elements/issues/3700)) ([`95735e0`](https://github.com/box/box-ui-elements/commit/95735e0291f233d173c17a19304119c83e51723d)) - **metadata-sidebar:** メタデータインスタンスリストを追加 ([#3664](https://github.com/box/box-ui-elements/issues/3664)) ([`b4e4b01`](https://github.com/box/box-ui-elements/commit/b4e4b01fefea753d21a4aa75dccde92fce05af21))、[#3605](https://github.com/box/box-ui-elements/issues/3605)をクローズ - **metadata-sidebar:** 削除ボタンを無効化 ([#3677](https://github.com/box/box-ui-elements/issues/3677)) ([`2941a97`](https://github.com/box/box-ui-elements/commit/2941a9732b5081872bfcd0c2fe490ab14c6dc2ed)) - **metadata-sidebar:** メタデータインスタンスの作成を処理 ([#3663](https://github.com/box/box-ui-elements/issues/3663)) ([`321ba7e`](https://github.com/box/box-ui-elements/commit/321ba7e715d51b269ad7bc566b197d0cab52b699)) - **metadata-sidebar:** メタデータインスタンスの削除を処理 ([#3662](https://github.com/box/box-ui-elements/issues/3662)) ([`f6abd4e`](https://github.com/box/box-ui-elements/commit/f6abd4e07d8d23b0a0fe5224b4ba2f6b4c44f4e7)) - **metadata-sidebar:** メタデータインスタンスの更新を処理 ([#3672](https://github.com/box/box-ui-elements/issues/3672)) ([`ef79e44`](https://github.com/box/box-ui-elements/commit/ef79e44d81eb875eec04233e48485f1c6326606d)) - **metadata-sidebar:** メタデータサイドバーのデザイン変更 ([#3654](https://github.com/box/box-ui-elements/issues/3654)) ([`fe4fede`](https://github.com/box/box-ui-elements/commit/fe4fededd993c4025b1b6f38cc8a6387af1a9acc))、[#3606](https://github.com/box/box-ui-elements/issues/3606)をクローズ - **metadata-sidebar:** ファイル拡張子に基づいて`areAiSuggestionsAvailable`を渡す ([#3675](https://github.com/box/box-ui-elements/issues/3675)) ([`dc074cf`](https://github.com/box/box-ui-elements/commit/dc074cf3f189a9ce06b7854d7245242732c1a294)) - **metadata-sidebar:** タブコンテンツのスタイルの変更 ([#3708](https://github.com/box/box-ui-elements/issues/3708)) ([`f7c06a4`](https://github.com/box/box-ui-elements/commit/f7c06a4c411b453df9a1617d50fdddf77b032db7)) - **taxonomy:** メタデータオプションのエンドポイントを追加 ([#3678](https://github.com/box/box-ui-elements/issues/3678)) ([`47ba331`](https://github.com/box/box-ui-elements/commit/47ba331ca562c152c49cccf2c090664177e1370d)) - **taxonomy:** メタデータ階層フィールドのサポートを追加 ([#3710](https://github.com/box/box-ui-elements/issues/3710)) ([`3a0c27e`](https://github.com/box/box-ui-elements/commit/3a0c27ea1cfbb22c6fd9090f7bd237e62f8536b6)) - **uaa-logging:** UAAパリティデータをログに記録 ([#3629](https://github.com/box/box-ui-elements/issues/3629)) ([`6cb5d8f`](https://github.com/box/box-ui-elements/commit/6cb5d8f1d972b40ec06ce08f39cb25aa1452ad10)) - **unified-share-modal:** カスタムアバターのクリックハンドラを追加 ([#3688](https://github.com/box/box-ui-elements/issues/3688)) ([`c034de4`](https://github.com/box/box-ui-elements/commit/c034de4daec6881c08b05caa1033db91382af6e0)) - **update_app_activity_item:** 権限フィールドを追加 ([#3680](https://github.com/box/box-ui-elements/issues/3680)) ([`c521c11`](https://github.com/box/box-ui-elements/commit/c521c113dafdc5787f7c4c163d3cbaa01a523c3b)) - `/2.0/ai/extract_structured`エンドポイントをサポート ([#3596](https://github.com/box/box-ui-elements/issues/3596)) ([`dee4eee`](https://github.com/box/box-ui-elements/commit/dee4eee4ff49d7e8e9bc69071ac23164ae180e4e)) - **unified-share-modal:** ターゲットとなる属性を追加 ([#3592](https://github.com/box/box-ui-elements/issues/3592)) ([`e26f1f1`](https://github.com/box/box-ui-elements/commit/e26f1f10731769ad7ed3cc94bdf6ab97117719d7)) - Metadata Suggestions APIをサポート ([#3571](https://github.com/box/box-ui-elements/issues/3571)) ([`c985402`](https://github.com/box/box-ui-elements/commit/c9854024dec37927cfabdef37c4f8fe82ffb8d34))、[#3565](https://github.com/box/box-ui-elements/issues/3565)をクローズ ### パフォーマンスの向上 - **content-answers:** プレビューでContent Answersを遅延読み込み ([#3720](https://github.com/box/box-ui-elements/issues/3720)) ([`ec115f7`](https://github.com/box/box-ui-elements/commit/ec115f749fea1c545663888c8d2cfc0bd3cfa514)) ### 取り消し - **content-explorer:** 名前変更ダイアログを元に戻す ([#3704](https://github.com/box/box-ui-elements/issues/3704)) ([`13b8c99`](https://github.com/box/box-ui-elements/commit/13b8c990bc5fb8528e3a79864f8f9579608febd1))、[#3666](https://github.com/box/box-ui-elements/issues/3666)をクローズ ### 重大な変更 - blueprint-webおよびblueprint-web-assetsピア依存関係 **Source:** [https://ja.developer.box.com/changelog/2024-10-21-box-ui-elements-v2200-released](https://ja.developer.box.com/changelog/2024-10-21-box-ui-elements-v2200-released) --- ### Box UI Elements `v23.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v23.0.0のリリース 23.0.0 (2025/03/26) 機能 重大な変更 (noop) でメジャーバージョンリリースをトリガー (#4034) (4e1751f) 重大な変更 @box/パッケージのピア依存関係を更新 # Box UI Elements v23.0.0のリリース # 23.0.0 (2025/03/26) ### 機能 - 重大な変更 (noop) でメジャーバージョンリリースをトリガー ([#4034](https://github.com/box/box-ui-elements/issues/4034)) ([`4e1751f`](https://github.com/box/box-ui-elements/commit/4e1751f4054f53bc62880dd3371893a853f93aa2)) ### 重大な変更 - `@box/`パッケージのピア依存関係を更新 **Source:** [https://ja.developer.box.com/changelog/2025-03-26-box-ui-elements-v2300-released](https://ja.developer.box.com/changelog/2025-03-26-box-ui-elements-v2300-released) --- ### Box UI Elements `v23.1.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v23.1.0のリリース 23.1.0 (2025/04/17) バグ修正 axios: Axiosを0.30.0に昇格 (#4039) (e212834) content-explorer: ItemListIcon… # Box UI Elements v23.1.0のリリース # 23.1.0 (2025/04/17) ### バグ修正 - **axios:** Axiosを0.30.0に昇格 ([#4039](https://github.com/box/box-ui-elements/issues/4039)) ([`e212834`](https://github.com/box/box-ui-elements/commit/e212834b2c5ec6e64d6c5378e7b114c3526d21f4)) - **content-explorer:** `ItemListIcon`にデフォルトのサイズを追加 ([#4052](https://github.com/box/box-ui-elements/issues/4052)) ([`900757c`](https://github.com/box/box-ui-elements/commit/900757c6bdd760b31ad0ba7c717f3fe71a799ed3)) - **content-explorer:** テーマ設定機能を改善 ([#4045](https://github.com/box/box-ui-elements/issues/4045)) ([`5ad4a94`](https://github.com/box/box-ui-elements/commit/5ad4a94d9e3a8792ad32518272bb1aecf8cf47fc)) - **content-explorer:** ベースとなるスタイルを削除 ([#4063](https://github.com/box/box-ui-elements/issues/4063)) ([`071f5b9`](https://github.com/box/box-ui-elements/commit/071f5b9cdcadd0cfa15589dc47b1c3361299c0a7)) - **i18n:** 翻訳を更新 ([#4038](https://github.com/box/box-ui-elements/issues/4038)) ([`2977e50`](https://github.com/box/box-ui-elements/commit/2977e5014e079a776f4316cc348512d182780f3a)) - **i18n:** 翻訳を更新 ([#4040](https://github.com/box/box-ui-elements/issues/4040)) ([`6c89353`](https://github.com/box/box-ui-elements/commit/6c89353911c1be3fa10ae411242e8fcd51aaa8d0)) - **i18n:** 翻訳を更新 ([#4050](https://github.com/box/box-ui-elements/issues/4050)) ([`a6b5074`](https://github.com/box/box-ui-elements/commit/a6b50746500ef6d6d8316c78a1703b5f943ddf89)) - **i18n:** 翻訳を更新 ([#4051](https://github.com/box/box-ui-elements/issues/4051)) ([`4f74362`](https://github.com/box/box-ui-elements/commit/4f7436230d6450a60ea6444bcbb6faf5c17612b9)) - **i18n:** 翻訳を更新 ([#4056](https://github.com/box/box-ui-elements/issues/4056)) ([`5d2e63b`](https://github.com/box/box-ui-elements/commit/5d2e63bff00cd5fe3cafb58ba9c5e2807d849fbc)) - **ip:** resolutionsを削除 ([#4057](https://github.com/box/box-ui-elements/issues/4057)) ([`8ad6f71`](https://github.com/box/box-ui-elements/commit/8ad6f718ae32cba1104ceab2de08cabcc8da5ce2)) - **item-options:** 項目の操作にフィルタがかけられたときに正しくレンダリング ([#4042](https://github.com/box/box-ui-elements/issues/4042)) ([`ab56916`](https://github.com/box/box-ui-elements/commit/ab56916d4048acfecc03b0d1036791504a52caed)) - **metadata-editor:** 新しいメタデータ階層APIを処理 ([#4049](https://github.com/box/box-ui-elements/issues/4049)) ([`ed622af`](https://github.com/box/box-ui-elements/commit/ed622af35a2a016a2e6df14b25b79f5488bb9e1d)) - **stylelint:** v16に昇格 ([#4058](https://github.com/box/box-ui-elements/issues/4058)) ([`db6c93e`](https://github.com/box/box-ui-elements/commit/db6c93ef9f7b6ff13fe9198b697ec45c3f303335)) - **uaa-parity:** UAAエラーのエラーメッセージを表示 ([#4035](https://github.com/box/box-ui-elements/issues/4035)) ([`f9e9f35`](https://github.com/box/box-ui-elements/commit/f9e9f35ec07fd720d6148d4b324d5a342ac3e558)) - **uaa-parity:** 空の`promoted_by user`に対するフォールバックの`promoted_by user`を表示しない ([#4043](https://github.com/box/box-ui-elements/issues/4043)) ([`a586a0a`](https://github.com/box/box-ui-elements/commit/a586a0a3da711ce1803a4e8999af839a668598fb)) ### 機能 - **content-explorer:** `MetadataViewList`のデザイン変更に関する機能フラグを追加 ([#4061](https://github.com/box/box-ui-elements/issues/4061)) ([`5d0c716`](https://github.com/box/box-ui-elements/commit/5d0c716f449bed05f3c638a00f292e6fe00a4b40)) - **content-explorer:** 独立したテーマ設定を有効化 ([#4062](https://github.com/box/box-ui-elements/issues/4062)) ([`a67be72`](https://github.com/box/box-ui-elements/commit/a67be72dc9886094444627d97619d79195d67427)) - **content-picker:** `MoreOptions`ボタンを行に追加 ([#4036](https://github.com/box/box-ui-elements/issues/4036)) ([`f3667dc`](https://github.com/box/box-ui-elements/commit/f3667dc104c283287049e2c8ca43a46aa9bb1068)) - **content-sidebar:** Box AIのフィードバックのツールチップに対するサポートを追加 ([#4059](https://github.com/box/box-ui-elements/issues/4059)) ([`b09cbf3`](https://github.com/box/box-ui-elements/commit/b09cbf3cf18a36274410df5f0859675445e23cb1)) - **doc-first-pages:** webp xrepヘッダーを追加 ([#4054](https://github.com/box/box-ui-elements/issues/4054)) ([`ca41b1a`](https://github.com/box/box-ui-elements/commit/ca41b1ad22f89667b30e552040224abab3182c27)) - **metadata-sidebar:** 複数レベルのメタデータ階層を制御 ([#4037](https://github.com/box/box-ui-elements/issues/4037)) ([`f705927`](https://github.com/box/box-ui-elements/commit/f705927f9071950a59d4f3d5da1e141dad21d4b0)) - **metadata-sidebar:** 複数レベルのメタデータ階層の統合 ([#4044](https://github.com/box/box-ui-elements/issues/4044)) ([`8a794ad`](https://github.com/box/box-ui-elements/commit/8a794adb431d3dd7efd0518d0de4c3b361975c7d)) **Source:** [https://ja.developer.box.com/changelog/2025-04-17-box-ui-elements-v2310-released](https://ja.developer.box.com/changelog/2025-04-17-box-ui-elements-v2310-released) --- ### Box UI Elements `v23.2.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v23.2.0のリリース 23.2.0 (2025/04/25) バグ修正 content-answers: CSS変数を修正 (#4074) (393d83b) i18n: 翻訳を更新 (#4072) (dc1cf01) 機能 message… # Box UI Elements v23.2.0のリリース # 23.2.0 (2025/04/25) ### バグ修正 - **content-answers:** CSS変数を修正 ([#4074](https://github.com/box/box-ui-elements/issues/4074)) ([`393d83b`](https://github.com/box/box-ui-elements/commit/393d83ba8c8882f6b136b38f933bfc17f5be0720)) - **i18n:** 翻訳を更新 ([#4072](https://github.com/box/box-ui-elements/issues/4072)) ([`dc1cf01`](https://github.com/box/box-ui-elements/commit/dc1cf014f1bb84384244cf68d684d07bd6420d11)) ### 機能 - **message-center:** `badgeCount`を`ButtonComponent`に渡す ([#4068](https://github.com/box/box-ui-elements/issues/4068)) ([`e316267`](https://github.com/box/box-ui-elements/commit/e3162676d06dc330c42204b0871cc61140665c57)) - **unified-share-modal:** コラボレータの削除を追加 ([#4070](https://github.com/box/box-ui-elements/issues/4070)) ([`4645733`](https://github.com/box/box-ui-elements/commit/4645733c1d5aad0a42cbabd130741bdd6923243e)) **Source:** [https://ja.developer.box.com/changelog/2025-04-25-box-ui-elements-v2320-released](https://ja.developer.box.com/changelog/2025-04-25-box-ui-elements-v2320-released) --- ### Box UI Elements `v23.3.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v23.3.0のリリース 23.3.0 (2025/05/12) バグ修正 commitlint: 19.8.0に昇格 (#4083) (7e9e6e5) flow-typed: 4.1.0に昇格 (#4081) (15b8108) flyout… # Box UI Elements v23.3.0のリリース # 23.3.0 (2025/05/12) ### バグ修正 - **`commitlint`:** 19.8.0に昇格 ([#4083](https://github.com/box/box-ui-elements/issues/4083)) ([`7e9e6e5`](https://github.com/box/box-ui-elements/commit/7e9e6e5ef30eb080313276f8549337710ecd875f)) - **flow-typed:** 4.1.0に昇格 ([#4081](https://github.com/box/box-ui-elements/issues/4081)) ([`15b8108`](https://github.com/box/box-ui-elements/commit/15b81086caf692986717f34e259d745fb6c34b04)) - **flyout:** `Flyout.js`内の`onKeyPress`のロジックを変更 ([#4096](https://github.com/box/box-ui-elements/issues/4096)) ([`f48c2a9`](https://github.com/box/box-ui-elements/commit/f48c2a92d8df6d731965dfa0d60d93c05f0c8e80)) - **i18n:** 翻訳を更新 ([#4077](https://github.com/box/box-ui-elements/issues/4077)) ([`fe7752d`](https://github.com/box/box-ui-elements/commit/fe7752d809f4946040bf18dec4a8a980b22c908e)) - **i18n:** 翻訳を更新 ([#4079](https://github.com/box/box-ui-elements/issues/4079)) ([`0f587f5`](https://github.com/box/box-ui-elements/commit/0f587f522e1904b37fccf25bdfff98d1c3252aea)) - **i18n:** 翻訳を更新 ([#4089](https://github.com/box/box-ui-elements/issues/4089)) ([`f48076d`](https://github.com/box/box-ui-elements/commit/f48076d2cf967283dd5c9af95540ac1743a6ab71)) - **i18n:** 翻訳を更新 ([#4091](https://github.com/box/box-ui-elements/issues/4091)) ([`9869175`](https://github.com/box/box-ui-elements/commit/986917536c15345378b64bfc9e66d47ade83b930)) - **i18n:** 翻訳を更新 ([#4097](https://github.com/box/box-ui-elements/issues/4097)) ([`e265cfe`](https://github.com/box/box-ui-elements/commit/e265cfef405c9644863c612a72158dac0bc2c439)) - **metadata-sidebar:** メタデータフィールドの修正をすべて表示 ([#4090](https://github.com/box/box-ui-elements/issues/4090)) ([`e4dcdcb`](https://github.com/box/box-ui-elements/commit/e4dcdcb1ef5b9247b69b4b0666ac68c9ad82f6b2)) - **`opensource`:** storybookファイルをルートにコピー ([#4099](https://github.com/box/box-ui-elements/issues/4099)) ([`37c9cf0`](https://github.com/box/box-ui-elements/commit/37c9cf06da4d17006f053cedbef6d4fedec09ed5)) - **sass-lint:** sass-lintを削除 ([#4082](https://github.com/box/box-ui-elements/issues/4082)) ([`05d1e8b`](https://github.com/box/box-ui-elements/commit/05d1e8b9f094b35dc0494c09f30777be6cd4ce2c)) ### 機能 - **`bp-assets`:** BPアセットを4.39.0に昇格 ([#4095](https://github.com/box/box-ui-elements/issues/4095)) ([`15c403c`](https://github.com/box/box-ui-elements/commit/15c403c402e135ff9f5f73da011633d6ac923e3d)) - **content-sidebar:** Box AIのフィードバックのツールチップ用のプロパティを追加 ([#4075](https://github.com/box/box-ui-elements/issues/4075)) ([`bcd2b86`](https://github.com/box/box-ui-elements/commit/bcd2b8698106ab5c03dcd44be7a948ab4a5cf203)) - **content-sidebar:** Box AIのサイドバーのcontent-answersを更新 ([#4094](https://github.com/box/box-ui-elements/issues/4094)) ([`8d4c456`](https://github.com/box/box-ui-elements/commit/8d4c456dae84978341c3af572c81299ead047b9b)) - **metadata-sidebar:** 削除確認ウィンドウのチェックボックスを有効化 ([#4076](https://github.com/box/box-ui-elements/issues/4076)) ([`7e8c8ac`](https://github.com/box/box-ui-elements/commit/7e8c8ac824f53c9264e939ba396369412150e5d0)) - **`metadataeditor`:** エージェントのセレクタを追加 ([#4098](https://github.com/box/box-ui-elements/issues/4098)) ([`f3af868`](https://github.com/box/box-ui-elements/commit/f3af86837955e4ff7ebb0d3a938538139d9eeabf)) - **`metadataeditor`:** フォルダのAI抽出を追加 ([#4080](https://github.com/box/box-ui-elements/issues/4080)) ([`82d6b29`](https://github.com/box/box-ui-elements/commit/82d6b29c40b1c70eae027d084396600aae36fdeb)) - **notification-redesign:** 通知のクラス名プロパティを追加 ([#4092](https://github.com/box/box-ui-elements/issues/4092)) ([`2dc371f`](https://github.com/box/box-ui-elements/commit/2dc371fa6ea1a6a70dfd4f0fec05925fd581b7b3)) - **`opensource`:** storybookを使用するようにデフォルトのルートを更新 ([#4087](https://github.com/box/box-ui-elements/issues/4087)) ([`174f335`](https://github.com/box/box-ui-elements/commit/174f335b7bd80f1b75a03441a3e14afb50f3e82d)) - **unified-share-modal:** カスタム権限の説明を追加 ([#4071](https://github.com/box/box-ui-elements/issues/4071)) ([`19a7978`](https://github.com/box/box-ui-elements/commit/19a7978121ac005cecd8643584076d4f2f1864ee)) - blueprintパッケージをアップグレード ([#4101](https://github.com/box/box-ui-elements/issues/4101)) ([`f8606cf`](https://github.com/box/box-ui-elements/commit/f8606cf689b1468ebec5948e018bfa86b237705f)) ### 取り消し - 「chore(storybook): v8.6.12に昇格 ([#4069](https://github.com/box/box-ui-elements/issues/4069))」 ([#4078](https://github.com/box/box-ui-elements/issues/4078)) ([`cbe4c0a`](https://github.com/box/box-ui-elements/commit/cbe4c0a22d3526f6090d8c67bce38dcb9d5a4772)) **Source:** [https://ja.developer.box.com/changelog/2025-05-12-box-ui-elements-v2330-released](https://ja.developer.box.com/changelog/2025-05-12-box-ui-elements-v2330-released) --- ### Box UI Elements `v23.4.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v23.4.0のリリース 23.4.0 (2025/08/12) バグ修正 ai-sidebar: 選択したエージェントに対するコールバックを追加 (#4115) (8bdbf3e) blueprint: blueprintを昇格 (#420… # Box UI Elements v23.4.0のリリース # 23.4.0 (2025/08/12) ### バグ修正 - **`ai-sidebar`:** 選択したエージェントに対するコールバックを追加 ([#4115](https://github.com/box/box-ui-elements/issues/4115)) ([`8bdbf3e`](https://github.com/box/box-ui-elements/commit/8bdbf3eee149e3a6dbc3431792509f3005371561)) - **`blueprint`:** blueprintを昇格 ([#4205](https://github.com/box/box-ui-elements/issues/4205)) ([`5e7f4b2`](https://github.com/box/box-ui-elements/commit/5e7f4b21f47d6be7416e06a1554bc58c0b150395)) - **`breadcrumb`:** 欠落しているkeyプロパティを追加 ([#4170](https://github.com/box/box-ui-elements/issues/4170)) ([`c10b059`](https://github.com/box/box-ui-elements/commit/c10b05951c6efa185b0a04517d4cf91349f8a545)) - **`content-preview`:** 小さい画面での項目のアイコンの縮小を防止 ([#4111](https://github.com/box/box-ui-elements/issues/4111)) ([`e5004f7`](https://github.com/box/box-ui-elements/commit/e5004f785d38fe6681dcd70b11842e413fef55bb)) - **`gh-pages`:** docsフォルダからstorybookを展開 ([#4100](https://github.com/box/box-ui-elements/issues/4100)) ([`dd34522`](https://github.com/box/box-ui-elements/commit/dd345227b8cb864cb42eabdbefd4208cfdd690c2)) - **`header-flyout`:** 画面サイズが中以上の場合にアニメーションを削除 ([#4163](https://github.com/box/box-ui-elements/issues/4163)) ([`cf3123e`](https://github.com/box/box-ui-elements/commit/cf3123e802fdd64d794087d7dd7551a3b5b28c32)) - **`i18n`:** 翻訳を更新 ([#4105](https://github.com/box/box-ui-elements/issues/4105)) ([`df61d95`](https://github.com/box/box-ui-elements/commit/df61d95591f74c44351e083fd139aed0bcf5e92a)) - **`i18n`:** 翻訳を更新 ([#4108](https://github.com/box/box-ui-elements/issues/4108)) ([`e702f97`](https://github.com/box/box-ui-elements/commit/e702f9773ae876c9355ebb9a02221e7f935f729e)) - **`i18n`:** 翻訳を更新 ([#4113](https://github.com/box/box-ui-elements/issues/4113)) ([`196beee`](https://github.com/box/box-ui-elements/commit/196beee85ebdcea2cfbc92ef70c1332d9b8ea25c)) - **`i18n`:** 翻訳を更新 ([#4119](https://github.com/box/box-ui-elements/issues/4119)) ([`113915b`](https://github.com/box/box-ui-elements/commit/113915b34d9f4895bae0b3085544bcd34dd7794c)) - **`i18n`:** 翻訳を更新 ([#4121](https://github.com/box/box-ui-elements/issues/4121)) ([`02cb22e`](https://github.com/box/box-ui-elements/commit/02cb22e1727821da51e366bdd8e70ab56e6c8a45)) - **`i18n`:** 翻訳を更新 ([#4130](https://github.com/box/box-ui-elements/issues/4130)) ([`ff8f322`](https://github.com/box/box-ui-elements/commit/ff8f3223c72e7f6aaea5d571fd5cf3bcd71b5857)) - **`i18n`:** 翻訳を更新 ([#4139](https://github.com/box/box-ui-elements/issues/4139)) ([`47b7690`](https://github.com/box/box-ui-elements/commit/47b76902799c69d1d5cd54965fb37d5781451423)) - **`i18n`:** 翻訳を更新 ([#4185](https://github.com/box/box-ui-elements/issues/4185)) ([`fef4134`](https://github.com/box/box-ui-elements/commit/fef4134a26b59ee7bbb3e9da13ae488a98e6fa52)) - **`i18n`:** 翻訳を更新 ([#4196](https://github.com/box/box-ui-elements/issues/4196)) ([`dd19958`](https://github.com/box/box-ui-elements/commit/dd19958289d113f4272559edbd1307e4d81e3137)) - **`i18n`:** 翻訳を更新 ([#4203](https://github.com/box/box-ui-elements/issues/4203)) ([`bd31196`](https://github.com/box/box-ui-elements/commit/bd31196e11bcae1b2efa732255697751c25644a4)) - **`i18n`:** 翻訳を更新 ([#4208](https://github.com/box/box-ui-elements/issues/4208)) ([`95b3cc6`](https://github.com/box/box-ui-elements/commit/95b3cc6b48ea7850e348936d040e4fda4f64e4df)) - **`i18n`:** 翻訳を更新 ([#4211](https://github.com/box/box-ui-elements/issues/4211)) ([`bee412f`](https://github.com/box/box-ui-elements/commit/bee412f1bad7e647b814d7601ddd04fe2d2421d1)) - **`i18n`:** 翻訳を更新 ([#4216](https://github.com/box/box-ui-elements/issues/4216)) ([`da932f1`](https://github.com/box/box-ui-elements/commit/da932f18801e936cffe7951a95639af2e52e05d8)) - **`i18n`:** 翻訳を更新 ([#4219](https://github.com/box/box-ui-elements/issues/4219)) ([`d8a8fcb`](https://github.com/box/box-ui-elements/commit/d8a8fcbc6ad3cbf11fec25949374bb73dce01d56)) - **`metadata-editor`:** バグ修正のためにパッケージを昇格 ([#4171](https://github.com/box/box-ui-elements/issues/4171)) ([`51dd7ca`](https://github.com/box/box-ui-elements/commit/51dd7caf8b273e0c0adba948f58e4b69be3a708e)) - **`metadata-instance-fields`:** `metada-instance-field`sに最小限のメタデータ階層のサポートを追加 ([#4133](https://github.com/box/box-ui-elements/issues/4133)) ([`0dff276`](https://github.com/box/box-ui-elements/commit/0dff276da6b497220f762fd917c421db4d5cf343)) - CVE-2025-7783 `form-data`の脆弱性を解決 ([#4213](https://github.com/box/box-ui-elements/issues/4213)) ([`96252db`](https://github.com/box/box-ui-elements/commit/96252db2ca2cad6b9b07787621e027e0a8ac7c84)) - 正しくない型のインポートを解決 ([#4132](https://github.com/box/box-ui-elements/issues/4132)) ([`8b5eec6`](https://github.com/box/box-ui-elements/commit/8b5eec6b4eda2a8291a8fda142b33ba6ba4498c0)) - フォルダの作成を調整して、急速なクリックを回避 ([#4193](https://github.com/box/box-ui-elements/issues/4193)) ([`67ec941`](https://github.com/box/box-ui-elements/commit/67ec94170a855e6ec62064f51e0b2e5d6d5aa729)) - **`uploads`:** 再試行のレート制限エラーを処理 ([#4134](https://github.com/box/box-ui-elements/issues/4134)) ([`eb3e3da`](https://github.com/box/box-ui-elements/commit/eb3e3da1c5b145f07994c5bb1eec38567de78187)) ### 機能 - **`boxai-sidebar`:** プロパティからリモートサイドバーをレンダリングするロジックを追加 ([#4106](https://github.com/box/box-ui-elements/issues/4106)) ([`7f8802a`](https://github.com/box/box-ui-elements/commit/7f8802a4997322503e5f31bb86aaeb252b99ef70)) - **`cascadepolicy`:** カスケードポリシーが存在する場合に入力を無効化 ([#4175](https://github.com/box/box-ui-elements/issues/4175)) ([`b6d778c`](https://github.com/box/box-ui-elements/commit/b6d778c6d3b0778a3e2f786b4b53d6d7ce045076)) - **`header-flyout`:** 最初のアニメーションを追加 ([#4159](https://github.com/box/box-ui-elements/issues/4159)) ([`3b417ba`](https://github.com/box/box-ui-elements/commit/3b417ba0a71d10026ba1c1857a974487eaf27f86)) - **`header-flyout`:** ヘッダーの操作を必要に応じて許可 ([#4164](https://github.com/box/box-ui-elements/issues/4164)) ([`8f3ad6e`](https://github.com/box/box-ui-elements/commit/8f3ad6e9f39d5fd8a5dcc54691bca6360af74dc6)) - **`mergify`:** 会話の解決を必須とするようにルールを更新 ([#4142](https://github.com/box/box-ui-elements/issues/4142)) ([`ef3291e`](https://github.com/box/box-ui-elements/commit/ef3291ed0f65122bfdaf9dd0fb51cfb6fc8acd64)) - `metadata-edito`rおよび`blueprint-web-assets`パッケージの昇格 ([#4137](https://github.com/box/box-ui-elements/issues/4137)) ([`070ff74`](https://github.com/box/box-ui-elements/commit/070ff749e085283ad97487a8a7daf6b44807fa94)) - **`metadata-editor`:** 高度なメタデータ抽出エージェントのプロパティを公開 ([#4128](https://github.com/box/box-ui-elements/issues/4128)) ([`f59b0aa`](https://github.com/box/box-ui-elements/commit/f59b0aa998fea1d54e2bc14a841dbfd3adc8be65)) - **`metadata-editor`:** `extractStructured`ペイロードでカスタムエージェントを公開 ([#4135](https://github.com/box/box-ui-elements/issues/4135)) ([`076e719`](https://github.com/box/box-ui-elements/commit/076e719857d17bd52de52f904bf5ee2763bc0ef7))、[#4102](https://github.com/box/box-ui-elements/issues/4102)をクローズ - **`metadata-editor`:** メタデータAPIの調整 ([#4192](https://github.com/box/box-ui-elements/issues/4192)) ([`6112967`](https://github.com/box/box-ui-elements/commit/6112967007196e2c91ca54ed7a7ce3afc5ab994b)) - **`metadata-editor`:** 新しいアイコン用のパッケージの昇格 ([#4195](https://github.com/box/box-ui-elements/issues/4195)) ([`1506020`](https://github.com/box/box-ui-elements/commit/150602092e957693b7fbd227e92adac8110ac327)) - **`metadata-instance-editor`:** 強化されたAI抽出のサポートを追加 ([#4197](https://github.com/box/box-ui-elements/issues/4197)) ([`540026a`](https://github.com/box/box-ui-elements/commit/540026a28bb805dd06d4b3f22c868ed0edd3f56e)) - **`metadata-instance-editor`:** 強化されたAI抽出のハイドレーションを許可 ([#4217](https://github.com/box/box-ui-elements/issues/4217)) ([`5a93a16`](https://github.com/box/box-ui-elements/commit/5a93a16c29187618429b8f0e4a53b8140a11b5f1)) - **`metadata-view`:** `MetadataView` V2を追加 ([#4191](https://github.com/box/box-ui-elements/issues/4191)) ([`c0ab1e7`](https://github.com/box/box-ui-elements/commit/c0ab1e7670e5f7c7ae8ff7572709ac19c9788a46)) - **`metadata-view`:** メタデータビューv2のサブヘッダーを追加 ([#4202](https://github.com/box/box-ui-elements/issues/4202)) ([`ab12626`](https://github.com/box/box-ui-elements/commit/ab1262690196a3ebb220250b1ad0243cd18932ce)) - **`metadata-view`:** メタデータV2のボタンを追加 ([#4174](https://github.com/box/box-ui-elements/issues/4174)) ([`d8ec9c7`](https://github.com/box/box-ui-elements/commit/d8ec9c75d6c7d2fa502d7d44aad2e7cd0ad1721e)) - **`metadata-view`:** カスタム操作 ([#4215](https://github.com/box/box-ui-elements/issues/4215)) ([`88a5187`](https://github.com/box/box-ui-elements/commit/88a518723c44bcf6a6d0762c1ff8e16ebcdb5fd6)) - **`metadataeditor`:** APIを使用したAIによるフォルダ抽出を有効化 ([#4102](https://github.com/box/box-ui-elements/issues/4102)) ([`6ebec78`](https://github.com/box/box-ui-elements/commit/6ebec78fff6ece2f1ea3c4bc20ef7409e33f27fd)) - **`metadataeditor`:** AIの価格に関する通知を削除 ([#4107](https://github.com/box/box-ui-elements/issues/4107)) ([`4bd24bc`](https://github.com/box/box-ui-elements/commit/4bd24bcf59489f7aaac381d9c66b7e1b9d2a64df)) - **`notification-redesign`:** BPアイコンの使用に関するロジックを追加 ([#4103](https://github.com/box/box-ui-elements/issues/4103)) ([`7907136`](https://github.com/box/box-ui-elements/commit/79071362aea99c02993ed89cd9bee34bbe196b25)) - **`router`:** ルーター不要のロジックを`VersionsSidebarContainer`に追加 ([#4209](https://github.com/box/box-ui-elements/issues/4209)) ([`0f46866`](https://github.com/box/box-ui-elements/commit/0f46866a9490bd8c9872f9e76147ed72d9d7a287)) - **`router`:** `NavButton`機能を`SidebarNavButton`にマージ ([#4150](https://github.com/box/box-ui-elements/issues/4150)) ([`814035d`](https://github.com/box/box-ui-elements/commit/814035d73280b7d1e0e9a068876ca3c0cf471b94)) - **`router`:** `ActivitySidebar`のオプションのルーター ([#4199](https://github.com/box/box-ui-elements/issues/4199)) ([`435c75a`](https://github.com/box/box-ui-elements/commit/435c75a9bce168c8206597da804b7ce55c97467d)) - **`router`:** `AddTaskButton`のオプションのルーター ([#4176](https://github.com/box/box-ui-elements/issues/4176)) ([`90537b4`](https://github.com/box/box-ui-elements/commit/90537b471fce6643dd5eaecf1e5b0a1e3f196012)) - **`router`:** `NavRouter`と`withNavRouter`のオプションのルーター ([#4161](https://github.com/box/box-ui-elements/issues/4161)) ([`7f9cad4`](https://github.com/box/box-ui-elements/commit/7f9cad4b85f96d8d65f11c30ae3a45f2a3c96e40)) - **`router`:** `SidebarNav`、`SidebarNavTablist`のオプションのルーター ([#4177](https://github.com/box/box-ui-elements/issues/4177)) ([`d14e06e`](https://github.com/box/box-ui-elements/commit/d14e06eb47083160dcf04055d3f418c4457d1255)) - **`router`:** `SidebarNavButton`のオプションのルーター ([#4156](https://github.com/box/box-ui-elements/issues/4156)) ([`dc8af3b`](https://github.com/box/box-ui-elements/commit/dc8af3b1dda45b1617aeac5a2d04af07af7e1e21)) - **`router`:** `SidebarNavigation`のオプションのルーター ([#4194](https://github.com/box/box-ui-elements/issues/4194)) ([`e25e0e1`](https://github.com/box/box-ui-elements/commit/e25e0e1174efd262f93e70619ff5f9a79d168fd8)) - **`router`:** `SidebarToggle`のオプションのルーター ([#4160](https://github.com/box/box-ui-elements/issues/4160)) ([`12c9a3a`](https://github.com/box/box-ui-elements/commit/12c9a3a840545048f53ebae7b278208981ed1a55)) - **`router`:** `StaticVersionSidebar`と`VersionsSid…`のオプションのルーター ([#4152](https://github.com/box/box-ui-elements/issues/4152)) ([`a456f3d`](https://github.com/box/box-ui-elements/commit/a456f3d677c3ad15e5ec2e052dcedf93d0d612f3)) - **`router`:** `VersionsList`のオプションのルーター ([#4144](https://github.com/box/box-ui-elements/issues/4144)) ([`15c5d8d`](https://github.com/box/box-ui-elements/commit/15c5d8dfed2b2cc777344d0e0ef10da8c3525434)) - **`router`:** `withAnnotatorContext`と`withAnnotations`のオプションのルーター ([#4136](https://github.com/box/box-ui-elements/issues/4136)) ([`d08545e`](https://github.com/box/box-ui-elements/commit/d08545ef0650ad7082040d74acddb365bc8122f4)) - **`router`:** `withRouterAndRef` HOCのオプションのルーター ([#4162](https://github.com/box/box-ui-elements/issues/4162)) ([`32b08b9`](https://github.com/box/box-ui-elements/commit/32b08b929acbd906b2a348b8939234c980f1b642)) - **`router`:** `withSidebarAnnotations`のオプションのルーター ([#4206](https://github.com/box/box-ui-elements/issues/4206)) ([`782877d`](https://github.com/box/box-ui-elements/commit/782877d2dcfa6d928da884055f1cc4bb17745d18)) - **`router`:** `BackButton`コンポーネントからルーター機能を削除 ([#4141](https://github.com/box/box-ui-elements/issues/4141)) ([`f01364c`](https://github.com/box/box-ui-elements/commit/f01364c73117a4d0638b28d4e3c6e832b1c27a62)) - blueprintパッケージをアップグレード ([#4123](https://github.com/box/box-ui-elements/issues/4123)) ([`c166d7d`](https://github.com/box/box-ui-elements/commit/c166d7d49373168daed0eab315f2e90d4b0532a9)) - react 19をサポートするためにreact-virtualizedをアップグレード ([#4157](https://github.com/box/box-ui-elements/issues/4157)) ([`269f585`](https://github.com/box/box-ui-elements/commit/269f5854c5c15a48c971207cf00bc2f1a98ccb97)) - **`uploads`:** 名前の競合に関するエラーにオプションを追加 ([#4117](https://github.com/box/box-ui-elements/issues/4117)) ([`463839e`](https://github.com/box/box-ui-elements/commit/463839ee00c901cd9752106ca1a44e7a3906dc0b)) **Source:** [https://ja.developer.box.com/changelog/2025-08-12-box-ui-elements-v2340-released](https://ja.developer.box.com/changelog/2025-08-12-box-ui-elements-v2340-released) --- ### Box UI Elements `v24.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v24.0.0のリリース 24.0.0 (2025/09/05) バグ修正 blueprint-web: blueprint-webパッケージをアップグレード (#4261) (ac48f93) blueprint: blueprint… # Box UI Elements v24.0.0のリリース # 24.0.0 (2025/09/05) ### バグ修正 - **blueprint-web:** blueprint-webパッケージをアップグレード ([#4261](https://github.com/box/box-ui-elements/issues/4261)) ([`ac48f93`](https://github.com/box/box-ui-elements/commit/ac48f9313b4603cbae3ac7daf8be36cf84d0bdb1)) - **blueprint:** blueprintのモダナイゼーション ([#4204](https://github.com/box/box-ui-elements/issues/4204)) ([`29030a9`](https://github.com/box/box-ui-elements/commit/29030a9a8c50eaa3b94c463993bc44dd2cc439ff)) - **box-ai:** 質問の候補が表示されない状態を修正 ([#4249](https://github.com/box/box-ui-elements/issues/4249)) ([`0c63595`](https://github.com/box/box-ui-elements/commit/0c63595299ea25408cabe6a4d846e7a34df74ee9)) - **box-ai:** box-ai-content-answersピア依存関係のバージョンを更新 ([#4238](https://github.com/box/box-ui-elements/issues/4238)) ([`8967acf`](https://github.com/box/box-ui-elements/commit/8967acf340eb96c4a50e11934c022cd10af1c42b)) - **content-explorer:** 不適切なSubheaderV2フォルダタイトルを修正 ([#4229](https://github.com/box/box-ui-elements/issues/4229)) ([`330ae33`](https://github.com/box/box-ui-elements/commit/330ae3398998c7e05778a52f15f2e5d0f815a0b3)) - **content-explorer:** グリッド選択を修正 ([#4267](https://github.com/box/box-ui-elements/issues/4267)) ([`4beb05d`](https://github.com/box/box-ui-elements/commit/4beb05d307a142331d55030fe35154c26dd4b1a5)) - **content-explorer:** 項目の変更後に選択した項目IDを検証 ([#4268](https://github.com/box/box-ui-elements/issues/4268)) ([`baaaa83`](https://github.com/box/box-ui-elements/commit/baaaa83462ef6b307992a9f6d800e62c8c668d16)) - **i18n:** 翻訳を更新 ([#4241](https://github.com/box/box-ui-elements/issues/4241)) ([`5e7030a`](https://github.com/box/box-ui-elements/commit/5e7030adc2e0ad683c11329dc00ab8dbd911aea7)) - **i18n:** 翻訳を更新 ([#4247](https://github.com/box/box-ui-elements/issues/4247)) ([`29f266c`](https://github.com/box/box-ui-elements/commit/29f266cbaa554d528766207ca22d9ab544686e36)) - **i18n:** 翻訳を更新 ([#4253](https://github.com/box/box-ui-elements/issues/4253)) ([`f9e4e79`](https://github.com/box/box-ui-elements/commit/f9e4e7922d4efda3addbea621f71aaee38475385)) - **i18n:** 翻訳を更新 ([#4254](https://github.com/box/box-ui-elements/issues/4254)) ([`59e30e3`](https://github.com/box/box-ui-elements/commit/59e30e3ac5eb1798456f228558f30f42d1b4ac2d)) - **i18n:** 翻訳を更新 ([#4258](https://github.com/box/box-ui-elements/issues/4258)) ([`2522af9`](https://github.com/box/box-ui-elements/commit/2522af9d1ee562ec8f838263422c5ce30edc6be0)) - **i18n:** 翻訳を更新 ([#4259](https://github.com/box/box-ui-elements/issues/4259)) ([`d3c5a78`](https://github.com/box/box-ui-elements/commit/d3c5a78fb8962acb92cdd91dccc497f05abdf164)) - **i18n:** 翻訳を更新 ([#4264](https://github.com/box/box-ui-elements/issues/4264)) ([`8118ab6`](https://github.com/box/box-ui-elements/commit/8118ab6ae814daad43848e626b711fe3e92b00e8)) - **metadata-view:** デフォルトのiconcolumnvariant ([#4262](https://github.com/box/box-ui-elements/issues/4262)) ([`141cf6e`](https://github.com/box/box-ui-elements/commit/141cf6e1cc7c61a989c7bffbc5215d02c6d4f4c5)) - **metadata-view:** 並べ替えのドロップダウンを有効化 ([#4265](https://github.com/box/box-ui-elements/issues/4265)) ([`fac795f`](https://github.com/box/box-ui-elements/commit/fac795f44248bb444c489d0512344a9f72b188d7)) - **metadata-view:** ファイル拡張子のフィルタをフィルタの可視性を修正 ([#4257](https://github.com/box/box-ui-elements/issues/4257)) ([`504aed7`](https://github.com/box/box-ui-elements/commit/504aed76ea4fab168ec9ad8b5190f1dfc15c781c)) - **metadata-view:** フォルダとファイルのフィルタを修正 ([#4255](https://github.com/box/box-ui-elements/issues/4255)) ([`bdd6d1d`](https://github.com/box/box-ui-elements/commit/bdd6d1d6c521cf147a6fa89428560e1b9f65b9b7)) - **metadata-view:** キーワードと場所のフィルタを非表示 ([#4260](https://github.com/box/box-ui-elements/issues/4260)) ([`1ca5029`](https://github.com/box/box-ui-elements/commit/1ca5029a5287f7aad3aefe5d2e4cfed26c301e5e)) - **metadata-view:** 内部ページネーションを使用 ([#4263](https://github.com/box/box-ui-elements/issues/4263)) ([`b274e73`](https://github.com/box/box-ui-elements/commit/b274e73216a5f8195f1f15cd82414ae19d1273e8)) - リリースアセットのバージョンを設定 ([#4266](https://github.com/box/box-ui-elements/issues/4266)) ([`1ba15df`](https://github.com/box/box-ui-elements/commit/1ba15dfbb119b82515d263a5610a0725d6819949)) ### 機能 - 要素のAPIコールにクライアントバージョンを追加 ([#4198](https://github.com/box/box-ui-elements/issues/4198)) ([`468d6c1`](https://github.com/box/box-ui-elements/commit/468d6c13d5e1b5c574f99442a22cdbb362d24485)) - **box-ai:** box-ai-content-answersバージョンを昇格 ([#4233](https://github.com/box/box-ui-elements/issues/4233)) ([`47cea9f`](https://github.com/box/box-ui-elements/commit/47cea9f604fafd686c03aeb42b9b14893d7dae0e)) - **classification:** AppliedByAiClassificationReasonを実装 ([#4250](https://github.com/box/box-ui-elements/issues/4250)) ([`e23fbf3`](https://github.com/box/box-ui-elements/commit/e23fbf303609bf6ee03ac35135dda57060346660)) - **content-explorer:** メタデータビューにフィルタの初期値を追加 ([#4225](https://github.com/box/box-ui-elements/issues/4225)) ([`b68cd70`](https://github.com/box/box-ui-elements/commit/b68cd705b2720125c9b132a81ff6dd2f4abe3efc)) - **metadata-instance-editor:** AIエージェントセレクタの分割を削除… ([#4226](https://github.com/box/box-ui-elements/issues/4226)) ([`1f953c0`](https://github.com/box/box-ui-elements/commit/1f953c08decd3113f855aceada1a8513e74582f9)) - **metadata-view:** フィルタを追加 ([#4235](https://github.com/box/box-ui-elements/issues/4235)) ([`2f5e42b`](https://github.com/box/box-ui-elements/commit/2f5e42b9e36618dc6d9880812ee425eb5c799b29)) - **metadata-view:** 一括カスタム操作 ([#4227](https://github.com/box/box-ui-elements/issues/4227)) ([`371ad5e`](https://github.com/box/box-ui-elements/commit/371ad5eeb38cabe162d1b8bb0ab9eb6f8378deab)) - **metadata-view:** デフォルトのsortBy ([#4232](https://github.com/box/box-ui-elements/issues/4232)) ([`1a86aa5`](https://github.com/box/box-ui-elements/commit/1a86aa587b47e149d4e9430a3720492d4bffb2a4)) - **metadata-view:** メタデータサイドパネルを実装 ([#4230](https://github.com/box/box-ui-elements/issues/4230)) ([`4f89946`](https://github.com/box/box-ui-elements/commit/4f8994652f45b34abd22d5347ecfd7642ce47fa2)) - **metadata-view:** メタデータサイドパネルでの複数値の表示とonSave ([#4245](https://github.com/box/box-ui-elements/issues/4245)) ([`7ddea1e`](https://github.com/box/box-ui-elements/commit/7ddea1e9ae6c0f5686fb8efa501619da61f41818)) - **metadata-view:** onSortChangeをパススルー ([#4248](https://github.com/box/box-ui-elements/issues/4248)) ([`1a8a59f`](https://github.com/box/box-ui-elements/commit/1a8a59f66740eeb0313e4a64d2793f1bd5ea22c8)) - **router:** withRouterIfEnabled ([#4221](https://github.com/box/box-ui-elements/issues/4221)) ([`f969170`](https://github.com/box/box-ui-elements/commit/f96917063feedb5ee681935b1551d8fa7555e74e)) - **timestamped-comments:** ビデオのタイムスタンプ付きコメントを有効化 ([#4228](https://github.com/box/box-ui-elements/issues/4228)) ([`31b580d`](https://github.com/box/box-ui-elements/commit/31b580d3dd7411f25b0f6841ab56eb91fb425fc1))、[#4226](https://github.com/box/box-ui-elements/issues/4226) [#4230](https://github.com/box/box-ui-elements/issues/4230)をクローズ ### 重大な変更 - **box-ai:** isResetChatEnabledプロパティを削除 **Source:** [https://ja.developer.box.com/changelog/2025-09-05-box-ui-elements-v2400-released](https://ja.developer.box.com/changelog/2025-09-05-box-ui-elements-v2400-released) --- ### Box UI Elements `v25.0.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v25.0.0のリリース 25.0.0 (2025/09/26) バグ修正 classification: AppliedByAiClassificationReasonにAsyncLoadを使用 (#4274) (b80df38) common… # Box UI Elements v25.0.0のリリース # 25.0.0 (2025/09/26) ### バグ修正 - **classification:** `AppliedByAiClassificationReason`に`AsyncLoad`を使用 ([#4274](https://github.com/box/box-ui-elements/issues/4274)) ([`b80df38`](https://github.com/box/box-ui-elements/commit/b80df3853c94a93fecac1d242bea11fce51cef00)) - **common:** `makeDroppable`から`findDOMNode`を削除 (重大な変更) ([#4276](https://github.com/box/box-ui-elements/issues/4276)) ([`c3bcad3`](https://github.com/box/box-ui-elements/commit/c3bcad39d81692c1d831e090ff3664c07e0ae987)) - **i18n:** 翻訳を更新 ([#4269](https://github.com/box/box-ui-elements/issues/4269)) ([`d27c054`](https://github.com/box/box-ui-elements/commit/d27c054e985386fcce723c8929a33eb5c0f1500f)) - **i18n:** 翻訳を更新 ([#4272](https://github.com/box/box-ui-elements/issues/4272)) ([`9f3520b`](https://github.com/box/box-ui-elements/commit/9f3520b8f63aa7445a83ece2cf0e12610484c506)) - **i18n:** 翻訳を更新 ([#4277](https://github.com/box/box-ui-elements/issues/4277)) ([`23b27f6`](https://github.com/box/box-ui-elements/commit/23b27f6ef48d4928a7f685ec084174f4b0e7e322)) - **i18n:** 翻訳を更新 ([#4280](https://github.com/box/box-ui-elements/issues/4280)) ([`7c633b8`](https://github.com/box/box-ui-elements/commit/7c633b85f7c75e0948e7d38db0417f40e7c79f7c)) - **i18n:** 翻訳を更新 ([#4289](https://github.com/box/box-ui-elements/issues/4289)) ([`8453128`](https://github.com/box/box-ui-elements/commit/8453128761a7d239f24654d59992ab38ac9ca501)) - **metadata-view:** 例外がスローされたときにエラー状態を表示 ([#4270](https://github.com/box/box-ui-elements/issues/4270)) ([`246f2df`](https://github.com/box/box-ui-elements/commit/246f2dfb3d12f1805ffac279eeceb1f9d59daef8)) - **metadataeditor:** ポータルのドロップダウンでコンテナをプレビュー ([#4273](https://github.com/box/box-ui-elements/issues/4273)) ([`540a957`](https://github.com/box/box-ui-elements/commit/540a9575b3e16b23a8affb7ec12dad0ad7406735)) ### 機能 - **classification:** `AppliedByAiClassificationReason`カードで空の理由をサポート ([#4279](https://github.com/box/box-ui-elements/issues/4279)) ([`cb04234`](https://github.com/box/box-ui-elements/commit/cb04234576cfc65c61402035c03d4a026a5eb08b)) - **classification:** AIによる推論と新しいapplied byラベルをサポート ([#4271](https://github.com/box/box-ui-elements/issues/4271)) ([`681bace`](https://github.com/box/box-ui-elements/commit/681bace22e3b2c7cc381c73855c1d1dd6b4f1548)) - **content-sharing:** `ContentSharingV2`コンポーネントを作成 ([#4282](https://github.com/box/box-ui-elements/issues/4282)) ([`ef49c77`](https://github.com/box/box-ui-elements/commit/ef49c773b63fb240c115308c48030f46d46971a5)) - **metadata-view:** メタデータビューのバージョンを昇格 ([#4287](https://github.com/box/box-ui-elements/issues/4287)) ([`f5887d7`](https://github.com/box/box-ui-elements/commit/f5887d74f689dd79e41ca2979d3a2430fc8b8bda)) - **metadata-view:** blueprintウェブバージョンを更新 ([#4288](https://github.com/box/box-ui-elements/issues/4288)) ([`6d599a3`](https://github.com/box/box-ui-elements/commit/6d599a3f7a3cc7f8f9f7a724e1d5a7b29522351a)) - **timestamped-comments:** サイドバーのタイムスタンプの処理を有効化 ([#4275](https://github.com/box/box-ui-elements/issues/4275)) ([`7f9defa`](https://github.com/box/box-ui-elements/commit/7f9defa1dae1faff823b414b708f164913aa701e))、[#4226](https://github.com/box/box-ui-elements/issues/4226) [#4230](https://github.com/box/box-ui-elements/issues/4230) [#4274](https://github.com/box/box-ui-elements/issues/4274)をクローズ - **timestamped-comments:** タイプスタンプ付きのコメントのエディタの更新 ([#4244](https://github.com/box/box-ui-elements/issues/4244)) ([`6e1bd80`](https://github.com/box/box-ui-elements/commit/6e1bd8060212d35529fcb0dcc4b7abd77470941d))、[#4226](https://github.com/box/box-ui-elements/issues/4226) [#4230](https://github.com/box/box-ui-elements/issues/4230)をクローズ ### 重大な変更 **common:** `makeDroppable`のラップされたコンポーネントにはrefプロパティが必要 (例: `React.forwardRef`を使用) 修正: テストをクリーンアップ **Source:** [https://ja.developer.box.com/changelog/2025-09-26-box-ui-elements-v2500-released](https://ja.developer.box.com/changelog/2025-09-26-box-ui-elements-v2500-released) --- ### Box UI Elements `v25.1.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v25.1.0のリリース 25.1.0 (2025/10/01) バグ修正 i18n: 翻訳を更新 (#4298) (86df699) security-cloud-game: React 19のDragCloudでnodeRef… # Box UI Elements v25.1.0のリリース # 25.1.0 (2025/10/01) ### バグ修正 - **i18n:** 翻訳を更新 ([#4298](https://github.com/box/box-ui-elements/issues/4298)) ([`86df699`](https://github.com/box/box-ui-elements/commit/86df69972d8e2ea1c176daf4ba9b2b8484fd8504)) - **security-cloud-game:** React 19のDragCloudでnodeRefを使用 ([#4286](https://github.com/box/box-ui-elements/issues/4286)) ([`ee8cba8`](https://github.com/box/box-ui-elements/commit/ee8cba848001708bd98ec889523527185a12c1ff)) ### 機能 - **content-sharing:** コンテンツ共有のV2 APIレスポンスを変換 ([#4285](https://github.com/box/box-ui-elements/issues/4285)) ([`6730ffe`](https://github.com/box/box-ui-elements/commit/6730ffe42cbdddae325f196875b8765405ca3186)) - **content-sidebar:** メタデータインスタンスの作成の成功イベントを処理 ([#4284](https://github.com/box/box-ui-elements/issues/4284)) ([`371c1a9`](https://github.com/box/box-ui-elements/commit/371c1a9843f31af78b667b3f80dd6319b1c5d6ff)) - **content-sidebar:** カスタムサイドバーパネルを実装 ([#4239](https://github.com/box/box-ui-elements/issues/4239)) ([`750737c`](https://github.com/box/box-ui-elements/commit/750737cb6c0b3fb10e7794183fde8c63373ee673)) - **item-properties:** 項目プロパティにフォルダのファイル数を追加 ([#4283](https://github.com/box/box-ui-elements/issues/4283)) ([`f12340a`](https://github.com/box/box-ui-elements/commit/f12340a30286781d5a35ed57dcf59ccca2499c99)) - **video-annotations:** ビデオの注釈でサイドバーをサポート ([#4318](https://github.com/box/box-ui-elements/issues/4318)) ([`aa5fc16`](https://github.com/box/box-ui-elements/commit/aa5fc1667f8693ba11b072aa35075e1f073a0241)) ### 取り消し - chore(mergify): CircleCIとMergifyの構成を更新 ([#4](https://github.com/box/box-ui-elements/issues/4)… ([#4296](https://github.com/box/box-ui-elements/issues/4296)) ([`b915e45`](https://github.com/box/box-ui-elements/commit/b915e45fd8abc702fbdd99eb0bb4b411e00e7ef2))、[#4295](https://github.com/box/box-ui-elements/issues/4295)をクローズ **Source:** [https://ja.developer.box.com/changelog/2025-10-01-box-ui-elements-v2510-released](https://ja.developer.box.com/changelog/2025-10-01-box-ui-elements-v2510-released) --- ### Box UI Elements `v25.2.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v25.2.0のリリース 25.2.0 (2025/11/04) バグ修正 classification: 不安定なai-iconチェックを修正 (#4323) (0061f34) content-picker… # Box UI Elements v25.2.0のリリース # 25.2.0 (2025/11/04) ### バグ修正 - **classification:** 不安定なai-iconチェックを修正 ([#4323](https://github.com/box/box-ui-elements/issues/4323)) ([`0061f34`](https://github.com/box/box-ui-elements/commit/0061f34e9e7f4613f5b15f83eeccde3b518940cb)) - **content-picker:** フォルダナビゲーション ([#4329](https://github.com/box/box-ui-elements/issues/4329)) ([`8053fa7`](https://github.com/box/box-ui-elements/commit/8053fa70127203f5d70818228b70272d869965ff)) - **content-picker:** blueprintをアップグレードしてスクロールの問題を修正 ([#4349](https://github.com/box/box-ui-elements/issues/4349)) ([`d0ce8a6`](https://github.com/box/box-ui-elements/commit/d0ce8a60056cc2272c96828219897189449fb6ad)) - **content-sharing:** コラボレータの現在のユーザー ([#4328](https://github.com/box/box-ui-elements/issues/4328)) ([`2e9dd6a`](https://github.com/box/box-ui-elements/commit/2e9dd6ab3ce63b974241566f3d1c24e401005e96)) - **content-sharing:** null sharingServiceProps ([#4352](https://github.com/box/box-ui-elements/issues/4352)) ([`4ea0f83`](https://github.com/box/box-ui-elements/commit/4ea0f8376ff34a650b4ad16af91a39e1becbe4d7)) - **content-sharing:** 共有リンクウィンドウとコラボレータ ([#4360](https://github.com/box/box-ui-elements/issues/4360)) ([`76e94f1`](https://github.com/box/box-ui-elements/commit/76e94f12fcc6a57809165bebb145fa57560afe56)) - ContentSharing v2のモダナイゼーションフックを修正 ([#4339](https://github.com/box/box-ui-elements/issues/4339)) ([`e0a67e0`](https://github.com/box/box-ui-elements/commit/e0a67e0618fdbfa6f13cdb58fdba6a6c18a89c47)) - **i18n:** 翻訳を更新 ([#4321](https://github.com/box/box-ui-elements/issues/4321)) ([`4d89663`](https://github.com/box/box-ui-elements/commit/4d89663b5481463353cb39f0828304ca1744a07c)) - **i18n:** 翻訳を更新 ([#4325](https://github.com/box/box-ui-elements/issues/4325)) ([`3e8eeea`](https://github.com/box/box-ui-elements/commit/3e8eeea3d203d316b9e3f099f6de06759a56810b)) - **i18n:** 翻訳を更新 ([#4330](https://github.com/box/box-ui-elements/issues/4330)) ([`bd0dd5f`](https://github.com/box/box-ui-elements/commit/bd0dd5fa8778e77eb53785fb91b4ab0bdfcb2adf)) - **i18n:** 翻訳を更新 ([#4333](https://github.com/box/box-ui-elements/issues/4333)) ([`b2a4e01`](https://github.com/box/box-ui-elements/commit/b2a4e01003f4b66faea00633e2bc2b3f4c7e13f7)) - **i18n:** 翻訳を更新 ([#4343](https://github.com/box/box-ui-elements/issues/4343)) ([`847557b`](https://github.com/box/box-ui-elements/commit/847557b53bf89ad591e4cb2116d3b0f267b8e757)) - **i18n:** 翻訳を更新 ([#4348](https://github.com/box/box-ui-elements/issues/4348)) ([`d4eae4b`](https://github.com/box/box-ui-elements/commit/d4eae4bed33a7ae4e01565eb7809b2f579bd6066)) - **i18n:** 翻訳を更新 ([#4353](https://github.com/box/box-ui-elements/issues/4353)) ([`e3f4cf9`](https://github.com/box/box-ui-elements/commit/e3f4cf90382c2ef531df909c4d7202dfab1126d8)) - **i18n:** 翻訳を更新 ([#4355](https://github.com/box/box-ui-elements/issues/4355)) ([`094e633`](https://github.com/box/box-ui-elements/commit/094e633f76df79bb14d0f193f1a126d93e371324)) - **i18n:** 翻訳を更新 ([#4357](https://github.com/box/box-ui-elements/issues/4357)) ([`a817d9c`](https://github.com/box/box-ui-elements/commit/a817d9c616f9100f9f6fbe21dadb1cd578a45f39)) - **i18n:** 翻訳を更新 ([#4358](https://github.com/box/box-ui-elements/issues/4358)) ([`33a5861`](https://github.com/box/box-ui-elements/commit/33a5861d34e914e037e3a35597b28956f69db6ab)) - **storybook:** ブランドURLを更新 ([#4337](https://github.com/box/box-ui-elements/issues/4337)) ([`c73965b`](https://github.com/box/box-ui-elements/commit/c73965b87c172bbe59adc456fe64a9d92dd7316d)) - **video-annotations:** メンションが適切に解析されないケースに関する修正 ([#4351](https://github.com/box/box-ui-elements/issues/4351)) ([`6bb2b15`](https://github.com/box/box-ui-elements/commit/6bb2b15c5e0886861c73c1478a05fd30b3bf1832)) ### 機能 - **api:** 非表示のコラボレータを考慮 ([#4346](https://github.com/box/box-ui-elements/issues/4346)) ([`955e6cb`](https://github.com/box/box-ui-elements/commit/955e6cb06cd2d903c7c85e47f005f83c2818c890)) - **content-explorer:** 編集中の選択を無効化 ([#4317](https://github.com/box/box-ui-elements/issues/4317)) ([`c08d9b5`](https://github.com/box/box-ui-elements/commit/c08d9b5fdd8b20d95f747198c5bbac8204e97bf2)) - **content-sharing:** コラボレーションのAPIレスポンスを変換 ([#4322](https://github.com/box/box-ui-elements/issues/4322)) ([`6937b60`](https://github.com/box/box-ui-elements/commit/6937b60ba181e2300eab98934a930d1456ce50e0)) - **content-sharing:** コンタクトサービスgetContactByEmailを作成 ([#4342](https://github.com/box/box-ui-elements/issues/4342)) ([`05b50cd`](https://github.com/box/box-ui-elements/commit/05b50cdd62e7e7d4a59073cf152305fa7ff969fb)) - **content-sharing:** コンタクトサービスgetContactsを作成 ([#4338](https://github.com/box/box-ui-elements/issues/4338)) ([`8ae6ccc`](https://github.com/box/box-ui-elements/commit/8ae6cccf0c11b1ebc750934c5d23c42a99dae41d)) - **content-sharing:** コンタクトサービスgetContactsAvatarUrlsを作成 ([#4345](https://github.com/box/box-ui-elements/issues/4345)) ([`6f9260b`](https://github.com/box/box-ui-elements/commit/6f9260b8256aee8c710f24e3e10d5711c5abc19a)) - **content-sharing:** 共有サービスchangeSharedLinkPermissionを作成 ([#4332](https://github.com/box/box-ui-elements/issues/4332)) ([`e64a61b`](https://github.com/box/box-ui-elements/commit/e64a61bcb92f2de6b75e218ae99a55dde82835c4)) - **content-sharing:** 共有サービスsendInvitationsを作成 ([#4344](https://github.com/box/box-ui-elements/issues/4344)) ([`d497350`](https://github.com/box/box-ui-elements/commit/d49735065dd73c4a6e3a85ffa99f3b24537c4b48)) - **content-sharing:** 共有リンクとアクセスの共有サービスを定義 ([#4340](https://github.com/box/box-ui-elements/issues/4340)) ([`2f7185d`](https://github.com/box/box-ui-elements/commit/2f7185de2d10fe62dba8e8a4f2bc8235009e0b5e)) - **content-sharing:** 初期データの取得に失敗した際のエラーを処理 ([#4350](https://github.com/box/box-ui-elements/issues/4350)) ([`f0c9efd`](https://github.com/box/box-ui-elements/commit/f0c9efd404abfe29b69bb28e7d3caeba367a9b92)) - **content-sharing:** sendInvitationsの通知をレンダリング ([#4347](https://github.com/box/box-ui-elements/issues/4347)) ([`051bd7c`](https://github.com/box/box-ui-elements/commit/051bd7c5cccdaebd1d7bcda55de014c6db75f75f)) - **content-sharing:** 共有サービスupdateSharedLink ([#4336](https://github.com/box/box-ui-elements/issues/4336)) ([`b39a482`](https://github.com/box/box-ui-elements/commit/b39a4824486062c34378ce9a8fbbe34cd6042d3c)) - **deps:** パッケージ依存関係をアップグレード ([#4359](https://github.com/box/box-ui-elements/issues/4359)) ([`2f025e3`](https://github.com/box/box-ui-elements/commit/2f025e3765c26bc206440458aaa632dddd36d83b)) ### 取り消し - "feat(content-sidebar): カスタムサイドバーパネルを実装 (#… ([#4320](https://github.com/box/box-ui-elements/issues/4320)) ([`230f417`](https://github.com/box/box-ui-elements/commit/230f417c9407c4bbe4705ec8f200c53f572a798a))、[#4239](https://github.com/box/box-ui-elements/issues/4239)をクローズ **Source:** [https://ja.developer.box.com/changelog/2025-11-04-box-ui-elements-v2520-released](https://ja.developer.box.com/changelog/2025-11-04-box-ui-elements-v2520-released) --- ### Box UI Elements `v25.3.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v25.3.0のリリース 25.3.0 (2025/11/07) 機能 deps: blueprint-webを12.93.5にアップグレード (#4362) (84aaf2f) metadata… # Box UI Elements v25.3.0のリリース # 25.3.0 (2025/11/07) ### 機能 - **deps:** blueprint-webを12.93.5にアップグレード ([#4362](https://github.com/box/box-ui-elements/issues/4362)) ([`84aaf2f`](https://github.com/box/box-ui-elements/commit/84aaf2ffc0234b5728188df6944a48679eca4976)) - **metadata:** プレビューで複数レベルのメタデータ階層フィールドのフィルタを有効化 ([#4354](https://github.com/box/box-ui-elements/issues/4354)) ([`4851c37`](https://github.com/box/box-ui-elements/commit/4851c3776fbbef1220029234d01bc0ab6354b17c)) **Source:** [https://ja.developer.box.com/changelog/2025-11-07-box-ui-elements-v2530-released](https://ja.developer.box.com/changelog/2025-11-07-box-ui-elements-v2530-released) --- ### Box UI Elements `v25.4.0`のリリース **Type:** changelog | **Section:** Changelog Box UI Elements v25.4.0のリリース 25.4.0 (2025/12/09) バグ修正 node-forgeのバージョンを昇格 (#4386) (5f46b8b) i18n: 翻訳を更新 (#4369) (abc11ee) i18n: 翻訳を更新 (#437… # Box UI Elements v25.4.0のリリース # 25.4.0 (2025/12/09) ### バグ修正 - node-forgeのバージョンを昇格 ([#4386](https://github.com/box/box-ui-elements/issues/4386)) ([`5f46b8b`](https://github.com/box/box-ui-elements/commit/5f46b8bb57c879f1fb5ca0a0dfc00138b90e8273)) - **i18n:** 翻訳を更新 ([#4369](https://github.com/box/box-ui-elements/issues/4369)) ([`abc11ee`](https://github.com/box/box-ui-elements/commit/abc11eeb509583c80e3d76d8fb6341eeb3cbcf24)) - **i18n:** 翻訳を更新 ([#4372](https://github.com/box/box-ui-elements/issues/4372)) ([`8dd5f9f`](https://github.com/box/box-ui-elements/commit/8dd5f9feab11b5214a9f1038717916f80d89f697)) - **i18n:** 翻訳を更新 ([#4374](https://github.com/box/box-ui-elements/issues/4374)) ([`7f37b4b`](https://github.com/box/box-ui-elements/commit/7f37b4bdf0059f40eea2182f85a5579b06884740)) - **i18n:** 翻訳を更新 ([#4375](https://github.com/box/box-ui-elements/issues/4375)) ([`df948b4`](https://github.com/box/box-ui-elements/commit/df948b4042fa706b944e2a1c2532c8e2827f8f24)) - **i18n:** 翻訳を更新 ([#4377](https://github.com/box/box-ui-elements/issues/4377)) ([`7e61a9c`](https://github.com/box/box-ui-elements/commit/7e61a9c45b2da90af47723b14b7d5f04cce6322f)) - サイドバーコンテンツとタグコンポーネントにおけるアクセシビリティを改善 ([#4363](https://github.com/box/box-ui-elements/issues/4363)) ([`35080aa`](https://github.com/box/box-ui-elements/commit/35080aababcf3457f9d9d898709b9ef8a4acf743)) - **metadata-editor:** フィールドのメタデータ階層レベルを取得する際にフィールドの順序を保持 ([#4378](https://github.com/box/box-ui-elements/issues/4378)) ([`fbd155e`](https://github.com/box/box-ui-elements/commit/fbd155e170cf5f5ea3e77d78e9614a3055cb7fe0)) - **video-annotations:** ビデオの注釈用にバージョンのリンクを追加 ([#4379](https://github.com/box/box-ui-elements/issues/4379)) ([`8bf7c63`](https://github.com/box/box-ui-elements/commit/8bf7c631acbebf37674d556c5c1480c7fa626ce4)) ### 機能 - **deps:** blueprint-webのアップグレード向けのリリースを無操作 (no-op) でトリガー ([#4368](https://github.com/box/box-ui-elements/issues/4368)) ([`58b9697`](https://github.com/box/box-ui-elements/commit/58b9697331a5d913a83acd1d78ed71ebab8d2835)) - **form-elements:** フォームの従来のコンテキストを削除 ([#4383](https://github.com/box/box-ui-elements/issues/4383)) ([`62c77b4`](https://github.com/box/box-ui-elements/commit/62c77b4ce9f1995e1194319343fd39fb6371bf80)) - **hotkeys:** ホットキーから従来のコンテキストを削除 ([#4382](https://github.com/box/box-ui-elements/issues/4382)) ([`5db66df`](https://github.com/box/box-ui-elements/commit/5db66df5d4335531ce829e51a1e83e4ab3abb35a)) - **presence-avatar-list:** `presenceAvatarList` (`WEBAPP-41740`) にBPのツールチップを追加 ([#4384](https://github.com/box/box-ui-elements/issues/4384)) ([`5653500`](https://github.com/box/box-ui-elements/commit/565350009c5f8b94c4ad01bad5232931997cc0c0)) - **preview-modernization:** BP `AddTaskButton` ([#4366](https://github.com/box/box-ui-elements/issues/4366)) ([`f76ed73`](https://github.com/box/box-ui-elements/commit/f76ed73eb99176c80393a42d4d80ba75025e6f1f)) - **preview-modernization:** サイドバーのナビゲーションのアイコンとツールチップを更新 ([#4373](https://github.com/box/box-ui-elements/issues/4373)) ([`60eda40`](https://github.com/box/box-ui-elements/commit/60eda4000ba9884c70696d829f42c1b3fd6f7423)) - **preview-modernization:** サイドバーのナビゲーションのはみ出した区切り線を更新 ([#4370](https://github.com/box/box-ui-elements/issues/4370)) ([`671a067`](https://github.com/box/box-ui-elements/commit/671a0676fbfa9a86c07a381691c9938880934aee)) - **preview-optimizations:** バージョンのサイドバーを最新化 ([#4381](https://github.com/box/box-ui-elements/issues/4381)) ([`2b136e4`](https://github.com/box/box-ui-elements/commit/2b136e46398ddaeb8b773e8a23323a986220dfd7)) - **`SecurityControls`:** 共有リンクの自動有効期限の制限を追加 ([#4365](https://github.com/box/box-ui-elements/issues/4365)) ([`40ff462`](https://github.com/box/box-ui-elements/commit/40ff462fb4630911d7ab7e2f0d36d415ead010af)) **Source:** [https://ja.developer.box.com/changelog/2025-12-09-box-ui-elements-v2540-released](https://ja.developer.box.com/changelog/2025-12-09-box-ui-elements-v2540-released) --- ### Box UI ElementsでのReact 18のサポート **Type:** changelog | **Section:** Changelog Box UI ElementsでのReact 18のサポート Box UI ElementsでReact 18がサポートされるようになりました。これにより、サードパーティ製アプリでのコンテンツコラボレーションで新たな段階の柔軟性と機能性が実現します。この更新により、React 18の最先端の機能を活用し、最新のフロントエンドスタックでイノベーションを推進すると同時に、インテリジェントなコンテンツクラウドとのシームレスな統合が可能になります。 # Box UI ElementsでのReact 18のサポート [Box UI Elements](g://embed/ui-elements)でReact 18がサポートされるようになりました。これにより、サードパーティ製アプリでのコンテンツコラボレーションで新たな段階の柔軟性と機能性が実現します。この更新により、React 18の最先端の機能を活用し、最新のフロントエンドスタックでイノベーションを推進すると同時に、インテリジェントなコンテンツクラウドとのシームレスな統合が可能になります。 詳細については、Boxの[ブログ記事](https://medium.com/box-developer-blog/seamless-integration-box-ui-elements-and-react-18-compatibility-4db97a09ff01)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://medium.com/box-developer-blog/seamless-integration-box-ui-elements-and-react-18-compatibility-4db97a09ff01)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-07-16-react-18-buie](https://ja.developer.box.com/changelog/2024-07-16-react-18-buie) --- ### Box Windows SDK `v10.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v10.0.0のリリース 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、**Box SDK v10**を導入しました。現在は個別のsdk-genブランチとして利用可能なv1… # Box Windows SDK v10.0.0のリリース 開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化する、**`Box SDK v10`**を導入しました。現在は個別の[`sdk-gen`](https://github.com/box/box-windows-sdk-v2/tree/sdk-gen)ブランチとして利用可能な`v10`が、最終的にメインブランチになります。 ### 重大な変更 - このSDKのバージョンは、自動生成されており、すべてのメソッドに新しいインターフェースを導入しています。詳細なドキュメントについては、[こちら](https://github.com/box/box-windows-sdk-v2/tree/sdk-gen/docs)を参照してください。 ### v10の新機能 **APIの全面的なサポート** — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 **迅速なAPIの更新** — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 **ドキュメントへの埋め込み** — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 **便利なメソッドの強化** — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 ### 重要な注意事項 ## このバージョンには、BoxのコアSDKと並行して以前に開発された、Boxの次世代SDKのアーティファクトが含まれています。Boxでは、移行を促進し、最新の機能を利用できるようにするため、まもなく、両方のアーティファクトを兼ね備えたメジャーバージョンを追加でリリースする予定です。v10への移行には重大な変更が含まれるため、詳細については移行ガイドを確認してください。詳細については、SDKのバージョン戦略に関するドキュメントを参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 ### 新機能 (Dotnet SDK Gen v1.12.0との比較) #### ⚠ 重大な変更 - 共用体の名前を変更 (box/box-openapi[#549](https://github.com/box/box-windows-sdk-v2/issues/549)) ([#1007](https://github.com/box/box-windows-sdk-v2/issues/1007)) ([`fcef4ec`](https://github.com/box/box-windows-sdk-v2/commit/fcef4ecab38435fb4a79e2db8fcf2c5ad931986b)) - スキーマから未使用のモデルを削除 (box/box-openapi[#547](https://github.com/box/box-windows-sdk-v2/issues/547)) ([#999](https://github.com/box/box-windows-sdk-v2/issues/999)) ([`ffcb488`](https://github.com/box/box-windows-sdk-v2/commit/ffcb4888e6ad52f10028f92c49b5d919cb1ac620)) #### バグ修正 - `net462`のデバッグビルドを修正 ([#1020](https://github.com/box/box-windows-sdk-v2/issues/1020)) ([`04f8343`](https://github.com/box/box-windows-sdk-v2/commit/04f8343c200e45ebe65bd29f03f55a44e76bcbde)) - 外部ユーザー削除メソッドの名前を変更 (box/box-codegen[#796](https://github.com/box/box-windows-sdk-v2/issues/796)) ([#1024](https://github.com/box/box-windows-sdk-v2/issues/1024)) ([`13928c5`](https://github.com/box/box-windows-sdk-v2/commit/13928c559bd3e97d060c48997b05ca384333d03d)) #### 新機能と機能強化 - 外部ユーザー削除APIを追加 (box/box-openapi[#550](https://github.com/box/box-windows-sdk-v2/issues/550)) ([#1009](https://github.com/box/box-windows-sdk-v2/issues/1009)) ([`2178bc8`](https://github.com/box/box-windows-sdk-v2/commit/2178bc87c8b724598616e99f0a528c7b21ff12c6)) - 不足していたWebhookイベントを追加 (box/box-openapi[#554](https://github.com/box/box-windows-sdk-v2/issues/554)) ([#1068](https://github.com/box/box-windows-sdk-v2/issues/1068)) ([`7fe3b99`](https://github.com/box/box-windows-sdk-v2/commit/7fe3b99cae1cf5be9ad3ec7bec54c97f198fd8c7)) - `v10`用に.Net Framework 4.6.2のサポートを追加 (box/box-codegen[#773](https://github.com/box/box-windows-sdk-v2/issues/773)) ([#986](https://github.com/box/box-windows-sdk-v2/issues/986)) ([`67366c7`](https://github.com/box/box-windows-sdk-v2/commit/67366c7274faa5c758490d393605c76220aa6a79)) - `jwt`のカスタム復号メカニズムの挿入を許可 ([#974](https://github.com/box/box-windows-sdk-v2/issues/974)) ([`b877355`](https://github.com/box/box-windows-sdk-v2/commit/b877355493b60dc6f9c1a576927d6e0c62ec27f3)) 詳細については、`box-dotnet-sdk-gen` `v1`から`box-windows-sdk-v2` `v10`への[移行ガイド](https://github.com/box/box-windows-sdk-v2/blob/sdk-gen/migration-guides/from-dotnet-sdk-gen-v1-to-box-windows-sdk-v10.md)をご確認ください。 **Source:** [https://ja.developer.box.com/changelog/2025-09-17-box-windows-sdk-v1000-released](https://ja.developer.box.com/changelog/2025-09-17-box-windows-sdk-v1000-released) --- ### Box Windows SDK `v10.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v10.1.0のリリース バグ修正 AiExtractResponse.answerおよびEvent.additionalDetailsで柔軟なキーと値のデータを許可 (box/box-openapi#556) (#1147) (c41a44… # Box Windows SDK v10.1.0のリリース ### バグ修正 - `AiExtractResponse.answer`および`Event.additionalDetails`で柔軟なキーと値のデータを許可 (box/box-openapi[#556](https://github.com/box/box-windows-sdk-v2/issues/556)) ([#1147](https://github.com/box/box-windows-sdk-v2/issues/1147)) ([`c41a444`](https://github.com/box/box-windows-sdk-v2/commit/c41a4449a27be4484f986c3260950ae863c1285c)) - コラボレーション更新の`role`パラメータを任意化 (box/box-openapi[#557](https://github.com/box/box-windows-sdk-v2/issues/557)) ([#1156](https://github.com/box/box-windows-sdk-v2/issues/1156)) ([`8247918`](https://github.com/box/box-windows-sdk-v2/commit/824791817bd4c65770f2ef65bb7b0eb3b48b892b)) ### 新機能と機能強化 - オブジェクト値の逆シリアル化でディクショナリを処理 (box/box-codegen[#850](https://github.com/box/box-windows-sdk-v2/issues/850)) ([#1144](https://github.com/box/box-windows-sdk-v2/issues/1144)) ([`611b474`](https://github.com/box/box-windows-sdk-v2/commit/611b47424ff8773b9aabfb772a65f0ebca754e9e)) **Source:** [https://ja.developer.box.com/changelog/2025-10-06-box-windows-sdk-v1010-released](https://ja.developer.box.com/changelog/2025-10-06-box-windows-sdk-v1010-released) --- ### Box Windows SDK `v10.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v10.2.0のリリース 新機能と機能強化 アーカイブAPIをサポート (box/box-codegen#865) (#1266) (bca0473) Enterprise構成の取得APIをサポート (box/box-openapi#55… # Box Windows SDK v10.2.0のリリース ### 新機能と機能強化 - アーカイブAPIをサポート (box/box-codegen[#865](https://github.com/box/box-windows-sdk-v2/issues/865)) ([#1266](https://github.com/box/box-windows-sdk-v2/issues/1266)) ([`bca0473`](https://github.com/box/box-windows-sdk-v2/commit/bca0473d9ff02f286f3face267a30c2ab17d5b7b)) - Enterprise構成の取得APIをサポート (box/box-openapi[#559](https://github.com/box/box-windows-sdk-v2/issues/559)) ([#1198](https://github.com/box/box-windows-sdk-v2/issues/1198)) ([`426aaed`](https://github.com/box/box-windows-sdk-v2/commit/426aaed8418baf6cbd31dbe884aa91ce9bb7ef52)) - .NETルートプロジェクトをパックする際に`pdb`ファイルを含める (box/box-codegen[#859](https://github.com/box/box-windows-sdk-v2/issues/859)) ([#1169](https://github.com/box/box-windows-sdk-v2/issues/1169)) ([`8b7e7c8`](https://github.com/box/box-windows-sdk-v2/commit/8b7e7c89f9f533ee09a8c096afd141abbbc72080)) - リクエストの再試行に生成された`RetryStrategy`を使用 (box/box-codegen[#872](https://github.com/box/box-windows-sdk-v2/issues/872)) ([#1232](https://github.com/box/box-windows-sdk-v2/issues/1232)) ([`5567fef`](https://github.com/box/box-windows-sdk-v2/commit/5567feff459b91e7b018bda5def60ad45548599f)) **Source:** [https://ja.developer.box.com/changelog/2025-11-19-box-windows-sdk-v1020-released](https://ja.developer.box.com/changelog/2025-11-19-box-windows-sdk-v1020-released) --- ### Box Windows SDK `v10.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v10.3.0のリリース バグ修正 Dotnetの文字列拡張を修正 (box/box-codegen#899) (#1307) (8c46af4) 新機能と機能強化 DotnetでLong pollingイベントをサポート (box/box… # Box Windows SDK v10.3.0のリリース ### バグ修正 - Dotnetの文字列拡張を修正 (box/box-codegen[#899](https://github.com/box/box-windows-sdk-v2/issues/899)) ([#1307](https://github.com/box/box-windows-sdk-v2/issues/1307)) ([`8c46af4`](https://github.com/box/box-windows-sdk-v2/commit/8c46af45398c2002b5de8475672923bac524e4d1)) ### 新機能と機能強化 - DotnetでLong pollingイベントをサポート (box/box-codegen[#893](https://github.com/box/box-windows-sdk-v2/issues/893)) ([#1298](https://github.com/box/box-windows-sdk-v2/issues/1298)) ([`e35cd67`](https://github.com/box/box-windows-sdk-v2/commit/e35cd67fe29d9af969ac88dee30896303d4fdc79)) - 新しい署名リクエストのメタデータをサポート (box/box-openapi[#565](https://github.com/box/box-windows-sdk-v2/issues/565)) ([#1294](https://github.com/box/box-windows-sdk-v2/issues/1294)) ([`da19f7c`](https://github.com/box/box-windows-sdk-v2/commit/da19f7cdd4df6537acec50463330944e9d6d4632)) **Source:** [https://ja.developer.box.com/changelog/2025-12-08-box-windows-sdk-v1030-released](https://ja.developer.box.com/changelog/2025-12-08-box-windows-sdk-v1030-released) --- ### Box Windows SDK `v10.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v10.4.0のリリース バグ修正 Retry-Afterヘッダーがない場合のRetryAfter関数を修正 (box/box-codegen#903) (#1320) (5030d1c) 重複した省略可能なタグを削除 (box/box… # Box Windows SDK v10.4.0のリリース ### バグ修正 - Retry-Afterヘッダーがない場合の`RetryAfter`関数を修正 (box/box-codegen[#903](https://github.com/box/box-windows-sdk-v2/issues/903)) ([#1320](https://github.com/box/box-windows-sdk-v2/issues/1320)) ([`5030d1c`](https://github.com/box/box-windows-sdk-v2/commit/5030d1c5747afd8f85a54fcccf5695ca5f3ea836)) - 重複した省略可能なタグを削除 (box/box-codegen[#898](https://github.com/box/box-windows-sdk-v2/issues/898)) ([#1312](https://github.com/box/box-windows-sdk-v2/issues/1312)) ([`17b2851`](https://github.com/box/box-windows-sdk-v2/commit/17b285197cf276870ec2f3f881e4e03b28d915cc)) ### 新機能と機能強化 - AI抽出から`confidence_score`と`include_confidence_score`を削除 (box/box-openapi[#567](https://github.com/box/box-windows-sdk-v2/issues/567)) ([#1315](https://github.com/box/box-windows-sdk-v2/issues/1315)) ([`b4af239`](https://github.com/box/box-windows-sdk-v2/commit/b4af2395e45a9a94083e689ff8c30c2c22bda669)) **Source:** [https://ja.developer.box.com/changelog/2025-12-12-box-windows-sdk-v1040-released](https://ja.developer.box.com/changelog/2025-12-12-box-windows-sdk-v1040-released) --- ### Box Windows SDK `v3.24.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v3.24.0のリリース 詳細については、変更ログを参照してください。 コミット: https://github.com/box/box-windows-sdk-v2/compare/v3.23.0...v3.24.0 nuget.org… # Box Windows SDK v3.24.0のリリース 詳細については、[変更ログ](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3240-2020-07-21)を参照してください。 コミット: [https://github.com/box/box-windows-sdk-v2/compare/v3.23.0...v3.24.0](https://github.com/box/box-windows-sdk-v2/compare/v3.23.0...v3.24.0) [`nuget.org/packages/Box.V2/3.24.0`](https://www.nuget.org/packages/Box.V2/3.24.0) [`nuget.org/packages/Box.V2.Core/3.24.0`](https://www.nuget.org/packages/Box.V2.Core/3.24.0) **Source:** [https://ja.developer.box.com/changelog/2020-07-21-box-windows-sdk-v3240-released](https://ja.developer.box.com/changelog/2020-07-21-box-windows-sdk-v3240-released) --- ### Box Windows SDK `v3.25.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v3.25.0のリリース 3.25.0 [2020年10月19日][2020-10-19] 新機能と機能強化: グループ取得時のフィルタのサポートを追加 (#703) 圧縮機能を追加 (#70… # Box Windows SDK v3.25.0のリリース ## 3.25.0 [2020年10月19日][2020-10-19] **新機能と機能強化:** - グループ取得時のフィルタのサポートを追加 ([#703](https://github.com/box/box-windows-sdk-v2/issues/703)) - 圧縮機能を追加 ([#700](https://github.com/box/box-windows-sdk-v2/issues/700)) - オーバーロードされた`ExecuteMetadataQueryAsync()`メソッドの1つを廃止 ([#699](https://github.com/box/box-windows-sdk-v2/issues/699)) - メタデータテンプレートの`copyInstanceOnItemCopy`フィールドのサポートを追加 ([#698](https://github.com/box/box-windows-sdk-v2/issues/698)) **バグ修正:** - JWT認証の自動再試行に関するバグを修正 ([#697](https://github.com/box/box-windows-sdk-v2/issues/697)) [`www.nuget.org/packages/Box.V2/3.25.0`](https://www.nuget.org/packages/Box.V2/3.25.0) [`www.nuget.org/packages/Box.V2.Core/3.25.0`](https://www.nuget.org/packages/Box.V2.Core/3.25.0) **Source:** [https://ja.developer.box.com/changelog/2020-10-19-box-windows-sdk-v3250-released](https://ja.developer.box.com/changelog/2020-10-19-box-windows-sdk-v3250-released) --- ### Box Windows SDK `v4.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v4.0.0のリリース 重要な変更: BoxClientおよびマネージャのインターフェースを抽出し、テスタビリティを改善 (#603) BoxConfigBuilderを追加し、BoxConfigを変更不可に設定 (#73… # Box Windows SDK v4.0.0のリリース **重要な変更:** - BoxClientおよびマネージャのインターフェースを抽出し、テスタビリティを改善 ([#603](https://github.com/box/box-windows-sdk-v2/pull/603)) - BoxConfigBuilderを追加し、BoxConfigを変更不可に設定 ([#737](https://github.com/box/box-windows-sdk-v2/pull/737)) - 非同期メソッドからタスクを公開 ([#742](https://github.com/box/box-windows-sdk-v2/pull/742)) - DateTimeの代わりにDateTimeOffsetを使用 ([#749](https://github.com/box/box-windows-sdk-v2/pull/749)) - 返された例外を修正 ([#753](https://github.com/box/box-windows-sdk-v2/pull/753)) - .NET Standardを2.0にアップグレード ([#755](https://github.com/box/box-windows-sdk-v2/pull/755)) **新機能と機能強化:** - 割り当てのリテンションの対象となるファイルおよびファイルバージョンを取得する機能を追加 ([#734](https://github.com/box/box-windows-sdk-v2/pull/734)) - `Folder`の更新のために`is_collaboration_restricted_to_enterprise`フラグのサポートを追加 ([#732](https://github.com/box/box-windows-sdk-v2/pull/732)) - 不適切な用語の変更 ([#738](https://github.com/box/box-windows-sdk-v2/pull/738)) - サービス利用規約のユーザーステータスの作成用に使いやすくなった新しいメソッドを追加 ([#740](https://github.com/box/box-windows-sdk-v2/pull/740)) - ごみ箱内の項目を取得する際に並べ替えと方向のパラメータを渡すことを許可 ([#754](https://github.com/box/box-windows-sdk-v2/pull/754)) - タスクのcompletion_ruleフィールドのサポートを追加 ([#758](https://github.com/box/box-windows-sdk-v2/pull/758)) - BoxSign APIのサポートを追加 ([#765](https://github.com/box/box-windows-sdk-v2/pull/765)) **バグ修正:** - アップロード時の`Cannot access a closed Stream.Request`例外を修正 ([#739](https://github.com/box/box-windows-sdk-v2/pull/739)) ([#757](https://github.com/box/box-windows-sdk-v2/pull/757)) [https://www.nuget.org/packages/Box.V2/4.0.0](https://www.nuget.org/packages/Box.V2/4.0.0) [https://www.nuget.org/packages/Box.V2.Core/4.0.0](https://www.nuget.org/packages/Box.V2.Core/4.0.0) **Source:** [https://ja.developer.box.com/changelog/2021-11-02-box-windows-sdk-v400-released](https://ja.developer.box.com/changelog/2021-11-02-box-windows-sdk-v400-released) --- ### Box Windows SDK `v4.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v4.1.0のリリース バグ修正: デッドロックの防止を待機中に欠落しているconfigureAwait(false) を追加 (#775) (b16267e) 新機能と機能強化: BoxClient用に設定可能なTimeoutを追加 (#77… # Box Windows SDK v4.1.0のリリース **バグ修正:** - デッドロックの防止を待機中に欠落している`configureAwait`(false) を追加 ([#775](https://github.com/box/box-windows-sdk-v2/issues/775)) ([`b16267e`](https://github.com/box/box-windows-sdk-v2/commit/b16267e8f3dca5396e87be660e30a1e9405d8139)) **新機能と機能強化:** - `BoxClient`用に設定可能な`Timeout`を追加 ([#779](https://github.com/box/box-windows-sdk-v2/issues/779)) ([`ac842ed`](https://github.com/box/box-windows-sdk-v2/commit/ac842ed4ba1a2dfe499706524441bc6ae3b3c192)) - ファイルリクエストAPIを追加 ([#777](https://github.com/box/box-windows-sdk-v2/issues/777)) ([`1098f75`](https://github.com/box/box-windows-sdk-v2/commit/1098f75983e2d784521f13b8d53df0e55d03203b)) - `vanity_name`を`SharedLink`に追加 ([#782](https://github.com/box/box-windows-sdk-v2/issues/782)) ([`00a1e26`](https://github.com/box/box-windows-sdk-v2/commit/00a1e265569d76c2c9593aa259202d7febef629c)) [https://www.nuget.org/packages/Box.V2/4.1.0](https://www.nuget.org/packages/Box.V2/4.1.0) [https://www.nuget.org/packages/Box.V2.Core/4.1.0](https://www.nuget.org/packages/Box.V2.Core/4.1.0) **Source:** [https://ja.developer.box.com/changelog/2021-12-14-box-windows-sdk-v410-released](https://ja.developer.box.com/changelog/2021-12-14-box-windows-sdk-v410-released) --- ### Box Windows SDK `v4.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v4.2.0のリリース バグ修正: 企業からユーザーをロールアウトしたときに正しくnullを渡す (#792) (c85c573) BoxAuthenticationFailedExceptionの作成により例外がスローされなくなる (#79… # Box Windows SDK v4.2.0のリリース **バグ修正:** - 企業からユーザーをロールアウトしたときに正しくnullを渡す ([#792](https://github.com/box/box-windows-sdk-v2/issues/792)) ([`c85c573`](https://github.com/box/box-windows-sdk-v2/commit/c85c5735865b7dd97ffa1428a8f57d2edff6811b)) - `BoxAuthenticationFailedException`の作成により例外がスローされなくなる ([#790](https://github.com/box/box-windows-sdk-v2/issues/790)) ([`55a706e`](https://github.com/box/box-windows-sdk-v2/commit/55a706e4091271aa55208a260b2f4f96e1527698)) - `AutoPaginate`のnull引数の例外 ([#666](https://github.com/box/box-windows-sdk-v2/issues/666)) ([`c61f08c`](https://github.com/box/box-windows-sdk-v2/commit/c61f08cc02d5c95ff71ef700e97393a0dc3dc890)) **新機能と機能強化:** - `admin_logs_streaming`のサポートを追加 ([#797](https://github.com/box/box-windows-sdk-v2/issues/797)) ([`a775e1e`](https://github.com/box/box-windows-sdk-v2/commit/a775e1e5c7696a1e5f82b5dc7edbed8eb09f640d)) - クライアント資格情報許可の`auth`のサポートを追加 ([#799](https://github.com/box/box-windows-sdk-v2/issues/799)) ([`b8a64ca`](https://github.com/box/box-windows-sdk-v2/commit/b8a64ca3887298feccef5185f6bfec4c3771b5a9)) - `disposition_at`フィールドをファイルオブジェクトに追加 ([#793](https://github.com/box/box-windows-sdk-v2/issues/793)) ([`2766a91`](https://github.com/box/box-windows-sdk-v2/commit/2766a914fad1eb40371cd4430b3450360088b331)) - `BoxConfig`で`auth`トークンの`uri`を設定する可能性を追加 ([#794](https://github.com/box/box-windows-sdk-v2/issues/794)) ([`ae8cd8b`](https://github.com/box/box-windows-sdk-v2/commit/ae8cd8b91dd91b8a786e53ff5b3501d2700686a4)) - `ExecuteMetadataQuery`の`index_name`を廃止 ([#800](https://github.com/box/box-windows-sdk-v2/issues/800)) ([`6a6a0e4`](https://github.com/box/box-windows-sdk-v2/commit/6a6a0e4a0e41ec70ec33acacba00bee6c7ee881f)) [https://www.nuget.org/packages/Box.V2/4.2.0](https://www.nuget.org/packages/Box.V2/4.2.0) [https://www.nuget.org/packages/Box.V2.Core/4.2.0](https://www.nuget.org/packages/Box.V2.Core/4.2.0) **Source:** [https://ja.developer.box.com/changelog/2022-02-10-box-windows-sdk-v420-released](https://ja.developer.box.com/changelog/2022-02-10-box-windows-sdk-v420-released) --- ### Box Windows SDK `v4.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v4.3.0のリリース 新機能と機能強化: Coreプロジェクト向けにSourceLinkのサポートを追加 (#795) (a9cbede) バグ修正: 複数の場所で文字列解析に不足している列挙型を追加 (#813) (e37028… # Box Windows SDK v4.3.0のリリース **新機能と機能強化:** - Coreプロジェクト向けに`SourceLink`のサポートを追加 ([#795](https://github.com/box/box-windows-sdk-v2/issues/795)) ([`a9cbede`](https://github.com/box/box-windows-sdk-v2/commit/a9cbedece2ffb4f832be880bebf35b715c9cb28b)) **バグ修正:** - 複数の場所で文字列解析に不足している列挙型を追加 ([#813](https://github.com/box/box-windows-sdk-v2/issues/813)) ([`e370282`](https://github.com/box/box-windows-sdk-v2/commit/e3702826216132dfe1fb061af95a8d9700f114d4)) - セッションを使用して新しいファイルバージョンをアップロードする場合に適切にレスポンスをキャスト ([#810](https://github.com/box/box-windows-sdk-v2/issues/810)) ([`73d877f`](https://github.com/box/box-windows-sdk-v2/commit/73d877ff679b5999ea50cdfa68f14b0e2169ea65)) [https://www.nuget.org/packages/Box.V2/4.3.0](https://www.nuget.org/packages/Box.V2/4.3.0) [https://www.nuget.org/packages/Box.V2.Core/4.3.0](https://www.nuget.org/packages/Box.V2.Core/4.3.0) **Source:** [https://ja.developer.box.com/changelog/2022-04-01-box-windows-sdk-v430-released](https://ja.developer.box.com/changelog/2022-04-01-box-windows-sdk-v430-released) --- ### Box Windows SDK `v4.3.1`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v4.3.1のリリース バグ修正: ベースurlsの使用を簡素化 (#815) (f8e7344) https://www.nuget.org/packages/Box.V2/4.3.1 https://www.nuget.org/packages… # Box Windows SDK v4.3.1のリリース **バグ修正:** - ベース`urls`の使用を簡素化 ([#815](https://github.com/box/box-windows-sdk-v2/issues/815)) ([`f8e7344`](https://github.com/box/box-windows-sdk-v2/commit/f8e73447afa5c0a893c3c4ace922fc360a376f66)) [https://www.nuget.org/packages/Box.V2/4.3.1](https://www.nuget.org/packages/Box.V2/4.3.1) [https://www.nuget.org/packages/Box.V2.Core/4.3.1](https://www.nuget.org/packages/Box.V2.Core/4.3.1) **Source:** [https://ja.developer.box.com/changelog/2022-04-19-box-windows-sdk-v431-released](https://ja.developer.box.com/changelog/2022-04-19-box-windows-sdk-v431-released) --- ### Box Windows SDK `v4.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v4.4.0のリリース 新機能と機能強化: SharedLinkにcan_editフィードを追加 (#831) (e0d4197) version_numberをBoxFileVersionに追加 (#820) (f174358) アバターAPI… # Box Windows SDK v4.4.0のリリース **新機能と機能強化:** - `SharedLink`に`can_edit`フィードを追加 ([#831](https://github.com/box/box-windows-sdk-v2/issues/831)) ([`e0d4197`](https://github.com/box/box-windows-sdk-v2/commit/e0d4197070db0dbd947f4a51a6bbb1e01c0b0cdf)) - `version_number`を`BoxFileVersion`に追加 ([#820](https://github.com/box/box-windows-sdk-v2/issues/820)) ([`f174358`](https://github.com/box/box-windows-sdk-v2/commit/f174358973caefc9262df480208341fd8233dc7f)) - アバターAPIにアップロードと削除のサポートを追加 ([#829](https://github.com/box/box-windows-sdk-v2/issues/829)) ([`4dcb84a`](https://github.com/box/box-windows-sdk-v2/commit/4dcb84ade78d6bd0bc621ff2ed7f5f886486858a)) **バグ修正:** - `BoxAPIException`オブジェクトの初期化を修正 ([#828](https://github.com/box/box-windows-sdk-v2/issues/828)) ([`a298f01`](https://github.com/box/box-windows-sdk-v2/commit/a298f01187f84200825ec6ed4748fe8bbd717d11)) - 例外のレスポンスを適切に破棄 ([#819](https://github.com/box/box-windows-sdk-v2/issues/819)) ([`8415bd3`](https://github.com/box/box-windows-sdk-v2/commit/8415bd3dbe42910b99f99535247a26f8d8e645c1)) [https://www.nuget.org/packages/Box.V2/4.4.0](https://www.nuget.org/packages/Box.V2/4.4.0) [https://www.nuget.org/packages/Box.V2.Core/4.4.0](https://www.nuget.org/packages/Box.V2.Core/4.4.0) **Source:** [https://ja.developer.box.com/changelog/2022-06-14-box-windows-sdk-v440-released](https://ja.developer.box.com/changelog/2022-06-14-box-windows-sdk-v440-released) --- ### Box Windows SDK `v4.5.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v4.5.0のリリース 新機能と機能強化: 署名リクエストにcontent-typeフィールドを追加 (#850) (054d3e1) BoxSharedLinkでeffective_accessを公開 #843 (d84ddd… # Box Windows SDK v4.5.0のリリース **新機能と機能強化:** - 署名リクエストに`content-type`フィールドを追加 ([#850](https://github.com/box/box-windows-sdk-v2/issues/850)) ([`054d3e1`](https://github.com/box/box-windows-sdk-v2/commit/054d3e1a5f44b6a4a0292e8f9444266b2de0fff0)) - `BoxSharedLink`で`effective_access`を公開 [#843](https://github.com/box/box-windows-sdk-v2/issues/843) ([`d84ddd4`](https://github.com/box/box-windows-sdk-v2/commit/d84ddd48aac489ecdd1d9dc740a7672cb064b0ca)) **バグ修正:** - アセンブリから`runtime`バージョンを取得できない場合のnull参照の例外を修正 ([#851](https://github.com/box/box-windows-sdk-v2/issues/851)) ([`77046fb`](https://github.com/box/box-windows-sdk-v2/commit/77046fb0c1ce80b6e7e2dc30058ed275e46e990c)) - ファイルレプリゼンテーションで無限再試行を指数バックオフ戦略に置換 ([#835](https://github.com/box/box-windows-sdk-v2/issues/835)) ([`f2a5713`](https://github.com/box/box-windows-sdk-v2/commit/f2a57136078de8b1fc59ec2c4a9e98c062d9d19b)) [https://www.nuget.org/packages/Box.V2/4.5.0](https://www.nuget.org/packages/Box.V2/4.5.0) [https://www.nuget.org/packages/Box.V2.Core/4.5.0](https://www.nuget.org/packages/Box.V2.Core/4.5.0) **Source:** [https://ja.developer.box.com/changelog/2022-08-24-box-windows-sdk-v450-released](https://ja.developer.box.com/changelog/2022-08-24-box-windows-sdk-v450-released) --- ### Box Windows SDK `v4.6.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v4.6.0のリリース 新機能と機能強化: 署名リクエストにredirect_urlとdeclined_redirect_urlを追加 (#853) (5ef2f1… # Box Windows SDK v4.6.0のリリース **新機能と機能強化:** - 署名リクエストに`redirect_url`と`declined_redirect_url`を追加 ([#853](https://github.com/box/box-windows-sdk-v2/issues/853)) ([`5ef2f18`](https://github.com/box/box-windows-sdk-v2/commit/5ef2f18985d8c3b8e7c0cdba5709785bfb1d5f34)) - 変更可能リテンションポリシーのサポートを追加し、リテンションポリシー割り当ての削除を有効化 ([#856](https://github.com/box/box-windows-sdk-v2/issues/856)) ([`564904f`](https://github.com/box/box-windows-sdk-v2/commit/564904fa2ce0b1881a2f07b80cc3bb3e648310d0)) [https://www.nuget.org/packages/Box.V2/4.6.0](https://www.nuget.org/packages/Box.V2/4.6.0) [https://www.nuget.org/packages/Box.V2.Core/4.6.0](https://www.nuget.org/packages/Box.V2.Core/4.6.0) **Source:** [https://ja.developer.box.com/changelog/2022-10-18-box-windows-sdk-v460-released](https://ja.developer.box.com/changelog/2022-10-18-box-windows-sdk-v460-released) --- ### Box Windows SDK `v5.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.0.0のリリース ⚠ 重大な変更 .NET Frameworkを4.6.2にアップグレード (#881) 非推奨となったメソッドを削除 (#881) use_indexリファレンスを削除 (#88… # Box Windows SDK v5.0.0のリリース ⚠ 重大な変更 - .NET Frameworkを4.6.2にアップグレード ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) - 非推奨となったメソッドを削除 ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) - `use_index`リファレンスを削除 ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) - `GetFileVersionsUnderRetentionForAssignmentAsync`から適切なオブジェクトが戻されるよう修正 ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) **新機能と機能強化:** - .NET Frameworkを4.6.2にアップグレード ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([`f1989aa`](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569))、[#863](https://github.com/box/box-windows-sdk-v2/issues/863)をクローズ - 非推奨となったメソッドを削除 ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([`f1989aa`](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569))、[#874](https://github.com/box/box-windows-sdk-v2/issues/874)をクローズ - `use_index`リファレンスを削除 ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([`f1989aa`](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569))、[#870](https://github.com/box/box-windows-sdk-v2/issues/870)をクローズ **バグ修正:** - `IBoxFilesManager#ViewVersionsAsync`にページネーションオプションを追加 ([#869](https://github.com/box/box-windows-sdk-v2/issues/869)) ([`2324495`](https://github.com/box/box-windows-sdk-v2/commit/232449531440227a0c8b3489ceda813fe4f4a73f))、[#866](https://github.com/box/box-windows-sdk-v2/issues/866)をクローズ - `GetFileVersionsUnderRetentionForAssignmentAsync`から適切なオブジェクトが戻されるよう修正 ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([`f1989aa`](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569))、[#875](https://github.com/box/box-windows-sdk-v2/issues/875)をクローズ [https://www.nuget.org/packages/Box.V2/5.0.0](https://www.nuget.org/packages/Box.V2/5.0.0) [https://www.nuget.org/packages/Box.V2.Core/5.0.0](https://www.nuget.org/packages/Box.V2.Core/5.0.0) **Source:** [https://ja.developer.box.com/changelog/2023-01-12-box-windows-sdk-v500-released](https://ja.developer.box.com/changelog/2023-01-12-box-windows-sdk-v500-released) --- ### Box Windows SDK `v5.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.1.0のリリース 新機能と機能強化: BoxCCGAuthにユーザークライアントと管理者クライアントのイニシャルトークンを使用しないFactory Methodを追加 (#883) (c1337fc) https://www.nuget… # Box Windows SDK v5.1.0のリリース **新機能と機能強化:** - `BoxCCGAuth`にユーザークライアントと管理者クライアントのイニシャルトークンを使用しないFactory Methodを追加 ([#883](https://github.com/box/box-windows-sdk-v2/issues/883)) ([`c1337fc`](https://github.com/box/box-windows-sdk-v2/commit/c1337fc9d765bf7d4bc1757ea832bec92a602f76)) [https://www.nuget.org/packages/Box.V2/5.1.0](https://www.nuget.org/packages/Box.V2/5.1.0) [https://www.nuget.org/packages/Box.V2.Core/5.1.0](https://www.nuget.org/packages/Box.V2.Core/5.1.0) **Source:** [https://ja.developer.box.com/changelog/2023-01-17-box-windows-sdk-v510-released](https://ja.developer.box.com/changelog/2023-01-17-box-windows-sdk-v510-released) --- ### Box Windows SDK `v5.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.2.0のリリース 新機能と機能強化: IdをMetadataTemplateFieldに追加 (#890) (b7fe214) start_date_fieldとdescriptionをリテンションポリシーに追加 (#888) (100b… # Box Windows SDK v5.2.0のリリース **新機能と機能強化:** - `Id`を`MetadataTemplateField`に追加 ([#890](https://github.com/box/box-windows-sdk-v2/issues/890)) ([`b7fe214`](https://github.com/box/box-windows-sdk-v2/commit/b7fe2149e1a0ade8573b497b7bb36e9f3c4f4a82)) - `start_date_field`と`description`をリテンションポリシーに追加 ([#888](https://github.com/box/box-windows-sdk-v2/issues/888)) ([`100b722`](https://github.com/box/box-windows-sdk-v2/commit/100b722ce4909395c00b527677564f37a61ec2cb)) - 設定可能な`JWTAudience`クレームを追加 ([#897](https://github.com/box/box-windows-sdk-v2/issues/897)) ([`50219fd`](https://github.com/box/box-windows-sdk-v2/commit/50219fdfd553d6335b6f0b4341719b09680c4ba0)) - `GetFolderItemsAsync`に共有リンクのサポートを追加 ([#892](https://github.com/box/box-windows-sdk-v2/issues/892)) ([`0eba85c`](https://github.com/box/box-windows-sdk-v2/commit/0eba85c693763472c51fe81cbc43222305e9eefb)) **バグ修正:** - `JWT`クレームで`aud`フィールドの固定値を使用 ([#896](https://github.com/box/box-windows-sdk-v2/issues/896)) ([`8c9982d`](https://github.com/box/box-windows-sdk-v2/commit/8c9982d160ec4806c796ee2621b1811232ea59c1)) [https://www.nuget.org/packages/Box.V2/5.2.0](https://www.nuget.org/packages/Box.V2/5.2.0) [https://www.nuget.org/packages/Box.V2.Core/5.2.0](https://www.nuget.org/packages/Box.V2.Core/5.2.0) **Source:** [https://ja.developer.box.com/changelog/2023-03-14-box-windows-sdk-v520-released](https://ja.developer.box.com/changelog/2023-03-14-box-windows-sdk-v520-released) --- ### Box Windows SDK `v5.2.1`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.2.1のリリース バグ修正: ユーザーエージェントヘッダーを取得する際にすべての例外をキャッチ (#901) (75d8874) https://www.nuget.org/packages/Box.V2/5.2.1 https://www… # Box Windows SDK v5.2.1のリリース **バグ修正:** - ユーザーエージェントヘッダーを取得する際にすべての例外をキャッチ ([#901](https://github.com/box/box-windows-sdk-v2/issues/901)) ([`75d8874`](https://github.com/box/box-windows-sdk-v2/commit/75d887470698a5f312610cebd58be58aee7eaa9b)) [https://www.nuget.org/packages/Box.V2/5.2.1](https://www.nuget.org/packages/Box.V2/5.2.1) [https://www.nuget.org/packages/Box.V2.Core/5.2.1](https://www.nuget.org/packages/Box.V2.Core/5.2.1) **Source:** [https://ja.developer.box.com/changelog/2023-04-18-box-windows-sdk-v521-released](https://ja.developer.box.com/changelog/2023-04-18-box-windows-sdk-v521-released) --- ### Box Windows SDK `v5.2.2`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.2.2のリリース バグ修正: .NET Coreバージョンを確認できない場合の例外をキャッチ (#906) (e3be209) https://www.nuget.org/packages/Box.V2/5.2.2 https://www… # Box Windows SDK v5.2.2のリリース **バグ修正:** - .NET Coreバージョンを確認できない場合の例外をキャッチ ([#906](https://github.com/box/box-windows-sdk-v2/issues/906)) ([`e3be209`](https://github.com/box/box-windows-sdk-v2/commit/e3be209b20a5c323f547d7634663883613959180)) [https://www.nuget.org/packages/Box.V2/5.2.2](https://www.nuget.org/packages/Box.V2/5.2.2) [https://www.nuget.org/packages/Box.V2.Core/5.2.2](https://www.nuget.org/packages/Box.V2.Core/5.2.2) **Source:** [https://ja.developer.box.com/changelog/2023-05-23-box-windows-sdk-v522-released](https://ja.developer.box.com/changelog/2023-05-23-box-windows-sdk-v522-released) --- ### Box Windows SDK `v5.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.3.0のリリース 新機能と機能強化: attachmentコンテンツタイプをSignRequestSignerに追加 (#913) (ad612ff) バグ修正: 非推奨のBouncyCastleライブラリを置き換え (#909) (f00f… # Box Windows SDK v5.3.0のリリース **新機能と機能強化:** - `attachment`コンテンツタイプを`SignRequestSigner`に追加 ([#913](https://github.com/box/box-windows-sdk-v2/issues/913)) ([`ad612ff`](https://github.com/box/box-windows-sdk-v2/commit/ad612ffc7821a9ecbc180e3dbeefe16d3e397820)) **バグ修正:** - 非推奨の`BouncyCastle`ライブラリを置き換え ([#909](https://github.com/box/box-windows-sdk-v2/issues/909)) ([`f00f2af`](https://github.com/box/box-windows-sdk-v2/commit/f00f2af9c5277b42e6a62060c1b0229ecff0203e)) [https://www.nuget.org/packages/Box.V2/5.3.0](https://www.nuget.org/packages/Box.V2/5.3.0) [https://www.nuget.org/packages/Box.V2.Core/5.3.0](https://www.nuget.org/packages/Box.V2.Core/5.3.0) **Source:** [https://ja.developer.box.com/changelog/2023-09-04-box-windows-sdk-v530-released](https://ja.developer.box.com/changelog/2023-09-04-box-windows-sdk-v530-released) --- ### Box Windows SDK `v5.4.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.4.0のリリース 新機能と機能強化: Signテンプレートと新しい署名リクエストのステータスをサポート (#920) (78580fb) https://www.nuget.org/packages/Box.V2/5.4.0 https… # Box Windows SDK v5.4.0のリリース **新機能と機能強化:** - Signテンプレートと新しい署名リクエストのステータスをサポート ([#920](https://github.com/box/box-windows-sdk-v2/issues/920)) ([`78580fb`](https://github.com/box/box-windows-sdk-v2/commit/78580fbd3de553273970376b96bc28c7c5614a97)) [https://www.nuget.org/packages/Box.V2/5.4.0](https://www.nuget.org/packages/Box.V2/5.4.0) [https://www.nuget.org/packages/Box.V2.Core/5.4.0](https://www.nuget.org/packages/Box.V2.Core/5.4.0) **Source:** [https://ja.developer.box.com/changelog/2023-09-07-box-windows-sdk-v540-released](https://ja.developer.box.com/changelog/2023-09-07-box-windows-sdk-v540-released) --- ### Box Windows SDK `v5.6.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.6.0のリリース 新機能と機能強化: 署名リクエストでiframeable_embed_urlをサポート (#925) (e9de994) https://www.nuget.org/packages/Box.V2/5.6.0 https… # Box Windows SDK v5.6.0のリリース **新機能と機能強化:** - 署名リクエストで`iframeable_embed_url`をサポート ([#925](https://github.com/box/box-windows-sdk-v2/issues/925)) ([`e9de994`](https://github.com/box/box-windows-sdk-v2/commit/e9de994cea97afcc1c3bc52ddf1cc023b9ee731c)) [https://www.nuget.org/packages/Box.V2/5.6.0](https://www.nuget.org/packages/Box.V2/5.6.0) [https://www.nuget.org/packages/Box.V2.Core/5.6.0](https://www.nuget.org/packages/Box.V2.Core/5.6.0) **Source:** [https://ja.developer.box.com/changelog/2023-09-25-box-windows-sdk-v560-released](https://ja.developer.box.com/changelog/2023-09-25-box-windows-sdk-v560-released) --- ### Box Windows SDK `v5.6.1`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.6.1のリリース バグ修正: BoxConflictErrorContextInfoのオブジェクトの値をサポート (#930) (496f758) https://www.nuget.org/packages/Box.V2/5.6.… # Box Windows SDK v5.6.1のリリース **バグ修正:** - `BoxConflictErrorContextInfo`のオブジェクトの値をサポート ([#930](https://github.com/box/box-windows-sdk-v2/issues/930)) ([`496f758`](https://github.com/box/box-windows-sdk-v2/commit/496f758c3436b1834188078027b7305ca6a98fce)) [https://www.nuget.org/packages/Box.V2/5.6.1](https://www.nuget.org/packages/Box.V2/5.6.1) [https://www.nuget.org/packages/Box.V2.Core/5.6.1](https://www.nuget.org/packages/Box.V2.Core/5.6.1) **Source:** [https://ja.developer.box.com/changelog/2023-11-29-box-windows-sdk-v561-released](https://ja.developer.box.com/changelog/2023-11-29-box-windows-sdk-v561-released) --- ### Box Windows SDK `v5.7.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.7.0のリリース 新機能と機能強化: GetFolderItemsのマーカーベースのページネーションのバージョンを追加 (#936) (f877a8f) 署名リクエストの署名者グループIDをサポート (#938) (096a09… # Box Windows SDK v5.7.0のリリース **新機能と機能強化:** - `GetFolderItems`のマーカーベースのページネーションのバージョンを追加 ([#936](https://github.com/box/box-windows-sdk-v2/issues/936)) ([`f877a8f`](https://github.com/box/box-windows-sdk-v2/commit/f877a8f9105d65a3e3ca459fcbf4a1bb653ff0f3)) - 署名リクエストの署名者グループIDをサポート ([#938](https://github.com/box/box-windows-sdk-v2/issues/938)) ([`096a098`](https://github.com/box/box-windows-sdk-v2/commit/096a09805b189c591289e77ae5f8a8e6f1b466f1)) **バグ修正:** - 分類の削除に関する記述を削除 ([#932](https://github.com/box/box-windows-sdk-v2/issues/932)) ([`fb59489`](https://github.com/box/box-windows-sdk-v2/commit/fb594897850ad9daacf75cab702f3765cc7168c0)) [https://www.nuget.org/packages/Box.V2/5.7.0](https://www.nuget.org/packages/Box.V2/5.7.0) [https://www.nuget.org/packages/Box.V2.Core/5.7.0](https://www.nuget.org/packages/Box.V2.Core/5.7.0) **Source:** [https://ja.developer.box.com/changelog/2024-02-27-box-windows-sdk-v570-released](https://ja.developer.box.com/changelog/2024-02-27-box-windows-sdk-v570-released) --- ### Box Windows SDK `v5.7.1`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.7.1のリリース バグ修正: 不足していた列挙値をBoxSortByに追加 (#953) (1f89bb0)、#952をクローズ EventSourceの不足していたフィールドを追加 (#956) (138eda5) 毎回Random… # Box Windows SDK v5.7.1のリリース **バグ修正:** - 不足していた列挙値を`BoxSortBy`に追加 ([#953](https://github.com/box/box-windows-sdk-v2/issues/953)) ([`1f89bb0`](https://github.com/box/box-windows-sdk-v2/commit/1f89bb047442dcdc9045aeff1c3d6aadf61e2856))、[#952](https://github.com/box/box-windows-sdk-v2/issues/952)をクローズ - `EventSource`の不足していたフィールドを追加 ([#956](https://github.com/box/box-windows-sdk-v2/issues/956)) ([`138eda5`](https://github.com/box/box-windows-sdk-v2/commit/138eda516ad59f08968d88b04e9bb06df3c397f2)) - 毎回Randomを再作成しない ([#945](https://github.com/box/box-windows-sdk-v2/issues/945)) ([`d03b1ce`](https://github.com/box/box-windows-sdk-v2/commit/d03b1ce65d4077e2895acfce3bc286ea501669aa))、[#944](https://github.com/box/box-windows-sdk-v2/issues/944) [#944](https://github.com/box/box-windows-sdk-v2/issues/944) [#944](https://github.com/box/box-windows-sdk-v2/issues/944) [#944](https://github.com/box/box-windows-sdk-v2/issues/944)をクローズ [https://www.nuget.org/packages/Box.V2/5.7.1](https://www.nuget.org/packages/Box.V2/5.7.1) [https://www.nuget.org/packages/Box.V2.Core/5.7.1](https://www.nuget.org/packages/Box.V2.Core/5.7.1) **Source:** [https://ja.developer.box.com/changelog/2024-06-28-box-windows-sdk-v571-released](https://ja.developer.box.com/changelog/2024-06-28-box-windows-sdk-v571-released) --- ### Box Windows SDK `v5.8.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v5.8.0のリリース 新機能と機能強化: AIのサポートを追加 (#965) (a9e130a) バグ修正: System.IdentityModel.Tokens.Jwt依存関係のバージョンをv6.35.0に昇格 (#962) (6e4723… # Box Windows SDK v5.8.0のリリース **新機能と機能強化:** - AIのサポートを追加 ([#965](https://github.com/box/box-windows-sdk-v2/issues/965)) ([`a9e130a`](https://github.com/box/box-windows-sdk-v2/commit/a9e130a99cf9862f9b50178a6188b2820f9f2c32)) **バグ修正:** - `System.IdentityModel.Tokens.Jwt`依存関係のバージョンを`v6.35.0`に昇格 ([#962](https://github.com/box/box-windows-sdk-v2/issues/962)) ([`6e47237`](https://github.com/box/box-windows-sdk-v2/commit/6e472378e2fccea2db67bf5ef0eb017a31491703))、[#960](https://github.com/box/box-windows-sdk-v2/issues/960) [#961](https://github.com/box/box-windows-sdk-v2/issues/961)をクローズ - `Microsoft.AspNetCore.StaticFiles`および`System.Web`依存関係を削除 ([#964](https://github.com/box/box-windows-sdk-v2/issues/964)) ([`2c8eedc`](https://github.com/box/box-windows-sdk-v2/commit/2c8eedc91c473aca52249aad443345471ca7eafc)) [https://www.nuget.org/packages/Box.V2/5.8.0](https://www.nuget.org/packages/Box.V2/5.8.0) [https://www.nuget.org/packages/Box.V2.Core/5.8.0](https://www.nuget.org/packages/Box.V2.Core/5.8.0) **Source:** [https://ja.developer.box.com/changelog/2024-07-22-box-windows-sdk-v580-released](https://ja.developer.box.com/changelog/2024-07-22-box-windows-sdk-v580-released) --- ### Box Windows SDK `v6.0.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v6.0.0のリリース 2つのnamespaces (手動で管理されているnamespaceと生成されたnamespace) を含むBox Windows SDK V2 v… # Box Windows SDK v6.0.0のリリース 2つの`namespaces` (手動で管理されている`namespace`と生成された`namespace`) を含むBox Windows SDK V2 `v6`の新しいメジャーバージョンを導入しました。共存するこれらの`namespaces`により、最新のBox APIの機能をより簡単に使用できるようになるほか、生成されたスタンドアロンの`namespace`への段階的な移行がサポートされます。 ### 重大な変更 - Box Windows SDK V2の`v6`により、.NET 6のサポートは終了しました。Boxでは、公式の[.NETのリリースライフサイクル](https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core)に従います。日本時間2024年11月13日以降、.NET 6は公式サポート対象外となりました。.NET 6でもこのSDKをコンパイルして使用することは可能ですが、そのバージョンで発生した問題についてサポートは提供されません。 `v6`への移行の詳細については、[`v5`から`v6`への移行ガイド](https://github.com/box/box-windows-sdk-v2/blob/combined-sdk/migration-guides/from-v5-to-v6.md)を参照してください。 ### v6の新機能 このSDKバージョンでは、既存の`Box.V2` `namespace`に加え、新しい`Box.Sdk.Gen` `namespace`を導入します。これにより、以下を利用できます。 **APIの全面的なサポート** — Box APIエコシステム全体がカバーされるため、最新機能をすべて利用して、機能豊富なアプリケーションを作成できます。 **迅速なAPIの更新** — Boxの自動生成による新しいアプローチにより、数日以内にBox APIの追加が可能になり、最新の機能をすぐに利用できるようになります。 **ドキュメントへの埋め込み** — すべてのオブジェクトおよびパラメータはSDKのソースコードに直接記述され、必要な情報が1か所で保持されます。 **便利なメソッドの強化** — 認証、分割アップロード、自動再試行、再試行戦略などに対応した新しいメソッド。 ### 重要な注意事項 このバージョンにより、ご利用のコードベースを`Box.Sdk.Gen` `namespace`に段階的に移行できます。`namespaces`間の主な違いについては、[`namespace`の移行ガイド](https://github.com/box/box-windows-sdk-v2/blob/combined-sdk/migration-guides/from-box-v2-to-box-sdk-gen-namespace.md)を参照してください。 最終的には、生成された`namespace` `Box.Sdk.Gen`のみを含む`v10`に移行することをお勧めします。`v6`から`v10`に移行するには、こちらの[移行ガイド](https://github.com/box/box-windows-sdk-v2/blob/combined-sdk/migration-guides/from-v6-to-v10.md)に従います。 詳細については、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning/)を参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 **Source:** [https://ja.developer.box.com/changelog/2025-10-23-box-windows-sdk-v600-released](https://ja.developer.box.com/changelog/2025-10-23-box-windows-sdk-v600-released) --- ### Box Windows SDK `v6.1.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v6.1.0のリリース 新機能と機能強化: boxsdkgen: アーカイブAPIをサポート (box/box-codegen#865) (#1270) (307a5d4) boxsdkgen: Enterprise構成の取得API… # Box Windows SDK v6.1.0のリリース ### 新機能と機能強化: - **boxsdkgen:** アーカイブAPIをサポート (box/box-codegen[#865](https://github.com/box/box-windows-sdk-v2/issues/865)) ([#1270](https://github.com/box/box-windows-sdk-v2/issues/1270)) ([`307a5d4`](https://github.com/box/box-windows-sdk-v2/commit/307a5d43f8ba2b93ce35b3607026b4232cc92042)) - **boxsdkgen:** Enterprise構成の取得APIをサポート (box/box-openapi[#559](https://github.com/box/box-windows-sdk-v2/issues/559)) ([#1212](https://github.com/box/box-windows-sdk-v2/issues/1212)) ([`0d97d4d`](https://github.com/box/box-windows-sdk-v2/commit/0d97d4d858c4bba8b3df0d01234691294a7c8998)) - **boxsdkgen:** リクエストの再試行に生成された`RetryStrategy`を使用 (box/box-codegen[#872](https://github.com/box/box-windows-sdk-v2/issues/872)) ([#1227](https://github.com/box/box-windows-sdk-v2/issues/1227)) ([`5b42a3e`](https://github.com/box/box-windows-sdk-v2/commit/5b42a3e666751f1a1e529b875eafa8e7b0fbe930)) **Source:** [https://ja.developer.box.com/changelog/2025-11-19-box-windows-sdk-v610-released](https://ja.developer.box.com/changelog/2025-11-19-box-windows-sdk-v610-released) --- ### Box Windows SDK `v6.2.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v6.2.0のリリース 新機能と機能強化: boxsdkgen: DotnetでLong pollingイベントをサポート (box/box-codegen#893) (#1297) (d064e76) boxsdkgen… # Box Windows SDK v6.2.0のリリース ### 新機能と機能強化: - **boxsdkgen:** DotnetでLong pollingイベントをサポート (box/box-codegen[#893](https://github.com/box/box-windows-sdk-v2/issues/893)) ([#1297](https://github.com/box/box-windows-sdk-v2/issues/1297)) ([`d064e76`](https://github.com/box/box-windows-sdk-v2/commit/d064e76e5d047a4f28cad5c4aa597365e46aba26)) - **boxsdkgen:** 新しい署名リクエストのメタデータをサポート (box/box-openapi[#565](https://github.com/box/box-windows-sdk-v2/issues/565)) ([#1293](https://github.com/box/box-windows-sdk-v2/issues/1293)) ([`3efe490`](https://github.com/box/box-windows-sdk-v2/commit/3efe4903bfe94984db2b29f8ec80eb7c32cb1038)) ### バグ修正: - **boxsdkgen:** Dotnetの文字列拡張を修正 (box/box-codegen[#899](https://github.com/box/box-windows-sdk-v2/issues/899)) ([#1306](https://github.com/box/box-windows-sdk-v2/issues/1306)) ([`b97f971`](https://github.com/box/box-windows-sdk-v2/commit/b97f971dc50ffcabc3376c73ca83290ff70f0899)) **Source:** [https://ja.developer.box.com/changelog/2025-12-08-box-windows-sdk-v620-released](https://ja.developer.box.com/changelog/2025-12-08-box-windows-sdk-v620-released) --- ### Box Windows SDK `v6.3.0`のリリース **Type:** changelog | **Section:** Changelog Box Windows SDK v6.3.0のリリース 新機能と機能強化: boxsdkgen: AI抽出からconfidence_scoreとinclude_confidence_scoreを削除 (box/box-openapi#567) (#1314) (173372… # Box Windows SDK v6.3.0のリリース ### 新機能と機能強化: - **boxsdkgen:** AI抽出から`confidence_score`と`include_confidence_score`を削除 (box/box-openapi[#567](https://github.com/box/box-windows-sdk-v2/issues/567)) ([#1314](https://github.com/box/box-windows-sdk-v2/issues/1314)) ([`1733727`](https://github.com/box/box-windows-sdk-v2/commit/1733727b25c9e7b5a8995daa0e5aa5c63860e77f)) ### バグ修正: - **boxsdkgen:** Retry-Afterヘッダーがない場合の`RetryAfter`関数を修正 (box/box-codegen[#903](https://github.com/box/box-windows-sdk-v2/issues/903)) ([#1319](https://github.com/box/box-windows-sdk-v2/issues/1319)) ([`1647641`](https://github.com/box/box-windows-sdk-v2/commit/164764159a2f041253ebf0b665286a06526fb3b2)) - **boxsdkgen:** 重複した省略可能なタグを削除 (box/box-codegen[#898](https://github.com/box/box-windows-sdk-v2/issues/898)) ([#1313](https://github.com/box/box-windows-sdk-v2/issues/1313)) ([`5c3cca9`](https://github.com/box/box-windows-sdk-v2/commit/5c3cca937949a52502848d92080aa3d69f891208)) **Source:** [https://ja.developer.box.com/changelog/2025-12-12-box-windows-sdk-v630-released](https://ja.developer.box.com/changelog/2025-12-12-box-windows-sdk-v630-released) --- ### BoxとCrowdStrikeの統合 **Type:** changelog | **Section:** Changelog BoxとCrowdStrikeの統合 CrowdStrikeは、Boxと統合され、エンドポイントのアクティビティを監視するエンドポイント検出ツールです。BoxおよびBoxを利用している組織に接続しているデバイスを監視し、デバイスや接続に関するデータを分析して潜在的な脅威のアクティビティを特定します。 CrowdStrikeとの統合により、企業でトリガーできるイベントストリームのイベントが追加されます。 # BoxとCrowdStrikeの統合 CrowdStrikeは、Boxと統合され、エンドポイントのアクティビティを監視するエンドポイント検出ツールです。BoxおよびBoxを利用している組織に接続しているデバイスを監視し、デバイスや接続に関するデータを分析して潜在的な脅威のアクティビティを特定します。 CrowdStrikeとの統合により、企業でトリガーできる[イベントストリームのイベント](g://events/enterprise-events/for-enterprise#event-types)が追加されます。 例えば、CrowdStrike Falconプラットフォームで新しいデバイスが検出されると、`EDR_CROWDSTRIKE_DEVICE_DETECTED`イベントがトリガーされます。すべてのイベントを含むリストは以下のとおりです。 - `EDR_CROWDSTRIKE_DEVICE_DETECTED` - `EDR_CROWDSTRIKE_NO_BOX_TOOLS` - `EDR_CROWDSTRIKE_BOX_TOOLS_OUTDATED` - `EDR_CROWDSTRIKE_DRIVE_OUTDATED` - `EDR_CROWDSTRIKE_ACCESS_ALLOWED_NO_CROWDSTRIKE_DEVICE` - `EDR_CROWDSTRIKE_ACCESS_REVOKED` ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-06-03-crowdstrike-integration](https://ja.developer.box.com/changelog/2024-06-03-crowdstrike-integration) --- ### BoxとCrowdStrikeの統合 **Type:** changelog | **Section:** Changelog BoxとCrowdStrikeの統合 CrowdStrikeは、Boxと統合され、エンドポイントのアクティビティを監視するエンドポイント検出ツールです。BoxおよびBoxを利用している組織に接続しているデバイスを監視し、デバイスや接続に関するデータを分析して潜在的な脅威のアクティビティを特定します。 CrowdStrikeとの統合により、企業でトリガーできるイベントストリームのイベントが追加されます。 # BoxとCrowdStrikeの統合 CrowdStrikeは、Boxと統合され、エンドポイントのアクティビティを監視するエンドポイント検出ツールです。BoxおよびBoxを利用している組織に接続しているデバイスを監視し、デバイスや接続に関するデータを分析して潜在的な脅威のアクティビティを特定します。 CrowdStrikeとの統合により、企業でトリガーできる[イベントストリームのイベント](g://events/enterprise-events/for-enterprise#event-types)が追加されます。 例えば、CrowdStrike Falconプラットフォームで新しいデバイスが検出されると、`EDR_CROWDSTRIKE_DEVICE_DETECTED`イベントがトリガーされます。すべてのイベントを含むリストは以下のとおりです。 - `EDR_CROWDSTRIKE_DEVICE_DETECTED` - `EDR_CROWDSTRIKE_NO_BOX_TOOLS` - `EDR_CROWDSTRIKE_BOX_TOOLS_OUTDATED` - `EDR_CROWDSTRIKE_DRIVE_OUTDATED` - `EDR_CROWDSTRIKE_ACCESS_ALLOWED_NO_CROWDSTRIKE_DEVICE` - `EDR_CROWDSTRIKE_ACCESS_REVOKED` ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-12-05-crowdstrike-integration](https://ja.developer.box.com/changelog/2024-12-05-crowdstrike-integration) --- ### Boxの次世代SDKの公式サポート終了 **Type:** changelog | **Section:** Changelog Boxの次世代SDKの公式サポート終了 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDKをベースにしたアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 # Boxの次世代SDKの公式サポート終了 日本時間2025年9月18日をもって、Boxの次世代SDKは、個別のアーティファクトとしてサポートされなくなりました。既存のコードは、変更しなくても引き続き動作します。Boxの次世代SDKをベースにしたアプリケーションは影響なく引き続きご利用いただけますが、新機能、更新、バグ修正は提供されなくなります。 Boxでは、業界のベストプラクティスに従って、プログラミング言語ごとにBoxの次世代SDKとBoxコアSDKを1つのパッケージに統合します。これにより、移行作業がさらに容易になり、手動で管理されていたBoxコアSDKを引き続き使用している既存のアプリケーションに新機能をシームレスに追加できるようになります。 次世代SDK向けの新機能や更新を含む、今後の開発はすべて、`v10`以降のBoxコアSDKを通じて提供されます。現在、`v10`は個別のブランチとして提供されています。 詳細や移行ガイドについては、[SDKのバージョン戦略に関するドキュメント](g://tooling/sdks/sdk-versioning)を参照してください。今後の更新については、開発者向け変更ログをフォローしてください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://community.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-09-17-box-next-generation-sdk-deprecation](https://ja.developer.box.com/changelog/2025-09-17-box-next-generation-sdk-deprecation) --- ### Boxの注釈を更新 **Type:** changelog | **Section:** Changelog Boxの注釈を更新 顧客がカスタムアプリケーションで使用するBox APIを介して使用できる注釈機能に、… # Boxの注釈を更新 顧客がカスタムアプリケーションで使用するBox APIを介して使用できる注釈機能に、2つの拡張機能が加えられました。更新内容は以下のとおりです。 - **ポイント注釈モード**: ポイント注釈モードの導入により、ポイント注釈が強化されました。これにより、それぞれの注釈の後にポイント注釈アイコンを再選択しなくても、ドキュメントに注釈を追加できます。[こちら](g://embed/ui-elements)を参照してください。 - **有効期限付き埋め込みリンクによる描画注釈**: 2017年11月に描画注釈機能が追加されました。これにより、エンドユーザーがタッチ対応デバイスでタッチまたはスタイラスを使用して自由形式で描画できるようになりました。正式リリース版の注釈描画機能は、期限付き埋め込みリンクによって提供されます。Get Embed Link APIを経由して注釈を使用するユーザーは、Boxプレビューでまったく新しい表現方法を使用できるようになりました。 **Source:** [https://ja.developer.box.com/changelog/2018-03-05-update-to-box-annotations](https://ja.developer.box.com/changelog/2018-03-05-update-to-box-annotations) --- ### Boxの注釈を更新 **Type:** changelog | **Section:** Changelog Box… # Boxの注釈を更新 一部のユーザーからパフォーマンスの問題が報告されたため、重要なビジネスアプリケーションへの影響を防ぐために更新プログラムがロールバックされました。描画注釈およびポイント注釈モード機能は現在無効化されています。パフォーマンスの修正の予定やこれらの機能が再び有効になる時期は未定です。ご不便をおかけして申し訳ございません。 描画注釈機能を無効化される前に使用していたユーザーは、Edit. Documentation機能が再び有効化された時点で、作成した注釈にアクセスできるようになります。それまでの間、作成した注釈はアプリケーションデータストアに保存されますが、ビューアーには表示されません。 **Source:** [https://ja.developer.box.com/changelog/2018-03-13-update-to-box-annotations](https://ja.developer.box.com/changelog/2018-03-13-update-to-box-annotations) --- ### Boxの注釈を更新 **Type:** changelog | **Section:** Changelog Boxの注釈を更新 2018年3月5日に発表された注釈の更新が再び有効になりました。 # Boxの注釈を更新 2018年3月5日に発表された注釈の更新が再び有効になりました。 **Source:** [https://ja.developer.box.com/changelog/2018-03-28-update-to-box-annotations](https://ja.developer.box.com/changelog/2018-03-28-update-to-box-annotations) --- ### changesストリームのコラボレーションイベントの動作変更のお知らせ **Type:** changelog | **Section:** Changelog changesストリームのコラボレーションイベントの動作変更のお知らせ 本日以降、アプリケーションがBoxのイベントAPIエンドポイントからコラボレーションイベントを使用した場合のこのイベントの動作に対する変更のリリースを開始します。 この変更はCOLLAB_INVITE_COLLABORATOR、COLLAB_ADD_COLLABORATOR、COLLAB_ROLE_CHANGE、COLLAB_REMOVE_COLLABORATOR User Eventのみに影響し、クエリパラメータstream_typeがchangesに設定されます。既存のEnterprise Eventには影響しません。この新しい動作により、既存のアプリケーション内でダウンタイムが発生することはありません。また、稼働時間の中断を防ぐためのアプリケーションの変更も必要ありません。 # changesストリームのコラボレーションイベントの動作変更のお知らせ 本日以降、アプリケーションがBoxの[イベントAPIエンドポイント](r://get-events)からコラボレーションイベントを使用した場合のこのイベントの動作に対する変更のリリースを開始します。 この変更は`COLLAB_INVITE_COLLABORATOR`、`COLLAB_ADD_COLLABORATOR`、`COLLAB_ROLE_CHANGE`、`COLLAB_REMOVE_COLLABORATOR` [User Event](g://events/user-events/for-user/#event-types)のみに影響し、クエリパラメータ`stream_type`が`changes`に設定されます。既存の[Enterprise Event](g://events/enterprise-events/for-enterprise)には影響しません。この新しい動作により、既存のアプリケーション内でダウンタイムが発生することはありません。また、稼働時間の中断を防ぐためのアプリケーションの変更も必要ありません。 ## 変更の概要 これまで、`COLLAB_INVITE_COLLABORATOR`、`COLLAB_ADD_COLLABORATOR`、`COLLAB_ROLE_CHANGE`、`COLLAB_REMOVE_COLLABORATOR`タイプのイベントでは、その影響を受ける、`changes`ストリームをリッスンしているユーザーに対して通知が作成されていました。コラボレーション項目の所有者は、`all`ストリームもリッスンしていない限り、これらのイベントを受け取ることはありませんでした。 Boxでは、`all`ストリームと`changes`ストリーム間にパリティを確立することで、この相違を解消します。この新しい動作により、コラボレーションの通知は`changes`ストリームでコンテンツの所有者にも作成されるようになります。また、コラボレーションの所有者には、`all`ストリームでの表示内容に合わせて追加のイベントが表示されるようになります。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-04-06-notice-of-behavior-change-for-collab-events](https://ja.developer.box.com/changelog/2022-04-06-notice-of-behavior-change-for-collab-events) --- ### Collaboration API - `pending`ステータス **Type:** changelog | **Section:** Changelog Collaboration API - pendingステータス Collaboration APIに、pendingステータスに関する情報を追加しました。 コラボレーションがpendingステータスの場合: loginとname… # Collaboration API - pendingステータス [Collaboration API](r://collaboration)に、`pending`ステータスに関する情報を追加しました。 コラボレーションが[`pending`ステータス](e://post-collaborations)の場合: - loginとnameは空の文字列を返します。 以下のフィールドが編集されます: - `user_id`を使用してコラボレーションが作成された場合、`login`と`name`は非表示になります。 - `login`を使用してコラボレーションが作成された場合、`name`は非表示になります。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-03-28-collaborations-api-update](https://ja.developer.box.com/changelog/2023-03-28-collaborations-api-update) --- ### Developerドキュメントの更新 **Type:** changelog | **Section:** Changelog Developerドキュメントの更新 Developerドキュメントの更新およびバグ修正をいくつかリリースしました。以下をクリックして詳細を確認してください。 # Developerドキュメントの更新 Developerドキュメントの更新およびバグ修正をいくつかリリースしました。以下をクリックして詳細を確認してください。 ## 更新内容 - [メタデータクエリ](g://metadata/queries/create)の例に末尾のバックスラッシュを追加 - [メタデータクエリ](g://metadata/queries/create)の例から余分な引用符を削除 - [Shieldスマートアクセス](g://events/event-triggers/shield-alert-events/#smart-access)イベントの例を更新および追加 - `can_view_path`[フィールド](e://post-collaborations/#param-can_view_path)に注記を追加 - APIで返される適切なレスポンスを表すよう[ごみ箱](e://get-folders-id-trash)のリソースを修正 - 変更ログに`iOS`フィルタを追加 - フォルダロック[エンドポイント](r://folder-lock)に注記を追加 - [開発者トークン](g://authentication/tokens/developer-tokens)ガイドに、トークンを取り消すとWebhookが削除されるという注記を追加 - [サムネイル](e://get-files-id-thumbnail-id)エンドポイントから`94x94`オプションを削除 - イベントの[`limit`パラメータ](e://get-events/#param-limit)に注記を追加 - [ユーザーの`login`パラメータ](e://put-users-id/#param-login)に注記を追加 - PUT [`user`](e://put-users-id/#param-login)エンドポイントにApp Userを追加 - PUT [`user`](e://put-users-id/#param-login)エンドポイントに`external_app_user_id`フィールドを追加 - ドキュメント全体で`X-REF-HINTS`の参照すべてを`x-rep-hints`に変更 - Box Signの11個の[イベント](g://events/event-triggers/sign-events)すべてに新しいフィールドを追加 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-03-03-developer-documentation-updates](https://ja.developer.box.com/changelog/2022-03-03-developer-documentation-updates) --- ### DICOMの公式サポート終了のお知らせ **Type:** changelog | **Section:** Changelog DICOMの公式サポート終了のお知らせ 日本時間2022年1月1日をもちまして、Box DICOM (boxdicomスタディのアップロード、作成、プレビュー機能) の公式サポートを終了しました。 # DICOMの公式サポート終了のお知らせ 日本時間2022年1月1日をもちまして、Box DICOM (`boxdicom`スタディのアップロード、作成、プレビュー機能) の公式サポートを終了しました。 DICOMに関するDeveloperドキュメントは削除されました。詳細については、[Box製品アップデート](https://support.box.com/hc/en-us/articles/1500005724681-Box-DICOM-EOL-on-December-31-2021)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-02-02-end-of-support-for-dicom](https://ja.developer.box.com/changelog/2022-02-02-end-of-support-for-dicom) --- ### Elements `v11.0`のリリース **Type:** changelog | **Section:** Changelog Elements v11.0のリリース Box UI Elementsバージョン11.0がリリースされました。この更新には、主要な新機能の強化が3つ含まれています。 コンテンツエクスプローラのグリッドビュー。 プレビューのサイドバー内の新しいタスク機能。 プレビューのサイドバーの複数のビジュアルバージョン。 # Elements v11.0のリリース Box UI Elementsバージョン11.0がリリースされました。この更新には、主要な新機能の強化が3つ含まれています。 - コンテンツエクスプローラのグリッドビュー。 - プレビューのサイドバー内の新しいタスク機能。 - プレビューのサイドバーの複数のビジュアルバージョン。 このリリース向けに更新されたJavaScriptファイルとCSSファイルへのリンクは、[UI Elementの手動によるインストール手順](g://embed/ui-elements/installation/#manual-installation)内で入手できます。 このリリースの変更点の詳細については、次のリソースを参照してください。 - [リリースノート](https://github.com/box/box-ui-elements/releases/tag/v11.0.0) - [お知らせに関するブログ記事](https://medium.com/box-developer-blog/announcing-elements-11-88ee900125fd) **Source:** [https://ja.developer.box.com/changelog/2019-11-25-elements-v110-released](https://ja.developer.box.com/changelog/2019-11-25-elements-v110-released) --- ### Enterprise Event APIにスーパーバイザ向けの`created_by`を追加 **Type:** changelog | **Section:** Changelog Enterprise Event APIにスーパーバイザ向けのcreated_byを追加 Box管理者などのスーパーバイザまたは内部管理者ユーザーがアクションを実行する場合のEnterprise Event APIエンドポイントのレスポンスオブジェクトに小さな変更が加えられました。 # Enterprise Event APIにスーパーバイザ向けのcreated_byを追加 Box管理者などのスーパーバイザまたは内部管理者ユーザーがアクションを実行する場合の[Enterprise Event](endpoint://get-events/#request) APIエンドポイントのレスポンスオブジェクトに小さな変更が加えられました。 この更新の前は、スーパーバイザまたは内部管理者ユーザーのユーザー情報がレスポンスオブジェクトの`created_by`フィールドに表示されていました。今回の更新により、そのユーザーがスーパーバイザまたは内部管理者である場合、レスポンスに一般的なユーザー情報が表示されるようになりました。 これまで、レスポンスの`created_by`フィールドは以下のように表示されていました。 ``` "created_by": { "type": "user", "id": "2030401181", "name": "sshah+iadev", "login": "admin_sshah" } ``` 今回の更新により、同じレスポンスが以下のように表示されます。 ``` "created_by": { "type": "user", "id": "box_support", "name": "Box Support", "login": "support@box.com" } ``` **Source:** [https://ja.developer.box.com/changelog/2018-12-05-enterprise-events-api-adds-created_by-for-supervisors](https://ja.developer.box.com/changelog/2018-12-05-enterprise-events-api-adds-created_by-for-supervisors) --- ### Enterprise Eventに新しい`action_by`フィールドを追加 **Type:** changelog | **Section:** Changelog Enterprise Eventに新しいaction_byフィールドを追加 ユーザーアカウントで実行された管理者アクションをより適切に記録するために、Enterprise Eventのレスポンスデータにaction_by… # Enterprise Eventに新しいaction_byフィールドを追加 ユーザーアカウントで実行された管理者アクションをより適切に記録するために、Enterprise Eventのレスポンスデータに`action_by`ミニユーザーオブジェクトが追加されました。このフィールドには、該当する場合に、ユーザー操作を実行した管理者アカウントが表示されます。 Enterpriseの管理者の場合、これにはアカウントのID、ログイン、および名前が含まれます。Boxの内部管理者が実行したアクションの場合、これは以下のようになります。 - id: `box_support` - login: `support@box.com` - name: `Box Support` 追加のオブジェクトは、Enterpriseの[イベントオブジェクト属性](endpoint://resources/event/)内に記録されます。 **Source:** [https://ja.developer.box.com/changelog/2018-08-21-add-new-action_by-field-to-enterprise-events](https://ja.developer.box.com/changelog/2018-08-21-add-new-action_by-field-to-enterprise-events) --- ### Eventの仕様への新しいフィールドの追加 **Type:** changelog | **Section:** Changelog Eventの仕様への新しいフィールドの追加 Eventリソースの仕様に、次の新しいフィールドが含まれるようになりました。 created_at: イベントの作成日時を指定 recorded_at: データベースへのイベントの登録日時の指定 # Eventの仕様への新しいフィールドの追加 Eventリソースの仕様に、次の新しいフィールドが含まれるようになりました。 - `created_at`: イベントの作成日時を指定 - `recorded_at`: データベースへのイベントの登録日時の指定 ## 更新内容 - [Event][Event]リソースの仕様[2](r://event)に新しいフィールド`created_at`と`recorded_at`を追加しました。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-05-11-new-fields-in-event-api-ref](https://ja.developer.box.com/changelog/2022-05-11-new-fields-in-event-api-ref) --- ### Excelファイルのプレビューで注釈が利用可能に **Type:** changelog | **Section:** Changelog Excelファイルのプレビューで注釈が利用可能に 現在、注釈が有効 (showAnnotations=true) になっていても、Box UI Content Preview Elementまたは有効期限付き埋め込みリンクによる注釈機能がプレビューのExcel… # Excelファイルのプレビューで注釈が利用可能に 現在、注釈が有効 (`showAnnotations=true`) になっていても、[Box UI Content Preview Element](guide://embed/ui-elements)または有効期限付き埋め込みリンクによる注釈機能がプレビューのExcelファイル内に表示されません。 **2018年9月13日**以降、ユーザーは他のファイルタイプ(PDF、doc、PPT)と同様に、Excelファイルに注釈を付けることができます。3つの注釈タイプ(ハイライト、ポイント、描画)のすべてがサポートされます。`showAnnotations`が`true`に設定されている場合、Excelファイルの注釈が表示されます。 **Source:** [https://ja.developer.box.com/changelog/2018-09-05-annotations-available-for-excel-files-in-preview](https://ja.developer.box.com/changelog/2018-09-05-annotations-available-for-excel-files-in-preview) --- ### Java SDK `v2.10.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.10.0のリリース ユーザーのメールエイリアスを追加するためのis_confirmedパラメータ (省略可) を追加 (#499) トークン無効化のサポートを追加 (#510) メタデータテンプレートの削除 (#512) # Java SDK v2.10.0のリリース - ユーザーのメールエイリアスを追加するための`is_confirmed`パラメータ (省略可) を追加 ([#499](https://github.com/box/box-java-sdk/pull/499)) - トークン無効化のサポートを追加 ([#510](https://github.com/box/box-java-sdk/pull/510)) - メタデータテンプレートの削除 ([#512](https://github.com/box/box-java-sdk/pull/512)) **Source:** [https://ja.developer.box.com/changelog/2018-01-12-java-sdk-v2100-release](https://ja.developer.box.com/changelog/2018-01-12-java-sdk-v2100-release) --- ### Java SDK `v2.11.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.11.0のリリース 2GBを超えるファイルの分割アップロードを修正 (#531) 更新されたファイルバージョンのアップロードエンドポイントを追加し、古いメソッドを廃止 (#524) 一般的なJWTエラーを回避するためにJWT認証で変更された再試行を実行 # Java SDK v2.11.0のリリース 1. 2GBを超えるファイルの分割アップロードを修正 ([#531](https://github.com/box/box-java-sdk/pull/531)) 2. 更新されたファイルバージョンのアップロードエンドポイントを追加し、古いメソッドを廃止 ([#524](https://github.com/box/box-java-sdk/pull/524)) 3. 一般的なJWTエラーを回避するためにJWT認証で変更された再試行を実行 **Source:** [https://ja.developer.box.com/changelog/2018-01-25-java-sdk-v2110-release](https://ja.developer.box.com/changelog/2018-01-25-java-sdk-v2110-release) --- ### Java SDK `v2.12.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.12.0のリリース コラボレーション通知パラメータを修正 (#545) OAuth 2.0トークン作成イベントタイプを追加 (#533) Enterpriseへのユーザーの招待を実装 (#504) 分析用のX-Box-UAヘッダーに切り替え (#53… # Java SDK v2.12.0のリリース 1. コラボレーション通知パラメータを修正 ([#545](https://github.com/box/box-java-sdk/pull/545)) 2. OAuth 2.0トークン作成イベントタイプを追加 ([#533](https://github.com/box/box-java-sdk/pull/533)) 3. Enterpriseへのユーザーの招待を実装 ([#504](https://github.com/box/box-java-sdk/pull/504)) 4. 分析用の`X-Box-UA`ヘッダーに切り替え ([#536](https://github.com/box/box-java-sdk/pull/536)) 5. 大きいファイルのアップロード時のメモリ使用量を削減 ([#543](https://github.com/box/box-java-sdk/pull/543)) **Source:** [https://ja.developer.box.com/changelog/2018-02-01-java-sdk-v2120-release](https://ja.developer.box.com/changelog/2018-02-01-java-sdk-v2120-release) --- ### Java SDK `v2.13.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.13.0のリリース メタデータ値の処理を改善 (#553) # Java SDK v2.13.0のリリース 1. メタデータ値の処理を改善 ([#553](https://github.com/box/box-java-sdk/pull/553)) **Source:** [https://ja.developer.box.com/changelog/2018-02-08-java-sdk-v2130-release](https://ja.developer.box.com/changelog/2018-02-08-java-sdk-v2130-release) --- ### Java SDK `v2.14.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.14.0のリリース コラボレーションオブジェクトに足りないcan_view_pathプロパティを修正 (#560) 不足しているメソッドとドキュメントを追加 (#559) 項目のタグを設定するためのサポートを追加 (#554) # Java SDK v2.14.0のリリース 1. コラボレーションオブジェクトに足りない`can_view_path`プロパティを修正 ([#560](https://github.com/box/box-java-sdk/pull/560)) 2. 不足しているメソッドとドキュメントを追加 ([#559](https://github.com/box/box-java-sdk/pull/559)) 3. 項目のタグを設定するためのサポートを追加 ([#554](https://github.com/box/box-java-sdk/pull/554)) **Source:** [https://ja.developer.box.com/changelog/2018-02-15-java-sdk-v2140-release](https://ja.developer.box.com/changelog/2018-02-15-java-sdk-v2140-release) --- ### Java SDK `v2.14.1`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.14.1のリリース 指数バックオフにランダム化を追加 (#565) サポート対象時にTLSバージョン1.1以降を強制 (#548) 連続するAPIコールをEventStreamによって遅延 (#564) # Java SDK v2.14.1のリリース 1. 指数バックオフにランダム化を追加 ([#565](https://github.com/box/box-java-sdk/pull/565)) 2. サポート対象時にTLSバージョン1.1以降を強制 ([#548](https://github.com/box/box-java-sdk/pull/548)) 3. 連続するAPIコールを`EventStream`によって遅延 ([#564](https://github.com/box/box-java-sdk/pull/564)) **Source:** [https://ja.developer.box.com/changelog/2018-03-01-java-sdk-v2141-release](https://ja.developer.box.com/changelog/2018-03-01-java-sdk-v2141-release) --- ### Java SDK `v2.15.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.15.0のリリース コラボレーションフィールドの取得を許可 (#570) IDによるメタデータテンプレートの取得を実装 (#568) # Java SDK v2.15.0のリリース 1. コラボレーションフィールドの取得を許可 ([#570](https://github.com/box/box-java-sdk/pull/570)) 2. IDによるメタデータテンプレートの取得を実装 ([#568](https://github.com/box/box-java-sdk/pull/568)) **Source:** [https://ja.developer.box.com/changelog/2018-03-12-java-sdk-v2150-release](https://ja.developer.box.com/changelog/2018-03-12-java-sdk-v2150-release) --- ### Java SDK `v2.16.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.16.0のリリース JWT有効期限の間隔を調整 (#572) API接続でのカスタムヘッダーの設定を許可 (#562) JWT再試行タイムスタンプ解析を修正 (#575) ユーザー追跡コードのサポートを追加 (#487) # Java SDK v2.16.0のリリース 1. JWT有効期限の間隔を調整 ([#572](https://github.com/box/box-java-sdk/pull/572)) 2. API接続でのカスタムヘッダーの設定を許可 ([#562](https://github.com/box/box-java-sdk/pull/562)) 3. JWT再試行タイムスタンプ解析を修正 ([#575](https://github.com/box/box-java-sdk/pull/575)) 4. ユーザー追跡コードのサポートを追加 ([#487](https://github.com/box/box-java-sdk/pull/487)) **Source:** [https://ja.developer.box.com/changelog/2018-03-22-java-sdk-v2160-release](https://ja.developer.box.com/changelog/2018-03-22-java-sdk-v2160-release) --- ### Java SDK `v2.16.1`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.16.1のリリース CONTENT_ACCESSイベントタイプを追加 (#581) # Java SDK v2.16.1のリリース 1. `CONTENT_ACCESS`イベントタイプを追加 ([#581](https://github.com/box/box-java-sdk/pull/581)) **Source:** [https://ja.developer.box.com/changelog/2018-03-29-java-sdk-v2161-release](https://ja.developer.box.com/changelog/2018-03-29-java-sdk-v2161-release) --- ### Java SDK `v2.17.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.17.0のリリース メタデータ駆動のリテンションポリシーのサポートを追加 (#535) # Java SDK v2.17.0のリリース 1. メタデータ駆動のリテンションポリシーのサポートを追加 ([#535](https://github.com/box/box-java-sdk/pull/535)) **Source:** [https://ja.developer.box.com/changelog/2018-04-10-java-sdk-v2170-release](https://ja.developer.box.com/changelog/2018-04-10-java-sdk-v2170-release) --- ### Java SDK `v2.18.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.18.0のリリース エラーオブジェクト (#588) インターセプタのrequest.toString()のNPEのクイック修正 (#595) レプリゼンテーションコンテンツ取得のサポートを追加 (#583) privateKeyPassword… # Java SDK v2.18.0のリリース 1. エラーオブジェクト ([#588](https://github.com/box/box-java-sdk/pull/588)) 2. インターセプタの`request.toString()`のNPEのクイック修正 ([#595](https://github.com/box/box-java-sdk/pull/595)) 3. レプリゼンテーションコンテンツ取得のサポートを追加 ([#583](https://github.com/box/box-java-sdk/pull/583)) 4. `privateKeyPassword`が設定されていなかった`BoxConfig`コンストラクタメソッドを修正 ([#593](https://github.com/box/box-java-sdk/pull/593)) **Source:** [https://ja.developer.box.com/changelog/2018-04-30-java-sdk-v2180-release](https://ja.developer.box.com/changelog/2018-04-30-java-sdk-v2180-release) --- ### Java SDK `v2.19.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.19.0のリリース マルチゾーン (#598) BoxCollaborator.InfoにgetLogin()メソッドを追加 (#602) メタデータでのmultiSelectフィールドのサポートを追加 (#597) # Java SDK v2.19.0のリリース 1. マルチゾーン ([#598](https://github.com/box/box-java-sdk/pull/598)) 2. `BoxCollaborator.Info`に`getLogin()`メソッドを追加 ([#602](https://github.com/box/box-java-sdk/pull/602)) 3. メタデータでの`multiSelect`フィールドのサポートを追加 ([#597](https://github.com/box/box-java-sdk/pull/597)) **Source:** [https://ja.developer.box.com/changelog/2018-05-10-java-sdk-v2190-release](https://ja.developer.box.com/changelog/2018-05-10-java-sdk-v2190-release) --- ### Java SDK `v2.20.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.20.0のリリース メタデータフィールドの複数選択 (#610) 重複するas-userヘッダーのチェックを修正 (#612) # Java SDK v2.20.0のリリース 1. メタデータフィールドの複数選択 ([#610](https://github.com/box/box-java-sdk/pull/610)) 2. 重複するas-userヘッダーのチェックを修正 ([#612](https://github.com/box/box-java-sdk/pull/612)) **Source:** [https://ja.developer.box.com/changelog/2018-05-24-java-sdk-v2200-release](https://ja.developer.box.com/changelog/2018-05-24-java-sdk-v2200-release) --- ### Java SDK `v2.20.1`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.20.1のリリース レスポンス例外でJSON解析エラーを処理 (#615) uploadNewVersion()の戻りオブジェクトを修正 (#614) # Java SDK v2.20.1のリリース 1. レスポンス例外でJSON解析エラーを処理 ([#615](https://github.com/box/box-java-sdk/pull/615)) 2. `uploadNewVersion()`の戻りオブジェクトを修正 ([#614](https://github.com/box/box-java-sdk/pull/614)) **Source:** [https://ja.developer.box.com/changelog/2018-06-04-java-sdk-v2201-release](https://ja.developer.box.com/changelog/2018-06-04-java-sdk-v2201-release) --- ### Java SDK `v2.20.2`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.20.2のリリース レスポンスヘッダーで大文字と小文字の区別なし (#620) # Java SDK v2.20.2のリリース 1. レスポンスヘッダーで大文字と小文字の区別なし ([#620](https://github.com/box/box-java-sdk/pull/620)) **Source:** [https://ja.developer.box.com/changelog/2018-06-28-java-sdk-v2202-release](https://ja.developer.box.com/changelog/2018-06-28-java-sdk-v2202-release) --- ### Java SDK `v2.21.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.21.0のリリース Sharedlinkパスワード (#623) リンクを修正 (#626) # Java SDK v2.21.0のリリース 1. `Sharedlink`パスワード ([#623](https://github.com/box/box-java-sdk/pull/623)) 2. リンクを修正 ([#626](https://github.com/box/box-java-sdk/pull/626)) **Source:** [https://ja.developer.box.com/changelog/2018-07-06-java-sdk-v2210-release](https://ja.developer.box.com/changelog/2018-07-06-java-sdk-v2210-release) --- ### Java SDK `v2.22.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.22.0のリリース 別のユーザーにコンテンツを転送するためのパッチ (#632) # Java SDK v2.22.0のリリース 1. 別のユーザーにコンテンツを転送するためのパッチ ([#632](https://github.com/box/box-java-sdk/pull/632)) **Source:** [https://ja.developer.box.com/changelog/2018-08-09-java-sdk-v2220-release](https://ja.developer.box.com/changelog/2018-08-09-java-sdk-v2220-release) --- ### Java SDK `v2.23.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.23.0のリリース メタデータカスケードポリシー (#603) # Java SDK v2.23.0のリリース 1. メタデータカスケードポリシー ([#603](https://github.com/box/box-java-sdk/pull/603)) **Source:** [https://ja.developer.box.com/changelog/2018-08-23-java-sdk-v2230-release](https://ja.developer.box.com/changelog/2018-08-23-java-sdk-v2230-release) --- ### Java SDK `v2.23.1`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.23.1のリリース 多数のリクエストを発行する際に開かれるTCP接続が多すぎる問題を修正 (#646) # Java SDK v2.23.1のリリース 1. 多数のリクエストを発行する際に開かれるTCP接続が多すぎる問題を修正 ([#646](https://github.com/box/box-java-sdk/pull/646)) **Source:** [https://ja.developer.box.com/changelog/2018-09-13-java-sdk-v2231-release](https://ja.developer.box.com/changelog/2018-09-13-java-sdk-v2231-release) --- ### Java SDK `v2.23.2`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.23.2のリリース バッチヘッダーのパッチ (#649) # Java SDK v2.23.2のリリース 1. バッチヘッダーのパッチ ([#649](https://github.com/box/box-java-sdk/pull/649)) **Source:** [https://ja.developer.box.com/changelog/2018-09-27-java-sdk-v2232-release](https://ja.developer.box.com/changelog/2018-09-27-java-sdk-v2232-release) --- ### Java SDK `v2.24.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.24.0のリリース optionsオブジェクトのテストと実装を追加 (#661) BoxItemのオブジェクトタイプを公開 (#662) 接続ごとのタイムアウトを許可 (#660) 最大リクエスト数のグローバル設定を追加 (#657) is_ongoing… # Java SDK v2.24.0のリリース 1. optionsオブジェクトのテストと実装を追加 ([#661](https://github.com/box/box-java-sdk/pull/661)) 2. `BoxItem`のオブジェクトタイプを公開 ([#662](https://github.com/box/box-java-sdk/pull/662)) 3. 接続ごとのタイムアウトを許可 ([#660](https://github.com/box/box-java-sdk/pull/660)) 4. 最大リクエスト数のグローバル設定を追加 ([#657](https://github.com/box/box-java-sdk/pull/657)) 5. `is_ongoing`フィールドにオーバーロードを追加し、`is_ongoing`にgetterを追加 ([#653](https://github.com/box/box-java-sdk/pull/653)) **Source:** [https://ja.developer.box.com/changelog/2018-11-16-java-sdk-v2240-release](https://ja.developer.box.com/changelog/2018-11-16-java-sdk-v2240-release) --- ### Java SDK `v2.25.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.25.0のリリース outputstreamを介したBoxへのコンテンツストリーミングを許可。#667 # Java SDK v2.25.0のリリース 1. `outputstream`を介したBoxへのコンテンツストリーミングを許可。[#667](https://github.com/box/box-java-sdk/pull/667) **Source:** [https://ja.developer.box.com/changelog/2018-12-13-java-sdk-v2250-release](https://ja.developer.box.com/changelog/2018-12-13-java-sdk-v2250-release) --- ### Java SDK `v2.25.1`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.25.1のリリース bouncycastleとjose4jの依存関係のアップグレード (#669) # Java SDK v2.25.1のリリース 1. `bouncycastle`と`jose4j`の依存関係のアップグレード ([#669](https://github.com/box/box-java-sdk/pull/669)) **Source:** [https://ja.developer.box.com/changelog/2019-01-03-java-sdk-v2251-release](https://ja.developer.box.com/changelog/2019-01-03-java-sdk-v2251-release) --- ### Java SDK `v2.26.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.26.0のリリース 不足しているフィールドをタスクとフォルダに追加し、タスクのフィールドを取得する機能を追加 (#677) README.mdの誤字を修正 (#678) invite_emailフィールドをコラボレーションオブジェクトに追加 (#672) # Java SDK v2.26.0のリリース 1. 不足しているフィールドをタスクとフォルダに追加し、タスクのフィールドを取得する機能を追加 ([#677](https://github.com/box/box-java-sdk/pull/677)) 2. `README.md`の誤字を修正 ([#678](https://github.com/box/box-java-sdk/pull/678)) 3. `invite_email`フィールドをコラボレーションオブジェクトに追加 ([#672](https://github.com/box/box-java-sdk/pull/672)) **Source:** [https://ja.developer.box.com/changelog/2019-01-17-java-sdk-v2260-release](https://ja.developer.box.com/changelog/2019-01-17-java-sdk-v2260-release) --- ### Java SDK `v2.27.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.27.0のリリース メタデータの分類 (#671) # Java SDK v2.27.0のリリース 1. メタデータの分類 ([#671](https://github.com/box/box-java-sdk/pull/671)) **Source:** [https://ja.developer.box.com/changelog/2019-01-31-java-sdk-v2270-release](https://ja.developer.box.com/changelog/2019-01-31-java-sdk-v2270-release) --- ### Java SDK `v2.28.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.28.0のリリース トレースID付きの例外メッセージにリクエストIDを追加 (#684) ユーザーアバター機能 (#683) # Java SDK v2.28.0のリリース 1. トレースID付きの例外メッセージにリクエストIDを追加 ([#684](https://github.com/box/box-java-sdk/pull/684)) 2. ユーザーアバター機能 ([#683](https://github.com/box/box-java-sdk/pull/683)) **Source:** [https://ja.developer.box.com/changelog/2019-02-21-java-sdk-v2280-release](https://ja.developer.box.com/changelog/2019-02-21-java-sdk-v2280-release) --- ### Java SDK `v2.28.1`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.28.1のリリース BoxMetadataCascadePolicy.forceApply()のBoxAPIResponseでのレスポンスの間違ったキャスト (#685) # Java SDK v2.28.1のリリース 1. `BoxMetadataCascadePolicy.forceApply()`の`BoxAPIResponse`でのレスポンスの間違ったキャスト ([#685](https://github.com/box/box-java-sdk/pull/685)) **Source:** [https://ja.developer.box.com/changelog/2019-03-07-java-sdk-v2281-release](https://ja.developer.box.com/changelog/2019-03-07-java-sdk-v2281-release) --- ### Java SDK `v2.29.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.29.0のリリース 説明付きのファイルのアップロードのサポート (#690) 並べ替えと方向のフィールドを検索に追加 (#689) # Java SDK v2.29.0のリリース 1. 説明付きのファイルのアップロードのサポート ([#690](https://github.com/box/box-java-sdk/pull/690)) 2. 並べ替えと方向のフィールドを検索に追加 ([#689](https://github.com/box/box-java-sdk/pull/689)) **Source:** [https://ja.developer.box.com/changelog/2019-04-01-java-sdk-v2290-release](https://ja.developer.box.com/changelog/2019-04-01-java-sdk-v2290-release) --- ### Java SDK `v2.30.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.30.0のリリース action_byフィールドをBoxEventに追加 (#692) # Java SDK v2.30.0のリリース 1. `action_by`フィールドを`BoxEvent`に追加 ([#692](https://github.com/box/box-java-sdk/pull/692)) **Source:** [https://ja.developer.box.com/changelog/2019-04-04-java-sdk-v2300-release](https://ja.developer.box.com/changelog/2019-04-04-java-sdk-v2300-release) --- ### Java SDK `v2.30.1`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.30.1のリリース RFC3339タイムゾーン形式を正しく処理するように日付の解析を修正 (#693) # Java SDK v2.30.1のリリース 1. RFC3339タイムゾーン形式を正しく処理するように日付の解析を修正 ([#693](https://github.com/box/box-java-sdk/pull/693)) **Source:** [https://ja.developer.box.com/changelog/2019-04-08-java-sdk-v2301-release](https://ja.developer.box.com/changelog/2019-04-08-java-sdk-v2301-release) --- ### Java SDK `v2.31.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.31.0のリリース フォルダ項目の並べ替えのサポートを追加 (#694) # Java SDK v2.31.0のリリース 1. フォルダ項目の並べ替えのサポートを追加 ([#694](https://github.com/box/box-java-sdk/pull/694)) **Source:** [https://ja.developer.box.com/changelog/2019-04-11-java-sdk-v2310-release](https://ja.developer.box.com/changelog/2019-04-11-java-sdk-v2310-release) --- ### Java SDK `v2.32.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.32.0のリリース メタデータ設定をサポート (#697) # Java SDK v2.32.0のリリース 1. メタデータ設定をサポート ([#697](https://github.com/box/box-java-sdk/pull/697)) **Source:** [https://ja.developer.box.com/changelog/2019-04-25-java-sdk-v2320-release](https://ja.developer.box.com/changelog/2019-04-25-java-sdk-v2320-release) --- ### Java SDK `v2.33.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.33.0のリリース パーツバッファのサイズが正しいことを確認するためのテストを追加 (#703) フォルダオブジェクトでのcan_non_owners_inviteフィールドの設定を許可 (#700) # Java SDK v2.33.0のリリース 1. パーツバッファのサイズが正しいことを確認するためのテストを追加 ([#703](https://github.com/box/box-java-sdk/pull/703)) 2. フォルダオブジェクトでの`can_non_owners_invite`フィールドの設定を許可 ([#700](https://github.com/box/box-java-sdk/pull/700)) **Source:** [https://ja.developer.box.com/changelog/2019-05-23-java-sdk-v2330-release](https://ja.developer.box.com/changelog/2019-05-23-java-sdk-v2330-release) --- ### Java SDK `v2.34.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.34.0のリリース タスクのfields:アクションを追加 (#707) # Java SDK v2.34.0のリリース 1. タスクのfields:アクションを追加 ([#707](https://github.com/box/box-java-sdk/pull/707)) **Source:** [https://ja.developer.box.com/changelog/2019-06-06-java-sdk-v2340-release](https://ja.developer.box.com/changelog/2019-06-06-java-sdk-v2340-release) --- ### Java SDK `v2.35.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.35.0のリリース is_externally_ownedフィールドのサポートを追加 (#714) 古いerrorおよびerror_descriptionの例外メッセージを追加 (#710) # Java SDK v2.35.0のリリース 1. `is_externally_owned`フィールドのサポートを追加 ([#714](https://github.com/box/box-java-sdk/pull/714)) 2. 古い`error`および`error_description`の例外メッセージを追加 ([#710](https://github.com/box/box-java-sdk/pull/710)) **Source:** [https://ja.developer.box.com/changelog/2019-07-18-java-sdk-v2350-release](https://ja.developer.box.com/changelog/2019-07-18-java-sdk-v2350-release) --- ### Java SDK `v2.36.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.36.0のリリース 共有リンクに便利な機能を追加して設定を修正… (#720) ファイル、フォルダ、およびウェブリンクに足りないフィールドを追加 (#719) # Java SDK v2.36.0のリリース 1. 共有リンクに便利な機能を追加して設定を修正… ([#720](https://github.com/box/box-java-sdk/pull/720)) 2. ファイル、フォルダ、およびウェブリンクに足りないフィールドを追加 ([#719](https://github.com/box/box-java-sdk/pull/719)) **Source:** [https://ja.developer.box.com/changelog/2019-08-01-java-sdk-v2360-release](https://ja.developer.box.com/changelog/2019-08-01-java-sdk-v2360-release) --- ### Java SDK `v2.37.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.37.0のリリース BoxConfig.readFrom()に関する認証ドキュメントを改良 (#723) 複数選択メタデータの置換機能を追加 (#726) # Java SDK v2.37.0のリリース 1. `BoxConfig.readFrom()`に関する認証ドキュメントを改良 ([#723](https://github.com/box/box-java-sdk/pull/723)) 2. 複数選択メタデータの置換機能を追加 ([#726](https://github.com/box/box-java-sdk/pull/726)) **Source:** [https://ja.developer.box.com/changelog/2019-08-22-java-sdk-v2370-release](https://ja.developer.box.com/changelog/2019-08-22-java-sdk-v2370-release) --- ### Java SDK `v2.38.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.38.0のリリース フィールドtrashed_by、restored_at、restored_by、purged_atをFileVersionに追加 (#734) 分割アップロード時にファイル属性を設定 (#730) # Java SDK v2.38.0のリリース 1. フィールド`trashed_by`、`restored_at`、`restored_by`、`purged_at`を`FileVersion`に追加 ([#734](https://github.com/box/box-java-sdk/pull/734)) 2. 分割アップロード時にファイル属性を設定 ([#730](https://github.com/box/box-java-sdk/pull/730)) **Source:** [https://ja.developer.box.com/changelog/2019-09-19-java-sdk-v2380-release](https://ja.developer.box.com/changelog/2019-09-19-java-sdk-v2380-release) --- ### Java SDK `v2.39.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.39.0のリリース バッチのサポート終了 (#741) タスクcompletion_ruleのサポートを追加 (#738) # Java SDK v2.39.0のリリース 1. バッチのサポート終了 ([#741](https://github.com/box/box-java-sdk/pull/741)) 2. タスク`completion_rule`のサポートを追加 ([#738](https://github.com/box/box-java-sdk/pull/738)) **Source:** [https://ja.developer.box.com/changelog/2019-10-17-java-sdk-v2390-release](https://ja.developer.box.com/changelog/2019-10-17-java-sdk-v2390-release) --- ### Java SDK `v2.40.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.40.0のリリース comments.mdを更新 (#749) events.mdを更新 (#750) collections.mdを更新 (#748) files.mdを更新 (#747) files.mdを更新 (#746) files.md… # Java SDK v2.40.0のリリース 1. `comments.md`を更新 ([#749](https://github.com/box/box-java-sdk/pull/749)) 2. `events.md`を更新 ([#750](https://github.com/box/box-java-sdk/pull/750)) 3. `collections.md`を更新 ([#748](https://github.com/box/box-java-sdk/pull/748)) 4. `files.md`を更新 ([#747](https://github.com/box/box-java-sdk/pull/747)) 5. `files.md`を更新 ([#746](https://github.com/box/box-java-sdk/pull/746)) 6. `files.md`をタグのサムネイルコードサンプルに更新 ([#733](https://github.com/box/box-java-sdk/pull/733)) 7. `authentication.md`を更新 ([#739](https://github.com/box/box-java-sdk/pull/739)) **Source:** [https://ja.developer.box.com/changelog/2019-10-24-java-sdk-v2400-release](https://ja.developer.box.com/changelog/2019-10-24-java-sdk-v2400-release) --- ### Java SDK `v2.41.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.41.0のリリース BoxTasks Actions列挙型にcompleteフィールドの列挙型を追加 (#745) # Java SDK v2.41.0のリリース 1. `BoxTasks` Actions列挙型にcompleteフィールドの列挙型を追加 ([#745](https://github.com/box/box-java-sdk/pull/745)) **Source:** [https://ja.developer.box.com/changelog/2019-10-24-java-sdk-v2410-release](https://ja.developer.box.com/changelog/2019-10-24-java-sdk-v2410-release) --- ### Java SDK `v2.42.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.42.0のリリース SDK-1168 メタデータクエリ (#760) ユーザー取得メソッドにマーカーベースのページネーションを追加 (#759) # Java SDK v2.42.0のリリース 1. `SDK-1168` メタデータクエリ ([#760](https://github.com/box/box-java-sdk/pull/760)) 2. ユーザー取得メソッドにマーカーベースのページネーションを追加 ([#759](https://github.com/box/box-java-sdk/pull/759)) **Source:** [https://ja.developer.box.com/changelog/2019-12-17-java-sdk-v2420-release](https://ja.developer.box.com/changelog/2019-12-17-java-sdk-v2420-release) --- ### Java SDK `v2.43.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.43.0のリリース ファイルとフォルダの409以外のエラーでsetMetadataの例外をスロー (#762) # Java SDK v2.43.0のリリース 1. ファイルとフォルダの409以外のエラーで`setMetadata`の例外をスロー ([#762](https://github.com/box/box-java-sdk/pull/762)) **Source:** [https://ja.developer.box.com/changelog/2019-12-20-java-sdk-v2430-release](https://ja.developer.box.com/changelog/2019-12-20-java-sdk-v2430-release) --- ### Java SDK `v2.44.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.44.0のリリース 認証リクエストの再試行を修正 (#764) # Java SDK v2.44.0のリリース 1. 認証リクエストの再試行を修正 ([#764](https://github.com/box/box-java-sdk/pull/764)) **Source:** [https://ja.developer.box.com/changelog/2020-01-21-java-sdk-v2440-release](https://ja.developer.box.com/changelog/2020-01-21-java-sdk-v2440-release) --- ### Java SDK `v2.44.1`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.44.1のリリース Java Loggerのフォーマットのバグを修正 (#775) レスポンスの日付/時刻の解析を改善 (#772) # Java SDK v2.44.1のリリース 1. Java Loggerのフォーマットのバグを修正 ([#775](https://github.com/box/box-java-sdk/pull/775)) 2. レスポンスの日付/時刻の解析を改善 ([#772](https://github.com/box/box-java-sdk/pull/772)) **Source:** [https://ja.developer.box.com/changelog/2020-02-13-java-sdk-v2441-release](https://ja.developer.box.com/changelog/2020-02-13-java-sdk-v2441-release) --- ### Java SDK `v2.45.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.45.0のリリース 分割アップロード前の事前チェックを追加 (#782) 大きいファイルのアップロードの一部が正常にアップロードされたことを確認… (#781) ファイル名変更での予期しない切断に関するバグを修正 (#77… # Java SDK v2.45.0のリリース 1. 分割アップロード前の事前チェックを追加 ([#782](https://github.com/box/box-java-sdk/pull/782)) 2. 大きいファイルのアップロードの一部が正常にアップロードされたことを確認… ([#781](https://github.com/box/box-java-sdk/pull/781)) 3. ファイル名変更での予期しない切断に関するバグを修正 ([#779](https://github.com/box/box-java-sdk/pull/779)) 4. メタデータクエリによって返される項目ごとにメタデータを返す ([#778](https://github.com/box/box-java-sdk/pull/778)) **Source:** [https://ja.developer.box.com/changelog/2020-04-02-java-sdk-v2450-release](https://ja.developer.box.com/changelog/2020-04-02-java-sdk-v2450-release) --- ### Java SDK `v2.46.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.46.0のリリース 再試行ロジックを修正 (#787) パスパラメータのサニタイズを追加 (#790) コラボレーションの有効期限を設定する機能を追加 (#788) # Java SDK v2.46.0のリリース 1. 再試行ロジックを修正 ([#787](https://github.com/box/box-java-sdk/pull/787)) 2. パスパラメータのサニタイズを追加 ([#790](https://github.com/box/box-java-sdk/pull/790)) 3. コラボレーションの有効期限を設定する機能を追加 ([#788](https://github.com/box/box-java-sdk/pull/788)) **Source:** [https://ja.developer.box.com/changelog/2020-04-09-java-sdk-v2460-release](https://ja.developer.box.com/changelog/2020-04-09-java-sdk-v2460-release) --- ### Java SDK `v2.47.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.47.0のリリース パスパラメータのサニタイズを修正 (#797) ファイルとファイルバージョンのアップローダー表示名フィールドのサポートを追加 (#791) # Java SDK v2.47.0のリリース 1. パスパラメータのサニタイズを修正 ([#797](https://github.com/box/box-java-sdk/pull/797)) 2. ファイルとファイルバージョンのアップローダー表示名フィールドのサポートを追加 ([#791](https://github.com/box/box-java-sdk/pull/791)) **Source:** [https://ja.developer.box.com/changelog/2020-04-23-java-sdk-v2470-release](https://ja.developer.box.com/changelog/2020-04-23-java-sdk-v2470-release) --- ### Java SDK `v2.9.0`のリリース **Type:** changelog | **Section:** Changelog Java SDK v2.9.0のリリース readme更新の検索 (#506) アップロードの整合性のためにファイルのSHA-1ハッシュを渡すオプションを追加 (#502) イベントログの制限 (#507) サービス利用規約 (#484) wiremockポートの変更 (#50… # Java SDK v2.9.0のリリース 1. `readme`更新の検索 ([#506](https://github.com/box/box-java-sdk/pull/506)) 2. アップロードの整合性のためにファイルの`SHA-1`ハッシュを渡すオプションを追加 ([#502](https://github.com/box/box-java-sdk/pull/502)) 3. イベントログの制限 ([#507](https://github.com/box/box-java-sdk/pull/507)) 4. サービス利用規約 ([#484](https://github.com/box/box-java-sdk/pull/484)) 5. `wiremock`ポートの変更 ([#505](https://github.com/box/box-java-sdk/pull/505)) 6. 冗長な`response.disconnect()`を`moveFolderToUser()`から削除 ([#485](https://github.com/box/box-java-sdk/pull/485)) 7. イベントの`readme`のパッチ ([#503](https://github.com/box/box-java-sdk/pull/503)) 8. 不足しているWebhookトリガーを列挙型に追加 ([#497](https://github.com/box/box-java-sdk/pull/497)) 9. `MetadataTemplate.updateMetadataTemplate()`のタイプエラーを修正 ([#498](https://github.com/box/box-java-sdk/pull/498)) 10. 欠落しているイベントタイプを列挙型に追加 ([#500](https://github.com/box/box-java-sdk/pull/500)) 11. `modified_at`タイムスタンプを`BoxComment.Info`に追加 ([#501](https://github.com/box/box-java-sdk/pull/501)) 12. コラボレーションホワイトリスト ([#492](https://github.com/box/box-java-sdk/pull/492)) 13. 空の本文のごみ箱への移動のパッチ ([#495](https://github.com/box/box-java-sdk/pull/495)) 14. nullの有効期限を許可することで無期限のBoxファイルロックのサポートを追加 ([#494](https://github.com/box/box-java-sdk/pull/494)) 15. Batch APIに対するレスポンスの追加のテスト ([#474](https://github.com/box/box-java-sdk/pull/474)) 16. `BoxDeveloperEditionAPIConnection - decryptPrivateKey() - PEMParser returns PrivateKeyInfo already - Invalid cast` [#470](https://github.com/box/box-java-sdk/pull/470)を修正 ([#471](https://github.com/box/box-java-sdk/pull/471)) **Source:** [https://ja.developer.box.com/changelog/2018-01-04-java-sdk-v290-release](https://ja.developer.box.com/changelog/2018-01-04-java-sdk-v290-release) --- ### JWT形式に対して予定されている変更 **Type:** changelog | **Section:** Changelog JWT形式に対して予定されている変更 日本時間2021年8月5日に、インフラストラクチャの継続的なアップグレードの一環として、JSON Web Token (JWT) を使用するサーバー認証を利用しているカスタムアプリケーションに影響を及ぼす可能性がある変更の展開を開始する予定です。 潜在的な影響により、公式のBox SDKを使用せず、トークンをデータベースに格納しているユーザーによる追加の確認が必要になります。 影響を受ける可能性があるユーザーとアプリケーション所有者全員に、メールで直接通知済みです。 # JWT形式に対して予定されている変更 日本時間2021年8月5日に、インフラストラクチャの継続的なアップグレードの一環として、JSON Web Token (JWT) を使用するサーバー認証を利用しているカスタムアプリケーションに影響を及ぼす可能性がある変更の展開を開始する予定です。 潜在的な影響により、公式の[Box SDK](https://ja.developer.box.com/sdks-and-tools)を使用せず、トークンをデータベースに格納しているユーザーによる追加の確認が必要になります。 影響を受ける可能性があるユーザーとアプリケーション所有者全員に、メールで直接通知済みです。 ## 変更の概要 今回の変更は、JSON Web Token (JWT) を使用するサーバー認証を利用しているアプリケーションのみに影響を及ぼす可能性があります。トークンは、Boxの[ドキュメント](r://post-oauth2-token/)で説明されているとおり、今後も文字列として返されますが、その形式は長くなり、特殊文字が含まれるようになります。 special characters. 現在返されるトークンの例: `NXWd9KDPVofXQKZJlQjICCWFHEmuOihs` 今回の変更後、トークンは次の形式で返されます。 `1!yxxhRreQCKcEbC_ZfYvPudyLe7Ed36gIQcqqZo2pfaVZyxNBkQjoHk0fgA1iTY3_uwXgif-hg-gne aUdLRmGCb2He6tyQ_rA8aV-CllTyBbd9Tx-wU6Fnt4Df9XjzBAk8Dj7RYc1Ew_fcY2vfycpCvjwHLgql jzjEpVIrOpOlK_2AyP5FExzn0x7DtbkaGc6avJU8UMQd_huXoJ7CnXIL_JBzVrW4D32pBLQ2AZIuecOZ NMIy9T8PdUiZIG6xKEPqYmm21mQHEM0d7dT5foSBtjm65-Ah2tb2MdSGFb1G1O24vz2GmYFgmIe5UOol qYIGg-0u2xQPC3F76WiNCiU_TP1JDQYi3HKaos807WkRtnBY5Vd-VAbY9DH-Qo3u1EiB0RFr4cht2N7V B99y-379IEYzCojL2V58dE_pBxpRMv4KcOLVsUfDkbx3uo34H4UzOycI_IWGWrhVJD4M7GeLeD_5Vkmj fbwYl2CmHdXAKbZKtXTHjzB0CZixZriT_wRUpsN8GTrrxGbx9ukgzJWRJwelGZ_1Yx7vP4Zkx3OfR5Be -Tso7xdHd9rW0FXsu024U7dMNuQ6kpP1_kJI2Y`. この形式はBoxにとって新しい形式ではありません。これは、[トークンのダウンスコープ](g://authentication/tokens/downscope)に使用されている形式と同じになります。 ## アプリケーションへの影響の確認 1. [**管理コンソール**] > [**アプリ**] タブ > [**カスタムアプリ**] に移動します。 2. 表示されている各アプリの行で [**表示**] をクリックします。 3. アプリの詳細ページの一番下までスクロールし、選択されている認証方法を確認します。影響を受けるアプリには、[**サーバー認証 (JWT使用)**] と表示されます。 上記で特定された各アプリケーションについて、以下の点を確認する必要があります。 1. 公式の[Box SDK](https://ja.developer.box.com/sdks-and-tools)が使用されているかどうか。使用されている場合は、何もする必要はありません。常に最新バージョンを使用することをお勧めしますが、互換性に必要となる最小バージョンはありません。 1. 公式のSDKが使用されていない場合は、トークンがデータベースに格納されているかどうか。データベースに格納されている場合は、そのデータベースが新しい長さと特殊文字の両方に対応できるかを確認する必要があります。 ## リリース前のテスト サーバー認証 (JWT使用) を利用してトークンをデータベースに格納するアプリケーションを特定したら、8月5日より前に以下のテストを実行する必要があります。 前述のとおり、トークンの新しい形式は、現在、[トークンのダウンスコープ](g://authentication/tokens/downscope)時に使用されています。そのため、影響を確認するには、次の手順を実行してください。 アプリケーション用にアクセストークンを生成します。 手順1で生成したトークンを[ダウンスコープ](g://authentication/tokens/downscope)します。 ダウンスコープされたトークンをデータベースに格納します。 このトークンをデータベースに問題なく格納できる場合は、何もする必要はありません。 このトークンを格納できない場合は、追加の長さと特殊文字をサポートするようデータベースを更新する必要があります。 ## サポート情報 ご質問がある場合やさらにガイドが必要な場合は、[jwt-set-rollout@box.com](mailto:jwt-set-rollout@box.com)に英語でお問い合わせください。 **Source:** [https://ja.developer.box.com/changelog/2021-08-04-changes-to-jwt-token-format](https://ja.developer.box.com/changelog/2021-08-04-changes-to-jwt-token-format) --- ### JWT認証のアプリアクセスレベルの改善 **Type:** changelog | **Section:** Changelog JWT認証のアプリアクセスレベルの改善 企業の管理対象ユーザーと、JWTで認証されたアプリで作成されていないグループにアクセスできるようになりました。そのためには、開発者コンソールの [構成] タブで [アプリアクセスレベル] を [アプリ + Enterpriseアクセス] に設定します。 # JWT認証のアプリアクセスレベルの改善 企業の管理対象ユーザーと、[JWTで認証されたアプリ](g://authentication/jwt/jwt-setup)で作成されていない**グループ**にアクセスできるようになりました。そのためには、開発者コンソールの [**構成**] タブで [**アプリアクセスレベル**] を [**アプリ + Enterpriseアクセス**] に設定します。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-07-25-JWT-access-group-access](https://ja.developer.box.com/changelog/2023-07-25-JWT-access-group-access) --- ### Node SDK `v1.28.0`のリリース **Type:** changelog | **Section:** Changelog Node SDK v1.28.0のリリース v1.28.0リリースの準備 (#366) 8fa21de ウェブリンクの一般的な項目メソッドを追加 (#364) 7549d4f v1.27.0...v1.28.0 # Node SDK v1.28.0のリリース - `v1.28.0`リリースの準備 ([#366](https://github.com/box/box-node-sdk/pull/366)) [`8fa21de`](https://github.com/box/box-node-sdk/commit/8fa21de) - ウェブリンクの一般的な項目メソッドを追加 ([#364](https://github.com/box/box-node-sdk/pull/364)) [`7549d4f`](https://github.com/box/box-node-sdk/commit/7549d4f) [`v1.27.0...v1.28.0`](https://github.com/box/box-node-sdk/compare/%60v1.27.0...v1.28.0%60) **Source:** [https://ja.developer.box.com/changelog/2019-03-28-node-sdk-v1280-release](https://ja.developer.box.com/changelog/2019-03-28-node-sdk-v1280-release) --- ### Node SDK `v1.29.0`のリリース **Type:** changelog | **Section:** Changelog Node SDK v1.29.0のリリース v1.29.0リリースの準備 (#381) 4860e7c メタデータ設定のための便利なメソッドを追加 (#376) 1938e39 IssueテンプレートでHTMLコメントを使用 01f21df… # Node SDK v1.29.0のリリース - `v1.29.0`リリースの準備 ([#381](https://github.com/box/box-node-sdk/pull/381)) [`4860e7c`](https://github.com/box/box-node-sdk/commit/4860e7c) - メタデータ設定のための便利なメソッドを追加 ([#376](https://github.com/box/box-node-sdk/pull/376)) [`1938e39`](https://github.com/box/box-node-sdk/commit/1938e39) - IssueテンプレートでHTMLコメントを使用 [`01f21df`](https://github.com/box/box-node-sdk/commit/01f21df) - ドキュメント検索の並べ替えパラメータ ([#370](https://github.com/box/box-node-sdk/pull/370)) [`257e748`](https://github.com/box/box-node-sdk/commit/257e748) [`v1.28.0...v1.29.0`](https://github.com/box/box-node-sdk/compare/%60v1.28.0...v1.29.0%60) **Source:** [https://ja.developer.box.com/changelog/2019-04-25-node-sdk-v1290-release](https://ja.developer.box.com/changelog/2019-04-25-node-sdk-v1290-release) --- ### Node SDK `v1.29.1`のリリース **Type:** changelog | **Section:** Changelog Node SDK v1.29.1のリリース JTIクレームが拒否された場合にJTIを再生成し、認証リクエストを再試行 (#405) c0ccdb9 v1.29.0...v1.29.1 # Node SDK v1.29.1のリリース - JTIクレームが拒否された場合にJTIを再生成し、認証リクエストを再試行 ([#405](https://github.com/box/box-node-sdk/pull/405)) [`c0ccdb9`](https://github.com/box/box-node-sdk/commit/c0ccdb9) [`v1.29.0...v1.29.1`](https://github.com/box/box-node-sdk/compare/%60v1.29.0...v1.29.1%60) **Source:** [https://ja.developer.box.com/changelog/2019-08-22-node-sdk-v1291-release](https://ja.developer.box.com/changelog/2019-08-22-node-sdk-v1291-release) --- ### Node SDK `v1.30.0`のリリース **Type:** changelog | **Section:** Changelog Node SDK v1.30.0のリリース Batch APIメソッドが非推奨に (#433) b06f404 共有リンクを使用したトークン交換のサポートを追加 (#398) 76aa1cf v1.29.1...v1.30.0 # Node SDK v1.30.0のリリース - Batch APIメソッドが非推奨に ([#433](https://github.com/box/box-node-sdk/pull/433)) [`b06f404`](https://github.com/box/box-node-sdk/commit/b06f404) - 共有リンクを使用した[トークン交換](./lib/box-client.js#L495)のサポートを追加 ([#398](https://github.com/box/box-node-sdk/pull/398)) [`76aa1cf`](https://github.com/box/box-node-sdk/commit/76aa1cf) [`v1.29.1...v1.30.0`](https://github.com/box/box-node-sdk/compare/%60v1.29.1...v1.30.0%60) **Source:** [https://ja.developer.box.com/changelog/2019-11-21-node-sdk-v1300-release](https://ja.developer.box.com/changelog/2019-11-21-node-sdk-v1300-release) --- ### Node SDK `v1.31.0`のリリース **Type:** changelog | **Section:** Changelog Node SDK v1.31.0のリリース 認証リクエストの再試行を修正 (#454) dd3253e ユーザーエンドポイントにマーカーベースのページ割りを追加 (#461) 055cb5b 次のマーカーを取得するためにgetNextMarker()をPagingIterator… # Node SDK v1.31.0のリリース - 認証リクエストの再試行を修正 ([#454](https://github.com/box/box-node-sdk/pull/454)) [`dd3253e`](https://github.com/box/box-node-sdk/commit/dd3253e) - ユーザーエンドポイントにマーカーベースのページ割りを追加 ([#461](https://github.com/box/box-node-sdk/pull/461)) [`055cb5b`](https://github.com/box/box-node-sdk/commit/055cb5b) - 次のマーカーを取得するために`getNextMarker()`を`PagingIterator`に追加 ([#461](https://github.com/box/box-node-sdk/pull/461)) [`055cb5b`](https://github.com/box/box-node-sdk/commit/055cb5b) [`v1.30.0...v1.31.0`](https://github.com/box/box-node-sdk/compare/%60v1.30.0...v1.31.0%60) **Source:** [https://ja.developer.box.com/changelog/2020-02-14-node-sdk-v1310-release](https://ja.developer.box.com/changelog/2020-02-14-node-sdk-v1310-release) --- ### Node SDK `v1.32.0`のリリース **Type:** changelog | **Section:** Changelog Node SDK v1.32.0のリリース テストに合格しなかったためノード4とノード5のビルドをTravisから一時的に削除。今後調査予定 (#495)。dc558e9 前の呼び出しでレスポンスが返されないときに再試行中にエラーがスローされる問題を修正 (#477)。f1b… # Node SDK v1.32.0のリリース - テストに合格しなかったためノード4とノード5のビルドをTravisから一時的に削除。今後調査予定 ([#495](https://github.com/box/box-node-sdk/pull/495))。[`dc558e9`](https://github.com/box/box-node-sdk/commit/dc558e9) - 前の呼び出しでレスポンスが返されないときに再試行中にエラーがスローされる問題を修正 ([#477](https://github.com/box/box-node-sdk/pull/477))。[`f1b3449`](https://github.com/box/box-node-sdk/commit/f1b3449) - メタデータに基づいてBox項目に[クエリを実行](./docs/metadata.md#query)する機能を追加 ([#487](https://github.com/box/box-node-sdk/pull/487))。[`6f08931`](https://github.com/box/box-node-sdk/commit/6f08931) [`v1.31.0...v1.32.0`](https://github.com/box/box-node-sdk/compare/%60v1.31.0...v1.32.0%60) **Source:** [https://ja.developer.box.com/changelog/2020-04-01-node-sdk-v1320-release](https://ja.developer.box.com/changelog/2020-04-01-node-sdk-v1320-release) --- ### OAuth 2.0のリダイレクトURLの厳密なチェックの有効化 **Type:** changelog | **Section:** Changelog OAuth 2.0のリダイレクトURLの厳密なチェックの有効化 すべてのOAuth 2.0アプリケーションに対する厳密なチェックが有効になりました。 # OAuth 2.0のリダイレクトURLの厳密なチェックの有効化 すべてのOAuth 2.0アプリケーションに対する厳密なチェックが有効になりました。 2021年11月29日に、OAuth 2.0を使用する新しいアプリケーションでは、開発者コンソールの [構成] タブで設定されたURIが、リダイレクトに使用されるURIと厳密に一致することが必要になると[発表](page/changelog/#2021-11-29-oauth-20-redirect-url-updates)しました。 この変更は現在完了済みです。この標準に準拠していないアプリケーションを使用していた企業には、アプリケーションの更新方法を説明したメールが過去数か月の間に4件送信されています。 ## リダイレクトエラーの解決方法 メールを受信していないか、見逃していた場合は、問題を軽減する以下の手順を確認してください。 1. Box開発者コンソールの [構成] タブで、対象のアプリケーションのリダイレクトURLを変更します。静的URLの場合は、開発者コンソールを更新して複数のURLを追加します。動的URLの場合は、静的URLを使用するか、stateパラメータを使用するようにアプリケーションを更新します。 2. アプリケーションコードで使用されているリダイレクトURLを変更して、開発者コンソールのURLと厳密に一致させます。 1の場合は、以下の手順に従ってください。 - アプリケーション所有者としてBoxにログインし、Box開発者コンソールに移動します。 - アプリケーションをクリックし、[構成] タブに移動します。 - [OAuth 2.0リダイレクトURI] セクションまで下にスクロールします。 - 現在表示されているURLを更新します。 2の場合は、アプリケーションコードを変更し、影響を受ける使用されているURLを、開発者コンソールのURLと厳密に一致するよう置き換えてください。 ## 更新内容 - リダイレクトURIは、渡されたURIと、OAuth 2.0アプリケーションの構成で設定されたURIを一致させるように厳密なチェックを強制するようになりました ## サポート情報 本件に関するご質問は、[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿していただくか、販売店から指定されたサポート窓口にお問い合わせください。[](https://support.box.com/hc/en-us/requests/new) **Source:** [https://ja.developer.box.com/changelog/2022-05-18-oauth-20-redirect-url-release](https://ja.developer.box.com/changelog/2022-05-18-oauth-20-redirect-url-release) --- ### OAuth 2アプリリダイレクトURIの要件の変更 **Type:** changelog | **Section:** Changelog OAuth 2アプリリダイレクトURIの要件の変更 日本時間2020年10月30日から、Boxでは、アプリケーションに影響を及ぼす可能性のある新規および既存のOAuth 2ベースのBox統合で使用されるリダイレクトURI… # OAuth 2アプリリダイレクトURIの要件の変更 日本時間2020年10月30日から、Boxでは、アプリケーションに影響を及ぼす可能性のある新規および既存の[OAuth 2](g://authentication/oauth2/)ベースのBox統合で使用されるリダイレクトURIに対してより厳しい要件を使用します。 現在アプリケーションの構成で空のリダイレクトURIを使用している既存のアプリケーション所有者は、[こちらの説明](g://authentication/oauth2/oauth2-setup/#redirect-uri)に従って、コードのリダイレクト手順 ([こちらを参照](g://authentication/oauth2/with-sdk/#2-redirect-user)) で使用されているリダイレクトと一致するようリダイレクトURIを更新する必要があります。 2020年10月30日以降、まだ空のURIを使用して構成されているアプリケーションでは、URIの調整が行われない場合にユーザーがアプリケーションにリダイレクトされると、エラーが返されるようになります。 影響を受けるアプリケーション所有者とコラボレータの全員には、各自のDeveloperアカウントに関連付けられたメールアドレスを利用して通知しました。 ## 確認して変更を行う方法 アプリケーションンが影響を受けた場合にリダイレクトURIを確認し、アプリケーションを更新するには、以下の手順を実行します。 - アプリケーションを所有するユーザーとして、[Box開発者コンソール](https://cloud.app.box.com/developers/console)に移動します。 - **OAuth 2** (クライアント側認証) を使用する**カスタムアプリ**ごとに、そのアプリケーションをクリックして開きます。 - 左のナビゲーションで [**構成**] をクリックします。 - [**OAuth 2.0リダイレクトURI**] セクションまで下にスクロールします。 - このURIが空のアプリケーションでは、<c0>こちらのガイドで説明されているように<c0>、Boxの認証手順からアプリケーションにユーザーをリダイレクトする際にアプリケーションコードで使用されるURIを追加します。 **Source:** [https://ja.developer.box.com/changelog/2020-09-29-changes-to-oauth-2-app-redirect-url-requirements](https://ja.developer.box.com/changelog/2020-09-29-changes-to-oauth-2-app-redirect-url-requirements) --- ### Open With UI ElementおよびAdobe Signの公式サポート終了 **Type:** changelog | **Section:** Changelog Open With UI ElementおよびAdobe Signの公式サポート終了 本日、Open With UI ElementをBox Tools、Google Workspace、およびAdobe Signと統合できるようになりました。Box… # Open With UI ElementおよびAdobe Signの公式サポート終了 本日、[Open With UI Element](g://embed/ui-elements/open-with)をBox Tools、Google Workspace、およびAdobe Signと統合できるようになりました。Boxでは、常にエクスペリエンスの改善に向けて取り組む中で、変化するユーザーのニーズにより合った新しい機能の開発に今後も注力してまいります。 日本時間2021年12月22日に、以下の変更が行われる予定です。 Box ToolsおよびGoogle Workspaceでは、新規のお客様に対するBox Open With UI Elementのサポートが終了する予定です。12月22日までにこのUI Elementを使用しなかったお客様は、新規のお客様とみなされます。12月22日までにBox Tools/Google WorkspaceでOpen With UI Elementを利用した場合は、既存のお客様とみなされ、別途通知があるまで引き続きサポートを受けることができます。Box ToolsおよびGoogle Workspaceのウェブアプリ機能に影響はありません。 Adobe Signは、新規のお客様も既存のお客様も、Open With UI Elementまたはウェブアプリから使用できなくなる予定です。 ご質問がある場合は、[サポート](page/support)チケットを作成するか[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語で投稿してお問い合わせください。 **Source:** [https://ja.developer.box.com/changelog/2021-09-21-end-of-support-for-open-with-ui-element](https://ja.developer.box.com/changelog/2021-09-21-end-of-support-for-open-with-ui-element) --- ### Platform ActivityのCSVレポート **Type:** changelog | **Section:** Changelog Platform ActivityのCSVレポート Box管理コンソールでEnterpriseのプラットフォームリソースの使用状況を表示するレポートを利用できるようになりました。このレポートの最初のバージョンでは、実効日である2018年4月1日までの、Boxの既存のContent… # Platform ActivityのCSVレポート Box管理コンソールでEnterpriseのプラットフォームリソースの使用状況を表示するレポートを利用できるようになりました。このレポートの最初のバージョンでは、実効日である2018年4月1日までの、Boxの既存のContent APIに対するAPIコールの総数への統合が表示されます。このレポートの今後の反復では、サービスごとの追加のリソース消費(月間アクティブユーザー、帯域幅、ストレージ)が表示され、履歴データも含められます。詳細については、[Boxコミュニティの記事「レポートの実行」][community]を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2018-04-18-platform-activity-csv-report](https://ja.developer.box.com/changelog/2018-04-18-platform-activity-csv-report) --- ### Platform Activityの履歴のCSVレポート **Type:** changelog | **Section:** Changelog Platform Activityの履歴のCSVレポート ウェブサイトで新しいレポートが使用可能になりました。Box管理コンソールで、Enterpriseのプラットフォームリソースの過去の使用状況を表示するドキュメントを利用できます。このレポートには、2017年1月… # Platform Activityの履歴のCSVレポート ウェブサイトで新しいレポートが使用可能になりました。Box管理コンソールで、Enterpriseのプラットフォームリソースの過去の使用状況を表示するドキュメントを利用できます。このレポートには、2017年1月1日から2018年3月31日までのアプリケーションごとの月別の会社の月間アクティブユーザー、APIコール、および帯域幅消費が示されています。詳細については、[こちら](https://community.box.com/t5/How-to-Guides-for-Admins/Running-the-Platform-Activity-Report/ta-p/58620)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2018-07-11-historical-platform-activity-csv-report](https://ja.developer.box.com/changelog/2018-07-11-historical-platform-activity-csv-report) --- ### Platformアプリの承認フローの改善 **Type:** changelog | **Section:** Changelog Platformアプリの承認フローの改善 Platformアプリの承認フローをさらに改善しました。開発者コンソールの新しい [有効化] タブを使用して、Box管理者に対してOAuth 2.0 Platformアプリを有効化するよう直接リクエストできます。 さらに、Box… # Platformアプリの承認フローの改善 Platformアプリの承認フローをさらに改善しました。開発者コンソールの新しい [**有効化**] タブを使用して、Box管理者に対してOAuth 2.0 Platformアプリを有効化するよう直接リクエストできます。 さらに、Box管理者は、管理コンソールでPlatformアプリマネージャを使用して、Platformアプリを表示および有効化できます。 ## 更新内容 - OAuth 2.0 Platformアプリ用の [**有効化**] タブを追加 - [Platformアプリの承認](g://authorization/platform-app-approval)ページにOAuth 2.0 Platformアプリケーションの有効化に関する情報を追加 - [Platformアプリの承認](g://authorization/platform-app-approval)および[OAuth 2.0を使用した設定](g://authentication/oauth2/oauth2-setup)ページのスクリーンショットを更新 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-04-21-improvements-in-custom-apps-approval-flow](https://ja.developer.box.com/changelog/2022-04-21-improvements-in-custom-apps-approval-flow) --- ### Platformアプリ管理の新機能 **Type:** changelog | **Section:** Changelog Platformアプリ管理の新機能 Box管理コンソールの [Platformアプリマネージャ] セクションへの変更をリリースしました。これにより、OAuth 2.0 Platformアプリケーションの有効化をより簡単に表示および管理できるようになります。 # Platformアプリ管理の新機能 Box管理コンソールの [Platformアプリマネージャ] セクションへの変更をリリースしました。これにより、OAuth 2.0 Platformアプリケーションの有効化をより簡単に表示および管理できるようになります。 新しい機能の追加のほか、[Platformアプリマネージャ] のUIも更新しました。Box APIを使用するアプリの変更および承認に関する詳細については、[ブログ](https://medium.com/box-developer-blog/platform-apps-manager-updates-c79ccf8ebe97)を参照してください。 ## 更新内容 - [承認](g://authorization)、[Platformアプリの承認](g://authorization/platform-app-approval)、[アクセス制限付きアプリの承認](g://authorization/limited-access-approval)、[セキュリティ](g://security)ページのスクリーンショットを更新 - [Platformアプリの承認](g://authorization/platform-app-approval)ページにOAuth 2.0 Platformアプリケーションの承認プロセスに関する情報を追加 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-01-06-new-features-for-custom-app-management](https://ja.developer.box.com/changelog/2022-01-06-new-features-for-custom-app-management) --- ### Postmanコレクションとクイックスタートを更新 **Type:** changelog | **Section:** Changelog Postmanコレクションとクイックスタートを更新 Box Postmanコレクションは、新機能と、統合されたクイックスタートガイドによって更新されました。主な機能は以下のとおりです。 エンドツーエンドのPostmanクイックスタートガイド。これは、ユーザーがPostman… # Postmanコレクションとクイックスタートを更新 Box Postmanコレクションは、新機能と、統合されたクイックスタートガイドによって更新されました。主な機能は以下のとおりです。 - エンドツーエンドの[Postmanクイックスタートガイド](g://tooling/postman/quick-start)。これは、ユーザーがPostmanのインストール、Boxアプリの設定、PostmanへのAPI資格情報の読み込みを行う際に役立ちます。 - Box API用に[再編成されたPostmanコレクション](g://tooling/postman/install)。これにより、API資格情報の期限切れが自動的に検出され、必要に応じてこれらの資格情報を更新するための統合ソリューションが提供されます。 しばらくの間は[従来のPostmanコレクション](g://tooling/postman)も引き続きご利用いただけます。 **Source:** [https://ja.developer.box.com/changelog/2020-01-20-refreshed-postman-collection-quick-start](https://ja.developer.box.com/changelog/2020-01-20-refreshed-postman-collection-quick-start) --- ### Preview SDK `v2.26.0`のリリース **Type:** changelog | **Section:** Changelog Preview SDK v2.26.0のリリース Preview SDKのバージョン2.26.0がリリースされ、新しいJavaScriptとCSSのPreviewファイルが使用可能になりました。新しい変更を導入するには、コンテンツプレビュー用のリンクをUI Element… # Preview SDK v2.26.0のリリース Preview SDKのバージョン`2.26.0`がリリースされ、新しいJavaScriptとCSSのPreviewファイルが使用可能になりました。新しい変更を導入するには、コンテンツプレビュー用のリンクを[UI Elementの手動によるインストール](g://embed/ui-elements/installation/#manual-installation)に関する記事で確認してください。 機能の変更点の全一覧については、`v2.26.0`の[リリースノート](https://github.com/box/box-content-preview/releases/tag/v2.26.0)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2019-11-20-preview-sdk-v2260-released](https://ja.developer.box.com/changelog/2019-11-20-preview-sdk-v2260-released) --- ### Preview SDK `v2.29.0`のリリース **Type:** changelog | **Section:** Changelog Preview SDK v2.29.0のリリース Preview SDKのバージョン2.29.0がリリースされ、新しいJavaScriptとCSSのPreviewファイルが使用可能になりました。新しい変更を導入するには、コンテンツプレビュー用のリンクをUI Element… # Preview SDK v2.29.0のリリース Preview SDKのバージョン`2.29.0`がリリースされ、新しいJavaScriptとCSSのPreviewファイルが使用可能になりました。新しい変更を導入するには、コンテンツプレビュー用のリンクを[UI Elementの手動によるインストール](g://embed/ui-elements/installation/#manual-installation)に関する記事で確認してください。 機能の変更点の全一覧については、`v2.29.0`の[リリースノート](https://github.com/box/box-content-preview/releases/tag/v2.29.0)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2019-12-03-preview-sdk-v2290-released](https://ja.developer.box.com/changelog/2019-12-03-preview-sdk-v2290-released) --- ### Preview SDK `v2.33.1`のリリース **Type:** changelog | **Section:** Changelog Preview SDK v2.33.1のリリース Preview SDKのバージョン2.33.1がリリースされ、新しいJavaScriptとCSSのPreviewファイルが使用可能になりました。新しい変更を導入するには、コンテンツプレビュー用のリンクをUI Element… # Preview SDK v2.33.1のリリース Preview SDKのバージョン`2.33.1`がリリースされ、新しいJavaScriptとCSSのPreviewファイルが使用可能になりました。新しい変更を導入するには、コンテンツプレビュー用のリンクを[UI Elementの手動によるインストール](g://embed/ui-elements/installation/#manual-installation)に関する記事で確認してください。 機能の変更点の全一覧については、`v2.33.1`の[リリースノート](https://github.com/box/box-content-preview/releases/tag/v2.33.1)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2020-01-22-preview-sdk-v2331-released](https://ja.developer.box.com/changelog/2020-01-22-preview-sdk-v2331-released) --- ### Preview SDK `v2.34.0`のリリース **Type:** changelog | **Section:** Changelog Preview SDK v2.34.0のリリース Preview SDKのバージョン2.34.0がリリースされ、新しいJavaScriptとCSSのPreviewファイルが使用可能になりました。新しい変更を導入するには、コンテンツプレビュー用のリンクをUI Element… # Preview SDK v2.34.0のリリース Preview SDKのバージョン`2.34.0`がリリースされ、新しいJavaScriptとCSSのPreviewファイルが使用可能になりました。新しい変更を導入するには、コンテンツプレビュー用のリンクを[UI Elementの手動によるインストール](g://embed/ui-elements/installation/#manual-installation)に関する記事で確認してください。 機能の変更点の全一覧については、`v2.34.0`の[リリースノート](https://github.com/box/box-content-preview/releases/tag/v2.34.0)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2020-02-03-preview-sdk-v2340-released](https://ja.developer.box.com/changelog/2020-02-03-preview-sdk-v2340-released) --- ### Python SDK `v2.0.0`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.0.0のリリース 重大な変更 Python 2.6はサポートされなくなりました。 Python 3.3はサポートされなくなりました。 client.search()により、検索APIを呼び出すためのquery()メソッドを公開するSearch… # Python SDK v2.0.0のリリース ## 重大な変更 Python 2.6はサポートされなくなりました。 Python 3.3はサポートされなくなりました。 `client.search()`により、検索APIを呼び出すための`query()`メソッドを公開する`Search`オブジェクトが返されるようになりました。`client.search(**search_params)`の代わりに`client.search().query(**search_params)`を使用してください。 `client.get_memberships(...)`の署名が変更されました。他のSDKとの一貫性を保つため、制限パラメータとオフセットパラメータの位置が入れ替えられました。 `client.groups(...)`が`client.get_groups`に変更されました。制限パラメータとオフセットパラメータの位置が入れ替えられました。 `item.create_shared_link(...)`と`file.get_shared_link_download_url(...)`の`unshared_at`パラメータは、`datetime.date`ではなく`RFC3339-formatted <https://tools.ietf.org/html/rfc3339#section-5.8>` `unicode`文字列を取得するようになりました。ユーザーは`v1.x`から移行する場合、`date`オブジェクト自体ではなく`date.isoformat()`の値を渡すことができます。 `Events.get_events(...)`では、イベントを表す`dict`のリストではなく、`Event`インスタンスのリストが返されるようになりました。`Event`は`Mapping`から継承されますが、`dict`と同じ機能をすべて備えているとは限りません。 `Events.get_events(...)`を使用していて、`Mapping`のリストではなく`dict`のリストを想定する場合、コードは影響を受けます。たとえば、`__setitem__` (`event['key'] = value`)、`update()`、`copy()`を使用する場合、またはコードが`Event`の`str`または`repr`に依存する場合がこれに該当します。`__getitem__` (`event['key']`)、`get()`、およびその他の`Mapping`メソッドの使用は影響を受けません。`Mapping`インスタンスでサポートされているメソッドについては、[Pythonドキュメント](https://docs.python.org/2.7/library/collections.html#collections-abstract-base-classes)を参照してください。 移行: まだ`Event`を`dict`として扱う必要がある場合は、`BaseAPIJSONObject`の新しいプロパティ`response_object`を使用して、元の`dict`のディープコピーを取得できます。 `LoggingNetwork`は削除されました。ログ記録の呼び出しは`DefaultNetwork`クラスから行われるようになりました。さらに、このクラスのログ記録形式の文字列は、これらの文字列をオーバーライドしたアプリケーションのログ記録を中断する形で変更されました。位置指定のプレースホルダではなく、キーワード形式のプレースホルダが使用されるようになりました。今後、カスタム形式の文字列はすべて、同じキーワード形式のプレースホルダを使用する必要があります。これは重大な変更ですが、キーワード形式のプレースホルダを使用すると、今後の変更は自動的に後方互換性が維持されるという利点があります (キーワードの変更/削除を伴う変更が行われない限り)。 `File.update_contents()`と`File.update_contents_with_stream()`では、適切な内部JSON構造を持つ`File`オブジェクトが正しく返されるようになりました。以前は、ファイルJSONが`file['entries'][0]`内で非表示になっている`File`オブジェクトが返されていました。これはバグ修正ですが、このバグを処理するコードをすでに作成しているクライアントにとっては重大な変更になります。 Box IDが同じでもタイプが異なる2つのオブジェクト (例: `File`と`Folder`) を`==`で比較した場合に、`False`が正しく返されるようになりました。 次のメソッドでは、単一のページではなく、返されたオブジェクトのコレクション全体の反復子が返されるようになりました。 - `client.users()` - `client.groups()` - `client.search().query()` - `folder.get_items()` `folder.get_items()`が反復子を返すようになったため、`folder.get_items_limit_offset()`と`folder.get_items_marker()`は削除されました。マーカーベースのページングを`folder.get_items()`で使用するには、`use_marker=True`パラメータを渡し、オプションとして`marker`パラメータを指定して、コレクションのそのポイントからページングを開始します。 さらに、`group.membership()`は名前が`group.get_memberships()`に変更され、メンバーシップオブジェクトの反復子を返すようになりました。このメソッドでは、ページング情報を含むタプルを返すオプションが提供されなくなりました。 `Translator`クラスが変更されました。`translator.get(...)`は引き続き、渡された型に対応するオブジェクトクラスのコンストラクタを返しますが、`translator.translate(...)`は、`Session`とレスポンスオブジェクトを直接受け取り、変換されたオブジェクトを生成します。また、このメソッドは、ネストされたオブジェクトが見つかった場合にもそれらを変換します。 - この変更により、`GroupMembership`にカスタムコンストラクタを使用する必要はなくなります。そのため、デフォルトの`BaseObject`コンストラクタが使用されるようになります。 ## 機能 公開されているAPIエンドポイントとパラメータはすべて、SDKでサポートされるようになりました。 オブジェクト変換システムの柔軟性が向上しました。 非グローバルの`Translator`インスタンスを作成できます。これにより、グローバルなデフォルトの`Translator`を拡張することも、拡張しないことも可能です。 カスタム`Translator`で`BoxSession`を初期化できます。 `BoxSession`または`Client`に関連付けられている`Translator`にカスタムサブクラスを登録できます。 APIレスポンスのすべての変換で、グローバルなデフォルトの`Translator`を直接使用する代わりに、`BoxSession`で参照される`Translator`が使用されるようになりました。 ネストされたオブジェクトは`translator.translate()`によって変換されるようになりました。 `BoxSession`に対してリクエストメソッドのいずれかを呼び出すときに`auto_session_renewal`が`True`である場合、アクセストークンがないと、`BoxSession`は、リクエストを実行する_前に_トークンを更新します。これにより、APIコールが1回省略されます。 認証オブジェクトを閉じられるようになりました。これにより、これらのオブジェクトは新しいトークンのリクエストに使用できなくなります。また、既存のトークンも取り消されます (ただし、この機能は、`revoke=False`を渡すことで無効にできます)。加えて、終了時に認証オブジェクトを自動的に閉じる`closing()`コンテキストマネージャメソッドも導入されます。 `JWTAuth`基本クラスに対するさまざまな機能強化: `authenticate_app_user()`メソッドは、管理対象ユーザーの認証にも使用できるようになったことを示すため、`authenticate_user()`という名前に変更されました。詳細については、メソッドの`docstring`を参照してください。`authenticate_app_user()`は、不要な後方非互換性が発生しないよう、`authenticate_user()`のエイリアスとなりました。 `authenticate_user()`への`user`引数に、ユーザーID文字列と`User`インスタンスのいずれかを指定できるようになりました。以前は、`User`インスタンスを指定する必要がありました。 コンストラクタは、`user`キーワード引数 (省略可) を受け取るようになりました。これには、ユーザーID文字列と`User`インスタンスのいずれかを指定できます。この引数が渡されると、`user`引数の値を渡さなくても`authenticate_user()`を呼び出すことができます。さらに重要なことに、これは、構築後すぐに`refresh()`を呼び出すことができることを意味します。その際、`authenticate_user()`を手動で呼び出す必要はありません。前述の`BoxSession`の`auto_session_renewal`機能の改善と組み合わせることで、最初のAPIコール時に、`JWTAuth`オブジェクトの認証を完全に自動で実行できます。 コンストラクタは、RSA秘密キーの受け渡し方法を2つサポートしています。1つはファイルシステムパスを使用する方法 (既存の機能)、もう1つはキーデータを直接渡す方法 (新機能) です。`rsa_private_key_file_sys_path`パラメータは省略可能になりましたが、`rsa_private_key_file_sys_path`または`rsa_private_key_data`のどちらか1つを渡す必要があります。 `JWTAuth`の`enterprise_id`引数を`None`にできることが文書化されました。 `authenticate_instance()`は`enterprise`引数を受け取れるようになりました。これは、構築時に`None`が`enterprise_id`に渡された場合に、Enterpriseのサービスアカウントユーザーとして設定および認証するために使用できます。 有効期限が適切な期間に含まれないことが原因で失敗した認証は、Box APIレスポンスのDateヘッダーで指定された時間を使用して、自動的に再試行されるようになりました。これは、Box SDKを実行しているマシンのシステム時刻がBox APIサーバーのシステム時刻と一致しない場合に必然的に発生する可能性があります。 `Event`クラスが追加されました。 `metadata()`メソッドは`Folder`および`File`で使用できるように`Item`に移動されました。 `BaseAPIJSONObject`基本クラス (すべてのAPIレスポンスオブジェクトのスーパークラス) が`__contains__`および`__iter__`をサポートするようになりました。これらの動作は`Mapping`と同じです。つまり、`__contains__`はオブジェクトのJSONキーをチェックし、`__iter__`はそのオブジェクトのすべてのキーを生成します。 `RecentItem`クラスが追加されました。 Box上でユーザーが最近アクセスした項目を取得する`client.get_recent_items()`が追加されました。 新しいコラボレーション作成時の`can_view_path`パラメータのサポートが追加されました。 エンドポイントからのオブジェクトのページングをより直接的に管理できるように`BoxObjectCollection`とサブクラス`LimitOffsetBasedObjectCollection`および`MarkerBasedObjectCollection`が追加されました。これらのクラスは、エンドポイントへのリクエストを構成して結果を格納するロジックを管理し、結果に対して繰り返し適用される`__next__`を提供します。結果を1つずつ返すか結果の`Page`として返すオプションも提供されます。 `downscope_token()`メソッドが`Client`クラスに追加されました。このメソッドによって生成されるトークンの権限は、指定されたスコープや、オプションとして指定された`File`または`Folder`に下げられています。 構成ファイルから`JWTAuth`を構成するためのメソッド`JWTAuth.from_settings_file`と`JWTAuth.from_settings_dictionary`が追加されました。 `network_response`プロパティが`BoxOAuthException`に追加されました。 APIの構成を`BoxSession`インスタンスごとに実行できるようになりました。 ## その他 - `BoxAPIException`に追加情報が加えられました。 - `collaboration()`メソッドが`Client`に追加されました。 - クラス階層が変更されました。これまで、`BaseEndpoint`は、すべてのスマートオブジェクトの親である`BaseObject`の親でした。今後、`BaseObject`は`BaseEndpoint`と`BaseAPIJSONObject`両方の子になります。`BaseObject`は、REST APIに含まれるすべてのオブジェクトの親です。`BaseAPIJSONObject`の別のサブクラスである`APIJSONObject`は、APIエンドポイントから直接アクセスできない`Event`など、疑似スマートオブジェクトを表すために作成されました。 - `network_response_constructor`が`Network`インターフェースの省略可能なプロパティとして追加されました。実装では、このプロパティを一時的に無効にし、これを使用して`NetworkResponse`インスタンスを構築することをお勧めします。このように、サブクラスの実装では、このプロパティを再度一時的に無効にすることで、`NetworkResponse`の機能を拡張できます。このプロパティは、`DefaultNetwork`実装で定義および使用されます。 - レスポンスログは新しい`LoggingNetworkResponse`クラスに移動されます (これは前述の`network_response_constructor`プロパティによって可能になります)。レスポンス本文をログに記録するかどうかは、呼び出し元がコンテンツを読み取るかストリーミングするかに基づき、SDKで決定されます。 - `LoggingNetwork`からのリクエスト/レスポンスログに情報が追加されました。 - `LoggingNetwork`にリクエスト例外のログ記録が追加されました。 - `JWTAuth.refresh()`の戻り値が認証インターフェースの戻り値と正確に一致するようバグが修正されました (そのために、アクセストークンのみではなく、((アクセストークン), (更新トークンまたはなし)) のタプルを返します)。特に、`JWTAuth`オブジェクトを更新しようとしたときに常に発生していた`BoxSession`の例外が修正されます。 - `ExtendableEnumMeta.__dir__()`から発生していた例外が修正されました。 - `CPython` 3.6のサポート。 - 必要最低限のバージョンが6から1.9.0に引き上げられました。 **Source:** [https://ja.developer.box.com/changelog/2018-11-01-python-sdk-v200-release](https://ja.developer.box.com/changelog/2018-11-01-python-sdk-v200-release) --- ### Python SDK `v2.1.0`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.1.0のリリース ユーザーがファイルを分割アップロードして、中断されたアップロードを再開する機能が追加されました。 Webhook… # Python SDK v2.1.0のリリース - ユーザーが[ファイルを分割アップロード](https://github.com/box/box-python-sdk/blob/master/docs/usage/files.md#chunked-upload)して、中断されたアップロードを再開する機能が追加されました。 - [Webhookメッセージを確認する](https://github.com/box/box-python-sdk/blob/master/docs/usage/webhook.md#validate-webhook-message)機能が追加されました。 - ユーザーがメタデータの分類を[ファイル](https://github.com/box/box-python-sdk/blob/master/docs/usage/files.md#set-a-classification)や[フォルダ](https://github.com/box/box-python-sdk/blob/master/docs/usage/folders.md#set-a-classification)に追加する機能が追加されました。 - APIオブジェクトで`.response_object()`メソッドを呼び出すとスローされるバグの修正。 **Source:** [https://ja.developer.box.com/changelog/2019-02-08-python-sdk-v210-release](https://ja.developer.box.com/changelog/2019-02-08-python-sdk-v210-release) --- ### Python SDK `v2.2.0`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.2.0のリリース ユーザーがユーザーのアバターを取得する機能が追加されました。 ランダム化されたジッターを伴う指数バックオフを使用するよう再試行戦略が変更されました。 # Python SDK v2.2.0のリリース - ユーザーがユーザーの[アバターを取得](https://github.com/box/box-python-sdk/blob/master/docs/usage/user.md#get-the-avatar-for-a-user)する機能が追加されました。 - ランダム化されたジッターを伴う指数バックオフを使用するよう再試行戦略が変更されました。 **Source:** [https://ja.developer.box.com/changelog/2019-02-15-python-sdk-v220-release](https://ja.developer.box.com/changelog/2019-02-15-python-sdk-v220-release) --- ### Python SDK `v2.2.1`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.2.1のリリース パッケージをインストールできなかったv2.2.0の問題を修正しています。 # Python SDK v2.2.1のリリース - パッケージをインストールできなかった`v2.2.0`の問題を修正しています。 **Source:** [https://ja.developer.box.com/changelog/2019-02-15-python-sdk-v221-release](https://ja.developer.box.com/changelog/2019-02-15-python-sdk-v221-release) --- ### Python SDK `v2.2.2`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.2.2のリリース requests-toolbelt依存関係の制限を更新 # Python SDK v2.2.2のリリース - `requests-toolbelt`依存関係の制限を更新 **Source:** [https://ja.developer.box.com/changelog/2019-03-14-python-sdk-v222-release](https://ja.developer.box.com/changelog/2019-03-14-python-sdk-v222-release) --- ### Python SDK `v2.3.0`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.3.0のリリース アップロード時にファイルの説明を設定する機能を追加 基本的な認証プロキシと非認証プロキシのサポートを追加 # Python SDK v2.3.0のリリース - [アップロード時にファイルの説明](https://github.com/box/box-python-sdk/blob/master/docs/usage/files.md#upload-a-file)を設定する機能を追加 - [基本的な認証プロキシと非認証プロキシ](https://github.com/box/box-python-sdk/blob/master/docs/usage/configuration.md#proxy)のサポートを追加 **Source:** [https://ja.developer.box.com/changelog/2019-03-28-python-sdk-v230-release](https://ja.developer.box.com/changelog/2019-03-28-python-sdk-v230-release) --- ### Python SDK `v2.3.2`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.3.2のリリース パッケージをインストールできなかったv2.3.1の問題を修正しています。 # Python SDK v2.3.2のリリース - パッケージをインストールできなかった`v2.3.1`の問題を修正しています。 **Source:** [https://ja.developer.box.com/changelog/2019-03-29-python-sdk-v232-release](https://ja.developer.box.com/changelog/2019-03-29-python-sdk-v232-release) --- ### Python SDK `v2.4.1`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.4.1のリリース ユーザーがファイルやフォルダでのメタデータの設定を使用する機能を追加 # Python SDK v2.4.1のリリース 1. ユーザーが[ファイル](https://github.com/box/box-python-sdk/blob/master/docs/usage/files.md#set-metadata)や[フォルダ](https://github.com/box/box-python-sdk/blob/master/docs/usage/folders.md#set-metadata)でのメタデータの設定を使用する機能を追加 **Source:** [https://ja.developer.box.com/changelog/2019-05-16-python-sdk-v241-release](https://ja.developer.box.com/changelog/2019-05-16-python-sdk-v241-release) --- ### Python SDK `v2.5.0`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.5.0のリリース Noneを渡してadd_member()メソッドのconfigurable_permissionフィールドをクリアできるようになりました。 # Python SDK v2.5.0のリリース `None`を渡して`add_member()`メソッドの`configurable_permission`フィールドをクリアできるようになりました。 **Source:** [https://ja.developer.box.com/changelog/2019-06-20-python-sdk-v250-release](https://ja.developer.box.com/changelog/2019-06-20-python-sdk-v250-release) --- ### Python SDK `v2.6.0`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.6.0のリリース created_before、created_after、event_typeパラメータを持つ、新しい管理者イベント取得関数が追加されました (@capk1rkに感謝します)。 # Python SDK v2.6.0のリリース `created_before`、`created_after`、`event_type`パラメータを持つ、新しい管理者イベント取得関数が追加されました (`@capk1rk`に感謝します)。 **Source:** [https://ja.developer.box.com/changelog/2019-08-29-python-sdk-v260-release](https://ja.developer.box.com/changelog/2019-08-29-python-sdk-v260-release) --- ### Python SDK `v2.6.1`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.6.1のリリース コピーメソッドにapi_呼び出しデコレータが追加されました。 # Python SDK v2.6.1のリリース - コピーメソッドに`api_`呼び出しデコレータが追加されました。 **Source:** [https://ja.developer.box.com/changelog/2019-10-24-python-sdk-v261-release](https://ja.developer.box.com/changelog/2019-10-24-python-sdk-v261-release) --- ### Python SDK `v2.7.0`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.7.0のリリース 省略可能なevent_typesパラメータの省略時にエラーが発生するget_admin_events… # Python SDK v2.7.0のリリース - 省略可能な`event_types`パラメータの省略時にエラーが発生する`get_admin_events`関数のバグが修正されました。 - ユーザーのリスト取得にマーカーベースのページネーションが追加されました。 - 新しいファイルや既存ファイルの新バージョンをアップロードするときにより多くの属性パラメータがサポートされるようになりました。 - アクセラレータURLの事前チェックとルックアップがアップロードの単一のリクエストに統合されました。 - JWTの再試行ロジックが修正され、再試行ごとに新しいJTIクレームが生成されるようになりました。 - JWT認証リクエストが誤ったエラーコードを返すバグが修正されました。 - 再試行ロジックが修正され、APIからRetry-Afterヘッダーが返された場合、SDKは再試行の前にヘッダーで指定された時間待機するようになりました。 **Source:** [https://ja.developer.box.com/changelog/2020-01-16-python-sdk-v270-release](https://ja.developer.box.com/changelog/2020-01-16-python-sdk-v270-release) --- ### Python SDK `v2.7.1`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.7.1のリリース リリース2.7.0で導入された_get_retry_request_callableの分割アップロードが失敗するバグを修正 # Python SDK v2.7.1のリリース - リリース2.7.0で導入された`_get_retry_request_callable`の分割アップロードが失敗するバグを修正 **Source:** [https://ja.developer.box.com/changelog/2020-01-22-python-sdk-v271-release](https://ja.developer.box.com/changelog/2020-01-22-python-sdk-v271-release) --- ### Python SDK `v2.8.0`のリリース **Type:** changelog | **Section:** Changelog Python SDK v2.8.0のリリース 共有リンクを使用したトークン交換のサポートを追加 ファイルのアップロードでSHA1値を渡す機能を追加 # Python SDK v2.8.0のリリース - 共有リンクを使用したトークン交換のサポートを追加 - ファイルのアップロードでSHA1値を渡す機能を追加 **Source:** [https://ja.developer.box.com/changelog/2020-04-24-python-sdk-v280-release](https://ja.developer.box.com/changelog/2020-04-24-python-sdk-v280-release) --- ### Python SDK V2のリリース **Type:** changelog | **Section:** Changelog Python SDK V2のリリース Box Python SDKのメジャーアップデート (バージョン2.0) がリリースされ、重要な更新とAPI機能パリティが加えられました。完全なAPI… # Python SDK V2のリリース [Box Python SDK](https://github.com/box/box-python-sdk)のメジャーアップデート (バージョン2.0) がリリースされ、重要な更新とAPI機能パリティが加えられました。完全なAPIリリースノートについては[こちらを参照してください](https://github.com/box/box-python-sdk/releases/tag/v2.0.0)。今回のリリースとともに、以下のドキュメントの変更が行われました。 - Pythonの[クイックスタートガイド](guide://)の更新。 - Pythonの[APIリファレンス](endpoint://)のコードサンプルの更新。 **Source:** [https://ja.developer.box.com/changelog/2018-10-19-python-sdk-v2-launched](https://ja.developer.box.com/changelog/2018-10-19-python-sdk-v2-launched) --- ### Relay Classic APIエンドポイントの廃止 **Type:** changelog | **Section:** Changelog Relay Classic APIエンドポイントの廃止 2019年10月18日にお知らせしたとおり、Classic Relay API… # Relay Classic APIエンドポイントの廃止 2019年10月18日にお知らせしたとおり、Classic Relay APIエンドポイントは本日をもって正式に廃止されます。 以下のエンドポイントはこの廃止の影響を受けるため、このエンドポイントにリクエストを送信するアプリケーションでエラーレスポンスが返されるようになります。 - 公開されているRelay Classicテンプレートのリストの取得 - Relay Classicワークフローのリストの取得 - Relay Classicワークフローの開始 このようなエラーレスポンスが発生するアプリケーションでは、上記のRelay Classic APIに対する呼び出しをすべて削除してください。 **Source:** [https://ja.developer.box.com/changelog/2019-12-30-eol-of-classic-relay-api-endpoints](https://ja.developer.box.com/changelog/2019-12-30-eol-of-classic-relay-api-endpoints) --- ### Relay Workflow APIの拡張 **Type:** changelog | **Section:** Changelog Relay Workflow APIの拡張 BoxとIBMで共同開発されたワークフローツールBox Relayの機能が、新しいWorkflow APIによって拡張されました。Relay Workflow APIを使用すると、Box Relay… # Relay Workflow APIの拡張 BoxとIBMで共同開発されたワークフローツール[Box Relay](https://www.box.com/collaboration/relay-workflow)の機能が、新しいWorkflow APIによって拡張されました。Relay Workflow APIを使用すると、Box Relayワークフローを起動し、アプリケーション内からそれらのワークフローのステータスを取得できます。また、Box Relayのインスタンスに直接ファイルで公開されているワークフローテンプレートを表示することもできます。APIの詳細については、Boxの[お知らせに関するブログ記事](https://medium.com/box-developer-blog/introducing-the-box-relay-workflow-api-f6eed1457711)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2018-07-31-expanded-relay-workflow-api](https://ja.developer.box.com/changelog/2018-07-31-expanded-relay-workflow-api) --- ### Salesforce Developer Toolkitの更新 **Type:** changelog | **Section:** Changelog Salesforce Developer Toolkitの更新 Salesforce Developer Toolkitに関する開発者向けガイドが更新され、以下の内容が追加されました。 Box SignおよびBox Hubsに関するメソッドと操作 Box SignおよびBox… # Salesforce Developer Toolkitの更新 [Salesforce Developer Toolkit](g://tooling/salesforce-toolkit/)に関する開発者向けガイドが更新され、以下の内容が追加されました。 - [Box Sign](g://tooling/salesforce-toolkit/methods/#box-sign)および[Box Hubs](g://tooling/salesforce-toolkit/methods/#box-hubs)に関するメソッドと操作 - [Box Sign](g://tooling/salesforce-toolkit/samples/#create-a-sign-request)および[Box Hubs](g://tooling/salesforce-toolkit/samples/#get-box-hubs)のコードサンプル - [Salesforceフロー](g://tooling/salesforce-toolkit/flow-actions/#methods-in-salesforce-flows)で呼び出し可能なすべてのメソッド - [Box Hubs](g://tooling/salesforce-toolkit/box-agentforce-package/#box-hubs)に関するAgentforceフローのメソッド **Source:** [https://ja.developer.box.com/changelog/2025-10-01-salesforce-toolkit-changelog](https://ja.developer.box.com/changelog/2025-10-01-salesforce-toolkit-changelog) --- ### Salesforce SDKに汎用メソッドを追加 **Type:** changelog | **Section:** Changelog Salesforce SDKに汎用メソッドを追加 Box for Salesforce Developer Toolkitは、パラメータとしてHttpRequestオブジェクトを受け取り、HttpResponseオブジェクトを返すグローバルメソッドsendRequest… # Salesforce SDKに汎用メソッドを追加 Box for Salesforce Developer Toolkitは、パラメータとして[`HttpRequest`](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_httprequest.htm)オブジェクトを受け取り、[`HttpResponse`](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_httpresponse.htm#apex_classes_restful_http_httpresponse)オブジェクトを返すグローバルメソッド`sendRequest`を提供するようになりました。このメソッドは、サービスアカウントの認証の詳細を使用してBoxのAPIを呼び出すため、統合のビジネスロジックの組み込みに集中することができます。追加されたメソッドの詳細については、Salesforce Developer ToolkitドキュメントのBoxメタデータサイドバーの[メソッドの詳細](guide://tooling/sdks/salesforce)および[サンプルコード](guide://tooling/sdks/salesforce)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2018-08-16-generic-method-added-to-the-salesforce-sdk](https://ja.developer.box.com/changelog/2018-08-16-generic-method-added-to-the-salesforce-sdk) --- ### Salesforceツールキット - フローアクション **Type:** changelog | **Section:** Changelog Salesforceツールキット - フローアクション Salesforceツールキットには、管理者がメソッドを呼び出す際に使用できるラッパーが用意されています。このツールキットを使用すると、Box for SalesforceユーザーはSalesforce… # Salesforceツールキット - フローアクション Salesforceツールキットには、管理者が[メソッド](g://tooling/salesforce-toolkit/flow-actions)を呼び出す際に使用できるラッパーが用意されています。このツールキットを使用すると、Box for Salesforceユーザーは[Salesforceフロー](https://help.salesforce.com/s/articleView?id=sf.flow.htm&type=5)を使用して、自動化ソリューション (フォルダ構造など) を構築できます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-01-11-salesforce-toolkit-flow-actions](https://ja.developer.box.com/changelog/2023-01-11-salesforce-toolkit-flow-actions) --- ### Salesforceツールキット - 統合マッピング **Type:** changelog | **Section:** Changelog Salesforceツールキット - 統合マッピング Salesforceツールキットの新しいメソッドとフローアクションで統合マッピングを使用できるようになりました。統合マッピングにより、デフォルトのフォルダではなく、企業の任意のフォルダにSlackチャンネルをマッピングできます。 # Salesforceツールキット - 統合マッピング Salesforceツールキットの新しい[メソッド](g://tooling/salesforce-toolkit/methods/#salesforce_and_slack)と[フローアクション](g://tooling/salesforce-toolkit/flow-actions)で[統合マッピング](g://integration-mappings/slack-mappings)を使用できるようになりました。[統合マッピング](r://integration-mappings)により、デフォルトのフォルダではなく、企業の任意のフォルダにSlackチャンネルをマッピングできます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-10-02-salesforce-toolkit-method-update](https://ja.developer.box.com/changelog/2023-10-02-salesforce-toolkit-method-update) --- ### SDKにおけるクライアント資格情報のサポート **Type:** changelog | **Section:** Changelog SDKにおけるクライアント資格情報のサポート Boxの.NETおよびJava SDKでは、クライアント資格情報許可による認証がサポートされるようになりました。今後数週間のうちに他のSDKのサポートもリリースする予定です。 # SDKにおけるクライアント資格情報のサポート Boxの[`.NET`](https://github.com/box/box-windows-sdk-v2)および[`Java`](https://github.com/box/box-java-sdk) SDKでは、クライアント資格情報許可による認証がサポートされるようになりました。今後数週間のうちに他のSDKのサポートもリリースする予定です。 2020年11月に、カスタムアプリケーション向けにクライアント資格情報という新しい認証タイプをリリースしました。今回は、その新しいタイプについてSDKのサポートのリリースを開始しました。 ## 更新内容 - [クライアント資格情報のガイドページ](g://authentication/client-credentials/)で新しいサンプルタグと例を追加。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-02-16-client-credentials-support-in-the-sdks](https://ja.developer.box.com/changelog/2022-02-16-client-credentials-support-in-the-sdks) --- ### SDKのサポート対象バージョンのお知らせ **Type:** changelog | **Section:** Changelog SDKのサポート対象バージョンのお知らせ 日本時間2022年7月31日以降、サポートされるSDKは最新のメジャーバージョンのみになります。新機能、バグ修正、セキュリティ更新は、最新のメジャーバージョンのみに追加されます。 # SDKのサポート対象バージョンのお知らせ 日本時間2022年7月31日以降、サポートされるSDKは最新の**メジャー**バージョンのみになります。新機能、バグ修正、セキュリティ更新は、最新の**メジャー**バージョンのみに追加されます。 最新のリリースは、SDK開発の最先端を進んでいるため、積極的に開発に取り組み、最新の優れた機能を求めているお客様向けです。Boxでは、新機能のリリース日を指定するのではなく、修正したマイナーリリースやパッチリリースの周期を最大2~3か月に設定しました (ただし、リリースの頻度は高くなる可能性もあります)。それに加えて、メジャーリリースまたは重大なリリースのスケジュールはありません。代わりに、お客様がアップグレードを計画できるように、今後予定されている重大な変更について1四半期前にお知らせする予定です。使用しているメジャーバージョンが何であっても、すべてのユーザーが入手可能な最新のマイナーリリースを実行することを常にお勧めしています。また、正式サポートが終了する前の都合がよいタイミングで最新のSDKメジャーバージョンにアップグレードすることを強くお勧めします。 すべての変更には[セマンティックバージョニング](https://semver.org/)の修正版を使用しています。詳細については、[バージョン戦略](https://github.com/box/box-windows-sdk-v2/blob/main/VERSIONS.md)を参照してください。 ## 各SDKのサポート対象バージョン すべてのSDKのサポート対象バージョンの表へのリンクを以下に示します。 - [Python](https://github.com/box/box-python-sdk#version-schedule) - [.NET](https://github.com/box/box-windows-sdk-v2#supported-version) - [Java](https://github.com/box/box-java-sdk#version-schedule) - [node](https://github.com/box/box-node-sdk#supported-version) - [CLI](https://github.com/box/boxcli#supported-version) - [iOS](https://github.com/box/box-ios-sdk#supported-version) ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-03-16-announcing-sdk-supported-versions](https://ja.developer.box.com/changelog/2022-03-16-announcing-sdk-supported-versions) --- ### Shieldの不審な場所に関するアラートの新しいイベントパラメータ **Type:** changelog | **Section:** Changelog Shieldの不審な場所に関するアラートの新しいイベントパラメータ Shieldの不審な場所に関する自動応答のリリースに伴い、Shieldアラートイベントのレスポンスにrule_response_actionパラメータを追加しました。このパラメータは、各Shieldアラートイベントのペイロードで返されますが、不審な場所に関するアラートイベントにしか適用できません。 # Shieldの不審な場所に関するアラートの新しいイベントパラメータ Shieldの不審な場所に関する自動応答のリリースに伴い、[Shieldアラートイベント](g://events/event-triggers/shield-alert-events/#suspicious-locations-alert)のレスポンスに`rule_response_action`パラメータを追加しました。このパラメータは、各Shieldアラートイベントのペイロードで返されますが、**不審な場所**に関するアラートイベントにしか適用できません。 パラメータの値は、管理コンソールの [**ターゲットユーザーのアクセス制限**] のルール設定によって異なります。 - アクティブな場合、アラートがトリガーされると、パラメータの値は`true`になります。 - 非アクティブな場合、アラートがトリガーされると、パラメータの値は`false`になります。 その他すべてのShieldアラート (**異常なダウンロード**、**悪意のあるコンテンツ**、**不審なセッション**) では、`rule_response_action`パラメータは常に`null`になります。 詳細については、[不審な場所のルールの設定](https://support.box.com/hc/en-us/articles/9090542213395-Shield-Threat-Detection-Rule-Settings#h_01GE85EWQ1TS5APY7RGN801QSC)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-01-19-rule-response-action-param-added%20copy](https://ja.developer.box.com/changelog/2024-01-19-rule-response-action-param-added%20copy) --- ### Shieldの不審な場所に関するアラートの新しいイベントパラメータ **Type:** changelog | **Section:** Changelog Shieldの不審な場所に関するアラートの新しいイベントパラメータ Shieldの不審な場所に関する自動応答のリリースに伴い、Shieldアラートイベントのレスポンスにrule_response_actionパラメータを追加しました。このパラメータは、各Shieldアラートイベントのペイロードで返されますが、不審な場所に関するアラートイベントにしか適用できません。 # Shieldの不審な場所に関するアラートの新しいイベントパラメータ Shieldの不審な場所に関する自動応答のリリースに伴い、[Shieldアラートイベント](g://events/event-triggers/shield-alert-events/#suspicious-locations-alert)のレスポンスに`rule_response_action`パラメータを追加しました。このパラメータは、各Shieldアラートイベントのペイロードで返されますが、**不審な場所**に関するアラートイベントにしか適用できません。 パラメータの値は、管理コンソールの [**ターゲットユーザーのアクセス制限**] のルール設定によって異なります。 - アクティブな場合、アラートがトリガーされると、パラメータの値は`true`になります。 - 非アクティブな場合、アラートがトリガーされると、パラメータの値は`false`になります。 その他すべてのShieldアラート (**異常なダウンロード**、**悪意のあるコンテンツ**、**不審なセッション**) では、`rule_response_action`パラメータは常に`null`になります。 詳細については、[不審な場所のルールの設定](https://support.box.com/hc/en-us/articles/9090542213395-Shield-Threat-Detection-Rule-Settings#h_01GE85EWQ1TS5APY7RGN801QSC)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-01-19-rule-response-action-param-added](https://ja.developer.box.com/changelog/2024-01-19-rule-response-action-param-added) --- ### Shield情報バリアの導入 **Type:** changelog | **Section:** Changelog Shield情報バリアの導入 情報バリアは、利益相反や潜在的な法的問題につながる可能性のあるコミュニケーションを防止します。たとえば、管理者は情報バリアを使用して、異なるプロジェクトで作業するチームを分け、特定のグループに制限されたコンテンツでのコラボレーションを防ぐことができます。 # Shield情報バリアの導入 情報バリアは、利益相反や潜在的な法的問題につながる可能性のあるコミュニケーションを防止します。たとえば、管理者は情報バリアを使用して、異なるプロジェクトで作業するチームを分け、特定のグループに制限されたコンテンツでのコラボレーションを防ぐことができます。 ## Shield情報バリアAPI Shield情報バリアでは、以下の処理が可能な新しいAPIを利用できます: - [Shield情報バリア](r://shield-information-barrier)の作成、管理、リストの取得 - [Shield情報バリアのセグメント](r://shield-information-barrier-segment)の作成、更新、削除、リストの取得 - [Shield情報バリアのセグメント制限](r://shield-information-barrier-segment-restriction)の作成、削除、リストの取得 - [Shield情報バリアのセグメントメンバー](r://shield-information-barrier-segment-member)の作成、削除、リストの取得 - [Shield情報バリアレポート](r://shield-information-barrier-report)の作成とリストの取得 ## Shield情報バリアイベント 情報バリアを設定すると、以下のイベントが作成されます: - バリアのアクティブ化または非アクティブ化など、ユーザーが情報バリアを構成したときにトリガーされるイベント。 - 制限されたフォルダへの項目の移動や、制限されたグループへのユーザーの追加など、制限されたアクションをユーザーが実行したときにトリガーされるイベント。 すべてのイベントのリストについては、[Shield情報バリアイベントトリガー](g://events/event-triggers/shield-information-barrier-events)リファレンスを参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-10-28-information-barrier](https://ja.developer.box.com/changelog/2022-10-28-information-barrier) --- ### Signイベントペイロードへの新しいフィールドの追加 **Type:** changelog | **Section:** Changelog Signイベントペイロードへの新しいフィールドの追加 additional_details Signイベントペイロードに、複数の受信者に一度に送信される署名リクエストを識別するためのbatch_sendが含まれるようになりました。そのような一括送信リクエストが存在する場合、ペイロードはそのidも提供します。 # Signイベントペイロードへの新しいフィールドの追加 `additional_details` Signイベントペイロードに、複数の受信者に一度に送信される署名リクエストを識別するための`batch_send`が含まれるようになりました。そのような一括送信リクエストが存在する場合、ペイロードはその`id`も提供します。 ## 更新内容 - 新しいフィールド`batch_send`を[Signイベント](g://events/event-triggers/sign-events)の`additional_details`ペイロードに追加しました。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-05-06-new-sign-events-payload-field](https://ja.developer.box.com/changelog/2022-05-06-new-sign-events-payload-field) --- ### Slack統合マッピング **Type:** changelog | **Section:** Changelog Slack統合マッピング Slack統合マッピングガイドで、Box Enterprise管理者が、Slackチャンネルのアップロードフォルダをカスタマイズして、デフォルトのフォルダを使用する代わりに企業内の任意のフォルダに変更する方法を確認できます。 Box API… # Slack統合マッピング [Slack統合マッピング](g://integration-mappings/slack-mappings)ガイドで、Box Enterprise管理者が、Slackチャンネルのアップロードフォルダをカスタマイズして、デフォルトのフォルダを使用する代わりに企業内の任意のフォルダに変更する方法を確認できます。 Box APIを使用することで、Slack統合マッピングの[作成](e://post_integration_mappings_slack)、[リストの取得](e://get_integration_mappings_slack)、[更新](e://update_integration_mappings_slack)、[削除](e://delete_integration_mappings_slack)が可能です。 [自動化スクリプト](https://github.com/box/boxcli/tree/main/examples/Integration%20Mappings)を使用して、管理者は一度に複数のマッピングを作成または更新できます。 発生する可能性が高い一般的な問題に対する解決策については、[トラブルシューティング](g://integration-mappings/slack-mappings/troubleshooting)セクションをご確認ください。 ## サポートを受けるための新しい場所 今後は新しい[Box Developer Communityフォーラム](https://forum.box.com/)で質問したり、ガイダンスを受けたりすることができます。この新しいフォーラムを利用すると、Box Developer Relationsチーム、同僚、Boxに関するエキスパートと直接会話できます。 **Source:** [https://ja.developer.box.com/changelog/2023-06-26-integration-mappings-guide](https://ja.developer.box.com/changelog/2023-06-26-integration-mappings-guide) --- ### StarterプランでBox Signを使用できるようになりました **Type:** changelog | **Section:** Changelog StarterプランでBox Signを使用できるようになりました Free、Personal Pro、StarterプランでBox Signを使用できるようになりました。 # StarterプランでBox Signを使用できるようになりました Free、Personal Pro、Starterプランで[Box Sign](g://box-sign)を使用できるようになりました。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-08-29-box-sign-available-for-starter](https://ja.developer.box.com/changelog/2022-08-29-box-sign-available-for-starter) --- ### Task (Assignment) APIのレスポンスの変更 **Type:** changelog | **Section:** Changelog Task (Assignment) APIのレスポンスの変更 タスクを取得エンドポイントおよびタスク割り当てを取得エンドポイントのAPIレスポンスの更新がリリースされました。 この変更の前は、有効なタスクID… # Task (Assignment) APIのレスポンスの変更 [タスクを取得](endpoint://get-tasks-id)エンドポイントおよび[タスク割り当てを取得](endpoint://get-task-assignments-id)エンドポイントのAPIレスポンスの更新がリリースされました。 この変更の前は、有効なタスクIDでタスクまたはタスク割り当てを取得する呼び出しを実行したときに、そのファイルが削除されているか、自分の権限が変更されてファイルを表示できなくなっていると、タスクがファイルとともに削除されたという404エラーが返されていました。 この新しい変更により、返されるレスポンスは404エラーレスポンスではなく、その項目が存在するものとする`null`レスポンスを持つタスクオブジェクトになります。 **Source:** [https://ja.developer.box.com/changelog/2019-04-15-changes-to-task-assignment-api-responses](https://ja.developer.box.com/changelog/2019-04-15-changes-to-task-assignment-api-responses) --- ### Tasks APIで新たにサポートされる値 **Type:** changelog | **Section:** Changelog Tasks APIで新たにサポートされる値 6月26日に、新しいタスクタイプである一般タスクのサポートが開始されました。タスクを作成または更新する際に、actionフィールドが、承認タスクの場合はreviewに、新しい一般タスクの場合はcomplete… # Tasks APIで新たにサポートされる値 6月26日に、新しいタスクタイプである一般タスクのサポートが開始されました。タスクを作成または更新する際に、`action`フィールドが、承認タスクの場合は`review`に、新しい一般タスクの場合は`complete`になります。 この変更は、タスク割り当ての更新時に使用できる値にも影響します。承認/レビュータスクを更新する場合、`resolution_state`を`incomplete`、`approved`、または`rejected`に設定できます。一般/完了タスクには、`incomplete`または`completed`の`resolution_state`を指定できます。 Tasks APIのレスポンスの本文内では、タスクに「一般」や「承認」という分類が付けられません。これは、BoxのUIでのみ反映されます。 ドキュメントは[こちら](endpoint://resources/task/)で参照できます。 **Source:** [https://ja.developer.box.com/changelog/2019-06-26-new-supported-values-in-tasks-api](https://ja.developer.box.com/changelog/2019-06-26-new-supported-values-in-tasks-api) --- ### Teams統合マッピング **Type:** changelog | **Section:** Changelog Teams統合マッピング MS Teamsの統合マッピング機能を使用して、Teamsのチャネルやチャットのコンテンツが保存されるBox内の場所を管理します。 すべてのTeams統合マッピングのリストを取得 新しいTeams統合マッピングを作成 既存のTeams… # Teams統合マッピング MS Teamsの[統合マッピング](r://integration-mapping-teams)機能を使用して、[Teamsのチャネルやチャットのコンテンツが保存されるBox内の場所](https://support.box.com/hc/en-us/articles/360050737154-Assigning-a-Default-Box-Folder-to-a-Teams-Channel-or-Chat)を管理します。 - すべてのTeams統合マッピングの[リストを取得](r://get-integration-mappings-teams) - 新しいTeams統合マッピングを[作成](r://post-integration-mappings-teams) - 既存のTeams統合マッピングを[更新](r://put-integration-mappings-teams-id) - Teams統合マッピングを[削除](r://delete-integration-mappings-teams-id) この機能の詳細については、Teams統合マッピングAPIの開発者向け[ガイド](g://integration-mappings/teams-mappings/index)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-03-12-teams-integration-mappings](https://ja.developer.box.com/changelog/2025-03-12-teams-integration-mappings) --- ### TLS 1.0非推奨の完了 **Type:** changelog | **Section:** Changelog TLS 1.0非推奨の完了 2019年5月13日に、Box APIへのTLS 1.0リクエストを無効にするプロセスが開始されました。今後、すべてのTLS 1.0 APIリクエストが、API… # TLS 1.0非推奨の完了 2019年5月13日に、Box APIへのTLS 1.0リクエストを無効にするプロセスが開始されました。今後、すべてのTLS 1.0 APIリクエストが、APIコールの実行時に安全な接続を確立できなかったことを示すレスポンスを返します。 影響を受ける開発者には、これまで6~12か月にわたって複数のチャネルを通じて通知してきましたが、アプリケーションに影響がある場合は、BoxにAPIリクエストを再度送信できるようにシステムを更新する必要があります。 システムをTLS 1.2にアップグレードするには、TLS 1.0の公式サポート終了ガイドを参照してください。 質問や追加のサポートについては、[サポートチケットをお送りください](https://community.box.com/t5/custom/page/page-id/BoxSearchLithiumTKB)。 **Source:** [https://ja.developer.box.com/changelog/2019-05-15-tls-10-deprecated-complete](https://ja.developer.box.com/changelog/2019-05-15-tls-10-deprecated-complete) --- ### Users APIでマーカーベースのページネーションがサポート対象に **Type:** changelog | **Section:** Changelog Users APIでマーカーベースのページネーションがサポート対象に Users API… # Users APIでマーカーベースのページネーションがサポート対象に [Users API](e://get_users)で[マーカーベースのページネーション](g://api-calls/pagination/marker-based)がサポートされるようになりました。マーカーベースのページネーションとは、通常のオフセットベースのページネーションに代わるもので、多数のユーザーを有する会社のユーザーを取得する代替手段を提供します。 **Source:** [https://ja.developer.box.com/changelog/2019-12-05-marker-based-pagination-support-for-users-api](https://ja.developer.box.com/changelog/2019-12-05-marker-based-pagination-support-for-users-api) --- ### Webhookのレスポンスの更新 **Type:** changelog | **Section:** Changelog Webhookのレスポンスの更新 Webhookのレスポンスは、entriesの配列で適切なWebhook (Mini) オブジェクトを示すように更新されました。 # Webhookのレスポンスの更新 [Webhookのレスポンス](e://get-webhooks)は、entriesの配列で適切なWebhook (Mini) オブジェクトを示すように更新されました。 ## バグ修正 - [Webhook](e://resources/webhook--mini)用に`mini`リソースを追加 - [Webhookを取得](e://get-webhooks)のレスポンスオブジェクトを修正 **Source:** [https://ja.developer.box.com/changelog/2021-10-07-update-to-webhooks-response](https://ja.developer.box.com/changelog/2021-10-07-update-to-webhooks-response) --- ### Windows .NET SDK `v3.10.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.10.0のリリース メタデータカスケードポリシーの機能を追加 nuget.org/packages/Box.V2 nuget.org/packages/Box.V2.Core # Windows .NET SDK v3.10.0のリリース 1. メタデータカスケードポリシーの機能を追加 [`nuget.org/packages/Box.V2`](https://www.nuget.org/packages/Box.V2) [`nuget.org/packages/Box.V2.Core`](https://www.nuget.org/packages/Box.V2.Core/) **Source:** [https://ja.developer.box.com/changelog/2018-12-14-windows-net-sdk-v3100-release](https://ja.developer.box.com/changelog/2018-12-14-windows-net-sdk-v3100-release) --- ### Windows .NET SDK `v3.11.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.11.0のリリース より多くのグループフィールドの読み取りと書き込みのサポートを追加 共有リンクのUnsharedAtフィールドをnull… # Windows .NET SDK v3.11.0のリリース - より多くのグループフィールドの読み取りと書き込みのサポートを追加 - 共有リンクの`UnsharedAt`フィールドを`null`に設定できない問題を修正 - 新しいバージョンのアップロード時のファイル名の変更を修正 - ファイルバージョンのアップロード時にコンテンツ変更のタイムスタンプを設定する機能を追加 - ソース項目がウェブリンクの場合のイベントのソースの読み取りに関する問題を修正 [`nuget.org/packages/Box.V2/3.11.0`](https://www.nuget.org/packages/Box.V2/3.11.0) [`nuget.org/packages/Box.V2.Core/3.11.0`](https://www.nuget.org/packages/Box.V2.Core/3.11.0) **Source:** [https://ja.developer.box.com/changelog/2019-01-18-windows-net-sdk-v3110-release](https://ja.developer.box.com/changelog/2019-01-18-windows-net-sdk-v3110-release) --- ### Windows .NET SDK `v3.12.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.12.0のリリース ファイルのコラボレーションのコレクション全体をページングできるようにclient.FilesManager.GetCollaborationsCollectionAsync()と非推奨のclient… # Windows .NET SDK v3.12.0のリリース - ファイルのコラボレーションのコレクション全体をページングできるように`client.FilesManager.GetCollaborationsCollectionAsync()`と非推奨の`client.FilesManager.GetCollaborationsAsync()`を追加 - `client.WebLinksManager.CopyAsync()`、`client.WebLinksManager.CreateSharedLinkAsync()`、および`client.WebLinksManager.DeleteSharedLinkAsync()`を追加 - ユーザーのアバター画像を取得するための`client.UsersManager.GetUserAvatarAsync()`を追加 [`nuget.org/packages/Box.V2/3.12.0`](https://www.nuget.org/packages/Box.V2/3.12.0) [`nuget.org/packages/Box.V2.Core/3.12.0`](https://www.nuget.org/packages/Box.V2.Core/3.12.0) **Source:** [https://ja.developer.box.com/changelog/2019-02-08-windows-net-sdk-v3120-release](https://ja.developer.box.com/changelog/2019-02-08-windows-net-sdk-v3120-release) --- ### Windows .NET SDK `v3.13.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.13.0のリリース BoxCollaborationオブジェクトに.InviteEmailプロパティを追加。このプロパティは、保留中のコラボレーションで招待されたユーザーのメールアドレスを表示します。 BoxUser… # Windows .NET SDK v3.13.0のリリース - `BoxCollaboration`オブジェクトに`.InviteEmail`プロパティを追加。このプロパティは、保留中のコラボレーションで招待されたユーザーのメールアドレスを表示します。 - `BoxUser`オブジェクトに`.Timezone`、`.IsExternalCollabRestricted`、`.Tags`、および`.Hostname`プロパティを追加 [`nuget.org/packages/Box.V2/3.13.0`](https://www.nuget.org/packages/Box.V2/3.13.0) [`nuget.org/packages/Box.V2.Core/3.13.0`](https://www.nuget.org/packages/Box.V2.Core/3.13.0) **Source:** [https://ja.developer.box.com/changelog/2019-02-14-windows-net-sdk-v3130-release](https://ja.developer.box.com/changelog/2019-02-14-windows-net-sdk-v3130-release) --- ### Windows .NET SDK `v3.13.1`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.13.1のリリース イベントに関連した一部のオブジェクトで.IdプロパティがJSONから正しく逆シリアル化されていない問題を修正 nuget.org/packages/Box.V2/3.13.1 nuget.org/packages/Box… # Windows .NET SDK v3.13.1のリリース - イベントに関連した一部のオブジェクトで`.Id`プロパティがJSONから正しく逆シリアル化されていない問題を修正 [`nuget.org/packages/Box.V2/3.13.1`](https://www.nuget.org/packages/Box.V2/3.13.1) [`nuget.org/packages/Box.V2.Core/3.13.1`](https://www.nuget.org/packages/Box.V2.Core/3.13.1) **Source:** [https://ja.developer.box.com/changelog/2019-02-21-windows-net-sdk-v3131-release](https://ja.developer.box.com/changelog/2019-02-21-windows-net-sdk-v3131-release) --- ### Windows .NET SDK `v3.14.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.14.0のリリース APIレスポンスの例外メッセージにトレースIDが追加されました。 変換されたタスク割り当てステータスの逆シリアル化を修正 nuget.org/packages/Box.V2/3.14.0 nuget.org… # Windows .NET SDK v3.14.0のリリース - APIレスポンスの例外メッセージにトレースIDが追加されました。 - 変換されたタスク割り当てステータスの逆シリアル化を修正 [`nuget.org/packages/Box.V2/3.14.0`](https://www.nuget.org/packages/Box.V2/3.14.0) [`nuget.org/packages/Box.V2.Core/3.14.0`](https://www.nuget.org/packages/Box.V2.Core/3.14.0) **Source:** [https://ja.developer.box.com/changelog/2019-03-01-windows-net-sdk-v3140-release](https://ja.developer.box.com/changelog/2019-03-01-windows-net-sdk-v3140-release) --- ### Windows .NET SDK `v3.14.1`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.14.1のリリース サンプルファイルから不要なpackage.configが削除されました。 nuget.org/packages/Box.V2/3.14.1 nuget.org/packages/Box.V2.Core/3.14.1 # Windows .NET SDK v3.14.1のリリース - サンプルファイルから不要な`package.config`が削除されました。 [`nuget.org/packages/Box.V2/3.14.1`](https://www.nuget.org/packages/Box.V2/3.14.1) [`nuget.org/packages/Box.V2.Core/3.14.1`](https://www.nuget.org/packages/Box.V2.Core/3.14.1) **Source:** [https://ja.developer.box.com/changelog/2019-03-07-windows-net-sdk-v3141-release](https://ja.developer.box.com/changelog/2019-03-07-windows-net-sdk-v3141-release) --- ### Windows .NET SDK `v3.15.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.15.0のリリース カスタムIBoxServiceをBoxJWTAuthコンストラクタに渡すためのサポートが追加されました。 nuget.org/packages/Box.V2/3.15.0 nuget.org/packages/Box.V… # Windows .NET SDK v3.15.0のリリース - カスタム`IBoxService`を`BoxJWTAuth`コンストラクタに渡すためのサポートが追加されました。 [`nuget.org/packages/Box.V2/3.15.0`](https://www.nuget.org/packages/Box.V2/3.15.0) [`nuget.org/packages/Box.V2.Core/3.15.0`](https://www.nuget.org/packages/Box.V2.Core/3.15.0) **Source:** [https://ja.developer.box.com/changelog/2019-03-28-windows-net-sdk-v3150-release](https://ja.developer.box.com/changelog/2019-03-28-windows-net-sdk-v3150-release) --- ### Windows .NET SDK `v3.16.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.16.0のリリース 並べ替え順を制御するためにsortおよびdirectionパラメータをclient.SearchManager.SearchAsync()に追加 返されるサムネイル形式を制御するためにextension… # Windows .NET SDK v3.16.0のリリース - 並べ替え順を制御するために`sort`および`direction`パラメータを`client.SearchManager.SearchAsync()`に追加 - 返されるサムネイル形式を制御するために`extension`パラメータを`client.FilesManager.GetThumbnailAsync()`に追加 (`@guilmori`に感謝します)。 - クエリ文字列パラメータが正しくエンコードされなかったバグを修正 - メタデータのキーと値を設定し、指定されたキーの既存の値を上書きする`SetFileMetadataAsync()`および`SetFolderMetadataAsync()`メソッドが`client.MetadataManager`に追加されました。 - APIが一時的なエラーステータスコードで応答した場合にほとんどのAPIコールを自動的に再試行 [`nuget.org/packages/Box.V2/3.16.0`](https://www.nuget.org/packages/Box.V2/3.16.0) [`nuget.org/packages/Box.V2.Core/3.16.0`](https://www.nuget.org/packages/Box.V2.Core/3.16.0) **Source:** [https://ja.developer.box.com/changelog/2019-04-29-windows-net-sdk-v3160-release](https://ja.developer.box.com/changelog/2019-04-29-windows-net-sdk-v3160-release) --- ### Windows .NET SDK `v3.17.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.17.0のリリース イベントと検索のエンドポイントのクエリパラメータでの日付のエンコードを修正 FilesManager.DownloadStreamAsync… # Windows .NET SDK v3.17.0のリリース - イベントと検索のエンドポイントのクエリパラメータでの日付のエンコードを修正 - `FilesManager.DownloadStreamAsync()`のサポートを終了し、バイトオフセットに適切なパラメータ型が設定された後継のメソッド`FilesManager.DownloadAsync()`を導入 [`nuget.org/packages/Box.V2/3.17.0`](https://www.nuget.org/packages/Box.V2/3.17.0) [`nuget.org/packages/Box.V2.Core/3.17.0`](https://www.nuget.org/packages/Box.V2.Core/3.17.0) **Source:** [https://ja.developer.box.com/changelog/2019-05-09-windows-net-sdk-v3170-release](https://ja.developer.box.com/changelog/2019-05-09-windows-net-sdk-v3170-release) --- ### Windows .NET SDK `v3.18.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.18.0のリリース 詳細については、変更ログを参照してください。コミット: v3.17.0...v3.18.0 nuget.org/packages/Box.V2/3.18.0 nuget.org/packages/Box.V2.Core… # Windows .NET SDK v3.18.0のリリース 詳細については、[変更ログ](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3180)を参照してください。コミット: [`v3.17.0...v3.18.0`](https://github.com/box/box-windows-sdk-v2/compare/%60v3.17.0...v3.18.0%60) [`nuget.org/packages/Box.V2/3.18.0`](https://www.nuget.org/packages/Box.V2/3.18.0) [`nuget.org/packages/Box.V2.Core/3.18.0`](https://www.nuget.org/packages/Box.V2.Core/3.18.0) **Source:** [https://ja.developer.box.com/changelog/2019-06-20-windows-net-sdk-v3180-release](https://ja.developer.box.com/changelog/2019-06-20-windows-net-sdk-v3180-release) --- ### Windows .NET SDK `v3.19.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.19.0のリリース 詳細については、変更ログを参照してください。コミット: v3.18.0...v3.19.0 nuget.org/packages/Box.V2/3.19.0 nuget.org/packages/Box.V2.Core… # Windows .NET SDK v3.19.0のリリース 詳細については、[変更ログ](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3190)を参照してください。コミット: [`v3.18.0...v3.19.0`](https://github.com/box/box-windows-sdk-v2/compare/%60v3.18.0...v3.19.0%60) [`nuget.org/packages/Box.V2/3.19.0`](https://www.nuget.org/packages/Box.V2/3.19.0) [`nuget.org/packages/Box.V2.Core/3.19.0`](https://www.nuget.org/packages/Box.V2.Core/3.19.0) **Source:** [https://ja.developer.box.com/changelog/2019-08-29-windows-net-sdk-v3190-release](https://ja.developer.box.com/changelog/2019-08-29-windows-net-sdk-v3190-release) --- ### Windows .NET SDK `v3.20.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.20.0のリリース 詳細については、変更ログを参照してください。コミット: v3.19.0...v3.20.0 nuget.org/packages/Box.V2/3.20.0 nuget.org/packages/Box.V2.Core… # Windows .NET SDK v3.20.0のリリース 詳細については、[変更ログ](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3200)を参照してください。コミット: [`v3.19.0...v3.20.0`](https://github.com/box/box-windows-sdk-v2/compare/%60v3.19.0...v3.20.0%60) [`nuget.org/packages/Box.V2/3.20.0`](https://www.nuget.org/packages/Box.V2/3.20.0) [`nuget.org/packages/Box.V2.Core/3.20.0`](https://www.nuget.org/packages/Box.V2.Core/3.20.0) **Source:** [https://ja.developer.box.com/changelog/2019-09-19-windows-net-sdk-v3200-release](https://ja.developer.box.com/changelog/2019-09-19-windows-net-sdk-v3200-release) --- ### Windows .NET SDK `v3.21.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.21.0のリリース 詳細については、変更ログを参照してください。コミット: v3.20.0...v3.21.0 nuget.org/packages/Box.V2/3.21.0 nuget.org/packages/Box.V2.Core… # Windows .NET SDK v3.21.0のリリース 詳細については、[変更ログ](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3210)を参照してください。コミット: [`v3.20.0...v3.21.0`](https://github.com/box/box-windows-sdk-v2/compare/%60v3.20.0...v3.21.0%60) [`nuget.org/packages/Box.V2/3.21.0`](https://www.nuget.org/packages/Box.V2/3.21.0) [`nuget.org/packages/Box.V2.Core/3.21.0`](https://www.nuget.org/packages/Box.V2.Core/3.21.0) **Source:** [https://ja.developer.box.com/changelog/2019-12-06-windows-net-sdk-v3210-release](https://ja.developer.box.com/changelog/2019-12-06-windows-net-sdk-v3210-release) --- ### Windows .NET SDK `v3.22.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.22.0のリリース 詳細については、変更ログを参照してください。コミット: v3.21.0...v3.22.0 nuget.org/packages/Box.V2/3.22.0 nuget.org/packages/Box.V2.Core… # Windows .NET SDK v3.22.0のリリース 詳細については、[変更ログ](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3220-2020-02-25)を参照してください。コミット: [`v3.21.0...v3.22.0`](https://github.com/box/box-windows-sdk-v2/compare/%60v3.21.0...v3.22.0%60) [`nuget.org/packages/Box.V2/3.22.0`](https://www.nuget.org/packages/Box.V2/3.22.0) [`nuget.org/packages/Box.V2.Core/3.22.0`](https://www.nuget.org/packages/Box.V2.Core/3.22.0) **Source:** [https://ja.developer.box.com/changelog/2020-02-25-windows-net-sdk-v3220-release](https://ja.developer.box.com/changelog/2020-02-25-windows-net-sdk-v3220-release) --- ### Windows .NET SDK `v3.23.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.23.0のリリース 詳細については、変更ログを参照してください。コミット: v3.22.0...v3.23.0 nuget.org/packages/Box.V2/3.23.0 nuget.org/packages/Box.V2.Core… # Windows .NET SDK v3.23.0のリリース 詳細については、[変更ログ](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#3230-2020-05-12)を参照してください。コミット: [`v3.22.0...v3.23.0`](https://github.com/box/box-windows-sdk-v2/compare/%60v3.22.0...v3.23.0%60) [`nuget.org/packages/Box.V2/3.23.0`](https://www.nuget.org/packages/Box.V2/3.23.0) [`nuget.org/packages/Box.V2.Core/3.23.0`](https://www.nuget.org/packages/Box.V2.Core/3.23.0) **Source:** [https://ja.developer.box.com/changelog/2020-05-12-windows-net-sdk-v3230-release](https://ja.developer.box.com/changelog/2020-05-12-windows-net-sdk-v3230-release) --- ### Windows .NET SDK `v3.4.1`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.4.1のリリース 許可されたコラボレーションドメインのサポートを追加。イベントタイプ列挙型を追加。BoxRepresentationStatusでの逆シリアル化の問題を修正 nuget.org/packages/Box.V2/3.4.… # Windows .NET SDK v3.4.1のリリース [許可されたコラボレーションドメイン](r://collaboration_allowlist_entry)のサポートを追加。イベントタイプ列挙型を追加。`BoxRepresentationStatus`での逆シリアル化の問題を修正 [`nuget.org/packages/Box.V2/3.4.1`](https://www.nuget.org/packages/Box.V2/3.4.1) [`nuget.org/packages/Box.V2.Core/3.4.1`](https://www.nuget.org/packages/Box.V2.Core/3.4.1) **Source:** [https://ja.developer.box.com/changelog/2018-01-10-windows-net-sdk-v341-release](https://ja.developer.box.com/changelog/2018-01-10-windows-net-sdk-v341-release) --- ### Windows .NET SDK `v3.4.2`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.4.2のリリース NuSpecファイルのBox SDKバージョンを更新し、Box V2およびBox V2.Coreの依存関係の問題を修正しました。 nuget.org/packages/Box.V2/3.4.2 nuget.org… # Windows .NET SDK v3.4.2のリリース `NuSpec`ファイルのBox SDKバージョンを更新し、`Box V2`および`Box V2.Core`の依存関係の問題を修正しました。 [`nuget.org/packages/Box.V2/3.4.2`](https://www.nuget.org/packages/Box.V2/3.4.2) [`nuget.org/packages/Box.V2.Core/3.4.2`](https://www.nuget.org/packages/Box.V2.Core/3.4.2) **Source:** [https://ja.developer.box.com/changelog/2018-01-31-windows-net-sdk-v342-release](https://ja.developer.box.com/changelog/2018-01-31-windows-net-sdk-v342-release) --- ### Windows .NET SDK `v3.5.1`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.5.1のリリース SDKがレート制限またはサーバーエラーレスポンスを受信したときに指数バックオフに切り替えられました。 Box APIへの接続のセキュリティを強化するため、可能な場合はTLS v1.… # Windows .NET SDK v3.5.1のリリース - SDKがレート制限またはサーバーエラーレスポンスを受信したときに指数バックオフに切り替えられました。 - Box APIへの接続のセキュリティを強化するため、可能な場合はTLS `v1.1`以上のサポートを強制します。 - ローカルのクロックとBoxサーバーのクロックが一致しない場合、およびJWT IDがすでに使用されている場合にJWT認証で変更された再試行を実行します。 - `RestoreTrashedAsync()`の`name`パラメータが省略可能になりました。 [`nuget.org/packages/Box.V2/3.5.1`](https://www.nuget.org/packages/Box.V2/3.5.1) [`nuget.org/packages/Box.V2.Core/3.5.1`](https://www.nuget.org/packages/Box.V2.Core/3.5.1) **Source:** [https://ja.developer.box.com/changelog/2018-03-15-windows-net-sdk-v351-release](https://ja.developer.box.com/changelog/2018-03-15-windows-net-sdk-v351-release) --- ### Windows .NET SDK `v3.5.2`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.5.2のリリース .NET Coreパッケージを修正 nuget.org/packages/Box.V2/3.5.2 nuget.org/packages/Box.V2.Core/3.5.2 # Windows .NET SDK v3.5.2のリリース .NET Coreパッケージを修正 [`nuget.org/packages/Box.V2/3.5.2`](https://www.nuget.org/packages/Box.V2/3.5.2) [`nuget.org/packages/Box.V2.Core/3.5.2`](https://www.nuget.org/packages/Box.V2.Core/3.5.2) **Source:** [https://ja.developer.box.com/changelog/2018-03-21-windows-net-sdk-v352-release](https://ja.developer.box.com/changelog/2018-03-21-windows-net-sdk-v352-release) --- ### Windows .NET SDK `v3.6.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.6.0のリリース 変更ログ nuget.org/packages/Box.V2/3.6.0 nuget.org/packages/Box.V2.Core # Windows .NET SDK v3.6.0のリリース [変更ログ](https://github.com/box/box-windows-sdk-v2/blob/master/CHANGELOG.md#360) [`nuget.org/packages/Box.V2/3.6.0`](https://www.nuget.org/packages/Box.V2/3.6.0) [`nuget.org/packages/Box.V2.Core`](https://www.nuget.org/packages/Box.V2.Core) **Source:** [https://ja.developer.box.com/changelog/2018-03-27-windows-net-sdk-v360-release](https://ja.developer.box.com/changelog/2018-03-27-windows-net-sdk-v360-release) --- ### Windows .NET SDK `v3.7.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.7.0のリリース メタデータテンプレートにリテンションポリシーを割り当てるためのサポートを追加 列挙型にCONTENT_ACCESSイベントタイプを追加 nuget.org/packages/Box.V2/3.7.0 nuget.org… # Windows .NET SDK v3.7.0のリリース 1. メタデータテンプレートにリテンションポリシーを割り当てるためのサポートを追加 2. 列挙型に`CONTENT_ACCESS`イベントタイプを追加 [`nuget.org/packages/Box.V2/3.7.0`](https://www.nuget.org/packages/Box.V2/3.7.0) [`nuget.org/packages/Box.V2.Core/3.7.0`](https://www.nuget.org/packages/Box.V2.Core/3.7.0) **Source:** [https://ja.developer.box.com/changelog/2018-04-11-windows-net-sdk-v370-release](https://ja.developer.box.com/changelog/2018-04-11-windows-net-sdk-v370-release) --- ### Windows .NET SDK `v3.8.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.8.0のリリース ユーザーがXamarinにBoxClientを作成できない問題を修正 イベントのBoxLockオブジェクトにファイルプロパティを追加 メタデータテンプレートを削除するためのMetadataManager… # Windows .NET SDK v3.8.0のリリース - ユーザーが`Xamarin`に`BoxClient`を作成できない問題を修正 - イベントの`BoxLock`オブジェクトにファイルプロパティを追加 - メタデータテンプレートを削除するための`MetadataManager.DeleteMetadataTemplate(string scope, string template)`を追加 - `BoxConfig`でAPI URLが変更可能に - APIレスポンスエラーオブジェクト/メッセージを改善 [`nuget.org/packages/Box.V2/3.8.0`](https://www.nuget.org/packages/Box.V2/3.8.0) [`nuget.org/packages/Box.V2.Core/3.8.0`](https://www.nuget.org/packages/Box.V2.Core/3.8.0) **Source:** [https://ja.developer.box.com/changelog/2018-04-30-windows-net-sdk-v380-release](https://ja.developer.box.com/changelog/2018-04-30-windows-net-sdk-v380-release) --- ### Windows .NET SDK `v3.9.0`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.9.0のリリース ストレージポリシーのサポートを追加 nuget.org/packages/Box.V2/3.9.0 nuget.org/packages/Box.V2.Core/3.9.0 # Windows .NET SDK v3.9.0のリリース - ストレージポリシーのサポートを追加 [`nuget.org/packages/Box.V2/3.9.0`](https://www.nuget.org/packages/Box.V2/3.9.0) [`nuget.org/packages/Box.V2.Core/3.9.0`](https://www.nuget.org/packages/Box.V2.Core/3.9.0) **Source:** [https://ja.developer.box.com/changelog/2018-05-10-windows-net-sdk-v390-release](https://ja.developer.box.com/changelog/2018-05-10-windows-net-sdk-v390-release) --- ### Windows .NET SDK `v3.9.1`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.9.1のリリース Xamarinアプリケーションの接続が切れるバグが修正されました。 nuget.org/packages/Box.V2/3.9.1 nuget.org/packages/Box.V2.Core/3.9.1 # Windows .NET SDK v3.9.1のリリース Xamarinアプリケーションの接続が切れるバグが修正されました。 [`nuget.org/packages/Box.V2/3.9.1`](https://www.nuget.org/packages/Box.V2/3.9.1) [`nuget.org/packages/Box.V2.Core/3.9.1`](https://www.nuget.org/packages/Box.V2.Core/3.9.1) **Source:** [https://ja.developer.box.com/changelog/2018-06-07-windows-net-sdk-v391-release](https://ja.developer.box.com/changelog/2018-06-07-windows-net-sdk-v391-release) --- ### Windows .NET SDK `v3.9.2`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.9.2のリリース コラボレータの招待をフォルダの所有者以外に許可するフラグの設定のサポートが追加されました。 nuget.org/packages/Box.V2/3.9.2 nuget.org/packages/Box.V2.Core/… # Windows .NET SDK v3.9.2のリリース 1. コラボレータの招待をフォルダの所有者以外に許可するフラグの設定のサポートが追加されました。 [`nuget.org/packages/Box.V2/3.9.2`](https://www.nuget.org/packages/Box.V2/3.9.2) [`nuget.org/packages/Box.V2.Core/3.9.2`](https://www.nuget.org/packages/Box.V2.Core/3.9.2) **Source:** [https://ja.developer.box.com/changelog/2018-06-14-windows-net-sdk-v392-release](https://ja.developer.box.com/changelog/2018-06-14-windows-net-sdk-v392-release) --- ### Windows .NET SDK `v3.9.3`のリリース **Type:** changelog | **Section:** Changelog Windows .NET SDK v3.9.3のリリース アセンブリに厳密な名前付け nuget.org/packages/Box.V2/3.9.3 nuget.org/packages/Box.V2.Core/3.9.3 # Windows .NET SDK v3.9.3のリリース - アセンブリに厳密な名前付け [`nuget.org/packages/Box.V2/3.9.3`](https://www.nuget.org/packages/Box.V2/3.9.3) [`nuget.org/packages/Box.V2.Core/3.9.3`](https://www.nuget.org/packages/Box.V2.Core/3.9.3) **Source:** [https://ja.developer.box.com/changelog/2018-09-04-windows-net-sdk-v393-release](https://ja.developer.box.com/changelog/2018-09-04-windows-net-sdk-v393-release) --- ### アプリケーションに影響を及ぼす可能性があるBox APIレスポンスヘッダーの変更 **Type:** changelog | **Section:** Changelog アプリケーションに影響を及ぼす可能性があるBox APIレスポンスヘッダーの変更 日本時間2021年5月11日に、インフラストラクチャの継続的なアップグレードの一環として、BoxのAPIレスポンスヘッダーが業界のベストプラクティスとAPIドキュメントに従って標準化され、常に小文字で返されるようになります。 この変更は、以下の影響を及ぼす可能性があります。 Salesforce SDK v1のユーザーは、影響を受けるため、最新のSDKバージョンにアップグレードする必要があります。アップグレードしなかった場合、2021年5月10日を過ぎると、Box Salesforce統合は機能しなくなります。 Box APIのユーザーで、Box SDKのいずれも使用していない場合は影響を受ける可能性があるため、コード全体でヘッダーの使用状況を確認する必要があります。ヘッダーの使用状況によっては、調整しないと、Box API統合で中断が生じる可能性があります。 影響を受ける可能性があるユーザーとアプリケーション管理者全員に、メールで直接通知済みです。 # アプリケーションに影響を及ぼす可能性があるBox APIレスポンスヘッダーの変更 日本時間2021年5月11日に、インフラストラクチャの継続的なアップグレードの一環として、BoxのAPIレスポンスヘッダーが業界のベストプラクティスとAPIドキュメントに従って標準化され、常に小文字で返されるようになります。 この変更は、以下の影響を及ぼす可能性があります。 - [Salesforce SDK `v1`](https://github.com/box/box-salesforce-sdk/releases/tag/1.0.0)のユーザーは、影響を受けるため、最新のSDKバージョンにアップグレードする必要があります。アップグレードしなかった場合、2021年5月10日を過ぎると、Box Salesforce統合は機能しなくなります。 - Box APIのユーザーで、[Box SDK](pages://sdks-and-tools)のいずれも使用していない場合は影響を受ける可能性があるため、コード全体でヘッダーの使用状況を確認する必要があります。ヘッダーの使用状況によっては、調整しないと、Box API統合で中断が生じる可能性があります。 影響を受ける可能性があるユーザーとアプリケーション管理者全員に、メールで直接通知済みです。 ## 変更の概要 上記のリターンヘッダー (`location`や`retry-after`など) を使用しているアプリケーションでは、そのアプリケーションが大文字小文字を区別せずにこれらのヘッダーをチェックしているかを確認することが必要になります。この1年間で、Boxは自社のネットワークおよび可観測性のインフラストラクチャをアップグレードしてきました。このようなアップグレードでは、お客様のためにBoxの製品の信頼性と利用可能性の向上を目標としています。この具体的な変更により、Boxは、更新されたサービスプロキシを展開できるようになるため、サービストラフィックの監視強化、問題点の迅速な特定、アプリケーションパフォーマンスのチューニングを実現できます。 ## APIをご利用の場合: アプリケーションへの影響の確認 使用するアプリケーションが影響を受けるかどうかを確認するには、コードのレビューが必要になります。Box公式SDKのいずれかをBox APIへの接続だけに使用している場合は影響を受けません。SDKでは、大文字小文字を区別せずにレスポンスヘッダーが処理されるためです。 影響を受けているかどうかを確認するには、以下の手順に従います。 - Box APIリクエストからのレスポンスを処理するアプリケーションコードを特定します。これらのレスポンスからレスポンスヘッダーを抽出しなければ、影響を受けることはありません。 - このようなレスポンスヘッダーを抽出する場合、ヘッダーの大文字小文字を区別する必要があると、影響を受ける可能性があります。 たとえば、`Location`ヘッダーの先頭が大文字`L`で返されること (つまり、特定の文字による文字列の直接比較) を想定している場合は、変更後に中断されないようにコードを修正する必要があります。 ## APIをご利用の場合: 変更方法 影響を受けるアプリケーションを更新するには、これらのレスポンスヘッダーを確認する際に大文字小文字を区別しないようにしてください。具体的には、ヘッダー (`Location`など) が送信される際に先頭が大文字`L`でも小文字`l`でも同様に処理されるよう、慎重にコードを作成する必要があります。たとえば、このプロセスを処理するための2つの方法として、確認する前にすべてのヘッダーを強制的に小文字にするか、大文字小文字を区別しない正規表現による文字列チェックを使用することができます。 ## Salesforce SDK v1をご利用の場合: アプリケーションへの影響の確認 Box Salesforce SDKの`v1.0`を使用しているかどうかわからない場合は、アプリケーションコード内で、Box Salesforce SDKを格納している場所に移動し、以下の手順を実行します。 次のSalesforce SDKファイルを読み込む: `src/classes/BoxApiRequest.cls` 以下の行 ([6~7行目](https://github.com/box/box-salesforce-sdk/compare/1.0.0...v1.1.0#diff-1855f83ffd4977e5b9e4bfc167154f2e11b0161fd6c380502c48082b6837b0af)) を探す。 ``` public final static String HEADER_LOCATION_LOWER_CASE = 'location'; public final static String HEADER_LOCATION_CAPITALIZED = 'Location'; ``` 上記の行が存在する場合は、使用しているSalesforce SDKは`v1.1.0`以降です。この場合は影響を受けず、変更も必要ありません。上記の行が存在しない場合、使用しているSalesforce SDKは`v1.0`です。この場合は影響を受けるため、更新する必要があります。 ## Salesforce SDK v1をご利用の場合: 変更方法 影響を受けるアプリケーションを更新するには、使用しているSalesforce SDKのバージョンを更新する必要があります。[最新バージョン](https://github.com/box/box-salesforce-sdk)のSDKへのアップグレードをお勧めしますが、アプリケーションに影響がないようにするには、[`v1.1.0`以降](https://github.com/box/box-salesforce-sdk/releases)であればどれでも十分です。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxサポートチームに[チケットを申請](https://support.box.com/hc/en-us/requests/new)するか、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-02-05-box-api-response-header-changes](https://ja.developer.box.com/changelog/2021-02-05-box-api-response-header-changes) --- ### アプリケーション向けのPlatformインサイト **Type:** changelog | **Section:** Changelog アプリケーション向けのPlatformインサイト 管理者と共同管理者は、Platformインサイトのダッシュボードを使用して、組織におけるアプリケーション関連の情報を含むプラットフォームの利用状況を集約できるようになりました。Platformインサイトでは、APIコール数や、まだ有効になっていない、または承認されていないアプリケーションの数を確認できます。さらに、企業で最も使用されているアプリも確認できます。 詳細については、アプリケーションとPlatformインサイトに関するドキュメントを参照してください。 # アプリケーション向けのPlatformインサイト 管理者と共同管理者は、Platformインサイトのダッシュボードを使用して、組織におけるアプリケーション関連の情報を含むプラットフォームの利用状況を集約できるようになりました。Platformインサイトでは、APIコール数や、まだ有効になっていない、または承認されていないアプリケーションの数を確認できます。さらに、企業で最も使用されているアプリも確認できます。 詳細については、[アプリケーション](g://applications)と[Platformインサイト](https://support.box.com/hc/en-us/articles/20738406915219-Platform-Insights)に関するドキュメントを参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-10-03-platform-insights](https://ja.developer.box.com/changelog/2023-10-03-platform-insights) --- ### アプリと統合の命名規則の変更 **Type:** changelog | **Section:** Changelog アプリと統合の命名規則の変更 Box Platformの明確さと一貫性の改善のため、アプリと統合の命名規則を変更しました。 開発者 旧名称 新名称 場所 App Center 公開 Box統合のカタログに公開するためにPlatformアプリを送信するタブ 統合 Boxウェブ統合 Boxウェブアプリ内にサードパーティ製アプリケーションのボタンを定義するタブ カスタムアプリ Platformアプリ 開発者コンソール # アプリと統合の命名規則の変更 Box Platformの明確さと一貫性の改善のため、アプリと統合の命名規則を変更しました。 ## 開発者 | 旧名称 | 新名称 | 場所 | | --- | --- | --- | | App Center | 公開 | Box統合のカタログに公開するためにPlatformアプリを送信するタブ | | 統合 | Boxウェブ統合 | Boxウェブアプリ内にサードパーティ製アプリケーションのボタンを定義するタブ | | カスタムアプリ | Platformアプリ | 開発者コンソール | ## 管理者 | 旧名称 | 新名称 | 場所 | | --- | --- | --- | | アプリ | 統合 | 管理コンソール | | カスタムアプリマネージャ | Platformアプリマネージャ | 管理コンソール | | カスタムアプリ | Platformアプリ | 管理コンソール | ## Box Shield | 旧名称 | 新名称 | 場所 | | --- | --- | --- | | アプリケーションの制限ポリシー | 統合の制限 | 制限ポリシー | | Shieldのアプリケーション | Shieldの統合 | Shieldの統合一覧 | | アプリケーション | 統合 | 検出ルール | ## ユーザー | 旧名称 | 新名称 | 場所 | | --- | --- | --- | | アプリ | 統合 | Boxウェブアプリのタブ | ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-11-12-naming-change-apps-integrations](https://ja.developer.box.com/changelog/2024-11-12-naming-change-apps-integrations) --- ### アプリ項目の関連付け **Type:** changelog | **Section:** Changelog アプリ項目の関連付け アプリ項目の関連付けAPIを使用すると、特定のファイルまたはフォルダと関連があるアプリ項目を確認できます。これには、当該ファイルまたはフォルダの先祖に関連付けられているアプリ項目も含まれます。 # アプリ項目の関連付け [アプリ項目の関連付けAPI](r://app-item-association)を使用すると、特定のファイルまたはフォルダと関連があるアプリ項目を確認できます。これには、当該ファイルまたはフォルダの先祖に関連付けられているアプリ項目も含まれます。 [アプリ項目](r://app-item)とは、アプリケーションが所有するコンテンツオブジェクトです。さまざまなパスからファイルやフォルダをまとめてグループ化でき、そのセットは、コラボレーションを利用して共有できます。 [アプリ項目の関連付け](r://app-item-associations)とは、ファイルやフォルダとアプリ項目のつながりです。フォルダとアプリ項目の関連付けは、そのフォルダのすべての子孫にカスケードされます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-09-16-app-item-associations](https://ja.developer.box.com/changelog/2024-09-16-app-item-associations) --- ### イベントAPIで分類の名前フィールドが追加 **Type:** changelog | **Section:** Changelog イベントAPIで分類の名前フィールドが追加 コンテンツに分類が存在する場合、イベントAPIにより、レスポンスオブジェクトで分類のnameフィールドが返されるようになりました。 # イベントAPIで分類の名前フィールドが追加 コンテンツに分類が存在する場合、[イベント](e://get-events/)APIにより、レスポンスオブジェクトで分類の`name`フィールドが返されるようになりました。 - イベントソースのレスポンスオブジェクトの更新については、[こちら](e://resources/event-source/)を参照してください。 - ユーザーソースおよびイベントソースによってトリガーされるイベントの例を紹介するために新しい[ガイドページ](g://events/event-triggers/event-source)が追加されました。 機能強化前と機能強化後のレスポンスの例を以下に示します。分類が存在しない場合は機能強化前の例が返されることに注意してください。 機能強化前: ``` { "source": { "item_type": "file", "item_id": "8903212345", "item_name": "example.docx", "parent": { "type": "folder", "name": "All Files", "id": "0" }, "owned_by": { "type": "user", "id": "11446498", "name": "Aaron Levie", "login": "notifications@example.com" } } } ``` 機能強化後: ``` { "source": { "item_type": "file", "item_id": "8903212345", "item_name": "example.docx", "parent": { "type": "folder", "name": "All Files", "id": "0" }, "owned_by": { "type": "user", "id": "11446498", "name": "Aaron Levie", "login": "notifications@example.com" }, "classification": { "name": "Top Secret" } } } ``` ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-09-01-classification-name-field-now-in-events](https://ja.developer.box.com/changelog/2021-09-01-classification-name-field-now-in-events) --- ### ウェブアプリ統合でのサーバー側の処理のサポート終了 **Type:** changelog | **Section:** Changelog ウェブアプリ統合でのサーバー側の処理のサポート終了 日本時間12月2日に、OAuth 2.0ウェブアプリ統合で、事前コールバックのURLまたはサーバー側統合を作成するためのオプションを利用できなくなりました。 # ウェブアプリ統合でのサーバー側の処理のサポート終了 日本時間12月2日に、OAuth 2.0ウェブアプリ統合で、事前コールバックのURLまたはサーバー側統合を作成するためのオプションを利用できなくなりました。 ## 今後の手順 アプリケーションでサーバー側統合を構成済みの場合は、引き続き動作します。この機能の使用を停止するか、設定を調整する場合は、[こちらのドキュメント](https://cloud.app.box.com/file/958463673555?s=uwk4jvanbofom2ckvk9q0wcnkc2vxqdy)で回避策とサポートについてご確認ください。 ウェブアプリ統合の詳細については、[ガイド](g://applications/web-app-integrations/)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-12-01-server-server-service-action-eol](https://ja.developer.box.com/changelog/2022-12-01-server-server-service-action-eol) --- ### ウェブアプリ統合ドキュメントの改善 **Type:** changelog | **Section:** Changelog ウェブアプリ統合ドキュメントの改善 開発者コンソールからの情報をすべて反映するよう、カスタムアプリを使用したウェブアプリ統合の作成に関するドキュメントを更新しました。 # ウェブアプリ統合ドキュメントの改善 開発者コンソールからの情報をすべて反映するよう、カスタムアプリを使用した[ウェブアプリ統合](g://applications/web-app-integrations/configure)の作成に関するドキュメントを更新しました。 ## 更新内容 - **アプリ情報**セクションのすべての要素に説明を追加しました。 - パラメータの構文に関する情報で**コールバックパラメータ**セクションを拡張しました。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-06-30-improvements-in-web-app-integrations-documentation](https://ja.developer.box.com/changelog/2022-06-30-improvements-in-web-app-integrations-documentation) --- ### カスタムアプリの詳細の追加 **Type:** changelog | **Section:** Changelog カスタムアプリの詳細の追加 カスタムアプリの目的を明確にし、企業に価値をもたらすため、カスタムアプリをより詳細に説明できる機能を追加しました。 OAuth、JWT、またはクライアント資格情報を使用してカスタムアプリを設定する際、アプリの目的と作成者を指定できます。また、アプリを外部システムと統合する場合は、統合のカテゴリを定義して外部システムの詳細を入力できます。 # カスタムアプリの詳細の追加 [カスタムアプリ](g://applications/app-types/platform-apps)の目的を明確にし、企業に価値をもたらすため、カスタムアプリをより詳細に説明できる機能を追加しました。 [OAuth](g://authentication/oauth2/oauth2-setup)、[JWT](g://authentication/jwt/jwt-setup)、または[クライアント資格情報](g://authentication/client-credentials/client-credentials-setup)を使用してカスタムアプリを設定する際、アプリの目的と作成者を指定できます。また、アプリを外部システムと統合する場合は、統合のカテゴリを定義して外部システムの詳細を入力できます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-04-17-new-custom-app-modal](https://ja.developer.box.com/changelog/2023-04-17-new-custom-app-modal) --- ### クライアント資格情報許可による認証のお知らせ **Type:** changelog | **Section:** Changelog # クライアント資格情報許可による認証のお知らせ JWTアプリケーションの新しい認証方法がリリースされました。この新しい方法であるクライアント資格情報許可は、既存のアプリケーションに影響を及ぼすことはありませんが、新しいアプリに対してより簡単な認証方法を提供します。これまで、アプリケーションのIDを確認してアクセストークンを取得するために公開/秘密キーペアとアサーションが必要でしたが、クライアントIDとクライアントシークレットだけでトークンをリクエストできるようになりました。 ``` curl --location --request POST ‘https://api.box.com/oauth2/token’ \ --header ‘Content-Type: application/x-www-form-urlencoded’ \ --data-urlencode ‘client_id=<client_id>’ \ --data-urlencode ‘client_secret=<client_secret>’ \ --data-urlencode ‘grant_type=client_credentials’ \ --data-urlencode ‘box_subject_type=enterprise’ \ --data-urlencode ‘box_subject_id=<enterprise_id>’ ``` 詳細については、Boxの[ガイド](g://authentication/jwt/without-sdk/#client-credentials-grant)を参照してください。 ## 更新内容 - 新しいアプリケーション用の認証オプションとしてクライアント資格情報許可を追加しました - クライアントシークレットのコピー/表示に2要素認証の要件を追加しました - Enterpriseの承認リクエストに選択した認証方法を追加しました - 認証タイプを変更する機能を削除しました **Source:** [https://ja.developer.box.com/changelog/2020-11-17-client-credentials-grant](https://ja.developer.box.com/changelog/2020-11-17-client-credentials-grant) --- ### グループAPIで新しいフィルタと権限を追加 **Type:** changelog | **Section:** Changelog グループAPIで新しいフィルタと権限を追加 GET /groups APIでは、新しいfilter_termフィールドを使用して、名前でグループにフィルタをかけられるようになりました。 さらに、グループのすべてのエンドポイントにより、開発者は、新しいpermissions… # グループAPIで新しいフィルタと権限を追加 [`GET /groups`](e://get_groups) APIでは、新しい`filter_term`フィールドを使用して、名前でグループにフィルタをかけられるようになりました。 ``` curl -i -X GET "https://api.box.com/2.0/groups?filter_term=Engineering" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` さらに、グループのすべてのエンドポイントにより、開発者は、新しい[`permissions`](r://group--full/#param-permissions)フィールドをリクエストできるようになりました。このフィールドには、現在、認証済みユーザーが任意の項目にグループを招待できるかどうかを定義する属性が1つあります。 ``` curl -i -X GET "https://api.box.com/2.0/groups?field=permissions" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ``` { "total_count": 1, "entries": [ { "type": "group", "id": "223353242", "permissions": { "can_invite_as_collaborator": true } } ], "limit": 100, "offset": 0 } ``` グループの操作方法の詳細については、[`Group API documentation`](e://get_groups)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2020-09-10-group-api-adds-new-filter-and-permissions](https://ja.developer.box.com/changelog/2020-09-10-group-api-adds-new-filter-and-permissions) --- ### クロスオリジンリソース共有 (CORS) ドキュメントの更新 **Type:** changelog | **Section:** Changelog クロスオリジンリソース共有 (CORS) ドキュメントの更新 クロスオリジンリソース共有 (CORS) に関するドキュメントを更新しました。 更新内容 Access-Control-Allow-Origin… # クロスオリジンリソース共有 (CORS) ドキュメントの更新 [クロスオリジンリソース共有 (CORS)](g://security/cors) に関するドキュメントを更新しました。 ## 更新内容 `Access-Control-Allow-Origin`ヘッダーの問題が発生した場合の対処方法の情報を追加しました。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、Boxの[開発者向けフォーラム](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-07-06-cors-documentation-update](https://ja.developer.box.com/changelog/2022-07-06-cors-documentation-update) --- ### クロスオリジンリソース共有 (CORS) ドキュメントの更新 **Type:** changelog | **Section:** Changelog クロスオリジンリソース共有 (CORS) ドキュメントの更新 クロスオリジンリソース共有 (CORS) に関するドキュメントを更新しました。 更新内容 Access-Control-Allow-Origin… # クロスオリジンリソース共有 (CORS) ドキュメントの更新 [クロスオリジンリソース共有 (CORS)](g://security/cors) に関するドキュメントを更新しました。 ## 更新内容 `Access-Control-Allow-Origin`ヘッダーの問題が発生した場合の対処方法の情報を追加しました。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-07-06-cors-issues](https://ja.developer.box.com/changelog/2022-07-06-cors-issues) --- ### コラボレーションで廃止されたフィールドを置き換え **Type:** changelog | **Section:** Changelog コラボレーションで廃止されたフィールドを置き換え 2018年に、新しいフィールドacceptance_requirements_statusがGETコラボレーション/ID APIエンドポイントに追加され、追加の通知ユースケースがサポートされるようになりました。このフィールドには、サービス利用規約、2要素認証、強力なパスワードの要件が含まれます。サービス利用規約の要件のみを含む既存のacceptance_requirementsフィールドは、新しいacceptance_requirements_statusに置き換えられました。 # コラボレーションで廃止されたフィールドを置き換え 2018年に、新しいフィールド`acceptance_requirements_status`がGETコラボレーション/ID APIエンドポイントに追加され、追加の通知ユースケースがサポートされるようになりました。このフィールドには、サービス利用規約、2要素認証、強力なパスワードの要件が含まれます。サービス利用規約の要件のみを含む既存の`acceptance_requirements`フィールドは、新しい`acceptance_requirements_status`に置き換えられました。 以前は、`GET /collaboration/<collaboration_id>?fields=acceptance_requirements`への呼び出しで以下のようなオブジェクトが返されていました。 ``` "acceptance_requirements": {     "terms_of_service": {         "type": "terms_of_service",         "id": <tos_id>     } } ``` 新しいフィールドを使用すると、リクエスト`GET /collaboration/<collaboration_id>?fields=acceptance_requirements_status`は以下を返します。 ``` "acceptance_requirements_status": { "terms_of_service_requirement": { "is_accepted": true, "terms_of_service": { "type": "terms_of_service", "id": <tos_id> } }, "strong_password_requirement": { "enterprise_has_strong_password_required_for_external_users": true, "user_has_strong_password": false }, "two_factor_authentication_requirement": { "enterprise_has_two_factor_auth_enabled": true, "user_has_two_factor_authentication_enabled" true } } ``` **Source:** [https://ja.developer.box.com/changelog/2019-05-31-replaced-obsolete-field-in-collaborations](https://ja.developer.box.com/changelog/2019-05-31-replaced-obsolete-field-in-collaborations) --- ### コラボレーションに未登録ユーザーを表示 **Type:** changelog | **Section:** Changelog コラボレーションに未登録ユーザーを表示 ファイルまたはフォルダのコラボレータとして未登録ユーザーが追加されている場合のために、コラボレーション戻りオブジェクトにフィールドinvite_emailが追加されました。現在返されるaccessible_byオブジェクトでは未登録ユーザーの結果としてnullが表示されることから、この変更が加えられました。新しいフィールドには、ユーザーの招待に使用されたメールアドレスが表示されます。 # コラボレーションに未登録ユーザーを表示 ファイルまたはフォルダのコラボレータとして未登録ユーザーが追加されている場合のために、コラボレーション戻りオブジェクトにフィールド`invite_email`が追加されました。現在返される`accessible_by`オブジェクトでは未登録ユーザーの結果として`null`が表示されることから、この変更が加えられました。新しいフィールドには、ユーザーの招待に使用されたメールアドレスが表示されます。 この変更は以下のエンドポイントに影響します。 - [コラボレーションを取得](endpoint://get-collaborations-id) - [ファイルコラボレーションを取得](endpoint://get-files-id-collaborations) - [フォルダコラボレーションを取得](endpoint://get-folders-id-collaborations) これまで、未登録ユーザーを含むコラボレーションオブジェクトは以下のように表示されていました。 ``` { "type": "collaboration", "id": "376164239", ..... "accessible_by": null ..... } ``` 今回の更新により、返されるオブジェクトは以下のように表示されます。 ``` { "type": "collaboration", "id": "376164239", ...... "accessible_by": null "invite_email": "sadfasdf@box.com", }, ...... } ``` **Source:** [https://ja.developer.box.com/changelog/2018-12-12-collaborations-now-show-unregistered-users](https://ja.developer.box.com/changelog/2018-12-12-collaborations-now-show-unregistered-users) --- ### コンテンツアクセスに関するEnterprise Eventの変更 **Type:** changelog | **Section:** Changelog コンテンツアクセスに関するEnterprise Eventの変更 本日以降、Enterprise Event Streamは、新しいコンテンツアクセスイベントの生成を開始します。 新しいCONTENT_ACCESS… # コンテンツアクセスに関するEnterprise Eventの変更 本日以降、[Enterprise Event Stream](g://events/enterprise-events/for-enterprise/)は、新しいコンテンツアクセスイベントの生成を開始します。 新しい`CONTENT_ACCESS`イベントは、ファイルに承認済みのユーザーがアクセスしたか、プログラムによってBoxアプリケーションがアクセスしたときにトリガーされます。 その他のイベントタイプの詳細については、[Enterprise Event](g://events/enterprise-events/for-enterprise/)に関するドキュメントを参照してください。 **Source:** [https://ja.developer.box.com/changelog/2020-07-16-change-to-enterprise-events-for-content-access](https://ja.developer.box.com/changelog/2020-07-16-change-to-enterprise-events-for-content-access) --- ### コンテンツエクスプローラのメタデータビュー **Type:** changelog | **Section:** Changelog コンテンツエクスプローラのメタデータビュー コンテンツエクスプローラで、メタデータクエリを使用してファイルやフォルダを検索できるメタデータビューを使用できるようになりました。データは埋め込みのビューに表示されます。 # コンテンツエクスプローラのメタデータビュー コンテンツエクスプローラで、メタデータクエリを使用してファイルやフォルダを検索できるメタデータビューを使用できるようになりました。データは埋め込みのビューに表示されます。 詳細については、[コンテンツエクスプローラのガイド](g://embed/ui-elements/explorer)とBoxの[ブログ記事](https://medium.com/box-developer-blog/metadata-view-in-box-content-explorer-4978e47e97e9)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-02-02-metadata-view-content-explorer](https://ja.developer.box.com/changelog/2024-02-02-metadata-view-content-explorer) --- ### コンテンツエクスプローラのメタデータビュー`v2` **Type:** changelog | **Section:** Changelog コンテンツエクスプローラのメタデータビューv2 Box Content Explorer UI Elementのメタデータビューのv2を導入しました。元のバージョンのデザインが根本から変更されており、メタデータ駆動型ワークフローに合わせて合理化されたインターフェースが導入されています。 主な機能 メタデータフィールドのタイプごとに専用のUIを備えたフィルタおよび編集用のインターフェース リストビューとグリッドビューを使用した柔軟な表示オプション ページネーションのサポート # コンテンツエクスプローラのメタデータビューv2 [Box Content Explorer UI Elementのメタデータビュー](g://embed/ui-elements/explorer-metadata-v2)の`v2`を導入しました。元のバージョンのデザインが根本から変更されており、メタデータ駆動型ワークフローに合わせて合理化されたインターフェースが導入されています。 ## 主な機能 - メタデータフィールドのタイプごとに専用のUIを備えたフィルタおよび編集用のインターフェース - リストビューとグリッドビューを使用した柔軟な表示オプション - ページネーションのサポート ## v1からv2への移行 コンテンツエクスプローラのメタデータビューの`v1`は公式サポートが終了しているため、バグ修正や新機能は提供されなくなります。Boxでは、新しい`v2`のメタデータビューに移行することをお勧めします。詳細な手順については、[移行ガイド](g://embed/ui-elements/explorer-metadata-v2/#migrating-from-v1-to-v2)を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://community.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-09-24-metadata-view-enhancements](https://ja.developer.box.com/changelog/2025-09-24-metadata-view-enhancements) --- ### コンテンツプレビューUI Elementの新しい注釈 **Type:** changelog | **Section:** Changelog コンテンツプレビューUI Elementの新しい注釈 コンテンツのプレビューエクスペリエンス向上のため、プレビューUI Element… # コンテンツプレビューUI Elementの新しい注釈 コンテンツのプレビューエクスペリエンス向上のため、プレビューUI Elementに新しい注釈の種類のサポートを追加しました。カスタムアプリケーションでコンテンツをプレビューするエンドユーザーは、テキストのハイライトや描画など、追加の注釈の種類を利用できるようになりました。すべての注釈はリアルタイムで同期されます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-10-19-annotations-in-preview](https://ja.developer.box.com/changelog/2022-10-19-annotations-in-preview) --- ### サンプルコードカタログのリリース **Type:** changelog | **Section:** Changelog サンプルコードカタログのリリース Box Developerドキュメントポータルでサンプルコードカタログv1.0.… # サンプルコードカタログのリリース Box Developerドキュメントポータルで[サンプルコードカタログ](page/sample-code/)`v1.0.0`が利用可能になりました。さまざまなプログラミング言語のコードサンプルを閲覧し、カテゴリ別にフィルタできます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-02-08-sample-code-catalog-released](https://ja.developer.box.com/changelog/2023-02-08-sample-code-catalog-released) --- ### シンプルになったアプリ作成フロー **Type:** changelog | **Section:** Changelog シンプルになったアプリ作成フロー 新しくシンプルになったアプリ作成フローがBox開発者コンソールで使用できるようになりました。アプリケーションには、カスタムアプリ、アクセス制限付きアプリ、Box Custom Skillの3種類があります。 Box… # シンプルになったアプリ作成フロー 新しくシンプルになったアプリ作成フローがBox[開発者コンソール](https://app.box.com/developers/console)で使用できるようになりました。アプリケーションには、カスタムアプリ、アクセス制限付きアプリ、Box Custom Skillの3種類があります。 Boxでは、各種アプリを選択するタイミングを正確に説明するための平易な言葉と、選択に役立つ追加情報が必要な方のために関連するドキュメントへのリンクを追加しました。アプリケーションの種類の選択によって、使用できる認証方法に影響があります。 中でも注目すべきは、Boxの新しいアプリの種類であるアクセス制限付きアプリです。このアプリの種類は、[Box View](g://embed/box-view/)を使用したり、別のアプリケーション内でBoxのプレビューサービスを使用したりする場合に選択してください。この種類で利用できるのは、[APIの機能が制限されている](g://authentication/app-token/endpoints/)[アプリトークン認証](g://authentication/app-token/)のみです。詳細については、アプリの種類の選択に関する[ガイド](g://applications/app-types/select/)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2020-11-09-simplified-app-creation-flow](https://ja.developer.box.com/changelog/2020-11-09-simplified-app-creation-flow) --- ### タスクに関するEnterprise Eventの変更 **Type:** changelog | **Section:** Changelog タスクに関するEnterprise Eventの変更 本日以降、Enterprise Event Streamは、新しいタスクとタスク割り当てイベントの生成を開始します。一部の既存のタスクイベントでは追加のフィールドが返されます。 # タスクに関するEnterprise Eventの変更 本日以降、[Enterprise Event Stream](g://events/enterprise-events/for-enterprise/)は、新しいタスクとタスク割り当てイベントの生成を開始します。一部の既存のタスクイベントでは追加のフィールドが返されます。 ## 新しいイベント - タスクが更新されると、新しい`TASK_UPDATE`イベントがトリガーされます - ユーザーからタスクの割り当てが解除されると、新しい`TASK_ASSIGNMENT_DELETE`イベントがトリガーされます ## 更新されたイベント ### TASK_CREATEの変更 タスクが作成されたときに、このイベントでは、タスクのID (`task.id`)、タスクを作成したユーザーのID (`task.created_by.id`)、タスクの説明 (`task.message`)、およびタスクの期日 (`task.due_date`、省略可) が`additional_details`オブジェクト内に含まれるようになりました。 ``` "additional_details": { "task": { "id": "1234567", "due_at": "2020-07-06T10:49:44-07:00", "message": "task description", "created_by": { "id": 123456, "login": "email@example.com" }, ... } } ``` ### TASK_ASSIGNMENT_CREATEおよびTASK_ASSIGNMENT_UPDATEの変更 タスク割り当てが作成または更新されたときに、このイベントでは、タスクのID (`task.id`)、タスクを割り当てられたユーザーのID (`task_assignment.assigned_to.id`) とそのログイン (`task_assignment.assigned_to.login`)、タスクの説明 (`task.message`)、およびタスクの期日 (`task.due_date`、省略可) が`additional_details`オブジェクト内に含まれるようになりました。 ``` "additional_details": { "task": { "id": "1234567", "created_by": { "id": 12345, "login": "email@example.com" } }, "task_assignment": { "assigned_to": { "id": 12346, "login": "email+2@example.com" }, "status": "NOT_STARTED", "message": "assignee message" }, ... } ``` その他のイベントタイプの詳細については、[Enterprise Event](g://events/enterprise-events/for-enterprise/)に関するドキュメントを参照してください。 **Source:** [https://ja.developer.box.com/changelog/2020-06-11-change-to-enterprise-events-for-tasks](https://ja.developer.box.com/changelog/2020-06-11-change-to-enterprise-events-for-tasks) --- ### タスクの新しい`completion_rule`フィールド **Type:** changelog | **Section:** Changelog タスクの新しいcompletion_ruleフィールド タスクオブジェクトcompletion_rule… # タスクの新しいcompletion_ruleフィールド タスクオブジェクト`completion_rule`内で省略可能な新しいフィールドを使用できるようになりました。このフィールドは、[タスクを作成](endpoint://post-tasks)エンドポイントと[タスクを更新](endpoint://put-tasks-id)エンドポイントの使用時に設定でき、標準の[タスクオブジェクト](endpoint://resources/task/)の一部として返されます。 このフィールドの目的は、ユーザーの関与状況に基づいて、タスクが完了となる条件を設定することです。完了ルール`all_assignees`(デフォルト)を使用して作成されたタスクは、すべての担当者が作業を完了したときにのみ完了と見なされます。完了ルール`any_assignee`を使用して作成されたタスクは、1人の担当者が作業を完了すると完了と見なされます。 **Source:** [https://ja.developer.box.com/changelog/2019-09-11-new-completion_rule-field-for-tasks](https://ja.developer.box.com/changelog/2019-09-11-new-completion_rule-field-for-tasks) --- ### デフォルトのAIの構成の取得と上書き **Type:** changelog | **Section:** Changelog デフォルトのAIの構成の取得と上書き GET /2.0/ai_agent_defaultエンドポイントにより、AIサービスのデフォルトの構成を取得できるようになりました。 # デフォルトのAIの構成の取得と上書き [`GET /2.0/ai_agent_default`](e://get_ai_agent_default)エンドポイントにより、AIサービスのデフォルトの構成を取得できるようになりました。 構成の詳細を取得したら、[`POST /2.0/ai/ask`](e://post_ai_ask#param_ai_agent)および[`POST /2.0/ai/text_gen`](e://post_ai_text_gen#param_ai_agent)リクエストで利用可能な`ai_agent`パラメータを使用して構成を上書きできます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2024-07-25-box-ai-overrides](https://ja.developer.box.com/changelog/2024-07-25-box-ai-overrides) --- ### トークン無効化のための新しいセキュリティ強化 **Type:** changelog | **Section:** Changelog トークン無効化のための新しいセキュリティ強化 トークン無効化エンドポイントの機能が強化され、ダウンスコープされたトークンを有効期限が切れる前に無効化できるようになりました。この更新の前は、/revoke… # トークン無効化のための新しいセキュリティ強化 [トークン無効化](endpoint://post-oauth2-revoke/)エンドポイントの機能が強化され、[ダウンスコープされたトークン](g://authentication/tokens/downscope)を有効期限が切れる前に無効化できるようになりました。この更新の前は、/revokeエンドポイントを使用して、完全スコープのアクセストークンのみ無効化することができました。この新しい拡張機能により、完全スコープのアクセストークンに加えて、ダウンスコープされたトークンも無効化できるようになりました。 詳細については[こちら](https://medium.com/box-developer-blog/new-security-enhancements-for-revoking-access-tokens-79b9960a7ce2)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2019-09-18-new-security-enhancements-for-token-revocation](https://ja.developer.box.com/changelog/2019-09-18-new-security-enhancements-for-token-revocation) --- ### ファイルAPIを使用したリテンションポリシーの拡張 **Type:** changelog | **Section:** Changelog ファイルAPIを使用したリテンションポリシーの拡張 すでにリテンションの対象となっているファイルの保持期間を、新しいdisposition_atフィールドを使用して延長できるようになりました。日付を延長した場合は、元に戻すことも、新しい日付より前の日付に更新することもできません。 # ファイルAPIを使用したリテンションポリシーの拡張 すでにリテンションの対象となっているファイルの保持期間を、新しい`disposition_at`フィールドを使用して延長できるようになりました。日付を延長した場合は、元に戻すことも、新しい日付より前の日付に更新することもできません。 ## 更新内容 - [ファイル (Full) リソース](e://resources/file--full/#param-disposition_at)に`disposition_at`フィールドを追加 - [PUTファイルエンドポイント](e://put-files-id/#param-disposition_at)に`disposition_at`パラメータを追加 - [ガイドのリテンションポリシーセクション](g://retention-policies/#extend-retention-for-a-file)に注記を追加 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-11-03-extend-retention-via-files-api](https://ja.developer.box.com/changelog/2021-11-03-extend-retention-via-files-api) --- ### ファイルおよびファイルバージョンに新しい`uploader_display_name`を追加 **Type:** changelog | **Section:** Changelog ファイルおよびファイルバージョンに新しいuploader_display_nameを追加 新しいフィールドuploader_display_nameがファイルリソースとファイルバージョンリソースの両方に追加されました。このフィールドでは、アップロード時にユーザーの名前を指定します。 # ファイルおよびファイルバージョンに新しいuploader_display_nameを追加 新しいフィールド`uploader_display_name`がファイルリソースとファイルバージョンリソースの両方に追加されました。このフィールドでは、アップロード時にユーザーの名前を指定します。 ``` { ... "uploader_display_name": "Ellis Wiggins" } ``` このフィールドをファイルおよびファイルバージョンのエンドポイントのいずれかでリクエストするには、`fields`クエリパラメータを指定します。以下に例を示します。 ``` curl -X GET https://api.box.com/2.0/files/12345?fields=uploader_display_name \ -H 'Authorization: Bearer <ACCESS_TOKEN>' ``` ログアウトした匿名ユーザーがファイルをアップロードすると、そのユーザーのメールアドレスが返されます。使用可能なメールアドレスがない場合、このフィールドはデフォルトで`Someone`というテキストが設定されます。 **Source:** [https://ja.developer.box.com/changelog/2020-04-23-add-new-uploader_display_name-field-to-file-and-file-versions](https://ja.developer.box.com/changelog/2020-04-23-add-new-uploader_display_name-field-to-file-and-file-versions) --- ### ファイルサイズの上限の更新 **Type:** changelog | **Section:** Changelog ファイルサイズの上限の更新 本日、Boxの新しいBusinessプランとしてEnterprise Plusプランをリリースしました。このプランでは、最大150 GB… # ファイルサイズの上限の更新 本日、Boxの新しいBusinessプランとしてEnterprise Plusプランをリリースしました。このプランでは、最大150 GBのアップロードとダウンロードをサポートします。また、以下のとおり、一部の既存プランでもファイルサイズの上限をアップグレードしました。ご利用のアカウントのファイルサイズの上限を確認する方法については、[アップロードに関するガイド](g://uploads/direct)を参照してください。 ## 更新内容 - Enterprise: 50 GB - Digital Workplace Suite: 50 GB - Digital Workplace Global Suite: 50 GB - Digital Business Suite: 50 GB - Digital Business Global Suite: 50 GB - Enterprise Plus: 150 GB **Source:** [https://ja.developer.box.com/changelog/2021-07-16-updated-file-size-limits](https://ja.developer.box.com/changelog/2021-07-16-updated-file-size-limits) --- ### ファイルのアップロードAPIの更新 **Type:** changelog | **Section:** Changelog ファイルのアップロードAPIの更新 ファイルのアップロードAPIとダウンスコープされたトークンを使用してファイルをアップロードする際にセキュリティの脆弱性が生じる可能性があることを受け、親フォルダIDが見つかっても、リクエスト送信者にアクセス権限がない場合に、40… # ファイルのアップロードAPIの更新 [ファイルのアップロードAPI](g://uploads/direct)とダウンスコープされたトークンを使用してファイルをアップロードする際にセキュリティの脆弱性が生じる可能性があることを受け、親フォルダIDが見つかっても、リクエスト送信者にアクセス権限がない場合に、404エラーを返すようにファイルのアップロードAPIを更新します。 # サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-04-25-upload-api-update](https://ja.developer.box.com/changelog/2023-04-25-upload-api-update) --- ### ファイルの最大アップロードサイズの増加 **Type:** changelog | **Section:** Changelog ファイルの最大アップロードサイズの増加 以下のBoxアカウントプランで、APIを介してアップロードできる最大ファイルサイズが増加しました。 # ファイルの最大アップロードサイズの増加 以下のBoxアカウントプランで、APIを介してアップロードできる最大ファイルサイズが増加しました。 - Business Plus - Enterprise - Digital Workplace Suite - Digital Workplace Global Suite これまで、これらのアカウントの最大アップロードサイズは**5 GB**でした。このアップデートにより、最大ファイルサイズが**15 GB**に増加し、すぐに有効になります。 すべてのアカウントの最大ファイルサイズの詳細については、[直接アップロード](g://uploads/direct/)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2021-01-25-maximum-upload-file-size-limit-increases](https://ja.developer.box.com/changelog/2021-01-25-maximum-upload-file-size-limit-increases) --- ### ファイルの新しい`classification`フィールド **Type:** changelog | **Section:** Changelog ファイルの新しいclassificationフィールド Fieldオブジェクト内で、省略可能な新しいフィールドclassificationが使用できるようになりました。このフィールドは、現在ファイルに適用されている分類を表します。 # ファイルの新しいclassificationフィールド `Field`オブジェクト内で、省略可能な新しいフィールド`classification`が使用できるようになりました。このフィールドは、現在ファイルに適用されている分類を表します。 分類は、[ファイル情報の取得](endpoint://get-files-id)など、ファイルを返す任意のエンドポイントを介してリクエストでき、[追加`fields`のリクエスト](g://api-calls/request-extra-fields)をサポートします。 ``` { "id": "123456789", "type": "file", "etag": "1", "classification": {        "name": "Top Secret",        "definition": "Content that should not be shared outside the company.", "color": "#FF0000" }, ... } ``` 分類は、APIまたはBox Shieldを介して設定することも、ユーザーがウェブアプリケーションを使用して設定することもできます。 **Source:** [https://ja.developer.box.com/changelog/2020-04-23-new-classification-field-for-files](https://ja.developer.box.com/changelog/2020-04-23-new-classification-field-for-files) --- ### ファイルバージョンに新しいフィールドを追加 **Type:** changelog | **Section:** Changelog ファイルバージョンに新しいフィールドを追加 ファイルバージョンオブジェクト内で、省略可能な新しいフィールドtrashed_by、restored_by、およびrestored_at… # ファイルバージョンに新しいフィールドを追加 ファイルバージョンオブジェクト内で、省略可能な新しいフィールド`trashed_by`、`restored_by`、および`restored_at` が使用できるようになりました。 このフィールドは、標準の[ファイルバージョンオブジェクト](endpoint://resources/file-version/)の一部として返されます。 このフィールドの目的は、いつ、誰がファイルバージョンをごみ箱に移動したり、ごみ箱から出したりしたかを把握しやすくすることです。 **Source:** [https://ja.developer.box.com/changelog/2019-10-25-new-fields-for-file-versions](https://ja.developer.box.com/changelog/2019-10-25-new-fields-for-file-versions) --- ### フォルダを更新エンドポイントおよびフォルダ情報の取得エンドポイントに新しいフィールドを追加 **Type:** changelog | **Section:** Changelog フォルダを更新エンドポイントおよびフォルダ情報の取得エンドポイントに新しいフィールドを追加 フォルダを更新APIエンドポイントのis_collaboration_restricted_to_enterpriseに、… # フォルダを更新エンドポイントおよびフォルダ情報の取得エンドポイントに新しいフィールドを追加 [フォルダを更新APIエンドポイント](endpoint://put-folders-id)の`is_collaboration_restricted_to_enterprise`に、2つのメジャーリリースが追加されました。これは、将来のコラボレーションをEnterprise内のみに制限するかどうかを設定するために作成されるブール値です。既存のコラボレーションには影響しません。このフィールドの値は、[フォルダ情報の取得エンドポイント](endpoint://get-folders-id)を呼び出したときにも表示されます。 **Source:** [https://ja.developer.box.com/changelog/2018-08-21-add-new-fields-to-folder-update-and-get-info-endpoints](https://ja.developer.box.com/changelog/2018-08-21-add-new-fields-to-folder-update-and-get-info-endpoints) --- ### ベータリリースの導入: 新世代のPython SDK **Type:** changelog | **Section:** Changelog ベータリリースの導入: 新世代のPython SDK 最新世代 (現在はベータ版) のBox Python SDKをリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 新世代のPython SDK… # ベータリリースの導入: 新世代のPython SDK [最新世代 (現在はベータ版) のBox Python SDK](https://github.com/box/box-python-sdk-gen)をリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 [新世代のPython SDK](https://github.com/box/box-python-sdk-gen)では、以下を利用できるようになります。 - **APIの全面的なサポート**: 新世代のBox SDKにより、開発者はBox APIエコシステム全体をカバーできるようになります。Boxが提供する最新機能をすべて利用できるようになったため、より高性能で機能豊富なアプリケーションを作成できます。 - **迅速なAPIの更新**: 新しいBox APIがSDKに組み込まれるのを待つ必要はなくなります。Boxでは、自動生成による新しい開発アプローチにより、はるかに速いペースで (数日中に) 新しいBox APIをSDKに追加できるようになりました。これは、最新の機能をすぐにアプリケーションで利用できるようになることを意味します。 - **ドキュメントへの埋め込み**: Boxでは、開発者にとって情報へのアクセスが重要であることを理解しています。新しいアプローチを使用して、すべてのオブジェクトおよびパラメータに関する包括的なドキュメントをSDKのソースコードに直接含めました。つまり、この情報を開発者向けポータルで探す必要がなくなるため、時間の節約と開発プロセスの効率化につながります。 - **便利なメソッドの強化**: 開発エクスペリエンスを強化するBoxの取り組みにより、便利なメソッドの導入が推進されます。このようなメソッドは、認証、分割アップロード、指数バックオフ、自動再試行、型チェック (変数を正しく使用しているかどうかの確認に役立ちます) など、さまざまな側面をカバーします。 新世代のBox SDKを利用して、Boxコンテンツクラウドの可能性を最大限に引き出してください。より迅速かつ効率的に革新的なソリューションを作成しましょう。 **Source:** [https://ja.developer.box.com/changelog/2023-09-29-box-python-sdk-new-gen-released](https://ja.developer.box.com/changelog/2023-09-29-box-python-sdk-new-gen-released) --- ### ベータリリースの導入: 新世代のTypeScript SDK **Type:** changelog | **Section:** Changelog ベータリリースの導入: 新世代のTypeScript SDK 最新世代 (現在はベータ版) のBox Typescript SDKをリリースしました。これは、開発者エクスペリエンスを向上させ、Box… # ベータリリースの導入: 新世代のTypeScript SDK [最新世代 (現在はベータ版) のBox Typescript SDK](https://github.com/box/box-typescript-sdk-gen)をリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 [新世代のTypescript SDK](https://github.com/box/box-typescript-sdk-gen)では、以下を利用できるようになります。 - **APIの全面的なサポート**: 新世代のBox SDKにより、開発者はBox APIエコシステム全体をカバーできるようになります。Boxが提供する最新機能をすべて利用できるようになったため、より高性能で機能豊富なアプリケーションを作成できます。 - **迅速なAPIの更新**: 新しいBox APIがSDKに組み込まれるのを待つ必要はなくなります。Boxでは、自動生成による新しい開発アプローチにより、はるかに速いペースで (数日中に) 新しいBox APIをSDKに追加できるようになりました。これは、最新の機能をすぐにアプリケーションで利用できるようになることを意味します。 - **ドキュメントへの埋め込み**: Boxでは、開発者にとって情報へのアクセスが重要であることを理解しています。新しいアプローチを使用して、すべてのオブジェクトおよびパラメータに関する包括的なドキュメントをSDKのソースコードに直接含めました。つまり、この情報を開発者向けポータルで探す必要がなくなるため、時間の節約と開発プロセスの効率化につながります。 - **便利なメソッドの強化**: 開発エクスペリエンスを強化するBoxの取り組みにより、便利なメソッドの導入が推進されます。このようなメソッドは、認証、分割アップロード、指数バックオフ、自動再試行、型チェック (変数を正しく使用しているかどうかの確認に役立ちます) など、さまざまな側面をカバーします。 新世代のBox SDKを利用して、Boxコンテンツクラウドの可能性を最大限に引き出してください。より迅速かつ効率的に革新的なソリューションを作成しましょう。 **Source:** [https://ja.developer.box.com/changelog/2023-09-29-box-node-sdk-new-generation-released](https://ja.developer.box.com/changelog/2023-09-29-box-node-sdk-new-generation-released) --- ### メタデータAPIへの重大な変更 **Type:** changelog | **Section:** Changelog メタデータAPIへの重大な変更 2018年3月29日に、メタデータAPIエンドポイントのレスポンス本文に新しいデータ型 (文字列の配列) が導入されます。この変更は、BoxのメタデータテンプレートにmultiSelectという新しいフィールドタイプを追加するために行われます。この新しいフィールドタイプは、ファイルまたはフォルダにテンプレートインスタンスを作成する際の、複数の値を選択するためのチェックボックスタイプを表します。このフィールドタイプでは、選択されたオプションが文字列の配列に格納されます。この配列内の各文字列が、選択されたmultiSelectオプションのキーに対応します。 # メタデータAPIへの重大な変更 2018年3月29日に、メタデータAPIエンドポイントのレスポンス本文に新しいデータ型 (文字列の配列) が導入されます。この変更は、Boxのメタデータテンプレートに`multiSelect`という新しいフィールドタイプを追加するために行われます。この新しいフィールドタイプは、ファイルまたはフォルダにテンプレートインスタンスを作成する際の、複数の値を選択するためのチェックボックスタイプを表します。このフィールドタイプでは、選択されたオプションが文字列の配列に格納されます。この配列内の各文字列が、選択された`multiSelect`オプションのキーに対応します。 以下にメタデータテンプレートのJSONレスポンス本文の例を示します。キー`audience1`の値は、この変更で導入される新しいデータ型 (文字列の配列) の例を示しています。 ``` { "audience1": ["internal", "internalEng"], "documentType": "Q1 plans", "competitiveDocument": "no", "status": "active", "author": "Jones", "currentState": "proposal", "$type": "marketingCollateral-d086c908-2498-4d3e-8a1f-01e82bfc2abe", "$parent": "file_5010739061", "$id": "2094c584-68e1-475c-a581-534a4609594e", "$version": 0, "$typeVersion": 0, "$template": "marketingCollateral", "$scope": "enterprise_12345" } ``` **Source:** [https://ja.developer.box.com/changelog/2018-02-28-breaking-change-to-metadata-apis](https://ja.developer.box.com/changelog/2018-02-28-breaking-change-to-metadata-apis) --- ### メタデータインスタンスのバージョンに対する変更 **Type:** changelog | **Section:** Changelog メタデータインスタンスのバージョンに対する変更 メタデータインフラストラクチャに対する継続的な改善の一環として、メタデータインスタンスのversion値に対する小規模な変更をリリースします。 # メタデータインスタンスのバージョンに対する変更 メタデータインフラストラクチャに対する継続的な改善の一環として、メタデータインスタンスの[`version`](r:/metadata/#param-$version)値に対する小規模な変更をリリースします。 これまで、メタデータインスタンスに関連付けられたバージョン番号は、関連付けられたメタデータテンプレートのフィールドが削除された場合または関連付けられたメタデータテンプレートで`enum`フィールドのオプションが削除された場合に増加していました。 今後は、こうした変更により、メタデータインスタンスのバージョン番号が増加することはありません。 バージョン番号の増加は常に暗黙的に行われてきたため、Boxでは、メタデータインスタンスのバージョンから得られる価値はほとんどないと認識しています。そのため、この変更がお客様に影響を及ぼすとは考えておりません。それでも、ご自身が影響を受けていることに気付いた場合は、カスタマーサクセスマネージャまたは当社のサポートチャネルまでお問い合わせください。 **Source:** [https://ja.developer.box.com/changelog/2020-03-30-change-to-metadata-instance-version](https://ja.developer.box.com/changelog/2020-03-30-change-to-metadata-instance-version) --- ### メタデータカスケードポリシーAPIのベータ版終了 **Type:** changelog | **Section:** Changelog メタデータカスケードポリシーAPIのベータ版終了 メタデータカスケードポリシーAPIが正式リリースされたため、ベータ版の提供を終了しました。 ここ数年、Box… # メタデータカスケードポリシーAPIのベータ版終了 [メタデータカスケードポリシーAPI](e://post_metadata_cascade_policies)が正式リリースされたため、ベータ版の提供を終了しました。 ここ数年、Boxでは、メタデータインフラストラクチャに対して多くの技術的な改善を行ってきました。そしてようやくメタデータカスケードポリシーAPIのベータ版を終了することになりました。このリリースには重大は変更は含まれていません。また、既存のアプリケーションでは、このリリースによる影響は見られません。 最初のリリース以来、メタデータカスケードポリシーでは、メタデータを新しいインスタンスに適用する際の処理速度が10倍以上になりました。さらに、Boxは、他のBox APIに合わせて、最適なAPIエクスペリエンスを保証するために信頼性と可観測性においても大きく前進しました。 メタデータとメタデータカスケードポリシーの詳細については、[メタデータのガイド](g://metadata)、およびBox専用の[メタデータカスケードポリシー](e://post_metadata_cascade_policies)リファレンスドキュメントを参照してください。 **Source:** [https://ja.developer.box.com/changelog/2020-10-21-metadata-cascade-policy-api-leaves-beta](https://ja.developer.box.com/changelog/2020-10-21-metadata-cascade-policy-api-leaves-beta) --- ### メタデータクエリAPIの構文の変更 **Type:** changelog | **Section:** Changelog メタデータクエリAPIの構文の変更 メタデータクエリAPIは、明示的に定義されたレスポンスフィールドを要求するよう更新されました。 # メタデータクエリAPIの構文の変更 [メタデータクエリAPI](g://metadata/queries)は、**明示的に定義されたレスポンスフィールドを要求する**よう更新されました。 ``` curl -X POST https://api.box.com/2.0/metadata_queries/execute_read \ -H 'Authorization: Bearer <ACCESS_TOKEN>" ' -H 'Content-Type: application/json' -d '{ "from": "enterprise_123456.customerInfo", "query": "tav >= :value", "query_params": { "value": 200000 }, "fields": [ "name", "metadata.enterprise_123456.customerInfo.tav" ], "ancestor_folder_id": "0" }' ``` さらに、**このレスポンス形式では項目のリストが返されるようになり**、クエリ結果のリストは返されなくなりました。メタデータは、項目と並んで表示されるのではなく、項目内にネストされるようになりました。レスポンスで返されるのは、`field`配列で指定されたフィールドとすべての基本フィールドだけです。 ``` { "entries": [{ "id": "394384323", "type": "file", "etag": 1, "name": "Contract.pdf", "metadata": { "enterprise_123456": { "customerInfo": { "$parent": "folder_12345,", "$scope": "enterprise_123456", "$template": "customerInfo", "$version": 1, "tav": 1000000 } } } }] } ``` ## 従来の構文 参考までに、このAPIでは、これまで、項目のすべての標準フィールドのほか、一致したメタデータが返されていました。 ``` curl -X POST https://api.box.com/2.0/metadata_queries/execute_read \ -H 'Authorization: Bearer <ACCESS_TOKEN>" ' -H 'Content-Type: application/json' -d '{ "from": "enterprise_123456.customerInfo", "query": "tav >= :value", "query_params": { "value": 200000 }, "ancestor_folder_id": "0" }' ``` レスポンスの本文では、項目がエントリのリストとして返され、それぞれに`item`と`metadata`インスタンスが含まれていました。 ``` { "entries":[ { "item":{ "type":"file", "id":"394384323", "name": "Contract.pdf", "file_version":{ "type":"file_version", "id":"33482348", "sha1":"69888bb1bff455d1b2f8afea75ed1ff0b4879bf6" }, ... }, "metadata":{ "enterprise_123456":{ "customerInfo":{ "tav": 1000000, "$id": "01234500-12f1-1234-aa12-b1d234cb567e", "$parent": "folder_12345,", "$scope": "enterprise_123456", "$template": "customerInfo", "$type": "customerInfo-6bcba49f-ca6d-4d2a-a758-57fe6edf44d0", "$typeVersion": 2, "$version": 1, "$canEdit": true } } } }, ... ], "limit": 20, "next_marker":"AAAAAmVYB1FWec8GH6yWu2nwmanfMh07IyYInaa7DZDYjgO1H4KoLW29vPlLY173OKsci6h6xGh61gG73gnaxoS+o0BbI1/h6le6cikjlupVhASwJ2Cj0tOD9wlnrUMHHw3/ISf+uuACzrOMhN6d5fYrbidPzS6MdhJOejuYlvsg4tcBYzjauP3+VU51p77HFAIuObnJT0ff" } ``` この従来の構文は、**既存のメタデータクエリAPIユーザーだけが引き続き利用できます**。既存のユーザー全員が新しい構文に移行すると、従来の構文は無効になります。 **Source:** [https://ja.developer.box.com/changelog/2020-07-15-changes-to-metadata-query-api-syntax](https://ja.developer.box.com/changelog/2020-07-15-changes-to-metadata-query-api-syntax) --- ### メタデータクエリのインデックスの変更 **Type:** changelog | **Section:** Changelog メタデータクエリのインデックスの変更 ファイル/フォルダのメタデータクエリリクエストを実行する際、検索対象となるファイル/フォルダが10,000を超えるクエリには検索インデックスの作成が必要になります。 このプロセスの効率を改善し、より簡潔にするために、メタデータクエリAPIリクエストでuse_indexキーを使用してインデックスを指定するという明示的な要件をなくすことで、インデックスの使用方法を変更しました。 # メタデータクエリのインデックスの変更 ファイル/フォルダの[メタデータクエリ](g://metadata/queries/)リクエストを実行する際、検索対象となるファイル/フォルダが10,000を超えるクエリには検索インデックスの作成が必要になります。 このプロセスの効率を改善し、より簡潔にするために、メタデータクエリAPIリクエストで`use_index`キーを使用してインデックスを指定するという明示的な要件をなくすことで、インデックスの使用方法を変更しました。 現在`use_index`キーを使用してインデックスを指定している既存のアプリケーションに影響はありません。指定されたインデックスはリクエストで無視され、最も効率的なインデックスが自動的に適用されます。 ## 以前のインデックス作成プロセス 検索対象のファイル/フォルダが10,000を超えるメタデータクエリリクエストに対してインデックスを作成して使用する場合の以前のプロセスは以下のとおりです。これは、変更前のプロセスです。 - インデックスをリクエストするには、メタデータクエリチームにお問い合わせください。 - メタデータクエリチームによってインデックスが作成され、新しく作成されたインデックスの名前が提供されます。 - メタデータクエリリクエストの実行時に、このインデックス名をAPIリクエストの`use_index`キーの値として指定していました。 ## 新しいインデックス作成プロセス インデックスを作成して使用する新しいプロセスは以下のとおりです。 - インデックスをリクエストするには、メタデータクエリチームにお問い合わせください。 メタデータクエリAPIリクエスト内の`use_index`キーは削除されました。その代わり、検索処理中に最も効率的なクエリが自動的に適用されます。 `use_index`キーで現在指定されているインデックスは無視され、代わりに最も効率的なインデックスが使用されます。 アプリケーションの所有者は、自己の判断でメタデータクエリリクエストから`use_index`キーと値を安全に削除できます。 **Source:** [https://ja.developer.box.com/changelog/2021-01-15-metadata-query-index-changes](https://ja.developer.box.com/changelog/2021-01-15-metadata-query-index-changes) --- ### メタデータテンプレートに`multiSelect`フィールドタイプを追加 **Type:** changelog | **Section:** Changelog メタデータテンプレートにmultiSelectフィールドタイプを追加 メタデータテンプレートにmultiSelectと呼ばれる新しい属性タイプが導入されました。これは複数選択に変換されます。この新しい属性タイプにより、Adobe Sign、G Suite… # メタデータテンプレートにmultiSelectフィールドタイプを追加 [メタデータテンプレート](endpoint://resources/metadata-template/)に`multiSelect`と呼ばれる新しい属性タイプが導入されました。これは複数選択に変換されます。この新しい属性タイプにより、Adobe Sign、G Suite、またはフォルダでファイルコンテンツのテンプレートインスタンスを作成する際、チェックボックススタイルの値の複数選択が可能になります。 このフィールドの追加により[メタデータオブジェクト](endpoint://resources/metadata-template/)(テンプレートインスタンス)が変更されます。これは、有効化されている`multiSelect`オプションが文字列値の配列を使用して表され、配列内の各文字列が`multiSelect`オプションのキーに対応しているためです。 **Source:** [https://ja.developer.box.com/changelog/2018-03-29-multiselect-field-type-added-to-metadata-templates](https://ja.developer.box.com/changelog/2018-03-29-multiselect-field-type-added-to-metadata-templates) --- ### メタデータの`date`フィールドの形式に影響する可能性のある変更 **Type:** changelog | **Section:** Changelog メタデータのdateフィールドの形式に影響する可能性のある変更 Boxのメタデータインフラストラクチャに対する継続的な改善の一環として、メタデータテンプレートのdateフィールドの形式に大きく影響する可能性のある3つの変更をリリースする予定です。これらの変更により、Box APIで返される形式は、APIコール間でより一貫性のあるものになります。 # メタデータのdateフィールドの形式に影響する可能性のある変更 Boxのメタデータインフラストラクチャに対する継続的な改善の一環として、メタデータテンプレートの`date`フィールドの形式に大きく影響する可能性のある3つの変更をリリースする予定です。これらの変更により、Box APIで返される形式は、APIコール間でより一貫性のあるものになります。 最初の変更は、日付におけるタイムゾーンオフセットの使用に影響します。これまでは、タイムゾーンオフセットを含めるように日付を設定した場合でも、APIによって返される日付には一貫性がなく、タイムゾーンオフセットが含まれるものもあれば、含まれないものもありました。今後は、すべての日付がUTC (協定世界時)に変換され、タイムゾーンオフセットは削除されます。 例: - 日付が`2020-02-20T12:00:00.000-01:00`に設定されたと想定します。 - これまでは、APIでは`2020-02-20T12:00:00.000-01:00` (元の値)または`2020-02-20T13:00:00.000Z` (UTCに調整された値)が返されました。 - 今後は、常に`2020-02-20T13:00:00.000Z` (UTCに調整された値)が返されます。 2つ目の変更は、メタデータAPIによって返される日付の秒未満の精度に影響します。これまでは、メタデータAPIで返される値の秒未満の精度は0~3桁でした。今後、Boxから返されるメタデータの日時値は、常にミリ秒まで正確になります。 例: - これまで、APIでは`2020-02-20T12:00:00Z`、`2020-02-20T12:00:00.0Z`、`2020-02-20T12:00:00.00Z`または`2020-02-20T12:00:00.000Z`が返される可能性がありました。 - 今後は、常に`2020-02-20T12:00:00.000Z`が返されます。 最後の変更は、メタデータインスタンスの更新時の[`test`](g/metadata/instances/update/#Test-a-value)操作の使用に影響します。これまでのテストでは、リテラル文字列値を使用して日時の値が比較されていました。今回の更新後は、UNIXのタイムスタンプ(ミリ秒単位)を使用して比較されます。 例: - これまでは、`2020-01-21T19:20:00.123-08:00`は`2020-01-22T03:20:00.123Z`と同じではありませんでした。 - 今後、`2020-01-21T19:20:00.123-08:00`は`2020-01-22T03:20:00.123Z`と同じになります。 ## 今回の変更がアプリケーションに及ぼす影響 `RFC3339`に準拠した日時の解析を実装するアプリケーションでは、これらはすべて同じ日付を表す有効な`RFC3339`値であるため、何も実行する必要はありません。`RFC3339`に準拠した日時の解析を実装していないアプリケーションは、解析を実行できるように更新する必要があります。 すべてのBox公式SDKでは、`RFC3339`に準拠した日時の解析をサポートしているため、Box公式SDKの最新バージョンを使用しているアプリケーションの場合、更新は不要です。 ## 今回の変更がアプリケーションに影響を及ぼした場合の対応 今回の変更は、今後数週間かけて段階的にリリースする予定です。メタデータチームは潜在的な影響を監視しますが、ご自身が影響を受けていることに気付いた場合は、カスタマーサクセスマネージャまたは当社のサポートチャネルまでお問い合わせください。 **Source:** [https://ja.developer.box.com/changelog/2020-03-30-potential-impactful-changes-to-format-of-metadata-date-fields](https://ja.developer.box.com/changelog/2020-03-30-potential-impactful-changes-to-format-of-metadata-date-fields) --- ### メタデータ駆動のリテンションポリシー **Type:** changelog | **Section:** Changelog メタデータ駆動のリテンションポリシー リテンションポリシーオブジェクトAPIエクスプローラElement… # メタデータ駆動のリテンションポリシー [リテンションポリシーオブジェクト](e://retention-policy)APIエクスプローラElementに、メタデータ駆動のリテンションポリシーをサポートする新しい機能が導入されました。この機能では、カスタムメタデータに基づいてリテンションポリシーを個々のファイルに適用できます。これにより、グローバルレベルおよびフォルダレベルに加えて、起動ファイルレベルでもリテンションポリシーを設定できます。これらの新しい拡張されたBox Governance機能は、Box管理コンソールを介してBox管理者に提供され、さらに[リテンションポリシー](e://retention-policy)および[リテンションの割り当て](e://retention-policy-assignment)API、BoxのJava、Node、および.NET [ SDK](g://tooling/sdks)でも使用できるようになります。 **Source:** [https://ja.developer.box.com/changelog/2018-04-11-metadata-driven-retention-policies](https://ja.developer.box.com/changelog/2018-04-11-metadata-driven-retention-policies) --- ### ユーザーのアバターを管理するための新しいエンドポイント **Type:** changelog | **Section:** Changelog ユーザーのアバターを管理するための新しいエンドポイント 本日より、ユーザーアバターAPIでユーザーアバターの追加、更新、削除がサポートされるようになりました。 ユーザーアバターを作成または更新するには、アップロードするファイルへのパスを含めてPOST /users-id… # ユーザーのアバターを管理するための新しいエンドポイント 本日より、ユーザーアバターAPIでユーザーアバターの追加、更新、削除がサポートされるようになりました。 ユーザーアバターを作成または更新するには、アップロードするファイルへのパスを含めて[`POST /users-id-avatar`](e://post-users-id-avatar)エンドポイントを呼び出します。すでにアバターが存在する場合は、新しくアップロードされた写真に置き換えられます。 ``` curl -i -X POST -L https://api.box.net/2.0/users/userID/avatar -H 'Authorization: Bearer <ACCESS_TOKEN>' --form 'pic=@"path/to/file/file.jpeg"' ``` レスポンスには、ファイルの場所へのURLを示す[user avatar](r://user-avatar)オブジェクトが含まれます。 ユーザーアバターを削除するには、[`DELETE /users-id-avatar`](e://delete-users-id-avatar)エンドポイントを呼び出します: ``` curl -i -X DELETE -L https://api.box.net/2.0/users/userID/avatar -H 'Authorization: Bearer <ACCESS_TOKEN>' ``` ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-05-18-new-endpoints-for-user-avatar](https://ja.developer.box.com/changelog/2022-05-18-new-endpoints-for-user-avatar) --- ### ランサムウェアアクティビティの検出ルール **Type:** changelog | **Section:** Changelog ランサムウェアアクティビティの検出ルール ランサムウェアアクティビティの検出ルール (Box Shield Proで利用可能) は、ユーザーアクティビティを監視し、Boxの機械学習を利用して、ランサムウェア攻撃を示す可能性がある不審なファイル拡張子を特定します。 ランサムウェアへの対応 ランサムウェアアクティビティの検出ルールを使用すると、以下の方法で自身をより確実に保護できます。 # ランサムウェアアクティビティの検出ルール ランサムウェアアクティビティの検出ルール (Box Shield Proで利用可能) は、ユーザーアクティビティを監視し、Boxの機械学習を利用して、ランサムウェア攻撃を示す可能性がある不審なファイル拡張子を特定します。 ## ランサムウェアへの対応 ランサムウェアアクティビティの検出ルールを使用すると、以下の方法で自身をより確実に保護できます。 - [検出ルールの作成と編集](https://support.box.com/hc/en-us/articles/46976660378643-Create-Edit-and-Delete-a-Threat-Detection-Rule) - [アラートの表示](https://support.box.com/hc/en-us/articles/44263782754323-Ransomware-Activity-Detection-Rule#h_01KBCKYECWTA6RCBSZYMD2CNTX) - [脅威の是正措置の実施](https://support.box.com/hc/en-us/articles/44263782754323-Ransomware-Activity-Detection-Rule#h_01KBCKYPP2R903PZMB1VBA5XEM) ランサムウェアアクティビティの検出ルールの使用の詳細については、Boxの[サポートドキュメント](https://support.box.com/hc/en-us/articles/44263782754323-Ransomware-Activity-Detection-Rule)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2025-12-03-ransomware-activity-detection](https://ja.developer.box.com/changelog/2025-12-03-ransomware-activity-detection) --- ### リテンションAPIに対する新しい機能強化 **Type:** changelog | **Section:** Changelog リテンションAPIに対する新しい機能強化 指定されたリテンションポリシー割り当てのリテンションの対象となっているファイルおよびファイルバージョンを取得するために、新しく2つのAPIエンドポイントが導入されました。これらのAPIは、APIのリテンションポリシースイートに含まれており、個々のファイルおよびファイルバージョンリテンションエンドポイント (まもなくBox APIでの公式サポート終了予定) に代わるものとして作成されました。公式サポート終了日については、後日お知らせいたします。 # リテンションAPIに対する新しい機能強化 指定されたリテンションポリシー割り当てのリテンションの対象となっているファイルおよびファイルバージョンを取得するために、新しく2つのAPIエンドポイントが導入されました。これらのAPIは、APIの[リテンションポリシー](g://retention-policies)スイートに含まれており、個々の[ファイル](e://get-file-version-retentions-id)および[ファイルバージョン](e://get-file-version-retentions)リテンションエンドポイント (まもなくBox APIでの公式サポート終了予定) に代わるものとして作成されました。公式サポート終了日については、後日お知らせいたします。 リテンションポリシー割り当てによってリテンションポリシーが適用されると、その適用先となるフォルダが選択されます。そのフォルダ内のファイルおよびファイルバージョンは、新しいエンドポイントを呼び出したときに返されるコンテンツになります。 ## 機能 このリリースでは、以下の新しいコンテンツと機能が導入されました。 - [リテンションの対象となるファイルを取得](e://get-retention-policy-assignments-id-files-under-retention): 指定したリテンションポリシー割り当てに関連付けられている、リテンションの対象となるファイルのリストを返します。 - [リテンションの対象となるファイルバージョンを取得](e://get-retention-policy-assignments-id-file-versions-under-retention): 指定したリテンションポリシー割り当てに関連付けられている、リテンションの対象となるファイルバージョンのリストを返します。 - 編集可能な`description`フィールドを[リテンションポリシー](e://resources/retention-policy)リソースに追加。 - 書き込み不可の`start_field_date`を[リテンションポリシー割り当て](e://resources/retention-policy-assignment)リソースに追加。このフィールドは、メタデータフィールドのキーIDです。また、その値は、`assigned_to`のタイプが`metadata_template`でない場合または日付フィールドが選択されていない場合に`upload_date`にすることもできます。 **Source:** [https://ja.developer.box.com/changelog/2021-09-07-new-enhancements-to-retention-apis](https://ja.developer.box.com/changelog/2021-09-07-new-enhancements-to-retention-apis) --- ### リテンションポリシーAPIの改善 **Type:** changelog | **Section:** Changelog リテンションポリシーAPIの改善 最近のリテンションポリシーのAPIとリテンションポリシー割り当てに関する変更により、リテンションポリシー割り当てを削除し、ポリシーのリテンション期間と種類を指定することができるようになりました。 # リテンションポリシーAPIの改善 最近のリテンションポリシーのAPIとリテンションポリシー割り当てに関する変更により、リテンションポリシー割り当てを削除し、ポリシーのリテンション期間と種類を指定することができるようになりました。 ## 更新内容 - 新しい[`DELETE`](e://delete-retention-policy-assignments-id)エンドポイントを使用して既存のリテンションポリシー割り当てを削除します: ``` curl -i -X DELETE -L https://api.box.net/2.0/retention_policy_assignments/123456/ -H 'Authorization: Bearer <ACCESS_TOKEN>' ``` リテンションポリシーを[作成](e://post-retention-policies)または[更新](e://put-retention-policies-id)する場合は、次のパラメータを指定します: - `retention_length`: リテンションポリシーをコンテンツに割り当てた後にアクティブにする期間を日数で指定します。 - `retention_type`: ポリシーが`modifiable`または`non-modifiable`であるかを指定します。これは、特定の規制要件に準拠する必要があるかどうかに応じて、リテンションポリシーを全面的に変更可能にするか、限定的に変更可能にするかのいずれかを選択できることを意味します。 ## 開発者向けリソース Box App Centerでのアプリケーションの作成、またはBoxパートナーへの参加をご希望の場合、詳細については[Box Partner Resources](https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources)のガイド (英語) を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-07-23-retention-api-updates](https://ja.developer.box.com/changelog/2022-07-23-retention-api-updates) --- ### リテンションポリシーのマーカーベースのページネーションの追加 **Type:** changelog | **Section:** Changelog リテンションポリシーのマーカーベースのページネーションの追加 BoxのOpenAPIの仕様は、リテンションポリシーおよびリテンションポリシー割り当てのエンドポイントでmarkerベースのページネーションとfieldsクエリパラメータの使用を示すために更新されました。 # リテンションポリシーのマーカーベースのページネーションの追加 BoxのOpenAPIの仕様は、リテンションポリシーおよびリテンションポリシー割り当てのエンドポイントで`marker`ベースのページネーションと`fields`クエリパラメータの使用を示すために更新されました。 ## 更新内容 更新内容は以下のとおりです。 - [`GET /retention-policies`](e://get-retention-policies)および[`GET /retention-policies-id-assignments`](e://get-retention-policies-id-assignments)エンドポイントに`fields`、`limit`、`marker`クエリパラメータを追加しました。 - [リテンションポリシー](e://resources/retention-policies)および[リテンションポリシー割り当て](e://resources/retention-policy-assignments)のレスポンスオブジェクトに`limit`と`next_marker `を追加しました。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語で投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-11-16-added-retention-policy-marker-based-pagination](https://ja.developer.box.com/changelog/2021-11-16-added-retention-policy-marker-based-pagination) --- ### 今後予定されている重大な変更: Box AI API - 抽出 (構造化) **Type:** changelog | **Section:** Changelog 今後予定されている重大な変更: Box AI API - 抽出 (構造化) Box AI APIの抽出 (構造化) エンドポイントに重大な変更を予定しています。この変更は、追加のフィールドを導入し、メタデータのキー/値ペアを回答オブジェクト内にネストすることで、レスポンスを改善するものです。変更は1月中旬のリリースを予定しています。弊社の変更ログおよびBox開発者向けブログのフォローをお願いいたします。以下でコードスニペットの例をご確認いただけます。 # 今後予定されている重大な変更: Box AI API - 抽出 (構造化) Box AI APIの抽出 (構造化) エンドポイントに重大な変更を予定しています。この変更は、追加のフィールドを導入し、メタデータのキー/値ペアを回答オブジェクト内にネストすることで、レスポンスを改善するものです。**変更は1月中旬のリリースを予定しています**。弊社の[変更ログ](page/changelog)および[Box開発者向けブログ](https://medium.com/box-developer-blog)のフォローをお願いいたします。以下でコードスニペットの例をご確認いただけます。 現在のレスポンスの例: ``` { "name": "Marie", "date": "10/2/23" } ``` 新しいレスポンス形式の例: ``` { "answer": { "name": "Marie", "date": "10/2/23" }, "completion_reason": "done", "created_at": "2012-12-12T10:53:43-08:00" } ``` **Source:** [https://ja.developer.box.com/changelog/2024-12-10-upcoming-breaking-change-in-the-box-ai-api](https://ja.developer.box.com/changelog/2024-12-10-upcoming-breaking-change-in-the-box-ai-api) --- ### 共有フォルダのフォルダ項目の並べ替えに対する更新 **Type:** changelog | **Section:** Changelog 共有フォルダのフォルダ項目の並べ替えに対する更新 BoxのフォルダAPI… # 共有フォルダのフォルダ項目の並べ替えに対する更新 BoxのフォルダAPIを使用すると、[フォルダ内の項目を取得](e://get-folders-id-items)し、並べ替えパラメータに基づいてそのリストを[並べ替え](e://get-folders-id-items#param-sort)ることができます。コラボレータが表示できる、関連付けられたフォルダへのパスを持つ共有フォルダの項目の並べ替えを改善しました。 以前は、このようなフォルダの項目は、並べ替えパラメータの値にかかわらず、`id`に基づいて並べ替えられていました。現在は`sort`パラメータに基づいて並べ替えられます。 ## サポートを受けるための新しい場所 今後は新しい[Box Developer Communityフォーラム](https://forum.box.com/)で質問したり、ガイダンスを受けたりすることができます。この新しいフォーラムを利用すると、Box Developer Relationsチーム、同僚、Boxに関するエキスパートと直接会話できます。 **Source:** [https://ja.developer.box.com/changelog/2023-06-30-folder-items-api-update](https://ja.developer.box.com/changelog/2023-06-30-folder-items-api-update) --- ### 共有リンクのパスワードの強化 **Type:** changelog | **Section:** Changelog 共有リンクのパスワードの強化 Box APIで共有リンクを作成する場合 (ファイルに共有リンクを追加する場合など) のパスワードポリシーを強化しました。今後、パスワードは8文字以上で、以下を含める必要があります: 数字 大文字 英数字以外の文字 # 共有リンクのパスワードの強化 Box APIで共有リンクを作成する場合 ([ファイルに共有リンクを追加](e://put-files-id--add-shared-link#param-shared_link-password)する場合など) のパスワードポリシーを強化しました。今後、パスワードは8文字以上で、以下を含める必要があります: - 数字 - 大文字 - 英数字以外の文字 ## サポートを受けるための新しい場所 今後は新しい[Box Developer Communityフォーラム](https://forum.box.com/)で質問したり、ガイダンスを受けたりすることができます。この新しいフォーラムを利用すると、Box Developer Relationsチーム、同僚、Boxに関するエキスパートと直接会話できます。 **Source:** [https://ja.developer.box.com/changelog/2023-06-15-shared-link-passwords](https://ja.developer.box.com/changelog/2023-06-15-shared-link-passwords) --- ### 共有リンクを使用してトークンをダウンスコープするための新しいオプション **Type:** changelog | **Section:** Changelog 共有リンクを使用してトークンをダウンスコープするための新しいオプション アクセストークンをリクエストする際、共有リンクを使用してそのトークンをファイルまたはフォルダにダウンスコープできるようになりました。 この新しいパラメータは、resourceパラメータの代わりに使用できます。このパラメータを使用すると、ファイルIDまたはフォルダIDを指定して同じ操作を実行できます。 # 共有リンクを使用してトークンをダウンスコープするための新しいオプション アクセストークンをリクエストする際、共有リンクを使用してそのトークンをファイルまたはフォルダにダウンスコープできるようになりました。 この新しいパラメータは、`resource`パラメータの代わりに使用できます。このパラメータを使用すると、ファイルIDまたはフォルダIDを指定して同じ操作を実行できます。 ## 更新内容 - 新しい`box_shared_link`リクエストパラメータを[ダウンスコープのドキュメント](g://authentication/tokens/downscope)に追加しました。以下の方法で、共有リンクを指定してアクセストークンをダウンスコープできます。 ``` { curl -i -X POST "https://api.box.com/oauth2/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "subject_token=[ACCESS_TOKEN]" \ -d "subject_token_type=urn:ietf:params:oauth:token-type:access_token" \ -d "scope=item_upload item_preview base_explorer" \ -d "box_shared_link=https://cloud.box.com/s/123456" \ -d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" } ``` - `box_shared_link`リクエストパラメータを[アクセストークンをリクエストAPIリファレンス](r://post_oauth2_token/#request)に追加しました。 **Source:** [https://ja.developer.box.com/changelog/2021-04-13-token-exchange-optional-parameter-added](https://ja.developer.box.com/changelog/2021-04-13-token-exchange-optional-parameter-added) --- ### 分割アップロードに関するガイドの改善 **Type:** changelog | **Section:** Changelog 分割アップロードに関するガイドの改善 複数の大きいファイルの分割アップロードのエクスペリエンスを改善するため、プロセスの詳細と、各手順の例をガイドに追加しました。 # 分割アップロードに関するガイドの改善 複数の大きいファイルの分割アップロードのエクスペリエンスを改善するため、プロセスの詳細と、各手順の例をガイドに追加しました。 [Box API](e://put-files-upload-sessions-id)を使用して効果的にファイルを分割し、複数のパーツでアップロードする方法の詳細については、[パーツのアップロードガイド](g://uploads/chunked/upload-part)を確認してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-09-12-upload-part-improvements](https://ja.developer.box.com/changelog/2022-09-12-upload-part-improvements) --- ### 変更ログ **Type:** changelog | **Section:** Changelog 変更ログ Box Platform (API、SDK、Box UI Elements、CLI、Box AIを含む) に関するすべてのリリースノート。 # 変更ログ Box Platform (API、SDK、Box UI Elements、CLI、Box AIを含む) に関するすべてのリリースノート。 **Source:** [https://ja.developer.box.com/changelog/](https://ja.developer.box.com/changelog/) --- ### 外部ユーザーの一括削除 **Type:** changelog | **Section:** Changelog 外部ユーザーの一括削除 公開APIを使用して最大100件の外部ユーザーアカウントを一括削除できるようになりました。 このジョブはバックグラウンドで実行され、終了時に完了レポートを送信します。 # 外部ユーザーの一括削除 公開APIを使用して最大100件の外部ユーザーアカウントを[一括削除](g://users/bulk-delete-external-users)できるようになりました。 このジョブはバックグラウンドで実行され、終了時に完了レポートを送信します。 このレポートには、成功したユーザー削除と失敗したユーザー削除を示す詳細が含まれています。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://community.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-08-15-external-users-bulk-delete](https://ja.developer.box.com/changelog/2025-08-15-external-users-bulk-delete) --- ### 廃止された言語バージョンのサポートの終了 **Type:** changelog | **Section:** Changelog 廃止された言語バージョンのサポートの終了 Python SDKおよびJava SDKの次のメジャーバージョンをリリースする予定です。これに伴い、廃止された言語バージョンのサポートが終了となりますのでご注意ください。 # 廃止された言語バージョンのサポートの終了 Python SDKおよびJava SDKの次のメジャーバージョンをリリースする予定です。これに伴い、廃止された言語バージョンのサポートが終了となりますのでご注意ください。 日本時間2022年1月18日に、[Python](https://github.com/box/box-python-sdk/releases) SDKと[Java](https://github.com/box/box-java-sdk/releases) SDKのライブラリのメジャーリリースが計画されており、廃止された言語バージョンのサポートが終了する予定です。Python SDKでは、Python SDKのバージョン`v3.0.0`以降のPython 2.7およびPython 3.5のサポートが終了します。Java SDKでは、Java SDKのバージョン`v3.0.0`以降のJava 7のサポートが終了します。Python SDKまたはJava SDKを使用するアプリケーションでは、[GitHub](https://github.com/box/sdks)のリリースセクションにあるこれらのライブラリの古いバージョンをそれぞれ使用できますが、今後の新機能は使用できません。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。また、それぞれのGitHubリポジトリでSDKチームにお問い合わせいただくことも可能です。 **Source:** [https://ja.developer.box.com/changelog/2021-12-17-end-of-support-for-obsolete-language-versions](https://ja.developer.box.com/changelog/2021-12-17-end-of-support-for-obsolete-language-versions) --- ### 手動開始ワークフローの新しいエンドポイント **Type:** changelog | **Section:** Changelog 手動開始ワークフローの新しいエンドポイント Box Relay用に2つのAPIエンドポイントが新しく導入されました。 フォルダに構成されたワークフローを取得する ファイルのワークフロー内で手動開始フローを開始する # 手動開始ワークフローの新しいエンドポイント [Box Relay](https://www.box.com/collaboration/relay-workflow)用に2つのAPIエンドポイントが新しく導入されました。 - フォルダに構成されたワークフローを取得する - ファイルのワークフロー内で手動開始フローを開始する この新しいエンドポイントでは、ワークフロー内での情報の更新が許可されません。また、POSTエンドポイントで開始できるのは、`trigger_type`が`WORKFLOW_MANUAL_START`のフローのみです。POSTリクエスト本文内には`outcome_parametes`オブジェクト (省略可) があります。開始時に選択内容を承認するようフローが構成されている場合は、その選択内容をパラメータとして送信する必要があります。送信できるすべてのオプションを含むガイドは、まもなく利用できるようになります。 ## 機能 このリリースでは、以下の新しいコンテンツと機能が導入されました。 - 新しい[ワークフロー](r://workflow)リソース - 新しい[GET](e://get_workflows)ワークフローエンドポイント - 新しい[POST](e://post_workflows_id_start)手動開始ワークフローエンドポイント **Source:** [https://ja.developer.box.com/changelog/2021-07-16-manual-start-workflow-endpoints-now-active](https://ja.developer.box.com/changelog/2021-07-16-manual-start-workflow-endpoints-now-active) --- ### 抽出エージェント (強化) **Type:** changelog | **Section:** Changelog 抽出エージェント (強化) Boxでは、Gemini 2.5 Proを搭載した抽出エージェント (強化) を導入しました。このエージェントは、思考連鎖処理を使用して最良の回答を提供するだけでなく、これが正しい回答であるとエージェントが考える理由も開発者に示します。 抽出エージェント (強化) の特長を以下に示します。 より高い精度で複雑なドキュメントからキーと値のペアを抽出できるように改善 Box UIで簡単にアクセス: 1回のクリックで機能を有効化 非構造化データを、ファイルに付属する意味のあるメタデータに変換 Boxのメタデータ検索ツールを使用して迅速なインサイトの取得や検出が可能 機能の詳細については、製品ドキュメントの「テンプレートへのメタデータの自動入力」セクションを参照してください。 # 抽出エージェント (強化) Boxでは、Gemini 2.5 Proを搭載した抽出エージェント (強化) を導入しました。このエージェントは、思考連鎖処理を使用して最良の回答を提供するだけでなく、これが正しい回答であるとエージェントが考える理由も開発者に示します。 抽出エージェント (強化) の特長を以下に示します。 - より高い精度で複雑なドキュメントからキーと値のペアを抽出できるように改善 - Box UIで簡単にアクセス: 1回のクリックで機能を有効化 - 非構造化データを、ファイルに付属する意味のあるメタデータに変換 - Boxのメタデータ検索ツールを使用して迅速なインサイトの取得や検出が可能 機能の詳細については、[製品ドキュメント](https://support.box.com/hc/en-us/articles/360044196173-Using-Metadata)の「テンプレートへのメタデータの自動入力」セクションを参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2025-06-24-enhanced-extract-agent](https://ja.developer.box.com/changelog/2025-06-24-enhanced-extract-agent) --- ### 新しい「Box Platformについて」セクションの導入 **Type:** changelog | **Section:** Changelog 新しい「Box Platformについて」セクションの導入 利用開始時のエクスペリエンスを改善するために、Boxでは、このPlatformの使用を開始する際に利用できるリソースを再編および追加しました。詳細セクションについては、こちらをご確認ください。 # 新しい「Box Platformについて」セクションの導入 利用開始時のエクスペリエンスを改善するために、Boxでは、このPlatformの使用を開始する際に利用できるリソースを再編および追加しました。詳細セクションについては、[こちら](pages/platform)をご確認ください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-11-30-learn-page-updates](https://ja.developer.box.com/changelog/2023-11-30-learn-page-updates) --- ### 新しいApp Diagnosticsレポート **Type:** changelog | **Section:** Changelog 新しいApp Diagnosticsレポート 日本時間2021年10月8日以降、新しいレポートが順次リリースされます。このレポートは、10月25日までにすべてのお客様にリリースされる予定です。 # 新しいApp Diagnosticsレポート 日本時間2021年10月8日以降、新しいレポートが順次リリースされます。このレポートは、10月25日までにすべてのお客様にリリースされる予定です。 開発者は、開発者コンソールからApp Diagnosticsレポートを生成することにより、自分のアプリケーションに対するAPIアクティビティを確認できるようになりました。レポートの実行に必要な手順については、[ガイド](g://api-calls/permissions-and-errors/app-diagnostics-report)をご確認ください。 これまでと同様、問題が発生した場合は、[サポートチケット](page/support)を申請するか、[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語で投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-10-07-new-app-diagnostics-report](https://ja.developer.box.com/changelog/2021-10-07-new-app-diagnostics-report) --- ### 新しいBox App Center (旧アプリギャラリー) **Type:** changelog | **Section:** Changelog 新しいBox App Center (旧アプリギャラリー) 全体的に更新されたBox App Centerが利用可能になりました。既存の1,500以上の統合をご利用いただけます。 # 新しいBox App Center (旧アプリギャラリー) 全体的に更新された[Box App Center](https://app.box.com/app-center)が利用可能になりました。既存の1,500以上の統合をご利用いただけます。 ## 更新内容 [Box App Center](https://app.box.com/app-center)は、アプリと統合の最新のリストを提供し、Boxウェブアプリからアクセスできます。 エンドユーザーの場合、Box App Centerを使用すると、Microsoft、Zoom、Salesforce、Slackなどのパートナーからすぐに使用できる統合が包括的に選択されているため、思いどおりの作業が簡単にできます。 ITリーダーや管理者は、Box App Centerでセキュリティやユーザーエクスペリエンスを低下させることなく、ユーザーに選択肢を提供できます。また、企業が承認したオプションのリストを提供することで、シャドーITを排除することができます。 Box App Centerは主要なBoxパッケージの一部となり、**すべて**のお客様にご利用いただけるようになりました。 ## 開発者向けリソース Box App Centerでのアプリケーションの作成、またはBoxパートナーへの参加をご希望の場合、詳細については[Box Partner Resources](https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources)のガイド (英語) を参照してください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-05-24-new-app-center](https://ja.developer.box.com/changelog/2022-05-24-new-app-center) --- ### 新しいBox CLIスクリプトを使用したメタデータの抽出 **Type:** changelog | **Section:** Changelog 新しいBox CLIスクリプトを使用したメタデータの抽出 Box CLIで新しいスクリプトを使用できるようになりました。このスクリプトにより、Boxのすべてのファイルとフォルダの詳細を示すメタデータを抽出し、CSVファイルに保存できます。 # 新しいBox CLIスクリプトを使用したメタデータの抽出 [Box CLI](g://cli)で新しいスクリプトを使用できるようになりました。このスクリプトにより、Boxのすべてのファイルとフォルダの詳細を示す[メタデータを抽出](g://cli/scripts/metadata-extraction)し、CSVファイルに保存できます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、Boxの[Developer Forum](https://support.box.com/hc/en-us/sections/360009473734-Box-Partner-Resources)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-10-05-metadata-extraction-script](https://ja.developer.box.com/changelog/2022-10-05-metadata-extraction-script) --- ### 新しいBox Open With Sidebar UI Element **Type:** changelog | **Section:** Changelog 新しいBox Open With Sidebar UI Element 新しいBox UI Elementのオープンベータ版である「Open With」Elementがリリースされました。「Open With」を使用すると、開発者は、Box… # 新しいBox Open With Sidebar UI Element 新しいBox UI Elementのオープンベータ版である「Open With」Elementがリリースされました。「Open With」を使用すると、開発者は、Boxに保存されたコンテンツを開くためのメニューをパートナーアプリケーションに埋め込むことができます。このベータリリースで利用可能なパートナーは、Adobe SignおよびG Suiteです。 この新しい要素のドキュメントと設定手順は、[こちら](guide://embed/ui-elements)から入手できます。 **Source:** [https://ja.developer.box.com/changelog/2018-09-27-new-box-open-with-sidebar-ui-element](https://ja.developer.box.com/changelog/2018-09-27-new-box-open-with-sidebar-ui-element) --- ### 新しいiOS SDKが使用可能になりました **Type:** changelog | **Section:** Changelog 新しいiOS SDKが使用可能になりました iOS SDKの新しいメジャーリリースが正式リリースされました。新しいSDKには、大幅な修正が数多く含まれています。 Swiftを使用して完全に再構築されました。 Cocoapods、Carthage、Swift Package… # 新しいiOS SDKが使用可能になりました iOS SDKの新しいメジャーリリースが正式リリースされました。新しいSDKには、大幅な修正が数多く含まれています。 - Swiftを使用して完全に再構築されました。 - Cocoapods、Carthage、Swift Package Managerのサポート。 - SDKでは、完全なAPI機能パリティが維持されるようになりました。 詳細については、[リリースに関するブログ記事](https://medium.com/box-developer-blog/the-new-box-ios-sdk-now-available-baf624b289b4)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2019-11-18-new-ios-sdk-now-available](https://ja.developer.box.com/changelog/2019-11-18-new-ios-sdk-now-available) --- ### 新しいShieldアラートイベント **Type:** changelog | **Section:** Changelog 新しいShieldアラートイベント 本日をもって、Box Shieldは、新しいイベントをリッスンするよう構成されている、Shieldをご利用のお客様向けに、Enterprise Event Stream内で新しいセキュリティイベントの生成を開始します。 Shield… # 新しいShieldアラートイベント 本日をもって、[Box Shield](https://www.box.com/shield)は、新しいイベントをリッスンするよう構成されている、Shieldをご利用のお客様向けに、[Enterprise Event Stream](g://events/enterprise-events/for-enterprise/)内で新しいセキュリティイベントの生成を開始します。 Shieldによって生成される可能性があるインシデントイベントは以下のとおりです。 - 不審な場所 - 不審なセッション - 異常なダウンロード - 悪意のあるコンテンツ これらのイベント内で生成されるペイロードの詳細については、[Shieldアラートイベント](g://events/event-triggers/shield-alert-events/)ドキュメントを参照してください。 **Source:** [https://ja.developer.box.com/changelog/2020-05-12-new-shield-alert-events](https://ja.developer.box.com/changelog/2020-05-12-new-shield-alert-events) --- ### 新しいShieldエラーコード **Type:** changelog | **Section:** Changelog 新しいShieldエラーコード Box Shieldの新しいエラーコードがリリースされました。新しい403 - forbidden_by_policyエラーコードは、会社が項目のダウンロードなどのアクションを防止するShield… # 新しいShieldエラーコード [Box Shield](https://www.box.com/shield)の新しいエラーコードがリリースされました。新しい`403 - forbidden_by_policy`エラーコードは、会社が項目のダウンロードなどのアクションを防止するShieldアクセスポリシーを適用したときに発生します。 アクションが必要な場合は、Box管理者に連絡し、Shieldアクセスポリシーを調整してください。 詳細とその他の解決策については[エラーコードドキュメント](guide://api-calls/permissions-and-errors/common-errors)を参照してください。 **Source:** [https://ja.developer.box.com/changelog/2019-10-23-new-shield-error-code](https://ja.developer.box.com/changelog/2019-10-23-new-shield-error-code) --- ### 新しいShieldダウンロードイベント **Type:** changelog | **Section:** Changelog 新しいShieldダウンロードイベント Shieldアクセスポリシーに基づいて制限されるダウンロードに対する新しいevent_typeを、Enterprise Event Streamにリリースしました。 # 新しいShieldダウンロードイベント Shieldアクセスポリシーに基づいて制限されるダウンロードに対する新しい`event_type`を、[Enterprise Event](g://events/enterprise-events/for-enterprise) Streamにリリースしました。 ダウンロードを制限するShieldアクセスポリシーを管理者が作成し、エンドユーザーがファイルをダウンロードできないようブロックされると、[Enterprise Event](g://events/enterprise-events/for-enterprise) Stream内でイベントが生成されます。また、ユーザーがダウンロードが制限されたファイルを含むフォルダを表示したとき、ダウンロードが制限されたファイルをプレビューで表示したとき、ダウンロードが制限されたファイルをAPIを介してダウンロードすることをリクエストしたときにもイベントが生成されます。これらのイベントは、標準のイベントオブジェクトスキーマと、`SHIELD_DOWNLOAD_BLOCKED`に設定された`event_type`値に従います。 ## 更新内容 - スマートアクセスのイベントトリガーのドキュメントに[新しいセクション](g://events/event-triggers/shield-alert-events/#download-restriction)を追加 - [Enterprise Eventのリスト](g://events/enterprise-events/for-enterprise/#event-types)に`SHIELD_DOWNLOAD_BLOCKED`を追加 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-11-22-new-shield-download-event](https://ja.developer.box.com/changelog/2021-11-22-new-shield-download-event) --- ### 新しいzipダウンロードAPI **Type:** changelog | **Section:** Changelog 新しいzipダウンロードAPI APIの新しいコレクションが利用可能になりました。開発者は、これを使用して、指定したリストのファイルやフォルダを含むzipファイルを作成できます。Boxは、このzipダウンロードAPI… # 新しいzipダウンロードAPI APIの新しいコレクションが利用可能になりました。開発者は、これを使用して、指定したリストのファイルやフォルダを含むzipファイルを作成できます。Boxは、この[zipダウンロードAPI](e://post_zip_downloads)に関するリファレンスドキュメントを更新しました。これらの新しいエンドポイントに対するSDKのサポートは、現在開発中であり、今後3か月以内にリリースする予定です。 **Source:** [https://ja.developer.box.com/changelog/2020-07-22-new-zip-download-apis-available](https://ja.developer.box.com/changelog/2020-07-22-new-zip-download-apis-available) --- ### 新しいコレクションイベント **Type:** changelog | **Section:** Changelog 新しいコレクションイベント 外部のコレクションイベントがEnterprise Event Streamから使用可能になりました。 Boxのコレクションを使用すると、ファイル、フォルダ、ウェブリンクを… # 新しいコレクションイベント 外部のコレクションイベントが[Enterprise Event](g://events/enterprise-events/for-enterprise/) Streamから使用可能になりました。 Boxの[コレクション](g://collections/)を使用すると、ファイル、フォルダ、ウェブリンクを1つのフォルダにまとめるのではなく、グループ化できます。これらの新しいイベントにより、社内で行われるコレクションの操作を監視することができます。 イベントは標準的なイベントオブジェクトスキーマに従っており、以下のようなものがあります。 - `COLLECTION_CREATE`: コレクションが作成されました - `COLLECTION_DELETE`: コレクションが削除されました - `COLLECTION_UPDATE`: コレクションが更新されました - `COLLECTION_ITEM_CREATE`: 項目がコレクションに追加されました - `COLLECTION_ITEM_DELETE`: 項目がコレクションから削除されました - `COLLECTION_ITEM_UPDATE`: コレクション内の項目が更新されました **Source:** [https://ja.developer.box.com/changelog/2021-03-16-new-collection-events](https://ja.developer.box.com/changelog/2021-03-16-new-collection-events) --- ### 新しいサイドバーUI ElementとOpen With UI Element正式リリース **Type:** changelog | **Section:** Changelog 新しいサイドバーUI ElementとOpen With UI Element正式リリース Box UI Elementsに2つのメジャーリリースが追加されました。 新しいサイドバーElement… # 新しいサイドバーUI ElementとOpen With UI Element正式リリース Box UI Elementsに2つのメジャーリリースが追加されました。 1. 新しいサイドバーElement: この新しい要素によって、ファイルのメタデータサイドバーを独自のアプリケーションまたはウェブサイトに直接組み込むことができます。ドキュメントは[こちら](guides://embed/ui-elements)で参照できます。 2. Open With Element正式リリース: Open With Elementはベータから正式リリースに移行しました。Open Withによって、Adobe Sign、G Suite、またはBox Editでファイルコンテンツを起動するための個別のボタンを作成できます。また、それを既存のコンテンツエクスプローラElementに統合することもできます。ドキュメントは[こちら](guides://embed/ui-elements)で参照できます。 リリース発表は[こちら](https://medium.com/box-developer-blog/new-sidebar-element-the-ga-of-open-with-935936a0628f)で参照できます。 **Source:** [https://ja.developer.box.com/changelog/2019-01-18-new-sidebar-ui-element-open-with-element-ga](https://ja.developer.box.com/changelog/2019-01-18-new-sidebar-ui-element-open-with-element-ga) --- ### 新しいファイルリクエストAPI **Type:** changelog | **Section:** Changelog 新しいファイルリクエストAPI APIの新しいコレクションが利用可能になりました。開発者はこれを使用して、ファイルリクエストを作成および更新できます。Box… # 新しいファイルリクエストAPI APIの新しいコレクションが利用可能になりました。開発者はこれを使用して、ファイルリクエストを作成および更新できます。Boxは、ファイルリクエストの管理に役立つよう、[リファレンスドキュメント](e://post_file_requests_id_copy)を更新したほか、[新しいガイド](g://file-requests)を追加しました。 既存のファイルリクエストのコピーを作成するために必要なのは、既存のファイルリクエストの一意のIDと、新しいリクエストの適用先となるフォルダのIDだけです。 ``` curl -i -X POST "https://api.box.com/2.0/file_requests/42037322/copy" \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "folder": { "id": "2233212" } }' ``` さらに、開発者がファイルリクエストの詳細を取得したり、ファイルリクエストを更新または削除したりできるように追加のAPIも利用可能になりました。詳細については、Developerドキュメントをご確認ください。 - **テンプレートのファイルリクエストを作成する**: [ガイド](g://file-requests/template) - **ファイルリクエストのコピーを作成する**: [ガイド](g://file-requests/copy) | [APIリファレンス](e://post_file_requests_id_copy) - **ファイルリクエストに関する情報を取得する**: [ガイド](g://file-requests/get) | [APIリファレンス](e://get_file_requests_id) - **ファイルリクエストの構成を更新する**: [ガイド](g://file-requests/update) | [APIリファレンス](e://put_file_requests_id) - **ファイルリクエストを削除する**: [ガイド](g://file-requests/delete) | [APIリファレンス](e://delete_file_requests_id) **Source:** [https://ja.developer.box.com/changelog/2020-10-02-new-file-request-apis-available](https://ja.developer.box.com/changelog/2020-10-02-new-file-request-apis-available) --- ### 新しいメタデータクエリAPI **Type:** changelog | **Section:** Changelog 新しいメタデータクエリAPI 新しいAPIが使用可能になりました。開発者はこのAPIを使用して、ファイルやフォルダに追加されているメタデータによってそのファイルやフォルダに対してクエリを実行できます。Boxは、こちらのメタデータクエリAPI… # 新しいメタデータクエリAPI 新しいAPIが使用可能になりました。開発者はこのAPIを使用して、ファイルやフォルダに追加されているメタデータによってそのファイルやフォルダに対してクエリを実行できます。Boxは、こちらの[メタデータクエリAPI](e://post_metadata_queries_execute_read)のリファレンスドキュメントを更新したほか、新しい[ガイド](g://metadata/queries)と[メタデータのクイックスタートガイド](g://metadata/quick-start)の更新をリリースしました。 **Source:** [https://ja.developer.box.com/changelog/2020-04-21-new-metadata-query-apis-available](https://ja.developer.box.com/changelog/2020-04-21-new-metadata-query-apis-available) --- ### 新しいメタデータクエリインデックスのエンドポイント **Type:** changelog | **Section:** Changelog 新しいメタデータクエリインデックスのエンドポイント 指定したテンプレートとスコープのメタデータクエリインデックスのリストを取得する新しいAPIエンドポイントが導入されました。 # 新しいメタデータクエリインデックスのエンドポイント 指定したテンプレートとスコープのメタデータクエリインデックスのリストを取得する新しいAPIエンドポイントが導入されました。 メタデータクエリを使用すると、ファイルやフォルダに追加されているメタデータを検索して、そのファイルやフォルダを見つけることができます。 10,000を超えるファイルやフォルダに対してメタデータクエリを実行する際に、クエリのパフォーマンスが悪いと`HTTP 403`エラーが発生する場合があります。検索インデックスを作成すれば、これらのクエリを大規模に実行して、このエラー状態を回避できます。また、検索インデックスは、クエリの処理中に自動的に適用されます。 この新しいエンドポイントにより、作成されたこれらの検索インデックスの参照が可能になります。 ## 機能 このリリースでは、以下の新しいコンテンツと機能が導入されました。 - スコープやメタデータを指定してメタデータクエリインデックスのリストを取得するための新しいAPIエンドポイント。 - 新しいメタデータクエリインデックスの[レスポンスオブジェクト](r://metadata-query-indices)。 - 新しいメタデータクエリインデックス (複数) の[レスポンスオブジェクト](r://metadata_query_index)。 ## 更新内容 このリリースでは、次のように、コンテンツが更新されました。 - メタデータクエリインデックスのリストを取得する方法の詳細が記載されているメタデータクエリインデックスガイドを更新。 **Source:** [https://ja.developer.box.com/changelog/2021-03-25-new-metadata-query-indicies-endpoint](https://ja.developer.box.com/changelog/2021-03-25-new-metadata-query-indicies-endpoint) --- ### 新しい入門ガイド **Type:** changelog | **Section:** Changelog 新しい入門ガイド Box APIの利用を開始するには、Boxのステップバイステップガイドをご確認ください。最適なユースケース、ユーザーモデル、アーキテクチャパターンなどを紹介しています。 # 新しい入門ガイド Box APIの利用を開始するには、Boxの[ステップバイステップガイド](g://getting-started)をご確認ください。最適なユースケース、ユーザーモデル、アーキテクチャパターンなどを紹介しています。 ## 機能 - ユースケースの評価: [ガイド](page/platform/use-cases/) - 一般的なユーザーモデル: [ガイド](page/platform/user-types/) - 一般的なアーキテクチャパターン: [ガイド](page/platform/appendix/architecture-patterns/) - 一般的な値の確認: [ガイド](page/platform/appendix/locating-values/) - セキュリティの概要: [ガイド](g://security) - 認証のベストプラクティス: [ガイド](g://authentication/best-practices) - 詳細な承認手順: [ガイド](g://authorization) **Source:** [https://ja.developer.box.com/changelog/2021-08-03-getting-started-guide](https://ja.developer.box.com/changelog/2021-08-03-getting-started-guide) --- ### 新しい編集可能な共有リンクAPI **Type:** changelog | **Section:** Changelog 新しい編集可能な共有リンクAPI 開発者は、APIを使用して共有リンクでファイルを編集可能にできるようになりました。 # 新しい編集可能な共有リンクAPI 開発者は、APIを使用して共有リンクでファイルを編集可能にできるようになりました。 ## ドキュメントの更新 - [ファイル](r://file--full#param-shared_link-permissions)、[フォルダ](r://folder--full#param-shared_link-permissions)、[ウェブリンク](r://web-link/#param-shared_link-permissions)リソースの`permissions`オブジェクトに新しい`can_edit`値を追加 - [`file--full`](r://file--full/#param-shared_link_permission_options)リソースに新しい`shared_link_permission_options`フィールドを追加 - リファレンスドキュメントに[ウェブリンクの共有リンクセクション](e://get-shared-items--web-links)を追加 - 共有リンクのガイドドキュメントに[権限に関するページ](g://shared-links/permissions)を追加 - 同じPUTエンドポイントを使用しているため、[共有リンクの更新と追加](g://shared-links/create-or-update)のガイドページを統合 - 複数の共有リンクページでコードスニペットを更新 ## 機能強化の詳細 - ファイルにコラボレータとしてユーザーを設定するのではなく、`shared_link.permissions.can_edit`フィールドを`true`に設定することで編集権限を付与できます。 - ファイル、フォルダ、ウェブリンクのすべての共有リンクオブジェクトで`can_edit`フィールドが返されます。ただし、ファイルの場合はtrueにしか設定できません。 - この機能は今後の数四半期で弊社のSDKライブラリに追加されます。 - 管理者が編集可能な共有リンクを管理コンソールでオフにした場合、この機能は使用できません。 ### cURLの例 ``` curl -i -X PUT 'https://api.box.com/2.0/files/123456789?fields=shared_link' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer [ACCESS TOKEN]' \ -d '{ "shared_link": { "permissions": { "can_preview": true, "can_download": true, "can_edit": true } } }' ``` ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-05-06-new-editable-shared-links-api](https://ja.developer.box.com/changelog/2022-05-06-new-editable-shared-links-api) --- ### 新しくなったBox CLIのYouTube動画 **Type:** changelog | **Section:** Changelog 新しくなったBox CLIのYouTube動画 2月に、OAuth 2.0バージョンのBox CLIと一緒に新しいYouTubeコンテンツをリリースしました。本日は、このシリーズの2番目の動画をリリースしました。この動画では、組み込みのヘルプ機能を使用してCLIでフォルダを作成する方法を紹介しています。 # 新しくなったBox CLIのYouTube動画 2月に、OAuth 2.0バージョンのBox CLIと一緒に新しいYouTubeコンテンツを[リリース](page/changelog/#2022-02-01-box-cli-v300-released)しました。本日は、このシリーズの[2番目の動画](https://www.youtube.com/watch?v=66wlIyS07Aw&list=PL0F3BD5B64D6A39F1&index=2)をリリースしました。この動画では、組み込みのヘルプ機能を使用してCLIでフォルダを作成する方法を紹介しています。 [YouTube](https://www.youtube.com/playlist?list=PL0F3BD5B64D6A39F1)のBox Platform and Developerというプレイリストをご確認ください。さらに2つの動画 (as-userなどの高度なトピックとPowerShellを使用したCLI自動化) を予定しています。 最新のコンテンツをすべて入手するには、ぜひBoxチャンネルに[ご登録](https://www.youtube.com/user/box/featured)ください。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-03-17-new-box-cli-youtube-video](https://ja.developer.box.com/changelog/2022-03-17-new-box-cli-youtube-video) --- ### 新しくなったフォルダロックAPI **Type:** changelog | **Section:** Changelog 新しくなったフォルダロックAPI フォルダに対する移動および削除アクションの制限を可能にするために、APIの新しいコレクションがリリースされました。フォルダのロックの作成および管理に役立つ、新しいAPI… # 新しくなったフォルダロックAPI フォルダに対する移動および削除アクションの制限を可能にするために、APIの新しいコレクションがリリースされました。フォルダのロックの作成および管理に役立つ、新しい[APIリファレンス](e://post-folder-locks)と[ガイド](g://folders/single/create-lock)が使用可能になりました。 フォルダが移動または削除されないようにそのフォルダにロックを作成するには、`POST /folder_locks/`エンドポイントにフォルダのIDを指定します。 ``` curl -i -X POST "https://api.box.com/2.0/folder_locks" \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "folder": { "type": "folder", "id": "33552487093" } }' ``` また、開発者が特定のフォルダに対するすべてのロックのリストを取得したり、フォルダから既存のフォルダのロックを削除したりできるように、追加のAPIエンドポイントが提供されています。 - **フォルダのロックを作成する**: [ガイド](g://folders/single/create-lock) | [APIリファレンス](e://post-folder-locks) - **フォルダに対するすべてのロックのリストを取得する**: [ガイド](g://folders/single/get-locks) | [APIリファレンス](e://get-folder-locks) - **フォルダのロックを削除する**: [ガイド](g://folders/single/delete-lock) | [APIリファレンス](e://delete-folder-locks-id) **Source:** [https://ja.developer.box.com/changelog/2020-10-22-new-folder-lock-apis-now-available](https://ja.developer.box.com/changelog/2020-10-22-new-folder-lock-apis-now-available) --- ### 新しくなったフォルダロックAPI **Type:** changelog | **Section:** Changelog 新しくなったフォルダロックAPI 開発者がフォルダに対する移動操作と削除操作をロックできるように、APIの新しいコレクションがリリースされました。フォルダロックの作成および管理に役立つ、新しいAPI… # 新しくなったフォルダロックAPI 開発者がフォルダに対する移動操作と削除操作をロックできるように、APIの新しいコレクションがリリースされました。フォルダロックの作成および管理に役立つ、新しい[APIリファレンス](e://post-folder-locks)と[ガイド](g://folders/single/create-lock)が使用可能になりました。 フォルダが移動または削除されないようにそのフォルダにロックを作成するには、`folder_locks`エンドポイントにフォルダのIDを指定します。 ``` curl -i -X POST "https://api.box.com/2.0/folder_locks" \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "folder": { "type": "folder", "id": "33552487093" } }' ``` また、開発者が特定のフォルダに対するすべてのロックのリストを取得したり、フォルダロックIDを使用して既存のフォルダロックを削除したりできるように、追加のAPIエンドポイントが提供されています。 - **フォルダのロックを作成する**: [ガイド](g://folders/single/create-lock) | [APIリファレンス](e://post-folder-locks) - **フォルダに対するすべてのロックのリストを取得する**: [ガイド](g://folders/single/get-locks) | [APIリファレンス](e://get-folder-locks) - **フォルダのロックを削除する**: [ガイド](g://folders/single/delete-lock) | [APIリファレンス](e://delete-folder-locks-id) **Source:** [https://ja.developer.box.com/changelog/2020-10-26-new-folder-lock-apis-now-available](https://ja.developer.box.com/changelog/2020-10-26-new-folder-lock-apis-now-available) --- ### 新世代のPython SDKのリリース **Type:** changelog | **Section:** Changelog 新世代のPython SDKのリリース Box Python SDKをリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 新世代のPython SDKでは、以下を利用できるようになります。 API… # 新世代のPython SDKのリリース [Box Python SDK](https://github.com/box/box-python-sdk-gen)をリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 [新世代のPython SDK](https://github.com/box/box-python-sdk-gen)では、以下を利用できるようになります。 - **APIの全面的なサポート**: 新世代のBox SDKにより、開発者はBox APIエコシステム全体をカバーできるようになります。Boxが提供する最新機能をすべて利用できるようになったため、より高性能で機能豊富なアプリケーションを作成できます。 - **迅速なAPIの更新**: 新しいBox APIがSDKに組み込まれるのを待つ必要はなくなります。Boxでは、自動生成による新しい開発アプローチにより、はるかに速いペースで (数日中に) 新しいBox APIをSDKに追加できるようになりました。これは、最新の機能をすぐにアプリケーションで利用できるようになることを意味します。 - **ドキュメントへの埋め込み**: Boxでは、開発者にとって情報へのアクセスが重要であることを理解しています。新しいアプローチを使用して、すべてのオブジェクトおよびパラメータに関する包括的なドキュメントをSDKのソースコードに直接含めました。つまり、この情報を開発者向けポータルで探す必要がなくなるため、時間の節約と開発プロセスの効率化につながります。 - **便利なメソッドの強化**: 開発エクスペリエンスを強化するBoxの取り組みにより、便利なメソッドの導入が推進されます。このようなメソッドは、認証、分割アップロード、指数バックオフ、自動再試行、型チェック (変数を正しく使用しているかどうかの確認に役立ちます) など、さまざまな側面をカバーします。 新世代のBox SDKを利用して、Boxコンテンツクラウドの可能性を最大限に引き出してください。より迅速かつ効率的に革新的なソリューションを作成しましょう。 **Source:** [https://ja.developer.box.com/changelog/2024-05-20-box-python-sdk-new-gen-released](https://ja.developer.box.com/changelog/2024-05-20-box-python-sdk-new-gen-released) --- ### 新世代のPython SDKのリリース **Type:** changelog | **Section:** Changelog 新世代のPython SDKのリリース Box Python SDKをリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 # 新世代のPython SDKのリリース [Box Python SDK](https://github.com/box/box-python-sdk-gen)をリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 [新世代のPython SDK](https://github.com/box/box-python-sdk-gen)では、以下を利用できるようになります。 - **APIの全面的なサポート**: 新世代のBox SDKにより、開発者はBox APIエコシステム全体をカバーできるようになります。Boxが提供する最新機能をすべて利用できるようになったため、より高性能で機能豊富なアプリケーションを作成できます。 - **迅速なAPIの更新**: 新しいBox APIがSDKに組み込まれるのを待つ必要はなくなります。Boxでは、自動生成による新しい開発アプローチにより、はるかに速いペースで (数日中に) 新しいBox APIをSDKに追加できるようになりました。これは、最新の機能をすぐにアプリケーションで利用できるようになることを意味します。 - **ドキュメントへの埋め込み**: Boxでは、開発者にとって情報へのアクセスが重要であることを理解しています。新しいアプローチを使用して、すべてのオブジェクトおよびパラメータに関する包括的なドキュメントをSDKのソースコードに直接含めました。つまり、この情報を開発者向けポータルで探す必要がなくなるため、時間の節約と開発プロセスの効率化につながります。 - **便利なメソッドの強化**: 開発エクスペリエンスを強化するBoxの取り組みにより、便利なメソッドの導入が推進されます。このようなメソッドは、認証、分割アップロード、指数バックオフ、自動再試行、型チェック (変数を正しく使用しているかどうかの確認に役立ちます) など、さまざまな側面をカバーします。 新世代のBox SDKを利用して、Boxコンテンツクラウドの可能性を最大限に引き出してください。より迅速かつ効率的に革新的なソリューションを作成しましょう。 **Source:** [https://ja.developer.box.com/changelog/2024-05-20-box-python-sdk-new-gen-released%20copy](https://ja.developer.box.com/changelog/2024-05-20-box-python-sdk-new-gen-released%20copy) --- ### 新世代のPython SDKのリリース **Type:** changelog | **Section:** Changelog 新世代のPython SDKのリリース Box Python SDKをリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 # 新世代のPython SDKのリリース [Box Python SDK](https://github.com/box/box-python-sdk-gen)をリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 [新世代のPython SDK](https://github.com/box/box-python-sdk-gen)では、以下を利用できるようになります。 - **APIの全面的なサポート**: 新世代のBox SDKにより、開発者はBox APIエコシステム全体をカバーできるようになります。Boxが提供する最新機能をすべて利用できるようになったため、より高性能で機能豊富なアプリケーションを作成できます。 - **迅速なAPIの更新**: 新しいBox APIがSDKに組み込まれるのを待つ必要はなくなります。Boxでは、自動生成による新しい開発アプローチにより、はるかに速いペースで (数日中に) 新しいBox APIをSDKに追加できるようになりました。これは、最新の機能をすぐにアプリケーションで利用できるようになることを意味します。 - **ドキュメントへの埋め込み**: Boxでは、開発者にとって情報へのアクセスが重要であることを理解しています。新しいアプローチを使用して、すべてのオブジェクトおよびパラメータに関する包括的なドキュメントをSDKのソースコードに直接含めました。つまり、この情報を開発者向けポータルで探す必要がなくなるため、時間の節約と開発プロセスの効率化につながります。 - **便利なメソッドの強化**: 開発エクスペリエンスを強化するBoxの取り組みにより、便利なメソッドの導入が推進されます。このようなメソッドは、認証、分割アップロード、指数バックオフ、自動再試行、型チェック (変数を正しく使用しているかどうかの確認に役立ちます) など、さまざまな側面をカバーします。 新世代のBox SDKを利用して、Boxコンテンツクラウドの可能性を最大限に引き出してください。より迅速かつ効率的に革新的なソリューションを作成しましょう。 **Source:** [https://ja.developer.box.com/changelog/2024-05-20-box-python-sdk-new-gen](https://ja.developer.box.com/changelog/2024-05-20-box-python-sdk-new-gen) --- ### 新世代のSwift SDKのリリース **Type:** changelog | **Section:** Changelog 新世代のSwift SDKのリリース Box Swift SDKをリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 # 新世代のSwift SDKのリリース [Box Swift SDK](https://github.com/box/box-swift-sdk-gen)をリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 [新世代のSwift SDK](https://github.com/box/box-swift-sdk-gen)では、以下を利用できるようになります。 - **APIの全面的なサポート**: 新世代のBox SDKにより、開発者はBox APIエコシステム全体をカバーできるようになります。Boxが提供する最新機能をすべて利用できるようになったため、より高性能で機能豊富なアプリケーションを作成できます。 - **迅速なAPIの更新**: 新しいBox APIがSDKに組み込まれるのを待つ必要はなくなります。Boxでは、自動生成による新しい開発アプローチにより、はるかに速いペースで (数日中に) 新しいBox APIをSDKに追加できるようになりました。これは、最新の機能をすぐにアプリケーションで利用できるようになることを意味します。 - **ドキュメントへの埋め込み**: Boxでは、開発者にとって情報へのアクセスが重要であることを理解しています。新しいアプローチを使用して、すべてのオブジェクトおよびパラメータに関する包括的なドキュメントをSDKのソースコードに直接含めました。つまり、この情報を開発者向けポータルで探す必要がなくなるため、時間の節約と開発プロセスの効率化につながります。 - **便利なメソッドの強化**: 開発エクスペリエンスを強化するBoxの取り組みにより、便利なメソッドの導入が推進されます。このようなメソッドは、認証、分割アップロード、指数バックオフ、自動再試行、型チェック (変数を正しく使用しているかどうかの確認に役立ちます) など、さまざまな側面をカバーします。 新世代のBox SDKを利用して、Boxコンテンツクラウドの可能性を最大限に引き出してください。より迅速かつ効率的に革新的なソリューションを作成しましょう。 **Source:** [https://ja.developer.box.com/changelog/2024-07-25-box-swift-sdk-new-gen-released](https://ja.developer.box.com/changelog/2024-07-25-box-swift-sdk-new-gen-released) --- ### 新世代のTypeScript SDKのリリース **Type:** changelog | **Section:** Changelog 新世代のTypeScript SDKのリリース Box TypeScript SDKをリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 # 新世代のTypeScript SDKのリリース [Box TypeScript SDK](https://github.com/box/box-typescript-sdk-gen)をリリースしました。これは、開発者エクスペリエンスを向上させ、Boxコンテンツクラウドとの統合を効率化することを目的としています。 [新世代のTypescript SDK](https://github.com/box/box-typescript-sdk-gen)では、以下を利用できるようになります。 - **APIの全面的なサポート**: 新世代のBox SDKにより、開発者はBox APIエコシステム全体をカバーできるようになります。Boxが提供する最新機能をすべて利用できるようになったため、より高性能で機能豊富なアプリケーションを作成できます。 - **迅速なAPIの更新**: 新しいBox APIがSDKに組み込まれるのを待つ必要はなくなります。Boxでは、自動生成による新しい開発アプローチにより、はるかに速いペースで (数日中に) 新しいBox APIをSDKに追加できるようになりました。これは、最新の機能をすぐにアプリケーションで利用できるようになることを意味します。 - **ドキュメントへの埋め込み**: Boxでは、開発者にとって情報へのアクセスが重要であることを理解しています。新しいアプローチを使用して、すべてのオブジェクトおよびパラメータに関する包括的なドキュメントをSDKのソースコードに直接含めました。つまり、この情報を開発者向けポータルで探す必要がなくなるため、時間の節約と開発プロセスの効率化につながります。 - **便利なメソッドの強化**: 開発エクスペリエンスを強化するBoxの取り組みにより、便利なメソッドの導入が推進されます。このようなメソッドは、認証、分割アップロード、指数バックオフ、自動再試行、型チェック (変数を正しく使用しているかどうかの確認に役立ちます) など、さまざまな側面をカバーします。 新世代のBox SDKを利用して、Boxコンテンツクラウドの可能性を最大限に引き出してください。より迅速かつ効率的に革新的なソリューションを作成しましょう。 **Source:** [https://ja.developer.box.com/changelog/2024-05-20-box-node-sdk-new-gen-released](https://ja.developer.box.com/changelog/2024-05-20-box-node-sdk-new-gen-released) --- ### 検索APIで共有リンクのサポートを追加 **Type:** changelog | **Section:** Changelog 検索APIで共有リンクのサポートを追加 検索APIでは、ユーザーが最近共有リンクを介してアクセスしたファイル、フォルダ、およびウェブリンクが返されるようになりました。 共有項目をリクエストするには、新しいinclude_recent_shared_linksクエリパラメータをtrueに設定してGET /search APIを呼び出します。 このクエリパラメータが指定されていない場合またはtrueに設定されていない場合、デフォルトでは、このAPIによって共有項目が返されることはありません。 レスポンス形式の変更 include_recent_shared_linksをtrueに設定した場合、追加情報を返すことができるようにレスポンスが若干変更されました。APIでは、ファイル、フォルダ、およびウェブリンクの直接的なリストではなく、itemとaccessible_via_shared_linkプロパティを含むオブジェクトのリストが返されるようになりました。 # 検索APIで共有リンクのサポートを追加 [検索API](e://get_search)では、ユーザーが最近共有リンクを介してアクセスしたファイル、フォルダ、およびウェブリンクが返されるようになりました。 共有項目をリクエストするには、新しい`include_recent_shared_links`クエリパラメータを`true`に設定して[`GET /search`](e://get_search) APIを呼び出します。 ``` curl -i -X GET https://api.box.com/2.0/search?query=Contract&include_recent_shared_link=true ``` このクエリパラメータが指定されていない場合またはtrueに設定されていない場合、デフォルトでは、このAPIによって共有項目が返されることはありません。 ## レスポンス形式の変更 `include_recent_shared_links`を`true`に設定した場合、追加情報を返すことができるようにレスポンスが若干変更されました。APIでは、ファイル、フォルダ、およびウェブリンクの直接的なリストではなく、`item`と`accessible_via_shared_link`プロパティを含むオブジェクトのリストが返されるようになりました。 ``` { "entries": [ { "item": { "id": 12345, "etag": 1, "type": "file", "sequence_id": 3, "name": "Contract.pdf", ... }, "accessible_via_shared_link": "https://www.box.com/s/vspke7y05sb214wjokpk" } ... ], "limit": 1000, "offset": 2000, "total_count": 5000 } ``` ``` { "entries": [ { "id": 12345, "etag": 1, "type": "file", "sequence_id": 3, "name": "Contract.pdf", ... }, ... ], "limit": 1000, "offset": 2000, "total_count": 5000 } ``` このレスポンス形式の変更は、新しいクエリパラメータを使用して行われるAPIコールのみに適用されるため、既存のアプリケーションに影響することはありません。 **Source:** [https://ja.developer.box.com/changelog/2020-09-25-search-api-adds-support-for-shared-links](https://ja.developer.box.com/changelog/2020-09-25-search-api-adds-support-for-shared-links) --- ### 検索APIで共有リンクのサポートを追加 **Type:** changelog | **Section:** Changelog 検索APIで共有リンクのサポートを追加 検索APIでは、ユーザーが最近共有リンクを介してアクセスしたファイル、フォルダ、およびウェブリンクが返されるようになりました。 共有項目をリクエストするには、新しいinclude_recent_shared_linksクエリパラメータをtrueに設定してGET /search APIを呼び出します。 このクエリパラメータが指定されていない場合またはtrueに設定されていない場合、デフォルトでは、このAPIによって共有項目が返されることはありません。 レスポンス形式の変更 include_recent_shared_linksをtrueに設定した場合、追加情報を返すことができるようにレスポンスが若干変更されました。APIでは、ファイル、フォルダ、およびウェブリンクの直接的なリストではなく、itemとaccessible_via_shared_linkプロパティを含むオブジェクトのリストが返されるようになりました。 # 検索APIで共有リンクのサポートを追加 [検索API](e://get_search)では、ユーザーが最近共有リンクを介してアクセスしたファイル、フォルダ、およびウェブリンクが返されるようになりました。 共有項目をリクエストするには、新しい`include_recent_shared_links`クエリパラメータを`true`に設定して[`GET /search`](e://get_search) APIを呼び出します。 ``` curl -i -X GET https://api.box.com/2.0/search?query=Contract&include_recent_shared_link=true ``` このクエリパラメータが指定されていない場合またはtrueに設定されていない場合、デフォルトでは、このAPIによって共有項目が返されることはありません。 ## レスポンス形式の変更 `include_recent_shared_links`を`true`に設定した場合、追加情報を返すことができるようにレスポンスが若干変更されました。APIでは、ファイル、フォルダ、およびウェブリンクの直接的なリストではなく、`item`と`accessible_via_shared_link`プロパティを含むオブジェクトのリストが返されるようになりました。 ``` { "entries": [ { "item": { "id": 12345, "etag": 1, "type": "file", "sequence_id": 3, "name": "Contract.pdf", ... }, "accessible_via_shared_link": "https://www.box.com/s/vspke7y05sb214wjokpk" } ... ], "limit": 1000, "offset": 2000, "total_count": 5000 } ``` ``` { "entries": [ { "id": 12345, "etag": 1, "type": "file", "sequence_id": 3, "name": "Contract.pdf", ... }, ... ], "limit": 1000, "offset": 2000, "total_count": 5000 } ``` このレスポンス形式の変更は、新しいクエリパラメータを使用して行われるAPIコールのみに適用されるため、既存のアプリケーションに影響することはありません。 **Source:** [https://ja.developer.box.com/changelog/2020-10-08-search-api-adds-support-for-shared-links](https://ja.developer.box.com/changelog/2020-10-08-search-api-adds-support-for-shared-links) --- ### 検索APIで新しい`multiSelect`メタデータがサポート **Type:** changelog | **Section:** Changelog 検索APIで新しいmultiSelectメタデータがサポート 本日以降、検索APIでは、multiSelectメタデータフィールドの複数の値による項目の照合がサポートされるようになりました。この変更が行われる前は、multiSelectフィールドの値で項目を検索することはできませんでした。 メタデータフィールドが複数の値と一致する項目の検索を実行するために、mdfiltersパラメータでは値のリストがサポートされるようになりました。 # 検索APIで新しいmultiSelectメタデータがサポート 本日以降、[検索API](e://get_search)では、[`multiSelect`メタデータフィールド](g://metadata/fields/multi-select)の複数の値による項目の照合がサポートされるようになりました。この変更が行われる前は、`multiSelect`フィールドの値で項目を検索することはできませんでした。 メタデータフィールドが複数の値と一致する項目の検索を実行するために、`mdfilters`パラメータでは値のリストがサポートされるようになりました。 ``` curl -G 'https://api.box.com/2.0/search' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -d 'mdfilters=[{"scope":"enterprise_12345","templateKey":"contractInfo","filters":{"products":["shield","platform"]}}]' ``` この例の`mdfilters`クエリパラメータには、`scope`、`templateKey`、一連の`filters`を含むフィルタが1つ指定されています。 ``` [ { "scope": "enterprise_12345", "templateKey": "contractInfo", "filters": { "products": [ "shield", "platform" ] } } ] ``` 今回、ここでは新しく、`products`に対するフィルタは複数の値で検索できるようになりました。これにより、テンプレートの`products`値が`shield`または`platform`のいずれかであるファイルおよびフォルダのみが返されます。フィルタには複数の値を含めることができ、フィルタに指定された値のうち1つでも値があれば一致します。たとえば、`["shield", "governance"]`に対してフィルタ`["shield", "platform"]`が一致するのは、`shield`がフィルタに含まれているためです。 **Source:** [https://ja.developer.box.com/changelog/2020-08-25-multi-select-metadata-support-in-search-api](https://ja.developer.box.com/changelog/2020-08-25-multi-select-metadata-support-in-search-api) --- ### 検索APIのレスポンスの新しい`type`フィールド **Type:** changelog | **Section:** Changelog 検索APIのレスポンスの新しいtypeフィールド 返された共有リンク項目の検索結果レスポンスオブジェクトに、新しいフィールドtypeが導入されました。 このレスポンスオブジェクト形式が返されるのは、include_recent_shared_linksクエリパラメータをtrue… # 検索APIのレスポンスの新しいtypeフィールド 返された共有リンク項目の[検索結果レスポンスオブジェクト](r://search-result-with-shared-link)に、新しいフィールド`type`が導入されました。 このレスポンスオブジェクト形式が返されるのは、`include_recent_shared_links`クエリパラメータを`true`に設定した状態で[コンテンツの検索](r://get-search)エンドポイントを呼び出した場合のみです。 現在このレスポンスオブジェクトを使用している既存のアプリケーションに影響はありません。 ## 更新内容 このリリースより前は、共有リンクの検索結果の戻りオブジェクトに次の2つのオブジェクトが含まれていました。 - `accessible_via_shared_link`: 項目にアクセスできる共有リンク。 - `item`: 検索クエリに一致したファイル、フォルダ、またはウェブリンク。 ``` { "accessible_via_shared_link": "https://www.box.com/s/vfejh7y01sb263wjtgfe", "item": { ... } } ``` この更新により、新しい`type`フィールドが導入されました。これは、常に`search_result`に設定される文字列です。 ``` { "type": "search_result", "accessible_via_shared_link": "https://www.box.com/s/vfejh7y01sb263wjtgfe", "item": { ... } } ``` 形式の詳細については、[共有リンクの検索結果](r://search-result-with-shared-link)レスポンスオブジェクトを参照してください。 **Source:** [https://ja.developer.box.com/changelog/2020-12-03-new-type-field-in-search-api-responses](https://ja.developer.box.com/changelog/2020-12-03-new-type-field-in-search-api-responses) --- ### 検索APIの新しいクエリパラメータ **Type:** changelog | **Section:** Changelog 検索APIの新しいクエリパラメータ 新しいフィールドrecent_updater_user_idsを使用してAPIでのコンテンツの検索にフィルタをかけられるようになりました。 # 検索APIの新しいクエリパラメータ 新しいフィールド`recent_updater_user_ids`を使用してAPIでのコンテンツの検索にフィルタをかけられるようになりました。 ## 更新内容 - [`GET /get-search`](e://get-search/#param-recent_updater_user_ids) APIエンドポイントに新しいクエリパラメータ`recent_updater_user_ids`を追加 ## 機能 - 指定したユーザーリスト (ユーザーIDのコンマ区切りリストとして定義) によって更新された項目のみに検索結果を絞り込みます。 - この機能では、項目の過去10バージョンのみを検索します。 ### cURLの例 ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales&recent_updater_user_ids=1234567890,2314567890" \ -H "Authorization: Bearer <ACCESS_TOKEN>" ``` ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-03-25-new-search-api-query-parameter](https://ja.developer.box.com/changelog/2022-03-25-new-search-api-query-parameter) --- ### 検索APIの新しいパラメータ **Type:** changelog | **Section:** Changelog 検索APIの新しいパラメータ Search APIで、新しいクエリパラメータであるsortとdirection (省略可) を使用できるようになりました。 このパラメータの目的は、アプリケーションが項目をmodified_at日付で昇順または降順にソートできるようにすることです。 # 検索APIの新しいパラメータ [Search API](e://get-search)で、新しいクエリパラメータである`sort`と`direction` (省略可) を使用できるようになりました。 このパラメータの目的は、アプリケーションが項目を`modified_at`日付で昇順または降順にソートできるようにすることです。 **Source:** [https://ja.developer.box.com/changelog/2019-10-25-new-parameters-for-search-api](https://ja.developer.box.com/changelog/2019-10-25-new-parameters-for-search-api) --- ### 検索の関連度とパフォーマンスの更新 **Type:** changelog | **Section:** Changelog 検索の関連度とパフォーマンスの更新 1月に、Boxの検索用トークナイザに対する更新がリリースされ、検索結果の関連性とパフォーマンスが向上しました。今回の変更によるメタデータのトークン化への影響はありません。 APIによる検索の注目すべき変更点は以下のとおりです。 「the… # 検索の関連度とパフォーマンスの更新 1月に、Boxの検索用[トークナイザ](https://en.wikipedia.org/wiki/Lexical_analysis#Tokenization)に対する更新がリリースされ、検索結果の関連性とパフォーマンスが向上しました。今回の変更によるメタデータのトークン化への影響はありません。 APIによる検索の注目すべき変更点は以下のとおりです。 - 「the」、「is」、「at」、「which」、「on」などの「[ストップワード](https://en.wikipedia.org/wiki/Stop_words)」が使用可能になりました - 日本語テキストのトークン化が改善され、検索結果が向上しました BoxのAPIを使用した検索方法の詳細については、[ファイルコンテンツ検索](g://search)に関するドキュメントを参照してください。 **Source:** [https://ja.developer.box.com/changelog/2020-07-30-updates-to-search-relevance-performance](https://ja.developer.box.com/changelog/2020-07-30-updates-to-search-relevance-performance) --- ### 空のOAuth 2リダイレクトURIの変更 **Type:** changelog | **Section:** Changelog 空のOAuth 2リダイレクトURIの変更 2020年9月28日に、OAuth 2アプリリダイレクトURIのセキュリティ要件に対して変更が予定されていることをお知らせしました。今後、空のリダイレクトURI… # 空のOAuth 2リダイレクトURIの変更 2020年9月28日に、[OAuth 2アプリリダイレクトURIのセキュリティ要件](page/changelog/#2020-09-29-changes-to-oauth-2-app-redirect-url-requirements)に対して変更が予定されていることをお知らせしました。今後、空のリダイレクトURIを使用するアプリケーションは認められなくなり、ユーザーをリダイレクトしようとすると、一致しないURIがあることを示す`redirect_uri missing`というエラーが発生するようになります。 影響を受けるアプリケーションは、アプリケーションとアカウントに関連付けられた開発者のメールアドレス宛ての複数のメールを受信することになり、機能を維持できるようにこの変更の適用から除外された一部のアプリケーションに含まれます。 新しいアプリケーションや、リダイレクトURIが指定されているOAuth 2アプリケーションは影響を受けません。 ## OAuth 2アプリリダイレクトURIを更新する方法 OAuth 2アプリケーションでリダイレクト時にエラーが発生し始めたら、この変更による影響を受けている可能性があります。アプリケーションを更新するには、以下の手順に従ってください。 - アプリケーションを所有するユーザーとして、[Box開発者コンソール](https://cloud.app.box.com/developers/console)に移動します。 - 上部のナビゲーションで [**構成**] をクリックします。 - [**OAuth 2.0リダイレクトURI**] セクションまで下にスクロールします。  - このURIが空のアプリケーションでは、<c0>こちらのガイドで説明されているように<c0>、Boxの認証手順からアプリケーションにユーザーをリダイレクトする際にアプリケーションコードで使用されるURIを追加します。 **Source:** [https://ja.developer.box.com/changelog/2020-12-14-blank-oauth2-redirect-uri-change](https://ja.developer.box.com/changelog/2020-12-14-blank-oauth2-redirect-uri-change) --- ### 統合マッピングAPI **Type:** changelog | **Section:** Changelog 統合マッピングAPI 統合マッピングを使用すると、パートナーアプリからのコンテンツがBoxのどこに保存されるかを管理できます。 現在、この機能ではSlackのコンテンツレイヤーとしてBox… # 統合マッピングAPI [統合マッピング](r://integration-mappings)を使用すると、パートナーアプリからのコンテンツがBoxのどこに保存されるかを管理できます。 現在、この機能では[SlackのコンテンツレイヤーとしてBoxを使用する](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack)場合のみサポートします。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-05-24-integration-mappings-API](https://ja.developer.box.com/changelog/2023-05-24-integration-mappings-API) --- ### 署名リクエストAPIの改善 **Type:** changelog | **Section:** Changelog 署名リクエストAPIの改善 署名リクエストステータスパラメータに次の2つの値が追加されました。 finalizing: すべての署名者がリクエストに署名済みで、署名された最終的なドキュメントと署名ログがまだ生成されていない状態を示します。 error_finalizing: finalizingフェーズが正常に完了しなかった状態を示します。 # 署名リクエストAPIの改善 [署名リクエストステータス](r://sign-request#param-status)パラメータに次の2つの値が追加されました。 - `finalizing`: すべての署名者がリクエストに署名済みで、署名された最終的なドキュメントと署名ログがまだ生成されていない状態を示します。 - `error_finalizing`: `finalizing`フェーズが正常に完了しなかった状態を示します。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-07-12-sign-request-status](https://ja.developer.box.com/changelog/2023-07-12-sign-request-status) --- ### 署名リクエストへの新しいフィールドの追加 **Type:** changelog | **Section:** Changelog 署名リクエストへの新しいフィールドの追加 Box Signのリクエストのレスポンスオブジェクトに、新しいフィールドcontent_typeが含まれるようになりました。このフィールドは、署名者の入力用に選択されたinputのtypeに想定されるコンテンツタイプを識別します。 # 署名リクエストへの新しいフィールドの追加 Box Signのリクエストのレスポンスオブジェクトに、新しいフィールド`content_type`が含まれるようになりました。このフィールドは、署名者の入力用に選択された`input`の`type`に想定されるコンテンツタイプを識別します。 ## 更新内容 - [署名リクエストのレスポンスオブジェクト](r://sign-request/#param-signers-inputs-content_type)に新しいフィールド`content_type`を追加 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-05-12-new-sign-requests-field](https://ja.developer.box.com/changelog/2022-05-12-new-sign-requests-field) --- ### 要件の変更に伴うOAuth 2.0リダイレクトURIの更新 **Type:** changelog | **Section:** Changelog 要件の変更に伴うOAuth 2.0リダイレクトURIの更新 Box開発者コンソールの新機能をリリースしました。開発者は、この新機能を使用して、OAuth 2.0アプリケーション用に複数のリダイレクトURIを追加できるようになります。 # 要件の変更に伴うOAuth 2.0リダイレクトURIの更新 Box開発者コンソールの新機能をリリースしました。開発者は、この新機能を使用して、OAuth 2.0アプリケーション用に複数のリダイレクトURIを追加できるようになります。 日本時間2021年11月30日以降、OAuth 2.0を使用する新規のアプリケーションでは、開発者コンソールの [構成] タブで設定されたURIとリダイレクト時に使用されるURIが厳密に一致する必要があります。また、そのため新規のアプリケーションと既存のアプリケーションの両方で、複数のリダイレクトURIを追加できるようになります。 既存のアプリケーションでは、サービスの中断を回避するために、日本時間2022年5月14日までにこのURLを変更する必要があります。 ## 更新内容 - Box開発者コンソールのOAuth 2.0アプリケーションの [構成] セクションに、複数のリダイレクトURIを追加するための新しいボタンが用意されました - リダイレクトURIは、渡されたURIと、OAuth 2.0アプリケーションの構成で設定されたURIを一致させるように厳密なチェックを強制するようになりました - [`GET /authorize`](e://get-authorize/#param-redirect_uri)エンドポイントのページで`redirect_uri`クエリパラメータの表現を更新しました - OAuth 2.0の[設定](g://authentication/oauth2/oauth2-setup/)、[SDKを使用したOAuth 2.0](g://authentication/oauth2/with-sdk/)、[SDKを使用しないOAuth 2.0](g://authentication/oauth2/without-sdk/)に関するガイドページを更新しました ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-11-29-oauth-20-redirect-url-updates](https://ja.developer.box.com/changelog/2021-11-29-oauth-20-redirect-url-updates) --- ### 開発者コンソールでのWebhook V2の管理 **Type:** changelog | **Section:** Changelog 開発者コンソールでのWebhook V2の管理 アプリケーションのWebhookの管理が簡単で効率的になりました。開発者コンソールの [Webhook] タブだけで、アプリケーションのすべてのWebhookを確認できます。開発者コンソールのユーザーインターフェースを使用して、V… # 開発者コンソールでのWebhook V2の管理 アプリケーションのWebhookの管理が簡単で効率的になりました。[開発者コンソール](https://app.box.com/developers/console)の [**Webhook**] タブだけで、アプリケーションのすべてのWebhookを確認できます。[開発者コンソール](https://app.box.com/developers/console)のユーザーインターフェースを使用して、V2 Webhookを[作成](g://webhooks/v2/create-v2)、[更新](g://webhooks/v2/update-v2)、または[削除](g://webhooks/v2/delete-v2)できるようになりました。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2022-10-19-webhooksv2-in-developer-console](https://ja.developer.box.com/changelog/2022-10-19-webhooksv2-in-developer-console) --- ### 開発者コンソールのアップデート **Type:** changelog | **Section:** Changelog 開発者コンソールのアップデート 開発者コンソールで新しく [承認] タブが使用可能になりました。さらに、[構成] タブ内の [アプリケーションアクセス] と [Scope (スコープ)] の設定でUIがわかりやすく変更されたことで、設定を決定しやすくなりました。このような変更は、設定の機能には影響しません。 # 開発者コンソールのアップデート 開発者コンソールで新しく [**承認**] タブが使用可能になりました。さらに、[**構成**] タブ内の [**アプリケーションアクセス**] と [**Scope (スコープ)**] の設定でUIがわかりやすく変更されたことで、設定を決定しやすくなりました。このような変更は、設定の機能には影響しません。 これで、開発者は [**承認**] タブに移動して、承認を得るためにアプリケーションを直接Box管理者に送信するようになります。 [**構成**] タブに関しては、JWTの [**アプリケーションアクセス**] の設定に役立つヒントが追加されたため、[**アプリアクセスのみ**] と [**アプリアクセス + Enterpriseアクセス**] のどちらにするかを明確に決めやすくなりました。現在、[**Scope (スコープ)**] セクションは、操作の種類 (コンテンツ操作、管理操作、管理者操作) でグループ化されています。 - **アプリの承認プロセス**: [ガイド](g://authorization/platform-app-approval) - **スコープ**: [ガイド](g://api-calls/permissions-and-errors/scopes) - **アプリケーションアクセス**: [ガイド](g://authentication/jwt/jwt-setup/#application-access) ## 更新内容 - 開発者コンソールに [承認] タブを追加しました - [構成] タブでJWTの [アプリケーションアクセス] の設定用UIを更新しました - [構成] タブで [Scopes (スコープ)] のUIのグループ化を更新しました **Source:** [https://ja.developer.box.com/changelog/2021-01-14-developer-console-updates](https://ja.developer.box.com/changelog/2021-01-14-developer-console-updates) --- ### 開発者コンソールの強化された \[マイアプリ] ビューの導入 **Type:** changelog | **Section:** Changelog 開発者コンソールの強化された [マイアプリ] ビューの導入 アプリケーション管理のエクスペリエンスをさらに改善するために、開発者コンソールに [マイアプリ] リストビューを導入します。このビューには、アプリケーションに関する主な情報が表示されるため、以下の操作が可能になります。 アプリケーションのクライアントIDを表示およびコピーする アプリケーションの説明を表示する カスタムアプリケーションを並べ替える アプリケーションの承認ステータスと有効化ステータスを確認する 構成にアクセスして、開発者トークンを生成する # 開発者コンソールの強化された [マイアプリ] ビューの導入 アプリケーション管理のエクスペリエンスをさらに改善するために、開発者コンソールに [[マイアプリ](g://applications)] リストビューを導入します。このビューには、アプリケーションに関する主な情報が表示されるため、以下の操作が可能になります。 - アプリケーションのクライアントIDを表示およびコピーする - アプリケーションの説明を表示する - カスタムアプリケーションを並べ替える - アプリケーションの承認ステータスと有効化ステータスを確認する - 構成にアクセスして、開発者トークンを生成する ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://forum.box.com/)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2023-12-11-introducing-my-apps-view](https://ja.developer.box.com/changelog/2023-12-11-introducing-my-apps-view) --- ### 開発者コンソールへのサービスアカウントのメールアドレスの追加 **Type:** changelog | **Section:** Changelog 開発者コンソールへのサービスアカウントのメールアドレスの追加 サーバー認証を利用するアプリケーションを管理者が承認すると、サービスアカウントの自動生成メールアドレスが開発者コンソールの [一般] タブに表示されるようになりました。その後、このメールアドレスは、Box… # 開発者コンソールへのサービスアカウントのメールアドレスの追加 サーバー認証を利用するアプリケーションを管理者が承認すると、サービスアカウントの自動生成メールアドレスが開発者コンソールの [一般] タブに表示されるようになりました。その後、このメールアドレスは、Boxコンテンツでユーザーをコラボレータに設定するために使用できます。これは、必ず`AutomationUser_AppServiceID_RandomString@boxdevedition.com`形式になります (例: `AutomationUser_123456_6jCo6Pqwo@boxdevedition.com`)。 詳細については、[ユーザータイプ](pages/platform/user-types)と[サービスアカウント](pages/platform/user-types#service_account)のガイドを参照してください。 ## 機能 - サービスアカウントユーザーの自動生成メールアドレスを開発者コンソールに追加 **Source:** [https://ja.developer.box.com/changelog/2021-03-25-service-account-information-in-developer-console](https://ja.developer.box.com/changelog/2021-03-25-service-account-information-in-developer-console) --- ### 項目ダウンロードイベントの動作変更のお知らせ **Type:** changelog | **Section:** Changelog 項目ダウンロードイベントの動作変更のお知らせ 本日以降、アプリケーションがBoxのイベントAPIエンドポイントから項目ダウンロードイベントを使用した場合のこのイベントの動作に対する変更のリリースを開始します。 この変更はITEM_DOWNLOADUser Eventのみに影響し、既存のEnterprise Eventには影響しません。この新しい動作により、既存のアプリケーション内でダウンタイムが発生することはありません。また、稼働時間の中断を防ぐためのアプリケーションの変更も必要ありません。 # 項目ダウンロードイベントの動作変更のお知らせ 本日以降、アプリケーションがBoxの[イベントAPIエンドポイント](r://get-events/)から項目ダウンロードイベントを使用した場合のこのイベントの動作に対する変更のリリースを開始します。 この変更は`ITEM_DOWNLOAD`[User Event](g://events/user-events/for-user/#event-types)のみに影響し、既存の[Enterprise Event](g://events/enterprise-events/for-enterprise/)には影響しません。この新しい動作により、既存のアプリケーション内でダウンタイムが発生することはありません。また、稼働時間の中断を防ぐためのアプリケーションの変更も必要ありません。 ## 変更の概要 以前の動作では、イベントを使用した場合、ダウンロードされた項目イベントが、コンテンツの所有者およびコンテンツに割り当てられたすべてのコラボレータのイベントタイプ`ITEM_DOWNLOAD`によって表示されました。つまり、2,000人のコラボレータが存在するファイルがダウンロードされた場合、このファイルの所有者に加えて2,000人のコラボレータ全員に、ファイルがダウンロードされたことを示すイベントが作成されます。 新しい動作では、項目のダウンロードに関する通知がコンテンツの所有者に対してのみ作成され、コラボレータに対しては生成されません。これは、コンテンツの所有者としていつ項目がダウンロードされたかを確認できるようにしたままイベントストリームのノイズを低減するのに役立ちます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-04-15-notice-of-behavior-change-for-item_download-events](https://ja.developer.box.com/changelog/2021-04-15-notice-of-behavior-change-for-item_download-events) --- ### 項目プレビューイベントの動作変更のお知らせ **Type:** changelog | **Section:** Changelog 項目プレビューイベントの動作変更のお知らせ 本日以降、アプリケーションがBoxのイベントAPIエンドポイントから項目プレビューイベントを使用した場合のこのイベントの動作に対する変更のリリースを開始します。 この変更はITEM_PREVIEWUser Eventのみに影響し、既存のEnterprise Eventには影響しません。この新しい動作により、既存のアプリケーション内でダウンタイムが発生することはありません。また、稼働時間の中断を防ぐためのアプリケーションの変更も必要ありません。 # 項目プレビューイベントの動作変更のお知らせ 本日以降、アプリケーションがBoxの[イベントAPIエンドポイント](r://get-events)から項目プレビューイベントを使用した場合のこのイベントの動作に対する変更のリリースを開始します。 この変更は`ITEM_PREVIEW`[User Event](g://events/user-events/for-user)のみに影響し、既存の[Enterprise Event](g://events/enterprise-events/for-enterprise)には影響しません。この新しい動作により、既存のアプリケーション内でダウンタイムが発生することはありません。また、稼働時間の中断を防ぐためのアプリケーションの変更も必要ありません。 ## 変更の概要 以前の動作では、イベントを使用した場合、プレビューされた項目イベントが、コンテンツの所有者およびコンテンツに割り当てられたすべてのコラボレータのイベントタイプ`ITEM_PREVIEW`によって表示されました。つまり、2,000人のコラボレータが存在するファイルがプレビューされた場合、このファイルの所有者に加えて2,000人のコラボレータ全員に、ファイルがプレビューされたことを示すイベントが作成されます。 新しい動作では、項目のプレビューに関する通知がコンテンツの所有者に対してのみ作成され、コラボレータに対しては生成されません。これは、コンテンツの所有者としていつ項目がプレビューされたかを確認できるようにしたままイベントストリームのノイズを低減するのに役立ちます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-08-31-notice-of-behavior-change-for-item-preview-events](https://ja.developer.box.com/changelog/2021-08-31-notice-of-behavior-change-for-item-preview-events) --- ### 項目を開くイベントの動作変更のお知らせ **Type:** changelog | **Section:** Changelog 項目を開くイベントの動作変更のお知らせ 本日以降、アプリケーションがBoxのイベントAPIエンドポイントからITEM_OPENイベントを使用した場合のこのイベントの動作に対する変更のリリースを開始します。 この変更はITEM_OPEN Enterprise Event… # 項目を開くイベントの動作変更のお知らせ 本日以降、アプリケーションがBoxの[イベントAPIエンドポイント](r://get-events)から`ITEM_OPEN`イベントを使用した場合のこのイベントの動作に対する変更のリリースを開始します。 この変更は`ITEM_OPEN` [Enterprise Event](g://events/enterprise-events/for-enterprise)のみに影響します。この新しい動作により、既存のアプリケーション内でダウンタイムが発生することはありません。また、稼働時間の中断を防ぐためのアプリケーションの変更も必要ありません。 ## 変更の概要 以前の動作では、イベントを使用した場合、開かれた項目イベントが、コンテンツの所有者およびコンテンツに割り当てられたすべてのコラボレータのイベントタイプ`ITEM_OPEN`によって表示されました。つまり、2,000人のコラボレータが存在するファイルがDriveなどで開かれた場合、このファイルの所有者に加えて2,000人のコラボレータ全員に、ファイルが開かれたことを示すイベントが作成されます。 新しい動作では、項目が開かれたという通知がコンテンツの所有者に対してのみ作成され、コラボレータに対しては生成されません。これは、コンテンツの所有者としていつ項目が開かれたかを確認できるようにしたままイベントストリームのノイズを低減するのに役立ちます。 ## サポート情報 問題がある場合やさらにガイドが必要な場合は、必要なサポートについて、Boxの[Developer Forum](https://support.box.com/hc/en-us/community/topics/360001932973-Platform-and-Developer-Forum)に英語でリクエストを投稿してください。 **Source:** [https://ja.developer.box.com/changelog/2021-07-01-notice-of-behavior-change-for-item-open-events](https://ja.developer.box.com/changelog/2021-07-01-notice-of-behavior-change-for-item-open-events) --- ## Additional Resources ### AiManager **Type:** page | **Section:** Additional Resources AiManager Ask question Generate text Get AI agent default configuration Extract metadata (freeform) Extract metadata (structured) Ask… # AiManager - [Ask question](#ask-question) - [Generate text](#generate-text) - [Get AI agent default configuration](#get-ai-agent-default-configuration) - [Extract metadata (freeform)](#extract-metadata-freeform) - [Extract metadata (structured)](#extract-metadata-structured) ## Ask question Sends an AI request to supported LLMs and returns an answer specifically focused on the user's question given the provided context. This operation is performed by calling function `createAiAsk`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-ask/). ``` await client.ai.createAiAsk({ mode: 'single_item_qa' as AiAskModeField, prompt: 'Which direction does the Sun rise?', items: [ { id: fileToAsk.id, type: 'file' as AiItemAskTypeField, content: 'The Sun rises in the east', } satisfies AiItemAsk, ], aiAgent: aiAskAgentBasicTextConfig, } satisfies AiAsk); ``` ### Arguments requestBody `AiAsk` - Request body of createAiAsk method optionalsInput `CreateAiAskOptionalsInput` ### Returns This function returns a value of type `undefined | AiResponseFull`. A successful response including the answer from the LLM.No content is available to answer the question. This is returned when the request item is a hub, but content in the hubs is not indexed. To ensure content in the hub is indexed, make sure Box AI for Hubs in the Admin Console was enabled before hub creation. ## Generate text Sends an AI request to supported Large Language Models (LLMs) and returns generated text based on the provided prompt. This operation is performed by calling function `createAiTextGen`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-text-gen/). ``` await client.ai.createAiTextGen({ prompt: 'Paraphrase the documents', items: [ new AiTextGenItemsField({ id: fileToAsk.id, type: 'file' as AiTextGenItemsTypeField, content: 'The Earth goes around the Sun. The Sun rises in the east in the morning.', }), ], dialogueHistory: [ { prompt: 'What does the earth go around?', answer: 'The Sun', createdAt: dateTimeFromString('2021-01-01T00:00:00Z'), } satisfies AiDialogueHistory, { prompt: 'On Earth, where does the Sun rise?', answer: 'east', createdAt: dateTimeFromString('2021-01-01T00:00:00Z'), } satisfies AiDialogueHistory, ], } satisfies AiTextGen); ``` ### Arguments requestBody `AiTextGen` - Request body of createAiTextGen method optionalsInput `CreateAiTextGenOptionalsInput` ### Returns This function returns a value of type `AiResponse`. A successful response including the answer from the LLM. ## Get AI agent default configuration Get the AI agent default config. This operation is performed by calling function `getAiAgentDefaultConfig`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agent-default/). ``` await client.ai.getAiAgentDefaultConfig({ mode: 'ask' as GetAiAgentDefaultConfigQueryParamsModeField, language: 'en-US', } satisfies GetAiAgentDefaultConfigQueryParams); ``` ### Arguments queryParams `GetAiAgentDefaultConfigQueryParams` - Query parameters of getAiAgentDefaultConfig method optionalsInput `GetAiAgentDefaultConfigOptionalsInput` ### Returns This function returns a value of type `AiAgent`. A successful response including the default agent configuration. This response can be one of the following four objects: - AI agent for questions - AI agent for text generation - AI agent for freeform metadata extraction AI agent for structured metadata extraction. The response depends on the agent configuration requested in this endpoint. ## Extract metadata (freeform) Sends an AI request to supported Large Language Models (LLMs) and extracts metadata in form of key-value pairs. In this request, both the prompt and the output can be freeform. Metadata template setup before sending the request is not required. This operation is performed by calling function `createAiExtract`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract/). ``` await client.ai.createAiExtract({ prompt: 'firstName, lastName, location, yearOfBirth, company', items: [new AiItemBase({ id: file.id })], aiAgent: aiExtractAgentBasicTextConfig, } satisfies AiExtract); ``` ### Arguments requestBody `AiExtract` - Request body of createAiExtract method optionalsInput `CreateAiExtractOptionalsInput` ### Returns This function returns a value of type `AiResponse`. A response including the answer from the LLM. ## Extract metadata (structured) Sends an AI request to supported Large Language Models (LLMs) and returns extracted metadata as a set of key-value pairs. To define the extraction structure, provide either a metadata template or a list of fields. To learn more about creating templates, see [Creating metadata templates in the Admin Console](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates) or use the [metadata template API](https://developer.box.com/guides/metadata/templates/create). This endpoint also supports [Enhanced Extract Agent](https://developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured#enhanced-extract-agent). For information about supported file formats and languages, see the [Extract metadata from file (structured)](https://developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured) API guide. This operation is performed by calling function `createAiExtractStructured`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract-structured/). ``` await client.ai.createAiExtractStructured({ fields: [ { key: 'firstName', displayName: 'First name', description: 'Person first name', prompt: 'What is the your first name?', type: 'string', } satisfies AiExtractStructuredFieldsField, { key: 'lastName', displayName: 'Last name', description: 'Person last name', prompt: 'What is the your last name?', type: 'string', } satisfies AiExtractStructuredFieldsField, { key: 'dateOfBirth', displayName: 'Birth date', description: 'Person date of birth', prompt: 'What is the date of your birth?', type: 'date', } satisfies AiExtractStructuredFieldsField, { key: 'age', displayName: 'Age', description: 'Person age', prompt: 'How old are you?', type: 'float', } satisfies AiExtractStructuredFieldsField, { key: 'hobby', displayName: 'Hobby', description: 'Person hobby', prompt: 'What is your hobby?', type: 'multiSelect', options: [ { key: 'guitar' } satisfies AiExtractStructuredFieldsOptionsField, { key: 'books' } satisfies AiExtractStructuredFieldsOptionsField, ], } satisfies AiExtractStructuredFieldsField, ], items: [new AiItemBase({ id: file.id })], aiAgent: aiExtractStructuredAgentBasicTextConfig, } satisfies AiExtractStructured); ``` ### Arguments requestBody `AiExtractStructured` - Request body of createAiExtractStructured method optionalsInput `CreateAiExtractStructuredOptionalsInput` ### Returns This function returns a value of type `AiExtractStructuredResponse`. A successful response including the answer from the LLM. --- ### AiManager **Type:** page | **Section:** Additional Resources AiManager Ask question Generate text Get AI agent default configuration Extract metadata (freeform) Extract metadata (structured) Ask… # AiManager - [Ask question](#ask-question) - [Generate text](#generate-text) - [Get AI agent default configuration](#get-ai-agent-default-configuration) - [Extract metadata (freeform)](#extract-metadata-freeform) - [Extract metadata (structured)](#extract-metadata-structured) ## Ask question Sends an AI request to supported LLMs and returns an answer specifically focused on the user's question given the provided context. This operation is performed by calling function `createAiAsk`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-ask/). ``` client.getAi().createAiAsk(new AiAsk.Builder(AiAskModeField.SINGLE_ITEM_QA, "Which direction does the Sun rise?", Arrays.asList(new AiItemAsk.Builder(fileToAsk.getId(), AiItemAskTypeField.FILE).content("The Sun rises in the east").build())).aiAgent(aiAskAgentBasicTextConfig).build()) ``` ### Arguments requestBody `AiAsk` - Request body of createAiAsk method headers `CreateAiAskHeaders` - Headers of createAiAsk method ### Returns This function returns a value of type `AiResponseFull`. A successful response including the answer from the LLM.No content is available to answer the question. This is returned when the request item is a hub, but content in the hubs is not indexed. To ensure content in the hub is indexed, make sure Box AI for Hubs in the Admin Console was enabled before hub creation. ## Generate text Sends an AI request to supported Large Language Models (LLMs) and returns generated text based on the provided prompt. This operation is performed by calling function `createAiTextGen`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-text-gen/). ``` client.getAi().createAiTextGen(new AiTextGen.Builder("Paraphrase the documents", Arrays.asList(new AiTextGenItemsField.Builder(fileToAsk.getId()).type(AiTextGenItemsTypeField.FILE).content("The Earth goes around the Sun. The Sun rises in the east in the morning.").build())).dialogueHistory(Arrays.asList(new AiDialogueHistory.Builder().prompt("What does the earth go around?").answer("The Sun").createdAt(dateTimeFromString("2021-01-01T00:00:00Z")).build(), new AiDialogueHistory.Builder().prompt("On Earth, where does the Sun rise?").answer("east").createdAt(dateTimeFromString("2021-01-01T00:00:00Z")).build())).build()) ``` ### Arguments requestBody `AiTextGen` - Request body of createAiTextGen method headers `CreateAiTextGenHeaders` - Headers of createAiTextGen method ### Returns This function returns a value of type `AiResponse`. A successful response including the answer from the LLM. ## Get AI agent default configuration Get the AI agent default config. This operation is performed by calling function `getAiAgentDefaultConfig`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agent-default/). ``` client.getAi().getAiAgentDefaultConfig(new GetAiAgentDefaultConfigQueryParams.Builder(GetAiAgentDefaultConfigQueryParamsModeField.ASK).language("en-US").build()) ``` ### Arguments queryParams `GetAiAgentDefaultConfigQueryParams` - Query parameters of getAiAgentDefaultConfig method headers `GetAiAgentDefaultConfigHeaders` - Headers of getAiAgentDefaultConfig method ### Returns This function returns a value of type `AiAgent`. A successful response including the default agent configuration. This response can be one of the following four objects: - AI agent for questions - AI agent for text generation - AI agent for freeform metadata extraction - AI agent for structured metadata extraction. The response depends on the agent configuration requested in this endpoint. ## Extract metadata (freeform) Sends an AI request to supported Large Language Models (LLMs) and extracts metadata in form of key-value pairs. In this request, both the prompt and the output can be freeform. Metadata template setup before sending the request is not required. This operation is performed by calling function `createAiExtract`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract/). ``` client.getAi().createAiExtract(new AiExtract.Builder("firstName, lastName, location, yearOfBirth, company", Arrays.asList(new AiItemBase(file.getId()))).aiAgent(aiExtractAgentBasicTextConfig).build()) ``` ### Arguments requestBody `AiExtract` - Request body of createAiExtract method headers `CreateAiExtractHeaders` - Headers of createAiExtract method ### Returns This function returns a value of type `AiResponse`. A response including the answer from the LLM. ## Extract metadata (structured) Sends an AI request to supported Large Language Models (LLMs) and returns extracted metadata as a set of key-value pairs. To define the extraction structure, provide either a metadata template or a list of fields. To learn more about creating templates, see [Creating metadata templates in the Admin Console](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates) or use the [metadata template API](https://developer.box.com/guides/metadata/templates/create). This endpoint also supports [Enhanced Extract Agent](https://developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured#enhanced-extract-agent). For information about supported file formats and languages, see the [Extract metadata from file (structured)](https://developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured) API guide. This operation is performed by calling function `createAiExtractStructured`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract-structured/). ``` client.getAi().createAiExtractStructured(new AiExtractStructured.Builder(Arrays.asList(new AiItemBase(file.getId()))).fields(Arrays.asList(new AiExtractStructuredFieldsField.Builder("firstName").description("Person first name").displayName("First name").prompt("What is the your first name?").type("string").build(), new AiExtractStructuredFieldsField.Builder("lastName").description("Person last name").displayName("Last name").prompt("What is the your last name?").type("string").build(), new AiExtractStructuredFieldsField.Builder("dateOfBirth").description("Person date of birth").displayName("Birth date").prompt("What is the date of your birth?").type("date").build(), new AiExtractStructuredFieldsField.Builder("age").description("Person age").displayName("Age").prompt("How old are you?").type("float").build(), new AiExtractStructuredFieldsField.Builder("hobby").description("Person hobby").displayName("Hobby").prompt("What is your hobby?").type("multiSelect").options(Arrays.asList(new AiExtractStructuredFieldsOptionsField("guitar"), new AiExtractStructuredFieldsOptionsField("books"))).build())).aiAgent(aiExtractStructuredAgentBasicTextConfig).build()) ``` ### Arguments requestBody `AiExtractStructured` - Request body of createAiExtractStructured method headers `CreateAiExtractStructuredHeaders` - Headers of createAiExtractStructured method ### Returns This function returns a value of type `AiExtractStructuredResponse`. A successful response including the answer from the LLM. --- ### AiManager **Type:** page | **Section:** Additional Resources AiManager Ask question Generate text Get AI agent default configuration Extract metadata (freeform) Extract metadata (structured) Ask… # AiManager - [Ask question](#ask-question) - [Generate text](#generate-text) - [Get AI agent default configuration](#get-ai-agent-default-configuration) - [Extract metadata (freeform)](#extract-metadata-freeform) - [Extract metadata (structured)](#extract-metadata-structured) ## Ask question Sends an AI request to supported LLMs and returns an answer specifically focused on the user's question given the provided context. This operation is performed by calling function `create_ai_ask`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-ask/). ``` client.ai.create_ai_ask( CreateAiAskMode.SINGLE_ITEM_QA, "Which direction does the Sun rise?", [ AiItemAsk( id=file_to_ask.id, type=AiItemAskTypeField.FILE, content="The Sun rises in the east", ) ], ai_agent=ai_ask_agent_basic_text_config, ) ``` ### Arguments mode `CreateAiAskMode` - Box AI handles text documents with text representations up to 1MB in size, or a maximum of 25 files, whichever comes first. If the text file size exceeds 1MB, the first 1MB of text representation will be processed. Box AI handles image documents with a resolution of 1024 x 1024 pixels, with a maximum of 5 images or 5 pages for multi-page images. If the number of image or image pages exceeds 5, the first 5 images or pages will be processed. If you set mode parameter to `single_item_qa`, the items array can have one element only. Currently Box AI does not support multi-modal requests. If both images and text are sent Box AI will only process the text. prompt `str` - The prompt provided by the client to be answered by the LLM. The prompt's length is limited to 10000 characters. items `List[AiItemAsk]` - The items to be processed by the LLM, often files. dialogue_history `Optional[List[AiDialogueHistory]]` - The history of prompts and answers previously passed to the LLM. This provides additional context to the LLM in generating the response. include_citations `Optional[bool]` - A flag to indicate whether citations should be returned. ai_agent `Optional[AiAskAgent]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Optional[AiResponseFull]`. A successful response including the answer from the LLM.No content is available to answer the question. This is returned when the request item is a hub, but content in the hubs is not indexed. To ensure content in the hub is indexed, make sure Box AI for Hubs in the Admin Console was enabled before hub creation. ## Generate text Sends an AI request to supported Large Language Models (LLMs) and returns generated text based on the provided prompt. This operation is performed by calling function `create_ai_text_gen`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-text-gen/). ``` client.ai.create_ai_text_gen( "Paraphrase the documents", [ CreateAiTextGenItems( id=file_to_ask.id, type=CreateAiTextGenItemsTypeField.FILE, content="The Earth goes around the Sun. The Sun rises in the east in the morning.", ) ], dialogue_history=[ AiDialogueHistory( prompt="What does the earth go around?", answer="The Sun", created_at=date_time_from_string("2021-01-01T00:00:00Z"), ), AiDialogueHistory( prompt="On Earth, where does the Sun rise?", answer="east", created_at=date_time_from_string("2021-01-01T00:00:00Z"), ), ], ) ``` ### Arguments prompt `str` - The prompt provided by the client to be answered by the LLM. The prompt's length is limited to 10000 characters. items `List[CreateAiTextGenItems]` - The items to be processed by the LLM, often files. The array can include **exactly one** element. **Note**: Box AI handles documents with text representations up to 1MB in size. If the file size exceeds 1MB, the first 1MB of text representation will be processed. dialogue_history `Optional[List[AiDialogueHistory]]` - The history of prompts and answers previously passed to the LLM. This parameter provides the additional context to the LLM when generating the response. ai_agent `Optional[AiTextGenAgent]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiResponse`. A successful response including the answer from the LLM. ## Get AI agent default configuration Get the AI agent default config. This operation is performed by calling function `get_ai_agent_default_config`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agent-default/). ``` client.ai.get_ai_agent_default_config(GetAiAgentDefaultConfigMode.ASK, language="en-US") ``` ### Arguments mode `GetAiAgentDefaultConfigMode` - The mode to filter the agent config to return. language `Optional[str]` - The ISO language code to return the agent config for. If the language is not supported the default agent config is returned. model `Optional[str]` - The model to return the default agent config for. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiAgent`. A successful response including the default agent configuration. This response can be one of the following four objects: - AI agent for questions - AI agent for text generation - AI agent for freeform metadata extraction AI agent for structured metadata extraction. The response depends on the agent configuration requested in this endpoint. ## Extract metadata (freeform) Sends an AI request to supported Large Language Models (LLMs) and extracts metadata in form of key-value pairs. In this request, both the prompt and the output can be freeform. Metadata template setup before sending the request is not required. This operation is performed by calling function `create_ai_extract`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract/). ``` client.ai.create_ai_extract( "firstName, lastName, location, yearOfBirth, company", [AiItemBase(id=file.id)], ai_agent=ai_extract_agent_basic_text_config, ) ``` ### Arguments prompt `str` - The prompt provided to a Large Language Model (LLM) in the request. The prompt can be up to 10000 characters long and it can be an XML or a JSON schema. items `List[AiItemBase]` - The items that LLM will process. Currently, you can use files only. ai_agent `Optional[AiExtractAgent]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiResponse`. A response including the answer from the LLM. ## Extract metadata (structured) Sends an AI request to supported Large Language Models (LLMs) and returns extracted metadata as a set of key-value pairs. To define the extraction structure, provide either a metadata template or a list of fields. To learn more about creating templates, see [Creating metadata templates in the Admin Console](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates) or use the [metadata template API](https://developer.box.com/guides/metadata/templates/create). This endpoint also supports [Enhanced Extract Agent](https://developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured#enhanced-extract-agent). For information about supported file formats and languages, see the [Extract metadata from file (structured)](https://developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured) API guide. This operation is performed by calling function `create_ai_extract_structured`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract-structured/). ``` client.ai.create_ai_extract_structured( [AiItemBase(id=file.id)], fields=[ CreateAiExtractStructuredFields( key="firstName", display_name="First name", description="Person first name", prompt="What is the your first name?", type="string", ), CreateAiExtractStructuredFields( key="lastName", display_name="Last name", description="Person last name", prompt="What is the your last name?", type="string", ), CreateAiExtractStructuredFields( key="dateOfBirth", display_name="Birth date", description="Person date of birth", prompt="What is the date of your birth?", type="date", ), CreateAiExtractStructuredFields( key="age", display_name="Age", description="Person age", prompt="How old are you?", type="float", ), CreateAiExtractStructuredFields( key="hobby", display_name="Hobby", description="Person hobby", prompt="What is your hobby?", type="multiSelect", options=[ CreateAiExtractStructuredFieldsOptionsField(key="guitar"), CreateAiExtractStructuredFieldsOptionsField(key="books"), ], ), ], ai_agent=ai_extract_structured_agent_basic_text_config, ) ``` ### Arguments items `List[AiItemBase]` - The items to be processed by the LLM. Currently you can use files only. metadata_template `Optional[CreateAiExtractStructuredMetadataTemplate]` - The metadata template containing the fields to extract. For your request to work, you must provide either `metadata_template` or `fields`, but not both. fields `Optional[List[CreateAiExtractStructuredFields]]` - The fields to be extracted from the provided items. For your request to work, you must provide either `metadata_template` or `fields`, but not both. ai_agent `Optional[AiExtractStructuredAgent]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiExtractStructuredResponse`. A successful response including the answer from the LLM. --- ### AiManager **Type:** page | **Section:** Additional Resources AiManager Ask question Generate text Get AI agent default configuration Extract metadata (freeform) Extract metadata (structured) Ask… # AiManager - [Ask question](#ask-question) - [Generate text](#generate-text) - [Get AI agent default configuration](#get-ai-agent-default-configuration) - [Extract metadata (freeform)](#extract-metadata-freeform) - [Extract metadata (structured)](#extract-metadata-structured) ## Ask question Sends an AI request to supported LLMs and returns an answer specifically focused on the user's question given the provided context. This operation is performed by calling function `createAiAsk`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-ask/). ``` try await client.ai.createAiAsk(requestBody: AiAsk(mode: AiAskModeField.singleItemQa, prompt: "Which direction does the Sun rise?", items: [AiItemAsk(id: fileToAsk.id, type: AiItemAskTypeField.file, content: "The Sun rises in the east")])) ``` ### Arguments requestBody `AiAsk` - Request body of createAiAsk method headers `CreateAiAskHeaders` - Headers of createAiAsk method ### Returns This function returns a value of type `AiResponseFull?`. A successful response including the answer from the LLM.No content is available to answer the question. This is returned when the request item is a hub, but content in the hubs is not indexed. To ensure content in the hub is indexed, make sure Box AI for Hubs in the Admin Console was enabled before hub creation. ## Generate text Sends an AI request to supported Large Language Models (LLMs) and returns generated text based on the provided prompt. This operation is performed by calling function `createAiTextGen`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-text-gen/). ``` try await client.ai.createAiTextGen(requestBody: AiTextGen(prompt: "Paraphrase the documents", items: [AiTextGenItemsField(id: fileToAsk.id, type: AiTextGenItemsTypeField.file, content: "The Earth goes around the Sun. The Sun rises in the east in the morning.")], dialogueHistory: [AiDialogueHistory(prompt: "What does the earth go around?", answer: "The Sun", createdAt: try Utils.Dates.dateTimeFromString(dateTime: "2021-01-01T00:00:00Z")), AiDialogueHistory(prompt: "On Earth, where does the Sun rise?", answer: "east", createdAt: try Utils.Dates.dateTimeFromString(dateTime: "2021-01-01T00:00:00Z"))])) ``` ### Arguments requestBody `AiTextGen` - Request body of createAiTextGen method headers `CreateAiTextGenHeaders` - Headers of createAiTextGen method ### Returns This function returns a value of type `AiResponse`. A successful response including the answer from the LLM. ## Get AI agent default configuration Get the AI agent default config. This operation is performed by calling function `getAiAgentDefaultConfig`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agent-default/). ``` try await client.ai.getAiAgentDefaultConfig(queryParams: GetAiAgentDefaultConfigQueryParams(mode: GetAiAgentDefaultConfigQueryParamsModeField.ask, language: "en-US")) ``` ### Arguments queryParams `GetAiAgentDefaultConfigQueryParams` - Query parameters of getAiAgentDefaultConfig method headers `GetAiAgentDefaultConfigHeaders` - Headers of getAiAgentDefaultConfig method ### Returns This function returns a value of type `AiAgent`. A successful response including the default agent configuration. This response can be one of the following four objects: - AI agent for questions - AI agent for text generation - AI agent for freeform metadata extraction - AI agent for structured metadata extraction. The response depends on the agent configuration requested in this endpoint. ## Extract metadata (freeform) Sends an AI request to supported Large Language Models (LLMs) and extracts metadata in form of key-value pairs. In this request, both the prompt and the output can be freeform. Metadata template setup before sending the request is not required. This operation is performed by calling function `createAiExtract`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract/). ``` try await client.ai.createAiExtract(requestBody: AiExtract(prompt: "firstName, lastName, location, yearOfBirth, company", items: [AiItemBase(id: file.id)])) ``` ### Arguments requestBody `AiExtract` - Request body of createAiExtract method headers `CreateAiExtractHeaders` - Headers of createAiExtract method ### Returns This function returns a value of type `AiResponse`. A response including the answer from the LLM. ## Extract metadata (structured) Sends an AI request to supported Large Language Models (LLMs) and returns extracted metadata as a set of key-value pairs. To define the extraction structure, provide either a metadata template or a list of fields. To learn more about creating templates, see [Creating metadata templates in the Admin Console](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates) or use the [metadata template API](https://developer.box.com/guides/metadata/templates/create). This endpoint also supports [Enhanced Extract Agent](https://developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured#enhanced-extract-agent). For information about supported file formats and languages, see the [Extract metadata from file (structured)](https://developer.box.com/guides/box-ai/ai-tutorials/extract-metadata-structured) API guide. This operation is performed by calling function `createAiExtractStructured`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract-structured/). ``` try await client.ai.createAiExtractStructured(requestBody: AiExtractStructured(fields: [AiExtractStructuredFieldsField(key: "firstName", displayName: "First name", description: "Person first name", prompt: "What is the your first name?", type: "string"), AiExtractStructuredFieldsField(key: "lastName", displayName: "Last name", description: "Person last name", prompt: "What is the your last name?", type: "string"), AiExtractStructuredFieldsField(key: "dateOfBirth", displayName: "Birth date", description: "Person date of birth", prompt: "What is the date of your birth?", type: "date"), AiExtractStructuredFieldsField(key: "age", displayName: "Age", description: "Person age", prompt: "How old are you?", type: "float"), AiExtractStructuredFieldsField(key: "hobby", displayName: "Hobby", description: "Person hobby", prompt: "What is your hobby?", type: "multiSelect", options: [AiExtractStructuredFieldsOptionsField(key: "guitar"), AiExtractStructuredFieldsOptionsField(key: "books")])], items: [AiItemBase(id: file.id)])) ``` ### Arguments requestBody `AiExtractStructured` - Request body of createAiExtractStructured method headers `CreateAiExtractStructuredHeaders` - Headers of createAiExtractStructured method ### Returns This function returns a value of type `AiExtractStructuredResponse`. A successful response including the answer from the LLM. --- ### AiManager **Type:** page | **Section:** Additional Resources AiManager Ask question Generate text Get AI agent default configuration Extract metadata (freeform) Extract metadata (structured) Ask… # AiManager - [Ask question](#ask-question) - [Generate text](#generate-text) - [Get AI agent default configuration](#get-ai-agent-default-configuration) - [Extract metadata (freeform)](#extract-metadata-freeform) - [Extract metadata (structured)](#extract-metadata-structured) ## Ask question Sends an AI request to supported LLMs and returns an answer specifically focused on the user's question given the provided context. This operation is performed by calling function `createAiAsk`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-ask/). ``` await client.ai.createAiAsk({ mode: 'single_item_qa' as AiAskModeField, prompt: 'Which direction does the Sun rise?', items: [ { id: fileToAsk.id, type: 'file' as AiItemAskTypeField, content: 'The Sun rises in the east', } satisfies AiItemAsk, ], aiAgent: aiAskAgentBasicTextConfig, } satisfies AiAsk); ``` ### Arguments requestBody `AiAsk` - Request body of createAiAsk method optionalsInput `CreateAiAskOptionalsInput` ### Returns This function returns a value of type `undefined | AiResponseFull`. A successful response including the answer from the LLM.No content is available to answer the question. This is returned when the request item is a hub, but content in the hubs is not indexed. To ensure content in the hub is indexed, make sure Box AI for Hubs in the Admin Console was enabled before hub creation. ## Generate text Sends an AI request to supported Large Language Models (LLMs) and returns generated text based on the provided prompt. This operation is performed by calling function `createAiTextGen`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-text-gen/). ``` await client.ai.createAiTextGen({ prompt: 'Paraphrase the documents', items: [ new AiTextGenItemsField({ id: fileToAsk.id, type: 'file' as AiTextGenItemsTypeField, content: 'The Earth goes around the Sun. The Sun rises in the east in the morning.', }), ], dialogueHistory: [ { prompt: 'What does the earth go around?', answer: 'The Sun', createdAt: dateTimeFromString('2021-01-01T00:00:00Z'), } satisfies AiDialogueHistory, { prompt: 'On Earth, where does the Sun rise?', answer: 'east', createdAt: dateTimeFromString('2021-01-01T00:00:00Z'), } satisfies AiDialogueHistory, ], } satisfies AiTextGen); ``` ### Arguments requestBody `AiTextGen` - Request body of createAiTextGen method optionalsInput `CreateAiTextGenOptionalsInput` ### Returns This function returns a value of type `AiResponse`. A successful response including the answer from the LLM. ## Get AI agent default configuration Get the AI agent default config. This operation is performed by calling function `getAiAgentDefaultConfig`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agent-default/). ``` await client.ai.getAiAgentDefaultConfig({ mode: 'ask' as GetAiAgentDefaultConfigQueryParamsModeField, language: 'en-US', } satisfies GetAiAgentDefaultConfigQueryParams); ``` ### Arguments queryParams `GetAiAgentDefaultConfigQueryParams` - Query parameters of getAiAgentDefaultConfig method optionalsInput `GetAiAgentDefaultConfigOptionalsInput` ### Returns This function returns a value of type `AiAgent`. A successful response including the default agent configuration. This response can be one of the following four objects: - AI agent for questions - AI agent for text generation - AI agent for freeform metadata extraction AI agent for structured metadata extraction. The response depends on the agent configuration requested in this endpoint. ## Extract metadata (freeform) Sends an AI request to supported Large Language Models (LLMs) and extracts metadata in form of key-value pairs. In this request, both the prompt and the output can be freeform. Metadata template setup before sending the request is not required. This operation is performed by calling function `createAiExtract`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract/). ``` await client.ai.createAiExtract({ prompt: 'firstName, lastName, location, yearOfBirth, company', items: [new AiItemBase({ id: file.id })], aiAgent: aiExtractAgentBasicTextConfig, } satisfies AiExtract); ``` ### Arguments requestBody `AiExtract` - Request body of createAiExtract method optionalsInput `CreateAiExtractOptionalsInput` ### Returns This function returns a value of type `AiResponse`. A response including the answer from the LLM. ## Extract metadata (structured) Sends an AI request to supported Large Language Models (LLMs) and returns extracted metadata as a set of key-value pairs. To define the extraction structure, provide either a metadata template or a list of fields. To learn more about creating templates, see [Creating metadata templates in the Admin Console](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates) or use the [metadata template API](g://metadata/templates/create). This endpoint also supports [Enhanced Extract Agent](g://box-ai/ai-tutorials/extract-metadata-structured/#enhanced-extract-agent). For information about supported file formats and languages, see the [Extract metadata from file (structured)](g://box-ai/ai-tutorials/extract-metadata-structured) API guide. This operation is performed by calling function `createAiExtractStructured`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract-structured/). ``` await client.ai.createAiExtractStructured({ fields: [ { key: 'firstName', displayName: 'First name', description: 'Person first name', prompt: 'What is the your first name?', type: 'string', } satisfies AiExtractStructuredFieldsField, { key: 'lastName', displayName: 'Last name', description: 'Person last name', prompt: 'What is the your last name?', type: 'string', } satisfies AiExtractStructuredFieldsField, { key: 'dateOfBirth', displayName: 'Birth date', description: 'Person date of birth', prompt: 'What is the date of your birth?', type: 'date', } satisfies AiExtractStructuredFieldsField, { key: 'age', displayName: 'Age', description: 'Person age', prompt: 'How old are you?', type: 'float', } satisfies AiExtractStructuredFieldsField, { key: 'hobby', displayName: 'Hobby', description: 'Person hobby', prompt: 'What is your hobby?', type: 'multiSelect', options: [ { key: 'guitar' } satisfies AiExtractStructuredFieldsOptionsField, { key: 'books' } satisfies AiExtractStructuredFieldsOptionsField, ], } satisfies AiExtractStructuredFieldsField, ], items: [new AiItemBase({ id: file.id })], aiAgent: aiExtractStructuredAgentBasicTextConfig, } satisfies AiExtractStructured); ``` ### Arguments requestBody `AiExtractStructured` - Request body of createAiExtractStructured method optionalsInput `CreateAiExtractStructuredOptionalsInput` ### Returns This function returns a value of type `AiExtractStructuredResponse`. A successful response including the answer from the LLM. --- ### AiManager **Type:** page | **Section:** Additional Resources AiManager Ask question Generate text Get AI agent default configuration Extract metadata (freeform) Extract metadata (structured) Ask… # AiManager - [Ask question](#ask-question) - [Generate text](#generate-text) - [Get AI agent default configuration](#get-ai-agent-default-configuration) - [Extract metadata (freeform)](#extract-metadata-freeform) - [Extract metadata (structured)](#extract-metadata-structured) ## Ask question Sends an AI request to supported LLMs and returns an answer specifically focused on the user's question given the provided context. This operation is performed by calling function `create_ai_ask`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-ask/). ``` client.ai.create_ai_ask( CreateAiAskMode.SINGLE_ITEM_QA, "Which direction does the Sun rise?", [ AiItemAsk( id=file_to_ask.id, type=AiItemAskTypeField.FILE, content="The Sun rises in the east", ) ], ai_agent=ai_ask_agent_basic_text_config, ) ``` ### Arguments mode `CreateAiAskMode` - Box AI handles text documents with text representations up to 1MB in size, or a maximum of 25 files, whichever comes first. If the text file size exceeds 1MB, the first 1MB of text representation will be processed. Box AI handles image documents with a resolution of 1024 x 1024 pixels, with a maximum of 5 images or 5 pages for multi-page images. If the number of image or image pages exceeds 5, the first 5 images or pages will be processed. If you set mode parameter to `single_item_qa`, the items array can have one element only. Currently Box AI does not support multi-modal requests. If both images and text are sent Box AI will only process the text. prompt `str` - The prompt provided by the client to be answered by the LLM. The prompt's length is limited to 10000 characters. items `List[AiItemAsk]` - The items to be processed by the LLM, often files. dialogue_history `Optional[List[AiDialogueHistory]]` - The history of prompts and answers previously passed to the LLM. This provides additional context to the LLM in generating the response. include_citations `Optional[bool]` - A flag to indicate whether citations should be returned. ai_agent `Optional[AiAskAgent]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Optional[AiResponseFull]`. A successful response including the answer from the LLM.No content is available to answer the question. This is returned when the request item is a hub, but content in the hubs is not indexed. To ensure content in the hub is indexed, make sure Box AI for Hubs in the Admin Console was enabled before hub creation. ## Generate text Sends an AI request to supported Large Language Models (LLMs) and returns generated text based on the provided prompt. This operation is performed by calling function `create_ai_text_gen`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-text-gen/). ``` client.ai.create_ai_text_gen( "Paraphrase the documents", [ CreateAiTextGenItems( id=file_to_ask.id, type=CreateAiTextGenItemsTypeField.FILE, content="The Earth goes around the Sun. The Sun rises in the east in the morning.", ) ], dialogue_history=[ AiDialogueHistory( prompt="What does the earth go around?", answer="The Sun", created_at=date_time_from_string("2021-01-01T00:00:00Z"), ), AiDialogueHistory( prompt="On Earth, where does the Sun rise?", answer="east", created_at=date_time_from_string("2021-01-01T00:00:00Z"), ), ], ) ``` ### Arguments prompt `str` - The prompt provided by the client to be answered by the LLM. The prompt's length is limited to 10000 characters. items `List[CreateAiTextGenItems]` - The items to be processed by the LLM, often files. The array can include **exactly one** element. **Note**: Box AI handles documents with text representations up to 1MB in size. If the file size exceeds 1MB, the first 1MB of text representation will be processed. dialogue_history `Optional[List[AiDialogueHistory]]` - The history of prompts and answers previously passed to the LLM. This parameter provides the additional context to the LLM when generating the response. ai_agent `Optional[AiTextGenAgent]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiResponse`. A successful response including the answer from the LLM. ## Get AI agent default configuration Get the AI agent default config. This operation is performed by calling function `get_ai_agent_default_config`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agent-default/). ``` client.ai.get_ai_agent_default_config(GetAiAgentDefaultConfigMode.ASK, language="en-US") ``` ### Arguments mode `GetAiAgentDefaultConfigMode` - The mode to filter the agent config to return. language `Optional[str]` - The ISO language code to return the agent config for. If the language is not supported the default agent config is returned. model `Optional[str]` - The model to return the default agent config for. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiAgent`. A successful response including the default agent configuration. This response can be one of the following four objects: - AI agent for questions - AI agent for text generation - AI agent for freeform metadata extraction AI agent for structured metadata extraction. The response depends on the agent configuration requested in this endpoint. ## Extract metadata (freeform) Sends an AI request to supported Large Language Models (LLMs) and extracts metadata in form of key-value pairs. In this request, both the prompt and the output can be freeform. Metadata template setup before sending the request is not required. This operation is performed by calling function `create_ai_extract`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract/). ``` client.ai.create_ai_extract( "firstName, lastName, location, yearOfBirth, company", [AiItemBase(id=file.id)], ai_agent=ai_extract_agent_basic_text_config, ) ``` ### Arguments prompt `str` - The prompt provided to a Large Language Model (LLM) in the request. The prompt can be up to 10000 characters long and it can be an XML or a JSON schema. items `List[AiItemBase]` - The items that LLM will process. Currently, you can use files only. ai_agent `Optional[AiExtractAgent]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiResponse`. A response including the answer from the LLM. ## Extract metadata (structured) Sends an AI request to supported Large Language Models (LLMs) and returns extracted metadata as a set of key-value pairs. To define the extraction structure, provide either a metadata template or a list of fields. To learn more about creating templates, see [Creating metadata templates in the Admin Console](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates) or use the [metadata template API](g://metadata/templates/create). This endpoint also supports [Enhanced Extract Agent](g://box-ai/ai-tutorials/extract-metadata-structured/#enhanced-extract-agent). For information about supported file formats and languages, see the [Extract metadata from file (structured)](g://box-ai/ai-tutorials/extract-metadata-structured) API guide. This operation is performed by calling function `create_ai_extract_structured`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract-structured/). ``` client.ai.create_ai_extract_structured( [AiItemBase(id=file.id)], fields=[ CreateAiExtractStructuredFields( key="firstName", display_name="First name", description="Person first name", prompt="What is the your first name?", type="string", ), CreateAiExtractStructuredFields( key="lastName", display_name="Last name", description="Person last name", prompt="What is the your last name?", type="string", ), CreateAiExtractStructuredFields( key="dateOfBirth", display_name="Birth date", description="Person date of birth", prompt="What is the date of your birth?", type="date", ), CreateAiExtractStructuredFields( key="age", display_name="Age", description="Person age", prompt="How old are you?", type="float", ), CreateAiExtractStructuredFields( key="hobby", display_name="Hobby", description="Person hobby", prompt="What is your hobby?", type="multiSelect", options=[ CreateAiExtractStructuredFieldsOptionsField(key="guitar"), CreateAiExtractStructuredFieldsOptionsField(key="books"), ], ), ], ai_agent=ai_extract_structured_agent_basic_text_config, ) ``` ### Arguments items `List[AiItemBase]` - The items to be processed by the LLM. Currently you can use files only. metadata_template `Optional[CreateAiExtractStructuredMetadataTemplate]` - The metadata template containing the fields to extract. For your request to work, you must provide either `metadata_template` or `fields`, but not both. fields `Optional[List[CreateAiExtractStructuredFields]]` - The fields to be extracted from the provided items. For your request to work, you must provide either `metadata_template` or `fields`, but not both. ai_agent `Optional[AiExtractStructuredAgent]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiExtractStructuredResponse`. A successful response including the answer from the LLM. --- ### AiManager **Type:** page | **Section:** Additional Resources AiManager Ask question Generate text Get AI agent default configuration Extract metadata (freeform) Extract metadata (structured) Ask… # AiManager - [Ask question](#ask-question) - [Generate text](#generate-text) - [Get AI agent default configuration](#get-ai-agent-default-configuration) - [Extract metadata (freeform)](#extract-metadata-freeform) - [Extract metadata (structured)](#extract-metadata-structured) ## Ask question Sends an AI request to supported LLMs and returns an answer specifically focused on the user's question given the provided context. This operation is performed by calling function `createAiAsk`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-ask/). ``` try await client.ai.createAiAsk(requestBody: AiAsk(mode: AiAskModeField.singleItemQa, prompt: "Which direction does the Sun rise?", items: [AiItemAsk(id: fileToAsk.id, type: AiItemAskTypeField.file, content: "The Sun rises in the east")])) ``` ### Arguments requestBody `AiAsk` - Request body of createAiAsk method headers `CreateAiAskHeaders` - Headers of createAiAsk method ### Returns This function returns a value of type `AiResponseFull?`. A successful response including the answer from the LLM.No content is available to answer the question. This is returned when the request item is a hub, but content in the hubs is not indexed. To ensure content in the hub is indexed, make sure Box AI for Hubs in the Admin Console was enabled before hub creation. ## Generate text Sends an AI request to supported Large Language Models (LLMs) and returns generated text based on the provided prompt. This operation is performed by calling function `createAiTextGen`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-text-gen/). ``` try await client.ai.createAiTextGen(requestBody: AiTextGen(prompt: "Paraphrase the documents", items: [AiTextGenItemsField(id: fileToAsk.id, type: AiTextGenItemsTypeField.file, content: "The Earth goes around the Sun. The Sun rises in the east in the morning.")], dialogueHistory: [AiDialogueHistory(prompt: "What does the earth go around?", answer: "The Sun", createdAt: try Utils.Dates.dateTimeFromString(dateTime: "2021-01-01T00:00:00Z")), AiDialogueHistory(prompt: "On Earth, where does the Sun rise?", answer: "east", createdAt: try Utils.Dates.dateTimeFromString(dateTime: "2021-01-01T00:00:00Z"))])) ``` ### Arguments requestBody `AiTextGen` - Request body of createAiTextGen method headers `CreateAiTextGenHeaders` - Headers of createAiTextGen method ### Returns This function returns a value of type `AiResponse`. A successful response including the answer from the LLM. ## Get AI agent default configuration Get the AI agent default config. This operation is performed by calling function `getAiAgentDefaultConfig`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agent-default/). ``` try await client.ai.getAiAgentDefaultConfig(queryParams: GetAiAgentDefaultConfigQueryParams(mode: GetAiAgentDefaultConfigQueryParamsModeField.ask, language: "en-US")) ``` ### Arguments queryParams `GetAiAgentDefaultConfigQueryParams` - Query parameters of getAiAgentDefaultConfig method headers `GetAiAgentDefaultConfigHeaders` - Headers of getAiAgentDefaultConfig method ### Returns This function returns a value of type `AiAgent`. A successful response including the default agent configuration. This response can be one of the following four objects: - AI agent for questions - AI agent for text generation - AI agent for freeform metadata extraction - AI agent for structured metadata extraction. The response depends on the agent configuration requested in this endpoint. ## Extract metadata (freeform) Sends an AI request to supported Large Language Models (LLMs) and extracts metadata in form of key-value pairs. In this request, both the prompt and the output can be freeform. Metadata template setup before sending the request is not required. This operation is performed by calling function `createAiExtract`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract/). ``` try await client.ai.createAiExtract(requestBody: AiExtract(prompt: "firstName, lastName, location, yearOfBirth, company", items: [AiItemBase(id: file.id)])) ``` ### Arguments requestBody `AiExtract` - Request body of createAiExtract method headers `CreateAiExtractHeaders` - Headers of createAiExtract method ### Returns This function returns a value of type `AiResponse`. A response including the answer from the LLM. ## Extract metadata (structured) Sends an AI request to supported Large Language Models (LLMs) and returns extracted metadata as a set of key-value pairs. To define the extraction structure, provide either a metadata template or a list of fields. To learn more about creating templates, see [Creating metadata templates in the Admin Console](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates) or use the [metadata template API](g://metadata/templates/create). This endpoint also supports [Enhanced Extract Agent](g://box-ai/ai-tutorials/extract-metadata-structured/#enhanced-extract-agent). For information about supported file formats and languages, see the [Extract metadata from file (structured)](g://box-ai/ai-tutorials/extract-metadata-structured) API guide. This operation is performed by calling function `createAiExtractStructured`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract-structured/). ``` try await client.ai.createAiExtractStructured(requestBody: AiExtractStructured(fields: [AiExtractStructuredFieldsField(key: "firstName", displayName: "First name", description: "Person first name", prompt: "What is the your first name?", type: "string"), AiExtractStructuredFieldsField(key: "lastName", displayName: "Last name", description: "Person last name", prompt: "What is the your last name?", type: "string"), AiExtractStructuredFieldsField(key: "dateOfBirth", displayName: "Birth date", description: "Person date of birth", prompt: "What is the date of your birth?", type: "date"), AiExtractStructuredFieldsField(key: "age", displayName: "Age", description: "Person age", prompt: "How old are you?", type: "float"), AiExtractStructuredFieldsField(key: "hobby", displayName: "Hobby", description: "Person hobby", prompt: "What is your hobby?", type: "multiSelect", options: [AiExtractStructuredFieldsOptionsField(key: "guitar"), AiExtractStructuredFieldsOptionsField(key: "books")])], items: [AiItemBase(id: file.id)])) ``` ### Arguments requestBody `AiExtractStructured` - Request body of createAiExtractStructured method headers `CreateAiExtractStructuredHeaders` - Headers of createAiExtractStructured method ### Returns This function returns a value of type `AiExtractStructuredResponse`. A successful response including the answer from the LLM. --- ### AiManager **Type:** page | **Section:** Additional Resources AiManager Ask question Generate text Get AI agent default configuration Extract metadata (freeform) Extract metadata (structured) Ask… # AiManager - [Ask question](#ask-question) - [Generate text](#generate-text) - [Get AI agent default configuration](#get-ai-agent-default-configuration) - [Extract metadata (freeform)](#extract-metadata-freeform) - [Extract metadata (structured)](#extract-metadata-structured) ## Ask question Sends an AI request to supported LLMs and returns an answer specifically focused on the user's question given the provided context. This operation is performed by calling function `createAiAsk`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-ask/). ``` client.getAi().createAiAsk(new AiAsk.Builder(AiAskModeField.SINGLE_ITEM_QA, "Which direction does the Sun rise?", Arrays.asList(new AiItemAsk.Builder(fileToAsk.getId(), AiItemAskTypeField.FILE).content("The Sun rises in the east").build())).aiAgent(aiAskAgentBasicTextConfig).build()) ``` ### Arguments requestBody `AiAsk` - Request body of createAiAsk method headers `CreateAiAskHeaders` - Headers of createAiAsk method ### Returns This function returns a value of type `AiResponseFull`. A successful response including the answer from the LLM.No content is available to answer the question. This is returned when the request item is a hub, but content in the hubs is not indexed. To ensure content in the hub is indexed, make sure Box AI for Hubs in the Admin Console was enabled before hub creation. ## Generate text Sends an AI request to supported Large Language Models (LLMs) and returns generated text based on the provided prompt. This operation is performed by calling function `createAiTextGen`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-text-gen/). ``` client.getAi().createAiTextGen(new AiTextGen.Builder("Paraphrase the documents", Arrays.asList(new AiTextGenItemsField.Builder(fileToAsk.getId()).type(AiTextGenItemsTypeField.FILE).content("The Earth goes around the Sun. The Sun rises in the east in the morning.").build())).dialogueHistory(Arrays.asList(new AiDialogueHistory.Builder().prompt("What does the earth go around?").answer("The Sun").createdAt(dateTimeFromString("2021-01-01T00:00:00Z")).build(), new AiDialogueHistory.Builder().prompt("On Earth, where does the Sun rise?").answer("east").createdAt(dateTimeFromString("2021-01-01T00:00:00Z")).build())).build()) ``` ### Arguments requestBody `AiTextGen` - Request body of createAiTextGen method headers `CreateAiTextGenHeaders` - Headers of createAiTextGen method ### Returns This function returns a value of type `AiResponse`. A successful response including the answer from the LLM. ## Get AI agent default configuration Get the AI agent default config. This operation is performed by calling function `getAiAgentDefaultConfig`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agent-default/). ``` client.getAi().getAiAgentDefaultConfig(new GetAiAgentDefaultConfigQueryParams.Builder(GetAiAgentDefaultConfigQueryParamsModeField.ASK).language("en-US").build()) ``` ### Arguments queryParams `GetAiAgentDefaultConfigQueryParams` - Query parameters of getAiAgentDefaultConfig method headers `GetAiAgentDefaultConfigHeaders` - Headers of getAiAgentDefaultConfig method ### Returns This function returns a value of type `AiAgent`. A successful response including the default agent configuration. This response can be one of the following four objects: - AI agent for questions - AI agent for text generation - AI agent for freeform metadata extraction - AI agent for structured metadata extraction. The response depends on the agent configuration requested in this endpoint. ## Extract metadata (freeform) Sends an AI request to supported Large Language Models (LLMs) and extracts metadata in form of key-value pairs. In this request, both the prompt and the output can be freeform. Metadata template setup before sending the request is not required. This operation is performed by calling function `createAiExtract`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract/). ``` client.getAi().createAiExtract(new AiExtract.Builder("firstName, lastName, location, yearOfBirth, company", Arrays.asList(new AiItemBase(file.getId()))).aiAgent(aiExtractAgentBasicTextConfig).build()) ``` ### Arguments requestBody `AiExtract` - Request body of createAiExtract method headers `CreateAiExtractHeaders` - Headers of createAiExtract method ### Returns This function returns a value of type `AiResponse`. A response including the answer from the LLM. ## Extract metadata (structured) Sends an AI request to supported Large Language Models (LLMs) and returns extracted metadata as a set of key-value pairs. To define the extraction structure, provide either a metadata template or a list of fields. To learn more about creating templates, see [Creating metadata templates in the Admin Console](https://support.box.com/hc/en-us/articles/360044194033-Customizing-Metadata-Templates) or use the [metadata template API](g://metadata/templates/create). This endpoint also supports [Enhanced Extract Agent](g://box-ai/ai-tutorials/extract-metadata-structured/#enhanced-extract-agent). For information about supported file formats and languages, see the [Extract metadata from file (structured)](g://box-ai/ai-tutorials/extract-metadata-structured) API guide. This operation is performed by calling function `createAiExtractStructured`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-extract-structured/). ``` client.getAi().createAiExtractStructured(new AiExtractStructured.Builder(Arrays.asList(new AiItemBase(file.getId()))).fields(Arrays.asList(new AiExtractStructuredFieldsField.Builder("firstName").description("Person first name").displayName("First name").prompt("What is the your first name?").type("string").build(), new AiExtractStructuredFieldsField.Builder("lastName").description("Person last name").displayName("Last name").prompt("What is the your last name?").type("string").build(), new AiExtractStructuredFieldsField.Builder("dateOfBirth").description("Person date of birth").displayName("Birth date").prompt("What is the date of your birth?").type("date").build(), new AiExtractStructuredFieldsField.Builder("age").description("Person age").displayName("Age").prompt("How old are you?").type("float").build(), new AiExtractStructuredFieldsField.Builder("hobby").description("Person hobby").displayName("Hobby").prompt("What is your hobby?").type("multiSelect").options(Arrays.asList(new AiExtractStructuredFieldsOptionsField("guitar"), new AiExtractStructuredFieldsOptionsField("books"))).build())).aiAgent(aiExtractStructuredAgentBasicTextConfig).build()) ``` ### Arguments requestBody `AiExtractStructured` - Request body of createAiExtractStructured method headers `CreateAiExtractStructuredHeaders` - Headers of createAiExtractStructured method ### Returns This function returns a value of type `AiExtractStructuredResponse`. A successful response including the answer from the LLM. --- ### AiStudioManager **Type:** page | **Section:** Additional Resources AiStudioManager List AI agents Create AI agent Update AI agent Get AI agent by agent ID Delete AI agent List AI agents Lists AI agents based… # AiStudioManager - [List AI agents](#list-ai-agents) - [Create AI agent](#create-ai-agent) - [Update AI agent](#update-ai-agent) - [Get AI agent by agent ID](#get-ai-agent-by-agent-id) - [Delete AI agent](#delete-ai-agent) ## List AI agents Lists AI agents based on the provided parameters. This operation is performed by calling function `getAiAgents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents/). ``` await client.aiStudio.getAiAgents(); ``` ### Arguments queryParams `GetAiAgentsQueryParams` - Query parameters of getAiAgents method headersInput `GetAiAgentsHeadersInput` - Headers of getAiAgents method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `AiMultipleAgentResponse`. A successful response including the agents list. ## Create AI agent Creates an AI agent. At least one of the following capabilities must be provided: `ask`, `text_gen`, `extract`. This operation is performed by calling function `createAiAgent`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-agents/). ``` await client.aiStudio.createAiAgent({ name: agentName, accessState: 'enabled', ask: new AiStudioAgentAsk({ accessState: 'enabled', description: 'desc1' }), } satisfies CreateAiAgentInput); ``` ### Arguments requestBodyInput `CreateAiAgentInput` - Request body of createAiAgent method optionalsInput `CreateAiAgentOptionalsInput` ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Update AI agent Updates an AI agent. This operation is performed by calling function `updateAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-ai-agents-id/). ``` await client.aiStudio.updateAiAgentById(createdAgent.id, { name: agentName, accessState: 'enabled', ask: new AiStudioAgentAsk({ accessState: 'disabled', description: 'desc2' }), } satisfies CreateAiAgentInput); ``` ### Arguments agentId `string` - The ID of the agent to update. Example: "1234" requestBodyInput `CreateAiAgentInput` - Request body of updateAiAgentById method optionalsInput `UpdateAiAgentByIdOptionalsInput` ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Get AI agent by agent ID Gets an AI Agent using the `agent_id` parameter. This operation is performed by calling function `getAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents-id/). ``` await client.aiStudio.getAiAgentById(createdAgent.id, { queryParams: { fields: ['ask'] } satisfies GetAiAgentByIdQueryParams, } satisfies GetAiAgentByIdOptionalsInput); ``` ### Arguments agentId `string` - The agent id to get. Example: "1234" optionalsInput `GetAiAgentByIdOptionalsInput` ### Returns This function returns a value of type `AiSingleAgentResponseFull`. A successful response including the agent. ## Delete AI agent Deletes an AI agent using the provided parameters. This operation is performed by calling function `deleteAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-ai-agents-id/). ``` await client.aiStudio.deleteAiAgentById(createdAgent.id); ``` ### Arguments agentId `string` - The ID of the agent to delete. Example: "1234" optionalsInput `DeleteAiAgentByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. A successful response with no content. --- ### AiStudioManager **Type:** page | **Section:** Additional Resources AiStudioManager List AI agents Create AI agent Update AI agent Get AI agent by agent ID Delete AI agent List AI agents Lists AI agents based… # AiStudioManager - [List AI agents](#list-ai-agents) - [Create AI agent](#create-ai-agent) - [Update AI agent](#update-ai-agent) - [Get AI agent by agent ID](#get-ai-agent-by-agent-id) - [Delete AI agent](#delete-ai-agent) ## List AI agents Lists AI agents based on the provided parameters. This operation is performed by calling function `getAiAgents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents/). ``` client.getAiStudio().getAiAgents() ``` ### Arguments queryParams `GetAiAgentsQueryParams` - Query parameters of getAiAgents method headers `GetAiAgentsHeaders` - Headers of getAiAgents method ### Returns This function returns a value of type `AiMultipleAgentResponse`. A successful response including the agents list. ## Create AI agent Creates an AI agent. At least one of the following capabilities must be provided: `ask`, `text_gen`, `extract`. This operation is performed by calling function `createAiAgent`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-agents/). ``` client.getAiStudio().createAiAgent(new CreateAiAgent.Builder(agentName, "enabled").ask(new AiStudioAgentAsk("enabled", "desc1")).build()) ``` ### Arguments requestBody `CreateAiAgent` - Request body of createAiAgent method headers `CreateAiAgentHeaders` - Headers of createAiAgent method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Update AI agent Updates an AI agent. This operation is performed by calling function `updateAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-ai-agents-id/). ``` client.getAiStudio().updateAiAgentById(createdAgent.getId(), new CreateAiAgent.Builder(agentName, "enabled").ask(new AiStudioAgentAsk("disabled", "desc2")).build()) ``` ### Arguments agentId `String` - The ID of the agent to update. Example: "1234" requestBody `CreateAiAgent` - Request body of updateAiAgentById method headers `UpdateAiAgentByIdHeaders` - Headers of updateAiAgentById method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Get AI agent by agent ID Gets an AI Agent using the `agent_id` parameter. This operation is performed by calling function `getAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents-id/). ``` client.getAiStudio().getAiAgentById(createdAgent.getId(), new GetAiAgentByIdQueryParams.Builder().fields(Arrays.asList("ask")).build()) ``` ### Arguments agentId `String` - The agent id to get. Example: "1234" queryParams `GetAiAgentByIdQueryParams` - Query parameters of getAiAgentById method headers `GetAiAgentByIdHeaders` - Headers of getAiAgentById method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. A successful response including the agent. ## Delete AI agent Deletes an AI agent using the provided parameters. This operation is performed by calling function `deleteAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-ai-agents-id/). ``` client.getAiStudio().deleteAiAgentById(createdAgent.getId()) ``` ### Arguments agentId `String` - The ID of the agent to delete. Example: "1234" headers `DeleteAiAgentByIdHeaders` - Headers of deleteAiAgentById method ### Returns This function returns a value of type `void`. A successful response with no content. --- ### AiStudioManager **Type:** page | **Section:** Additional Resources AiStudioManager List AI agents Create AI agent Update AI agent Get AI agent by agent ID Delete AI agent List AI agents Lists AI agents based… # AiStudioManager - [List AI agents](#list-ai-agents) - [Create AI agent](#create-ai-agent) - [Update AI agent](#update-ai-agent) - [Get AI agent by agent ID](#get-ai-agent-by-agent-id) - [Delete AI agent](#delete-ai-agent) ## List AI agents Lists AI agents based on the provided parameters. This operation is performed by calling function `get_ai_agents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents/). ``` client.ai_studio.get_ai_agents() ``` ### Arguments mode `Optional[List[str]]` - The mode to filter the agent config to return. Possible values are: `ask`, `text_gen`, and `extract`. fields `Optional[List[str]]` - The fields to return in the response. agent_state `Optional[List[str]]` - The state of the agents to return. Possible values are: `enabled`, `disabled` and `enabled_for_selected_users`. include_box_default `Optional[bool]` - Whether to include the Box default agents in the response. marker `Optional[str]` - Defines the position marker at which to begin returning results. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiMultipleAgentResponse`. A successful response including the agents list. ## Create AI agent Creates an AI agent. At least one of the following capabilities must be provided: `ask`, `text_gen`, `extract`. This operation is performed by calling function `create_ai_agent`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-agents/). ``` client.ai_studio.create_ai_agent( agent_name, "enabled", ask=AiStudioAgentAsk(access_state="enabled", description="desc1"), ) ``` ### Arguments type `CreateAiAgentType` - The type of agent used to handle queries. name `str` - The name of the AI Agent. access_state `str` - The state of the AI Agent. Possible values are: `enabled`, `disabled`, and `enabled_for_selected_users`. icon_reference `Optional[str]` - The icon reference of the AI Agent. It should have format of the URL `https://cdn01.boxcdn.net/app-assets/aistudio/avatars/<file_name>` where possible values of `file_name` are: `logo_boxAi.png`,`logo_stamp.png`,`logo_legal.png`,`logo_finance.png`,`logo_config.png`,`logo_handshake.png`,`logo_analytics.png`,`logo_classification.png`. allowed_entities `Optional[List[AiAgentAllowedEntity]]` - List of allowed users or groups. ask `Optional[AiStudioAgentAsk]` text_gen `Optional[AiStudioAgentTextGen]` extract `Optional[AiStudioAgentExtract]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Update AI agent Updates an AI agent. This operation is performed by calling function `update_ai_agent_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-ai-agents-id/). ``` client.ai_studio.update_ai_agent_by_id( created_agent.id, agent_name, "enabled", ask=AiStudioAgentAsk(access_state="disabled", description="desc2"), ) ``` ### Arguments agent_id `str` - The ID of the agent to update. Example: "1234" type `UpdateAiAgentByIdType` - The type of agent used to handle queries. name `str` - The name of the AI Agent. access_state `str` - The state of the AI Agent. Possible values are: `enabled`, `disabled`, and `enabled_for_selected_users`. icon_reference `Optional[str]` - The icon reference of the AI Agent. It should have format of the URL `https://cdn01.boxcdn.net/app-assets/aistudio/avatars/<file_name>` where possible values of `file_name` are: `logo_boxAi.png`,`logo_stamp.png`,`logo_legal.png`,`logo_finance.png`,`logo_config.png`,`logo_handshake.png`,`logo_analytics.png`,`logo_classification.png`. allowed_entities `Optional[List[AiAgentAllowedEntity]]` - List of allowed users or groups. ask `Optional[AiStudioAgentAsk]` text_gen `Optional[AiStudioAgentTextGen]` extract `Optional[AiStudioAgentExtract]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Get AI agent by agent ID Gets an AI Agent using the `agent_id` parameter. This operation is performed by calling function `get_ai_agent_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents-id/). ``` client.ai_studio.get_ai_agent_by_id(created_agent.id, fields=["ask"]) ``` ### Arguments agent_id `str` - The agent id to get. Example: "1234" fields `Optional[List[str]]` - The fields to return in the response. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiSingleAgentResponseFull`. A successful response including the agent. ## Delete AI agent Deletes an AI agent using the provided parameters. This operation is performed by calling function `delete_ai_agent_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-ai-agents-id/). ``` client.ai_studio.delete_ai_agent_by_id(created_agent.id) ``` ### Arguments agent_id `str` - The ID of the agent to delete. Example: "1234" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. A successful response with no content. --- ### AiStudioManager **Type:** page | **Section:** Additional Resources AiStudioManager List AI agents Create AI agent Update AI agent Get AI agent by agent ID Delete AI agent List AI agents Lists AI agents based… # AiStudioManager - [List AI agents](#list-ai-agents) - [Create AI agent](#create-ai-agent) - [Update AI agent](#update-ai-agent) - [Get AI agent by agent ID](#get-ai-agent-by-agent-id) - [Delete AI agent](#delete-ai-agent) ## List AI agents Lists AI agents based on the provided parameters. This operation is performed by calling function `getAiAgents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents/). ``` try await client.aiStudio.getAiAgents() ``` ### Arguments queryParams `GetAiAgentsQueryParams` - Query parameters of getAiAgents method headers `GetAiAgentsHeaders` - Headers of getAiAgents method ### Returns This function returns a value of type `AiMultipleAgentResponse`. A successful response including the agents list. ## Create AI agent Creates an AI agent. At least one of the following capabilities must be provided: `ask`, `text_gen`, `extract`. This operation is performed by calling function `createAiAgent`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-agents/). ``` try await client.aiStudio.createAiAgent(requestBody: CreateAiAgent(name: agentName, accessState: "enabled", ask: AiStudioAgentAsk(accessState: "enabled", description: "desc1"))) ``` ### Arguments requestBody `CreateAiAgent` - Request body of createAiAgent method headers `CreateAiAgentHeaders` - Headers of createAiAgent method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Update AI agent Updates an AI agent. This operation is performed by calling function `updateAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-ai-agents-id/). ``` try await client.aiStudio.updateAiAgentById(agentId: createdAgent.id, requestBody: CreateAiAgent(name: agentName, accessState: "enabled", ask: AiStudioAgentAsk(accessState: "disabled", description: "desc2"))) ``` ### Arguments agentId `String` - The ID of the agent to update. Example: "1234" requestBody `CreateAiAgent` - Request body of updateAiAgentById method headers `UpdateAiAgentByIdHeaders` - Headers of updateAiAgentById method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Get AI agent by agent ID Gets an AI Agent using the `agent_id` parameter. This operation is performed by calling function `getAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents-id/). ``` try await client.aiStudio.getAiAgentById(agentId: createdAgent.id, queryParams: GetAiAgentByIdQueryParams(fields: ["ask"])) ``` ### Arguments agentId `String` - The agent id to get. Example: "1234" queryParams `GetAiAgentByIdQueryParams` - Query parameters of getAiAgentById method headers `GetAiAgentByIdHeaders` - Headers of getAiAgentById method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. A successful response including the agent. ## Delete AI agent Deletes an AI agent using the provided parameters. This operation is performed by calling function `deleteAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-ai-agents-id/). ``` try await client.aiStudio.deleteAiAgentById(agentId: createdAgent.id) ``` ### Arguments agentId `String` - The ID of the agent to delete. Example: "1234" headers `DeleteAiAgentByIdHeaders` - Headers of deleteAiAgentById method ### Returns This function returns a value of type ``. A successful response with no content. --- ### AiStudioManager **Type:** page | **Section:** Additional Resources AiStudioManager List AI agents Create AI agent Update AI agent Get AI agent by agent ID Delete AI agent List AI agents Lists AI agents based… # AiStudioManager - [List AI agents](#list-ai-agents) - [Create AI agent](#create-ai-agent) - [Update AI agent](#update-ai-agent) - [Get AI agent by agent ID](#get-ai-agent-by-agent-id) - [Delete AI agent](#delete-ai-agent) ## List AI agents Lists AI agents based on the provided parameters. This operation is performed by calling function `getAiAgents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents/). ``` await client.aiStudio.getAiAgents(); ``` ### Arguments queryParams `GetAiAgentsQueryParams` - Query parameters of getAiAgents method headersInput `GetAiAgentsHeadersInput` - Headers of getAiAgents method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `AiMultipleAgentResponse`. A successful response including the agents list. ## Create AI agent Creates an AI agent. At least one of the following capabilities must be provided: `ask`, `text_gen`, `extract`. This operation is performed by calling function `createAiAgent`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-agents/). ``` await client.aiStudio.createAiAgent({ name: agentName, accessState: 'enabled', ask: new AiStudioAgentAsk({ accessState: 'enabled', description: 'desc1' }), } satisfies CreateAiAgentInput); ``` ### Arguments requestBodyInput `CreateAiAgentInput` - Request body of createAiAgent method optionalsInput `CreateAiAgentOptionalsInput` ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Update AI agent Updates an AI agent. This operation is performed by calling function `updateAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-ai-agents-id/). ``` await client.aiStudio.updateAiAgentById(createdAgent.id, { name: agentName, accessState: 'enabled', ask: new AiStudioAgentAsk({ accessState: 'disabled', description: 'desc2' }), } satisfies CreateAiAgentInput); ``` ### Arguments agentId `string` - The ID of the agent to update. Example: "1234" requestBodyInput `CreateAiAgentInput` - Request body of updateAiAgentById method optionalsInput `UpdateAiAgentByIdOptionalsInput` ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Get AI agent by agent ID Gets an AI Agent using the `agent_id` parameter. This operation is performed by calling function `getAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents-id/). ``` await client.aiStudio.getAiAgentById(createdAgent.id, { queryParams: { fields: ['ask'] } satisfies GetAiAgentByIdQueryParams, } satisfies GetAiAgentByIdOptionalsInput); ``` ### Arguments agentId `string` - The agent id to get. Example: "1234" optionalsInput `GetAiAgentByIdOptionalsInput` ### Returns This function returns a value of type `AiSingleAgentResponseFull`. A successful response including the agent. ## Delete AI agent Deletes an AI agent using the provided parameters. This operation is performed by calling function `deleteAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-ai-agents-id/). ``` await client.aiStudio.deleteAiAgentById(createdAgent.id); ``` ### Arguments agentId `string` - The ID of the agent to delete. Example: "1234" optionalsInput `DeleteAiAgentByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. A successful response with no content. --- ### AiStudioManager **Type:** page | **Section:** Additional Resources AiStudioManager List AI agents Create AI agent Update AI agent Get AI agent by agent ID Delete AI agent List AI agents Lists AI agents based… # AiStudioManager - [List AI agents](#list-ai-agents) - [Create AI agent](#create-ai-agent) - [Update AI agent](#update-ai-agent) - [Get AI agent by agent ID](#get-ai-agent-by-agent-id) - [Delete AI agent](#delete-ai-agent) ## List AI agents Lists AI agents based on the provided parameters. This operation is performed by calling function `get_ai_agents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents/). ``` client.ai_studio.get_ai_agents() ``` ### Arguments mode `Optional[List[str]]` - The mode to filter the agent config to return. Possible values are: `ask`, `text_gen`, and `extract`. fields `Optional[List[str]]` - The fields to return in the response. agent_state `Optional[List[str]]` - The state of the agents to return. Possible values are: `enabled`, `disabled` and `enabled_for_selected_users`. include_box_default `Optional[bool]` - Whether to include the Box default agents in the response. marker `Optional[str]` - Defines the position marker at which to begin returning results. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiMultipleAgentResponse`. A successful response including the agents list. ## Create AI agent Creates an AI agent. At least one of the following capabilities must be provided: `ask`, `text_gen`, `extract`. This operation is performed by calling function `create_ai_agent`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-agents/). ``` client.ai_studio.create_ai_agent( agent_name, "enabled", ask=AiStudioAgentAsk(access_state="enabled", description="desc1"), ) ``` ### Arguments type `CreateAiAgentType` - The type of agent used to handle queries. name `str` - The name of the AI Agent. access_state `str` - The state of the AI Agent. Possible values are: `enabled`, `disabled`, and `enabled_for_selected_users`. icon_reference `Optional[str]` - The icon reference of the AI Agent. It should have format of the URL `https://cdn01.boxcdn.net/app-assets/aistudio/avatars/<file_name>` where possible values of `file_name` are: `logo_boxAi.png`,`logo_stamp.png`,`logo_legal.png`,`logo_finance.png`,`logo_config.png`,`logo_handshake.png`,`logo_analytics.png`,`logo_classification.png`. allowed_entities `Optional[List[AiAgentAllowedEntity]]` - List of allowed users or groups. ask `Optional[AiStudioAgentAsk]` text_gen `Optional[AiStudioAgentTextGen]` extract `Optional[AiStudioAgentExtract]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Update AI agent Updates an AI agent. This operation is performed by calling function `update_ai_agent_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-ai-agents-id/). ``` client.ai_studio.update_ai_agent_by_id( created_agent.id, agent_name, "enabled", ask=AiStudioAgentAsk(access_state="disabled", description="desc2"), ) ``` ### Arguments agent_id `str` - The ID of the agent to update. Example: "1234" type `UpdateAiAgentByIdType` - The type of agent used to handle queries. name `str` - The name of the AI Agent. access_state `str` - The state of the AI Agent. Possible values are: `enabled`, `disabled`, and `enabled_for_selected_users`. icon_reference `Optional[str]` - The icon reference of the AI Agent. It should have format of the URL `https://cdn01.boxcdn.net/app-assets/aistudio/avatars/<file_name>` where possible values of `file_name` are: `logo_boxAi.png`,`logo_stamp.png`,`logo_legal.png`,`logo_finance.png`,`logo_config.png`,`logo_handshake.png`,`logo_analytics.png`,`logo_classification.png`. allowed_entities `Optional[List[AiAgentAllowedEntity]]` - List of allowed users or groups. ask `Optional[AiStudioAgentAsk]` text_gen `Optional[AiStudioAgentTextGen]` extract `Optional[AiStudioAgentExtract]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Get AI agent by agent ID Gets an AI Agent using the `agent_id` parameter. This operation is performed by calling function `get_ai_agent_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents-id/). ``` client.ai_studio.get_ai_agent_by_id(created_agent.id, fields=["ask"]) ``` ### Arguments agent_id `str` - The agent id to get. Example: "1234" fields `Optional[List[str]]` - The fields to return in the response. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AiSingleAgentResponseFull`. A successful response including the agent. ## Delete AI agent Deletes an AI agent using the provided parameters. This operation is performed by calling function `delete_ai_agent_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-ai-agents-id/). ``` client.ai_studio.delete_ai_agent_by_id(created_agent.id) ``` ### Arguments agent_id `str` - The ID of the agent to delete. Example: "1234" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. A successful response with no content. --- ### AiStudioManager **Type:** page | **Section:** Additional Resources AiStudioManager List AI agents Create AI agent Update AI agent Get AI agent by agent ID Delete AI agent List AI agents Lists AI agents based… # AiStudioManager - [List AI agents](#list-ai-agents) - [Create AI agent](#create-ai-agent) - [Update AI agent](#update-ai-agent) - [Get AI agent by agent ID](#get-ai-agent-by-agent-id) - [Delete AI agent](#delete-ai-agent) ## List AI agents Lists AI agents based on the provided parameters. This operation is performed by calling function `getAiAgents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents/). ``` try await client.aiStudio.getAiAgents() ``` ### Arguments queryParams `GetAiAgentsQueryParams` - Query parameters of getAiAgents method headers `GetAiAgentsHeaders` - Headers of getAiAgents method ### Returns This function returns a value of type `AiMultipleAgentResponse`. A successful response including the agents list. ## Create AI agent Creates an AI agent. At least one of the following capabilities must be provided: `ask`, `text_gen`, `extract`. This operation is performed by calling function `createAiAgent`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-agents/). ``` try await client.aiStudio.createAiAgent(requestBody: CreateAiAgent(name: agentName, accessState: "enabled", ask: AiStudioAgentAsk(accessState: "enabled", description: "desc1"))) ``` ### Arguments requestBody `CreateAiAgent` - Request body of createAiAgent method headers `CreateAiAgentHeaders` - Headers of createAiAgent method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Update AI agent Updates an AI agent. This operation is performed by calling function `updateAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-ai-agents-id/). ``` try await client.aiStudio.updateAiAgentById(agentId: createdAgent.id, requestBody: CreateAiAgent(name: agentName, accessState: "enabled", ask: AiStudioAgentAsk(accessState: "disabled", description: "desc2"))) ``` ### Arguments agentId `String` - The ID of the agent to update. Example: "1234" requestBody `CreateAiAgent` - Request body of updateAiAgentById method headers `UpdateAiAgentByIdHeaders` - Headers of updateAiAgentById method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Get AI agent by agent ID Gets an AI Agent using the `agent_id` parameter. This operation is performed by calling function `getAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents-id/). ``` try await client.aiStudio.getAiAgentById(agentId: createdAgent.id, queryParams: GetAiAgentByIdQueryParams(fields: ["ask"])) ``` ### Arguments agentId `String` - The agent id to get. Example: "1234" queryParams `GetAiAgentByIdQueryParams` - Query parameters of getAiAgentById method headers `GetAiAgentByIdHeaders` - Headers of getAiAgentById method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. A successful response including the agent. ## Delete AI agent Deletes an AI agent using the provided parameters. This operation is performed by calling function `deleteAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-ai-agents-id/). ``` try await client.aiStudio.deleteAiAgentById(agentId: createdAgent.id) ``` ### Arguments agentId `String` - The ID of the agent to delete. Example: "1234" headers `DeleteAiAgentByIdHeaders` - Headers of deleteAiAgentById method ### Returns This function returns a value of type ``. A successful response with no content. --- ### AiStudioManager **Type:** page | **Section:** Additional Resources AiStudioManager List AI agents Create AI agent Update AI agent Get AI agent by agent ID Delete AI agent List AI agents Lists AI agents based… # AiStudioManager - [List AI agents](#list-ai-agents) - [Create AI agent](#create-ai-agent) - [Update AI agent](#update-ai-agent) - [Get AI agent by agent ID](#get-ai-agent-by-agent-id) - [Delete AI agent](#delete-ai-agent) ## List AI agents Lists AI agents based on the provided parameters. This operation is performed by calling function `getAiAgents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents/). ``` client.getAiStudio().getAiAgents() ``` ### Arguments queryParams `GetAiAgentsQueryParams` - Query parameters of getAiAgents method headers `GetAiAgentsHeaders` - Headers of getAiAgents method ### Returns This function returns a value of type `AiMultipleAgentResponse`. A successful response including the agents list. ## Create AI agent Creates an AI agent. At least one of the following capabilities must be provided: `ask`, `text_gen`, `extract`. This operation is performed by calling function `createAiAgent`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-ai-agents/). ``` client.getAiStudio().createAiAgent(new CreateAiAgent.Builder(agentName, "enabled").ask(new AiStudioAgentAsk("enabled", "desc1")).build()) ``` ### Arguments requestBody `CreateAiAgent` - Request body of createAiAgent method headers `CreateAiAgentHeaders` - Headers of createAiAgent method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Update AI agent Updates an AI agent. This operation is performed by calling function `updateAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-ai-agents-id/). ``` client.getAiStudio().updateAiAgentById(createdAgent.getId(), new CreateAiAgent.Builder(agentName, "enabled").ask(new AiStudioAgentAsk("disabled", "desc2")).build()) ``` ### Arguments agentId `String` - The ID of the agent to update. Example: "1234" requestBody `CreateAiAgent` - Request body of updateAiAgentById method headers `UpdateAiAgentByIdHeaders` - Headers of updateAiAgentById method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. Definition of created AI agent. ## Get AI agent by agent ID Gets an AI Agent using the `agent_id` parameter. This operation is performed by calling function `getAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-ai-agents-id/). ``` client.getAiStudio().getAiAgentById(createdAgent.getId(), new GetAiAgentByIdQueryParams.Builder().fields(Arrays.asList("ask")).build()) ``` ### Arguments agentId `String` - The agent id to get. Example: "1234" queryParams `GetAiAgentByIdQueryParams` - Query parameters of getAiAgentById method headers `GetAiAgentByIdHeaders` - Headers of getAiAgentById method ### Returns This function returns a value of type `AiSingleAgentResponseFull`. A successful response including the agent. ## Delete AI agent Deletes an AI agent using the provided parameters. This operation is performed by calling function `deleteAiAgentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-ai-agents-id/). ``` client.getAiStudio().deleteAiAgentById(createdAgent.getId()) ``` ### Arguments agentId `String` - The ID of the agent to delete. Example: "1234" headers `DeleteAiAgentByIdHeaders` - Headers of deleteAiAgentById method ### Returns This function returns a value of type `void`. A successful response with no content. --- ### AppItemAssociationsManager **Type:** page | **Section:** Additional Resources AppItemAssociationsManager List file app item associations List folder app item associations List file app item associations This is a beta… # AppItemAssociationsManager - [List file app item associations](#list-file-app-item-associations) - [List folder app item associations](#list-folder-app-item-associations) ## List file app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the file is associated with. This includes app items associated with ancestors of the file. Assuming the context user has access to the file, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFileAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-app-item-associations/). ``` await client.appItemAssociations.getFileAppItemAssociations(fileId); ``` ### Arguments fileId `string` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" optionalsInput `GetFileAppItemAssociationsOptionalsInput` ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this file, an empty collection will be returned. This list includes app items on ancestors of this File. ## List folder app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the folder is associated with. This includes app items associated with ancestors of the folder. Assuming the context user has access to the folder, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFolderAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-folders-id-app-item-associations/). ``` await client.appItemAssociations.getFolderAppItemAssociations(folderId); ``` ### Arguments folderId `string` - The unique identifier that represent a folder. The ID for any folder can be determined by visiting this folder in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/folder/123` the `folder_id` is `123`. The root folder of a Box account is always represented by the ID `0`. Example: "12345" optionalsInput `GetFolderAppItemAssociationsOptionalsInput` ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this folder an empty collection will be returned. This list includes app items on ancestors of this folder. --- ### AppItemAssociationsManager **Type:** page | **Section:** Additional Resources AppItemAssociationsManager List file app item associations List folder app item associations List file app item associations This is a beta… # AppItemAssociationsManager - [List file app item associations](#list-file-app-item-associations) - [List folder app item associations](#list-folder-app-item-associations) ## List file app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the file is associated with. This includes app items associated with ancestors of the file. Assuming the context user has access to the file, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFileAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-app-item-associations/). ``` client.getAppItemAssociations().getFileAppItemAssociations(fileId) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `GetFileAppItemAssociationsQueryParams` - Query parameters of getFileAppItemAssociations method headers `GetFileAppItemAssociationsHeaders` - Headers of getFileAppItemAssociations method ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this file, an empty collection will be returned. This list includes app items on ancestors of this File. ## List folder app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the folder is associated with. This includes app items associated with ancestors of the folder. Assuming the context user has access to the folder, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFolderAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-folders-id-app-item-associations/). ``` client.getAppItemAssociations().getFolderAppItemAssociations(folderId) ``` ### Arguments folderId `String` - The unique identifier that represent a folder. The ID for any folder can be determined by visiting this folder in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/folder/123` the `folder_id` is `123`. The root folder of a Box account is always represented by the ID `0`. Example: "12345" queryParams `GetFolderAppItemAssociationsQueryParams` - Query parameters of getFolderAppItemAssociations method headers `GetFolderAppItemAssociationsHeaders` - Headers of getFolderAppItemAssociations method ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this folder an empty collection will be returned. This list includes app items on ancestors of this folder. --- ### AppItemAssociationsManager **Type:** page | **Section:** Additional Resources AppItemAssociationsManager List file app item associations List folder app item associations List file app item associations This is a beta… # AppItemAssociationsManager - [List file app item associations](#list-file-app-item-associations) - [List folder app item associations](#list-folder-app-item-associations) ## List file app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the file is associated with. This includes app items associated with ancestors of the file. Assuming the context user has access to the file, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `get_file_app_item_associations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-app-item-associations/). ``` client.app_item_associations.get_file_app_item_associations(file_id) ``` ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" limit `Optional[int]` - The maximum number of items to return per page. marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. application_type `Optional[str]` - If given, only return app items for this application type. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this file, an empty collection will be returned. This list includes app items on ancestors of this File. ## List folder app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the folder is associated with. This includes app items associated with ancestors of the folder. Assuming the context user has access to the folder, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `get_folder_app_item_associations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-folders-id-app-item-associations/). ``` client.app_item_associations.get_folder_app_item_associations(folder_id) ``` ### Arguments folder_id `str` - The unique identifier that represent a folder. The ID for any folder can be determined by visiting this folder in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/folder/123` the `folder_id` is `123`. The root folder of a Box account is always represented by the ID `0`. Example: "12345" limit `Optional[int]` - The maximum number of items to return per page. marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. application_type `Optional[str]` - If given, returns only app items for this application type. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this folder an empty collection will be returned. This list includes app items on ancestors of this folder. --- ### AppItemAssociationsManager **Type:** page | **Section:** Additional Resources AppItemAssociationsManager List file app item associations List folder app item associations List file app item associations This is a beta… # AppItemAssociationsManager - [List file app item associations](#list-file-app-item-associations) - [List folder app item associations](#list-folder-app-item-associations) ## List file app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the file is associated with. This includes app items associated with ancestors of the file. Assuming the context user has access to the file, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFileAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-app-item-associations/). ``` try await client.appItemAssociations.getFileAppItemAssociations(fileId: fileId) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `GetFileAppItemAssociationsQueryParams` - Query parameters of getFileAppItemAssociations method headers `GetFileAppItemAssociationsHeaders` - Headers of getFileAppItemAssociations method ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this file, an empty collection will be returned. This list includes app items on ancestors of this File. ## List folder app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the folder is associated with. This includes app items associated with ancestors of the folder. Assuming the context user has access to the folder, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFolderAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-folders-id-app-item-associations/). ``` try await client.appItemAssociations.getFolderAppItemAssociations(folderId: folderId) ``` ### Arguments folderId `String` - The unique identifier that represent a folder. The ID for any folder can be determined by visiting this folder in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/folder/123` the `folder_id` is `123`. The root folder of a Box account is always represented by the ID `0`. Example: "12345" queryParams `GetFolderAppItemAssociationsQueryParams` - Query parameters of getFolderAppItemAssociations method headers `GetFolderAppItemAssociationsHeaders` - Headers of getFolderAppItemAssociations method ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this folder an empty collection will be returned. This list includes app items on ancestors of this folder. --- ### AppItemAssociationsManager **Type:** page | **Section:** Additional Resources AppItemAssociationsManager List file app item associations List folder app item associations List file app item associations This is a beta… # AppItemAssociationsManager - [List file app item associations](#list-file-app-item-associations) - [List folder app item associations](#list-folder-app-item-associations) ## List file app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the file is associated with. This includes app items associated with ancestors of the file. Assuming the context user has access to the file, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFileAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-app-item-associations/). ``` await client.appItemAssociations.getFileAppItemAssociations(fileId); ``` ### Arguments fileId `string` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" optionalsInput `GetFileAppItemAssociationsOptionalsInput` ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this file, an empty collection will be returned. This list includes app items on ancestors of this File. ## List folder app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the folder is associated with. This includes app items associated with ancestors of the folder. Assuming the context user has access to the folder, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFolderAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-folders-id-app-item-associations/). ``` await client.appItemAssociations.getFolderAppItemAssociations(folderId); ``` ### Arguments folderId `string` - The unique identifier that represent a folder. The ID for any folder can be determined by visiting this folder in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/folder/123` the `folder_id` is `123`. The root folder of a Box account is always represented by the ID `0`. Example: "12345" optionalsInput `GetFolderAppItemAssociationsOptionalsInput` ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this folder an empty collection will be returned. This list includes app items on ancestors of this folder. --- ### AppItemAssociationsManager **Type:** page | **Section:** Additional Resources AppItemAssociationsManager List file app item associations List folder app item associations List file app item associations This is a beta… # AppItemAssociationsManager - [List file app item associations](#list-file-app-item-associations) - [List folder app item associations](#list-folder-app-item-associations) ## List file app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the file is associated with. This includes app items associated with ancestors of the file. Assuming the context user has access to the file, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `get_file_app_item_associations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-app-item-associations/). ``` client.app_item_associations.get_file_app_item_associations(file_id) ``` ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" limit `Optional[int]` - The maximum number of items to return per page. marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. application_type `Optional[str]` - If given, only return app items for this application type. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this file, an empty collection will be returned. This list includes app items on ancestors of this File. ## List folder app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the folder is associated with. This includes app items associated with ancestors of the folder. Assuming the context user has access to the folder, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `get_folder_app_item_associations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-folders-id-app-item-associations/). ``` client.app_item_associations.get_folder_app_item_associations(folder_id) ``` ### Arguments folder_id `str` - The unique identifier that represent a folder. The ID for any folder can be determined by visiting this folder in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/folder/123` the `folder_id` is `123`. The root folder of a Box account is always represented by the ID `0`. Example: "12345" limit `Optional[int]` - The maximum number of items to return per page. marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. application_type `Optional[str]` - If given, returns only app items for this application type. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this folder an empty collection will be returned. This list includes app items on ancestors of this folder. --- ### AppItemAssociationsManager **Type:** page | **Section:** Additional Resources AppItemAssociationsManager List file app item associations List folder app item associations List file app item associations This is a beta… # AppItemAssociationsManager - [List file app item associations](#list-file-app-item-associations) - [List folder app item associations](#list-folder-app-item-associations) ## List file app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the file is associated with. This includes app items associated with ancestors of the file. Assuming the context user has access to the file, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFileAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-app-item-associations/). ``` try await client.appItemAssociations.getFileAppItemAssociations(fileId: fileId) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `GetFileAppItemAssociationsQueryParams` - Query parameters of getFileAppItemAssociations method headers `GetFileAppItemAssociationsHeaders` - Headers of getFileAppItemAssociations method ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this file, an empty collection will be returned. This list includes app items on ancestors of this File. ## List folder app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the folder is associated with. This includes app items associated with ancestors of the folder. Assuming the context user has access to the folder, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFolderAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-folders-id-app-item-associations/). ``` try await client.appItemAssociations.getFolderAppItemAssociations(folderId: folderId) ``` ### Arguments folderId `String` - The unique identifier that represent a folder. The ID for any folder can be determined by visiting this folder in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/folder/123` the `folder_id` is `123`. The root folder of a Box account is always represented by the ID `0`. Example: "12345" queryParams `GetFolderAppItemAssociationsQueryParams` - Query parameters of getFolderAppItemAssociations method headers `GetFolderAppItemAssociationsHeaders` - Headers of getFolderAppItemAssociations method ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this folder an empty collection will be returned. This list includes app items on ancestors of this folder. --- ### AppItemAssociationsManager **Type:** page | **Section:** Additional Resources AppItemAssociationsManager List file app item associations List folder app item associations List file app item associations This is a beta… # AppItemAssociationsManager - [List file app item associations](#list-file-app-item-associations) - [List folder app item associations](#list-folder-app-item-associations) ## List file app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the file is associated with. This includes app items associated with ancestors of the file. Assuming the context user has access to the file, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFileAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-app-item-associations/). ``` client.getAppItemAssociations().getFileAppItemAssociations(fileId) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `GetFileAppItemAssociationsQueryParams` - Query parameters of getFileAppItemAssociations method headers `GetFileAppItemAssociationsHeaders` - Headers of getFileAppItemAssociations method ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this file, an empty collection will be returned. This list includes app items on ancestors of this File. ## List folder app item associations **This is a beta feature, which means that its availability might be limited.** Returns all app items the folder is associated with. This includes app items associated with ancestors of the folder. Assuming the context user has access to the folder, the type/ids are revealed even if the context user does not have **View** permission on the app item. This operation is performed by calling function `getFolderAppItemAssociations`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-folders-id-app-item-associations/). ``` client.getAppItemAssociations().getFolderAppItemAssociations(folderId) ``` ### Arguments folderId `String` - The unique identifier that represent a folder. The ID for any folder can be determined by visiting this folder in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/folder/123` the `folder_id` is `123`. The root folder of a Box account is always represented by the ID `0`. Example: "12345" queryParams `GetFolderAppItemAssociationsQueryParams` - Query parameters of getFolderAppItemAssociations method headers `GetFolderAppItemAssociationsHeaders` - Headers of getFolderAppItemAssociations method ### Returns This function returns a value of type `AppItemAssociations`. Returns a collection of app item objects. If there are no app items on this folder an empty collection will be returned. This list includes app items on ancestors of this folder. --- ### ArchivesManager **Type:** page | **Section:** Additional Resources ArchivesManager List archives Create archive Delete archive Update archive List archives Retrieves archives for an enterprise. To learn more… # ArchivesManager - [List archives](#list-archives) - [Create archive](#create-archive) - [Delete archive](#delete-archive) - [Update archive](#update-archive) ## List archives Retrieves archives for an enterprise. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `getArchivesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-archives/). ``` await client.archives.getArchivesV2025R0({ limit: 100, } satisfies GetArchivesV2025R0QueryParams); ``` ### Arguments queryParams `GetArchivesV2025R0QueryParams` - Query parameters of getArchivesV2025R0 method headersInput `GetArchivesV2025R0HeadersInput` - Headers of getArchivesV2025R0 method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `ArchivesV2025R0`. Returns a list of archives in the enterprise. ## Create archive Creates an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `createArchiveV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-archives/). ``` await client.archives.createArchiveV2025R0({ name: archiveName, description: archiveDescription, } satisfies CreateArchiveV2025R0RequestBody); ``` ### Arguments requestBody `CreateArchiveV2025R0RequestBody` - Request body of createArchiveV2025R0 method optionalsInput `CreateArchiveV2025R0OptionalsInput` ### Returns This function returns a value of type `ArchiveV2025R0`. Returns a new archive object. ## Delete archive Permanently deletes an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `deleteArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-archives-id/). ``` await client.archives.deleteArchiveByIdV2025R0(archive.id); ``` ### Arguments archiveId `string` - The ID of the archive. Example: "982312" optionalsInput `DeleteArchiveByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `undefined`. Returns an empty response when the archive has been deleted. ## Update archive Updates an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `updateArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/put-archives-id/). ``` await client.archives.updateArchiveByIdV2025R0(archive.id, { requestBody: { name: newArchiveName, description: newArchiveDescription, } satisfies UpdateArchiveByIdV2025R0RequestBody, } satisfies UpdateArchiveByIdV2025R0OptionalsInput); ``` ### Arguments archiveId `string` - The ID of the archive. Example: "982312" optionalsInput `UpdateArchiveByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `ArchiveV2025R0`. Returns the updated archive object. --- ### ArchivesManager **Type:** page | **Section:** Additional Resources ArchivesManager List archives Create archive Delete archive Update archive List archives Retrieves archives for an enterprise. To learn more… # ArchivesManager - [List archives](#list-archives) - [Create archive](#create-archive) - [Delete archive](#delete-archive) - [Update archive](#update-archive) ## List archives Retrieves archives for an enterprise. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `getArchivesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-archives/). ``` client.getArchives().getArchivesV2025R0(new GetArchivesV2025R0QueryParams.Builder().limit(100L).build()) ``` ### Arguments queryParams `GetArchivesV2025R0QueryParams` - Query parameters of getArchivesV2025R0 method headers `GetArchivesV2025R0Headers` - Headers of getArchivesV2025R0 method ### Returns This function returns a value of type `ArchivesV2025R0`. Returns a list of archives in the enterprise. ## Create archive Creates an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `createArchiveV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-archives/). ``` client.getArchives().createArchiveV2025R0(new CreateArchiveV2025R0RequestBody.Builder(archiveName).description(archiveDescription).build()) ``` ### Arguments requestBody `CreateArchiveV2025R0RequestBody` - Request body of createArchiveV2025R0 method headers `CreateArchiveV2025R0Headers` - Headers of createArchiveV2025R0 method ### Returns This function returns a value of type `ArchiveV2025R0`. Returns a new archive object. ## Delete archive Permanently deletes an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `deleteArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-archives-id/). ``` client.getArchives().deleteArchiveByIdV2025R0(archive.getId()) ``` ### Arguments archiveId `String` - The ID of the archive. Example: "982312" headers `DeleteArchiveByIdV2025R0Headers` - Headers of deleteArchiveByIdV2025R0 method ### Returns This function returns a value of type `void`. Returns an empty response when the archive has been deleted. ## Update archive Updates an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `updateArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/put-archives-id/). ``` client.getArchives().updateArchiveByIdV2025R0(archive.getId(), new UpdateArchiveByIdV2025R0RequestBody.Builder().name(newArchiveName).description(newArchiveDescription).build()) ``` ### Arguments archiveId `String` - The ID of the archive. Example: "982312" requestBody `UpdateArchiveByIdV2025R0RequestBody` - Request body of updateArchiveByIdV2025R0 method headers `UpdateArchiveByIdV2025R0Headers` - Headers of updateArchiveByIdV2025R0 method ### Returns This function returns a value of type `ArchiveV2025R0`. Returns the updated archive object. --- ### ArchivesManager **Type:** page | **Section:** Additional Resources ArchivesManager List archives Create archive Delete archive Update archive List archives Retrieves archives for an enterprise. To learn more… # ArchivesManager - [List archives](#list-archives) - [Create archive](#create-archive) - [Delete archive](#delete-archive) - [Update archive](#update-archive) ## List archives Retrieves archives for an enterprise. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `get_archives_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-archives/). ``` client.archives.get_archives_v2025_r0(limit=100) ``` ### Arguments limit `Optional[int]` - The maximum number of items to return per page. marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ArchivesV2025R0`. Returns a list of archives in the enterprise. ## Create archive Creates an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `create_archive_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-archives/). ``` client.archives.create_archive_v2025_r0(archive_name, description=archive_description) ``` ### Arguments name `str` - The name of the archive. description `Optional[str]` - The description of the archive. storage_policy_id `Optional[str]` - The ID of the storage policy that the archive is assigned to. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ArchiveV2025R0`. Returns a new archive object. ## Delete archive Permanently deletes an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `delete_archive_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-archives-id/). ``` client.archives.delete_archive_by_id_v2025_r0(archive.id) ``` ### Arguments archive_id `str` - The ID of the archive. Example: "982312" box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Returns an empty response when the archive has been deleted. ## Update archive Updates an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `update_archive_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/put-archives-id/). ``` client.archives.update_archive_by_id_v2025_r0( archive.id, name=new_archive_name, description=new_archive_description ) ``` ### Arguments archive_id `str` - The ID of the archive. Example: "982312" name `Optional[str]` - The name of the archive. description `Optional[str]` - The description of the archive. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ArchiveV2025R0`. Returns the updated archive object. --- ### ArchivesManager **Type:** page | **Section:** Additional Resources ArchivesManager List archives Create archive Delete archive Update archive List archives Retrieves archives for an enterprise. To learn more… # ArchivesManager - [List archives](#list-archives) - [Create archive](#create-archive) - [Delete archive](#delete-archive) - [Update archive](#update-archive) ## List archives Retrieves archives for an enterprise. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `getArchivesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-archives/). ``` try await client.archives.getArchivesV2025R0(queryParams: GetArchivesV2025R0QueryParams(limit: Int64(100))) ``` ### Arguments queryParams `GetArchivesV2025R0QueryParams` - Query parameters of getArchivesV2025R0 method headers `GetArchivesV2025R0Headers` - Headers of getArchivesV2025R0 method ### Returns This function returns a value of type `ArchivesV2025R0`. Returns a list of archives in the enterprise. ## Create archive Creates an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `createArchiveV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-archives/). ``` try await client.archives.createArchiveV2025R0(requestBody: CreateArchiveV2025R0RequestBody(name: archiveName, description: archiveDescription)) ``` ### Arguments requestBody `CreateArchiveV2025R0RequestBody` - Request body of createArchiveV2025R0 method headers `CreateArchiveV2025R0Headers` - Headers of createArchiveV2025R0 method ### Returns This function returns a value of type `ArchiveV2025R0`. Returns a new archive object. ## Delete archive Permanently deletes an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `deleteArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-archives-id/). ``` try await client.archives.deleteArchiveByIdV2025R0(archiveId: archive.id) ``` ### Arguments archiveId `String` - The ID of the archive. Example: "982312" headers `DeleteArchiveByIdV2025R0Headers` - Headers of deleteArchiveByIdV2025R0 method ### Returns This function returns a value of type ``. Returns an empty response when the archive has been deleted. ## Update archive Updates an archive. To learn more about the archive APIs, see the [Archive API Guide](https://developer.box.com/guides/archives). This operation is performed by calling function `updateArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/put-archives-id/). ``` try await client.archives.updateArchiveByIdV2025R0(archiveId: archive.id, requestBody: UpdateArchiveByIdV2025R0RequestBody(name: newArchiveName, description: newArchiveDescription)) ``` ### Arguments archiveId `String` - The ID of the archive. Example: "982312" requestBody `UpdateArchiveByIdV2025R0RequestBody` - Request body of updateArchiveByIdV2025R0 method headers `UpdateArchiveByIdV2025R0Headers` - Headers of updateArchiveByIdV2025R0 method ### Returns This function returns a value of type `ArchiveV2025R0`. Returns the updated archive object. --- ### ArchivesManager **Type:** page | **Section:** Additional Resources ArchivesManager List archives Create archive Delete archive Update archive List archives Retrieves archives for an enterprise. To learn more… # ArchivesManager - [List archives](#list-archives) - [Create archive](#create-archive) - [Delete archive](#delete-archive) - [Update archive](#update-archive) ## List archives Retrieves archives for an enterprise. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `getArchivesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-archives/). ``` await client.archives.getArchivesV2025R0({ limit: 100, } satisfies GetArchivesV2025R0QueryParams); ``` ### Arguments queryParams `GetArchivesV2025R0QueryParams` - Query parameters of getArchivesV2025R0 method headersInput `GetArchivesV2025R0HeadersInput` - Headers of getArchivesV2025R0 method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `ArchivesV2025R0`. Returns a list of archives in the enterprise. ## Create archive Creates an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `createArchiveV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-archives/). ``` await client.archives.createArchiveV2025R0({ name: archiveName, description: archiveDescription, } satisfies CreateArchiveV2025R0RequestBody); ``` ### Arguments requestBody `CreateArchiveV2025R0RequestBody` - Request body of createArchiveV2025R0 method optionalsInput `CreateArchiveV2025R0OptionalsInput` ### Returns This function returns a value of type `ArchiveV2025R0`. Returns a new archive object. ## Delete archive Permanently deletes an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `deleteArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-archives-id/). ``` await client.archives.deleteArchiveByIdV2025R0(archive.id); ``` ### Arguments archiveId `string` - The ID of the archive. Example: "982312" optionalsInput `DeleteArchiveByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `undefined`. Returns an empty response when the archive has been deleted. ## Update archive Updates an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `updateArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/put-archives-id/). ``` await client.archives.updateArchiveByIdV2025R0(archive.id, { requestBody: { name: newArchiveName, description: newArchiveDescription, } satisfies UpdateArchiveByIdV2025R0RequestBody, } satisfies UpdateArchiveByIdV2025R0OptionalsInput); ``` ### Arguments archiveId `string` - The ID of the archive. Example: "982312" optionalsInput `UpdateArchiveByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `ArchiveV2025R0`. Returns the updated archive object. --- ### ArchivesManager **Type:** page | **Section:** Additional Resources ArchivesManager List archives Create archive Delete archive Update archive List archives Retrieves archives for an enterprise. To learn more… # ArchivesManager - [List archives](#list-archives) - [Create archive](#create-archive) - [Delete archive](#delete-archive) - [Update archive](#update-archive) ## List archives Retrieves archives for an enterprise. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `get_archives_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-archives/). ``` client.archives.get_archives_v2025_r0(limit=100) ``` ### Arguments limit `Optional[int]` - The maximum number of items to return per page. marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ArchivesV2025R0`. Returns a list of archives in the enterprise. ## Create archive Creates an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `create_archive_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-archives/). ``` client.archives.create_archive_v2025_r0(archive_name, description=archive_description) ``` ### Arguments name `str` - The name of the archive. description `Optional[str]` - The description of the archive. storage_policy_id `Optional[str]` - The ID of the storage policy that the archive is assigned to. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ArchiveV2025R0`. Returns a new archive object. ## Delete archive Permanently deletes an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `delete_archive_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-archives-id/). ``` client.archives.delete_archive_by_id_v2025_r0(archive.id) ``` ### Arguments archive_id `str` - The ID of the archive. Example: "982312" box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Returns an empty response when the archive has been deleted. ## Update archive Updates an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `update_archive_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/put-archives-id/). ``` client.archives.update_archive_by_id_v2025_r0( archive.id, name=new_archive_name, description=new_archive_description ) ``` ### Arguments archive_id `str` - The ID of the archive. Example: "982312" name `Optional[str]` - The name of the archive. description `Optional[str]` - The description of the archive. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ArchiveV2025R0`. Returns the updated archive object. --- ### ArchivesManager **Type:** page | **Section:** Additional Resources ArchivesManager List archives Create archive Delete archive Update archive List archives Retrieves archives for an enterprise. To learn more… # ArchivesManager - [List archives](#list-archives) - [Create archive](#create-archive) - [Delete archive](#delete-archive) - [Update archive](#update-archive) ## List archives Retrieves archives for an enterprise. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `getArchivesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-archives/). ``` try await client.archives.getArchivesV2025R0(queryParams: GetArchivesV2025R0QueryParams(limit: Int64(100))) ``` ### Arguments queryParams `GetArchivesV2025R0QueryParams` - Query parameters of getArchivesV2025R0 method headers `GetArchivesV2025R0Headers` - Headers of getArchivesV2025R0 method ### Returns This function returns a value of type `ArchivesV2025R0`. Returns a list of archives in the enterprise. ## Create archive Creates an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `createArchiveV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-archives/). ``` try await client.archives.createArchiveV2025R0(requestBody: CreateArchiveV2025R0RequestBody(name: archiveName, description: archiveDescription)) ``` ### Arguments requestBody `CreateArchiveV2025R0RequestBody` - Request body of createArchiveV2025R0 method headers `CreateArchiveV2025R0Headers` - Headers of createArchiveV2025R0 method ### Returns This function returns a value of type `ArchiveV2025R0`. Returns a new archive object. ## Delete archive Permanently deletes an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `deleteArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-archives-id/). ``` try await client.archives.deleteArchiveByIdV2025R0(archiveId: archive.id) ``` ### Arguments archiveId `String` - The ID of the archive. Example: "982312" headers `DeleteArchiveByIdV2025R0Headers` - Headers of deleteArchiveByIdV2025R0 method ### Returns This function returns a value of type ``. Returns an empty response when the archive has been deleted. ## Update archive Updates an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `updateArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/put-archives-id/). ``` try await client.archives.updateArchiveByIdV2025R0(archiveId: archive.id, requestBody: UpdateArchiveByIdV2025R0RequestBody(name: newArchiveName, description: newArchiveDescription)) ``` ### Arguments archiveId `String` - The ID of the archive. Example: "982312" requestBody `UpdateArchiveByIdV2025R0RequestBody` - Request body of updateArchiveByIdV2025R0 method headers `UpdateArchiveByIdV2025R0Headers` - Headers of updateArchiveByIdV2025R0 method ### Returns This function returns a value of type `ArchiveV2025R0`. Returns the updated archive object. --- ### ArchivesManager **Type:** page | **Section:** Additional Resources ArchivesManager List archives Create archive Delete archive Update archive List archives Retrieves archives for an enterprise. To learn more… # ArchivesManager - [List archives](#list-archives) - [Create archive](#create-archive) - [Delete archive](#delete-archive) - [Update archive](#update-archive) ## List archives Retrieves archives for an enterprise. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `getArchivesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-archives/). ``` client.getArchives().getArchivesV2025R0(new GetArchivesV2025R0QueryParams.Builder().limit(100L).build()) ``` ### Arguments queryParams `GetArchivesV2025R0QueryParams` - Query parameters of getArchivesV2025R0 method headers `GetArchivesV2025R0Headers` - Headers of getArchivesV2025R0 method ### Returns This function returns a value of type `ArchivesV2025R0`. Returns a list of archives in the enterprise. ## Create archive Creates an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `createArchiveV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-archives/). ``` client.getArchives().createArchiveV2025R0(new CreateArchiveV2025R0RequestBody.Builder(archiveName).description(archiveDescription).build()) ``` ### Arguments requestBody `CreateArchiveV2025R0RequestBody` - Request body of createArchiveV2025R0 method headers `CreateArchiveV2025R0Headers` - Headers of createArchiveV2025R0 method ### Returns This function returns a value of type `ArchiveV2025R0`. Returns a new archive object. ## Delete archive Permanently deletes an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `deleteArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-archives-id/). ``` client.getArchives().deleteArchiveByIdV2025R0(archive.getId()) ``` ### Arguments archiveId `String` - The ID of the archive. Example: "982312" headers `DeleteArchiveByIdV2025R0Headers` - Headers of deleteArchiveByIdV2025R0 method ### Returns This function returns a value of type `void`. Returns an empty response when the archive has been deleted. ## Update archive Updates an archive. To learn more about the archive APIs, see the [Archive API Guide](g://archives). This operation is performed by calling function `updateArchiveByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/put-archives-id/). ``` client.getArchives().updateArchiveByIdV2025R0(archive.getId(), new UpdateArchiveByIdV2025R0RequestBody.Builder().name(newArchiveName).description(newArchiveDescription).build()) ``` ### Arguments archiveId `String` - The ID of the archive. Example: "982312" requestBody `UpdateArchiveByIdV2025R0RequestBody` - Request body of updateArchiveByIdV2025R0 method headers `UpdateArchiveByIdV2025R0Headers` - Headers of updateArchiveByIdV2025R0 method ### Returns This function returns a value of type `ArchiveV2025R0`. Returns the updated archive object. --- ### Authentication **Type:** page | **Section:** Additional Resources Authentication Authentication Authentication methods Developer Token JWT Auth Authenticate Enterprise Authenticate user Client Credentials… # Authentication - [Authentication](#authentication) [Authentication methods](#authentication-methods) - [Developer Token](#developer-token) [JWT Auth](#jwt-auth) - [Authenticate Enterprise](#authenticate-enterprise) - [Authenticate user](#authenticate-user) [Client Credentials Grant](#client-credentials-grant) - [Obtaining Service Account token](#obtaining-service-account-token) - [Obtaining User token](#obtaining-user-token) - [Switching between Service Account and User](#switching-between-service-account-and-user) [OAuth 2.0 Auth](#oauth-20-auth) - [Authentication with OAuth2](#authentication-with-oauth2) - [Injecting existing token into BoxOAuth](#injecting-existing-token-into-boxoauth) [Retrieve current access token](#retrieve-current-access-token) [Refresh access token](#refresh-access-token) [Revoke token](#revoke-token) [Downscope token](#downscope-token) [Token storage](#token-storage) - [In-memory token storage](#in-memory-token-storage) - [Custom storage](#custom-storage) # Authentication methods ## Developer Token The fastest way to get started using the API is with developer token. A developer token is simply a short-lived access token that cannot be refreshed and can only be used with your own account. Therefore, they're only useful for testing an app and aren't suitable for production. You can obtain a developer token from your application's [developer console](https://app.box.com/developers/console) page. To create a `BoxClient` with a developer token, construct an `BoxDeveloperTokenAuth` object with the `token` set to the developer token and construct the client with that. ``` import { BoxClient } from 'box-node-sdk'; import { BoxDeveloperTokenAuth } from 'box-node-sdk/box'; const auth = new BoxDeveloperTokenAuth({ token: 'DEVELOPER_TOKEN_GOES_HERE' }); const client = new BoxClient({ auth }); const me = await client.users.getUserMe(); console.log(`My user ID is ${me.id}`); ``` ## JWT Auth Before using JWT Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with JWT](https://developer.box.com/guides/authentication/jwt/jwt-setup/) ### Authenticate Enterprise JWT auth allows your application to authenticate itself with the Box API for a given enterprise. By default, your application has a [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account/) that represents it and can perform API calls. The Service Account is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. If you generated your public and private keys automatically through the [Box Developer Console](https://app.box.com/developers/console), you can use the JSON file created there to configure your SDK instance and create a client to make calls as the Service Account. Call one of static `BoxJwtAuth` method: `JwtConfig.fromConfigFile(configFilePath)` and pass JSON file local path or `JwtConfig.fromConfigJsonString(configJsonString)` and pass JSON config file content as string. ``` import { BoxClient } from 'box-node-sdk'; import { BoxJwtAuth, JwtConfig } from 'box-node-sdk/box'; const jwtConfig = JwtConfig.fromConfigFile('/path/to/settings.json'); const jwtAuth = new BoxJwtAuth({ config: jwtConfig }); const client = new BoxClient({ auth: jwtAuth }); const me = await client.users.getUserMe(); console.log(`My user ID is ${me.id}`); ``` Otherwise, you'll need to provide the necessary configuration fields directly to the `JwtConfig` constructor: ``` import { BoxClient } from 'box-node-sdk'; import { BoxJwtAuth, JwtConfig } from 'box-node-sdk/box'; const jwtConfig = new JwtConfig({ clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', jwtKeyId: 'YOUR_JWT_KEY_ID', privateKey: 'YOUR_PRIVATE_KEY', privateKeyPassphrase: 'PASSPHRASE', enterpriseId: 'YOUR_ENTERPRISE_ID', }); const jwtAuth = new BoxJwtAuth({ config: jwtConfig }); const serviceAccountClient = new BoxClient({ auth: jwtAuth }); ``` ### Authenticate user App auth applications also often have associated [App Users](https://developer.box.com/guides/getting-started/user-types/app-users/), which are created and managed directly by the application — they do not have normal login credentials, and can only be accessed through the Box API by the application that created them. You may authenticate as the Service Account to provision and manage users, or as an individual app user to make calls as that user. See the [API documentation](https://developer.box.com/) for detailed instructions on how to use app auth. Clients for making calls as an App User can be created with the same JSON JWT config file generated through the [Box Developer Console](https://app.box.com/developers/console). Calling `jwtAuth.withUserSubject('USER_ID')` method will return a new auth object, which is authenticated as the user with provided id, leaving the original object unchanged. ``` import { BoxClient } from 'box-node-sdk'; import { BoxJwtAuth, JwtConfig } from 'box-node-sdk/box'; const jwtConfig = JwtConfig.fromConfigFile('/path/to/settings.json'); const jwtAuth = new BoxJwtAuth({ config: jwtConfig }); const userAuth = jwtAuth.withUserSubject('USER_ID'); const userClient = new BoxClient({ auth: userAuth }); ``` Alternatively, clients for making calls as an App User can be created with the same `JwtConfig` constructor as in the above examples, similarly to creating a Service Account client. Simply pass the `userId` instead of `enterpriseId` when constructing the auth config instance: ``` import { BoxClient } from 'box-node-sdk'; import { BoxJwtAuth, JwtConfig } from 'box-node-sdk/box'; const jwtConfig = new JwtConfig({ clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', jwtKeyId: 'YOUR_JWT_KEY_ID', privateKey: 'YOUR_PRIVATE_KEY', privateKeyPassphrase: 'PASSPHRASE', userId: 'USER_ID', }); const jwtAuth = new BoxJwtAuth({ config: jwtConfig }); const userClient = new BoxClient({ auth: jwtAuth }); ``` ## Client Credentials Grant Before using Client Credentials Grant Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with Client Credentials Grant](https://developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) Client Credentials Grant Auth method allows you to obtain an access token by having client credentials and secret with enterprise or user ID, which allows you to work using service or user account. You can use `CCGAuth` to initialize a client object the same way as for other authentication types: ``` import { BoxClient } from 'box-node-sdk'; import { BoxCcgAuth, CcgConfig } from 'box-node-sdk/box'; const ccgConfig = new CcgConfig({ userId: 'YOUR_USER_ID', clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', }); const ccgAuth = new BoxCcgAuth({ config: ccgConfig }); const client = new BoxClient({ auth: ccgAuth }); const me = await client.users.getUserMe(); console.log(`My user ID is ${me.id}`); ``` Obtained token is valid for specified amount of time, it will be refreshed automatically by default. ### Obtaining Service Account token The [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account//) is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. To obtain service account you will have to provide enterprise ID with client id and secret: ``` import { BoxClient } from 'box-node-sdk'; import { BoxCcgAuth, CcgConfig } from 'box-node-sdk/box'; const ccgConfig = new CcgConfig({ enterpriseId: 'YOUR_ENTERPRISE_ID', clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', }); const ccgAuth = new BoxCcgAuth({ config: ccgConfig }); const client = new BoxClient({ auth: ccgAuth }); ``` ### Obtaining User token In order to enable obtaining user token you have to go to your application configuration that can be found [here](https://app.box.com/developers/console). In `Configuration` tab, in section `Advanced Features` select `Generate user access tokens`. Do not forget to re-authorize application if it was already authorized. To obtain user account you will have to provide user ID with client id and secret. ``` import { BoxClient } from 'box-node-sdk'; import { BoxCcgAuth, CcgConfig } from 'box-node-sdk/box'; const ccgConfig = new CcgConfig({ userId: 'YOUR_USER_ID', clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', }); const ccgAuth = new BoxCcgAuth({ config: ccgConfig }); const client = new BoxClient({ auth: ccgAuth }); ``` ### Switching between Service Account and User You can easily switch to be authenticated as a Service Account or as a User. To create a new auth object authenticated as Service Account you can call: ``` const enterpriseAuth = ccgAuth.withEnterpriseSubject('YOUR_ENTERPRISE_ID'); const enterpriseClient = new BoxClient({ auth: enterpriseAuth }); ``` To authenticate with user subject call: ``` const userAuth = ccgAuth.withUserSubject('YOUR_USER_ID'); const userClient = new BoxClient({ auth: userAuth }); ``` The new token will be automatically fetched with a next API call. ## OAuth 2.0 Auth ### Authentication with OAuth2 If your application needs to integrate with existing Box users who will provide their login credentials to grant your application access to their account, you will need to go through the standard OAuth2 login flow. A detailed guide for this process is available in the [Authentication with OAuth API documentation](https://developer.box.com/en/guides/authentication/oauth2/). Using an auth code is the most common way of authenticating with the Box API for existing Box users, to integrate with their accounts. Your application must provide a way for the user to login to Box (usually with a browser or web view) in order to obtain an auth code. ``` import { BoxOAuth, OAuthConfig } from 'box-node-sdk/box'; const config = new OAuthConfig({ clientId: 'OAUTH_CLIENT_ID', clientSecret: 'OAUTH_CLIENT_SECRET', }); const oauth = new BoxOAuth({ config: config }); // the URL to redirect the user to var authorize_url = oauth.getAuthorizeUrl(); ``` After a user logs in and grants your application access to their Box account, they will be redirected to your application's `redirect_uri` which will contain an auth code. This auth code can then be used along with your client ID and client secret to establish an API connection. You need to provide the auth code to the SDK to obtain an access token. Calling `oauth.getTokensAuthorizationCodeGrant('code')` will exchange the auth code for an access token and save it in the `BoxOAuth` token storage. The SDK will automatically refresh the token when needed. All you need to do is create a client object with the `BoxOAuth` object and start making API calls. ``` await auth.retrieveToken(); ``` # Refresh access token Access tokens are short-lived and need to be refreshed periodically. The SDK will automatically refresh the token when needed. If you want to manually refresh the token, you can use the following code: ``` await auth.refreshToken(); ``` # Revoke token Access tokens for a client can be revoked when needed. This call invalidates old token. For BoxCcgAuth and BoxJwtAuth you can still reuse the `auth` object to retrieve a new token. If you make any new call after revoking the token, a new token will be automatically retrieved. For BoxOAuth it would be necessary to manually go through the authentication process again. For BoxDeveloperTokenAuth, it is necessary to provide a DeveloperTokenConfig during initialization, containing the client ID and client secret. To revoke current client's tokens in the storage use the following code: ``` await auth.revokeTokens(); // client's tokens have been revoked ``` # Downscope token You can exchange a client's access token for one with a lower scope, in order to restrict the permissions for a child client or to pass to a less secure location (e.g. a browser-based app). A downscoped token does not include a refresh token. In such a scenario, to obtain a new downscoped token, refresh the original token and utilize the newly acquired token to obtain the downscoped token. More information about downscoping tokens can be found [here](https://developer.box.com/guides/authentication/tokens/downscope/). If you want to learn more about available scopes please go [here](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#scopes-for-downscoping). For example to get a new token with only `item_preview` scope, restricted to a single file, suitable for the [Content Preview UI Element](https://developer.box.com/en/guides/embed/ui-elements/preview/) you can use the following code. You can also initialize `BoxDeveloperTokenAuth` with the retrieved access token and use it to create a new Client. ``` let resource = 'https://api.box.com/2.0/files/123456789'; let token = await oauth.downscopeToken(['item_preview'], resource); const auth = new BoxDeveloperTokenAuth({ token: token.accessToken }); const client = new BoxClient({ auth }); ``` # Token storage ## In-memory token storage By default, the SDK stores the access token in volatile memory. When rerunning your application, the access token won't be reused from the previous run; a new token has to be obtained again. To use in-memory token storage, you don't need to do anything more than create an Auth class using AuthConfig, for example, for OAuth: ``` const config = new OAuthConfig({ clientId: 'OAUTH_CLIENT_ID', clientSecret: 'OAUTH_CLIENT_SECRET', }); const oauth = new BoxOAuth({ config: config }); ``` ## Custom storage You can also provide a custom token storage class. All you need to do is create a class that implements `TokenStorage` interface and pass an instance of your class to the AuthConfig constructor. ``` class MyCustomTokenStorage implements TokenStorage { async store(token: AccessToken): Promise<undefined> { // store token in your custom storage } async get(): Promise<undefined | AccessToken> { // retrieve token from your custom storage } async clear(): Promise<undefined> { // clear token from your custom storage } } const config = new OAuthConfig({ clientId: 'OAUTH_CLIENT_ID', clientSecret: 'OAUTH_CLIENT_SECRET', tokenStorage: new MyCustomTokenStorage(), }); const oauth = new BoxOAuth({ config: config }); ``` --- ### Authentication **Type:** page | **Section:** Additional Resources Authentication Authentication Authentication methods Developer Token JWT Auth Authenticate Enterprise Authenticate user Client Credentials… # Authentication - [Authentication](#authentication) [Authentication methods](#authentication-methods) - [Developer Token](#developer-token) [JWT Auth](#jwt-auth) - [Authenticate Enterprise](#authenticate-enterprise) - [Authenticate user](#authenticate-user) [Client Credentials Grant](#client-credentials-grant) - [Obtaining Service Account token](#obtaining-service-account-token) - [Obtaining User token](#obtaining-user-token) - [Switching between Service Account and User](#switching-between-service-account-and-user) [OAuth 2.0 Auth](#oauth-20-auth) - [Authentication with OAuth2](#authentication-with-oauth2) - [Injecting existing token into BoxOAuth](#injecting-existing-token-into-boxoauth) [Retrieve current access token](#retrieve-current-access-token) [Refresh access token](#refresh-access-token) [Revoke token](#revoke-token) [Downscope token](#downscope-token) [Token storage](#token-storage) - [In-memory token storage](#in-memory-token-storage) - [Custom storage](#custom-storage) # Authentication methods ## Developer Token The fastest way to get started using the API is with developer token. A developer token is simply a short-lived access token that cannot be refreshed and can only be used with your own account. Therefore, they're only useful for testing an app and aren't suitable for production. You can obtain a developer token from your application's [developer console](https://app.box.com/developers/console) page. To create a `BoxClient` with a developer token, construct an `BoxDeveloperTokenAuth` object with the `token` set to the developer token and construct the client with that. ``` BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("YOUR-DEVELOPER-TOKEN"); BoxClient client = new BoxClient(auth); ``` ## JWT Auth Before using JWT Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with JWT](https://developer.box.com/guides/authentication/jwt/jwt-setup/) ### Authenticate Enterprise JWT auth allows your application to authenticate itself with the Box API for a given enterprise. By default, your application has a [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account/) that represents it and can perform API calls. The Service Account is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. If you generated your public and private keys automatically through the [Box Developer Console](https://app.box.com/developers/console), you can use the JSON file created there to configure your SDK instance and create a client to make calls as the Service Account. Call one of static `BoxJwtAuth` method: `JWTConfig.fromConfigFile("PATH_TO_CONFIG_FILE")` and pass JSON file local path or `JWTConfig.fromConfigJsonString(CONFIG_JSON_STRING)` and pass JSON config file content as string. ``` JWTConfig config = JWTConfig.fromConfigFile("src/example/config/config.json"); BoxJWTAuth auth = new BoxJWTAuth(config); BoxClient client = new BoxClient(auth); ``` Otherwise, you'll need to provide the necessary configuration fields directly to the `JWTConfig` constructor: ``` JWTConfig config = new JWTConfig.Builder("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", "JWT_KEY_ID", "PRIVATE_KEY", "PRIVATE_KEY_PASSWORD") .enterpriseId("123456") .build(); BoxJWTAuth auth = new BoxJWTAuth(config); BoxClient client = new BoxClient(auth); ``` ### Authenticate user App auth applications also often have associated [App Users](https://developer.box.com/guides/getting-started/user-types/app-users/), which are created and managed directly by the application — they do not have normal login credentials, and can only be accessed through the Box API by the application that created them. You may authenticate as the Service Account to provision and manage users, or as an individual app user to make calls as that user. See the [API documentation](https://developer.box.com/) for detailed instructions on how to use app auth. Clients for making calls as an App User can be created with the same JSON JWT config file generated through the [Box Developer Console](https://app.box.com/developers/console). Calling `jwtAuth.withUserSubject('USER_ID')` method will return a new auth object, which is authenticated as the user with provided id, leaving the original object unchanged. ``` JWTConfig config = JWTConfig.fromConfigFile("src/example/config/config.json"); BoxJWTAuth auth = new BoxJWTAuth(config); BoxJWTAuth userAuth = auth.withUserSubject("USER_ID"); BoxClient userClient = new BoxClient(userAuth); ``` Alternatively, clients for making calls as an App User can be created with the same `JWTConfig` constructor as in the above examples, similarly to creating a Service Account client. Simply pass the `userId` instead of `enterpriseId` when constructing the auth config instance: ``` JWTConfig config = new JWTConfig.Builder("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", "JWT_KEY_ID", "PRIVATE_KEY", "PRIVATE_KEY_PASSWORD") .userId("123456") .build(); BoxJWTAuth auth = new BoxJWTAuth(config); BoxClient client = new BoxClient(auth); ``` ## Client Credentials Grant Before using Client Credentials Grant Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with Client Credentials Grant](https://developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) Client Credentials Grant Auth method allows you to obtain an access token by having client credentials and secret with enterprise or user ID, which allows you to work using service or user account. You can use `CCGAuth` to initialize a client object the same way as for other authentication types: ``` CCGConfig config = new CCGConfig.Builder("YOUR_CLIENT", "YOUR_CLIENT_SECRET") .userId("USER_ID") .build(); BoxCCGAuth auth = new BoxCCGAuth(config); BoxClient client = new BoxClient(auth); UserFull user = client.users.getUserMe(); System.out.println(user.getName()); ``` Obtained token is valid for specified amount of time, it will be refreshed automatically by default. ### Obtaining Service Account token The [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account//) is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. To obtain service account you will have to provide enterprise ID with client id and secret: ``` CCGConfig config = new CCGConfig.Builder("YOUR_CLIENT", "YOUR_CLIENT_SECRET") .enterpriseId("ENTERPRISE_ID") .build(); BoxCCGAuth auth = new BoxCCGAuth(config); BoxClient client = new BoxClient(auth); ``` ### Obtaining User token In order to enable obtaining user token you have to go to your application configuration that can be found [here](https://app.box.com/developers/console). In `Configuration` tab, in section `Advanced Features` select `Generate user access tokens`. Do not forget to re-authorize application if it was already authorized. To obtain user account you will have to provide user ID with client id and secret. ``` CCGConfig config = new CCGConfig.Builder("YOUR_CLIENT", "YOUR_CLIENT_SECRET") .userId("USER_ID") .build(); BoxCCGAuth auth = new BoxCCGAuth(config); BoxClient client = new BoxClient(auth); ``` ### Switching between Service Account and User You can easily switch to be authenticated as a Service Account or as a User. To create a new auth object authenticated as Service Account you can call: ``` BoxCCGAuth enterpriseAuth = auth.withEnterpriseSubject("ENTERPRISE_ID"); BoxClient enterpriseClient = new BoxClient(enterpriseAuth); ``` To authenticate with user subject call: ``` BoxCCGAuth userAuth = auth.withUserSubject("USER_ID"); BoxClient userClient = new BoxClient(userAuth); ``` The new token will be automatically fetched with a next API call. ## OAuth 2.0 Auth ### Authentication with OAuth2 If your application needs to integrate with existing Box users who will provide their login credentials to grant your application access to their account, you will need to go through the standard OAuth2 login flow. A detailed guide for this process is available in the [Authentication with OAuth API documentation](https://developer.box.com/en/guides/authentication/oauth2/). Using an auth code is the most common way of authenticating with the Box API for existing Box users, to integrate with their accounts. Your application must provide a way for the user to login to Box (usually with a browser or web view) in order to obtain an auth code. ``` BoxOAuth oauth = new OAuthConfig("CLIENT_ID", "CLIENT_SECRET"); String authorizationUrl = auoauthth.getAuthorizeUrl(); ``` After a user logs in and grants your application access to their Box account, they will be redirected to your application's `redirect_uri` which will contain an auth code. This auth code can then be used along with your client ID and client secret to establish an API connection. You need to provide the auth code to the SDK to obtain an access token. Calling `oauth.getTokensAuthorizationCodeGrant('code')` will exchange the auth code for an access token and save it in the `BoxOAuth` token storage. The SDK will automatically refresh the token when needed. All you need to do is create a client object with the `BoxOAuth` object and start making API calls. ``` auth.retrieveToken(); ``` # Refresh access token Access tokens are short-lived and need to be refreshed periodically. The SDK will automatically refresh the token when needed. If you want to manually refresh the token, you can use the following code: ``` auth.refreshToken(); ``` # Revoke token Access tokens for a client can be revoked when needed. This call invalidates old token. For BoxCcgAuth and BoxJwtAuth you can still reuse the `auth` object to retrieve a new token. If you make any new call after revoking the token, a new token will be automatically retrieved. For BoxOAuth it would be necessary to manually go through the authentication process again. For BoxDeveloperTokenAuth, it is necessary to provide a DeveloperTokenConfig during initialization, containing the client ID and client secret. To revoke current client's tokens in the storage use the following code: ``` auth.revokeToken(); // client's tokens have been revoked ``` # Downscope token You can exchange a client's access token for one with a lower scope, in order to restrict the permissions for a child client or to pass to a less secure location (e.g. a browser-based app). A downscoped token does not include a refresh token. In such a scenario, to obtain a new downscoped token, refresh the original token and utilize the newly acquired token to obtain the downscoped token. More information about downscoping tokens can be found [here](https://developer.box.com/guides/authentication/tokens/downscope/). If you want to learn more about available scopes please go [here](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#scopes-for-downscoping). For example to get a new token with only `item_preview` scope, restricted to a single file, suitable for the [Content Preview UI Element](https://developer.box.com/en/guides/embed/ui-elements/preview/) you can use the following code. You can also initialize `BoxDeveloperTokenAuth` with the retrieved access token and use it to create a new Client. ``` String resource = "https://api.box.com/2.0/files/123456789"; List<String> scopes = List.of("item_preview"); AccessToken downscopedToken = auth.downscopeToken(scopes, resource, null, null); BoxDeveloperTokenAuth downscopedAuth = new BoxDeveloperTokenAuth(downscopedToken.getAccessToken()); BoxClient downscopedClient = new BoxClient(downscopedAuth); ``` # Token storage ## In-memory token storage By default, the SDK stores the access token in volatile memory. When rerunning your application, the access token won't be reused from the previous run; a new token has to be obtained again. To use in-memory token storage, you don't need to do anything more than create an Auth class using AuthConfig, for example, for OAuth: ``` OAuthConfig config = new OAuthConfig("CLIENT_ID", "CLIENT_SECRET"); BoxOAuth auth = new BoxOAuth(config); ``` ## Custom storage You can also provide a custom token storage class. All you need to do is create a class that implements `TokenStorage` interface and pass an instance of your class to the AuthConfig constructor. ``` TokenStorage customTokenStorage = new TokenStorage() { @Override public void store(AccessToken accessToken) { // Store the access token } @Override public AccessToken get() { // Retrieve the access token return null; } @Override public void clear() { // Clear the access token } }; OAuthConfig config = new OAuthConfig.Builder("CLIENT_ID", "CLIENT_SECRET") .tokenStorage(customTokenStorage) .build(); BoxOAuth auth = new BoxOAuth(config); ``` --- ### Authentication **Type:** page | **Section:** Additional Resources Authentication Authentication Authentication methods Developer Token JWT Auth Authenticate Enterprise Authenticate user Client Credentials… # Authentication - [Authentication](#authentication) [Authentication methods](#authentication-methods) - [Developer Token](#developer-token) [JWT Auth](#jwt-auth) - [Authenticate Enterprise](#authenticate-enterprise) - [Authenticate user](#authenticate-user) [Client Credentials Grant](#client-credentials-grant) - [Obtaining Service Account token](#obtaining-service-account-token) - [Obtaining User token](#obtaining-user-token) - [Switching between Service Account and User](#switching-between-service-account-and-user) [OAuth 2.0 Auth](#oauth-20-auth) - [Authentication with OAuth2](#authentication-with-oauth2) - [Injecting existing token into BoxOAuth](#injecting-existing-token-into-boxoauth) [Retrieve current access token](#retrieve-current-access-token) [Refresh access token](#refresh-access-token) [Revoke token](#revoke-token) [Downscope token](#downscope-token) [Token storage](#token-storage) - [In-memory token storage](#in-memory-token-storage) - [File token storage](#file-token-storage) - [File with in-memory token storage](#file-with-in-memory-token-storage) - [Custom storage](#custom-storage) # Authentication methods ## Developer Token The fastest way to get started using the API is with developer token. A developer token is simply a short-lived access token that cannot be refreshed and can only be used with your own account. Therefore, they're only useful for testing an app and aren't suitable for production. You can obtain a developer token from your application's [developer console](https://app.box.com/developers/console) page. To create a `BoxClient` with a developer token, construct an `BoxDeveloperTokenAuth` object with the `token` set to the developer token and construct the client with that. ``` from box_sdk_gen import BoxClient, BoxDeveloperTokenAuth auth = BoxDeveloperTokenAuth(token="DEVELOPER_TOKEN_GOES_HERE") client = BoxClient(auth=auth) me = client.users.get_user_me() print(f"My user ID is {me.id}") ``` ## JWT Auth Authenticating with a JWT requires some extra dependencies. To get them, use ``` pip install "boxsdk[jwt]" ``` You may need to specify a version to install. Before using JWT Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with JWT](https://developer.box.com/guides/authentication/jwt/jwt-setup/) ### Authenticate Enterprise JWT auth allows your application to authenticate itself with the Box API for a given enterprise. By default, your application has a [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account/) that represents it and can perform API calls. The Service Account is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. If you generated your public and private keys automatically through the [Box Developer Console](https://app.box.com/developers/console), you can use the JSON file created there to configure your SDK instance and create a client to make calls as the Service Account. Call one of static `BoxJWTAuth` method: `JWTConfig.from_config_file(config_file_path='/path/to/settings.json')` and pass JSON file local path or `JWTConfig.from_config_json_string(config_json_string)` and pass JSON config file content as string. ``` from box_sdk_gen import BoxClient, BoxJWTAuth, JWTConfig jwt_config = JWTConfig.from_config_file(config_file_path="/path/to/settings.json") auth = BoxJWTAuth(config=jwt_config) client = BoxClient(auth=auth) service_account = client.users.get_user_me() print(f"Service Account user ID is {service_account.id}") ``` Otherwise, you'll need to provide the necessary configuration fields directly to the `JWTConfig` constructor: ``` from box_sdk_gen import BoxClient, BoxJWTAuth, JWTConfig jwt_config = JWTConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", jwt_key_id="YOUR_JWT_KEY_ID", private_key="YOUR_PRIVATE_KEY", private_key_passphrase="PASSPHRASE", enterprise_id="YOUR_ENTERPRISE_ID", ) auth = BoxJWTAuth(config=jwt_config) service_account_client = BoxClient(auth=auth) ``` ### Authenticate user App auth applications also often have associated [App Users](https://developer.box.com/guides/getting-started/user-types/app-users/), which are created and managed directly by the application — they do not have normal login credentials, and can only be accessed through the Box API by the application that created them. You may authenticate as the Service Account to provision and manage users, or as an individual app user to make calls as that user. See the [API documentation](https://developer.box.com/) for detailed instructions on how to use app auth. Clients for making calls as an App User can be created with the same JSON JWT config file generated through the [Box Developer Console](https://app.box.com/developers/console). Calling `auth.with_user_subject('USER_ID')` method will return a new auth object, which is authenticated as the user with provided id, leaving the original object unchanged. ``` from box_sdk_gen import BoxClient, BoxJWTAuth, JWTConfig jwt_config = JWTConfig.from_config_file(config_file_path="/path/to/settings.json") auth = BoxJWTAuth(config=jwt_config) user_auth = auth.with_user_subject("USER_ID") user_client = BoxClient(auth=user_auth) ``` Alternatively, clients for making calls as an App User can be created with the same `JWTConfig` constructor as in the above examples, similarly to creating a Service Account client. Simply pass the `user_id` instead of `enterprise_id` when constructing the auth config instance: ``` from box_sdk_gen import BoxClient, BoxJWTAuth, JWTConfig jwt_config = JWTConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", jwt_key_id="YOUR_JWT_KEY_ID", private_key="YOUR_PRIVATE_KEY", private_key_passphrase="PASSPHRASE", user_id="USER_ID", ) auth = BoxJWTAuth(config=jwt_config) user_client = BoxClient(auth=auth) ``` ## Client Credentials Grant Before using Client Credentials Grant Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with Client Credentials Grant](https://developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) Client Credentials Grant Auth method allows you to obtain an access token by having client credentials and secret with enterprise or user ID, which allows you to work using service or user account. You can use `BoxCCGAuth` to initialize a client object the same way as for other authentication types: ``` from box_sdk_gen import BoxClient, BoxCCGAuth, CCGConfig ccg_config = CCGConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", user_id="YOUR_USER_ID", ) auth = BoxCCGAuth(config=ccg_config) client = BoxClient(auth=auth) print(f"Id of the authenticated user is: {client.users.get_user_me().id}") ``` Obtained token is valid for specified amount of time, it will be refreshed automatically by default. ### Obtaining Service Account token The [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account//) is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. To obtain service account you will have to provide enterprise ID with client id and secret: ``` from box_sdk_gen import BoxClient, BoxCCGAuth, CCGConfig ccg_config = CCGConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", enterprise_id="YOUR_ENTERPRISE_ID", ) auth = BoxCCGAuth(config=ccg_config) client = BoxClient(auth=auth) ``` ### Obtaining User token In order to enable obtaining user token you have to go to your application configuration that can be found [here](https://app.box.com/developers/console). In `Configuration` tab, in section `Advanced Features` select `Generate user access tokens`. Do not forget to re-authorize application if it was already authorized. To obtain user account you will have to provide user ID with client id and secret. ``` from box_sdk_gen import BoxClient, BoxCCGAuth, CCGConfig ccg_config = CCGConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", user_id="YOUR_USER_ID", ) auth = BoxCCGAuth(config=ccg_config) client = BoxClient(auth=auth) ``` ### Switching between Service Account and User You can easily switch to be authenticated as a Service Account or as a User. To create a new auth object authenticated as Service Account you can call: ``` enterprise_auth = auth.with_enterprise_subject(enterprise_id="YOUR_ENTERPRISE_ID") enterprise_client = BoxClient(auth=enterprise_auth) ``` To authenticate with user subject call: ``` user_auth = auth.with_user_subject(user_id="YOUR_USER_ID") user_client = BoxClient(auth=user_auth) ``` The new token will be automatically fetched with a next API call. ## OAuth 2.0 Auth ### Authentication with OAuth2 If your application needs to integrate with existing Box users who will provide their login credentials to grant your application access to their account, you will need to go through the standard OAuth2 login flow. A detailed guide for this process is available in the [Authentication with OAuth API documentation](https://developer.box.com/en/guides/authentication/oauth2/). Using an auth code is the most common way of authenticating with the Box API for existing Box users, to integrate with their accounts. Your application must provide a way for the user to login to Box (usually with a browser or web view) in order to obtain an auth code. ``` from box_sdk_gen import BoxOAuth, OAuthConfig auth = BoxOAuth( OAuthConfig(client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET") ) auth_url = auth.get_authorize_url() ``` After a user logs in and grants your application access to their Box account, they will be redirected to your application's `redirect_uri` which will contain an auth code. This auth code can then be used along with your client ID and client secret to establish an API connection. You need to provide the auth code to the SDK to obtain an access token. Calling `auth.get_tokens_authorization_code_grant('YOUR_ACCESS_CODE')` will exchange the auth code for an access token and save it in the `BoxOAuth` token storage. The SDK will automatically refresh the token when needed. All you need to do is create a client object with the `BoxOAuth` object and start making API calls. ``` auth.retrieve_token() ``` # Refresh access token Access tokens are short-lived and need to be refreshed periodically. The SDK will automatically refresh the token when needed. If you want to manually refresh the token, you can use the following code: ``` auth.refresh_token() ``` # Revoke token Access tokens for a client can be revoked when needed. This call invalidates old token. For BoxCCGAuth and BoxJWTAuth you can still reuse the `auth` object to retrieve a new token. If you make any new call after revoking the token, a new token will be automatically retrieved. For BoxOAuth it would be necessary to manually go through the authentication process again. For BoxDeveloperTokenAuth, it is necessary to provide a DeveloperTokenConfig during initialization, containing the client ID and client secret. To revoke current client's tokens in the storage use the following code: ``` client.auth.revoke_token() ``` # Downscope token You can exchange a client's access token for one with a lower scope, in order to restrict the permissions for a child client or to pass to a less secure location (e.g. a browser-based app). A downscoped token does not include a refresh token. In such a scenario, to obtain a new downscoped token, refresh the original token and utilize the newly acquired token to obtain the downscoped token. More information about downscoping tokens can be found [here](https://developer.box.com/guides/authentication/tokens/downscope/). If you want to learn more about available scopes please go [here](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#scopes-for-downscoping). For example to get a new token with only `item_preview` scope, restricted to a single file, suitable for the [Content Preview UI Element](https://developer.box.com/en/guides/embed/ui-elements/preview/) you can use the following code. You can also initialize `BoxDeveloperTokenAuth` with the retrieved access token and use it to create a new Client. ``` from box_sdk_gen import BoxDeveloperTokenAuth, AccessToken, BoxClient resource = "https://api.box.com/2.0/files/123456789" downscoped_token: AccessToken = auth.downscope_token( scopes=["item_preview"], resource=resource, ) downscoped_auth = BoxDeveloperTokenAuth(token=downscoped_token.access_token) client = BoxClient(auth=downscoped_auth) ``` # Token storage ## In-memory token storage By default, the SDK stores the access token in volatile memory. When rerunning your application, the access token won't be reused from the previous run; a new token has to be obtained again. To use in-memory token storage, you don't need to do anything more than create an Auth class using AuthConfig, for example, for BoxOAuth: ``` from box_sdk_gen import BoxOAuth, OAuthConfig auth = BoxOAuth( OAuthConfig(client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET") ) ``` ## File token storage If you want to keep an up-to-date access token in a file, allowing it to be reused after rerunning your application, you can use the `FileTokenStorage` class. To enable storing the token in a file, you need to pass an object of type `FileTokenStorage` to the AuthConfig class. For example, for BoxOAuth: ``` from box_sdk_gen import BoxOAuth, OAuthConfig, FileTokenStorage auth = BoxOAuth( OAuthConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", token_storage=FileTokenStorage(), ) ) ``` ## File with in-memory token storage If you want to keep an up-to-date access token in a file and also maintain a valid access token in in-memory cache, allowing you to reuse the token after rerunning your application while maintaining fast access times to the token, you can use the `FileWithInMemoryCacheTokenStorage` class. To enable storing the token in a file, you need to pass an object of type `FileWithInMemoryCacheTokenStorage` to the AuthConfig class. For example, for BoxOAuth: ``` from box_sdk_gen import BoxOAuth, OAuthConfig, FileWithInMemoryCacheTokenStorage auth = BoxOAuth( OAuthConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", token_storage=FileWithInMemoryCacheTokenStorage(), ) ) ``` ## Custom storage You can also provide a custom token storage class. All you need to do is create a class that inherits from `TokenStorage` and implements all of its abstract methods. Then, pass an instance of your class to the AuthConfig constructor. ``` from typing import Optional from box_sdk_gen import BoxOAuth, OAuthConfig, TokenStorage, AccessToken class MyCustomTokenStorage(TokenStorage): def store(self, token: AccessToken) -> None: # store token in your custom storage pass def get(self) -> Optional[AccessToken]: # retrieve token from your custom storage pass def clear(self) -> None: # clear token from your custom storage pass auth = BoxOAuth( OAuthConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", token_storage=MyCustomTokenStorage(), ) ) ``` --- ### Authentication **Type:** page | **Section:** Additional Resources Authentication Authentication Authentication methods Developer Token JWT Auth Authenticate Enterprise Authenticate User Client Credentials… # Authentication - [Authentication](#authentication) [Authentication methods](#authentication-methods) - [Developer Token](#developer-token) [JWT Auth](#jwt-auth) - [Authenticate Enterprise](#authenticate-enterprise) - [Authenticate User](#authenticate-user) [Client Credentials Grant](#client-credentials-grant) - [Obtaining Service Account token](#obtaining-service-account-token) - [Obtaining User token](#obtaining-user-token) - [Switching between Service Account and User](#switching-between-service-account-and-user) [OAuth 2.0 Auth](#oauth-20-auth) - [Authentication with OAuth2](#authentication-with-oauth2) - [Injecting existing token into BoxOAuth](#injecting-existing-token-into-boxoauth) [Retrieve current access token](#retrieve-current-access-token) [Refresh access token](#refresh-access-token) [Revoke token](#revoke-token) [Downscope token](#downscope-token) [Token storage](#token-storage) - [In-memory token storage](#in-memory-token-storage) - [Custom storage](#custom-storage) # Authentication methods ## Developer Token The fastest way to get started using the API is with developer token. A developer token is simply a short-lived access token that cannot be refreshed and can only be used with your own account. Therefore, they're only useful for testing an app and aren't suitable for production. You can obtain a developer token from your application's [developer console](https://app.box.com/developers/console) page. To create a `BoxClient` with a developer token, construct an `BoxDeveloperTokenAuth` object with the `token` set to the developer token and construct the client with that. ``` using Box.Sdk.Gen; var auth = new BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN_GOES_HERE"); var client = new BoxClient(auth: auth)); var me = await client.Users.GetUserMeAsync(); Console.WriteLine($"My user ID is {me.Id}"); ``` ## JWT Auth Before using JWT Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with JWT](https://developer.box.com/guides/authentication/jwt/jwt-setup/) ### Authenticate Enterprise JWT auth allows your application to authenticate itself with the Box API for a given enterprise. By default, your application has a [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account/) that represents it and can perform API calls. The Service Account is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. If you generated your public and private keys automatically through the [Box Developer Console](https://app.box.com/developers/console), you can use the JSON file created there to configure your SDK instance and create a client to make calls as the Service Account. Call one of static `JwtConfig` methods: `JwtConfig.FromConfigFile(configFilePath)` and pass JSON file local path or `JwtConfig.FromConfigJsonString(configJsonString)` and pass JSON config file content as string. ``` using Box.Sdk.Gen; var config = JwtConfig.FromConfigFile("/path/to/settings.json"); var jwtAuth = new BoxJwtAuth(config); var client = new BoxClient(jwtAuth); var me = await client.Users.GetUserMeAsync(); Console.WriteLine($"My user ID is {me.Id}"); ``` Otherwise, you'll need to provide the necessary configuration fields directly to the `JwtConfig` constructor: ``` using Box.Sdk.Gen; var jwtConfig = new JwtConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", jwtKeyId: "YOUR_JWT_KEY_ID", privateKey: "YOUR_PRIVATE_KEY", privateKeyPassphrase: "PASSPHRASE") { EnterpriseId = "YOUR_ENTERPRISE_ID" }; var jwtAuth = new BoxJwtAuth(jwtConfig); var serviceAccountClient = new BoxClient(jwtAuth); ``` ### Authenticate User App auth applications also often have associated [App Users](https://developer.box.com/guides/getting-started/user-types/app-users/), which are created and managed directly by the application — they do not have normal login credentials, and can only be accessed through the Box API by the application that created them. You may authenticate as the Service Account to provision and manage users, or as an individual app user to make calls as that user. See the [API documentation](https://developer.box.com/) for detailed instructions on how to use app auth. Clients for making calls as an App User can be created with the same JSON JWT config file generated through the [Box Developer Console](https://app.box.com/developers/console). Calling `jwtAuth.WithUserSubject("USER_ID")` method will return a new auth object, which is authenticated as the user with provided id, leaving the original object unchanged. ``` using Box.Sdk.Gen; var config = JwtConfig.FromConfigFile("/path/to/settings.json"); var jwtAuth = new BoxJwtAuth(config); var userAuth = jwtAuth.WithUserSubject("USER_ID"); var userClient = new BoxClient(userAuth); ``` Alternatively, clients for making calls as an App User can be created with the same `JwtConfig` constructor as in the above examples, similarly to creating a Service Account client. Simply pass the `userId` instead of `enterpriseId` when constructing the auth config instance: ``` using Box.Sdk.Gen; var jwtConfig = new JwtConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", jwtKeyId: "YOUR_JWT_KEY_ID", privateKey: "YOUR_PRIVATE_KEY", privateKeyPassphrase: "PASSPHRASE") { UserId = "USER_ID" }; var jwtAuth = new BoxJwtAuth(jwtConfig); var userClient = new BoxClient(jwtAuth); ``` ## Client Credentials Grant Before using Client Credentials Grant Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with Client Credentials Grant](https://developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) Client Credentials Grant Auth method allows you to obtain an access token by having client credentials and secret with enterprise or user ID, which allows you to work using service or user account. You can use `BoxCcgAuth` to initialize a client object the same way as for other authentication types: ``` using Box.Sdk.Gen; var config = new CcgConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", userId: "YOUR_USER_ID"); var auth = new BoxCcgAuth(config: config); var client = new BoxClient(auth: auth); var me = await client.Users.GetUserMeAsync(); Console.WriteLine($"My user ID is {me.Id}")); ``` Obtained token is valid for specified amount of time, it will be refreshed automatically by default. ### Obtaining Service Account token The [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account//) is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. To obtain service account you will have to provide enterprise ID with client id and secret: ``` using Box.Sdk.Gen; var config = new CcgConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET") { EnterpriseId: "YOUR_ENTERPRISE_ID" }; var auth = new BoxCcgAuth(config: config); var client = new BoxClient(auth: auth); var auth = new BoxCcgAuth(config: config); var client = new BoxClient(auth: auth); ``` ### Obtaining User token In order to enable obtaining user token you have to go to your application configuration that can be found [here](https://app.box.com/developers/console). In `Configuration` tab, in section `Advanced Features` select `Generate user access tokens`. Do not forget to re-authorize application if it was already authorized. To obtain user account you will have to provide user ID with client id and secret. ``` using Box.Sdk.Gen; var config = new CcgConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET") { UserId: "YOUR_USER_ID" }; var auth = new BoxCcgAuth(config: config); var client = new BoxClient(auth: auth); ``` ### Switching between Service Account and User In order to switch between being authenticated as Service Account and a User you can call: ``` await auth.WithEnterpriseSubjectAsync(enterpriseId: "YOUR_ENTERPRISE_ID"); ``` to authenticate as enterprise or ``` await auth.WithUserSubjectAsync(userId: "YOUR_USER_ID"); ``` to authenticate as User with provided ID. The new token will be automatically fetched with a next API call. ## OAuth 2.0 Auth ### Authentication with OAuth2 If your application needs to integrate with existing Box users who will provide their login credentials to grant your application access to their account, you will need to go through the standard OAuth2 login flow. A detailed guide for this process is available in the [Authentication with OAuth API documentation](https://developer.box.com/en/guides/authentication/oauth2/). Using an auth code is the most common way of authenticating with the Box API for existing Box users, to integrate with their accounts. Your application must provide a way for the user to login to Box (usually with a browser or web view) in order to obtain an auth code. ``` using Box.Sdk.Gen; var config = new OAuthConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET"); var auth = new BoxOAuth(config: config); // the URL to redirect the user to var authorizeUrl = auth.GetAuthorizeUrl(); ``` After a user logs in and grants your application access to their Box account, they will be redirected to your application's `redirect_uri` which will contain an auth code. This auth code can then be used along with your client ID and client secret to establish an API connection. You need to provide the auth code to the SDK to obtain an access token. Calling `oauth.getTokensAuthorizationCodeGrant('code')` will exchange the auth code for an access token and save it in the `BoxOAuth` token storage. The SDK will automatically refresh the token when needed. All you need to do is create a client object with the `BoxOAuth` object and start making API calls. ``` await auth.RetrieveTokenAsync(); ``` # Refresh access token Access tokens are short-lived and need to be refreshed periodically. The SDK will automatically refresh the token when needed. If you want to manually refresh the token, you can use the following code: ``` await auth.RefreshTokenAsync(); ``` # Revoke token Access tokens for a client can be revoked when needed. This call invalidates old token. For BoxCcgAuth and BoxJwtAuth you can still reuse the `auth` object to retrieve a new token. If you make any new call after revoking the token, a new token will be automatically retrieved. For BoxOAuth it would be necessary to manually go through the authentication process again. For BoxDeveloperTokenAuth, it is necessary to provide a DeveloperTokenConfig during initialization, containing the client ID and client secret. To revoke current client's tokens in the storage use the following code: ``` await auth.RevokeTokenAsync(); ``` # Downscope token You can exchange a client's access token for one with a lower scope, in order to restrict the permissions for a child client or to pass to a less secure location (e.g. a browser-based app). A downscoped token does not include a refresh token. In such a scenario, to obtain a new downscoped token, refresh the original token and utilize the newly acquired token to obtain the downscoped token. More information about downscoping tokens can be found [here](https://developer.box.com/guides/authentication/tokens/downscope/). If you want to learn more about available scopes please go [here](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#scopes-for-downscoping). For example to get a new token with only `item_preview` scope, restricted to a single file, suitable for the [Content Preview UI Element](https://developer.box.com/en/guides/embed/ui-elements/preview/) you can use the following code. You can also initialize `BoxDeveloperTokenAuth` with the retrieved access token and use it to create a new Client. ``` using Box.Sdk.Gen; resourcePath = 'https://api.box.com/2.0/files/123456789' AccessToken downscopedToken = await auth.DownscopeTokenAsync( scopes: Array.AsReadOnly(new [] {"item_rename","item_preview"}), resource: resourcePath ); BoxClient downscopedClient = new BoxClient(auth: new BoxDeveloperTokenAuth(token: downscopedToken.AccessTokenField)); ``` # Token storage ## In-memory token storage By default, the SDK stores the access token in volatile memory. When rerunning your application, the access token won't be reused from the previous run; a new token has to be obtained again. To use in-memory token storage, you don't need to do anything more than create an Auth class using AuthConfig, for example, for BoxOAuth: ``` using Box.Sdk.Gen; var config = new OAuthConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET"); var auth = new BoxOAuth(config: config); ``` ## Custom storage You can also provide a custom token storage class. All you need to do is create a class that inherits from `TokenStorage` and implements all of its abstract methods. Then, pass an instance of your class to the AuthConfig constructor. ``` using Box.Sdk.Gen; class MyCustomTokenStorage : ITokenStorage { public Task StoreAsync(AccessToken token) { // store token in your custom storage } public Task<AccessToken?> GetAsync() { // retrieve token from your custom storage } public Task ClearAsync() { // clear token from your custom storage } } var config = new OAuthConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", tokenStorage: new MyCustomTokenStorage()); var auth = new BoxOAuth(config: config) ``` --- ### Authentication **Type:** page | **Section:** Additional Resources Authentication Authentication Authentication methods Developer Token Client Credentials Grant Obtaining Service Account token Obtaining User… # Authentication - [Authentication](#authentication) [Authentication methods](#authentication-methods) - [Developer Token](#developer-token) [Client Credentials Grant](#client-credentials-grant) - [Obtaining Service Account token](#obtaining-service-account-token) - [Obtaining User token](#obtaining-user-token) - [Switching between Service Account and User](#switching-between-service-account-and-user) [OAuth 2.0 Auth](#oauth-20-auth) - [Login flow (recommended)](#login-flow-recommended) - [Manual flow](#manual-flow) - [Injecting existing token into BoxOAuth](#injecting-existing-token-into-boxoauth) [Retrieve current access token](#retrieve-current-access-token) [Refresh access token](#refresh-access-token) [Revoke token](#revoke-token) [Downscope token](#downscope-token) [Token storage](#token-storage) - [In-memory token storage](#in-memory-token-storage) - [Keychain token storage](#keychain-token-storage) - [Custom storage](#custom-storage) # Authentication methods ## Developer Token The fastest way to get started using the API is with developer token. A developer token is simply a short-lived access token that cannot be refreshed and can only be used with your own account. Therefore, they're only useful for testing an app and aren't suitable for production. You can obtain a developer token from your application's [developer console](https://app.box.com/developers/console) page. To create a `BoxClient` with a developer token, construct an `BoxDeveloperTokenAuth` object with the `token` set to the developer token and construct the client with that. ``` import BoxSdkGen let auth = BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN_GOES_HERE") let client = BoxClient(auth: auth) let me = try await client.users.getUserMe() print("My user ID is \(me.id)") ``` ## Client Credentials Grant Before using Client Credentials Grant Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with Client Credentials Grant](https://developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) Client Credentials Grant Auth method allows you to obtain an access token by having client credentials and secret with enterprise or user ID, which allows you to work using service or user account. You can use `BoxCCGAuth` to initialize a client object the same way as for other authentication types: ``` import BoxSdkGen let config = CCGConfig( clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", userId: "YOUR_USER_ID" ) let auth = BoxCCGAuth(config: config) let client = BoxClient(auth: auth) let user = try await client.users.getUserMe() print("Id of the authenticated user is \(user.id)") ``` Obtained token is valid for specified amount of time, it will be refreshed automatically by default. ### Obtaining Service Account token The [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account//) is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. To obtain service account you will have to provide enterprise ID with client id and secret: ``` import BoxSdkGen let config = CCGConfig( clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", enterpriseId: "YOUR_ENTERPRISE_ID" ) let auth = BoxCCGAuth(config: config) let client = BoxClient(auth: auth) ``` ### Obtaining User token In order to enable obtaining user token you have to go to your application configuration that can be found [here](https://app.box.com/developers/console). In `Configuration` tab, in section `Advanced Features` select `Generate user access tokens`. Do not forget to re-authorize application if it was already authorized. To obtain user account you will have to provide user ID with client id and secret. ``` import BoxSdkGen let config = CCGConfig( clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", userId: "YOUR_USER_ID" ) let auth = BoxCCGAuth(config: config) let client = BoxClient(auth: auth) ``` ### Switching between Service Account and User In order to switch between being authenticated as Service Account and a User you can call: ``` let enterpriseAuth = auth.withEnterpriseSubject(enterpriseId: "YOUR_ENTERPRISE_ID") let enterpriseClient = BoxClient(auth: enterpriseAuth) ``` to authenticate as enterprise or ``` let userAuth = auth.withUserSubject(userId: "YOUR_USER_ID") let userClient = BoxClient(auth: userAuth) ``` to authenticate as User with provided ID. The new token will be automatically fetched with a next API call. ## OAuth 2.0 Auth If your application needs to integrate with existing Box users who will provide their login credentials to grant your application access to their account, you will need to go through the standard OAuth2 login flow. A detailed guide for this process is available in the [Authentication with OAuth API documentation](https://developer.box.com/en/guides/authentication/oauth2/). Using an auth code is the most common way of authenticating with the Box API for existing Box users, to integrate with their accounts. ### Login flow (recommended) The SDK provides a built-in flow for opening a secure web view, into which the user enters their Box login credentials. This requires that the application using the SDK registers itself for a custom URL scheme of the format `boxsdk-<<CLIENT ID>>://boxsdkoauth2redirect`. ``` do { // Initialize configuration with required clientId and clientSecret let config = OAuthConfig(clientId: "<<YOUR CLIENT ID HERE>>", clientSecret: "<<YOUR CLIENT SECRET HERE>>") // Initialize BoxOAuth with configuration let oauth = BoxOAuth(config: config) // Run login flow which opens a secure web view, // where users enter their login credentials to obtain an authorization code, // which is then exchanged for an access token. try await oauth.runLoginFlow(options: .init(), context: self) // Initialize BoxClient with already authorized OAuth let client = BoxClient(auth: oauth) // Use client to make API calls let folder = try await client.folders.getFolderById(folderId: "<<YOUR_FOLDER_ID>>") } catch { print("An error occurred: \(error)") } ``` If your application requires a custom URL scheme that differs from the default format `boxsdk-<<CLIENT ID>>://boxsdkoauth2redirect`, you have the option to pass in a custom `redirectUri` string when running the `runLoginFlow()` method: ``` try await oauth.runLoginFlow(options: AuthorizeUrlParams(redirectUri: "my-custom-scheme://redirect"), context: self) ``` This is the URL to which Box will redirect the user when authentication completes. This requires that the application using the SDK registers itself for the same custom callback URL. When running the `runLoginFlow(options:context:)` method, the *context* parameter is required. It's specify the context to target where in an application's UI the authorization view should be shown. This parameter is of type `ASWebAuthenticationPresentationContextProviding`, so in order to pass it, you have to adopt the mentioned `ASWebAuthenticationPresentationContextProviding` protocol. If you are running your code from the ViewController, you can add the following code to it: ``` extension ViewController: ASWebAuthenticationPresentationContextProviding { func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor { return view.window! } } ``` Then in the `context` argument, just pass self as we did in the previous examples. ### Manual flow As an alternative to login flow, where everything is done automatically, you can use the manual one. This flow requires you to actively obtain an authorization code and pass it to the OAuth for the purpose of exchanging it for an Access Token. To initiate this flow, you need to create the `authorizationUrl`, based on provided client data, and redirect to this url the user. ``` let auth = BoxOAuth(config: OAuthConfig(clientId: "<<YOUR CLIENT ID HERE>>", clientSecret: "<<YOUR CLIENT SECRET HERE>>") ) let authorizationUrl = auth.getAuthorizeUrl() ``` After a user logs in and grants your application access to their Box account, they will be redirected to your application's `redirectUri` which will contain an authorization code. This code can then be used along with your client ID and client secret to establish an API connection. You need to provide the auth code to the SDK to obtain an access token. Calling `auth.getTokensAuthorizationCodeGrant(authorizationCode: "<<YOUR_AUTHORIZATION_CODE>>")` will exchange the auth code for an access token and save it in the `BoxOAuth` token storage. The SDK will automatically refresh the token when needed. All you need to do is create a client object with the `BoxOAuth` object and start making API calls. ``` try await auth.retrieveToken(); ``` # Refresh access token Access tokens are short-lived and need to be refreshed periodically. The SDK will automatically refresh the token when needed. If you want to manually refresh the token, you can use the following code: ``` try await auth.refreshToken(); ``` # Revoke token Access tokens for a client can be revoked when needed. This call invalidates old token. For BoxCCGAuth you can still reuse the `auth` object to retrieve a new token. If you make any new call after revoking the token, a new token will be automatically retrieved. For BoxOAuth it would be necessary to manually go through the authentication process again. For BoxDeveloperTokenAuth, it is necessary to provide a DeveloperTokenConfig during initialization, containing the client ID and client secret. To revoke current client's tokens in the storage use the following code: ``` try await auth.revokeToken() ``` # Downscope token You can exchange an access token for one with a lower scope, in order to restrict the permissions for a child client or to pass to a less secure location (e.g. a browser-based app). A downscoped token does not include a refresh token. In that case, to get a new downscoped token, refresh the original refresh token and use that new token to get a downscoped token. More information about downscoping tokens can be found [here](https://developer.box.com/guides/authentication/tokens/downscope/). If you want to learn more about available scopes please go [here](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#scopes-for-downscoping). For example to get a new token with only `item_preview` scope, restricted to a single file, suitable for the [Content Preview UI Element](https://developer.box.com/en/guides/embed/ui-elements/preview/) you can the following code: You can also initialize `BoxDeveloperTokenAuth` with the retrieved access token and use it to create a new Client. ``` let resource = "https://api.box.com/2.0/files/123456789" let downscopedToken: AccessToken = try await auth.downscopeToken(scopes: ["item_preview"], resource: resource) let downscopedAuth = BoxDeveloperTokenAuth(token: downscopedToken.accessToken!) let downscopedClient = BoxClient(auth: downscopedAuth) ``` # Token storage ## In-memory token storage By default, the SDK stores the access token in volatile memory. When rerunning your application, the access token won't be reused from the previous run; a new token has to be obtained again. To use in-memory token storage, you don't need to do anything more than create an Auth class using AuthConfig, for example, for BoxOAuth: ``` let auth = BoxOAuth(config: OAuthConfig(clientId: "<<YOUR CLIENT ID HERE>>", clientSecret: "<<YOUR CLIENT SECRET HERE>>") ) ``` ## Keychain token storage If you want to keep an up-to-date access token on Apple's device Keychain, allowing it to be reused after rerunning your application, you can use the `KeychainTokenStorage` class. To enable storing the token in Keychain, you need to pass an object of type `KeychainTokenStorage` to the AuthConfig class. For example, for BoxOAuth: ``` // Initialize configuration with required clientId, clientSecret and tokenStorage let config = OAuthConfig(clientId: "<<YOUR CLIENT ID HERE>>", clientSecret: "<<YOUR CLIENT SECRET HERE>>", tokenStorage: KeychainTokenStorage()) // Initialize OAuth with configuration let oauth = BoxOAuth(config: config) // Initialize BoxClient let client = BoxClient(auth: oauth) // In the case of BoxOAuth authorization, if there is no access token in the keychain, // you must run the `runLoginFlow` process to retrieve the token which will be automatically stored in TokenStorage. if try! await storage.get() == nil { try await oauth.runLoginFlow(options: AuthorizeUrlParams(redirectUri: "my-custom-scheme://redirect"), context: self) } ``` ## Custom storage You can also provide a custom token storage class. All you need to do is create a class that implements `TokenStorage` protocol and pass an instance of your class to the AuthConfig constructor. ``` class MyCustomTokenStorage: TokenStorage { func store(token: AccessToken) async throws { // store token in your custom storage } func get() async throws -> AccessToken? { // retrieve token from your custom storage } func clear() async throws { // clear token from your custom storage } } let auth = BoxOAuth(config: OAuthConfig( clientId: "<<YOUR CLIENT ID HERE>>", clientSecret: "<<YOUR CLIENT SECRET HERE>>", tokenStorage: MyCustomTokenStorage() ) ) ``` --- ### Authentication **Type:** page | **Section:** Additional Resources Authentication Authentication Authentication methods Developer Token JWT Auth Authenticate Enterprise Authenticate user Client Credentials… # Authentication - [Authentication](#authentication) [Authentication methods](#authentication-methods) - [Developer Token](#developer-token) [JWT Auth](#jwt-auth) - [Authenticate Enterprise](#authenticate-enterprise) - [Authenticate user](#authenticate-user) [Client Credentials Grant](#client-credentials-grant) - [Obtaining Service Account token](#obtaining-service-account-token) - [Obtaining User token](#obtaining-user-token) - [Switching between Service Account and User](#switching-between-service-account-and-user) [OAuth 2.0 Auth](#oauth-20-auth) - [Authentication with OAuth2](#authentication-with-oauth2) - [Injecting existing token into BoxOAuth](#injecting-existing-token-into-boxoauth) [Retrieve current access token](#retrieve-current-access-token) [Refresh access token](#refresh-access-token) [Revoke token](#revoke-token) [Downscope token](#downscope-token) [Token storage](#token-storage) - [In-memory token storage](#in-memory-token-storage) - [Custom storage](#custom-storage) # Authentication methods ## Developer Token The fastest way to get started using the API is with developer token. A developer token is simply a short-lived access token that cannot be refreshed and can only be used with your own account. Therefore, they're only useful for testing an app and aren't suitable for production. You can obtain a developer token from your application's [developer console](https://app.box.com/developers/console) page. To create a `BoxClient` with a developer token, construct an `BoxDeveloperTokenAuth` object with the `token` set to the developer token and construct the client with that. ``` import { BoxClient } from 'box-node-sdk'; import { BoxDeveloperTokenAuth } from 'box-node-sdk/box'; const auth = new BoxDeveloperTokenAuth({ token: 'DEVELOPER_TOKEN_GOES_HERE' }); const client = new BoxClient({ auth }); const me = await client.users.getUserMe(); console.log(`My user ID is ${me.id}`); ``` ## JWT Auth Before using JWT Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with JWT](https://developer.box.com/guides/authentication/jwt/jwt-setup/) ### Authenticate Enterprise JWT auth allows your application to authenticate itself with the Box API for a given enterprise. By default, your application has a [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account/) that represents it and can perform API calls. The Service Account is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. If you generated your public and private keys automatically through the [Box Developer Console](https://app.box.com/developers/console), you can use the JSON file created there to configure your SDK instance and create a client to make calls as the Service Account. Call one of static `BoxJwtAuth` method: `JwtConfig.fromConfigFile(configFilePath)` and pass JSON file local path or `JwtConfig.fromConfigJsonString(configJsonString)` and pass JSON config file content as string. ``` import { BoxClient } from 'box-node-sdk'; import { BoxJwtAuth, JwtConfig } from 'box-node-sdk/box'; const jwtConfig = JwtConfig.fromConfigFile('/path/to/settings.json'); const jwtAuth = new BoxJwtAuth({ config: jwtConfig }); const client = new BoxClient({ auth: jwtAuth }); const me = await client.users.getUserMe(); console.log(`My user ID is ${me.id}`); ``` Otherwise, you'll need to provide the necessary configuration fields directly to the `JwtConfig` constructor: ``` import { BoxClient } from 'box-node-sdk'; import { BoxJwtAuth, JwtConfig } from 'box-node-sdk/box'; const jwtConfig = new JwtConfig({ clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', jwtKeyId: 'YOUR_JWT_KEY_ID', privateKey: 'YOUR_PRIVATE_KEY', privateKeyPassphrase: 'PASSPHRASE', enterpriseId: 'YOUR_ENTERPRISE_ID', }); const jwtAuth = new BoxJwtAuth({ config: jwtConfig }); const serviceAccountClient = new BoxClient({ auth: jwtAuth }); ``` ### Authenticate user App auth applications also often have associated [App Users](https://developer.box.com/guides/getting-started/user-types/app-users/), which are created and managed directly by the application — they do not have normal login credentials, and can only be accessed through the Box API by the application that created them. You may authenticate as the Service Account to provision and manage users, or as an individual app user to make calls as that user. See the [API documentation](https://developer.box.com/) for detailed instructions on how to use app auth. Clients for making calls as an App User can be created with the same JSON JWT config file generated through the [Box Developer Console](https://app.box.com/developers/console). Calling `jwtAuth.withUserSubject('USER_ID')` method will return a new auth object, which is authenticated as the user with provided id, leaving the original object unchanged. ``` import { BoxClient } from 'box-node-sdk'; import { BoxJwtAuth, JwtConfig } from 'box-node-sdk/box'; const jwtConfig = JwtConfig.fromConfigFile('/path/to/settings.json'); const jwtAuth = new BoxJwtAuth({ config: jwtConfig }); const userAuth = jwtAuth.withUserSubject('USER_ID'); const userClient = new BoxClient({ auth: userAuth }); ``` Alternatively, clients for making calls as an App User can be created with the same `JwtConfig` constructor as in the above examples, similarly to creating a Service Account client. Simply pass the `userId` instead of `enterpriseId` when constructing the auth config instance: ``` import { BoxClient } from 'box-node-sdk'; import { BoxJwtAuth, JwtConfig } from 'box-node-sdk/box'; const jwtConfig = new JwtConfig({ clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', jwtKeyId: 'YOUR_JWT_KEY_ID', privateKey: 'YOUR_PRIVATE_KEY', privateKeyPassphrase: 'PASSPHRASE', userId: 'USER_ID', }); const jwtAuth = new BoxJwtAuth({ config: jwtConfig }); const userClient = new BoxClient({ auth: jwtAuth }); ``` ## Client Credentials Grant Before using Client Credentials Grant Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with Client Credentials Grant](https://developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) Client Credentials Grant Auth method allows you to obtain an access token by having client credentials and secret with enterprise or user ID, which allows you to work using service or user account. You can use `CCGAuth` to initialize a client object the same way as for other authentication types: ``` import { BoxClient } from 'box-node-sdk'; import { BoxCcgAuth, CcgConfig } from 'box-node-sdk/box'; const ccgConfig = new CcgConfig({ userId: 'YOUR_USER_ID', clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', }); const ccgAuth = new BoxCcgAuth({ config: ccgConfig }); const client = new BoxClient({ auth: ccgAuth }); const me = await client.users.getUserMe(); console.log(`My user ID is ${me.id}`); ``` Obtained token is valid for specified amount of time, it will be refreshed automatically by default. ### Obtaining Service Account token The [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account//) is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. To obtain service account you will have to provide enterprise ID with client id and secret: ``` import { BoxClient } from 'box-node-sdk'; import { BoxCcgAuth, CcgConfig } from 'box-node-sdk/box'; const ccgConfig = new CcgConfig({ enterpriseId: 'YOUR_ENTERPRISE_ID', clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', }); const ccgAuth = new BoxCcgAuth({ config: ccgConfig }); const client = new BoxClient({ auth: ccgAuth }); ``` ### Obtaining User token In order to enable obtaining user token you have to go to your application configuration that can be found [here](https://app.box.com/developers/console). In `Configuration` tab, in section `Advanced Features` select `Generate user access tokens`. Do not forget to re-authorize application if it was already authorized. To obtain user account you will have to provide user ID with client id and secret. ``` import { BoxClient } from 'box-node-sdk'; import { BoxCcgAuth, CcgConfig } from 'box-node-sdk/box'; const ccgConfig = new CcgConfig({ userId: 'YOUR_USER_ID', clientId: 'YOUR_CLIENT_ID', clientSecret: 'YOUR_CLIENT_SECRET', }); const ccgAuth = new BoxCcgAuth({ config: ccgConfig }); const client = new BoxClient({ auth: ccgAuth }); ``` ### Switching between Service Account and User You can easily switch to be authenticated as a Service Account or as a User. To create a new auth object authenticated as Service Account you can call: ``` const enterpriseAuth = ccgAuth.withEnterpriseSubject('YOUR_ENTERPRISE_ID'); const enterpriseClient = new BoxClient({ auth: enterpriseAuth }); ``` To authenticate with user subject call: ``` const userAuth = ccgAuth.withUserSubject('YOUR_USER_ID'); const userClient = new BoxClient({ auth: userAuth }); ``` The new token will be automatically fetched with a next API call. ## OAuth 2.0 Auth ### Authentication with OAuth2 If your application needs to integrate with existing Box users who will provide their login credentials to grant your application access to their account, you will need to go through the standard OAuth2 login flow. A detailed guide for this process is available in the [Authentication with OAuth API documentation](https://developer.box.com/en/guides/authentication/oauth2/). Using an auth code is the most common way of authenticating with the Box API for existing Box users, to integrate with their accounts. Your application must provide a way for the user to login to Box (usually with a browser or web view) in order to obtain an auth code. ``` import { BoxOAuth, OAuthConfig } from 'box-node-sdk/box'; const config = new OAuthConfig({ clientId: 'OAUTH_CLIENT_ID', clientSecret: 'OAUTH_CLIENT_SECRET', }); const oauth = new BoxOAuth({ config: config }); // the URL to redirect the user to var authorize_url = oauth.getAuthorizeUrl(); ``` After a user logs in and grants your application access to their Box account, they will be redirected to your application's `redirect_uri` which will contain an auth code. This auth code can then be used along with your client ID and client secret to establish an API connection. You need to provide the auth code to the SDK to obtain an access token. Calling `oauth.getTokensAuthorizationCodeGrant('code')` will exchange the auth code for an access token and save it in the `BoxOAuth` token storage. The SDK will automatically refresh the token when needed. All you need to do is create a client object with the `BoxOAuth` object and start making API calls. ``` await auth.retrieveToken(); ``` # Refresh access token Access tokens are short-lived and need to be refreshed periodically. The SDK will automatically refresh the token when needed. If you want to manually refresh the token, you can use the following code: ``` await auth.refreshToken(); ``` # Revoke token Access tokens for a client can be revoked when needed. This call invalidates old token. For BoxCcgAuth and BoxJwtAuth you can still reuse the `auth` object to retrieve a new token. If you make any new call after revoking the token, a new token will be automatically retrieved. For BoxOAuth it would be necessary to manually go through the authentication process again. For BoxDeveloperTokenAuth, it is necessary to provide a DeveloperTokenConfig during initialization, containing the client ID and client secret. To revoke current client's tokens in the storage use the following code: ``` await auth.revokeTokens(); // client's tokens have been revoked ``` # Downscope token You can exchange a client's access token for one with a lower scope, in order to restrict the permissions for a child client or to pass to a less secure location (e.g. a browser-based app). A downscoped token does not include a refresh token. In such a scenario, to obtain a new downscoped token, refresh the original token and utilize the newly acquired token to obtain the downscoped token. More information about downscoping tokens can be found [here](https://developer.box.com/guides/authentication/tokens/downscope/). If you want to learn more about available scopes please go [here](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#scopes-for-downscoping). For example to get a new token with only `item_preview` scope, restricted to a single file, suitable for the [Content Preview UI Element](https://developer.box.com/en/guides/embed/ui-elements/preview/) you can use the following code. You can also initialize `BoxDeveloperTokenAuth` with the retrieved access token and use it to create a new Client. ``` let resource = 'https://api.box.com/2.0/files/123456789'; let token = await oauth.downscopeToken(['item_preview'], resource); const auth = new BoxDeveloperTokenAuth({ token: token.accessToken }); const client = new BoxClient({ auth }); ``` # Token storage ## In-memory token storage By default, the SDK stores the access token in volatile memory. When rerunning your application, the access token won't be reused from the previous run; a new token has to be obtained again. To use in-memory token storage, you don't need to do anything more than create an Auth class using AuthConfig, for example, for OAuth: ``` const config = new OAuthConfig({ clientId: 'OAUTH_CLIENT_ID', clientSecret: 'OAUTH_CLIENT_SECRET', }); const oauth = new BoxOAuth({ config: config }); ``` ## Custom storage You can also provide a custom token storage class. All you need to do is create a class that implements `TokenStorage` interface and pass an instance of your class to the AuthConfig constructor. ``` class MyCustomTokenStorage implements TokenStorage { async store(token: AccessToken): Promise<undefined> { // store token in your custom storage } async get(): Promise<undefined | AccessToken> { // retrieve token from your custom storage } async clear(): Promise<undefined> { // clear token from your custom storage } } const config = new OAuthConfig({ clientId: 'OAUTH_CLIENT_ID', clientSecret: 'OAUTH_CLIENT_SECRET', tokenStorage: new MyCustomTokenStorage(), }); const oauth = new BoxOAuth({ config: config }); ``` --- ### Authentication **Type:** page | **Section:** Additional Resources Authentication Authentication Authentication methods Developer Token JWT Auth Authenticate Enterprise Authenticate user Client Credentials… # Authentication - [Authentication](#authentication) [Authentication methods](#authentication-methods) - [Developer Token](#developer-token) [JWT Auth](#jwt-auth) - [Authenticate Enterprise](#authenticate-enterprise) - [Authenticate user](#authenticate-user) [Client Credentials Grant](#client-credentials-grant) - [Obtaining Service Account token](#obtaining-service-account-token) - [Obtaining User token](#obtaining-user-token) - [Switching between Service Account and User](#switching-between-service-account-and-user) [OAuth 2.0 Auth](#oauth-20-auth) - [Authentication with OAuth2](#authentication-with-oauth2) - [Injecting existing token into BoxOAuth](#injecting-existing-token-into-boxoauth) [Retrieve current access token](#retrieve-current-access-token) [Refresh access token](#refresh-access-token) [Revoke token](#revoke-token) [Downscope token](#downscope-token) [Token storage](#token-storage) - [In-memory token storage](#in-memory-token-storage) - [File token storage](#file-token-storage) - [File with in-memory token storage](#file-with-in-memory-token-storage) - [Custom storage](#custom-storage) # Authentication methods ## Developer Token The fastest way to get started using the API is with developer token. A developer token is simply a short-lived access token that cannot be refreshed and can only be used with your own account. Therefore, they're only useful for testing an app and aren't suitable for production. You can obtain a developer token from your application's [developer console](https://app.box.com/developers/console) page. To create a `BoxClient` with a developer token, construct an `BoxDeveloperTokenAuth` object with the `token` set to the developer token and construct the client with that. ``` from box_sdk_gen import BoxClient, BoxDeveloperTokenAuth auth = BoxDeveloperTokenAuth(token="DEVELOPER_TOKEN_GOES_HERE") client = BoxClient(auth=auth) me = client.users.get_user_me() print(f"My user ID is {me.id}") ``` ## JWT Auth Authenticating with a JWT requires some extra dependencies. To get them, use ``` pip install "box-sdk-gen[jwt]" ``` Before using JWT Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with JWT](https://developer.box.com/guides/authentication/jwt/jwt-setup/) ### Authenticate Enterprise JWT auth allows your application to authenticate itself with the Box API for a given enterprise. By default, your application has a [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account/) that represents it and can perform API calls. The Service Account is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. If you generated your public and private keys automatically through the [Box Developer Console](https://app.box.com/developers/console), you can use the JSON file created there to configure your SDK instance and create a client to make calls as the Service Account. Call one of static `BoxJWTAuth` method: `JWTConfig.from_config_file(config_file_path='/path/to/settings.json')` and pass JSON file local path or `JWTConfig.from_config_json_string(config_json_string)` and pass JSON config file content as string. ``` from box_sdk_gen import BoxClient, BoxJWTAuth, JWTConfig jwt_config = JWTConfig.from_config_file(config_file_path="/path/to/settings.json") auth = BoxJWTAuth(config=jwt_config) client = BoxClient(auth=auth) service_account = client.users.get_user_me() print(f"Service Account user ID is {service_account.id}") ``` Otherwise, you'll need to provide the necessary configuration fields directly to the `JWTConfig` constructor: ``` from box_sdk_gen import BoxClient, BoxJWTAuth, JWTConfig jwt_config = JWTConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", jwt_key_id="YOUR_JWT_KEY_ID", private_key="YOUR_PRIVATE_KEY", private_key_passphrase="PASSPHRASE", enterprise_id="YOUR_ENTERPRISE_ID", ) auth = BoxJWTAuth(config=jwt_config) service_account_client = BoxClient(auth=auth) ``` ### Authenticate user App auth applications also often have associated [App Users](https://developer.box.com/guides/getting-started/user-types/app-users/), which are created and managed directly by the application — they do not have normal login credentials, and can only be accessed through the Box API by the application that created them. You may authenticate as the Service Account to provision and manage users, or as an individual app user to make calls as that user. See the [API documentation](https://developer.box.com/) for detailed instructions on how to use app auth. Clients for making calls as an App User can be created with the same JSON JWT config file generated through the [Box Developer Console](https://app.box.com/developers/console). Calling `auth.with_user_subject('USER_ID')` method will return a new auth object, which is authenticated as the user with provided id, leaving the original object unchanged. ``` from box_sdk_gen import BoxClient, BoxJWTAuth, JWTConfig jwt_config = JWTConfig.from_config_file(config_file_path="/path/to/settings.json") auth = BoxJWTAuth(config=jwt_config) user_auth = auth.with_user_subject("USER_ID") user_client = BoxClient(auth=user_auth) ``` Alternatively, clients for making calls as an App User can be created with the same `JWTConfig` constructor as in the above examples, similarly to creating a Service Account client. Simply pass the `user_id` instead of `enterprise_id` when constructing the auth config instance: ``` from box_sdk_gen import BoxClient, BoxJWTAuth, JWTConfig jwt_config = JWTConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", jwt_key_id="YOUR_JWT_KEY_ID", private_key="YOUR_PRIVATE_KEY", private_key_passphrase="PASSPHRASE", user_id="USER_ID", ) auth = BoxJWTAuth(config=jwt_config) user_client = BoxClient(auth=auth) ``` ## Client Credentials Grant Before using Client Credentials Grant Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with Client Credentials Grant](https://developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) Client Credentials Grant Auth method allows you to obtain an access token by having client credentials and secret with enterprise or user ID, which allows you to work using service or user account. You can use `BoxCCGAuth` to initialize a client object the same way as for other authentication types: ``` from box_sdk_gen import BoxClient, BoxCCGAuth, CCGConfig ccg_config = CCGConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", user_id="YOUR_USER_ID", ) auth = BoxCCGAuth(config=ccg_config) client = BoxClient(auth=auth) print(f"Id of the authenticated user is: {client.users.get_user_me().id}") ``` Obtained token is valid for specified amount of time, it will be refreshed automatically by default. ### Obtaining Service Account token The [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account//) is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. To obtain service account you will have to provide enterprise ID with client id and secret: ``` from box_sdk_gen import BoxClient, BoxCCGAuth, CCGConfig ccg_config = CCGConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", enterprise_id="YOUR_ENTERPRISE_ID", ) auth = BoxCCGAuth(config=ccg_config) client = BoxClient(auth=auth) ``` ### Obtaining User token In order to enable obtaining user token you have to go to your application configuration that can be found [here](https://app.box.com/developers/console). In `Configuration` tab, in section `Advanced Features` select `Generate user access tokens`. Do not forget to re-authorize application if it was already authorized. To obtain user account you will have to provide user ID with client id and secret. ``` from box_sdk_gen import BoxClient, BoxCCGAuth, CCGConfig ccg_config = CCGConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", user_id="YOUR_USER_ID", ) auth = BoxCCGAuth(config=ccg_config) client = BoxClient(auth=auth) ``` ### Switching between Service Account and User You can easily switch to be authenticated as a Service Account or as a User. To create a new auth object authenticated as Service Account you can call: ``` enterprise_auth = auth.with_enterprise_subject(enterprise_id="YOUR_ENTERPRISE_ID") enterprise_client = BoxClient(auth=enterprise_auth) ``` To authenticate with user subject call: ``` user_auth = auth.with_user_subject(user_id="YOUR_USER_ID") user_client = BoxClient(auth=user_auth) ``` The new token will be automatically fetched with a next API call. ## OAuth 2.0 Auth ### Authentication with OAuth2 If your application needs to integrate with existing Box users who will provide their login credentials to grant your application access to their account, you will need to go through the standard OAuth2 login flow. A detailed guide for this process is available in the [Authentication with OAuth API documentation](https://developer.box.com/en/guides/authentication/oauth2/). Using an auth code is the most common way of authenticating with the Box API for existing Box users, to integrate with their accounts. Your application must provide a way for the user to login to Box (usually with a browser or web view) in order to obtain an auth code. ``` from box_sdk_gen import BoxOAuth, OAuthConfig auth = BoxOAuth( OAuthConfig(client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET") ) auth_url = auth.get_authorize_url() ``` After a user logs in and grants your application access to their Box account, they will be redirected to your application's `redirect_uri` which will contain an auth code. This auth code can then be used along with your client ID and client secret to establish an API connection. You need to provide the auth code to the SDK to obtain an access token. Calling `auth.get_tokens_authorization_code_grant('YOUR_ACCESS_CODE')` will exchange the auth code for an access token and save it in the `BoxOAuth` token storage. The SDK will automatically refresh the token when needed. All you need to do is create a client object with the `BoxOAuth` object and start making API calls. ``` auth.retrieve_token() ``` # Refresh access token Access tokens are short-lived and need to be refreshed periodically. The SDK will automatically refresh the token when needed. If you want to manually refresh the token, you can use the following code: ``` auth.refresh_token() ``` # Revoke token Access tokens for a client can be revoked when needed. This call invalidates old token. For BoxCCGAuth and BoxJWTAuth you can still reuse the `auth` object to retrieve a new token. If you make any new call after revoking the token, a new token will be automatically retrieved. For BoxOAuth it would be necessary to manually go through the authentication process again. For BoxDeveloperTokenAuth, it is necessary to provide a DeveloperTokenConfig during initialization, containing the client ID and client secret. To revoke current client's tokens in the storage use the following code: ``` client.auth.revoke_token() ``` # Downscope token You can exchange a client's access token for one with a lower scope, in order to restrict the permissions for a child client or to pass to a less secure location (e.g. a browser-based app). A downscoped token does not include a refresh token. In such a scenario, to obtain a new downscoped token, refresh the original token and utilize the newly acquired token to obtain the downscoped token. More information about downscoping tokens can be found [here](https://developer.box.com/guides/authentication/tokens/downscope/). If you want to learn more about available scopes please go [here](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#scopes-for-downscoping). For example to get a new token with only `item_preview` scope, restricted to a single file, suitable for the [Content Preview UI Element](https://developer.box.com/en/guides/embed/ui-elements/preview/) you can use the following code. You can also initialize `BoxDeveloperTokenAuth` with the retrieved access token and use it to create a new Client. ``` from box_sdk_gen import BoxDeveloperTokenAuth, AccessToken, BoxClient resource = "https://api.box.com/2.0/files/123456789" downscoped_token: AccessToken = auth.downscope_token( scopes=["item_preview"], resource=resource, ) downscoped_auth = BoxDeveloperTokenAuth(token=downscoped_token.access_token) client = BoxClient(auth=downscoped_auth) ``` # Token storage ## In-memory token storage By default, the SDK stores the access token in volatile memory. When rerunning your application, the access token won't be reused from the previous run; a new token has to be obtained again. To use in-memory token storage, you don't need to do anything more than create an Auth class using AuthConfig, for example, for BoxOAuth: ``` from box_sdk_gen import BoxOAuth, OAuthConfig auth = BoxOAuth( OAuthConfig(client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET") ) ``` ## File token storage If you want to keep an up-to-date access token in a file, allowing it to be reused after rerunning your application, you can use the `FileTokenStorage` class. To enable storing the token in a file, you need to pass an object of type `FileTokenStorage` to the AuthConfig class. For example, for BoxOAuth: ``` from box_sdk_gen import BoxOAuth, OAuthConfig, FileTokenStorage auth = BoxOAuth( OAuthConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", token_storage=FileTokenStorage(), ) ) ``` ## File with in-memory token storage If you want to keep an up-to-date access token in a file and also maintain a valid access token in in-memory cache, allowing you to reuse the token after rerunning your application while maintaining fast access times to the token, you can use the `FileWithInMemoryCacheTokenStorage` class. To enable storing the token in a file, you need to pass an object of type `FileWithInMemoryCacheTokenStorage` to the AuthConfig class. For example, for BoxOAuth: ``` from box_sdk_gen import BoxOAuth, OAuthConfig, FileWithInMemoryCacheTokenStorage auth = BoxOAuth( OAuthConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", token_storage=FileWithInMemoryCacheTokenStorage(), ) ) ``` ## Custom storage You can also provide a custom token storage class. All you need to do is create a class that inherits from `TokenStorage` and implements all of its abstract methods. Then, pass an instance of your class to the AuthConfig constructor. ``` from typing import Optional from box_sdk_gen import BoxOAuth, OAuthConfig, TokenStorage, AccessToken class MyCustomTokenStorage(TokenStorage): def store(self, token: AccessToken) -> None: # store token in your custom storage pass def get(self) -> Optional[AccessToken]: # retrieve token from your custom storage pass def clear(self) -> None: # clear token from your custom storage pass auth = BoxOAuth( OAuthConfig( client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET", token_storage=MyCustomTokenStorage(), ) ) ``` --- ### Authentication **Type:** page | **Section:** Additional Resources Authentication Authentication Authentication methods Developer Token JWT Auth Authenticate Enterprise Authenticate User Client Credentials… # Authentication - [Authentication](#authentication) [Authentication methods](#authentication-methods) - [Developer Token](#developer-token) [JWT Auth](#jwt-auth) - [Authenticate Enterprise](#authenticate-enterprise) - [Authenticate User](#authenticate-user) [Client Credentials Grant](#client-credentials-grant) - [Obtaining Service Account token](#obtaining-service-account-token) - [Obtaining User token](#obtaining-user-token) - [Switching between Service Account and User](#switching-between-service-account-and-user) [OAuth 2.0 Auth](#oauth-20-auth) - [Authentication with OAuth2](#authentication-with-oauth2) - [Injecting existing token into BoxOAuth](#injecting-existing-token-into-boxoauth) [Retrieve current access token](#retrieve-current-access-token) [Refresh access token](#refresh-access-token) [Revoke token](#revoke-token) [Downscope token](#downscope-token) [Token storage](#token-storage) - [In-memory token storage](#in-memory-token-storage) - [Custom storage](#custom-storage) # Authentication methods ## Developer Token The fastest way to get started using the API is with developer token. A developer token is simply a short-lived access token that cannot be refreshed and can only be used with your own account. Therefore, they're only useful for testing an app and aren't suitable for production. You can obtain a developer token from your application's [developer console](https://app.box.com/developers/console) page. To create a `BoxClient` with a developer token, construct an `BoxDeveloperTokenAuth` object with the `token` set to the developer token and construct the client with that. ``` using Box.Sdk.Gen; var auth = new BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN_GOES_HERE"); var client = new BoxClient(auth: auth)); var me = await client.Users.GetUserMeAsync(); Console.WriteLine($"My user ID is {me.Id}"); ``` ## JWT Auth Before using JWT Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with JWT](https://developer.box.com/guides/authentication/jwt/jwt-setup/) ### Authenticate Enterprise JWT auth allows your application to authenticate itself with the Box API for a given enterprise. By default, your application has a [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account/) that represents it and can perform API calls. The Service Account is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. If you generated your public and private keys automatically through the [Box Developer Console](https://app.box.com/developers/console), you can use the JSON file created there to configure your SDK instance and create a client to make calls as the Service Account. Call one of static `JwtConfig` methods: `JwtConfig.FromConfigFile(configFilePath)` and pass JSON file local path or `JwtConfig.FromConfigJsonString(configJsonString)` and pass JSON config file content as string. ``` using Box.Sdk.Gen; var config = JwtConfig.FromConfigFile("/path/to/settings.json"); var jwtAuth = new BoxJwtAuth(config); var client = new BoxClient(jwtAuth); var me = await client.Users.GetUserMeAsync(); Console.WriteLine($"My user ID is {me.Id}"); ``` Otherwise, you'll need to provide the necessary configuration fields directly to the `JwtConfig` constructor: ``` using Box.Sdk.Gen; var jwtConfig = new JwtConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", jwtKeyId: "YOUR_JWT_KEY_ID", privateKey: "YOUR_PRIVATE_KEY", privateKeyPassphrase: "PASSPHRASE") { EnterpriseId = "YOUR_ENTERPRISE_ID" }; var jwtAuth = new BoxJwtAuth(jwtConfig); var serviceAccountClient = new BoxClient(jwtAuth); ``` ### Authenticate User App auth applications also often have associated [App Users](https://developer.box.com/guides/getting-started/user-types/app-users/), which are created and managed directly by the application — they do not have normal login credentials, and can only be accessed through the Box API by the application that created them. You may authenticate as the Service Account to provision and manage users, or as an individual app user to make calls as that user. See the [API documentation](https://developer.box.com/) for detailed instructions on how to use app auth. Clients for making calls as an App User can be created with the same JSON JWT config file generated through the [Box Developer Console](https://app.box.com/developers/console). Calling `jwtAuth.WithUserSubject("USER_ID")` method will return a new auth object, which is authenticated as the user with provided id, leaving the original object unchanged. ``` using Box.Sdk.Gen; var config = JwtConfig.FromConfigFile("/path/to/settings.json"); var jwtAuth = new BoxJwtAuth(config); var userAuth = jwtAuth.WithUserSubject("USER_ID"); var userClient = new BoxClient(userAuth); ``` Alternatively, clients for making calls as an App User can be created with the same `JwtConfig` constructor as in the above examples, similarly to creating a Service Account client. Simply pass the `userId` instead of `enterpriseId` when constructing the auth config instance: ``` using Box.Sdk.Gen; var jwtConfig = new JwtConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", jwtKeyId: "YOUR_JWT_KEY_ID", privateKey: "YOUR_PRIVATE_KEY", privateKeyPassphrase: "PASSPHRASE") { UserId = "USER_ID" }; var jwtAuth = new BoxJwtAuth(jwtConfig); var userClient = new BoxClient(jwtAuth); ``` ## Client Credentials Grant Before using Client Credentials Grant Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with Client Credentials Grant](https://developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) Client Credentials Grant Auth method allows you to obtain an access token by having client credentials and secret with enterprise or user ID, which allows you to work using service or user account. You can use `BoxCcgAuth` to initialize a client object the same way as for other authentication types: ``` using Box.Sdk.Gen; var config = new CcgConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", userId: "YOUR_USER_ID"); var auth = new BoxCcgAuth(config: config); var client = new BoxClient(auth: auth); var me = await client.Users.GetUserMeAsync(); Console.WriteLine($"My user ID is {me.Id}")); ``` Obtained token is valid for specified amount of time, it will be refreshed automatically by default. ### Obtaining Service Account token The [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account//) is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. To obtain service account you will have to provide enterprise ID with client id and secret: ``` using Box.Sdk.Gen; var config = new CcgConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET") { EnterpriseId: "YOUR_ENTERPRISE_ID" }; var auth = new BoxCcgAuth(config: config); var client = new BoxClient(auth: auth); var auth = new BoxCcgAuth(config: config); var client = new BoxClient(auth: auth); ``` ### Obtaining User token In order to enable obtaining user token you have to go to your application configuration that can be found [here](https://app.box.com/developers/console). In `Configuration` tab, in section `Advanced Features` select `Generate user access tokens`. Do not forget to re-authorize application if it was already authorized. To obtain user account you will have to provide user ID with client id and secret. ``` using Box.Sdk.Gen; var config = new CcgConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET") { UserId: "YOUR_USER_ID" }; var auth = new BoxCcgAuth(config: config); var client = new BoxClient(auth: auth); ``` ### Switching between Service Account and User In order to switch between being authenticated as Service Account and a User you can call: ``` await auth.WithEnterpriseSubjectAsync(enterpriseId: "YOUR_ENTERPRISE_ID"); ``` to authenticate as enterprise or ``` await auth.WithUserSubjectAsync(userId: "YOUR_USER_ID"); ``` to authenticate as User with provided ID. The new token will be automatically fetched with a next API call. ## OAuth 2.0 Auth ### Authentication with OAuth2 If your application needs to integrate with existing Box users who will provide their login credentials to grant your application access to their account, you will need to go through the standard OAuth2 login flow. A detailed guide for this process is available in the [Authentication with OAuth API documentation](https://developer.box.com/en/guides/authentication/oauth2/). Using an auth code is the most common way of authenticating with the Box API for existing Box users, to integrate with their accounts. Your application must provide a way for the user to login to Box (usually with a browser or web view) in order to obtain an auth code. ``` using Box.Sdk.Gen; var config = new OAuthConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET"); var auth = new BoxOAuth(config: config); // the URL to redirect the user to var authorizeUrl = auth.GetAuthorizeUrl(); ``` After a user logs in and grants your application access to their Box account, they will be redirected to your application's `redirect_uri` which will contain an auth code. This auth code can then be used along with your client ID and client secret to establish an API connection. You need to provide the auth code to the SDK to obtain an access token. Calling `oauth.getTokensAuthorizationCodeGrant('code')` will exchange the auth code for an access token and save it in the `BoxOAuth` token storage. The SDK will automatically refresh the token when needed. All you need to do is create a client object with the `BoxOAuth` object and start making API calls. ``` await auth.RetrieveTokenAsync(); ``` # Refresh access token Access tokens are short-lived and need to be refreshed periodically. The SDK will automatically refresh the token when needed. If you want to manually refresh the token, you can use the following code: ``` await auth.RefreshTokenAsync(); ``` # Revoke token Access tokens for a client can be revoked when needed. This call invalidates old token. For BoxCcgAuth and BoxJwtAuth you can still reuse the `auth` object to retrieve a new token. If you make any new call after revoking the token, a new token will be automatically retrieved. For BoxOAuth it would be necessary to manually go through the authentication process again. For BoxDeveloperTokenAuth, it is necessary to provide a DeveloperTokenConfig during initialization, containing the client ID and client secret. To revoke current client's tokens in the storage use the following code: ``` await auth.RevokeTokenAsync(); ``` # Downscope token You can exchange a client's access token for one with a lower scope, in order to restrict the permissions for a child client or to pass to a less secure location (e.g. a browser-based app). A downscoped token does not include a refresh token. In such a scenario, to obtain a new downscoped token, refresh the original token and utilize the newly acquired token to obtain the downscoped token. More information about downscoping tokens can be found [here](https://developer.box.com/guides/authentication/tokens/downscope/). If you want to learn more about available scopes please go [here](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#scopes-for-downscoping). For example to get a new token with only `item_preview` scope, restricted to a single file, suitable for the [Content Preview UI Element](https://developer.box.com/en/guides/embed/ui-elements/preview/) you can use the following code. You can also initialize `BoxDeveloperTokenAuth` with the retrieved access token and use it to create a new Client. ``` using Box.Sdk.Gen; resourcePath = 'https://api.box.com/2.0/files/123456789' AccessToken downscopedToken = await auth.DownscopeTokenAsync( scopes: Array.AsReadOnly(new [] {"item_rename","item_preview"}), resource: resourcePath ); BoxClient downscopedClient = new BoxClient(auth: new BoxDeveloperTokenAuth(token: downscopedToken.AccessTokenField)); ``` # Token storage ## In-memory token storage By default, the SDK stores the access token in volatile memory. When rerunning your application, the access token won't be reused from the previous run; a new token has to be obtained again. To use in-memory token storage, you don't need to do anything more than create an Auth class using AuthConfig, for example, for BoxOAuth: ``` using Box.Sdk.Gen; var config = new OAuthConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET"); var auth = new BoxOAuth(config: config); ``` ## Custom storage You can also provide a custom token storage class. All you need to do is create a class that inherits from `TokenStorage` and implements all of its abstract methods. Then, pass an instance of your class to the AuthConfig constructor. ``` using Box.Sdk.Gen; class MyCustomTokenStorage : ITokenStorage { public Task StoreAsync(AccessToken token) { // store token in your custom storage } public Task<AccessToken?> GetAsync() { // retrieve token from your custom storage } public Task ClearAsync() { // clear token from your custom storage } } var config = new OAuthConfig(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", tokenStorage: new MyCustomTokenStorage()); var auth = new BoxOAuth(config: config) ``` --- ### Authentication **Type:** page | **Section:** Additional Resources Authentication Authentication Authentication methods Developer Token Client Credentials Grant Obtaining Service Account token Obtaining User… # Authentication - [Authentication](#authentication) [Authentication methods](#authentication-methods) - [Developer Token](#developer-token) [Client Credentials Grant](#client-credentials-grant) - [Obtaining Service Account token](#obtaining-service-account-token) - [Obtaining User token](#obtaining-user-token) - [Switching between Service Account and User](#switching-between-service-account-and-user) [OAuth 2.0 Auth](#oauth-20-auth) - [Login flow (recommended)](#login-flow-recommended) - [Manual flow](#manual-flow) - [Injecting existing token into BoxOAuth](#injecting-existing-token-into-boxoauth) [Retrieve current access token](#retrieve-current-access-token) [Refresh access token](#refresh-access-token) [Revoke token](#revoke-token) [Downscope token](#downscope-token) [Token storage](#token-storage) - [In-memory token storage](#in-memory-token-storage) - [Keychain token storage](#keychain-token-storage) - [Custom storage](#custom-storage) # Authentication methods ## Developer Token The fastest way to get started using the API is with developer token. A developer token is simply a short-lived access token that cannot be refreshed and can only be used with your own account. Therefore, they're only useful for testing an app and aren't suitable for production. You can obtain a developer token from your application's [developer console](https://app.box.com/developers/console) page. To create a `BoxClient` with a developer token, construct an `BoxDeveloperTokenAuth` object with the `token` set to the developer token and construct the client with that. ``` import BoxSdkGen let auth = BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN_GOES_HERE") let client = BoxClient(auth: auth) let me = try await client.users.getUserMe() print("My user ID is \(me.id)") ``` ## Client Credentials Grant Before using Client Credentials Grant Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with Client Credentials Grant](https://developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) Client Credentials Grant Auth method allows you to obtain an access token by having client credentials and secret with enterprise or user ID, which allows you to work using service or user account. You can use `BoxCCGAuth` to initialize a client object the same way as for other authentication types: ``` import BoxSdkGen let config = CCGConfig( clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", userId: "YOUR_USER_ID" ) let auth = BoxCCGAuth(config: config) let client = BoxClient(auth: auth) let user = try await client.users.getUserMe() print("Id of the authenticated user is \(user.id)") ``` Obtained token is valid for specified amount of time, it will be refreshed automatically by default. ### Obtaining Service Account token The [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account//) is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. To obtain service account you will have to provide enterprise ID with client id and secret: ``` import BoxSdkGen let config = CCGConfig( clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", enterpriseId: "YOUR_ENTERPRISE_ID" ) let auth = BoxCCGAuth(config: config) let client = BoxClient(auth: auth) ``` ### Obtaining User token In order to enable obtaining user token you have to go to your application configuration that can be found [here](https://app.box.com/developers/console). In `Configuration` tab, in section `Advanced Features` select `Generate user access tokens`. Do not forget to re-authorize application if it was already authorized. To obtain user account you will have to provide user ID with client id and secret. ``` import BoxSdkGen let config = CCGConfig( clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", userId: "YOUR_USER_ID" ) let auth = BoxCCGAuth(config: config) let client = BoxClient(auth: auth) ``` ### Switching between Service Account and User In order to switch between being authenticated as Service Account and a User you can call: ``` let enterpriseAuth = auth.withEnterpriseSubject(enterpriseId: "YOUR_ENTERPRISE_ID") let enterpriseClient = BoxClient(auth: enterpriseAuth) ``` to authenticate as enterprise or ``` let userAuth = auth.withUserSubject(userId: "YOUR_USER_ID") let userClient = BoxClient(auth: userAuth) ``` to authenticate as User with provided ID. The new token will be automatically fetched with a next API call. ## OAuth 2.0 Auth If your application needs to integrate with existing Box users who will provide their login credentials to grant your application access to their account, you will need to go through the standard OAuth2 login flow. A detailed guide for this process is available in the [Authentication with OAuth API documentation](https://developer.box.com/en/guides/authentication/oauth2/). Using an auth code is the most common way of authenticating with the Box API for existing Box users, to integrate with their accounts. ### Login flow (recommended) The SDK provides a built-in flow for opening a secure web view, into which the user enters their Box login credentials. This requires that the application using the SDK registers itself for a custom URL scheme of the format `boxsdk-<<CLIENT ID>>://boxsdkoauth2redirect`. ``` do { // Initialize configuration with required clientId and clientSecret let config = OAuthConfig(clientId: "<<YOUR CLIENT ID HERE>>", clientSecret: "<<YOUR CLIENT SECRET HERE>>") // Initialize BoxOAuth with configuration let oauth = BoxOAuth(config: config) // Run login flow which opens a secure web view, // where users enter their login credentials to obtain an authorization code, // which is then exchanged for an access token. try await oauth.runLoginFlow(options: .init(), context: self) // Initialize BoxClient with already authorized OAuth let client = BoxClient(auth: oauth) // Use client to make API calls let folder = try await client.folders.getFolderById(folderId: "<<YOUR_FOLDER_ID>>") } catch { print("An error occurred: \(error)") } ``` If your application requires a custom URL scheme that differs from the default format `boxsdk-<<CLIENT ID>>://boxsdkoauth2redirect`, you have the option to pass in a custom `redirectUri` string when running the `runLoginFlow()` method: ``` try await oauth.runLoginFlow(options: AuthorizeUrlParams(redirectUri: "my-custom-scheme://redirect"), context: self) ``` This is the URL to which Box will redirect the user when authentication completes. This requires that the application using the SDK registers itself for the same custom callback URL. When running the `runLoginFlow(options:context:)` method, the *context* parameter is required. It's specify the context to target where in an application's UI the authorization view should be shown. This parameter is of type `ASWebAuthenticationPresentationContextProviding`, so in order to pass it, you have to adopt the mentioned `ASWebAuthenticationPresentationContextProviding` protocol. If you are running your code from the ViewController, you can add the following code to it: ``` extension ViewController: ASWebAuthenticationPresentationContextProviding { func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor { return view.window! } } ``` Then in the `context` argument, just pass self as we did in the previous examples. ### Manual flow As an alternative to login flow, where everything is done automatically, you can use the manual one. This flow requires you to actively obtain an authorization code and pass it to the OAuth for the purpose of exchanging it for an Access Token. To initiate this flow, you need to create the `authorizationUrl`, based on provided client data, and redirect to this url the user. ``` let auth = BoxOAuth(config: OAuthConfig(clientId: "<<YOUR CLIENT ID HERE>>", clientSecret: "<<YOUR CLIENT SECRET HERE>>") ) let authorizationUrl = auth.getAuthorizeUrl() ``` After a user logs in and grants your application access to their Box account, they will be redirected to your application's `redirectUri` which will contain an authorization code. This code can then be used along with your client ID and client secret to establish an API connection. You need to provide the auth code to the SDK to obtain an access token. Calling `auth.getTokensAuthorizationCodeGrant(authorizationCode: "<<YOUR_AUTHORIZATION_CODE>>")` will exchange the auth code for an access token and save it in the `BoxOAuth` token storage. The SDK will automatically refresh the token when needed. All you need to do is create a client object with the `BoxOAuth` object and start making API calls. ``` try await auth.retrieveToken(); ``` # Refresh access token Access tokens are short-lived and need to be refreshed periodically. The SDK will automatically refresh the token when needed. If you want to manually refresh the token, you can use the following code: ``` try await auth.refreshToken(); ``` # Revoke token Access tokens for a client can be revoked when needed. This call invalidates old token. For BoxCCGAuth you can still reuse the `auth` object to retrieve a new token. If you make any new call after revoking the token, a new token will be automatically retrieved. For BoxOAuth it would be necessary to manually go through the authentication process again. For BoxDeveloperTokenAuth, it is necessary to provide a DeveloperTokenConfig during initialization, containing the client ID and client secret. To revoke current client's tokens in the storage use the following code: ``` try await auth.revokeToken() ``` # Downscope token You can exchange an access token for one with a lower scope, in order to restrict the permissions for a child client or to pass to a less secure location (e.g. a browser-based app). A downscoped token does not include a refresh token. In that case, to get a new downscoped token, refresh the original refresh token and use that new token to get a downscoped token. More information about downscoping tokens can be found [here](https://developer.box.com/guides/authentication/tokens/downscope/). If you want to learn more about available scopes please go [here](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#scopes-for-downscoping). For example to get a new token with only `item_preview` scope, restricted to a single file, suitable for the [Content Preview UI Element](https://developer.box.com/en/guides/embed/ui-elements/preview/) you can the following code: You can also initialize `BoxDeveloperTokenAuth` with the retrieved access token and use it to create a new Client. ``` let resource = "https://api.box.com/2.0/files/123456789" let downscopedToken: AccessToken = try await auth.downscopeToken(scopes: ["item_preview"], resource: resource) let downscopedAuth = BoxDeveloperTokenAuth(token: downscopedToken.accessToken!) let downscopedClient = BoxClient(auth: downscopedAuth) ``` # Token storage ## In-memory token storage By default, the SDK stores the access token in volatile memory. When rerunning your application, the access token won't be reused from the previous run; a new token has to be obtained again. To use in-memory token storage, you don't need to do anything more than create an Auth class using AuthConfig, for example, for BoxOAuth: ``` let auth = BoxOAuth(config: OAuthConfig(clientId: "<<YOUR CLIENT ID HERE>>", clientSecret: "<<YOUR CLIENT SECRET HERE>>") ) ``` ## Keychain token storage If you want to keep an up-to-date access token on Apple's device Keychain, allowing it to be reused after rerunning your application, you can use the `KeychainTokenStorage` class. To enable storing the token in Keychain, you need to pass an object of type `KeychainTokenStorage` to the AuthConfig class. For example, for BoxOAuth: ``` // Initialize configuration with required clientId, clientSecret and tokenStorage let config = OAuthConfig(clientId: "<<YOUR CLIENT ID HERE>>", clientSecret: "<<YOUR CLIENT SECRET HERE>>", tokenStorage: KeychainTokenStorage()) // Initialize OAuth with configuration let oauth = BoxOAuth(config: config) // Initialize BoxClient let client = BoxClient(auth: oauth) // In the case of BoxOAuth authorization, if there is no access token in the keychain, // you must run the `runLoginFlow` process to retrieve the token which will be automatically stored in TokenStorage. if try! await storage.get() == nil { try await oauth.runLoginFlow(options: AuthorizeUrlParams(redirectUri: "my-custom-scheme://redirect"), context: self) } ``` ## Custom storage You can also provide a custom token storage class. All you need to do is create a class that implements `TokenStorage` protocol and pass an instance of your class to the AuthConfig constructor. ``` class MyCustomTokenStorage: TokenStorage { func store(token: AccessToken) async throws { // store token in your custom storage } func get() async throws -> AccessToken? { // retrieve token from your custom storage } func clear() async throws { // clear token from your custom storage } } let auth = BoxOAuth(config: OAuthConfig( clientId: "<<YOUR CLIENT ID HERE>>", clientSecret: "<<YOUR CLIENT SECRET HERE>>", tokenStorage: MyCustomTokenStorage() ) ) ``` --- ### Authentication **Type:** page | **Section:** Additional Resources Authentication Authentication Authentication methods Developer Token JWT Auth Authenticate Enterprise Authenticate user Client Credentials… # Authentication - [Authentication](#authentication) [Authentication methods](#authentication-methods) - [Developer Token](#developer-token) [JWT Auth](#jwt-auth) - [Authenticate Enterprise](#authenticate-enterprise) - [Authenticate user](#authenticate-user) [Client Credentials Grant](#client-credentials-grant) - [Obtaining Service Account token](#obtaining-service-account-token) - [Obtaining User token](#obtaining-user-token) - [Switching between Service Account and User](#switching-between-service-account-and-user) [OAuth 2.0 Auth](#oauth-20-auth) - [Authentication with OAuth2](#authentication-with-oauth2) - [Injecting existing token into BoxOAuth](#injecting-existing-token-into-boxoauth) [Retrieve current access token](#retrieve-current-access-token) [Refresh access token](#refresh-access-token) [Revoke token](#revoke-token) [Downscope token](#downscope-token) [Token storage](#token-storage) - [In-memory token storage](#in-memory-token-storage) - [Custom storage](#custom-storage) # Authentication methods ## Developer Token The fastest way to get started using the API is with developer token. A developer token is simply a short-lived access token that cannot be refreshed and can only be used with your own account. Therefore, they're only useful for testing an app and aren't suitable for production. You can obtain a developer token from your application's [developer console](https://app.box.com/developers/console) page. To create a `BoxClient` with a developer token, construct an `BoxDeveloperTokenAuth` object with the `token` set to the developer token and construct the client with that. ``` BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("YOUR-DEVELOPER-TOKEN"); BoxClient client = new BoxClient(auth); ``` ## JWT Auth Before using JWT Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with JWT](https://developer.box.com/guides/authentication/jwt/jwt-setup/) ### Authenticate Enterprise JWT auth allows your application to authenticate itself with the Box API for a given enterprise. By default, your application has a [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account/) that represents it and can perform API calls. The Service Account is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. If you generated your public and private keys automatically through the [Box Developer Console](https://app.box.com/developers/console), you can use the JSON file created there to configure your SDK instance and create a client to make calls as the Service Account. Call one of static `BoxJwtAuth` method: `JWTConfig.fromConfigFile("PATH_TO_CONFIG_FILE")` and pass JSON file local path or `JWTConfig.fromConfigJsonString(CONFIG_JSON_STRING)` and pass JSON config file content as string. ``` JWTConfig config = JWTConfig.fromConfigFile("src/example/config/config.json"); BoxJWTAuth auth = new BoxJWTAuth(config); BoxClient client = new BoxClient(auth); ``` Otherwise, you'll need to provide the necessary configuration fields directly to the `JWTConfig` constructor: ``` JWTConfig config = new JWTConfig.Builder("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", "JWT_KEY_ID", "PRIVATE_KEY", "PRIVATE_KEY_PASSWORD") .enterpriseId("123456") .build(); BoxJWTAuth auth = new BoxJWTAuth(config); BoxClient client = new BoxClient(auth); ``` ### Authenticate user App auth applications also often have associated [App Users](https://developer.box.com/guides/getting-started/user-types/app-users/), which are created and managed directly by the application — they do not have normal login credentials, and can only be accessed through the Box API by the application that created them. You may authenticate as the Service Account to provision and manage users, or as an individual app user to make calls as that user. See the [API documentation](https://developer.box.com/) for detailed instructions on how to use app auth. Clients for making calls as an App User can be created with the same JSON JWT config file generated through the [Box Developer Console](https://app.box.com/developers/console). Calling `jwtAuth.withUserSubject('USER_ID')` method will return a new auth object, which is authenticated as the user with provided id, leaving the original object unchanged. ``` JWTConfig config = JWTConfig.fromConfigFile("src/example/config/config.json"); BoxJWTAuth auth = new BoxJWTAuth(config); BoxJWTAuth userAuth = auth.withUserSubject("USER_ID"); BoxClient userClient = new BoxClient(userAuth); ``` Alternatively, clients for making calls as an App User can be created with the same `JWTConfig` constructor as in the above examples, similarly to creating a Service Account client. Simply pass the `userId` instead of `enterpriseId` when constructing the auth config instance: ``` JWTConfig config = new JWTConfig.Builder("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET", "JWT_KEY_ID", "PRIVATE_KEY", "PRIVATE_KEY_PASSWORD") .userId("123456") .build(); BoxJWTAuth auth = new BoxJWTAuth(config); BoxClient client = new BoxClient(auth); ``` ## Client Credentials Grant Before using Client Credentials Grant Auth make sure you set up correctly your Box platform app. The guide with all required steps can be found here: [Setup with Client Credentials Grant](https://developer.box.com/guides/authentication/client-credentials/client-credentials-setup/) Client Credentials Grant Auth method allows you to obtain an access token by having client credentials and secret with enterprise or user ID, which allows you to work using service or user account. You can use `CCGAuth` to initialize a client object the same way as for other authentication types: ``` CCGConfig config = new CCGConfig.Builder("YOUR_CLIENT", "YOUR_CLIENT_SECRET") .userId("USER_ID") .build(); BoxCCGAuth auth = new BoxCCGAuth(config); BoxClient client = new BoxClient(auth); UserFull user = client.users.getUserMe(); System.out.println(user.getName()); ``` Obtained token is valid for specified amount of time, it will be refreshed automatically by default. ### Obtaining Service Account token The [Service Account](https://developer.box.com/guides/getting-started/user-types/service-account//) is separate from the Box accounts of the application developer and the enterprise admin of any enterprise that has authorized the app — files stored in that account are not accessible in any other account by default, and vice versa. To obtain service account you will have to provide enterprise ID with client id and secret: ``` CCGConfig config = new CCGConfig.Builder("YOUR_CLIENT", "YOUR_CLIENT_SECRET") .enterpriseId("ENTERPRISE_ID") .build(); BoxCCGAuth auth = new BoxCCGAuth(config); BoxClient client = new BoxClient(auth); ``` ### Obtaining User token In order to enable obtaining user token you have to go to your application configuration that can be found [here](https://app.box.com/developers/console). In `Configuration` tab, in section `Advanced Features` select `Generate user access tokens`. Do not forget to re-authorize application if it was already authorized. To obtain user account you will have to provide user ID with client id and secret. ``` CCGConfig config = new CCGConfig.Builder("YOUR_CLIENT", "YOUR_CLIENT_SECRET") .userId("USER_ID") .build(); BoxCCGAuth auth = new BoxCCGAuth(config); BoxClient client = new BoxClient(auth); ``` ### Switching between Service Account and User You can easily switch to be authenticated as a Service Account or as a User. To create a new auth object authenticated as Service Account you can call: ``` BoxCCGAuth enterpriseAuth = auth.withEnterpriseSubject("ENTERPRISE_ID"); BoxClient enterpriseClient = new BoxClient(enterpriseAuth); ``` To authenticate with user subject call: ``` BoxCCGAuth userAuth = auth.withUserSubject("USER_ID"); BoxClient userClient = new BoxClient(userAuth); ``` The new token will be automatically fetched with a next API call. ## OAuth 2.0 Auth ### Authentication with OAuth2 If your application needs to integrate with existing Box users who will provide their login credentials to grant your application access to their account, you will need to go through the standard OAuth2 login flow. A detailed guide for this process is available in the [Authentication with OAuth API documentation](https://developer.box.com/en/guides/authentication/oauth2/). Using an auth code is the most common way of authenticating with the Box API for existing Box users, to integrate with their accounts. Your application must provide a way for the user to login to Box (usually with a browser or web view) in order to obtain an auth code. ``` BoxOAuth oauth = new OAuthConfig("CLIENT_ID", "CLIENT_SECRET"); String authorizationUrl = auoauthth.getAuthorizeUrl(); ``` After a user logs in and grants your application access to their Box account, they will be redirected to your application's `redirect_uri` which will contain an auth code. This auth code can then be used along with your client ID and client secret to establish an API connection. You need to provide the auth code to the SDK to obtain an access token. Calling `oauth.getTokensAuthorizationCodeGrant('code')` will exchange the auth code for an access token and save it in the `BoxOAuth` token storage. The SDK will automatically refresh the token when needed. All you need to do is create a client object with the `BoxOAuth` object and start making API calls. ``` auth.retrieveToken(); ``` # Refresh access token Access tokens are short-lived and need to be refreshed periodically. The SDK will automatically refresh the token when needed. If you want to manually refresh the token, you can use the following code: ``` auth.refreshToken(); ``` # Revoke token Access tokens for a client can be revoked when needed. This call invalidates old token. For BoxCcgAuth and BoxJwtAuth you can still reuse the `auth` object to retrieve a new token. If you make any new call after revoking the token, a new token will be automatically retrieved. For BoxOAuth it would be necessary to manually go through the authentication process again. For BoxDeveloperTokenAuth, it is necessary to provide a DeveloperTokenConfig during initialization, containing the client ID and client secret. To revoke current client's tokens in the storage use the following code: ``` auth.revokeToken(); // client's tokens have been revoked ``` # Downscope token You can exchange a client's access token for one with a lower scope, in order to restrict the permissions for a child client or to pass to a less secure location (e.g. a browser-based app). A downscoped token does not include a refresh token. In such a scenario, to obtain a new downscoped token, refresh the original token and utilize the newly acquired token to obtain the downscoped token. More information about downscoping tokens can be found [here](https://developer.box.com/guides/authentication/tokens/downscope/). If you want to learn more about available scopes please go [here](https://developer.box.com/guides/api-calls/permissions-and-errors/scopes/#scopes-for-downscoping). For example to get a new token with only `item_preview` scope, restricted to a single file, suitable for the [Content Preview UI Element](https://developer.box.com/en/guides/embed/ui-elements/preview/) you can use the following code. You can also initialize `BoxDeveloperTokenAuth` with the retrieved access token and use it to create a new Client. ``` String resource = "https://api.box.com/2.0/files/123456789"; List<String> scopes = List.of("item_preview"); AccessToken downscopedToken = auth.downscopeToken(scopes, resource, null, null); BoxDeveloperTokenAuth downscopedAuth = new BoxDeveloperTokenAuth(downscopedToken.getAccessToken()); BoxClient downscopedClient = new BoxClient(downscopedAuth); ``` # Token storage ## In-memory token storage By default, the SDK stores the access token in volatile memory. When rerunning your application, the access token won't be reused from the previous run; a new token has to be obtained again. To use in-memory token storage, you don't need to do anything more than create an Auth class using AuthConfig, for example, for OAuth: ``` OAuthConfig config = new OAuthConfig("CLIENT_ID", "CLIENT_SECRET"); BoxOAuth auth = new BoxOAuth(config); ``` ## Custom storage You can also provide a custom token storage class. All you need to do is create a class that implements `TokenStorage` interface and pass an instance of your class to the AuthConfig constructor. ``` TokenStorage customTokenStorage = new TokenStorage() { @Override public void store(AccessToken accessToken) { // Store the access token } @Override public AccessToken get() { // Retrieve the access token return null; } @Override public void clear() { // Clear the access token } }; OAuthConfig config = new OAuthConfig.Builder("CLIENT_ID", "CLIENT_SECRET") .tokenStorage(customTokenStorage) .build(); BoxOAuth auth = new BoxOAuth(config); ``` --- ### AuthorizationManager **Type:** page | **Section:** Additional Resources AuthorizationManager Authorize user Request access token Refresh access token Revoke access token Authorize user Authorize a user by sending… # AuthorizationManager - [Authorize user](#authorize-user) - [Request access token](#request-access-token) - [Refresh access token](#refresh-access-token) - [Revoke access token](#revoke-access-token) ## Authorize user Authorize a user by sending them through the [Box](https://box.com) website and request their permission to act on their behalf. This is the first step when authenticating a user using OAuth 2.0. To request a user's authorization to use the Box APIs on their behalf you will need to send a user to the URL with this format. This operation is performed by calling function `authorizeUser`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-authorize/). *Currently we don't have an example for calling `authorizeUser` in integration tests* ### Arguments queryParams `AuthorizeUserQueryParams` - Query parameters of authorizeUser method optionalsInput `AuthorizeUserOptionalsInput` ### Returns This function returns a value of type `undefined`. Does not return any data, but rather should be used in the browser. ## Request access token Request an Access Token using either a client-side obtained OAuth 2.0 authorization code or a server-side JWT assertion. An Access Token is a string that enables Box to verify that a request belongs to an authorized session. In the normal order of operations you will begin by requesting authentication from the [authorize](#get-authorize) endpoint and Box will send you an authorization code. You will then send this code to this endpoint to exchange it for an Access Token. The returned Access Token can then be used to to make Box API calls. This operation is performed by calling function `requestAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token/). *Currently we don't have an example for calling `requestAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Token` - Request body of requestAccessToken method optionalsInput `RequestAccessTokenOptionalsInput` ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Refresh access token Refresh an Access Token using its client ID, secret, and refresh token. This operation is performed by calling function `refreshAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token--refresh/). *Currently we don't have an example for calling `refreshAccessToken` in integration tests* ### Arguments requestBodyInput `PostOAuth2TokenRefreshAccessTokenInput` - Request body of refreshAccessToken method optionalsInput `RefreshAccessTokenOptionalsInput` ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Revoke access token Revoke an active Access Token, effectively logging a user out that has been previously authenticated. This operation is performed by calling function `revokeAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-revoke/). *Currently we don't have an example for calling `revokeAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Revoke` - Request body of revokeAccessToken method optionalsInput `RevokeAccessTokenOptionalsInput` ### Returns This function returns a value of type `undefined`. Returns an empty response when the token was successfully revoked. --- ### AuthorizationManager **Type:** page | **Section:** Additional Resources AuthorizationManager Authorize user Request access token Refresh access token Revoke access token Authorize user Authorize a user by sending… # AuthorizationManager - [Authorize user](#authorize-user) - [Request access token](#request-access-token) - [Refresh access token](#refresh-access-token) - [Revoke access token](#revoke-access-token) ## Authorize user Authorize a user by sending them through the [Box](https://box.com) website and request their permission to act on their behalf. This is the first step when authenticating a user using OAuth 2.0. To request a user's authorization to use the Box APIs on their behalf you will need to send a user to the URL with this format. This operation is performed by calling function `authorizeUser`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-authorize/). *Currently we don't have an example for calling `authorizeUser` in integration tests* ### Arguments queryParams `AuthorizeUserQueryParams` - Query parameters of authorizeUser method headers `AuthorizeUserHeaders` - Headers of authorizeUser method ### Returns This function returns a value of type `void`. Does not return any data, but rather should be used in the browser. ## Request access token Request an Access Token using either a client-side obtained OAuth 2.0 authorization code or a server-side JWT assertion. An Access Token is a string that enables Box to verify that a request belongs to an authorized session. In the normal order of operations you will begin by requesting authentication from the [authorize](#get-authorize) endpoint and Box will send you an authorization code. You will then send this code to this endpoint to exchange it for an Access Token. The returned Access Token can then be used to to make Box API calls. This operation is performed by calling function `requestAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token/). *Currently we don't have an example for calling `requestAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Token` - Request body of requestAccessToken method headers `RequestAccessTokenHeaders` - Headers of requestAccessToken method ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Refresh access token Refresh an Access Token using its client ID, secret, and refresh token. This operation is performed by calling function `refreshAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token--refresh/). *Currently we don't have an example for calling `refreshAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2TokenRefreshAccessToken` - Request body of refreshAccessToken method headers `RefreshAccessTokenHeaders` - Headers of refreshAccessToken method ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Revoke access token Revoke an active Access Token, effectively logging a user out that has been previously authenticated. This operation is performed by calling function `revokeAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-revoke/). *Currently we don't have an example for calling `revokeAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Revoke` - Request body of revokeAccessToken method headers `RevokeAccessTokenHeaders` - Headers of revokeAccessToken method ### Returns This function returns a value of type `void`. Returns an empty response when the token was successfully revoked. --- ### AuthorizationManager **Type:** page | **Section:** Additional Resources AuthorizationManager Authorize user Request access token Refresh access token Revoke access token Authorize user Authorize a user by sending… # AuthorizationManager - [Authorize user](#authorize-user) - [Request access token](#request-access-token) - [Refresh access token](#refresh-access-token) - [Revoke access token](#revoke-access-token) ## Authorize user Authorize a user by sending them through the [Box](https://box.com) website and request their permission to act on their behalf. This is the first step when authenticating a user using OAuth 2.0. To request a user's authorization to use the Box APIs on their behalf you will need to send a user to the URL with this format. This operation is performed by calling function `authorize_user`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-authorize/). *Currently we don't have an example for calling `authorize_user` in integration tests* ### Arguments response_type `AuthorizeUserResponseType` - The type of response we'd like to receive. client_id `str` - The Client ID of the application that is requesting to authenticate the user. To get the Client ID for your application, log in to your Box developer console and click the **Edit Application** link for the application you're working with. In the OAuth 2.0 Parameters section of the configuration page, find the item labelled `client_id`. The text of that item is your application's Client ID. redirect_uri `Optional[str]` - The URI to which Box redirects the browser after the user has granted or denied the application permission. This URI match one of the redirect URIs in the configuration of your application. It must be a valid HTTPS URI and it needs to be able to handle the redirection to complete the next step in the OAuth 2.0 flow. Although this parameter is optional, it must be a part of the authorization URL if you configured multiple redirect URIs for the application in the developer console. A missing parameter causes a `redirect_uri_missing` error after the user grants application access. state `Optional[str]` - A custom string of your choice. Box will pass the same string to the redirect URL when authentication is complete. This parameter can be used to identify a user on redirect, as well as protect against hijacked sessions and other exploits. scope `Optional[str]` - A space-separated list of application scopes you'd like to authenticate the user for. This defaults to all the scopes configured for the application in its configuration page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Does not return any data, but rather should be used in the browser. ## Request access token Request an Access Token using either a client-side obtained OAuth 2.0 authorization code or a server-side JWT assertion. An Access Token is a string that enables Box to verify that a request belongs to an authorized session. In the normal order of operations you will begin by requesting authentication from the [authorize](#get-authorize) endpoint and Box will send you an authorization code. You will then send this code to this endpoint to exchange it for an Access Token. The returned Access Token can then be used to to make Box API calls. This operation is performed by calling function `request_access_token`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token/). *Currently we don't have an example for calling `request_access_token` in integration tests* ### Arguments grant_type `RequestAccessTokenGrantType` - The type of request being made, either using a client-side obtained authorization code, a refresh token, a JWT assertion, client credentials grant or another access token for the purpose of downscoping a token. client_id `Optional[str]` - The Client ID of the application requesting an access token. Used in combination with `authorization_code`, `client_credentials`, or `urn:ietf:params:oauth:grant-type:jwt-bearer` as the `grant_type`. client_secret `Optional[str]` - The client secret of the application requesting an access token. Used in combination with `authorization_code`, `client_credentials`, or `urn:ietf:params:oauth:grant-type:jwt-bearer` as the `grant_type`. code `Optional[str]` - The client-side authorization code passed to your application by Box in the browser redirect after the user has successfully granted your application permission to make API calls on their behalf. Used in combination with `authorization_code` as the `grant_type`. refresh_token `Optional[str]` - A refresh token used to get a new access token with. Used in combination with `refresh_token` as the `grant_type`. assertion `Optional[str]` - A JWT assertion for which to request a new access token. Used in combination with `urn:ietf:params:oauth:grant-type:jwt-bearer` as the `grant_type`. subject_token `Optional[str]` - The token to exchange for a downscoped token. This can be a regular access token, a JWT assertion, or an app token. Used in combination with `urn:ietf:params:oauth:grant-type:token-exchange` as the `grant_type`. subject_token_type `Optional[RequestAccessTokenSubjectTokenType]` - The type of `subject_token` passed in. Used in combination with `urn:ietf:params:oauth:grant-type:token-exchange` as the `grant_type`. actor_token `Optional[str]` - The token used to create an annotator token. This is a JWT assertion. Used in combination with `urn:ietf:params:oauth:grant-type:token-exchange` as the `grant_type`. actor_token_type `Optional[RequestAccessTokenActorTokenType]` - The type of `actor_token` passed in. Used in combination with `urn:ietf:params:oauth:grant-type:token-exchange` as the `grant_type`. scope `Optional[str]` - The space-delimited list of scopes that you want apply to the new access token. The `subject_token` will need to have all of these scopes or the call will error with **401 Unauthorized**.. resource `Optional[str]` - Full URL for the file that the token should be generated for. box_subject_type `Optional[RequestAccessTokenBoxSubjectType]` - Used in combination with `client_credentials` as the `grant_type`. box_subject_id `Optional[str]` - Used in combination with `client_credentials` as the `grant_type`. Value is determined by `box_subject_type`. If `user` use user ID and if `enterprise` use enterprise ID. box_shared_link `Optional[str]` - Full URL of the shared link on the file or folder that the token should be generated for. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Refresh access token Refresh an Access Token using its client ID, secret, and refresh token. This operation is performed by calling function `refresh_access_token`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token--refresh/). *Currently we don't have an example for calling `refresh_access_token` in integration tests* ### Arguments grant_type `RefreshAccessTokenGrantType` - The type of request being made, in this case a refresh request. client_id `str` - The client ID of the application requesting to refresh the token. client_secret `str` - The client secret of the application requesting to refresh the token. refresh_token `str` - The refresh token to refresh. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Revoke access token Revoke an active Access Token, effectively logging a user out that has been previously authenticated. This operation is performed by calling function `revoke_access_token`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-revoke/). *Currently we don't have an example for calling `revoke_access_token` in integration tests* ### Arguments client_id `Optional[str]` - The Client ID of the application requesting to revoke the access token. client_secret `Optional[str]` - The client secret of the application requesting to revoke an access token. token `Optional[str]` - The access token to revoke. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Returns an empty response when the token was successfully revoked. --- ### AuthorizationManager **Type:** page | **Section:** Additional Resources AuthorizationManager Authorize user Request access token Refresh access token Revoke access token Authorize user Authorize a user by sending… # AuthorizationManager - [Authorize user](#authorize-user) - [Request access token](#request-access-token) - [Refresh access token](#refresh-access-token) - [Revoke access token](#revoke-access-token) ## Authorize user Authorize a user by sending them through the [Box](https://box.com) website and request their permission to act on their behalf. This is the first step when authenticating a user using OAuth 2.0. To request a user's authorization to use the Box APIs on their behalf you will need to send a user to the URL with this format. This operation is performed by calling function `authorizeUser`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-authorize/). *Currently we don't have an example for calling `authorizeUser` in integration tests* ### Arguments queryParams `AuthorizeUserQueryParams` - Query parameters of authorizeUser method headers `AuthorizeUserHeaders` - Headers of authorizeUser method ### Returns This function returns a value of type ``. Does not return any data, but rather should be used in the browser. ## Request access token Request an Access Token using either a client-side obtained OAuth 2.0 authorization code or a server-side JWT assertion. An Access Token is a string that enables Box to verify that a request belongs to an authorized session. In the normal order of operations you will begin by requesting authentication from the [authorize](#get-authorize) endpoint and Box will send you an authorization code. You will then send this code to this endpoint to exchange it for an Access Token. The returned Access Token can then be used to to make Box API calls. This operation is performed by calling function `requestAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token/). *Currently we don't have an example for calling `requestAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Token` - Request body of requestAccessToken method headers `RequestAccessTokenHeaders` - Headers of requestAccessToken method ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Refresh access token Refresh an Access Token using its client ID, secret, and refresh token. This operation is performed by calling function `refreshAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token--refresh/). *Currently we don't have an example for calling `refreshAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2TokenRefreshAccessToken` - Request body of refreshAccessToken method headers `RefreshAccessTokenHeaders` - Headers of refreshAccessToken method ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Revoke access token Revoke an active Access Token, effectively logging a user out that has been previously authenticated. This operation is performed by calling function `revokeAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-revoke/). *Currently we don't have an example for calling `revokeAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Revoke` - Request body of revokeAccessToken method headers `RevokeAccessTokenHeaders` - Headers of revokeAccessToken method ### Returns This function returns a value of type ``. Returns an empty response when the token was successfully revoked. --- ### AuthorizationManager **Type:** page | **Section:** Additional Resources AuthorizationManager Authorize user Request access token Refresh access token Revoke access token Authorize user Authorize a user by sending… # AuthorizationManager - [Authorize user](#authorize-user) - [Request access token](#request-access-token) - [Refresh access token](#refresh-access-token) - [Revoke access token](#revoke-access-token) ## Authorize user Authorize a user by sending them through the [Box](https://box.com) website and request their permission to act on their behalf. This is the first step when authenticating a user using OAuth 2.0. To request a user's authorization to use the Box APIs on their behalf you will need to send a user to the URL with this format. This operation is performed by calling function `authorizeUser`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-authorize/). *Currently we don't have an example for calling `authorizeUser` in integration tests* ### Arguments queryParams `AuthorizeUserQueryParams` - Query parameters of authorizeUser method optionalsInput `AuthorizeUserOptionalsInput` ### Returns This function returns a value of type `undefined`. Does not return any data, but rather should be used in the browser. ## Request access token Request an Access Token using either a client-side obtained OAuth 2.0 authorization code or a server-side JWT assertion. An Access Token is a string that enables Box to verify that a request belongs to an authorized session. In the normal order of operations you will begin by requesting authentication from the [authorize](#get-authorize) endpoint and Box will send you an authorization code. You will then send this code to this endpoint to exchange it for an Access Token. The returned Access Token can then be used to to make Box API calls. This operation is performed by calling function `requestAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token/). *Currently we don't have an example for calling `requestAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Token` - Request body of requestAccessToken method optionalsInput `RequestAccessTokenOptionalsInput` ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Refresh access token Refresh an Access Token using its client ID, secret, and refresh token. This operation is performed by calling function `refreshAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token--refresh/). *Currently we don't have an example for calling `refreshAccessToken` in integration tests* ### Arguments requestBodyInput `PostOAuth2TokenRefreshAccessTokenInput` - Request body of refreshAccessToken method optionalsInput `RefreshAccessTokenOptionalsInput` ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Revoke access token Revoke an active Access Token, effectively logging a user out that has been previously authenticated. This operation is performed by calling function `revokeAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-revoke/). *Currently we don't have an example for calling `revokeAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Revoke` - Request body of revokeAccessToken method optionalsInput `RevokeAccessTokenOptionalsInput` ### Returns This function returns a value of type `undefined`. Returns an empty response when the token was successfully revoked. --- ### AuthorizationManager **Type:** page | **Section:** Additional Resources AuthorizationManager Authorize user Request access token Refresh access token Revoke access token Authorize user Authorize a user by sending… # AuthorizationManager - [Authorize user](#authorize-user) - [Request access token](#request-access-token) - [Refresh access token](#refresh-access-token) - [Revoke access token](#revoke-access-token) ## Authorize user Authorize a user by sending them through the [Box](https://box.com) website and request their permission to act on their behalf. This is the first step when authenticating a user using OAuth 2.0. To request a user's authorization to use the Box APIs on their behalf you will need to send a user to the URL with this format. This operation is performed by calling function `authorize_user`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-authorize/). *Currently we don't have an example for calling `authorize_user` in integration tests* ### Arguments response_type `AuthorizeUserResponseType` - The type of response we'd like to receive. client_id `str` - The Client ID of the application that is requesting to authenticate the user. To get the Client ID for your application, log in to your Box developer console and click the **Edit Application** link for the application you're working with. In the OAuth 2.0 Parameters section of the configuration page, find the item labelled `client_id`. The text of that item is your application's Client ID. redirect_uri `Optional[str]` - The URI to which Box redirects the browser after the user has granted or denied the application permission. This URI match one of the redirect URIs in the configuration of your application. It must be a valid HTTPS URI and it needs to be able to handle the redirection to complete the next step in the OAuth 2.0 flow. Although this parameter is optional, it must be a part of the authorization URL if you configured multiple redirect URIs for the application in the developer console. A missing parameter causes a `redirect_uri_missing` error after the user grants application access. state `Optional[str]` - A custom string of your choice. Box will pass the same string to the redirect URL when authentication is complete. This parameter can be used to identify a user on redirect, as well as protect against hijacked sessions and other exploits. scope `Optional[str]` - A space-separated list of application scopes you'd like to authenticate the user for. This defaults to all the scopes configured for the application in its configuration page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Does not return any data, but rather should be used in the browser. ## Request access token Request an Access Token using either a client-side obtained OAuth 2.0 authorization code or a server-side JWT assertion. An Access Token is a string that enables Box to verify that a request belongs to an authorized session. In the normal order of operations you will begin by requesting authentication from the [authorize](#get-authorize) endpoint and Box will send you an authorization code. You will then send this code to this endpoint to exchange it for an Access Token. The returned Access Token can then be used to to make Box API calls. This operation is performed by calling function `request_access_token`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token/). *Currently we don't have an example for calling `request_access_token` in integration tests* ### Arguments grant_type `RequestAccessTokenGrantType` - The type of request being made, either using a client-side obtained authorization code, a refresh token, a JWT assertion, client credentials grant or another access token for the purpose of downscoping a token. client_id `Optional[str]` - The Client ID of the application requesting an access token. Used in combination with `authorization_code`, `client_credentials`, or `urn:ietf:params:oauth:grant-type:jwt-bearer` as the `grant_type`. client_secret `Optional[str]` - The client secret of the application requesting an access token. Used in combination with `authorization_code`, `client_credentials`, or `urn:ietf:params:oauth:grant-type:jwt-bearer` as the `grant_type`. code `Optional[str]` - The client-side authorization code passed to your application by Box in the browser redirect after the user has successfully granted your application permission to make API calls on their behalf. Used in combination with `authorization_code` as the `grant_type`. refresh_token `Optional[str]` - A refresh token used to get a new access token with. Used in combination with `refresh_token` as the `grant_type`. assertion `Optional[str]` - A JWT assertion for which to request a new access token. Used in combination with `urn:ietf:params:oauth:grant-type:jwt-bearer` as the `grant_type`. subject_token `Optional[str]` - The token to exchange for a downscoped token. This can be a regular access token, a JWT assertion, or an app token. Used in combination with `urn:ietf:params:oauth:grant-type:token-exchange` as the `grant_type`. subject_token_type `Optional[RequestAccessTokenSubjectTokenType]` - The type of `subject_token` passed in. Used in combination with `urn:ietf:params:oauth:grant-type:token-exchange` as the `grant_type`. actor_token `Optional[str]` - The token used to create an annotator token. This is a JWT assertion. Used in combination with `urn:ietf:params:oauth:grant-type:token-exchange` as the `grant_type`. actor_token_type `Optional[RequestAccessTokenActorTokenType]` - The type of `actor_token` passed in. Used in combination with `urn:ietf:params:oauth:grant-type:token-exchange` as the `grant_type`. scope `Optional[str]` - The space-delimited list of scopes that you want apply to the new access token. The `subject_token` will need to have all of these scopes or the call will error with **401 Unauthorized**.. resource `Optional[str]` - Full URL for the file that the token should be generated for. box_subject_type `Optional[RequestAccessTokenBoxSubjectType]` - Used in combination with `client_credentials` as the `grant_type`. box_subject_id `Optional[str]` - Used in combination with `client_credentials` as the `grant_type`. Value is determined by `box_subject_type`. If `user` use user ID and if `enterprise` use enterprise ID. box_shared_link `Optional[str]` - Full URL of the shared link on the file or folder that the token should be generated for. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Refresh access token Refresh an Access Token using its client ID, secret, and refresh token. This operation is performed by calling function `refresh_access_token`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token--refresh/). *Currently we don't have an example for calling `refresh_access_token` in integration tests* ### Arguments grant_type `RefreshAccessTokenGrantType` - The type of request being made, in this case a refresh request. client_id `str` - The client ID of the application requesting to refresh the token. client_secret `str` - The client secret of the application requesting to refresh the token. refresh_token `str` - The refresh token to refresh. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Revoke access token Revoke an active Access Token, effectively logging a user out that has been previously authenticated. This operation is performed by calling function `revoke_access_token`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-revoke/). *Currently we don't have an example for calling `revoke_access_token` in integration tests* ### Arguments client_id `Optional[str]` - The Client ID of the application requesting to revoke the access token. client_secret `Optional[str]` - The client secret of the application requesting to revoke an access token. token `Optional[str]` - The access token to revoke. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Returns an empty response when the token was successfully revoked. --- ### AuthorizationManager **Type:** page | **Section:** Additional Resources AuthorizationManager Authorize user Request access token Refresh access token Revoke access token Authorize user Authorize a user by sending… # AuthorizationManager - [Authorize user](#authorize-user) - [Request access token](#request-access-token) - [Refresh access token](#refresh-access-token) - [Revoke access token](#revoke-access-token) ## Authorize user Authorize a user by sending them through the [Box](https://box.com) website and request their permission to act on their behalf. This is the first step when authenticating a user using OAuth 2.0. To request a user's authorization to use the Box APIs on their behalf you will need to send a user to the URL with this format. This operation is performed by calling function `authorizeUser`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-authorize/). *Currently we don't have an example for calling `authorizeUser` in integration tests* ### Arguments queryParams `AuthorizeUserQueryParams` - Query parameters of authorizeUser method headers `AuthorizeUserHeaders` - Headers of authorizeUser method ### Returns This function returns a value of type ``. Does not return any data, but rather should be used in the browser. ## Request access token Request an Access Token using either a client-side obtained OAuth 2.0 authorization code or a server-side JWT assertion. An Access Token is a string that enables Box to verify that a request belongs to an authorized session. In the normal order of operations you will begin by requesting authentication from the [authorize](#get-authorize) endpoint and Box will send you an authorization code. You will then send this code to this endpoint to exchange it for an Access Token. The returned Access Token can then be used to to make Box API calls. This operation is performed by calling function `requestAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token/). *Currently we don't have an example for calling `requestAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Token` - Request body of requestAccessToken method headers `RequestAccessTokenHeaders` - Headers of requestAccessToken method ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Refresh access token Refresh an Access Token using its client ID, secret, and refresh token. This operation is performed by calling function `refreshAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token--refresh/). *Currently we don't have an example for calling `refreshAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2TokenRefreshAccessToken` - Request body of refreshAccessToken method headers `RefreshAccessTokenHeaders` - Headers of refreshAccessToken method ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Revoke access token Revoke an active Access Token, effectively logging a user out that has been previously authenticated. This operation is performed by calling function `revokeAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-revoke/). *Currently we don't have an example for calling `revokeAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Revoke` - Request body of revokeAccessToken method headers `RevokeAccessTokenHeaders` - Headers of revokeAccessToken method ### Returns This function returns a value of type ``. Returns an empty response when the token was successfully revoked. --- ### AuthorizationManager **Type:** page | **Section:** Additional Resources AuthorizationManager Authorize user Request access token Refresh access token Revoke access token Authorize user Authorize a user by sending… # AuthorizationManager - [Authorize user](#authorize-user) - [Request access token](#request-access-token) - [Refresh access token](#refresh-access-token) - [Revoke access token](#revoke-access-token) ## Authorize user Authorize a user by sending them through the [Box](https://box.com) website and request their permission to act on their behalf. This is the first step when authenticating a user using OAuth 2.0. To request a user's authorization to use the Box APIs on their behalf you will need to send a user to the URL with this format. This operation is performed by calling function `authorizeUser`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-authorize/). *Currently we don't have an example for calling `authorizeUser` in integration tests* ### Arguments queryParams `AuthorizeUserQueryParams` - Query parameters of authorizeUser method headers `AuthorizeUserHeaders` - Headers of authorizeUser method ### Returns This function returns a value of type `void`. Does not return any data, but rather should be used in the browser. ## Request access token Request an Access Token using either a client-side obtained OAuth 2.0 authorization code or a server-side JWT assertion. An Access Token is a string that enables Box to verify that a request belongs to an authorized session. In the normal order of operations you will begin by requesting authentication from the [authorize](#get-authorize) endpoint and Box will send you an authorization code. You will then send this code to this endpoint to exchange it for an Access Token. The returned Access Token can then be used to to make Box API calls. This operation is performed by calling function `requestAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token/). *Currently we don't have an example for calling `requestAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Token` - Request body of requestAccessToken method headers `RequestAccessTokenHeaders` - Headers of requestAccessToken method ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Refresh access token Refresh an Access Token using its client ID, secret, and refresh token. This operation is performed by calling function `refreshAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-token--refresh/). *Currently we don't have an example for calling `refreshAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2TokenRefreshAccessToken` - Request body of refreshAccessToken method headers `RefreshAccessTokenHeaders` - Headers of refreshAccessToken method ### Returns This function returns a value of type `AccessToken`. Returns a new Access Token that can be used to make authenticated API calls by passing along the token in a authorization header as follows `Authorization: Bearer <Token>`. ## Revoke access token Revoke an active Access Token, effectively logging a user out that has been previously authenticated. This operation is performed by calling function `revokeAccessToken`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-oauth2-revoke/). *Currently we don't have an example for calling `revokeAccessToken` in integration tests* ### Arguments requestBody `PostOAuth2Revoke` - Request body of revokeAccessToken method headers `RevokeAccessTokenHeaders` - Headers of revokeAccessToken method ### Returns This function returns a value of type `void`. Returns an empty response when the token was successfully revoked. --- ### AvatarsManager **Type:** page | **Section:** Additional Resources AvatarsManager Get user avatar Add or update user avatar Delete user avatar Get user avatar Retrieves an image of a the user's avatar. This… # AvatarsManager - [Get user avatar](#get-user-avatar) - [Add or update user avatar](#add-or-update-user-avatar) - [Delete user avatar](#delete-user-avatar) ## Get user avatar Retrieves an image of a the user's avatar. This operation is performed by calling function `getUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-avatar/). ``` await client.avatars.getUserAvatar(user.id); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" optionalsInput `GetUserAvatarOptionalsInput` ### Returns This function returns a value of type `ByteStream`. When an avatar can be found for the user the image data will be returned in the body of the response. ## Add or update user avatar Adds or updates a user avatar. This operation is performed by calling function `createUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-avatar/). ``` await client.avatars.createUserAvatar(user.id, { pic: decodeBase64ByteStream( 'iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEW10NBjBBbqAAAAH0lEQVRoge3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABmmDh1QAAAABJRU5ErkJggg==', ), picContentType: 'image/png', picFileName: 'avatar.png', } satisfies CreateUserAvatarRequestBody); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" requestBody `CreateUserAvatarRequestBody` - Request body of createUserAvatar method optionalsInput `CreateUserAvatarOptionalsInput` ### Returns This function returns a value of type `UserAvatar`. `ok`: Returns the `pic_urls` object with URLs to existing user avatars that were updated.`created`: Returns the `pic_urls` object with URLS to user avatars uploaded to Box with the request. ## Delete user avatar Removes an existing user avatar. You cannot reverse this operation. This operation is performed by calling function `deleteUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-avatar/). ``` await client.avatars.deleteUserAvatar(user.id); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" optionalsInput `DeleteUserAvatarOptionalsInput` ### Returns This function returns a value of type `undefined`. `no_content`: Removes the avatar and returns an empty response. --- ### AvatarsManager **Type:** page | **Section:** Additional Resources AvatarsManager Get user avatar Add or update user avatar Delete user avatar Get user avatar Retrieves an image of a the user's avatar. This… # AvatarsManager - [Get user avatar](#get-user-avatar) - [Add or update user avatar](#add-or-update-user-avatar) - [Delete user avatar](#delete-user-avatar) ## Get user avatar Retrieves an image of a the user's avatar. This operation is performed by calling function `getUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-avatar/). ``` client.getAvatars().getUserAvatar(user.getId()) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" headers `GetUserAvatarHeaders` - Headers of getUserAvatar method ### Returns This function returns a value of type `InputStream`. When an avatar can be found for the user the image data will be returned in the body of the response. ## Add or update user avatar Adds or updates a user avatar. This operation is performed by calling function `createUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-avatar/). ``` client.getAvatars().createUserAvatar(user.getId(), new CreateUserAvatarRequestBody.Builder(decodeBase64ByteStream("iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEW10NBjBBbqAAAAH0lEQVRoge3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABmmDh1QAAAABJRU5ErkJggg==")).picFileName("avatar.png").picContentType("image/png").build()) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" requestBody `CreateUserAvatarRequestBody` - Request body of createUserAvatar method headers `CreateUserAvatarHeaders` - Headers of createUserAvatar method ### Returns This function returns a value of type `UserAvatar`. `ok`: Returns the `pic_urls` object with URLs to existing user avatars that were updated.`created`: Returns the `pic_urls` object with URLS to user avatars uploaded to Box with the request. ## Delete user avatar Removes an existing user avatar. You cannot reverse this operation. This operation is performed by calling function `deleteUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-avatar/). ``` client.getAvatars().deleteUserAvatar(user.getId()) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" headers `DeleteUserAvatarHeaders` - Headers of deleteUserAvatar method ### Returns This function returns a value of type `void`. `no_content`: Removes the avatar and returns an empty response. --- ### AvatarsManager **Type:** page | **Section:** Additional Resources AvatarsManager Get user avatar Add or update user avatar Delete user avatar Get user avatar Retrieves an image of a the user's avatar. This… # AvatarsManager - [Get user avatar](#get-user-avatar) - [Add or update user avatar](#add-or-update-user-avatar) - [Delete user avatar](#delete-user-avatar) ## Get user avatar Retrieves an image of a the user's avatar. This operation is performed by calling function `get_user_avatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-avatar/). ``` client.avatars.get_user_avatar(user.id) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ByteStream`. When an avatar can be found for the user the image data will be returned in the body of the response. ## Add or update user avatar Adds or updates a user avatar. This operation is performed by calling function `create_user_avatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-avatar/). ``` client.avatars.create_user_avatar( user.id, decode_base_64_byte_stream( "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEW10NBjBBbqAAAAH0lEQVRoge3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABmmDh1QAAAABJRU5ErkJggg==" ), pic_file_name="avatar.png", pic_content_type="image/png", ) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" pic `ByteStream` - The image file to be uploaded to Box. Accepted file extensions are `.jpg` or `.png`. The maximum file size is 1MB. pic_file_name `Optional[str]` pic_content_type `Optional[str]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UserAvatar`. `ok`: Returns the `pic_urls` object with URLs to existing user avatars that were updated.`created`: Returns the `pic_urls` object with URLS to user avatars uploaded to Box with the request. ## Delete user avatar Removes an existing user avatar. You cannot reverse this operation. This operation is performed by calling function `delete_user_avatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-avatar/). ``` client.avatars.delete_user_avatar(user.id) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. `no_content`: Removes the avatar and returns an empty response. --- ### AvatarsManager **Type:** page | **Section:** Additional Resources AvatarsManager Get user avatar Add or update user avatar Delete user avatar Get user avatar Retrieves an image of a the user's avatar. This… # AvatarsManager - [Get user avatar](#get-user-avatar) - [Add or update user avatar](#add-or-update-user-avatar) - [Delete user avatar](#delete-user-avatar) ## Get user avatar Retrieves an image of a the user's avatar. This operation is performed by calling function `getUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-avatar/). ``` try await client.avatars.getUserAvatar(userId: user.id, downloadDestinationUrl: destinationPath) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" downloadDestinationUrl `URL` - The URL on disk where the file will be saved once it has been downloaded. headers `GetUserAvatarHeaders` - Headers of getUserAvatar method ### Returns This function returns a value of type `URL?`. When an avatar can be found for the user the image data will be returned in the body of the response. ## Add or update user avatar Adds or updates a user avatar. This operation is performed by calling function `createUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-avatar/). ``` try await client.avatars.createUserAvatar(userId: user.id, requestBody: CreateUserAvatarRequestBody(pic: Utils.decodeBase64ByteStream(data: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEW10NBjBBbqAAAAH0lEQVRoge3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABmmDh1QAAAABJRU5ErkJggg=="), picContentType: "image/png", picFileName: "avatar.png")) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" requestBody `CreateUserAvatarRequestBody` - Request body of createUserAvatar method headers `CreateUserAvatarHeaders` - Headers of createUserAvatar method ### Returns This function returns a value of type `UserAvatar`. `ok`: Returns the `pic_urls` object with URLs to existing user avatars that were updated.`created`: Returns the `pic_urls` object with URLS to user avatars uploaded to Box with the request. ## Delete user avatar Removes an existing user avatar. You cannot reverse this operation. This operation is performed by calling function `deleteUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-avatar/). ``` try await client.avatars.deleteUserAvatar(userId: user.id) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" headers `DeleteUserAvatarHeaders` - Headers of deleteUserAvatar method ### Returns This function returns a value of type ``. `no_content`: Removes the avatar and returns an empty response. --- ### AvatarsManager **Type:** page | **Section:** Additional Resources AvatarsManager Get user avatar Add or update user avatar Delete user avatar Get user avatar Retrieves an image of a the user's avatar. This… # AvatarsManager - [Get user avatar](#get-user-avatar) - [Add or update user avatar](#add-or-update-user-avatar) - [Delete user avatar](#delete-user-avatar) ## Get user avatar Retrieves an image of a the user's avatar. This operation is performed by calling function `getUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-avatar/). ``` await client.avatars.getUserAvatar(user.id); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" optionalsInput `GetUserAvatarOptionalsInput` ### Returns This function returns a value of type `ByteStream`. When an avatar can be found for the user the image data will be returned in the body of the response. ## Add or update user avatar Adds or updates a user avatar. This operation is performed by calling function `createUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-avatar/). ``` await client.avatars.createUserAvatar(user.id, { pic: decodeBase64ByteStream( 'iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEW10NBjBBbqAAAAH0lEQVRoge3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABmmDh1QAAAABJRU5ErkJggg==', ), picContentType: 'image/png', picFileName: 'avatar.png', } satisfies CreateUserAvatarRequestBody); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" requestBody `CreateUserAvatarRequestBody` - Request body of createUserAvatar method optionalsInput `CreateUserAvatarOptionalsInput` ### Returns This function returns a value of type `UserAvatar`. `ok`: Returns the `pic_urls` object with URLs to existing user avatars that were updated.`created`: Returns the `pic_urls` object with URLS to user avatars uploaded to Box with the request. ## Delete user avatar Removes an existing user avatar. You cannot reverse this operation. This operation is performed by calling function `deleteUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-avatar/). ``` await client.avatars.deleteUserAvatar(user.id); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" optionalsInput `DeleteUserAvatarOptionalsInput` ### Returns This function returns a value of type `undefined`. `no_content`: Removes the avatar and returns an empty response. --- ### AvatarsManager **Type:** page | **Section:** Additional Resources AvatarsManager Get user avatar Add or update user avatar Delete user avatar Get user avatar Retrieves an image of a the user's avatar. This… # AvatarsManager - [Get user avatar](#get-user-avatar) - [Add or update user avatar](#add-or-update-user-avatar) - [Delete user avatar](#delete-user-avatar) ## Get user avatar Retrieves an image of a the user's avatar. This operation is performed by calling function `get_user_avatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-avatar/). ``` client.avatars.get_user_avatar(user.id) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ByteStream`. When an avatar can be found for the user the image data will be returned in the body of the response. ## Add or update user avatar Adds or updates a user avatar. This operation is performed by calling function `create_user_avatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-avatar/). ``` client.avatars.create_user_avatar( user.id, decode_base_64_byte_stream( "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEW10NBjBBbqAAAAH0lEQVRoge3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABmmDh1QAAAABJRU5ErkJggg==" ), pic_file_name="avatar.png", pic_content_type="image/png", ) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" pic `ByteStream` - The image file to be uploaded to Box. Accepted file extensions are `.jpg` or `.png`. The maximum file size is 1MB. pic_file_name `Optional[str]` pic_content_type `Optional[str]` extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UserAvatar`. `ok`: Returns the `pic_urls` object with URLs to existing user avatars that were updated.`created`: Returns the `pic_urls` object with URLS to user avatars uploaded to Box with the request. ## Delete user avatar Removes an existing user avatar. You cannot reverse this operation. This operation is performed by calling function `delete_user_avatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-avatar/). ``` client.avatars.delete_user_avatar(user.id) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. `no_content`: Removes the avatar and returns an empty response. --- ### AvatarsManager **Type:** page | **Section:** Additional Resources AvatarsManager Get user avatar Add or update user avatar Delete user avatar Get user avatar Retrieves an image of a the user's avatar. This… # AvatarsManager - [Get user avatar](#get-user-avatar) - [Add or update user avatar](#add-or-update-user-avatar) - [Delete user avatar](#delete-user-avatar) ## Get user avatar Retrieves an image of a the user's avatar. This operation is performed by calling function `getUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-avatar/). ``` try await client.avatars.getUserAvatar(userId: user.id, downloadDestinationUrl: destinationPath) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" downloadDestinationUrl `URL` - The URL on disk where the file will be saved once it has been downloaded. headers `GetUserAvatarHeaders` - Headers of getUserAvatar method ### Returns This function returns a value of type `URL?`. When an avatar can be found for the user the image data will be returned in the body of the response. ## Add or update user avatar Adds or updates a user avatar. This operation is performed by calling function `createUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-avatar/). ``` try await client.avatars.createUserAvatar(userId: user.id, requestBody: CreateUserAvatarRequestBody(pic: Utils.decodeBase64ByteStream(data: "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEW10NBjBBbqAAAAH0lEQVRoge3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABmmDh1QAAAABJRU5ErkJggg=="), picContentType: "image/png", picFileName: "avatar.png")) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" requestBody `CreateUserAvatarRequestBody` - Request body of createUserAvatar method headers `CreateUserAvatarHeaders` - Headers of createUserAvatar method ### Returns This function returns a value of type `UserAvatar`. `ok`: Returns the `pic_urls` object with URLs to existing user avatars that were updated.`created`: Returns the `pic_urls` object with URLS to user avatars uploaded to Box with the request. ## Delete user avatar Removes an existing user avatar. You cannot reverse this operation. This operation is performed by calling function `deleteUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-avatar/). ``` try await client.avatars.deleteUserAvatar(userId: user.id) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" headers `DeleteUserAvatarHeaders` - Headers of deleteUserAvatar method ### Returns This function returns a value of type ``. `no_content`: Removes the avatar and returns an empty response. --- ### AvatarsManager **Type:** page | **Section:** Additional Resources AvatarsManager Get user avatar Add or update user avatar Delete user avatar Get user avatar Retrieves an image of a the user's avatar. This… # AvatarsManager - [Get user avatar](#get-user-avatar) - [Add or update user avatar](#add-or-update-user-avatar) - [Delete user avatar](#delete-user-avatar) ## Get user avatar Retrieves an image of a the user's avatar. This operation is performed by calling function `getUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-avatar/). ``` client.getAvatars().getUserAvatar(user.getId()) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" headers `GetUserAvatarHeaders` - Headers of getUserAvatar method ### Returns This function returns a value of type `InputStream`. When an avatar can be found for the user the image data will be returned in the body of the response. ## Add or update user avatar Adds or updates a user avatar. This operation is performed by calling function `createUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-avatar/). ``` client.getAvatars().createUserAvatar(user.getId(), new CreateUserAvatarRequestBody.Builder(decodeBase64ByteStream("iVBORw0KGgoAAAANSUhEUgAAAQAAAAEAAQMAAABmvDolAAAAA1BMVEW10NBjBBbqAAAAH0lEQVRoge3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAvg0hAAABmmDh1QAAAABJRU5ErkJggg==")).picFileName("avatar.png").picContentType("image/png").build()) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" requestBody `CreateUserAvatarRequestBody` - Request body of createUserAvatar method headers `CreateUserAvatarHeaders` - Headers of createUserAvatar method ### Returns This function returns a value of type `UserAvatar`. `ok`: Returns the `pic_urls` object with URLs to existing user avatars that were updated.`created`: Returns the `pic_urls` object with URLS to user avatars uploaded to Box with the request. ## Delete user avatar Removes an existing user avatar. You cannot reverse this operation. This operation is performed by calling function `deleteUserAvatar`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-avatar/). ``` client.getAvatars().deleteUserAvatar(user.getId()) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" headers `DeleteUserAvatarHeaders` - Headers of deleteUserAvatar method ### Returns This function returns a value of type `void`. `no_content`: Removes the avatar and returns an empty response. --- ### Box cURL samples **Type:** page | **Section:** Additional Resources Box cURL samples Authorize a user Authorize a user by sending them through the Box website and request their permission to act on their… # Box cURL samples ## Authorize a user Authorize a user by sending them through the [Box](https://box.com) website and request their permission to act on their behalf. This is the first step when authenticating a user using OAuth 2.0. To request a user's authorization to use the Box APIs on their behalf you will need to send a user to the URL with this format. ``` curl -i -X GET "https://account.box.com/api/oauth2/authorize?response_type=code&client_id=ly1nj6n11vionaie65emwzk575hnnmrk&redirect_uri=http://example.com/auth/callback" ``` ## Request an access token Request an Access Token using either a client-side obtained OAuth2 authorization code or a server-side JWT assertion. An Access Token is a string that enables Box to verify that a request belongs to an authorized session. In the normal order of operations you will begin by requesting authentication from the [authorize](#get-authorize) endpoint and Box will send you an authorization code. You will then send this code to this endpoint to exchange it for an Access Token. The returned Access Token can then be used to to make Box API calls. ``` curl -i -X POST "https://api.box.com/oauth2/token" \ -H "content-type: application/x-www-form-urlencoded" \ -d "client_id=[CLIENT_ID]" \ -d "client_secret=[CLIENT_SECRET]" \ -d "code=[CODE]" \ -d "grant_type=authorization_code" ``` ## Refresh an access token ``` curl -i -X POST "https://api.box.com/oauth2/token" \ -H "content-type: application/x-www-form-urlencoded" \ -d "client_id=[CLIENT_ID]" \ -d "client_secret=[CLIENT_SECRET]" \ -d "refresh_token=[REFRESH_TOKEN]" \ -d "grant_type=refresh_token" ``` ## Downscope a token ``` curl -i -X POST "https://api.box.com/oauth2/token" \ -H "content-type: application/x-www-form-urlencoded" \ -d "subject_token=[ACCESS_TOKEN]" \ -d "subject_token_type=urn:ietf:params:oauth:token-type:access_token" \ -d "scope=item_upload item_preview base_explorer" \ -d "resource=https://api.box.com/2.0/folders/123456" \ -d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" ``` ## Revoke an access token Revoke an active Access Token, effectively logging a user out that has been previously authenticated. ``` curl -i -X POST "https://api.box.com/oauth2/revoke" \ -H "content-type: application/x-www-form-urlencoded" \ -d "client_id=[CLIENT_ID]" \ -d "client_secret=[CLIENT_SECRET]" \ -d "token=[ACCESS_TOKEN]" ``` ## Authentication with Client Credentials Creates a token using Client Credentials Grant, which allows you to log in as a Service Account. ``` curl -i -X POST "https://api.box.com/oauth2/token" \ -H "content-type: application/x-www-form-urlencoded" \ -d "client_id=[CLIENT_ID]" \ -d "client_secret=[CLIENT_SECRET]" \ -d "grant_type=client_credentials" \ -d "box_subject_type=enterprise" \ -d "box_subject_id=[ENTERPRISE_ID]" ``` ## Authentication with CCG as an admin or managed user Creates a token using Client Credentials Grant, which allows you to log in as an admin or a managed user. ``` curl -i -X POST "https://api.box.com/oauth2/token" \ -H "content-type: application/x-www-form-urlencoded" \ -d "client_id=[CLIENT_ID]" \ -d "client_secret=[CLIENT_SECRET]" \ -d "grant_type=client_credentials" \ -d "box_subject_type=user" \ -d "box_subject_id=[USER_ID]" ``` ## Authentication with CCG as app user Creates a token using Client Credentials Grant, which allows you to log in as any app user. ``` curl -i -X POST "https://api.box.com/oauth2/token" \ -H "content-type: application/x-www-form-urlencoded" \ -d "client_id=[CLIENT_ID]" \ -d "client_secret=[CLIENT_SECRET]" \ -d "grant_type=client_credentials" \ -d "box_subject_type=user" \ -d "box_subject_id=[APPUSER_ID]" ``` ## Send request to AI ``` curl -i -L POST "https://api.box.com/2.0/ai/ask" \ -H "content-type: application/json" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "mode": "single_item_qa", "prompt": "What is the value provided by public APIs based on this document?", "items": [ { "type": "file", "id": "9842787262" } ], "dialogue_history": [ { "prompt": "Make my email about public APIs sound more professional", "answer": "Here is the first draft of your professional email about public APIs", "created_at": "2013-12-12T10:53:43-08:00" } ], "include_citations": true, "ai_agent": { "type": "ai_agent_ask", "long_text": { "model": "azure__openai__gpt_4o_mini", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?", }, "basic_text": { "model": "azure__openai__gpt_4o_mini", } } }' ``` ## Send request to AI (extended) ``` curl -i -L POST "https://api.box.com/2.0/ai/ask" \ -H "content-type: application/json" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "mode": "single_item_qa", "prompt": "What is the value provided by public APIs based on this document?", "items": [ { "type": "file", "id": "9842787262" } ], "dialogue_history": [ { "prompt": "Make my email about public APIs sound more professional", "answer": "Here is the first draft of your professional email about public APIs", "created_at": "2013-12-12T10:53:43-08:00" } ], "include_citations": true, "ai_agent": { "type": "ai_agent_ask", "long_text": { "model": "azure__openai__gpt_4o_mini", "system_message": "You are a helpful travel assistant specialized in budget travel", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?", "num_tokens_for_completion": 8400, "llm_endpoint_params": { "type": "openai_params", "temperature": 0.0, "top_p": 1.0, "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>" }, "embeddings": { "model": "openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 8400 } } }, "basic_text": { "model": "azure__openai__gpt_4o_mini", "system_message": "You are a helpful travel assistant specialized in budget travel", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?", "num_tokens_for_completion": 8400, "llm_endpoint_params": { "type": "openai_params", "temperature": 0.0, "top_p": 1.0, "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>" } }, "long_text_multi": { "model": "azure__openai__gpt_4o_mini", "system_message": "You are a helpful travel assistant specialized in budget travel", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?", "num_tokens_for_completion": 8400, "llm_endpoint_params": { "type": "openai_params", "temperature": 0.0, "top_p": 1.0, "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>" }, "embeddings": { "model": "openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 8400 } } }, "basic_text_multi": { "model": "azure__openai__gpt_4o_mini", "system_message": "You are a helpful travel assistant specialized in budget travel", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?", "num_tokens_for_completion": 8400, "llm_endpoint_params": { "type": "openai_params", "temperature": 0.0, "top_p": 1.0, "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>" } } }' ``` ## Send text generation request to AI ``` curl -i -L POST "https://api.box.com/2.0/ai/text_gen" \ -H "content-type: application/json" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "prompt": "Write a social media post about protein powder.", "items": [ { "id": "12345678", "type": "file", "content": "More information about protein powders" }, ], "dialogue_history": [ { "prompt": "Can you add some more information?", "answer": "Public API schemas provide necessary information to integrate with APIs...", "created_at": "2013-12-12T11:20:43-08:00" } ], "ai_agent": { "type": "ai_agent_text_gen", "basic_gen": { "model": "azure__openai__gpt_4o_mini" } } }' ``` ## Send text generation request to AI (extended) ``` curl -i -L POST "https://api.box.com/2.0/ai/text_gen" \ -H "content-type: application/json" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "prompt": "Write a social media post about protein powder.", "items": [ { "id": "12345678", "type": "file", "content": "More information about protein powders" }, ], "dialogue_history": [ { "prompt": "Make my email about public APIs sound more professional", "answer": "Here is the first draft of your professional email about public APIs", "created_at": "2013-12-12T10:53:43-08:00" }, { "prompt": "Can you add some more information?", "answer": "Public API schemas provide necessary information to integrate with APIs...", "created_at": "2013-12-12T11:20:43-08:00" } ], "ai_agent": { "type": "ai_agent_text_gen", "basic_gen": { "model": "azure__openai__gpt_4o_mini", "system_message": "You are a helpful travel assistant specialized in budget travel", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in Azores. What should I see?", "num_tokens_for_completion": 8400, "llm_endpoint_params": { "type": "openai_params", "temperature": 2.0, "top_p": 1.0, "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>" }, "embeddings": { "model": " openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 64 } }, "content_template": "---{content}---" } } }' ``` ## Get default agent config ``` curl -L GET "https://api.box.com/2.0/ai_agent_default?mode=text_gen" \ -H 'Authorization: Bearer <ACCESS_TOKEN>' ``` ## Create agents Creates custom AI agents. ``` curl -L POST "https://api.box.com/2.0/ai-agents" \ -H 'Authorization: Bearer <ACCESS_TOKEN>' -d '{ type: type: string description: The type of agent used to handle queries. enum: - ai_agent example: ai_agent name: type: string description: The name of the AI Agent. example: 'My AI Agent' access_state: $ref: ../schemas/ai_agent_access_state.yml icon_reference: type: string minLength: 1 description: |- The icon reference of the AI Agent. It should have format of the URL https://cdn01.boxcdn.net/app-assets/aistudio/avatars/<file_name> where possible values of file_name are: `logo_boxAi.png`,`logo_stamp.png`,`logo_legal.png`,`logo_finance.png`,`logo_config.png`,`logo_handshake.png`,`logo_analytics.png`,`logo_classification.png example: 'https://cdn01.boxcdn.net/app-assets/aistudio/avatars/logo_analytics.svg' allowed_entities: type: array }, - d '{ items: $ref: '#/components/schemas/AiAgentAllowedEntity' description: List of allowed users or groups. ask: $ref: '#/components/schemas/AiStudioAgentAsk' text_gen: $ref: '#/components/schemas/AiStudioAgentTextGen' extract: $ref: '#/components/schemas/AiStudioAgentExtract' } ``` ## Delete AI agent ``` curl -L DELETE "https://api.box.com/2.0/ai_agents/12345" \ -H 'Authorization: Bearer <ACCESS_TOKEN>' ``` ## Get AI agent by ID ``` curl -i -X GET "https://api.box.com/2.0/ai_agents/1234567890" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get AI agents ``` curl -i -X GET "https://api.box.com/2.0/ai_agents" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update AI agents ``` curl -i -X PUT "https://api.box.com/2.0/ai_agents/1234567890" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Extract structured metadata ``` curl -i -L 'https://api.box.com/2.0/ai/extract_structured' \ -H 'content-type: application/json' \ -H 'authorization: Bearer <ACCESS_TOKEN>' \ -d '{ "items": [ { "id": "12345678", "type": "file", "content": "This is file content." } ], "metadata_template": { "template_key": "", "type": "metadata_template", "scope": "" }, "fields": [ { "key": "name", "description": "The name of the person.", "displayName": "Name", "prompt": "The name is the first and last name from the email address.", "type": "string", "options": [ { "key": "First Name" }, { "key": "Last Name" } ] } ], "ai_agent": { "type": "ai_agent_extract_structured", "long_text": { "model": "azure__openai__gpt_4o_mini" }, "basic_text": { "model": "azure__openai__gpt_4o_mini" } } }' ``` ## Extract structured metadata (extended) ``` curl -i -L 'https://api.box.com/2.0/ai/extract_structured' \ -H 'content-type: application/json' \ -H 'authorization: Bearer <ACCESS_TOKEN>' \ -d '{ "items": [ { "id": "12345678", "type": "file", "content": "This is file content." } ], "metadata_template": { "template_key": "", "type": "metadata_template", "scope": "" }, "fields": [ { "key": "name", "description": "The name of the person.", "displayName": "Name", "prompt": "The name is the first and last name from the email address.", "type": "string", "options": [ { "key": "First Name" }, { "key": "Last Name" } ] } ], "ai_agent": { "type": "ai_agent_extract_structured", "long_text": { "model": "azure__openai__gpt_4o_mini", "system_message": "You are a helpful travel assistant specialized in budget travel", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?", "num_tokens_for_completion": 8400, "llm_endpoint_params": { "type": "openai_params", "temperature": 0, "top_p": 1, "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>" }, "embeddings": { "model": "openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 64 } } }, "basic_text": { "model": "azure__openai__gpt_4o_mini", "system_message": "You are a helpful travel assistant specialized in budget travel", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?", "num_tokens_for_completion": 8400, "llm_endpoint_params": { "type": "openai_params", "temperature": 0, "top_p": 1, "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>" } } } }' ``` ## Extract metadata ``` curl -i -L 'https://api.box.com/2.0/ai/extract' \ -H 'content-type: application/json' \ -H 'authorization: Bearer <ACCESS_TOKEN>' \ -d '{ "prompt": "Extract data related to contract conditions", "items": [ { "type": "file", "id": "1497741268097" } ], "ai_agent": { "type": "ai_agent_extract", "long_text": { "model": "azure__openai__gpt_4o_mini", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?", }, "basic_text": { "model": "azure__openai__gpt_4o_mini", } } }' ``` ## Extract metadata (extended) ``` curl -i -L 'https://api.box.com/2.0/ai/extract' \ -H 'content-type: application/json' \ -H 'authorization: Bearer <ACCESS_TOKEN>' \ -d '{ "prompt": "Extract data related to contract conditions", "items": [ { "type": "file", "id": "1497741268097" } ], "ai_agent": { "type": "ai_agent_extract", "long_text": { "model": "azure__openai__gpt_4o_mini", "system_message": "You are a helpful travel assistant specialized in budget travel", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?", "num_tokens_for_completion": 8400, "llm_endpoint_params": { "type": "openai_params", "temperature": 0, "top_p": 1, "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>" }, "embeddings": { "model": "openai__text_embedding_ada_002", "strategy": { "id": "basic", "num_tokens_per_chunk": 64 } } }, "basic_text": { "model": "azure__openai__gpt_4o_mini", "system_message": "You are a helpful travel assistant specialized in budget travel", "prompt_template": "It is `{current_date}`, and I have $8000 and want to spend a week in the Azores. What should I see?", "num_tokens_for_completion": 8400, "llm_endpoint_params": { "type": "openai_params", "temperature": 0, "top_p": 1, "frequency_penalty": 1.5, "presence_penalty": 1.5, "stop": "<|im_end|>" } } } }' ``` ## Add a Doc Gen template ``` curl -L 'https://api.box.com/2.0/docgen_templates' \ -H 'box-version: 2025.0' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -D '{ "file": { "id": "12345678", "type": "file" } }' ``` ## Delete association between Doc Gen template and file ``` curl -L -X DELETE 'https://api.box.com/2.0/docgen_templates/12345678' \ -H 'box-version: 2025.0' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' ``` ## Get all Doc Gen templates ``` curl -L 'https://api.box.com/2.0/docgen_templates' \ -H 'box-version: 2025.0' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' ``` ## Get Doc Gen template by ID ``` curl -L 'https://api.box.com/2.0/docgen_templates/12345678' \ -H 'box-version: 2025.0' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' ``` ## Get Doc Gen jobs for a template ``` curl -L 'https://api.box.com/2.0/docgen_template_jobs/12345678' \ -H 'box-version: 2025.0' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' ``` ## Get Doc Gen template tags for template ``` curl -L 'https://api.box.com/2.0/docgen_templates/12345678/tags' \ -H 'box-version: 2025.0' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' ``` ## Generate a document with Doc Gen ``` curl -L 'https://api.box.com/2.0/docgen_batches' \ -H 'box-version: 2025.0' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -D '{ "file": { "id": "12345678", "type": "file" }, "input_source": "api", "destination_folder": { "id": "12345678", "type": "folder" }, "output_type": "docx", "document_generation_data": [ { "generated_file_name": "Image test", "user_input": { "order": { "id": "12305", "date": "18-08-2023", "country": "US", "expiryDate": "18-08-2024", "currency": "$", "amount": 5060.5, "taxRate": 10, "requester": "John", "approver": "Smith", "department": "Procurement", "paymentTerms": "30 days", "deliveryTerms": "30 days", "deliveryDate": "18-09-2023", "vendor": { "company": "Example company", "address": { "street": "Example street", "city": "Example city", "zip": "EX-456" } }, "products": [ { "id": 1, "name": "A4 Papers", "type": "non-fragile", "quantity": 100, "price": 29, "amount": 2900 }, { "id": 2, "name": "Ink Cartridge", "type": "non-fragile", "quantity": 40, "price": 39, "amount": 1560 }, { "id": 3, "name": "Adhesive tape", "type": "non-fragile", "quantity": 20, "price": 30, "amount": 600.5 } ] } } } ]` ``` ## Get all Doc Gen jobs ``` curl -i -X GET "https://api.box.com/2.0/docgen_jobs" \ -H 'box-version: 2025.0' \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get Doc Gen job by ID ``` curl -i -X GET "https://api.box.com/2.0/docgen_jobs/12345" \ -H 'box-version: 2025.0' \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get Doc Gen job for a specific batch ``` curl -i -X GET "https://api.box.com/2.0/docgen_batch_jobs/12345" \ -H 'box-version: 2025.0' \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get a file Retrieves the details about a file. ``` curl -i -X GET "https://api.box.com/2.0/files/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Restore file Restores an file that has been moved to the trash. ``` curl -i -X POST "https://api.box.com/2.0/files/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update a file Updates a file. This can be used to rename or move a file, create a shared link, or lock a file. ``` curl -i -X PUT "https://api.box.com/2.0/files/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "New name" }' ``` ## Delete a file Deletes a file, either permanently or by moving it to the trash. The the enterprise settings determine whether the item will be permanently deleted from Box or moved to the trash. ``` curl -i -X DELETE "https://api.box.com/2.0/files/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Download a file Returns the contents of a file in binary format. ``` curl -i -L -X GET "https://api.box.com/2.0/files/12345/content" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ ``` ## Download a file version ``` curl -i -L -X GET "https://api.box.com/2.0/files/12345/content?version=4" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ ``` ## Get download URL ``` curl -i -X GET "https://api.box.com/2.0/files/12345/content?version=4" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Download a shared link Returns the contents of a file in binary format. ``` curl -i -L -X GET "https://api.box.com/2.0/files/12345/content" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "boxapi: shared_link=https://cloud.box.com/shared/static/gjasdasjhasd&shared_link_password=letmein" \ ``` ## Upload a file version Update a file's content. For file sizes over 50MB we recommend using the Chunk Upload APIs. ``` curl -i -X POST "https://upload.box.com/api/2.0/files/12345/content" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: multipart/form-data" \ -F attributes='{"name":"Contract.pdf", "parent":{"id":"11446498"}}' \ -F file=@<FILE_NAME> ``` ## Preflight check Performs a check to verify that a file will be accepted by Box before you upload the entire file. ``` curl -i -X OPTIONS "https://api.box.com/2.0/files/content" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{"name":"Contract.pdf", "parent":{"id":"11446498"}}' ``` ``` curl -i -X OPTIONS "https://api.box.com/2.0/files/12345/content" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{"name":"Contract.pdf", "parent":{"id":"11446498"}}' ``` ## Upload a file Uploads a small file to Box. For file sizes over 50MB we recommend using the Chunk Upload APIs. ``` curl -i -X POST "https://upload.box.com/api/2.0/files/content" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: multipart/form-data" \ -F attributes='{"name":"Contract.pdf", "parent":{"id":"11446498"}}' \ -F file=@<FILE_NAME> ``` ## Create upload session Creates an upload session for a new file. ``` curl -i -X POST "https://upload.box.com/api/2.0/files/upload_sessions" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "folder_id": "0", "file_size": 104857600, "file_name": "Contract.pdf" }' ``` ## Create upload session for existing file Creates an upload session for an existing file. ``` curl -i -X POST "https://upload.box.com/api/2.0/files/12345/upload_sessions" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "file_size": 104857600 }' ``` ## Get upload session Return information about an upload session. ``` curl -i -X GET "https://upload.box.com/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Upload a part Updates a chunk of an upload session for a file. ``` curl -i -X PUT "https://upload.box.com/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "digest: sha=fpRyg5eVQletdZqEKaFlqwBXJzM=" \ -H "content-range: bytes 8388608-16777215/445856194" \ -H "content-type: application/octet-stream" \ --data-binary @<FILE_NAME> ``` ## Abort upload session Abort an upload session and discard all data uploaded. This cannot be reversed. ``` curl -i -X DELETE "https://upload.box.com/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List parts Return a list of the chunks uploaded to the upload session so far. ``` curl -i -X GET "https://upload.box.com/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/parts" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Commit upload session Close an upload session and create a file from the uploaded chunks. ``` curl -i -X POST "https://upload.box.com/2.0/files/upload_sessions/F971964745A5CD0C001BBE4E58196BFD/commit" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "digest: sha=fpRyg5eVQletdZqEKaFlqwBXJzM=" \ -H "content-type: application/json" \ -d '{ "parts": [ { "part_id": "BFDF5379", "offset": 0, "size": 8388608, "sha1": "134b65991ed521fcfe4724b7d814ab8ded5185dc" }, { "part_id": "E8A3ED8E", "offset": 8388608, "size": 1611392, "sha1": "234b65934ed521fcfe3424b7d814ab8ded5185dc" } ], "attributes": { "content_modified_at": "2017-04-08T00:58:08Z" } }' ``` ## Copy a file Creates a copy of a file. ``` curl -i -X POST "https://api.box.com/2.0/files/12345/copy" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "parent": { "id": "123" } }' ``` ## Get a file thumbnail Retrieves a thumbnail, or smaller image representation, of a file. Sizes of `32x32`,`64x64`, `128x128`, and `256x256` can be returned in the `.png` format and sizes of `32x32`, `94x94`, `160x160`, and `320x320` can be returned in the `.jpg` format. Thumbnails can be generated for the image and video file formats listed [found on our community site]([http://community.box.com/t5/Managing-](http://community.box.com/t5/Managing-) Your-Content/What-file-types-are-supported-by-Box-s-Content-Preview/ ta-p/327). ``` curl -i -X GET "https://api.box.com/2.0/files/12345/thumbnail.png" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get file collaborations Retrieves a list of collaborations for a file. This returns all the users that have access to the file. ``` curl -i -X GET "https://api.box.com/2.0/files/12345/collaborations" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List a file's comments Retrieves a list of comments for a file. ``` curl -i -X GET "https://api.box.com/2.0/files/12345/comments" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get file tasks Retrieves a list of all the tasks for a file. This endpoint does not support paging. ``` curl -i -X GET "https://api.box.com/2.0/files/12345/tasks" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get trashed file Retrieves a file that has been moved to the trash. ``` curl -i -X GET "https://api.box.com/2.0/files/12345/trash" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Permanently delete file Permanently deletes a file that is in the trash. This action cannot be undone. ``` curl -i -X DELETE "https://api.box.com/2.0/files/12345/trash" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List all file versions Retrieve information on all version of a file. This endpoint can be used to retrieve information about older versions of a file. Versions are only tracked for Box users with premium accounts. ``` curl -i -X GET "https://api.box.com/2.0/files/12345/versions" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get a file version Retrieve a specific older version of a file. Versions are only tracked for Box users with premium accounts. ``` curl -i -X GET "https://api.box.com/2.0/files/12345/versions/456456" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Delete file version Move a file version to the trash. Versions are only tracked for Box users with premium accounts. ``` curl -i -X DELETE "https://api.box.com/2.0/files/12345/versions/456456" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Promote file version Promote a specific version of a file. If previous versions exist, this method can be used to promote one of the older versions to the top of the version history. This actually creates a new copy of the old version and puts it at the top of the versions history. The file will have the exact same contents as the older version, with the the same SHA1/etag, and the same name as the original. Other properties such as comments do not get updated to their former values. Don't use this endpoint to restore Box Notes, as it works with file formats such as PDF, DOC, PPTX or similar. ``` curl -i -X POST "https://api.box.com/2.0/files/12345/versions/current" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "type": "file_version", "id": "456456" }' ``` ## Restore file version Restores a specific version of a file after it was deleted. Don't use this endpoint to restore Box Notes, as it works with file formats such as PDF, DOC, PPTX or similar. ``` curl -i -X POST "https://api.box.com/2.0/files/12345/versions/456456" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "trashed_at": null }' ``` ## List file's metadata Retrieves all metadata for a given file. ``` curl -i -X GET "https://api.box.com/2.0/files/12345/metadata" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get specific file metadata Retrieve a specific metadata template instance for a file ``` curl -i -X GET "https://api.box.com/2.0/files/12345/metadata/enterprise_27335/blueprintTemplate" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create metadata on file Creates a piece of metadata on a file based on the specified template. Only values that are present in the metadata template will be accepted. ``` curl -i -X POST "https://api.box.com/2.0/files/12345/metadata/enterprise_27335/blueprintTemplate" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "audience": "internal", "documentType": "Q1 plans", "competitiveDocument": "no", "status": "active", "author": "Jones", "currentState": "proposal" }' ``` ## Update file metadata Updates a piece of metadata on a file. The metadata instance can only be updated if the instance already exists. When editing metadata, only values that adhere to the metadata template schema will be accepted. The update is applied atomically. If any errors occur during the application of the operations, the metadata instance remains unchanged. ``` curl -i -X PUT "https://api.box.com/2.0/files/12345/metadata/enterprise_27335/blueprintTemplate" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json-patch+json" \ -d '[ { "op": "test", "path": "/competitiveDocument", "value": "no" }, { "op": "remove", "path": "/competitiveDocument" }, { "op": "test", "path": "/status", "value": "active" }, { "op": "replace", "path": "/status", "value": "inactive" }, { "op": "test", "path": "/author", "value": "Jones" }, { "op": "copy", "from": "/author", "path": "/editor" }, { "op": "test", "path": "/currentState", "value": "proposal" }, { "op": "move", "from": "/currentState", "path": "/previousState" }, { "op": "add", "path": "/currentState", "value": "reviewed" } ]' ``` ## Delete file metadata Deletes a piece of file metadata. ``` curl -i -X DELETE "https://api.box.com/2.0/files/12345/metadata/enterprise_27335/blueprintTemplate" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get file watermark Retrieve the watermark for a file. ``` curl -i -X GET "https://api.box.com/2.0/files/12345/watermark" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Apply watermark to file Applies or update a watermark on a file. ``` curl -i -X PUT "https://api.box.com/2.0/files/12345/watermark" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "watermark": { "imprint": "default" } }' ``` ## Remove file watermark Removes the watermark from a file. ``` curl -i -X DELETE "https://api.box.com/2.0/files/12345/watermark" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get a folder Retrieves details for a folder, including the first 100 entries in the folder. To fetch more items within the folder, please use the [Get items in a folder](#get-folders-id-items) endpoint. ``` curl -i -X GET "https://api.box.com/2.0/folders/4353455" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Restore folder Restores a folder that has been moved to the trash. ``` curl -i -X POST "https://api.box.com/2.0/folders/4353455" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update a folder Updates a folder. This can be also be used to move the folder, create shared links, update collaborations, and more. ``` curl -i -X PUT "https://api.box.com/2.0/folders/4353455" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "New folder name" }' ``` ## Move a folder ``` curl -i -X PUT "https://api.box.com/2.0/folders/4353455" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "New folder name", "parent": { "id": "123" } }' ``` ## Move a subfolder to a private folder ``` curl -i -X PUT "https://api.box.com/2.0/folders/4353455" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "New folder name", "parent": { "id": "123" } "owned_by": { "id": "123456" } }' ``` ## Rename a folder ``` curl -i -X PUT "https://api.box.com/2.0/folders/4353455" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "New folder name" }' ``` ## Change folder owner ``` curl -i -X PUT "https://api.box.com/2.0/folders/4353455" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "owned_by": { "id": "123" } }' ``` ## Delete a folder Deletes a folder, either permanently or by moving it to the trash. ``` curl -i -X DELETE "https://api.box.com/2.0/folders/4353455" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get items in folder Retrieves a page of items in a folder. These items can be files, folders, and web links. To request more information about the folder itself, like its size, please use the [Get a folder](#get-folders-id) endpoint instead. ``` curl -i -X GET "https://api.box.com/2.0/folders/0/items" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create a folder Creates a new empty folder within the specified parent folder. ``` curl -i -X POST "https://api.box.com/2.0/folders" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "New Folder", "parent": { "id": "0" } }' ``` ## Copy a folder Creates a copy of a folder within a destination folder. The original folder will not be changed. ``` curl -i -X POST "https://api.box.com/2.0/folders/4353455/copy" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "parent": { "id": "345345" } }' ``` ## Get folder collaborations Retrieves a list of collaborations for a folder. This returns all the users that have access to the folder. ``` curl -i -X GET "https://api.box.com/2.0/folders/4353455/collaborations" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get trashed folder Retrieves a folder that has been moved to the trash. ``` curl -i -X GET "https://api.box.com/2.0/folders/4353455/trash" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Permanently delete folder Permanently deletes a folder that is in the trash. This action cannot be undone. ``` curl -i -X DELETE "https://api.box.com/2.0/folders/4353455/trash" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List folder's metadata Retrieves all metadata for a given folder. ``` curl -i -X GET "https://api.box.com/2.0/folders/4353455/metadata" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get specific folder metadata Retrieve a specific metadata template instance for a folder ``` curl -i -X GET "https://api.box.com/2.0/folders/4353455/metadata/enterprise_27335/blueprintTemplate" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create metadata on folder Creates a piece of metadata on a folder based on the specified template. Only values that are present in the metadata template will be accepted. ``` curl -i -X POST "https://api.box.com/2.0/folders/4353455/metadata/enterprise_27335/blueprintTemplate" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "audience": "internal", "documentType": "Q1 plans", "competitiveDocument": "no", "status": "active", "author": "Jones", "currentState": "proposal" }' ``` ## Update folder metadata Updates a piece of metadata on a folder based. The metadata instance can only be updated if the instance already exists. When editing metadata, only values that adhere to the metadata template schema will be accepted. The update is applied atomically. If any errors occur during the application of the operations, the metadata instance remains unchanged. ``` curl -i -X PUT "https://api.box.com/2.0/folders/4353455/metadata/enterprise_27335/blueprintTemplate" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json-patch+json" \ -d '[ { "op": "test", "path": "/competitiveDocument", "value": "no" }, { "op": "remove", "path": "/competitiveDocument" }, { "op": "test", "path": "/status", "value": "active" }, { "op": "replace", "path": "/status", "value": "inactive" }, { "op": "test", "path": "/author", "value": "Jones" }, { "op": "copy", "from": "/author", "path": "/editor" }, { "op": "test", "path": "/currentState", "value": "proposal" }, { "op": "move", "from": "/currentState", "path": "/previousState" }, { "op": "add", "path": "/currentState", "value": "reviewed" } ]' ``` ## Delete folder metadata Deletes a piece of folder metadata. ``` curl -i -X DELETE "https://api.box.com/2.0/folders/4353455/metadata/enterprise_27335/blueprintTemplate" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List trashed items Retrieves the files and folders that have been moved to the trash. Any attribute in the full files or folders objects can be passed in with the `fields` parameter to retrieve those specific attributes that are not returned by default. ``` curl -i -X GET "https://api.box.com/2.0/folders/trash/items" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get folder watermark Retrieve the watermark for a folder. ``` curl -i -X GET "https://api.box.com/2.0/folders/4353455/watermark" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Apply watermark to folder Applies or update a watermark on a folder. ``` curl -i -X PUT "https://api.box.com/2.0/folders/4353455/watermark" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "watermark": { "imprint": "default" } }' ``` ## Remove folder watermark Removes the watermark from a folder. ``` curl -i -X DELETE "https://api.box.com/2.0/folders/4353455/watermark" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get folder lock Retrieve locks applied to a folder. ``` curl -i -X GET "https://api.box.com/2.0/folder_locks?folder_id=33552487093" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create folder lock Creates a lock on a folder to prevent move and / or delete operations. ``` curl -i -X POST "https://api.box.com/2.0/folder_locks" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "folder": { "type": "folder", "id": "33552487093" }, "locked_operations": { "move": true, "delete": true } }' ``` ## Delete folder lock Deletes a lock on a folder. ``` curl -i -X DELETE "https://api.box.com/2.0/folder_locks/93134" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get template by name Retrieves a metadata template by its scope and template name. ``` curl -i -X GET "https://api.box.com/2.0/metadata_templates/enterprise/blueprintTemplate/schema" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update metadata template Updates a metadata template. The metadata template can only be updated if the template already exists. The update is applied atomically. If any errors occur during the application of the operations, the metadata template remains unchanged. ``` curl -i -X PUT "https://api.box.com/2.0/metadata_templates/enterprise/blueprintTemplate/schema" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json-patch+json" \ -d '[ { "op": "editField", "fieldKey": "category", "data": { "displayName": "Customer Group" } } ]' ``` ## Delete metadata template Delete a metadata template and its instances. This deletion is permanent and can not be reversed. ``` curl -i -X DELETE "https://api.box.com/2.0/metadata_templates/enterprise/blueprintTemplate/schema" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get a template by ID Retrieves a metadata template by its ID. ``` curl -i -X GET "https://api.box.com/2.0/metadata_templates/d9671692-3df6-11ea-b77f-2e728ce88125" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List enterprise templates Used to retrieve all metadata templates within a user's enterprise ``` curl -i -X GET "https://api.box.com/2.0/metadata_templates/enterprise" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List global templates Used to retrieve all globally available metadata templates. ``` curl -i -X GET "https://api.box.com/2.0/metadata_templates/global" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create metadata template Creates a new metadata template that can be applied to files and folders. ``` curl -i -X POST "https://api.box.com/2.0/metadata_templates/schema" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "scope": "enterprise", "displayName": "Customer", "fields": [ { "type": "string", "key": "name", "displayName": "Name", "description": "The customer name", "hidden": false }, { "type": "date", "key": "last_contacted_at", "displayName": "Last Contacted At", "description": "When this customer was last contacted at", "hidden": false }, { "type": "enum", "key": "industry", "displayName": "Industry", "options": [ {"key": "Technology"}, {"key": "Healthcare"}, {"key": "Legal"} ] }, { "type": "multiSelect", "key": "role", "displayName": "Contact Role", "options": [ {"key": "Developer"}, {"key": "Business Owner"}, {"key": "Marketing"}, {"key": "Legal"}, {"key": "Sales"} ] } ] }' ``` ## List cascade policies Retrieve a collection of metadata cascade policies within a given folder for the current enterprise. ``` curl -i -X GET "https://api.box.com/2.0/metadata_cascade_policies?folder_id=31232" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create cascade policy Creates a new metadata cascade policy that applies a given metadata template to a given folder and automatically cascades it down to its children. In order for the policy to work, a metadata instance must first be applied to the folder. ``` curl -i -X POST "https://api.box.com/2.0/metadata_cascade_policies" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "folder_id": "12321", "scope": "enterprise_27335", "templateKey": "productInfo" }' ``` ## Get cascade policy Retrieve a metadata cascade policy. ``` curl -i -X GET "https://api.box.com/2.0/metadata_cascade_policies/324324" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Delete cascade policy Deletes a metadata cascade policy. ``` curl -i -X DELETE "https://api.box.com/2.0/metadata_cascade_policies/324324" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Force apply cascade policy If a policy already exists on a folder, this will apply that policy to all existing files and sub-folders within the target folder. ``` curl -i -X POST "https://api.box.com/2.0/metadata_cascade_policies/21312/apply" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "conflict_resolution": "overwrite" }' ``` ## Create a metadata query ``` curl -i -X POST "https://api.box.com/2.0/files/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "from": "enterprise_123456.contractTemplate", "query": "amount >= :value", "query_params": { "value": 100 }, "fields": [ "created_at", "metadata.enterprise_123456.contractTemplate.amount", "metadata.enterprise_123456.contractTemplate.customerName" ], "ancestor_folder_id": "5555", "order_by": [ { "field_key": "amount", "direction": "asc" } ], "limit": 100 }' ``` ## Get metadata query indices ``` curl -i -X GET "https://api.box.com/2.0/metadata_query_indices?scope=enterprise&template_key=properties" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get comment Retrieves the message and metadata for a specific comment, as well as information on the user who created the comment. ``` curl -i -X GET "https://api.box.com/2.0/comments/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update comment Update the message of a comment. ``` curl -i -X PUT "https://api.box.com/2.0/comments/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "message": "My New Message" }' ``` ## Delete comment Permanently deletes a comment. ``` curl -i -X DELETE "https://api.box.com/2.0/comments/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create comment Adds a comment comment by the user to a specific file, or as a reply to an other comment. ``` curl -i -X POST "https://api.box.com/2.0/comments" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "message": "Review completed!", "item": { "type": "file", "id": 426436 } }' ``` ## Create reply ``` curl -i -X POST "https://api.box.com/2.0/comments" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "message": "I agree with this.", "item": { "type": "comment", "id": 345344 } } ``` ## Tag User in Comment ``` curl -i -X POST "https://api.box.com/2.0/comments" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "tagged_message": "What do you think @[1234:John]?", "item": { "type": "file", "id": 123 } } ``` ## Tag User in Reply ``` curl -i -X POST "https://api.box.com/2.0/comments" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "message": " @[1234:John], I agree with this.", "item": { "type": "comment", "id": 345344 } } ``` ## Get collaboration Retrieves a single collaboration. ``` curl -i -X GET "https://api.box.com/2.0/collaborations/1234" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update collaboration Updates a collaboration. Can be used to change the owner of an item, or to accept collaboration invites. ``` curl -i -X PUT "https://api.box.com/2.0/collaborations/1234" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "role": "viewer" }' ``` ## Delete collaboration Deletes a single collaboration. ``` curl -i -X DELETE "https://api.box.com/2.0/collaborations/1234" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List pending collaborations Retrieves all pending collaboration invites for this user. ``` curl -i -X GET "https://api.box.com/2.0/collaborations?status=pending" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create collaboration Adds a collaboration for a single user or a single group to a file or folder. Collaborations can be created using email address, user IDs, or a group IDs. If a collaboration is being created with a group, access to this endpoint is dependent on the group's ability to be invited. ``` curl -i -X POST "https://api.box.com/2.0/collaborations" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "item": { "type": "file", "id": "11446498" }, "accessible_by": { "type": "user", "login": "user@example.com" }, "role": "editor" }' ``` ``` curl -i -X POST "https://api.box.com/2.0/collaborations" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "item": { "type": "file", "id": "11446498" }, "accessible_by": { "type": "group", "id": "845344" }, "role": "editor" }' ``` ## Search for content Searches for items that are available to the user or an entire enterprise. ``` curl -i -X GET "https://api.box.com/2.0/search?query=sales" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create task Creates a single task on a file. ``` curl -i -X POST "https://api.box.com/2.0/tasks" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "item": { "id": "11446498", "type": "file" }, "action": "review" }' ``` ## Get task Fetches a specific task. ``` curl -i -X GET "https://api.box.com/2.0/tasks/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update task Updates a specific task. ``` curl -i -X PUT "https://api.box.com/2.0/tasks/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "action": "review" }' ``` ## Delete task Deletes a specific task. ``` curl -i -X DELETE "https://api.box.com/2.0/tasks/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List task's assignments Retrieves all of the assignments for a given task. ``` curl -i -X GET "https://api.box.com/2.0/tasks/12345/assignments" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Assign task Assigns a task to a user. Multiple assignments to different users are allowed per task. ``` curl -i -X POST "https://api.box.com/2.0/task_assignments" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "task": { "id": "11446498", "type": "task" }, "assign_to": { "id": "4823213" } }' ``` ## Get task assignment Fetches a specific task assignment. ``` curl -i -X GET "https://api.box.com/2.0/task_assignments/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update task assignment Updates a task assignment. This endpoint can be used to update the state of a task. ``` curl -i -X PUT "https://api.box.com/2.0/task_assignments/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "message": "New message", "resolution_state": "completed" }' ``` ## Unassign task Deletes a specific task assignment. ``` curl -i -X DELETE "https://api.box.com/2.0/task_assignments/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Find item for shared link Return the file or folder represented by a shared link. Shared items are any files or folders that are represented by a shared link, which can originate within the current enterprise or within another one. This endpoint allows an application to retrieve information about a shared item when only given a shared link. ``` curl -i -X GET "https://api.box.com/2.0/shared_items" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "boxapi: shared_link=https://app.box.com/s/gjasdasjhasd&shared_link_password=letmein" ``` The syntax is the same regardless of wether the shared link is a file or a folder. ``` curl -i -X GET "https://api.box.com/2.0/shared_items" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "boxapi: shared_link=https://app.box.com/s/jsasdsd8sad24&shared_link_password=letmein" ``` ## Create web link Creates a web link object within a folder. ``` curl -i -X POST "https://api.box.com/2.0/web_links" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "Cloud Content Management", "url": "https://box.com", "parent": { "id": "0" } }' ``` ## Get web link Retrieve information about a web link. ``` curl -i -X GET "https://api.box.com/2.0/web_links/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Restore web link Restores an web link that has been moved to the trash. ``` curl -i -X POST "https://api.box.com/2.0/web_links/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update web link Updates a web link object. ``` curl -i -X PUT "https://api.box.com/2.0/web_links/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "Cloud Content Management" }' ``` ## Delete web link Deletes a web link. ``` curl -i -X DELETE "https://api.box.com/2.0/web_links/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get trashed web link Retrieves a web link that has been moved to the trash. ``` curl -i -X GET "https://api.box.com/2.0/web_links/12345/trash" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Permanently delete web link Permanently deletes a web link that is in the trash. This action cannot be undone. ``` curl -i -X DELETE "https://api.box.com/2.0/web_links/12345/trash" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List enterprise users Returns a list of all users for the Enterprise along with their user_id, public_name, and login. The application and the authenticated user need to have the permission to look up users in the entire enterprise. ``` curl -i -X GET "https://api.box.com/2.0/users" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create user Creates a new managed user in an enterprise. This endpoint is only available to users and applications with the right admin permissions. ``` curl -i -X POST "https://api.box.com/2.0/users" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "login": "ceo@example.com", "name": "Aaron Levie" }' ``` ## Get authenticated user Retrieves information about the user who is currently authenticated. In the case of a 3-legged OAuth2, client-side authenticated application this will be the user who authorized the app. In the case of a JWT, server-side authenticated application this will be the service account that belongs to the application by default. Use the `As-User` header to change who this API call is made on behalf of. ``` curl -i -X GET "https://api.box.com/2.0/users/me" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get user Retrieves information about a user in the enterprise. The application and the authenticated user need to have the permission to look up users in the entire enterprise. This endpoint also returns a limited set of information for external users who are collaborated on content owned by the enterprise for authenticated users with the right scopes. In this case, disallowed fields will return null instead. ``` curl -i -X GET "https://api.box.com/2.0/users/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update user Updates a managed user in an enterprise. This endpoint is only available to users and applications with the right admin permissions. ``` curl -i -X PUT "https://api.box.com/2.0/users/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "Aaron Levie" }' ``` ## Delete user Deletes a user. By default this will fail if the user still owns any content. Move their owned content first before proceeding, or use the `force` field to delete the user and their files. ``` curl -i -X DELETE "https://api.box.com/2.0/users/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get user avatar Retrieves an image of a the user's avatar. ``` curl -i -X GET "https://api.box.com/2.0/users/12345/avatar" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Add or update user avatar Uploads or updates a user avatar. ``` curl -i -X -L POST "https://api.box.net/2.0/users/12345/avatar" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ --form 'pic=@"path/to/file/file.jpeg"' ``` ## Delete user avatar Deletes a user avatar. ``` curl -i -X DELETE -L "https://api.box.net/2.0/users/12345/avatar" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Transfer owned folders Move all of the items owned by a user into a new folder in another user’s account. Only the root folder (`0`) can be transferred. Folders can only be moved across users by users with administrative permissions. This call will be performed synchronously which might lead to a slow response when the source user has a large number of items in all of its folders. If the destination path has a metadata cascade policy attached to any of the parent folders, a metadata cascade operation will be kicked off asynchronously. There is currently no way to check for when this operation is finished. ``` curl -i -X PUT "https://api.box.com/2.0/users/12345/folders/0" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "owned_by": { "id": "1232234" } }' ``` ## List user's email aliases Retrieves all email aliases for a user. The collection does not include the primary login for the user. ``` curl -i -X GET "https://api.box.com/2.0/users/12345/email_aliases" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create email alias Adds a new email alias to a user account. ``` curl -i -X POST "https://api.box.com/2.0/users/12345/email_aliases" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "email": "alias@example.com" }' ``` ## Remove email alias Removes an email alias from a user. ``` curl -i -X DELETE "https://api.box.com/2.0/users/12345/email_aliases/23432" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List user's groups Retrieves all the groups for a user. The user making an API call must have admin permissions to inspect the enterprise's groups. ``` curl -i -X GET "https://api.box.com/2.0/users/12345/memberships" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Invite user Invites an existing external user to join an enterprise. The existing user can not be part of another enterprise and must already have a Box account. Once invited, the user will receive an email and are prompted to accept the invitation within the Box web application. This method requires the "Manage An Enterprise" scope enabled for the application, which can be enabled within the developer console. ``` curl -i -X POST "https://api.box.com/2.0/invites" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "enterprise": { "id": "1232234" }, "actionable_by": { "login" : "freeuser@box.com" } }' ``` ## Get user invite status Returns the status of a user invite. ``` curl -i -X GET "https://api.box.com/2.0/invites/213723" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List enterprise groups Retrieves all of the groups for a given enterprise. The user must have admin permissions to inspect enterprise's groups. ``` curl -i -X GET "https://api.box.com/2.0/groups" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create group Creates a new group of users in an enterprise. Only users with admin permissions can create new groups. ``` curl -i -X POST "https://api.box.com/2.0/groups" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "Customer Support" }' ``` ## Get group Retrieves information about a group. ``` curl -i -X GET "https://api.box.com/2.0/groups/57645" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update group Updates a specific group. ``` curl -i -X PUT "https://api.box.com/2.0/groups/57645" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "Customer Support" }' ``` ## Delete group Permanently deletes a group. ``` curl -i -X DELETE "https://api.box.com/2.0/groups/57645" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List group's members Retrieves all the members for a group. The user must have admin permissions to inspect enterprise's groups. ``` curl -i -X GET "https://api.box.com/2.0/groups/57645/memberships" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List group's collaborations Retrieves all the collaborations for a group. The user must have admin permissions to inspect enterprise's groups. Each collaboration object has details on which files or folders the group has access to and with what role. ``` curl -i -X GET "https://api.box.com/2.0/groups/57645/collaborations" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Add user to group Creates a group membership ``` curl -i -X POST "https://api.box.com/2.0/group_memberships" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "user": { "id": "1434325" }, "group": { "id": "4545523" } }' ``` ## Get group membership Retrieves a specific group membership. ``` curl -i -X GET "https://api.box.com/2.0/group_memberships/434534" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update user's membership Updates a user's group membership. ``` curl -i -X PUT "https://api.box.com/2.0/group_memberships/434534" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "role": "admin" }' ``` ## Remove user from group Deletes a specific group membership. ``` curl -i -X DELETE "https://api.box.com/2.0/group_memberships/434534" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List all webhooks Returns all defined webhooks for the requesting application. ``` curl -i -X GET "https://api.box.com/2.0/webhooks" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create webhook Creates a webhook. ``` curl -i -X POST "https://api.box.com/2.0/webhooks" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "target": { "id": "21322", "type": "file" }, "address": "https://example.com/webhooks", "triggers": [ "FILE.PREVIEWED" ] }' ``` ``` curl -i -X POST "https://api.box.com/2.0/webhooks" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "target": { "id": "234234", "type": "folder" }, "address": "https://example.com/webhooks", "triggers": [ "FILE.UPLOADED" ] }' ``` ## Get webhook Retrieves a specific webhook ``` curl -i -X GET "https://api.box.com/2.0/webhooks/3321123" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update webhook Updates a webhook. ``` curl -i -X PUT "https://api.box.com/2.0/webhooks/3321123" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "triggers": [ "FILE.DOWNLOADED" ] }' ``` ## Delete webhook Deletes a webhook. ``` curl -i -X DELETE "https://api.box.com/2.0/webhooks/3321123" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update skill invocation Updates the status, usage and response metadata of a skill invocation. ``` curl -i -X PUT "https://api.box.com/2.0/skill_invocations/33243242" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "status": "success", "metadata": { "cards": [{ "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } },{ "type": "skill_card", "skill_card_type": "transcript", "skill_card_title": { "code": "video-transcription", "message": "Video Transcription" }, "skill": { "type": "service" "id": "video-transcription-service" }, "invocation": { "type": "skill_invocation" "id": "video-transcription-service-123" }, "duration": 1000, "entries": { { "text": "Hi John, have I told you about Box recently?", "appears": [{ "start": 0 }] }, { "text": "No Aaron, you have not. Tell me more!", "appears": [{ "start": 5 }] } } },{ "type": "skill_card", "skill_card_type": "timeline", "skill_card_title": { "code": "face-detection", "message": "Faces" }, "skill": { "type": "service" "id": "face-detection-service" }, "invocation": { "type": "skill_invocation" "id": "face-detection-service-123" }, "duration": 1000, "entries": { { "text": "John", "appears": [{ "start": 0, "end": 5 }, { "start": 10, "end": 15 }], "image_url": "https://example.com/john.png" }, { "text": "Aaron", "appears": [{ "start": 5, "end": 10 }], "image_url": "https://example.com/aaron.png" } } },{ "type": "skill_card", "skill_card_type": "status", "skill_card_title": { "code": "hold", "message": "Please hold..." }, "skill": { "type": "service" "id": "face-detection-service" }, "invocation": { "type": "skill_invocation" "id": "face-detection-service-123" }, "status": { "code": "processing", "message": "We are processing this file right now." } }], }, "file": { "id": "12345" }, "usage": { "unit": "file", "value": 1 } }' ``` ## List Skill cards on file ``` curl -i -X PUT "https://api.box.com/2.0/files/12345/metadata/global/boxSkillsCards" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create Skill cards on file ``` curl -i -X POST "https://api.box.com/2.0/files/12345/metadata/global/boxSkillsCards" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "cards": [{ "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } },{ "type": "skill_card", "skill_card_type": "transcript", "skill_card_title": { "code": "video-transcription", "message": "Video Transcription" }, "skill": { "type": "service" "id": "video-transcription-service" }, "invocation": { "type": "skill_invocation" "id": "video-transcription-service-123" }, "duration": 1000, "entries": { { "text": "Hi John, have I told you about Box recently?", "appears": [{ "start": 0 }] }, { "text": "No Aaron, you have not. Tell me more!", "appears": [{ "start": 5 }] } } },{ "type": "skill_card", "skill_card_type": "timeline", "skill_card_title": { "code": "face-detection", "message": "Faces" }, "skill": { "type": "service" "id": "face-detection-service" }, "invocation": { "type": "skill_invocation" "id": "face-detection-service-123" }, "duration": 1000, "entries": { { "text": "John", "appears": [{ "start": 0, "end": 5 }, { "start": 10, "end": 15 }], "image_url": "https://example.com/john.png" }, { "text": "Aaron", "appears": [{ "start": 5, "end": 10 }], "image_url": "https://example.com/aaron.png" } } },{ "type": "skill_card", "skill_card_type": "status", "skill_card_title": { "code": "hold", "message": "Please hold..." }, "skill": { "type": "service" "id": "face-detection-service" }, "invocation": { "type": "skill_invocation" "id": "face-detection-service-123" }, "status": { "code": "processing", "message": "We are processing this file right now." } }], }' ``` ## Update Skill cards on file ``` curl -i -X PUT "https://api.box.com/2.0/files/12345/metadata/global/boxSkillsCards" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json-patch+json" \ -d '[ "op": "replace", "path": "/cards/0", "value": { "type": "skill_card", "skill_card_type": "keyword", "skill_card_title": { "code": "license-plates", "message": "Licence Plates" }, "skill": { "type": "service" "id": "license-plates-service" }, "invocation": { "type": "skill_invocation" "id": "license-plates-service-123" }, "entries": { { "text": "DD-26-YT" }, { "text": "DN86 BOX" } } } ]' ``` ## Delete Skill cards from file ``` curl -i -X DELETE "https://api.box.com/2.0/files/12345/metadata/global/boxSkillsCards" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get a long poll endpoint Returns a list of real-time servers that can be used for long-polling updates to the [event stream](#get-events). Long polling is the concept where a HTTP request is kept open until the server sends a response, then repeating the process over and over to receive updated responses. Long polling the event stream can only be used for user events, not for enterprise events. To use long polling, first use this endpoint to retrieve a list of long poll URLs. Next, make a long poll request to any of the provided URLs. When an event occurs in monitored account a response with the value `new_change` will be sent. The response contains no other details as it simply serves as a prompt to take further action such as sending a request to the [events endpoint](#get-events) with the last known `stream_position`. After the server sends this response it closes the connection. You must now repeat the long poll process to begin listening for events again. If no events occur for a while and the connection times out you will receive a response with the value `reconnect`. When you receive this response you’ll make another call to this endpoint to restart the process. If you receive no events in `retry_timeout` seconds then you will need to make another request to the real-time server (one of the URLs in the response for this endpoint). This might be necessary due to network errors. Finally, if you receive a `max_retries` error when making a request to the real-time server, you should start over by making a call to this endpoint first. ``` curl -i -X OPTIONS "https://api.box.com/2.0/events" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get user and enterprise events Returns up to a year of past events for a given user or for the entire enterprise. By default this returns events for the authenticated user. To retrieve events for the entire enterprise, set the `stream_type` to `admin_logs` (historical - 1 year) or `admin_logs_streaming` (live - two weeks). The user making the API call will need to have admin privileges, and the application will need to have the permission to access the event feed to get the enterprise event feed. ``` curl -i -X GET "https://api.box.com/2.0/events" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ``` curl -i -X GET "https://api.box.com/2.0/events?stream_type=admin_logs" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ``` curl -i -X GET "https://api.box.com/2.0/events?stream_type=admin_logs&event_type=LOGIN,FAILED_LOGIN" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ``` curl -i -X GET "https://api.box.com/2.0/events?stream_type=admin_logs_streaming" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ``` curl -i -X GET "https://api.box.com/2.0/events?stream_type=admin_logs_streaming&event_type=LOGIN,FAILED_LOGIN" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List all collections Retrieves all collections for a given user. Currently, only the `favorites` collection is supported. ``` curl -i -X GET "https://api.box.com/2.0/collections" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List collection items Retrieves the files and/or folders contained within this collection. ``` curl -i -X GET "https://api.box.com/2.0/collections/926489/items" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Add file to collection ``` curl -i -X PUT "https://api.box.com/2.0/files/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "collections": [ { "id": "123" } ] }' ``` ## Add folder to collection ``` curl -i -X PUT "https://api.box.com/2.0/folders/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "collections": [ { "id": "123" } ] }' ``` ## Add web link to collection ``` curl -i -X PUT "https://api.box.com/2.0/web_links/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "collections": [ { "id": "123" } ] }' ``` ## Remove file from collection ``` curl -i -X PUT "https://api.box.com/2.0/files/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "collections": [] }' ``` ## Remove folder from collection ``` curl -i -X PUT "https://api.box.com/2.0/folders/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "collections": [] }' ``` ## Remove web link from collection ``` curl -i -X PUT "https://api.box.com/2.0/web_links/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "collections": [] }' ``` ## List recent items Returns information about the recent items accessed by a user, either in the last 90 days or up to the last 1000 items accessed. ``` curl -i -X GET "https://api.box.com/2.0/recent_items" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List retention policies Retrieves all of the retention policies for an enterprise. ``` curl -i -X GET "https://api.box.com/2.0/retention_policies" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create retention policy Creates a retention policy. ``` curl -i -X POST "https://api.box.com/2.0/retention_policies" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "policy_name": "Some Policy Name", "policy_type": "finite", "retention_length": 365, "disposition_action": "permanently_delete" }' ``` ## Get retention policy Retrieves a retention policy. ``` curl -i -X GET "https://api.box.com/2.0/retention_policies/982312" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update retention policy Updates a retention policy. ``` curl -i -X PUT "https://api.box.com/2.0/retention_policies/982312" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "disposition_action": "permanently_delete" }' ``` ## List policy's assignments Returns a list of all retention policy assignments associated with a specified retention policy. ``` curl -i -X GET "https://api.box.com/2.0/retention_policies/982312/assignments" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Assign retention policy Assigns a retention policy to an item. ``` curl -i -X POST "https://api.box.com/2.0/retention_policy_assignments" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "policy_id": "173463", "assign_to": { "type": "folder", "id": "6564564" } }' ``` ## Get policy assignment Retrieves a retention policy assignment ``` curl -i -X GET "https://api.box.com/2.0/retention_policy_assignments/1233123" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List all legal hold policies Retrieves a list of legal hold policies that belong to an enterprise. ``` curl -i -X GET "https://api.box.com/2.0/legal_hold_policies" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create legal hold policy Create a new legal hold policy. ``` curl -i -X POST "https://api.box.com/2.0/legal_hold_policies" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "policy_name": "Policy 3", "description": "Automatic created policy" }' ``` ## Get legal hold policy Retrieve a legal hold policy. ``` curl -i -X GET "https://api.box.com/2.0/legal_hold_policies/324432" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update legal hold policy Update legal hold policy. ``` curl -i -X PUT "https://api.box.com/2.0/legal_hold_policies/324432" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "policy_name": "Policy 4" }' ``` ## Delete legal hold policy Delete an existing legal hold policy. This is an asynchronous process. The policy will not be fully deleted yet when the response returns. ``` curl -i -X DELETE "https://api.box.com/2.0/legal_hold_policies/324432" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List policy's assignments Retrieves a list of items a legal hold policy has been assigned to. ``` curl -i -X GET "https://api.box.com/2.0/legal_hold_policy_assignments?policy_id=324432" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Assign legal hold policy Assign a legal hold to a file, file version, folder, or user. ``` curl -i -X POST "https://api.box.com/2.0/legal_hold_policy_assignments" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "policy_id": "123244", "assign_to": { "type": "folder", "id": "6564564" } }' ``` ## Get policy assignment Retrieve a legal hold policy assignment. ``` curl -i -X GET "https://api.box.com/2.0/legal_hold_policy_assignments/753465" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Unassign legal hold policy Remove a legal hold from an item. This is an asynchronous process. The policy will not be fully removed yet when the response returns. ``` curl -i -X DELETE "https://api.box.com/2.0/legal_hold_policy_assignments/753465" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get retention for file Returns information about a file version retention. ``` curl -i -X GET "https://api.box.com/2.0/file_version_retentions/3424234" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List retentions on files Retrieves all file version retentions for the given enterprise. ``` curl -i -X GET "https://api.box.com/2.0/file_version_retentions" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List files under retention for a retention policy Retrieves all files for the given retention policy id. ``` curl -i -X GET "https://app.box.com/api/2.0/retention_policy_assignments/3424234/files_under_retention" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List file versions under retention for a retention policy Retrieves all file versions for the given retention policy id. ``` curl -i -X GET "https://app.box.com/api/2.0/retention_policy_assignments/3424234/file_versions_under_retention" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Inspect legal hold on file Retrieves information about the legal hold policies assigned to a file version. ``` curl -i -X GET "https://api.box.com/2.0/file_version_legal_holds/2348213" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List legal holds for policy Get list of non-deleted legal holds for a single legal hold policy. ``` curl -i -X GET "https://api.box.com/2.0/file_version_legal_holds?policy_id=133870" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get device pin Retrieves information about an individual device pin. ``` curl -i -X GET "https://api.box.com/2.0/device_pinners/2324234" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Delete device pin Deletes an individual device pin. ``` curl -i -X DELETE "https://api.box.com/2.0/device_pinners/2324234" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List enterprise device pins Retrieves all the device pins within an enterprise. The user must have admin privileges, and the application needs the "manage enterprise" scope to make this call. ``` curl -i -X GET "https://api.box.com/2.0/enterprises/3442311/device_pinners" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List terms of services Returns the current terms of service text and settings for the enterprise. ``` curl -i -X GET "https://api.box.com/2.0/terms_of_services" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create terms of service Creates a terms of service for a given enterprise and type of user. ``` curl -i -X POST "https://api.box.com/2.0/terms_of_services" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "status": "enabled", "text": "By collaborating on this file you are accepting..." }' ``` ## Get terms of service Fetches a specific terms of service. ``` curl -i -X GET "https://api.box.com/2.0/terms_of_services/324234" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update terms of service Updates a specific terms of service. ``` curl -i -X PUT "https://api.box.com/2.0/terms_of_services/324234" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "status": "enabled", "text": "By collaborating on this file you are accepting..." }' ``` ## List ToS user statuses Retrieves an overview of users and their status for a terms of service, including Whether they have accepted the terms and when. ``` curl -i -X GET "https://api.box.com/2.0/terms_of_service_user_statuses?tos_id=324234" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Set status for new user Sets the status for a terms of service for a user. ``` curl -i -X POST "https://api.box.com/2.0/terms_of_service_user_statuses" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "tos": { "type": "terms_of_service", "id": "1232132" }, "user": { "type": "user", "id": "3423423" }, "is_accepted": true }' ``` ## Set status for existing user Updates the status for a terms of service for a user. ``` curl -i -X PUT "https://api.box.com/2.0/terms_of_service_user_statuses/324234" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "is_accepted": true }' ``` ## List whitelist entries Returns the list of whitelist entries which specify what domains can collaborate with the current enterprise. ``` curl -i -X GET "https://api.box.com/2.0/collaboration_whitelist_entries" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create whitelist entry Creates a collaboration whitelist entry, specifying a domain and direction to allow collaboration for. ``` curl -i -X POST "https://api.box.com/2.0/collaboration_whitelist_entries" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "domain": "example.com", "direction": "inboud" }' ``` ## Get whitelist entry Returns a specific collaboration whitelist entry. ``` curl -i -X GET "https://api.box.com/2.0/collaboration_whitelist_entries/213123" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Delete whitelist entry Deletes a specific collaboration whitelist entry. ``` curl -i -X DELETE "https://api.box.com/2.0/collaboration_whitelist_entries/213123" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List whitelist exemptions Returns a list of users who have been exempt from the collaboration whitelist. ``` curl -i -X GET "https://api.box.com/2.0/collaboration_whitelist_exempt_targets" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Create whitelist exemption Creates a collaboration whitelist entry exemption, specifying a user that is exempted from the whitelist. ``` curl -i -X POST "https://api.box.com/2.0/collaboration_whitelist_exempt_targets" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "user": { "id": "23522323" } }' ``` ## Get whitelist exemption Returns a users who has been exempt from the collaboration whitelist. ``` curl -i -X GET "https://api.box.com/2.0/collaboration_whitelist_exempt_targets/984923" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Remove whitelist exemption Deletes a specific collaboration whitelist exemption. ``` curl -i -X DELETE "https://api.box.com/2.0/collaboration_whitelist_exempt_targets/984923" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List storage policies Fetches all the storage policies in the enterprise. ``` curl -i -X GET "https://api.box.com/2.0/storage_policies" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get storage policy Fetches a specific storage policy. ``` curl -i -X GET "https://api.box.com/2.0/storage_policies/34342" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## List policy assignments Fetches all the storage policy assignment for an enterprise or user. ``` curl -i -X GET "https://api.box.com/2.0/storage_policy_assignments?resolved_for_type=userresolved_for_id=984322" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Assign storage policy Creates a storage policy assignment for an enterprise or user. ``` curl -i -X POST "https://api.box.com/2.0/storage_policy_assignments" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "storage_policy": { "type": "storage_policy", "id": "1434325" }, "assigned_to": { "type": "user", "id": "9987987" } }' ``` ## Get policy assignment Fetches a specific storage policy assignment. ``` curl -i -X GET "https://api.box.com/2.0/storage_policy_assignments/932483" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update policy assignment Updates a specific storage policy assignment. ``` curl -i -X PUT "https://api.box.com/2.0/storage_policy_assignments/932483" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "storage_policy": { "type": "storage_policy", "id": "1434325" } }' ``` ## Unassign storage policy Delete a storage policy assignment. Deleting a storage policy assignment on a user will have the user inherit the enterprise's default storage policy. There is a rate limit for calling this endpoint of only twice per user in a 24 hour period. ``` curl -i -X DELETE "https://api.box.com/2.0/storage_policy_assignments/932483" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "items": { "type": "storage_policy", "id": "1434325" } }' ``` ## Create zip download ``` curl -i -X POST "https://api.box.com/2.0/zip_downloads" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "download_file_name": "January Financials", "items": [ { "type": "file", "id": "12345" }, { "type": "file", "id": "34325" }, { "type": "folder", "id": "45678" } ] }' ``` ## Get zip download status ``` curl -i -X GET "https://api.box.com/2.0/zip_downloads/29l00nfxDyHOt7RphI9zT_w==nDnZEDjY2S8iEWWCHEEiptFxwoWojjlibZjJ6geuE5xnXENDTPxzgbks_yY=/status" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Download zip archive ``` curl -L GET "https://dl.boxcloud.com/2.0/zip_downloads/29l00nfxDyHOt7RphI9zT_w==nDnZEDjY2S8iEWWCHEEiptFxwoWojjlibZjJ6geuE5xnXENDTPxzgbks_yY=/content" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -o sample_curl.zip ``` ## List all classifications ``` curl -i -X GET "https://api.box.com/2.0/metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Add initial classifications ``` curl -i -X POST "https://api.box.com/2.0/metadata_templates/schema" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "templateKey": "securityClassification-6VMVochwUWo", "scope": "enterprise", "displayName": "Classification", "hidden": false, "copyInstanceOnItemCopy": true, "fields": [ { "type": "enum", "key": "Box__Security__Classification__Key", "displayName": "Classification", "hidden": false, "options": [ { "key": "Classified", "staticConfig": { "classification": { "colorID": 7, "classificationDefinition": "Top Seret" } } } ] } ] }' ``` ## Add another classification ``` curl -i -X PUT "https://api.box.com/2.0/metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json-patch+json" \ -d '[{ "op": "addEnumOption", "fieldKey": "Box__Security__Classification__Key", "data": { "key": "Sensitive", "staticConfig":{ "classification": { "classificationDefinition": "Sensitive information that must not be shared.", "colorID": 4 } } } }]' ``` ## Update classification ``` curl -i -X PUT "https://api.box.com/2.0/metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json-patch+json" \ -d '[{ "op": "editEnumOption", "fieldKey": "Box__Security__Classification__Key", "enumOptionKey": "Sensitive", "data": { "key": "Very Sensitive", "staticConfig": { "classification": { "classificationDefinition": "Sensitive information that must not be shared.", "colorID": 4 } } } }]' ``` ## Delete classification ``` curl -i -X PUT "https://api.box.com/2.0/metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json-patch+json" \ -d '[{ "op": "removeEnumOption", "fieldKey": "Box__Security__Classification__Key", "enumOptionKey": "Sensitive" }]' ``` ## Delete all classifications ``` curl -i -X DELETE "https://api.box.com/2.0/metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get classification on file ``` curl -i -X GET "https://api.box.com/2.0/files/12345/metadata/enterprise/securityClassification-6VMVochwUWo" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Add classification to file ``` curl -i -X POST "https://api.box.com/2.0/files/12345/metadata/enterprise/securityClassification-6VMVochwUWo" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "Box__Security__Classification__Key": "Sensitive" }' ``` ## Update classification on file ``` curl -i -X PUT "https://api.box.com/2.0/files/12345/metadata/enterprise/securityClassification-6VMVochwUWo" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json-patch+json" \ -d '[{ "op": "replace", "path": "/Box__Security__Classification__Key", "value": "Internal" }]' ``` ## Remove classification from file ``` curl -i -X DELETE "https://api.box.com/2.0/files/12345/metadata/enterprise/securityClassification-6VMVochwUWo" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get classification on folder ``` curl -i -X GET "https://api.box.com/2.0/folders/12345/metadata/enterprise/securityClassification-6VMVochwUWo" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Add classification to folder ``` curl -i -X POST "https://api.box.com/2.0/folders/12345/metadata/enterprise/securityClassification-6VMVochwUWo" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "Box__Security__Classification__Key": "Sensitive" }' ``` ## Update classification on folder ``` curl -i -X PUT "https://api.box.com/2.0/folders/12345/metadata/enterprise/securityClassification-6VMVochwUWo" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json-patch+json" \ -d '[{ "op": "replace", "path": "/Box__Security__Classification__Key", "value": "Internal" }]' ``` ## Remove classification from folder ``` curl -i -X DELETE "https://api.box.com/2.0/folders/12345/metadata/enterprise/securityClassification-6VMVochwUWo" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Copy a file request ``` curl -i -X POST "https://api.box.com/2.0/file_requests/42037322/copy" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "title": "Please upload required documents", "description": "Please upload required documents", "status": "active", "is_email_required": true, "is_description_required": false, "folder": { "id": "2233212", "type": "folder" } }' ``` ## Update a file request ``` curl -i -X PUT "https://api.box.com/2.0/file_requests/42037322" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "title": "Please upload required documents", "description": "Please upload required documents", "status": "active", "is_email_required": true, "is_description_required": false }' ``` ## Get a file request ``` curl -i -X GET "https://api.box.com/2.0/file_requests/42037322" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Delete a file request ``` curl -i -X DELETE "https://api.box.com/2.0/file_requests/42037322" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get shared link on a file ``` curl -i -X GET "https://api.box.com/2.0/files/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Add shared link to a file ``` curl -i -X PUT "https://api.box.com/2.0/files/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "shared_link": { "access": "open", "password": "mypassword", "unshared_at": "2012-12-12T10:53:43-08:00", "permissions": { "can_download": false } } }' ``` ## Update shared link on a file ``` curl -i -X PUT "https://api.box.com/2.0/files/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "shared_link": { "access": "open", "password": "mypassword", "unshared_at": "2012-12-12T10:53:43-08:00", "permissions": { "can_download": false } } }' ``` ## Remove shared link from a file ``` curl -i -X PUT "https://api.box.com/2.0/files/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "shared_link": null }' ``` ## Get shared link on a folder ``` curl -i -X GET "https://api.box.com/2.0/folders/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Add shared link to a folder ``` curl -i -X PUT "https://api.box.com/2.0/folders/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "shared_link": { "access": "open", "password": "mypassword", "unshared_at": "2012-12-12T10:53:43-08:00", "permissions": { "can_download": false } } }' ``` ## Update shared link on a folder ``` curl -i -X PUT "https://api.box.com/2.0/folders/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "shared_link": { "access": "open", "password": "mypassword", "unshared_at": "2012-12-12T10:53:43-08:00", "permissions": { "can_download": false } } }' ``` ## Remove shared link from a folder ``` curl -i -X PUT "https://api.box.com/2.0/folders/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "shared_link": null }' ``` ## Get shared link on a web link ``` curl -i -X GET "https://api.box.com/2.0/web_links/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Add shared link to a web link ``` curl -i -X PUT "https://api.box.com/2.0/web_links/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "shared_link": { "access": "open", "password": "mypassword", "unshared_at": "2012-12-12T10:53:43-08:00", "permissions": { "can_download": false } } }' ``` ## Update shared link on a web link ``` curl -i -X PUT "https://api.box.com/2.0/web_links/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "shared_link": { "access": "open", "password": "mypassword", "unshared_at": "2012-12-12T10:53:43-08:00", "permissions": { "can_download": false } } }' ``` ## Remove shared link from a web link ``` curl -i -X PUT "https://api.box.com/2.0/web_links/32423234?fields=shared_link" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "shared_link": null }' ``` ## Gets a relay workflow with flows that are of type WORKFLOW_MANUAL_START ``` curl -i -X GET "https://api.box.com/2.0/workflows?folder_id=324234" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Start a flow in a relay workflow of type WORKFLOW_MANUAL_START ``` curl -i -X POST "https://api.box.com/2.0/workflows/42037322/start" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "type": "workflow_parameters", "flow": { "id": "8937625", "type": "flow" }, "files": [{ "type": "file", "id": "389047572" }, { "type": "file", "id": "389047578" }], "folder": { "id": "2233212", "type": "folder" }, "outcomes": [ { "id": "34895783", "type": "outcome", "task_collaborators": { "type": "variable", "variable_type": "user_list", "variable_value": [{ "type": "user", "id": "890273642" }] }, "completion_rule": { "type": "variable", "variable_type": "task_completion_rule", "variable_value": "all_assignees" }, "file_collaborator_role": { "type": "variable", "variable_type": "collaborator_role", "variable_value": "viewer" } } ] }' ``` ## Create Box Sign request ``` curl -i -X POST "https://api.box.com/2.0/sign_requests" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "signers": [ { "role": "signer", "email": "example_email@box.com" } ], "source_files": [ { "type": "file", "id": "123456789" } ], "parent_folder": { "type": "folder", "id": "0987654321" } }' ``` ## Get Box Sign requests ``` curl -i -X GET "https://api.box.com/2.0/sign_requests" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Get Box Sign request by ID ``` curl -i -X GET "https://api.box.com/2.0/sign_requests/<SIGN_REQUEST_ID>" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Cancel Box Sign request ``` curl -i -X POST "https://api.box.com/2.0/sign_requests/<SIGN_REQUEST_ID>/cancel" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Resend Box Sign request ``` curl -i -X POST "https://api.box.com/2.0/sign_requests/<SIGN_REQUEST_ID>/resend" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Terminate user sessions ``` curl -i -X POST "https://api.box.com/2.0/users/terminate_sessions" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -H "accept: application/json" \ -d { user_ids: ["6178859178", "4824866571"] user_logins: ["user@example.com", "user2@example.com",] } ``` ## Terminate groups sessions ``` curl -i -X POST "https://api.box.com/2.0/groups/terminate_sessions" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -H "accept: application/json" \ -d {   "group_ids": ["6178859178", "4824866571"], } ``` ## List integration mappings Slack ``` curl -X -L GET "https://api.box.com/2.0/integration_mappings/slack?partner_item_id=C987654321&box_item_id=123456789" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ ``` ## Create integration mapping Slack ``` curl -X -L POST "https://api.box.com/2.0/integration_mappings/slack" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H 'content-type: application/json' \ -d '{ "partner_item": { "id": "C987654321", "type": "channel", "slack_workspace_id": "T5555555" }, "box_item": { "id": "123456789", "type": "folder" } }' ``` ## Update integration mapping Slack ``` curl -X -L PUT "https://api.box.com/2.0/integration_mappings/slack/512521" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H 'content-type: application/json' \ -d'{ "options": { "is_access_management_disabled": true } }' ``` ## Delete integration mapping Slack ``` curl -X -L DELETE "https://api.box.com/2.0/integration_mappings/slack/512521" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '' ``` ## Get Box Sign template by ID ``` curl -L -X GET "https://api.box.com/2.0/sign_templates/12345678" \ -H "accept: application/json" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ ``` ## Get Box Sign templates ``` curl -L -X GET "https://api.box.com/2.0/sign_templates?marker=JV9IRGZmieiBasejOG9yDCRNgd2ymoZIbjsxbJMjIs3kioVii&limit=1000" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ ``` ## List integration mappings Teams ``` curl -X -L GET "https://api.box.com/2.0/integration_mappings/teams" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ ``` ## Create integration mapping Teams ``` curl -X -L POST "https://api.box.com/2.0/integration_mappings/teams" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H 'content-type: application/json' \ -d '{ "partner_item": { "id": "19%3ABCD-Avgfggkggyftdtfgghjhkhkhh%40thread:tacv2", "type": "channel", "team_id": "hjgjgjg-bhhj-564a-b643-hghgj685u", "tenant_id": "E1234567" }, "box_item": { "id": "42037322", "type": "folder" } }' ``` ## Update integration mapping Teams ``` curl -X -L PUT "https://api.box.com/2.0/integration_mappings/teams/12345" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H 'content-type: application/json' \ ``` ## Delete integration mapping Teams ``` curl -X -L DELETE "https://api.box.com/2.0/integration_mappings/teams/342423" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '' ``` ## Create archive ``` curl -i -X POST "https://api.box.com/2.0/archives" \ -H "box-version: 2025.0" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "Some Archive Name", "description": "Some Archive Description" }' ``` ## List archives ``` curl -i -X GET "https://api.box.com/2.0/archives" \ -H "box-version: 2025.0" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` ## Update archive ``` curl -i -X PUT "https://api.box.com/2.0/archives/12345" \ -H "box-version: 2025.0" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -H "content-type: application/json" \ -d '{ "name": "Some Archive Name", "description": "Some Archive Description" }' ``` ## Delete archive ``` curl -i -X DELETE "https://api.box.com/2.0/archives/12345" \ -H "box-version: 2025.0" \ -H "authorization: Bearer <ACCESS_TOKEN>" ``` # Bulk delete external users ``` curl -X -L POST "https://api.box.com/2.0/external_users/external_users_submit_delete_job" \ -H "authorization: Bearer <ACCESS_TOKEN>" \ -d '{ "external_users": "type": "array" "description": "List of external users to delete." "items": "$ref: #/components/schemas/UserReference" }' ``` --- ### Box iOS SDK v10 **Type:** page | **Section:** Additional Resources Box iOS SDK v10 Project Status build Platforms Coverage Status Swift Package Manager Carthage compatible CocoaPods compatible Introduction… # Box iOS SDK v10 [](http://opensource.box.com/badges) [](https://img.shields.io/badge/Platforms-macOS_iOS_tvOS_watchOS_visionOS_Linux-yellowgreen?style=flat-square) [](https://coveralls.io/github/box/box-ios-sdk?branch=main) [](https://img.shields.io/badge/Swift_Package_Manager-compatible-orange?style=flat-square) [](https://github.com/Carthage/Carthage) [](https://cocoapods.org/pods/BoxSDK) - [Introduction](#introduction) [Supported versions](#supported-versions) - [Version v6](#version-v6) - [Version v10](#version-v10) - [Which Version Should I Use?](#which-version-should-i-use) [Requirements](#requirements) [Installing](#installing) - [Swift Package Manager](#swift-package-manager) - [Carthage](#carthage) - [CocoaPods](#cocoapods) [Getting Started](#getting-started) [Authentication](#authentication) [Documentation](#documentation) [Migration guides](#migration-guides) [Versioning](#versioning) - [Version schedule](#version-schedule) [Contributing](#contributing) [FIPS 140-2 Compliance](#fips-140-2-compliance) [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests) [Copyright and License](#copyright-and-license) # Introduction We are excited to introduce the v10 major release of the Box iOS SDK, designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With this SDK version, we provide the `BoxSdkGen` module, which gives you access to: 1. Full API Support: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. 2. Rapid API Updates: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. 3. Embedded Documentation: We understand that easy access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. 4. Enhanced Convenience Methods: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as chunk uploads, classification, and much more. 5. Seamless Start: The new SDKs integrate essential functionalities like authentication, automatic retries with exponential backoff, exception handling, request cancellation, and type checking, enabling you to focus solely on your application's business logic. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. # Supported versions To enhance developer experience, we have introduced the new generated codebase through the `BoxSdkGen` module. The `BoxSdkGen` module is available in two major supported versions: v6 and v10. ## Version v6 In v6 of the Box iOS SDK, we are introducing a version that consolidates both the manually written module (`BoxSDK`) and the new generated module (`BoxSdkGen`). This allows developers to use both modules simultaneously within a single project The codebase for v6 of the Box iOS SDK is currently available on the [combined-sdk](https://github.com/box/box-ios-sdk/tree/combined-sdk) branch. Migration guide which would help with migration from `BoxSDK` to `BoxSdkGen` can be found [here](https://ja.developer.box.com/0c92cbafb06bc577a6f1bc761b6da85d/from-BoxSDK-to-BoxSdkGen.md). Version v6 is intended for: - Existing developers of the Box iOS SDK v5 who want to access new API features while keeping their current codebase largely unchanged. - Existing developers who are in the process of migrating to `BoxSdkGen`, but do not want to move all their code to the new module immediately. ## Version v10 Starting with v10, the SDK is built entirely on the generated `BoxSdkGen` module, which fully and exclusively replaces the old `BoxSDK` module. The codebase for v10 of the Box iOS SDK is currently available on the [main](https://github.com/box/box-ios-sdk/tree/main) branch. Version v10 is intended for: - New users of the Box iOS SDK. - Developers already working with the generated Box iOS SDK previously available under the [Box Swift SDK Gen repository](https://github.com/box/box-swift-sdk-gen). ## Which Version Should I Use? | Scenario | Recommended Version | Example Dependency (SPM / CocoaPods) | | --- | --- | --- | | Creating a new application | Use v10 | SPM: .package(url: "https://github.com/box/box-ios-sdk.git", from: "10.0.0") CocoaPods: pod 'BoxSdkGen', '~> 10.0.0' | | App using BoxSdkGen | Migrate to v10 | SPM: .package(url: "https://github.com/box/box-ios-sdk.git", from: "10.0.0") CocoaPods: pod 'BoxSdkGen', '~> 10.0.0' | | App using both BoxSdkGen and BoxSDK | Upgrade to v6 | SPM: .package(url: "https://github.com/box/box-ios-sdk.git", .upToNextMajor(from: "6.0.0")) CocoaPods: pod 'BoxSDK', '~> 6.0' | | App using v5 of BoxSDK | Upgrade to v6 | SPM: .package(url: "https://github.com/box/box-ios-sdk.git", .upToNextMajor(from: "6.0.0")) CocoaPods: pod 'BoxSDK', '~> 6.0' | For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/). # Requirements - iOS 13.0+ / Mac OS X 10.15+ / tvOS 13.0+ / watchOS 6.0+ - Xcode 13.3+ # Installing The next generation of the SDK starts with version `10.0.0`. ## Swift Package Manager The Swift Package Manager is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies. To add a dependency to your Xcode project, click on Xcode project file on `Packages Dependencies` and click on the plus icon to add a package. Then enter the following repository url [https://github.com/box/box-ios-sdk.git](https://github.com/box/box-ios-sdk.git) and select the version by choosing `Up to Next Major Version` and entering `10.0.0` as the starting version. Alternatively, add the package in your `Package.swift` under the top-level `dependencies` array: ``` dependencies: [ .package(url: "https://github.com/box/box-ios-sdk.git", .upToNextMajor(from: "10.0.0")) ] ``` Then add the `BoxSDK` product to your target's `dependencies`: ``` .product(name: "BoxSDK", package: "box-ios-sdk") ``` For detailed instructions, please see the [official documentation for SPM](https://www.swift.org/package-manager/). ## Carthage Carthage is a decentralized dependency manager which builds your dependencies and provides you with binary frameworks. To add a dependency to SDK, you need to add the following line to your `Cartfile` : ``` git "https://github.com/box/box-ios-sdk.git" >= 10.0.0 ``` Then run: ``` carthage bootstrap --use-xcframeworks ``` And finally drag the built `xcframework` from Carthage/Build into your project. For more detailed instructions, please see the [official documentation for Carthage](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application). ## CocoaPods CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. To start using `BoxSDK` with CocoaPods, you need to add `BoxSDK` dependency to your `Podfile`: ``` pod 'BoxSDK', '>= 10.0.0' ``` Then run the following command in your project directory: ``` $ pod install ``` Now open your [project].xcworkspace and build. For more detailed instructions, please see the [official documentation for Cocoapods](https://guides.cocoapods.org/using/using-cocoapods.html). # Getting Started To get started with the SDK, get a Developer Token from the Configuration page of your app in the Box Developer Console. You can use this token to make test calls for your own Box account. The SDK provides a `BoxDeveloperTokenAuth` class, which allows you to authenticate using your Developer Token. Use instance of `BoxDeveloperTokenAuth` to initialize `BoxClient` object. Using `BoxClient` object you can access managers, which allow you to perform some operations on your Box account. **Important:** Before using those classes, make sure to import `BoxSdkGen` module in your file. The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ``` import BoxSdkGen let auth = BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN_GOES_HERE") let client = BoxClient(auth: auth) let items = try await client.folders.getFolderItems(folderId: "0") if let entries = items.entries { for entry in entries { switch entry { case let .fileMini(file): print("file \(file.name!) [\(file.id)]") case let .folderMini(folder): print("folder \(folder.name!) [\(folder.id)]") case let .webLinkMini(webLink): print("webLink \(webLink.name!) [\(webLink.id)]") } } } ``` # Authentication Box iOS SDK v10 supports multiple authentication methods including Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT). You can find detailed instructions and example code for each authentication method in [Authentication](https://ja.developer.box.com/92219a39586e88bbadfdf613de710d0a/Authentication.md) document. # Documentation Browse the [docs](https://ja.developer.box.com/7e99bb3cb1235f38e01d0268bdf2d71e/README.md) or see [API Reference](https://developer.box.com/reference/) for more information. # Migration guides Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides). # Versioning We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](https://ja.developer.box.com/8249b54722608e671700c4582b0da591/VERSIONS.md) for details which is effective from 30 July 2022. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. ### Version schedule | Version | Supported Environments | State | First Release | EOL/Terminated | | --- | --- | --- | --- | --- | | 10 | iOS 13.0+ / Mac OS X 10.15+ / tvOS 13.0+ / watchOS 6.0+ | Supported | 17 Sep 2025 | TBD | | 6 | iOS 13.0+ / Mac OS X 10.15+ / tvOS 13.0+ / watchOS 6.0+ | Supported | 23 Oct 2025 | 2027 or v7 is released | | 5 | iOS 11.0+ / Mac OS X 10.13+ / tvOS 11.0+ / watchOS 4.0+ | EOL | 28 Oct 2021 | 23 Oct 2025 | | 4 | | EOL | 13 Feb 2020 | 28 Oct 2021 | | 3 | | EOL | 20 Nov 2019 | 13 Feb 2020 | # Contributing See [CONTRIBUTING.md](https://ja.developer.box.com/7cfc96c5a7593975f5559b7eadf8aeec/CONTRIBUTING.md). # FIPS 140-2 Compliance The Box iOS SDK uses the CommonCrypto library, which relies on Apple's corecrypto cryptographic module. This module has undergone multiple validations by the Cryptographic Module Validation Program (CMVP) and is confirmed to be compliant with FIPS 140-2 standards. For further information, please refer to [Apple's security certification](https://support.apple.com/en-gb/guide/certifications/apc30d0ed034/web) and [iOS security certifications](https://support.apple.com/en-gb/guide/certifications/apc3fa917cb49/1/web/1.0). # Questions, Bugs, and Feature Requests? Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-ios-sdk/issues)! Or, if that doesn't work, [file a new one](https://github.com/box/box-ios-sdk/issues/new) and we will get back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5). # Copyright and License Copyright 2025 Box, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --- ### Box iOS SDK v10 **Type:** page | **Section:** Additional Resources Box iOS SDK v10 Project Status build Platforms Coverage Status Swift Package Manager Carthage compatible CocoaPods compatible Introduction… # Box iOS SDK v10 [](http://opensource.box.com/badges) [](https://img.shields.io/badge/Platforms-macOS_iOS_tvOS_watchOS_visionOS_Linux-yellowgreen?style=flat-square) [](https://coveralls.io/github/box/box-ios-sdk?branch=main) [](https://img.shields.io/badge/Swift_Package_Manager-compatible-orange?style=flat-square) [](https://github.com/Carthage/Carthage) [](https://cocoapods.org/pods/BoxSDK) - [Introduction](#introduction) [Supported versions](#supported-versions) - [Version v6](#version-v6) - [Version v10](#version-v10) - [Which Version Should I Use?](#which-version-should-i-use) [Requirements](#requirements) [Installing](#installing) - [Swift Package Manager](#swift-package-manager) - [Carthage](#carthage) - [CocoaPods](#cocoapods) [Getting Started](#getting-started) [Authentication](#authentication) [Documentation](#documentation) [Migration guides](#migration-guides) [Versioning](#versioning) - [Version schedule](#version-schedule) [Contributing](#contributing) [FIPS 140-2 Compliance](#fips-140-2-compliance) [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests) [Copyright and License](#copyright-and-license) # Introduction We are excited to introduce the v10 major release of the Box iOS SDK, designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With this SDK version, we provide the `BoxSdkGen` module, which gives you access to: 1. Full API Support: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. 2. Rapid API Updates: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. 3. Embedded Documentation: We understand that easy access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. 4. Enhanced Convenience Methods: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as chunk uploads, classification, and much more. 5. Seamless Start: The new SDKs integrate essential functionalities like authentication, automatic retries with exponential backoff, exception handling, request cancellation, and type checking, enabling you to focus solely on your application's business logic. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. # Supported versions To enhance developer experience, we have introduced the new generated codebase through the `BoxSdkGen` module. The `BoxSdkGen` module is available in two major supported versions: v6 and v10. ## Version v6 In v6 of the Box iOS SDK, we are introducing a version that consolidates both the manually written module (`BoxSDK`) and the new generated module (`BoxSdkGen`). This allows developers to use both modules simultaneously within a single project The codebase for v6 of the Box iOS SDK is currently available on the [combined-sdk](https://github.com/box/box-ios-sdk/tree/combined-sdk) branch. Migration guide which would help with migration from `BoxSDK` to `BoxSdkGen` can be found [here](https://ja.developer.box.com/0c92cbafb06bc577a6f1bc761b6da85d/from-BoxSDK-to-BoxSdkGen.md). Version v6 is intended for: - Existing developers of the Box iOS SDK v5 who want to access new API features while keeping their current codebase largely unchanged. - Existing developers who are in the process of migrating to `BoxSdkGen`, but do not want to move all their code to the new module immediately. ## Version v10 Starting with v10, the SDK is built entirely on the generated `BoxSdkGen` module, which fully and exclusively replaces the old `BoxSDK` module. The codebase for v10 of the Box iOS SDK is currently available on the [main](https://github.com/box/box-ios-sdk/tree/main) branch. Version v10 is intended for: - New users of the Box iOS SDK. - Developers already working with the generated Box iOS SDK previously available under the [Box Swift SDK Gen repository](https://github.com/box/box-swift-sdk-gen). ## Which Version Should I Use? | Scenario | Recommended Version | Example Dependency (SPM / CocoaPods) | | --- | --- | --- | | Creating a new application | Use v10 | SPM: .package(url: "https://github.com/box/box-ios-sdk.git", from: "10.0.0") CocoaPods: pod 'BoxSdkGen', '~> 10.0.0' | | App using BoxSdkGen | Migrate to v10 | SPM: .package(url: "https://github.com/box/box-ios-sdk.git", from: "10.0.0") CocoaPods: pod 'BoxSdkGen', '~> 10.0.0' | | App using both BoxSdkGen and BoxSDK | Upgrade to v6 | SPM: .package(url: "https://github.com/box/box-ios-sdk.git", .upToNextMajor(from: "6.0.0")) CocoaPods: pod 'BoxSDK', '~> 6.0' | | App using v5 of BoxSDK | Upgrade to v6 | SPM: .package(url: "https://github.com/box/box-ios-sdk.git", .upToNextMajor(from: "6.0.0")) CocoaPods: pod 'BoxSDK', '~> 6.0' | For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/). # Requirements - iOS 13.0+ / Mac OS X 10.15+ / tvOS 13.0+ / watchOS 6.0+ - Xcode 13.3+ # Installing The next generation of the SDK starts with version `10.0.0`. ## Swift Package Manager The Swift Package Manager is a tool for managing the distribution of Swift code. It’s integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies. To add a dependency to your Xcode project, click on Xcode project file on `Packages Dependencies` and click on the plus icon to add a package. Then enter the following repository url [https://github.com/box/box-ios-sdk.git](https://github.com/box/box-ios-sdk.git) and select the version by choosing `Up to Next Major Version` and entering `10.0.0` as the starting version. Alternatively, add the package in your `Package.swift` under the top-level `dependencies` array: ``` dependencies: [ .package(url: "https://github.com/box/box-ios-sdk.git", .upToNextMajor(from: "10.0.0")) ] ``` Then add the `BoxSDK` product to your target's `dependencies`: ``` .product(name: "BoxSDK", package: "box-ios-sdk") ``` For detailed instructions, please see the [official documentation for SPM](https://www.swift.org/package-manager/). ## Carthage Carthage is a decentralized dependency manager which builds your dependencies and provides you with binary frameworks. To add a dependency to SDK, you need to add the following line to your `Cartfile` : ``` git "https://github.com/box/box-ios-sdk.git" >= 10.0.0 ``` Then run: ``` carthage bootstrap --use-xcframeworks ``` And finally drag the built `xcframework` from Carthage/Build into your project. For more detailed instructions, please see the [official documentation for Carthage](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application). ## CocoaPods CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. To start using `BoxSDK` with CocoaPods, you need to add `BoxSDK` dependency to your `Podfile`: ``` pod 'BoxSDK', '>= 10.0.0' ``` Then run the following command in your project directory: ``` $ pod install ``` Now open your [project].xcworkspace and build. For more detailed instructions, please see the [official documentation for Cocoapods](https://guides.cocoapods.org/using/using-cocoapods.html). # Getting Started To get started with the SDK, get a Developer Token from the Configuration page of your app in the Box Developer Console. You can use this token to make test calls for your own Box account. The SDK provides a `BoxDeveloperTokenAuth` class, which allows you to authenticate using your Developer Token. Use instance of `BoxDeveloperTokenAuth` to initialize `BoxClient` object. Using `BoxClient` object you can access managers, which allow you to perform some operations on your Box account. **Important:** Before using those classes, make sure to import `BoxSdkGen` module in your file. The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ``` import BoxSdkGen let auth = BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN_GOES_HERE") let client = BoxClient(auth: auth) let items = try await client.folders.getFolderItems(folderId: "0") if let entries = items.entries { for entry in entries { switch entry { case let .fileMini(file): print("file \(file.name!) [\(file.id)]") case let .folderMini(folder): print("folder \(folder.name!) [\(folder.id)]") case let .webLinkMini(webLink): print("webLink \(webLink.name!) [\(webLink.id)]") } } } ``` # Authentication Box iOS SDK v10 supports multiple authentication methods including Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT). You can find detailed instructions and example code for each authentication method in [Authentication](https://ja.developer.box.com/92219a39586e88bbadfdf613de710d0a/Authentication.md) document. # Documentation Browse the [docs](https://ja.developer.box.com/5cbb46a59003518b210a314f04939ee6/README.md) or see [API Reference](https://developer.box.com/reference/) for more information. # Migration guides Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides). # Versioning We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](https://ja.developer.box.com/8249b54722608e671700c4582b0da591/VERSIONS.md) for details which is effective from 30 July 2022. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. ### Version schedule | Version | Supported Environments | State | First Release | EOL/Terminated | | --- | --- | --- | --- | --- | | 10 | iOS 13.0+ / Mac OS X 10.15+ / tvOS 13.0+ / watchOS 6.0+ | Supported | 17 Sep 2025 | TBD | | 6 | iOS 13.0+ / Mac OS X 10.15+ / tvOS 13.0+ / watchOS 6.0+ | Supported | 23 Oct 2025 | 2027 or v7 is released | | 5 | iOS 11.0+ / Mac OS X 10.13+ / tvOS 11.0+ / watchOS 4.0+ | EOL | 28 Oct 2021 | 23 Oct 2025 | | 4 | | EOL | 13 Feb 2020 | 28 Oct 2021 | | 3 | | EOL | 20 Nov 2019 | 13 Feb 2020 | # Contributing See [CONTRIBUTING.md](https://ja.developer.box.com/7cfc96c5a7593975f5559b7eadf8aeec/CONTRIBUTING.md). # FIPS 140-2 Compliance The Box iOS SDK uses the CommonCrypto library, which relies on Apple's corecrypto cryptographic module. This module has undergone multiple validations by the Cryptographic Module Validation Program (CMVP) and is confirmed to be compliant with FIPS 140-2 standards. For further information, please refer to [Apple's security certification](https://support.apple.com/en-gb/guide/certifications/apc30d0ed034/web) and [iOS security certifications](https://support.apple.com/en-gb/guide/certifications/apc3fa917cb49/1/web/1.0). # Questions, Bugs, and Feature Requests? Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-ios-sdk/issues)! Or, if that doesn't work, [file a new one](https://github.com/box/box-ios-sdk/issues/new) and we will get back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5). # Copyright and License Copyright 2025 Box, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --- ### Box Java SDK v10 **Type:** page | **Section:** Additional Resources Box Java SDK v10 Project Status build Maven Central Version Platform Coverage Introduction Supported versions Version v5 Version v10 Which… # Box Java SDK v10 [](http://opensource.box.com/badges) [](https://coveralls.io/github/box/box-java-sdk-gen?branch=main) - [Introduction](#introduction) [Supported versions](#supported-versions) - [Version v5](#version-v5) - [Version v10](#version-v10) - [Which Version Should I Use?](#which-version-should-i-use) [Installing](#installing) [Getting Started](#getting-started) [Authentication](#authentication) [Documentation](#documentation) [Migration guides](#migration-guides) [Versioning](#versioning) - [Version schedule](#version-schedule) [Contributing](#contributing) [3rd Party Libraries & Licenses](#3rd-party-libraries--licenses) [FIPS 140-2 Compliance](#fips-140-2-compliance) [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests) [Copyright and License](#copyright-and-license) # Introduction We are excited to introduce the v10 major release of the Box Java SDK, designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With this SDK version, we provide the `com.box.sdkgen` package, which gives you access to: 1. Full API Support: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. 2. Rapid API Updates: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. 3. Embedded Documentation: We understand that easy access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. 4. Enhanced Convenience Methods: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as chunk uploads, classification, and much more. 5. Seamless Start: The new SDKs integrate essential functionalities like authentication, automatic retries with exponential backoff, exception handling, request cancellation, and type checking, enabling you to focus solely on your application's business logic. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. # Supported versions To enhance developer experience, we have introduced the new generated codebase through the `com.box.sdkgen` package. The `com.box.sdkgen` package is available in two major supported versions: v5 and v10. ## Version v5 In v5 of the Box Java SDK, we are introducing a version that consolidates both the manually written package (`com.box.sdk`) and the new generated package (`com.box.sdkgen`). This allows developers to use both packages simultaneously within a single project. The codebase for v5 of the Box Java SDK is currently available on the [combined-sdk](https://github.com/box/box-java-sdk/tree/combined-sdk) branch. Migration guide which would help with migration from `com.box.sdk` to `com.box.sdkgen` can be found [here](./migration-guides/from-com.box.sdk-to-com.box.sdkgen.md). Version v5 is intended for: - Existing developers of the Box Java SDK v4 who want to access new API features while keeping their current codebase largely unchanged. - Existing developers who are in the process of migrating to `com.box.sdkgen`, but do not want to move all their code to the new package immediately. ## Version v10 Starting with v10, the SDK is built entirely on the generated `com.box.sdkgen` package, which fully and exclusively replaces the old `com.box.sdk` package. The codebase for v10 of the Box Java SDK is currently available on the [main](https://github.com/box/box-java-sdk/tree/main) branch. Version v10 is intended for: - New users of the Box Java SDK. - Developers already working with the generated Box Java SDK previously available under the [Box Java SDK Gen repository](https://github.com/box/box-java-sdk-gen). ## Which Version Should I Use? | Scenario | Recommended Version | Example gradle dependency | | --- | --- | --- | | Creating a new application | Use v10 | com.box:box-java-sdk:10.0.0 | | App using box-java-sdk-gen artifact | Migrate to v10 | com.box:box-java-sdk:10.0.0 | | App using both box-java-sdk-gen and box-java-sdk artifacts | Upgrade to v5 | com.box:box-java-sdk:5.0.0 | | App using v4 of box-java-sdk artifact | Upgrade to v5 | com.box:box-java-sdk:5.0.0 | For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/). # Installing The SDK is available on [Maven Central Repository](https://mvnrepository.com/artifact/com.box/box-java-sdk). To include the SDK in your project, add the following dependency to your `pom.xml` file: ``` <dependency> <groupId>com.box</groupId> <artifactId>box-java-sdk</artifactId> <version>VERSION</version> </dependency> ``` To include the SDK in your project using Gradle, add the following dependency to your `build.gradle` file: ``` implementation 'com.box:box-java-sdk:VERSION' ``` Where `VERSION` is the version of the SDK you want to use. The next generation of the SDK starts with version `10.0.0`. You can find the latest version in the [Maven Central Repository](https://mvnrepository.com/artifact/com.box/box-java-sdk). # Getting Started To get started with the SDK, get a Developer Token from the Configuration page of your app in the Box Developer Console. You can use this token to make test calls for your own Box account. The SDK provides an `BoxDeveloperTokenAuth` class, which allows you to authenticate using your Developer Token. Use instance of `BoxDeveloperTokenAuth` to initialize `BoxClient` object. Using `BoxClient` object you can access managers, which allow you to perform some operations on your Box account. The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ``` BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN"); BoxClient client = new BoxClient(auth); client.folders.getFolderItems("0").getEntries().forEach(item -> { System.out.println(item.toString()); }); ``` # Authentication Box Java SDK v10 supports multiple authentication methods including Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT). You can find detailed instructions and example code for each authentication method in [Authentication](https://ja.developer.box.com/17d58f634e4d6fd538920ca58842dc34/Authentication.md) document. # Documentation Browse the [docs](https://ja.developer.box.com/3b79560dcdef825f74baf1dac8a85bfb/README.md) or see [API Reference](https://developer.box.com/reference/) for more information. # Migration guides Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides). # Versioning We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](https://ja.developer.box.com/8249b54722608e671700c4582b0da591/VERSIONS.md) for details which is effective from 30 July 2022. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. ## Version schedule | Version | Supported Environments | State | First Release | EOL/Terminated | | --- | --- | --- | --- | --- | | 10 | Java 8 and up | Supported | 17 Sep 2025 | TBD | | 5 | Java 8 and up | Supported | 23 Oct 2025 | 2027 or v6 is released | | 4 | Java 8 and up | EOL | 17 Jan 2023 | 23 Oct 2025 | | 3 | Java 8 and up | EOL | 17 Jan 2022 | 17 Jan 2023 | | 2 | | EOL | 07 Jan 2016 | 17 Jan 2022 | | 1 | | EOL | 15 Apr 2015 | 07 Jan 2016 | # Contributing See [CONTRIBUTING.md](https://ja.developer.box.com/7cfc96c5a7593975f5559b7eadf8aeec/CONTRIBUTING.md). # 3rd Party Libraries & Licenses The Java SDK uses third-party libraries that are required for usage. Their licenses are listed below: [jackson-annotations v2.17.2](https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations/2.17.2) Maven: `com.fasterxml.jackson.core:jackson-annotations:2.17.2` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [jackson-core v2.17.2](https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core/2.17.2) Maven: `com.fasterxml.jackson.core:jackson-core:2.17.2` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [jackson-databind v2.17.2](https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.17.2) Maven: `com.fasterxml.jackson.core:jackson-databind:2.17.2` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [okhttp v4.12.0](https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp/4.12.0) Maven: `com.squareup.okhttp3:okhttp:4.12.0` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [okio v3.5.0](https://mvnrepository.com/artifact/com.squareup.okio/okio/3.5.0) Maven: `com.squareup.okio:okio:3.5.0` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [jose4j v0.9.6](https://mvnrepository.com/artifact/org.bitbucket.b_c/jose4j/0.9.6) Maven: `org.bitbucket.b_c:jose4j:0.9.6` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [bcprov-jdk18on v1.82](https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on/1.82) Maven: `org.bouncycastle:bcprov-jdk18on:1.82` Licence: [MIT](https://opensource.org/licenses/MIT) [bcpkix-jdk18on v1.82](https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on/1.82) Maven: `org.bouncycastle:bcpkix-jdk18on:1.82` Licence: [MIT](https://opensource.org/licenses/MIT) The following libraries are required for running tests: [junit-jupiter-api v5.10.0](https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api/5.10.0) Maven: `org.junit.jupiter:junit-jupiter-api:5.10.0` Licence: [EPL 2.0](https://www.eclipse.org/legal/epl-2.0/) [junit-jupiter-engine v5.10.0](https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine/5.10.0) Maven: `org.junit.jupiter:junit-jupiter-engine:5.10.0` Licence: [EPL 2.0](https://www.eclipse.org/legal/epl-2.0/) # FIPS 140-2 Compliance To generate a Json Web Signature used for retrieving tokens in the JWT authentication method, the Box Java SDK decrypts an encrypted private key. For this purpose, Box Java SDK uses libraries (`org.bouncycastle:bcpkix-jdk18on:1.82` and `org.bouncycastle:bcprov-jdk18on:1.82`) that are NOT compatible with FIPS 140-2 validated cryptographic library (`org.bouncycastle:bc-fips`). There are two ways of ensuring that decryption operation is FIPS-compiant. You can provide a custom implementation of the `IPrivateKeyDecryptor` interface, which performs the decryption operation using FIPS-certified library of your choice. The interface requires the implementation of just one method: ``` PrivateKey decryptPrivateKey(String encryptedPrivateKey, String passphrase); ``` After implementing the custom decryptor, you need to set your custom decryptor class: ``` JWTConfig newConfig = JWTConfig.fromConfigFile(JWT_CONFIG_PATH, customDecryptor); BoxJWTAuth auth = new BoxJWTAuth(jwtConfig); BoxClient client = new BoxClient(auth); ``` Alternative method is to override the Bouncy Castle libraries to the v.1.57 version, which are compatible with the FIPS 140-2 validated cryptographic library (`org.bouncycastle:bc-fips`). NOTE: This solution is not recommended as Bouncy Castle v.1.57 has some moderate vulnerabilities reported against those versions, including: - [CVE-2020-26939](https://github.com/advisories/GHSA-72m5-fvvv-55m6) - Observable Differences in Behavior to Error Inputs in Bouncy Castle - [CVE-2020-15522](https://github.com/advisories/GHSA-6xx3-rg99-gc3p) - Timing based private key exposure in Bouncy Castle Furthermore,using Bouncy Castle v.1.57 may lead to [Bouncycastle BadPaddingException for JWT auth](#bouncycastle-badPaddingException-for-jWT-auth). Gradle example ``` implementation('com.box:box-java-sdk:x.y.z') { exclude group: 'org.bouncycastle', module: 'bcprov-jdk18on' exclude group: 'org.bouncycastle', module: 'bcpkix-jdk18on' } runtimeOnly('org.bouncycastle:bcprov-jdk15on:1.57') runtimeOnly('org.bouncycastle:bcpkix-jdk15on:1.57') ``` Maven example: ``` <dependencies> <dependency> <groupId>com.box</groupId> <artifactId>box-java-sdk</artifactId> <version>x.y.z</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk18on</artifactId> </exclusion> <exclusion> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk18on</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.57</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> <version>1.57</version> <scope>runtime</scope> </dependency> </dependencies> ``` # Questions, Bugs, and Feature Requests? Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-java-sdk/issues)! Or, if that doesn't work, [file a new one](https://github.com/box/box-java-sdk/issues/new), and we will get back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5). # Copyright and License Copyright 2025 Box, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --- ### Box Java SDK v10 **Type:** page | **Section:** Additional Resources Box Java SDK v10 Project Status build Maven Central Version Platform Coverage Introduction Supported versions Version v5 Version v10 Which… # Box Java SDK v10 [](http://opensource.box.com/badges) [](https://coveralls.io/github/box/box-java-sdk-gen?branch=sdk-gen) - [Introduction](#introduction) [Supported versions](#supported-versions) - [Version v5](#version-v5) - [Version v10](#version-v10) - [Which Version Should I Use?](#which-version-should-i-use) [Installing](#installing) [Getting Started](#getting-started) [Authentication](#authentication) [Documentation](#documentation) [Migration guides](#migration-guides) [Versioning](#versioning) - [Version schedule](#version-schedule) [Contributing](#contributing) [3rd Party Libraries & Licenses](#3rd-party-libraries--licenses) [FIPS 140-2 Compliance](#fips-140-2-compliance) [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests) [Copyright and License](#copyright-and-license) # Introduction We are excited to introduce the v10 major release of the Box Java SDK, designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With this SDK version, we provide the `com.box.sdkgen` package, which gives you access to: 1. Full API Support: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. 2. Rapid API Updates: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. 3. Embedded Documentation: We understand that easy access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. 4. Enhanced Convenience Methods: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as chunk uploads, classification, and much more. 5. Seamless Start: The new SDKs integrate essential functionalities like authentication, automatic retries with exponential backoff, exception handling, request cancellation, and type checking, enabling you to focus solely on your application's business logic. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. # Supported versions To enhance developer experience, we have introduced the new generated codebase through the `com.box.sdkgen` package. The `com.box.sdkgen` package is available in two major supported versions: v5 and v10. ## Version v5 In v5 of the Box Java SDK, we are introducing a version that consolidates both the manually written package (`com.box.sdk`) and the new generated package (`com.box.sdkgen`). This allows developers to use both packages simultaneously within a single project. The codebase for v5 of the Box Java SDK is currently available on the [combined-sdk](https://github.com/box/box-java-sdk/tree/combined-sdk) branch. Migration guide which would help with migration from `com.box.sdk` to `com.box.sdkgen` can be found [here](./migration-guides/from-com.box.sdk-to-com.box.sdkgen.md). Version v5 is intended for: - Existing developers of the Box Java SDK v4 who want to access new API features while keeping their current codebase largely unchanged. - Existing developers who are in the process of migrating to `com.box.sdkgen`, but do not want to move all their code to the new package immediately. ## Version v10 Starting with v10, the SDK is built entirely on the generated `com.box.sdkgen` package, which fully and exclusively replaces the old `com.box.sdk` package. The codebase for v10 of the Box Java SDK is currently available on the [sdk-gen](https://github.com/box/box-java-sdk/tree/sdk-gen) branch. Version v10 is intended for: - New users of the Box Java SDK. - Developers already working with the generated Box Java SDK previously available under the [Box Java SDK Gen repository](https://github.com/box/box-java-sdk-gen). ## Which Version Should I Use? | Scenario | Recommended Version | Example gradle dependency | | --- | --- | --- | | Creating a new application | Use v10 | com.box:box-java-sdk:10.0.0 | | App using box-java-sdk-gen artifact | Migrate to v10 | com.box:box-java-sdk:10.0.0 | | App using both box-java-sdk-gen and box-java-sdk artifacts | Upgrade to v5 | com.box:box-java-sdk:5.0.0 | | App using v4 of box-java-sdk artifact | Upgrade to v5 | com.box:box-java-sdk:5.0.0 | For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/). # Installing The SDK is available on [Maven Central Repository](https://mvnrepository.com/artifact/com.box/box-java-sdk). To include the SDK in your project, add the following dependency to your `pom.xml` file: ``` <dependency> <groupId>com.box</groupId> <artifactId>box-java-sdk</artifactId> <version>VERSION</version> </dependency> ``` To include the SDK in your project using Gradle, add the following dependency to your `build.gradle` file: ``` implementation 'com.box:box-java-sdk:VERSION' ``` Where `VERSION` is the version of the SDK you want to use. The next generation of the SDK starts with version `10.0.0`. You can find the latest version in the [Maven Central Repository](https://mvnrepository.com/artifact/com.box/box-java-sdk). # Getting Started To get started with the SDK, get a Developer Token from the Configuration page of your app in the Box Developer Console. You can use this token to make test calls for your own Box account. The SDK provides an `BoxDeveloperTokenAuth` class, which allows you to authenticate using your Developer Token. Use instance of `BoxDeveloperTokenAuth` to initialize `BoxClient` object. Using `BoxClient` object you can access managers, which allow you to perform some operations on your Box account. The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ``` BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN"); BoxClient client = new BoxClient(auth); client.folders.getFolderItems("0").getEntries().forEach(item -> { System.out.println(item.toString()); }); ``` # Authentication Box Java SDK v10 supports multiple authentication methods including Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT). You can find detailed instructions and example code for each authentication method in [Authentication](https://ja.developer.box.com/17d58f634e4d6fd538920ca58842dc34/Authentication.md) document. # Documentation Browse the [docs](https://ja.developer.box.com/cccd13a7eaec5f417c5e9bc146b7e4dd/README.md) or see [API Reference](https://developer.box.com/reference/) for more information. # Migration guides Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides). # Versioning We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](https://ja.developer.box.com/8249b54722608e671700c4582b0da591/VERSIONS.md) for details which is effective from 30 July 2022. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. ## Version schedule | Version | Supported Environments | State | First Release | EOL/Terminated | | --- | --- | --- | --- | --- | | 10 | Java 8 and up | Supported | 17 Sep 2025 | TBD | | 5 | Java 8 and up | Supported | 23 Oct 2025 | 2027 or v6 is released | | 4 | Java 8 and up | EOL | 17 Jan 2023 | 23 Oct 2025 | | 3 | Java 8 and up | EOL | 17 Jan 2022 | 17 Jan 2023 | | 2 | | EOL | 07 Jan 2016 | 17 Jan 2022 | | 1 | | EOL | 15 Apr 2015 | 07 Jan 2016 | # Contributing See [CONTRIBUTING.md](https://ja.developer.box.com/7cfc96c5a7593975f5559b7eadf8aeec/CONTRIBUTING.md). # 3rd Party Libraries & Licenses The Java SDK uses third-party libraries that are required for usage. Their licenses are listed below: [jackson-annotations v2.17.2](https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations/2.17.2) Maven: `com.fasterxml.jackson.core:jackson-annotations:2.17.2` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [jackson-core v2.17.2](https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core/2.17.2) Maven: `com.fasterxml.jackson.core:jackson-core:2.17.2` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [jackson-databind v2.17.2](https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.17.2) Maven: `com.fasterxml.jackson.core:jackson-databind:2.17.2` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [okhttp v4.12.0](https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp/4.12.0) Maven: `com.squareup.okhttp3:okhttp:4.12.0` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [okio v3.5.0](https://mvnrepository.com/artifact/com.squareup.okio/okio/3.5.0) Maven: `com.squareup.okio:okio:3.5.0` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [jose4j v0.9.6](https://mvnrepository.com/artifact/org.bitbucket.b_c/jose4j/0.9.6) Maven: `org.bitbucket.b_c:jose4j:0.9.6` Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) [bcprov-jdk18on v1.82](https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on/1.82) Maven: `org.bouncycastle:bcprov-jdk18on:1.82` Licence: [MIT](https://opensource.org/licenses/MIT) [bcpkix-jdk18on v1.82](https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on/1.82) Maven: `org.bouncycastle:bcpkix-jdk18on:1.82` Licence: [MIT](https://opensource.org/licenses/MIT) The following libraries are required for running tests: [junit-jupiter-api v5.10.0](https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api/5.10.0) Maven: `org.junit.jupiter:junit-jupiter-api:5.10.0` Licence: [EPL 2.0](https://www.eclipse.org/legal/epl-2.0/) [junit-jupiter-engine v5.10.0](https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine/5.10.0) Maven: `org.junit.jupiter:junit-jupiter-engine:5.10.0` Licence: [EPL 2.0](https://www.eclipse.org/legal/epl-2.0/) # FIPS 140-2 Compliance To generate a Json Web Signature used for retrieving tokens in the JWT authentication method, the Box Java SDK decrypts an encrypted private key. For this purpose, Box Java SDK uses libraries (`org.bouncycastle:bcpkix-jdk18on:1.82` and `org.bouncycastle:bcprov-jdk18on:1.82`) that are NOT compatible with FIPS 140-2 validated cryptographic library (`org.bouncycastle:bc-fips`). There are two ways of ensuring that decryption operation is FIPS-compiant. You can provide a custom implementation of the `IPrivateKeyDecryptor` interface, which performs the decryption operation using FIPS-certified library of your choice. The interface requires the implementation of just one method: ``` PrivateKey decryptPrivateKey(String encryptedPrivateKey, String passphrase); ``` After implementing the custom decryptor, you need to set your custom decryptor class: ``` JWTConfig newConfig = JWTConfig.fromConfigFile(JWT_CONFIG_PATH, customDecryptor); BoxJWTAuth auth = new BoxJWTAuth(jwtConfig); BoxClient client = new BoxClient(auth); ``` Alternative method is to override the Bouncy Castle libraries to the v.1.57 version, which are compatible with the FIPS 140-2 validated cryptographic library (`org.bouncycastle:bc-fips`). NOTE: This solution is not recommended as Bouncy Castle v.1.57 has some moderate vulnerabilities reported against those versions, including: - [CVE-2020-26939](https://github.com/advisories/GHSA-72m5-fvvv-55m6) - Observable Differences in Behavior to Error Inputs in Bouncy Castle - [CVE-2020-15522](https://github.com/advisories/GHSA-6xx3-rg99-gc3p) - Timing based private key exposure in Bouncy Castle Furthermore,using Bouncy Castle v.1.57 may lead to [Bouncycastle BadPaddingException for JWT auth](#bouncycastle-badPaddingException-for-jWT-auth). Gradle example ``` implementation('com.box:box-java-sdk:x.y.z') { exclude group: 'org.bouncycastle', module: 'bcprov-jdk18on' exclude group: 'org.bouncycastle', module: 'bcpkix-jdk18on' } runtimeOnly('org.bouncycastle:bcprov-jdk15on:1.57') runtimeOnly('org.bouncycastle:bcpkix-jdk15on:1.57') ``` Maven example: ``` <dependencies> <dependency> <groupId>com.box</groupId> <artifactId>box-java-sdk</artifactId> <version>x.y.z</version> <scope>compile</scope> <exclusions> <exclusion> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk18on</artifactId> </exclusion> <exclusion> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk18on</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>1.57</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcpkix-jdk15on</artifactId> <version>1.57</version> <scope>runtime</scope> </dependency> </dependencies> ``` # Questions, Bugs, and Feature Requests? Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-java-sdk/issues)! Or, if that doesn't work, [file a new one](https://github.com/box/box-java-sdk/issues/new), and we will get back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5). # Copyright and License Copyright 2025 Box, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --- ### Box Node SDK v10 **Type:** page | **Section:** Additional Resources Box Node SDK v10 Project Status build npm version image Platform Coverage Introduction Supported versions Version v4 Version v10 Which… # Box Node SDK v10 [](http://opensource.box.com/badges) [](https://badge.fury.io/js/box-node-sdk) [](https://badge.fury.io/js/box-node-sdk) [](https://coveralls.io/github/box/box-node-sdk?branch=main) - [Introduction](#introduction) [Supported versions](#supported-versions) - [Version v4](#version-v4) - [Version v10](#version-v10) - [Which Version Should I Use?](#which-version-should-i-use) [Installing](#installing) [Getting Started](#getting-started) [Authentication](#authentication) [Documentation](#documentation) [Migration guides](#migration-guides) [Browser Support](#browser-support) [Versioning](#versioning) - [Version schedule](#version-schedule) [Contributing](#contributing) [FIPS 140-2 Compliance](#fips-140-2-compliance) [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests) [Copyright and License](#copyright-and-license) # Introduction We are excited to introduce the v10 major release of the Box Node SDK, designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With this SDK version, you’ll have access to: 1. Full API Support: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. 2. Rapid API Updates: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. 3. Embedded Documentation: We understand that easy access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. 4. Enhanced Convenience Methods: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as chunk uploads, classification, and much more. 5. Seamless Start: The new SDKs integrate essential functionalities like authentication, automatic retries with exponential backoff, exception handling, request cancellation, and type checking, enabling you to focus solely on your application's business logic. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. # Supported versions To enhance developer experience, we have introduced the new generated codebase through the `sdk-gen` module. The `sdk-gen` module is available in two major supported versions: v4 and v10. ## Version v4 In v4 of the Box Node SDK, we are introducing a version that consolidates both the manually written package (legacy SDK) and the generated SDK (currently in v10, formerly known as [box-typescript-sdk-gen](https://github.com/box/box-typescript-sdk-gen)) into a single SDK package for improved usability and maintenance. This allows developers to use both modules within a single project. The codebase for v4 of the Box Node SDK is currently available in the [combined-sdk](https://github.com/box/box-node-sdk/tree/combined-sdk) branch. Migration guide for migrating from manually written SDK to generated SDK can be found [here](https://ja.developer.box.com/a284af6dd1fcb8b0c216433a3188a35c/from-box-node-sdk-to-sdk-gen.md). Version v4 is intended for: - Existing developers of the Box Node SDK v3 who want to access new API features while keeping their current codebase largely unchanged. - Existing developers who are in the process of migrating to `sdk-gen` module, but do not want to move all their code to the new module immediately. ## Version v10 Starting from v10, the SDK is built entirely on the generated `sdk-gen` module, which fully and exclusively replaces the old `boxsdk` module. The codebase for v10 of the Box Node SDK is currently available in the [main](https://github.com/box/box-node-sdk/tree/main) branch. Version v10 is intended for: - New users of the Box Node SDK. - Developers already working with the generated Box TypeScript SDK previously available under the [Box TypeScript SDK Gen repository](https://github.com/box/box-typescript-sdk-gen). ## Which Version Should I Use? | Scenario | Recommended Version | Example Dependency | | --- | --- | --- | | Creating a new application | Use v10 | npm install box-node-sdk@10 | | Existing app using box-typescript-sdk-gen artifact | Migrate to v10 | npm install box-node-sdk@10 | | Existing app using both box-typescript-sdk-gen and box-node-sdk | Upgrade to v4 | npm install box-node-sdk@^4 | | Existing app using v3 of box-node-sdk artifact | Upgrade to v4 | npm install box-node-sdk@^4 | For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/). # Installing If you are using npm: ``` npm install box-node-sdk@<version> ``` If you use yarn, please do this instead: ``` yarn add box-node-sdk@<version> ``` Where `VERSION` is the version of the SDK you want to use. The next generation of the SDK starts with version `10.0.0`. # Getting Started To get started with the SDK, get a Developer Token from the Configuration page of your app in the Box Developer Console. You can use this token to make test calls for your own Box account. The SDK provides an `DeveloperTokenAuth` class, which allows you to authenticate using your Developer Token. Use instance of `DeveloperTokenAuth` to initialize `Client` object. Using `Client` object you can access managers, which allow you to perform some operations on your Box account. The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ``` const { BoxClient, BoxDeveloperTokenAuth } = require('box-node-sdk'); async function main(token) { let auth = new BoxDeveloperTokenAuth({ token }); let client = new BoxClient({ auth }); let entries = (await client.folders.getFolderItems('0')).entries; entries.forEach((entry) => console.log(entry)); } main('INSERT YOUR DEVELOPER TOKEN HERE'); ``` In order to use in browser make sure you include the `lib/bundle.js` file and then you can access the classes like so: ``` const { BoxClient, BoxDeveloperTokenAuth } = window['box-node-sdk']; ``` See example.html for an example website using this SDK. To run the example locally: 1. Start the local server by running `npx serve -p 3000` in the project directory. 2. Make sure `http://localhost:3000` is allowlisted in CORS Domains of your application. 3. Head over to `http://localhost:3000/example.html`. 4. Provide a fresh Developer Token to the dialog window that shows up upon running the example. 5. Make sure that you get an alert message that includes your user name. # Authentication Box Node SDK v10 supports multiple authentication methods including Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT). You can find detailed instructions and example code for each authentication method in [Authentication](https://ja.developer.box.com/2902664aef8c462357c5c428fdab6be1/authentication.md) document. # Documentation Browse the [docs](https://ja.developer.box.com/fa9c9be67800900c2e6448680fc001bf/README.md) or see [API Reference](https://developer.box.com/reference/) for more information. # Migration guides Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides). # Browser Support This SDK works in modern browsers that support ES6+ features. It seamlessly integrates with frontend frameworks like ReactJS, Angular, and NextJS. Check out our example below: - [React Sample App](https://github.com/box-community/box-ts-sdk-react) # Versioning We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](https://ja.developer.box.com/8249b54722608e671700c4582b0da591/VERSIONS.md) for details which is effective from 30 July 2022. Currently, we support versions v10 and v4 of the SDK. New features and functionality are added to v10, while the manually written portion of v4 receives bug fixes and security updates only. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. ## Version schedule | Version | Supported Environments | State | First Release | EOL/Terminated | | --- | --- | --- | --- | --- | | 10 | Node.js >= 18 | Supported | 17 Sep 2025 | TBD | | 4 | Node.js >= 18 | Supported | 23 Oct 2025 | 2027 or v5 is released | | 3 | Node.js >= 14 and <= 20 | EOL | 23 May 2023 | 23 Oct 2025 | | 2 | Node.js >= 8 and <= 14 | EOL | 29 Sep 2021 | 23 Jul 2023 | | 1 | | EOL | 28 Mar 2019 | 29 Sep 2021 | # Contributing For information on how to contribute to this project, please see [the Contribution guidelines](https://ja.developer.box.com/7cfc96c5a7593975f5559b7eadf8aeec/CONTRIBUTING.md). # FIPS 140-2 Compliance The Box Node SDK allows the use of FIPS 140-2 validated SSL libraries, such as OpenSSL 3.0. However, some actions are required to enable this functionality. By default, the version of OpenSSL Node.js includes is not FIPS enabled. Therefore, if you want to use OpenSSL 3.0 with FIPS, you need to [build OpenSSL 3.0 with FIPS enabled](https://github.com/openssl/openssl/blob/master/README-FIPS.md) and then build Node.js use the shared OpenSSL 3.0 library. According to [Node.js OpenSSL Strategy](https://github.com/nodejs/TSC/blob/main/OpenSSL-Strategy.md) document, you can use the OpenSSL 3.0 from Node.js v16 or later. # Questions, Bugs, and Feature Requests? Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-node-sdk/issues)! Or, if that doesn't work, [file a new one](https://github.com/box/box-node-sdk/issues/new) and we will get back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5). # Copyright and License Copyright 2025 Box, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --- ### Box Node SDK v10 **Type:** page | **Section:** Additional Resources Box Node SDK v10 Project Status build npm version image Platform Coverage Introduction Supported versions Version v4 Version v10 Which… # Box Node SDK v10 [](http://opensource.box.com/badges) [](https://badge.fury.io/js/box-node-sdk) [](https://badge.fury.io/js/box-node-sdk) [](https://coveralls.io/github/box/box-node-sdk?branch=main) - [Introduction](#introduction) [Supported versions](#supported-versions) - [Version v4](#version-v4) - [Version v10](#version-v10) - [Which Version Should I Use?](#which-version-should-i-use) [Installing](#installing) [Getting Started](#getting-started) [Authentication](#authentication) [Documentation](#documentation) [Migration guides](#migration-guides) [Browser Support](#browser-support) [Versioning](#versioning) - [Version schedule](#version-schedule) [Contributing](#contributing) [FIPS 140-2 Compliance](#fips-140-2-compliance) [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests) [Copyright and License](#copyright-and-license) # Introduction We are excited to introduce the v10 major release of the Box Node SDK, designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With this SDK version, you’ll have access to: 1. Full API Support: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. 2. Rapid API Updates: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. 3. Embedded Documentation: We understand that easy access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. 4. Enhanced Convenience Methods: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as chunk uploads, classification, and much more. 5. Seamless Start: The new SDKs integrate essential functionalities like authentication, automatic retries with exponential backoff, exception handling, request cancellation, and type checking, enabling you to focus solely on your application's business logic. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. # Supported versions To enhance developer experience, we have introduced the new generated codebase through the `sdk-gen` module. The `sdk-gen` module is available in two major supported versions: v4 and v10. ## Version v4 In v4 of the Box Node SDK, we are introducing a version that consolidates both the manually written package (legacy SDK) and the generated SDK (currently in v10, formerly known as [box-typescript-sdk-gen](https://github.com/box/box-typescript-sdk-gen)) into a single SDK package for improved usability and maintenance. This allows developers to use both modules within a single project. The codebase for v4 of the Box Node SDK is currently available in the [combined-sdk](https://github.com/box/box-node-sdk/tree/combined-sdk) branch. Migration guide for migrating from manually written SDK to generated SDK can be found [here](https://ja.developer.box.com/a284af6dd1fcb8b0c216433a3188a35c/from-box-node-sdk-to-sdk-gen.md). Version v4 is intended for: - Existing developers of the Box Node SDK v3 who want to access new API features while keeping their current codebase largely unchanged. - Existing developers who are in the process of migrating to `sdk-gen` module, but do not want to move all their code to the new module immediately. ## Version v10 Starting from v10, the SDK is built entirely on the generated `sdk-gen` module, which fully and exclusively replaces the old `boxsdk` module. The codebase for v10 of the Box Node SDK is currently available in the [main](https://github.com/box/box-node-sdk/tree/main) branch. Version v10 is intended for: - New users of the Box Node SDK. - Developers already working with the generated Box TypeScript SDK previously available under the [Box TypeScript SDK Gen repository](https://github.com/box/box-typescript-sdk-gen). ## Which Version Should I Use? | Scenario | Recommended Version | Example Dependency | | --- | --- | --- | | Creating a new application | Use v10 | npm install box-node-sdk@10 | | Existing app using box-typescript-sdk-gen artifact | Migrate to v10 | npm install box-node-sdk@10 | | Existing app using both box-typescript-sdk-gen and box-node-sdk | Upgrade to v4 | npm install box-node-sdk@^4 | | Existing app using v3 of box-node-sdk artifact | Upgrade to v4 | npm install box-node-sdk@^4 | For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/). # Installing If you are using npm: ``` npm install box-node-sdk@<version> ``` If you use yarn, please do this instead: ``` yarn add box-node-sdk@<version> ``` Where `VERSION` is the version of the SDK you want to use. The next generation of the SDK starts with version `10.0.0`. # Getting Started To get started with the SDK, get a Developer Token from the Configuration page of your app in the Box Developer Console. You can use this token to make test calls for your own Box account. The SDK provides an `DeveloperTokenAuth` class, which allows you to authenticate using your Developer Token. Use instance of `DeveloperTokenAuth` to initialize `Client` object. Using `Client` object you can access managers, which allow you to perform some operations on your Box account. The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ``` const { BoxClient, BoxDeveloperTokenAuth } = require('box-node-sdk'); async function main(token) { let auth = new BoxDeveloperTokenAuth({ token }); let client = new BoxClient({ auth }); let entries = (await client.folders.getFolderItems('0')).entries; entries.forEach((entry) => console.log(entry)); } main('INSERT YOUR DEVELOPER TOKEN HERE'); ``` In order to use in browser make sure you include the `lib/bundle.js` file and then you can access the classes like so: ``` const { BoxClient, BoxDeveloperTokenAuth } = window['box-node-sdk']; ``` See example.html for an example website using this SDK. To run the example locally: 1. Start the local server by running `npx serve -p 3000` in the project directory. 2. Make sure `http://localhost:3000` is allowlisted in CORS Domains of your application. 3. Head over to `http://localhost:3000/example.html`. 4. Provide a fresh Developer Token to the dialog window that shows up upon running the example. 5. Make sure that you get an alert message that includes your user name. # Authentication Box Node SDK v10 supports multiple authentication methods including Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT). You can find detailed instructions and example code for each authentication method in [Authentication](https://ja.developer.box.com/2902664aef8c462357c5c428fdab6be1/authentication.md) document. # Documentation Browse the [docs](https://ja.developer.box.com/5a67cd92ec534e0b255d96e82447cbab/README.md) or see [API Reference](https://developer.box.com/reference/) for more information. # Migration guides Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides). # Browser Support This SDK works in modern browsers that support ES6+ features. It seamlessly integrates with frontend frameworks like ReactJS, Angular, and NextJS. Check out our example below: - [React Sample App](https://github.com/box-community/box-ts-sdk-react) # Versioning We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](https://ja.developer.box.com/8249b54722608e671700c4582b0da591/VERSIONS.md) for details which is effective from 30 July 2022. Currently, we support versions v10 and v4 of the SDK. New features and functionality are added to v10, while the manually written portion of v4 receives bug fixes and security updates only. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. ## Version schedule | Version | Supported Environments | State | First Release | EOL/Terminated | | --- | --- | --- | --- | --- | | 10 | Node.js >= 18 | Supported | 17 Sep 2025 | TBD | | 4 | Node.js >= 18 | Supported | 23 Oct 2025 | 2027 or v5 is released | | 3 | Node.js >= 14 and <= 20 | EOL | 23 May 2023 | 23 Oct 2025 | | 2 | Node.js >= 8 and <= 14 | EOL | 29 Sep 2021 | 23 Jul 2023 | | 1 | | EOL | 28 Mar 2019 | 29 Sep 2021 | # Contributing For information on how to contribute to this project, please see [the Contribution guidelines](https://ja.developer.box.com/7cfc96c5a7593975f5559b7eadf8aeec/CONTRIBUTING.md). # FIPS 140-2 Compliance The Box Node SDK allows the use of FIPS 140-2 validated SSL libraries, such as OpenSSL 3.0. However, some actions are required to enable this functionality. By default, the version of OpenSSL Node.js includes is not FIPS enabled. Therefore, if you want to use OpenSSL 3.0 with FIPS, you need to [build OpenSSL 3.0 with FIPS enabled](https://github.com/openssl/openssl/blob/master/README-FIPS.md) and then build Node.js use the shared OpenSSL 3.0 library. According to [Node.js OpenSSL Strategy](https://github.com/nodejs/TSC/blob/main/OpenSSL-Strategy.md) document, you can use the OpenSSL 3.0 from Node.js v16 or later. # Questions, Bugs, and Feature Requests? Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-node-sdk/issues)! Or, if that doesn't work, [file a new one](https://github.com/box/box-node-sdk/issues/new) and we will get back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5). # Copyright and License Copyright 2025 Box, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --- ### Box Platform **Type:** page | **Category:** Box Platform | **Section:** Additional Resources Box Platform 構築を開始Box Platform ユーザーを管理Box Platform エクスペリエンスを構築Box Platform アプリを統合Box Platform Box製品を最大限利用するために役立つすべての開発者向けリソース Box Platform… # Box Platform 構築を開始**Box Platform** ユーザーを管理**Box Platform** エクスペリエンスを構築**Box Platform** アプリを統合**Box Platform** Box製品を最大限利用するために役立つすべての開発者向けリソース Box Platformを初めて使用する場合は、どのように始めればよいですか? こちらにまとめました。以下の手順に従って、新しいアプリケーションを作成したり、Box Platformの機能を確認したりしましょう。 Box Platformは、さまざまなユーザータイプを必要とする可能性がある多くのユースケースに対応します。ユーザータイプの違いについては詳細を確認してください。 アプリケーションを作成する際に、いくつかの種類から選択できます。こちらのガイドを読んで、ニーズに最適なものを確認してください。 Box Platformでは、OAuth 2.0、JSONウェブトークン (JWT)、クライアント資格情報、およびアプリトークン認証がサポートされています。詳細を確認し、アプリに適用する方法を選択してください。 これで、アプリケーションの作成を開始できるようになりました。開発者コンソールを起動して、お好みのアプリケーションを作成してください。 アプリの使用を開始するために満たすべき承認の要件を確認してください。 最後に、APIリファレンス、SDK、Box CLI、Postmanコレクション、Box UI Elementsなど、Boxの開発者向けツールキットを確認します。 SDKや開発者ツール別に見る Box Platformを使用した開発は、SDK、Box CLI、Postmanコレクション、フロントエンドUI Elementなどを使用すると簡単です。 *Box APIリファレンス* *box-python-sdk* *box-java-sdk* *box-node-sdk* *box-windows-sdk-v2* *box-ios-sdk* *Box Postmanコレクション* *box-cli* *box-ui-elements* *Box Embed* 詳細を表示 Box Platformのその他のコンセプト さらに詳しく知りたい場合は、以下のガイドを使用すると、Box Platformの仕組みに関する補足情報を確認して、理解を広げ、Platformアプリケーションを改善できます。 Box APIを使用すると、ファイルをアプリケーションのサーバーにダウンロードすることも、エンドユーザーがブラウザで直接ダウンロードすることもできます。 ファイルアップロードAPIを使用して直接ファイルをアップロードすることも、大きなファイルには分割アップロードAPIを使用することもできます。 一般的なエラーのリファレンスを参照して、リクエスト処理の問題を伝えるために使用されるHTTPステータスコードの詳細を確認できます。 メタデータによって、ユーザーやアプリケーションがどのようにファイルやフォルダに関連付けられたカスタムデータを定義、格納できるかを確認します。 Webhookを使用すると、Boxコンテンツのイベントを監視し、イベントの発生時に任意のURLへの通知を受け取ることができます。 ファイルコンテンツ検索クエリを使用して、Box内の関連コンテンツを探すことができます。Box検索APIは、すべてのBox SDKとCLIでサポートされています。 BoxとSalesforceを統合しましょう。最近、Boxでは、ローコード/ノーコードのソリューションであるSalesforceフローのサポートを開始しました。 すべてのガイドを参照 その他のリソース **Source:** [https://ja.developer.box.com/](https://ja.developer.box.com/) --- ### Box Python SDK v10 **Type:** page | **Section:** Additional Resources Box Python SDK v10 Project Status build PyPI version image Platform Coverage Introduction Supported versions Version v4 Version v10 Which… # Box Python SDK v10 [](http://opensource.box.com/badges) [](https://badge.fury.io/py/boxsdk) [](https://pypi.python.org/pypi/boxsdk) [](https://coveralls.io/github/box/box-python-sdk?branch=main) - [Introduction](#introduction) [Supported versions](#supported-versions) - [Version v4](#version-v4) - [Version v10](#version-v10) - [Which Version Should I Use?](#which-version-should-i-use) [Installing](#installing) [Getting Started](#getting-started) [Authentication](#authentication) [Documentation](#documentation) [Migration guides](#migration-guides) [Versioning](#versioning) - [Version schedule](#version-schedule) [Contributing](#contributing) [FIPS 140-2 Compliance](#fips-140-2-compliance) [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests) [Copyright and License](#copyright-and-license) # Introduction We are excited to introduce the v10 major release of the Box Python SDK, designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With this SDK version, we provide the `box_sdk_gen` package, which gives you access to: 1. Full API Support: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. 2. Rapid API Updates: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. 3. Embedded Documentation: We understand that easy access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. 4. Enhanced Convenience Methods: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as chunk uploads, classification, and much more. 5. Seamless Start: The new SDKs integrate essential functionalities like authentication, automatic retries with exponential backoff, exception handling, request cancellation, and type checking, enabling you to focus solely on your application's business logic. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. # Supported versions To enhance developer experience, we have introduced the new generated codebase through the `box_sdk_gen` package. The `box_sdk_gen` package is available in two major supported versions: v4 and v10. ## Version v4 In v4 of the Box Python SDK, we are introducing a version that consolidates both the manually written package (`boxsdk`) and the new generated package (`box_sdk_gen`). This allows developers to use both packages simultaneously within a single project. The codebase for v4 of the Box Python SDK is currently available on the [combined-sdk](https://github.com/box/box-python-sdk/tree/combined-sdk) branch. Migration guide which would help with migration from `boxsdk` to `box_sdk_gen` can be found [here](https://ja.developer.box.com/a5e4923b4d3ba0a7f7f33b3a1f6f61fe/from-boxsdk-to-box_sdk_gen.md). Version v4 is intended for: - Existing developers of the Box Python SDK v3 who want to access new API features while keeping their current codebase largely unchanged. - Existing developers who are in the process of migrating to `box_sdk_gen`, but do not want to move all their code to the new package immediately. ## Version v10 Starting with v10, the SDK is built entirely on the generated `box_sdk_gen` package, which fully and exclusively replaces the old `boxsdk` package. The codebase for v10 of the Box Python SDK is currently available on the [main](https://github.com/box/box-python-sdk/tree/main) branch. Version v10 is intended for: - New users of the Box Python SDK. - Developers already working with the generated Box Python SDK previously available under the [Box Python SDK Gen repository](https://github.com/box/box-python-sdk-gen). ## Which Version Should I Use? | Scenario | Recommended Version | Example pip install | | --- | --- | --- | | Creating a new application | Use v10 | pip install "boxsdk>=10" | | App using box-sdk-gen artifact | Migrate to v10 | pip install "boxsdk>=10" | | App using both box-sdk-gen and boxsdk artifacts | Upgrade to v4 | pip install "boxsdk~=4.0" | | App using v3 of boxsdk artifact | Upgrade to v4 | pip install "boxsdk~=4.0" | For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/). # Installing The next generation of the SDK starts with version `10.0.0`. ``` pip install boxsdk>=10 ``` This is autogenerated Box SDK version. Supported Python versions are Python 3.8 and above. To install also extra dependencies required for JWT authentication, use command: ``` pip install "boxsdk[jwt]>=10" ``` # Getting Started To get started with the SDK, get a Developer Token from the Configuration page of your app in the Box Developer Console. You can use this token to make test calls for your own Box account. The SDK provides an `BoxDeveloperTokenAuth` class, which allows you to authenticate using your Developer Token. Use instance of `BoxDeveloperTokenAuth` to initialize `BoxClient` object. Using `BoxClient` object you can access managers, which allow you to perform some operations on your Box account. The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ``` from box_sdk_gen import BoxClient, BoxDeveloperTokenAuth def main(token: str): auth: BoxDeveloperTokenAuth = BoxDeveloperTokenAuth(token=token) client: BoxClient = BoxClient(auth=auth) for item in client.folders.get_folder_items('0').entries: print(item.name) if __name__ == '__main__': main('INSERT YOUR DEVELOPER TOKEN HERE') ``` # Authentication Box Python SDK v10 supports multiple authentication methods including Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT). You can find detailed instructions and example code for each authentication method in [Authentication](https://ja.developer.box.com/551b36a75bb37d39cc776e648ee98650/authentication.md) document. # Documentation Browse the [docs](https://ja.developer.box.com/8f4d4b95f208fc15543bf46193c1c08e/README.md) or see [API Reference](https://developer.box.com/reference/) for more information. # Migration guides Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides). # Versioning We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](https://ja.developer.box.com/8249b54722608e671700c4582b0da591/VERSIONS.md) for details which is effective from 30 July 2022. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. ## Version schedule | Version | Supported Environments | State | First Release | EOL/Terminated | | --- | --- | --- | --- | --- | | 10 | Python 3.8+ | Supported | 17 Sep 2025 | TBD | | 4 | Python 3.8+ | Supported | 23 Oct 2025 | 2027 or v5 is released | | 3 | Python 3.6+ | EOL | 17 Jan 2022 | 23 Oct 2025 | | 2 | | EOL | 01 Nov 2018 | 17 Jan 2022 | | 1 | | EOL | 10 Feb 2015 | 01 Nov 2018 | # Contributing See [CONTRIBUTING.md](https://ja.developer.box.com/7cfc96c5a7593975f5559b7eadf8aeec/CONTRIBUTING.md). # FIPS 140-2 Compliance The Python SDK allows the use of FIPS 140-2 validated SSL libraries, such as OpenSSL 3.0. However, some actions are required to enable this functionality. Currently, the latest distributions of Python default to OpenSSL v1.1.1, which is not FIPS compliant. Therefore, if you want to use OpenSSL 3.0 in your network communication, you need to ensure that Python uses a custom SSL library. One way to achieve this is by creating a custom Python distribution with the ssl module replaced. If you are using JWT for authentication, it is also necessary to ensure that the cryptography library, which is one of the extra dependencies for JWT, uses OpenSSL 3.0. To enable FIPS mode for the `cryptography` library, you need to install a FIPS-compliant version of OpenSSL during the installation process of cryptography using the `pip` command. # Questions, Bugs, and Feature Requests? Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-python-sdk/issues)! Or, if that doesn't work, [file a new one](https://github.com/box/box-python-sdk/issues/new) and we will get back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5). # Copyright and License Copyright 2025 Box, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --- ### Box Python SDK v10 **Type:** page | **Section:** Additional Resources Box Python SDK v10 Project Status build PyPI version image Platform Coverage Introduction Supported versions Version v4 Version v10 Which… # Box Python SDK v10 [](http://opensource.box.com/badges) [](https://badge.fury.io/py/boxsdk) [](https://pypi.python.org/pypi/boxsdk) [](https://coveralls.io/github/box/box-python-sdk?branch=main) - [Introduction](#introduction) [Supported versions](#supported-versions) - [Version v4](#version-v4) - [Version v10](#version-v10) - [Which Version Should I Use?](#which-version-should-i-use) [Installing](#installing) [Getting Started](#getting-started) [Authentication](#authentication) [Documentation](#documentation) [Migration guides](#migration-guides) [Versioning](#versioning) - [Version schedule](#version-schedule) [Contributing](#contributing) [FIPS 140-2 Compliance](#fips-140-2-compliance) [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests) [Copyright and License](#copyright-and-license) # Introduction We are excited to introduce the v10 major release of the Box Python SDK, designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With this SDK version, we provide the `box_sdk_gen` package, which gives you access to: 1. Full API Support: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. 2. Rapid API Updates: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. 3. Embedded Documentation: We understand that easy access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. 4. Enhanced Convenience Methods: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as chunk uploads, classification, and much more. 5. Seamless Start: The new SDKs integrate essential functionalities like authentication, automatic retries with exponential backoff, exception handling, request cancellation, and type checking, enabling you to focus solely on your application's business logic. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. # Supported versions To enhance developer experience, we have introduced the new generated codebase through the `box_sdk_gen` package. The `box_sdk_gen` package is available in two major supported versions: v4 and v10. ## Version v4 In v4 of the Box Python SDK, we are introducing a version that consolidates both the manually written package (`boxsdk`) and the new generated package (`box_sdk_gen`). This allows developers to use both packages simultaneously within a single project. The codebase for v4 of the Box Python SDK is currently available on the [combined-sdk](https://github.com/box/box-python-sdk/tree/combined-sdk) branch. Migration guide which would help with migration from `boxsdk` to `box_sdk_gen` can be found [here](https://ja.developer.box.com/a5e4923b4d3ba0a7f7f33b3a1f6f61fe/from-boxsdk-to-box_sdk_gen.md). Version v4 is intended for: - Existing developers of the Box Python SDK v3 who want to access new API features while keeping their current codebase largely unchanged. - Existing developers who are in the process of migrating to `box_sdk_gen`, but do not want to move all their code to the new package immediately. ## Version v10 Starting with v10, the SDK is built entirely on the generated `box_sdk_gen` package, which fully and exclusively replaces the old `boxsdk` package. The codebase for v10 of the Box Python SDK is currently available on the [main](https://github.com/box/box-python-sdk/tree/main) branch. Version v10 is intended for: - New users of the Box Python SDK. - Developers already working with the generated Box Python SDK previously available under the [Box Python SDK Gen repository](https://github.com/box/box-python-sdk-gen). ## Which Version Should I Use? | Scenario | Recommended Version | Example pip install | | --- | --- | --- | | Creating a new application | Use v10 | pip install "boxsdk>=10" | | App using box-sdk-gen artifact | Migrate to v10 | pip install "boxsdk>=10" | | App using both box-sdk-gen and boxsdk artifacts | Upgrade to v4 | pip install "boxsdk~=4.0" | | App using v3 of boxsdk artifact | Upgrade to v4 | pip install "boxsdk~=4.0" | For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/). # Installing The next generation of the SDK starts with version `10.0.0`. ``` pip install boxsdk>=10 ``` This is autogenerated Box SDK version. Supported Python versions are Python 3.8 and above. To install also extra dependencies required for JWT authentication, use command: ``` pip install "boxsdk[jwt]>=10" ``` # Getting Started To get started with the SDK, get a Developer Token from the Configuration page of your app in the Box Developer Console. You can use this token to make test calls for your own Box account. The SDK provides an `BoxDeveloperTokenAuth` class, which allows you to authenticate using your Developer Token. Use instance of `BoxDeveloperTokenAuth` to initialize `BoxClient` object. Using `BoxClient` object you can access managers, which allow you to perform some operations on your Box account. The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ``` from box_sdk_gen import BoxClient, BoxDeveloperTokenAuth def main(token: str): auth: BoxDeveloperTokenAuth = BoxDeveloperTokenAuth(token=token) client: BoxClient = BoxClient(auth=auth) for item in client.folders.get_folder_items('0').entries: print(item.name) if __name__ == '__main__': main('INSERT YOUR DEVELOPER TOKEN HERE') ``` # Authentication Box Python SDK v10 supports multiple authentication methods including Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT). You can find detailed instructions and example code for each authentication method in [Authentication](https://ja.developer.box.com/4f76f51ded3131c96c11fc0e2994352d/authentication.md) document. # Documentation Browse the [docs](https://ja.developer.box.com/9ccea992f59e4b64799c2f40b4b51e4d/README.md) or see [API Reference](https://developer.box.com/reference/) for more information. # Migration guides Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides). # Versioning We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](https://ja.developer.box.com/8249b54722608e671700c4582b0da591/VERSIONS.md) for details which is effective from 30 July 2022. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. ## Version schedule | Version | Supported Environments | State | First Release | EOL/Terminated | | --- | --- | --- | --- | --- | | 10 | Python 3.8+ | Supported | 17 Sep 2025 | TBD | | 4 | Python 3.8+ | Supported | 23 Oct 2025 | 2027 or v5 is released | | 3 | Python 3.6+ | EOL | 17 Jan 2022 | 23 Oct 2025 | | 2 | | EOL | 01 Nov 2018 | 17 Jan 2022 | | 1 | | EOL | 10 Feb 2015 | 01 Nov 2018 | # Contributing See [CONTRIBUTING.md](https://ja.developer.box.com/7cfc96c5a7593975f5559b7eadf8aeec/CONTRIBUTING.md). # FIPS 140-2 Compliance The Python SDK allows the use of FIPS 140-2 validated SSL libraries, such as OpenSSL 3.0. However, some actions are required to enable this functionality. Currently, the latest distributions of Python default to OpenSSL v1.1.1, which is not FIPS compliant. Therefore, if you want to use OpenSSL 3.0 in your network communication, you need to ensure that Python uses a custom SSL library. One way to achieve this is by creating a custom Python distribution with the ssl module replaced. If you are using JWT for authentication, it is also necessary to ensure that the cryptography library, which is one of the extra dependencies for JWT, uses OpenSSL 3.0. To enable FIPS mode for the `cryptography` library, you need to install a FIPS-compliant version of OpenSSL during the installation process of cryptography using the `pip` command. # Questions, Bugs, and Feature Requests? Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-python-sdk/issues)! Or, if that doesn't work, [file a new one](https://github.com/box/box-python-sdk/issues/new) and we will get back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5). # Copyright and License Copyright 2025 Box, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --- ### Box TypeScript SDK Gen Browser Test Runner **Type:** page | **Section:** Additional Resources Box TypeScript SDK Gen Browser Test Runner A browser-based test runner for Box TypeScript SDK, built with Next.js and Cypress. Features Run… # Box TypeScript SDK Gen Browser Test Runner A browser-based test runner for Box TypeScript SDK, built with Next.js and Cypress. ## Features - Run Box TypeScript SDK Gen tests in the browser in headless mode. ## Prerequisites - Node.js (v18 or higher) - Chrome or Firefox browser ## Installation 1. This project comes together with the Box TypeScript SDK Gen repository. To run the test runner, you need have the Box TypeScript SDK Gen repository checked out in parent directory and build it. 2. Setup the Environment Variables align with `sdkTest.config.mjs` file. 3. Install dependencies: ``` npm install ``` 1. Run the test runner: ``` npm run cypress:run:all ``` ## Configuration Inside `sdkTest.config.mjs` file we have a list of tests that we need to skip as it's not supported in the browser. --- ### Box TypeScript SDK Gen Browser Test Runner **Type:** page | **Section:** Additional Resources Box TypeScript SDK Gen Browser Test Runner A browser-based test runner for Box TypeScript SDK, built with Next.js and Cypress. Features Run… # Box TypeScript SDK Gen Browser Test Runner A browser-based test runner for Box TypeScript SDK, built with Next.js and Cypress. ## Features - Run Box TypeScript SDK Gen tests in the browser in headless mode. ## Prerequisites - Node.js (v18 or higher) - Chrome or Firefox browser ## Installation 1. This project comes together with the Box TypeScript SDK Gen repository. To run the test runner, you need have the Box TypeScript SDK Gen repository checked out in parent directory and build it. 2. Setup the Environment Variables align with `sdkTest.config.mjs` file. 3. Install dependencies: ``` npm install ``` 1. Run the test runner: ``` npm run cypress:run:all ``` ## Configuration Inside `sdkTest.config.mjs` file we have a list of tests that we need to skip as it's not supported in the browser. --- ### Box UI Elements **Type:** page | **Category:** Box UI Elements | **Section:** Additional Resources Box UI Elements Box AI APIエージェントの構成ツール 主要プロバイダが提供する複数のAIモデルから選択しましょう。すべてのモデルには、使いやすい1つのプラットフォームからアクセス可能です。Box AI APIのパラメータをカスタマイズしたり、LLM… # Box UI Elements Box AI APIエージェントの構成ツール 主要プロバイダが提供する複数のAIモデルから選択しましょう。すべてのモデルには、使いやすい1つのプラットフォームからアクセス可能です。Box AI APIのパラメータをカスタマイズしたり、LLMのパラメータを微調整したりできます。 フォームベースの直感的なインターフェースを使用した、AIの複雑な構成が可能です。 変更に合わせて、リアルタイムでJSON構成の更新を確認できます。 構成をコピーし、プロジェクトに直接貼り付けることができます。 **Source:** [https://ja.developer.box.com/agent-configurator/](https://ja.developer.box.com/agent-configurator/) --- ### Box Windows V2 SDK v10 **Type:** page | **Section:** Additional Resources Box Windows V2 SDK v10 Project Status build nuget version image Platform Platform Coverage Introduction Supported versions Version v… # Box Windows V2 SDK v10 [](http://opensource.box.com/badges) [](https://badge.fury.io/nu/box.v2.core) [](https://badge.fury.io/nu/box.v2.core) [](https://coveralls.io/github/box/box-windows-sdk-v2?branch=main) - [Introduction](#introduction) [Supported versions](#supported-versions) - [Version v6](#version-v6) - [Version v10](#version-v10) - [Which Version Should I Use?](#which-version-should-i-use) [Installing](#installing) [Getting Started](#getting-started) [Authentication](#authentication) [Documentation](#documentation) [Migration guides](#migration-guides) [Versioning](#versioning) - [Version schedule](#version-schedule) [Contributing](#contributing) [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests) [Copyright and License](#copyright-and-license) # Introduction We are excited to introduce the v10 major release of the Box Windows V2 SDK, designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With this SDK version, we provide the `Box.Sdk.Gen` namespace, which gives you access to: 1. Full API Support: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. 2. Rapid API Updates: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. 3. Embedded Documentation: We understand that easy access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. 4. Enhanced Convenience Methods: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as chunk uploads, classification, and much more. 5. Seamless Start: The new SDKs integrate essential functionalities like authentication, automatic retries with exponential backoff, exception handling, request cancellation, and type checking, enabling you to focus solely on your application's business logic. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. # Supported versions To enhance developer experience, we have introduced the new generated codebase through the `Box.Sdk.Gen` namespace. The `Box.Sdk.Gen` namespace is available in two major supported versions: v6 and v10. ## Version v6 In v6 of the Box Windows SDK V2, we are introducing a version that consolidates both the manually written namespace (`Box.V2`) and the new generated namespace (`Box.Sdk.Gen`). This allows developers to use both namespaces simultaneously within a single project The codebase for v6 of the Box Windows SDK V2 is currently available on the [combined-sdk](https://github.com/box/box-windows-sdk-v2/tree/combined-sdk) branch. Migration guide which would help with migration from `Box.V2` to `Box.Sdk.Gen` can be found [here](https://ja.developer.box.com/4c490957d21ef982dc0eb25dca3a4474/from-dotnet-sdk-gen-v1-to-box-windows-sdk.md). Version v6 is intended for: - Existing developers of the Box Windows V2 SDK v5 who want to access new API features while keeping their current codebase largely unchanged. - Existing developers who are in the process of migrating to `Box.Sdk.Gen`, but do not want to move all their code to the new namespace immediately. ## Version v10 Starting with v10, the SDK is built entirely on the generated `Box.Sdk.Gen` namespace, which fully and exclusively replaces the old `Box.V2` namespace. The codebase for v10 of the Box Windows SDK V2 is currently available on the [main](https://github.com/box/box-windows-sdk-v2/tree/main) branch. Version v10 is intended for: - New users of the Box Windows SDK V2. - Developers already working with the generated Box Windows SDK V2 previously available under the [Box Dotnet SDK Gen repository](https://github.com/box/box-dotnet-sdk-gen). ## Which Version Should I Use? | Scenario | Recommended Version | Example dependency (.csproj / NuGet) | | --- | --- | --- | | Creating a new application | Use v10 | <PackageReference Include="Box.Sdk.Gen" Version="10.0.0" /> | | App using Box.Sdk.Gen | Migrate to v10 | <PackageReference Include="Box.Sdk.Gen" Version="10.0.0" /> | | App using both Box.Sdk.Gen and Box.V2 | Upgrade to v6 | <PackageReference Include="Box.V2.Core" Version="6.0.0" /> | | App using v5 of Box.V2 | Upgrade to v6 | <PackageReference Include="Box.V2.Core" Version="6.0.0" /> | For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/). # Installing You can find `Box.V2.Core` package, and it's latest version [on nuget](https://www.nuget.org/packages/Box.V2.Core). You can install this SDK via powershell: ``` Install-Package Box.V2.Core ``` Alternatively, you can manually add it to the `.csproj` file as a reference: ``` <ItemGroup> <PackageReference Include="Box.V2.Core" Version="10.x.x" /> </ItemGroup> ``` `Box.V2` version of the SDK can also be found [on nuget](https://www.nuget.org/packages/Box.V2). If you were using `Box.V2` previously, consider migrating to `Box.V2.Core`. If that is not possible, you can still keep using `Box.V2` by installing it with the following powershell command: ``` Install-Package Box.V2 ``` Alternatively, you can manually add it to the `.csproj` file as a reference: ``` <ItemGroup> <PackageReference Include="Box.V2" Version="10.x.x" /> </ItemGroup> ``` # Getting Started To get started with the SDK, get a Developer Token from the Configuration page of your app in the Box Developer Console. You can use this token to make test calls for your own Box account. The SDK provides a `BoxDeveloperTokenAuth` class, which allows you to authenticate using your Developer Token. Use instance of `BoxDeveloperTokenAuth` to initialize `BoxClient` object. Using `BoxClient` object you can access managers, which allow you to perform some operations on your Box account. The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ``` using Box.Sdk.Gen; var auth = new BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN_GOES_HERE"); var client = new BoxClient(auth: auth); var items = await client.Folders.GetFolderItemsAsync(folderId: "0"); if (items.Entries != null) { foreach (var item in items.Entries) { if (item.FileFull != null) { Console.WriteLine(item.FileFull.Name); } else if (item.FolderMini != null) { Console.WriteLine(item.FolderMini.Name); } else if (item.WebLink != null) { Console.WriteLine(item.WebLink.Name); } } } ``` The usage docs that show how to make calls to the Box API with the SDK can be found [here](https://github.com/box/box-windows-sdk-v2/tree/main/docs). We recommend, familiarizing yourself with the remaining [authentication methods](https://github.com/box/box-windows-sdk-v2/tree/main/docs/Authentication.md), [uploading files](https://github.com/box/box-windows-sdk-v2/tree/main/docs/Uploads.md) and [downloading files](https://github.com/box/box-windows-sdk-v2/tree/main/docs/Downloads.md). # Authentication Box Windows V2 SDK v10 supports multiple authentication methods including Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT). You can find detailed instructions and example code for each authentication method in [Authentication](https://ja.developer.box.com/810a8cebe984926bc713d06eba93c71e/Authentication.md) document. # Documentation Browse the [docs](https://ja.developer.box.com/7e99bb3cb1235f38e01d0268bdf2d71e/README.md) or see [API Reference](https://developer.box.com/reference/) for more information. # Migration guides Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides). # Versioning We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](https://ja.developer.box.com/8249b54722608e671700c4582b0da591/VERSIONS.md) for details which is effective from 30 July 2022. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. ### Version schedule | Version | Supported Environments | State | First Release | EOL/Terminated | | --- | --- | --- | --- | --- | | 10 | .NET Framework 4.6.2+ and .NET 8+ | Supported | 17 Sep 2025 | TBD | | 6 | .NET Framework 4.6.2+ and .NET 8+ | Supported | 23 Oct 2025 | 2027 or v7 is released | | 5 | .NET Framework 4.6.2+ and .NET Core 2.0+ | EOL | 12 Jan 2023 | 23 Oct 2025 | | 4 | .NET Framework 4.5+ and .NET Core 2.0+ | EOL | 02 Nov 2021 | 12 Jan 2023 | | 3 | | EOL | 28 Jul 2017 | 02 Nov 2021 | | 2 | | EOL | 05 Nov 2015 | 28 Jul 2017 | # Contributing See [CONTRIBUTING.md](https://ja.developer.box.com/7cfc96c5a7593975f5559b7eadf8aeec/CONTRIBUTING.md). # Questions, Bugs, and Feature Requests? Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-windows-sdk-v2/issues)! Or, if that doesn't work, [file a new one](https://github.com/box/box-windows-sdk-v2/issues/new) and we will get back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5). # Copyright and License Copyright 2025 Box, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. For third party notices visit [THIRD-PARTY-NOTICES](THIRD-PARTY-NOTICES.txt) --- ### Box Windows V2 SDK v10 **Type:** page | **Section:** Additional Resources Box Windows V2 SDK v10 Project Status build nuget version image Platform Platform Coverage Introduction Supported versions Version v… # Box Windows V2 SDK v10 [](http://opensource.box.com/badges) [](https://badge.fury.io/nu/box.v2.core) [](https://badge.fury.io/nu/box.v2.core) [](https://coveralls.io/github/box/box-windows-sdk-v2?branch=main) - [Introduction](#introduction) [Supported versions](#supported-versions) - [Version v6](#version-v6) - [Version v10](#version-v10) - [Which Version Should I Use?](#which-version-should-i-use) [Installing](#installing) [Getting Started](#getting-started) [Authentication](#authentication) [Documentation](#documentation) [Migration guides](#migration-guides) [Versioning](#versioning) - [Version schedule](#version-schedule) [Contributing](#contributing) [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests) [Copyright and License](#copyright-and-license) # Introduction We are excited to introduce the v10 major release of the Box Windows V2 SDK, designed to elevate the developer experience and streamline your integration with the Box Content Cloud. With this SDK version, we provide the `Box.Sdk.Gen` namespace, which gives you access to: 1. Full API Support: The new generation of Box SDKs empowers developers with complete coverage of the Box API ecosystem. You can now access all the latest features and functionalities offered by Box, allowing you to build even more sophisticated and feature-rich applications. 2. Rapid API Updates: Say goodbye to waiting for new Box APIs to be incorporated into the SDK. With our new auto-generation development approach, we can now add new Box APIs to the SDK at a much faster pace (in a matter of days). This means you can leverage the most up-to-date features in your applications without delay. 3. Embedded Documentation: We understand that easy access to information is crucial for developers. With our new approach, we have included comprehensive documentation for all objects and parameters directly in the source code of the SDK. This means you no longer need to look up this information on the developer portal, saving you time and streamlining your development process. 4. Enhanced Convenience Methods: Our commitment to enhancing your development experience continues with the introduction of convenience methods. These methods cover various aspects such as chunk uploads, classification, and much more. 5. Seamless Start: The new SDKs integrate essential functionalities like authentication, automatic retries with exponential backoff, exception handling, request cancellation, and type checking, enabling you to focus solely on your application's business logic. Embrace the new generation of Box SDKs and unlock the full potential of the Box Content Cloud. # Supported versions To enhance developer experience, we have introduced the new generated codebase through the `Box.Sdk.Gen` namespace. The `Box.Sdk.Gen` namespace is available in two major supported versions: v6 and v10. ## Version v6 In v6 of the Box Windows SDK V2, we are introducing a version that consolidates both the manually written namespace (`Box.V2`) and the new generated namespace (`Box.Sdk.Gen`). This allows developers to use both namespaces simultaneously within a single project The codebase for v6 of the Box Windows SDK V2 is currently available on the [combined-sdk](https://github.com/box/box-windows-sdk-v2/tree/combined-sdk) branch. Migration guide which would help with migration from `Box.V2` to `Box.Sdk.Gen` can be found [here](https://ja.developer.box.com/4c490957d21ef982dc0eb25dca3a4474/from-dotnet-sdk-gen-v1-to-box-windows-sdk.md). Version v6 is intended for: - Existing developers of the Box Windows V2 SDK v5 who want to access new API features while keeping their current codebase largely unchanged. - Existing developers who are in the process of migrating to `Box.Sdk.Gen`, but do not want to move all their code to the new namespace immediately. ## Version v10 Starting with v10, the SDK is built entirely on the generated `Box.Sdk.Gen` namespace, which fully and exclusively replaces the old `Box.V2` namespace. The codebase for v10 of the Box Windows SDK V2 is currently available on the [main](https://github.com/box/box-windows-sdk-v2/tree/main) branch. Version v10 is intended for: - New users of the Box Windows SDK V2. - Developers already working with the generated Box Windows SDK V2 previously available under the [Box Dotnet SDK Gen repository](https://github.com/box/box-dotnet-sdk-gen). ## Which Version Should I Use? | Scenario | Recommended Version | Example dependency (.csproj / NuGet) | | --- | --- | --- | | Creating a new application | Use v10 | <PackageReference Include="Box.Sdk.Gen" Version="10.0.0" /> | | App using Box.Sdk.Gen | Migrate to v10 | <PackageReference Include="Box.Sdk.Gen" Version="10.0.0" /> | | App using both Box.Sdk.Gen and Box.V2 | Upgrade to v6 | <PackageReference Include="Box.V2.Core" Version="6.0.0" /> | | App using v5 of Box.V2 | Upgrade to v6 | <PackageReference Include="Box.V2.Core" Version="6.0.0" /> | For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/). # Installing You can find `Box.V2.Core` package, and it's latest version [on nuget](https://www.nuget.org/packages/Box.V2.Core). You can install this SDK via powershell: ``` Install-Package Box.V2.Core ``` Alternatively, you can manually add it to the `.csproj` file as a reference: ``` <ItemGroup> <PackageReference Include="Box.V2.Core" Version="10.x.x" /> </ItemGroup> ``` `Box.V2` version of the SDK can also be found [on nuget](https://www.nuget.org/packages/Box.V2). If you were using `Box.V2` previously, consider migrating to `Box.V2.Core`. If that is not possible, you can still keep using `Box.V2` by installing it with the following powershell command: ``` Install-Package Box.V2 ``` Alternatively, you can manually add it to the `.csproj` file as a reference: ``` <ItemGroup> <PackageReference Include="Box.V2" Version="10.x.x" /> </ItemGroup> ``` # Getting Started To get started with the SDK, get a Developer Token from the Configuration page of your app in the Box Developer Console. You can use this token to make test calls for your own Box account. The SDK provides a `BoxDeveloperTokenAuth` class, which allows you to authenticate using your Developer Token. Use instance of `BoxDeveloperTokenAuth` to initialize `BoxClient` object. Using `BoxClient` object you can access managers, which allow you to perform some operations on your Box account. The example below demonstrates how to authenticate with Developer Token and print names of all items inside a root folder. ``` using Box.Sdk.Gen; var auth = new BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN_GOES_HERE"); var client = new BoxClient(auth: auth); var items = await client.Folders.GetFolderItemsAsync(folderId: "0"); if (items.Entries != null) { foreach (var item in items.Entries) { if (item.FileFull != null) { Console.WriteLine(item.FileFull.Name); } else if (item.FolderMini != null) { Console.WriteLine(item.FolderMini.Name); } else if (item.WebLink != null) { Console.WriteLine(item.WebLink.Name); } } } ``` The usage docs that show how to make calls to the Box API with the SDK can be found [here](https://github.com/box/box-windows-sdk-v2/tree/main/docs). We recommend, familiarizing yourself with the remaining [authentication methods](https://github.com/box/box-windows-sdk-v2/tree/main/docs/Authentication.md), [uploading files](https://github.com/box/box-windows-sdk-v2/tree/main/docs/Uploads.md) and [downloading files](https://github.com/box/box-windows-sdk-v2/tree/main/docs/Downloads.md). # Authentication Box Windows V2 SDK v10 supports multiple authentication methods including Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT). You can find detailed instructions and example code for each authentication method in [Authentication](https://ja.developer.box.com/810a8cebe984926bc713d06eba93c71e/Authentication.md) document. # Documentation Browse the [docs](https://ja.developer.box.com/5cbb46a59003518b210a314f04939ee6/README.md) or see [API Reference](https://developer.box.com/reference/) for more information. # Migration guides Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides). # Versioning We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](https://ja.developer.box.com/8249b54722608e671700c4582b0da591/VERSIONS.md) for details which is effective from 30 July 2022. A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date. ### Version schedule | Version | Supported Environments | State | First Release | EOL/Terminated | | --- | --- | --- | --- | --- | | 10 | .NET Framework 4.6.2+ and .NET 8+ | Supported | 17 Sep 2025 | TBD | | 6 | .NET Framework 4.6.2+ and .NET 8+ | Supported | 23 Oct 2025 | 2027 or v7 is released | | 5 | .NET Framework 4.6.2+ and .NET Core 2.0+ | EOL | 12 Jan 2023 | 23 Oct 2025 | | 4 | .NET Framework 4.5+ and .NET Core 2.0+ | EOL | 02 Nov 2021 | 12 Jan 2023 | | 3 | | EOL | 28 Jul 2017 | 02 Nov 2021 | | 2 | | EOL | 05 Nov 2015 | 28 Jul 2017 | # Contributing See [CONTRIBUTING.md](https://ja.developer.box.com/7cfc96c5a7593975f5559b7eadf8aeec/CONTRIBUTING.md). # Questions, Bugs, and Feature Requests? Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-windows-sdk-v2/issues)! Or, if that doesn't work, [file a new one](https://github.com/box/box-windows-sdk-v2/issues/new) and we will get back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5). # Copyright and License Copyright 2025 Box, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. For third party notices visit [THIRD-PARTY-NOTICES](THIRD-PARTY-NOTICES.txt) --- ### Changelog **Type:** page | **Section:** Additional Resources Changelog All notable changes to this project will be documented in this file. See standard-version for commit guidelines. 10.3.0 (2025-1… # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## 10.3.0 (2025-12-19) ### Bug Fixes - add taxonomy to Metadata Field (read) definition (box/box-openapi[#572](https://github.com/box/box-node-sdk/issues/572)) ([#1275](https://github.com/box/box-node-sdk/issues/1275)) ([0935d71](https://github.com/box/box-node-sdk/commit/0935d7116e0c5f7e0e4bc38f6a9f46344acaccba)) - fix `RetryAfter` function when there's no `Retry-After` header (box/box-codegen[#903](https://github.com/box/box-node-sdk/issues/903)) ([#1251](https://github.com/box/box-node-sdk/issues/1251)) ([a334d81](https://github.com/box/box-node-sdk/commit/a334d81190d9f90c7c1cec5cee8187f1cd18dac9)) ### New Features and Enhancements - add Metadata Taxonomies api (box/box-openapi[#569](https://github.com/box/box-node-sdk/issues/569)) ([#1263](https://github.com/box/box-node-sdk/issues/1263)) ([ee11f67](https://github.com/box/box-node-sdk/commit/ee11f678724912ebf862edc47c4ab1a2ea348f2b)) - text input validation for Box Sign (box/box-openapi[#568](https://github.com/box/box-node-sdk/issues/568)) ([#1260](https://github.com/box/box-node-sdk/issues/1260)) ([8686901](https://github.com/box/box-node-sdk/commit/868690186705d657b2af07d8fb45a4e4b99b7877)) - Treat `nullable` fields as Optional (box/box-codegen[#906](https://github.com/box/box-node-sdk/issues/906)) ([#1265](https://github.com/box/box-node-sdk/issues/1265)) ([91d0c74](https://github.com/box/box-node-sdk/commit/91d0c74f488948772e29116e668b69d2bdbbc1c8)) ## 10.2.0 (2025-12-10) ### Bug Fixes - Remove duplicated in union type (box/box-codegen[#898](https://github.com/box/box-node-sdk/issues/898)) ([#1240](https://github.com/box/box-node-sdk/issues/1240)) ([0b03b60](https://github.com/box/box-node-sdk/commit/0b03b607789ccf6a94253101760aa530a9737e78)) ### New Features and Enhancements - Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567](https://github.com/box/box-node-sdk/issues/567)) ([#1243](https://github.com/box/box-node-sdk/issues/1243)) ([55d6cd0](https://github.com/box/box-node-sdk/commit/55d6cd00790a81fa5c54379c045b4e652173dcb8)) - support `includeConfidenceScore` and `includeConfidenceScore` fields in AI extract structured (box/box-openapi[#566](https://github.com/box/box-node-sdk/issues/566)) ([#1228](https://github.com/box/box-node-sdk/issues/1228)) ([4bf9f46](https://github.com/box/box-node-sdk/commit/4bf9f46baaeaa213878c9102c0628e3c351c7b3c)) - Support new sign request metadata (box/box-openapi[#565](https://github.com/box/box-node-sdk/issues/565)) ([#1226](https://github.com/box/box-node-sdk/issues/1226)) ([8dfc1cc](https://github.com/box/box-node-sdk/commit/8dfc1ccc9c600c24d4d5e7879eaebfd6bf1f9a0e)) - update error message on exception (box/box-codegen[#896](https://github.com/box/box-node-sdk/issues/896)) ([#1233](https://github.com/box/box-node-sdk/issues/1233)) ([b298afa](https://github.com/box/box-node-sdk/commit/b298afa69fce884f7def10a8022aa67dc58ac949)) ## 10.1.0 (2025-11-10) ### Bug Fixes - Fix error handling in TS (box/box-codegen[#882](https://github.com/box/box-node-sdk/issues/882)) ([#1180](https://github.com/box/box-node-sdk/issues/1180)) ([2b68145](https://github.com/box/box-node-sdk/commit/2b68145d9d8e46e26d08b8bc774ba757ef3b444f)) - Fix error propagation and empty fetch response handling in node SDK (box/box-codegen[#883](https://github.com/box/box-node-sdk/issues/883)) ([#1192](https://github.com/box/box-node-sdk/issues/1192)) ([5664231](https://github.com/box/box-node-sdk/commit/56642319c5b77ab0113ed4e1af5df30100449fcd)) - Remove enum types from GET enterprise configurations endpoint (box/box-openapi[#560](https://github.com/box/box-node-sdk/issues/560)) ([#1155](https://github.com/box/box-node-sdk/issues/1155)) ([3ba01aa](https://github.com/box/box-node-sdk/commit/3ba01aaac7861ce3f0578af65d838f61b78b7dcb)), closes [box/box-openapi#558](https://github.com/box/box-openapi/issues/558) [box/box-openapi#558](https://github.com/box/box-openapi/issues/558) [box/box-openapi#559](https://github.com/box/box-openapi/issues/559) [box/box-codegen#869](https://github.com/box/box-codegen/issues/869) [box/box-codegen#871](https://github.com/box/box-codegen/issues/871) [box/box-codegen#872](https://github.com/box/box-codegen/issues/872) ### New Features and Enhancements - Add GET enterprise configuration endpoint (box/box-openapi[#559](https://github.com/box/box-node-sdk/issues/559)) ([#1143](https://github.com/box/box-node-sdk/issues/1143)) ([5eeeb4f](https://github.com/box/box-node-sdk/commit/5eeeb4fe7d0fff376cb31b820597e63d71dd0b69)) - support delete Archive endpoint (box/box-openapi[#563](https://github.com/box/box-node-sdk/issues/563)) ([#1173](https://github.com/box/box-node-sdk/issues/1173)) ([7dc774d](https://github.com/box/box-node-sdk/commit/7dc774d8764a3a0b3f60525e416ed5345d4a71b1)) ### 10.0.1 (2025-10-06) ### Bug Fixes - Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556](https://github.com/box/box-node-sdk/issues/556)) ([#1051](https://github.com/box/box-node-sdk/issues/1051)) ([70a2275](https://github.com/box/box-node-sdk/commit/70a2275ada40f079178166d60c7f5d0a48bd5e40)) - Make `role` parameter of update collaboration optional (box/box-openapi[#557](https://github.com/box/box-node-sdk/issues/557)) ([#1068](https://github.com/box/box-node-sdk/issues/1068)) ([3992171](https://github.com/box/box-node-sdk/commit/3992171af8587d9f43888ecd2fcbcd70a9f1b2b6)) - Relax JSON deserialization guard by removing strict `content-type` check (box/box-codegen[#844](https://github.com/box/box-node-sdk/issues/844)) ([#1033](https://github.com/box/box-node-sdk/issues/1033)) ([1eb2c32](https://github.com/box/box-node-sdk/commit/1eb2c32a923be1762bf9dfbb2dfdb9e5b3e78af5)) ## 10.0.0 (2025-09-17) Introducing **`Box Node SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`](https://github.com/box/box-node-sdk/tree/sdk-gen) branch, `v10` will ultimately become the main branch. ### Breaking Changes - This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here](https://github.com/box/box-node-sdk/tree/sdk-gen/docs). ### What's New in v10 **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide](https://github.com/box/box-node-sdk/blob/sdk-gen/docs/migration-guides/from-v3-to-v10.md) for details. For more information, see the [SDK versioning strategy document](https://developer.box.com/guides/tooling/sdks/sdk-versioning). Follow developer changelog for future updates. ### What’s New Compared to Typescript SDK Gen v1.19.1 #### ⚠ BREAKING CHANGES - Change names of unions (box/box-codegen[#787](https://github.com/box/box-node-sdk/issues/787)) ([#938](https://github.com/box/box-node-sdk/issues/938)) ([06a8e9b](https://github.com/box/box-node-sdk/commit/06a8e9bb6de67547dd900b74778c8203aa388a91)) - Remove unused models from schemas (box/box-openapi[#547](https://github.com/box/box-node-sdk/issues/547)) ([#933](https://github.com/box/box-node-sdk/issues/933)) ([35690f4](https://github.com/box/box-node-sdk/commit/35690f4e4ef7383cae890d4df810ed77168384e1)), closes [box/box-codegen#773](https://github.com/box/box-codegen/issues/773) [box/box-openapi#542](https://github.com/box/box-openapi/issues/542) [box/box-openapi#544](https://github.com/box/box-openapi/issues/544) [box/box-codegen#781](https://github.com/box/box-codegen/issues/781) [box/box-openapi#545](https://github.com/box/box-openapi/issues/545) - Remove generated suffix from files (box/box-codegen[#779](https://github.com/box/box-node-sdk/issues/779)) ([#948](https://github.com/box/box-node-sdk/issues/948)) ([4bfb073](https://github.com/box/box-node-sdk/commit/4bfb07350be95a5717ee9be032af4995d1d97395)) - Adjust imports and exports (box/box-codegen[#801](https://github.com/box/box-node-sdk/issues/801)) ([#965](https://github.com/box/box-node-sdk/issues/965)) ([d8e6a0a](https://github.com/box/box-node-sdk/commit/d8e6a0a466d367dd6c871bc20534f1b950732997)) #### Bug Fixes - Fix serialization for unions (box/box-codegen[#800](https://github.com/box/box-node-sdk/issues/800)) ([#954](https://github.com/box/box-node-sdk/issues/954)) ([7f75f6d](https://github.com/box/box-node-sdk/commit/7f75f6d6d87f2a9b6d500306fcc0dddf023b7118)) #### New Features and Enhancements - Add missing webhook events (box/box-openapi[#554](https://github.com/box/box-node-sdk/issues/554)) ([#982](https://github.com/box/box-node-sdk/issues/982)) ([2f5e245](https://github.com/box/box-node-sdk/commit/2f5e24574dbaff7d23140a2a5c22e54b1f047bf6)) - Support external user deletion API (box/box-codegen[#796](https://github.com/box/box-node-sdk/issues/796)) ([#946](https://github.com/box/box-node-sdk/issues/946)) ([44b37a4](https://github.com/box/box-node-sdk/commit/44b37a49ddbf587575f005342c9457cc46b5a573)) For more details check [migration guide](https://github.com/box/box-node-sdk/blob/sdk-gen/docs/migration-guides/from-box-typescript-sdk-gen-v1-to-box-node-sdk-v10.md) from `box-typescript-sdk-gen` `v1` to `box-node-sdk` `v10`. ### 3.8.1 (2025-06-11) ### Bug Fixes - Use constant-time comparison for HMAC signatures ([#893](https://github.com/box/box-node-sdk/issues/893)) ([d819efe](https://github.com/box/box-node-sdk/commit/d819efe663a59fce53412fbe153a76dd346d4536)) ## 3.8.0 (2025-04-09) ### New Features and Enhancements - Support AI agent ([#887](https://github.com/box/box-node-sdk/issues/887)) ([5b109ad](https://github.com/box/box-node-sdk/commit/5b109adbd506510fc83b1c90af13b063ddefab37)) ### 3.7.1 (2024-08-06) ### Bug Fixes - add version to copy file options annotation ([#885](https://github.com/box/box-node-sdk/issues/885)) ([4f9312c](https://github.com/box/box-node-sdk/commit/4f9312c63138f8cf8e0a9e46a9e1345172dbdc6b)) ## 3.7.0 (2024-07-16) ### New Features and Enhancements - Support AI APIs ([#883](https://github.com/box/box-node-sdk/issues/883)) ([bb81e07](https://github.com/box/box-node-sdk/commit/bb81e074eb1017bd742c90159e6cf4e6ce9d9776)) ## 3.6.0 (2024-05-20) ### New Features and Enhancements - Transition to stable status ([#880](https://github.com/box/box-node-sdk/issues/880)) ([ae996ea](https://github.com/box/box-node-sdk/commit/ae996eafd9e34de99119a7780384b90758908313)) ### 3.5.1 (2024-05-02) ### Bug Fixes - Fix `options` parameter in metadata query method ([#878](https://github.com/box/box-node-sdk/issues/878)) ([7943420](https://github.com/box/box-node-sdk/commit/79434209c572cd77c329d6008cda9837a9dba411)) ## 3.5.0 (2024-02-19) ### New Features and Enhancements - Sign request group ([#870](https://github.com/box/box-node-sdk/issues/870)) ([11bf5d2](https://github.com/box/box-node-sdk/commit/11bf5d2db7e0cefc669aab99c8b65c632289ac46)) ### Bug Fixes - Bumped proxy-agent to 6.4.0 ([#874](https://github.com/box/box-node-sdk/issues/874)) ([55a8a0b](https://github.com/box/box-node-sdk/commit/55a8a0baebe151f4107fdbec0a1022e9534f88a4)) - Remove delete classification ([#869](https://github.com/box/box-node-sdk/issues/869)) ([22384ab](https://github.com/box/box-node-sdk/commit/22384abc3abbc35800cbcdea7c7eb9a452cc4859)) ### 3.4.2 (2023-11-08) ### Bug Fixes - Fix `proxy-agent` ([#867](https://github.com/box/box-node-sdk/issues/867)) ([3de7586](https://github.com/box/box-node-sdk/commit/3de7586e44dbb7c8e1bff8f34471964805c810f5)) ### 3.4.1 (2023-11-03) ### Bug Fixes - Update `proxy-agent` usage, drop support Node 12 ([#865](https://github.com/box/box-node-sdk/issues/865)) ([e229d3f](https://github.com/box/box-node-sdk/commit/e229d3f93de350c00768528a1c0d3a6ecfc697a9)) ## 3.4.0 (2023-11-03) ### New Features and Enhancements - Add request option to skip `PassThrough` ([#863](https://github.com/box/box-node-sdk/issues/863)) ([726db45](https://github.com/box/box-node-sdk/commit/726db45cfbb992e545fe2865283df63c898656ac)) ## 3.3.0 (2023-10-26) ### New Features and Enhancements - Replace `request` library with `@cypress/request` ([#860](https://github.com/box/box-node-sdk/issues/860)) ([d365ae8](https://github.com/box/box-node-sdk/commit/d365ae8368c549ecdceb7dd5b928904fd3c58978)) ### Bug Fixes - mark auth funs callbacks as optional ([#858](https://github.com/box/box-node-sdk/issues/858)) ([55f22fe](https://github.com/box/box-node-sdk/commit/55f22fec7d7d35e487f3fb51bc9bbd3e848842ab)) ### 3.2.1 (2023-10-06) ### Bug Fixes - Overrides tough-cookie dependency ([#852](https://github.com/box/box-node-sdk/issues/852)) ([99df873](https://github.com/box/box-node-sdk/commit/99df873e1a1dad4a0073d53b4ed57c0eeb859401)) ## 3.2.0 (2023-09-07) ### New Features and Enhancements - Support sign template ([#848](https://github.com/box/box-node-sdk/issues/848)) ([18d3413](https://github.com/box/box-node-sdk/commit/18d3413afeddf43c62dfd0caf1279e61c99b6b83)) ### 3.1.1 (2023-07-19) ## 3.1.0 (2023-06-01) ### New Features and Enhancements - Added support for integration mappings API ([#831](https://github.com/box/box-node-sdk/issues/831)) ([a525327](https://github.com/box/box-node-sdk/commit/a525327c1362628a0ffdb36cb4bf3346ca0e0153)) ### Bug Fixes - Correct types of `userId` and `groupId` for creating collaboration ([#833](https://github.com/box/box-node-sdk/issues/833)) ([f803ff8](https://github.com/box/box-node-sdk/commit/f803ff82330fd78a8dc4875452a21aab54686b2e)), closes [#832](https://github.com/box/box-node-sdk/issues/832) ## 3.0.0 (2023-05-23) The most important change in this release is **dropping support for Node versions below 12** and changing the **support environments from Node 12 to Node 16**. ### Breaking Changes - Removed `use_index` usage. ([#812](https://github.com/box/box-node-sdk/pull/812)) ([d56799a](https://github.com/box/box-node-sdk/commit/d56799a61f42265d7785f99e92a449c58d125aef)) - Removed deprecated `BoxClient.batch()` and `BoxClient.batchExec()` method. - Removed deprecated `CollaborationWhitelist` class, use `CollaborationAllowlist` instead. - Removed deprecated `CollaborationAllowlist.getWhitelistedDomain()` method, use `CollaborationAllowlist.getAllowlistedDomain()` instead. - Removed deprecated `CollaborationAllowlist.getAllWhitelistedDomains()` method, use `CollaborationAllowlist.getAllAllowlistedDomains()` instead. - Remove deprecated `Files.getThumbnail(fileID: string, options?: Record<string, any>, callback?: Function)` method, use `Files.getRepresentationContent( fileID, representationType, options, callback)` instead. Migration details can be found [here](https://github.com/box/box-node-sdk/blob/v3.0.0/docs/upgrade/2.x.x%20to%203.x.x.md) ### Dependency Upgrades - Bumped `jsonwebtoken` from 8.5.1 to 9.0.0. ([#802](https://github.com/box/box-node-sdk/pull/802)) ([5b1d4e9](https://github.com/box/box-node-sdk/pull/828/commits/5b1d4e9ec557c14c1d27695733cc0bcae49061cb)) - Bumped `vm2` from 3.9.11 to 3.9.19 ([#826](https://github.com/box/box-node-sdk/pull/826)) ([220df76](https://github.com/box/box-node-sdk/commit/220df765080bc27c91daed51ac46620f6bc8b9ed)) ## 2.10.0 (2023-05-11) ### New Features and Enhancements - Added support for ethical wall API ([#822](https://github.com/box/box-node-sdk/issues/822)) ([4814af3](https://github.com/box/box-node-sdk/commit/4814af35c1741fbfe3fa03f8f0412ade8b38dfcc)) - Added `name` and `signature_color` fields to `SignRequest` and `SignRequestCreateRequest` types and `login_required` field to `SignRequestCreateSigner` type ([#822](https://github.com/box/box-node-sdk/issues/822)) ([4814af3](https://github.com/box/box-node-sdk/commit/4814af35c1741fbfe3fa03f8f0412ade8b38dfcc)) ## 2.9.0 (2023-04-19) ### New Features and Enhancements - New fields in `retention-policy` and `retention-policy-assignment` ([#803](https://github.com/box/box-node-sdk/issues/803)) ([f14ba84](https://github.com/box/box-node-sdk/commit/f14ba84013985513854ad396581d085d1d4f0255)) ### Bug Fixes - return empty object when `tos` status is not present ([#797](https://github.com/box/box-node-sdk/issues/797)) ([12fd9b0](https://github.com/box/box-node-sdk/commit/12fd9b053707471722f53cd1760c8cf59451fe8d)) ### 2.8.1 (2023-01-05) ### Bug Fixes - Fix `getReadStream` delay reading ([#790](https://github.com/box/box-node-sdk/issues/790)) ([6bfc1ee](https://github.com/box/box-node-sdk/commit/6bfc1eebeb9a31606ff96127eeb1ad03d2f13d9c)) ## 2.8.0 (2022-12-21) ### New Features and Enhancements - Session termination ([#782](https://github.com/box/box-node-sdk/issues/782)) ([7fb56c6](https://github.com/box/box-node-sdk/commit/7fb56c625f8eb03e6a5354b67a0debfd9e4ad7c8)) ### 2.7.2 (2022-11-10) ### Bug Fixes - Add `fields` query parameter to file and folder update ([#776](https://github.com/box/box-node-sdk/issues/776)) ([a327deb](https://github.com/box/box-node-sdk/commit/a327debc83d98a4190a5a16cf848417ea5714db9)) ### 2.7.1 (2022-10-28) ### Bug Fixes - Export missing `RetentionType` ([#774](https://github.com/box/box-node-sdk/issues/774)) ([7e6b244](https://github.com/box/box-node-sdk/commit/7e6b244ba63d363ecc921be570140c9e1ed1d032)) ## 2.7.0 (2022-10-27) ### New Features and Enhancements - Add support for modifiable retention policies & enable deleting retention policy assignment ([#769](https://github.com/box/box-node-sdk/issues/769)) ([5e8c776](https://github.com/box/box-node-sdk/commit/5e8c776fc94e9dcf313cc15c96e42fbffaf36b74)) ## 2.6.0 (2022-09-23) ### New Features and Enhancements - Add `content_type`, `redirect_url` field to Sign Request ([#758](https://github.com/box/box-node-sdk/issues/758)) ([8abb9b6](https://github.com/box/box-node-sdk/commit/8abb9b602b13cd72c6c8de549d19756ae147b403)) - Add sign request webhook ([#760](https://github.com/box/box-node-sdk/issues/760)) ([e92d1ab](https://github.com/box/box-node-sdk/commit/e92d1abee5faf58166f4892d7b2e6bc3c6480ac6)) - Added support for Access Only Collaboration ([#759](https://github.com/box/box-node-sdk/issues/759)) ([dd8261f](https://github.com/box/box-node-sdk/commit/dd8261f970c207854058c3ed86ccabf9bec05ea8)) ## 2.5.0 (2022-08-09) ### New Features and Enhancements - Added support update and remove user avatar ([#744](https://github.com/box/box-node-sdk/issues/744)) ([aaf6175](https://github.com/box/box-node-sdk/commit/aaf617528de5c61e19cfb25e28fe77c01532b9fa)) ### Bug Fixes - Fix error while generate token using oauth ([#750](https://github.com/box/box-node-sdk/issues/750)) ([f826291](https://github.com/box/box-node-sdk/commit/f82629108a1af6c4d160de1976fd01fdf0d8dde3)), closes [#286](https://github.com/box/box-node-sdk/issues/286) - Fix lint error in test file ([#747](https://github.com/box/box-node-sdk/issues/747)) ([3b1e10d](https://github.com/box/box-node-sdk/commit/3b1e10d206aa88a8bf99989bb7ff85776a9864a4)) ## 2.4.0 (2022-07-13) ### New Features and Enhancements - Added support for file requests ([#742](https://github.com/box/box-node-sdk/issues/742)) ([30b2e76](https://github.com/box/box-node-sdk/commit/30b2e767c6c3af68e1463cc801914f9889dc593c)) - Added support of `admin_logs_streaming` stream type ([#740](https://github.com/box/box-node-sdk/issues/740)) ([406950a](https://github.com/box/box-node-sdk/commit/406950a03af54a022427e0532e889a61e0d25152)) ### Bug Fixes - properly handle client errors in streams ([#736](https://github.com/box/box-node-sdk/issues/736)) ([12378d6](https://github.com/box/box-node-sdk/commit/12378d6755c2e3cddcb79439cdcbbe8e1e61df13)) ## 2.3.0 (2022-04-28) ### New Features and Enhancements - Add `description` parameter to `uploadFile` methods ([#730](https://github.com/box/box-node-sdk/issues/730)) ([2596584](https://github.com/box/box-node-sdk/commit/2596584dffb44c1995c8b6b3faa67564f4d32499)) ### Bug Fixes - added missing `js-docs` on shared links ([#731](https://github.com/box/box-node-sdk/issues/731)) ([3554d41](https://github.com/box/box-node-sdk/commit/3554d41d9050e7a81224c35e3e2e257604a0b41b)) ## 2.2.0 (2022-04-20) ### New Features and Enhancements - editable shared links ([#722](https://github.com/box/box-node-sdk/issues/722)) ([f0c0135](https://github.com/box/box-node-sdk/commit/f0c0135511fde46144e6c496432104321af443f6)) ## 2.1.0 (2022-03-28) ### New Features and Enhancements - Client Credentials Grant authentication method ([#709](https://github.com/box/box-node-sdk/issues/709)) ([fbf4e80](https://github.com/box/box-node-sdk/commit/fbf4e80648821e38479b24bf489e7d222ae6c18f)) - Deprecating `index_name` when executing metadata query ([#686](https://github.com/box/box-node-sdk/issues/686)) ([e01cc65](https://github.com/box/box-node-sdk/commit/e01cc650e4e793955be543e93928ad82a3254492)) - **test:** add support for testing with Jest ([#676](https://github.com/box/box-node-sdk/issues/676)) ([1a11759](https://github.com/box/box-node-sdk/commit/1a11759db999510c69d6a27f7becd565620bb000)) ### Bug Fixes - Client Credentials Grant authentication method supports token down-scoping ([#710](https://github.com/box/box-node-sdk/issues/710)) ([730368f](https://github.com/box/box-node-sdk/commit/730368f410ff56e9a8c90feea2192b29c08df198)) - Fix JWT expiration field being float instead of integer ([#715](https://github.com/box/box-node-sdk/issues/715)) ([7e950f1](https://github.com/box/box-node-sdk/commit/7e950f1265a52ce251c42a186c8196089a9ed858)), closes [#713](https://github.com/box/box-node-sdk/issues/713) ## 2.0.0 (2021-09-29) ### ⚠ BREAKING CHANGES - Drop support for Node 6,7 ([#670](https://github.com/box/box-node-sdk/pull/670)) ### New Features and Enhancements: - Add support for is_external_collab_restricted User property ([#668](https://github.com/box/box-node-sdk/pull/668)) - Bump proxy-agent from 4.0.0 to 5.0.0 ([#664](https://github.com/box/box-node-sdk/pull/664)) ## 1.39.0 (2021-08-30) ### New Features and Enhancements: - Add support for Box Sign API ([#658](https://github.com/box/box-node-sdk/pull/658)) - Enhance TS Imports ([#656](https://github.com/box/box-node-sdk/pull/656)) ## 1.38.0 (2021-08-05) ### New Features and Enhancements: - Add sensitive-language event types for admin invites ([#648](https://github.com/box/box-node-sdk/pull/648)) - Use BetterDocs to adapt JSDocs to TypeScript ([#646](https://github.com/box/box-node-sdk/pull/646)) - Change ProxyAgent import to be dynamic ([#641](https://github.com/box/box-node-sdk/pull/641)) - New API for get files and file versions under retention ([#585](https://github.com/box/box-node-sdk/pull/585)) ### Bug Fixes: - Deeply freeze Config except Buffers and Readable streams ([#651](https://github.com/box/box-node-sdk/pull/651)) - Fix a typo in docs of src/managers/search.ts ([#649](https://github.com/box/box-node-sdk/pull/649)) - Update broken documentation link ([#647](https://github.com/box/box-node-sdk/pull/647)) - fix type annotations for exchangeToken functions ([#645](https://github.com/box/box-node-sdk/pull/645)) - Deprecate files getThumbnail API in favor of getRepresentationContent ([#627](https://github.com/box/box-node-sdk/pull/627)) ## 1.37.2 (2021-05-20) ### Bug Fixes: - Fix backwards compatibility issue by moving some TypeScript @types as direct dependencies ([#630](https://github.com/box/box-node-sdk/pull/630)) ## 1.37.1 (2021-05-19) ### Bug Fixes: - Insensitive language: replace whitelist with allowlist ([#625](https://github.com/box/box-node-sdk/pull/625)) ## 1.37.0 (2021-04-16) ### New Features and Enhancements: - Add support for copyInstanceOnItemCopy field for metadata templates ([#572](https://github.com/box/box-node-sdk/pull/572)) ### Bug Fixes: - Fix webhook signature validation ([#568](https://github.com/box/box-node-sdk/pull/568)) - Update dependencies to patch security vulnerabilities ([#578](https://github.com/box/box-node-sdk/pull/578)) ## 1.36.0 (2021-01-27) ### New Features and Enhancements: - Add folder lock functionality ([#560](https://github.com/box/box-node-sdk/pull/560)) - Add support for filtering groups by name ([#561](https://github.com/box/box-node-sdk/pull/561)) ### Bug Fixes: - Update proxy-agent to patch proxy support issue ([#563](https://github.com/box/box-node-sdk/pull/563)) - Update dependencies to patch security vulnerabilities ([#566](https://github.com/box/box-node-sdk/pull/566)) ## 1.35.0 (2020-11-02) ### New Features and Enhancements: - Add support for search param to get shared link items ([#547](https://github.com/box/box-node-sdk/pull/547)) ## 1.34.3 (2020-10-02) ### Bug Fixes: - Upgrade ajv dependency ([#545](https://github.com/box/box-node-sdk/pull/545)) ## 1.34.2 (2020-08-20) - Make iterator bug fix for uploading files non breaking ([#534](https://github.com/box/box-node-sdk/pull/534)) ## 1.34.1 (2020-08-17) - Fix iterator bug for uploading new file versions ([#531](https://github.com/box/box-node-sdk/pull/531)) ## 1.34.0 (2020-08-04) - Add zip functionality ([#525](https://github.com/box/box-node-sdk/pull/525)) - Add proxy support for `http`, `https`, `socks` and `pac` protocols ([#529](https://github.com/box/box-node-sdk/pull/529)) ## 1.33.0 (2020-06-25) - Add path parameter sanitization ([#505](https://github.com/box/box-node-sdk/pull/505)) - Add support for all streams for uploading files ([#519](https://github.com/box/box-node-sdk/pull/519)) ## 1.32.0 (2020-04-01) - Temporarily removed Node 4 and Node 5 builds from Travis, due to tests not passing. Will investigate, going forward ([#495](https://github.com/box/box-node-sdk/pull/495)). - Fixed an issue where an error is thrown during a retry when a response is not returned by the previous call ([#477](https://github.com/box/box-node-sdk/pull/477)). - Added the ability to [query](./docs/metadata.md#query) Box items based on their metadata ([#487](https://github.com/box/box-node-sdk/pull/487)). ## 1.31.0 (2020-02-13) - Fixed Authentication Request Retries - Added marker-based paging for users endpoints - Added `getNextMarker()` to PagingIterator to get the next marker ## 1.30.0 (2019-11-21) - Deprecated Batch API methods - Added support for [token exchange](./lib/box-client.js#L495) using shared links ## 1.29.1 (2019-08-22) - Fixed an issue where JWT authentication requests could fail after being rate limited ## 1.29.0 (2019-04-25) Added convenience methods for setting metadata on [files](./docs/metadata.md#set-metadata-on-a-file) and [folders](./docs/metadata.md#set-metadata-on-a-folder) ([#376](https://github.com/box/box-node-sdk/pull/376)) ## 1.28.0 (2019-03-28) Added methods for [moving](./docs/web-links.md#move-a-web-link) and [copying](./docs/web-links.md#move-a-web-link) weblinks, as well as [adding or removing from a collection](./docs/web-links.md#add-web-link-to-a-collection) ## 1.27.0 (2019-02-28) - Added the trace ID from API response headers to error messages for easier debugging - Added more safety checks in the error flow to protect against throwing when handling a malformed request - Added support for [retrieving a user's avatar image](./docs/users.md#get-user-avatar) ## 1.26.2 (2019-02-22) Fixed an error where under high request rates, code in the error handling logic could throw when handling a malformed request ## 1.26.1 (2019-02-12) - Fixed an error where some methods could throw an error when constructing an iterator ## 1.26.0 (2019-02-12) - Added support for [replying to a comment](./docs/comments.md#reply-to-a-comment) (thanks @jpan-box!) Fixed an issue where calling `client.events.get()` could return an iterator that would only iterate over the first chunk of events. This method will now always return the raw JSON data in order to enable manual paging. For automatic paging through events, `client.events.getEventStream()` or `client.events.getEnterpriseEventStream()` should be used instead. ## 1.25.0 (2019-01-24) - Added the `retryStrategy` config parameter to allow customizing how the SDK retries failing requests ## 1.24.1 (2019-01-11) - Fixed an issue where token expiration was not being correctly handled ## 1.24.0 (2018-12-10) - Added a configuration option for populating the first-party client analytics header information ## 1.23.0 (2018-11-21) Added an `etag` option to common file and folder methods to allow handling race conditions - [`client.files.update()`](./docs/files.md#update-a-files-information) - [`client.files.delete()`](./docs/files.md#delete-a-file) - [`client.files.deletePermanently()`](./docs/trash.md#delete-a-file-from-the-trash) - [`client.files.deleteVersion()`](./docs/files.md#delete-a-previous-file-version) - [`client.folders.update()`](./docs/folders.md#update-a-folders-information) - [`client.folders.delete()`](./docs/folders.md#delete-a-folder) - [`client.folders.deletePermanently()`](./docs/trash.md#delete-a-folder-from-the-trash) ## 1.22.1 (2018-11-15) - Fixed an issue where retrying JWT auth token requests would sometimes fail due to a non-unique `jti` claim ## 1.22.0 (2018-09-17) - Chunked Uploader methods now return promises for [simpler handling of chunked uploads](./docs/files.md#automatic-uploader) - File attributes to set on the newly-uploaded file can now be [passed via `options.fileAttributes`](./docs/files.md#automatic-uploader) when creating a Chunked Uploader ## 1.21.0 (2018-09-13) - Added the ability to close an Event Stream by calling `eventStream.destroy()` (thanks @boneskull!) - Improved error messages related to certain authentication failure cases ## 1.20.0 (2018-08-09) - Added missing values to the `client.webhooks.triggerTypes` enum (thanks @MathersMax!) - Added support for [Metadata Cascade Policies](./docs/metadata.md#create-cascade-policy) ## 1.19.0 (2018-06-14) - Added `generateRepresentations` option to [`files.getRepresentationContent()`](./docs/files.md#get-representation-content) ## 1.18.0 (2018-05-24) Updated dependencies to resolve potential security issues: - `request@2.87.0` - Transitive dependencies of `jsonwebtoken@8.2.1` Added a static `BoxSDK.getBasicClient()` method to enable creating a client without needing to specify a client ID and secret (thanks to @cbetta) ## 1.17.0 (2018-05-10) - Updated dependencies: `request@2.85.0`, `jsonwebtoken@8.2.1` - Added support for [Storage Policies](./docs/storage-policies.md) - Added the option to use a Token Store for caching tokens with App Auth using JWT ## 1.16.1 (2018-04-26) - Fixed a bug where metadata template deletion would not properly return results via callback ## 1.16.0 (2018-04-10) - Added support for [assigning Retention Policies to Metadata Templates](https://github.com/box/box-node-sdk/blob/main/docs/retention-policies.md#assign-retention-policy) ## 1.15.0 (2018-03-29) - Fixed [`client.webhooks.validateMessage() and `sdk.validateWebhookMessage()`](https://github.com/box/box-node-sdk/blob/main/docs/webhooks.md#validate-a-webhook-message) to accept the request body as an `Object` - Fixed `sdk.configure()` to correct reconfigure all options - Improved error messages for API errors and added the request object as `error.request` for easier debugging ## 1.14.1 (2018-03-13) - Fixed a bug when `files.getReadStream()` was called with null options ## 1.14.0 (2018-03-12) - Added support for [getting a metadata template by ID](./docs/metadata.md#get-by-id) - Added a `byteRange` option to [file download](./docs/files.md#download-a-file) to support partial file download - Improved error messages when using promises and in authentication flows ## 1.13.0 (2018-03-01) - Added support for getting a [stream of file representation contents](./docs/files.md#get-representation-content) - Switched to using exponential backoff for request retries ## 1.12.1 (2018-01-25) - Fixed an issue where chunked uploader would not work with response streams from the request library (0e7014561f9cd0f7f38f98536b3f0c3946231d2e) ## 1.12.0 (2018-01-11) - Added support for [metadata template deletion](./docs/metadata.md#delete-metadata-template) ## 1.11.0 (2017-12-12) - Added options to preserve file timestamps on [file upload](./docs/files.md#upload-a-file) and to rename a file or preserve modification timestamp on [new version upload](./docs/files.md#upload-a-new-version-of-a-file) - Added [Collaboration Whitelist](./docs/collaboration-whitelist.md) functionality to allow enterprise admins to control which external users can collaborate on their content - Added an option to Token Exchange to generate [annotator tokens](./docs/authentication.md#annotator-tokens) for use with Box View ## 1.10.1 (2017-11-28) - Updated to [jsonwebtoken@8.1.0](mailto:jsonwebtoken@8.1.0) to fix an issue where some users were getting an error when using App Auth ## 1.10.0 (2017-01-14) - Added support for [Terms of Service](./docs/terms-of-service.md) endpoints - Fixed a bug where receiving a collection without paging parameters from the API would cause the SDK to throw an exception when using the `iterators` SDK option. Now, this will return an iterator over the items returned by the API. - Fixed a bug in Token Exchange where passing multiple scopes would result in an error - Added support for [getting Representations info on a file](./docs/files.md#get-representation-info) ## 1.9.0 (2017-09-12) - Fixed token methods to return bluebird Promises instead of native Promises - Added support for the `notify` and `can_view_path` options on Collaborations ## 1.8.0 (2017-08-21) - Added support for [Batch API](./docs/client.md#batch-api) - Fixed a bug where the Event Stream would make more API calls than necessary, potentially hitting Box API rate limits - Added Promise support to methods on the SDK object - Added Node.js version to the User-Agent header that the SDK sends - Fixed a bug where using multiple Persistent Clients instances could cause some clients to end up with expired tokens ## 1.7.0 (2017-07-19) - Add support for passing IP to all token methods, and fixed a bug where a client's IP was not being correctly reported on token refreshes ## 1.6.0 (2017-06-23) - Added [Recent Items](./docs/recent-items.md) support - Updated app auth expiration time default value and validation ## 1.5.1 (2017-06-15) - Revert deep-freezing Config properties, since it was causing errors ## 1.5.0 (2017-06-15) - Added support for [Token Exchange](./docs/authentication.md#token-exchange), which allows a client to get downscoped tokens suitable for passing to a browser app or worker process. - Ensured deeply-nested Config properties are immutable ## 1.4.2 (2017-05-22) - Fixed `BoxSDK.getPreconfiguredInstance()` to configure webhook keys ## 1.4.1 (2017-05-22) - Fixed `BoxSDK.getPreconfiguredInstance()` when app auth setttings are not populated ## 1.4.0 (2017-05-19) - Added support for [file collaborations](./docs/collaborations.md#add-a-collaboration). Users can now invite others to collaborate on single files. See [the blog post](https://blog.box.com/blog/file-collaboration-api/) for more information. - Fixed an issue where users were unable to use JWT Server Auth when their computers' clocks were not synchronized with the Box API servers. - All asynchronous client methods now return Promises in addition to taking a (now-optional) callback parameter, so you can write more modern JS with the SDK. - The SDK can now be preconfigured using a JSON blob that can be downloaded in the Box Dev Console for JWT Server Authentication apps, making it easier to get started developing! - Added support for [chunked upload](./docs/files.md#chunked-upload), where a large file can be uploaded one piece at a time. This makes large file uploads much faster and more reliable, since parts can be uploaded in parallel and failed parts can be retried in isolation. - Added an `is_confirmed` option to [email alias creation](./docs/users.md#add-email-alias) for admins to auto-confirm the alias. - Added support for the [Enterprise Events stream](./docs/events.md#enterprise-events). - Added an option to have collections methods (e.g. `folders.getItems()`, `enterprise.getUsers()`, etc) return [async iterators](./README.md#iterators) that will automatically page through the collection. This conforms to the [proposed async iteration spec](https://github.com/tc39/proposal-async-iteration), which will eventually allow them to be used in ergonomic for-await-of loop syntax. ## 1.3.0 (2017-01-24) - Added `BoxSDK.validateWebhookMessage()` and `client.webhooks.validateMessage()` for validating webhook messages from Box ## 1.2.0 (2016-12-12) - Added methods for all API endpoints; we now have full API coverage :tada: - Added support for renaming a file or folder on copy - Added `client.asUser(userID)` and `client.asSelf()` to support making calls on behalf of managed users - Fixed event streams so they don't go into an infinite error loop when auth expires - Fixed an error where App Auth clients would not be able to authorize due to clock skew - Fixed the `mdfilters` parameter in `client.search.query()` to support metadata search - Cloned options objects to prevent modification of passed-in objects by the SDK - Added better error messaging to the sample app ## 1.1.0 (2016-09-27) - Added endpoint to get a file's tasks - Fixed issues with stream uploads - Improved performance of file uploads - Added endpoints to delete files and folders from trash - Added endpoint to get a trashed folder - Upgraded request dependency to fix ReDoS vulnerability ## [1.0.0] (2016-07-13) Initial release. --- ### Changelog **Type:** page | **Section:** Additional Resources Changelog All notable changes to this project will be documented in this file. See standard-version for commit guidelines. 10.4.0 (2025-1… # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## 10.4.0 (2025-12-19) ### Bug Fixes - add taxonomy to Metadata Field (read) definition (box/box-openapi[#572](https://github.com/box/box-java-sdk/issues/572)) ([#1644](https://github.com/box/box-java-sdk/issues/1644)) ([61235da](https://github.com/box/box-java-sdk/commit/61235da7d51a64845d344a8286821e59b217a848)) - fix `RetryAfter` function when there's no `Retry-After` header (box/box-codegen[#903](https://github.com/box/box-java-sdk/issues/903)) ([#1622](https://github.com/box/box-java-sdk/issues/1622)) ([f135e2b](https://github.com/box/box-java-sdk/commit/f135e2b62d4b2d2d266ab40b3b366c8c7968d2db)) ### New Features and Enhancements - add Metadata Taxonomies api (box/box-openapi[#569](https://github.com/box/box-java-sdk/issues/569)) ([#1630](https://github.com/box/box-java-sdk/issues/1630)) ([d1e8924](https://github.com/box/box-java-sdk/commit/d1e8924ad123e5fcbf014be50fbbf52ea45d546b)) - text input validation for Box Sign (box/box-openapi[#568](https://github.com/box/box-java-sdk/issues/568)) ([#1624](https://github.com/box/box-java-sdk/issues/1624)) ([8c5b5c1](https://github.com/box/box-java-sdk/commit/8c5b5c17285c1c0d4a644eb8187dac92f1f96f28)) - Treat `nullable` fields as Optional (box/box-codegen[#906](https://github.com/box/box-java-sdk/issues/906)) ([#1634](https://github.com/box/box-java-sdk/issues/1634)) ([cacc729](https://github.com/box/box-java-sdk/commit/cacc729dc246c914eb1a6d8281f4261c96711dc1)) ## 10.3.0 (2025-12-10) ### New Features and Enhancements - Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567](https://github.com/box/box-java-sdk/issues/567)) ([#1615](https://github.com/box/box-java-sdk/issues/1615)) ([0a069cd](https://github.com/box/box-java-sdk/commit/0a069cdecc4837d8bdb6f1e91401d88c58af5a92)) - Support new sign request metadata (box/box-openapi[#565](https://github.com/box/box-java-sdk/issues/565)) ([#1599](https://github.com/box/box-java-sdk/issues/1599)) ([b3c46bb](https://github.com/box/box-java-sdk/commit/b3c46bbf2f2f7b9b25befcd6442a4e5c9a92e790)) ## 10.2.0 (2025-11-19) ### Bug Fixes - Fix parsing `OffsetDateTime` from String (box/box-codegen[#887](https://github.com/box/box-java-sdk/issues/887)) ([#1582](https://github.com/box/box-java-sdk/issues/1582)) ([d1288c4](https://github.com/box/box-java-sdk/commit/d1288c4804b032d5211d664c396e212a08a5775b)) ### New Features and Enhancements - Support GET enterprise configuration API (box/box-openapi[#559](https://github.com/box/box-java-sdk/issues/559)) ([#1519](https://github.com/box/box-java-sdk/issues/1519)) ([88dd8d2](https://github.com/box/box-java-sdk/commit/88dd8d2867d85ca8fc3b48d2aee61060ef328821)) - Disable OkHttp auto retries on connection failure (box/box-codegen[#874](https://github.com/box/box-java-sdk/issues/874)) ([#1541](https://github.com/box/box-java-sdk/issues/1541)) ([c2bd137](https://github.com/box/box-java-sdk/commit/c2bd137e469b9e67a14a33bb073107ff5db44175)) - Support Archive API (box/box-openapi[#563](https://github.com/box/box-java-sdk/issues/563)) ([#1553](https://github.com/box/box-java-sdk/issues/1553)) ([609e8bb](https://github.com/box/box-java-sdk/commit/609e8bb5eb7143281543dcfaada23f2649acae9d)) ## 10.1.0 (2025-10-06) ### Bug Fixes - Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556](https://github.com/box/box-java-sdk/issues/556)) ([#1470](https://github.com/box/box-java-sdk/issues/1470)) ([e215a5f](https://github.com/box/box-java-sdk/commit/e215a5f2502e694421a05d8da550d2b305c09460)) - Make `role` parameter of update collaboration optional (box/box-openapi[#557](https://github.com/box/box-java-sdk/issues/557)) ([#1479](https://github.com/box/box-java-sdk/issues/1479)) ([6896386](https://github.com/box/box-java-sdk/commit/6896386c6086996399066b09b5afc998a5a95ca4)) ### New Features and Enhancements - Add `Javadoc` comments (box/box-codegen[#839](https://github.com/box/box-java-sdk/issues/839)) ([#1465](https://github.com/box/box-java-sdk/issues/1465)) ([c72407d](https://github.com/box/box-java-sdk/commit/c72407dc77cc67f3a178d607a2b1bd4e90e832a8)) ## 10.0.0 (2025-09-17) Introducing **`Box SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`](https://github.com/box/box-java-sdk/tree/sdk-gen) branch, `v10` will ultimately become the main branch. ### Breaking Changes - This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here](https://github.com/box/box-java-sdk/tree/sdk-gen/docs). ### What's New in v10 **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide](https://github.com/box/box-java-sdk/blob/sdk-gen/migration-guides/from-v4-to-v10.md) for details. For more information, see the [SDK versioning strategy document](https://developer.box.com/guides/tooling/sdks/sdk-versioning). Follow developer changelog for future updates. ### What’s New Compared to Java SDK Gen v0.8.1 #### ⚠ BREAKING CHANGES - Change names of unions (box/box-codegen[#787](https://github.com/box/box-java-sdk/issues/787)) ([#1359](https://github.com/box/box-java-sdk/issues/1359)) ([114e778](https://github.com/box/box-java-sdk/commit/114e7785031e19fb58933f231e656a991b5effb7)) - Remove unused models from schemas (box/box-openapi[#547](https://github.com/box/box-java-sdk/issues/547)) ([#1354](https://github.com/box/box-java-sdk/issues/1354)) ([e031308](https://github.com/box/box-java-sdk/commit/e031308f102137351238bf3823372150d3927442)), closes [box/box-openapi#542](https://github.com/box/box-openapi/issues/542) [box/box-openapi#544](https://github.com/box/box-openapi/issues/544) [box/box-codegen#781](https://github.com/box/box-codegen/issues/781) [box/box-openapi#545](https://github.com/box/box-openapi/issues/545) [box/box-codegen#782](https://github.com/box/box-codegen/issues/782) - Replace `Date` with `OffsetDateTime` (box/box-codegen[#826](https://github.com/box/box-java-sdk/issues/826)) ([#1419](https://github.com/box/box-java-sdk/issues/1419)) ([ed04407](https://github.com/box/box-java-sdk/commit/ed04407e8effa8811bc85023783097f8a95e5223)) #### New Features and Enhancements - Add proxy support (box/box-codegen[#830](https://github.com/box/box-java-sdk/issues/830)) ([#1424](https://github.com/box/box-java-sdk/issues/1424)) ([cc53247](https://github.com/box/box-java-sdk/commit/cc532475cdaf5ec3fd710149b41a6e7b04dcd32f)) For more details check [migration guide](https://github.com/box/box-java-sdk/blob/sdk-gen/migration-guides/from-box-java-sdk-gen-v0-to-box-java-sdk-v10.md) from `box-java-sdk-gen` `v0` to `box-java-sdk` `v10`. ### 4.16.3 (2025-07-23) ### Bug Fixes: - Fix compare message webhook message signature ([#1315](https://github.com/box/box-java-sdk/issues/1315)) ([e2d407d](https://github.com/box/box-java-sdk/commit/e2d407ded3370ffee6eb074044fd562629a904be)) - Fix File Request Copy method to return valid data ([#1320](https://github.com/box/box-java-sdk/issues/1320)) ([8392a43](https://github.com/box/box-java-sdk/commit/8392a437c1a738bebb4e7d0f84d6bf833c76bdf3)) ### 4.16.2 (2025-06-02) ### Bug Fixes: - Fix parsing `downloadFileCount` property for `BoxZipDownloadStatus` ([50c2249](https://github.com/box/box-java-sdk/commit/50c2249ff5e0f0d1fdc99c9ff8786e9c134e58eb)) ### 4.16.1 (2025-04-29) ### Bug Fixes: - use `Locale.ROOT` to prevent issues with non-US locales ([#1306](https://github.com/box/box-java-sdk/issues/1306)) ([f083092](https://github.com/box/box-java-sdk/commit/f083092d5fdac37c93493945ab0c05ecdcdbc838)) ## 4.16.0 (2025-04-15) ### New Features and Enhancements: - Bump version of `zstd-jni` ([#1302](https://github.com/box/box-java-sdk/issues/1302)) ([9ebf8b5](https://github.com/box/box-java-sdk/commit/9ebf8b5d16c0ab8f4aa19849fdaa86935d38b294)) ### 4.15.3 (2025-03-12) ### Bug Fixes: - trim `content-length` header value ([#1297](https://github.com/box/box-java-sdk/issues/1297)) ([fa11d14](https://github.com/box/box-java-sdk/commit/fa11d141edf511eabc5f2398e55dc411d0cdcd31)) ### 4.15.2 (2025-02-26) ### Bug Fixes: - Improve logging for API Request and API Response ([#1295](https://github.com/box/box-java-sdk/issues/1295)) ([6eb1f57](https://github.com/box/box-java-sdk/commit/6eb1f57a584571b46daa14d045a36bca382493fa)) ### 4.15.1 (2025-02-24) ### Bug Fixes: - Fix parsing content length header ([#1292](https://github.com/box/box-java-sdk/issues/1292)) ([3bcf788](https://github.com/box/box-java-sdk/commit/3bcf788dd9849305aa2cc85b8e5f88b35803ecb2)) ## 4.15.0 (2025-02-19) ### New Features and Enhancements: - Add `canNonOwnersViewCollaborators` flag to `Folder` ([#1288](https://github.com/box/box-java-sdk/issues/1288)) ([9119adc](https://github.com/box/box-java-sdk/commit/9119adceae35e892e73ed61ed30cf82ad912960d)) - Support `zstd` encoding for downloads ([#1287](https://github.com/box/box-java-sdk/issues/1287)) ([0e3c4c0](https://github.com/box/box-java-sdk/commit/0e3c4c07e65ef1887cd5c393e3daf98aeb50ee47)) ### Bug Fixes: - Fix AI dialogue history ([#1289](https://github.com/box/box-java-sdk/issues/1289)) ([29b6519](https://github.com/box/box-java-sdk/commit/29b651987a5cbeead4b129cab20970f983cb6889)) ## 4.14.0 (2025-01-22) ### New Features and Enhancements: - Support downloading file from shared link ([#1282](https://github.com/box/box-java-sdk/issues/1282)) ([9b7f28b](https://github.com/box/box-java-sdk/commit/9b7f28b0288977513b0db3ed4f800647545e1f2c)) ### Bug Fixes: - Remove sensitive data when `BoxAPIException` logs request ([#1284](https://github.com/box/box-java-sdk/issues/1284)) ([f1e226f](https://github.com/box/box-java-sdk/commit/f1e226f710c301202acff067ef34687ddbb57b7b)) - Support creating ongoing Legal Hold policy with start date ([#1281](https://github.com/box/box-java-sdk/issues/1281)) ([d9564e2](https://github.com/box/box-java-sdk/commit/d9564e2e86ea110af933ca3dd0f728111d7140ae)) ### 4.13.1 (2024-11-29) ### Bug Fixes: - Correctly calculate `Content-Length` when reading from a stream ([#1277](https://github.com/box/box-java-sdk/issues/1277)) ([b1d5371](https://github.com/box/box-java-sdk/commit/b1d5371491abe1729a95eb9dc39d375135c8681d)) ## 4.13.0 (2024-11-21) ### New Features and Enhancements: - Enforce exact byte reading from `Content-Length` header for `BoxFile` representation ([#1274](https://github.com/box/box-java-sdk/issues/1274)) ([0b45cdb](https://github.com/box/box-java-sdk/commit/0b45cdb74c21996d1dfea505d25430a1fa9ee730)) - Expose `getVersionByID` method on `BoxFile` ([#1268](https://github.com/box/box-java-sdk/issues/1268)) ([6ea70f7](https://github.com/box/box-java-sdk/commit/6ea70f79ad39dd9a427ee574b5536d0ab1e3a9a4)) - make `tryRestoreUsingAccessTokenCache` in Box API connection public ([#1272](https://github.com/box/box-java-sdk/issues/1272)) ([50f5a61](https://github.com/box/box-java-sdk/commit/50f5a61184bd1a17a17e811536166f9f8e081a13)) ### Bug Fixes: - Fix `accessToken` locking mechanism ([#1270](https://github.com/box/box-java-sdk/issues/1270)) ([5eb4c93](https://github.com/box/box-java-sdk/commit/5eb4c93bd3653b28dc7def747779d008369f486a)) ## 4.12.0 (2024-10-17) ### New Features and Enhancements: - Support AI Agent ([#1265](https://github.com/box/box-java-sdk/issues/1265)) ([3cb2c7c](https://github.com/box/box-java-sdk/commit/3cb2c7c275761a24be9403a6a2b41d0725ba8d9b)) - Support AI extract and AI extract structured ([#1266](https://github.com/box/box-java-sdk/issues/1266)) ([7ba90b9](https://github.com/box/box-java-sdk/commit/7ba90b96070a32b3e2ac60e5c55bd04d0a5973c0)) ### 4.11.1 (2024-07-16) ### Bug Fixes: - Fix order of file upload multipart request ([#1261](https://github.com/box/box-java-sdk/issues/1261)) ([7200ac7](https://github.com/box/box-java-sdk/commit/7200ac77888b3639f2c294486be278e316efcfb0)) ## 4.11.0 (2024-07-15) ### New Features and Enhancements: - Allow overriding creation of OkHttp Call ([#1257](https://github.com/box/box-java-sdk/issues/1257)) ([bd6fde6](https://github.com/box/box-java-sdk/commit/bd6fde6689bebe6cb5889c91214db68e08a4ec8b)) ### Bug Fixes: - Add missing fields when update classification template ([#1255](https://github.com/box/box-java-sdk/issues/1255)) ([f17f817](https://github.com/box/box-java-sdk/commit/f17f817bde5a412358bf3de8e489ed080715ec4b)) - Fix deserializing permissions for `BoxFile` and `BoxFolder` ([#1256](https://github.com/box/box-java-sdk/issues/1256)) ([f088448](https://github.com/box/box-java-sdk/commit/f08844889800a01f7c78941036f6228502fca8b0)) ## 4.10.0 (2024-06-06) ### New Features and Enhancements: - Overload the `getRepresentationContent` method with a `maxRetries` parameter ([#1251](https://github.com/box/box-java-sdk/issues/1251)) ([d26bd4f](https://github.com/box/box-java-sdk/commit/d26bd4f5a141150a372159bc3867abbbbdda1406)) - Support `login_required`, `password`, `suppress_nofitications`, `verification_phone_number` and `additional_info` fields in sign request ([#1250](https://github.com/box/box-java-sdk/issues/1250)) ([3ee55b3](https://github.com/box/box-java-sdk/commit/3ee55b3613c5f5fa92cdd4a17c0cb3e2cc86a9a4)) ### 4.9.1 (2024-05-20) ### Bug Fixes: - Bumped `org.bouncycastle:bcprov-jdk18on:1.78.1` and `org.bouncycastle:bcpkix-jdk18on:1.78.1` ([#1246](https://github.com/box/box-java-sdk/issues/1246)) ([0557bed](https://github.com/box/box-java-sdk/commit/0557bed2b65d1be717b64a612d74fca73ba21096)) ## 4.9.0 (2024-05-06) ### New Features and Enhancements: - Support AI API ([#1243](https://github.com/box/box-java-sdk/issues/1243)) ([4e64f27](https://github.com/box/box-java-sdk/commit/4e64f27874fabf36f7fbf385ca4a60683f4a7670)) - Support pagination of file versions ([#1240](https://github.com/box/box-java-sdk/issues/1240)) ([7e7af3f](https://github.com/box/box-java-sdk/commit/7e7af3f6e40a44522a7649817547846e3f633fc8)) ### Bug Fixes: - Support create empty shared link ([#1241](https://github.com/box/box-java-sdk/issues/1241)) ([0c86487](https://github.com/box/box-java-sdk/commit/0c86487848e5004a713873baffa2d9dcc63b1502)) - Update exception message for get representation content ([#1239](https://github.com/box/box-java-sdk/issues/1239)) ([a608f9a](https://github.com/box/box-java-sdk/commit/a608f9a4350b723e9f07eaf00af45243737a17c9)) ## 4.8.0 (2024-02-27) ### New Features and Enhancements: - allow modifying `BoxAPIRequest` URL ([#1236](https://github.com/box/box-java-sdk/issues/1236)) ([eaea019](https://github.com/box/box-java-sdk/commit/eaea0193ab7e72b73746ea85806e62468825bbce)) - Bumped `org.bouncycastle:bcprov-jdk18on:1.77` and `org.bouncycastle:bcpkix-jdk18on:1.77` ([#1237](https://github.com/box/box-java-sdk/issues/1237)) ([6c7fe7b](https://github.com/box/box-java-sdk/commit/6c7fe7b74dbfb34e729fcecf8a29a1d3a1ba596f)), closes [#1235](https://github.com/box/box-java-sdk/issues/1235) ### Bug Fixes: - fix download for empty files ([#1231](https://github.com/box/box-java-sdk/issues/1231)) ([0e2230b](https://github.com/box/box-java-sdk/commit/0e2230b0be36f6bfb35f1d6b9dd4ba58e4d125ec)) - stop using `SharedLinkAPIConnection` in `getSharedItem()` ([#1234](https://github.com/box/box-java-sdk/issues/1234)) ([9f9af8e](https://github.com/box/box-java-sdk/commit/9f9af8e22b4a38dc9a31a611ff1b962966bbd6b5)) ## 4.7.0 (2024-01-16) ### New Features and Enhancements: - Add `signer_group_id` for signer in sign request ([#1220](https://github.com/box/box-java-sdk/issues/1220)) ([f560db8](https://github.com/box/box-java-sdk/commit/f560db8d5587406099066803789d16374ec7dbb9)) - Introduce `IPrivateKeyDecryptor` to allow using custom cryptography provider ([#1226](https://github.com/box/box-java-sdk/issues/1226)) ([727e6d7](https://github.com/box/box-java-sdk/commit/727e6d71ee375a48b4241a26a093becfe0965898)) ### Bug Fixes: - Remove delete classification ([#1222](https://github.com/box/box-java-sdk/issues/1222)) ([9814038](https://github.com/box/box-java-sdk/commit/981403896b4cd16a42c9feeecf30e75e1e8fa072)) ### 4.6.1 (2023-11-02) ### Dependency Upgrades: - Bumped `org.bitbucket.b_c:jose4j:0.9.3` ([#1212](https://github.com/box/box-java-sdk/issues/1212)) ([f522a56](https://github.com/box/box-java-sdk/commit/f522a5660f3522b11a0516774ba0cca69db3ec31)) ## 4.6.0 (2023-09-28) ### New Features and Enhancements: - Support search deleted filters ([#1207](https://github.com/box/box-java-sdk/issues/1207)) ([5e0e9ed](https://github.com/box/box-java-sdk/commit/5e0e9ed9aea2818da6fba0d562b56987c4948aaa)) ### Bug Fixes: - Added protected accessors for trust manager and hostname verifier. ([#1206](https://github.com/box/box-java-sdk/issues/1206)) ([0c79d17](https://github.com/box/box-java-sdk/commit/0c79d1754bffeb3f0487e10d55d716ba1cbed1aa)) - fix not closing response body ([#1208](https://github.com/box/box-java-sdk/issues/1208)) ([ab5e170](https://github.com/box/box-java-sdk/commit/ab5e1702934607b258802b33f3663af3e9c56027)) ## 4.5.0 (2023-09-13) ### New Features and Enhancements: - Add `iframeable_embed_url` field to `BoxSignRequestSigner` class ([#1202](https://github.com/box/box-java-sdk/issues/1202)) ([2e931d8](https://github.com/box/box-java-sdk/commit/2e931d8c36694a665d1c6315d3bf2d226929b713)) ### Bug Fixes: - `SharedLinkAPIConnection` uses request interceptor ([#1203](https://github.com/box/box-java-sdk/issues/1203)) ([b2b6a1d](https://github.com/box/box-java-sdk/commit/b2b6a1dba316ba50a1e011250c320fca156c6708)), closes [#1200](https://github.com/box/box-java-sdk/issues/1200) - Update sign template missing enum ([#1201](https://github.com/box/box-java-sdk/issues/1201)) ([fcb6657](https://github.com/box/box-java-sdk/commit/fcb6657bb2375e32c3fb0f861e7ecaeb84503f2c)) ## 4.4.0 (2023-08-29) ### New Features and Enhancements: - Support sign template and new sign status ([#1197](https://github.com/box/box-java-sdk/issues/1197)) ([e37c0dc](https://github.com/box/box-java-sdk/commit/e37c0dce86a422de5e8e6ed26fd93f1324f4b3e3)) ## 4.3.0 (2023-08-11) ### New Features and Enhancements: - Support access only collaboration ([#1193](https://github.com/box/box-java-sdk/issues/1193)) ([664c01f](https://github.com/box/box-java-sdk/commit/664c01f80ca0647645c60920eb0ef1f9353a619f)) ### 4.2.1 (2023-08-03) ### Bug Fixes: - Fixed upload when data are coming from a dynamic source ([#1189](https://github.com/box/box-java-sdk/issues/1189)) ([77b39f2](https://github.com/box/box-java-sdk/commit/77b39f2645d53bdab0ade23b637c211ea070fcf5)), closes [#1183](https://github.com/box/box-java-sdk/issues/1183) [#1190](https://github.com/box/box-java-sdk/issues/1190) ## 4.2.0 (2023-06-21) ### New Features and Enhancements: - Getting collaborators allows to specify fields ([#1178](https://github.com/box/box-java-sdk/issues/1178)) ([1694d75](https://github.com/box/box-java-sdk/commit/1694d75fff0fbddb938426ef03ba24f360a344aa)) ### 4.1.2 (2023-06-14) ### Bug Fixes: - Class cast exception when uploading large file ([#1174](https://github.com/box/box-java-sdk/issues/1174)) ([e7d28bd](https://github.com/box/box-java-sdk/commit/e7d28bddb706c8b4fd1328f0eebc50db19a8c656)), closes [#1173](https://github.com/box/box-java-sdk/issues/1173) - Make `SharedLinkAPIConnection` constructors public ([#1172](https://github.com/box/box-java-sdk/issues/1172)) ([4d1616d](https://github.com/box/box-java-sdk/commit/4d1616ddd2c39d1cb0d03af998d2c47efe607853)) - Remove invalid Group membership role ([#1171](https://github.com/box/box-java-sdk/issues/1171)) ([a5915f9](https://github.com/box/box-java-sdk/commit/a5915f94114a8269287831280a57949ed203e4e8)) ### 4.1.1 (2023-05-16) ### Bug Fixes: - Allow users to disable adding authentication header. ([#1167](https://github.com/box/box-java-sdk/issues/1167)) ([3433e5a](https://github.com/box/box-java-sdk/commit/3433e5a405ceb9bc32791642518b1fd65c4b4032)) - Logging headers when retrying request ([#1164](https://github.com/box/box-java-sdk/issues/1164)) ([e0c3d8e](https://github.com/box/box-java-sdk/commit/e0c3d8e730962ba5c97105ce506ee931a3bba362)) ## 4.1.0 (2023-04-24) ### New Features and Enhancements: - Add missing `fields` parameter to create and update `BoxUser` methods ([#1155](https://github.com/box/box-java-sdk/issues/1155)) ([be3820d](https://github.com/box/box-java-sdk/commit/be3820dc4df15e99dfc13602d4f7269841bd15b3)), closes [#1154](https://github.com/box/box-java-sdk/issues/1154) ### Bug Fixes: - Allow registering custom logger handlers ([#1156](https://github.com/box/box-java-sdk/issues/1156)) ([7373d5c](https://github.com/box/box-java-sdk/commit/7373d5cc2bf49bc198cbca70d056e43f0dffdb3a)) - Fallback to default value of `maxRetryAttempts` when restoring `BoxAPIConnection` ([#1161](https://github.com/box/box-java-sdk/issues/1161)) ([2a10e5d](https://github.com/box/box-java-sdk/commit/2a10e5d07497611e077a9207fe98c1d8146cfd22)), closes [#1160](https://github.com/box/box-java-sdk/issues/1160) ### 4.0.1 (2023-03-06) ### Bug Fixes: - `OAUTH_SUFFIX` gets appended twice to `baseAuthorizationURL` ([#1148](https://github.com/box/box-java-sdk/issues/1148)) ([3164770](https://github.com/box/box-java-sdk/commit/3164770498e5115a43318640735317a896950f54)), closes [#1147](https://github.com/box/box-java-sdk/issues/1147) - Wrong progress reported to `ProgressListener` by `AbstractBoxMultipartRequest` ([#1151](https://github.com/box/box-java-sdk/issues/1151)) ([947ded3](https://github.com/box/box-java-sdk/commit/947ded394490fc840b8191bc7ad69ae0ea5f5c7d)), closes [#1149](https://github.com/box/box-java-sdk/issues/1149) ## 4.0.0 (2023-01-17) The most important change this release includes is the replacement of the HTTP library from a native one to [OkHttp](https://square.github.io/okhttp/) which allows SDK to - Support the HTTP2 version of the HTTP protocol. Support proxies that do not use only basic authentication method. For details on creating custom proxy authenticators and an example of [NTLM proxy authentication](https://github.com/box/box-java-sdk/blob/kb/ok-http/doc/configuration.md#custom-proxy-authenticator). ### Breaking Changes - `BatchAPIRequest` – is no longer supported by the SDK - `BoxAPIConnection#DEFAULT_MAX_ATTEMPTS` is replaced with `BoxAPIConnection#DEFAULT_MAX_RETRIES` - `BoxRedirectResponse` – was removed and will not be replaced - `BoxEvent.Type` is replaced with `EventType` - Removing deprecated methods from `BoxFile`, `BoxFileVersionRetention`, `BoxFolder`, `BoxGroup`, `BoxGroupMembership`,`BoxItem`, `BoxRetentionPolicy`, `BoxTask`, `BoxUser`, `BoxWebLink`, `EventLog`, `Metadata` and `MetadataTemplate`. Migration details can be found [here](doc/upgrades/3.x.x%20to%204.x.x.md). ### New Features and Enhancements: - Using `OkHttp` in Java SDK ([#1083](https://github.com/box/box-java-sdk/issues/1083)) ([2656698](https://github.com/box/box-java-sdk/commit/265669897100dd8f1757fc2c5f25665da42c2889)) ### 3.8.2 (2023-01-04) ### Bug Fixes: - Fixed restoring state without refresh token. ([#1139](https://github.com/box/box-java-sdk/issues/1139)) ([3544709](https://github.com/box/box-java-sdk/commit/3544709480eb03e5bd50f5dc99be7409569304c4)) ### 3.8.1 (2022-12-19) ### Bug Fixes: - Restoring state from previous `SDK` version works. ([#1134](https://github.com/box/box-java-sdk/issues/1134)) ([b6d97dd](https://github.com/box/box-java-sdk/commit/b6d97dd5b0cc91eb2e4c922ff217e0878e0f63ec)) ## 3.8.0 (2022-11-15) ### New Features and Enhancements: - Added Box Sign webhooks ([#1109](https://github.com/box/box-java-sdk/issues/1109)) ([99051a5](https://github.com/box/box-java-sdk/commit/99051a575f120a8c0939359c1f4875b16b98b7f0)) ### Bug Fixes: - `NullPointerException` when using `BoxSignRequestPrefillTag` ([#1121](https://github.com/box/box-java-sdk/issues/1121)) ([73fd5b6](https://github.com/box/box-java-sdk/commit/73fd5b6e6e40f7e79b385edf46b8eee5ff612ace)), closes [#1120](https://github.com/box/box-java-sdk/issues/1120) - Regenerate JWT ID and retry auth request when JTI claim is rejected ([#1110](https://github.com/box/box-java-sdk/issues/1110)) ([420da0f](https://github.com/box/box-java-sdk/commit/420da0f2c80bfe8cfbaba4fa8dec4826c4cb6337)) ### Dependency Upgrades: - Bumped org.bitbucket.b_c:jose4j:0.9.0 ([#1111](https://github.com/box/box-java-sdk/issues/1111)) ([349694d](https://github.com/box/box-java-sdk/commit/349694ddcfeb701a9ecdfd5ae555d49bea4d1030)) ### 3.7.1 (2022-09-29) ### Bug Fixes: - Better logging when JSON cannot be parsed ([#1106](https://github.com/box/box-java-sdk/issues/1106)) ([5e66ef8](https://github.com/box/box-java-sdk/commit/5e66ef8cc983a6cff34995efc75e9effd3195d48)) ## 3.7.0 (2022-09-20) ### New Features and Enhancements: - Add `is_accessible_via_shared_link` field to File and Folder ([#1103](https://github.com/box/box-java-sdk/issues/1103)) ([45e9906](https://github.com/box/box-java-sdk/commit/45e9906efca6a7f2d4d738914dc804de12d3646e)) ### Bug Fixes: - `BoxCollaboration.getItem()` returns `BoxItem.Info` not `BoxFolder.Info` ([#1102](https://github.com/box/box-java-sdk/issues/1102)) ([135850d](https://github.com/box/box-java-sdk/commit/135850d97164ee5f6d74708d74c531f7fa8bee26)), closes [#1101](https://github.com/box/box-java-sdk/issues/1101) [#1100](https://github.com/box/box-java-sdk/issues/1100). `BoxCollaboration.getItem()` used to return `BoxFolder.Info`. However, if collaboration was added on a file it would still return `BoxFolder.Info` which will end with throwing `BoxAPIException` when doing any API call. If you are getting collaboration item it is best to store it as `BoxItem.Info` or check its type and store it as `BoxFile.Info` or `BoxFolder.Info`. - Add missing constructor to `BoxNotificationEmail` class ([#1098](https://github.com/box/box-java-sdk/issues/1098)) ([2534f34](https://github.com/box/box-java-sdk/commit/2534f34133f9554abd1e80fc1555659a2c52b23f)) ## 3.6.0 (2022-09-07) ### New Features and Enhancements: - Add support for modifiable retention policies & enable deleting retention policy assignment ([#1093](https://github.com/box/box-java-sdk/issues/1093)) ([30e2fcb](https://github.com/box/box-java-sdk/commit/30e2fcb74c12867fd3859c3490539557b47ab006)) ### Bug Fixes: - Stop sending not specified optional fields when creating a user ([#1095](https://github.com/box/box-java-sdk/issues/1095)) ([b7d894d](https://github.com/box/box-java-sdk/commit/b7d894d3f134137f3a5925f09accfd4334837f81)) ## 3.5.0 (2022-08-26) ### New Features and Enhancements: - Add `content-type` sign request and response ([#1087](https://github.com/box/box-java-sdk/issues/1087)) ([49411aa](https://github.com/box/box-java-sdk/commit/49411aaeea6d3ff8de10e3fbc3c60bba1bc54748)) - Add `notification_email` to `BoxUser` ([#1088](https://github.com/box/box-java-sdk/issues/1088)) ([5477223](https://github.com/box/box-java-sdk/commit/547722347a920ba11e5fff7a8df5201720af815a)) - Add `redirect_url` and `declined_redirect_url` to sign request response ([#1089](https://github.com/box/box-java-sdk/issues/1089)) ([3921fe1](https://github.com/box/box-java-sdk/commit/3921fe1a4a6249146a8dd2f22e15801846bc073b)) ### Bug Fixes: - Fixed canceling sign request fails because of empty body ([#1085](https://github.com/box/box-java-sdk/issues/1085)) ([32b8e79](https://github.com/box/box-java-sdk/commit/32b8e79ebc8995ab933c32d28c3e2f17d9627a70)) ## 3.4.0 (2022-08-10) ### New Features and Enhancements: - Added pagination for getting items in trash with new `BoxTrash#items` API ([#1072](https://github.com/box/box-java-sdk/issues/1072)) ([9cd411d](https://github.com/box/box-java-sdk/commit/9cd411d20af1bc76ae815905396d72008af62539)) ### Bug Fixes: - buffered body write and fixed SDK logging ([#1079](https://github.com/box/box-java-sdk/issues/1079)) ([bc35ef3](https://github.com/box/box-java-sdk/commit/bc35ef3279e68a3d794de454f506ba41d14c3b16)) ## 3.3.0 (2022-07-01) ### New Features and Enhancements: - Added support of Editable Shared Links ([#1064](https://github.com/box/box-java-sdk/issues/1064)) ([9b7d60c](https://github.com/box/box-java-sdk/commit/9b7d60c41fbd481465bf3f2a5877746f10849712)) ### Bug Fixes: - Fix closed stream exception in `canUpload` method ([#1067](https://github.com/box/box-java-sdk/issues/1067)) ([543f91c](https://github.com/box/box-java-sdk/commit/543f91c46dfcc9de7e61ce11cd93d472916533ac)) ### 3.2.1 (2022-06-10) ### Bug Fixes: - Fix getting proper URL to authenticate with OAuth ([#1059](https://github.com/box/box-java-sdk/issues/1059)) ([42876b4](https://github.com/box/box-java-sdk/commit/42876b45ccdb7fa6f357186cecaba051abf1c269)), closes [#1057](https://github.com/box/box-java-sdk/issues/1057) ## 3.2.0 (2022-05-23) ### New Features and Enhancements: - Revamped setting base URLs ([#1042](https://github.com/box/box-java-sdk/issues/1042)) ([129baf7](https://github.com/box/box-java-sdk/commit/129baf704ced127788bb0f62ef9f4fb6a50fdc63)) - support for Avatar V2 API ([#1044](https://github.com/box/box-java-sdk/issues/1044)) ([18651d7](https://github.com/box/box-java-sdk/commit/18651d7a5b419796e3733c7582ae471d7af7ed5c)) ### 3.1.2 (2022-03-22) ### Bug Fixes: - Allow using `As-User` header with CCG Authentication ([#1031](https://github.com/box/box-java-sdk/issues/1031)) ([b0c2389](https://github.com/box/box-java-sdk/commit/b0c238913cc1dbcecfd546a5eae68277c3c76d42)) - Fix retry logic when `Retry-After` header is present ([#1033](https://github.com/box/box-java-sdk/issues/1033)) ([05224c4](https://github.com/box/box-java-sdk/commit/05224c433d2a101a01959644674153df9542b711)) ### 3.1.1 (2022-02-28) ### Bug Fixes: - retry `jwt` auth when error code is in error field ([#1020](https://github.com/box/box-java-sdk/issues/1020)) ([8c9d11d](https://github.com/box/box-java-sdk/commit/8c9d11d1b3556552751c9f4ac99a0f7180af97f3)), closes [#1019](https://github.com/box/box-java-sdk/issues/1019) ## 3.1.0 (2022-02-17) ### New Features and Enhancements: - Added support for Client Credentials Grant authentication method ([#1002](https://github.com/box/box-java-sdk/issues/1002)) ([9cfcaff](https://github.com/box/box-java-sdk/commit/9cfcaff243dbf0541409f91f9f863a207345dc47)) - API to extend disposition date on a file ([#1001](https://github.com/box/box-java-sdk/issues/1001)) ([f3f6b60](https://github.com/box/box-java-sdk/commit/f3f6b6043eec362c5a8ad9a01d6588538ca34e71)) - Deprecating `indexName` when executing metadata query ([#1000](https://github.com/box/box-java-sdk/issues/1000)) ([c20dbbf](https://github.com/box/box-java-sdk/commit/c20dbbf6a927e31cfdd7ffa71069c0897f7a0536)) ### Dependency Upgrades: - Upgrade Gradle to 7.3.3 ([#985](https://github.com/box/box-java-sdk/issues/985)) ([e4acbb1](https://github.com/box/box-java-sdk/commit/e4acbb1f0c10ccdeeee139e2566b344052680010)) ## 3.0.0 (2022-01-17) ### ⚠ BREAKING CHANGES - Changed `BoxFileVersion` class and removed `fileVersion` field (#978) - Removed deprecated API `BoxCollaborationWhitelist` replaced with `BoxCollaborationAllowlist`, `BoxCollaborationWhitelistExemptTarget` replaced with `BoxCollaborationAllowlistExemptTarget` (#969) - Dropping Java 7 support (#962) - Downgrading `bouncycastle` libraries to 1.57 (#942) ### New Features and Enhancements: - Add `typeName` to `BoxEvent` that contains name of the event, even if it is not mapped to `BoxEvent.EventType` ([#979](https://github.com/box/box-java-sdk/issues/979)) ([b30f61f](https://github.com/box/box-java-sdk/commit/b30f61f8cc9c02a1fc4cd5eb35469749e1a16558)), closes [#968](https://github.com/box/box-java-sdk/issues/968) - Add new optional `description` parameter to the `retention_policies` endpoint and `start_date_field` to the `retention_policy_assignments endpoint`. ([#967](https://github.com/box/box-java-sdk/issues/967)) ([0aa4ff4](https://github.com/box/box-java-sdk/commit/0aa4ff48a1e035efc9ac6aaa42f18f4c92955b7b)) - Adding `BoxFile#getVersions(String... fields)` to allow users to specify what information they want to extract. Fixes [#946](https://github.com/box/box-java-sdk/issues/946). ([#947](https://github.com/box/box-java-sdk/issues/947)) ([a2eb638](https://github.com/box/box-java-sdk/commit/a2eb63896606a6c00ccee6bd9745f4c51f8d89a2)) - Missing `eventTypes` from `BoxAPI` Documents. Fixes [#974](https://github.com/box/box-java-sdk/issues/974) ([#975](https://github.com/box/box-java-sdk/issues/975)) ([2c69360](https://github.com/box/box-java-sdk/commit/2c69360e80b1bdd6213933cf2f4da195d52c92d4)) - Removed deprecated API `BoxCollaborationWhitelist` replaced with `BoxCollaborationAllowlist`, `BoxCollaborationWhitelistExemptTarget` replaced with `BoxCollaborationAllowlistExemptTarget` ([#969](https://github.com/box/box-java-sdk/issues/969)) ([2fd4d6f](https://github.com/box/box-java-sdk/commit/2fd4d6f884410c8884c4c038687bfc8f32837b55)) ### Bug Fixes: - Changed `BoxFileVersion` class and removed `fileVersion` field ([#978](https://github.com/box/box-java-sdk/issues/978)) ([8c39451](https://github.com/box/box-java-sdk/commit/8c3945167581400043a070c2f6906ef05d3d7b85)) - Changed SDK loggers name to `"com.box.sdk"`, fixes [#638](https://github.com/box/box-java-sdk/issues/638) ([#950](https://github.com/box/box-java-sdk/issues/950)) ([443c230](https://github.com/box/box-java-sdk/commit/443c23085e55bbcaa1524c5b9e1bf852a1e2a1ce)) - Date parsing error when `BoxSignRequestPrefillTag` created with date value. ([#970](https://github.com/box/box-java-sdk/issues/970)) ([cc2c8da](https://github.com/box/box-java-sdk/commit/cc2c8da9ea7d066ae2c247c2de5ac8b8bbba9b99)) - Fix sending limit param in `EventLog` ([#977](https://github.com/box/box-java-sdk/issues/977)) ([96bdccc](https://github.com/box/box-java-sdk/commit/96bdccc9ca40ed43a6028a2b0d055d9d9a8de525)) - Fixed `NullPointerException` when empty metadata used on BoxFile or `BoxFolder` ([#918](https://github.com/box/box-java-sdk/issues/918)) ([#945](https://github.com/box/box-java-sdk/issues/945)) ([68bc3c5](https://github.com/box/box-java-sdk/commit/68bc3c578d760b7239f6d704fed9bb5a834bf52a)) - Fixes issue ([#951](https://github.com/box/box-java-sdk/issues/951)) error when deserialising sign request ([#952](https://github.com/box/box-java-sdk/issues/952)) ([070bdc5](https://github.com/box/box-java-sdk/commit/070bdc56074a1533c41f9085943d09502c79a7f4)) ### Dependency Upgrades: - Dropping Java 7 support ([#962](https://github.com/box/box-java-sdk/issues/962)) ([953ad78](https://github.com/box/box-java-sdk/commit/953ad78ac84833082439d0def1dcc63dc11ac04a)) - Downgrading `bouncycastle` libraries to 1.57 ([#942](https://github.com/box/box-java-sdk/issues/942)) ([26aaed5](https://github.com/box/box-java-sdk/commit/26aaed51fd914eaf2061da735f11830524e4cfe4)) ## [2.58.0] (2021-11-23) ### ⚠ BREAKING CHANGES ### New Features and Enhancements: - SDK support for new GET /events stream_type: admin_logs_streaming ([#938](https://github.com/box/box-java-sdk/pull/938)) - Adding BoxDeveloperEditionAPIConnection#getUserConnection to indicate that we can use this connection for managed users or app users ([#940](https://github.com/box/box-java-sdk/pull/940)) ### Bug Fixes: - Fix for deprecated enums still being used ([#931](https://github.com/box/box-java-sdk/issues/931)) ## [2.57.0] (2021-10-18) ### ⚠ BREAKING CHANGES ### New Features and Enhancements: - Add support for marker-based paging in BoxFolder.getChildren ([#927](https://github.com/box/box-java-sdk/pull/927)) - Upgraded minimal-json to v0.9.5 - Upgraded jose4j to v0.7.9 - Adding Gradle wrapper in version 4.0.1 ([#928](https://github.com/box/box-java-sdk/pull/928)) ### Bug Fixes: - Fix for infinite recursion ([#924](https://github.com/box/box-java-sdk/pull/924)) - Fix unable to set Vanity URL on `BoxSharedLink` for BoxFile and BoxFolder ([#925](https://github.com/box/box-java-sdk/issues/925)) ## [2.56.0] (2021-08-31) ### New Features and Enhancements: - Replace `submaster` GroupMembershipRole with `coadmin`. Replace `MASTER_INVITE_ACCEPT` and `MASTER_INVITE_REJECT` with `ADMIN_INVITE_ACCEPT` and `ADMIN_INVITE_REJECT`. ([#907](https://github.com/box/box-java-sdk/pull/907)) - Add `tracking_codes` to create User API call ([#910](https://github.com/box/box-java-sdk/pull/910)) ### Bug Fixes: - Fix `url` for `BoxFileRequest.Info` object ([#906](https://github.com/box/box-java-sdk/pull/906)) - Attempt to fix thread locking issue on refresh of access token ([#912](https://github.com/box/box-java-sdk/pull/912)) ## [2.55.1] (2021-07-30) ### Bug Fixes: - Restore methods for Execute Metadata Query, which were removed in ([#890](https://github.com/box/box-java-sdk/pull/890)), and mark them as deprecated ([#905](https://github.com/box/box-java-sdk/pull/905)) ## [2.55.0] (2021-07-26) NOTE: Due to the benign nature of the "breaking change" below, we decided NOT to increment the major version for this release. There should be no customer impact due to this change. ### ⚠ BREAKING CHANGES Update execute metadata query to match API response ([#890](https://github.com/box/box-java-sdk/pull/890)) - NOTE: This change removes a method without deprecating it. It was not possible to use the method correctly at all, because the underlying service no longer supported it. ### New Features and Enhancements: - Remove or deprecate insensitive language ([#889])([https://github.com/box/box-java-sdk/pull/889](https://github.com/box/box-java-sdk/pull/889)) - Add support for `is_external_collab_restricted` parameter for User ([#896](https://github.com/box/box-java-sdk/pull/896)) - Add configurable permissions support for `GroupMembership` ([#897](https://github.com/box/box-java-sdk/pull/897)) - Add `SHIELD_JUSTIFICATION_APPROVAL` event type ([#898](https://github.com/box/box-java-sdk/pull/898)) - Add ability to get files under retention for assignment and file versions under retention for assignment ([#899](https://github.com/box/box-java-sdk/pull/899)) - Add `TASK_UPDATE`, `FILE_VERSION_RESTORE` and `ADVANCED_FOLDER_SETTINGS_UPDATE` event types ([#902](https://github.com/box/box-java-sdk/pull/902)) - Add SignAPI support ([#904](https://github.com/box/box-java-sdk/pull/904)) ### Bug Fixes: - Add setters for `BoxLegalHoldPolicy` ([#885](https://github.com/box/box-java-sdk/pull/885)) - Add setters for `BoxTaskAssignment` ([#886](https://github.com/box/box-java-sdk/pull/886)) - Add setters for Group Membership and Web Links ([#887](https://github.com/box/box-java-sdk/pull/887)) - Add setters for Webhooks ([#888](https://github.com/box/box-java-sdk/pull/888)) - Deprecate `BoxFile.getThumbnail` in favor of `BoxFile.getRepresentationContent` ([#891](https://github.com/box/box-java-sdk/pull/891)) ## [2.54.0] (2021-04-01) ### New Features and Enhancements: - Add file request support ([#869](https://github.com/box/box-java-sdk/pull/869)) ### Bug Fixes: - Fix `BoxWeblink` deserialization ([#881](https://github.com/box/box-java-sdk/pull/881)) ## [2.53.0] (2021-01-08) ### New Features and Enhancements: - Add offset and limit parameters to `BoxFolder.getChildren` ([#861](https://github.com/box/box-java-sdk/pull/861)) ## [2.52.0] (2020-11-24) ### New Features and Enhancements: - Add folder lock functionality ([#856](https://github.com/box/box-java-sdk/pull/856)) - Add support for search param to get shared link items ([#855](https://github.com/box/box-java-sdk/pull/855)) ### Bug Fixes: - Fix bug with updating tracking codes ([#857](https://github.com/box/box-java-sdk/pull/857)) ## [2.51.1] (2020-11-12) ### Bug Fixes: - Fix for cross-enterprise collaborator calls to updateMetadata on files ## [2.51.0] (2020-10-29) ### New Features and Enhancements: - Add support for `copyInstanceOnItemCopy` field for metadata templates ([#850](https://github.com/box/box-java-sdk/pull/850)) - Add support for more fields in `BoxCollaborator.Info` ([#843](https://github.com/box/box-java-sdk/pull/843)) ### Bug Fixes: - Update `getAllGroupsByName()` to use documented parameter ([#851](https://github.com/box/box-java-sdk/pull/851)) ## [2.50.1] (2020-08-20) - Fix bug that occurred when downscoping a token for a Box folder ([#832](https://github.com/box/box-java-sdk/pull/832)) ## [2.50.0] (2020-07-21) - API request creation errors are now retried with the same automatic retry logic as 429 and 5XX response errors ([#828](https://github.com/box/box-java-sdk/pull/828)) ## [2.49.0] (2020-07-17) - Fix bug with setting the unshared at date for a shared link ([#819](https://github.com/box/box-java-sdk/pull/819)) - Add zip functionality ([#825](https://github.com/box/box-java-sdk/pull/825)) - Add `fields` parameter for metadata query ([#826](https://github.com/box/box-java-sdk/pull/826)) ## [2.48.0] (2020-06-23) - Add ability to get groups by name with fields option ([#789](https://github.com/box/box-java-sdk/pull/789)) - Add shared link downscoping ([#785](https://github.com/box/box-java-sdk/pull/785)) - Deprecate the use of float for Metadata values, in preference of the underlying value (double) ([#811](https://github.com/box/box-java-sdk/pull/811)) - Add iterator support for group collaborations ([#813](https://github.com/box/box-java-sdk/pull/813)) - Add ability to set the filename when uploading a new version of a file ([#810](https://github.com/box/box-java-sdk/pull/810)) - Add support for the classification field for Files and Folders ([#809](https://github.com/box/box-java-sdk/pull/809)) - Add support for setting Tracking Codes ([#766](https://github.com/box/box-java-sdk/pull/766)) - Fix issue for `getIsExternallyOwned()` for Files and Folders ([#808](https://github.com/box/box-java-sdk/pull/808)) ## [2.47.0] (2020-04-23) - Add support for the uploader display name field for Files and File Versions ([#791](https://github.com/box/box-java-sdk/pull/791)) - Fix path parameter sanitization ([#797](https://github.com/box/box-java-sdk/pull/797)) ## [2.46.0] (2020-04-09) Fix retry logic ([#787](https://github.com/box/box-java-sdk/pull/787)) - Retry for 400 `invalid_grant` error in authentication requests (Clock Skew) - Honor Retry-After header, if present, by waiting for the time specified in the header before retrying - The concept of setting / getting "Maximum API Requests" has been deprecated in favor of "Maximum API Retries" to more clearly show the number of times a request will be retried after an error response is received. Add ability to set expiration date for a collaboration ([#788](https://github.com/box/box-java-sdk/pull/788)) Add path parameter sanitization ([#790](https://github.com/box/box-java-sdk/pull/790)) ## [2.45.0] (2020-04-02) - Add preflight check before chunked uploads ([#782](https://github.com/box/box-java-sdk/pull/782)) - Check that part was successfully uploaded for large file uploads before retrying for 500 errors ([#781](https://github.com/box/box-java-sdk/pull/781)) - Fix bug with premature disconnect when renaming files and weblinks ([#779](https://github.com/box/box-java-sdk/pull/779)) - Add metadata to each item returned by a metadata query ([#778](https://github.com/box/box-java-sdk/pull/778)) ## [2.44.1] (2020-02-13) - Fix formatting bug for Java Logger - Improve date / time parsing for responses ## [2.44.0] (2020-01-21) - Fix Authentication Request Retries ## [2.43.0] (2019-12-20) - Throw exceptions for setMetadata on Files and Folders for non-409 errors ## [2.42.0] (2019-12-17) - Added Metadata Query support - Added marker based pagination for get users methods ## [2.41.0] (2019-10-24) - Added enum action option for completed in Box Task class. ## [2.40.0] (2019-10-24) - General doc changes. ## [2.39.0] (2019-10-17) - Deprecated Batch API functionality. - Added support for [Task completion_rule](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxFile.java#L249) ## [2.38.0] (2019-09-19) - Added missing fields for File Version: trashed_by, restored_at, purged_at, purged_by. - Added support for [chunked uploads with file attributes](https://github.com/box/box-java-sdk/blob/main/doc/files.md#upload-a-large-file-in-chunks-including-attributes). ## [2.37.0] (2019-08-22) Added support for replace in multi-select metadata for [files](https://github.com/box/box-java-sdk/blob/main/doc/files.md#update-metadata) and for [folders](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#update-metadata) - Improved getting started with JWT authentication docs that can be found [here](https://github.com/box/box-java-sdk/blob/main/doc/authentication.md#server-authentication-with-jwt) ## [2.36.0] (2019-08-01) - Added support for [removing shared link](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxItem.java#L413) and fixed an issue with setting null for shared link field on BoxItem. - Added support for additional fields for Box files, folders, and web links. ## [2.35.0] (2019-07-18) - Added support for retrieving [is_external_only field](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxFile.java#L1668) for Box Files and Folders. ## [2.34.0] (2019-06-06) Added support for retrieving a [string type action for tasks](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxTask.java#L281). Please use getActionType() going forward instead of the deprecated getAction(). ## [2.33.0] (2019-05-23) - Added support for [setting can_owners_invite field](https://github.com/box/box-java-sdk/blob/1ed10d7a457e44b863ec1c9b1d0d1408fb55e1e5/src/main/java/com/box/sdk/BoxFolder.java#L1272) Thank you @Band-Aid for you pull request! Greatly Appreciated. - Fixed a bug where chunked upload was not populating the correct part size for upload part. ## [2.32.0] (2019-04-25) - Added support [setting metadata](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#set-metadata). ## [2.31.0] (2019-04-11) - Added support for [sorting folder items](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#get-a-folders-items) retrieved from a folder by ascending or descending order. ## [2.30.1] (2019-04-08) - Fixed a bug where the SDK could throw when parsing JSON containing dates using the Zulu timezone format ## [2.30.0] (2019-04-04) - Added `action_by` field to enterprise events stream. ## [2.29.0] (2019-04-01) - Added support for [sorting results returned from Box Search](https://github.com/box/box-java-sdk/blob/main/doc/search.md#search-1) - Added ability to [attach a file description upon file upload](https://github.com/box/box-java-sdk/blob/main/doc/files.md#upload-a-file) ## [2.28.1] (2019-03-07) - Fixed a bug where BoxMetadataCascadePolicy.forceApply() would not return correctly. ## [2.28.0] (2019-02-21) - Added ability for user to [retrieve an avatar](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxUser.html#getAvatar--)) for a specified user. ## [2.27.0] (2019-01-31) - Added support for Metadata Classification for [File](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFile.html#setClassification-java.lang.String...-) and [Folder](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#setClassification-java.lang.String...-) ## [2.26.0] (2019-01-17) - Added [invite_email](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxCollaboration.java#L277) field to collaboration object. - Added [is_collaboration_restricted_to_enterprise](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxFolder.java#L1104) field to folder object. - Added [status](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxTaskAssignment.java#L196) field to task assignment object. - Added ability to retrieve fields for [`BoxFile#getTasks()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFile.html#getTasks-java.lang.String...-) - Fixed bug where offset based paging would not return correctly. ## [2.25.1] (2019-01-03) - Upgraded dependencies: jose4j to v0.5.5, and bouncycastle to v1.60 ## [2.25.0] (2018-12-13) - Added functionality to allow [content streaming to Box through outputstream](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#uploadFile-com.box.UploadFileCallback-java.lang.String-). Thank you @gajarajkalburgi for the pr! ## [2.24.0] (2018-11-16) - Added `getOptionsObjects()` on `MetadataTemplate.Field` which returns both key and type. - Added functionality for [`BoxItem#getType()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxItem.html#getType--) for BoxItem. - Added functionality for [`BoxAPIConnection#BoxGlobalSettings()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxAPIConnection.html#setConnectTimeout-java.lang.String-) and [`BoxAPIConnection#BoxGlobalSettings()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxAPIConnection.html#getConnectTimeout--) as well as getting and reading the timeout for the connection. - Added functionality for [`BoxGlobalSettings#getMaxRequestAttempts()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxGlobalSettings.html#getMaxRequestAttempts--) and [`BoxGlobalSettings#setMaxRquestAttempts()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxGlobalSettings.html#setMaxRequestAttempts-java.lang.Integer-) - Fixed a bug where [`BoxLegalHoldPolicy#create()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxLegalHoldPolicy.html#create-com.box.BoxAPIConnection-java.lang.String-) was not setting the correct legal hold policy duration. ## [2.23.2] (2018-09-27) - Fixed a bug where the specified headers for batch requests were not being sent. ## [2.23.1] (2018-09-13) - Fixed a bug where too many TCP connections were being opened. Thank you @pmatte1 for implementing this fix! ## [2.23.0] (2018-08-23) - Added support for [Metadata Cascade Policy](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#create-cascade-policy-on-folder) ## [2.22.0] (2018-08-09) - Deprecated the [moveFolderToUser()](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxUser.java#L455) for Box Users. We encourage users to use [transferContent](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxUser.java#L482) going forward because idiomatically it is more correct. ## [2.21.0] (2018-07-05) - Added functionality to allow users to [set passwords on shared links](https://github.com/box/box-java-sdk/pull/623) for Box files, folders, and web links. - Fixed wrong redirect for two links in the `Getting Started` and `Quick Test` section of the README. ## [2.20.2] (2018-06-28) - Fixed a bug where customers had issues with large file uploads because they fail to parse the Retry-After header from the commit response. Reason being headers storage/lookup was case sensitive. ## [2.20.1] (2018-06-04) - Added better exception handling for JSON parse in response exception. - Fixed a bug where uploadNewVersion() was returning an empty object. ## [2.20.0] (2018-05-24) - Fixed a bug where multiple As-User headers could be set. - Added support to [test update](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/Metadata.html#test-java.lang.String-java.util.List-) for multiselect field on metadata ## [2.19.0] (2018-05-10) - Added support for enterprise admins with Box Zones purchased to have support for [Box Storage Policies and Box Storage Policy Assignments](./doc/storage_policy) - Added support to allow users to work with [multiselect metadata](./doc/files.md#get-metadata) - Added `getLogin()` method for the "login" field on the "accessible by" for BoxCollaboration.Info class. ## [2.18.0] (2018-04-30) - Fixed a bug where the the private key password should be passed into `setPrivateKetPassword()` instead of the private key. A big thank you to [breach10ck](https://github.com/breach10ck) for their pull request! - Added an additional check to ensure that the [request properties on the request object is not null in the `toString()` method](https://github.com/box/box-java-sdk/pull/595) - Added support to [fetch the content of the generated representation](./doc/files.md#get-representation-content) after it has been generated - Improved error messages for API response errors to allow for better debugging. ## [2.17.0] (2018-04-10) - Added support for assigning [Retention Policies to Metadata Templates](./doc/retention_policies.md#create-retention-policy-assignment) ## [2.16.1] (2018-03-29) - Added `CONTENT_ACCESS` to event type enum ## [2.16.0] (2018-03-22) - Added support for [user tracking codes](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxUser.Info.html#getTrackingCodes--) on the user object. - Fixed a bug where JWT authentication would fail due to improper date parsing. - Added support for setting custom headers on API connection. This allow for setting [As-User support](./doc/overview.md#as-user) and [suppressing notifications](./doc/overview.md/suppressing-notifications) support. - Changed default JWT expiration window to reduce chances of error. ## [2.15.0] (2018-03-12) - Added support for retrieving a [metadata template by ID](./doc/metadata_template.md#get-by-id) - Added support for allowing the user to [retrieve specific Collaboration fields on a Collaboration object](./doc/collaborations.md#get-a-collaborations-information) ## [2.14.1] (2018-03-01) - Reduced the number of API calls that the `EventStream` makes to fetch new events, which should help users who are running into rate limit issues. - Force support for TLSv1.1 or higher when available to improve the security of connections to the Box API - Add randomized jitter to the exponential backoff algorithm used by the SDK to improve the success rate of retried requests. ## [2.14.0] (2018-02-15) - Added support for getting and setting the `can_view_path` field on a collaboration object. - Added support for getting and setting the `tags` field on files and folders. ## [2.13.0] (2018-02-07) - Fixed an issue where all types of metadata values were being coerced to Strings. This change deprecates `Metadata#get()` in favor of type-specific methods like `Metadata#getFloat()` or a generic `Metadata#getValue()`, which returns a `JsonValue` object that represents any JSON type. See the [file metadata](./doc/files.md#get-metadata) or [folder metadata](./doc/folders.md#get-metadata) documentation for more information. ## [2.12.0] (2018-02-01) - Fixed ability to notify users or groups regarding [file collaboration](https://github.com/box/box-java-sdk/blob/main/doc/files.md#share-a-file) or [folder collaboration](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#share-a-folder) - Added [OAuth2 token creation event types](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxEvent.java#L747) - Added support for [inviting a user to another Box Enterprise](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxInvite.html) - Fixed an [OutOfMemory error in large file upload by capping the maximum number of parts that are uploaded concurrently](https://github.com/box/box-java-sdk/pull/543) ## [2.11.0] (2018-01-25) - [uploadLargeFile now returns a BoxFile object](https://github.com/box/box-java-sdk/pull/524) - [Fixed chunked upload for Box Files greater than 2GB](https://github.com/box/box-java-sdk/pull/531) - [Perform modified retry on JWT auth for when the local clock and the Box Server clock are not aligned as well as if the JWT ID has already been consumed](https://github.com/box/box-java-sdk/pull/523) - BoxFolder.search has been deprecated in favor of [BoxSearch.searchRange](https://github.com/box/box-java-sdk/blob/86b82f2be3c57e3b89ae150b5f237d410e2d4900/doc/search.md) ## [2.10.0] (2018-01-11) - [Add optional is_confirmed paramater for adding user email alias](https://github.com/box/box-java-sdk/pull/499) - Added support for [Metadata Template Delete](./doc/metadata_template#delete-a-metadata-template) ## [2.9.0] (2018-01-04) - Added option to pass file [SHA-1 hash for upload integrity](https://github.com/box/box-java-sdk/blob/main/doc/files.md#upload-a-file) - Added support for [Terms of Service](./doc/terms_of_service) endpoint - Fixed missing [webhook triggers](https://github.com/box/box-java-sdk/pull/497) - Fixed missing [event types for events enum](https://github.com/box/box-java-sdk/pull/500) - Added [modified_at timestamp to BoxComment.Info](https://github.com/box/box-java-sdk/pull/499) - Added support for [Collaboration Whitelists](./doc/collaboration_whitelists) endpoint ## [2.8.2] (2017-10-05) - Added additional check for `PrivateKeyInfo` in `BoxDeveloperEditionApiConnection` ## [2.8.1] (2017-10-05) - Added ability to [set connect and read timeout globally](https://github.com/box/box-java-sdk/pull/459) ## [2.8.0] (2017-09-07) - Added method for getting file representations - Changes to Representation object ## [2.7.0] (2017-08-30) - Added support for [Representations](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxFile.java#L445) endpoint ## [2.6.0] (2017-08-28) - Added support for [Batch](https://github.com/box/box-java-sdk/blob/575861fad0b3e67d432b5d5955d1e760b3f6444e/README.md#batchrequestexample) - Added support for [Unified Metadata](./doc/folders#get-metadata-using-unified-metadata-api) ## [2.5.0] (2017-07-28) - Added support for [Recent Items](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxRecents.java#L1) endpoint - Added support [Get All Groups By Name](https://github.com/box/box-java-sdk/blob/a1833950c18139fd9cbb4d8ee61d310c7bbedadf/src/main/java/com/box/sdk/BoxGroup.java#L143) endpoint - Added support for [Token Exchange](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxAPIConnection.java#L634) ## [2.4.0] (2017-05-02) - Support for multiput upload. New methods in BoxFolder and BoxFile support multiput upload for better performance and reliability for large files. - Single file collaborations. The BoxFile class now supports sharing individual files. - Automatic configuration for JWT auth. The Box Developer console now lets you download a JSON file of your JWT app configuration settings. You can import this file into the Java SDK to easily configure your app. ## [2.3.0] (2017-01-12) New API Endpoints: [Legal Holds](https://github.com/box/box-java-sdk/blob/main/doc/legal_holds.md) [Retention Policies](https://github.com/box/box-java-sdk/blob/main/doc/retention_policies.md) [Create Metadata Template](https://github.com/box/box-java-sdk/blob/main/doc/metadata_template.md#create-metadata-template) [Get All Metadata on File](https://github.com/box/box-java-sdk/blob/main/doc/files.md#get-all-metadata-on-file) [Get All Metadata on Folder](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#get-all-metadata-on-folder) [Get Enterprise Metadata Templates](https://github.com/box/box-java-sdk/blob/main/doc/metadata_template.md#get-enterprise-metadata-templates) [Update Group](https://github.com/box/box-java-sdk/blob/main/doc/groups.md#update-a-group) [Watermarking](https://github.com/box/box-java-sdk/blob/main/doc/watermarking.md) [Webhooks V2](https://github.com/box/box-java-sdk/blob/main/doc/webhooks.md) [WebLinks](https://github.com/box/box-java-sdk/blob/main/doc/weblinks.md) [Collections](https://github.com/box/box-java-sdk/blob/main/doc/collections.md) [BoxGroupMembership with for Paging](https://github.com/box/box-java-sdk/blob/main/doc/groups.md) [Enterprise Device Pins](https://github.com/box/box-java-sdk/blob/86b82f2be3c57e3b89ae150b5f237d410e2d4900/doc/devices.md) New Features: Transactional Authentication. Support for Box's new Transactional Auth APIs. Upload file versions with SHA1. A file's SHA1 can be passed in to BoxFile.uploadVersion(...) when uploading new versions. Get effective_access for shared links. The effective_access field is accessible through BoxSharedLink. getEffectiveAccess(). Added additional Event Types. The TASK_ASSIGNMENT_COMPLETE, TASK_ASSIGNMENT_UPDATE, TASK_CREATE, COMMENT_DELETE types are now included in the BoxEvent class. ## [2.1.0] (2016-02-22) This release includes improvements to token caching for App Users and support for additional API endpoints. New Features: ``` - App Users token caching. A token cache can now be specified in BoxDeveloperEditionAPIConnection. This allows for improved performance when using App Users authentication. - Support for retrieving download URLs. The BoxFile.getDownloadURL() method allows for retrieving a direct download URL to a file. - File thumbnails. The BoxFile.getThumbnail() method allows for downloading the [Thumbnail](https://github.com/box/box-java-sdk/blob/main/doc/files.md#get-thumbnail) for a file. ``` Bug Fixes: ``` - Getting info for a file could crash when there's no preview. Previously, an exception would be thrown if BoxFile.getInfo (BoxFile.ALL_FIELDS) was called and the file didn't have a preview available. ``` --- ### Changelog **Type:** page | **Section:** Additional Resources Changelog All notable changes to this project will be documented in this file. See standard-version for commit guidelines. 10.3.0 (2025-1… # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## 10.3.0 (2025-12-19) ### Bug Fixes - add taxonomy to Metadata Field (read) definition (box/box-openapi[#572](https://github.com/box/box-python-sdk/issues/572)) ([#1269](https://github.com/box/box-python-sdk/issues/1269)) ([7bb9bdc](https://github.com/box/box-python-sdk/commit/7bb9bdc894cb6d765a09ecbedda58b6edb9181d0)) - fix `RetryAfter` function when there's no `Retry-After` header (box/box-codegen[#903](https://github.com/box/box-python-sdk/issues/903)) ([#1244](https://github.com/box/box-python-sdk/issues/1244)) ([d7cc019](https://github.com/box/box-python-sdk/commit/d7cc019dd186ef3cdb6214a6cf1625ec49c1fd37)) ### New Features and Enhancements - add Metadata Taxonomies api (box/box-openapi[#569](https://github.com/box/box-python-sdk/issues/569)) ([#1252](https://github.com/box/box-python-sdk/issues/1252)) ([7850463](https://github.com/box/box-python-sdk/commit/7850463204ef9f7802a759ef69a3b7f4b6dd328b)) - text input validation for Box Sign (box/box-openapi[#568](https://github.com/box/box-python-sdk/issues/568)) ([#1246](https://github.com/box/box-python-sdk/issues/1246)) ([f99512f](https://github.com/box/box-python-sdk/commit/f99512fcfca75edae48bb5a1b6a1897d330f5dd3)) - Treat `nullable` fields as Optional (box/box-codegen[#906](https://github.com/box/box-python-sdk/issues/906)) ([#1256](https://github.com/box/box-python-sdk/issues/1256)) ([12c05dc](https://github.com/box/box-python-sdk/commit/12c05dcebae13a696956288f41ec55fed8a4011e)) ## 10.2.0 (2025-12-10) ### New Features and Enhancements - Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567](https://github.com/box/box-python-sdk/issues/567)) ([#1238](https://github.com/box/box-python-sdk/issues/1238)) ([66267ba](https://github.com/box/box-python-sdk/commit/66267bae7395ce2886cc4cd7504a51d22394b738)) - Support new sign request metadata (box/box-openapi[#565](https://github.com/box/box-python-sdk/issues/565)) ([#1222](https://github.com/box/box-python-sdk/issues/1222)) ([6c3d332](https://github.com/box/box-python-sdk/commit/6c3d3325a19b3217225a80c2cd5d15c7bb068494)) ## 10.1.0 (2025-11-19) ### New Features and Enhancements - Support GET enterprise configuration API (box/box-openapi[#559](https://github.com/box/box-python-sdk/issues/559)) ([#1134](https://github.com/box/box-python-sdk/issues/1134)) ([1106d32](https://github.com/box/box-python-sdk/commit/1106d325973df9704f5102538ac0130bda6e9c38)) - Support Archive API (box/box-openapi[#563](https://github.com/box/box-python-sdk/issues/563)) ([#1174](https://github.com/box/box-python-sdk/issues/1174)) ([d21ec4d](https://github.com/box/box-python-sdk/commit/d21ec4df82ab43539ff07d306cf304f86bbb0593)) ### 10.0.1 (2025-10-06) ### Bug Fixes - Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556](https://github.com/box/box-python-sdk/issues/556)) ([#1084](https://github.com/box/box-python-sdk/issues/1084)) ([f63cffe](https://github.com/box/box-python-sdk/commit/f63cffec92ccf98af21d6227328aab00fa159187)) - Make `role` parameter of update collaboration optional (box/box-openapi[#557](https://github.com/box/box-python-sdk/issues/557)) ([#1093](https://github.com/box/box-python-sdk/issues/1093)) ([5c21907](https://github.com/box/box-python-sdk/commit/5c21907869d359fdb8fe4c83317a9eca5aeffdc3)) ## 10.0.0 (2025-09-17) Introducing **`Box SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`](https://github.com/box/box-python-sdk/tree/sdk-gen) branch, `v10` will ultimately become the main branch. ### Breaking Changes - This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here](https://github.com/box/box-python-sdk/tree/sdk-gen/docs). ### What's New in v10 **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide](https://github.com/box/box-python-sdk/blob/sdk-gen/migration-guides/from-v3-to-v10.md) for details. For more information, see the [SDK versioning strategy document](https://developer.box.com/guides/tooling/sdks/sdk-versioning). Follow developer changelog for future updates. ### What’s New Compared to Python SDK Gen v1.17.0 #### New Features and Enhancements Add External User Deletion API (box/box-openapi[#550](https://github.com/box/box-python-sdk/issues/550)) ([#941](https://github.com/box/box-python-sdk/issues/941)) ([a80ad85](https://github.com/box/box-python-sdk/commit/a80ad856b3193e54272e04f01ddb025b2d9f781f)) Add missing webhook events (box/box-openapi[#554](https://github.com/box/box-python-sdk/issues/554)) ([#988](https://github.com/box/box-python-sdk/issues/988)) ([575ce0b](https://github.com/box/box-python-sdk/commit/575ce0b6d48f90db90349244414e98afe5fcbb9f)) Change names of unions (box/box-codegen[#789](https://github.com/box/box-python-sdk/issues/789)) ([#939](https://github.com/box/box-python-sdk/issues/939)) ([cf2b1d5](https://github.com/box/box-python-sdk/commit/cf2b1d5b12be0ff2453867b7d3502437283bf695)) Remove unused models from schemas (box/box-openapi[#547](https://github.com/box/box-python-sdk/issues/547)) ([#932](https://github.com/box/box-python-sdk/issues/932)) ([6ef6d63](https://github.com/box/box-python-sdk/commit/6ef6d63c37e6eccc3489a9076e0a0b0940a6e0d6)), closes [box/box-openapi#542](https://github.com/box/box-openapi/issues/542) [box/box-openapi#544](https://github.com/box/box-openapi/issues/544) [box/box-codegen#781](https://github.com/box/box-codegen/issues/781) [box/box-openapi#545](https://github.com/box/box-openapi/issues/545) For more details check [migration guide](https://github.com/box/box-python-sdk/blob/sdk-gen/migration-guides/from-box-python-sdk-gen-v1-to-box-python-sdk-v10.md) from `box-python-sdk-gen` `v1` to `box-python-sdk` `v10`. ## 3.14.0 (2025-04-09) ### New Features and Enhancements: - Add `stream_file_content` parameter to upload methods ([#890](https://github.com/box/box-python-sdk/issues/890)) ([0e63c00](https://github.com/box/box-python-sdk/commit/0e63c002ee17618c08200c12caae4bb3890b1e90)) ## 3.13.0 (2024-08-22) ### New Features and Enhancements: - Add support for get AI agent default ([#883](https://github.com/box/box-python-sdk/issues/883)) ([c1010e0](https://github.com/box/box-python-sdk/commit/c1010e0349847586a9f00046570e975ec48eb0c5)) ## 3.12.0 (2024-08-06) ### New Features and Enhancements: - add create sign request function with different required parameters ([#878](https://github.com/box/box-python-sdk/issues/878)) ([d972f54](https://github.com/box/box-python-sdk/commit/d972f54dcf9962c6b911422793a682d8f6289f9e)) - Support Box AI features ([#877](https://github.com/box/box-python-sdk/issues/877)) ([3026d2a](https://github.com/box/box-python-sdk/commit/3026d2ab9932cd07aa9ff15a3ac3c3c14d3089b0)) ## 3.11.0 (2024-06-07) ### New Features and Enhancements: - Use upload session `urls` for chunk upload ([#875](https://github.com/box/box-python-sdk/issues/875)) ([c67b03c](https://github.com/box/box-python-sdk/commit/c67b03c7d88533773d62d72f0b626031805d61eb)) ## 3.10.0 (2024-05-22) ### New Features and Enhancements: - Transition to stable status ([#872](https://github.com/box/box-python-sdk/issues/872)) ([6203606](https://github.com/box/box-python-sdk/commit/620360607a51ee302cde61401db1424c9bf48d81)) ### Bug Fixes: - Change exception type for missing location header ([#871](https://github.com/box/box-python-sdk/issues/871)) ([8c5e0ec](https://github.com/box/box-python-sdk/commit/8c5e0eca7e494baa8138dceededa2009abc1717b)) - fix annnotation of oauths access_token ([#855](https://github.com/box/box-python-sdk/issues/855)) ([804780e](https://github.com/box/box-python-sdk/commit/804780e4c8d410590fa20cdb6dd35224d59d2ec0)) - Fix retention policy integration test ([#867](https://github.com/box/box-python-sdk/issues/867)) ([8e0d640](https://github.com/box/box-python-sdk/commit/8e0d6406f26be87799838b0aa57acd62c79d59a2)) - Remove delete classification ([#861](https://github.com/box/box-python-sdk/issues/861)) ([393cfef](https://github.com/box/box-python-sdk/commit/393cfefa57e729f34221a4e5923a4a50532f4013)) - Update exception file get download URL ([#866](https://github.com/box/box-python-sdk/issues/866)) ([94dcbcd](https://github.com/box/box-python-sdk/commit/94dcbcd490d98ff19afd38c9880de8022ad2ec89)) ### 3.9.2 (2023-10-18) ### Bug Fixes: - Remove restriction to version <2 of `urllib3` library ([#851](https://github.com/box/box-python-sdk/issues/851)) ([1dcd82e](https://github.com/box/box-python-sdk/commit/1dcd82e93267bfc68e3a7f8068b3c45ab7e86daf)) ### 3.9.1 (2023-09-14) ### Bug Fixes: - do not retry creating a ZIP when response code is 202 ([#845](https://github.com/box/box-python-sdk/issues/845)) ([3f6ed4e](https://github.com/box/box-python-sdk/commit/3f6ed4e1053a494ed9f2b79828850e059d0a1617)), closes [#844](https://github.com/box/box-python-sdk/issues/844) ## 3.9.0 (2023-09-06) ### New Features and Enhancements: - adds get sign template and get sign templates methods on Client ([#835](https://github.com/box/box-python-sdk/issues/835)) ([fbc783d](https://github.com/box/box-python-sdk/commit/fbc783d5af2e75f883f1a0051613c513139f68fb)) - Support create sign request with template ID ([#834](https://github.com/box/box-python-sdk/issues/834)) ([4f11d75](https://github.com/box/box-python-sdk/commit/4f11d7596488194fc740936fe987f42864003d41)) ### Bug Fixes: - ChunkedUploader Resume Not Closing ThreadPoolExecutor Instances ([#840](https://github.com/box/box-python-sdk/issues/840)) ([f210f00](https://github.com/box/box-python-sdk/commit/f210f00ad823d7755309f2e8804641e0debf8197)) ### 3.8.1 (2023-08-01) ### Bug Fixes: - Fix JSON response validation retry strategy ([#831](https://github.com/box/box-python-sdk/issues/831)) ([69834eb](https://github.com/box/box-python-sdk/commit/69834eb4c91a5aa4bc294a9fa49ecf753979d029)) ## 3.8.0 (2023-07-25) ### New Features and Enhancements: - Support updating all fields of `collaboration` ([#829](https://github.com/box/box-python-sdk/issues/829)) ([6dc7ecc](https://github.com/box/box-python-sdk/commit/6dc7ecc6f9c94e7531c4147a3645927b85928b2c)) ### 3.7.3 (2023-07-07) ### Bug Fixes: - Stop processing data for logging when logging is disabled and cache response `json` ([#824](https://github.com/box/box-python-sdk/issues/824)) ([3079171](https://github.com/box/box-python-sdk/commit/3079171f8dfc1a4c85f8587e8ce90e8fbd826ee4)) ### 3.7.2 (2023-05-26) ### Bug Fixes: - Use the older version of `urllib3` ([#815](https://github.com/box/box-python-sdk/issues/815)) ([ee29aa3](https://github.com/box/box-python-sdk/commit/ee29aa3fcf9ac71e9866913a87414cf625c0b805)) ### 3.7.1 (2023-04-18) ### Bug Fixes: - Rename filter date parameters in legal hold creation according to the documentation ([#810](https://github.com/box/box-python-sdk/issues/810)) ([f52c66a](https://github.com/box/box-python-sdk/commit/f52c66a8a8399a776493537f692460ace2995e40)) ## 3.7.0 (2023-03-08) ### New Features and Enhancements: - Update `retention_policies` and `retention_policy_assignments` ([#803](https://github.com/box/box-python-sdk/issues/803)) ([8b72f7e](https://github.com/box/box-python-sdk/commit/8b72f7e992bce676723a40ac12bde06c8cca3bfb)) - Use multiple threading for chunked upload ([#800](https://github.com/box/box-python-sdk/issues/800)) ([506ce0d](https://github.com/box/box-python-sdk/commit/506ce0d1e72ab4eeb6c5933a32c753e232a2f624)) ### 3.6.2 (2023-02-07) ### Bug Fixes: - Retry `Connection broken` and `Connection reset` requests errors ([#794](https://github.com/box/box-python-sdk/issues/794)) ([f1a0aa4](https://github.com/box/box-python-sdk/commit/f1a0aa434369f06e80654a9f5c4b796100881aa6)) ### 3.6.1 (2023-01-09) ### Bug Fixes: - Retry CCG and JWT auth requests on connection reset error ([#790](https://github.com/box/box-python-sdk/issues/790)) ([205997d](https://github.com/box/box-python-sdk/commit/205997db9870395b9dd042854c4201338dcf925f)), closes [#789](https://github.com/box/box-python-sdk/issues/789) ## 3.6.0 (2023-01-03) ### New Features and Enhancements: - Add support marker in trash get items ([#781](https://github.com/box/box-python-sdk/issues/781)) ([e2d1846](https://github.com/box/box-python-sdk/commit/e2d1846818aeccfcba2a2f09a5cd924c9f6cd534)) - Sanitize proxy credentials ([#782](https://github.com/box/box-python-sdk/issues/782)) ([97fb5aa](https://github.com/box/box-python-sdk/commit/97fb5aa2ed72008570abb327269ecec150632af9)) ### Bug Fixes: - Fix index error when getting an empty list of user term of service statuses ([#780](https://github.com/box/box-python-sdk/issues/780)) ([23d763a](https://github.com/box/box-python-sdk/commit/23d763ac4ba592131c43eb0319929db25d041c30)) - Specify which exceptions should be retried ([#784](https://github.com/box/box-python-sdk/issues/784)) ([833cd46](https://github.com/box/box-python-sdk/commit/833cd46bafe774f19925f78600df90477bf07055)) ### 3.5.1 (2022-11-30) ### Bug Fixes: - Renew connection when Connection reset error occurs ([#771](https://github.com/box/box-python-sdk/issues/771)) ([bcaab27](https://github.com/box/box-python-sdk/commit/bcaab277c3cabba498076d066366abbaa5507904)), closes [#756](https://github.com/box/box-python-sdk/issues/756) [#757](https://github.com/box/box-python-sdk/issues/757) [#763](https://github.com/box/box-python-sdk/issues/763) [#765](https://github.com/box/box-python-sdk/issues/765) [#766](https://github.com/box/box-python-sdk/issues/766) [#770](https://github.com/box/box-python-sdk/issues/770) - Retry JWT auth when got error: required unique `jti` claim. ([#768](https://github.com/box/box-python-sdk/issues/768)) ([878e958](https://github.com/box/box-python-sdk/commit/878e958abfb01740656aaff42492777753e4c8ea)) - Update `pyjtw` dependency to work with Python 3.10 ([#772](https://github.com/box/box-python-sdk/issues/772)) ([b13c5cd](https://github.com/box/box-python-sdk/commit/b13c5cd34105d3f774d3f6d35db7aaf51dd3e247)) ## 3.5.0 (2022-09-23) ### New Features and Enhancements: - Add `redirect_url` and `declined_redirect_url` fields to Sign Request ([#752](https://github.com/box/box-python-sdk/issues/752)) ([5d1f609](https://github.com/box/box-python-sdk/commit/5d1f609ed4c2ddb24bd88ffac256a2809a012698)) - Add support for modifiable retention policies & enable deleting retention policy assignment ([#759](https://github.com/box/box-python-sdk/issues/759)) ([847301b](https://github.com/box/box-python-sdk/commit/847301b43be335365858a80420459dffaada4302)) - Support file request APIs ([#747](https://github.com/box/box-python-sdk/issues/747)) ([71895e3](https://github.com/box/box-python-sdk/commit/71895e33ff7cf339fd8e095a5393f04b86791d5a)) ### Bug Fixes: - Do not log the content of downloaded file ([#760](https://github.com/box/box-python-sdk/issues/760)) ([5d26431](https://github.com/box/box-python-sdk/commit/5d264314f949c1f4d9136efd5cf8f13dd5897c05)) - Fix closing file after chunked upload ([#761](https://github.com/box/box-python-sdk/issues/761)) ([b433692](https://github.com/box/box-python-sdk/commit/b433692ecc07d62d011785a557128c1780ea1647)) ## 3.4.0 (2022-07-06) ### New Features and Enhancements: - Add support for editable shared links for files ([#737](https://github.com/box/box-python-sdk/issues/737)) ([1396200](https://github.com/box/box-python-sdk/commit/1396200c24bf62de63f9cb7949af5997593b9fac)) - Support uploading and deleting user avatar ([#743](https://github.com/box/box-python-sdk/issues/743)) ([fe00a9e](https://github.com/box/box-python-sdk/commit/fe00a9eb3434ee14bc4f01332d54c0272ed5f2d3)) ## 3.3.0 (2022-04-28) ### New Features and Enhancements: - Add support for multiple date time formats ([#722](https://github.com/box/box-python-sdk/issues/722)) ([92364de](https://github.com/box/box-python-sdk/commit/92364de1e7c1eee1e85857546af65c307ca863a0)) ### Bug Fixes: - Add missing fields to metadata template field ([#719](https://github.com/box/box-python-sdk/issues/719)) ([9e574a3](https://github.com/box/box-python-sdk/commit/9e574a3e56f72c0e78a31ddda78bc11d36ff3516)), closes [#717](https://github.com/box/box-python-sdk/issues/717) - Upload session commit return None on 202 ([#718](https://github.com/box/box-python-sdk/issues/718)) ([86a1856](https://github.com/box/box-python-sdk/commit/86a185630e6cce8f742123c7340da08267621313)), closes [#715](https://github.com/box/box-python-sdk/issues/715) ## 3.2.0 (2022-03-11) ### New Features and Enhancements: - Add setting `disposition_at` field for files under retention ([#710](https://github.com/box/box-python-sdk/issues/710)) ([91b1373](https://github.com/box/box-python-sdk/commit/91b13730a0beef2cf2a8a8c71087b11557fa5982)) - Add support for Client Credentials Grant authentication method ([#705](https://github.com/box/box-python-sdk/issues/705)) ([d33d16d](https://github.com/box/box-python-sdk/commit/d33d16db656cb5578f057a7e24f5396d635b5361)) ### Bug Fixes: - Add missing `box_sign` object to `__all__` list ([#708](https://github.com/box/box-python-sdk/issues/708)) ([5d80481](https://github.com/box/box-python-sdk/commit/5d8048116640fa672d6a1d700a6c1111faf87bb9)) - Fix `jwt` import errors ([#711](https://github.com/box/box-python-sdk/issues/711)) ([ee7bb6f](https://github.com/box/box-python-sdk/commit/ee7bb6f1dc5aa65dbf6ffeb18ee130f765f7b49b)) ## 3.1.0 (2022-02-16) ### New Features and Enhancements: - Add support for Python 3.10 ([#692](https://github.com/box/box-python-sdk/issues/692)) ([d4aed82](https://github.com/box/box-python-sdk/commit/d4aed82831af97305bace9a4588d27b23856c306)) - Add support for Python 3.8, Python 3.9, `pypy-3.7` and `pypy-3.8`. ([#689](https://github.com/box/box-python-sdk/issues/689)) ([0aa94cc](https://github.com/box/box-python-sdk/commit/0aa94cc8a5c4db0fc204b27a60690b73c98a89cb)) - Deprecate `use_index` parameter from `MDQ` of files/folders ([#666](https://github.com/box/box-python-sdk/issues/666)) ([2595720](https://github.com/box/box-python-sdk/commit/25957204b82c878e15dc3d118505a741171e9772)) - Replace external package `mock` with Python standard library `unittest.mock` ([#697](https://github.com/box/box-python-sdk/issues/697)) ([6fd6366](https://github.com/box/box-python-sdk/commit/6fd63667aa7da4c794b4fb880d5c2949efe0073f)) - Upgrade cryptography library to the most recent version. ([#668](https://github.com/box/box-python-sdk/issues/668)) ([9c94d08](https://github.com/box/box-python-sdk/commit/9c94d0878515dc75c1f267e2fb1f189a852772b6)), closes [#667](https://github.com/box/box-python-sdk/issues/667) ### Bug Fixes: - `UploadSession.commit` returns `None` when retry limit was reached ([#696](https://github.com/box/box-python-sdk/issues/696)) ([9456fe0](https://github.com/box/box-python-sdk/commit/9456fe0124f4ac4e9c8a7bcc49039f07f310c477)) - Add missing `api_call` decorator for `create_upload_session` ([#686](https://github.com/box/box-python-sdk/issues/686)) ([3510d3a](https://github.com/box/box-python-sdk/commit/3510d3ac085767205854014ecef80fd078d71773)) - Fix chunked upload ([#673](https://github.com/box/box-python-sdk/issues/673)) ([2605fd7](https://github.com/box/box-python-sdk/commit/2605fd782396ad6e42bd11c10f846e771634b7a0)), closes [#671](https://github.com/box/box-python-sdk/issues/671) ## [3.0.1] (2022-01-26) ### Bug Fixes: Move sphinx to test requirements ([#662](https://github.com/box/box-python-sdk/pull/662)) ## [3.0.0] (2022-01-17) ### ⚠ Breaking Changes: Drop support for python 2.7 ([#645](https://github.com/box/box-python-sdk/pull/645)) Add missing parameter `stream_position` to `get_admin_events` method ([#648](https://github.com/box/box-python-sdk/pull/648)) Drop support for python 3.5 ([#654](https://github.com/box/box-python-sdk/pull/654)) Remove deprecated code using insensitive language ([#651](https://github.com/box/box-python-sdk/pull/651)) Enforcing usage of keyword-only arguments in some functions ([#656](https://github.com/box/box-python-sdk/pull/656)) ### New Features and Enhancements: Remove `six` library and `__future__` imports ([#646](https://github.com/box/box-python-sdk/pull/646)) Add type hints to method parameters ([#650](https://github.com/box/box-python-sdk/pull/650)) ### Bug Fixes: Add missing `api_call` decorators on `multiput` calls ([#653](https://github.com/box/box-python-sdk/pull/653)) Added `py.typed` file for `mypy` to recognise type hints ([#657](https://github.com/box/box-python-sdk/pull/657)) ## [2.14.0] (2021-12-08) ### New Features and Enhancements: Add `admin_logs_streaming` support for events stream ([#623](https://github.com/box/box-python-sdk/pull/623)) Add `vanity_name` parameter for creating shared link to a file or folder ([#637](https://github.com/box/box-python-sdk/pull/637)) Add getting files and file versions under retention for a retention policy assignment ([#633](https://github.com/box/box-python-sdk/pull/633)) Support base item operations for WebLink class ([#639](https://github.com/box/box-python-sdk/pull/639)) ### Bug Fixes: Limit cryptography to version <3.5.0 ([#636](https://github.com/box/box-python-sdk/pull/636)) Avoid raising 404 when a thumbnail cannot be generated for a file ([#642](https://github.com/box/box-python-sdk/pull/642)) ## [2.13.0] (2021-09-30) ### New Features and Enhancements: Sensitive language replacement ([#609](https://github.com/box/box-python-sdk/pull/609)) Add BoxSign support ([#617](https://github.com/box/box-python-sdk/pull/617)) ### Bug Fixes: Upgrade cryptography to version 3 ([#620](https://github.com/box/box-python-sdk/pull/620)) ## [2.12.1] (2021-06-16) ### Bug Fixes: Fix bug when thumbnail representations are not found ([#597](https://github.com/box/box-python-sdk/pull/597)) ## [2.12.0] (2021-04-16) ### New Features and Enhancements: Add metadata query functionality ([#574](https://github.com/box/box-python-sdk/pull/574)) Add folder lock functionality ([#581](https://github.com/box/box-python-sdk/pull/581)) Add search query support for the `include_recent_shared_links` field ([#582](https://github.com/box/box-python-sdk/pull/582)) Update `get_groups()` to use documented parameter to filter by name ([#586](https://github.com/box/box-python-sdk/pull/586)) ## [2.11.0] (2021-01-11) ### New Features and Enhancements: Deprecate and add method for getting a thumbnail ([#572](https://github.com/box/box-python-sdk/pull/572)) ## [2.10.0] (2020-10-02) ### New Features and Enhancements: Add support for `copyInstanceOnItemCopy` field for metadata templates ([#546](https://github.com/box/box-python-sdk/pull/546)) Allow creating tasks with the `action` and `completion_rule` parameters ([#544](https://github.com/box/box-python-sdk/pull/544)) Add zip functionality ([#539](https://github.com/box/box-python-sdk/pull/539)) ### Bug Fixes: Fix bug with updating a collaboration role to owner ([#536](https://github.com/box/box-python-sdk/pull/536)) Allow ints to be passed in as item IDs ([#530](https://github.com/box/box-python-sdk/pull/530)) ## [2.9.0] (2020-06-23) - Fix exception handling for OAuth - Fix path parameter sanitization ## [2.8.0] (2020-04-24) - Added support for token exchange using shared links - Added the ability to pass in a SHA1 value for file uploads ## [2.7.1] (2020-01-21) Fixed bug in `_get_retry_request_callable` introduced in release 2.7.0 which caused chunked uploads to fail ## [2.7.0] (2020-01-16) Fixed bug in `get_admin_events` function which caused errors when the optional `event_types` parameter was omitted. - Add marker based pagination for listing users. Added support for more attribute parameters when uploading new files and new versions of existing files. Combined preflight check and lookup of accelerator URL into a single request for uploads. - Fixed JWT retry logic so a new JTI claim is generated on each retry. Fixed bug where JWT authentication requests returned incorrect error codes. Fixed retry logic so when a `Retry-After` header is passed back from the API, the SDK waits for the amount of time specified in the header before retrying. ## [2.6.1] (2019-10-24) - Added `api_call` decorator for copy method. ## [2.6.0] (2019-08-29) Added a new get events function with created_before, created_after, and event_type parameters ## [2.5.0] (2019-06-20) Allowed passing `None` to clear configurable_permission field in the add_member() method. ## [2.4.1] (2019-05-16) - Patch release for issues with v2.4.0. ## [2.4.0] (2019-05-16) Added ability to set metadata on a [file](https://github.com/box/box-python-sdk/blob/main/docs/usage/files.md#set-metadata) or a [folder](https://github.com/box/box-python-sdk/blob/main/docs/usage/folders.md#set-metadata) ## [2.3.2] (2019-03-29) - Fixing an issue in v2.3.1 where package could not be installed. ## [2.3.1] (2019-03-29) - Fixing an issue in v2.3.0 where package could not be installed. ## [2.3.0] (2019-03-28) Added the ability to set file description upon upload Added support for basic authenticated proxy and unauthenticated proxy ## [2.2.2] (2019-03-14) - Updated requests-toolbelt dependency restriction. ## [2.2.1] (2019-02-15) - Fixing an issue in v2.2.0 where package could not be installed. ## [2.2.0] (2019-02-14) Added abilty for user to retrieve an avatar for a user. Changed retry strategy to use exponential backoff with randomized jitter. ## [2.1.0] (2019-02-07) Added ability for user to chunk upload files and resume uploads for interrupted uploads. Added ability to verify webhook message. Added ability for user to add metadata classification to [files](https://github.com/box/box-python-sdk/blob/main/docs/usage/files.md#set-a-classification) and [folders](https://github.com/box/box-python-sdk/blob/main/docs/usage/folders.md#set-a-classification). Bugfix where calling `.response_object()` method on an API object could throw. ## [2.0.0] ### ⚠ Breaking Changes Python 2.6 is no longer supported. Python 3.3 is no longer supported. `client.search()` now returns a `Search` object that exposes a `query()` method to call the Search API. Use `client.search().query(**search_params)` instead of `client.search(**search_params)`. `client.get_memberships(...)` has a change in signature. The limit and offset parameters have swapped positions to keep consistency with the rest of the SDK. `client.groups(...)` has been changed to `client.get_groups`. The limit and offset parameters have swapped positions. The `unshared_at` parameter for `item.create_shared_link(...)` and `file.get_shared_link_download_url(...)` now takes an [https://tools.ietf.org/html/rfc3339#section-5.8](https://tools.ietf.org/html/rfc3339#section-5.8) `unicode` string instead of a `datetime.date`. Users migrating from v1.x can pass the value of `date.isoformat()` instead of the `date` object itself. `Events.get_events(...)` now returns a list of `Event` instances rather than a list of `dict` representing events. `Event` inherits from `Mapping` but will not have all the same capabilities as `dict`. Your code is affected if you use `Events.get_events(...)` and expect a list of `dict` rather than a list of `Mapping`. For example, if you use `__setitem__` (`event['key'] = value`), `update()`, `copy()`, or if your code depends on the `str` or `repr` of the `Event`. Use of `__getitem__` (`event['key']`), `get()`, and other `Mapping` methods is unaffected. See [https://docs.python.org/2.7/library/collections.html#collections-abstract-base-classes](https://docs.python.org/2.7/library/collections.html#collections-abstract-base-classes) for methods supported on `Mapping` instances. Migration: If you still need to treat an `Event` as a `dict`, you can get a deepcopy of the original `dict` using the new property on `BaseAPIJSONObject`, `response_object`. `LoggingNetwork` has been removed. Logging calls are now made from the `DefaultNetwork` class. In addition, the logging format strings in this class have changed in a way that will break logging for any applications that have overridden any of these strings. They now use keyword format placeholders instead of positional placeholders. All custom format strings will now have to use the same keyword format placeholders. Though this is a breaking change, the good news is that using keyword format placeholders means that any future changes will be automatically backwards-compatibile (as long as there aren't any changes to change/remove any of the keywords). `File.update_contents()` and `File.update_contents_with_stream()` now correctly return a `File` object with the correct internal JSON structure. Previously it would return a `File` object where the file JSON is hidden inside `file['entries'][0]`. This is a bugfix, but will be a breaking change for any clients that have already written code to handle the bug. Comparing two objects (e.g. a `File` and a `Folder`) that have the same Box ID but different types with `==` will now correctly return `False`. The following methods now return iterators over the entire collection of returned objects, rather than a single page: - `client.users()` - `client.groups()` - `client.search().query()` - `folder.get_items()` Since `folder.get_items()` now returns an iterator, `folder.get_items_limit_offset()` and `folder.get_items_marker()` have been removed. To use marker based paging with `folder.get_items()`, pass the `use_marker=True` parameter and optionally specify a `marker` parameter to begin paging from that point in the collection. Additionally, `group.membership()` has been renamed to `group.get_memberships()`, and returns an iterator of membership objects. This method no longer provides the option to return tuples with paging information. The `Translator` class has been reworked; `translator.get(...)` still returns the constructor for the object class corresponding to the passed in type, but `translator.translate(...)` now takes a `Session` and response object directly and produces the translated object. This method will also translate any nested objects found. This change obviates the need for `GroupMembership` to have a custom constructor; it now uses the default `BaseObject` constructor. ### Features All publicly documented API endpoints and parameters should now be supported by the SDK Added more flexibility to the object translation system: Can create non-global `Translator` instances, which can extend or not-extend the global default `Translator`. - Can initialize `BoxSession` with a custom `Translator`. Can register custom subclasses on the `Translator` which is associated with a `BoxSession` or a `Client`. All translation of API responses now use the `Translator` that is referenced by the `BoxSession`, instead of directly using the global default `Translator`. - Nested objects are now translated by `translator.translate()` When the `auto_session_renewal` is `True` when calling any of the request methods on `BoxSession`, if there is no access token, `BoxSession` will renew the token before making the request. This saves an API call. Auth objects can now be closed, which prevents them from being used to request new tokens. This will also revoke any existing tokens (though that feature can be disabled by passing `revoke=False`). Also introduces a `closing()` context manager method, which will auto-close the auth object on exit. Various enhancements to the `JWTAuth` baseclass: The `authenticate_app_user()` method is renamed to `authenticate_user()`, to reflect that it may now be used to authenticate managed users as well. See the method docstring for details. `authenticate_app_user()` is now an alias of `authenticate_user()`, in order to not introduce an unnecessary backwards-incompatibility. The `user` argument to `authenticate_user()` may now be either a user ID string or a `User` instance. Before it had to be a `User` instance. The constructor now accepts an optional `user` keyword argument, which may be a user ID string or a `User` instance. When this is passed, `authenticate_user()` and can be called without passing a value for the `user` argument. More importantly, this means that `refresh()` can be called immediately after construction, with no need for a manual call to `authenticate_user()`. Combined with the aforementioned improvement to the `auto_session_renewal` functionality of `BoxSession`, this means that authentication for `JWTAuth` objects can be done completely automatically, at the time of first API call. The constructor now supports passing the RSA private key in two different ways: by file system path (existing functionality), or by passing the key data directly (new functionality). The `rsa_private_key_file_sys_path` parameter is now optional, but it is required to pass exactly one of `rsa_private_key_file_sys_path` or `rsa_private_key_data`. Document that the `enterprise_id` argument to `JWTAuth` is allowed to be `None`. `authenticate_instance()` now accepts an `enterprise` argument, which can be used to set and authenticate as the enterprise service account user, if `None` was passed for `enterprise_id` at construction time. Authentications that fail due to the expiration time not falling within the correct window of time are now automatically retried using the time given in the Date header of the Box API response. This can happen naturally when the system time of the machine running the Box SDK doesn't agree with the system time of the Box API servers. Added an `Event` class. Moved `metadata()` method to `Item` so it's now available for `Folder` as well as `File`. The `BaseAPIJSONObject` baseclass (which is a superclass of all API response objects) now supports `__contains__` and `__iter__`. They behave the same as for `Mapping`. That is, `__contains__` checks for JSON keys in the object, and `__iter__` yields all of the object's keys. Added a `RecentItem` class. Added `client.get_recent_items()` to retrieve a user's recently accessed items on Box. Added support for the `can_view_path` parameter when creating new collaborations. Added `BoxObjectCollection` and subclasses `LimitOffsetBasedObjectCollection` and `MarkerBasedObjectCollection` to more easily manage paging of objects from an endpoint. These classes manage the logic of constructing requests to an endpoint and storing the results, then provide `__next__` to easily iterate over the results. The option to return results one by one or as a `Page` of results is also provided. Added a `downscope_token()` method to the `Client` class. This generates a token that has its permissions reduced to the provided scopes and for the optionally provided `File` or `Folder`. Added methods for configuring `JWTAuth` from config file: `JWTAuth.from_settings_file` and `JWTAuth.from_settings_dictionary`. Added `network_response` property to `BoxOAuthException`. API Configuration can now be done per `BoxSession` instance. ### Other - Added extra information to `BoxAPIException`. - Added `collaboration()` method to `Client`. Reworked the class hierarchy. Previously, `BaseEndpoint` was the parent of `BaseObject` which was the parent of all smart objects. Now `BaseObject` is a child of both `BaseEndpoint` and `BaseAPIJSONObject`. `BaseObject` is the parent of all objects that are a part of the REST API. Another subclass of `BaseAPIJSONObject`, `APIJSONObject`, was created to represent pseudo-smart objects such as `Event` that are not directly accessible through an API endpoint. Added `network_response_constructor` as an optional property on the `Network` interface. Implementations are encouraged to override this property, and use it to construct `NetworkResponse` instances. That way, subclass implementations can easily extend the functionality of the `NetworkResponse`, by re-overriding this property. This property is defined and used in the `DefaultNetwork` implementation. Move response logging to a new `LoggingNetworkResponse` class (which is made possible by the aforementioned `network_response_constructor` property). Now the SDK decides whether to log the response body, based on whether the caller reads or streams the content. Add more information to the request/response logs from `LoggingNetwork`. - Add logging for request exceptions in `LoggingNetwork`. Bugfix so that the return value of `JWTAuth.refresh()` correctly matches that of the auth interface (by returning a tuple of ((access token), (refresh token or None)), instead of just the access token). In particular, this fixes an exception in `BoxSession` that always occurred when it tried to refresh any `JWTAuth` object. Fixed an exception that was being raised from `ExtendableEnumMeta.__dir__()`. - CPython 3.6 support. - Increased required minimum version of six to 1.9.0. ## [1.5.3] (2016-05-26) Bugfix so that `JWTAuth` opens the PEM private key file in `'rb'` mode. ## [1.5.2] (2016-05-19) Bugfix so that `OAuth2` always has the correct tokens after a call to `refresh()`. ## [1.5.1] (2016-03-23) Added a `revoke()` method to the `OAuth2` class. Calling it will revoke the current access/refresh token pair. ## [1.5.0] (2016-03-17) Added a new class, `LoggingClient`. It's a `Client` that uses the `LoggingNetwork` class so that requests to the Box API and its responses are logged. Added a new class, `DevelopmentClient` that combines `LoggingClient` with the existing `DeveloperTokenClient`. This client is ideal for exploring the Box API or for use when developing your application. Made the `oauth` parameter to `Client` optional. The constructor now accepts new parameters that it will use to construct the `OAuth2` instance it needs to auth with the Box API. Changed the default User Agent string sent with requests to the Box API. It is now 'box-python-sdk-<version>'. Box objects have an improved `__repr__`, making them easier to identify during debugging sessions. Box objects now implement `__dir__`, making them easier to explore. When created with a Box API response, these objects will now include the API response fields as attributes. ## [1.4.2] (2016-02-23) Make sure that `__all__` is only defined once, as a list of `str`. Some programs (e.g. PyInstaller) naively parse __init__.py files, and if `__all__` is defined twice, the second one will be ignored. This can cause `__all__` to appear as a list of `unicode` on Python 2. Create wheel with correct conditional dependencies and license file. Change the `license` meta-data from the full license text, to just a short string, as specified in [1][2]. [1] <[https://docs.python.org/3.5/distutils/setupscript.html#additional-meta-data](https://docs.python.org/3.5/distutils/setupscript.html#additional-meta-data)> [2] <[https://www.python.org/dev/peps/pep-0459/#license](https://www.python.org/dev/peps/pep-0459/#license)> Include entire test/ directory in source distribution. test/__init__.py was previously missing. Update documentation. ## [1.4.1] (2016-02-11) - Files now support getting a direct download url. ## [1.4.0] (2016-01-05) - Added key id parameter to JWT Auth. ## [1.3.3] (2016-01-04) ### Bugfixes Fixed import error for installations that don't have redis installed. Fixed use of `raw_input` in the developer token auth for py3 compatibility. ## [1.3.3] (2015-12-22) Added a new class, `DeveloperTokenClient` that makes it easy to get started using the SDK with a Box developer token. It uses another new class, `DeveloperTokenAuth` for auth. ### Bugfixes Added limit, offset, and filter_term parameters to `client.users()` to match up with the Box API. ## [1.3.2] (2015-11-16) - Fix `boxsdk.util.log.setup_logging()` on Python 3. ## [1.3.1] (2015-11-06) Add requests-toolbelt to setup.py (it was accidentally missing from 1.3.0). ## [1.3.0] (2015-11-05) - CPython 3.5 support. - Support for cryptography>=1.0 on PyPy 2.6. - Travis CI testing for CPython 3.5 and PyPy 2.6.0. - Added a logging network class that logs requests and responses. Added new options for auth classes, including storing tokens in Redis and storing them on a remote server. - Stream uploads of files from disk. ## [1.2.2] (2015-07-22) - The SDK now supports setting a password when creating a shared link. ## [1.2.1] (2015-07-22) ### Bugfixes Fixed an ImportError for installs that didn't install the [jwt] extras. ## [1.2.0] (2015-07-13) Added support for Box Developer Edition. This includes JWT auth (auth as enterprise or as app user), and `create_user` functionality. - Added support for setting shared link expiration dates. - Added support for setting shared link permissions. Added support for 'As-User' requests. See [https://developer.box.com/en/guides/authentication/oauth2/as-user/](https://developer.box.com/en/guides/authentication/oauth2/as-user/) Improved support for accessing shared items. Items returned from the `client.get_shared_item` method will remember the shared link (and the optionally provided shared link password) so methods called on the returned items will be properly authorized. ## [1.1.7] (2015-05-28) - Add context_info from failed requests to BoxAPIException instances. ### Bugfixes `Item.remove_shared_link()` was trying to return an incorrect (according to its own documentation) value, and was also attempting to calculate that value in a way that made an incorrect assumption about the API response. The latter problem caused invocations of the method to raise TypeError. The method now handles the response correctly, and correctly returns type `bool`. ## [1.1.6] (2015-04-17) - Added support for the Box accelerator API for premium accounts. ## [1.1.5] (2015-04-03) - Added support for preflight check during file uploads and updates. ## [1.1.4] (2015-04-01) - Added support to the search endpoint for metadata filters. Added support to the search endpoint for filtering based on result type and content types. ## [1.1.3] (2015-03-26) Added support for the /shared_items endpoint. `client.get_shared_item` can be used to get information about a shared link. See [https://developers.box.com/docs/#shared-items](https://developers.box.com/docs/#shared-items) ## [1.1.2] (2015-03-20) ### Bugfixes Certain endpoints (e.g. search, get folder items) no longer raise an exception when the response contains items that are neither files nor folders. ## [1.1.1] (2015-03-11) A minor change to namespacing. The `OAuth2` class can now be imported directly from `boxsdk`. Demo code has been updated to reflect the change. ## [1.1.0] (2015-03-02) ### Features The SDK now supports Box metadata. See the metadata docs for more information. The object paging API has been improved. SDK extensions that need fine-grained control over when the next "page" of API results will be fetched can now do that. ### Example Code The example code has been improved to be more robust and to work with all Python versions supported by the SDK (CPython 2.6-2.7, CPython 3.3-3.4, and PyPy). The example code has an example on how to use the new metadata feature. - The README has improved code examples. ### Bugfixes Oauth2 redirect URIs containing non-ASCII characters are now supported. --- ### Changelog **Type:** page | **Section:** Additional Resources Changelog All notable changes to this project will be documented in this file. See standard-version for commit guidelines. 10.5.0 (2025-1… # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## 10.5.0 (2025-12-19) ### Bug Fixes - add taxonomy to Metadata Field (read) definition (box/box-openapi[#572](https://github.com/box/box-windows-sdk-v2/issues/572)) ([#1344](https://github.com/box/box-windows-sdk-v2/issues/1344)) ([03aea9b](https://github.com/box/box-windows-sdk-v2/commit/03aea9b2aee4ff98d91d0ebdb477e8ebaa3ee22d)) - Fix convert to long in CSharp (box/box-codegen[#911](https://github.com/box/box-windows-sdk-v2/issues/911)) ([#1353](https://github.com/box/box-windows-sdk-v2/issues/1353)) ([aacee77](https://github.com/box/box-windows-sdk-v2/commit/aacee77366a76d18afbd1e7c19600ee4ddd21b54)) ### New Features and Enhancements - add Metadata Taxonomies api (box/box-openapi[#569](https://github.com/box/box-windows-sdk-v2/issues/569)) ([#1330](https://github.com/box/box-windows-sdk-v2/issues/1330)) ([e054a76](https://github.com/box/box-windows-sdk-v2/commit/e054a76609c710a92d998ee1b8622edf495b7bc0)) - text input validation for Box Sign (box/box-openapi[#568](https://github.com/box/box-windows-sdk-v2/issues/568)) ([#1324](https://github.com/box/box-windows-sdk-v2/issues/1324)) ([9710ac9](https://github.com/box/box-windows-sdk-v2/commit/9710ac93223a18959fa30b49c1fcdc4913645dbb)) - Treat `nullable` fields as Optional (box/box-codegen[#906](https://github.com/box/box-windows-sdk-v2/issues/906)) ([#1334](https://github.com/box/box-windows-sdk-v2/issues/1334)) ([0c53bda](https://github.com/box/box-windows-sdk-v2/commit/0c53bda54c30b9afd0b48f7e22a6b7c8a09a770c)) ## 10.4.0 (2025-12-12) ### Bug Fixes - fix `RetryAfter` function when there's no Retry-After header (box/box-codegen[#903](https://github.com/box/box-windows-sdk-v2/issues/903)) ([#1320](https://github.com/box/box-windows-sdk-v2/issues/1320)) ([5030d1c](https://github.com/box/box-windows-sdk-v2/commit/5030d1c5747afd8f85a54fcccf5695ca5f3ea836)) - remove duplicate optional tag (box/box-codegen[#898](https://github.com/box/box-windows-sdk-v2/issues/898)) ([#1312](https://github.com/box/box-windows-sdk-v2/issues/1312)) ([17b2851](https://github.com/box/box-windows-sdk-v2/commit/17b285197cf276870ec2f3f881e4e03b28d915cc)) ### New Features and Enhancements - Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567](https://github.com/box/box-windows-sdk-v2/issues/567)) ([#1315](https://github.com/box/box-windows-sdk-v2/issues/1315)) ([b4af239](https://github.com/box/box-windows-sdk-v2/commit/b4af2395e45a9a94083e689ff8c30c2c22bda669)) ## 10.3.0 (2025-12-08) ### Bug Fixes - fix string extension in dotnet (box/box-codegen[#899](https://github.com/box/box-windows-sdk-v2/issues/899)) ([#1307](https://github.com/box/box-windows-sdk-v2/issues/1307)) ([8c46af4](https://github.com/box/box-windows-sdk-v2/commit/8c46af45398c2002b5de8475672923bac524e4d1)) ### New Features and Enhancements - Support long polling event for dotnet (box/box-codegen[#893](https://github.com/box/box-windows-sdk-v2/issues/893)) ([#1298](https://github.com/box/box-windows-sdk-v2/issues/1298)) ([e35cd67](https://github.com/box/box-windows-sdk-v2/commit/e35cd67fe29d9af969ac88dee30896303d4fdc79)) - Support new sign request metadata (box/box-openapi[#565](https://github.com/box/box-windows-sdk-v2/issues/565)) ([#1294](https://github.com/box/box-windows-sdk-v2/issues/1294)) ([da19f7c](https://github.com/box/box-windows-sdk-v2/commit/da19f7cdd4df6537acec50463330944e9d6d4632)) ## 10.2.0 (2025-11-19) ### New Features and Enhancements - Support Archive API (box/box-codegen[#865](https://github.com/box/box-windows-sdk-v2/issues/865)) ([#1266](https://github.com/box/box-windows-sdk-v2/issues/1266)) ([bca0473](https://github.com/box/box-windows-sdk-v2/commit/bca0473d9ff02f286f3face267a30c2ab17d5b7b)) - Support GET enterprise configuration API (box/box-openapi[#559](https://github.com/box/box-windows-sdk-v2/issues/559)) ([#1198](https://github.com/box/box-windows-sdk-v2/issues/1198)) ([426aaed](https://github.com/box/box-windows-sdk-v2/commit/426aaed8418baf6cbd31dbe884aa91ce9bb7ef52)) - Include `pdb` files when packing .net root project (box/box-codegen[#859](https://github.com/box/box-windows-sdk-v2/issues/859)) ([#1169](https://github.com/box/box-windows-sdk-v2/issues/1169)) ([8b7e7c8](https://github.com/box/box-windows-sdk-v2/commit/8b7e7c89f9f533ee09a8c096afd141abbbc72080)) - Use generated `RetryStrategy` for retrying requests (box/box-codegen[#872](https://github.com/box/box-windows-sdk-v2/issues/872)) ([#1232](https://github.com/box/box-windows-sdk-v2/issues/1232)) ([5567fef](https://github.com/box/box-windows-sdk-v2/commit/5567feff459b91e7b018bda5def60ad45548599f)) ## 10.1.0 (2025-10-06) ### Bug Fixes - Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556](https://github.com/box/box-windows-sdk-v2/issues/556)) ([#1147](https://github.com/box/box-windows-sdk-v2/issues/1147)) ([c41a444](https://github.com/box/box-windows-sdk-v2/commit/c41a4449a27be4484f986c3260950ae863c1285c)) - Make `role` parameter of update collaboration optional (box/box-openapi[#557](https://github.com/box/box-windows-sdk-v2/issues/557)) ([#1156](https://github.com/box/box-windows-sdk-v2/issues/1156)) ([8247918](https://github.com/box/box-windows-sdk-v2/commit/824791817bd4c65770f2ef65bb7b0eb3b48b892b)) ### New Features and Enhancements - Handle Dictionary with object values deserialization (box/box-codegen[#850](https://github.com/box/box-windows-sdk-v2/issues/850)) ([#1144](https://github.com/box/box-windows-sdk-v2/issues/1144)) ([611b474](https://github.com/box/box-windows-sdk-v2/commit/611b47424ff8773b9aabfb772a65f0ebca754e9e)) ## 10.0.0 (2025-09-17) Introducing **`Box SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`](https://github.com/box/box-windows-sdk-v2/tree/sdk-gen) branch, `v10` will ultimately become the main branch. ### Breaking Changes - This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here](https://github.com/box/box-windows-sdk-v2/tree/sdk-gen/docs). ### What's New in v10 **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide](https://github.com/box/box-windows-sdk-v2/blob/sdk-gen/migration-guides/from-v5-to-v10.md) for details. For more information, see the [SDK versioning strategy document](https://developer.box.com/guides/tooling/sdks/sdk-versioning). Follow developer changelog for future updates. ### What’s New Compared to Dotnet SDK Gen v1.12.0 #### ⚠ BREAKING CHANGES - Change names of unions (box/box-openapi[#549](https://github.com/box/box-windows-sdk-v2/issues/549)) ([#1007](https://github.com/box/box-windows-sdk-v2/issues/1007)) ([fcef4ec](https://github.com/box/box-windows-sdk-v2/commit/fcef4ecab38435fb4a79e2db8fcf2c5ad931986b)) - Remove unused models from schemas (box/box-openapi[#547](https://github.com/box/box-windows-sdk-v2/issues/547)) ([#999](https://github.com/box/box-windows-sdk-v2/issues/999)) ([ffcb488](https://github.com/box/box-windows-sdk-v2/commit/ffcb4888e6ad52f10028f92c49b5d919cb1ac620)) #### Bug Fixes - Fix `net462` debug build ([#1020](https://github.com/box/box-windows-sdk-v2/issues/1020)) ([04f8343](https://github.com/box/box-windows-sdk-v2/commit/04f8343c200e45ebe65bd29f03f55a44e76bcbde)) - Rename external user deletion method (box/box-codegen[#796](https://github.com/box/box-windows-sdk-v2/issues/796)) ([#1024](https://github.com/box/box-windows-sdk-v2/issues/1024)) ([13928c5](https://github.com/box/box-windows-sdk-v2/commit/13928c559bd3e97d060c48997b05ca384333d03d)) #### New Features and Enhancements - Add External User Deletion API (box/box-openapi[#550](https://github.com/box/box-windows-sdk-v2/issues/550)) ([#1009](https://github.com/box/box-windows-sdk-v2/issues/1009)) ([2178bc8](https://github.com/box/box-windows-sdk-v2/commit/2178bc87c8b724598616e99f0a528c7b21ff12c6)) - Add missing webhook events (box/box-openapi[#554](https://github.com/box/box-windows-sdk-v2/issues/554)) ([#1068](https://github.com/box/box-windows-sdk-v2/issues/1068)) ([7fe3b99](https://github.com/box/box-windows-sdk-v2/commit/7fe3b99cae1cf5be9ad3ec7bec54c97f198fd8c7)) - Add Net Framework 462 support for `v10` (box/box-codegen[#773](https://github.com/box/box-windows-sdk-v2/issues/773)) ([#986](https://github.com/box/box-windows-sdk-v2/issues/986)) ([67366c7](https://github.com/box/box-windows-sdk-v2/commit/67366c7274faa5c758490d393605c76220aa6a79)) - Allow injecting custom decryption mechanism for `jwt` ([#974](https://github.com/box/box-windows-sdk-v2/issues/974)) ([b877355](https://github.com/box/box-windows-sdk-v2/commit/b877355493b60dc6f9c1a576927d6e0c62ec27f3)) For more details check [migration guide](https://github.com/box/box-windows-sdk-v2/blob/sdk-gen/migration-guides/from-dotnet-sdk-gen-v1-to-box-windows-sdk-v10.md) from `box-dotnet-sdk-gen` `v1` to `box-windows-sdk-v2` `v10`. ## 5.8.0 (2024-07-22) ### New Features and Enhancements: - add support for AI ([#965](https://github.com/box/box-windows-sdk-v2/issues/965)) ([a9e130a](https://github.com/box/box-windows-sdk-v2/commit/a9e130a99cf9862f9b50178a6188b2820f9f2c32)) ### Bug Fixes: - Bump `System.IdentityModel.Tokens.Jwt` dependency version to `v6.35.0` ([#962](https://github.com/box/box-windows-sdk-v2/issues/962)) ([6e47237](https://github.com/box/box-windows-sdk-v2/commit/6e472378e2fccea2db67bf5ef0eb017a31491703)), closes [#960](https://github.com/box/box-windows-sdk-v2/issues/960) [#961](https://github.com/box/box-windows-sdk-v2/issues/961) - remove `Microsoft.AspNetCore.StaticFiles` and `System.Web` dependencies ([#964](https://github.com/box/box-windows-sdk-v2/issues/964)) ([2c8eedc](https://github.com/box/box-windows-sdk-v2/commit/2c8eedc91c473aca52249aad443345471ca7eafc)) ### 5.7.1 (2024-06-28) ### Bug Fixes: - Add missing enum values to `BoxSortBy` ([#953](https://github.com/box/box-windows-sdk-v2/issues/953)) ([1f89bb0](https://github.com/box/box-windows-sdk-v2/commit/1f89bb047442dcdc9045aeff1c3d6aadf61e2856)), closes [#952](https://github.com/box/box-windows-sdk-v2/issues/952) - Add missing fields of `EventSource` ([#956](https://github.com/box/box-windows-sdk-v2/issues/956)) ([138eda5](https://github.com/box/box-windows-sdk-v2/commit/138eda516ad59f08968d88b04e9bb06df3c397f2)) - do not recreate Random each time ([#945](https://github.com/box/box-windows-sdk-v2/issues/945)) ([d03b1ce](https://github.com/box/box-windows-sdk-v2/commit/d03b1ce65d4077e2895acfce3bc286ea501669aa)), closes [#944](https://github.com/box/box-windows-sdk-v2/issues/944) [#944](https://github.com/box/box-windows-sdk-v2/issues/944) [#944](https://github.com/box/box-windows-sdk-v2/issues/944) [#944](https://github.com/box/box-windows-sdk-v2/issues/944) ## 5.7.0 (2024-02-27) ### New Features and Enhancements: - add marker-based pagination version of `GetFolderItems` ([#936](https://github.com/box/box-windows-sdk-v2/issues/936)) ([f877a8f](https://github.com/box/box-windows-sdk-v2/commit/f877a8f9105d65a3e3ca459fcbf4a1bb653ff0f3)) - Support sign request signer group ID ([#938](https://github.com/box/box-windows-sdk-v2/issues/938)) ([096a098](https://github.com/box/box-windows-sdk-v2/commit/096a09805b189c591289e77ae5f8a8e6f1b466f1)) ### Bug Fixes: - Remove delete classification ([#932](https://github.com/box/box-windows-sdk-v2/issues/932)) ([fb59489](https://github.com/box/box-windows-sdk-v2/commit/fb594897850ad9daacf75cab702f3765cc7168c0)) ### 5.6.1 (2023-11-29) ### Bug Fixes: - support object value in `BoxConflictErrorContextInfo` ([#930](https://github.com/box/box-windows-sdk-v2/issues/930)) ([496f758](https://github.com/box/box-windows-sdk-v2/commit/496f758c3436b1834188078027b7305ca6a98fce)) ## 5.6.0 (2023-09-25) ### New Features and Enhancements: - Support `iframeable_embed_url` for sign request ([#925](https://github.com/box/box-windows-sdk-v2/issues/925)) ([e9de994](https://github.com/box/box-windows-sdk-v2/commit/e9de994cea97afcc1c3bc52ddf1cc023b9ee731c)) ## 5.5.0 (2023-09-20) ### New Features and Enhancements: - Add shared link header support in file and folder managers ([#923](https://github.com/box/box-windows-sdk-v2/issues/923)) ([ffbfc72](https://github.com/box/box-windows-sdk-v2/commit/ffbfc72289c70cdd91ea500326944a40b89993e3)) ## 5.4.0 (2023-09-07) ### New Features and Enhancements: - Support Sign Templates and new Sign Request statuses ([#920](https://github.com/box/box-windows-sdk-v2/issues/920)) ([78580fb](https://github.com/box/box-windows-sdk-v2/commit/78580fbd3de553273970376b96bc28c7c5614a97)) ## 5.3.0 (2023-09-04) ### New Features and Enhancements: - add `attachment` content type to `SignRequestSigner` ([#913](https://github.com/box/box-windows-sdk-v2/issues/913)) ([ad612ff](https://github.com/box/box-windows-sdk-v2/commit/ad612ffc7821a9ecbc180e3dbeefe16d3e397820)) ### Bug Fixes: - replace deprecated `BouncyCastle` library ([#909](https://github.com/box/box-windows-sdk-v2/issues/909)) ([f00f2af](https://github.com/box/box-windows-sdk-v2/commit/f00f2af9c5277b42e6a62060c1b0229ecff0203e)) ### 5.2.2 (2023-05-23) ### Bug Fixes: - catch exception when .net core version cannot be determined ([#906](https://github.com/box/box-windows-sdk-v2/issues/906)) ([e3be209](https://github.com/box/box-windows-sdk-v2/commit/e3be209b20a5c323f547d7634663883613959180)) ### 5.2.1 (2023-04-18) ### Bug Fixes: - Catch all exceptions when getting User Agent header ([#901](https://github.com/box/box-windows-sdk-v2/issues/901)) ([75d8874](https://github.com/box/box-windows-sdk-v2/commit/75d887470698a5f312610cebd58be58aee7eaa9b)) ## 5.2.0 (2023-03-14) ### New Features and Enhancements: - add `Id` to `MetadataTemplateField` ([#890](https://github.com/box/box-windows-sdk-v2/issues/890)) ([b7fe214](https://github.com/box/box-windows-sdk-v2/commit/b7fe2149e1a0ade8573b497b7bb36e9f3c4f4a82)) - add `start_date_field` and `description` to retention policies ([#888](https://github.com/box/box-windows-sdk-v2/issues/888)) ([100b722](https://github.com/box/box-windows-sdk-v2/commit/100b722ce4909395c00b527677564f37a61ec2cb)) - add configurable `JWTAudience` claim ([#897](https://github.com/box/box-windows-sdk-v2/issues/897)) ([50219fd](https://github.com/box/box-windows-sdk-v2/commit/50219fdfd553d6335b6f0b4341719b09680c4ba0)) - add shared link support to `GetFolderItemsAsync` ([#892](https://github.com/box/box-windows-sdk-v2/issues/892)) ([0eba85c](https://github.com/box/box-windows-sdk-v2/commit/0eba85c693763472c51fe81cbc43222305e9eefb)) ### Bug Fixes: - Use fixed value of `aud` field in `JWT` claim ([#896](https://github.com/box/box-windows-sdk-v2/issues/896)) ([8c9982d](https://github.com/box/box-windows-sdk-v2/commit/8c9982d160ec4806c796ee2621b1811232ea59c1)) ## 5.1.0 (2023-01-17) ### New Features and Enhancements: - `BoxCCGAuth` add User and Admin clients factory methods without initial token ([#883](https://github.com/box/box-windows-sdk-v2/issues/883)) ([c1337fc](https://github.com/box/box-windows-sdk-v2/commit/c1337fc9d765bf7d4bc1757ea832bec92a602f76)) ## 5.0.0 (2023-01-12) ### ⚠ BREAKING CHANGES - upgrade .net framework to 4.6.2 (#881) - remove deprecated methods (#881) - remove `use_index` references (#881) - return proper object from `GetFileVersionsUnderRetentionForAssignmentAsync`(#881) ### New Features and Enhancements: - upgrade .net framework to 4.6.2 ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([f1989aa](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569)), closes [#863](https://github.com/box/box-windows-sdk-v2/issues/863) - remove deprecated methods ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([f1989aa](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569)), closes [#874](https://github.com/box/box-windows-sdk-v2/issues/874) - remove `use_index` references ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([f1989aa](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569)), closes [#870](https://github.com/box/box-windows-sdk-v2/issues/870) ### Bug Fixes: - Added pagination option to `IBoxFilesManager#ViewVersionsAsync` ([#869](https://github.com/box/box-windows-sdk-v2/issues/869)) ([2324495](https://github.com/box/box-windows-sdk-v2/commit/232449531440227a0c8b3489ceda813fe4f4a73f)), closes [#866](https://github.com/box/box-windows-sdk-v2/issues/866) - return proper object from `GetFileVersionsUnderRetentionForAssignmentAsync` ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([f1989aa](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569)), closes [#875](https://github.com/box/box-windows-sdk-v2/issues/875) ## 4.6.0 (2022-10-18) ### New Features and Enhancements: - Add `redirect_url` and `declined_redirect_url` to Sign Request ([#853](https://github.com/box/box-windows-sdk-v2/issues/853)) ([5ef2f18](https://github.com/box/box-windows-sdk-v2/commit/5ef2f18985d8c3b8e7c0cdba5709785bfb1d5f34)) - Add support for modifiable retention policies & enable deleting retention policy assignment ([#856](https://github.com/box/box-windows-sdk-v2/issues/856)) ([564904f](https://github.com/box/box-windows-sdk-v2/commit/564904fa2ce0b1881a2f07b80cc3bb3e648310d0)) ## 4.5.0 (2022-08-24) ### New Features and Enhancements: - Add `content-type` field to sign request ([#850](https://github.com/box/box-windows-sdk-v2/issues/850)) ([054d3e1](https://github.com/box/box-windows-sdk-v2/commit/054d3e1a5f44b6a4a0292e8f9444266b2de0fff0)) - expose `effective_access` in `BoxSharedLink` [#843](https://github.com/box/box-windows-sdk-v2/issues/843) ([d84ddd4](https://github.com/box/box-windows-sdk-v2/commit/d84ddd48aac489ecdd1d9dc740a7672cb064b0ca)) ### Bug Fixes: - fix null reference exception when it's not possible to get `runtime` version from the assembly ([#851](https://github.com/box/box-windows-sdk-v2/issues/851)) ([77046fb](https://github.com/box/box-windows-sdk-v2/commit/77046fb0c1ce80b6e7e2dc30058ed275e46e990c)) - replace infinite retries with exponential backoff strategy in file representations ([#835](https://github.com/box/box-windows-sdk-v2/issues/835)) ([f2a5713](https://github.com/box/box-windows-sdk-v2/commit/f2a57136078de8b1fc59ec2c4a9e98c062d9d19b)) ## 4.4.0 (2022-06-14) ### New Features and Enhancements: - add `can_edit` field to `SharedLink` ([#831](https://github.com/box/box-windows-sdk-v2/issues/831)) ([e0d4197](https://github.com/box/box-windows-sdk-v2/commit/e0d4197070db0dbd947f4a51a6bbb1e01c0b0cdf)) - add `version_number` to `BoxFileVersion` ([#820](https://github.com/box/box-windows-sdk-v2/issues/820)) ([f174358](https://github.com/box/box-windows-sdk-v2/commit/f174358973caefc9262df480208341fd8233dc7f)) - add upload and delete support for Avatar API ([#829](https://github.com/box/box-windows-sdk-v2/issues/829)) ([4dcb84a](https://github.com/box/box-windows-sdk-v2/commit/4dcb84ade78d6bd0bc621ff2ed7f5f886486858a)) ### Bug Fixes: - Fix initialization of `BoxAPIException` object ([#828](https://github.com/box/box-windows-sdk-v2/issues/828)) ([a298f01](https://github.com/box/box-windows-sdk-v2/commit/a298f01187f84200825ec6ed4748fe8bbd717d11)) - properly dispose response on exception ([#819](https://github.com/box/box-windows-sdk-v2/issues/819)) ([8415bd3](https://github.com/box/box-windows-sdk-v2/commit/8415bd3dbe42910b99f99535247a26f8d8e645c1)) ### 4.3.1 (2022-04-19) ### Bug Fixes: - simplify base `urls` usage ([#815](https://github.com/box/box-windows-sdk-v2/issues/815)) ([f8e7344](https://github.com/box/box-windows-sdk-v2/commit/f8e73447afa5c0a893c3c4ace922fc360a376f66)) ## 4.3.0 (2022-04-01) ### New Features and Enhancements: - add `SourceLink` support for Core project ([#795](https://github.com/box/box-windows-sdk-v2/issues/795)) ([a9cbede](https://github.com/box/box-windows-sdk-v2/commit/a9cbedece2ffb4f832be880bebf35b715c9cb28b)) ### Bug Fixes: - add missing enum to string parsing in several places ([#813](https://github.com/box/box-windows-sdk-v2/issues/813)) ([e370282](https://github.com/box/box-windows-sdk-v2/commit/e3702826216132dfe1fb061af95a8d9700f114d4)) - properly cast response when uploading a new file version using session ([#810](https://github.com/box/box-windows-sdk-v2/issues/810)) ([73d877f](https://github.com/box/box-windows-sdk-v2/commit/73d877ff679b5999ea50cdfa68f14b0e2169ea65)) ## 4.2.0 (2022-02-10) ### Bug Fixes: - correctly pass null when rolling out user from the enterprise ([#792](https://github.com/box/box-windows-sdk-v2/issues/792)) ([c85c573](https://github.com/box/box-windows-sdk-v2/commit/c85c5735865b7dd97ffa1428a8f57d2edff6811b)) - Creating BoxAuthenticationFailedException no longer throws an exception ([#790](https://github.com/box/box-windows-sdk-v2/issues/790)) ([55a706e](https://github.com/box/box-windows-sdk-v2/commit/55a706e4091271aa55208a260b2f4f96e1527698)) - Null Argument Exception in AutoPaginate ([#666](https://github.com/box/box-windows-sdk-v2/issues/666)) ([c61f08c](https://github.com/box/box-windows-sdk-v2/commit/c61f08cc02d5c95ff71ef700e97393a0dc3dc890)) ### New Features and Enhancements: - add admin_logs_streaming support ([#797](https://github.com/box/box-windows-sdk-v2/issues/797)) ([a775e1e](https://github.com/box/box-windows-sdk-v2/commit/a775e1e5c7696a1e5f82b5dc7edbed8eb09f640d)) - add Client Credentials Grant auth support ([#799](https://github.com/box/box-windows-sdk-v2/issues/799)) ([b8a64ca](https://github.com/box/box-windows-sdk-v2/commit/b8a64ca3887298feccef5185f6bfec4c3771b5a9)) - add disposition_at field to the File object ([#793](https://github.com/box/box-windows-sdk-v2/issues/793)) ([2766a91](https://github.com/box/box-windows-sdk-v2/commit/2766a914fad1eb40371cd4430b3450360088b331)) - add possibility to set auth token uri in BoxConfig ([#794](https://github.com/box/box-windows-sdk-v2/issues/794)) ([ae8cd8b](https://github.com/box/box-windows-sdk-v2/commit/ae8cd8b91dd91b8a786e53ff5b3501d2700686a4)) - deprecate index_name in ExecuteMetadataQuery ([#800](https://github.com/box/box-windows-sdk-v2/issues/800)) ([6a6a0e4](https://github.com/box/box-windows-sdk-v2/commit/6a6a0e4a0e41ec70ec33acacba00bee6c7ee881f)) ## 4.1.0 (2021-12-14) ### Bug Fixes: - add missing configureAwait(false) when awaiting to prevent deadlocks ([#775](https://github.com/box/box-windows-sdk-v2/issues/775)) ([b16267e](https://github.com/box/box-windows-sdk-v2/commit/b16267e8f3dca5396e87be660e30a1e9405d8139)) ### New Features and Enhancements: - add configurable Timeout for BoxClient ([#779](https://github.com/box/box-windows-sdk-v2/issues/779)) ([ac842ed](https://github.com/box/box-windows-sdk-v2/commit/ac842ed4ba1a2dfe499706524441bc6ae3b3c192)) - add file request api ([#777](https://github.com/box/box-windows-sdk-v2/issues/777)) ([1098f75](https://github.com/box/box-windows-sdk-v2/commit/1098f75983e2d784521f13b8d53df0e55d03203b)) - add vanity_name to SharedLink ([#782](https://github.com/box/box-windows-sdk-v2/issues/782)) ([00a1e26](https://github.com/box/box-windows-sdk-v2/commit/00a1e265569d76c2c9593aa259202d7febef629c)) ## 4.0.0 (2021-11-02) ### Breaking changes: - Extract interfaces for BoxClient and Managers to improve testability ([#603](https://github.com/box/box-windows-sdk-v2/pull/603)) - Add BoxConfigBuilder and make BoxConfig immutable ([#737](https://github.com/box/box-windows-sdk-v2/pull/737)) - Expose tasks from async methods ([#742](https://github.com/box/box-windows-sdk-v2/pull/742)) - Use DateTimeOffset instead of DateTime ([#749](https://github.com/box/box-windows-sdk-v2/pull/749)) - Rework returned exceptions ([#753](https://github.com/box/box-windows-sdk-v2/pull/753)) - Upgrade .NET Standard to 2.0 ([#755](https://github.com/box/box-windows-sdk-v2/pull/755)) ### New Features and Enhancements: - Add ability to get files under retention for assignment and file versions under retention for assignment ([#734](https://github.com/box/box-windows-sdk-v2/pull/734)) - Add `is_collaboration_restricted_to_enterprise` flag support for `Folder` update ([#732](https://github.com/box/box-windows-sdk-v2/pull/732)) - Replace insensitive language ([#738](https://github.com/box/box-windows-sdk-v2/pull/738)) - Add new, easier to use method for create terms of service user status ([#740](https://github.com/box/box-windows-sdk-v2/pull/740)) - Allow sort and direction parameter to be passed in when getting trashed items ([#754](https://github.com/box/box-windows-sdk-v2/pull/754)) - Add support for Task completion_rule field ([#758](https://github.com/box/box-windows-sdk-v2/pull/758)) - Add BoxSign API support ([#765](https://github.com/box/box-windows-sdk-v2/pull/765)) ### Bug Fixes: - Fix `Cannot access a closed Stream.Request` exception during upload ([#739](https://github.com/box/box-windows-sdk-v2/pull/739)) ([#757](https://github.com/box/box-windows-sdk-v2/pull/757)) ## 3.26.0 [2021-04-01] **New Features and Enhancements:** - Add filter fields to get file version retentions ([#717](https://github.com/box/box-windows-sdk-v2/pull/717)) - Add support for search param to get shared link items ([#721](https://github.com/box/box-windows-sdk-v2/pull/721)) - Add folder lock functionality ([#725](https://github.com/box/box-windows-sdk-v2/pull/725)) ## 3.25.0 [2020-10-19] **New Features and Enhancements:** - Add support for filtering when getting Groups (#703) - Add zip functionality (#700) - Deprecate one of the overloaded `ExecuteMetadataQueryAsync()` methods (#699) - Add support for `copyInstanceOnItemCopy` field for metadata templates (#698) **Bug Fixes:** - Fix bug with JWT Authentication automatic retry (#697) ## 3.24.0 [2020-07-21] - Add path parameter sanitization - Add support for the classification field for Files and Folders - Fix bug with notification email field deserializing for `BoxUser` - Add `fields` parameter for metadata query - Add ability to set a request timeout for `FoldersManager.UpdateInformationAsync()` and `UsersManager.MoverUserFolderAsync()` ## 3.23.0 [2020-05-12] - Add ability to get and set a notification email address for a user - Fix deadlock issue for JWT authentication in UI elements - Add support for the uploader display name field for Files and File Versions ## 3.22.0 [2020-02-25] - Fixed Authentication Request Retries - Added the ability to query Box items based on their metadata. The method to do so is `MetadataManager.ExecuteMetadataQueryAsync()`. - Added `TrashedAt` field to `BoxItem` objects (file, folder, weblink). - Added marker based pagination for get users methods - Updated retry logic to retry on 503 status codes returned by the API - Provide better details for debugging, if the HttpClient used to make API requests times out ## 3.21.0 [2019-12-05] - Added `fields` parameter to `UsersManager.GetUserInformationAsync()` - Added `ExternalAppUserId` property to `BoxUser` model - Added the ability to set the `TrackingCodes` property when updating or creating a user (thanks @Cpcrook!) ## 3.20.0 [2019-09-19] - Added missing fields for File Version object. ## 3.19.0 [2019-08-29] - Added `FILE_VERSION_RESTORE` constant to Admin Event. - Added action_by field to Enterprise Event. - Audited missing fields on BoxFile and BoxFolder objects. - Better error handling and messaging for errors pertaining to OAuth2 error responses. ## 3.18.0 [2019-06-20] Added `sort` and `direction` parameters to `FoldersManager.GetFolderItemsAsync()` to enable sorting the folder items returned - Added a new `SearchManager.QueryAsync()` method with correct types for file size filter parameters - Deprecated the `SearchManager.SearchAsync()` method, which is superseded by `SearchManager.QueryAsync()` - Added support for setting the `IsExternalCollabRestricted` parameter when creating and updating Users Added a `WebProxy` property to `BoxConfig` instances, which can be used to manually set the network proxy used by the SDK ## 3.17.0 [2019-05-09] - Fixed the encoding of dates in the query parameters for Events and Search endpoints - Deprecated `FilesManager.DownloadStreamAsync()` and introduced a replacement method with correct parameter types for byte offsets: `FilesManager.DownloadAsync()` ## 3.16.0 [2019-04-29] - Added `sort` and `direction` parameters to `client.SearchManager.SearchAsync()` to control sort order - Added `extension` parameter to `client.FilesManager.GetThumbnailAsync()` to control which thumbnail format is returned (thanks @guilmori!) - Fixed a bug where query string parameters were not correctly encoded Added `SetFileMetadataAsync()` and `SetFolderMetadataAsync()` methods to `client.MetadataManager` to set metadata keys and values, overwriting existing values for the provided keys. - Automatically retry most API calls when the API responds with a transient error status code ## 3.15.0 [2019-03-28] - Added support for passing custom IBoxService to BoxJWTAuth constructor. ## 3.14.1 [2019-03-07] - Removed unnecessary package.config from sample files. ## 3.14.0 [2019-02-28] - Added trace ID to API response exception message. - Fix deserialization of translated task assignment status. ## 3.13.1 [2019-02-21] - Fixed an issue where some objects related to Events did not have their `.Id` property correctly deserialized from JSON ## 3.13.0 [2019-02-14] Added the `.InviteEmail` property to `BoxCollaboration` objects, which displays the email address for the invited user in a pending collaboration - Added `.Timezone`, `.IsExternalCollabRestricted`, `.Tags`, and `.Hostname` properties to `BoxUser` objects ## 3.12.0 [2019-02-07] Added `client.FilesManager.GetCollaborationsCollectionAsync()` and deprecated `client.FilesManager.GetCollaborationsAsync()` to enable paging through the entire collection of collaborations on a file Added `client.WebLinksManager.CopyAsync()`, `client.WebLinksManager.CreateSharedLinkAsync()`, and `client.WebLinksManager.DeleteSharedLinkAsync()` - Added `client.UsersManager.GetUserAvatarAsync()` for retrieving a user's avatar image ## 3.11.0 [2019-01-17] - Added support for reading and writing more Group fields - Fixed an issue where the `UnsharedAt` field of a shared link could not be set to `null` - Fixed renaming a file on new version upload - Added the ability to set the content modification timestamp on file version upload - Fixed issues around reading the source of an event when the source item is a web link ## 3.10.0 [2018-12-14] - Added support for Metadata Cascade Policies ## 3.9.3 [2018-09-04] - Strong named the assembly. ## 3.9.2 [2018-06-14] - Added support for [setting flag](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Models/Request/BoxFolderRequest.cs#L39) allowing non owners of a folder to invite collaborators. ## 3.9.1 [2018-06-07] - Fixed bug where Xamarin applications would run out of connections ## 3.9.0 [2018-05-10] - Added support for Storage Policies ## 3.8.0 [2018-04-30] - Fixed an issue where users could not create `BoxClient` on Xamarin - Added `File` property to `BoxLock` objects in events - Added `MetadataManager.DeleteMetadataTemplate(string scope, string template)` for deleting a Metadata template - Made API URLs modifiable in `BoxConfig` - Improved API response error objects/messages ## 3.7.0 [2018-04-10] - Added support for assigning a Retention Policy to a metadata template - Added `CONTENT_ACCESS` event type to enum ## 3.6.0 [2018-03-27] - Fixed an issue where a "Security protocol not supported" exception could be thrown on MacOS - Added `client.FilesManager.GetRepresentationContentAsync()` for fetching a stream over representation contents - Fixed parsing of some `Source` objects on `BoxEvent` objects ## 3.5.2 [2018-03-21] - Switched to exponential backoff when the SDK receives a rate limit or server error response. - Force support for TLSv1.1 or higher when available to improve the security of connections to the Box API. - Perform modified retry on JWT auth for when the local clock and the Box Server clock are not aligned as well as if the JWT ID has already been consumed. - Made `name` parameter optional on `RestoreTrashedAsync()`. ## 3.4.2 [2018-01-31] - Deprecated `uploadFileVersionUsingSessionAsync()`(which returned just a Box File Version) in favor of `uploadNewVersionUsingSessionAsync()`(which returns the entire Box File object containing the Box File Version). - Added support for OAuth2 access token creation type to the AdminEventTypesEnum - Added `ExpiresAt` param to `BoxCollaborationRequest`. ## 3.4.1 [2018-01-09] - Added support for [Collaboration Whitelist](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxCollaborationWhitelistManager.cs) endpoint - Added [Event Types Enum](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Config/Constants.cs#L287) - Fixed deserialization issue with BoxRepresentationStatus (#429) ## 3.3.0 [2017-11-22] - Added support for [Terms of Service](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxTermsOfServiceManager.cs) endpoint - Added support for [Metadata Template ID](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxMetadataManager.cs#L175) endpoint - Added missing fields for Folder Model (#414) ## 3.2.0 [2017-10-04] - Added support for [Representations](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxFilesManager.cs#L1216) endpoint - Added support for [Chunked Upload New File Version](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxFilesManager.cs#L423) - Fixed BoxEventsManager DateTime formatter (#400) ## 3.1.0 [2017-08-18] - Added Unified Metadata Support (#379) ## 3.0.0 [2017-07-28] - Major version bump to 3, targeting net45 - Upgrading the whole sln to vs2017 - Added support for [Recents](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxRecentItemsManager.cs#L1) endpoint - New operation on [Metadata](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxMetadataManager.cs#L1) endpoint - Progress on [Chunked Upload New File](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxFilesManager.cs#L463) - Minor bug fixes --- ### Changelog **Type:** page | **Section:** Additional Resources Changelog All notable changes to this project will be documented in this file. See standard-version for commit guidelines. 10.3.0 (2025-1… # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## 10.3.0 (2025-12-19) ### Bug Fixes - add taxonomy to Metadata Field (read) definition (box/box-openapi[#572](https://github.com/box/box-ios-sdk/issues/572)) ([#1335](https://github.com/box/box-ios-sdk/issues/1335)) ([3dae5b0](https://github.com/box/box-ios-sdk/commit/3dae5b0335474a8b2a01f41d5ca71e21d0d77366)) - fix `RetryAfter` function when there's no `Retry-After` header (box/box-codegen[#903](https://github.com/box/box-ios-sdk/issues/903)) ([#1313](https://github.com/box/box-ios-sdk/issues/1313)) ([52a72ad](https://github.com/box/box-ios-sdk/commit/52a72ad706de7b9079df55d5be5dd9e1fab247c3)) ### New Features and Enhancements - add Metadata Taxonomies api (box/box-openapi[#569](https://github.com/box/box-ios-sdk/issues/569)) ([#1321](https://github.com/box/box-ios-sdk/issues/1321)) ([20497cc](https://github.com/box/box-ios-sdk/commit/20497cce040703560a686b5640b943fb3f363f0d)) - text input validation for Box Sign (box/box-openapi[#568](https://github.com/box/box-ios-sdk/issues/568)) ([#1315](https://github.com/box/box-ios-sdk/issues/1315)) ([7ffe641](https://github.com/box/box-ios-sdk/commit/7ffe641fda1a0a3ffe5a3eded0c8cafc840bb76f)) - Treat `nullable` fields as Optional (box/box-codegen[#906](https://github.com/box/box-ios-sdk/issues/906)) ([#1325](https://github.com/box/box-ios-sdk/issues/1325)) ([af828ea](https://github.com/box/box-ios-sdk/commit/af828ea1d2585b3d117035722028f28a2ad3dcbc)) ## 10.2.0 (2025-12-10) ### Bug Fixes - Remove duplicate optional wrapping (box/box-codegen[#898](https://github.com/box/box-ios-sdk/issues/898)) ([#1301](https://github.com/box/box-ios-sdk/issues/1301)) ([0fff45e](https://github.com/box/box-ios-sdk/commit/0fff45ed3139ffebaafc9af4113bbb61d7fd3945)) ### New Features and Enhancements - Remove `confidence_score` and `include_confidence_score` from AI extract (box/box-openapi[#567](https://github.com/box/box-ios-sdk/issues/567)) ([#1305](https://github.com/box/box-ios-sdk/issues/1305)) ([702de7b](https://github.com/box/box-ios-sdk/commit/702de7b8bba3e423b749b9cf11a5bbb77fc1ad41)) - Support new sign request metadata (box/box-openapi[#565](https://github.com/box/box-ios-sdk/issues/565)) ([#1285](https://github.com/box/box-ios-sdk/issues/1285)) ([d541f12](https://github.com/box/box-ios-sdk/commit/d541f128badac0929d586fe2de2f8e2a2c5a786b)) ## 10.1.0 (2025-11-20) ### New Features and Enhancements - Support GET enterprise configuration API (box/box-openapi[#559](https://github.com/box/box-ios-sdk/issues/559)) ([#1179](https://github.com/box/box-ios-sdk/issues/1179)) ([936edf7](https://github.com/box/box-ios-sdk/commit/936edf7532765dfe3c0ccb7175966ee4ec265cf3)) - Support Archive API (box/box-openapi[#563](https://github.com/box/box-ios-sdk/issues/563)) ([#1238](https://github.com/box/box-ios-sdk/issues/1238)) ([a2662e3](https://github.com/box/box-ios-sdk/commit/a2662e3bd088956769ed95d588e71623d0537c40)) ### 10.0.1 (2025-10-06) ### Bug Fixes - Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556](https://github.com/box/box-ios-sdk/issues/556)) ([#1128](https://github.com/box/box-ios-sdk/issues/1128)) ([3e9a78c](https://github.com/box/box-ios-sdk/commit/3e9a78ce710b0161e0912d1ee6af0b7758875fbc)) - Make `role` parameter of update collaboration optional (box/box-openapi[#557](https://github.com/box/box-ios-sdk/issues/557)) ([#1138](https://github.com/box/box-ios-sdk/issues/1138)) ([3fc5dc9](https://github.com/box/box-ios-sdk/commit/3fc5dc9a62bd0cabc8987d56c0d63b94fa7ef14d)) ## 10.0.0 (2025-09-17) Introducing **`Box iOS SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`](https://github.com/box/box-ios-sdk/tree/sdk-gen) branch, `v10` will ultimately become the main branch. ### Breaking Changes - This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here](https://github.com/box/box-ios-sdk/tree/sdk-gen/docs). ### What's New in v10 **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide](https://github.com/box/box-ios-sdk/blob/sdk-gen/migration-guides/from-v5-to-v10.md) for details. For more information, see the [SDK versioning strategy document](https://developer.box.com/guides/tooling/sdks/sdk-versioning). Follow developer changelog for future updates. ### What’s New Compared to Box Swift SDK Gen v0.6.3 ### New Features and Enhancements - Add External User Deletion API (box/box-codegen[#550](https://github.com/box/box-ios-sdk/issues/969)) ([74571fb](https://github.com/box/box-ios-sdk/commit/74571fb6675d0ff90d0ec4ef2baf7113816093f8)) - Add missing webhook events (box/box-openapi[#554](https://github.com/box/box-ios-sdk/issues/554)) ([#1048](https://github.com/box/box-ios-sdk/issues/1048)) ([b8bf1ad](https://github.com/box/box-ios-sdk/commit/b8bf1add360119f70a626f663cd810f9598ec794)) - Retry requests for network errors in Swift (box/box-codegen[#820](https://github.com/box/box-ios-sdk/issues/820)) ([#1051](https://github.com/box/box-ios-sdk/issues/1051)) ([ba21450](https://github.com/box/box-ios-sdk/commit/ba214507b37d2a842bcf044b5b4392b442486d6f)) For more details check [migration guide](https://github.com/box/box-ios-sdk/blob/sdk-gen/migration-guides/from-box-swift-sdk-gen-v0-to-box-ios-sdk-v10.md) from `box-swift-sdk-gen` `v0` to `box-ios-sdk` `v10`. ## 5.6.0 (2024-04-05) ### New Features and Enhancements - Add privacy manifest files ([#924](https://github.com/box/box-ios-sdk/issues/924)) ([cbef168](https://github.com/box/box-ios-sdk/commit/cbef168bb872941899be26116c647ac29f5dd44b)) - Add support for `visionOS` ([#916](https://github.com/box/box-ios-sdk/issues/916)) ([a05b243](https://github.com/box/box-ios-sdk/commit/a05b2433f1b2d0c1ec72f946e0706d03a4548703)) - Add support for additional fields in `SignRequest` ([#919](https://github.com/box/box-ios-sdk/issues/919)) ([36f464c](https://github.com/box/box-ios-sdk/commit/36f464c23a161f5d0fcc6858c3615d884ce8ee07)) - Make fields from `TokenInfo` publicly available ([#920](https://github.com/box/box-ios-sdk/issues/920)) ([eb26f47](https://github.com/box/box-ios-sdk/commit/eb26f47bbde6749f44f149e95b3610e41c16d2f2)) ## 5.5.0 (2023-08-08) ### New Features and Enhancements - Add missing values in `SignRequestSignerInputContentType` and `SignRequestStatus` along with the tests ([#907](https://github.com/box/box-ios-sdk/issues/907)) ([56a8250](https://github.com/box/box-ios-sdk/commit/56a82500c0abe648825d8300979601a25f792c84)) ### Bug Fixes - Identify iPhone Simulator on Apple Silicon ([#902](https://github.com/box/box-ios-sdk/issues/902)) ([7731a7f](https://github.com/box/box-ios-sdk/commit/7731a7f434add74e163a76511fe1e2a3f26517f7)) - Make code compatible with macOS. ([#900](https://github.com/box/box-ios-sdk/issues/900)) ([3b0016e](https://github.com/box/box-ios-sdk/commit/3b0016e44e674db0ea429273c03e5a29177372bf)) - Remove use of deprecated string scanner API. ([#901](https://github.com/box/box-ios-sdk/issues/901)) ([af5f0e5](https://github.com/box/box-ios-sdk/commit/af5f0e52d184fbd27f56d972fb93b3e543547773)) ### 5.4.2 (2023-04-19) ### Bug Fixes - An emoty string `nextMarker` should be treated as end-of-paging. ([#893](https://github.com/box/box-ios-sdk/issues/893)) ([49c17de](https://github.com/box/box-ios-sdk/commit/49c17de588fcffcd2d151ce9047ebc09965f80ce)) ### 5.4.1 (2023-02-24) ### Bug Fixes - Fix `listAssignments` and `assign` methods in `RetentionPolicyModule` ([#886](https://github.com/box/box-ios-sdk/issues/886)) ([b668888](https://github.com/box/box-ios-sdk/commit/b668888f35136dd1239526b70cc31a10bdd04744)) ## 5.4.0 (2022-11-08) ### New Features and Enhancements - Add `content_type` field to Sign Requests signer ([#871](https://github.com/box/box-ios-sdk/issues/871)) ([1ec5b01](https://github.com/box/box-ios-sdk/commit/1ec5b0149f01cd3a18f5cba39b77e01678655932)) - Add `redirect_url` and `declined_redirect_url` to Sign Request ([#870](https://github.com/box/box-ios-sdk/issues/870)) ([f94d988](https://github.com/box/box-ios-sdk/commit/f94d98862d2fdb2603f4684b963d29d04e0fdb3d)) - Add support for `sign` webhook triggers ([#875](https://github.com/box/box-ios-sdk/issues/875)) ([994bfaf](https://github.com/box/box-ios-sdk/commit/994bfaf3ead983f5014808f6c9e5ffe167ab8e42)) - Added method to remove retention policy assignment ([#873](https://github.com/box/box-ios-sdk/issues/873)) ([c5f146c](https://github.com/box/box-ios-sdk/commit/c5f146c960bb1f940418975078d83fb63ff3bdec)) - Added support for Modifiable Retention Policies ([#872](https://github.com/box/box-ios-sdk/issues/872)) ([e2b7a17](https://github.com/box/box-ios-sdk/commit/e2b7a178c6592c9f7d1e7ce691c215680b3f45d0)) ## 5.3.0 (2022-08-19) ### New Features and Enhancements - add `version_number` to `FileVersion` ([#853](https://github.com/box/box-ios-sdk/issues/853)) ([ac81667](https://github.com/box/box-ios-sdk/commit/ac81667ea409cbbe3de9be0c316c630ec6fbc2f5)) - Add support for async API in `FoldersModule` ([#851](https://github.com/box/box-ios-sdk/issues/851)) ([58b9dde](https://github.com/box/box-ios-sdk/commit/58b9dde412eddc76915c99b960702f4af95b62a4)) - Add support for file request API ([#867](https://github.com/box/box-ios-sdk/issues/867)) ([ec7813e](https://github.com/box/box-ios-sdk/commit/ec7813e31706c08aaaeac75debdba8d7802786cb)) - Add support for upload and delete Avatar API ([#863](https://github.com/box/box-ios-sdk/issues/863)) ([1e967f5](https://github.com/box/box-ios-sdk/commit/1e967f5a3eaafbeb894cf8289032ad8ce8664266)) - Add support of Editable Shared Link ([#861](https://github.com/box/box-ios-sdk/issues/861)) ([bc6ea18](https://github.com/box/box-ios-sdk/commit/bc6ea18bf2e10bebeb62401a55001139f05c76df)) - Expose `send()` method public in `BoxClient` ([#843](https://github.com/box/box-ios-sdk/issues/843)) ([23caaca](https://github.com/box/box-ios-sdk/commit/23caaca5b6fe8ec1b23470193bc011a62c66d49f)) ### Bug Fixes - Respect Content-Type coming from custom headers ([#841](https://github.com/box/box-ios-sdk/issues/841)) ([a7c69a7](https://github.com/box/box-ios-sdk/commit/a7c69a73c6142d4b82c718d2d311098dd2b70250)) ### 5.2.1 (2022-04-22) ### Bug Fixes - Expose fields from `BoxResponse` for custom API calls ([#833](https://github.com/box/box-ios-sdk/issues/833)) ([bae1536](https://github.com/box/box-ios-sdk/commit/bae1536236a22de198281012b0ee43c84b0e3485)) ## 5.2.0 (2022-03-18) ### New Features and Enhancements - Add `disposition_at` field to the `File` object ([#814](https://github.com/box/box-ios-sdk/issues/814)) ([3c90df0](https://github.com/box/box-ios-sdk/commit/3c90df038b9f490a9d38af85404fa1d6ddcd5d0d)) - Add support for Client Credentials Grant authentication method ([#821](https://github.com/box/box-ios-sdk/issues/821)) ([f6d7542](https://github.com/box/box-ios-sdk/commit/f6d75424e8c0d91517e3ffb8df67f77ad3f2374b)) ## 5.1.0 (2022-01-17) ### New Features and Enhancements - Allow to customize URL for the `OAuth2` authorization page ([#811](https://github.com/box/box-ios-sdk/issues/811)) ([1901d29](https://github.com/box/box-ios-sdk/commit/1901d296a2be4b0f2eef25eda06928aebc81de9a)) - **Events:** Add support for `admin_logs_streaming` stream type ([#800](https://github.com/box/box-ios-sdk/issues/800)) ([0a3118e](https://github.com/box/box-ios-sdk/commit/0a3118ef95c2eb42b0080d0352784849e85eb422)) - **RetentionPolicy:** New API for get files and file versions under retention ([#807](https://github.com/box/box-ios-sdk/issues/807)) ([38327f0](https://github.com/box/box-ios-sdk/commit/38327f09a92dba7827e1866940a643d624757762)) - **SharedLink:** add support for `vanity_name` ([#799](https://github.com/box/box-ios-sdk/issues/799)) ([3ea6eb2](https://github.com/box/box-ios-sdk/commit/3ea6eb2a1c2b713fd0769e93a2dc4ee51da695fd)) ### Bug Fixes - **SignRequest:** Fix encoding `date_value` to `yyyy-mm-dd` format in `prefillTag` ([#806](https://github.com/box/box-ios-sdk/issues/806)) ([4f902a4](https://github.com/box/box-ios-sdk/commit/4f902a47482de55ec69b5522e6cf5affd653b4c8)) ## 5.0.0 (2021-10-28) ### ⚠ BREAKING CHANGES - Update PagingIterator to return pages and simplify logic ([#737](https://github.com/box/box-ios-sdk/pull/737)) - Remove insensitive language field `collaborationWhiteList` in BoxClient. Use `collaborationAllowList` instead. ([#790](https://github.com/box/box-ios-sdk/pull/790)) ### New Features and Enhancements - Replace insensitive event types ([#785](https://github.com/box/box-ios-sdk/pull/785)) - Add SignAPI support ([#792](https://github.com/box/box-ios-sdk/pull/792)) ## 4.4.0 (2021-04-20) ### New Features and Enhancements - Add support for search param to get shared link items ([#756](https://github.com/box/box-ios-sdk/pull/756)) - Add support for folder lock functionality ([#759](https://github.com/box/box-ios-sdk/pull/759)) - Add support for copyInstanceOnItemCopy field for metadata templates ([#763](https://github.com/box/box-ios-sdk/pull/763)) - Add support for stream upload of new file versions and add support for 'If-Match' header when uploading new file versions ([#766](https://github.com/box/box-ios-sdk/pull/766)) - Add additional details field for `Event` model ([#770](https://github.com/box/box-ios-sdk/pull/770)) ### Bug Fixes - Pass only a scheme to iOS Authentication APIs ([#755](https://github.com/box/box-ios-sdk/pull/755)) - Update `listEnterpriseGroups()` to use documented parameter for filtering by name ([#757](https://github.com/box/box-ios-sdk/pull/757)) - Fix bug for OAuth where the callback is not called if token has been revoked ([#762](https://github.com/box/box-ios-sdk/pull/762)) ## 4.3.0 (2021-02-01) ### New Features and Enhancements - Add support for OAuth 2 custom callback URL ([#746](https://github.com/box/box-ios-sdk/pull/746)) - Add support for zip download ([#749](https://github.com/box/box-ios-sdk/pull/749)) ### Bug Fixes - Update gems to patch kramdown vulnerability ([#742](https://github.com/box/box-ios-sdk/pull/742)) - Update gems to patch activesupport vulnerability ([#745](https://github.com/box/box-ios-sdk/pull/745)) ## 4.2.0 (2020-11-16) ### New Features and Enhancements - Add error information to OAuth web session failures ### Bug Fixes - Fix bug with creating collaboration - Fix bug with getting enterprise events ## 4.1.0 (2020-05-15) ### New Features and Enhancements - Add ability to cancel uploads and downloads - Add support for the uploader display name field for Files and File Versions - Add support for the classification field for Files and Folders - Add path parameter sanitization ### Bug Fixes - Fix logging of API responses ## 4.0.0 (2020-02-13) ### ⚠ BREAKING CHANGES - Change `status` field for task assignments from a String to an Enum - Remove macOS, tvOS, and watchOS support ### New Features and Enhancements - Make authentication session classes `OAuth2Session`, `SingleTokenSession`, and `DelegatedAuthSession` public ## 3.1.0 (2020-01-09) ### New Features and Enhancements - Add shared link downscoping - Add closure parameter for progress of uploads and downloads - Add marker based pagination to list users endpoint ## 3.0.0 (2019-11-18) ### New Features and Enhancements - Added file specific icons for the Sample Apps. ## 3.0.0-rc.3 (2019-11-14) ### ⚠ BREAKING CHANGES - For Module methods that returned a collection of objects, changed from returning a PaginationIterator to returning a PagingIterator in a completion. - Modules are now automatically instantiated with the BoxClient object and no longer allow the client app to instantiate them - Related RetentionPolicy classes no longer allow rawData to be set by the client app - UploadPartDescription made private - Fixed bug with exponential backoff and changed SDK configuration item "retryAfterTime" to "retryBaseInterval" ### New Features and Enhancements - RetentionPolicyModule methods made public - Added additional supporting types - Improved support for logging to file, allow for custom file path, and fixed some related bugs - Improved console logging formatting - Updated Sample Apps to use new PagingIterator responses ## 3.0.0-rc.2 (2019-10-30) ### ⚠ BREAKING CHANGES - Changed SDK errors from customValue enum cases to specific enum cases ### New Features and Enhancements - Added Xcode 11 + iOS 13 support to Travis CI ## 3.0.0-rc.1 (2019-10-18) ### ⚠ BREAKING CHANGES - Changed TaskAssignment.resolutionState from String to new AssignmentState enum type - Changed Group.groupType from String to new GroupType enum type - Changed Folder.allowedSharedLinkAccessLevels from [String] to new [SharedLinkAccess] enum type - Changed File.allowedInviteeRoles from [String] to new [CollaborationRole] enum type - Network responses with 4xx or 5xx status codes are now transformed into an API Error - CollaborationItem changed from class to enum - CommentItem changed from class to enum - FolderItem changed from class to enum - WebhookItem changed from class to enum - TaskItem changed from class to enum - JSON decoding errors now emit expected type - Public method names changed to a new convention in many of the "module" classes - Redesigned error classes and error hierarchy - Temporarily removed progress closure for uploads and downloads ### New Features and Enhancements Added Xcode 11 support (SDK builds still target iOS 11.0) Removed AlamoFire dependency Added support for Device Pins Added SDK Configuration URL validation Added SDK-level constants rootFolder and currentUser for convenience Added support for Collaboration Whitelist endpoints Added support for Retention Policy endpoints Added support for Tasks endpoints Added support for Webhooks endpoints Added support for Groups and Group Membership endpoints Added support for Legal Holds endpoints Added support for Terms of Service endpoints Added support for Terms of Service User Status endpoints Added support for Watermarking endpoints Added support for Storage Policy endpoints Added support for Metadata Cascade Policy endpoints Added support for User endpoints Added support for Events endpoints Added Error Views in Sample Apps Improved structure and usability of Sample Apps ## 3.0.0-alpha.3 (2019-08-29) ### ⚠ BREAKING CHANGES - Changed File Entry Container "entries" from optional to not optional ### New Features and Enhancements - Added support for Web Links - Added support for Trash endpoints - Added support for Recent Items - Added support for File Version endpoints - Added support for Delete File endpoint - Added support for Chunked Upload Endpoints - Added support for upload preflight check - Added support for downloading a representation of a file - Added support for custom OAuth2 Callback URL - Added KeychainTokenStore for OAuth2SampleApp ## 3.0.0-alpha.2 (2019-08-08) ### ⚠ BREAKING CHANGES Moved some constants to different namespaces: - `Box.rootFolder` is now `BoxSDK.Constants.rootFolder` - `Box.currentUser` is now `BoxSDK.Constants.currentUser` Updated the arguments that `client.files.updateFileInfo()` takes for consistency with the rest of the SDK Changed the type of the `expiresAt` arguments in `client.files.lockFile()` from `String` to `Date` Removed unused arguments from `client.files.unlockFile()` Changed the type of the `unsharedAt` and `password` arguments of `client.files.setSharedLink()` and `client.folders.setSharedLink()` to accept `.null` values Replaced the `access`, `password`, `unsharedAt`, and `canDownload` arguments of `client.folders.updateFolder()` with a single `sharedLink` argument to enable setting the entire shared link field to `.null` in order to remove the shared link Replaced `client.getFavoritesCollectionId()` with `client.collections.getFavoritesCollection()` Removed `client.collections.addItemsToCollection()` and `client.collections.deleteItemsFromCollection()` Changed the result type for `client.files.addFileToFavorites()`, `client.files.addFileToCollection()`, `client.files.removeFileFromFavorites()`, and `client.files.removeFileFromCollection()` from `Void` to `File` Changed the result type for `client.folders.addFolderToFavorites()`, `client.folders.addFolderToCollection()`, `client.folders.removeFolderFromFavorites()`, and `client.folders.removeFolderFromCollection()` from `Void` to `Folder` ### New Features and Enhancements - Added support for [token downscoping](./docs/usage/authentication.md#token-exchange) - Added a `KeychainTokenStore` implementation to enable persisting authentication state on the Keychain - The SDK now automatically clears the token store after destroying a client and revoking its tokens ## [3.0.0-alpha.1] (2019-07-25) Initial beta release :tada: --- ### Changelog **Type:** page | **Section:** Additional Resources Changelog All notable changes to this project will be documented in this file. See standard-version for commit guidelines. 10.1.0 (2025-1… # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## 10.1.0 (2025-11-10) ### Bug Fixes - Fix error handling in TS (box/box-codegen[#882](https://github.com/box/box-node-sdk/issues/882)) ([#1180](https://github.com/box/box-node-sdk/issues/1180)) ([2b68145](https://github.com/box/box-node-sdk/commit/2b68145d9d8e46e26d08b8bc774ba757ef3b444f)) - Fix error propagation and empty fetch response handling in node SDK (box/box-codegen[#883](https://github.com/box/box-node-sdk/issues/883)) ([#1192](https://github.com/box/box-node-sdk/issues/1192)) ([5664231](https://github.com/box/box-node-sdk/commit/56642319c5b77ab0113ed4e1af5df30100449fcd)) - Remove enum types from GET enterprise configurations endpoint (box/box-openapi[#560](https://github.com/box/box-node-sdk/issues/560)) ([#1155](https://github.com/box/box-node-sdk/issues/1155)) ([3ba01aa](https://github.com/box/box-node-sdk/commit/3ba01aaac7861ce3f0578af65d838f61b78b7dcb)), closes [box/box-openapi#558](https://github.com/box/box-openapi/issues/558) [box/box-openapi#558](https://github.com/box/box-openapi/issues/558) [box/box-openapi#559](https://github.com/box/box-openapi/issues/559) [box/box-codegen#869](https://github.com/box/box-codegen/issues/869) [box/box-codegen#871](https://github.com/box/box-codegen/issues/871) [box/box-codegen#872](https://github.com/box/box-codegen/issues/872) ### New Features and Enhancements - Add GET enterprise configuration endpoint (box/box-openapi[#559](https://github.com/box/box-node-sdk/issues/559)) ([#1143](https://github.com/box/box-node-sdk/issues/1143)) ([5eeeb4f](https://github.com/box/box-node-sdk/commit/5eeeb4fe7d0fff376cb31b820597e63d71dd0b69)) - support delete Archive endpoint (box/box-openapi[#563](https://github.com/box/box-node-sdk/issues/563)) ([#1173](https://github.com/box/box-node-sdk/issues/1173)) ([7dc774d](https://github.com/box/box-node-sdk/commit/7dc774d8764a3a0b3f60525e416ed5345d4a71b1)) ### 10.0.1 (2025-10-06) ### Bug Fixes - Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556](https://github.com/box/box-node-sdk/issues/556)) ([#1051](https://github.com/box/box-node-sdk/issues/1051)) ([70a2275](https://github.com/box/box-node-sdk/commit/70a2275ada40f079178166d60c7f5d0a48bd5e40)) - Make `role` parameter of update collaboration optional (box/box-openapi[#557](https://github.com/box/box-node-sdk/issues/557)) ([#1068](https://github.com/box/box-node-sdk/issues/1068)) ([3992171](https://github.com/box/box-node-sdk/commit/3992171af8587d9f43888ecd2fcbcd70a9f1b2b6)) - Relax JSON deserialization guard by removing strict `content-type` check (box/box-codegen[#844](https://github.com/box/box-node-sdk/issues/844)) ([#1033](https://github.com/box/box-node-sdk/issues/1033)) ([1eb2c32](https://github.com/box/box-node-sdk/commit/1eb2c32a923be1762bf9dfbb2dfdb9e5b3e78af5)) ## 10.0.0 (2025-09-17) Introducing **`Box Node SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`](https://github.com/box/box-node-sdk/tree/sdk-gen) branch, `v10` will ultimately become the main branch. ### Breaking Changes - This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here](https://github.com/box/box-node-sdk/tree/sdk-gen/docs). ### What's New in v10 **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide](https://github.com/box/box-node-sdk/blob/sdk-gen/docs/migration-guides/from-v3-to-v10.md) for details. For more information, see the [SDK versioning strategy document](https://developer.box.com/guides/tooling/sdks/sdk-versioning). Follow developer changelog for future updates. ### What’s New Compared to Typescript SDK Gen v1.19.1 #### ⚠ BREAKING CHANGES - Change names of unions (box/box-codegen[#787](https://github.com/box/box-node-sdk/issues/787)) ([#938](https://github.com/box/box-node-sdk/issues/938)) ([06a8e9b](https://github.com/box/box-node-sdk/commit/06a8e9bb6de67547dd900b74778c8203aa388a91)) - Remove unused models from schemas (box/box-openapi[#547](https://github.com/box/box-node-sdk/issues/547)) ([#933](https://github.com/box/box-node-sdk/issues/933)) ([35690f4](https://github.com/box/box-node-sdk/commit/35690f4e4ef7383cae890d4df810ed77168384e1)), closes [box/box-codegen#773](https://github.com/box/box-codegen/issues/773) [box/box-openapi#542](https://github.com/box/box-openapi/issues/542) [box/box-openapi#544](https://github.com/box/box-openapi/issues/544) [box/box-codegen#781](https://github.com/box/box-codegen/issues/781) [box/box-openapi#545](https://github.com/box/box-openapi/issues/545) - Remove generated suffix from files (box/box-codegen[#779](https://github.com/box/box-node-sdk/issues/779)) ([#948](https://github.com/box/box-node-sdk/issues/948)) ([4bfb073](https://github.com/box/box-node-sdk/commit/4bfb07350be95a5717ee9be032af4995d1d97395)) - Adjust imports and exports (box/box-codegen[#801](https://github.com/box/box-node-sdk/issues/801)) ([#965](https://github.com/box/box-node-sdk/issues/965)) ([d8e6a0a](https://github.com/box/box-node-sdk/commit/d8e6a0a466d367dd6c871bc20534f1b950732997)) #### Bug Fixes - Fix serialization for unions (box/box-codegen[#800](https://github.com/box/box-node-sdk/issues/800)) ([#954](https://github.com/box/box-node-sdk/issues/954)) ([7f75f6d](https://github.com/box/box-node-sdk/commit/7f75f6d6d87f2a9b6d500306fcc0dddf023b7118)) #### New Features and Enhancements - Add missing webhook events (box/box-openapi[#554](https://github.com/box/box-node-sdk/issues/554)) ([#982](https://github.com/box/box-node-sdk/issues/982)) ([2f5e245](https://github.com/box/box-node-sdk/commit/2f5e24574dbaff7d23140a2a5c22e54b1f047bf6)) - Support external user deletion API (box/box-codegen[#796](https://github.com/box/box-node-sdk/issues/796)) ([#946](https://github.com/box/box-node-sdk/issues/946)) ([44b37a4](https://github.com/box/box-node-sdk/commit/44b37a49ddbf587575f005342c9457cc46b5a573)) For more details check [migration guide](https://github.com/box/box-node-sdk/blob/sdk-gen/docs/migration-guides/from-box-typescript-sdk-gen-v1-to-box-node-sdk-v10.md) from `box-typescript-sdk-gen` `v1` to `box-node-sdk` `v10`. ### 3.8.1 (2025-06-11) ### Bug Fixes - Use constant-time comparison for HMAC signatures ([#893](https://github.com/box/box-node-sdk/issues/893)) ([d819efe](https://github.com/box/box-node-sdk/commit/d819efe663a59fce53412fbe153a76dd346d4536)) ## 3.8.0 (2025-04-09) ### New Features and Enhancements - Support AI agent ([#887](https://github.com/box/box-node-sdk/issues/887)) ([5b109ad](https://github.com/box/box-node-sdk/commit/5b109adbd506510fc83b1c90af13b063ddefab37)) ### 3.7.1 (2024-08-06) ### Bug Fixes - add version to copy file options annotation ([#885](https://github.com/box/box-node-sdk/issues/885)) ([4f9312c](https://github.com/box/box-node-sdk/commit/4f9312c63138f8cf8e0a9e46a9e1345172dbdc6b)) ## 3.7.0 (2024-07-16) ### New Features and Enhancements - Support AI APIs ([#883](https://github.com/box/box-node-sdk/issues/883)) ([bb81e07](https://github.com/box/box-node-sdk/commit/bb81e074eb1017bd742c90159e6cf4e6ce9d9776)) ## 3.6.0 (2024-05-20) ### New Features and Enhancements - Transition to stable status ([#880](https://github.com/box/box-node-sdk/issues/880)) ([ae996ea](https://github.com/box/box-node-sdk/commit/ae996eafd9e34de99119a7780384b90758908313)) ### 3.5.1 (2024-05-02) ### Bug Fixes - Fix `options` parameter in metadata query method ([#878](https://github.com/box/box-node-sdk/issues/878)) ([7943420](https://github.com/box/box-node-sdk/commit/79434209c572cd77c329d6008cda9837a9dba411)) ## 3.5.0 (2024-02-19) ### New Features and Enhancements - Sign request group ([#870](https://github.com/box/box-node-sdk/issues/870)) ([11bf5d2](https://github.com/box/box-node-sdk/commit/11bf5d2db7e0cefc669aab99c8b65c632289ac46)) ### Bug Fixes - Bumped proxy-agent to 6.4.0 ([#874](https://github.com/box/box-node-sdk/issues/874)) ([55a8a0b](https://github.com/box/box-node-sdk/commit/55a8a0baebe151f4107fdbec0a1022e9534f88a4)) - Remove delete classification ([#869](https://github.com/box/box-node-sdk/issues/869)) ([22384ab](https://github.com/box/box-node-sdk/commit/22384abc3abbc35800cbcdea7c7eb9a452cc4859)) ### 3.4.2 (2023-11-08) ### Bug Fixes - Fix `proxy-agent` ([#867](https://github.com/box/box-node-sdk/issues/867)) ([3de7586](https://github.com/box/box-node-sdk/commit/3de7586e44dbb7c8e1bff8f34471964805c810f5)) ### 3.4.1 (2023-11-03) ### Bug Fixes - Update `proxy-agent` usage, drop support Node 12 ([#865](https://github.com/box/box-node-sdk/issues/865)) ([e229d3f](https://github.com/box/box-node-sdk/commit/e229d3f93de350c00768528a1c0d3a6ecfc697a9)) ## 3.4.0 (2023-11-03) ### New Features and Enhancements - Add request option to skip `PassThrough` ([#863](https://github.com/box/box-node-sdk/issues/863)) ([726db45](https://github.com/box/box-node-sdk/commit/726db45cfbb992e545fe2865283df63c898656ac)) ## 3.3.0 (2023-10-26) ### New Features and Enhancements - Replace `request` library with `@cypress/request` ([#860](https://github.com/box/box-node-sdk/issues/860)) ([d365ae8](https://github.com/box/box-node-sdk/commit/d365ae8368c549ecdceb7dd5b928904fd3c58978)) ### Bug Fixes - mark auth funs callbacks as optional ([#858](https://github.com/box/box-node-sdk/issues/858)) ([55f22fe](https://github.com/box/box-node-sdk/commit/55f22fec7d7d35e487f3fb51bc9bbd3e848842ab)) ### 3.2.1 (2023-10-06) ### Bug Fixes - Overrides tough-cookie dependency ([#852](https://github.com/box/box-node-sdk/issues/852)) ([99df873](https://github.com/box/box-node-sdk/commit/99df873e1a1dad4a0073d53b4ed57c0eeb859401)) ## 3.2.0 (2023-09-07) ### New Features and Enhancements - Support sign template ([#848](https://github.com/box/box-node-sdk/issues/848)) ([18d3413](https://github.com/box/box-node-sdk/commit/18d3413afeddf43c62dfd0caf1279e61c99b6b83)) ### 3.1.1 (2023-07-19) ## 3.1.0 (2023-06-01) ### New Features and Enhancements - Added support for integration mappings API ([#831](https://github.com/box/box-node-sdk/issues/831)) ([a525327](https://github.com/box/box-node-sdk/commit/a525327c1362628a0ffdb36cb4bf3346ca0e0153)) ### Bug Fixes - Correct types of `userId` and `groupId` for creating collaboration ([#833](https://github.com/box/box-node-sdk/issues/833)) ([f803ff8](https://github.com/box/box-node-sdk/commit/f803ff82330fd78a8dc4875452a21aab54686b2e)), closes [#832](https://github.com/box/box-node-sdk/issues/832) ## 3.0.0 (2023-05-23) The most important change in this release is **dropping support for Node versions below 12** and changing the **support environments from Node 12 to Node 16**. ### Breaking Changes - Removed `use_index` usage. ([#812](https://github.com/box/box-node-sdk/pull/812)) ([d56799a](https://github.com/box/box-node-sdk/commit/d56799a61f42265d7785f99e92a449c58d125aef)) - Removed deprecated `BoxClient.batch()` and `BoxClient.batchExec()` method. - Removed deprecated `CollaborationWhitelist` class, use `CollaborationAllowlist` instead. - Removed deprecated `CollaborationAllowlist.getWhitelistedDomain()` method, use `CollaborationAllowlist.getAllowlistedDomain()` instead. - Removed deprecated `CollaborationAllowlist.getAllWhitelistedDomains()` method, use `CollaborationAllowlist.getAllAllowlistedDomains()` instead. - Remove deprecated `Files.getThumbnail(fileID: string, options?: Record<string, any>, callback?: Function)` method, use `Files.getRepresentationContent( fileID, representationType, options, callback)` instead. Migration details can be found [here](https://github.com/box/box-node-sdk/blob/v3.0.0/docs/upgrade/2.x.x%20to%203.x.x.md) ### Dependency Upgrades - Bumped `jsonwebtoken` from 8.5.1 to 9.0.0. ([#802](https://github.com/box/box-node-sdk/pull/802)) ([5b1d4e9](https://github.com/box/box-node-sdk/pull/828/commits/5b1d4e9ec557c14c1d27695733cc0bcae49061cb)) - Bumped `vm2` from 3.9.11 to 3.9.19 ([#826](https://github.com/box/box-node-sdk/pull/826)) ([220df76](https://github.com/box/box-node-sdk/commit/220df765080bc27c91daed51ac46620f6bc8b9ed)) ## 2.10.0 (2023-05-11) ### New Features and Enhancements - Added support for ethical wall API ([#822](https://github.com/box/box-node-sdk/issues/822)) ([4814af3](https://github.com/box/box-node-sdk/commit/4814af35c1741fbfe3fa03f8f0412ade8b38dfcc)) - Added `name` and `signature_color` fields to `SignRequest` and `SignRequestCreateRequest` types and `login_required` field to `SignRequestCreateSigner` type ([#822](https://github.com/box/box-node-sdk/issues/822)) ([4814af3](https://github.com/box/box-node-sdk/commit/4814af35c1741fbfe3fa03f8f0412ade8b38dfcc)) ## 2.9.0 (2023-04-19) ### New Features and Enhancements - New fields in `retention-policy` and `retention-policy-assignment` ([#803](https://github.com/box/box-node-sdk/issues/803)) ([f14ba84](https://github.com/box/box-node-sdk/commit/f14ba84013985513854ad396581d085d1d4f0255)) ### Bug Fixes - return empty object when `tos` status is not present ([#797](https://github.com/box/box-node-sdk/issues/797)) ([12fd9b0](https://github.com/box/box-node-sdk/commit/12fd9b053707471722f53cd1760c8cf59451fe8d)) ### 2.8.1 (2023-01-05) ### Bug Fixes - Fix `getReadStream` delay reading ([#790](https://github.com/box/box-node-sdk/issues/790)) ([6bfc1ee](https://github.com/box/box-node-sdk/commit/6bfc1eebeb9a31606ff96127eeb1ad03d2f13d9c)) ## 2.8.0 (2022-12-21) ### New Features and Enhancements - Session termination ([#782](https://github.com/box/box-node-sdk/issues/782)) ([7fb56c6](https://github.com/box/box-node-sdk/commit/7fb56c625f8eb03e6a5354b67a0debfd9e4ad7c8)) ### 2.7.2 (2022-11-10) ### Bug Fixes - Add `fields` query parameter to file and folder update ([#776](https://github.com/box/box-node-sdk/issues/776)) ([a327deb](https://github.com/box/box-node-sdk/commit/a327debc83d98a4190a5a16cf848417ea5714db9)) ### 2.7.1 (2022-10-28) ### Bug Fixes - Export missing `RetentionType` ([#774](https://github.com/box/box-node-sdk/issues/774)) ([7e6b244](https://github.com/box/box-node-sdk/commit/7e6b244ba63d363ecc921be570140c9e1ed1d032)) ## 2.7.0 (2022-10-27) ### New Features and Enhancements - Add support for modifiable retention policies & enable deleting retention policy assignment ([#769](https://github.com/box/box-node-sdk/issues/769)) ([5e8c776](https://github.com/box/box-node-sdk/commit/5e8c776fc94e9dcf313cc15c96e42fbffaf36b74)) ## 2.6.0 (2022-09-23) ### New Features and Enhancements - Add `content_type`, `redirect_url` field to Sign Request ([#758](https://github.com/box/box-node-sdk/issues/758)) ([8abb9b6](https://github.com/box/box-node-sdk/commit/8abb9b602b13cd72c6c8de549d19756ae147b403)) - Add sign request webhook ([#760](https://github.com/box/box-node-sdk/issues/760)) ([e92d1ab](https://github.com/box/box-node-sdk/commit/e92d1abee5faf58166f4892d7b2e6bc3c6480ac6)) - Added support for Access Only Collaboration ([#759](https://github.com/box/box-node-sdk/issues/759)) ([dd8261f](https://github.com/box/box-node-sdk/commit/dd8261f970c207854058c3ed86ccabf9bec05ea8)) ## 2.5.0 (2022-08-09) ### New Features and Enhancements - Added support update and remove user avatar ([#744](https://github.com/box/box-node-sdk/issues/744)) ([aaf6175](https://github.com/box/box-node-sdk/commit/aaf617528de5c61e19cfb25e28fe77c01532b9fa)) ### Bug Fixes - Fix error while generate token using oauth ([#750](https://github.com/box/box-node-sdk/issues/750)) ([f826291](https://github.com/box/box-node-sdk/commit/f82629108a1af6c4d160de1976fd01fdf0d8dde3)), closes [#286](https://github.com/box/box-node-sdk/issues/286) - Fix lint error in test file ([#747](https://github.com/box/box-node-sdk/issues/747)) ([3b1e10d](https://github.com/box/box-node-sdk/commit/3b1e10d206aa88a8bf99989bb7ff85776a9864a4)) ## 2.4.0 (2022-07-13) ### New Features and Enhancements - Added support for file requests ([#742](https://github.com/box/box-node-sdk/issues/742)) ([30b2e76](https://github.com/box/box-node-sdk/commit/30b2e767c6c3af68e1463cc801914f9889dc593c)) - Added support of `admin_logs_streaming` stream type ([#740](https://github.com/box/box-node-sdk/issues/740)) ([406950a](https://github.com/box/box-node-sdk/commit/406950a03af54a022427e0532e889a61e0d25152)) ### Bug Fixes - properly handle client errors in streams ([#736](https://github.com/box/box-node-sdk/issues/736)) ([12378d6](https://github.com/box/box-node-sdk/commit/12378d6755c2e3cddcb79439cdcbbe8e1e61df13)) ## 2.3.0 (2022-04-28) ### New Features and Enhancements - Add `description` parameter to `uploadFile` methods ([#730](https://github.com/box/box-node-sdk/issues/730)) ([2596584](https://github.com/box/box-node-sdk/commit/2596584dffb44c1995c8b6b3faa67564f4d32499)) ### Bug Fixes - added missing `js-docs` on shared links ([#731](https://github.com/box/box-node-sdk/issues/731)) ([3554d41](https://github.com/box/box-node-sdk/commit/3554d41d9050e7a81224c35e3e2e257604a0b41b)) ## 2.2.0 (2022-04-20) ### New Features and Enhancements - editable shared links ([#722](https://github.com/box/box-node-sdk/issues/722)) ([f0c0135](https://github.com/box/box-node-sdk/commit/f0c0135511fde46144e6c496432104321af443f6)) ## 2.1.0 (2022-03-28) ### New Features and Enhancements - Client Credentials Grant authentication method ([#709](https://github.com/box/box-node-sdk/issues/709)) ([fbf4e80](https://github.com/box/box-node-sdk/commit/fbf4e80648821e38479b24bf489e7d222ae6c18f)) - Deprecating `index_name` when executing metadata query ([#686](https://github.com/box/box-node-sdk/issues/686)) ([e01cc65](https://github.com/box/box-node-sdk/commit/e01cc650e4e793955be543e93928ad82a3254492)) - **test:** add support for testing with Jest ([#676](https://github.com/box/box-node-sdk/issues/676)) ([1a11759](https://github.com/box/box-node-sdk/commit/1a11759db999510c69d6a27f7becd565620bb000)) ### Bug Fixes - Client Credentials Grant authentication method supports token down-scoping ([#710](https://github.com/box/box-node-sdk/issues/710)) ([730368f](https://github.com/box/box-node-sdk/commit/730368f410ff56e9a8c90feea2192b29c08df198)) - Fix JWT expiration field being float instead of integer ([#715](https://github.com/box/box-node-sdk/issues/715)) ([7e950f1](https://github.com/box/box-node-sdk/commit/7e950f1265a52ce251c42a186c8196089a9ed858)), closes [#713](https://github.com/box/box-node-sdk/issues/713) ## 2.0.0 (2021-09-29) ### ⚠ BREAKING CHANGES - Drop support for Node 6,7 ([#670](https://github.com/box/box-node-sdk/pull/670)) ### New Features and Enhancements: - Add support for is_external_collab_restricted User property ([#668](https://github.com/box/box-node-sdk/pull/668)) - Bump proxy-agent from 4.0.0 to 5.0.0 ([#664](https://github.com/box/box-node-sdk/pull/664)) ## 1.39.0 (2021-08-30) ### New Features and Enhancements: - Add support for Box Sign API ([#658](https://github.com/box/box-node-sdk/pull/658)) - Enhance TS Imports ([#656](https://github.com/box/box-node-sdk/pull/656)) ## 1.38.0 (2021-08-05) ### New Features and Enhancements: - Add sensitive-language event types for admin invites ([#648](https://github.com/box/box-node-sdk/pull/648)) - Use BetterDocs to adapt JSDocs to TypeScript ([#646](https://github.com/box/box-node-sdk/pull/646)) - Change ProxyAgent import to be dynamic ([#641](https://github.com/box/box-node-sdk/pull/641)) - New API for get files and file versions under retention ([#585](https://github.com/box/box-node-sdk/pull/585)) ### Bug Fixes: - Deeply freeze Config except Buffers and Readable streams ([#651](https://github.com/box/box-node-sdk/pull/651)) - Fix a typo in docs of src/managers/search.ts ([#649](https://github.com/box/box-node-sdk/pull/649)) - Update broken documentation link ([#647](https://github.com/box/box-node-sdk/pull/647)) - fix type annotations for exchangeToken functions ([#645](https://github.com/box/box-node-sdk/pull/645)) - Deprecate files getThumbnail API in favor of getRepresentationContent ([#627](https://github.com/box/box-node-sdk/pull/627)) ## 1.37.2 (2021-05-20) ### Bug Fixes: - Fix backwards compatibility issue by moving some TypeScript @types as direct dependencies ([#630](https://github.com/box/box-node-sdk/pull/630)) ## 1.37.1 (2021-05-19) ### Bug Fixes: - Insensitive language: replace whitelist with allowlist ([#625](https://github.com/box/box-node-sdk/pull/625)) ## 1.37.0 (2021-04-16) ### New Features and Enhancements: - Add support for copyInstanceOnItemCopy field for metadata templates ([#572](https://github.com/box/box-node-sdk/pull/572)) ### Bug Fixes: - Fix webhook signature validation ([#568](https://github.com/box/box-node-sdk/pull/568)) - Update dependencies to patch security vulnerabilities ([#578](https://github.com/box/box-node-sdk/pull/578)) ## 1.36.0 (2021-01-27) ### New Features and Enhancements: - Add folder lock functionality ([#560](https://github.com/box/box-node-sdk/pull/560)) - Add support for filtering groups by name ([#561](https://github.com/box/box-node-sdk/pull/561)) ### Bug Fixes: - Update proxy-agent to patch proxy support issue ([#563](https://github.com/box/box-node-sdk/pull/563)) - Update dependencies to patch security vulnerabilities ([#566](https://github.com/box/box-node-sdk/pull/566)) ## 1.35.0 (2020-11-02) ### New Features and Enhancements: - Add support for search param to get shared link items ([#547](https://github.com/box/box-node-sdk/pull/547)) ## 1.34.3 (2020-10-02) ### Bug Fixes: - Upgrade ajv dependency ([#545](https://github.com/box/box-node-sdk/pull/545)) ## 1.34.2 (2020-08-20) - Make iterator bug fix for uploading files non breaking ([#534](https://github.com/box/box-node-sdk/pull/534)) ## 1.34.1 (2020-08-17) - Fix iterator bug for uploading new file versions ([#531](https://github.com/box/box-node-sdk/pull/531)) ## 1.34.0 (2020-08-04) - Add zip functionality ([#525](https://github.com/box/box-node-sdk/pull/525)) - Add proxy support for `http`, `https`, `socks` and `pac` protocols ([#529](https://github.com/box/box-node-sdk/pull/529)) ## 1.33.0 (2020-06-25) - Add path parameter sanitization ([#505](https://github.com/box/box-node-sdk/pull/505)) - Add support for all streams for uploading files ([#519](https://github.com/box/box-node-sdk/pull/519)) ## 1.32.0 (2020-04-01) - Temporarily removed Node 4 and Node 5 builds from Travis, due to tests not passing. Will investigate, going forward ([#495](https://github.com/box/box-node-sdk/pull/495)). - Fixed an issue where an error is thrown during a retry when a response is not returned by the previous call ([#477](https://github.com/box/box-node-sdk/pull/477)). - Added the ability to [query](./docs/metadata.md#query) Box items based on their metadata ([#487](https://github.com/box/box-node-sdk/pull/487)). ## 1.31.0 (2020-02-13) - Fixed Authentication Request Retries - Added marker-based paging for users endpoints - Added `getNextMarker()` to PagingIterator to get the next marker ## 1.30.0 (2019-11-21) - Deprecated Batch API methods - Added support for [token exchange](./lib/box-client.js#L495) using shared links ## 1.29.1 (2019-08-22) - Fixed an issue where JWT authentication requests could fail after being rate limited ## 1.29.0 (2019-04-25) Added convenience methods for setting metadata on [files](./docs/metadata.md#set-metadata-on-a-file) and [folders](./docs/metadata.md#set-metadata-on-a-folder) ([#376](https://github.com/box/box-node-sdk/pull/376)) ## 1.28.0 (2019-03-28) Added methods for [moving](./docs/web-links.md#move-a-web-link) and [copying](./docs/web-links.md#move-a-web-link) weblinks, as well as [adding or removing from a collection](./docs/web-links.md#add-web-link-to-a-collection) ## 1.27.0 (2019-02-28) - Added the trace ID from API response headers to error messages for easier debugging - Added more safety checks in the error flow to protect against throwing when handling a malformed request - Added support for [retrieving a user's avatar image](./docs/users.md#get-user-avatar) ## 1.26.2 (2019-02-22) Fixed an error where under high request rates, code in the error handling logic could throw when handling a malformed request ## 1.26.1 (2019-02-12) - Fixed an error where some methods could throw an error when constructing an iterator ## 1.26.0 (2019-02-12) - Added support for [replying to a comment](./docs/comments.md#reply-to-a-comment) (thanks @jpan-box!) Fixed an issue where calling `client.events.get()` could return an iterator that would only iterate over the first chunk of events. This method will now always return the raw JSON data in order to enable manual paging. For automatic paging through events, `client.events.getEventStream()` or `client.events.getEnterpriseEventStream()` should be used instead. ## 1.25.0 (2019-01-24) - Added the `retryStrategy` config parameter to allow customizing how the SDK retries failing requests ## 1.24.1 (2019-01-11) - Fixed an issue where token expiration was not being correctly handled ## 1.24.0 (2018-12-10) - Added a configuration option for populating the first-party client analytics header information ## 1.23.0 (2018-11-21) Added an `etag` option to common file and folder methods to allow handling race conditions - [`client.files.update()`](./docs/files.md#update-a-files-information) - [`client.files.delete()`](./docs/files.md#delete-a-file) - [`client.files.deletePermanently()`](./docs/trash.md#delete-a-file-from-the-trash) - [`client.files.deleteVersion()`](./docs/files.md#delete-a-previous-file-version) - [`client.folders.update()`](./docs/folders.md#update-a-folders-information) - [`client.folders.delete()`](./docs/folders.md#delete-a-folder) - [`client.folders.deletePermanently()`](./docs/trash.md#delete-a-folder-from-the-trash) ## 1.22.1 (2018-11-15) - Fixed an issue where retrying JWT auth token requests would sometimes fail due to a non-unique `jti` claim ## 1.22.0 (2018-09-17) - Chunked Uploader methods now return promises for [simpler handling of chunked uploads](./docs/files.md#automatic-uploader) - File attributes to set on the newly-uploaded file can now be [passed via `options.fileAttributes`](./docs/files.md#automatic-uploader) when creating a Chunked Uploader ## 1.21.0 (2018-09-13) - Added the ability to close an Event Stream by calling `eventStream.destroy()` (thanks @boneskull!) - Improved error messages related to certain authentication failure cases ## 1.20.0 (2018-08-09) - Added missing values to the `client.webhooks.triggerTypes` enum (thanks @MathersMax!) - Added support for [Metadata Cascade Policies](./docs/metadata.md#create-cascade-policy) ## 1.19.0 (2018-06-14) - Added `generateRepresentations` option to [`files.getRepresentationContent()`](./docs/files.md#get-representation-content) ## 1.18.0 (2018-05-24) Updated dependencies to resolve potential security issues: - `request@2.87.0` - Transitive dependencies of `jsonwebtoken@8.2.1` Added a static `BoxSDK.getBasicClient()` method to enable creating a client without needing to specify a client ID and secret (thanks to @cbetta) ## 1.17.0 (2018-05-10) - Updated dependencies: `request@2.85.0`, `jsonwebtoken@8.2.1` - Added support for [Storage Policies](./docs/storage-policies.md) - Added the option to use a Token Store for caching tokens with App Auth using JWT ## 1.16.1 (2018-04-26) - Fixed a bug where metadata template deletion would not properly return results via callback ## 1.16.0 (2018-04-10) - Added support for [assigning Retention Policies to Metadata Templates](https://github.com/box/box-node-sdk/blob/main/docs/retention-policies.md#assign-retention-policy) ## 1.15.0 (2018-03-29) - Fixed [`client.webhooks.validateMessage() and `sdk.validateWebhookMessage()`](https://github.com/box/box-node-sdk/blob/main/docs/webhooks.md#validate-a-webhook-message) to accept the request body as an `Object` - Fixed `sdk.configure()` to correct reconfigure all options - Improved error messages for API errors and added the request object as `error.request` for easier debugging ## 1.14.1 (2018-03-13) - Fixed a bug when `files.getReadStream()` was called with null options ## 1.14.0 (2018-03-12) - Added support for [getting a metadata template by ID](./docs/metadata.md#get-by-id) - Added a `byteRange` option to [file download](./docs/files.md#download-a-file) to support partial file download - Improved error messages when using promises and in authentication flows ## 1.13.0 (2018-03-01) - Added support for getting a [stream of file representation contents](./docs/files.md#get-representation-content) - Switched to using exponential backoff for request retries ## 1.12.1 (2018-01-25) - Fixed an issue where chunked uploader would not work with response streams from the request library (0e7014561f9cd0f7f38f98536b3f0c3946231d2e) ## 1.12.0 (2018-01-11) - Added support for [metadata template deletion](./docs/metadata.md#delete-metadata-template) ## 1.11.0 (2017-12-12) - Added options to preserve file timestamps on [file upload](./docs/files.md#upload-a-file) and to rename a file or preserve modification timestamp on [new version upload](./docs/files.md#upload-a-new-version-of-a-file) - Added [Collaboration Whitelist](./docs/collaboration-whitelist.md) functionality to allow enterprise admins to control which external users can collaborate on their content - Added an option to Token Exchange to generate [annotator tokens](./docs/authentication.md#annotator-tokens) for use with Box View ## 1.10.1 (2017-11-28) - Updated to [jsonwebtoken@8.1.0](mailto:jsonwebtoken@8.1.0) to fix an issue where some users were getting an error when using App Auth ## 1.10.0 (2017-01-14) - Added support for [Terms of Service](./docs/terms-of-service.md) endpoints - Fixed a bug where receiving a collection without paging parameters from the API would cause the SDK to throw an exception when using the `iterators` SDK option. Now, this will return an iterator over the items returned by the API. - Fixed a bug in Token Exchange where passing multiple scopes would result in an error - Added support for [getting Representations info on a file](./docs/files.md#get-representation-info) ## 1.9.0 (2017-09-12) - Fixed token methods to return bluebird Promises instead of native Promises - Added support for the `notify` and `can_view_path` options on Collaborations ## 1.8.0 (2017-08-21) - Added support for [Batch API](./docs/client.md#batch-api) - Fixed a bug where the Event Stream would make more API calls than necessary, potentially hitting Box API rate limits - Added Promise support to methods on the SDK object - Added Node.js version to the User-Agent header that the SDK sends - Fixed a bug where using multiple Persistent Clients instances could cause some clients to end up with expired tokens ## 1.7.0 (2017-07-19) - Add support for passing IP to all token methods, and fixed a bug where a client's IP was not being correctly reported on token refreshes ## 1.6.0 (2017-06-23) - Added [Recent Items](./docs/recent-items.md) support - Updated app auth expiration time default value and validation ## 1.5.1 (2017-06-15) - Revert deep-freezing Config properties, since it was causing errors ## 1.5.0 (2017-06-15) - Added support for [Token Exchange](./docs/authentication.md#token-exchange), which allows a client to get downscoped tokens suitable for passing to a browser app or worker process. - Ensured deeply-nested Config properties are immutable ## 1.4.2 (2017-05-22) - Fixed `BoxSDK.getPreconfiguredInstance()` to configure webhook keys ## 1.4.1 (2017-05-22) - Fixed `BoxSDK.getPreconfiguredInstance()` when app auth setttings are not populated ## 1.4.0 (2017-05-19) - Added support for [file collaborations](./docs/collaborations.md#add-a-collaboration). Users can now invite others to collaborate on single files. See [the blog post](https://blog.box.com/blog/file-collaboration-api/) for more information. - Fixed an issue where users were unable to use JWT Server Auth when their computers' clocks were not synchronized with the Box API servers. - All asynchronous client methods now return Promises in addition to taking a (now-optional) callback parameter, so you can write more modern JS with the SDK. - The SDK can now be preconfigured using a JSON blob that can be downloaded in the Box Dev Console for JWT Server Authentication apps, making it easier to get started developing! - Added support for [chunked upload](./docs/files.md#chunked-upload), where a large file can be uploaded one piece at a time. This makes large file uploads much faster and more reliable, since parts can be uploaded in parallel and failed parts can be retried in isolation. - Added an `is_confirmed` option to [email alias creation](./docs/users.md#add-email-alias) for admins to auto-confirm the alias. - Added support for the [Enterprise Events stream](./docs/events.md#enterprise-events). - Added an option to have collections methods (e.g. `folders.getItems()`, `enterprise.getUsers()`, etc) return [async iterators](./README.md#iterators) that will automatically page through the collection. This conforms to the [proposed async iteration spec](https://github.com/tc39/proposal-async-iteration), which will eventually allow them to be used in ergonomic for-await-of loop syntax. ## 1.3.0 (2017-01-24) - Added `BoxSDK.validateWebhookMessage()` and `client.webhooks.validateMessage()` for validating webhook messages from Box ## 1.2.0 (2016-12-12) - Added methods for all API endpoints; we now have full API coverage :tada: - Added support for renaming a file or folder on copy - Added `client.asUser(userID)` and `client.asSelf()` to support making calls on behalf of managed users - Fixed event streams so they don't go into an infinite error loop when auth expires - Fixed an error where App Auth clients would not be able to authorize due to clock skew - Fixed the `mdfilters` parameter in `client.search.query()` to support metadata search - Cloned options objects to prevent modification of passed-in objects by the SDK - Added better error messaging to the sample app ## 1.1.0 (2016-09-27) - Added endpoint to get a file's tasks - Fixed issues with stream uploads - Improved performance of file uploads - Added endpoints to delete files and folders from trash - Added endpoint to get a trashed folder - Upgraded request dependency to fix ReDoS vulnerability ## [1.0.0] (2016-07-13) Initial release. --- ### Changelog **Type:** page | **Section:** Additional Resources Changelog All notable changes to this project will be documented in this file. See standard-version for commit guidelines. 10.1.0 (2025-1… # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## 10.1.0 (2025-11-19) ### New Features and Enhancements - Support GET enterprise configuration API (box/box-openapi[#559](https://github.com/box/box-python-sdk/issues/559)) ([#1134](https://github.com/box/box-python-sdk/issues/1134)) ([1106d32](https://github.com/box/box-python-sdk/commit/1106d325973df9704f5102538ac0130bda6e9c38)) - Support Archive API (box/box-openapi[#563](https://github.com/box/box-python-sdk/issues/563)) ([#1174](https://github.com/box/box-python-sdk/issues/1174)) ([d21ec4d](https://github.com/box/box-python-sdk/commit/d21ec4df82ab43539ff07d306cf304f86bbb0593)) ### 10.0.1 (2025-10-06) ### Bug Fixes - Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556](https://github.com/box/box-python-sdk/issues/556)) ([#1084](https://github.com/box/box-python-sdk/issues/1084)) ([f63cffe](https://github.com/box/box-python-sdk/commit/f63cffec92ccf98af21d6227328aab00fa159187)) - Make `role` parameter of update collaboration optional (box/box-openapi[#557](https://github.com/box/box-python-sdk/issues/557)) ([#1093](https://github.com/box/box-python-sdk/issues/1093)) ([5c21907](https://github.com/box/box-python-sdk/commit/5c21907869d359fdb8fe4c83317a9eca5aeffdc3)) ## 10.0.0 (2025-09-17) Introducing **`Box SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`](https://github.com/box/box-python-sdk/tree/sdk-gen) branch, `v10` will ultimately become the main branch. ### Breaking Changes - This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here](https://github.com/box/box-python-sdk/tree/sdk-gen/docs). ### What's New in v10 **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide](https://github.com/box/box-python-sdk/blob/sdk-gen/migration-guides/from-v3-to-v10.md) for details. For more information, see the [SDK versioning strategy document](https://developer.box.com/guides/tooling/sdks/sdk-versioning). Follow developer changelog for future updates. ### What’s New Compared to Python SDK Gen v1.17.0 #### New Features and Enhancements Add External User Deletion API (box/box-openapi[#550](https://github.com/box/box-python-sdk/issues/550)) ([#941](https://github.com/box/box-python-sdk/issues/941)) ([a80ad85](https://github.com/box/box-python-sdk/commit/a80ad856b3193e54272e04f01ddb025b2d9f781f)) Add missing webhook events (box/box-openapi[#554](https://github.com/box/box-python-sdk/issues/554)) ([#988](https://github.com/box/box-python-sdk/issues/988)) ([575ce0b](https://github.com/box/box-python-sdk/commit/575ce0b6d48f90db90349244414e98afe5fcbb9f)) Change names of unions (box/box-codegen[#789](https://github.com/box/box-python-sdk/issues/789)) ([#939](https://github.com/box/box-python-sdk/issues/939)) ([cf2b1d5](https://github.com/box/box-python-sdk/commit/cf2b1d5b12be0ff2453867b7d3502437283bf695)) Remove unused models from schemas (box/box-openapi[#547](https://github.com/box/box-python-sdk/issues/547)) ([#932](https://github.com/box/box-python-sdk/issues/932)) ([6ef6d63](https://github.com/box/box-python-sdk/commit/6ef6d63c37e6eccc3489a9076e0a0b0940a6e0d6)), closes [box/box-openapi#542](https://github.com/box/box-openapi/issues/542) [box/box-openapi#544](https://github.com/box/box-openapi/issues/544) [box/box-codegen#781](https://github.com/box/box-codegen/issues/781) [box/box-openapi#545](https://github.com/box/box-openapi/issues/545) For more details check [migration guide](https://github.com/box/box-python-sdk/blob/sdk-gen/migration-guides/from-box-python-sdk-gen-v1-to-box-python-sdk-v10.md) from `box-python-sdk-gen` `v1` to `box-python-sdk` `v10`. ## 3.14.0 (2025-04-09) ### New Features and Enhancements: - Add `stream_file_content` parameter to upload methods ([#890](https://github.com/box/box-python-sdk/issues/890)) ([0e63c00](https://github.com/box/box-python-sdk/commit/0e63c002ee17618c08200c12caae4bb3890b1e90)) ## 3.13.0 (2024-08-22) ### New Features and Enhancements: - Add support for get AI agent default ([#883](https://github.com/box/box-python-sdk/issues/883)) ([c1010e0](https://github.com/box/box-python-sdk/commit/c1010e0349847586a9f00046570e975ec48eb0c5)) ## 3.12.0 (2024-08-06) ### New Features and Enhancements: - add create sign request function with different required parameters ([#878](https://github.com/box/box-python-sdk/issues/878)) ([d972f54](https://github.com/box/box-python-sdk/commit/d972f54dcf9962c6b911422793a682d8f6289f9e)) - Support Box AI features ([#877](https://github.com/box/box-python-sdk/issues/877)) ([3026d2a](https://github.com/box/box-python-sdk/commit/3026d2ab9932cd07aa9ff15a3ac3c3c14d3089b0)) ## 3.11.0 (2024-06-07) ### New Features and Enhancements: - Use upload session `urls` for chunk upload ([#875](https://github.com/box/box-python-sdk/issues/875)) ([c67b03c](https://github.com/box/box-python-sdk/commit/c67b03c7d88533773d62d72f0b626031805d61eb)) ## 3.10.0 (2024-05-22) ### New Features and Enhancements: - Transition to stable status ([#872](https://github.com/box/box-python-sdk/issues/872)) ([6203606](https://github.com/box/box-python-sdk/commit/620360607a51ee302cde61401db1424c9bf48d81)) ### Bug Fixes: - Change exception type for missing location header ([#871](https://github.com/box/box-python-sdk/issues/871)) ([8c5e0ec](https://github.com/box/box-python-sdk/commit/8c5e0eca7e494baa8138dceededa2009abc1717b)) - fix annnotation of oauths access_token ([#855](https://github.com/box/box-python-sdk/issues/855)) ([804780e](https://github.com/box/box-python-sdk/commit/804780e4c8d410590fa20cdb6dd35224d59d2ec0)) - Fix retention policy integration test ([#867](https://github.com/box/box-python-sdk/issues/867)) ([8e0d640](https://github.com/box/box-python-sdk/commit/8e0d6406f26be87799838b0aa57acd62c79d59a2)) - Remove delete classification ([#861](https://github.com/box/box-python-sdk/issues/861)) ([393cfef](https://github.com/box/box-python-sdk/commit/393cfefa57e729f34221a4e5923a4a50532f4013)) - Update exception file get download URL ([#866](https://github.com/box/box-python-sdk/issues/866)) ([94dcbcd](https://github.com/box/box-python-sdk/commit/94dcbcd490d98ff19afd38c9880de8022ad2ec89)) ### 3.9.2 (2023-10-18) ### Bug Fixes: - Remove restriction to version <2 of `urllib3` library ([#851](https://github.com/box/box-python-sdk/issues/851)) ([1dcd82e](https://github.com/box/box-python-sdk/commit/1dcd82e93267bfc68e3a7f8068b3c45ab7e86daf)) ### 3.9.1 (2023-09-14) ### Bug Fixes: - do not retry creating a ZIP when response code is 202 ([#845](https://github.com/box/box-python-sdk/issues/845)) ([3f6ed4e](https://github.com/box/box-python-sdk/commit/3f6ed4e1053a494ed9f2b79828850e059d0a1617)), closes [#844](https://github.com/box/box-python-sdk/issues/844) ## 3.9.0 (2023-09-06) ### New Features and Enhancements: - adds get sign template and get sign templates methods on Client ([#835](https://github.com/box/box-python-sdk/issues/835)) ([fbc783d](https://github.com/box/box-python-sdk/commit/fbc783d5af2e75f883f1a0051613c513139f68fb)) - Support create sign request with template ID ([#834](https://github.com/box/box-python-sdk/issues/834)) ([4f11d75](https://github.com/box/box-python-sdk/commit/4f11d7596488194fc740936fe987f42864003d41)) ### Bug Fixes: - ChunkedUploader Resume Not Closing ThreadPoolExecutor Instances ([#840](https://github.com/box/box-python-sdk/issues/840)) ([f210f00](https://github.com/box/box-python-sdk/commit/f210f00ad823d7755309f2e8804641e0debf8197)) ### 3.8.1 (2023-08-01) ### Bug Fixes: - Fix JSON response validation retry strategy ([#831](https://github.com/box/box-python-sdk/issues/831)) ([69834eb](https://github.com/box/box-python-sdk/commit/69834eb4c91a5aa4bc294a9fa49ecf753979d029)) ## 3.8.0 (2023-07-25) ### New Features and Enhancements: - Support updating all fields of `collaboration` ([#829](https://github.com/box/box-python-sdk/issues/829)) ([6dc7ecc](https://github.com/box/box-python-sdk/commit/6dc7ecc6f9c94e7531c4147a3645927b85928b2c)) ### 3.7.3 (2023-07-07) ### Bug Fixes: - Stop processing data for logging when logging is disabled and cache response `json` ([#824](https://github.com/box/box-python-sdk/issues/824)) ([3079171](https://github.com/box/box-python-sdk/commit/3079171f8dfc1a4c85f8587e8ce90e8fbd826ee4)) ### 3.7.2 (2023-05-26) ### Bug Fixes: - Use the older version of `urllib3` ([#815](https://github.com/box/box-python-sdk/issues/815)) ([ee29aa3](https://github.com/box/box-python-sdk/commit/ee29aa3fcf9ac71e9866913a87414cf625c0b805)) ### 3.7.1 (2023-04-18) ### Bug Fixes: - Rename filter date parameters in legal hold creation according to the documentation ([#810](https://github.com/box/box-python-sdk/issues/810)) ([f52c66a](https://github.com/box/box-python-sdk/commit/f52c66a8a8399a776493537f692460ace2995e40)) ## 3.7.0 (2023-03-08) ### New Features and Enhancements: - Update `retention_policies` and `retention_policy_assignments` ([#803](https://github.com/box/box-python-sdk/issues/803)) ([8b72f7e](https://github.com/box/box-python-sdk/commit/8b72f7e992bce676723a40ac12bde06c8cca3bfb)) - Use multiple threading for chunked upload ([#800](https://github.com/box/box-python-sdk/issues/800)) ([506ce0d](https://github.com/box/box-python-sdk/commit/506ce0d1e72ab4eeb6c5933a32c753e232a2f624)) ### 3.6.2 (2023-02-07) ### Bug Fixes: - Retry `Connection broken` and `Connection reset` requests errors ([#794](https://github.com/box/box-python-sdk/issues/794)) ([f1a0aa4](https://github.com/box/box-python-sdk/commit/f1a0aa434369f06e80654a9f5c4b796100881aa6)) ### 3.6.1 (2023-01-09) ### Bug Fixes: - Retry CCG and JWT auth requests on connection reset error ([#790](https://github.com/box/box-python-sdk/issues/790)) ([205997d](https://github.com/box/box-python-sdk/commit/205997db9870395b9dd042854c4201338dcf925f)), closes [#789](https://github.com/box/box-python-sdk/issues/789) ## 3.6.0 (2023-01-03) ### New Features and Enhancements: - Add support marker in trash get items ([#781](https://github.com/box/box-python-sdk/issues/781)) ([e2d1846](https://github.com/box/box-python-sdk/commit/e2d1846818aeccfcba2a2f09a5cd924c9f6cd534)) - Sanitize proxy credentials ([#782](https://github.com/box/box-python-sdk/issues/782)) ([97fb5aa](https://github.com/box/box-python-sdk/commit/97fb5aa2ed72008570abb327269ecec150632af9)) ### Bug Fixes: - Fix index error when getting an empty list of user term of service statuses ([#780](https://github.com/box/box-python-sdk/issues/780)) ([23d763a](https://github.com/box/box-python-sdk/commit/23d763ac4ba592131c43eb0319929db25d041c30)) - Specify which exceptions should be retried ([#784](https://github.com/box/box-python-sdk/issues/784)) ([833cd46](https://github.com/box/box-python-sdk/commit/833cd46bafe774f19925f78600df90477bf07055)) ### 3.5.1 (2022-11-30) ### Bug Fixes: - Renew connection when Connection reset error occurs ([#771](https://github.com/box/box-python-sdk/issues/771)) ([bcaab27](https://github.com/box/box-python-sdk/commit/bcaab277c3cabba498076d066366abbaa5507904)), closes [#756](https://github.com/box/box-python-sdk/issues/756) [#757](https://github.com/box/box-python-sdk/issues/757) [#763](https://github.com/box/box-python-sdk/issues/763) [#765](https://github.com/box/box-python-sdk/issues/765) [#766](https://github.com/box/box-python-sdk/issues/766) [#770](https://github.com/box/box-python-sdk/issues/770) - Retry JWT auth when got error: required unique `jti` claim. ([#768](https://github.com/box/box-python-sdk/issues/768)) ([878e958](https://github.com/box/box-python-sdk/commit/878e958abfb01740656aaff42492777753e4c8ea)) - Update `pyjtw` dependency to work with Python 3.10 ([#772](https://github.com/box/box-python-sdk/issues/772)) ([b13c5cd](https://github.com/box/box-python-sdk/commit/b13c5cd34105d3f774d3f6d35db7aaf51dd3e247)) ## 3.5.0 (2022-09-23) ### New Features and Enhancements: - Add `redirect_url` and `declined_redirect_url` fields to Sign Request ([#752](https://github.com/box/box-python-sdk/issues/752)) ([5d1f609](https://github.com/box/box-python-sdk/commit/5d1f609ed4c2ddb24bd88ffac256a2809a012698)) - Add support for modifiable retention policies & enable deleting retention policy assignment ([#759](https://github.com/box/box-python-sdk/issues/759)) ([847301b](https://github.com/box/box-python-sdk/commit/847301b43be335365858a80420459dffaada4302)) - Support file request APIs ([#747](https://github.com/box/box-python-sdk/issues/747)) ([71895e3](https://github.com/box/box-python-sdk/commit/71895e33ff7cf339fd8e095a5393f04b86791d5a)) ### Bug Fixes: - Do not log the content of downloaded file ([#760](https://github.com/box/box-python-sdk/issues/760)) ([5d26431](https://github.com/box/box-python-sdk/commit/5d264314f949c1f4d9136efd5cf8f13dd5897c05)) - Fix closing file after chunked upload ([#761](https://github.com/box/box-python-sdk/issues/761)) ([b433692](https://github.com/box/box-python-sdk/commit/b433692ecc07d62d011785a557128c1780ea1647)) ## 3.4.0 (2022-07-06) ### New Features and Enhancements: - Add support for editable shared links for files ([#737](https://github.com/box/box-python-sdk/issues/737)) ([1396200](https://github.com/box/box-python-sdk/commit/1396200c24bf62de63f9cb7949af5997593b9fac)) - Support uploading and deleting user avatar ([#743](https://github.com/box/box-python-sdk/issues/743)) ([fe00a9e](https://github.com/box/box-python-sdk/commit/fe00a9eb3434ee14bc4f01332d54c0272ed5f2d3)) ## 3.3.0 (2022-04-28) ### New Features and Enhancements: - Add support for multiple date time formats ([#722](https://github.com/box/box-python-sdk/issues/722)) ([92364de](https://github.com/box/box-python-sdk/commit/92364de1e7c1eee1e85857546af65c307ca863a0)) ### Bug Fixes: - Add missing fields to metadata template field ([#719](https://github.com/box/box-python-sdk/issues/719)) ([9e574a3](https://github.com/box/box-python-sdk/commit/9e574a3e56f72c0e78a31ddda78bc11d36ff3516)), closes [#717](https://github.com/box/box-python-sdk/issues/717) - Upload session commit return None on 202 ([#718](https://github.com/box/box-python-sdk/issues/718)) ([86a1856](https://github.com/box/box-python-sdk/commit/86a185630e6cce8f742123c7340da08267621313)), closes [#715](https://github.com/box/box-python-sdk/issues/715) ## 3.2.0 (2022-03-11) ### New Features and Enhancements: - Add setting `disposition_at` field for files under retention ([#710](https://github.com/box/box-python-sdk/issues/710)) ([91b1373](https://github.com/box/box-python-sdk/commit/91b13730a0beef2cf2a8a8c71087b11557fa5982)) - Add support for Client Credentials Grant authentication method ([#705](https://github.com/box/box-python-sdk/issues/705)) ([d33d16d](https://github.com/box/box-python-sdk/commit/d33d16db656cb5578f057a7e24f5396d635b5361)) ### Bug Fixes: - Add missing `box_sign` object to `__all__` list ([#708](https://github.com/box/box-python-sdk/issues/708)) ([5d80481](https://github.com/box/box-python-sdk/commit/5d8048116640fa672d6a1d700a6c1111faf87bb9)) - Fix `jwt` import errors ([#711](https://github.com/box/box-python-sdk/issues/711)) ([ee7bb6f](https://github.com/box/box-python-sdk/commit/ee7bb6f1dc5aa65dbf6ffeb18ee130f765f7b49b)) ## 3.1.0 (2022-02-16) ### New Features and Enhancements: - Add support for Python 3.10 ([#692](https://github.com/box/box-python-sdk/issues/692)) ([d4aed82](https://github.com/box/box-python-sdk/commit/d4aed82831af97305bace9a4588d27b23856c306)) - Add support for Python 3.8, Python 3.9, `pypy-3.7` and `pypy-3.8`. ([#689](https://github.com/box/box-python-sdk/issues/689)) ([0aa94cc](https://github.com/box/box-python-sdk/commit/0aa94cc8a5c4db0fc204b27a60690b73c98a89cb)) - Deprecate `use_index` parameter from `MDQ` of files/folders ([#666](https://github.com/box/box-python-sdk/issues/666)) ([2595720](https://github.com/box/box-python-sdk/commit/25957204b82c878e15dc3d118505a741171e9772)) - Replace external package `mock` with Python standard library `unittest.mock` ([#697](https://github.com/box/box-python-sdk/issues/697)) ([6fd6366](https://github.com/box/box-python-sdk/commit/6fd63667aa7da4c794b4fb880d5c2949efe0073f)) - Upgrade cryptography library to the most recent version. ([#668](https://github.com/box/box-python-sdk/issues/668)) ([9c94d08](https://github.com/box/box-python-sdk/commit/9c94d0878515dc75c1f267e2fb1f189a852772b6)), closes [#667](https://github.com/box/box-python-sdk/issues/667) ### Bug Fixes: - `UploadSession.commit` returns `None` when retry limit was reached ([#696](https://github.com/box/box-python-sdk/issues/696)) ([9456fe0](https://github.com/box/box-python-sdk/commit/9456fe0124f4ac4e9c8a7bcc49039f07f310c477)) - Add missing `api_call` decorator for `create_upload_session` ([#686](https://github.com/box/box-python-sdk/issues/686)) ([3510d3a](https://github.com/box/box-python-sdk/commit/3510d3ac085767205854014ecef80fd078d71773)) - Fix chunked upload ([#673](https://github.com/box/box-python-sdk/issues/673)) ([2605fd7](https://github.com/box/box-python-sdk/commit/2605fd782396ad6e42bd11c10f846e771634b7a0)), closes [#671](https://github.com/box/box-python-sdk/issues/671) ## [3.0.1] (2022-01-26) ### Bug Fixes: Move sphinx to test requirements ([#662](https://github.com/box/box-python-sdk/pull/662)) ## [3.0.0] (2022-01-17) ### ⚠ Breaking Changes: Drop support for python 2.7 ([#645](https://github.com/box/box-python-sdk/pull/645)) Add missing parameter `stream_position` to `get_admin_events` method ([#648](https://github.com/box/box-python-sdk/pull/648)) Drop support for python 3.5 ([#654](https://github.com/box/box-python-sdk/pull/654)) Remove deprecated code using insensitive language ([#651](https://github.com/box/box-python-sdk/pull/651)) Enforcing usage of keyword-only arguments in some functions ([#656](https://github.com/box/box-python-sdk/pull/656)) ### New Features and Enhancements: Remove `six` library and `__future__` imports ([#646](https://github.com/box/box-python-sdk/pull/646)) Add type hints to method parameters ([#650](https://github.com/box/box-python-sdk/pull/650)) ### Bug Fixes: Add missing `api_call` decorators on `multiput` calls ([#653](https://github.com/box/box-python-sdk/pull/653)) Added `py.typed` file for `mypy` to recognise type hints ([#657](https://github.com/box/box-python-sdk/pull/657)) ## [2.14.0] (2021-12-08) ### New Features and Enhancements: Add `admin_logs_streaming` support for events stream ([#623](https://github.com/box/box-python-sdk/pull/623)) Add `vanity_name` parameter for creating shared link to a file or folder ([#637](https://github.com/box/box-python-sdk/pull/637)) Add getting files and file versions under retention for a retention policy assignment ([#633](https://github.com/box/box-python-sdk/pull/633)) Support base item operations for WebLink class ([#639](https://github.com/box/box-python-sdk/pull/639)) ### Bug Fixes: Limit cryptography to version <3.5.0 ([#636](https://github.com/box/box-python-sdk/pull/636)) Avoid raising 404 when a thumbnail cannot be generated for a file ([#642](https://github.com/box/box-python-sdk/pull/642)) ## [2.13.0] (2021-09-30) ### New Features and Enhancements: Sensitive language replacement ([#609](https://github.com/box/box-python-sdk/pull/609)) Add BoxSign support ([#617](https://github.com/box/box-python-sdk/pull/617)) ### Bug Fixes: Upgrade cryptography to version 3 ([#620](https://github.com/box/box-python-sdk/pull/620)) ## [2.12.1] (2021-06-16) ### Bug Fixes: Fix bug when thumbnail representations are not found ([#597](https://github.com/box/box-python-sdk/pull/597)) ## [2.12.0] (2021-04-16) ### New Features and Enhancements: Add metadata query functionality ([#574](https://github.com/box/box-python-sdk/pull/574)) Add folder lock functionality ([#581](https://github.com/box/box-python-sdk/pull/581)) Add search query support for the `include_recent_shared_links` field ([#582](https://github.com/box/box-python-sdk/pull/582)) Update `get_groups()` to use documented parameter to filter by name ([#586](https://github.com/box/box-python-sdk/pull/586)) ## [2.11.0] (2021-01-11) ### New Features and Enhancements: Deprecate and add method for getting a thumbnail ([#572](https://github.com/box/box-python-sdk/pull/572)) ## [2.10.0] (2020-10-02) ### New Features and Enhancements: Add support for `copyInstanceOnItemCopy` field for metadata templates ([#546](https://github.com/box/box-python-sdk/pull/546)) Allow creating tasks with the `action` and `completion_rule` parameters ([#544](https://github.com/box/box-python-sdk/pull/544)) Add zip functionality ([#539](https://github.com/box/box-python-sdk/pull/539)) ### Bug Fixes: Fix bug with updating a collaboration role to owner ([#536](https://github.com/box/box-python-sdk/pull/536)) Allow ints to be passed in as item IDs ([#530](https://github.com/box/box-python-sdk/pull/530)) ## [2.9.0] (2020-06-23) - Fix exception handling for OAuth - Fix path parameter sanitization ## [2.8.0] (2020-04-24) - Added support for token exchange using shared links - Added the ability to pass in a SHA1 value for file uploads ## [2.7.1] (2020-01-21) Fixed bug in `_get_retry_request_callable` introduced in release 2.7.0 which caused chunked uploads to fail ## [2.7.0] (2020-01-16) Fixed bug in `get_admin_events` function which caused errors when the optional `event_types` parameter was omitted. - Add marker based pagination for listing users. Added support for more attribute parameters when uploading new files and new versions of existing files. Combined preflight check and lookup of accelerator URL into a single request for uploads. - Fixed JWT retry logic so a new JTI claim is generated on each retry. Fixed bug where JWT authentication requests returned incorrect error codes. Fixed retry logic so when a `Retry-After` header is passed back from the API, the SDK waits for the amount of time specified in the header before retrying. ## [2.6.1] (2019-10-24) - Added `api_call` decorator for copy method. ## [2.6.0] (2019-08-29) Added a new get events function with created_before, created_after, and event_type parameters ## [2.5.0] (2019-06-20) Allowed passing `None` to clear configurable_permission field in the add_member() method. ## [2.4.1] (2019-05-16) - Patch release for issues with v2.4.0. ## [2.4.0] (2019-05-16) Added ability to set metadata on a [file](https://github.com/box/box-python-sdk/blob/main/docs/usage/files.md#set-metadata) or a [folder](https://github.com/box/box-python-sdk/blob/main/docs/usage/folders.md#set-metadata) ## [2.3.2] (2019-03-29) - Fixing an issue in v2.3.1 where package could not be installed. ## [2.3.1] (2019-03-29) - Fixing an issue in v2.3.0 where package could not be installed. ## [2.3.0] (2019-03-28) Added the ability to set file description upon upload Added support for basic authenticated proxy and unauthenticated proxy ## [2.2.2] (2019-03-14) - Updated requests-toolbelt dependency restriction. ## [2.2.1] (2019-02-15) - Fixing an issue in v2.2.0 where package could not be installed. ## [2.2.0] (2019-02-14) Added abilty for user to retrieve an avatar for a user. Changed retry strategy to use exponential backoff with randomized jitter. ## [2.1.0] (2019-02-07) Added ability for user to chunk upload files and resume uploads for interrupted uploads. Added ability to verify webhook message. Added ability for user to add metadata classification to [files](https://github.com/box/box-python-sdk/blob/main/docs/usage/files.md#set-a-classification) and [folders](https://github.com/box/box-python-sdk/blob/main/docs/usage/folders.md#set-a-classification). Bugfix where calling `.response_object()` method on an API object could throw. ## [2.0.0] ### ⚠ Breaking Changes Python 2.6 is no longer supported. Python 3.3 is no longer supported. `client.search()` now returns a `Search` object that exposes a `query()` method to call the Search API. Use `client.search().query(**search_params)` instead of `client.search(**search_params)`. `client.get_memberships(...)` has a change in signature. The limit and offset parameters have swapped positions to keep consistency with the rest of the SDK. `client.groups(...)` has been changed to `client.get_groups`. The limit and offset parameters have swapped positions. The `unshared_at` parameter for `item.create_shared_link(...)` and `file.get_shared_link_download_url(...)` now takes an [https://tools.ietf.org/html/rfc3339#section-5.8](https://tools.ietf.org/html/rfc3339#section-5.8) `unicode` string instead of a `datetime.date`. Users migrating from v1.x can pass the value of `date.isoformat()` instead of the `date` object itself. `Events.get_events(...)` now returns a list of `Event` instances rather than a list of `dict` representing events. `Event` inherits from `Mapping` but will not have all the same capabilities as `dict`. Your code is affected if you use `Events.get_events(...)` and expect a list of `dict` rather than a list of `Mapping`. For example, if you use `__setitem__` (`event['key'] = value`), `update()`, `copy()`, or if your code depends on the `str` or `repr` of the `Event`. Use of `__getitem__` (`event['key']`), `get()`, and other `Mapping` methods is unaffected. See [https://docs.python.org/2.7/library/collections.html#collections-abstract-base-classes](https://docs.python.org/2.7/library/collections.html#collections-abstract-base-classes) for methods supported on `Mapping` instances. Migration: If you still need to treat an `Event` as a `dict`, you can get a deepcopy of the original `dict` using the new property on `BaseAPIJSONObject`, `response_object`. `LoggingNetwork` has been removed. Logging calls are now made from the `DefaultNetwork` class. In addition, the logging format strings in this class have changed in a way that will break logging for any applications that have overridden any of these strings. They now use keyword format placeholders instead of positional placeholders. All custom format strings will now have to use the same keyword format placeholders. Though this is a breaking change, the good news is that using keyword format placeholders means that any future changes will be automatically backwards-compatibile (as long as there aren't any changes to change/remove any of the keywords). `File.update_contents()` and `File.update_contents_with_stream()` now correctly return a `File` object with the correct internal JSON structure. Previously it would return a `File` object where the file JSON is hidden inside `file['entries'][0]`. This is a bugfix, but will be a breaking change for any clients that have already written code to handle the bug. Comparing two objects (e.g. a `File` and a `Folder`) that have the same Box ID but different types with `==` will now correctly return `False`. The following methods now return iterators over the entire collection of returned objects, rather than a single page: - `client.users()` - `client.groups()` - `client.search().query()` - `folder.get_items()` Since `folder.get_items()` now returns an iterator, `folder.get_items_limit_offset()` and `folder.get_items_marker()` have been removed. To use marker based paging with `folder.get_items()`, pass the `use_marker=True` parameter and optionally specify a `marker` parameter to begin paging from that point in the collection. Additionally, `group.membership()` has been renamed to `group.get_memberships()`, and returns an iterator of membership objects. This method no longer provides the option to return tuples with paging information. The `Translator` class has been reworked; `translator.get(...)` still returns the constructor for the object class corresponding to the passed in type, but `translator.translate(...)` now takes a `Session` and response object directly and produces the translated object. This method will also translate any nested objects found. This change obviates the need for `GroupMembership` to have a custom constructor; it now uses the default `BaseObject` constructor. ### Features All publicly documented API endpoints and parameters should now be supported by the SDK Added more flexibility to the object translation system: Can create non-global `Translator` instances, which can extend or not-extend the global default `Translator`. - Can initialize `BoxSession` with a custom `Translator`. Can register custom subclasses on the `Translator` which is associated with a `BoxSession` or a `Client`. All translation of API responses now use the `Translator` that is referenced by the `BoxSession`, instead of directly using the global default `Translator`. - Nested objects are now translated by `translator.translate()` When the `auto_session_renewal` is `True` when calling any of the request methods on `BoxSession`, if there is no access token, `BoxSession` will renew the token before making the request. This saves an API call. Auth objects can now be closed, which prevents them from being used to request new tokens. This will also revoke any existing tokens (though that feature can be disabled by passing `revoke=False`). Also introduces a `closing()` context manager method, which will auto-close the auth object on exit. Various enhancements to the `JWTAuth` baseclass: The `authenticate_app_user()` method is renamed to `authenticate_user()`, to reflect that it may now be used to authenticate managed users as well. See the method docstring for details. `authenticate_app_user()` is now an alias of `authenticate_user()`, in order to not introduce an unnecessary backwards-incompatibility. The `user` argument to `authenticate_user()` may now be either a user ID string or a `User` instance. Before it had to be a `User` instance. The constructor now accepts an optional `user` keyword argument, which may be a user ID string or a `User` instance. When this is passed, `authenticate_user()` and can be called without passing a value for the `user` argument. More importantly, this means that `refresh()` can be called immediately after construction, with no need for a manual call to `authenticate_user()`. Combined with the aforementioned improvement to the `auto_session_renewal` functionality of `BoxSession`, this means that authentication for `JWTAuth` objects can be done completely automatically, at the time of first API call. The constructor now supports passing the RSA private key in two different ways: by file system path (existing functionality), or by passing the key data directly (new functionality). The `rsa_private_key_file_sys_path` parameter is now optional, but it is required to pass exactly one of `rsa_private_key_file_sys_path` or `rsa_private_key_data`. Document that the `enterprise_id` argument to `JWTAuth` is allowed to be `None`. `authenticate_instance()` now accepts an `enterprise` argument, which can be used to set and authenticate as the enterprise service account user, if `None` was passed for `enterprise_id` at construction time. Authentications that fail due to the expiration time not falling within the correct window of time are now automatically retried using the time given in the Date header of the Box API response. This can happen naturally when the system time of the machine running the Box SDK doesn't agree with the system time of the Box API servers. Added an `Event` class. Moved `metadata()` method to `Item` so it's now available for `Folder` as well as `File`. The `BaseAPIJSONObject` baseclass (which is a superclass of all API response objects) now supports `__contains__` and `__iter__`. They behave the same as for `Mapping`. That is, `__contains__` checks for JSON keys in the object, and `__iter__` yields all of the object's keys. Added a `RecentItem` class. Added `client.get_recent_items()` to retrieve a user's recently accessed items on Box. Added support for the `can_view_path` parameter when creating new collaborations. Added `BoxObjectCollection` and subclasses `LimitOffsetBasedObjectCollection` and `MarkerBasedObjectCollection` to more easily manage paging of objects from an endpoint. These classes manage the logic of constructing requests to an endpoint and storing the results, then provide `__next__` to easily iterate over the results. The option to return results one by one or as a `Page` of results is also provided. Added a `downscope_token()` method to the `Client` class. This generates a token that has its permissions reduced to the provided scopes and for the optionally provided `File` or `Folder`. Added methods for configuring `JWTAuth` from config file: `JWTAuth.from_settings_file` and `JWTAuth.from_settings_dictionary`. Added `network_response` property to `BoxOAuthException`. API Configuration can now be done per `BoxSession` instance. ### Other - Added extra information to `BoxAPIException`. - Added `collaboration()` method to `Client`. Reworked the class hierarchy. Previously, `BaseEndpoint` was the parent of `BaseObject` which was the parent of all smart objects. Now `BaseObject` is a child of both `BaseEndpoint` and `BaseAPIJSONObject`. `BaseObject` is the parent of all objects that are a part of the REST API. Another subclass of `BaseAPIJSONObject`, `APIJSONObject`, was created to represent pseudo-smart objects such as `Event` that are not directly accessible through an API endpoint. Added `network_response_constructor` as an optional property on the `Network` interface. Implementations are encouraged to override this property, and use it to construct `NetworkResponse` instances. That way, subclass implementations can easily extend the functionality of the `NetworkResponse`, by re-overriding this property. This property is defined and used in the `DefaultNetwork` implementation. Move response logging to a new `LoggingNetworkResponse` class (which is made possible by the aforementioned `network_response_constructor` property). Now the SDK decides whether to log the response body, based on whether the caller reads or streams the content. Add more information to the request/response logs from `LoggingNetwork`. - Add logging for request exceptions in `LoggingNetwork`. Bugfix so that the return value of `JWTAuth.refresh()` correctly matches that of the auth interface (by returning a tuple of ((access token), (refresh token or None)), instead of just the access token). In particular, this fixes an exception in `BoxSession` that always occurred when it tried to refresh any `JWTAuth` object. Fixed an exception that was being raised from `ExtendableEnumMeta.__dir__()`. - CPython 3.6 support. - Increased required minimum version of six to 1.9.0. ## [1.5.3] (2016-05-26) Bugfix so that `JWTAuth` opens the PEM private key file in `'rb'` mode. ## [1.5.2] (2016-05-19) Bugfix so that `OAuth2` always has the correct tokens after a call to `refresh()`. ## [1.5.1] (2016-03-23) Added a `revoke()` method to the `OAuth2` class. Calling it will revoke the current access/refresh token pair. ## [1.5.0] (2016-03-17) Added a new class, `LoggingClient`. It's a `Client` that uses the `LoggingNetwork` class so that requests to the Box API and its responses are logged. Added a new class, `DevelopmentClient` that combines `LoggingClient` with the existing `DeveloperTokenClient`. This client is ideal for exploring the Box API or for use when developing your application. Made the `oauth` parameter to `Client` optional. The constructor now accepts new parameters that it will use to construct the `OAuth2` instance it needs to auth with the Box API. Changed the default User Agent string sent with requests to the Box API. It is now 'box-python-sdk-<version>'. Box objects have an improved `__repr__`, making them easier to identify during debugging sessions. Box objects now implement `__dir__`, making them easier to explore. When created with a Box API response, these objects will now include the API response fields as attributes. ## [1.4.2] (2016-02-23) Make sure that `__all__` is only defined once, as a list of `str`. Some programs (e.g. PyInstaller) naively parse __init__.py files, and if `__all__` is defined twice, the second one will be ignored. This can cause `__all__` to appear as a list of `unicode` on Python 2. Create wheel with correct conditional dependencies and license file. Change the `license` meta-data from the full license text, to just a short string, as specified in [1][2]. [1] <[https://docs.python.org/3.5/distutils/setupscript.html#additional-meta-data](https://docs.python.org/3.5/distutils/setupscript.html#additional-meta-data)> [2] <[https://www.python.org/dev/peps/pep-0459/#license](https://www.python.org/dev/peps/pep-0459/#license)> Include entire test/ directory in source distribution. test/__init__.py was previously missing. Update documentation. ## [1.4.1] (2016-02-11) - Files now support getting a direct download url. ## [1.4.0] (2016-01-05) - Added key id parameter to JWT Auth. ## [1.3.3] (2016-01-04) ### Bugfixes Fixed import error for installations that don't have redis installed. Fixed use of `raw_input` in the developer token auth for py3 compatibility. ## [1.3.3] (2015-12-22) Added a new class, `DeveloperTokenClient` that makes it easy to get started using the SDK with a Box developer token. It uses another new class, `DeveloperTokenAuth` for auth. ### Bugfixes Added limit, offset, and filter_term parameters to `client.users()` to match up with the Box API. ## [1.3.2] (2015-11-16) - Fix `boxsdk.util.log.setup_logging()` on Python 3. ## [1.3.1] (2015-11-06) Add requests-toolbelt to setup.py (it was accidentally missing from 1.3.0). ## [1.3.0] (2015-11-05) - CPython 3.5 support. - Support for cryptography>=1.0 on PyPy 2.6. - Travis CI testing for CPython 3.5 and PyPy 2.6.0. - Added a logging network class that logs requests and responses. Added new options for auth classes, including storing tokens in Redis and storing them on a remote server. - Stream uploads of files from disk. ## [1.2.2] (2015-07-22) - The SDK now supports setting a password when creating a shared link. ## [1.2.1] (2015-07-22) ### Bugfixes Fixed an ImportError for installs that didn't install the [jwt] extras. ## [1.2.0] (2015-07-13) Added support for Box Developer Edition. This includes JWT auth (auth as enterprise or as app user), and `create_user` functionality. - Added support for setting shared link expiration dates. - Added support for setting shared link permissions. Added support for 'As-User' requests. See [https://developer.box.com/en/guides/authentication/oauth2/as-user/](https://developer.box.com/en/guides/authentication/oauth2/as-user/) Improved support for accessing shared items. Items returned from the `client.get_shared_item` method will remember the shared link (and the optionally provided shared link password) so methods called on the returned items will be properly authorized. ## [1.1.7] (2015-05-28) - Add context_info from failed requests to BoxAPIException instances. ### Bugfixes `Item.remove_shared_link()` was trying to return an incorrect (according to its own documentation) value, and was also attempting to calculate that value in a way that made an incorrect assumption about the API response. The latter problem caused invocations of the method to raise TypeError. The method now handles the response correctly, and correctly returns type `bool`. ## [1.1.6] (2015-04-17) - Added support for the Box accelerator API for premium accounts. ## [1.1.5] (2015-04-03) - Added support for preflight check during file uploads and updates. ## [1.1.4] (2015-04-01) - Added support to the search endpoint for metadata filters. Added support to the search endpoint for filtering based on result type and content types. ## [1.1.3] (2015-03-26) Added support for the /shared_items endpoint. `client.get_shared_item` can be used to get information about a shared link. See [https://developers.box.com/docs/#shared-items](https://developers.box.com/docs/#shared-items) ## [1.1.2] (2015-03-20) ### Bugfixes Certain endpoints (e.g. search, get folder items) no longer raise an exception when the response contains items that are neither files nor folders. ## [1.1.1] (2015-03-11) A minor change to namespacing. The `OAuth2` class can now be imported directly from `boxsdk`. Demo code has been updated to reflect the change. ## [1.1.0] (2015-03-02) ### Features The SDK now supports Box metadata. See the metadata docs for more information. The object paging API has been improved. SDK extensions that need fine-grained control over when the next "page" of API results will be fetched can now do that. ### Example Code The example code has been improved to be more robust and to work with all Python versions supported by the SDK (CPython 2.6-2.7, CPython 3.3-3.4, and PyPy). The example code has an example on how to use the new metadata feature. - The README has improved code examples. ### Bugfixes Oauth2 redirect URIs containing non-ASCII characters are now supported. --- ### Changelog **Type:** page | **Section:** Additional Resources Changelog All notable changes to this project will be documented in this file. See standard-version for commit guidelines. 10.2.0 (2025-1… # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## 10.2.0 (2025-11-19) ### New Features and Enhancements - Support Archive API (box/box-codegen[#865](https://github.com/box/box-windows-sdk-v2/issues/865)) ([#1266](https://github.com/box/box-windows-sdk-v2/issues/1266)) ([bca0473](https://github.com/box/box-windows-sdk-v2/commit/bca0473d9ff02f286f3face267a30c2ab17d5b7b)) - Support GET enterprise configuration API (box/box-openapi[#559](https://github.com/box/box-windows-sdk-v2/issues/559)) ([#1198](https://github.com/box/box-windows-sdk-v2/issues/1198)) ([426aaed](https://github.com/box/box-windows-sdk-v2/commit/426aaed8418baf6cbd31dbe884aa91ce9bb7ef52)) - Include `pdb` files when packing .net root project (box/box-codegen[#859](https://github.com/box/box-windows-sdk-v2/issues/859)) ([#1169](https://github.com/box/box-windows-sdk-v2/issues/1169)) ([8b7e7c8](https://github.com/box/box-windows-sdk-v2/commit/8b7e7c89f9f533ee09a8c096afd141abbbc72080)) - Use generated `RetryStrategy` for retrying requests (box/box-codegen[#872](https://github.com/box/box-windows-sdk-v2/issues/872)) ([#1232](https://github.com/box/box-windows-sdk-v2/issues/1232)) ([5567fef](https://github.com/box/box-windows-sdk-v2/commit/5567feff459b91e7b018bda5def60ad45548599f)) ## 10.1.0 (2025-10-06) ### Bug Fixes - Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556](https://github.com/box/box-windows-sdk-v2/issues/556)) ([#1147](https://github.com/box/box-windows-sdk-v2/issues/1147)) ([c41a444](https://github.com/box/box-windows-sdk-v2/commit/c41a4449a27be4484f986c3260950ae863c1285c)) - Make `role` parameter of update collaboration optional (box/box-openapi[#557](https://github.com/box/box-windows-sdk-v2/issues/557)) ([#1156](https://github.com/box/box-windows-sdk-v2/issues/1156)) ([8247918](https://github.com/box/box-windows-sdk-v2/commit/824791817bd4c65770f2ef65bb7b0eb3b48b892b)) ### New Features and Enhancements - Handle Dictionary with object values deserialization (box/box-codegen[#850](https://github.com/box/box-windows-sdk-v2/issues/850)) ([#1144](https://github.com/box/box-windows-sdk-v2/issues/1144)) ([611b474](https://github.com/box/box-windows-sdk-v2/commit/611b47424ff8773b9aabfb772a65f0ebca754e9e)) ## 10.0.0 (2025-09-17) Introducing **`Box SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`](https://github.com/box/box-windows-sdk-v2/tree/sdk-gen) branch, `v10` will ultimately become the main branch. ### Breaking Changes - This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here](https://github.com/box/box-windows-sdk-v2/tree/sdk-gen/docs). ### What's New in v10 **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide](https://github.com/box/box-windows-sdk-v2/blob/sdk-gen/migration-guides/from-v5-to-v10.md) for details. For more information, see the [SDK versioning strategy document](https://developer.box.com/guides/tooling/sdks/sdk-versioning). Follow developer changelog for future updates. ### What’s New Compared to Dotnet SDK Gen v1.12.0 #### ⚠ BREAKING CHANGES - Change names of unions (box/box-openapi[#549](https://github.com/box/box-windows-sdk-v2/issues/549)) ([#1007](https://github.com/box/box-windows-sdk-v2/issues/1007)) ([fcef4ec](https://github.com/box/box-windows-sdk-v2/commit/fcef4ecab38435fb4a79e2db8fcf2c5ad931986b)) - Remove unused models from schemas (box/box-openapi[#547](https://github.com/box/box-windows-sdk-v2/issues/547)) ([#999](https://github.com/box/box-windows-sdk-v2/issues/999)) ([ffcb488](https://github.com/box/box-windows-sdk-v2/commit/ffcb4888e6ad52f10028f92c49b5d919cb1ac620)) #### Bug Fixes - Fix `net462` debug build ([#1020](https://github.com/box/box-windows-sdk-v2/issues/1020)) ([04f8343](https://github.com/box/box-windows-sdk-v2/commit/04f8343c200e45ebe65bd29f03f55a44e76bcbde)) - Rename external user deletion method (box/box-codegen[#796](https://github.com/box/box-windows-sdk-v2/issues/796)) ([#1024](https://github.com/box/box-windows-sdk-v2/issues/1024)) ([13928c5](https://github.com/box/box-windows-sdk-v2/commit/13928c559bd3e97d060c48997b05ca384333d03d)) #### New Features and Enhancements - Add External User Deletion API (box/box-openapi[#550](https://github.com/box/box-windows-sdk-v2/issues/550)) ([#1009](https://github.com/box/box-windows-sdk-v2/issues/1009)) ([2178bc8](https://github.com/box/box-windows-sdk-v2/commit/2178bc87c8b724598616e99f0a528c7b21ff12c6)) - Add missing webhook events (box/box-openapi[#554](https://github.com/box/box-windows-sdk-v2/issues/554)) ([#1068](https://github.com/box/box-windows-sdk-v2/issues/1068)) ([7fe3b99](https://github.com/box/box-windows-sdk-v2/commit/7fe3b99cae1cf5be9ad3ec7bec54c97f198fd8c7)) - Add Net Framework 462 support for `v10` (box/box-codegen[#773](https://github.com/box/box-windows-sdk-v2/issues/773)) ([#986](https://github.com/box/box-windows-sdk-v2/issues/986)) ([67366c7](https://github.com/box/box-windows-sdk-v2/commit/67366c7274faa5c758490d393605c76220aa6a79)) - Allow injecting custom decryption mechanism for `jwt` ([#974](https://github.com/box/box-windows-sdk-v2/issues/974)) ([b877355](https://github.com/box/box-windows-sdk-v2/commit/b877355493b60dc6f9c1a576927d6e0c62ec27f3)) For more details check [migration guide](https://github.com/box/box-windows-sdk-v2/blob/sdk-gen/migration-guides/from-dotnet-sdk-gen-v1-to-box-windows-sdk-v10.md) from `box-dotnet-sdk-gen` `v1` to `box-windows-sdk-v2` `v10`. ## 5.8.0 (2024-07-22) ### New Features and Enhancements: - add support for AI ([#965](https://github.com/box/box-windows-sdk-v2/issues/965)) ([a9e130a](https://github.com/box/box-windows-sdk-v2/commit/a9e130a99cf9862f9b50178a6188b2820f9f2c32)) ### Bug Fixes: - Bump `System.IdentityModel.Tokens.Jwt` dependency version to `v6.35.0` ([#962](https://github.com/box/box-windows-sdk-v2/issues/962)) ([6e47237](https://github.com/box/box-windows-sdk-v2/commit/6e472378e2fccea2db67bf5ef0eb017a31491703)), closes [#960](https://github.com/box/box-windows-sdk-v2/issues/960) [#961](https://github.com/box/box-windows-sdk-v2/issues/961) - remove `Microsoft.AspNetCore.StaticFiles` and `System.Web` dependencies ([#964](https://github.com/box/box-windows-sdk-v2/issues/964)) ([2c8eedc](https://github.com/box/box-windows-sdk-v2/commit/2c8eedc91c473aca52249aad443345471ca7eafc)) ### 5.7.1 (2024-06-28) ### Bug Fixes: - Add missing enum values to `BoxSortBy` ([#953](https://github.com/box/box-windows-sdk-v2/issues/953)) ([1f89bb0](https://github.com/box/box-windows-sdk-v2/commit/1f89bb047442dcdc9045aeff1c3d6aadf61e2856)), closes [#952](https://github.com/box/box-windows-sdk-v2/issues/952) - Add missing fields of `EventSource` ([#956](https://github.com/box/box-windows-sdk-v2/issues/956)) ([138eda5](https://github.com/box/box-windows-sdk-v2/commit/138eda516ad59f08968d88b04e9bb06df3c397f2)) - do not recreate Random each time ([#945](https://github.com/box/box-windows-sdk-v2/issues/945)) ([d03b1ce](https://github.com/box/box-windows-sdk-v2/commit/d03b1ce65d4077e2895acfce3bc286ea501669aa)), closes [#944](https://github.com/box/box-windows-sdk-v2/issues/944) [#944](https://github.com/box/box-windows-sdk-v2/issues/944) [#944](https://github.com/box/box-windows-sdk-v2/issues/944) [#944](https://github.com/box/box-windows-sdk-v2/issues/944) ## 5.7.0 (2024-02-27) ### New Features and Enhancements: - add marker-based pagination version of `GetFolderItems` ([#936](https://github.com/box/box-windows-sdk-v2/issues/936)) ([f877a8f](https://github.com/box/box-windows-sdk-v2/commit/f877a8f9105d65a3e3ca459fcbf4a1bb653ff0f3)) - Support sign request signer group ID ([#938](https://github.com/box/box-windows-sdk-v2/issues/938)) ([096a098](https://github.com/box/box-windows-sdk-v2/commit/096a09805b189c591289e77ae5f8a8e6f1b466f1)) ### Bug Fixes: - Remove delete classification ([#932](https://github.com/box/box-windows-sdk-v2/issues/932)) ([fb59489](https://github.com/box/box-windows-sdk-v2/commit/fb594897850ad9daacf75cab702f3765cc7168c0)) ### 5.6.1 (2023-11-29) ### Bug Fixes: - support object value in `BoxConflictErrorContextInfo` ([#930](https://github.com/box/box-windows-sdk-v2/issues/930)) ([496f758](https://github.com/box/box-windows-sdk-v2/commit/496f758c3436b1834188078027b7305ca6a98fce)) ## 5.6.0 (2023-09-25) ### New Features and Enhancements: - Support `iframeable_embed_url` for sign request ([#925](https://github.com/box/box-windows-sdk-v2/issues/925)) ([e9de994](https://github.com/box/box-windows-sdk-v2/commit/e9de994cea97afcc1c3bc52ddf1cc023b9ee731c)) ## 5.5.0 (2023-09-20) ### New Features and Enhancements: - Add shared link header support in file and folder managers ([#923](https://github.com/box/box-windows-sdk-v2/issues/923)) ([ffbfc72](https://github.com/box/box-windows-sdk-v2/commit/ffbfc72289c70cdd91ea500326944a40b89993e3)) ## 5.4.0 (2023-09-07) ### New Features and Enhancements: - Support Sign Templates and new Sign Request statuses ([#920](https://github.com/box/box-windows-sdk-v2/issues/920)) ([78580fb](https://github.com/box/box-windows-sdk-v2/commit/78580fbd3de553273970376b96bc28c7c5614a97)) ## 5.3.0 (2023-09-04) ### New Features and Enhancements: - add `attachment` content type to `SignRequestSigner` ([#913](https://github.com/box/box-windows-sdk-v2/issues/913)) ([ad612ff](https://github.com/box/box-windows-sdk-v2/commit/ad612ffc7821a9ecbc180e3dbeefe16d3e397820)) ### Bug Fixes: - replace deprecated `BouncyCastle` library ([#909](https://github.com/box/box-windows-sdk-v2/issues/909)) ([f00f2af](https://github.com/box/box-windows-sdk-v2/commit/f00f2af9c5277b42e6a62060c1b0229ecff0203e)) ### 5.2.2 (2023-05-23) ### Bug Fixes: - catch exception when .net core version cannot be determined ([#906](https://github.com/box/box-windows-sdk-v2/issues/906)) ([e3be209](https://github.com/box/box-windows-sdk-v2/commit/e3be209b20a5c323f547d7634663883613959180)) ### 5.2.1 (2023-04-18) ### Bug Fixes: - Catch all exceptions when getting User Agent header ([#901](https://github.com/box/box-windows-sdk-v2/issues/901)) ([75d8874](https://github.com/box/box-windows-sdk-v2/commit/75d887470698a5f312610cebd58be58aee7eaa9b)) ## 5.2.0 (2023-03-14) ### New Features and Enhancements: - add `Id` to `MetadataTemplateField` ([#890](https://github.com/box/box-windows-sdk-v2/issues/890)) ([b7fe214](https://github.com/box/box-windows-sdk-v2/commit/b7fe2149e1a0ade8573b497b7bb36e9f3c4f4a82)) - add `start_date_field` and `description` to retention policies ([#888](https://github.com/box/box-windows-sdk-v2/issues/888)) ([100b722](https://github.com/box/box-windows-sdk-v2/commit/100b722ce4909395c00b527677564f37a61ec2cb)) - add configurable `JWTAudience` claim ([#897](https://github.com/box/box-windows-sdk-v2/issues/897)) ([50219fd](https://github.com/box/box-windows-sdk-v2/commit/50219fdfd553d6335b6f0b4341719b09680c4ba0)) - add shared link support to `GetFolderItemsAsync` ([#892](https://github.com/box/box-windows-sdk-v2/issues/892)) ([0eba85c](https://github.com/box/box-windows-sdk-v2/commit/0eba85c693763472c51fe81cbc43222305e9eefb)) ### Bug Fixes: - Use fixed value of `aud` field in `JWT` claim ([#896](https://github.com/box/box-windows-sdk-v2/issues/896)) ([8c9982d](https://github.com/box/box-windows-sdk-v2/commit/8c9982d160ec4806c796ee2621b1811232ea59c1)) ## 5.1.0 (2023-01-17) ### New Features and Enhancements: - `BoxCCGAuth` add User and Admin clients factory methods without initial token ([#883](https://github.com/box/box-windows-sdk-v2/issues/883)) ([c1337fc](https://github.com/box/box-windows-sdk-v2/commit/c1337fc9d765bf7d4bc1757ea832bec92a602f76)) ## 5.0.0 (2023-01-12) ### ⚠ BREAKING CHANGES - upgrade .net framework to 4.6.2 (#881) - remove deprecated methods (#881) - remove `use_index` references (#881) - return proper object from `GetFileVersionsUnderRetentionForAssignmentAsync`(#881) ### New Features and Enhancements: - upgrade .net framework to 4.6.2 ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([f1989aa](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569)), closes [#863](https://github.com/box/box-windows-sdk-v2/issues/863) - remove deprecated methods ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([f1989aa](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569)), closes [#874](https://github.com/box/box-windows-sdk-v2/issues/874) - remove `use_index` references ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([f1989aa](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569)), closes [#870](https://github.com/box/box-windows-sdk-v2/issues/870) ### Bug Fixes: - Added pagination option to `IBoxFilesManager#ViewVersionsAsync` ([#869](https://github.com/box/box-windows-sdk-v2/issues/869)) ([2324495](https://github.com/box/box-windows-sdk-v2/commit/232449531440227a0c8b3489ceda813fe4f4a73f)), closes [#866](https://github.com/box/box-windows-sdk-v2/issues/866) - return proper object from `GetFileVersionsUnderRetentionForAssignmentAsync` ([#881](https://github.com/box/box-windows-sdk-v2/issues/881)) ([f1989aa](https://github.com/box/box-windows-sdk-v2/commit/f1989aa94cd085ad4bec04b4ebedb04f40455569)), closes [#875](https://github.com/box/box-windows-sdk-v2/issues/875) ## 4.6.0 (2022-10-18) ### New Features and Enhancements: - Add `redirect_url` and `declined_redirect_url` to Sign Request ([#853](https://github.com/box/box-windows-sdk-v2/issues/853)) ([5ef2f18](https://github.com/box/box-windows-sdk-v2/commit/5ef2f18985d8c3b8e7c0cdba5709785bfb1d5f34)) - Add support for modifiable retention policies & enable deleting retention policy assignment ([#856](https://github.com/box/box-windows-sdk-v2/issues/856)) ([564904f](https://github.com/box/box-windows-sdk-v2/commit/564904fa2ce0b1881a2f07b80cc3bb3e648310d0)) ## 4.5.0 (2022-08-24) ### New Features and Enhancements: - Add `content-type` field to sign request ([#850](https://github.com/box/box-windows-sdk-v2/issues/850)) ([054d3e1](https://github.com/box/box-windows-sdk-v2/commit/054d3e1a5f44b6a4a0292e8f9444266b2de0fff0)) - expose `effective_access` in `BoxSharedLink` [#843](https://github.com/box/box-windows-sdk-v2/issues/843) ([d84ddd4](https://github.com/box/box-windows-sdk-v2/commit/d84ddd48aac489ecdd1d9dc740a7672cb064b0ca)) ### Bug Fixes: - fix null reference exception when it's not possible to get `runtime` version from the assembly ([#851](https://github.com/box/box-windows-sdk-v2/issues/851)) ([77046fb](https://github.com/box/box-windows-sdk-v2/commit/77046fb0c1ce80b6e7e2dc30058ed275e46e990c)) - replace infinite retries with exponential backoff strategy in file representations ([#835](https://github.com/box/box-windows-sdk-v2/issues/835)) ([f2a5713](https://github.com/box/box-windows-sdk-v2/commit/f2a57136078de8b1fc59ec2c4a9e98c062d9d19b)) ## 4.4.0 (2022-06-14) ### New Features and Enhancements: - add `can_edit` field to `SharedLink` ([#831](https://github.com/box/box-windows-sdk-v2/issues/831)) ([e0d4197](https://github.com/box/box-windows-sdk-v2/commit/e0d4197070db0dbd947f4a51a6bbb1e01c0b0cdf)) - add `version_number` to `BoxFileVersion` ([#820](https://github.com/box/box-windows-sdk-v2/issues/820)) ([f174358](https://github.com/box/box-windows-sdk-v2/commit/f174358973caefc9262df480208341fd8233dc7f)) - add upload and delete support for Avatar API ([#829](https://github.com/box/box-windows-sdk-v2/issues/829)) ([4dcb84a](https://github.com/box/box-windows-sdk-v2/commit/4dcb84ade78d6bd0bc621ff2ed7f5f886486858a)) ### Bug Fixes: - Fix initialization of `BoxAPIException` object ([#828](https://github.com/box/box-windows-sdk-v2/issues/828)) ([a298f01](https://github.com/box/box-windows-sdk-v2/commit/a298f01187f84200825ec6ed4748fe8bbd717d11)) - properly dispose response on exception ([#819](https://github.com/box/box-windows-sdk-v2/issues/819)) ([8415bd3](https://github.com/box/box-windows-sdk-v2/commit/8415bd3dbe42910b99f99535247a26f8d8e645c1)) ### 4.3.1 (2022-04-19) ### Bug Fixes: - simplify base `urls` usage ([#815](https://github.com/box/box-windows-sdk-v2/issues/815)) ([f8e7344](https://github.com/box/box-windows-sdk-v2/commit/f8e73447afa5c0a893c3c4ace922fc360a376f66)) ## 4.3.0 (2022-04-01) ### New Features and Enhancements: - add `SourceLink` support for Core project ([#795](https://github.com/box/box-windows-sdk-v2/issues/795)) ([a9cbede](https://github.com/box/box-windows-sdk-v2/commit/a9cbedece2ffb4f832be880bebf35b715c9cb28b)) ### Bug Fixes: - add missing enum to string parsing in several places ([#813](https://github.com/box/box-windows-sdk-v2/issues/813)) ([e370282](https://github.com/box/box-windows-sdk-v2/commit/e3702826216132dfe1fb061af95a8d9700f114d4)) - properly cast response when uploading a new file version using session ([#810](https://github.com/box/box-windows-sdk-v2/issues/810)) ([73d877f](https://github.com/box/box-windows-sdk-v2/commit/73d877ff679b5999ea50cdfa68f14b0e2169ea65)) ## 4.2.0 (2022-02-10) ### Bug Fixes: - correctly pass null when rolling out user from the enterprise ([#792](https://github.com/box/box-windows-sdk-v2/issues/792)) ([c85c573](https://github.com/box/box-windows-sdk-v2/commit/c85c5735865b7dd97ffa1428a8f57d2edff6811b)) - Creating BoxAuthenticationFailedException no longer throws an exception ([#790](https://github.com/box/box-windows-sdk-v2/issues/790)) ([55a706e](https://github.com/box/box-windows-sdk-v2/commit/55a706e4091271aa55208a260b2f4f96e1527698)) - Null Argument Exception in AutoPaginate ([#666](https://github.com/box/box-windows-sdk-v2/issues/666)) ([c61f08c](https://github.com/box/box-windows-sdk-v2/commit/c61f08cc02d5c95ff71ef700e97393a0dc3dc890)) ### New Features and Enhancements: - add admin_logs_streaming support ([#797](https://github.com/box/box-windows-sdk-v2/issues/797)) ([a775e1e](https://github.com/box/box-windows-sdk-v2/commit/a775e1e5c7696a1e5f82b5dc7edbed8eb09f640d)) - add Client Credentials Grant auth support ([#799](https://github.com/box/box-windows-sdk-v2/issues/799)) ([b8a64ca](https://github.com/box/box-windows-sdk-v2/commit/b8a64ca3887298feccef5185f6bfec4c3771b5a9)) - add disposition_at field to the File object ([#793](https://github.com/box/box-windows-sdk-v2/issues/793)) ([2766a91](https://github.com/box/box-windows-sdk-v2/commit/2766a914fad1eb40371cd4430b3450360088b331)) - add possibility to set auth token uri in BoxConfig ([#794](https://github.com/box/box-windows-sdk-v2/issues/794)) ([ae8cd8b](https://github.com/box/box-windows-sdk-v2/commit/ae8cd8b91dd91b8a786e53ff5b3501d2700686a4)) - deprecate index_name in ExecuteMetadataQuery ([#800](https://github.com/box/box-windows-sdk-v2/issues/800)) ([6a6a0e4](https://github.com/box/box-windows-sdk-v2/commit/6a6a0e4a0e41ec70ec33acacba00bee6c7ee881f)) ## 4.1.0 (2021-12-14) ### Bug Fixes: - add missing configureAwait(false) when awaiting to prevent deadlocks ([#775](https://github.com/box/box-windows-sdk-v2/issues/775)) ([b16267e](https://github.com/box/box-windows-sdk-v2/commit/b16267e8f3dca5396e87be660e30a1e9405d8139)) ### New Features and Enhancements: - add configurable Timeout for BoxClient ([#779](https://github.com/box/box-windows-sdk-v2/issues/779)) ([ac842ed](https://github.com/box/box-windows-sdk-v2/commit/ac842ed4ba1a2dfe499706524441bc6ae3b3c192)) - add file request api ([#777](https://github.com/box/box-windows-sdk-v2/issues/777)) ([1098f75](https://github.com/box/box-windows-sdk-v2/commit/1098f75983e2d784521f13b8d53df0e55d03203b)) - add vanity_name to SharedLink ([#782](https://github.com/box/box-windows-sdk-v2/issues/782)) ([00a1e26](https://github.com/box/box-windows-sdk-v2/commit/00a1e265569d76c2c9593aa259202d7febef629c)) ## 4.0.0 (2021-11-02) ### Breaking changes: - Extract interfaces for BoxClient and Managers to improve testability ([#603](https://github.com/box/box-windows-sdk-v2/pull/603)) - Add BoxConfigBuilder and make BoxConfig immutable ([#737](https://github.com/box/box-windows-sdk-v2/pull/737)) - Expose tasks from async methods ([#742](https://github.com/box/box-windows-sdk-v2/pull/742)) - Use DateTimeOffset instead of DateTime ([#749](https://github.com/box/box-windows-sdk-v2/pull/749)) - Rework returned exceptions ([#753](https://github.com/box/box-windows-sdk-v2/pull/753)) - Upgrade .NET Standard to 2.0 ([#755](https://github.com/box/box-windows-sdk-v2/pull/755)) ### New Features and Enhancements: - Add ability to get files under retention for assignment and file versions under retention for assignment ([#734](https://github.com/box/box-windows-sdk-v2/pull/734)) - Add `is_collaboration_restricted_to_enterprise` flag support for `Folder` update ([#732](https://github.com/box/box-windows-sdk-v2/pull/732)) - Replace insensitive language ([#738](https://github.com/box/box-windows-sdk-v2/pull/738)) - Add new, easier to use method for create terms of service user status ([#740](https://github.com/box/box-windows-sdk-v2/pull/740)) - Allow sort and direction parameter to be passed in when getting trashed items ([#754](https://github.com/box/box-windows-sdk-v2/pull/754)) - Add support for Task completion_rule field ([#758](https://github.com/box/box-windows-sdk-v2/pull/758)) - Add BoxSign API support ([#765](https://github.com/box/box-windows-sdk-v2/pull/765)) ### Bug Fixes: - Fix `Cannot access a closed Stream.Request` exception during upload ([#739](https://github.com/box/box-windows-sdk-v2/pull/739)) ([#757](https://github.com/box/box-windows-sdk-v2/pull/757)) ## 3.26.0 [2021-04-01] **New Features and Enhancements:** - Add filter fields to get file version retentions ([#717](https://github.com/box/box-windows-sdk-v2/pull/717)) - Add support for search param to get shared link items ([#721](https://github.com/box/box-windows-sdk-v2/pull/721)) - Add folder lock functionality ([#725](https://github.com/box/box-windows-sdk-v2/pull/725)) ## 3.25.0 [2020-10-19] **New Features and Enhancements:** - Add support for filtering when getting Groups (#703) - Add zip functionality (#700) - Deprecate one of the overloaded `ExecuteMetadataQueryAsync()` methods (#699) - Add support for `copyInstanceOnItemCopy` field for metadata templates (#698) **Bug Fixes:** - Fix bug with JWT Authentication automatic retry (#697) ## 3.24.0 [2020-07-21] - Add path parameter sanitization - Add support for the classification field for Files and Folders - Fix bug with notification email field deserializing for `BoxUser` - Add `fields` parameter for metadata query - Add ability to set a request timeout for `FoldersManager.UpdateInformationAsync()` and `UsersManager.MoverUserFolderAsync()` ## 3.23.0 [2020-05-12] - Add ability to get and set a notification email address for a user - Fix deadlock issue for JWT authentication in UI elements - Add support for the uploader display name field for Files and File Versions ## 3.22.0 [2020-02-25] - Fixed Authentication Request Retries - Added the ability to query Box items based on their metadata. The method to do so is `MetadataManager.ExecuteMetadataQueryAsync()`. - Added `TrashedAt` field to `BoxItem` objects (file, folder, weblink). - Added marker based pagination for get users methods - Updated retry logic to retry on 503 status codes returned by the API - Provide better details for debugging, if the HttpClient used to make API requests times out ## 3.21.0 [2019-12-05] - Added `fields` parameter to `UsersManager.GetUserInformationAsync()` - Added `ExternalAppUserId` property to `BoxUser` model - Added the ability to set the `TrackingCodes` property when updating or creating a user (thanks @Cpcrook!) ## 3.20.0 [2019-09-19] - Added missing fields for File Version object. ## 3.19.0 [2019-08-29] - Added `FILE_VERSION_RESTORE` constant to Admin Event. - Added action_by field to Enterprise Event. - Audited missing fields on BoxFile and BoxFolder objects. - Better error handling and messaging for errors pertaining to OAuth2 error responses. ## 3.18.0 [2019-06-20] Added `sort` and `direction` parameters to `FoldersManager.GetFolderItemsAsync()` to enable sorting the folder items returned - Added a new `SearchManager.QueryAsync()` method with correct types for file size filter parameters - Deprecated the `SearchManager.SearchAsync()` method, which is superseded by `SearchManager.QueryAsync()` - Added support for setting the `IsExternalCollabRestricted` parameter when creating and updating Users Added a `WebProxy` property to `BoxConfig` instances, which can be used to manually set the network proxy used by the SDK ## 3.17.0 [2019-05-09] - Fixed the encoding of dates in the query parameters for Events and Search endpoints - Deprecated `FilesManager.DownloadStreamAsync()` and introduced a replacement method with correct parameter types for byte offsets: `FilesManager.DownloadAsync()` ## 3.16.0 [2019-04-29] - Added `sort` and `direction` parameters to `client.SearchManager.SearchAsync()` to control sort order - Added `extension` parameter to `client.FilesManager.GetThumbnailAsync()` to control which thumbnail format is returned (thanks @guilmori!) - Fixed a bug where query string parameters were not correctly encoded Added `SetFileMetadataAsync()` and `SetFolderMetadataAsync()` methods to `client.MetadataManager` to set metadata keys and values, overwriting existing values for the provided keys. - Automatically retry most API calls when the API responds with a transient error status code ## 3.15.0 [2019-03-28] - Added support for passing custom IBoxService to BoxJWTAuth constructor. ## 3.14.1 [2019-03-07] - Removed unnecessary package.config from sample files. ## 3.14.0 [2019-02-28] - Added trace ID to API response exception message. - Fix deserialization of translated task assignment status. ## 3.13.1 [2019-02-21] - Fixed an issue where some objects related to Events did not have their `.Id` property correctly deserialized from JSON ## 3.13.0 [2019-02-14] Added the `.InviteEmail` property to `BoxCollaboration` objects, which displays the email address for the invited user in a pending collaboration - Added `.Timezone`, `.IsExternalCollabRestricted`, `.Tags`, and `.Hostname` properties to `BoxUser` objects ## 3.12.0 [2019-02-07] Added `client.FilesManager.GetCollaborationsCollectionAsync()` and deprecated `client.FilesManager.GetCollaborationsAsync()` to enable paging through the entire collection of collaborations on a file Added `client.WebLinksManager.CopyAsync()`, `client.WebLinksManager.CreateSharedLinkAsync()`, and `client.WebLinksManager.DeleteSharedLinkAsync()` - Added `client.UsersManager.GetUserAvatarAsync()` for retrieving a user's avatar image ## 3.11.0 [2019-01-17] - Added support for reading and writing more Group fields - Fixed an issue where the `UnsharedAt` field of a shared link could not be set to `null` - Fixed renaming a file on new version upload - Added the ability to set the content modification timestamp on file version upload - Fixed issues around reading the source of an event when the source item is a web link ## 3.10.0 [2018-12-14] - Added support for Metadata Cascade Policies ## 3.9.3 [2018-09-04] - Strong named the assembly. ## 3.9.2 [2018-06-14] - Added support for [setting flag](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Models/Request/BoxFolderRequest.cs#L39) allowing non owners of a folder to invite collaborators. ## 3.9.1 [2018-06-07] - Fixed bug where Xamarin applications would run out of connections ## 3.9.0 [2018-05-10] - Added support for Storage Policies ## 3.8.0 [2018-04-30] - Fixed an issue where users could not create `BoxClient` on Xamarin - Added `File` property to `BoxLock` objects in events - Added `MetadataManager.DeleteMetadataTemplate(string scope, string template)` for deleting a Metadata template - Made API URLs modifiable in `BoxConfig` - Improved API response error objects/messages ## 3.7.0 [2018-04-10] - Added support for assigning a Retention Policy to a metadata template - Added `CONTENT_ACCESS` event type to enum ## 3.6.0 [2018-03-27] - Fixed an issue where a "Security protocol not supported" exception could be thrown on MacOS - Added `client.FilesManager.GetRepresentationContentAsync()` for fetching a stream over representation contents - Fixed parsing of some `Source` objects on `BoxEvent` objects ## 3.5.2 [2018-03-21] - Switched to exponential backoff when the SDK receives a rate limit or server error response. - Force support for TLSv1.1 or higher when available to improve the security of connections to the Box API. - Perform modified retry on JWT auth for when the local clock and the Box Server clock are not aligned as well as if the JWT ID has already been consumed. - Made `name` parameter optional on `RestoreTrashedAsync()`. ## 3.4.2 [2018-01-31] - Deprecated `uploadFileVersionUsingSessionAsync()`(which returned just a Box File Version) in favor of `uploadNewVersionUsingSessionAsync()`(which returns the entire Box File object containing the Box File Version). - Added support for OAuth2 access token creation type to the AdminEventTypesEnum - Added `ExpiresAt` param to `BoxCollaborationRequest`. ## 3.4.1 [2018-01-09] - Added support for [Collaboration Whitelist](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxCollaborationWhitelistManager.cs) endpoint - Added [Event Types Enum](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Config/Constants.cs#L287) - Fixed deserialization issue with BoxRepresentationStatus (#429) ## 3.3.0 [2017-11-22] - Added support for [Terms of Service](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxTermsOfServiceManager.cs) endpoint - Added support for [Metadata Template ID](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxMetadataManager.cs#L175) endpoint - Added missing fields for Folder Model (#414) ## 3.2.0 [2017-10-04] - Added support for [Representations](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxFilesManager.cs#L1216) endpoint - Added support for [Chunked Upload New File Version](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxFilesManager.cs#L423) - Fixed BoxEventsManager DateTime formatter (#400) ## 3.1.0 [2017-08-18] - Added Unified Metadata Support (#379) ## 3.0.0 [2017-07-28] - Major version bump to 3, targeting net45 - Upgrading the whole sln to vs2017 - Added support for [Recents](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxRecentItemsManager.cs#L1) endpoint - New operation on [Metadata](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxMetadataManager.cs#L1) endpoint - Progress on [Chunked Upload New File](https://github.com/box/box-windows-sdk-v2/blob/main/Box.V2/Managers/BoxFilesManager.cs#L463) - Minor bug fixes --- ### Changelog **Type:** page | **Section:** Additional Resources Changelog All notable changes to this project will be documented in this file. See standard-version for commit guidelines. 10.1.0 (2025-1… # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## 10.1.0 (2025-11-20) ### New Features and Enhancements - Support GET enterprise configuration API (box/box-openapi[#559](https://github.com/box/box-ios-sdk/issues/559)) ([#1179](https://github.com/box/box-ios-sdk/issues/1179)) ([936edf7](https://github.com/box/box-ios-sdk/commit/936edf7532765dfe3c0ccb7175966ee4ec265cf3)) - Support Archive API (box/box-openapi[#563](https://github.com/box/box-ios-sdk/issues/563)) ([#1238](https://github.com/box/box-ios-sdk/issues/1238)) ([a2662e3](https://github.com/box/box-ios-sdk/commit/a2662e3bd088956769ed95d588e71623d0537c40)) ### 10.0.1 (2025-10-06) ### Bug Fixes - Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556](https://github.com/box/box-ios-sdk/issues/556)) ([#1128](https://github.com/box/box-ios-sdk/issues/1128)) ([3e9a78c](https://github.com/box/box-ios-sdk/commit/3e9a78ce710b0161e0912d1ee6af0b7758875fbc)) - Make `role` parameter of update collaboration optional (box/box-openapi[#557](https://github.com/box/box-ios-sdk/issues/557)) ([#1138](https://github.com/box/box-ios-sdk/issues/1138)) ([3fc5dc9](https://github.com/box/box-ios-sdk/commit/3fc5dc9a62bd0cabc8987d56c0d63b94fa7ef14d)) ## 10.0.0 (2025-09-17) Introducing **`Box iOS SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`](https://github.com/box/box-ios-sdk/tree/sdk-gen) branch, `v10` will ultimately become the main branch. ### Breaking Changes - This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here](https://github.com/box/box-ios-sdk/tree/sdk-gen/docs). ### What's New in v10 **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide](https://github.com/box/box-ios-sdk/blob/sdk-gen/migration-guides/from-v5-to-v10.md) for details. For more information, see the [SDK versioning strategy document](https://developer.box.com/guides/tooling/sdks/sdk-versioning). Follow developer changelog for future updates. ### What’s New Compared to Box Swift SDK Gen v0.6.3 ### New Features and Enhancements - Add External User Deletion API (box/box-codegen[#550](https://github.com/box/box-ios-sdk/issues/969)) ([74571fb](https://github.com/box/box-ios-sdk/commit/74571fb6675d0ff90d0ec4ef2baf7113816093f8)) - Add missing webhook events (box/box-openapi[#554](https://github.com/box/box-ios-sdk/issues/554)) ([#1048](https://github.com/box/box-ios-sdk/issues/1048)) ([b8bf1ad](https://github.com/box/box-ios-sdk/commit/b8bf1add360119f70a626f663cd810f9598ec794)) - Retry requests for network errors in Swift (box/box-codegen[#820](https://github.com/box/box-ios-sdk/issues/820)) ([#1051](https://github.com/box/box-ios-sdk/issues/1051)) ([ba21450](https://github.com/box/box-ios-sdk/commit/ba214507b37d2a842bcf044b5b4392b442486d6f)) For more details check [migration guide](https://github.com/box/box-ios-sdk/blob/sdk-gen/migration-guides/from-box-swift-sdk-gen-v0-to-box-ios-sdk-v10.md) from `box-swift-sdk-gen` `v0` to `box-ios-sdk` `v10`. ## 5.6.0 (2024-04-05) ### New Features and Enhancements - Add privacy manifest files ([#924](https://github.com/box/box-ios-sdk/issues/924)) ([cbef168](https://github.com/box/box-ios-sdk/commit/cbef168bb872941899be26116c647ac29f5dd44b)) - Add support for `visionOS` ([#916](https://github.com/box/box-ios-sdk/issues/916)) ([a05b243](https://github.com/box/box-ios-sdk/commit/a05b2433f1b2d0c1ec72f946e0706d03a4548703)) - Add support for additional fields in `SignRequest` ([#919](https://github.com/box/box-ios-sdk/issues/919)) ([36f464c](https://github.com/box/box-ios-sdk/commit/36f464c23a161f5d0fcc6858c3615d884ce8ee07)) - Make fields from `TokenInfo` publicly available ([#920](https://github.com/box/box-ios-sdk/issues/920)) ([eb26f47](https://github.com/box/box-ios-sdk/commit/eb26f47bbde6749f44f149e95b3610e41c16d2f2)) ## 5.5.0 (2023-08-08) ### New Features and Enhancements - Add missing values in `SignRequestSignerInputContentType` and `SignRequestStatus` along with the tests ([#907](https://github.com/box/box-ios-sdk/issues/907)) ([56a8250](https://github.com/box/box-ios-sdk/commit/56a82500c0abe648825d8300979601a25f792c84)) ### Bug Fixes - Identify iPhone Simulator on Apple Silicon ([#902](https://github.com/box/box-ios-sdk/issues/902)) ([7731a7f](https://github.com/box/box-ios-sdk/commit/7731a7f434add74e163a76511fe1e2a3f26517f7)) - Make code compatible with macOS. ([#900](https://github.com/box/box-ios-sdk/issues/900)) ([3b0016e](https://github.com/box/box-ios-sdk/commit/3b0016e44e674db0ea429273c03e5a29177372bf)) - Remove use of deprecated string scanner API. ([#901](https://github.com/box/box-ios-sdk/issues/901)) ([af5f0e5](https://github.com/box/box-ios-sdk/commit/af5f0e52d184fbd27f56d972fb93b3e543547773)) ### 5.4.2 (2023-04-19) ### Bug Fixes - An emoty string `nextMarker` should be treated as end-of-paging. ([#893](https://github.com/box/box-ios-sdk/issues/893)) ([49c17de](https://github.com/box/box-ios-sdk/commit/49c17de588fcffcd2d151ce9047ebc09965f80ce)) ### 5.4.1 (2023-02-24) ### Bug Fixes - Fix `listAssignments` and `assign` methods in `RetentionPolicyModule` ([#886](https://github.com/box/box-ios-sdk/issues/886)) ([b668888](https://github.com/box/box-ios-sdk/commit/b668888f35136dd1239526b70cc31a10bdd04744)) ## 5.4.0 (2022-11-08) ### New Features and Enhancements - Add `content_type` field to Sign Requests signer ([#871](https://github.com/box/box-ios-sdk/issues/871)) ([1ec5b01](https://github.com/box/box-ios-sdk/commit/1ec5b0149f01cd3a18f5cba39b77e01678655932)) - Add `redirect_url` and `declined_redirect_url` to Sign Request ([#870](https://github.com/box/box-ios-sdk/issues/870)) ([f94d988](https://github.com/box/box-ios-sdk/commit/f94d98862d2fdb2603f4684b963d29d04e0fdb3d)) - Add support for `sign` webhook triggers ([#875](https://github.com/box/box-ios-sdk/issues/875)) ([994bfaf](https://github.com/box/box-ios-sdk/commit/994bfaf3ead983f5014808f6c9e5ffe167ab8e42)) - Added method to remove retention policy assignment ([#873](https://github.com/box/box-ios-sdk/issues/873)) ([c5f146c](https://github.com/box/box-ios-sdk/commit/c5f146c960bb1f940418975078d83fb63ff3bdec)) - Added support for Modifiable Retention Policies ([#872](https://github.com/box/box-ios-sdk/issues/872)) ([e2b7a17](https://github.com/box/box-ios-sdk/commit/e2b7a178c6592c9f7d1e7ce691c215680b3f45d0)) ## 5.3.0 (2022-08-19) ### New Features and Enhancements - add `version_number` to `FileVersion` ([#853](https://github.com/box/box-ios-sdk/issues/853)) ([ac81667](https://github.com/box/box-ios-sdk/commit/ac81667ea409cbbe3de9be0c316c630ec6fbc2f5)) - Add support for async API in `FoldersModule` ([#851](https://github.com/box/box-ios-sdk/issues/851)) ([58b9dde](https://github.com/box/box-ios-sdk/commit/58b9dde412eddc76915c99b960702f4af95b62a4)) - Add support for file request API ([#867](https://github.com/box/box-ios-sdk/issues/867)) ([ec7813e](https://github.com/box/box-ios-sdk/commit/ec7813e31706c08aaaeac75debdba8d7802786cb)) - Add support for upload and delete Avatar API ([#863](https://github.com/box/box-ios-sdk/issues/863)) ([1e967f5](https://github.com/box/box-ios-sdk/commit/1e967f5a3eaafbeb894cf8289032ad8ce8664266)) - Add support of Editable Shared Link ([#861](https://github.com/box/box-ios-sdk/issues/861)) ([bc6ea18](https://github.com/box/box-ios-sdk/commit/bc6ea18bf2e10bebeb62401a55001139f05c76df)) - Expose `send()` method public in `BoxClient` ([#843](https://github.com/box/box-ios-sdk/issues/843)) ([23caaca](https://github.com/box/box-ios-sdk/commit/23caaca5b6fe8ec1b23470193bc011a62c66d49f)) ### Bug Fixes - Respect Content-Type coming from custom headers ([#841](https://github.com/box/box-ios-sdk/issues/841)) ([a7c69a7](https://github.com/box/box-ios-sdk/commit/a7c69a73c6142d4b82c718d2d311098dd2b70250)) ### 5.2.1 (2022-04-22) ### Bug Fixes - Expose fields from `BoxResponse` for custom API calls ([#833](https://github.com/box/box-ios-sdk/issues/833)) ([bae1536](https://github.com/box/box-ios-sdk/commit/bae1536236a22de198281012b0ee43c84b0e3485)) ## 5.2.0 (2022-03-18) ### New Features and Enhancements - Add `disposition_at` field to the `File` object ([#814](https://github.com/box/box-ios-sdk/issues/814)) ([3c90df0](https://github.com/box/box-ios-sdk/commit/3c90df038b9f490a9d38af85404fa1d6ddcd5d0d)) - Add support for Client Credentials Grant authentication method ([#821](https://github.com/box/box-ios-sdk/issues/821)) ([f6d7542](https://github.com/box/box-ios-sdk/commit/f6d75424e8c0d91517e3ffb8df67f77ad3f2374b)) ## 5.1.0 (2022-01-17) ### New Features and Enhancements - Allow to customize URL for the `OAuth2` authorization page ([#811](https://github.com/box/box-ios-sdk/issues/811)) ([1901d29](https://github.com/box/box-ios-sdk/commit/1901d296a2be4b0f2eef25eda06928aebc81de9a)) - **Events:** Add support for `admin_logs_streaming` stream type ([#800](https://github.com/box/box-ios-sdk/issues/800)) ([0a3118e](https://github.com/box/box-ios-sdk/commit/0a3118ef95c2eb42b0080d0352784849e85eb422)) - **RetentionPolicy:** New API for get files and file versions under retention ([#807](https://github.com/box/box-ios-sdk/issues/807)) ([38327f0](https://github.com/box/box-ios-sdk/commit/38327f09a92dba7827e1866940a643d624757762)) - **SharedLink:** add support for `vanity_name` ([#799](https://github.com/box/box-ios-sdk/issues/799)) ([3ea6eb2](https://github.com/box/box-ios-sdk/commit/3ea6eb2a1c2b713fd0769e93a2dc4ee51da695fd)) ### Bug Fixes - **SignRequest:** Fix encoding `date_value` to `yyyy-mm-dd` format in `prefillTag` ([#806](https://github.com/box/box-ios-sdk/issues/806)) ([4f902a4](https://github.com/box/box-ios-sdk/commit/4f902a47482de55ec69b5522e6cf5affd653b4c8)) ## 5.0.0 (2021-10-28) ### ⚠ BREAKING CHANGES - Update PagingIterator to return pages and simplify logic ([#737](https://github.com/box/box-ios-sdk/pull/737)) - Remove insensitive language field `collaborationWhiteList` in BoxClient. Use `collaborationAllowList` instead. ([#790](https://github.com/box/box-ios-sdk/pull/790)) ### New Features and Enhancements - Replace insensitive event types ([#785](https://github.com/box/box-ios-sdk/pull/785)) - Add SignAPI support ([#792](https://github.com/box/box-ios-sdk/pull/792)) ## 4.4.0 (2021-04-20) ### New Features and Enhancements - Add support for search param to get shared link items ([#756](https://github.com/box/box-ios-sdk/pull/756)) - Add support for folder lock functionality ([#759](https://github.com/box/box-ios-sdk/pull/759)) - Add support for copyInstanceOnItemCopy field for metadata templates ([#763](https://github.com/box/box-ios-sdk/pull/763)) - Add support for stream upload of new file versions and add support for 'If-Match' header when uploading new file versions ([#766](https://github.com/box/box-ios-sdk/pull/766)) - Add additional details field for `Event` model ([#770](https://github.com/box/box-ios-sdk/pull/770)) ### Bug Fixes - Pass only a scheme to iOS Authentication APIs ([#755](https://github.com/box/box-ios-sdk/pull/755)) - Update `listEnterpriseGroups()` to use documented parameter for filtering by name ([#757](https://github.com/box/box-ios-sdk/pull/757)) - Fix bug for OAuth where the callback is not called if token has been revoked ([#762](https://github.com/box/box-ios-sdk/pull/762)) ## 4.3.0 (2021-02-01) ### New Features and Enhancements - Add support for OAuth 2 custom callback URL ([#746](https://github.com/box/box-ios-sdk/pull/746)) - Add support for zip download ([#749](https://github.com/box/box-ios-sdk/pull/749)) ### Bug Fixes - Update gems to patch kramdown vulnerability ([#742](https://github.com/box/box-ios-sdk/pull/742)) - Update gems to patch activesupport vulnerability ([#745](https://github.com/box/box-ios-sdk/pull/745)) ## 4.2.0 (2020-11-16) ### New Features and Enhancements - Add error information to OAuth web session failures ### Bug Fixes - Fix bug with creating collaboration - Fix bug with getting enterprise events ## 4.1.0 (2020-05-15) ### New Features and Enhancements - Add ability to cancel uploads and downloads - Add support for the uploader display name field for Files and File Versions - Add support for the classification field for Files and Folders - Add path parameter sanitization ### Bug Fixes - Fix logging of API responses ## 4.0.0 (2020-02-13) ### ⚠ BREAKING CHANGES - Change `status` field for task assignments from a String to an Enum - Remove macOS, tvOS, and watchOS support ### New Features and Enhancements - Make authentication session classes `OAuth2Session`, `SingleTokenSession`, and `DelegatedAuthSession` public ## 3.1.0 (2020-01-09) ### New Features and Enhancements - Add shared link downscoping - Add closure parameter for progress of uploads and downloads - Add marker based pagination to list users endpoint ## 3.0.0 (2019-11-18) ### New Features and Enhancements - Added file specific icons for the Sample Apps. ## 3.0.0-rc.3 (2019-11-14) ### ⚠ BREAKING CHANGES - For Module methods that returned a collection of objects, changed from returning a PaginationIterator to returning a PagingIterator in a completion. - Modules are now automatically instantiated with the BoxClient object and no longer allow the client app to instantiate them - Related RetentionPolicy classes no longer allow rawData to be set by the client app - UploadPartDescription made private - Fixed bug with exponential backoff and changed SDK configuration item "retryAfterTime" to "retryBaseInterval" ### New Features and Enhancements - RetentionPolicyModule methods made public - Added additional supporting types - Improved support for logging to file, allow for custom file path, and fixed some related bugs - Improved console logging formatting - Updated Sample Apps to use new PagingIterator responses ## 3.0.0-rc.2 (2019-10-30) ### ⚠ BREAKING CHANGES - Changed SDK errors from customValue enum cases to specific enum cases ### New Features and Enhancements - Added Xcode 11 + iOS 13 support to Travis CI ## 3.0.0-rc.1 (2019-10-18) ### ⚠ BREAKING CHANGES - Changed TaskAssignment.resolutionState from String to new AssignmentState enum type - Changed Group.groupType from String to new GroupType enum type - Changed Folder.allowedSharedLinkAccessLevels from [String] to new [SharedLinkAccess] enum type - Changed File.allowedInviteeRoles from [String] to new [CollaborationRole] enum type - Network responses with 4xx or 5xx status codes are now transformed into an API Error - CollaborationItem changed from class to enum - CommentItem changed from class to enum - FolderItem changed from class to enum - WebhookItem changed from class to enum - TaskItem changed from class to enum - JSON decoding errors now emit expected type - Public method names changed to a new convention in many of the "module" classes - Redesigned error classes and error hierarchy - Temporarily removed progress closure for uploads and downloads ### New Features and Enhancements Added Xcode 11 support (SDK builds still target iOS 11.0) Removed AlamoFire dependency Added support for Device Pins Added SDK Configuration URL validation Added SDK-level constants rootFolder and currentUser for convenience Added support for Collaboration Whitelist endpoints Added support for Retention Policy endpoints Added support for Tasks endpoints Added support for Webhooks endpoints Added support for Groups and Group Membership endpoints Added support for Legal Holds endpoints Added support for Terms of Service endpoints Added support for Terms of Service User Status endpoints Added support for Watermarking endpoints Added support for Storage Policy endpoints Added support for Metadata Cascade Policy endpoints Added support for User endpoints Added support for Events endpoints Added Error Views in Sample Apps Improved structure and usability of Sample Apps ## 3.0.0-alpha.3 (2019-08-29) ### ⚠ BREAKING CHANGES - Changed File Entry Container "entries" from optional to not optional ### New Features and Enhancements - Added support for Web Links - Added support for Trash endpoints - Added support for Recent Items - Added support for File Version endpoints - Added support for Delete File endpoint - Added support for Chunked Upload Endpoints - Added support for upload preflight check - Added support for downloading a representation of a file - Added support for custom OAuth2 Callback URL - Added KeychainTokenStore for OAuth2SampleApp ## 3.0.0-alpha.2 (2019-08-08) ### ⚠ BREAKING CHANGES Moved some constants to different namespaces: - `Box.rootFolder` is now `BoxSDK.Constants.rootFolder` - `Box.currentUser` is now `BoxSDK.Constants.currentUser` Updated the arguments that `client.files.updateFileInfo()` takes for consistency with the rest of the SDK Changed the type of the `expiresAt` arguments in `client.files.lockFile()` from `String` to `Date` Removed unused arguments from `client.files.unlockFile()` Changed the type of the `unsharedAt` and `password` arguments of `client.files.setSharedLink()` and `client.folders.setSharedLink()` to accept `.null` values Replaced the `access`, `password`, `unsharedAt`, and `canDownload` arguments of `client.folders.updateFolder()` with a single `sharedLink` argument to enable setting the entire shared link field to `.null` in order to remove the shared link Replaced `client.getFavoritesCollectionId()` with `client.collections.getFavoritesCollection()` Removed `client.collections.addItemsToCollection()` and `client.collections.deleteItemsFromCollection()` Changed the result type for `client.files.addFileToFavorites()`, `client.files.addFileToCollection()`, `client.files.removeFileFromFavorites()`, and `client.files.removeFileFromCollection()` from `Void` to `File` Changed the result type for `client.folders.addFolderToFavorites()`, `client.folders.addFolderToCollection()`, `client.folders.removeFolderFromFavorites()`, and `client.folders.removeFolderFromCollection()` from `Void` to `Folder` ### New Features and Enhancements - Added support for [token downscoping](./docs/usage/authentication.md#token-exchange) - Added a `KeychainTokenStore` implementation to enable persisting authentication state on the Keychain - The SDK now automatically clears the token store after destroying a client and revoking its tokens ## [3.0.0-alpha.1] (2019-07-25) Initial beta release :tada: --- ### Changelog **Type:** page | **Section:** Additional Resources Changelog All notable changes to this project will be documented in this file. See standard-version for commit guidelines. 10.2.0 (2025-1… # Changelog All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. ## 10.2.0 (2025-11-19) ### Bug Fixes - Fix parsing `OffsetDateTime` from String (box/box-codegen[#887](https://github.com/box/box-java-sdk/issues/887)) ([#1582](https://github.com/box/box-java-sdk/issues/1582)) ([d1288c4](https://github.com/box/box-java-sdk/commit/d1288c4804b032d5211d664c396e212a08a5775b)) ### New Features and Enhancements - Support GET enterprise configuration API (box/box-openapi[#559](https://github.com/box/box-java-sdk/issues/559)) ([#1519](https://github.com/box/box-java-sdk/issues/1519)) ([88dd8d2](https://github.com/box/box-java-sdk/commit/88dd8d2867d85ca8fc3b48d2aee61060ef328821)) - Disable OkHttp auto retries on connection failure (box/box-codegen[#874](https://github.com/box/box-java-sdk/issues/874)) ([#1541](https://github.com/box/box-java-sdk/issues/1541)) ([c2bd137](https://github.com/box/box-java-sdk/commit/c2bd137e469b9e67a14a33bb073107ff5db44175)) - Support Archive API (box/box-openapi[#563](https://github.com/box/box-java-sdk/issues/563)) ([#1553](https://github.com/box/box-java-sdk/issues/1553)) ([609e8bb](https://github.com/box/box-java-sdk/commit/609e8bb5eb7143281543dcfaada23f2649acae9d)) ## 10.1.0 (2025-10-06) ### Bug Fixes - Allow flexible key-value data in `AiExtractResponse.answer` and `Event.additionalDetails` (box/box-openapi[#556](https://github.com/box/box-java-sdk/issues/556)) ([#1470](https://github.com/box/box-java-sdk/issues/1470)) ([e215a5f](https://github.com/box/box-java-sdk/commit/e215a5f2502e694421a05d8da550d2b305c09460)) - Make `role` parameter of update collaboration optional (box/box-openapi[#557](https://github.com/box/box-java-sdk/issues/557)) ([#1479](https://github.com/box/box-java-sdk/issues/1479)) ([6896386](https://github.com/box/box-java-sdk/commit/6896386c6086996399066b09b5afc998a5a95ca4)) ### New Features and Enhancements - Add `Javadoc` comments (box/box-codegen[#839](https://github.com/box/box-java-sdk/issues/839)) ([#1465](https://github.com/box/box-java-sdk/issues/1465)) ([c72407d](https://github.com/box/box-java-sdk/commit/c72407dc77cc67f3a178d607a2b1bd4e90e832a8)) ## 10.0.0 (2025-09-17) Introducing **`Box SDK v10`**, a major release designed to elevate your developer experience and streamline integration with Box Content Cloud. Currently available as a separate [`sdk-gen`](https://github.com/box/box-java-sdk/tree/sdk-gen) branch, `v10` will ultimately become the main branch. ### Breaking Changes - This SDK version is auto-generated and introduces a new interface for all methods. Extensive documentation is available [here](https://github.com/box/box-java-sdk/tree/sdk-gen/docs). ### What's New in v10 **Full API Support** — Complete coverage of the Box API ecosystem, giving you access to all the latest features and functionalities to build feature-rich applications. **Rapid API Updates** — Our new auto-generation approach enables Box API additions within days, ensuring you can leverage the most up-to-date features without delay. **Embedded Documentation** — All objects and parameters are documented directly in the SDK source code, keeping essential information in one place. **Enhanced Convenience Methods** — New methods for authentication, chunk uploads, automatic retries, retry strategy, and more. ### Important Notes This version includes the Box Next Generation SDK artifact, previously developed in parallel to core Box SDKs. To facilitate migration and provide access to the newest features, we'll soon release an additional major version combining both artifacts. Migration to `v10` includes breaking changes, please review the [migration guide](https://github.com/box/box-java-sdk/blob/sdk-gen/migration-guides/from-v4-to-v10.md) for details. For more information, see the [SDK versioning strategy document](https://developer.box.com/guides/tooling/sdks/sdk-versioning). Follow developer changelog for future updates. ### What’s New Compared to Java SDK Gen v0.8.1 #### ⚠ BREAKING CHANGES - Change names of unions (box/box-codegen[#787](https://github.com/box/box-java-sdk/issues/787)) ([#1359](https://github.com/box/box-java-sdk/issues/1359)) ([114e778](https://github.com/box/box-java-sdk/commit/114e7785031e19fb58933f231e656a991b5effb7)) - Remove unused models from schemas (box/box-openapi[#547](https://github.com/box/box-java-sdk/issues/547)) ([#1354](https://github.com/box/box-java-sdk/issues/1354)) ([e031308](https://github.com/box/box-java-sdk/commit/e031308f102137351238bf3823372150d3927442)), closes [box/box-openapi#542](https://github.com/box/box-openapi/issues/542) [box/box-openapi#544](https://github.com/box/box-openapi/issues/544) [box/box-codegen#781](https://github.com/box/box-codegen/issues/781) [box/box-openapi#545](https://github.com/box/box-openapi/issues/545) [box/box-codegen#782](https://github.com/box/box-codegen/issues/782) - Replace `Date` with `OffsetDateTime` (box/box-codegen[#826](https://github.com/box/box-java-sdk/issues/826)) ([#1419](https://github.com/box/box-java-sdk/issues/1419)) ([ed04407](https://github.com/box/box-java-sdk/commit/ed04407e8effa8811bc85023783097f8a95e5223)) #### New Features and Enhancements - Add proxy support (box/box-codegen[#830](https://github.com/box/box-java-sdk/issues/830)) ([#1424](https://github.com/box/box-java-sdk/issues/1424)) ([cc53247](https://github.com/box/box-java-sdk/commit/cc532475cdaf5ec3fd710149b41a6e7b04dcd32f)) For more details check [migration guide](https://github.com/box/box-java-sdk/blob/sdk-gen/migration-guides/from-box-java-sdk-gen-v0-to-box-java-sdk-v10.md) from `box-java-sdk-gen` `v0` to `box-java-sdk` `v10`. ### 4.16.3 (2025-07-23) ### Bug Fixes: - Fix compare message webhook message signature ([#1315](https://github.com/box/box-java-sdk/issues/1315)) ([e2d407d](https://github.com/box/box-java-sdk/commit/e2d407ded3370ffee6eb074044fd562629a904be)) - Fix File Request Copy method to return valid data ([#1320](https://github.com/box/box-java-sdk/issues/1320)) ([8392a43](https://github.com/box/box-java-sdk/commit/8392a437c1a738bebb4e7d0f84d6bf833c76bdf3)) ### 4.16.2 (2025-06-02) ### Bug Fixes: - Fix parsing `downloadFileCount` property for `BoxZipDownloadStatus` ([50c2249](https://github.com/box/box-java-sdk/commit/50c2249ff5e0f0d1fdc99c9ff8786e9c134e58eb)) ### 4.16.1 (2025-04-29) ### Bug Fixes: - use `Locale.ROOT` to prevent issues with non-US locales ([#1306](https://github.com/box/box-java-sdk/issues/1306)) ([f083092](https://github.com/box/box-java-sdk/commit/f083092d5fdac37c93493945ab0c05ecdcdbc838)) ## 4.16.0 (2025-04-15) ### New Features and Enhancements: - Bump version of `zstd-jni` ([#1302](https://github.com/box/box-java-sdk/issues/1302)) ([9ebf8b5](https://github.com/box/box-java-sdk/commit/9ebf8b5d16c0ab8f4aa19849fdaa86935d38b294)) ### 4.15.3 (2025-03-12) ### Bug Fixes: - trim `content-length` header value ([#1297](https://github.com/box/box-java-sdk/issues/1297)) ([fa11d14](https://github.com/box/box-java-sdk/commit/fa11d141edf511eabc5f2398e55dc411d0cdcd31)) ### 4.15.2 (2025-02-26) ### Bug Fixes: - Improve logging for API Request and API Response ([#1295](https://github.com/box/box-java-sdk/issues/1295)) ([6eb1f57](https://github.com/box/box-java-sdk/commit/6eb1f57a584571b46daa14d045a36bca382493fa)) ### 4.15.1 (2025-02-24) ### Bug Fixes: - Fix parsing content length header ([#1292](https://github.com/box/box-java-sdk/issues/1292)) ([3bcf788](https://github.com/box/box-java-sdk/commit/3bcf788dd9849305aa2cc85b8e5f88b35803ecb2)) ## 4.15.0 (2025-02-19) ### New Features and Enhancements: - Add `canNonOwnersViewCollaborators` flag to `Folder` ([#1288](https://github.com/box/box-java-sdk/issues/1288)) ([9119adc](https://github.com/box/box-java-sdk/commit/9119adceae35e892e73ed61ed30cf82ad912960d)) - Support `zstd` encoding for downloads ([#1287](https://github.com/box/box-java-sdk/issues/1287)) ([0e3c4c0](https://github.com/box/box-java-sdk/commit/0e3c4c07e65ef1887cd5c393e3daf98aeb50ee47)) ### Bug Fixes: - Fix AI dialogue history ([#1289](https://github.com/box/box-java-sdk/issues/1289)) ([29b6519](https://github.com/box/box-java-sdk/commit/29b651987a5cbeead4b129cab20970f983cb6889)) ## 4.14.0 (2025-01-22) ### New Features and Enhancements: - Support downloading file from shared link ([#1282](https://github.com/box/box-java-sdk/issues/1282)) ([9b7f28b](https://github.com/box/box-java-sdk/commit/9b7f28b0288977513b0db3ed4f800647545e1f2c)) ### Bug Fixes: - Remove sensitive data when `BoxAPIException` logs request ([#1284](https://github.com/box/box-java-sdk/issues/1284)) ([f1e226f](https://github.com/box/box-java-sdk/commit/f1e226f710c301202acff067ef34687ddbb57b7b)) - Support creating ongoing Legal Hold policy with start date ([#1281](https://github.com/box/box-java-sdk/issues/1281)) ([d9564e2](https://github.com/box/box-java-sdk/commit/d9564e2e86ea110af933ca3dd0f728111d7140ae)) ### 4.13.1 (2024-11-29) ### Bug Fixes: - Correctly calculate `Content-Length` when reading from a stream ([#1277](https://github.com/box/box-java-sdk/issues/1277)) ([b1d5371](https://github.com/box/box-java-sdk/commit/b1d5371491abe1729a95eb9dc39d375135c8681d)) ## 4.13.0 (2024-11-21) ### New Features and Enhancements: - Enforce exact byte reading from `Content-Length` header for `BoxFile` representation ([#1274](https://github.com/box/box-java-sdk/issues/1274)) ([0b45cdb](https://github.com/box/box-java-sdk/commit/0b45cdb74c21996d1dfea505d25430a1fa9ee730)) - Expose `getVersionByID` method on `BoxFile` ([#1268](https://github.com/box/box-java-sdk/issues/1268)) ([6ea70f7](https://github.com/box/box-java-sdk/commit/6ea70f79ad39dd9a427ee574b5536d0ab1e3a9a4)) - make `tryRestoreUsingAccessTokenCache` in Box API connection public ([#1272](https://github.com/box/box-java-sdk/issues/1272)) ([50f5a61](https://github.com/box/box-java-sdk/commit/50f5a61184bd1a17a17e811536166f9f8e081a13)) ### Bug Fixes: - Fix `accessToken` locking mechanism ([#1270](https://github.com/box/box-java-sdk/issues/1270)) ([5eb4c93](https://github.com/box/box-java-sdk/commit/5eb4c93bd3653b28dc7def747779d008369f486a)) ## 4.12.0 (2024-10-17) ### New Features and Enhancements: - Support AI Agent ([#1265](https://github.com/box/box-java-sdk/issues/1265)) ([3cb2c7c](https://github.com/box/box-java-sdk/commit/3cb2c7c275761a24be9403a6a2b41d0725ba8d9b)) - Support AI extract and AI extract structured ([#1266](https://github.com/box/box-java-sdk/issues/1266)) ([7ba90b9](https://github.com/box/box-java-sdk/commit/7ba90b96070a32b3e2ac60e5c55bd04d0a5973c0)) ### 4.11.1 (2024-07-16) ### Bug Fixes: - Fix order of file upload multipart request ([#1261](https://github.com/box/box-java-sdk/issues/1261)) ([7200ac7](https://github.com/box/box-java-sdk/commit/7200ac77888b3639f2c294486be278e316efcfb0)) ## 4.11.0 (2024-07-15) ### New Features and Enhancements: - Allow overriding creation of OkHttp Call ([#1257](https://github.com/box/box-java-sdk/issues/1257)) ([bd6fde6](https://github.com/box/box-java-sdk/commit/bd6fde6689bebe6cb5889c91214db68e08a4ec8b)) ### Bug Fixes: - Add missing fields when update classification template ([#1255](https://github.com/box/box-java-sdk/issues/1255)) ([f17f817](https://github.com/box/box-java-sdk/commit/f17f817bde5a412358bf3de8e489ed080715ec4b)) - Fix deserializing permissions for `BoxFile` and `BoxFolder` ([#1256](https://github.com/box/box-java-sdk/issues/1256)) ([f088448](https://github.com/box/box-java-sdk/commit/f08844889800a01f7c78941036f6228502fca8b0)) ## 4.10.0 (2024-06-06) ### New Features and Enhancements: - Overload the `getRepresentationContent` method with a `maxRetries` parameter ([#1251](https://github.com/box/box-java-sdk/issues/1251)) ([d26bd4f](https://github.com/box/box-java-sdk/commit/d26bd4f5a141150a372159bc3867abbbbdda1406)) - Support `login_required`, `password`, `suppress_nofitications`, `verification_phone_number` and `additional_info` fields in sign request ([#1250](https://github.com/box/box-java-sdk/issues/1250)) ([3ee55b3](https://github.com/box/box-java-sdk/commit/3ee55b3613c5f5fa92cdd4a17c0cb3e2cc86a9a4)) ### 4.9.1 (2024-05-20) ### Bug Fixes: - Bumped `org.bouncycastle:bcprov-jdk18on:1.78.1` and `org.bouncycastle:bcpkix-jdk18on:1.78.1` ([#1246](https://github.com/box/box-java-sdk/issues/1246)) ([0557bed](https://github.com/box/box-java-sdk/commit/0557bed2b65d1be717b64a612d74fca73ba21096)) ## 4.9.0 (2024-05-06) ### New Features and Enhancements: - Support AI API ([#1243](https://github.com/box/box-java-sdk/issues/1243)) ([4e64f27](https://github.com/box/box-java-sdk/commit/4e64f27874fabf36f7fbf385ca4a60683f4a7670)) - Support pagination of file versions ([#1240](https://github.com/box/box-java-sdk/issues/1240)) ([7e7af3f](https://github.com/box/box-java-sdk/commit/7e7af3f6e40a44522a7649817547846e3f633fc8)) ### Bug Fixes: - Support create empty shared link ([#1241](https://github.com/box/box-java-sdk/issues/1241)) ([0c86487](https://github.com/box/box-java-sdk/commit/0c86487848e5004a713873baffa2d9dcc63b1502)) - Update exception message for get representation content ([#1239](https://github.com/box/box-java-sdk/issues/1239)) ([a608f9a](https://github.com/box/box-java-sdk/commit/a608f9a4350b723e9f07eaf00af45243737a17c9)) ## 4.8.0 (2024-02-27) ### New Features and Enhancements: - allow modifying `BoxAPIRequest` URL ([#1236](https://github.com/box/box-java-sdk/issues/1236)) ([eaea019](https://github.com/box/box-java-sdk/commit/eaea0193ab7e72b73746ea85806e62468825bbce)) - Bumped `org.bouncycastle:bcprov-jdk18on:1.77` and `org.bouncycastle:bcpkix-jdk18on:1.77` ([#1237](https://github.com/box/box-java-sdk/issues/1237)) ([6c7fe7b](https://github.com/box/box-java-sdk/commit/6c7fe7b74dbfb34e729fcecf8a29a1d3a1ba596f)), closes [#1235](https://github.com/box/box-java-sdk/issues/1235) ### Bug Fixes: - fix download for empty files ([#1231](https://github.com/box/box-java-sdk/issues/1231)) ([0e2230b](https://github.com/box/box-java-sdk/commit/0e2230b0be36f6bfb35f1d6b9dd4ba58e4d125ec)) - stop using `SharedLinkAPIConnection` in `getSharedItem()` ([#1234](https://github.com/box/box-java-sdk/issues/1234)) ([9f9af8e](https://github.com/box/box-java-sdk/commit/9f9af8e22b4a38dc9a31a611ff1b962966bbd6b5)) ## 4.7.0 (2024-01-16) ### New Features and Enhancements: - Add `signer_group_id` for signer in sign request ([#1220](https://github.com/box/box-java-sdk/issues/1220)) ([f560db8](https://github.com/box/box-java-sdk/commit/f560db8d5587406099066803789d16374ec7dbb9)) - Introduce `IPrivateKeyDecryptor` to allow using custom cryptography provider ([#1226](https://github.com/box/box-java-sdk/issues/1226)) ([727e6d7](https://github.com/box/box-java-sdk/commit/727e6d71ee375a48b4241a26a093becfe0965898)) ### Bug Fixes: - Remove delete classification ([#1222](https://github.com/box/box-java-sdk/issues/1222)) ([9814038](https://github.com/box/box-java-sdk/commit/981403896b4cd16a42c9feeecf30e75e1e8fa072)) ### 4.6.1 (2023-11-02) ### Dependency Upgrades: - Bumped `org.bitbucket.b_c:jose4j:0.9.3` ([#1212](https://github.com/box/box-java-sdk/issues/1212)) ([f522a56](https://github.com/box/box-java-sdk/commit/f522a5660f3522b11a0516774ba0cca69db3ec31)) ## 4.6.0 (2023-09-28) ### New Features and Enhancements: - Support search deleted filters ([#1207](https://github.com/box/box-java-sdk/issues/1207)) ([5e0e9ed](https://github.com/box/box-java-sdk/commit/5e0e9ed9aea2818da6fba0d562b56987c4948aaa)) ### Bug Fixes: - Added protected accessors for trust manager and hostname verifier. ([#1206](https://github.com/box/box-java-sdk/issues/1206)) ([0c79d17](https://github.com/box/box-java-sdk/commit/0c79d1754bffeb3f0487e10d55d716ba1cbed1aa)) - fix not closing response body ([#1208](https://github.com/box/box-java-sdk/issues/1208)) ([ab5e170](https://github.com/box/box-java-sdk/commit/ab5e1702934607b258802b33f3663af3e9c56027)) ## 4.5.0 (2023-09-13) ### New Features and Enhancements: - Add `iframeable_embed_url` field to `BoxSignRequestSigner` class ([#1202](https://github.com/box/box-java-sdk/issues/1202)) ([2e931d8](https://github.com/box/box-java-sdk/commit/2e931d8c36694a665d1c6315d3bf2d226929b713)) ### Bug Fixes: - `SharedLinkAPIConnection` uses request interceptor ([#1203](https://github.com/box/box-java-sdk/issues/1203)) ([b2b6a1d](https://github.com/box/box-java-sdk/commit/b2b6a1dba316ba50a1e011250c320fca156c6708)), closes [#1200](https://github.com/box/box-java-sdk/issues/1200) - Update sign template missing enum ([#1201](https://github.com/box/box-java-sdk/issues/1201)) ([fcb6657](https://github.com/box/box-java-sdk/commit/fcb6657bb2375e32c3fb0f861e7ecaeb84503f2c)) ## 4.4.0 (2023-08-29) ### New Features and Enhancements: - Support sign template and new sign status ([#1197](https://github.com/box/box-java-sdk/issues/1197)) ([e37c0dc](https://github.com/box/box-java-sdk/commit/e37c0dce86a422de5e8e6ed26fd93f1324f4b3e3)) ## 4.3.0 (2023-08-11) ### New Features and Enhancements: - Support access only collaboration ([#1193](https://github.com/box/box-java-sdk/issues/1193)) ([664c01f](https://github.com/box/box-java-sdk/commit/664c01f80ca0647645c60920eb0ef1f9353a619f)) ### 4.2.1 (2023-08-03) ### Bug Fixes: - Fixed upload when data are coming from a dynamic source ([#1189](https://github.com/box/box-java-sdk/issues/1189)) ([77b39f2](https://github.com/box/box-java-sdk/commit/77b39f2645d53bdab0ade23b637c211ea070fcf5)), closes [#1183](https://github.com/box/box-java-sdk/issues/1183) [#1190](https://github.com/box/box-java-sdk/issues/1190) ## 4.2.0 (2023-06-21) ### New Features and Enhancements: - Getting collaborators allows to specify fields ([#1178](https://github.com/box/box-java-sdk/issues/1178)) ([1694d75](https://github.com/box/box-java-sdk/commit/1694d75fff0fbddb938426ef03ba24f360a344aa)) ### 4.1.2 (2023-06-14) ### Bug Fixes: - Class cast exception when uploading large file ([#1174](https://github.com/box/box-java-sdk/issues/1174)) ([e7d28bd](https://github.com/box/box-java-sdk/commit/e7d28bddb706c8b4fd1328f0eebc50db19a8c656)), closes [#1173](https://github.com/box/box-java-sdk/issues/1173) - Make `SharedLinkAPIConnection` constructors public ([#1172](https://github.com/box/box-java-sdk/issues/1172)) ([4d1616d](https://github.com/box/box-java-sdk/commit/4d1616ddd2c39d1cb0d03af998d2c47efe607853)) - Remove invalid Group membership role ([#1171](https://github.com/box/box-java-sdk/issues/1171)) ([a5915f9](https://github.com/box/box-java-sdk/commit/a5915f94114a8269287831280a57949ed203e4e8)) ### 4.1.1 (2023-05-16) ### Bug Fixes: - Allow users to disable adding authentication header. ([#1167](https://github.com/box/box-java-sdk/issues/1167)) ([3433e5a](https://github.com/box/box-java-sdk/commit/3433e5a405ceb9bc32791642518b1fd65c4b4032)) - Logging headers when retrying request ([#1164](https://github.com/box/box-java-sdk/issues/1164)) ([e0c3d8e](https://github.com/box/box-java-sdk/commit/e0c3d8e730962ba5c97105ce506ee931a3bba362)) ## 4.1.0 (2023-04-24) ### New Features and Enhancements: - Add missing `fields` parameter to create and update `BoxUser` methods ([#1155](https://github.com/box/box-java-sdk/issues/1155)) ([be3820d](https://github.com/box/box-java-sdk/commit/be3820dc4df15e99dfc13602d4f7269841bd15b3)), closes [#1154](https://github.com/box/box-java-sdk/issues/1154) ### Bug Fixes: - Allow registering custom logger handlers ([#1156](https://github.com/box/box-java-sdk/issues/1156)) ([7373d5c](https://github.com/box/box-java-sdk/commit/7373d5cc2bf49bc198cbca70d056e43f0dffdb3a)) - Fallback to default value of `maxRetryAttempts` when restoring `BoxAPIConnection` ([#1161](https://github.com/box/box-java-sdk/issues/1161)) ([2a10e5d](https://github.com/box/box-java-sdk/commit/2a10e5d07497611e077a9207fe98c1d8146cfd22)), closes [#1160](https://github.com/box/box-java-sdk/issues/1160) ### 4.0.1 (2023-03-06) ### Bug Fixes: - `OAUTH_SUFFIX` gets appended twice to `baseAuthorizationURL` ([#1148](https://github.com/box/box-java-sdk/issues/1148)) ([3164770](https://github.com/box/box-java-sdk/commit/3164770498e5115a43318640735317a896950f54)), closes [#1147](https://github.com/box/box-java-sdk/issues/1147) - Wrong progress reported to `ProgressListener` by `AbstractBoxMultipartRequest` ([#1151](https://github.com/box/box-java-sdk/issues/1151)) ([947ded3](https://github.com/box/box-java-sdk/commit/947ded394490fc840b8191bc7ad69ae0ea5f5c7d)), closes [#1149](https://github.com/box/box-java-sdk/issues/1149) ## 4.0.0 (2023-01-17) The most important change this release includes is the replacement of the HTTP library from a native one to [OkHttp](https://square.github.io/okhttp/) which allows SDK to - Support the HTTP2 version of the HTTP protocol. Support proxies that do not use only basic authentication method. For details on creating custom proxy authenticators and an example of [NTLM proxy authentication](https://github.com/box/box-java-sdk/blob/kb/ok-http/doc/configuration.md#custom-proxy-authenticator). ### Breaking Changes - `BatchAPIRequest` – is no longer supported by the SDK - `BoxAPIConnection#DEFAULT_MAX_ATTEMPTS` is replaced with `BoxAPIConnection#DEFAULT_MAX_RETRIES` - `BoxRedirectResponse` – was removed and will not be replaced - `BoxEvent.Type` is replaced with `EventType` - Removing deprecated methods from `BoxFile`, `BoxFileVersionRetention`, `BoxFolder`, `BoxGroup`, `BoxGroupMembership`,`BoxItem`, `BoxRetentionPolicy`, `BoxTask`, `BoxUser`, `BoxWebLink`, `EventLog`, `Metadata` and `MetadataTemplate`. Migration details can be found [here](doc/upgrades/3.x.x%20to%204.x.x.md). ### New Features and Enhancements: - Using `OkHttp` in Java SDK ([#1083](https://github.com/box/box-java-sdk/issues/1083)) ([2656698](https://github.com/box/box-java-sdk/commit/265669897100dd8f1757fc2c5f25665da42c2889)) ### 3.8.2 (2023-01-04) ### Bug Fixes: - Fixed restoring state without refresh token. ([#1139](https://github.com/box/box-java-sdk/issues/1139)) ([3544709](https://github.com/box/box-java-sdk/commit/3544709480eb03e5bd50f5dc99be7409569304c4)) ### 3.8.1 (2022-12-19) ### Bug Fixes: - Restoring state from previous `SDK` version works. ([#1134](https://github.com/box/box-java-sdk/issues/1134)) ([b6d97dd](https://github.com/box/box-java-sdk/commit/b6d97dd5b0cc91eb2e4c922ff217e0878e0f63ec)) ## 3.8.0 (2022-11-15) ### New Features and Enhancements: - Added Box Sign webhooks ([#1109](https://github.com/box/box-java-sdk/issues/1109)) ([99051a5](https://github.com/box/box-java-sdk/commit/99051a575f120a8c0939359c1f4875b16b98b7f0)) ### Bug Fixes: - `NullPointerException` when using `BoxSignRequestPrefillTag` ([#1121](https://github.com/box/box-java-sdk/issues/1121)) ([73fd5b6](https://github.com/box/box-java-sdk/commit/73fd5b6e6e40f7e79b385edf46b8eee5ff612ace)), closes [#1120](https://github.com/box/box-java-sdk/issues/1120) - Regenerate JWT ID and retry auth request when JTI claim is rejected ([#1110](https://github.com/box/box-java-sdk/issues/1110)) ([420da0f](https://github.com/box/box-java-sdk/commit/420da0f2c80bfe8cfbaba4fa8dec4826c4cb6337)) ### Dependency Upgrades: - Bumped org.bitbucket.b_c:jose4j:0.9.0 ([#1111](https://github.com/box/box-java-sdk/issues/1111)) ([349694d](https://github.com/box/box-java-sdk/commit/349694ddcfeb701a9ecdfd5ae555d49bea4d1030)) ### 3.7.1 (2022-09-29) ### Bug Fixes: - Better logging when JSON cannot be parsed ([#1106](https://github.com/box/box-java-sdk/issues/1106)) ([5e66ef8](https://github.com/box/box-java-sdk/commit/5e66ef8cc983a6cff34995efc75e9effd3195d48)) ## 3.7.0 (2022-09-20) ### New Features and Enhancements: - Add `is_accessible_via_shared_link` field to File and Folder ([#1103](https://github.com/box/box-java-sdk/issues/1103)) ([45e9906](https://github.com/box/box-java-sdk/commit/45e9906efca6a7f2d4d738914dc804de12d3646e)) ### Bug Fixes: - `BoxCollaboration.getItem()` returns `BoxItem.Info` not `BoxFolder.Info` ([#1102](https://github.com/box/box-java-sdk/issues/1102)) ([135850d](https://github.com/box/box-java-sdk/commit/135850d97164ee5f6d74708d74c531f7fa8bee26)), closes [#1101](https://github.com/box/box-java-sdk/issues/1101) [#1100](https://github.com/box/box-java-sdk/issues/1100). `BoxCollaboration.getItem()` used to return `BoxFolder.Info`. However, if collaboration was added on a file it would still return `BoxFolder.Info` which will end with throwing `BoxAPIException` when doing any API call. If you are getting collaboration item it is best to store it as `BoxItem.Info` or check its type and store it as `BoxFile.Info` or `BoxFolder.Info`. - Add missing constructor to `BoxNotificationEmail` class ([#1098](https://github.com/box/box-java-sdk/issues/1098)) ([2534f34](https://github.com/box/box-java-sdk/commit/2534f34133f9554abd1e80fc1555659a2c52b23f)) ## 3.6.0 (2022-09-07) ### New Features and Enhancements: - Add support for modifiable retention policies & enable deleting retention policy assignment ([#1093](https://github.com/box/box-java-sdk/issues/1093)) ([30e2fcb](https://github.com/box/box-java-sdk/commit/30e2fcb74c12867fd3859c3490539557b47ab006)) ### Bug Fixes: - Stop sending not specified optional fields when creating a user ([#1095](https://github.com/box/box-java-sdk/issues/1095)) ([b7d894d](https://github.com/box/box-java-sdk/commit/b7d894d3f134137f3a5925f09accfd4334837f81)) ## 3.5.0 (2022-08-26) ### New Features and Enhancements: - Add `content-type` sign request and response ([#1087](https://github.com/box/box-java-sdk/issues/1087)) ([49411aa](https://github.com/box/box-java-sdk/commit/49411aaeea6d3ff8de10e3fbc3c60bba1bc54748)) - Add `notification_email` to `BoxUser` ([#1088](https://github.com/box/box-java-sdk/issues/1088)) ([5477223](https://github.com/box/box-java-sdk/commit/547722347a920ba11e5fff7a8df5201720af815a)) - Add `redirect_url` and `declined_redirect_url` to sign request response ([#1089](https://github.com/box/box-java-sdk/issues/1089)) ([3921fe1](https://github.com/box/box-java-sdk/commit/3921fe1a4a6249146a8dd2f22e15801846bc073b)) ### Bug Fixes: - Fixed canceling sign request fails because of empty body ([#1085](https://github.com/box/box-java-sdk/issues/1085)) ([32b8e79](https://github.com/box/box-java-sdk/commit/32b8e79ebc8995ab933c32d28c3e2f17d9627a70)) ## 3.4.0 (2022-08-10) ### New Features and Enhancements: - Added pagination for getting items in trash with new `BoxTrash#items` API ([#1072](https://github.com/box/box-java-sdk/issues/1072)) ([9cd411d](https://github.com/box/box-java-sdk/commit/9cd411d20af1bc76ae815905396d72008af62539)) ### Bug Fixes: - buffered body write and fixed SDK logging ([#1079](https://github.com/box/box-java-sdk/issues/1079)) ([bc35ef3](https://github.com/box/box-java-sdk/commit/bc35ef3279e68a3d794de454f506ba41d14c3b16)) ## 3.3.0 (2022-07-01) ### New Features and Enhancements: - Added support of Editable Shared Links ([#1064](https://github.com/box/box-java-sdk/issues/1064)) ([9b7d60c](https://github.com/box/box-java-sdk/commit/9b7d60c41fbd481465bf3f2a5877746f10849712)) ### Bug Fixes: - Fix closed stream exception in `canUpload` method ([#1067](https://github.com/box/box-java-sdk/issues/1067)) ([543f91c](https://github.com/box/box-java-sdk/commit/543f91c46dfcc9de7e61ce11cd93d472916533ac)) ### 3.2.1 (2022-06-10) ### Bug Fixes: - Fix getting proper URL to authenticate with OAuth ([#1059](https://github.com/box/box-java-sdk/issues/1059)) ([42876b4](https://github.com/box/box-java-sdk/commit/42876b45ccdb7fa6f357186cecaba051abf1c269)), closes [#1057](https://github.com/box/box-java-sdk/issues/1057) ## 3.2.0 (2022-05-23) ### New Features and Enhancements: - Revamped setting base URLs ([#1042](https://github.com/box/box-java-sdk/issues/1042)) ([129baf7](https://github.com/box/box-java-sdk/commit/129baf704ced127788bb0f62ef9f4fb6a50fdc63)) - support for Avatar V2 API ([#1044](https://github.com/box/box-java-sdk/issues/1044)) ([18651d7](https://github.com/box/box-java-sdk/commit/18651d7a5b419796e3733c7582ae471d7af7ed5c)) ### 3.1.2 (2022-03-22) ### Bug Fixes: - Allow using `As-User` header with CCG Authentication ([#1031](https://github.com/box/box-java-sdk/issues/1031)) ([b0c2389](https://github.com/box/box-java-sdk/commit/b0c238913cc1dbcecfd546a5eae68277c3c76d42)) - Fix retry logic when `Retry-After` header is present ([#1033](https://github.com/box/box-java-sdk/issues/1033)) ([05224c4](https://github.com/box/box-java-sdk/commit/05224c433d2a101a01959644674153df9542b711)) ### 3.1.1 (2022-02-28) ### Bug Fixes: - retry `jwt` auth when error code is in error field ([#1020](https://github.com/box/box-java-sdk/issues/1020)) ([8c9d11d](https://github.com/box/box-java-sdk/commit/8c9d11d1b3556552751c9f4ac99a0f7180af97f3)), closes [#1019](https://github.com/box/box-java-sdk/issues/1019) ## 3.1.0 (2022-02-17) ### New Features and Enhancements: - Added support for Client Credentials Grant authentication method ([#1002](https://github.com/box/box-java-sdk/issues/1002)) ([9cfcaff](https://github.com/box/box-java-sdk/commit/9cfcaff243dbf0541409f91f9f863a207345dc47)) - API to extend disposition date on a file ([#1001](https://github.com/box/box-java-sdk/issues/1001)) ([f3f6b60](https://github.com/box/box-java-sdk/commit/f3f6b6043eec362c5a8ad9a01d6588538ca34e71)) - Deprecating `indexName` when executing metadata query ([#1000](https://github.com/box/box-java-sdk/issues/1000)) ([c20dbbf](https://github.com/box/box-java-sdk/commit/c20dbbf6a927e31cfdd7ffa71069c0897f7a0536)) ### Dependency Upgrades: - Upgrade Gradle to 7.3.3 ([#985](https://github.com/box/box-java-sdk/issues/985)) ([e4acbb1](https://github.com/box/box-java-sdk/commit/e4acbb1f0c10ccdeeee139e2566b344052680010)) ## 3.0.0 (2022-01-17) ### ⚠ BREAKING CHANGES - Changed `BoxFileVersion` class and removed `fileVersion` field (#978) - Removed deprecated API `BoxCollaborationWhitelist` replaced with `BoxCollaborationAllowlist`, `BoxCollaborationWhitelistExemptTarget` replaced with `BoxCollaborationAllowlistExemptTarget` (#969) - Dropping Java 7 support (#962) - Downgrading `bouncycastle` libraries to 1.57 (#942) ### New Features and Enhancements: - Add `typeName` to `BoxEvent` that contains name of the event, even if it is not mapped to `BoxEvent.EventType` ([#979](https://github.com/box/box-java-sdk/issues/979)) ([b30f61f](https://github.com/box/box-java-sdk/commit/b30f61f8cc9c02a1fc4cd5eb35469749e1a16558)), closes [#968](https://github.com/box/box-java-sdk/issues/968) - Add new optional `description` parameter to the `retention_policies` endpoint and `start_date_field` to the `retention_policy_assignments endpoint`. ([#967](https://github.com/box/box-java-sdk/issues/967)) ([0aa4ff4](https://github.com/box/box-java-sdk/commit/0aa4ff48a1e035efc9ac6aaa42f18f4c92955b7b)) - Adding `BoxFile#getVersions(String... fields)` to allow users to specify what information they want to extract. Fixes [#946](https://github.com/box/box-java-sdk/issues/946). ([#947](https://github.com/box/box-java-sdk/issues/947)) ([a2eb638](https://github.com/box/box-java-sdk/commit/a2eb63896606a6c00ccee6bd9745f4c51f8d89a2)) - Missing `eventTypes` from `BoxAPI` Documents. Fixes [#974](https://github.com/box/box-java-sdk/issues/974) ([#975](https://github.com/box/box-java-sdk/issues/975)) ([2c69360](https://github.com/box/box-java-sdk/commit/2c69360e80b1bdd6213933cf2f4da195d52c92d4)) - Removed deprecated API `BoxCollaborationWhitelist` replaced with `BoxCollaborationAllowlist`, `BoxCollaborationWhitelistExemptTarget` replaced with `BoxCollaborationAllowlistExemptTarget` ([#969](https://github.com/box/box-java-sdk/issues/969)) ([2fd4d6f](https://github.com/box/box-java-sdk/commit/2fd4d6f884410c8884c4c038687bfc8f32837b55)) ### Bug Fixes: - Changed `BoxFileVersion` class and removed `fileVersion` field ([#978](https://github.com/box/box-java-sdk/issues/978)) ([8c39451](https://github.com/box/box-java-sdk/commit/8c3945167581400043a070c2f6906ef05d3d7b85)) - Changed SDK loggers name to `"com.box.sdk"`, fixes [#638](https://github.com/box/box-java-sdk/issues/638) ([#950](https://github.com/box/box-java-sdk/issues/950)) ([443c230](https://github.com/box/box-java-sdk/commit/443c23085e55bbcaa1524c5b9e1bf852a1e2a1ce)) - Date parsing error when `BoxSignRequestPrefillTag` created with date value. ([#970](https://github.com/box/box-java-sdk/issues/970)) ([cc2c8da](https://github.com/box/box-java-sdk/commit/cc2c8da9ea7d066ae2c247c2de5ac8b8bbba9b99)) - Fix sending limit param in `EventLog` ([#977](https://github.com/box/box-java-sdk/issues/977)) ([96bdccc](https://github.com/box/box-java-sdk/commit/96bdccc9ca40ed43a6028a2b0d055d9d9a8de525)) - Fixed `NullPointerException` when empty metadata used on BoxFile or `BoxFolder` ([#918](https://github.com/box/box-java-sdk/issues/918)) ([#945](https://github.com/box/box-java-sdk/issues/945)) ([68bc3c5](https://github.com/box/box-java-sdk/commit/68bc3c578d760b7239f6d704fed9bb5a834bf52a)) - Fixes issue ([#951](https://github.com/box/box-java-sdk/issues/951)) error when deserialising sign request ([#952](https://github.com/box/box-java-sdk/issues/952)) ([070bdc5](https://github.com/box/box-java-sdk/commit/070bdc56074a1533c41f9085943d09502c79a7f4)) ### Dependency Upgrades: - Dropping Java 7 support ([#962](https://github.com/box/box-java-sdk/issues/962)) ([953ad78](https://github.com/box/box-java-sdk/commit/953ad78ac84833082439d0def1dcc63dc11ac04a)) - Downgrading `bouncycastle` libraries to 1.57 ([#942](https://github.com/box/box-java-sdk/issues/942)) ([26aaed5](https://github.com/box/box-java-sdk/commit/26aaed51fd914eaf2061da735f11830524e4cfe4)) ## [2.58.0] (2021-11-23) ### ⚠ BREAKING CHANGES ### New Features and Enhancements: - SDK support for new GET /events stream_type: admin_logs_streaming ([#938](https://github.com/box/box-java-sdk/pull/938)) - Adding BoxDeveloperEditionAPIConnection#getUserConnection to indicate that we can use this connection for managed users or app users ([#940](https://github.com/box/box-java-sdk/pull/940)) ### Bug Fixes: - Fix for deprecated enums still being used ([#931](https://github.com/box/box-java-sdk/issues/931)) ## [2.57.0] (2021-10-18) ### ⚠ BREAKING CHANGES ### New Features and Enhancements: - Add support for marker-based paging in BoxFolder.getChildren ([#927](https://github.com/box/box-java-sdk/pull/927)) - Upgraded minimal-json to v0.9.5 - Upgraded jose4j to v0.7.9 - Adding Gradle wrapper in version 4.0.1 ([#928](https://github.com/box/box-java-sdk/pull/928)) ### Bug Fixes: - Fix for infinite recursion ([#924](https://github.com/box/box-java-sdk/pull/924)) - Fix unable to set Vanity URL on `BoxSharedLink` for BoxFile and BoxFolder ([#925](https://github.com/box/box-java-sdk/issues/925)) ## [2.56.0] (2021-08-31) ### New Features and Enhancements: - Replace `submaster` GroupMembershipRole with `coadmin`. Replace `MASTER_INVITE_ACCEPT` and `MASTER_INVITE_REJECT` with `ADMIN_INVITE_ACCEPT` and `ADMIN_INVITE_REJECT`. ([#907](https://github.com/box/box-java-sdk/pull/907)) - Add `tracking_codes` to create User API call ([#910](https://github.com/box/box-java-sdk/pull/910)) ### Bug Fixes: - Fix `url` for `BoxFileRequest.Info` object ([#906](https://github.com/box/box-java-sdk/pull/906)) - Attempt to fix thread locking issue on refresh of access token ([#912](https://github.com/box/box-java-sdk/pull/912)) ## [2.55.1] (2021-07-30) ### Bug Fixes: - Restore methods for Execute Metadata Query, which were removed in ([#890](https://github.com/box/box-java-sdk/pull/890)), and mark them as deprecated ([#905](https://github.com/box/box-java-sdk/pull/905)) ## [2.55.0] (2021-07-26) NOTE: Due to the benign nature of the "breaking change" below, we decided NOT to increment the major version for this release. There should be no customer impact due to this change. ### ⚠ BREAKING CHANGES Update execute metadata query to match API response ([#890](https://github.com/box/box-java-sdk/pull/890)) - NOTE: This change removes a method without deprecating it. It was not possible to use the method correctly at all, because the underlying service no longer supported it. ### New Features and Enhancements: - Remove or deprecate insensitive language ([#889])([https://github.com/box/box-java-sdk/pull/889](https://github.com/box/box-java-sdk/pull/889)) - Add support for `is_external_collab_restricted` parameter for User ([#896](https://github.com/box/box-java-sdk/pull/896)) - Add configurable permissions support for `GroupMembership` ([#897](https://github.com/box/box-java-sdk/pull/897)) - Add `SHIELD_JUSTIFICATION_APPROVAL` event type ([#898](https://github.com/box/box-java-sdk/pull/898)) - Add ability to get files under retention for assignment and file versions under retention for assignment ([#899](https://github.com/box/box-java-sdk/pull/899)) - Add `TASK_UPDATE`, `FILE_VERSION_RESTORE` and `ADVANCED_FOLDER_SETTINGS_UPDATE` event types ([#902](https://github.com/box/box-java-sdk/pull/902)) - Add SignAPI support ([#904](https://github.com/box/box-java-sdk/pull/904)) ### Bug Fixes: - Add setters for `BoxLegalHoldPolicy` ([#885](https://github.com/box/box-java-sdk/pull/885)) - Add setters for `BoxTaskAssignment` ([#886](https://github.com/box/box-java-sdk/pull/886)) - Add setters for Group Membership and Web Links ([#887](https://github.com/box/box-java-sdk/pull/887)) - Add setters for Webhooks ([#888](https://github.com/box/box-java-sdk/pull/888)) - Deprecate `BoxFile.getThumbnail` in favor of `BoxFile.getRepresentationContent` ([#891](https://github.com/box/box-java-sdk/pull/891)) ## [2.54.0] (2021-04-01) ### New Features and Enhancements: - Add file request support ([#869](https://github.com/box/box-java-sdk/pull/869)) ### Bug Fixes: - Fix `BoxWeblink` deserialization ([#881](https://github.com/box/box-java-sdk/pull/881)) ## [2.53.0] (2021-01-08) ### New Features and Enhancements: - Add offset and limit parameters to `BoxFolder.getChildren` ([#861](https://github.com/box/box-java-sdk/pull/861)) ## [2.52.0] (2020-11-24) ### New Features and Enhancements: - Add folder lock functionality ([#856](https://github.com/box/box-java-sdk/pull/856)) - Add support for search param to get shared link items ([#855](https://github.com/box/box-java-sdk/pull/855)) ### Bug Fixes: - Fix bug with updating tracking codes ([#857](https://github.com/box/box-java-sdk/pull/857)) ## [2.51.1] (2020-11-12) ### Bug Fixes: - Fix for cross-enterprise collaborator calls to updateMetadata on files ## [2.51.0] (2020-10-29) ### New Features and Enhancements: - Add support for `copyInstanceOnItemCopy` field for metadata templates ([#850](https://github.com/box/box-java-sdk/pull/850)) - Add support for more fields in `BoxCollaborator.Info` ([#843](https://github.com/box/box-java-sdk/pull/843)) ### Bug Fixes: - Update `getAllGroupsByName()` to use documented parameter ([#851](https://github.com/box/box-java-sdk/pull/851)) ## [2.50.1] (2020-08-20) - Fix bug that occurred when downscoping a token for a Box folder ([#832](https://github.com/box/box-java-sdk/pull/832)) ## [2.50.0] (2020-07-21) - API request creation errors are now retried with the same automatic retry logic as 429 and 5XX response errors ([#828](https://github.com/box/box-java-sdk/pull/828)) ## [2.49.0] (2020-07-17) - Fix bug with setting the unshared at date for a shared link ([#819](https://github.com/box/box-java-sdk/pull/819)) - Add zip functionality ([#825](https://github.com/box/box-java-sdk/pull/825)) - Add `fields` parameter for metadata query ([#826](https://github.com/box/box-java-sdk/pull/826)) ## [2.48.0] (2020-06-23) - Add ability to get groups by name with fields option ([#789](https://github.com/box/box-java-sdk/pull/789)) - Add shared link downscoping ([#785](https://github.com/box/box-java-sdk/pull/785)) - Deprecate the use of float for Metadata values, in preference of the underlying value (double) ([#811](https://github.com/box/box-java-sdk/pull/811)) - Add iterator support for group collaborations ([#813](https://github.com/box/box-java-sdk/pull/813)) - Add ability to set the filename when uploading a new version of a file ([#810](https://github.com/box/box-java-sdk/pull/810)) - Add support for the classification field for Files and Folders ([#809](https://github.com/box/box-java-sdk/pull/809)) - Add support for setting Tracking Codes ([#766](https://github.com/box/box-java-sdk/pull/766)) - Fix issue for `getIsExternallyOwned()` for Files and Folders ([#808](https://github.com/box/box-java-sdk/pull/808)) ## [2.47.0] (2020-04-23) - Add support for the uploader display name field for Files and File Versions ([#791](https://github.com/box/box-java-sdk/pull/791)) - Fix path parameter sanitization ([#797](https://github.com/box/box-java-sdk/pull/797)) ## [2.46.0] (2020-04-09) Fix retry logic ([#787](https://github.com/box/box-java-sdk/pull/787)) - Retry for 400 `invalid_grant` error in authentication requests (Clock Skew) - Honor Retry-After header, if present, by waiting for the time specified in the header before retrying - The concept of setting / getting "Maximum API Requests" has been deprecated in favor of "Maximum API Retries" to more clearly show the number of times a request will be retried after an error response is received. Add ability to set expiration date for a collaboration ([#788](https://github.com/box/box-java-sdk/pull/788)) Add path parameter sanitization ([#790](https://github.com/box/box-java-sdk/pull/790)) ## [2.45.0] (2020-04-02) - Add preflight check before chunked uploads ([#782](https://github.com/box/box-java-sdk/pull/782)) - Check that part was successfully uploaded for large file uploads before retrying for 500 errors ([#781](https://github.com/box/box-java-sdk/pull/781)) - Fix bug with premature disconnect when renaming files and weblinks ([#779](https://github.com/box/box-java-sdk/pull/779)) - Add metadata to each item returned by a metadata query ([#778](https://github.com/box/box-java-sdk/pull/778)) ## [2.44.1] (2020-02-13) - Fix formatting bug for Java Logger - Improve date / time parsing for responses ## [2.44.0] (2020-01-21) - Fix Authentication Request Retries ## [2.43.0] (2019-12-20) - Throw exceptions for setMetadata on Files and Folders for non-409 errors ## [2.42.0] (2019-12-17) - Added Metadata Query support - Added marker based pagination for get users methods ## [2.41.0] (2019-10-24) - Added enum action option for completed in Box Task class. ## [2.40.0] (2019-10-24) - General doc changes. ## [2.39.0] (2019-10-17) - Deprecated Batch API functionality. - Added support for [Task completion_rule](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxFile.java#L249) ## [2.38.0] (2019-09-19) - Added missing fields for File Version: trashed_by, restored_at, purged_at, purged_by. - Added support for [chunked uploads with file attributes](https://github.com/box/box-java-sdk/blob/main/doc/files.md#upload-a-large-file-in-chunks-including-attributes). ## [2.37.0] (2019-08-22) Added support for replace in multi-select metadata for [files](https://github.com/box/box-java-sdk/blob/main/doc/files.md#update-metadata) and for [folders](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#update-metadata) - Improved getting started with JWT authentication docs that can be found [here](https://github.com/box/box-java-sdk/blob/main/doc/authentication.md#server-authentication-with-jwt) ## [2.36.0] (2019-08-01) - Added support for [removing shared link](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxItem.java#L413) and fixed an issue with setting null for shared link field on BoxItem. - Added support for additional fields for Box files, folders, and web links. ## [2.35.0] (2019-07-18) - Added support for retrieving [is_external_only field](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxFile.java#L1668) for Box Files and Folders. ## [2.34.0] (2019-06-06) Added support for retrieving a [string type action for tasks](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxTask.java#L281). Please use getActionType() going forward instead of the deprecated getAction(). ## [2.33.0] (2019-05-23) - Added support for [setting can_owners_invite field](https://github.com/box/box-java-sdk/blob/1ed10d7a457e44b863ec1c9b1d0d1408fb55e1e5/src/main/java/com/box/sdk/BoxFolder.java#L1272) Thank you @Band-Aid for you pull request! Greatly Appreciated. - Fixed a bug where chunked upload was not populating the correct part size for upload part. ## [2.32.0] (2019-04-25) - Added support [setting metadata](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#set-metadata). ## [2.31.0] (2019-04-11) - Added support for [sorting folder items](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#get-a-folders-items) retrieved from a folder by ascending or descending order. ## [2.30.1] (2019-04-08) - Fixed a bug where the SDK could throw when parsing JSON containing dates using the Zulu timezone format ## [2.30.0] (2019-04-04) - Added `action_by` field to enterprise events stream. ## [2.29.0] (2019-04-01) - Added support for [sorting results returned from Box Search](https://github.com/box/box-java-sdk/blob/main/doc/search.md#search-1) - Added ability to [attach a file description upon file upload](https://github.com/box/box-java-sdk/blob/main/doc/files.md#upload-a-file) ## [2.28.1] (2019-03-07) - Fixed a bug where BoxMetadataCascadePolicy.forceApply() would not return correctly. ## [2.28.0] (2019-02-21) - Added ability for user to [retrieve an avatar](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxUser.html#getAvatar--)) for a specified user. ## [2.27.0] (2019-01-31) - Added support for Metadata Classification for [File](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFile.html#setClassification-java.lang.String...-) and [Folder](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#setClassification-java.lang.String...-) ## [2.26.0] (2019-01-17) - Added [invite_email](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxCollaboration.java#L277) field to collaboration object. - Added [is_collaboration_restricted_to_enterprise](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxFolder.java#L1104) field to folder object. - Added [status](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxTaskAssignment.java#L196) field to task assignment object. - Added ability to retrieve fields for [`BoxFile#getTasks()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFile.html#getTasks-java.lang.String...-) - Fixed bug where offset based paging would not return correctly. ## [2.25.1] (2019-01-03) - Upgraded dependencies: jose4j to v0.5.5, and bouncycastle to v1.60 ## [2.25.0] (2018-12-13) - Added functionality to allow [content streaming to Box through outputstream](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxFolder.html#uploadFile-com.box.UploadFileCallback-java.lang.String-). Thank you @gajarajkalburgi for the pr! ## [2.24.0] (2018-11-16) - Added `getOptionsObjects()` on `MetadataTemplate.Field` which returns both key and type. - Added functionality for [`BoxItem#getType()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxItem.html#getType--) for BoxItem. - Added functionality for [`BoxAPIConnection#BoxGlobalSettings()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxAPIConnection.html#setConnectTimeout-java.lang.String-) and [`BoxAPIConnection#BoxGlobalSettings()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxAPIConnection.html#getConnectTimeout--) as well as getting and reading the timeout for the connection. - Added functionality for [`BoxGlobalSettings#getMaxRequestAttempts()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxGlobalSettings.html#getMaxRequestAttempts--) and [`BoxGlobalSettings#setMaxRquestAttempts()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxGlobalSettings.html#setMaxRequestAttempts-java.lang.Integer-) - Fixed a bug where [`BoxLegalHoldPolicy#create()`](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxLegalHoldPolicy.html#create-com.box.BoxAPIConnection-java.lang.String-) was not setting the correct legal hold policy duration. ## [2.23.2] (2018-09-27) - Fixed a bug where the specified headers for batch requests were not being sent. ## [2.23.1] (2018-09-13) - Fixed a bug where too many TCP connections were being opened. Thank you @pmatte1 for implementing this fix! ## [2.23.0] (2018-08-23) - Added support for [Metadata Cascade Policy](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#create-cascade-policy-on-folder) ## [2.22.0] (2018-08-09) - Deprecated the [moveFolderToUser()](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxUser.java#L455) for Box Users. We encourage users to use [transferContent](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxUser.java#L482) going forward because idiomatically it is more correct. ## [2.21.0] (2018-07-05) - Added functionality to allow users to [set passwords on shared links](https://github.com/box/box-java-sdk/pull/623) for Box files, folders, and web links. - Fixed wrong redirect for two links in the `Getting Started` and `Quick Test` section of the README. ## [2.20.2] (2018-06-28) - Fixed a bug where customers had issues with large file uploads because they fail to parse the Retry-After header from the commit response. Reason being headers storage/lookup was case sensitive. ## [2.20.1] (2018-06-04) - Added better exception handling for JSON parse in response exception. - Fixed a bug where uploadNewVersion() was returning an empty object. ## [2.20.0] (2018-05-24) - Fixed a bug where multiple As-User headers could be set. - Added support to [test update](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/Metadata.html#test-java.lang.String-java.util.List-) for multiselect field on metadata ## [2.19.0] (2018-05-10) - Added support for enterprise admins with Box Zones purchased to have support for [Box Storage Policies and Box Storage Policy Assignments](./doc/storage_policy) - Added support to allow users to work with [multiselect metadata](./doc/files.md#get-metadata) - Added `getLogin()` method for the "login" field on the "accessible by" for BoxCollaboration.Info class. ## [2.18.0] (2018-04-30) - Fixed a bug where the the private key password should be passed into `setPrivateKetPassword()` instead of the private key. A big thank you to [breach10ck](https://github.com/breach10ck) for their pull request! - Added an additional check to ensure that the [request properties on the request object is not null in the `toString()` method](https://github.com/box/box-java-sdk/pull/595) - Added support to [fetch the content of the generated representation](./doc/files.md#get-representation-content) after it has been generated - Improved error messages for API response errors to allow for better debugging. ## [2.17.0] (2018-04-10) - Added support for assigning [Retention Policies to Metadata Templates](./doc/retention_policies.md#create-retention-policy-assignment) ## [2.16.1] (2018-03-29) - Added `CONTENT_ACCESS` to event type enum ## [2.16.0] (2018-03-22) - Added support for [user tracking codes](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxUser.Info.html#getTrackingCodes--) on the user object. - Fixed a bug where JWT authentication would fail due to improper date parsing. - Added support for setting custom headers on API connection. This allow for setting [As-User support](./doc/overview.md#as-user) and [suppressing notifications](./doc/overview.md/suppressing-notifications) support. - Changed default JWT expiration window to reduce chances of error. ## [2.15.0] (2018-03-12) - Added support for retrieving a [metadata template by ID](./doc/metadata_template.md#get-by-id) - Added support for allowing the user to [retrieve specific Collaboration fields on a Collaboration object](./doc/collaborations.md#get-a-collaborations-information) ## [2.14.1] (2018-03-01) - Reduced the number of API calls that the `EventStream` makes to fetch new events, which should help users who are running into rate limit issues. - Force support for TLSv1.1 or higher when available to improve the security of connections to the Box API - Add randomized jitter to the exponential backoff algorithm used by the SDK to improve the success rate of retried requests. ## [2.14.0] (2018-02-15) - Added support for getting and setting the `can_view_path` field on a collaboration object. - Added support for getting and setting the `tags` field on files and folders. ## [2.13.0] (2018-02-07) - Fixed an issue where all types of metadata values were being coerced to Strings. This change deprecates `Metadata#get()` in favor of type-specific methods like `Metadata#getFloat()` or a generic `Metadata#getValue()`, which returns a `JsonValue` object that represents any JSON type. See the [file metadata](./doc/files.md#get-metadata) or [folder metadata](./doc/folders.md#get-metadata) documentation for more information. ## [2.12.0] (2018-02-01) - Fixed ability to notify users or groups regarding [file collaboration](https://github.com/box/box-java-sdk/blob/main/doc/files.md#share-a-file) or [folder collaboration](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#share-a-folder) - Added [OAuth2 token creation event types](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxEvent.java#L747) - Added support for [inviting a user to another Box Enterprise](http://opensource.box.com/box-java-sdk/javadoc/com/box/sdk/BoxInvite.html) - Fixed an [OutOfMemory error in large file upload by capping the maximum number of parts that are uploaded concurrently](https://github.com/box/box-java-sdk/pull/543) ## [2.11.0] (2018-01-25) - [uploadLargeFile now returns a BoxFile object](https://github.com/box/box-java-sdk/pull/524) - [Fixed chunked upload for Box Files greater than 2GB](https://github.com/box/box-java-sdk/pull/531) - [Perform modified retry on JWT auth for when the local clock and the Box Server clock are not aligned as well as if the JWT ID has already been consumed](https://github.com/box/box-java-sdk/pull/523) - BoxFolder.search has been deprecated in favor of [BoxSearch.searchRange](https://github.com/box/box-java-sdk/blob/86b82f2be3c57e3b89ae150b5f237d410e2d4900/doc/search.md) ## [2.10.0] (2018-01-11) - [Add optional is_confirmed paramater for adding user email alias](https://github.com/box/box-java-sdk/pull/499) - Added support for [Metadata Template Delete](./doc/metadata_template#delete-a-metadata-template) ## [2.9.0] (2018-01-04) - Added option to pass file [SHA-1 hash for upload integrity](https://github.com/box/box-java-sdk/blob/main/doc/files.md#upload-a-file) - Added support for [Terms of Service](./doc/terms_of_service) endpoint - Fixed missing [webhook triggers](https://github.com/box/box-java-sdk/pull/497) - Fixed missing [event types for events enum](https://github.com/box/box-java-sdk/pull/500) - Added [modified_at timestamp to BoxComment.Info](https://github.com/box/box-java-sdk/pull/499) - Added support for [Collaboration Whitelists](./doc/collaboration_whitelists) endpoint ## [2.8.2] (2017-10-05) - Added additional check for `PrivateKeyInfo` in `BoxDeveloperEditionApiConnection` ## [2.8.1] (2017-10-05) - Added ability to [set connect and read timeout globally](https://github.com/box/box-java-sdk/pull/459) ## [2.8.0] (2017-09-07) - Added method for getting file representations - Changes to Representation object ## [2.7.0] (2017-08-30) - Added support for [Representations](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxFile.java#L445) endpoint ## [2.6.0] (2017-08-28) - Added support for [Batch](https://github.com/box/box-java-sdk/blob/575861fad0b3e67d432b5d5955d1e760b3f6444e/README.md#batchrequestexample) - Added support for [Unified Metadata](./doc/folders#get-metadata-using-unified-metadata-api) ## [2.5.0] (2017-07-28) - Added support for [Recent Items](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxRecents.java#L1) endpoint - Added support [Get All Groups By Name](https://github.com/box/box-java-sdk/blob/a1833950c18139fd9cbb4d8ee61d310c7bbedadf/src/main/java/com/box/sdk/BoxGroup.java#L143) endpoint - Added support for [Token Exchange](https://github.com/box/box-java-sdk/blob/main/src/main/java/com/box/sdk/BoxAPIConnection.java#L634) ## [2.4.0] (2017-05-02) - Support for multiput upload. New methods in BoxFolder and BoxFile support multiput upload for better performance and reliability for large files. - Single file collaborations. The BoxFile class now supports sharing individual files. - Automatic configuration for JWT auth. The Box Developer console now lets you download a JSON file of your JWT app configuration settings. You can import this file into the Java SDK to easily configure your app. ## [2.3.0] (2017-01-12) New API Endpoints: [Legal Holds](https://github.com/box/box-java-sdk/blob/main/doc/legal_holds.md) [Retention Policies](https://github.com/box/box-java-sdk/blob/main/doc/retention_policies.md) [Create Metadata Template](https://github.com/box/box-java-sdk/blob/main/doc/metadata_template.md#create-metadata-template) [Get All Metadata on File](https://github.com/box/box-java-sdk/blob/main/doc/files.md#get-all-metadata-on-file) [Get All Metadata on Folder](https://github.com/box/box-java-sdk/blob/main/doc/folders.md#get-all-metadata-on-folder) [Get Enterprise Metadata Templates](https://github.com/box/box-java-sdk/blob/main/doc/metadata_template.md#get-enterprise-metadata-templates) [Update Group](https://github.com/box/box-java-sdk/blob/main/doc/groups.md#update-a-group) [Watermarking](https://github.com/box/box-java-sdk/blob/main/doc/watermarking.md) [Webhooks V2](https://github.com/box/box-java-sdk/blob/main/doc/webhooks.md) [WebLinks](https://github.com/box/box-java-sdk/blob/main/doc/weblinks.md) [Collections](https://github.com/box/box-java-sdk/blob/main/doc/collections.md) [BoxGroupMembership with for Paging](https://github.com/box/box-java-sdk/blob/main/doc/groups.md) [Enterprise Device Pins](https://github.com/box/box-java-sdk/blob/86b82f2be3c57e3b89ae150b5f237d410e2d4900/doc/devices.md) New Features: Transactional Authentication. Support for Box's new Transactional Auth APIs. Upload file versions with SHA1. A file's SHA1 can be passed in to BoxFile.uploadVersion(...) when uploading new versions. Get effective_access for shared links. The effective_access field is accessible through BoxSharedLink. getEffectiveAccess(). Added additional Event Types. The TASK_ASSIGNMENT_COMPLETE, TASK_ASSIGNMENT_UPDATE, TASK_CREATE, COMMENT_DELETE types are now included in the BoxEvent class. ## [2.1.0] (2016-02-22) This release includes improvements to token caching for App Users and support for additional API endpoints. New Features: ``` - App Users token caching. A token cache can now be specified in BoxDeveloperEditionAPIConnection. This allows for improved performance when using App Users authentication. - Support for retrieving download URLs. The BoxFile.getDownloadURL() method allows for retrieving a direct download URL to a file. - File thumbnails. The BoxFile.getThumbnail() method allows for downloading the [Thumbnail](https://github.com/box/box-java-sdk/blob/main/doc/files.md#get-thumbnail) for a file. ``` Bug Fixes: ``` - Getting info for a file could crash when there's no preview. Previously, an exception would be thrown if BoxFile.getInfo (BoxFile.ALL_FIELDS) was called and the file didn't have a preview available. ``` --- ### ChunkedUploadsManager **Type:** page | **Section:** Additional Resources ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). Create upload session Create upload session… # ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). - [Create upload session](#create-upload-session) - [Create upload session for existing file](#create-upload-session-for-existing-file) - [Get upload session by URL](#get-upload-session-by-url) - [Get upload session](#get-upload-session) - [Upload part of file by URL](#upload-part-of-file-by-url) - [Upload part of file](#upload-part-of-file) - [Remove upload session by URL](#remove-upload-session-by-url) - [Remove upload session](#remove-upload-session) - [List parts by URL](#list-parts-by-url) - [List parts](#list-parts) - [Commit upload session by URL](#commit-upload-session-by-url) - [Commit upload session](#commit-upload-session) - [Upload big file](#upload-big-file) ## Create upload session Creates an upload session for a new file. This operation is performed by calling function `createFileUploadSession`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions/). ``` await client.chunkedUploads.createFileUploadSession({ fileName: fileName, fileSize: fileSize, folderId: parentFolderId, } satisfies CreateFileUploadSessionRequestBody); ``` ### Arguments requestBody `CreateFileUploadSessionRequestBody` - Request body of createFileUploadSession method optionalsInput `CreateFileUploadSessionOptionalsInput` ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Create upload session for existing file Creates an upload session for an existing file. This operation is performed by calling function `createFileUploadSessionForExistingFile`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-id-upload-sessions/). *Currently we don't have an example for calling `createFileUploadSessionForExistingFile` in integration tests* ### Arguments fileId `string` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" requestBody `CreateFileUploadSessionForExistingFileRequestBody` - Request body of createFileUploadSessionForExistingFile method optionalsInput `CreateFileUploadSessionForExistingFileOptionalsInput` ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Get upload session by URL Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` await client.chunkedUploads.getFileUploadSessionByUrl(statusUrl); ``` ### Arguments url `string` - URL of getFileUploadSessionById method optionalsInput `GetFileUploadSessionByUrlOptionalsInput` ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Get upload session Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` await client.chunkedUploads.getFileUploadSessionById(uploadSessionId); ``` ### Arguments uploadSessionId `string` - The ID of the upload session. Example: "D5E3F7A" optionalsInput `GetFileUploadSessionByIdOptionalsInput` ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Upload part of file by URL Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePartByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` await client.chunkedUploads.uploadFilePartByUrl( acc.uploadPartUrl, generateByteStreamFromBuffer(chunkBuffer), { digest: digest, contentRange: contentRange, } satisfies UploadFilePartByUrlHeadersInput, ); ``` ### Arguments url `string` - URL of uploadFilePart method requestBody `ByteStream` - Request body of uploadFilePart method headersInput `UploadFilePartByUrlHeadersInput` - Headers of uploadFilePart method optionalsInput `UploadFilePartByUrlOptionalsInput` ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Upload part of file Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePart`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` await client.chunkedUploads.uploadFilePart( acc.uploadSessionId, generateByteStreamFromBuffer(chunkBuffer), { digest: digest, contentRange: contentRange, } satisfies UploadFilePartHeadersInput, ); ``` ### Arguments uploadSessionId `string` - The ID of the upload session. Example: "D5E3F7A" requestBody `ByteStream` - Request body of uploadFilePart method headersInput `UploadFilePartHeadersInput` - Headers of uploadFilePart method optionalsInput `UploadFilePartOptionalsInput` ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Remove upload session by URL Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` await client.chunkedUploads.deleteFileUploadSessionByUrl(abortUrl); ``` ### Arguments url `string` - URL of deleteFileUploadSessionById method optionalsInput `DeleteFileUploadSessionByUrlOptionalsInput` ### Returns This function returns a value of type `undefined`. A blank response is returned if the session was successfully aborted. ## Remove upload session Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` await client.chunkedUploads.deleteFileUploadSessionById(uploadSessionId); ``` ### Arguments uploadSessionId `string` - The ID of the upload session. Example: "D5E3F7A" optionalsInput `DeleteFileUploadSessionByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. A blank response is returned if the session was successfully aborted. ## List parts by URL Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionPartsByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` await client.chunkedUploads.getFileUploadSessionPartsByUrl(listPartsUrl); ``` ### Arguments url `string` - URL of getFileUploadSessionParts method optionalsInput `GetFileUploadSessionPartsByUrlOptionalsInput` ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## List parts Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionParts`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` await client.chunkedUploads.getFileUploadSessionParts(uploadSessionId); ``` ### Arguments uploadSessionId `string` - The ID of the upload session. Example: "D5E3F7A" optionalsInput `GetFileUploadSessionPartsOptionalsInput` ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## Commit upload session by URL Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommitByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` await client.chunkedUploads.createFileUploadSessionCommitByUrl( commitUrl, { parts: parts } satisfies CreateFileUploadSessionCommitByUrlRequestBody, { digest: digest } satisfies CreateFileUploadSessionCommitByUrlHeadersInput, ); ``` ### Arguments url `string` - URL of createFileUploadSessionCommit method requestBody `CreateFileUploadSessionCommitByUrlRequestBody` - Request body of createFileUploadSessionCommit method headersInput `CreateFileUploadSessionCommitByUrlHeadersInput` - Headers of createFileUploadSessionCommit method optionalsInput `CreateFileUploadSessionCommitByUrlOptionalsInput` ### Returns This function returns a value of type `undefined | Files`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Commit upload session Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommit`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` await client.chunkedUploads.createFileUploadSessionCommit( uploadSessionId, { parts: parts } satisfies CreateFileUploadSessionCommitRequestBody, { digest: digest } satisfies CreateFileUploadSessionCommitHeadersInput, ); ``` ### Arguments uploadSessionId `string` - The ID of the upload session. Example: "D5E3F7A" requestBody `CreateFileUploadSessionCommitRequestBody` - Request body of createFileUploadSessionCommit method headersInput `CreateFileUploadSessionCommitHeadersInput` - Headers of createFileUploadSessionCommit method optionalsInput `CreateFileUploadSessionCommitOptionalsInput` ### Returns This function returns a value of type `undefined | Files`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Upload big file Starts the process of chunk uploading a big file. Should return a File object representing uploaded file. This operation is performed by calling function `uploadBigFile`. ``` await client.chunkedUploads.uploadBigFile( fileByteStream, fileName, fileSize, parentFolderId, ); ``` ### Arguments file `ByteStream` - The stream of the file to upload. fileName `string` - The name of the file, which will be used for storage in Box. fileSize `number` - The total size of the file for the chunked upload in bytes. parentFolderId `string` - The ID of the folder where the file should be uploaded. cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `FileFull`. --- ### ChunkedUploadsManager **Type:** page | **Section:** Additional Resources ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). Create upload session Create upload session… # ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). - [Create upload session](#create-upload-session) - [Create upload session for existing file](#create-upload-session-for-existing-file) - [Get upload session by URL](#get-upload-session-by-url) - [Get upload session](#get-upload-session) - [Upload part of file by URL](#upload-part-of-file-by-url) - [Upload part of file](#upload-part-of-file) - [Remove upload session by URL](#remove-upload-session-by-url) - [Remove upload session](#remove-upload-session) - [List parts by URL](#list-parts-by-url) - [List parts](#list-parts) - [Commit upload session by URL](#commit-upload-session-by-url) - [Commit upload session](#commit-upload-session) - [Upload big file](#upload-big-file) ## Create upload session Creates an upload session for a new file. This operation is performed by calling function `createFileUploadSession`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions/). ``` client.getChunkedUploads().createFileUploadSession(new CreateFileUploadSessionRequestBody(parentFolderId, fileSize, fileName)) ``` ### Arguments requestBody `CreateFileUploadSessionRequestBody` - Request body of createFileUploadSession method headers `CreateFileUploadSessionHeaders` - Headers of createFileUploadSession method ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Create upload session for existing file Creates an upload session for an existing file. This operation is performed by calling function `createFileUploadSessionForExistingFile`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-id-upload-sessions/). *Currently we don't have an example for calling `createFileUploadSessionForExistingFile` in integration tests* ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" requestBody `CreateFileUploadSessionForExistingFileRequestBody` - Request body of createFileUploadSessionForExistingFile method headers `CreateFileUploadSessionForExistingFileHeaders` - Headers of createFileUploadSessionForExistingFile method ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Get upload session by URL Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` client.getChunkedUploads().getFileUploadSessionByUrl(statusUrl) ``` ### Arguments url `String` - URL of getFileUploadSessionById method headers `GetFileUploadSessionByUrlHeaders` - Headers of getFileUploadSessionById method ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Get upload session Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` client.getChunkedUploads().getFileUploadSessionById(uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" headers `GetFileUploadSessionByIdHeaders` - Headers of getFileUploadSessionById method ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Upload part of file by URL Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePartByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` client.getChunkedUploads().uploadFilePartByUrl(acc.getUploadPartUrl(), generateByteStreamFromBuffer(chunkBuffer), new UploadFilePartByUrlHeaders(digest, contentRange)) ``` ### Arguments url `String` - URL of uploadFilePart method requestBody `InputStream` - Request body of uploadFilePart method headers `UploadFilePartByUrlHeaders` - Headers of uploadFilePart method ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Upload part of file Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePart`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` client.getChunkedUploads().uploadFilePart(acc.getUploadSessionId(), generateByteStreamFromBuffer(chunkBuffer), new UploadFilePartHeaders(digest, contentRange)) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" requestBody `InputStream` - Request body of uploadFilePart method headers `UploadFilePartHeaders` - Headers of uploadFilePart method ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Remove upload session by URL Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` client.getChunkedUploads().deleteFileUploadSessionByUrl(abortUrl) ``` ### Arguments url `String` - URL of deleteFileUploadSessionById method headers `DeleteFileUploadSessionByUrlHeaders` - Headers of deleteFileUploadSessionById method ### Returns This function returns a value of type `void`. A blank response is returned if the session was successfully aborted. ## Remove upload session Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` client.getChunkedUploads().deleteFileUploadSessionById(uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" headers `DeleteFileUploadSessionByIdHeaders` - Headers of deleteFileUploadSessionById method ### Returns This function returns a value of type `void`. A blank response is returned if the session was successfully aborted. ## List parts by URL Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionPartsByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` client.getChunkedUploads().getFileUploadSessionPartsByUrl(listPartsUrl) ``` ### Arguments url `String` - URL of getFileUploadSessionParts method queryParams `GetFileUploadSessionPartsByUrlQueryParams` - Query parameters of getFileUploadSessionParts method headers `GetFileUploadSessionPartsByUrlHeaders` - Headers of getFileUploadSessionParts method ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## List parts Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionParts`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` client.getChunkedUploads().getFileUploadSessionParts(uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" queryParams `GetFileUploadSessionPartsQueryParams` - Query parameters of getFileUploadSessionParts method headers `GetFileUploadSessionPartsHeaders` - Headers of getFileUploadSessionParts method ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## Commit upload session by URL Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommitByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` client.getChunkedUploads().createFileUploadSessionCommitByUrl(commitUrl, new CreateFileUploadSessionCommitByUrlRequestBody(parts), new CreateFileUploadSessionCommitByUrlHeaders(digest)) ``` ### Arguments url `String` - URL of createFileUploadSessionCommit method requestBody `CreateFileUploadSessionCommitByUrlRequestBody` - Request body of createFileUploadSessionCommit method headers `CreateFileUploadSessionCommitByUrlHeaders` - Headers of createFileUploadSessionCommit method ### Returns This function returns a value of type `Files`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Commit upload session Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommit`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` client.getChunkedUploads().createFileUploadSessionCommit(uploadSessionId, new CreateFileUploadSessionCommitRequestBody(parts), new CreateFileUploadSessionCommitHeaders(digest)) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" requestBody `CreateFileUploadSessionCommitRequestBody` - Request body of createFileUploadSessionCommit method headers `CreateFileUploadSessionCommitHeaders` - Headers of createFileUploadSessionCommit method ### Returns This function returns a value of type `Files`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Upload big file Starts the process of chunk uploading a big file. Should return a File object representing uploaded file. This operation is performed by calling function `uploadBigFile`. ``` client.getChunkedUploads().uploadBigFile(fileByteStream, fileName, fileSize, parentFolderId) ``` ### Arguments file `InputStream` - The stream of the file to upload. fileName `String` - The name of the file, which will be used for storage in Box. fileSize `long` - The total size of the file for the chunked upload in bytes. parentFolderId `String` - The ID of the folder where the file should be uploaded. ### Returns This function returns a value of type `FileFull`. --- ### ChunkedUploadsManager **Type:** page | **Section:** Additional Resources ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). Create upload session Create upload session… # ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). - [Create upload session](#create-upload-session) - [Create upload session for existing file](#create-upload-session-for-existing-file) - [Get upload session by URL](#get-upload-session-by-url) - [Get upload session](#get-upload-session) - [Upload part of file by URL](#upload-part-of-file-by-url) - [Upload part of file](#upload-part-of-file) - [Remove upload session by URL](#remove-upload-session-by-url) - [Remove upload session](#remove-upload-session) - [List parts by URL](#list-parts-by-url) - [List parts](#list-parts) - [Commit upload session by URL](#commit-upload-session-by-url) - [Commit upload session](#commit-upload-session) - [Upload big file](#upload-big-file) ## Create upload session Creates an upload session for a new file. This operation is performed by calling function `create_file_upload_session`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions/). ``` client.chunked_uploads.create_file_upload_session( parent_folder_id, file_size, file_name ) ``` ### Arguments folder_id `str` - The ID of the folder to upload the new file to. file_size `int` - The total number of bytes of the file to be uploaded. file_name `str` - The name of new file. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Create upload session for existing file Creates an upload session for an existing file. This operation is performed by calling function `create_file_upload_session_for_existing_file`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-id-upload-sessions/). *Currently we don't have an example for calling `create_file_upload_session_for_existing_file` in integration tests* ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" file_size `int` - The total number of bytes of the file to be uploaded. file_name `Optional[str]` - The optional new name of new file. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Get upload session by URL Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) endpoint. This operation is performed by calling function `get_file_upload_session_by_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` client.chunked_uploads.get_file_upload_session_by_url(status_url) ``` ### Arguments url `str` - URL of getFileUploadSessionById method extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Get upload session Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) endpoint. This operation is performed by calling function `get_file_upload_session_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` client.chunked_uploads.get_file_upload_session_by_id(upload_session_id) ``` ### Arguments upload_session_id `str` - The ID of the upload session. Example: "D5E3F7A" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Upload part of file by URL Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `upload_file_part_by_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` client.chunked_uploads.upload_file_part_by_url( acc.upload_part_url, generate_byte_stream_from_buffer(chunk_buffer), digest, content_range, ) ``` ### Arguments url `str` - URL of uploadFilePart method request_body `ByteStream` - Request body of uploadFilePart method digest `str` - The [RFC3230][1] message digest of the chunk uploaded. Only SHA1 is supported. The SHA1 digest must be base64 encoded. The format of this header is as `sha=BASE64_ENCODED_DIGEST`. To get the value for the `SHA` digest, use the openSSL command to encode the file part: `openssl sha1 -binary <FILE_PART_NAME> | base64`. [1]: [https://tools.ietf.org/html/rfc3230](https://tools.ietf.org/html/rfc3230) content_range `str` - The byte range of the chunk. Must not overlap with the range of a part already uploaded this session. Each part’s size must be exactly equal in size to the part size specified in the upload session that you created. One exception is the last part of the file, as this can be smaller. When providing the value for `content-range`, remember that: _ The lower bound of each part's byte range must be a multiple of the part size. _ The higher bound must be a multiple of the part size - 1. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Upload part of file Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `upload_file_part`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` client.chunked_uploads.upload_file_part( acc.upload_session_id, generate_byte_stream_from_buffer(chunk_buffer), digest, content_range, ) ``` ### Arguments upload_session_id `str` - The ID of the upload session. Example: "D5E3F7A" request_body `ByteStream` - Request body of uploadFilePart method digest `str` - The [RFC3230][1] message digest of the chunk uploaded. Only SHA1 is supported. The SHA1 digest must be base64 encoded. The format of this header is as `sha=BASE64_ENCODED_DIGEST`. To get the value for the `SHA` digest, use the openSSL command to encode the file part: `openssl sha1 -binary <FILE_PART_NAME> | base64`. [1]: [https://tools.ietf.org/html/rfc3230](https://tools.ietf.org/html/rfc3230) content_range `str` - The byte range of the chunk. Must not overlap with the range of a part already uploaded this session. Each part’s size must be exactly equal in size to the part size specified in the upload session that you created. One exception is the last part of the file, as this can be smaller. When providing the value for `content-range`, remember that: _ The lower bound of each part's byte range must be a multiple of the part size. _ The higher bound must be a multiple of the part size - 1. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Remove upload session by URL Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `delete_file_upload_session_by_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` client.chunked_uploads.delete_file_upload_session_by_url(abort_url) ``` ### Arguments url `str` - URL of deleteFileUploadSessionById method extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. A blank response is returned if the session was successfully aborted. ## Remove upload session Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `delete_file_upload_session_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` client.chunked_uploads.delete_file_upload_session_by_id(upload_session_id) ``` ### Arguments upload_session_id `str` - The ID of the upload session. Example: "D5E3F7A" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. A blank response is returned if the session was successfully aborted. ## List parts by URL Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `get_file_upload_session_parts_by_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` client.chunked_uploads.get_file_upload_session_parts_by_url(list_parts_url) ``` ### Arguments url `str` - URL of getFileUploadSessionParts method offset `Optional[int]` - The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## List parts Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `get_file_upload_session_parts`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` client.chunked_uploads.get_file_upload_session_parts(upload_session_id) ``` ### Arguments upload_session_id `str` - The ID of the upload session. Example: "D5E3F7A" offset `Optional[int]` - The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## Commit upload session by URL Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `create_file_upload_session_commit_by_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` client.chunked_uploads.create_file_upload_session_commit_by_url( commit_url, parts, digest ) ``` ### Arguments url `str` - URL of createFileUploadSessionCommit method parts `List[UploadPart]` - The list details for the uploaded parts. digest `str` - The [RFC3230][1] message digest of the whole file. Only SHA1 is supported. The SHA1 digest must be Base64 encoded. The format of this header is as `sha=BASE64_ENCODED_DIGEST`. [1]: [https://tools.ietf.org/html/rfc3230](https://tools.ietf.org/html/rfc3230) if_match `Optional[str]` - Ensures this item hasn't recently changed before making changes. Pass in the item's last observed `etag` value into this header and the endpoint will fail with a `412 Precondition Failed` if it has changed since. if_none_match `Optional[str]` - Ensures an item is only returned if it has changed. Pass in the item's last observed `etag` value into this header and the endpoint will fail with a `304 Not Modified` if the item has not changed since. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Optional[Files]`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Commit upload session Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `create_file_upload_session_commit`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` client.chunked_uploads.create_file_upload_session_commit( upload_session_id, parts, digest ) ``` ### Arguments upload_session_id `str` - The ID of the upload session. Example: "D5E3F7A" parts `List[UploadPart]` - The list details for the uploaded parts. digest `str` - The [RFC3230][1] message digest of the whole file. Only SHA1 is supported. The SHA1 digest must be Base64 encoded. The format of this header is as `sha=BASE64_ENCODED_DIGEST`. [1]: [https://tools.ietf.org/html/rfc3230](https://tools.ietf.org/html/rfc3230) if_match `Optional[str]` - Ensures this item hasn't recently changed before making changes. Pass in the item's last observed `etag` value into this header and the endpoint will fail with a `412 Precondition Failed` if it has changed since. if_none_match `Optional[str]` - Ensures an item is only returned if it has changed. Pass in the item's last observed `etag` value into this header and the endpoint will fail with a `304 Not Modified` if the item has not changed since. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Optional[Files]`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Upload big file Starts the process of chunk uploading a big file. Should return a File object representing uploaded file. This operation is performed by calling function `upload_big_file`. ``` client.chunked_uploads.upload_big_file( file_byte_stream, file_name, file_size, parent_folder_id ) ``` ### Arguments file `ByteStream` - The stream of the file to upload. file_name `str` - The name of the file, which will be used for storage in Box. file_size `int` - The total size of the file for the chunked upload in bytes. parent_folder_id `str` - The ID of the folder where the file should be uploaded. ### Returns This function returns a value of type `FileFull`. --- ### ChunkedUploadsManager **Type:** page | **Section:** Additional Resources ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). Create upload session Create upload session… # ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). - [Create upload session](#create-upload-session) - [Create upload session for existing file](#create-upload-session-for-existing-file) - [Get upload session by URL](#get-upload-session-by-url) - [Get upload session](#get-upload-session) - [Upload part of file by URL](#upload-part-of-file-by-url) - [Upload part of file](#upload-part-of-file) - [Remove upload session by URL](#remove-upload-session-by-url) - [Remove upload session](#remove-upload-session) - [List parts by URL](#list-parts-by-url) - [List parts](#list-parts) - [Commit upload session by URL](#commit-upload-session-by-url) - [Commit upload session](#commit-upload-session) - [Upload big file](#upload-big-file) ## Create upload session Creates an upload session for a new file. This operation is performed by calling function `createFileUploadSession`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions/). ``` try await client.chunkedUploads.createFileUploadSession(requestBody: CreateFileUploadSessionRequestBody(fileName: fileName, fileSize: Int64(fileSize), folderId: parentFolderId)) ``` ### Arguments requestBody `CreateFileUploadSessionRequestBody` - Request body of createFileUploadSession method headers `CreateFileUploadSessionHeaders` - Headers of createFileUploadSession method ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Create upload session for existing file Creates an upload session for an existing file. This operation is performed by calling function `createFileUploadSessionForExistingFile`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-id-upload-sessions/). *Currently we don't have an example for calling `createFileUploadSessionForExistingFile` in integration tests* ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" requestBody `CreateFileUploadSessionForExistingFileRequestBody` - Request body of createFileUploadSessionForExistingFile method headers `CreateFileUploadSessionForExistingFileHeaders` - Headers of createFileUploadSessionForExistingFile method ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Get upload session by URL Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` try await client.chunkedUploads.getFileUploadSessionByUrl(url: statusUrl) ``` ### Arguments url `String` - URL of getFileUploadSessionById method headers `GetFileUploadSessionByUrlHeaders` - Headers of getFileUploadSessionById method ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Get upload session Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` try await client.chunkedUploads.getFileUploadSessionById(uploadSessionId: uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" headers `GetFileUploadSessionByIdHeaders` - Headers of getFileUploadSessionById method ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Upload part of file by URL Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePartByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` try await client.chunkedUploads.uploadFilePartByUrl(url: acc.uploadPartUrl, requestBody: Utils.generateByteStreamFromBuffer(buffer: chunkBuffer), headers: UploadFilePartByUrlHeaders(digest: digest, contentRange: contentRange)) ``` ### Arguments url `String` - URL of uploadFilePart method requestBody `InputStream` - Request body of uploadFilePart method headers `UploadFilePartByUrlHeaders` - Headers of uploadFilePart method ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Upload part of file Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePart`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` try await client.chunkedUploads.uploadFilePart(uploadSessionId: acc.uploadSessionId, requestBody: Utils.generateByteStreamFromBuffer(buffer: chunkBuffer), headers: UploadFilePartHeaders(digest: digest, contentRange: contentRange)) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" requestBody `InputStream` - Request body of uploadFilePart method headers `UploadFilePartHeaders` - Headers of uploadFilePart method ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Remove upload session by URL Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` try await client.chunkedUploads.deleteFileUploadSessionByUrl(url: abortUrl) ``` ### Arguments url `String` - URL of deleteFileUploadSessionById method headers `DeleteFileUploadSessionByUrlHeaders` - Headers of deleteFileUploadSessionById method ### Returns This function returns a value of type ``. A blank response is returned if the session was successfully aborted. ## Remove upload session Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` try await client.chunkedUploads.deleteFileUploadSessionById(uploadSessionId: uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" headers `DeleteFileUploadSessionByIdHeaders` - Headers of deleteFileUploadSessionById method ### Returns This function returns a value of type ``. A blank response is returned if the session was successfully aborted. ## List parts by URL Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionPartsByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` try await client.chunkedUploads.getFileUploadSessionPartsByUrl(url: listPartsUrl) ``` ### Arguments url `String` - URL of getFileUploadSessionParts method queryParams `GetFileUploadSessionPartsByUrlQueryParams` - Query parameters of getFileUploadSessionParts method headers `GetFileUploadSessionPartsByUrlHeaders` - Headers of getFileUploadSessionParts method ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## List parts Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionParts`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` try await client.chunkedUploads.getFileUploadSessionParts(uploadSessionId: uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" queryParams `GetFileUploadSessionPartsQueryParams` - Query parameters of getFileUploadSessionParts method headers `GetFileUploadSessionPartsHeaders` - Headers of getFileUploadSessionParts method ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## Commit upload session by URL Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommitByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` try await client.chunkedUploads.createFileUploadSessionCommitByUrl(url: commitUrl, requestBody: CreateFileUploadSessionCommitByUrlRequestBody(parts: parts), headers: CreateFileUploadSessionCommitByUrlHeaders(digest: digest)) ``` ### Arguments url `String` - URL of createFileUploadSessionCommit method requestBody `CreateFileUploadSessionCommitByUrlRequestBody` - Request body of createFileUploadSessionCommit method headers `CreateFileUploadSessionCommitByUrlHeaders` - Headers of createFileUploadSessionCommit method ### Returns This function returns a value of type `Files?`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Commit upload session Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](https://developer.box.com/reference/post-files-upload-sessions) and [`Get upload session`](https://developer.box.com/reference/get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommit`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` try await client.chunkedUploads.createFileUploadSessionCommit(uploadSessionId: uploadSessionId, requestBody: CreateFileUploadSessionCommitRequestBody(parts: parts), headers: CreateFileUploadSessionCommitHeaders(digest: digest)) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" requestBody `CreateFileUploadSessionCommitRequestBody` - Request body of createFileUploadSessionCommit method headers `CreateFileUploadSessionCommitHeaders` - Headers of createFileUploadSessionCommit method ### Returns This function returns a value of type `Files?`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Upload big file Starts the process of chunk uploading a big file. Should return a File object representing uploaded file. This operation is performed by calling function `uploadBigFile`. ``` try await client.chunkedUploads.uploadBigFile(file: fileByteStream, fileName: fileName, fileSize: Int64(fileSize), parentFolderId: parentFolderId) ``` ### Arguments file `InputStream` - The stream of the file to upload. fileName `String` - The name of the file, which will be used for storage in Box. fileSize `Int64` - The total size of the file for the chunked upload in bytes. parentFolderId `String` - The ID of the folder where the file should be uploaded. ### Returns This function returns a value of type `FileFull`. --- ### ChunkedUploadsManager **Type:** page | **Section:** Additional Resources ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). Create upload session Create upload session… # ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). - [Create upload session](#create-upload-session) - [Create upload session for existing file](#create-upload-session-for-existing-file) - [Get upload session by URL](#get-upload-session-by-url) - [Get upload session](#get-upload-session) - [Upload part of file by URL](#upload-part-of-file-by-url) - [Upload part of file](#upload-part-of-file) - [Remove upload session by URL](#remove-upload-session-by-url) - [Remove upload session](#remove-upload-session) - [List parts by URL](#list-parts-by-url) - [List parts](#list-parts) - [Commit upload session by URL](#commit-upload-session-by-url) - [Commit upload session](#commit-upload-session) - [Upload big file](#upload-big-file) ## Create upload session Creates an upload session for a new file. This operation is performed by calling function `createFileUploadSession`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions/). ``` await client.chunkedUploads.createFileUploadSession({ fileName: fileName, fileSize: fileSize, folderId: parentFolderId, } satisfies CreateFileUploadSessionRequestBody); ``` ### Arguments requestBody `CreateFileUploadSessionRequestBody` - Request body of createFileUploadSession method optionalsInput `CreateFileUploadSessionOptionalsInput` ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Create upload session for existing file Creates an upload session for an existing file. This operation is performed by calling function `createFileUploadSessionForExistingFile`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-id-upload-sessions/). *Currently we don't have an example for calling `createFileUploadSessionForExistingFile` in integration tests* ### Arguments fileId `string` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" requestBody `CreateFileUploadSessionForExistingFileRequestBody` - Request body of createFileUploadSessionForExistingFile method optionalsInput `CreateFileUploadSessionForExistingFileOptionalsInput` ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Get upload session by URL Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` await client.chunkedUploads.getFileUploadSessionByUrl(statusUrl); ``` ### Arguments url `string` - URL of getFileUploadSessionById method optionalsInput `GetFileUploadSessionByUrlOptionalsInput` ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Get upload session Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` await client.chunkedUploads.getFileUploadSessionById(uploadSessionId); ``` ### Arguments uploadSessionId `string` - The ID of the upload session. Example: "D5E3F7A" optionalsInput `GetFileUploadSessionByIdOptionalsInput` ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Upload part of file by URL Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePartByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` await client.chunkedUploads.uploadFilePartByUrl( acc.uploadPartUrl, generateByteStreamFromBuffer(chunkBuffer), { digest: digest, contentRange: contentRange, } satisfies UploadFilePartByUrlHeadersInput, ); ``` ### Arguments url `string` - URL of uploadFilePart method requestBody `ByteStream` - Request body of uploadFilePart method headersInput `UploadFilePartByUrlHeadersInput` - Headers of uploadFilePart method optionalsInput `UploadFilePartByUrlOptionalsInput` ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Upload part of file Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePart`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` await client.chunkedUploads.uploadFilePart( acc.uploadSessionId, generateByteStreamFromBuffer(chunkBuffer), { digest: digest, contentRange: contentRange, } satisfies UploadFilePartHeadersInput, ); ``` ### Arguments uploadSessionId `string` - The ID of the upload session. Example: "D5E3F7A" requestBody `ByteStream` - Request body of uploadFilePart method headersInput `UploadFilePartHeadersInput` - Headers of uploadFilePart method optionalsInput `UploadFilePartOptionalsInput` ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Remove upload session by URL Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` await client.chunkedUploads.deleteFileUploadSessionByUrl(abortUrl); ``` ### Arguments url `string` - URL of deleteFileUploadSessionById method optionalsInput `DeleteFileUploadSessionByUrlOptionalsInput` ### Returns This function returns a value of type `undefined`. A blank response is returned if the session was successfully aborted. ## Remove upload session Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` await client.chunkedUploads.deleteFileUploadSessionById(uploadSessionId); ``` ### Arguments uploadSessionId `string` - The ID of the upload session. Example: "D5E3F7A" optionalsInput `DeleteFileUploadSessionByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. A blank response is returned if the session was successfully aborted. ## List parts by URL Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionPartsByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` await client.chunkedUploads.getFileUploadSessionPartsByUrl(listPartsUrl); ``` ### Arguments url `string` - URL of getFileUploadSessionParts method optionalsInput `GetFileUploadSessionPartsByUrlOptionalsInput` ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## List parts Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionParts`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` await client.chunkedUploads.getFileUploadSessionParts(uploadSessionId); ``` ### Arguments uploadSessionId `string` - The ID of the upload session. Example: "D5E3F7A" optionalsInput `GetFileUploadSessionPartsOptionalsInput` ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## Commit upload session by URL Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommitByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` await client.chunkedUploads.createFileUploadSessionCommitByUrl( commitUrl, { parts: parts } satisfies CreateFileUploadSessionCommitByUrlRequestBody, { digest: digest } satisfies CreateFileUploadSessionCommitByUrlHeadersInput, ); ``` ### Arguments url `string` - URL of createFileUploadSessionCommit method requestBody `CreateFileUploadSessionCommitByUrlRequestBody` - Request body of createFileUploadSessionCommit method headersInput `CreateFileUploadSessionCommitByUrlHeadersInput` - Headers of createFileUploadSessionCommit method optionalsInput `CreateFileUploadSessionCommitByUrlOptionalsInput` ### Returns This function returns a value of type `undefined | Files`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Commit upload session Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommit`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` await client.chunkedUploads.createFileUploadSessionCommit( uploadSessionId, { parts: parts } satisfies CreateFileUploadSessionCommitRequestBody, { digest: digest } satisfies CreateFileUploadSessionCommitHeadersInput, ); ``` ### Arguments uploadSessionId `string` - The ID of the upload session. Example: "D5E3F7A" requestBody `CreateFileUploadSessionCommitRequestBody` - Request body of createFileUploadSessionCommit method headersInput `CreateFileUploadSessionCommitHeadersInput` - Headers of createFileUploadSessionCommit method optionalsInput `CreateFileUploadSessionCommitOptionalsInput` ### Returns This function returns a value of type `undefined | Files`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Upload big file Starts the process of chunk uploading a big file. Should return a File object representing uploaded file. This operation is performed by calling function `uploadBigFile`. ``` await client.chunkedUploads.uploadBigFile( fileByteStream, fileName, fileSize, parentFolderId, ); ``` ### Arguments file `ByteStream` - The stream of the file to upload. fileName `string` - The name of the file, which will be used for storage in Box. fileSize `number` - The total size of the file for the chunked upload in bytes. parentFolderId `string` - The ID of the folder where the file should be uploaded. cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `FileFull`. --- ### ChunkedUploadsManager **Type:** page | **Section:** Additional Resources ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). Create upload session Create upload session… # ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). - [Create upload session](#create-upload-session) - [Create upload session for existing file](#create-upload-session-for-existing-file) - [Get upload session by URL](#get-upload-session-by-url) - [Get upload session](#get-upload-session) - [Upload part of file by URL](#upload-part-of-file-by-url) - [Upload part of file](#upload-part-of-file) - [Remove upload session by URL](#remove-upload-session-by-url) - [Remove upload session](#remove-upload-session) - [List parts by URL](#list-parts-by-url) - [List parts](#list-parts) - [Commit upload session by URL](#commit-upload-session-by-url) - [Commit upload session](#commit-upload-session) - [Upload big file](#upload-big-file) ## Create upload session Creates an upload session for a new file. This operation is performed by calling function `create_file_upload_session`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions/). ``` client.chunked_uploads.create_file_upload_session( parent_folder_id, file_size, file_name ) ``` ### Arguments folder_id `str` - The ID of the folder to upload the new file to. file_size `int` - The total number of bytes of the file to be uploaded. file_name `str` - The name of new file. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Create upload session for existing file Creates an upload session for an existing file. This operation is performed by calling function `create_file_upload_session_for_existing_file`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-id-upload-sessions/). *Currently we don't have an example for calling `create_file_upload_session_for_existing_file` in integration tests* ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" file_size `int` - The total number of bytes of the file to be uploaded. file_name `Optional[str]` - The optional new name of new file. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Get upload session by URL Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) endpoint. This operation is performed by calling function `get_file_upload_session_by_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` client.chunked_uploads.get_file_upload_session_by_url(status_url) ``` ### Arguments url `str` - URL of getFileUploadSessionById method extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Get upload session Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) endpoint. This operation is performed by calling function `get_file_upload_session_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` client.chunked_uploads.get_file_upload_session_by_id(upload_session_id) ``` ### Arguments upload_session_id `str` - The ID of the upload session. Example: "D5E3F7A" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Upload part of file by URL Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `upload_file_part_by_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` client.chunked_uploads.upload_file_part_by_url( acc.upload_part_url, generate_byte_stream_from_buffer(chunk_buffer), digest, content_range, ) ``` ### Arguments url `str` - URL of uploadFilePart method request_body `ByteStream` - Request body of uploadFilePart method digest `str` - The [RFC3230][1] message digest of the chunk uploaded. Only SHA1 is supported. The SHA1 digest must be base64 encoded. The format of this header is as `sha=BASE64_ENCODED_DIGEST`. To get the value for the `SHA` digest, use the openSSL command to encode the file part: `openssl sha1 -binary <FILE_PART_NAME> | base64`. [1]: [https://tools.ietf.org/html/rfc3230](https://tools.ietf.org/html/rfc3230) content_range `str` - The byte range of the chunk. Must not overlap with the range of a part already uploaded this session. Each part’s size must be exactly equal in size to the part size specified in the upload session that you created. One exception is the last part of the file, as this can be smaller. When providing the value for `content-range`, remember that: _ The lower bound of each part's byte range must be a multiple of the part size. _ The higher bound must be a multiple of the part size - 1. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Upload part of file Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `upload_file_part`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` client.chunked_uploads.upload_file_part( acc.upload_session_id, generate_byte_stream_from_buffer(chunk_buffer), digest, content_range, ) ``` ### Arguments upload_session_id `str` - The ID of the upload session. Example: "D5E3F7A" request_body `ByteStream` - Request body of uploadFilePart method digest `str` - The [RFC3230][1] message digest of the chunk uploaded. Only SHA1 is supported. The SHA1 digest must be base64 encoded. The format of this header is as `sha=BASE64_ENCODED_DIGEST`. To get the value for the `SHA` digest, use the openSSL command to encode the file part: `openssl sha1 -binary <FILE_PART_NAME> | base64`. [1]: [https://tools.ietf.org/html/rfc3230](https://tools.ietf.org/html/rfc3230) content_range `str` - The byte range of the chunk. Must not overlap with the range of a part already uploaded this session. Each part’s size must be exactly equal in size to the part size specified in the upload session that you created. One exception is the last part of the file, as this can be smaller. When providing the value for `content-range`, remember that: _ The lower bound of each part's byte range must be a multiple of the part size. _ The higher bound must be a multiple of the part size - 1. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Remove upload session by URL Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `delete_file_upload_session_by_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` client.chunked_uploads.delete_file_upload_session_by_url(abort_url) ``` ### Arguments url `str` - URL of deleteFileUploadSessionById method extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. A blank response is returned if the session was successfully aborted. ## Remove upload session Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `delete_file_upload_session_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` client.chunked_uploads.delete_file_upload_session_by_id(upload_session_id) ``` ### Arguments upload_session_id `str` - The ID of the upload session. Example: "D5E3F7A" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. A blank response is returned if the session was successfully aborted. ## List parts by URL Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `get_file_upload_session_parts_by_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` client.chunked_uploads.get_file_upload_session_parts_by_url(list_parts_url) ``` ### Arguments url `str` - URL of getFileUploadSessionParts method offset `Optional[int]` - The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## List parts Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `get_file_upload_session_parts`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` client.chunked_uploads.get_file_upload_session_parts(upload_session_id) ``` ### Arguments upload_session_id `str` - The ID of the upload session. Example: "D5E3F7A" offset `Optional[int]` - The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## Commit upload session by URL Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `create_file_upload_session_commit_by_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` client.chunked_uploads.create_file_upload_session_commit_by_url( commit_url, parts, digest ) ``` ### Arguments url `str` - URL of createFileUploadSessionCommit method parts `List[UploadPart]` - The list details for the uploaded parts. digest `str` - The [RFC3230][1] message digest of the whole file. Only SHA1 is supported. The SHA1 digest must be Base64 encoded. The format of this header is as `sha=BASE64_ENCODED_DIGEST`. [1]: [https://tools.ietf.org/html/rfc3230](https://tools.ietf.org/html/rfc3230) if_match `Optional[str]` - Ensures this item hasn't recently changed before making changes. Pass in the item's last observed `etag` value into this header and the endpoint will fail with a `412 Precondition Failed` if it has changed since. if_none_match `Optional[str]` - Ensures an item is only returned if it has changed. Pass in the item's last observed `etag` value into this header and the endpoint will fail with a `304 Not Modified` if the item has not changed since. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Optional[Files]`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Commit upload session Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `create_file_upload_session_commit`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` client.chunked_uploads.create_file_upload_session_commit( upload_session_id, parts, digest ) ``` ### Arguments upload_session_id `str` - The ID of the upload session. Example: "D5E3F7A" parts `List[UploadPart]` - The list details for the uploaded parts. digest `str` - The [RFC3230][1] message digest of the whole file. Only SHA1 is supported. The SHA1 digest must be Base64 encoded. The format of this header is as `sha=BASE64_ENCODED_DIGEST`. [1]: [https://tools.ietf.org/html/rfc3230](https://tools.ietf.org/html/rfc3230) if_match `Optional[str]` - Ensures this item hasn't recently changed before making changes. Pass in the item's last observed `etag` value into this header and the endpoint will fail with a `412 Precondition Failed` if it has changed since. if_none_match `Optional[str]` - Ensures an item is only returned if it has changed. Pass in the item's last observed `etag` value into this header and the endpoint will fail with a `304 Not Modified` if the item has not changed since. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Optional[Files]`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Upload big file Starts the process of chunk uploading a big file. Should return a File object representing uploaded file. This operation is performed by calling function `upload_big_file`. ``` client.chunked_uploads.upload_big_file( file_byte_stream, file_name, file_size, parent_folder_id ) ``` ### Arguments file `ByteStream` - The stream of the file to upload. file_name `str` - The name of the file, which will be used for storage in Box. file_size `int` - The total size of the file for the chunked upload in bytes. parent_folder_id `str` - The ID of the folder where the file should be uploaded. ### Returns This function returns a value of type `FileFull`. --- ### ChunkedUploadsManager **Type:** page | **Section:** Additional Resources ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). Create upload session Create upload session… # ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). - [Create upload session](#create-upload-session) - [Create upload session for existing file](#create-upload-session-for-existing-file) - [Get upload session by URL](#get-upload-session-by-url) - [Get upload session](#get-upload-session) - [Upload part of file by URL](#upload-part-of-file-by-url) - [Upload part of file](#upload-part-of-file) - [Remove upload session by URL](#remove-upload-session-by-url) - [Remove upload session](#remove-upload-session) - [List parts by URL](#list-parts-by-url) - [List parts](#list-parts) - [Commit upload session by URL](#commit-upload-session-by-url) - [Commit upload session](#commit-upload-session) - [Upload big file](#upload-big-file) ## Create upload session Creates an upload session for a new file. This operation is performed by calling function `createFileUploadSession`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions/). ``` try await client.chunkedUploads.createFileUploadSession(requestBody: CreateFileUploadSessionRequestBody(fileName: fileName, fileSize: Int64(fileSize), folderId: parentFolderId)) ``` ### Arguments requestBody `CreateFileUploadSessionRequestBody` - Request body of createFileUploadSession method headers `CreateFileUploadSessionHeaders` - Headers of createFileUploadSession method ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Create upload session for existing file Creates an upload session for an existing file. This operation is performed by calling function `createFileUploadSessionForExistingFile`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-id-upload-sessions/). *Currently we don't have an example for calling `createFileUploadSessionForExistingFile` in integration tests* ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" requestBody `CreateFileUploadSessionForExistingFileRequestBody` - Request body of createFileUploadSessionForExistingFile method headers `CreateFileUploadSessionForExistingFileHeaders` - Headers of createFileUploadSessionForExistingFile method ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Get upload session by URL Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` try await client.chunkedUploads.getFileUploadSessionByUrl(url: statusUrl) ``` ### Arguments url `String` - URL of getFileUploadSessionById method headers `GetFileUploadSessionByUrlHeaders` - Headers of getFileUploadSessionById method ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Get upload session Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` try await client.chunkedUploads.getFileUploadSessionById(uploadSessionId: uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" headers `GetFileUploadSessionByIdHeaders` - Headers of getFileUploadSessionById method ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Upload part of file by URL Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePartByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` try await client.chunkedUploads.uploadFilePartByUrl(url: acc.uploadPartUrl, requestBody: Utils.generateByteStreamFromBuffer(buffer: chunkBuffer), headers: UploadFilePartByUrlHeaders(digest: digest, contentRange: contentRange)) ``` ### Arguments url `String` - URL of uploadFilePart method requestBody `InputStream` - Request body of uploadFilePart method headers `UploadFilePartByUrlHeaders` - Headers of uploadFilePart method ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Upload part of file Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePart`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` try await client.chunkedUploads.uploadFilePart(uploadSessionId: acc.uploadSessionId, requestBody: Utils.generateByteStreamFromBuffer(buffer: chunkBuffer), headers: UploadFilePartHeaders(digest: digest, contentRange: contentRange)) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" requestBody `InputStream` - Request body of uploadFilePart method headers `UploadFilePartHeaders` - Headers of uploadFilePart method ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Remove upload session by URL Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` try await client.chunkedUploads.deleteFileUploadSessionByUrl(url: abortUrl) ``` ### Arguments url `String` - URL of deleteFileUploadSessionById method headers `DeleteFileUploadSessionByUrlHeaders` - Headers of deleteFileUploadSessionById method ### Returns This function returns a value of type ``. A blank response is returned if the session was successfully aborted. ## Remove upload session Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` try await client.chunkedUploads.deleteFileUploadSessionById(uploadSessionId: uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" headers `DeleteFileUploadSessionByIdHeaders` - Headers of deleteFileUploadSessionById method ### Returns This function returns a value of type ``. A blank response is returned if the session was successfully aborted. ## List parts by URL Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionPartsByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` try await client.chunkedUploads.getFileUploadSessionPartsByUrl(url: listPartsUrl) ``` ### Arguments url `String` - URL of getFileUploadSessionParts method queryParams `GetFileUploadSessionPartsByUrlQueryParams` - Query parameters of getFileUploadSessionParts method headers `GetFileUploadSessionPartsByUrlHeaders` - Headers of getFileUploadSessionParts method ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## List parts Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionParts`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` try await client.chunkedUploads.getFileUploadSessionParts(uploadSessionId: uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" queryParams `GetFileUploadSessionPartsQueryParams` - Query parameters of getFileUploadSessionParts method headers `GetFileUploadSessionPartsHeaders` - Headers of getFileUploadSessionParts method ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## Commit upload session by URL Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommitByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` try await client.chunkedUploads.createFileUploadSessionCommitByUrl(url: commitUrl, requestBody: CreateFileUploadSessionCommitByUrlRequestBody(parts: parts), headers: CreateFileUploadSessionCommitByUrlHeaders(digest: digest)) ``` ### Arguments url `String` - URL of createFileUploadSessionCommit method requestBody `CreateFileUploadSessionCommitByUrlRequestBody` - Request body of createFileUploadSessionCommit method headers `CreateFileUploadSessionCommitByUrlHeaders` - Headers of createFileUploadSessionCommit method ### Returns This function returns a value of type `Files?`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Commit upload session Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommit`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` try await client.chunkedUploads.createFileUploadSessionCommit(uploadSessionId: uploadSessionId, requestBody: CreateFileUploadSessionCommitRequestBody(parts: parts), headers: CreateFileUploadSessionCommitHeaders(digest: digest)) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" requestBody `CreateFileUploadSessionCommitRequestBody` - Request body of createFileUploadSessionCommit method headers `CreateFileUploadSessionCommitHeaders` - Headers of createFileUploadSessionCommit method ### Returns This function returns a value of type `Files?`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Upload big file Starts the process of chunk uploading a big file. Should return a File object representing uploaded file. This operation is performed by calling function `uploadBigFile`. ``` try await client.chunkedUploads.uploadBigFile(file: fileByteStream, fileName: fileName, fileSize: Int64(fileSize), parentFolderId: parentFolderId) ``` ### Arguments file `InputStream` - The stream of the file to upload. fileName `String` - The name of the file, which will be used for storage in Box. fileSize `Int64` - The total size of the file for the chunked upload in bytes. parentFolderId `String` - The ID of the folder where the file should be uploaded. ### Returns This function returns a value of type `FileFull`. --- ### ChunkedUploadsManager **Type:** page | **Section:** Additional Resources ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). Create upload session Create upload session… # ChunkedUploadsManager This is a manager for chunked uploads (allowed for files at least 20MB). - [Create upload session](#create-upload-session) - [Create upload session for existing file](#create-upload-session-for-existing-file) - [Get upload session by URL](#get-upload-session-by-url) - [Get upload session](#get-upload-session) - [Upload part of file by URL](#upload-part-of-file-by-url) - [Upload part of file](#upload-part-of-file) - [Remove upload session by URL](#remove-upload-session-by-url) - [Remove upload session](#remove-upload-session) - [List parts by URL](#list-parts-by-url) - [List parts](#list-parts) - [Commit upload session by URL](#commit-upload-session-by-url) - [Commit upload session](#commit-upload-session) - [Upload big file](#upload-big-file) ## Create upload session Creates an upload session for a new file. This operation is performed by calling function `createFileUploadSession`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions/). ``` client.getChunkedUploads().createFileUploadSession(new CreateFileUploadSessionRequestBody(parentFolderId, fileSize, fileName)) ``` ### Arguments requestBody `CreateFileUploadSessionRequestBody` - Request body of createFileUploadSession method headers `CreateFileUploadSessionHeaders` - Headers of createFileUploadSession method ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Create upload session for existing file Creates an upload session for an existing file. This operation is performed by calling function `createFileUploadSessionForExistingFile`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-id-upload-sessions/). *Currently we don't have an example for calling `createFileUploadSessionForExistingFile` in integration tests* ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" requestBody `CreateFileUploadSessionForExistingFileRequestBody` - Request body of createFileUploadSessionForExistingFile method headers `CreateFileUploadSessionForExistingFileHeaders` - Headers of createFileUploadSessionForExistingFile method ### Returns This function returns a value of type `UploadSession`. Returns a new upload session. ## Get upload session by URL Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` client.getChunkedUploads().getFileUploadSessionByUrl(statusUrl) ``` ### Arguments url `String` - URL of getFileUploadSessionById method headers `GetFileUploadSessionByUrlHeaders` - Headers of getFileUploadSessionById method ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Get upload session Return information about an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) endpoint. This operation is performed by calling function `getFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id/). ``` client.getChunkedUploads().getFileUploadSessionById(uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" headers `GetFileUploadSessionByIdHeaders` - Headers of getFileUploadSessionById method ### Returns This function returns a value of type `UploadSession`. Returns an upload session object. ## Upload part of file by URL Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePartByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` client.getChunkedUploads().uploadFilePartByUrl(acc.getUploadPartUrl(), generateByteStreamFromBuffer(chunkBuffer), new UploadFilePartByUrlHeaders(digest, contentRange)) ``` ### Arguments url `String` - URL of uploadFilePart method requestBody `InputStream` - Request body of uploadFilePart method headers `UploadFilePartByUrlHeaders` - Headers of uploadFilePart method ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Upload part of file Uploads a chunk of a file for an upload session. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `uploadFilePart`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-files-upload-sessions-id/). ``` client.getChunkedUploads().uploadFilePart(acc.getUploadSessionId(), generateByteStreamFromBuffer(chunkBuffer), new UploadFilePartHeaders(digest, contentRange)) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" requestBody `InputStream` - Request body of uploadFilePart method headers `UploadFilePartHeaders` - Headers of uploadFilePart method ### Returns This function returns a value of type `UploadedPart`. Chunk has been uploaded successfully. ## Remove upload session by URL Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` client.getChunkedUploads().deleteFileUploadSessionByUrl(abortUrl) ``` ### Arguments url `String` - URL of deleteFileUploadSessionById method headers `DeleteFileUploadSessionByUrlHeaders` - Headers of deleteFileUploadSessionById method ### Returns This function returns a value of type `void`. A blank response is returned if the session was successfully aborted. ## Remove upload session Abort an upload session and discard all data uploaded. This cannot be reversed. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `deleteFileUploadSessionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-files-upload-sessions-id/). ``` client.getChunkedUploads().deleteFileUploadSessionById(uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" headers `DeleteFileUploadSessionByIdHeaders` - Headers of deleteFileUploadSessionById method ### Returns This function returns a value of type `void`. A blank response is returned if the session was successfully aborted. ## List parts by URL Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionPartsByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` client.getChunkedUploads().getFileUploadSessionPartsByUrl(listPartsUrl) ``` ### Arguments url `String` - URL of getFileUploadSessionParts method queryParams `GetFileUploadSessionPartsByUrlQueryParams` - Query parameters of getFileUploadSessionParts method headers `GetFileUploadSessionPartsByUrlHeaders` - Headers of getFileUploadSessionParts method ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## List parts Return a list of the chunks uploaded to the upload session so far. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `getFileUploadSessionParts`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-upload-sessions-id-parts/). ``` client.getChunkedUploads().getFileUploadSessionParts(uploadSessionId) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" queryParams `GetFileUploadSessionPartsQueryParams` - Query parameters of getFileUploadSessionParts method headers `GetFileUploadSessionPartsHeaders` - Headers of getFileUploadSessionParts method ### Returns This function returns a value of type `UploadParts`. Returns a list of parts that have been uploaded. ## Commit upload session by URL Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommitByUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` client.getChunkedUploads().createFileUploadSessionCommitByUrl(commitUrl, new CreateFileUploadSessionCommitByUrlRequestBody(parts), new CreateFileUploadSessionCommitByUrlHeaders(digest)) ``` ### Arguments url `String` - URL of createFileUploadSessionCommit method requestBody `CreateFileUploadSessionCommitByUrlRequestBody` - Request body of createFileUploadSessionCommit method headers `CreateFileUploadSessionCommitByUrlHeaders` - Headers of createFileUploadSessionCommit method ### Returns This function returns a value of type `Files`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Commit upload session Close an upload session and create a file from the uploaded chunks. The actual endpoint URL is returned by the [`Create upload session`](e://post-files-upload-sessions) and [`Get upload session`](e://get-files-upload-sessions-id) endpoints. This operation is performed by calling function `createFileUploadSessionCommit`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-files-upload-sessions-id-commit/). ``` client.getChunkedUploads().createFileUploadSessionCommit(uploadSessionId, new CreateFileUploadSessionCommitRequestBody(parts), new CreateFileUploadSessionCommitHeaders(digest)) ``` ### Arguments uploadSessionId `String` - The ID of the upload session. Example: "D5E3F7A" requestBody `CreateFileUploadSessionCommitRequestBody` - Request body of createFileUploadSessionCommit method headers `CreateFileUploadSessionCommitHeaders` - Headers of createFileUploadSessionCommit method ### Returns This function returns a value of type `Files`. Returns the file object in a list.Returns when all chunks have been uploaded but not yet processed. Inspect the upload session to get more information about the progress of processing the chunks, then retry committing the file when all chunks have processed. ## Upload big file Starts the process of chunk uploading a big file. Should return a File object representing uploaded file. This operation is performed by calling function `uploadBigFile`. ``` client.getChunkedUploads().uploadBigFile(fileByteStream, fileName, fileSize, parentFolderId) ``` ### Arguments file `InputStream` - The stream of the file to upload. fileName `String` - The name of the file, which will be used for storage in Box. fileSize `long` - The total size of the file for the chunked upload in bytes. parentFolderId `String` - The ID of the folder where the file should be uploaded. ### Returns This function returns a value of type `FileFull`. --- ### ClassificationsManager **Type:** page | **Section:** Additional Resources ClassificationsManager List all classifications Add classification Update classification Add initial classifications List all… # ClassificationsManager - [List all classifications](#list-all-classifications) - [Add classification](#add-classification) - [Update classification](#update-classification) - [Add initial classifications](#add-initial-classifications) ## List all classifications Retrieves the classification metadata template and lists all the classifications available to this enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `getClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/). ``` await client.classifications.getClassificationTemplate(); ``` ### Arguments headersInput `GetClassificationTemplateHeadersInput` - Headers of getClassificationTemplate method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `ClassificationTemplate`. Returns the `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add classification Adds one or more new classifications to the list of classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `addClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/). ``` await client.classifications.addClassification([ new AddClassificationRequestBody({ data: { key: getUuid(), staticConfig: { classification: { colorId: 4, classificationDefinition: 'Other description', } satisfies AddClassificationRequestBodyDataStaticConfigClassificationField, } satisfies AddClassificationRequestBodyDataStaticConfigField, } satisfies AddClassificationRequestBodyDataField, }), ]); ``` ### Arguments requestBody `readonly AddClassificationRequestBody[]` - Request body of addClassification method optionalsInput `AddClassificationOptionalsInput` ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Update classification Updates the labels and descriptions of one or more classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `updateClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/). ``` await client.classifications.updateClassification([ new UpdateClassificationRequestBody({ enumOptionKey: classification.key, data: { key: updatedClassificationName, staticConfig: { classification: { colorId: 2, classificationDefinition: updatedClassificationDescription, } satisfies UpdateClassificationRequestBodyDataStaticConfigClassificationField, } satisfies UpdateClassificationRequestBodyDataStaticConfigField, } satisfies UpdateClassificationRequestBodyDataField, }), ]); ``` ### Arguments requestBody `readonly UpdateClassificationRequestBody[]` - Request body of updateClassification method optionalsInput `UpdateClassificationOptionalsInput` ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add initial classifications When an enterprise does not yet have any classifications, this API call initializes the classification template with an initial set of classifications. If an enterprise already has a classification, the template will already exist and instead an API call should be made to add additional classifications. This operation is performed by calling function `createClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-metadata-templates-schema--classifications/). *Currently we don't have an example for calling `createClassificationTemplate` in integration tests* ### Arguments requestBodyInput `CreateClassificationTemplateRequestBodyInput` - Request body of createClassificationTemplate method optionalsInput `CreateClassificationTemplateOptionalsInput` ### Returns This function returns a value of type `ClassificationTemplate`. Returns a new `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. --- ### ClassificationsManager **Type:** page | **Section:** Additional Resources ClassificationsManager List all classifications Add classification Update classification Add initial classifications List all… # ClassificationsManager - [List all classifications](#list-all-classifications) - [Add classification](#add-classification) - [Update classification](#update-classification) - [Add initial classifications](#add-initial-classifications) ## List all classifications Retrieves the classification metadata template and lists all the classifications available to this enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `getClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/). ``` client.getClassifications().getClassificationTemplate() ``` ### Arguments headers `GetClassificationTemplateHeaders` - Headers of getClassificationTemplate method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add classification Adds one or more new classifications to the list of classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `addClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/). ``` client.getClassifications().addClassification(Arrays.asList(new AddClassificationRequestBody(new AddClassificationRequestBodyDataField.Builder(getUuid()).staticConfig(new AddClassificationRequestBodyDataStaticConfigField.Builder().classification(new AddClassificationRequestBodyDataStaticConfigClassificationField.Builder().classificationDefinition("Other description").colorId(4L).build()).build()).build()))) ``` ### Arguments requestBody `List<AddClassificationRequestBody>` - Request body of addClassification method headers `AddClassificationHeaders` - Headers of addClassification method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Update classification Updates the labels and descriptions of one or more classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `updateClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/). ``` client.getClassifications().updateClassification(Arrays.asList(new UpdateClassificationRequestBody(classification.getKey(), new UpdateClassificationRequestBodyDataField.Builder(updatedClassificationName).staticConfig(new UpdateClassificationRequestBodyDataStaticConfigField.Builder().classification(new UpdateClassificationRequestBodyDataStaticConfigClassificationField.Builder().classificationDefinition(updatedClassificationDescription).colorId(2L).build()).build()).build()))) ``` ### Arguments requestBody `List<UpdateClassificationRequestBody>` - Request body of updateClassification method headers `UpdateClassificationHeaders` - Headers of updateClassification method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add initial classifications When an enterprise does not yet have any classifications, this API call initializes the classification template with an initial set of classifications. If an enterprise already has a classification, the template will already exist and instead an API call should be made to add additional classifications. This operation is performed by calling function `createClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-metadata-templates-schema--classifications/). *Currently we don't have an example for calling `createClassificationTemplate` in integration tests* ### Arguments requestBody `CreateClassificationTemplateRequestBody` - Request body of createClassificationTemplate method headers `CreateClassificationTemplateHeaders` - Headers of createClassificationTemplate method ### Returns This function returns a value of type `ClassificationTemplate`. Returns a new `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. --- ### ClassificationsManager **Type:** page | **Section:** Additional Resources ClassificationsManager List all classifications Add classification Update classification Add initial classifications List all… # ClassificationsManager - [List all classifications](#list-all-classifications) - [Add classification](#add-classification) - [Update classification](#update-classification) - [Add initial classifications](#add-initial-classifications) ## List all classifications Retrieves the classification metadata template and lists all the classifications available to this enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `get_classification_template`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/). ``` client.classifications.get_classification_template() ``` ### Arguments extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ClassificationTemplate`. Returns the `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add classification Adds one or more new classifications to the list of classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `add_classification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/). ``` client.classifications.add_classification( [ AddClassificationRequestBody( data=AddClassificationRequestBodyDataField( key=get_uuid(), static_config=AddClassificationRequestBodyDataStaticConfigField( classification=AddClassificationRequestBodyDataStaticConfigClassificationField( color_id=4, classification_definition="Other description" ) ), ) ) ] ) ``` ### Arguments request_body `List[AddClassificationRequestBody]` - Request body of addClassification method extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Update classification Updates the labels and descriptions of one or more classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `update_classification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/). ``` client.classifications.update_classification( [ UpdateClassificationRequestBody( enum_option_key=classification.key, data=UpdateClassificationRequestBodyDataField( key=updated_classification_name, static_config=UpdateClassificationRequestBodyDataStaticConfigField( classification=UpdateClassificationRequestBodyDataStaticConfigClassificationField( color_id=2, classification_definition=updated_classification_description, ) ), ), ) ] ) ``` ### Arguments request_body `List[UpdateClassificationRequestBody]` - Request body of updateClassification method extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add initial classifications When an enterprise does not yet have any classifications, this API call initializes the classification template with an initial set of classifications. If an enterprise already has a classification, the template will already exist and instead an API call should be made to add additional classifications. This operation is performed by calling function `create_classification_template`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-metadata-templates-schema--classifications/). *Currently we don't have an example for calling `create_classification_template` in integration tests* ### Arguments scope `CreateClassificationTemplateScope` - The scope in which to create the classifications. This should be `enterprise` or `enterprise_{id}` where `id` is the unique ID of the enterprise. template_key `CreateClassificationTemplateTemplateKey` - Defines the list of metadata templates. display_name `CreateClassificationTemplateDisplayName` - The name of the template as shown in web and mobile interfaces. hidden `Optional[bool]` - Determines if the classification template is hidden or available on web and mobile devices. copy_instance_on_item_copy `Optional[bool]` - Determines if classifications are copied along when the file or folder is copied. fields `List[CreateClassificationTemplateFields]` - The classification template requires exactly one field, which holds all the valid classification values. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ClassificationTemplate`. Returns a new `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. --- ### ClassificationsManager **Type:** page | **Section:** Additional Resources ClassificationsManager List all classifications Add classification Update classification Add initial classifications List all… # ClassificationsManager - [List all classifications](#list-all-classifications) - [Add classification](#add-classification) - [Update classification](#update-classification) - [Add initial classifications](#add-initial-classifications) ## List all classifications Retrieves the classification metadata template and lists all the classifications available to this enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `getClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/). ``` try await client.classifications.getClassificationTemplate() ``` ### Arguments headers `GetClassificationTemplateHeaders` - Headers of getClassificationTemplate method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add classification Adds one or more new classifications to the list of classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `addClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/). ``` try await client.classifications.addClassification(requestBody: [AddClassificationRequestBody(data: AddClassificationRequestBodyDataField(key: Utils.getUUID(), staticConfig: AddClassificationRequestBodyDataStaticConfigField(classification: AddClassificationRequestBodyDataStaticConfigClassificationField(colorId: Int64(4), classificationDefinition: "Other description"))))]) ``` ### Arguments requestBody `[AddClassificationRequestBody]` - Request body of addClassification method headers `AddClassificationHeaders` - Headers of addClassification method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Update classification Updates the labels and descriptions of one or more classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `updateClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/). ``` try await client.classifications.updateClassification(requestBody: [UpdateClassificationRequestBody(enumOptionKey: classification.key, data: UpdateClassificationRequestBodyDataField(key: updatedClassificationName, staticConfig: UpdateClassificationRequestBodyDataStaticConfigField(classification: UpdateClassificationRequestBodyDataStaticConfigClassificationField(colorId: Int64(2), classificationDefinition: updatedClassificationDescription))))]) ``` ### Arguments requestBody `[UpdateClassificationRequestBody]` - Request body of updateClassification method headers `UpdateClassificationHeaders` - Headers of updateClassification method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add initial classifications When an enterprise does not yet have any classifications, this API call initializes the classification template with an initial set of classifications. If an enterprise already has a classification, the template will already exist and instead an API call should be made to add additional classifications. This operation is performed by calling function `createClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-metadata-templates-schema--classifications/). *Currently we don't have an example for calling `createClassificationTemplate` in integration tests* ### Arguments requestBody `CreateClassificationTemplateRequestBody` - Request body of createClassificationTemplate method headers `CreateClassificationTemplateHeaders` - Headers of createClassificationTemplate method ### Returns This function returns a value of type `ClassificationTemplate`. Returns a new `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. --- ### ClassificationsManager **Type:** page | **Section:** Additional Resources ClassificationsManager List all classifications Add classification Update classification Add initial classifications List all… # ClassificationsManager - [List all classifications](#list-all-classifications) - [Add classification](#add-classification) - [Update classification](#update-classification) - [Add initial classifications](#add-initial-classifications) ## List all classifications Retrieves the classification metadata template and lists all the classifications available to this enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `getClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/). ``` await client.classifications.getClassificationTemplate(); ``` ### Arguments headersInput `GetClassificationTemplateHeadersInput` - Headers of getClassificationTemplate method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `ClassificationTemplate`. Returns the `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add classification Adds one or more new classifications to the list of classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `addClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/). ``` await client.classifications.addClassification([ new AddClassificationRequestBody({ data: { key: getUuid(), staticConfig: { classification: { colorId: 4, classificationDefinition: 'Other description', } satisfies AddClassificationRequestBodyDataStaticConfigClassificationField, } satisfies AddClassificationRequestBodyDataStaticConfigField, } satisfies AddClassificationRequestBodyDataField, }), ]); ``` ### Arguments requestBody `readonly AddClassificationRequestBody[]` - Request body of addClassification method optionalsInput `AddClassificationOptionalsInput` ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Update classification Updates the labels and descriptions of one or more classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `updateClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/). ``` await client.classifications.updateClassification([ new UpdateClassificationRequestBody({ enumOptionKey: classification.key, data: { key: updatedClassificationName, staticConfig: { classification: { colorId: 2, classificationDefinition: updatedClassificationDescription, } satisfies UpdateClassificationRequestBodyDataStaticConfigClassificationField, } satisfies UpdateClassificationRequestBodyDataStaticConfigField, } satisfies UpdateClassificationRequestBodyDataField, }), ]); ``` ### Arguments requestBody `readonly UpdateClassificationRequestBody[]` - Request body of updateClassification method optionalsInput `UpdateClassificationOptionalsInput` ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add initial classifications When an enterprise does not yet have any classifications, this API call initializes the classification template with an initial set of classifications. If an enterprise already has a classification, the template will already exist and instead an API call should be made to add additional classifications. This operation is performed by calling function `createClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-metadata-templates-schema--classifications/). *Currently we don't have an example for calling `createClassificationTemplate` in integration tests* ### Arguments requestBodyInput `CreateClassificationTemplateRequestBodyInput` - Request body of createClassificationTemplate method optionalsInput `CreateClassificationTemplateOptionalsInput` ### Returns This function returns a value of type `ClassificationTemplate`. Returns a new `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. --- ### ClassificationsManager **Type:** page | **Section:** Additional Resources ClassificationsManager List all classifications Add classification Update classification Add initial classifications List all… # ClassificationsManager - [List all classifications](#list-all-classifications) - [Add classification](#add-classification) - [Update classification](#update-classification) - [Add initial classifications](#add-initial-classifications) ## List all classifications Retrieves the classification metadata template and lists all the classifications available to this enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `get_classification_template`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/). ``` client.classifications.get_classification_template() ``` ### Arguments extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ClassificationTemplate`. Returns the `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add classification Adds one or more new classifications to the list of classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `add_classification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/). ``` client.classifications.add_classification( [ AddClassificationRequestBody( data=AddClassificationRequestBodyDataField( key=get_uuid(), static_config=AddClassificationRequestBodyDataStaticConfigField( classification=AddClassificationRequestBodyDataStaticConfigClassificationField( color_id=4, classification_definition="Other description" ) ), ) ) ] ) ``` ### Arguments request_body `List[AddClassificationRequestBody]` - Request body of addClassification method extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Update classification Updates the labels and descriptions of one or more classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `update_classification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/). ``` client.classifications.update_classification( [ UpdateClassificationRequestBody( enum_option_key=classification.key, data=UpdateClassificationRequestBodyDataField( key=updated_classification_name, static_config=UpdateClassificationRequestBodyDataStaticConfigField( classification=UpdateClassificationRequestBodyDataStaticConfigClassificationField( color_id=2, classification_definition=updated_classification_description, ) ), ), ) ] ) ``` ### Arguments request_body `List[UpdateClassificationRequestBody]` - Request body of updateClassification method extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add initial classifications When an enterprise does not yet have any classifications, this API call initializes the classification template with an initial set of classifications. If an enterprise already has a classification, the template will already exist and instead an API call should be made to add additional classifications. This operation is performed by calling function `create_classification_template`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-metadata-templates-schema--classifications/). *Currently we don't have an example for calling `create_classification_template` in integration tests* ### Arguments scope `CreateClassificationTemplateScope` - The scope in which to create the classifications. This should be `enterprise` or `enterprise_{id}` where `id` is the unique ID of the enterprise. template_key `CreateClassificationTemplateTemplateKey` - Defines the list of metadata templates. display_name `CreateClassificationTemplateDisplayName` - The name of the template as shown in web and mobile interfaces. hidden `Optional[bool]` - Determines if the classification template is hidden or available on web and mobile devices. copy_instance_on_item_copy `Optional[bool]` - Determines if classifications are copied along when the file or folder is copied. fields `List[CreateClassificationTemplateFields]` - The classification template requires exactly one field, which holds all the valid classification values. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ClassificationTemplate`. Returns a new `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. --- ### ClassificationsManager **Type:** page | **Section:** Additional Resources ClassificationsManager List all classifications Add classification Update classification Add initial classifications List all… # ClassificationsManager - [List all classifications](#list-all-classifications) - [Add classification](#add-classification) - [Update classification](#update-classification) - [Add initial classifications](#add-initial-classifications) ## List all classifications Retrieves the classification metadata template and lists all the classifications available to this enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `getClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/). ``` try await client.classifications.getClassificationTemplate() ``` ### Arguments headers `GetClassificationTemplateHeaders` - Headers of getClassificationTemplate method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add classification Adds one or more new classifications to the list of classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `addClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/). ``` try await client.classifications.addClassification(requestBody: [AddClassificationRequestBody(data: AddClassificationRequestBodyDataField(key: Utils.getUUID(), staticConfig: AddClassificationRequestBodyDataStaticConfigField(classification: AddClassificationRequestBodyDataStaticConfigClassificationField(colorId: Int64(4), classificationDefinition: "Other description"))))]) ``` ### Arguments requestBody `[AddClassificationRequestBody]` - Request body of addClassification method headers `AddClassificationHeaders` - Headers of addClassification method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Update classification Updates the labels and descriptions of one or more classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `updateClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/). ``` try await client.classifications.updateClassification(requestBody: [UpdateClassificationRequestBody(enumOptionKey: classification.key, data: UpdateClassificationRequestBodyDataField(key: updatedClassificationName, staticConfig: UpdateClassificationRequestBodyDataStaticConfigField(classification: UpdateClassificationRequestBodyDataStaticConfigClassificationField(colorId: Int64(2), classificationDefinition: updatedClassificationDescription))))]) ``` ### Arguments requestBody `[UpdateClassificationRequestBody]` - Request body of updateClassification method headers `UpdateClassificationHeaders` - Headers of updateClassification method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add initial classifications When an enterprise does not yet have any classifications, this API call initializes the classification template with an initial set of classifications. If an enterprise already has a classification, the template will already exist and instead an API call should be made to add additional classifications. This operation is performed by calling function `createClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-metadata-templates-schema--classifications/). *Currently we don't have an example for calling `createClassificationTemplate` in integration tests* ### Arguments requestBody `CreateClassificationTemplateRequestBody` - Request body of createClassificationTemplate method headers `CreateClassificationTemplateHeaders` - Headers of createClassificationTemplate method ### Returns This function returns a value of type `ClassificationTemplate`. Returns a new `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. --- ### ClassificationsManager **Type:** page | **Section:** Additional Resources ClassificationsManager List all classifications Add classification Update classification Add initial classifications List all… # ClassificationsManager - [List all classifications](#list-all-classifications) - [Add classification](#add-classification) - [Update classification](#update-classification) - [Add initial classifications](#add-initial-classifications) ## List all classifications Retrieves the classification metadata template and lists all the classifications available to this enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `getClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema/). ``` client.getClassifications().getClassificationTemplate() ``` ### Arguments headers `GetClassificationTemplateHeaders` - Headers of getClassificationTemplate method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add classification Adds one or more new classifications to the list of classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `addClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--add/). ``` client.getClassifications().addClassification(Arrays.asList(new AddClassificationRequestBody(new AddClassificationRequestBodyDataField.Builder(getUuid()).staticConfig(new AddClassificationRequestBodyDataStaticConfigField.Builder().classification(new AddClassificationRequestBodyDataStaticConfigClassificationField.Builder().classificationDefinition("Other description").colorId(4L).build()).build()).build()))) ``` ### Arguments requestBody `List<AddClassificationRequestBody>` - Request body of addClassification method headers `AddClassificationHeaders` - Headers of addClassification method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Update classification Updates the labels and descriptions of one or more classifications available to the enterprise. This API can also be called by including the enterprise ID in the URL explicitly, for example `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`. This operation is performed by calling function `updateClassification`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-metadata-templates-enterprise-securityClassification-6VMVochwUWo-schema--update/). ``` client.getClassifications().updateClassification(Arrays.asList(new UpdateClassificationRequestBody(classification.getKey(), new UpdateClassificationRequestBodyDataField.Builder(updatedClassificationName).staticConfig(new UpdateClassificationRequestBodyDataStaticConfigField.Builder().classification(new UpdateClassificationRequestBodyDataStaticConfigClassificationField.Builder().classificationDefinition(updatedClassificationDescription).colorId(2L).build()).build()).build()))) ``` ### Arguments requestBody `List<UpdateClassificationRequestBody>` - Request body of updateClassification method headers `UpdateClassificationHeaders` - Headers of updateClassification method ### Returns This function returns a value of type `ClassificationTemplate`. Returns the updated `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. ## Add initial classifications When an enterprise does not yet have any classifications, this API call initializes the classification template with an initial set of classifications. If an enterprise already has a classification, the template will already exist and instead an API call should be made to add additional classifications. This operation is performed by calling function `createClassificationTemplate`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-metadata-templates-schema--classifications/). *Currently we don't have an example for calling `createClassificationTemplate` in integration tests* ### Arguments requestBody `CreateClassificationTemplateRequestBody` - Request body of createClassificationTemplate method headers `CreateClassificationTemplateHeaders` - Headers of createClassificationTemplate method ### Returns This function returns a value of type `ClassificationTemplate`. Returns a new `securityClassification` metadata template, which contains a `Box__Security__Classification__Key` field that lists all the classifications available to this enterprise. --- ### Client **Type:** page | **Section:** Additional Resources Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers… # Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers. [Make custom HTTP request](#make-custom-http-request) - [JSON request](#json-request) - [Multi-part request](#multi-part-request) - [Binary response](#binary-response) [Additional headers](#additional-headers) - [As-User header](#as-user-header) - [Suppress notifications](#suppress-notifications) - [Custom headers](#custom-headers) [Custom Base URLs](#custom-base-urls) [Custom Agent Options](#custom-agent-options) [Interceptors](#interceptors) [Use Proxy for API calls](#use-proxy-for-api-calls) # Make custom HTTP request You can make custom HTTP requests using the `client.makeRequest()` method. This method allows you to make any HTTP request to the Box API. It will automatically use authentication and network configuration settings from the client. The method accepts a `FetchOptions` object as an argument and returns a `FetchResponse` object. ## JSON request The following example demonstrates how to make a custom POST request to create a new folder in the root folder. ``` const response: FetchResponse = await client.makeRequest( { method: "POST", url: "https://api.box.com/2.0/folders", data: {name: newFolderName, parent: {id: "0"}} } satisfies FetchOptionsInput ); console.log('Received status code: ', response.status) console.log('Created folder name: ', getSdValueByKey(response.content, "name")) ``` ## Multi-part request The following example demonstrates how to make a custom multipart request that uploads a file to a folder. ``` const multipartAttributes = {name: "newFileName", parent: { id: "0" }}; const uploadFileResponse: FetchResponse = await client.makeRequest({ method: "POST", url: "https://upload.box.com/api/2.0/files/content", contentType: "multipart/form-data", multipartData: [{ partName: "attributes", data: multipartAttributes } satisfies MultipartItem, { partName: "file", fileStream: fileContentStream } satisfies MultipartItem] } satisfies FetchOptionsInput); console.log('Received status code: ', response.status) ``` ## Binary response The following example demonstrates how to make a custom request that expects a binary response. It is required to specify the `responseFormat` parameter in the `FetchOptions` object to "binary". ``` const response: FetchResponse = await client.makeRequest({ method: "GET", url: "".concat("https://api.box.com/2.0/files/", uploadedFile.id, "/content") as string, responseFormat: "binary" as ResponseFormat } satisfies FetchOptionsInput); console.log('Received status code: ', response.status) const fileWriteStream = fs.createWriteStream('file.pdf'); response.content.pipe(fileWriteStream); ``` # Additional headers BoxClient provides a convenient methods, which allow passing additional headers, which will be included in every API call made by the client. ## As-User header The As-User header is used by enterprise admins to make API calls on behalf of their enterprise's users. This requires the API request to pass an As-User: USER-ID header. For more details see the [documentation on As-User](https://developer.box.com/en/guides/authentication/oauth2/as-user/). The following example assume that the client has been instantiated with an access token belonging to an admin-level user or Service Account with appropriate privileges to make As-User calls. Calling the `client.withAsUserHeader()` method creates a new client to impersonate user with the provided ID. All calls made with the new client will be made in context of the impersonated user, leaving the original client unmodified. ``` const userClient = client.withAsUserHeader('1234567'); ``` ## Suppress notifications If you are making administrative API calls (that is, your application has “Manage an Enterprise” scope, and the user signing in is a co-admin with the correct "Edit settings for your company" permission) then you can suppress both email and webhook notifications. This can be used, for example, for a virus-scanning tool to download copies of everyone’s files in an enterprise, without every collaborator on the file getting an email. All actions will still appear in users' updates feed and audit logs. **Note:** This functionality is only available for approved applications. Calling the `client.withSuppressedNotifications()` method creates a new client. For all calls made with the new client the notifications will be suppressed. ``` const newClient = client.withSuppressedNotifications(); ``` ## Custom headers You can also specify the custom set of headers, which will be included in every API call made by client. Calling the `client.withExtraHeaders()` method creates a new client, leaving the original client unmodified. ``` const newClient = client.withExtraHeaders({ ['customHeader']: 'customValue' }); ``` # Custom Base URLs You can also specify the custom base URLs, which will be used for API calls made by client. Calling the `client.withCustomBaseUrls()` method creates a new client, leaving the original client unmodified. ``` const newClient = client.withCustomBaseUrls({ baseUrl: 'https://api.box.com', uploadUrl: 'https://upload.box.com/api', oauth2Url: 'https://account.box.com/api/oauth2', }); ``` # Custom Agent Options You can also specify the custom agent options, which will be used for API calls made by client. Calling the `client.withCustomAgentOptions()` method creates a new client, leaving the original client unmodified. ``` const options: AgentOptions = {}; const newClient = client.withCustomAgentOptions(options); ``` # Interceptors You can specify custom interceptors - methods that will be called just before making a request and right after receiving a response from the server. Using these function allows you to modify the request payload and response. Interceptor interface accepts two methods with the following signatures: ``` beforeRequest(options: FetchOptions): FetchOptions; afterRequest(response: FetchResponse): FetchResponse; ``` You can apply more than one interceptor to the client by passing a list of interceptors to apply. Calling the `client.withInterceptors()` method creates a new client, leaving the original client unmodified. ``` function beforeRequest(options: FetchOptions): FetchOptions { return { method: options.method, headers: options.headers, params: { ...options.params, ...{ ['fields']: 'role' } }, data: options.data, fileStream: options.fileStream, multipartData: options.multipartData, contentType: options.contentType, responseFormat: options.responseFormat, auth: options.auth, networkSession: options.networkSession, cancellationToken: options.cancellationToken, }; } function emptyAfterRequest(response: FetchResponse): FetchResponse { return response; } const clientWithInterceptor: BoxClient = client.withInterceptors([ { beforeRequest: beforeRequest, afterRequest: emptyAfterRequest, }, ]); ``` # Use Proxy for API calls In order to use a proxy for API calls, calling the `client.withProxy(proxyConfig)` method creates a new client, leaving the original client unmodified, with the username and password being optional. If both custom agent options and proxy are provided, the proxy will take precedence. **Note:** We are only supporting http/s proxies with basic authentication. NTLM and other authentication methods are not supported. ``` newClient = client.withProxy({ url: 'http://127.0.0.1:1234/', username: 'user', password: 'password', }); ``` --- ### Client **Type:** page | **Section:** Additional Resources Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers… # Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers. - [Client](#client) [Make custom HTTP request](#make-custom-http-request) - [JSON request](#json-request) - [Multi-part request](#multi-part-request) - [Binary response](#binary-response) [Additional headers](#additional-headers) - [As-User header](#as-user-header) - [Suppress notifications](#suppress-notifications) - [Custom headers](#custom-headers) [Custom Base URLs](#custom-base-urls) [Interceptors](#interceptors) [Use Proxy for API calls](#use-proxy-for-api-calls) # Make custom HTTP request You can make custom HTTP requests using the `client.makeRequest()` method. This method allows you to make any HTTP request to the Box API. It will automatically use authentication and network configuration settings from the client. The method accepts a `FetchOptions` object as an argument and returns a `FetchResponse` object. ## JSON request The following example demonstrates how to make a custom POST request to create a new folder in the root folder. ``` FetchOptions fetchOptions = new FetchOptions.Builder("https://api.box.com/2.0/users/me", "GET") .params(new HashMap<>() {{ put("fields", "name"); }}) .build(); FetchResponse response = client.makeRequest(fetchOptions); System.out.println("Status code: " + response.getStatus()); System.out.println("Response body: " + response.getContent()); ``` ## Multi-part request The following example demonstrates how to make a custom multipart request that uploads a file to a folder. ``` List<MultipartItem> multipartItems = List.of( new MultipartItem.Builder("attributes") .data(JsonManager.serialize("{\"name\": \"newFileName\", \"parent\": { \"id\": \"0\" }}")) .build(), new MultipartItem.Builder("file") .fileStream(new FileInputStream(new File("file.txt"))) .build() ); FetchOptions fetchOptions = new FetchOptions.Builder("https://upload.box.com/api/2.0/files/content", "POST") .contentType("multipart/form-data") .multipartData(multipartItems) .build(); FetchResponse response = client.makeRequest(fetchOptions); System.out.println("Status code: " + response.getStatus()); System.out.println("Response body: " + response.getContent()); ``` ## Binary response The following example demonstrates how to make a custom request that expects a binary response. It is required to specify the `responseFormat` parameter in the `FetchOptions` object to "binary". ``` FetchOptions fetchOptions = new FetchOptions.Builder("https://upload.box.com/api/2.0/files/12345/content", "GET") .responseFormat(ResponseFormat.BINARY) .build(); FetchResponse response = client.makeRequest(fetchOptions); System.out.println("Status code: " + response.getStatus()); System.out.println("Response body: " + response.getContent()); ``` # Additional headers BoxClient provides a convenient methods, which allow passing additional headers, which will be included in every API call made by the client. ## As-User header The As-User header is used by enterprise admins to make API calls on behalf of their enterprise's users. This requires the API request to pass an As-User: USER-ID header. For more details see the [documentation on As-User](https://developer.box.com/en/guides/authentication/oauth2/as-user/). The following example assume that the client has been instantiated with an access token belonging to an admin-level user or Service Account with appropriate privileges to make As-User calls. Calling the `client.withAsUserHeader()` method creates a new client to impersonate user with the provided ID. All calls made with the new client will be made in context of the impersonated user, leaving the original client unmodified. ``` BoxClient userClient = client.withAsUserHeader('1234567'); ``` ## Suppress notifications If you are making administrative API calls (that is, your application has “Manage an Enterprise” scope, and the user signing in is a co-admin with the correct "Edit settings for your company" permission) then you can suppress both email and webhook notifications. This can be used, for example, for a virus-scanning tool to download copies of everyone’s files in an enterprise, without every collaborator on the file getting an email. All actions will still appear in users' updates feed and audit logs. **Note:** This functionality is only available for approved applications. Calling the `client.withSuppressedNotifications()` method creates a new client. For all calls made with the new client the notifications will be suppressed. ``` BoxClient newClient = client.withSuppressedNotifications(); ``` ## Custom headers You can also specify the custom set of headers, which will be included in every API call made by client. Calling the `client.withExtraHeaders()` method creates a new client, leaving the original client unmodified. ``` BoxClient newClient = client.withExtraHeaders(new HashMap<>() {{ put("X-My-Header", "124"); }}); ``` # Custom Base URLs You can also specify the custom base URLs, which will be used for API calls made by client. Calling the `client.withCustomBaseUrls()` method creates a new client, leaving the original client unmodified. ``` BaseUrls baseUrls = new BaseUrls.Builder() .baseUrl("https://new-base-url.com") .uploadUrl("https://my-company-upload-url.com") .oauth2Url("https://my-company.com/oauth2") .build(); BoxClient clientWithCustomBaseUrl = client.withCustomBaseUrls(baseUrls); ``` # Interceptors You can specify custom interceptors - methods that will be called just before making a request and right after receiving a response from the server. Using these function allows you to modify the request payload and response. Interceptor interface accepts two methods with the following signatures: ``` FetchOptions beforeRequest(FetchOptions fetchOptions) FetchResponse afterRequest(FetchResponse fetchResponse) ``` You can apply more than one interceptor to the client by passing a list of interceptors to apply. Calling the `client.withInterceptors()` method creates a new client, leaving the original client unmodified. ``` List<Interceptor> interceptors = new ArrayList<>() { { add(new Interceptor() { @Override public FetchOptions beforeRequest(FetchOptions fetchOptions) { return fetchOptions; } @Override public FetchResponse afterRequest(FetchResponse fetchResponse) { return fetchResponse; } }); } }; BoxClient clientWithInterceptor = client.withInterceptors(interceptors); ``` # Use Proxy for API calls In order to use a proxy for API calls, calling the `client.withProxy(proxyConfig)` method creates a new client, leaving the original client unmodified, with the username and password being optional. We only support adding proxy for BoxNetworkClient. If you are using your own implementation of NetworkClient, you would need to configure proxy on your own. **Note:** We are only supporting http/s proxies with basic authentication. NTLM and other authentication methods are not supported. ``` ProxyConfig proxyConfig = new ProxyConfig("http://127.0.0.1:3128"); newClient = client.withProxy(proxyConfig); //Using Basic Auth with username and password ProxyConfig proxyConfig = new ProxyConfig.Builder("http://127.0.0.1:3128").username("username").password("password").build(); newClient = client.withProxy(proxyConfig); ``` --- ### Client **Type:** page | **Section:** Additional Resources Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers… # Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers. [Make custom HTTP request](#make-custom-http-request) - [JSON request](#json-request) - [Multi-part request](#multi-part-request) - [Binary response](#binary-response) [Additional headers](#additional-headers) - [As-User header](#as-user-header) - [Suppress notifications](#suppress-notifications) - [Custom headers](#custom-headers) [Custom Base URLs](#custom-base-urls) [Use Proxy for API calls](#use-proxy-for-api-calls) # Make custom HTTP request You can make custom HTTP requests using the `client.make_request()` method. This method allows you to make any HTTP request to the Box API. It will automatically use authentication and network configuration settings from the client. The method accepts a `FetchOptions` object as an argument and returns a `FetchResponse` object. ## JSON request The following example demonstrates how to make a custom POST request to create a new folder in the root folder. ``` from box_sdk_gen import FetchResponse, FetchOptions response: FetchResponse = client.make_request( FetchOptions( method="POST", url="https://api.box.com/2.0/folders", data={"name": "new_folder_name", "parent": {"id": "0"}}, ) ) print("Received status code: ", response.status) print("Created folder name: ", response.data["name"]) ``` ## Multi-part request The following example demonstrates how to make a custom multipart request that uploads a file to a folder. ``` from box_sdk_gen import FetchResponse, FetchOptions, MultipartItem response: FetchResponse = client.make_request( FetchOptions( method="POST", url="https://upload.box.com/api/2.0/files/content", content_type="multipart/form-data", multipart_data=[ MultipartItem( part_name="attributes", data={"name": "new_folder_name", "parent": {"id": "0"}}, ), MultipartItem(part_name="file", file_stream=open("file.txt", "rb")), ], ) ) print("Received status code: ", response.status) ``` ## Binary response The following example demonstrates how to make a custom request that expects a binary response. It is required to specify the `response_format` parameter in the `FetchOptions` object to `ResponseFormat.BINARY`. ``` from box_sdk_gen import FetchResponse, FetchOptions, ResponseFormat file_id = "1234567" response: FetchResponse = client.make_request( FetchOptions( method="GET", url="".join(["https://api.box.com/2.0/files/", file_id, "/content"]), response_format=ResponseFormat.BINARY, ) ) print("Received status code: ", response.status) with open("file.txt", "wb") as file: file.write(response.content) ``` # Additional headers BoxClient provides a convenient methods, which allow passing additional headers, which will be included in every API call made by the client. ## As-User header The As-User header is used by enterprise admins to make API calls on behalf of their enterprise's users. This requires the API request to pass an As-User: USER-ID header. For more details see the [documentation on As-User](https://developer.box.com/en/guides/authentication/oauth2/as-user/). The following example assume that the client has been instantiated with an access token belonging to an admin-level user or Service Account with appropriate privileges to make As-User calls. Calling the `client.with_as_user_header()` method creates a new client to impersonate user with the provided ID. All calls made with the new client will be made in context of the impersonated user, leaving the original client unmodified. ``` user_client = client.with_as_user_header(user_id="1234567") ``` ## Suppress notifications If you are making administrative API calls (that is, your application has “Manage an Enterprise” scope, and the user signing in is a co-admin with the correct "Edit settings for your company" permission) then you can suppress both email and webhook notifications. This can be used, for example, for a virus-scanning tool to download copies of everyone’s files in an enterprise, without every collaborator on the file getting an email. All actions will still appear in users' updates feed and audit logs. **Note:** This functionality is only available for approved applications. Calling the `client.with_suppressed_notifications()` method creates a new client. For all calls made with the new client the notifications will be suppressed. ``` new_client = client.with_suppressed_notifications() ``` ## Custom headers You can also specify the custom set of headers, which will be included in every API call made by client. Calling the `client.with_extra_headers()` method creates a new client, leaving the original client unmodified. ``` new_client = client.with_extra_headers(extra_headers={"customHeader": "customValue"}) ``` # Custom Base URLs You can also specify the custom base URLs, which will be used for API calls made by client. Calling the `client.with_custom_base_urls()` method creates a new client, leaving the original client unmodified. ``` new_client = client.with_custom_base_urls( base_urls=BaseUrls( base_url="https://api.box.com", upload_url="https://upload.box.com/api", oauth_2_url="https://account.box.com/api/oauth2", ) ) ``` # Use Proxy for API calls In order to use a proxy for API calls, calling the `client.with_proxy(proxyConfig)` method creates a new client, leaving the original client unmodified, with the username and password being optional. **Note:** We are only supporting http/s proxies with basic authentication. NTLM and other authentication methods are not supported. ``` new_client = client.with_proxy( ProxyConfig(url="http://proxy.com", username="username", password="password") ) ``` --- ### Client **Type:** page | **Section:** Additional Resources Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers… # Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers. [Make custom HTTP request](#make-custom-http-request) - [JSON request](#json-request) - [Multi-part request](#multi-part-request) - [Binary response](#binary-response) [Additional headers](#additional-headers) - [As-User header](#as-user-header) - [Suppress notifications](#suppress-notifications) - [Custom headers](#custom-headers) [Custom Base URLs](#custom-base-urls) [Use Proxy for API calls](#use-proxy-for-api-calls) # Make custom HTTP request You can make custom HTTP requests using the `client.MakeRequestAsync()` method. This method allows you to make any HTTP request to the Box API. It will automatically use authentication and network configuration settings from the client. The method accepts a `FetchOptions` object as an argument and returns a `FetchResponse` object. ## JSON request The following example demonstrates how to make a custom POST request to create a new folder in the root folder. ``` string requestBodyPost = "{\"name\": \"newFolderName\", \"parent\": {\"id\": \"0\"}}"; FetchResponse response = await client.MakeRequestAsync(fetchOptions: new FetchOptions(method: "POST", url: "https://api.box.com/2.0/folders") { Data = JsonUtils.JsonToSerializedData(text: requestBodyPost) }); Console.WriteLine("Received status code: " + response.status); Console.WriteLine("Created folder name: " + response.data["name"]); ``` ## Multi-part request The following example demonstrates how to make a custom multipart request that uploads a file to a folder. ``` string multipartAttributes = "{\"name\": \"newFileName\", \"parent\": {\"id\": \"newFolderId\"}}"; FetchResponse response = await client.MakeRequestAsync(fetchOptions: new FetchOptions(method: "POST", url: "https://upload.box.com/api/2.0/files/content", contentType: "multipart/form-data") { FileStream = fileContentStream, MultipartData = Array.AsReadOnly(new [] {new MultipartItem(partName: "attributes") { Data = JsonUtils.JsonToSerializedData(text: multipartAttributes) },new MultipartItem(partName: "file") { FileStream = fileContentStream }}) }); Console.WriteLine("Received status code: " + response.status); ``` ## Binary response The following example demonstrates how to make a custom request that expects a binary response. It is required to specify the `responseFormat` parameter in the `FetchOptions` object to `Box.Sdk.Gen.ResponseFormat.Binary`. ``` string fileId = "123456789"; FetchResponse response = await client.MakeRequestAsync(fetchOptions: new FetchOptions(method: "GET", url: string.Concat("https://api.box.com/2.0/files/", fileId, "/content"), responseFormat: Box.Sdk.Gen.ResponseFormat.Binary)); Console.WriteLine("Received status code: " + response.status); string filePath = "output.txt"; using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { responseStream.CopyTo(response.content); } ``` # Additional headers BoxClient provides a convenient methods, which allow passing additional headers, which will be included in every API call made by the client. ## As-User header The As-User header is used by enterprise admins to make API calls on behalf of their enterprise's users. This requires the API request to pass an As-User: USER-ID header. For more details see the [documentation on As-User](https://developer.box.com/en/guides/authentication/oauth2/as-user/). The following example assume that the client has been instantiated with an access token belonging to an admin-level user or Service Account with appropriate privileges to make As-User calls. Calling the `client.WithAsUserHeader()` method creates a new client to impersonate user with the provided ID. All calls made with the new client will be made in context of the impersonated user, leaving the original client unmodified. ``` var userClient = client.WithAsUserHeader(useId: "1234567"); ``` ## Suppress notifications If you are making administrative API calls (that is, your application has “Manage an Enterprise” scope, and the user signing in is a co-admin with the correct "Edit settings for your company" permission) then you can suppress both email and webhook notifications. This can be used, for example, for a virus-scanning tool to download copies of everyone’s files in an enterprise, without every collaborator on the file getting an email. All actions will still appear in users' updates feed and audit logs. **Note:** This functionality is only available for approved applications. Calling the `client.WithSuppressedNotifications()` method creates a new client. For all calls made with the new client the notifications will be suppressed. ``` var newClient = client.WithSuppressedNotifications(); ``` ## Custom headers You can also specify the custom set of headers, which will be included in every API call made by client. Calling the `client.WithExtraHeaders()` method creates a new client, leaving the original client unmodified. ``` var extraHeaders = new Dictionary<string, string?>() { { "customHeader", "customValue" } }; var newClient = client.WithExtraHeaders(extraHeaders: extraHeaders); ``` # Custom Base URLs You can also specify the custom base URLs, which will be used for API calls made by client. Calling the `client.WithCustomBaseUrls()` method creates a new client, leaving the original client unmodified. ``` var newClient = client.WithCustomBaseUrls(new BaseUrls( baseUrl: "https://api.box2.com", uploadUrl: "https://upload.box.com/api", oauth2Url: "https://account.box.com/api/oauth2" )); ``` # Use Proxy for API calls In order to use a proxy for API calls, call the `client.WithProxy(proxyConfig)` method that creates a new client with proxy, leaving the original client unmodified. In config, you can specify the username, password and domain for the proxy server. Alternatively you can set 'UseDefaultCredentials' to true to use the credentials of the currently logged on user - `DefaultCredentials`. NOTE: Setting UseDefaultCredentials takes precedence over Username, Password and Domain fields. If UseDefaultCredentials is set to true, the Username, Password and Domain fields will be ignored. ``` var newClient = client.WithProxy(new ProxyConfig("http://proxy.com") { Username = "username", Password = "password", Domain = "example" }); ``` To use proxy with default credentials: ``` var newClient = client.WithProxy(new ProxyConfig("http://proxy.com") { UseDefaultCredentials = true }); ``` --- ### Client **Type:** page | **Section:** Additional Resources Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers… # Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers. - [Client](#client) [Make custom HTTP request](#make-custom-http-request) - [JSON request](#json-request) - [Multi-part request](#multi-part-request) - [Binary response](#binary-response) [Additional headers](#additional-headers) - [As-User header](#as-user-header) - [Suppress notifications](#suppress-notifications) - [Custom headers](#custom-headers) [Custom Base URLs](#custom-base-urls) # Make custom HTTP request You can make custom HTTP requests using the `client.makeRequest()` method. This method allows you to make any HTTP request to the Box API. It will automatically use authentication and network configuration settings from the client. The method accepts a `FetchOptions` object as an argument and returns a `FetchResponse` object. ## JSON request The following example demonstrates how to make a custom POST request to create a new folder in the root folder. ``` let requestBodyPost: String = "\("{\"name\": \"myFolderName\", \"parent\": { \"id\": \"0\"}}")" let response: FetchResponse = try await client.makeRequest( fetchOptions: FetchOptions( url: "https://api.box.com/2.0/folders", method: "POST", data: JsonUtils.jsonToSerializedData(text: requestBodyPost) ) ) let responseContent = String(data: response.data?.data ?? Data(), encoding: .utf8) ?? "" print("Received status code: \(response.status)") print("Response content: \(responseContent)") // We can also deserialize the response content to json dictionary so we can access the values by key if let jsonDict = JsonUtils.sdToJsonDictionary(from: response.data) { print("Created folder name: \(jsonDict["name"] ?? "")" ) } ``` ## Multi-part request The following example demonstrates how to make a custom multipart request that uploads a file to a folder. ``` let multipartAttributes: String = "\("{\"name\": \"newFileName\", \"parent\": { \"id\":\"0\"}}")" guard let fileContentStream = InputStream(url: URL(string: "<URL_TO_YOUR_FILE>")!) else { fatalError("Could not read a file") } let multipartItems = [ MultipartItem(partName: "attributes", data: JsonUtils.jsonToSerializedData(text: multipartAttributes)), MultipartItem(partName: "file", fileStream: fileContentStream) ] let response: FetchResponse = try await client.makeRequest( fetchOptions: FetchOptions( url: "https://upload.box.com/api/2.0/files/content", method: "POST", multipartData: multipartItems, contentType: "multipart/form-data" ) ) print("Received status code: \(response.status)") ``` ## Binary response The following example demonstrates how to make a custom request to download a file. You must specify the `responseFormat` parameter in the `FetchOptions` object as `ResponseFormat.binary` and set the `downloadDestinationUrl` parameter to indicate where the file should be saved. ``` // Path to the file where the downloaded content will be saved let downloadPathString: String = "\(Utils.temporaryDirectoryPath())\(Utils.getUUID())" let fileId = "123456789"; let response: FetchResponse = try await client.makeRequest( fetchOptions: FetchOptions( url: "\("https://api.box.com/2.0/files/")\(fileId)\("/content")", method: "GET", responseFormat: ResponseFormat.binary, downloadDestinationUrl: URL(path: downloadPathString) ) ) print("Received status code: \(response.status)") // If the request is successful, the file content will be saved to the specified path if response.status == 200 { if let url = URL(string: downloadPathString), let data = try? Data(contentsOf: url){ print("File content: \(String(decoding: data, as: UTF8.self))") } } ``` # Additional headers BoxClient provides a convenient method, which allow passing additional headers, which will be included in every API call made by the client. ## As-User header The As-User header is used by enterprise admins to make API calls on behalf of their enterprise's users. This requires the API request to pass an As-User: USER-ID header. For more details see the [documentation on As-User](https://developer.box.com/en/guides/authentication/oauth2/as-user/). The following example assume that the client has been instantiated with an access token belonging to an admin-level user or Service Account with appropriate privileges to make As-User calls. Calling the `client.withAsUserHeader()` method creates a new client to impersonate user with the provided ID. All calls made with the new client will be made in context of the impersonated user, leaving the original client unmodified. ``` let userClient = client.withAsUserHeader(userId: '1234567') ``` ## Suppress notifications If you are making administrative API calls (that is, your application has “Manage an Enterprise” scope, and the user signing in is a co-admin with the correct "Edit settings for your company" permission) then you can suppress both email and webhook notifications. This can be used, for example, for a virus-scanning tool to download copies of everyone’s files in an enterprise, without every collaborator on the file getting an email. All actions will still appear in users' updates feed and audit logs. **Note:** This functionality is only available for approved applications. Calling the `client.withSuppressedNotifications()` method creates a new client. For all calls made with the new client the notifications will be suppressed. ``` let newClient = client.withSuppressedNotifications() ``` ## Custom headers You can also specify the custom set of headers, which will be included in every API call made by client. Calling the `client.withExtraHeaders()` method creates a new client, leaving the original client unmodified. ``` let newClient = client.withExtraHeaders(extraHeaders: ["customHeader": "customValue"]) ``` # Custom Base URLs You can also specify the custom base URLs, which will be used for API calls made by client. Calling the `client.withCustomBaseUrls()` method creates a new client, leaving the original client unmodified. ``` let newClient = client.withCustomBaseUrls(baseUrls: BaseUrls( baseUrl: "https://api.box.com", uploadUrl: "https://upload.box.com/api", oauth2Url: "https://account.box.com/api/oauth2" )) ``` --- ### Client **Type:** page | **Section:** Additional Resources Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers… # Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers. [Make custom HTTP request](#make-custom-http-request) - [JSON request](#json-request) - [Multi-part request](#multi-part-request) - [Binary response](#binary-response) [Additional headers](#additional-headers) - [As-User header](#as-user-header) - [Suppress notifications](#suppress-notifications) - [Custom headers](#custom-headers) [Custom Base URLs](#custom-base-urls) [Custom Agent Options](#custom-agent-options) [Interceptors](#interceptors) [Use Proxy for API calls](#use-proxy-for-api-calls) # Make custom HTTP request You can make custom HTTP requests using the `client.makeRequest()` method. This method allows you to make any HTTP request to the Box API. It will automatically use authentication and network configuration settings from the client. The method accepts a `FetchOptions` object as an argument and returns a `FetchResponse` object. ## JSON request The following example demonstrates how to make a custom POST request to create a new folder in the root folder. ``` const response: FetchResponse = await client.makeRequest( { method: "POST", url: "https://api.box.com/2.0/folders", data: {name: newFolderName, parent: {id: "0"}} } satisfies FetchOptionsInput ); console.log('Received status code: ', response.status) console.log('Created folder name: ', getSdValueByKey(response.content, "name")) ``` ## Multi-part request The following example demonstrates how to make a custom multipart request that uploads a file to a folder. ``` const multipartAttributes = {name: "newFileName", parent: { id: "0" }}; const uploadFileResponse: FetchResponse = await client.makeRequest({ method: "POST", url: "https://upload.box.com/api/2.0/files/content", contentType: "multipart/form-data", multipartData: [{ partName: "attributes", data: multipartAttributes } satisfies MultipartItem, { partName: "file", fileStream: fileContentStream } satisfies MultipartItem] } satisfies FetchOptionsInput); console.log('Received status code: ', response.status) ``` ## Binary response The following example demonstrates how to make a custom request that expects a binary response. It is required to specify the `responseFormat` parameter in the `FetchOptions` object to "binary". ``` const response: FetchResponse = await client.makeRequest({ method: "GET", url: "".concat("https://api.box.com/2.0/files/", uploadedFile.id, "/content") as string, responseFormat: "binary" as ResponseFormat } satisfies FetchOptionsInput); console.log('Received status code: ', response.status) const fileWriteStream = fs.createWriteStream('file.pdf'); response.content.pipe(fileWriteStream); ``` # Additional headers BoxClient provides a convenient methods, which allow passing additional headers, which will be included in every API call made by the client. ## As-User header The As-User header is used by enterprise admins to make API calls on behalf of their enterprise's users. This requires the API request to pass an As-User: USER-ID header. For more details see the [documentation on As-User](https://developer.box.com/en/guides/authentication/oauth2/as-user/). The following example assume that the client has been instantiated with an access token belonging to an admin-level user or Service Account with appropriate privileges to make As-User calls. Calling the `client.withAsUserHeader()` method creates a new client to impersonate user with the provided ID. All calls made with the new client will be made in context of the impersonated user, leaving the original client unmodified. ``` const userClient = client.withAsUserHeader('1234567'); ``` ## Suppress notifications If you are making administrative API calls (that is, your application has “Manage an Enterprise” scope, and the user signing in is a co-admin with the correct "Edit settings for your company" permission) then you can suppress both email and webhook notifications. This can be used, for example, for a virus-scanning tool to download copies of everyone’s files in an enterprise, without every collaborator on the file getting an email. All actions will still appear in users' updates feed and audit logs. **Note:** This functionality is only available for approved applications. Calling the `client.withSuppressedNotifications()` method creates a new client. For all calls made with the new client the notifications will be suppressed. ``` const newClient = client.withSuppressedNotifications(); ``` ## Custom headers You can also specify the custom set of headers, which will be included in every API call made by client. Calling the `client.withExtraHeaders()` method creates a new client, leaving the original client unmodified. ``` const newClient = client.withExtraHeaders({ ['customHeader']: 'customValue' }); ``` # Custom Base URLs You can also specify the custom base URLs, which will be used for API calls made by client. Calling the `client.withCustomBaseUrls()` method creates a new client, leaving the original client unmodified. ``` const newClient = client.withCustomBaseUrls({ baseUrl: 'https://api.box.com', uploadUrl: 'https://upload.box.com/api', oauth2Url: 'https://account.box.com/api/oauth2', }); ``` # Custom Agent Options You can also specify the custom agent options, which will be used for API calls made by client. Calling the `client.withCustomAgentOptions()` method creates a new client, leaving the original client unmodified. ``` const options: AgentOptions = {}; const newClient = client.withCustomAgentOptions(options); ``` # Interceptors You can specify custom interceptors - methods that will be called just before making a request and right after receiving a response from the server. Using these function allows you to modify the request payload and response. Interceptor interface accepts two methods with the following signatures: ``` beforeRequest(options: FetchOptions): FetchOptions; afterRequest(response: FetchResponse): FetchResponse; ``` You can apply more than one interceptor to the client by passing a list of interceptors to apply. Calling the `client.withInterceptors()` method creates a new client, leaving the original client unmodified. ``` function beforeRequest(options: FetchOptions): FetchOptions { return { method: options.method, headers: options.headers, params: { ...options.params, ...{ ['fields']: 'role' } }, data: options.data, fileStream: options.fileStream, multipartData: options.multipartData, contentType: options.contentType, responseFormat: options.responseFormat, auth: options.auth, networkSession: options.networkSession, cancellationToken: options.cancellationToken, }; } function emptyAfterRequest(response: FetchResponse): FetchResponse { return response; } const clientWithInterceptor: BoxClient = client.withInterceptors([ { beforeRequest: beforeRequest, afterRequest: emptyAfterRequest, }, ]); ``` # Use Proxy for API calls In order to use a proxy for API calls, calling the `client.withProxy(proxyConfig)` method creates a new client, leaving the original client unmodified, with the username and password being optional. If both custom agent options and proxy are provided, the proxy will take precedence. **Note:** We are only supporting http/s proxies with basic authentication. NTLM and other authentication methods are not supported. ``` newClient = client.withProxy({ url: 'http://127.0.0.1:1234/', username: 'user', password: 'password', }); ``` --- ### Client **Type:** page | **Section:** Additional Resources Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers… # Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers. [Make custom HTTP request](#make-custom-http-request) - [JSON request](#json-request) - [Multi-part request](#multi-part-request) - [Binary response](#binary-response) [Additional headers](#additional-headers) - [As-User header](#as-user-header) - [Suppress notifications](#suppress-notifications) - [Custom headers](#custom-headers) [Custom Base URLs](#custom-base-urls) [Use Proxy for API calls](#use-proxy-for-api-calls) # Make custom HTTP request You can make custom HTTP requests using the `client.make_request()` method. This method allows you to make any HTTP request to the Box API. It will automatically use authentication and network configuration settings from the client. The method accepts a `FetchOptions` object as an argument and returns a `FetchResponse` object. ## JSON request The following example demonstrates how to make a custom POST request to create a new folder in the root folder. ``` from box_sdk_gen import FetchResponse, FetchOptions response: FetchResponse = client.make_request( FetchOptions( method="POST", url="https://api.box.com/2.0/folders", data={"name": "new_folder_name", "parent": {"id": "0"}}, ) ) print("Received status code: ", response.status) print("Created folder name: ", response.data["name"]) ``` ## Multi-part request The following example demonstrates how to make a custom multipart request that uploads a file to a folder. ``` from box_sdk_gen import FetchResponse, FetchOptions, MultipartItem response: FetchResponse = client.make_request( FetchOptions( method="POST", url="https://upload.box.com/api/2.0/files/content", content_type="multipart/form-data", multipart_data=[ MultipartItem( part_name="attributes", data={"name": "new_folder_name", "parent": {"id": "0"}}, ), MultipartItem(part_name="file", file_stream=open("file.txt", "rb")), ], ) ) print("Received status code: ", response.status) ``` ## Binary response The following example demonstrates how to make a custom request that expects a binary response. It is required to specify the `response_format` parameter in the `FetchOptions` object to `ResponseFormat.BINARY`. ``` from box_sdk_gen import FetchResponse, FetchOptions, ResponseFormat file_id = "1234567" response: FetchResponse = client.make_request( FetchOptions( method="GET", url="".join(["https://api.box.com/2.0/files/", file_id, "/content"]), response_format=ResponseFormat.BINARY, ) ) print("Received status code: ", response.status) with open("file.txt", "wb") as file: file.write(response.content) ``` # Additional headers BoxClient provides a convenient methods, which allow passing additional headers, which will be included in every API call made by the client. ## As-User header The As-User header is used by enterprise admins to make API calls on behalf of their enterprise's users. This requires the API request to pass an As-User: USER-ID header. For more details see the [documentation on As-User](https://developer.box.com/en/guides/authentication/oauth2/as-user/). The following example assume that the client has been instantiated with an access token belonging to an admin-level user or Service Account with appropriate privileges to make As-User calls. Calling the `client.with_as_user_header()` method creates a new client to impersonate user with the provided ID. All calls made with the new client will be made in context of the impersonated user, leaving the original client unmodified. ``` user_client = client.with_as_user_header(user_id="1234567") ``` ## Suppress notifications If you are making administrative API calls (that is, your application has “Manage an Enterprise” scope, and the user signing in is a co-admin with the correct "Edit settings for your company" permission) then you can suppress both email and webhook notifications. This can be used, for example, for a virus-scanning tool to download copies of everyone’s files in an enterprise, without every collaborator on the file getting an email. All actions will still appear in users' updates feed and audit logs. **Note:** This functionality is only available for approved applications. Calling the `client.with_suppressed_notifications()` method creates a new client. For all calls made with the new client the notifications will be suppressed. ``` new_client = client.with_suppressed_notifications() ``` ## Custom headers You can also specify the custom set of headers, which will be included in every API call made by client. Calling the `client.with_extra_headers()` method creates a new client, leaving the original client unmodified. ``` new_client = client.with_extra_headers(extra_headers={"customHeader": "customValue"}) ``` # Custom Base URLs You can also specify the custom base URLs, which will be used for API calls made by client. Calling the `client.with_custom_base_urls()` method creates a new client, leaving the original client unmodified. ``` new_client = client.with_custom_base_urls( base_urls=BaseUrls( base_url="https://api.box.com", upload_url="https://upload.box.com/api", oauth_2_url="https://account.box.com/api/oauth2", ) ) ``` # Use Proxy for API calls In order to use a proxy for API calls, calling the `client.with_proxy(proxyConfig)` method creates a new client, leaving the original client unmodified, with the username and password being optional. **Note:** We are only supporting http/s proxies with basic authentication. NTLM and other authentication methods are not supported. ``` new_client = client.with_proxy( ProxyConfig(url="http://proxy.com", username="username", password="password") ) ``` --- ### Client **Type:** page | **Section:** Additional Resources Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers… # Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers. [Make custom HTTP request](#make-custom-http-request) - [JSON request](#json-request) - [Multi-part request](#multi-part-request) - [Binary response](#binary-response) [Additional headers](#additional-headers) - [As-User header](#as-user-header) - [Suppress notifications](#suppress-notifications) - [Custom headers](#custom-headers) [Custom Base URLs](#custom-base-urls) [Use Proxy for API calls](#use-proxy-for-api-calls) # Make custom HTTP request You can make custom HTTP requests using the `client.MakeRequestAsync()` method. This method allows you to make any HTTP request to the Box API. It will automatically use authentication and network configuration settings from the client. The method accepts a `FetchOptions` object as an argument and returns a `FetchResponse` object. ## JSON request The following example demonstrates how to make a custom POST request to create a new folder in the root folder. ``` string requestBodyPost = "{\"name\": \"newFolderName\", \"parent\": {\"id\": \"0\"}}"; FetchResponse response = await client.MakeRequestAsync(fetchOptions: new FetchOptions(method: "POST", url: "https://api.box.com/2.0/folders") { Data = JsonUtils.JsonToSerializedData(text: requestBodyPost) }); Console.WriteLine("Received status code: " + response.status); Console.WriteLine("Created folder name: " + response.data["name"]); ``` ## Multi-part request The following example demonstrates how to make a custom multipart request that uploads a file to a folder. ``` string multipartAttributes = "{\"name\": \"newFileName\", \"parent\": {\"id\": \"newFolderId\"}}"; FetchResponse response = await client.MakeRequestAsync(fetchOptions: new FetchOptions(method: "POST", url: "https://upload.box.com/api/2.0/files/content", contentType: "multipart/form-data") { FileStream = fileContentStream, MultipartData = Array.AsReadOnly(new [] {new MultipartItem(partName: "attributes") { Data = JsonUtils.JsonToSerializedData(text: multipartAttributes) },new MultipartItem(partName: "file") { FileStream = fileContentStream }}) }); Console.WriteLine("Received status code: " + response.status); ``` ## Binary response The following example demonstrates how to make a custom request that expects a binary response. It is required to specify the `responseFormat` parameter in the `FetchOptions` object to `Box.Sdk.Gen.ResponseFormat.Binary`. ``` string fileId = "123456789"; FetchResponse response = await client.MakeRequestAsync(fetchOptions: new FetchOptions(method: "GET", url: string.Concat("https://api.box.com/2.0/files/", fileId, "/content"), responseFormat: Box.Sdk.Gen.ResponseFormat.Binary)); Console.WriteLine("Received status code: " + response.status); string filePath = "output.txt"; using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write)) { responseStream.CopyTo(response.content); } ``` # Additional headers BoxClient provides a convenient methods, which allow passing additional headers, which will be included in every API call made by the client. ## As-User header The As-User header is used by enterprise admins to make API calls on behalf of their enterprise's users. This requires the API request to pass an As-User: USER-ID header. For more details see the [documentation on As-User](https://developer.box.com/en/guides/authentication/oauth2/as-user/). The following example assume that the client has been instantiated with an access token belonging to an admin-level user or Service Account with appropriate privileges to make As-User calls. Calling the `client.WithAsUserHeader()` method creates a new client to impersonate user with the provided ID. All calls made with the new client will be made in context of the impersonated user, leaving the original client unmodified. ``` var userClient = client.WithAsUserHeader(useId: "1234567"); ``` ## Suppress notifications If you are making administrative API calls (that is, your application has “Manage an Enterprise” scope, and the user signing in is a co-admin with the correct "Edit settings for your company" permission) then you can suppress both email and webhook notifications. This can be used, for example, for a virus-scanning tool to download copies of everyone’s files in an enterprise, without every collaborator on the file getting an email. All actions will still appear in users' updates feed and audit logs. **Note:** This functionality is only available for approved applications. Calling the `client.WithSuppressedNotifications()` method creates a new client. For all calls made with the new client the notifications will be suppressed. ``` var newClient = client.WithSuppressedNotifications(); ``` ## Custom headers You can also specify the custom set of headers, which will be included in every API call made by client. Calling the `client.WithExtraHeaders()` method creates a new client, leaving the original client unmodified. ``` var extraHeaders = new Dictionary<string, string?>() { { "customHeader", "customValue" } }; var newClient = client.WithExtraHeaders(extraHeaders: extraHeaders); ``` # Custom Base URLs You can also specify the custom base URLs, which will be used for API calls made by client. Calling the `client.WithCustomBaseUrls()` method creates a new client, leaving the original client unmodified. ``` var newClient = client.WithCustomBaseUrls(new BaseUrls( baseUrl: "https://api.box2.com", uploadUrl: "https://upload.box.com/api", oauth2Url: "https://account.box.com/api/oauth2" )); ``` # Use Proxy for API calls In order to use a proxy for API calls, call the `client.WithProxy(proxyConfig)` method that creates a new client with proxy, leaving the original client unmodified. In config, you can specify the username, password and domain for the proxy server. Alternatively you can set 'UseDefaultCredentials' to true to use the credentials of the currently logged on user - `DefaultCredentials`. NOTE: Setting UseDefaultCredentials takes precedence over Username, Password and Domain fields. If UseDefaultCredentials is set to true, the Username, Password and Domain fields will be ignored. ``` var newClient = client.WithProxy(new ProxyConfig("http://proxy.com") { Username = "username", Password = "password", Domain = "example" }); ``` To use proxy with default credentials: ``` var newClient = client.WithProxy(new ProxyConfig("http://proxy.com") { UseDefaultCredentials = true }); ``` --- ### Client **Type:** page | **Section:** Additional Resources Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers… # Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers. - [Client](#client) [Make custom HTTP request](#make-custom-http-request) - [JSON request](#json-request) - [Multi-part request](#multi-part-request) - [Binary response](#binary-response) [Additional headers](#additional-headers) - [As-User header](#as-user-header) - [Suppress notifications](#suppress-notifications) - [Custom headers](#custom-headers) [Custom Base URLs](#custom-base-urls) # Make custom HTTP request You can make custom HTTP requests using the `client.makeRequest()` method. This method allows you to make any HTTP request to the Box API. It will automatically use authentication and network configuration settings from the client. The method accepts a `FetchOptions` object as an argument and returns a `FetchResponse` object. ## JSON request The following example demonstrates how to make a custom POST request to create a new folder in the root folder. ``` let requestBodyPost: String = "\("{\"name\": \"myFolderName\", \"parent\": { \"id\": \"0\"}}")" let response: FetchResponse = try await client.makeRequest( fetchOptions: FetchOptions( url: "https://api.box.com/2.0/folders", method: "POST", data: JsonUtils.jsonToSerializedData(text: requestBodyPost) ) ) let responseContent = String(data: response.data?.data ?? Data(), encoding: .utf8) ?? "" print("Received status code: \(response.status)") print("Response content: \(responseContent)") // We can also deserialize the response content to json dictionary so we can access the values by key if let jsonDict = JsonUtils.sdToJsonDictionary(from: response.data) { print("Created folder name: \(jsonDict["name"] ?? "")" ) } ``` ## Multi-part request The following example demonstrates how to make a custom multipart request that uploads a file to a folder. ``` let multipartAttributes: String = "\("{\"name\": \"newFileName\", \"parent\": { \"id\":\"0\"}}")" guard let fileContentStream = InputStream(url: URL(string: "<URL_TO_YOUR_FILE>")!) else { fatalError("Could not read a file") } let multipartItems = [ MultipartItem(partName: "attributes", data: JsonUtils.jsonToSerializedData(text: multipartAttributes)), MultipartItem(partName: "file", fileStream: fileContentStream) ] let response: FetchResponse = try await client.makeRequest( fetchOptions: FetchOptions( url: "https://upload.box.com/api/2.0/files/content", method: "POST", multipartData: multipartItems, contentType: "multipart/form-data" ) ) print("Received status code: \(response.status)") ``` ## Binary response The following example demonstrates how to make a custom request to download a file. You must specify the `responseFormat` parameter in the `FetchOptions` object as `ResponseFormat.binary` and set the `downloadDestinationUrl` parameter to indicate where the file should be saved. ``` // Path to the file where the downloaded content will be saved let downloadPathString: String = "\(Utils.temporaryDirectoryPath())\(Utils.getUUID())" let fileId = "123456789"; let response: FetchResponse = try await client.makeRequest( fetchOptions: FetchOptions( url: "\("https://api.box.com/2.0/files/")\(fileId)\("/content")", method: "GET", responseFormat: ResponseFormat.binary, downloadDestinationUrl: URL(path: downloadPathString) ) ) print("Received status code: \(response.status)") // If the request is successful, the file content will be saved to the specified path if response.status == 200 { if let url = URL(string: downloadPathString), let data = try? Data(contentsOf: url){ print("File content: \(String(decoding: data, as: UTF8.self))") } } ``` # Additional headers BoxClient provides a convenient method, which allow passing additional headers, which will be included in every API call made by the client. ## As-User header The As-User header is used by enterprise admins to make API calls on behalf of their enterprise's users. This requires the API request to pass an As-User: USER-ID header. For more details see the [documentation on As-User](https://developer.box.com/en/guides/authentication/oauth2/as-user/). The following example assume that the client has been instantiated with an access token belonging to an admin-level user or Service Account with appropriate privileges to make As-User calls. Calling the `client.withAsUserHeader()` method creates a new client to impersonate user with the provided ID. All calls made with the new client will be made in context of the impersonated user, leaving the original client unmodified. ``` let userClient = client.withAsUserHeader(userId: '1234567') ``` ## Suppress notifications If you are making administrative API calls (that is, your application has “Manage an Enterprise” scope, and the user signing in is a co-admin with the correct "Edit settings for your company" permission) then you can suppress both email and webhook notifications. This can be used, for example, for a virus-scanning tool to download copies of everyone’s files in an enterprise, without every collaborator on the file getting an email. All actions will still appear in users' updates feed and audit logs. **Note:** This functionality is only available for approved applications. Calling the `client.withSuppressedNotifications()` method creates a new client. For all calls made with the new client the notifications will be suppressed. ``` let newClient = client.withSuppressedNotifications() ``` ## Custom headers You can also specify the custom set of headers, which will be included in every API call made by client. Calling the `client.withExtraHeaders()` method creates a new client, leaving the original client unmodified. ``` let newClient = client.withExtraHeaders(extraHeaders: ["customHeader": "customValue"]) ``` # Custom Base URLs You can also specify the custom base URLs, which will be used for API calls made by client. Calling the `client.withCustomBaseUrls()` method creates a new client, leaving the original client unmodified. ``` let newClient = client.withCustomBaseUrls(baseUrls: BaseUrls( baseUrl: "https://api.box.com", uploadUrl: "https://upload.box.com/api", oauth2Url: "https://account.box.com/api/oauth2" )) ``` --- ### Client **Type:** page | **Section:** Additional Resources Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers… # Client This is the central entrypoint for all SDK interaction. The BoxClient houses all the API endpoints divided across resource managers. - [Client](#client) [Make custom HTTP request](#make-custom-http-request) - [JSON request](#json-request) - [Multi-part request](#multi-part-request) - [Binary response](#binary-response) [Additional headers](#additional-headers) - [As-User header](#as-user-header) - [Suppress notifications](#suppress-notifications) - [Custom headers](#custom-headers) [Custom Base URLs](#custom-base-urls) [Interceptors](#interceptors) [Use Proxy for API calls](#use-proxy-for-api-calls) # Make custom HTTP request You can make custom HTTP requests using the `client.makeRequest()` method. This method allows you to make any HTTP request to the Box API. It will automatically use authentication and network configuration settings from the client. The method accepts a `FetchOptions` object as an argument and returns a `FetchResponse` object. ## JSON request The following example demonstrates how to make a custom POST request to create a new folder in the root folder. ``` FetchOptions fetchOptions = new FetchOptions.Builder("https://api.box.com/2.0/users/me", "GET") .params(new HashMap<>() {{ put("fields", "name"); }}) .build(); FetchResponse response = client.makeRequest(fetchOptions); System.out.println("Status code: " + response.getStatus()); System.out.println("Response body: " + response.getContent()); ``` ## Multi-part request The following example demonstrates how to make a custom multipart request that uploads a file to a folder. ``` List<MultipartItem> multipartItems = List.of( new MultipartItem.Builder("attributes") .data(JsonManager.serialize("{\"name\": \"newFileName\", \"parent\": { \"id\": \"0\" }}")) .build(), new MultipartItem.Builder("file") .fileStream(new FileInputStream(new File("file.txt"))) .build() ); FetchOptions fetchOptions = new FetchOptions.Builder("https://upload.box.com/api/2.0/files/content", "POST") .contentType("multipart/form-data") .multipartData(multipartItems) .build(); FetchResponse response = client.makeRequest(fetchOptions); System.out.println("Status code: " + response.getStatus()); System.out.println("Response body: " + response.getContent()); ``` ## Binary response The following example demonstrates how to make a custom request that expects a binary response. It is required to specify the `responseFormat` parameter in the `FetchOptions` object to "binary". ``` FetchOptions fetchOptions = new FetchOptions.Builder("https://upload.box.com/api/2.0/files/12345/content", "GET") .responseFormat(ResponseFormat.BINARY) .build(); FetchResponse response = client.makeRequest(fetchOptions); System.out.println("Status code: " + response.getStatus()); System.out.println("Response body: " + response.getContent()); ``` # Additional headers BoxClient provides a convenient methods, which allow passing additional headers, which will be included in every API call made by the client. ## As-User header The As-User header is used by enterprise admins to make API calls on behalf of their enterprise's users. This requires the API request to pass an As-User: USER-ID header. For more details see the [documentation on As-User](https://developer.box.com/en/guides/authentication/oauth2/as-user/). The following example assume that the client has been instantiated with an access token belonging to an admin-level user or Service Account with appropriate privileges to make As-User calls. Calling the `client.withAsUserHeader()` method creates a new client to impersonate user with the provided ID. All calls made with the new client will be made in context of the impersonated user, leaving the original client unmodified. ``` BoxClient userClient = client.withAsUserHeader('1234567'); ``` ## Suppress notifications If you are making administrative API calls (that is, your application has “Manage an Enterprise” scope, and the user signing in is a co-admin with the correct "Edit settings for your company" permission) then you can suppress both email and webhook notifications. This can be used, for example, for a virus-scanning tool to download copies of everyone’s files in an enterprise, without every collaborator on the file getting an email. All actions will still appear in users' updates feed and audit logs. **Note:** This functionality is only available for approved applications. Calling the `client.withSuppressedNotifications()` method creates a new client. For all calls made with the new client the notifications will be suppressed. ``` BoxClient newClient = client.withSuppressedNotifications(); ``` ## Custom headers You can also specify the custom set of headers, which will be included in every API call made by client. Calling the `client.withExtraHeaders()` method creates a new client, leaving the original client unmodified. ``` BoxClient newClient = client.withExtraHeaders(new HashMap<>() {{ put("X-My-Header", "124"); }}); ``` # Custom Base URLs You can also specify the custom base URLs, which will be used for API calls made by client. Calling the `client.withCustomBaseUrls()` method creates a new client, leaving the original client unmodified. ``` BaseUrls baseUrls = new BaseUrls.Builder() .baseUrl("https://new-base-url.com") .uploadUrl("https://my-company-upload-url.com") .oauth2Url("https://my-company.com/oauth2") .build(); BoxClient clientWithCustomBaseUrl = client.withCustomBaseUrls(baseUrls); ``` # Interceptors You can specify custom interceptors - methods that will be called just before making a request and right after receiving a response from the server. Using these function allows you to modify the request payload and response. Interceptor interface accepts two methods with the following signatures: ``` FetchOptions beforeRequest(FetchOptions fetchOptions) FetchResponse afterRequest(FetchResponse fetchResponse) ``` You can apply more than one interceptor to the client by passing a list of interceptors to apply. Calling the `client.withInterceptors()` method creates a new client, leaving the original client unmodified. ``` List<Interceptor> interceptors = new ArrayList<>() { { add(new Interceptor() { @Override public FetchOptions beforeRequest(FetchOptions fetchOptions) { return fetchOptions; } @Override public FetchResponse afterRequest(FetchResponse fetchResponse) { return fetchResponse; } }); } }; BoxClient clientWithInterceptor = client.withInterceptors(interceptors); ``` # Use Proxy for API calls In order to use a proxy for API calls, calling the `client.withProxy(proxyConfig)` method creates a new client, leaving the original client unmodified, with the username and password being optional. We only support adding proxy for BoxNetworkClient. If you are using your own implementation of NetworkClient, you would need to configure proxy on your own. **Note:** We are only supporting http/s proxies with basic authentication. NTLM and other authentication methods are not supported. ``` ProxyConfig proxyConfig = new ProxyConfig("http://127.0.0.1:3128"); newClient = client.withProxy(proxyConfig); //Using Basic Auth with username and password ProxyConfig proxyConfig = new ProxyConfig.Builder("http://127.0.0.1:3128").username("username").password("password").build(); newClient = client.withProxy(proxyConfig); ``` --- ### CollaborationAllowlistEntriesManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistEntriesManager List allowed collaboration domains Add domain to list of allowed collaboration domains Get allowed… # CollaborationAllowlistEntriesManager - [List allowed collaboration domains](#list-allowed-collaboration-domains) - [Add domain to list of allowed collaboration domains](#add-domain-to-list-of-allowed-collaboration-domains) - [Get allowed collaboration domain](#get-allowed-collaboration-domain) - [Remove domain from list of allowed collaboration domains](#remove-domain-from-list-of-allowed-collaboration-domains) ## List allowed collaboration domains Returns the list domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntries`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries/). ``` await client.collaborationAllowlistEntries.getCollaborationWhitelistEntries(); ``` ### Arguments queryParams `GetCollaborationWhitelistEntriesQueryParams` - Query parameters of getCollaborationWhitelistEntries method headersInput `GetCollaborationWhitelistEntriesHeadersInput` - Headers of getCollaborationWhitelistEntries method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `CollaborationAllowlistEntries`. Returns a collection of domains that are allowed for collaboration. ## Add domain to list of allowed collaboration domains Creates a new entry in the list of allowed domains to allow collaboration for. This operation is performed by calling function `createCollaborationWhitelistEntry`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-entries/). ``` await client.collaborationAllowlistEntries.createCollaborationWhitelistEntry({ direction: 'inbound' as CreateCollaborationWhitelistEntryRequestBodyDirectionField, domain: domain, } satisfies CreateCollaborationWhitelistEntryRequestBody); ``` ### Arguments requestBody `CreateCollaborationWhitelistEntryRequestBody` - Request body of createCollaborationWhitelistEntry method optionalsInput `CreateCollaborationWhitelistEntryOptionalsInput` ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns a new entry on the list of allowed domains. ## Get allowed collaboration domain Returns a domain that has been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries-id/). ``` await client.collaborationAllowlistEntries.getCollaborationWhitelistEntryById( newEntry.id!, ); ``` ### Arguments collaborationWhitelistEntryId `string` - The ID of the entry in the list. Example: "213123" optionalsInput `GetCollaborationWhitelistEntryByIdOptionalsInput` ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns an entry on the list of allowed domains. ## Remove domain from list of allowed collaboration domains Removes a domain from the list of domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `deleteCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-entries-id/). ``` await client.collaborationAllowlistEntries.deleteCollaborationWhitelistEntryById( entry.id!, ); ``` ### Arguments collaborationWhitelistEntryId `string` - The ID of the entry in the list. Example: "213123" optionalsInput `DeleteCollaborationWhitelistEntryByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. A blank response is returned if the entry was successfully deleted. --- ### CollaborationAllowlistEntriesManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistEntriesManager List allowed collaboration domains Add domain to list of allowed collaboration domains Get allowed… # CollaborationAllowlistEntriesManager - [List allowed collaboration domains](#list-allowed-collaboration-domains) - [Add domain to list of allowed collaboration domains](#add-domain-to-list-of-allowed-collaboration-domains) - [Get allowed collaboration domain](#get-allowed-collaboration-domain) - [Remove domain from list of allowed collaboration domains](#remove-domain-from-list-of-allowed-collaboration-domains) ## List allowed collaboration domains Returns the list domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntries`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries/). ``` client.getCollaborationAllowlistEntries().getCollaborationWhitelistEntries() ``` ### Arguments queryParams `GetCollaborationWhitelistEntriesQueryParams` - Query parameters of getCollaborationWhitelistEntries method headers `GetCollaborationWhitelistEntriesHeaders` - Headers of getCollaborationWhitelistEntries method ### Returns This function returns a value of type `CollaborationAllowlistEntries`. Returns a collection of domains that are allowed for collaboration. ## Add domain to list of allowed collaboration domains Creates a new entry in the list of allowed domains to allow collaboration for. This operation is performed by calling function `createCollaborationWhitelistEntry`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-entries/). ``` client.getCollaborationAllowlistEntries().createCollaborationWhitelistEntry(new CreateCollaborationWhitelistEntryRequestBody(domain, CreateCollaborationWhitelistEntryRequestBodyDirectionField.INBOUND)) ``` ### Arguments requestBody `CreateCollaborationWhitelistEntryRequestBody` - Request body of createCollaborationWhitelistEntry method headers `CreateCollaborationWhitelistEntryHeaders` - Headers of createCollaborationWhitelistEntry method ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns a new entry on the list of allowed domains. ## Get allowed collaboration domain Returns a domain that has been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries-id/). ``` client.getCollaborationAllowlistEntries().getCollaborationWhitelistEntryById(newEntry.getId()) ``` ### Arguments collaborationWhitelistEntryId `String` - The ID of the entry in the list. Example: "213123" headers `GetCollaborationWhitelistEntryByIdHeaders` - Headers of getCollaborationWhitelistEntryById method ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns an entry on the list of allowed domains. ## Remove domain from list of allowed collaboration domains Removes a domain from the list of domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `deleteCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-entries-id/). ``` client.getCollaborationAllowlistEntries().deleteCollaborationWhitelistEntryById(entry.getId()) ``` ### Arguments collaborationWhitelistEntryId `String` - The ID of the entry in the list. Example: "213123" headers `DeleteCollaborationWhitelistEntryByIdHeaders` - Headers of deleteCollaborationWhitelistEntryById method ### Returns This function returns a value of type `void`. A blank response is returned if the entry was successfully deleted. --- ### CollaborationAllowlistEntriesManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistEntriesManager List allowed collaboration domains Add domain to list of allowed collaboration domains Get allowed… # CollaborationAllowlistEntriesManager - [List allowed collaboration domains](#list-allowed-collaboration-domains) - [Add domain to list of allowed collaboration domains](#add-domain-to-list-of-allowed-collaboration-domains) - [Get allowed collaboration domain](#get-allowed-collaboration-domain) - [Remove domain from list of allowed collaboration domains](#remove-domain-from-list-of-allowed-collaboration-domains) ## List allowed collaboration domains Returns the list domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `get_collaboration_whitelist_entries`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries/). ``` client.collaboration_allowlist_entries.get_collaboration_whitelist_entries() ``` ### Arguments marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistEntries`. Returns a collection of domains that are allowed for collaboration. ## Add domain to list of allowed collaboration domains Creates a new entry in the list of allowed domains to allow collaboration for. This operation is performed by calling function `create_collaboration_whitelist_entry`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-entries/). ``` client.collaboration_allowlist_entries.create_collaboration_whitelist_entry( domain, CreateCollaborationWhitelistEntryDirection.INBOUND ) ``` ### Arguments domain `str` - The domain to add to the list of allowed domains. direction `CreateCollaborationWhitelistEntryDirection` - The direction in which to allow collaborations. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns a new entry on the list of allowed domains. ## Get allowed collaboration domain Returns a domain that has been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `get_collaboration_whitelist_entry_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries-id/). ``` client.collaboration_allowlist_entries.get_collaboration_whitelist_entry_by_id( new_entry.id ) ``` ### Arguments collaboration_whitelist_entry_id `str` - The ID of the entry in the list. Example: "213123" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns an entry on the list of allowed domains. ## Remove domain from list of allowed collaboration domains Removes a domain from the list of domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `delete_collaboration_whitelist_entry_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-entries-id/). ``` client.collaboration_allowlist_entries.delete_collaboration_whitelist_entry_by_id( entry.id ) ``` ### Arguments collaboration_whitelist_entry_id `str` - The ID of the entry in the list. Example: "213123" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. A blank response is returned if the entry was successfully deleted. --- ### CollaborationAllowlistEntriesManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistEntriesManager List allowed collaboration domains Add domain to list of allowed collaboration domains Get allowed… # CollaborationAllowlistEntriesManager - [List allowed collaboration domains](#list-allowed-collaboration-domains) - [Add domain to list of allowed collaboration domains](#add-domain-to-list-of-allowed-collaboration-domains) - [Get allowed collaboration domain](#get-allowed-collaboration-domain) - [Remove domain from list of allowed collaboration domains](#remove-domain-from-list-of-allowed-collaboration-domains) ## List allowed collaboration domains Returns the list domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntries`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries/). ``` try await client.collaborationAllowlistEntries.getCollaborationWhitelistEntries() ``` ### Arguments queryParams `GetCollaborationWhitelistEntriesQueryParams` - Query parameters of getCollaborationWhitelistEntries method headers `GetCollaborationWhitelistEntriesHeaders` - Headers of getCollaborationWhitelistEntries method ### Returns This function returns a value of type `CollaborationAllowlistEntries`. Returns a collection of domains that are allowed for collaboration. ## Add domain to list of allowed collaboration domains Creates a new entry in the list of allowed domains to allow collaboration for. This operation is performed by calling function `createCollaborationWhitelistEntry`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-entries/). ``` try await client.collaborationAllowlistEntries.createCollaborationWhitelistEntry(requestBody: CreateCollaborationWhitelistEntryRequestBody(direction: CreateCollaborationWhitelistEntryRequestBodyDirectionField.inbound, domain: domain)) ``` ### Arguments requestBody `CreateCollaborationWhitelistEntryRequestBody` - Request body of createCollaborationWhitelistEntry method headers `CreateCollaborationWhitelistEntryHeaders` - Headers of createCollaborationWhitelistEntry method ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns a new entry on the list of allowed domains. ## Get allowed collaboration domain Returns a domain that has been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries-id/). ``` try await client.collaborationAllowlistEntries.getCollaborationWhitelistEntryById(collaborationWhitelistEntryId: newEntry.id!) ``` ### Arguments collaborationWhitelistEntryId `String` - The ID of the entry in the list. Example: "213123" headers `GetCollaborationWhitelistEntryByIdHeaders` - Headers of getCollaborationWhitelistEntryById method ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns an entry on the list of allowed domains. ## Remove domain from list of allowed collaboration domains Removes a domain from the list of domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `deleteCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-entries-id/). ``` try await client.collaborationAllowlistEntries.deleteCollaborationWhitelistEntryById(collaborationWhitelistEntryId: entry.id!) ``` ### Arguments collaborationWhitelistEntryId `String` - The ID of the entry in the list. Example: "213123" headers `DeleteCollaborationWhitelistEntryByIdHeaders` - Headers of deleteCollaborationWhitelistEntryById method ### Returns This function returns a value of type ``. A blank response is returned if the entry was successfully deleted. --- ### CollaborationAllowlistEntriesManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistEntriesManager List allowed collaboration domains Add domain to list of allowed collaboration domains Get allowed… # CollaborationAllowlistEntriesManager - [List allowed collaboration domains](#list-allowed-collaboration-domains) - [Add domain to list of allowed collaboration domains](#add-domain-to-list-of-allowed-collaboration-domains) - [Get allowed collaboration domain](#get-allowed-collaboration-domain) - [Remove domain from list of allowed collaboration domains](#remove-domain-from-list-of-allowed-collaboration-domains) ## List allowed collaboration domains Returns the list domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntries`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries/). ``` await client.collaborationAllowlistEntries.getCollaborationWhitelistEntries(); ``` ### Arguments queryParams `GetCollaborationWhitelistEntriesQueryParams` - Query parameters of getCollaborationWhitelistEntries method headersInput `GetCollaborationWhitelistEntriesHeadersInput` - Headers of getCollaborationWhitelistEntries method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `CollaborationAllowlistEntries`. Returns a collection of domains that are allowed for collaboration. ## Add domain to list of allowed collaboration domains Creates a new entry in the list of allowed domains to allow collaboration for. This operation is performed by calling function `createCollaborationWhitelistEntry`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-entries/). ``` await client.collaborationAllowlistEntries.createCollaborationWhitelistEntry({ direction: 'inbound' as CreateCollaborationWhitelistEntryRequestBodyDirectionField, domain: domain, } satisfies CreateCollaborationWhitelistEntryRequestBody); ``` ### Arguments requestBody `CreateCollaborationWhitelistEntryRequestBody` - Request body of createCollaborationWhitelistEntry method optionalsInput `CreateCollaborationWhitelistEntryOptionalsInput` ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns a new entry on the list of allowed domains. ## Get allowed collaboration domain Returns a domain that has been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries-id/). ``` await client.collaborationAllowlistEntries.getCollaborationWhitelistEntryById( newEntry.id!, ); ``` ### Arguments collaborationWhitelistEntryId `string` - The ID of the entry in the list. Example: "213123" optionalsInput `GetCollaborationWhitelistEntryByIdOptionalsInput` ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns an entry on the list of allowed domains. ## Remove domain from list of allowed collaboration domains Removes a domain from the list of domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `deleteCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-entries-id/). ``` await client.collaborationAllowlistEntries.deleteCollaborationWhitelistEntryById( entry.id!, ); ``` ### Arguments collaborationWhitelistEntryId `string` - The ID of the entry in the list. Example: "213123" optionalsInput `DeleteCollaborationWhitelistEntryByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. A blank response is returned if the entry was successfully deleted. --- ### CollaborationAllowlistEntriesManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistEntriesManager List allowed collaboration domains Add domain to list of allowed collaboration domains Get allowed… # CollaborationAllowlistEntriesManager - [List allowed collaboration domains](#list-allowed-collaboration-domains) - [Add domain to list of allowed collaboration domains](#add-domain-to-list-of-allowed-collaboration-domains) - [Get allowed collaboration domain](#get-allowed-collaboration-domain) - [Remove domain from list of allowed collaboration domains](#remove-domain-from-list-of-allowed-collaboration-domains) ## List allowed collaboration domains Returns the list domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `get_collaboration_whitelist_entries`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries/). ``` client.collaboration_allowlist_entries.get_collaboration_whitelist_entries() ``` ### Arguments marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistEntries`. Returns a collection of domains that are allowed for collaboration. ## Add domain to list of allowed collaboration domains Creates a new entry in the list of allowed domains to allow collaboration for. This operation is performed by calling function `create_collaboration_whitelist_entry`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-entries/). ``` client.collaboration_allowlist_entries.create_collaboration_whitelist_entry( domain, CreateCollaborationWhitelistEntryDirection.INBOUND ) ``` ### Arguments domain `str` - The domain to add to the list of allowed domains. direction `CreateCollaborationWhitelistEntryDirection` - The direction in which to allow collaborations. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns a new entry on the list of allowed domains. ## Get allowed collaboration domain Returns a domain that has been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `get_collaboration_whitelist_entry_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries-id/). ``` client.collaboration_allowlist_entries.get_collaboration_whitelist_entry_by_id( new_entry.id ) ``` ### Arguments collaboration_whitelist_entry_id `str` - The ID of the entry in the list. Example: "213123" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns an entry on the list of allowed domains. ## Remove domain from list of allowed collaboration domains Removes a domain from the list of domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `delete_collaboration_whitelist_entry_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-entries-id/). ``` client.collaboration_allowlist_entries.delete_collaboration_whitelist_entry_by_id( entry.id ) ``` ### Arguments collaboration_whitelist_entry_id `str` - The ID of the entry in the list. Example: "213123" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. A blank response is returned if the entry was successfully deleted. --- ### CollaborationAllowlistEntriesManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistEntriesManager List allowed collaboration domains Add domain to list of allowed collaboration domains Get allowed… # CollaborationAllowlistEntriesManager - [List allowed collaboration domains](#list-allowed-collaboration-domains) - [Add domain to list of allowed collaboration domains](#add-domain-to-list-of-allowed-collaboration-domains) - [Get allowed collaboration domain](#get-allowed-collaboration-domain) - [Remove domain from list of allowed collaboration domains](#remove-domain-from-list-of-allowed-collaboration-domains) ## List allowed collaboration domains Returns the list domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntries`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries/). ``` try await client.collaborationAllowlistEntries.getCollaborationWhitelistEntries() ``` ### Arguments queryParams `GetCollaborationWhitelistEntriesQueryParams` - Query parameters of getCollaborationWhitelistEntries method headers `GetCollaborationWhitelistEntriesHeaders` - Headers of getCollaborationWhitelistEntries method ### Returns This function returns a value of type `CollaborationAllowlistEntries`. Returns a collection of domains that are allowed for collaboration. ## Add domain to list of allowed collaboration domains Creates a new entry in the list of allowed domains to allow collaboration for. This operation is performed by calling function `createCollaborationWhitelistEntry`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-entries/). ``` try await client.collaborationAllowlistEntries.createCollaborationWhitelistEntry(requestBody: CreateCollaborationWhitelistEntryRequestBody(direction: CreateCollaborationWhitelistEntryRequestBodyDirectionField.inbound, domain: domain)) ``` ### Arguments requestBody `CreateCollaborationWhitelistEntryRequestBody` - Request body of createCollaborationWhitelistEntry method headers `CreateCollaborationWhitelistEntryHeaders` - Headers of createCollaborationWhitelistEntry method ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns a new entry on the list of allowed domains. ## Get allowed collaboration domain Returns a domain that has been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries-id/). ``` try await client.collaborationAllowlistEntries.getCollaborationWhitelistEntryById(collaborationWhitelistEntryId: newEntry.id!) ``` ### Arguments collaborationWhitelistEntryId `String` - The ID of the entry in the list. Example: "213123" headers `GetCollaborationWhitelistEntryByIdHeaders` - Headers of getCollaborationWhitelistEntryById method ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns an entry on the list of allowed domains. ## Remove domain from list of allowed collaboration domains Removes a domain from the list of domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `deleteCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-entries-id/). ``` try await client.collaborationAllowlistEntries.deleteCollaborationWhitelistEntryById(collaborationWhitelistEntryId: entry.id!) ``` ### Arguments collaborationWhitelistEntryId `String` - The ID of the entry in the list. Example: "213123" headers `DeleteCollaborationWhitelistEntryByIdHeaders` - Headers of deleteCollaborationWhitelistEntryById method ### Returns This function returns a value of type ``. A blank response is returned if the entry was successfully deleted. --- ### CollaborationAllowlistEntriesManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistEntriesManager List allowed collaboration domains Add domain to list of allowed collaboration domains Get allowed… # CollaborationAllowlistEntriesManager - [List allowed collaboration domains](#list-allowed-collaboration-domains) - [Add domain to list of allowed collaboration domains](#add-domain-to-list-of-allowed-collaboration-domains) - [Get allowed collaboration domain](#get-allowed-collaboration-domain) - [Remove domain from list of allowed collaboration domains](#remove-domain-from-list-of-allowed-collaboration-domains) ## List allowed collaboration domains Returns the list domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntries`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries/). ``` client.getCollaborationAllowlistEntries().getCollaborationWhitelistEntries() ``` ### Arguments queryParams `GetCollaborationWhitelistEntriesQueryParams` - Query parameters of getCollaborationWhitelistEntries method headers `GetCollaborationWhitelistEntriesHeaders` - Headers of getCollaborationWhitelistEntries method ### Returns This function returns a value of type `CollaborationAllowlistEntries`. Returns a collection of domains that are allowed for collaboration. ## Add domain to list of allowed collaboration domains Creates a new entry in the list of allowed domains to allow collaboration for. This operation is performed by calling function `createCollaborationWhitelistEntry`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-entries/). ``` client.getCollaborationAllowlistEntries().createCollaborationWhitelistEntry(new CreateCollaborationWhitelistEntryRequestBody(domain, CreateCollaborationWhitelistEntryRequestBodyDirectionField.INBOUND)) ``` ### Arguments requestBody `CreateCollaborationWhitelistEntryRequestBody` - Request body of createCollaborationWhitelistEntry method headers `CreateCollaborationWhitelistEntryHeaders` - Headers of createCollaborationWhitelistEntry method ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns a new entry on the list of allowed domains. ## Get allowed collaboration domain Returns a domain that has been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `getCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-entries-id/). ``` client.getCollaborationAllowlistEntries().getCollaborationWhitelistEntryById(newEntry.getId()) ``` ### Arguments collaborationWhitelistEntryId `String` - The ID of the entry in the list. Example: "213123" headers `GetCollaborationWhitelistEntryByIdHeaders` - Headers of getCollaborationWhitelistEntryById method ### Returns This function returns a value of type `CollaborationAllowlistEntry`. Returns an entry on the list of allowed domains. ## Remove domain from list of allowed collaboration domains Removes a domain from the list of domains that have been deemed safe to create collaborations for within the current enterprise. This operation is performed by calling function `deleteCollaborationWhitelistEntryById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-entries-id/). ``` client.getCollaborationAllowlistEntries().deleteCollaborationWhitelistEntryById(entry.getId()) ``` ### Arguments collaborationWhitelistEntryId `String` - The ID of the entry in the list. Example: "213123" headers `DeleteCollaborationWhitelistEntryByIdHeaders` - Headers of deleteCollaborationWhitelistEntryById method ### Returns This function returns a value of type `void`. A blank response is returned if the entry was successfully deleted. --- ### CollaborationAllowlistExemptTargetsManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistExemptTargetsManager List users exempt from collaboration domain restrictions Create user exemption from collaboration… # CollaborationAllowlistExemptTargetsManager - [List users exempt from collaboration domain restrictions](#list-users-exempt-from-collaboration-domain-restrictions) - [Create user exemption from collaboration domain restrictions](#create-user-exemption-from-collaboration-domain-restrictions) - [Get user exempt from collaboration domain restrictions](#get-user-exempt-from-collaboration-domain-restrictions) - [Remove user from list of users exempt from domain restrictions](#remove-user-from-list-of-users-exempt-from-domain-restrictions) ## List users exempt from collaboration domain restrictions Returns a list of users who have been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargets`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets/). ``` await client.collaborationAllowlistExemptTargets.getCollaborationWhitelistExemptTargets(); ``` ### Arguments queryParams `GetCollaborationWhitelistExemptTargetsQueryParams` - Query parameters of getCollaborationWhitelistExemptTargets method headersInput `GetCollaborationWhitelistExemptTargetsHeadersInput` - Headers of getCollaborationWhitelistExemptTargets method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `CollaborationAllowlistExemptTargets`. Returns a collection of user exemptions. ## Create user exemption from collaboration domain restrictions Exempts a user from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `createCollaborationWhitelistExemptTarget`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-exempt-targets/). ``` await client.collaborationAllowlistExemptTargets.createCollaborationWhitelistExemptTarget( { user: { id: user.id, } satisfies CreateCollaborationWhitelistExemptTargetRequestBodyUserField, } satisfies CreateCollaborationWhitelistExemptTargetRequestBody, ); ``` ### Arguments requestBody `CreateCollaborationWhitelistExemptTargetRequestBody` - Request body of createCollaborationWhitelistExemptTarget method optionalsInput `CreateCollaborationWhitelistExemptTargetOptionalsInput` ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns a new exemption entry. ## Get user exempt from collaboration domain restrictions Returns a users who has been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id/). ``` await client.collaborationAllowlistExemptTargets.getCollaborationWhitelistExemptTargetById( newExemptTarget.id!, ); ``` ### Arguments collaborationWhitelistExemptTargetId `string` - The ID of the exemption to the list. Example: "984923" optionalsInput `GetCollaborationWhitelistExemptTargetByIdOptionalsInput` ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns the user's exempted from the list of collaboration domains. ## Remove user from list of users exempt from domain restrictions Removes a user's exemption from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `deleteCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id/). ``` await client.collaborationAllowlistExemptTargets.deleteCollaborationWhitelistExemptTargetById( exemptTarget.id!, ); ``` ### Arguments collaborationWhitelistExemptTargetId `string` - The ID of the exemption to the list. Example: "984923" optionalsInput `DeleteCollaborationWhitelistExemptTargetByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. A blank response is returned if the exemption was successfully deleted. --- ### CollaborationAllowlistExemptTargetsManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistExemptTargetsManager List users exempt from collaboration domain restrictions Create user exemption from collaboration… # CollaborationAllowlistExemptTargetsManager - [List users exempt from collaboration domain restrictions](#list-users-exempt-from-collaboration-domain-restrictions) - [Create user exemption from collaboration domain restrictions](#create-user-exemption-from-collaboration-domain-restrictions) - [Get user exempt from collaboration domain restrictions](#get-user-exempt-from-collaboration-domain-restrictions) - [Remove user from list of users exempt from domain restrictions](#remove-user-from-list-of-users-exempt-from-domain-restrictions) ## List users exempt from collaboration domain restrictions Returns a list of users who have been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargets`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets/). ``` client.getCollaborationAllowlistExemptTargets().getCollaborationWhitelistExemptTargets() ``` ### Arguments queryParams `GetCollaborationWhitelistExemptTargetsQueryParams` - Query parameters of getCollaborationWhitelistExemptTargets method headers `GetCollaborationWhitelistExemptTargetsHeaders` - Headers of getCollaborationWhitelistExemptTargets method ### Returns This function returns a value of type `CollaborationAllowlistExemptTargets`. Returns a collection of user exemptions. ## Create user exemption from collaboration domain restrictions Exempts a user from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `createCollaborationWhitelistExemptTarget`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-exempt-targets/). ``` client.getCollaborationAllowlistExemptTargets().createCollaborationWhitelistExemptTarget(new CreateCollaborationWhitelistExemptTargetRequestBody(new CreateCollaborationWhitelistExemptTargetRequestBodyUserField(user.getId()))) ``` ### Arguments requestBody `CreateCollaborationWhitelistExemptTargetRequestBody` - Request body of createCollaborationWhitelistExemptTarget method headers `CreateCollaborationWhitelistExemptTargetHeaders` - Headers of createCollaborationWhitelistExemptTarget method ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns a new exemption entry. ## Get user exempt from collaboration domain restrictions Returns a users who has been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id/). ``` client.getCollaborationAllowlistExemptTargets().getCollaborationWhitelistExemptTargetById(newExemptTarget.getId()) ``` ### Arguments collaborationWhitelistExemptTargetId `String` - The ID of the exemption to the list. Example: "984923" headers `GetCollaborationWhitelistExemptTargetByIdHeaders` - Headers of getCollaborationWhitelistExemptTargetById method ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns the user's exempted from the list of collaboration domains. ## Remove user from list of users exempt from domain restrictions Removes a user's exemption from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `deleteCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id/). ``` client.getCollaborationAllowlistExemptTargets().deleteCollaborationWhitelistExemptTargetById(exemptTarget.getId()) ``` ### Arguments collaborationWhitelistExemptTargetId `String` - The ID of the exemption to the list. Example: "984923" headers `DeleteCollaborationWhitelistExemptTargetByIdHeaders` - Headers of deleteCollaborationWhitelistExemptTargetById method ### Returns This function returns a value of type `void`. A blank response is returned if the exemption was successfully deleted. --- ### CollaborationAllowlistExemptTargetsManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistExemptTargetsManager List users exempt from collaboration domain restrictions Create user exemption from collaboration… # CollaborationAllowlistExemptTargetsManager - [List users exempt from collaboration domain restrictions](#list-users-exempt-from-collaboration-domain-restrictions) - [Create user exemption from collaboration domain restrictions](#create-user-exemption-from-collaboration-domain-restrictions) - [Get user exempt from collaboration domain restrictions](#get-user-exempt-from-collaboration-domain-restrictions) - [Remove user from list of users exempt from domain restrictions](#remove-user-from-list-of-users-exempt-from-domain-restrictions) ## List users exempt from collaboration domain restrictions Returns a list of users who have been exempt from the collaboration domain restrictions. This operation is performed by calling function `get_collaboration_whitelist_exempt_targets`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets/). ``` client.collaboration_allowlist_exempt_targets.get_collaboration_whitelist_exempt_targets() ``` ### Arguments marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistExemptTargets`. Returns a collection of user exemptions. ## Create user exemption from collaboration domain restrictions Exempts a user from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `create_collaboration_whitelist_exempt_target`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-exempt-targets/). ``` client.collaboration_allowlist_exempt_targets.create_collaboration_whitelist_exempt_target( CreateCollaborationWhitelistExemptTargetUser(id=user.id) ) ``` ### Arguments user `CreateCollaborationWhitelistExemptTargetUser` - The user to exempt. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns a new exemption entry. ## Get user exempt from collaboration domain restrictions Returns a users who has been exempt from the collaboration domain restrictions. This operation is performed by calling function `get_collaboration_whitelist_exempt_target_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id/). ``` client.collaboration_allowlist_exempt_targets.get_collaboration_whitelist_exempt_target_by_id( new_exempt_target.id ) ``` ### Arguments collaboration_whitelist_exempt_target_id `str` - The ID of the exemption to the list. Example: "984923" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns the user's exempted from the list of collaboration domains. ## Remove user from list of users exempt from domain restrictions Removes a user's exemption from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `delete_collaboration_whitelist_exempt_target_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id/). ``` client.collaboration_allowlist_exempt_targets.delete_collaboration_whitelist_exempt_target_by_id( exempt_target.id ) ``` ### Arguments collaboration_whitelist_exempt_target_id `str` - The ID of the exemption to the list. Example: "984923" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. A blank response is returned if the exemption was successfully deleted. --- ### CollaborationAllowlistExemptTargetsManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistExemptTargetsManager List users exempt from collaboration domain restrictions Create user exemption from collaboration… # CollaborationAllowlistExemptTargetsManager - [List users exempt from collaboration domain restrictions](#list-users-exempt-from-collaboration-domain-restrictions) - [Create user exemption from collaboration domain restrictions](#create-user-exemption-from-collaboration-domain-restrictions) - [Get user exempt from collaboration domain restrictions](#get-user-exempt-from-collaboration-domain-restrictions) - [Remove user from list of users exempt from domain restrictions](#remove-user-from-list-of-users-exempt-from-domain-restrictions) ## List users exempt from collaboration domain restrictions Returns a list of users who have been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargets`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets/). ``` try await client.collaborationAllowlistExemptTargets.getCollaborationWhitelistExemptTargets() ``` ### Arguments queryParams `GetCollaborationWhitelistExemptTargetsQueryParams` - Query parameters of getCollaborationWhitelistExemptTargets method headers `GetCollaborationWhitelistExemptTargetsHeaders` - Headers of getCollaborationWhitelistExemptTargets method ### Returns This function returns a value of type `CollaborationAllowlistExemptTargets`. Returns a collection of user exemptions. ## Create user exemption from collaboration domain restrictions Exempts a user from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `createCollaborationWhitelistExemptTarget`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-exempt-targets/). ``` try await client.collaborationAllowlistExemptTargets.createCollaborationWhitelistExemptTarget(requestBody: CreateCollaborationWhitelistExemptTargetRequestBody(user: CreateCollaborationWhitelistExemptTargetRequestBodyUserField(id: user.id))) ``` ### Arguments requestBody `CreateCollaborationWhitelistExemptTargetRequestBody` - Request body of createCollaborationWhitelistExemptTarget method headers `CreateCollaborationWhitelistExemptTargetHeaders` - Headers of createCollaborationWhitelistExemptTarget method ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns a new exemption entry. ## Get user exempt from collaboration domain restrictions Returns a users who has been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id/). ``` try await client.collaborationAllowlistExemptTargets.getCollaborationWhitelistExemptTargetById(collaborationWhitelistExemptTargetId: newExemptTarget.id!) ``` ### Arguments collaborationWhitelistExemptTargetId `String` - The ID of the exemption to the list. Example: "984923" headers `GetCollaborationWhitelistExemptTargetByIdHeaders` - Headers of getCollaborationWhitelistExemptTargetById method ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns the user's exempted from the list of collaboration domains. ## Remove user from list of users exempt from domain restrictions Removes a user's exemption from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `deleteCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id/). ``` try await client.collaborationAllowlistExemptTargets.deleteCollaborationWhitelistExemptTargetById(collaborationWhitelistExemptTargetId: exemptTarget.id!) ``` ### Arguments collaborationWhitelistExemptTargetId `String` - The ID of the exemption to the list. Example: "984923" headers `DeleteCollaborationWhitelistExemptTargetByIdHeaders` - Headers of deleteCollaborationWhitelistExemptTargetById method ### Returns This function returns a value of type ``. A blank response is returned if the exemption was successfully deleted. --- ### CollaborationAllowlistExemptTargetsManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistExemptTargetsManager List users exempt from collaboration domain restrictions Create user exemption from collaboration… # CollaborationAllowlistExemptTargetsManager - [List users exempt from collaboration domain restrictions](#list-users-exempt-from-collaboration-domain-restrictions) - [Create user exemption from collaboration domain restrictions](#create-user-exemption-from-collaboration-domain-restrictions) - [Get user exempt from collaboration domain restrictions](#get-user-exempt-from-collaboration-domain-restrictions) - [Remove user from list of users exempt from domain restrictions](#remove-user-from-list-of-users-exempt-from-domain-restrictions) ## List users exempt from collaboration domain restrictions Returns a list of users who have been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargets`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets/). ``` await client.collaborationAllowlistExemptTargets.getCollaborationWhitelistExemptTargets(); ``` ### Arguments queryParams `GetCollaborationWhitelistExemptTargetsQueryParams` - Query parameters of getCollaborationWhitelistExemptTargets method headersInput `GetCollaborationWhitelistExemptTargetsHeadersInput` - Headers of getCollaborationWhitelistExemptTargets method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `CollaborationAllowlistExemptTargets`. Returns a collection of user exemptions. ## Create user exemption from collaboration domain restrictions Exempts a user from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `createCollaborationWhitelistExemptTarget`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-exempt-targets/). ``` await client.collaborationAllowlistExemptTargets.createCollaborationWhitelistExemptTarget( { user: { id: user.id, } satisfies CreateCollaborationWhitelistExemptTargetRequestBodyUserField, } satisfies CreateCollaborationWhitelistExemptTargetRequestBody, ); ``` ### Arguments requestBody `CreateCollaborationWhitelistExemptTargetRequestBody` - Request body of createCollaborationWhitelistExemptTarget method optionalsInput `CreateCollaborationWhitelistExemptTargetOptionalsInput` ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns a new exemption entry. ## Get user exempt from collaboration domain restrictions Returns a users who has been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id/). ``` await client.collaborationAllowlistExemptTargets.getCollaborationWhitelistExemptTargetById( newExemptTarget.id!, ); ``` ### Arguments collaborationWhitelistExemptTargetId `string` - The ID of the exemption to the list. Example: "984923" optionalsInput `GetCollaborationWhitelistExemptTargetByIdOptionalsInput` ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns the user's exempted from the list of collaboration domains. ## Remove user from list of users exempt from domain restrictions Removes a user's exemption from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `deleteCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id/). ``` await client.collaborationAllowlistExemptTargets.deleteCollaborationWhitelistExemptTargetById( exemptTarget.id!, ); ``` ### Arguments collaborationWhitelistExemptTargetId `string` - The ID of the exemption to the list. Example: "984923" optionalsInput `DeleteCollaborationWhitelistExemptTargetByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. A blank response is returned if the exemption was successfully deleted. --- ### CollaborationAllowlistExemptTargetsManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistExemptTargetsManager List users exempt from collaboration domain restrictions Create user exemption from collaboration… # CollaborationAllowlistExemptTargetsManager - [List users exempt from collaboration domain restrictions](#list-users-exempt-from-collaboration-domain-restrictions) - [Create user exemption from collaboration domain restrictions](#create-user-exemption-from-collaboration-domain-restrictions) - [Get user exempt from collaboration domain restrictions](#get-user-exempt-from-collaboration-domain-restrictions) - [Remove user from list of users exempt from domain restrictions](#remove-user-from-list-of-users-exempt-from-domain-restrictions) ## List users exempt from collaboration domain restrictions Returns a list of users who have been exempt from the collaboration domain restrictions. This operation is performed by calling function `get_collaboration_whitelist_exempt_targets`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets/). ``` client.collaboration_allowlist_exempt_targets.get_collaboration_whitelist_exempt_targets() ``` ### Arguments marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistExemptTargets`. Returns a collection of user exemptions. ## Create user exemption from collaboration domain restrictions Exempts a user from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `create_collaboration_whitelist_exempt_target`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-exempt-targets/). ``` client.collaboration_allowlist_exempt_targets.create_collaboration_whitelist_exempt_target( CreateCollaborationWhitelistExemptTargetUser(id=user.id) ) ``` ### Arguments user `CreateCollaborationWhitelistExemptTargetUser` - The user to exempt. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns a new exemption entry. ## Get user exempt from collaboration domain restrictions Returns a users who has been exempt from the collaboration domain restrictions. This operation is performed by calling function `get_collaboration_whitelist_exempt_target_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id/). ``` client.collaboration_allowlist_exempt_targets.get_collaboration_whitelist_exempt_target_by_id( new_exempt_target.id ) ``` ### Arguments collaboration_whitelist_exempt_target_id `str` - The ID of the exemption to the list. Example: "984923" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns the user's exempted from the list of collaboration domains. ## Remove user from list of users exempt from domain restrictions Removes a user's exemption from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `delete_collaboration_whitelist_exempt_target_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id/). ``` client.collaboration_allowlist_exempt_targets.delete_collaboration_whitelist_exempt_target_by_id( exempt_target.id ) ``` ### Arguments collaboration_whitelist_exempt_target_id `str` - The ID of the exemption to the list. Example: "984923" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. A blank response is returned if the exemption was successfully deleted. --- ### CollaborationAllowlistExemptTargetsManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistExemptTargetsManager List users exempt from collaboration domain restrictions Create user exemption from collaboration… # CollaborationAllowlistExemptTargetsManager - [List users exempt from collaboration domain restrictions](#list-users-exempt-from-collaboration-domain-restrictions) - [Create user exemption from collaboration domain restrictions](#create-user-exemption-from-collaboration-domain-restrictions) - [Get user exempt from collaboration domain restrictions](#get-user-exempt-from-collaboration-domain-restrictions) - [Remove user from list of users exempt from domain restrictions](#remove-user-from-list-of-users-exempt-from-domain-restrictions) ## List users exempt from collaboration domain restrictions Returns a list of users who have been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargets`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets/). ``` try await client.collaborationAllowlistExemptTargets.getCollaborationWhitelistExemptTargets() ``` ### Arguments queryParams `GetCollaborationWhitelistExemptTargetsQueryParams` - Query parameters of getCollaborationWhitelistExemptTargets method headers `GetCollaborationWhitelistExemptTargetsHeaders` - Headers of getCollaborationWhitelistExemptTargets method ### Returns This function returns a value of type `CollaborationAllowlistExemptTargets`. Returns a collection of user exemptions. ## Create user exemption from collaboration domain restrictions Exempts a user from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `createCollaborationWhitelistExemptTarget`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-exempt-targets/). ``` try await client.collaborationAllowlistExemptTargets.createCollaborationWhitelistExemptTarget(requestBody: CreateCollaborationWhitelistExemptTargetRequestBody(user: CreateCollaborationWhitelistExemptTargetRequestBodyUserField(id: user.id))) ``` ### Arguments requestBody `CreateCollaborationWhitelistExemptTargetRequestBody` - Request body of createCollaborationWhitelistExemptTarget method headers `CreateCollaborationWhitelistExemptTargetHeaders` - Headers of createCollaborationWhitelistExemptTarget method ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns a new exemption entry. ## Get user exempt from collaboration domain restrictions Returns a users who has been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id/). ``` try await client.collaborationAllowlistExemptTargets.getCollaborationWhitelistExemptTargetById(collaborationWhitelistExemptTargetId: newExemptTarget.id!) ``` ### Arguments collaborationWhitelistExemptTargetId `String` - The ID of the exemption to the list. Example: "984923" headers `GetCollaborationWhitelistExemptTargetByIdHeaders` - Headers of getCollaborationWhitelistExemptTargetById method ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns the user's exempted from the list of collaboration domains. ## Remove user from list of users exempt from domain restrictions Removes a user's exemption from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `deleteCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id/). ``` try await client.collaborationAllowlistExemptTargets.deleteCollaborationWhitelistExemptTargetById(collaborationWhitelistExemptTargetId: exemptTarget.id!) ``` ### Arguments collaborationWhitelistExemptTargetId `String` - The ID of the exemption to the list. Example: "984923" headers `DeleteCollaborationWhitelistExemptTargetByIdHeaders` - Headers of deleteCollaborationWhitelistExemptTargetById method ### Returns This function returns a value of type ``. A blank response is returned if the exemption was successfully deleted. --- ### CollaborationAllowlistExemptTargetsManager **Type:** page | **Section:** Additional Resources CollaborationAllowlistExemptTargetsManager List users exempt from collaboration domain restrictions Create user exemption from collaboration… # CollaborationAllowlistExemptTargetsManager - [List users exempt from collaboration domain restrictions](#list-users-exempt-from-collaboration-domain-restrictions) - [Create user exemption from collaboration domain restrictions](#create-user-exemption-from-collaboration-domain-restrictions) - [Get user exempt from collaboration domain restrictions](#get-user-exempt-from-collaboration-domain-restrictions) - [Remove user from list of users exempt from domain restrictions](#remove-user-from-list-of-users-exempt-from-domain-restrictions) ## List users exempt from collaboration domain restrictions Returns a list of users who have been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargets`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets/). ``` client.getCollaborationAllowlistExemptTargets().getCollaborationWhitelistExemptTargets() ``` ### Arguments queryParams `GetCollaborationWhitelistExemptTargetsQueryParams` - Query parameters of getCollaborationWhitelistExemptTargets method headers `GetCollaborationWhitelistExemptTargetsHeaders` - Headers of getCollaborationWhitelistExemptTargets method ### Returns This function returns a value of type `CollaborationAllowlistExemptTargets`. Returns a collection of user exemptions. ## Create user exemption from collaboration domain restrictions Exempts a user from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `createCollaborationWhitelistExemptTarget`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-collaboration-whitelist-exempt-targets/). ``` client.getCollaborationAllowlistExemptTargets().createCollaborationWhitelistExemptTarget(new CreateCollaborationWhitelistExemptTargetRequestBody(new CreateCollaborationWhitelistExemptTargetRequestBodyUserField(user.getId()))) ``` ### Arguments requestBody `CreateCollaborationWhitelistExemptTargetRequestBody` - Request body of createCollaborationWhitelistExemptTarget method headers `CreateCollaborationWhitelistExemptTargetHeaders` - Headers of createCollaborationWhitelistExemptTarget method ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns a new exemption entry. ## Get user exempt from collaboration domain restrictions Returns a users who has been exempt from the collaboration domain restrictions. This operation is performed by calling function `getCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collaboration-whitelist-exempt-targets-id/). ``` client.getCollaborationAllowlistExemptTargets().getCollaborationWhitelistExemptTargetById(newExemptTarget.getId()) ``` ### Arguments collaborationWhitelistExemptTargetId `String` - The ID of the exemption to the list. Example: "984923" headers `GetCollaborationWhitelistExemptTargetByIdHeaders` - Headers of getCollaborationWhitelistExemptTargetById method ### Returns This function returns a value of type `CollaborationAllowlistExemptTarget`. Returns the user's exempted from the list of collaboration domains. ## Remove user from list of users exempt from domain restrictions Removes a user's exemption from the restrictions set out by the allowed list of domains for collaborations. This operation is performed by calling function `deleteCollaborationWhitelistExemptTargetById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-collaboration-whitelist-exempt-targets-id/). ``` client.getCollaborationAllowlistExemptTargets().deleteCollaborationWhitelistExemptTargetById(exemptTarget.getId()) ``` ### Arguments collaborationWhitelistExemptTargetId `String` - The ID of the exemption to the list. Example: "984923" headers `DeleteCollaborationWhitelistExemptTargetByIdHeaders` - Headers of deleteCollaborationWhitelistExemptTargetById method ### Returns This function returns a value of type `void`. A blank response is returned if the exemption was successfully deleted. --- ### CollectionsManager **Type:** page | **Section:** Additional Resources CollectionsManager List all collections List collection items Get collection by ID List all collections Retrieves all collections for a… # CollectionsManager - [List all collections](#list-all-collections) - [List collection items](#list-collection-items) - [Get collection by ID](#get-collection-by-id) ## List all collections Retrieves all collections for a given user. Currently, only the `favorites` collection is supported. This operation is performed by calling function `getCollections`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections/). ``` await client.collections.getCollections(); ``` ### Arguments queryParams `GetCollectionsQueryParams` - Query parameters of getCollections method headersInput `GetCollectionsHeadersInput` - Headers of getCollections method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `Collections`. Returns all collections for the given user. ## List collection items Retrieves the files and/or folders contained within this collection. This operation is performed by calling function `getCollectionItems`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id-items/). ``` await client.collections.getCollectionItems(favouriteCollection.id!); ``` ### Arguments collectionId `string` - The ID of the collection. Example: "926489" optionalsInput `GetCollectionItemsOptionalsInput` ### Returns This function returns a value of type `ItemsOffsetPaginated`. Returns an array of items in the collection. ## Get collection by ID Retrieves a collection by its ID. This operation is performed by calling function `getCollectionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id/). ``` await client.collections.getCollectionById(collections.entries![0].id!); ``` ### Arguments collectionId `string` - The ID of the collection. Example: "926489" optionalsInput `GetCollectionByIdOptionalsInput` ### Returns This function returns a value of type `Collection`. Returns an array of items in the collection. --- ### CollectionsManager **Type:** page | **Section:** Additional Resources CollectionsManager List all collections List collection items Get collection by ID List all collections Retrieves all collections for a… # CollectionsManager - [List all collections](#list-all-collections) - [List collection items](#list-collection-items) - [Get collection by ID](#get-collection-by-id) ## List all collections Retrieves all collections for a given user. Currently, only the `favorites` collection is supported. This operation is performed by calling function `getCollections`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections/). *Currently we don't have an example for calling `getCollections` in integration tests* ### Arguments queryParams `GetCollectionsQueryParams` - Query parameters of getCollections method headers `GetCollectionsHeaders` - Headers of getCollections method ### Returns This function returns a value of type `Collections`. Returns all collections for the given user. ## List collection items Retrieves the files and/or folders contained within this collection. This operation is performed by calling function `getCollectionItems`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id-items/). *Currently we don't have an example for calling `getCollectionItems` in integration tests* ### Arguments collectionId `String` - The ID of the collection. Example: "926489" queryParams `GetCollectionItemsQueryParams` - Query parameters of getCollectionItems method headers `GetCollectionItemsHeaders` - Headers of getCollectionItems method ### Returns This function returns a value of type `ItemsOffsetPaginated`. Returns an array of items in the collection. ## Get collection by ID Retrieves a collection by its ID. This operation is performed by calling function `getCollectionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id/). *Currently we don't have an example for calling `getCollectionById` in integration tests* ### Arguments collectionId `String` - The ID of the collection. Example: "926489" headers `GetCollectionByIdHeaders` - Headers of getCollectionById method ### Returns This function returns a value of type `Collection`. Returns an array of items in the collection. --- ### CollectionsManager **Type:** page | **Section:** Additional Resources CollectionsManager List all collections List collection items Get collection by ID List all collections Retrieves all collections for a… # CollectionsManager - [List all collections](#list-all-collections) - [List collection items](#list-collection-items) - [Get collection by ID](#get-collection-by-id) ## List all collections Retrieves all collections for a given user. Currently, only the `favorites` collection is supported. This operation is performed by calling function `get_collections`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections/). ``` client.collections.get_collections() ``` ### Arguments fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. offset `Optional[int]` - The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Collections`. Returns all collections for the given user. ## List collection items Retrieves the files and/or folders contained within this collection. This operation is performed by calling function `get_collection_items`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id-items/). ``` client.collections.get_collection_items(favourite_collection.id) ``` ### Arguments collection_id `str` - The ID of the collection. Example: "926489" fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. offset `Optional[int]` - The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ItemsOffsetPaginated`. Returns an array of items in the collection. ## Get collection by ID Retrieves a collection by its ID. This operation is performed by calling function `get_collection_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id/). ``` client.collections.get_collection_by_id(collections.entries[0].id) ``` ### Arguments collection_id `str` - The ID of the collection. Example: "926489" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Collection`. Returns an array of items in the collection. --- ### CollectionsManager **Type:** page | **Section:** Additional Resources CollectionsManager List all collections List collection items Get collection by ID List all collections Retrieves all collections for a… # CollectionsManager - [List all collections](#list-all-collections) - [List collection items](#list-collection-items) - [Get collection by ID](#get-collection-by-id) ## List all collections Retrieves all collections for a given user. Currently, only the `favorites` collection is supported. This operation is performed by calling function `getCollections`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections/). ``` try await client.collections.getCollections() ``` ### Arguments queryParams `GetCollectionsQueryParams` - Query parameters of getCollections method headers `GetCollectionsHeaders` - Headers of getCollections method ### Returns This function returns a value of type `Collections`. Returns all collections for the given user. ## List collection items Retrieves the files and/or folders contained within this collection. This operation is performed by calling function `getCollectionItems`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id-items/). ``` try await client.collections.getCollectionItems(collectionId: favouriteCollection.id!) ``` ### Arguments collectionId `String` - The ID of the collection. Example: "926489" queryParams `GetCollectionItemsQueryParams` - Query parameters of getCollectionItems method headers `GetCollectionItemsHeaders` - Headers of getCollectionItems method ### Returns This function returns a value of type `ItemsOffsetPaginated`. Returns an array of items in the collection. ## Get collection by ID Retrieves a collection by its ID. This operation is performed by calling function `getCollectionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id/). ``` try await client.collections.getCollectionById(collectionId: collections.entries![0].id!) ``` ### Arguments collectionId `String` - The ID of the collection. Example: "926489" headers `GetCollectionByIdHeaders` - Headers of getCollectionById method ### Returns This function returns a value of type `Collection`. Returns an array of items in the collection. --- ### CollectionsManager **Type:** page | **Section:** Additional Resources CollectionsManager List all collections List collection items Get collection by ID List all collections Retrieves all collections for a… # CollectionsManager - [List all collections](#list-all-collections) - [List collection items](#list-collection-items) - [Get collection by ID](#get-collection-by-id) ## List all collections Retrieves all collections for a given user. Currently, only the `favorites` collection is supported. This operation is performed by calling function `getCollections`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections/). ``` await client.collections.getCollections(); ``` ### Arguments queryParams `GetCollectionsQueryParams` - Query parameters of getCollections method headersInput `GetCollectionsHeadersInput` - Headers of getCollections method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `Collections`. Returns all collections for the given user. ## List collection items Retrieves the files and/or folders contained within this collection. This operation is performed by calling function `getCollectionItems`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id-items/). ``` await client.collections.getCollectionItems(favouriteCollection.id!); ``` ### Arguments collectionId `string` - The ID of the collection. Example: "926489" optionalsInput `GetCollectionItemsOptionalsInput` ### Returns This function returns a value of type `ItemsOffsetPaginated`. Returns an array of items in the collection. ## Get collection by ID Retrieves a collection by its ID. This operation is performed by calling function `getCollectionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id/). ``` await client.collections.getCollectionById(collections.entries![0].id!); ``` ### Arguments collectionId `string` - The ID of the collection. Example: "926489" optionalsInput `GetCollectionByIdOptionalsInput` ### Returns This function returns a value of type `Collection`. Returns an array of items in the collection. --- ### CollectionsManager **Type:** page | **Section:** Additional Resources CollectionsManager List all collections List collection items Get collection by ID List all collections Retrieves all collections for a… # CollectionsManager - [List all collections](#list-all-collections) - [List collection items](#list-collection-items) - [Get collection by ID](#get-collection-by-id) ## List all collections Retrieves all collections for a given user. Currently, only the `favorites` collection is supported. This operation is performed by calling function `get_collections`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections/). ``` client.collections.get_collections() ``` ### Arguments fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. offset `Optional[int]` - The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Collections`. Returns all collections for the given user. ## List collection items Retrieves the files and/or folders contained within this collection. This operation is performed by calling function `get_collection_items`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id-items/). ``` client.collections.get_collection_items(favourite_collection.id) ``` ### Arguments collection_id `str` - The ID of the collection. Example: "926489" fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. offset `Optional[int]` - The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response. limit `Optional[int]` - The maximum number of items to return per page. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `ItemsOffsetPaginated`. Returns an array of items in the collection. ## Get collection by ID Retrieves a collection by its ID. This operation is performed by calling function `get_collection_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id/). ``` client.collections.get_collection_by_id(collections.entries[0].id) ``` ### Arguments collection_id `str` - The ID of the collection. Example: "926489" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Collection`. Returns an array of items in the collection. --- ### CollectionsManager **Type:** page | **Section:** Additional Resources CollectionsManager List all collections List collection items Get collection by ID List all collections Retrieves all collections for a… # CollectionsManager - [List all collections](#list-all-collections) - [List collection items](#list-collection-items) - [Get collection by ID](#get-collection-by-id) ## List all collections Retrieves all collections for a given user. Currently, only the `favorites` collection is supported. This operation is performed by calling function `getCollections`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections/). ``` try await client.collections.getCollections() ``` ### Arguments queryParams `GetCollectionsQueryParams` - Query parameters of getCollections method headers `GetCollectionsHeaders` - Headers of getCollections method ### Returns This function returns a value of type `Collections`. Returns all collections for the given user. ## List collection items Retrieves the files and/or folders contained within this collection. This operation is performed by calling function `getCollectionItems`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id-items/). ``` try await client.collections.getCollectionItems(collectionId: favouriteCollection.id!) ``` ### Arguments collectionId `String` - The ID of the collection. Example: "926489" queryParams `GetCollectionItemsQueryParams` - Query parameters of getCollectionItems method headers `GetCollectionItemsHeaders` - Headers of getCollectionItems method ### Returns This function returns a value of type `ItemsOffsetPaginated`. Returns an array of items in the collection. ## Get collection by ID Retrieves a collection by its ID. This operation is performed by calling function `getCollectionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id/). ``` try await client.collections.getCollectionById(collectionId: collections.entries![0].id!) ``` ### Arguments collectionId `String` - The ID of the collection. Example: "926489" headers `GetCollectionByIdHeaders` - Headers of getCollectionById method ### Returns This function returns a value of type `Collection`. Returns an array of items in the collection. --- ### CollectionsManager **Type:** page | **Section:** Additional Resources CollectionsManager List all collections List collection items Get collection by ID List all collections Retrieves all collections for a… # CollectionsManager - [List all collections](#list-all-collections) - [List collection items](#list-collection-items) - [Get collection by ID](#get-collection-by-id) ## List all collections Retrieves all collections for a given user. Currently, only the `favorites` collection is supported. This operation is performed by calling function `getCollections`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections/). *Currently we don't have an example for calling `getCollections` in integration tests* ### Arguments queryParams `GetCollectionsQueryParams` - Query parameters of getCollections method headers `GetCollectionsHeaders` - Headers of getCollections method ### Returns This function returns a value of type `Collections`. Returns all collections for the given user. ## List collection items Retrieves the files and/or folders contained within this collection. This operation is performed by calling function `getCollectionItems`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id-items/). *Currently we don't have an example for calling `getCollectionItems` in integration tests* ### Arguments collectionId `String` - The ID of the collection. Example: "926489" queryParams `GetCollectionItemsQueryParams` - Query parameters of getCollectionItems method headers `GetCollectionItemsHeaders` - Headers of getCollectionItems method ### Returns This function returns a value of type `ItemsOffsetPaginated`. Returns an array of items in the collection. ## Get collection by ID Retrieves a collection by its ID. This operation is performed by calling function `getCollectionById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-collections-id/). *Currently we don't have an example for calling `getCollectionById` in integration tests* ### Arguments collectionId `String` - The ID of the collection. Example: "926489" headers `GetCollectionByIdHeaders` - Headers of getCollectionById method ### Returns This function returns a value of type `Collection`. Returns an array of items in the collection. --- ### CommentsManager **Type:** page | **Section:** Additional Resources CommentsManager List file comments Get comment Update comment Remove comment Create comment List file comments Retrieves a list of comments… # CommentsManager - [List file comments](#list-file-comments) - [Get comment](#get-comment) - [Update comment](#update-comment) - [Remove comment](#remove-comment) - [Create comment](#create-comment) ## List file comments Retrieves a list of comments for a file. This operation is performed by calling function `getFileComments`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-comments/). ``` await client.comments.getFileComments(fileId); ``` ### Arguments fileId `string` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" optionalsInput `GetFileCommentsOptionalsInput` ### Returns This function returns a value of type `Comments`. Returns a collection of comment objects. If there are no comments on this file an empty collection will be returned. ## Get comment Retrieves the message and metadata for a specific comment, as well as information on the user who created the comment. This operation is performed by calling function `getCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-comments-id/). ``` await client.comments.getCommentById(newComment.id!); ``` ### Arguments commentId `string` - The ID of the comment. Example: "12345" optionalsInput `GetCommentByIdOptionalsInput` ### Returns This function returns a value of type `CommentFull`. Returns a full comment object. ## Update comment Update the message of a comment. This operation is performed by calling function `updateCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-comments-id/). ``` await client.comments.updateCommentById(newReplyComment.id!, { requestBody: { message: newMessage } satisfies UpdateCommentByIdRequestBody, } satisfies UpdateCommentByIdOptionalsInput); ``` ### Arguments commentId `string` - The ID of the comment. Example: "12345" optionalsInput `UpdateCommentByIdOptionalsInput` ### Returns This function returns a value of type `CommentFull`. Returns the updated comment object. ## Remove comment Permanently deletes a comment. This operation is performed by calling function `deleteCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-comments-id/). ``` await client.comments.deleteCommentById(newComment.id!); ``` ### Arguments commentId `string` - The ID of the comment. Example: "12345" optionalsInput `DeleteCommentByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. Returns an empty response when the comment has been deleted. ## Create comment Adds a comment by the user to a specific file, or as a reply to an other comment. This operation is performed by calling function `createComment`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-comments/). ``` await client.comments.createComment({ message: message, item: { id: fileId, type: 'file' as CreateCommentRequestBodyItemTypeField, } satisfies CreateCommentRequestBodyItemField, } satisfies CreateCommentRequestBody); ``` ### Arguments requestBody `CreateCommentRequestBody` - Request body of createComment method optionalsInput `CreateCommentOptionalsInput` ### Returns This function returns a value of type `CommentFull`. Returns the newly created comment object. Not all available fields are returned by default. Use the [fields](#param-fields) query parameter to explicitly request any specific fields. --- ### CommentsManager **Type:** page | **Section:** Additional Resources CommentsManager List file comments Get comment Update comment Remove comment Create comment List file comments Retrieves a list of comments… # CommentsManager - [List file comments](#list-file-comments) - [Get comment](#get-comment) - [Update comment](#update-comment) - [Remove comment](#remove-comment) - [Create comment](#create-comment) ## List file comments Retrieves a list of comments for a file. This operation is performed by calling function `getFileComments`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-comments/). ``` client.getComments().getFileComments(fileId) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `GetFileCommentsQueryParams` - Query parameters of getFileComments method headers `GetFileCommentsHeaders` - Headers of getFileComments method ### Returns This function returns a value of type `Comments`. Returns a collection of comment objects. If there are no comments on this file an empty collection will be returned. ## Get comment Retrieves the message and metadata for a specific comment, as well as information on the user who created the comment. This operation is performed by calling function `getCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-comments-id/). ``` client.getComments().getCommentById(newComment.getId()) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" queryParams `GetCommentByIdQueryParams` - Query parameters of getCommentById method headers `GetCommentByIdHeaders` - Headers of getCommentById method ### Returns This function returns a value of type `CommentFull`. Returns a full comment object. ## Update comment Update the message of a comment. This operation is performed by calling function `updateCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-comments-id/). ``` client.getComments().updateCommentById(newReplyComment.getId(), new UpdateCommentByIdRequestBody.Builder().message(newMessage).build()) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" requestBody `UpdateCommentByIdRequestBody` - Request body of updateCommentById method queryParams `UpdateCommentByIdQueryParams` - Query parameters of updateCommentById method headers `UpdateCommentByIdHeaders` - Headers of updateCommentById method ### Returns This function returns a value of type `CommentFull`. Returns the updated comment object. ## Remove comment Permanently deletes a comment. This operation is performed by calling function `deleteCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-comments-id/). ``` client.getComments().deleteCommentById(newComment.getId()) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" headers `DeleteCommentByIdHeaders` - Headers of deleteCommentById method ### Returns This function returns a value of type `void`. Returns an empty response when the comment has been deleted. ## Create comment Adds a comment by the user to a specific file, or as a reply to an other comment. This operation is performed by calling function `createComment`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-comments/). ``` client.getComments().createComment(new CreateCommentRequestBody(message, new CreateCommentRequestBodyItemField(fileId, CreateCommentRequestBodyItemTypeField.FILE))) ``` ### Arguments requestBody `CreateCommentRequestBody` - Request body of createComment method queryParams `CreateCommentQueryParams` - Query parameters of createComment method headers `CreateCommentHeaders` - Headers of createComment method ### Returns This function returns a value of type `CommentFull`. Returns the newly created comment object. Not all available fields are returned by default. Use the [fields](#param-fields) query parameter to explicitly request any specific fields. --- ### CommentsManager **Type:** page | **Section:** Additional Resources CommentsManager List file comments Get comment Update comment Remove comment Create comment List file comments Retrieves a list of comments… # CommentsManager - [List file comments](#list-file-comments) - [Get comment](#get-comment) - [Update comment](#update-comment) - [Remove comment](#remove-comment) - [Create comment](#create-comment) ## List file comments Retrieves a list of comments for a file. This operation is performed by calling function `get_file_comments`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-comments/). ``` client.comments.get_file_comments(file_id) ``` ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. limit `Optional[int]` - The maximum number of items to return per page. offset `Optional[int]` - The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Comments`. Returns a collection of comment objects. If there are no comments on this file an empty collection will be returned. ## Get comment Retrieves the message and metadata for a specific comment, as well as information on the user who created the comment. This operation is performed by calling function `get_comment_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-comments-id/). ``` client.comments.get_comment_by_id(new_comment.id) ``` ### Arguments comment_id `str` - The ID of the comment. Example: "12345" fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CommentFull`. Returns a full comment object. ## Update comment Update the message of a comment. This operation is performed by calling function `update_comment_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-comments-id/). ``` client.comments.update_comment_by_id(new_reply_comment.id, message=new_message) ``` ### Arguments comment_id `str` - The ID of the comment. Example: "12345" message `Optional[str]` - The text of the comment to update. fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CommentFull`. Returns the updated comment object. ## Remove comment Permanently deletes a comment. This operation is performed by calling function `delete_comment_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-comments-id/). ``` client.comments.delete_comment_by_id(new_comment.id) ``` ### Arguments comment_id `str` - The ID of the comment. Example: "12345" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Returns an empty response when the comment has been deleted. ## Create comment Adds a comment by the user to a specific file, or as a reply to an other comment. This operation is performed by calling function `create_comment`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-comments/). ``` client.comments.create_comment( message, CreateCommentItem(id=file_id, type=CreateCommentItemTypeField.FILE) ) ``` ### Arguments message `str` - The text of the comment. To mention a user, use the `tagged_message` parameter instead. tagged_message `Optional[str]` - The text of the comment, including `@[user_id:name]` somewhere in the message to mention another user, which will send them an email notification, letting them know they have been mentioned. The `user_id` is the target user's ID, where the `name` can be any custom phrase. In the Box UI this name will link to the user's profile. If you are not mentioning another user, use `message` instead. item `CreateCommentItem` - The item to attach the comment to. fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CommentFull`. Returns the newly created comment object. Not all available fields are returned by default. Use the [fields](#param-fields) query parameter to explicitly request any specific fields. --- ### CommentsManager **Type:** page | **Section:** Additional Resources CommentsManager List file comments Get comment Update comment Remove comment Create comment List file comments Retrieves a list of comments… # CommentsManager - [List file comments](#list-file-comments) - [Get comment](#get-comment) - [Update comment](#update-comment) - [Remove comment](#remove-comment) - [Create comment](#create-comment) ## List file comments Retrieves a list of comments for a file. This operation is performed by calling function `getFileComments`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-comments/). ``` try await client.comments.getFileComments(fileId: fileId) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `GetFileCommentsQueryParams` - Query parameters of getFileComments method headers `GetFileCommentsHeaders` - Headers of getFileComments method ### Returns This function returns a value of type `Comments`. Returns a collection of comment objects. If there are no comments on this file an empty collection will be returned. ## Get comment Retrieves the message and metadata for a specific comment, as well as information on the user who created the comment. This operation is performed by calling function `getCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-comments-id/). ``` try await client.comments.getCommentById(commentId: newComment.id!) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" queryParams `GetCommentByIdQueryParams` - Query parameters of getCommentById method headers `GetCommentByIdHeaders` - Headers of getCommentById method ### Returns This function returns a value of type `CommentFull`. Returns a full comment object. ## Update comment Update the message of a comment. This operation is performed by calling function `updateCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-comments-id/). ``` try await client.comments.updateCommentById(commentId: newReplyComment.id!, requestBody: UpdateCommentByIdRequestBody(message: newMessage)) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" requestBody `UpdateCommentByIdRequestBody` - Request body of updateCommentById method queryParams `UpdateCommentByIdQueryParams` - Query parameters of updateCommentById method headers `UpdateCommentByIdHeaders` - Headers of updateCommentById method ### Returns This function returns a value of type `CommentFull`. Returns the updated comment object. ## Remove comment Permanently deletes a comment. This operation is performed by calling function `deleteCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-comments-id/). ``` try await client.comments.deleteCommentById(commentId: newComment.id!) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" headers `DeleteCommentByIdHeaders` - Headers of deleteCommentById method ### Returns This function returns a value of type ``. Returns an empty response when the comment has been deleted. ## Create comment Adds a comment by the user to a specific file, or as a reply to an other comment. This operation is performed by calling function `createComment`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-comments/). ``` try await client.comments.createComment(requestBody: CreateCommentRequestBody(message: message, item: CreateCommentRequestBodyItemField(id: fileId, type: CreateCommentRequestBodyItemTypeField.file))) ``` ### Arguments requestBody `CreateCommentRequestBody` - Request body of createComment method queryParams `CreateCommentQueryParams` - Query parameters of createComment method headers `CreateCommentHeaders` - Headers of createComment method ### Returns This function returns a value of type `CommentFull`. Returns the newly created comment object. Not all available fields are returned by default. Use the [fields](#param-fields) query parameter to explicitly request any specific fields. --- ### CommentsManager **Type:** page | **Section:** Additional Resources CommentsManager List file comments Get comment Update comment Remove comment Create comment List file comments Retrieves a list of comments… # CommentsManager - [List file comments](#list-file-comments) - [Get comment](#get-comment) - [Update comment](#update-comment) - [Remove comment](#remove-comment) - [Create comment](#create-comment) ## List file comments Retrieves a list of comments for a file. This operation is performed by calling function `getFileComments`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-comments/). ``` await client.comments.getFileComments(fileId); ``` ### Arguments fileId `string` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" optionalsInput `GetFileCommentsOptionalsInput` ### Returns This function returns a value of type `Comments`. Returns a collection of comment objects. If there are no comments on this file an empty collection will be returned. ## Get comment Retrieves the message and metadata for a specific comment, as well as information on the user who created the comment. This operation is performed by calling function `getCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-comments-id/). ``` await client.comments.getCommentById(newComment.id!); ``` ### Arguments commentId `string` - The ID of the comment. Example: "12345" optionalsInput `GetCommentByIdOptionalsInput` ### Returns This function returns a value of type `CommentFull`. Returns a full comment object. ## Update comment Update the message of a comment. This operation is performed by calling function `updateCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-comments-id/). ``` await client.comments.updateCommentById(newReplyComment.id!, { requestBody: { message: newMessage } satisfies UpdateCommentByIdRequestBody, } satisfies UpdateCommentByIdOptionalsInput); ``` ### Arguments commentId `string` - The ID of the comment. Example: "12345" optionalsInput `UpdateCommentByIdOptionalsInput` ### Returns This function returns a value of type `CommentFull`. Returns the updated comment object. ## Remove comment Permanently deletes a comment. This operation is performed by calling function `deleteCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-comments-id/). ``` await client.comments.deleteCommentById(newComment.id!); ``` ### Arguments commentId `string` - The ID of the comment. Example: "12345" optionalsInput `DeleteCommentByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. Returns an empty response when the comment has been deleted. ## Create comment Adds a comment by the user to a specific file, or as a reply to an other comment. This operation is performed by calling function `createComment`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-comments/). ``` await client.comments.createComment({ message: message, item: { id: fileId, type: 'file' as CreateCommentRequestBodyItemTypeField, } satisfies CreateCommentRequestBodyItemField, } satisfies CreateCommentRequestBody); ``` ### Arguments requestBody `CreateCommentRequestBody` - Request body of createComment method optionalsInput `CreateCommentOptionalsInput` ### Returns This function returns a value of type `CommentFull`. Returns the newly created comment object. Not all available fields are returned by default. Use the [fields](#param-fields) query parameter to explicitly request any specific fields. --- ### CommentsManager **Type:** page | **Section:** Additional Resources CommentsManager List file comments Get comment Update comment Remove comment Create comment List file comments Retrieves a list of comments… # CommentsManager - [List file comments](#list-file-comments) - [Get comment](#get-comment) - [Update comment](#update-comment) - [Remove comment](#remove-comment) - [Create comment](#create-comment) ## List file comments Retrieves a list of comments for a file. This operation is performed by calling function `get_file_comments`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-comments/). ``` client.comments.get_file_comments(file_id) ``` ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. limit `Optional[int]` - The maximum number of items to return per page. offset `Optional[int]` - The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Comments`. Returns a collection of comment objects. If there are no comments on this file an empty collection will be returned. ## Get comment Retrieves the message and metadata for a specific comment, as well as information on the user who created the comment. This operation is performed by calling function `get_comment_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-comments-id/). ``` client.comments.get_comment_by_id(new_comment.id) ``` ### Arguments comment_id `str` - The ID of the comment. Example: "12345" fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CommentFull`. Returns a full comment object. ## Update comment Update the message of a comment. This operation is performed by calling function `update_comment_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-comments-id/). ``` client.comments.update_comment_by_id(new_reply_comment.id, message=new_message) ``` ### Arguments comment_id `str` - The ID of the comment. Example: "12345" message `Optional[str]` - The text of the comment to update. fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CommentFull`. Returns the updated comment object. ## Remove comment Permanently deletes a comment. This operation is performed by calling function `delete_comment_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-comments-id/). ``` client.comments.delete_comment_by_id(new_comment.id) ``` ### Arguments comment_id `str` - The ID of the comment. Example: "12345" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Returns an empty response when the comment has been deleted. ## Create comment Adds a comment by the user to a specific file, or as a reply to an other comment. This operation is performed by calling function `create_comment`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-comments/). ``` client.comments.create_comment( message, CreateCommentItem(id=file_id, type=CreateCommentItemTypeField.FILE) ) ``` ### Arguments message `str` - The text of the comment. To mention a user, use the `tagged_message` parameter instead. tagged_message `Optional[str]` - The text of the comment, including `@[user_id:name]` somewhere in the message to mention another user, which will send them an email notification, letting them know they have been mentioned. The `user_id` is the target user's ID, where the `name` can be any custom phrase. In the Box UI this name will link to the user's profile. If you are not mentioning another user, use `message` instead. item `CreateCommentItem` - The item to attach the comment to. fields `Optional[List[str]]` - A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `CommentFull`. Returns the newly created comment object. Not all available fields are returned by default. Use the [fields](#param-fields) query parameter to explicitly request any specific fields. --- ### CommentsManager **Type:** page | **Section:** Additional Resources CommentsManager List file comments Get comment Update comment Remove comment Create comment List file comments Retrieves a list of comments… # CommentsManager - [List file comments](#list-file-comments) - [Get comment](#get-comment) - [Update comment](#update-comment) - [Remove comment](#remove-comment) - [Create comment](#create-comment) ## List file comments Retrieves a list of comments for a file. This operation is performed by calling function `getFileComments`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-comments/). ``` try await client.comments.getFileComments(fileId: fileId) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `GetFileCommentsQueryParams` - Query parameters of getFileComments method headers `GetFileCommentsHeaders` - Headers of getFileComments method ### Returns This function returns a value of type `Comments`. Returns a collection of comment objects. If there are no comments on this file an empty collection will be returned. ## Get comment Retrieves the message and metadata for a specific comment, as well as information on the user who created the comment. This operation is performed by calling function `getCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-comments-id/). ``` try await client.comments.getCommentById(commentId: newComment.id!) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" queryParams `GetCommentByIdQueryParams` - Query parameters of getCommentById method headers `GetCommentByIdHeaders` - Headers of getCommentById method ### Returns This function returns a value of type `CommentFull`. Returns a full comment object. ## Update comment Update the message of a comment. This operation is performed by calling function `updateCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-comments-id/). ``` try await client.comments.updateCommentById(commentId: newReplyComment.id!, requestBody: UpdateCommentByIdRequestBody(message: newMessage)) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" requestBody `UpdateCommentByIdRequestBody` - Request body of updateCommentById method queryParams `UpdateCommentByIdQueryParams` - Query parameters of updateCommentById method headers `UpdateCommentByIdHeaders` - Headers of updateCommentById method ### Returns This function returns a value of type `CommentFull`. Returns the updated comment object. ## Remove comment Permanently deletes a comment. This operation is performed by calling function `deleteCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-comments-id/). ``` try await client.comments.deleteCommentById(commentId: newComment.id!) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" headers `DeleteCommentByIdHeaders` - Headers of deleteCommentById method ### Returns This function returns a value of type ``. Returns an empty response when the comment has been deleted. ## Create comment Adds a comment by the user to a specific file, or as a reply to an other comment. This operation is performed by calling function `createComment`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-comments/). ``` try await client.comments.createComment(requestBody: CreateCommentRequestBody(message: message, item: CreateCommentRequestBodyItemField(id: fileId, type: CreateCommentRequestBodyItemTypeField.file))) ``` ### Arguments requestBody `CreateCommentRequestBody` - Request body of createComment method queryParams `CreateCommentQueryParams` - Query parameters of createComment method headers `CreateCommentHeaders` - Headers of createComment method ### Returns This function returns a value of type `CommentFull`. Returns the newly created comment object. Not all available fields are returned by default. Use the [fields](#param-fields) query parameter to explicitly request any specific fields. --- ### CommentsManager **Type:** page | **Section:** Additional Resources CommentsManager List file comments Get comment Update comment Remove comment Create comment List file comments Retrieves a list of comments… # CommentsManager - [List file comments](#list-file-comments) - [Get comment](#get-comment) - [Update comment](#update-comment) - [Remove comment](#remove-comment) - [Create comment](#create-comment) ## List file comments Retrieves a list of comments for a file. This operation is performed by calling function `getFileComments`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-comments/). ``` client.getComments().getFileComments(fileId) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `GetFileCommentsQueryParams` - Query parameters of getFileComments method headers `GetFileCommentsHeaders` - Headers of getFileComments method ### Returns This function returns a value of type `Comments`. Returns a collection of comment objects. If there are no comments on this file an empty collection will be returned. ## Get comment Retrieves the message and metadata for a specific comment, as well as information on the user who created the comment. This operation is performed by calling function `getCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-comments-id/). ``` client.getComments().getCommentById(newComment.getId()) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" queryParams `GetCommentByIdQueryParams` - Query parameters of getCommentById method headers `GetCommentByIdHeaders` - Headers of getCommentById method ### Returns This function returns a value of type `CommentFull`. Returns a full comment object. ## Update comment Update the message of a comment. This operation is performed by calling function `updateCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/put-comments-id/). ``` client.getComments().updateCommentById(newReplyComment.getId(), new UpdateCommentByIdRequestBody.Builder().message(newMessage).build()) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" requestBody `UpdateCommentByIdRequestBody` - Request body of updateCommentById method queryParams `UpdateCommentByIdQueryParams` - Query parameters of updateCommentById method headers `UpdateCommentByIdHeaders` - Headers of updateCommentById method ### Returns This function returns a value of type `CommentFull`. Returns the updated comment object. ## Remove comment Permanently deletes a comment. This operation is performed by calling function `deleteCommentById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-comments-id/). ``` client.getComments().deleteCommentById(newComment.getId()) ``` ### Arguments commentId `String` - The ID of the comment. Example: "12345" headers `DeleteCommentByIdHeaders` - Headers of deleteCommentById method ### Returns This function returns a value of type `void`. Returns an empty response when the comment has been deleted. ## Create comment Adds a comment by the user to a specific file, or as a reply to an other comment. This operation is performed by calling function `createComment`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-comments/). ``` client.getComments().createComment(new CreateCommentRequestBody(message, new CreateCommentRequestBodyItemField(fileId, CreateCommentRequestBodyItemTypeField.FILE))) ``` ### Arguments requestBody `CreateCommentRequestBody` - Request body of createComment method queryParams `CreateCommentQueryParams` - Query parameters of createComment method headers `CreateCommentHeaders` - Headers of createComment method ### Returns This function returns a value of type `CommentFull`. Returns the newly created comment object. Not all available fields are returned by default. Use the [fields](#param-fields) query parameter to explicitly request any specific fields. --- ### Configuration **Type:** page | **Section:** Additional Resources Configuration Max retry attempts Custom retry strategy Max retry attempts The default maximum number of retries in case of failed API call… # Configuration - [Max retry attempts](#max-retry-attempts) - [Custom retry strategy](#custom-retry-strategy) ## Max retry attempts The default maximum number of retries in case of failed API call is 5. To change this number you should initialize `BoxRetryStrategy` with the new value and pass it to `NetworkSession`. ``` const auth = new BoxDeveloperTokenAuth({ token: 'DEVELOPER_TOKEN_GOES_HERE' }); const networkSession = new NetworkSession({ retryStrategy: new BoxRetryStrategy({ maxAttempts: 6 }), }); const client = new BoxClient({ auth, networkSession }); ``` ## Custom retry strategy You can also implement your own retry strategy by subclassing `RetryStrategy` and overriding `shouldRetry` and `retryAfter` methods. This example shows how to set custom strategy that retries on 5xx status codes and waits 1 second between retries. ``` export class CustomRetryStrategy implements RetryStrategy { async shouldRetry( fetchOptions: FetchOptions, fetchResponse: FetchResponse, attemptNumber: number, ): Promise<boolean> { return false; } retryAfter( fetchOptions: FetchOptions, fetchResponse: FetchResponse, attemptNumber: number, ): number { return 1.0; } } const auth = new BoxDeveloperTokenAuth({ token: 'DEVELOPER_TOKEN_GOES_HERE' }); const networkSession = new NetworkSession({ retryStrategy: new CustomRetryStrategy(), }); const client = new BoxClient({ auth, networkSession }); ``` --- ### Configuration **Type:** page | **Section:** Additional Resources Configuration Configuration Max retry attempts Custom retry strategy Max retry attempts The default maximum number of retries in case of… # Configuration [Configuration](#configuration) - [Max retry attempts](#max-retry-attempts) - [Custom retry strategy](#custom-retry-strategy) ## Max retry attempts The default maximum number of retries in case of failed API call is 5. To change this number you should initialize `BoxRetryStrategy` with the new value and pass it to `NetworkSession`. ``` BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN"); NetworkSession session = new NetworkSession.Builder() .retryStrategy(new BoxRetryStrategy.Builder().maxAttempts(3).build()) .build(); BoxClient client = new BoxClient.Builder(auth) .networkSession(session) .build(); ``` ## Custom retry strategy You can also implement your own retry strategy by subclassing `RetryStrategy` and overriding `shouldRetry` and `retryAfter` methods. This example shows how to set custom strategy that retries on 5xx status codes and waits 1 second between retries. ``` BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN"); RetryStrategy customRetryStrategy = new RetryStrategy() { @Override public boolean shouldRetry(FetchOptions fetchOptions, FetchResponse fetchResponse, int attemptNumber) { return fetchResponse.status >= 500; } @Override public double retryAfter(FetchOptions fetchOptions, FetchResponse fetchResponse, int attemptNumber) { return 1.0; } }; NetworkSession session = new NetworkSession.Builder() .retryStrategy(customRetryStrategy) .build(); BoxClient client = new BoxClient.Builder(auth) .networkSession(session) .build(); ``` --- ### Configuration **Type:** page | **Section:** Additional Resources Configuration Max retry attempts Custom retry strategy Max retry attempts The default maximum number of retries in case of failed API call… # Configuration - [Max retry attempts](#max-retry-attempts) - [Custom retry strategy](#custom-retry-strategy) ## Max retry attempts The default maximum number of retries in case of failed API call is 5. To change this number you should initialize `BoxRetryStrategy` with the new value and pass it to `NetworkSession`. ``` from box_sdk_gen import ( BoxClient, BoxDeveloperTokenAuth, NetworkSession, BoxRetryStrategy, ) auth = BoxDeveloperTokenAuth(token="DEVELOPER_TOKEN_GOES_HERE") network_session = NetworkSession(retry_strategy=BoxRetryStrategy(max_attempts=6)) client = BoxClient(auth=auth, network_session=network_session) ``` ## Custom retry strategy You can also implement your own retry strategy by subclassing `RetryStrategy` and overriding `should_retry` and `retry_after` methods. This example shows how to set custom strategy that retries on 5xx status codes and waits 1 second between retries. ``` from box_sdk_gen import ( BoxClient, BoxDeveloperTokenAuth, NetworkSession, RetryStrategy, FetchOptions, FetchResponse, ) class CustomRetryStrategy(RetryStrategy): def should_retry( self, fetch_options: FetchOptions, fetch_response: FetchResponse, attempt_number: int, ) -> bool: return fetch_response.status_code >= 500 def retry_after( self, fetch_options: FetchOptions, fetch_response: FetchResponse, attempt_number: int, ) -> float: return 1.0 auth = BoxDeveloperTokenAuth(token="DEVELOPER_TOKEN_GOES_HERE") network_session = NetworkSession(retry_strategy=CustomRetryStrategy()) client = BoxClient(auth=auth, network_session=network_session) ``` --- ### Configuration **Type:** page | **Section:** Additional Resources Configuration Configuration Max retry attempts Custom retry strategy Max retry attempts The default maximum number of retries in case of… # Configuration [Configuration](#configuration) - [Max retry attempts](#max-retry-attempts) - [Custom retry strategy](#custom-retry-strategy) ## Max retry attempts The default maximum number of retries in case of failed API call is 5. To change this number you should initialize `BoxRetryStrategy` with the new value and pass it to `NetworkSession`. ``` BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN"); NetworkSession networkSession = new NetworkSession() { RetryStrategy = new BoxRetryStrategy(5) }; BoxClient client = new BoxClient(auth: auth, networkSession: networkSession); ``` ## Custom retry strategy You can also implement your own retry strategy by subclassing `RetryStrategy` and overriding `ShouldRetryAsync` and `RetryAfter` methods. This example shows how to set custom strategy that retries on 5xx status codes and waits 1 second between retries. ``` public class CustomRetryStrategy : IRetryStrategy { public Task<bool> ShouldRetryAsync(FetchOptions fetchOptions, FetchResponse fetchResponse, int attemptNumber) { return Task.FromResult(fetchResponse.Status >= 500); } public double RetryAfter(FetchOptions fetchOptions, FetchResponse fetchResponse, int attemptNumber) { return 1.0; } } BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN"); NetworkSession networkSession = new NetworkSession() { RetryStrategy = new CustomRetryStrategy() }; BoxClient client = new BoxClient(auth: auth, networkSession: networkSession); ``` As you can see, in this example we based our decision to retry solely on the status code of the response. However, you can use any information available in `fetchOptions` and `fetchResponse` to make a more informed decision. --- ### Configuration **Type:** page | **Section:** Additional Resources Configuration Configuration Max retry attempts Custom retry strategy Max retry attempts The default maximum number of retries in case of… # Configuration [Configuration](#configuration) - [Max retry attempts](#max-retry-attempts) - [Custom retry strategy](#custom-retry-strategy) ## Max retry attempts The default maximum number of retries in case of failed API call is 5. To change this number you should initialize `BoxRetryStrategy` with the new value and pass it to `NetworkSession`. ``` let networkSession: NetworkSession = NetworkSession( retryStrategy: BoxRetryStrategy(maxAttempts: 5) ) let auth: BoxDeveloperTokenAuth = BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN"); let client: BoxClient = BoxClient(auth: auth, networkSession: networkSession) ``` ## Custom retry strategy You can also implement your own retry strategy class by conforming to `RetryStrategy` protocol and providing the implementation for `shouldRetry` and `retryAfter` methods. This example shows how to set custom strategy that retries on 5xx status codes and waits 1 second between retries. ``` public class CustomRetryStrategy: RetryStrategy { public func shouldRetry(fetchOptions: FetchOptions, fetchResponse: FetchResponse, attemptNumber: Int) async throws -> Bool { return fetchResponse.status >= 500 } public func retryAfter(fetchOptions: FetchOptions, fetchResponse: FetchResponse, attemptNumber: Int) -> Double { return 1.0 } } let networkSession: NetworkSession = NetworkSession( retryStrategy: CustomRetryStrategy() ) let auth: BoxDeveloperTokenAuth = BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN") let client: BoxClient = BoxClient(auth: auth, networkSession: networkSession) ``` As you can see, in this example we based our decision to retry solely on the status code of the response. However, you can use any information available in `fetchOptions` and `fetchResponse` to make a more informed decision. --- ### Configuration **Type:** page | **Section:** Additional Resources Configuration Max retry attempts Custom retry strategy Max retry attempts The default maximum number of retries in case of failed API call… # Configuration - [Max retry attempts](#max-retry-attempts) - [Custom retry strategy](#custom-retry-strategy) ## Max retry attempts The default maximum number of retries in case of failed API call is 5. To change this number you should initialize `BoxRetryStrategy` with the new value and pass it to `NetworkSession`. ``` const auth = new BoxDeveloperTokenAuth({ token: 'DEVELOPER_TOKEN_GOES_HERE' }); const networkSession = new NetworkSession({ retryStrategy: new BoxRetryStrategy({ maxAttempts: 6 }), }); const client = new BoxClient({ auth, networkSession }); ``` ## Custom retry strategy You can also implement your own retry strategy by subclassing `RetryStrategy` and overriding `shouldRetry` and `retryAfter` methods. This example shows how to set custom strategy that retries on 5xx status codes and waits 1 second between retries. ``` export class CustomRetryStrategy implements RetryStrategy { async shouldRetry( fetchOptions: FetchOptions, fetchResponse: FetchResponse, attemptNumber: number, ): Promise<boolean> { return false; } retryAfter( fetchOptions: FetchOptions, fetchResponse: FetchResponse, attemptNumber: number, ): number { return 1.0; } } const auth = new BoxDeveloperTokenAuth({ token: 'DEVELOPER_TOKEN_GOES_HERE' }); const networkSession = new NetworkSession({ retryStrategy: new CustomRetryStrategy(), }); const client = new BoxClient({ auth, networkSession }); ``` --- ### Configuration **Type:** page | **Section:** Additional Resources Configuration Max retry attempts Custom retry strategy Max retry attempts The default maximum number of retries in case of failed API call… # Configuration - [Max retry attempts](#max-retry-attempts) - [Custom retry strategy](#custom-retry-strategy) ## Max retry attempts The default maximum number of retries in case of failed API call is 5. To change this number you should initialize `BoxRetryStrategy` with the new value and pass it to `NetworkSession`. ``` from box_sdk_gen import ( BoxClient, BoxDeveloperTokenAuth, NetworkSession, BoxRetryStrategy, ) auth = BoxDeveloperTokenAuth(token="DEVELOPER_TOKEN_GOES_HERE") network_session = NetworkSession(retry_strategy=BoxRetryStrategy(max_attempts=6)) client = BoxClient(auth=auth, network_session=network_session) ``` ## Custom retry strategy You can also implement your own retry strategy by subclassing `RetryStrategy` and overriding `should_retry` and `retry_after` methods. This example shows how to set custom strategy that retries on 5xx status codes and waits 1 second between retries. ``` from box_sdk_gen import ( BoxClient, BoxDeveloperTokenAuth, NetworkSession, RetryStrategy, FetchOptions, FetchResponse, ) class CustomRetryStrategy(RetryStrategy): def should_retry( self, fetch_options: FetchOptions, fetch_response: FetchResponse, attempt_number: int, ) -> bool: return fetch_response.status_code >= 500 def retry_after( self, fetch_options: FetchOptions, fetch_response: FetchResponse, attempt_number: int, ) -> float: return 1.0 auth = BoxDeveloperTokenAuth(token="DEVELOPER_TOKEN_GOES_HERE") network_session = NetworkSession(retry_strategy=CustomRetryStrategy()) client = BoxClient(auth=auth, network_session=network_session) ``` --- ### Configuration **Type:** page | **Section:** Additional Resources Configuration Configuration Max retry attempts Custom retry strategy Max retry attempts The default maximum number of retries in case of… # Configuration [Configuration](#configuration) - [Max retry attempts](#max-retry-attempts) - [Custom retry strategy](#custom-retry-strategy) ## Max retry attempts The default maximum number of retries in case of failed API call is 5. To change this number you should initialize `BoxRetryStrategy` with the new value and pass it to `NetworkSession`. ``` BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN"); NetworkSession networkSession = new NetworkSession() { RetryStrategy = new BoxRetryStrategy(5) }; BoxClient client = new BoxClient(auth: auth, networkSession: networkSession); ``` ## Custom retry strategy You can also implement your own retry strategy by subclassing `RetryStrategy` and overriding `ShouldRetryAsync` and `RetryAfter` methods. This example shows how to set custom strategy that retries on 5xx status codes and waits 1 second between retries. ``` public class CustomRetryStrategy : IRetryStrategy { public Task<bool> ShouldRetryAsync(FetchOptions fetchOptions, FetchResponse fetchResponse, int attemptNumber) { return Task.FromResult(fetchResponse.Status >= 500); } public double RetryAfter(FetchOptions fetchOptions, FetchResponse fetchResponse, int attemptNumber) { return 1.0; } } BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN"); NetworkSession networkSession = new NetworkSession() { RetryStrategy = new CustomRetryStrategy() }; BoxClient client = new BoxClient(auth: auth, networkSession: networkSession); ``` As you can see, in this example we based our decision to retry solely on the status code of the response. However, you can use any information available in `fetchOptions` and `fetchResponse` to make a more informed decision. --- ### Configuration **Type:** page | **Section:** Additional Resources Configuration Configuration Max retry attempts Custom retry strategy Max retry attempts The default maximum number of retries in case of… # Configuration [Configuration](#configuration) - [Max retry attempts](#max-retry-attempts) - [Custom retry strategy](#custom-retry-strategy) ## Max retry attempts The default maximum number of retries in case of failed API call is 5. To change this number you should initialize `BoxRetryStrategy` with the new value and pass it to `NetworkSession`. ``` let networkSession: NetworkSession = NetworkSession( retryStrategy: BoxRetryStrategy(maxAttempts: 5) ) let auth: BoxDeveloperTokenAuth = BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN"); let client: BoxClient = BoxClient(auth: auth, networkSession: networkSession) ``` ## Custom retry strategy You can also implement your own retry strategy class by conforming to `RetryStrategy` protocol and providing the implementation for `shouldRetry` and `retryAfter` methods. This example shows how to set custom strategy that retries on 5xx status codes and waits 1 second between retries. ``` public class CustomRetryStrategy: RetryStrategy { public func shouldRetry(fetchOptions: FetchOptions, fetchResponse: FetchResponse, attemptNumber: Int) async throws -> Bool { return fetchResponse.status >= 500 } public func retryAfter(fetchOptions: FetchOptions, fetchResponse: FetchResponse, attemptNumber: Int) -> Double { return 1.0 } } let networkSession: NetworkSession = NetworkSession( retryStrategy: CustomRetryStrategy() ) let auth: BoxDeveloperTokenAuth = BoxDeveloperTokenAuth(token: "DEVELOPER_TOKEN") let client: BoxClient = BoxClient(auth: auth, networkSession: networkSession) ``` As you can see, in this example we based our decision to retry solely on the status code of the response. However, you can use any information available in `fetchOptions` and `fetchResponse` to make a more informed decision. --- ### Configuration **Type:** page | **Section:** Additional Resources Configuration Configuration Max retry attempts Custom retry strategy Max retry attempts The default maximum number of retries in case of… # Configuration [Configuration](#configuration) - [Max retry attempts](#max-retry-attempts) - [Custom retry strategy](#custom-retry-strategy) ## Max retry attempts The default maximum number of retries in case of failed API call is 5. To change this number you should initialize `BoxRetryStrategy` with the new value and pass it to `NetworkSession`. ``` BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN"); NetworkSession session = new NetworkSession.Builder() .retryStrategy(new BoxRetryStrategy.Builder().maxAttempts(3).build()) .build(); BoxClient client = new BoxClient.Builder(auth) .networkSession(session) .build(); ``` ## Custom retry strategy You can also implement your own retry strategy by subclassing `RetryStrategy` and overriding `shouldRetry` and `retryAfter` methods. This example shows how to set custom strategy that retries on 5xx status codes and waits 1 second between retries. ``` BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN"); RetryStrategy customRetryStrategy = new RetryStrategy() { @Override public boolean shouldRetry(FetchOptions fetchOptions, FetchResponse fetchResponse, int attemptNumber) { return fetchResponse.status >= 500; } @Override public double retryAfter(FetchOptions fetchOptions, FetchResponse fetchResponse, int attemptNumber) { return 1.0; } }; NetworkSession session = new NetworkSession.Builder() .retryStrategy(customRetryStrategy) .build(); BoxClient client = new BoxClient.Builder(auth) .networkSession(session) .build(); ``` --- ### Contributing **Type:** page | **Section:** Additional Resources Contributing All contributions are welcome to this project. Contributor License Agreement Before a contribution can be merged into this… # Contributing All contributions are welcome to this project. ## Contributor License Agreement Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at: [http://opensource.box.com/cla](http://opensource.box.com/cla) To learn more about CLAs and why they are important to open source projects, please see the [Wikipedia entry](http://en.wikipedia.org/wiki/Contributor_License_Agreement). ## Code of Conduct This project adheres to the [Box Open Code of Conduct](http://opensource.box.com/code-of-conduct/). By participating, you are expected to uphold this code. ## How to contribute - **File an issue** - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature). - **Send a pull request** - this project is generated using [Box Codegen](https://github.com/box/box-codegen) based on[Box OpenAPI 3.0 Specification](https://github.com/box/box-openapi), so if you want found something you want to change in the generated code, you'll need to modify the codegen project and submit a pull request there. --- ### Contributing **Type:** page | **Section:** Additional Resources Contributing All contributions are welcome to this project. Contributor License Agreement Before a contribution can be merged into this… # Contributing All contributions are welcome to this project. ## Contributor License Agreement Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at: [http://opensource.box.com/cla](http://opensource.box.com/cla) To learn more about CLAs and why they are important to open source projects, please see the [Wikipedia entry](http://en.wikipedia.org/wiki/Contributor_License_Agreement). ## Code of Conduct This project adheres to the [Box Open Code of Conduct](http://opensource.box.com/code-of-conduct/). By participating, you are expected to uphold this code. ## How to contribute - **File an issue** - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature). - **Send a pull request** - this project is generated using [Box Codegen](https://github.com/box/box-codegen) based on[Box OpenAPI 3.0 Specification](https://github.com/box/box-openapi), so if you want found something you want to change in the generated code, you'll need to modify the codegen project and submit a pull request there. --- ### Contributing **Type:** page | **Section:** Additional Resources Contributing All contributions are welcome to this project. Contributor License Agreement Before a contribution can be merged into this… # Contributing All contributions are welcome to this project. ## Contributor License Agreement Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at: [http://opensource.box.com/cla](http://opensource.box.com/cla) To learn more about CLAs and why they are important to open source projects, please see the [Wikipedia entry](http://en.wikipedia.org/wiki/Contributor_License_Agreement). ## Code of Conduct This project adheres to the [Box Open Code of Conduct](http://opensource.box.com/code-of-conduct/). By participating, you are expected to uphold this code. ## How to contribute - **File an issue** - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature). - **Send a pull request** - this project is generated using [Box Codegen](https://github.com/box/box-codegen) based on[Box OpenAPI 3.0 Specification](https://github.com/box/box-openapi), so if you want found something you want to change in the generated code, you'll need to modify the codegen project and submit a pull request there. --- ### Contributing **Type:** page | **Section:** Additional Resources Contributing All contributions are welcome to this project. Contributor License Agreement Before a contribution can be merged into this… # Contributing All contributions are welcome to this project. ## Contributor License Agreement Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at: [http://opensource.box.com/cla](http://opensource.box.com/cla) To learn more about CLAs and why they are important to open source projects, please see the [Wikipedia entry](http://en.wikipedia.org/wiki/Contributor_License_Agreement). ## Code of Conduct This project adheres to the [Box Open Code of Conduct](http://opensource.box.com/code-of-conduct/). By participating, you are expected to uphold this code. ## How to contribute - **File an issue** - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature). - **Send a pull request** - this project is generated using [Box Codegen](https://github.com/box/box-codegen) based on[Box OpenAPI 3.0 Specification](https://github.com/box/box-openapi), so if you want found something you want to change in the generated code, you'll need to modify the codegen project and submit a pull request there. --- ### Contributing **Type:** page | **Section:** Additional Resources Contributing All contributions are welcome to this project. Contributor License Agreement Before a contribution can be merged into this… # Contributing All contributions are welcome to this project. ## Contributor License Agreement Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at: [http://opensource.box.com/cla](http://opensource.box.com/cla) To learn more about CLAs and why they are important to open source projects, please see the [Wikipedia entry](http://en.wikipedia.org/wiki/Contributor_License_Agreement). ## Code of Conduct This project adheres to the [Box Open Code of Conduct](http://opensource.box.com/code-of-conduct/). By participating, you are expected to uphold this code. ## How to contribute - **File an issue** - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature). - **Send a pull request** - this project is generated using [Box Codegen](https://github.com/box/box-codegen) based on[Box OpenAPI 3.0 Specification](https://github.com/box/box-openapi), so if you want found something you want to change in the generated code, you'll need to modify the codegen project and submit a pull request there. --- ### Contributing **Type:** page | **Section:** Additional Resources Contributing All contributions are welcome to this project. Contributor License Agreement Before a contribution can be merged into this… # Contributing All contributions are welcome to this project. ## Contributor License Agreement Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at: [http://opensource.box.com/cla](http://opensource.box.com/cla) To learn more about CLAs and why they are important to open source projects, please see the [Wikipedia entry](http://en.wikipedia.org/wiki/Contributor_License_Agreement). ## Code of Conduct This project adheres to the [Box Open Code of Conduct](http://opensource.box.com/code-of-conduct/). By participating, you are expected to uphold this code. ## How to contribute - **File an issue** - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature). - **Send a pull request** - this project is generated using [Box Codegen](https://github.com/box/box-codegen) based on[Box OpenAPI 3.0 Specification](https://github.com/box/box-openapi), so if you want found something you want to change in the generated code, you'll need to modify the codegen project and submit a pull request there. --- ### Contributing **Type:** page | **Section:** Additional Resources Contributing All contributions are welcome to this project. Contributor License Agreement Before a contribution can be merged into this… # Contributing All contributions are welcome to this project. ## Contributor License Agreement Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at: [http://opensource.box.com/cla](http://opensource.box.com/cla) To learn more about CLAs and why they are important to open source projects, please see the [Wikipedia entry](http://en.wikipedia.org/wiki/Contributor_License_Agreement). ## Code of Conduct This project adheres to the [Box Open Code of Conduct](http://opensource.box.com/code-of-conduct/). By participating, you are expected to uphold this code. ## How to contribute - **File an issue** - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature). - **Send a pull request** - this project is generated using [Box Codegen](https://github.com/box/box-codegen) based on[Box OpenAPI 3.0 Specification](https://github.com/box/box-openapi), so if you want found something you want to change in the generated code, you'll need to modify the codegen project and submit a pull request there. --- ### Contributing **Type:** page | **Section:** Additional Resources Contributing All contributions are welcome to this project. Contributor License Agreement Before a contribution can be merged into this… # Contributing All contributions are welcome to this project. ## Contributor License Agreement Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at: [http://opensource.box.com/cla](http://opensource.box.com/cla) To learn more about CLAs and why they are important to open source projects, please see the [Wikipedia entry](http://en.wikipedia.org/wiki/Contributor_License_Agreement). ## Code of Conduct This project adheres to the [Box Open Code of Conduct](http://opensource.box.com/code-of-conduct/). By participating, you are expected to uphold this code. ## How to contribute - **File an issue** - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature). - **Send a pull request** - this project is generated using [Box Codegen](https://github.com/box/box-codegen) based on[Box OpenAPI 3.0 Specification](https://github.com/box/box-openapi), so if you want found something you want to change in the generated code, you'll need to modify the codegen project and submit a pull request there. --- ### Contributing **Type:** page | **Section:** Additional Resources Contributing All contributions are welcome to this project. Contributor License Agreement Before a contribution can be merged into this… # Contributing All contributions are welcome to this project. ## Contributor License Agreement Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at: [http://opensource.box.com/cla](http://opensource.box.com/cla) To learn more about CLAs and why they are important to open source projects, please see the [Wikipedia entry](http://en.wikipedia.org/wiki/Contributor_License_Agreement). ## Code of Conduct This project adheres to the [Box Open Code of Conduct](http://opensource.box.com/code-of-conduct/). By participating, you are expected to uphold this code. ## How to contribute - **File an issue** - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature). - **Send a pull request** - this project is generated using [Box Codegen](https://github.com/box/box-codegen) based on[Box OpenAPI 3.0 Specification](https://github.com/box/box-openapi), so if you want found something you want to change in the generated code, you'll need to modify the codegen project and submit a pull request there. --- ### Contributing **Type:** page | **Section:** Additional Resources Contributing All contributions are welcome to this project. Contributor License Agreement Before a contribution can be merged into this… # Contributing All contributions are welcome to this project. ## Contributor License Agreement Before a contribution can be merged into this project, please fill out the Contributor License Agreement (CLA) located at: [http://opensource.box.com/cla](http://opensource.box.com/cla) To learn more about CLAs and why they are important to open source projects, please see the [Wikipedia entry](http://en.wikipedia.org/wiki/Contributor_License_Agreement). ## Code of Conduct This project adheres to the [Box Open Code of Conduct](http://opensource.box.com/code-of-conduct/). By participating, you are expected to uphold this code. ## How to contribute - **File an issue** - if you found a bug, want to request an enhancement, or want to implement something (bug fix or feature). - **Send a pull request** - this project is generated using [Box Codegen](https://github.com/box/box-codegen) based on[Box OpenAPI 3.0 Specification](https://github.com/box/box-openapi), so if you want found something you want to change in the generated code, you'll need to modify the codegen project and submit a pull request there. --- ### DevicePinnersManager **Type:** page | **Section:** Additional Resources DevicePinnersManager Get device pin Remove device pin List enterprise device pins Get device pin Retrieves information about an individual… # DevicePinnersManager - [Get device pin](#get-device-pin) - [Remove device pin](#remove-device-pin) - [List enterprise device pins](#list-enterprise-device-pins) ## Get device pin Retrieves information about an individual device pin. This operation is performed by calling function `getDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-device-pinners-id/). ``` await client.devicePinners.getDevicePinnerById(devicePinnerId); ``` ### Arguments devicePinnerId `string` - The ID of the device pin. Example: "2324234" optionalsInput `GetDevicePinnerByIdOptionalsInput` ### Returns This function returns a value of type `DevicePinner`. Returns information about a single device pin. ## Remove device pin Deletes an individual device pin. This operation is performed by calling function `deleteDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-device-pinners-id/). ``` await client.devicePinners.deleteDevicePinnerById(devicePinnerId); ``` ### Arguments devicePinnerId `string` - The ID of the device pin. Example: "2324234" optionalsInput `DeleteDevicePinnerByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. Returns an empty response when the pin has been deleted. ## List enterprise device pins Retrieves all the device pins within an enterprise. The user must have admin privileges, and the application needs the "manage enterprise" scope to make this call. This operation is performed by calling function `getEnterpriseDevicePinners`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-enterprises-id-device-pinners/). ``` await client.devicePinners.getEnterpriseDevicePinners(enterpriseId); ``` ### Arguments enterpriseId `string` - The ID of the enterprise. Example: "3442311" optionalsInput `GetEnterpriseDevicePinnersOptionalsInput` ### Returns This function returns a value of type `DevicePinners`. Returns a list of device pins for a given enterprise. --- ### DevicePinnersManager **Type:** page | **Section:** Additional Resources DevicePinnersManager Get device pin Remove device pin List enterprise device pins Get device pin Retrieves information about an individual… # DevicePinnersManager - [Get device pin](#get-device-pin) - [Remove device pin](#remove-device-pin) - [List enterprise device pins](#list-enterprise-device-pins) ## Get device pin Retrieves information about an individual device pin. This operation is performed by calling function `getDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-device-pinners-id/). ``` client.getDevicePinners().getDevicePinnerById(devicePinnerId) ``` ### Arguments devicePinnerId `String` - The ID of the device pin. Example: "2324234" headers `GetDevicePinnerByIdHeaders` - Headers of getDevicePinnerById method ### Returns This function returns a value of type `DevicePinner`. Returns information about a single device pin. ## Remove device pin Deletes an individual device pin. This operation is performed by calling function `deleteDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-device-pinners-id/). ``` client.getDevicePinners().deleteDevicePinnerById(devicePinnerId) ``` ### Arguments devicePinnerId `String` - The ID of the device pin. Example: "2324234" headers `DeleteDevicePinnerByIdHeaders` - Headers of deleteDevicePinnerById method ### Returns This function returns a value of type `void`. Returns an empty response when the pin has been deleted. ## List enterprise device pins Retrieves all the device pins within an enterprise. The user must have admin privileges, and the application needs the "manage enterprise" scope to make this call. This operation is performed by calling function `getEnterpriseDevicePinners`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-enterprises-id-device-pinners/). ``` client.getDevicePinners().getEnterpriseDevicePinners(enterpriseId) ``` ### Arguments enterpriseId `String` - The ID of the enterprise. Example: "3442311" queryParams `GetEnterpriseDevicePinnersQueryParams` - Query parameters of getEnterpriseDevicePinners method headers `GetEnterpriseDevicePinnersHeaders` - Headers of getEnterpriseDevicePinners method ### Returns This function returns a value of type `DevicePinners`. Returns a list of device pins for a given enterprise. --- ### DevicePinnersManager **Type:** page | **Section:** Additional Resources DevicePinnersManager Get device pin Remove device pin List enterprise device pins Get device pin Retrieves information about an individual… # DevicePinnersManager - [Get device pin](#get-device-pin) - [Remove device pin](#remove-device-pin) - [List enterprise device pins](#list-enterprise-device-pins) ## Get device pin Retrieves information about an individual device pin. This operation is performed by calling function `get_device_pinner_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-device-pinners-id/). ``` client.device_pinners.get_device_pinner_by_id(device_pinner_id) ``` ### Arguments device_pinner_id `str` - The ID of the device pin. Example: "2324234" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DevicePinner`. Returns information about a single device pin. ## Remove device pin Deletes an individual device pin. This operation is performed by calling function `delete_device_pinner_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-device-pinners-id/). ``` client.device_pinners.delete_device_pinner_by_id(device_pinner_id) ``` ### Arguments device_pinner_id `str` - The ID of the device pin. Example: "2324234" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Returns an empty response when the pin has been deleted. ## List enterprise device pins Retrieves all the device pins within an enterprise. The user must have admin privileges, and the application needs the "manage enterprise" scope to make this call. This operation is performed by calling function `get_enterprise_device_pinners`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-enterprises-id-device-pinners/). ``` client.device_pinners.get_enterprise_device_pinners(enterprise_id) ``` ### Arguments enterprise_id `str` - The ID of the enterprise. Example: "3442311" marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. direction `Optional[GetEnterpriseDevicePinnersDirection]` - The direction to sort results in. This can be either in alphabetical ascending (`ASC`) or descending (`DESC`) order. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DevicePinners`. Returns a list of device pins for a given enterprise. --- ### DevicePinnersManager **Type:** page | **Section:** Additional Resources DevicePinnersManager Get device pin Remove device pin List enterprise device pins Get device pin Retrieves information about an individual… # DevicePinnersManager - [Get device pin](#get-device-pin) - [Remove device pin](#remove-device-pin) - [List enterprise device pins](#list-enterprise-device-pins) ## Get device pin Retrieves information about an individual device pin. This operation is performed by calling function `getDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-device-pinners-id/). ``` try await client.devicePinners.getDevicePinnerById(devicePinnerId: devicePinnerId) ``` ### Arguments devicePinnerId `String` - The ID of the device pin. Example: "2324234" headers `GetDevicePinnerByIdHeaders` - Headers of getDevicePinnerById method ### Returns This function returns a value of type `DevicePinner`. Returns information about a single device pin. ## Remove device pin Deletes an individual device pin. This operation is performed by calling function `deleteDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-device-pinners-id/). ``` try await client.devicePinners.deleteDevicePinnerById(devicePinnerId: devicePinnerId) ``` ### Arguments devicePinnerId `String` - The ID of the device pin. Example: "2324234" headers `DeleteDevicePinnerByIdHeaders` - Headers of deleteDevicePinnerById method ### Returns This function returns a value of type ``. Returns an empty response when the pin has been deleted. ## List enterprise device pins Retrieves all the device pins within an enterprise. The user must have admin privileges, and the application needs the "manage enterprise" scope to make this call. This operation is performed by calling function `getEnterpriseDevicePinners`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-enterprises-id-device-pinners/). ``` try await client.devicePinners.getEnterpriseDevicePinners(enterpriseId: enterpriseId) ``` ### Arguments enterpriseId `String` - The ID of the enterprise. Example: "3442311" queryParams `GetEnterpriseDevicePinnersQueryParams` - Query parameters of getEnterpriseDevicePinners method headers `GetEnterpriseDevicePinnersHeaders` - Headers of getEnterpriseDevicePinners method ### Returns This function returns a value of type `DevicePinners`. Returns a list of device pins for a given enterprise. --- ### DevicePinnersManager **Type:** page | **Section:** Additional Resources DevicePinnersManager Get device pin Remove device pin List enterprise device pins Get device pin Retrieves information about an individual… # DevicePinnersManager - [Get device pin](#get-device-pin) - [Remove device pin](#remove-device-pin) - [List enterprise device pins](#list-enterprise-device-pins) ## Get device pin Retrieves information about an individual device pin. This operation is performed by calling function `getDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-device-pinners-id/). ``` await client.devicePinners.getDevicePinnerById(devicePinnerId); ``` ### Arguments devicePinnerId `string` - The ID of the device pin. Example: "2324234" optionalsInput `GetDevicePinnerByIdOptionalsInput` ### Returns This function returns a value of type `DevicePinner`. Returns information about a single device pin. ## Remove device pin Deletes an individual device pin. This operation is performed by calling function `deleteDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-device-pinners-id/). ``` await client.devicePinners.deleteDevicePinnerById(devicePinnerId); ``` ### Arguments devicePinnerId `string` - The ID of the device pin. Example: "2324234" optionalsInput `DeleteDevicePinnerByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. Returns an empty response when the pin has been deleted. ## List enterprise device pins Retrieves all the device pins within an enterprise. The user must have admin privileges, and the application needs the "manage enterprise" scope to make this call. This operation is performed by calling function `getEnterpriseDevicePinners`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-enterprises-id-device-pinners/). ``` await client.devicePinners.getEnterpriseDevicePinners(enterpriseId); ``` ### Arguments enterpriseId `string` - The ID of the enterprise. Example: "3442311" optionalsInput `GetEnterpriseDevicePinnersOptionalsInput` ### Returns This function returns a value of type `DevicePinners`. Returns a list of device pins for a given enterprise. --- ### DevicePinnersManager **Type:** page | **Section:** Additional Resources DevicePinnersManager Get device pin Remove device pin List enterprise device pins Get device pin Retrieves information about an individual… # DevicePinnersManager - [Get device pin](#get-device-pin) - [Remove device pin](#remove-device-pin) - [List enterprise device pins](#list-enterprise-device-pins) ## Get device pin Retrieves information about an individual device pin. This operation is performed by calling function `get_device_pinner_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-device-pinners-id/). ``` client.device_pinners.get_device_pinner_by_id(device_pinner_id) ``` ### Arguments device_pinner_id `str` - The ID of the device pin. Example: "2324234" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DevicePinner`. Returns information about a single device pin. ## Remove device pin Deletes an individual device pin. This operation is performed by calling function `delete_device_pinner_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-device-pinners-id/). ``` client.device_pinners.delete_device_pinner_by_id(device_pinner_id) ``` ### Arguments device_pinner_id `str` - The ID of the device pin. Example: "2324234" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Returns an empty response when the pin has been deleted. ## List enterprise device pins Retrieves all the device pins within an enterprise. The user must have admin privileges, and the application needs the "manage enterprise" scope to make this call. This operation is performed by calling function `get_enterprise_device_pinners`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-enterprises-id-device-pinners/). ``` client.device_pinners.get_enterprise_device_pinners(enterprise_id) ``` ### Arguments enterprise_id `str` - The ID of the enterprise. Example: "3442311" marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. direction `Optional[GetEnterpriseDevicePinnersDirection]` - The direction to sort results in. This can be either in alphabetical ascending (`ASC`) or descending (`DESC`) order. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DevicePinners`. Returns a list of device pins for a given enterprise. --- ### DevicePinnersManager **Type:** page | **Section:** Additional Resources DevicePinnersManager Get device pin Remove device pin List enterprise device pins Get device pin Retrieves information about an individual… # DevicePinnersManager - [Get device pin](#get-device-pin) - [Remove device pin](#remove-device-pin) - [List enterprise device pins](#list-enterprise-device-pins) ## Get device pin Retrieves information about an individual device pin. This operation is performed by calling function `getDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-device-pinners-id/). ``` try await client.devicePinners.getDevicePinnerById(devicePinnerId: devicePinnerId) ``` ### Arguments devicePinnerId `String` - The ID of the device pin. Example: "2324234" headers `GetDevicePinnerByIdHeaders` - Headers of getDevicePinnerById method ### Returns This function returns a value of type `DevicePinner`. Returns information about a single device pin. ## Remove device pin Deletes an individual device pin. This operation is performed by calling function `deleteDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-device-pinners-id/). ``` try await client.devicePinners.deleteDevicePinnerById(devicePinnerId: devicePinnerId) ``` ### Arguments devicePinnerId `String` - The ID of the device pin. Example: "2324234" headers `DeleteDevicePinnerByIdHeaders` - Headers of deleteDevicePinnerById method ### Returns This function returns a value of type ``. Returns an empty response when the pin has been deleted. ## List enterprise device pins Retrieves all the device pins within an enterprise. The user must have admin privileges, and the application needs the "manage enterprise" scope to make this call. This operation is performed by calling function `getEnterpriseDevicePinners`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-enterprises-id-device-pinners/). ``` try await client.devicePinners.getEnterpriseDevicePinners(enterpriseId: enterpriseId) ``` ### Arguments enterpriseId `String` - The ID of the enterprise. Example: "3442311" queryParams `GetEnterpriseDevicePinnersQueryParams` - Query parameters of getEnterpriseDevicePinners method headers `GetEnterpriseDevicePinnersHeaders` - Headers of getEnterpriseDevicePinners method ### Returns This function returns a value of type `DevicePinners`. Returns a list of device pins for a given enterprise. --- ### DevicePinnersManager **Type:** page | **Section:** Additional Resources DevicePinnersManager Get device pin Remove device pin List enterprise device pins Get device pin Retrieves information about an individual… # DevicePinnersManager - [Get device pin](#get-device-pin) - [Remove device pin](#remove-device-pin) - [List enterprise device pins](#list-enterprise-device-pins) ## Get device pin Retrieves information about an individual device pin. This operation is performed by calling function `getDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-device-pinners-id/). ``` client.getDevicePinners().getDevicePinnerById(devicePinnerId) ``` ### Arguments devicePinnerId `String` - The ID of the device pin. Example: "2324234" headers `GetDevicePinnerByIdHeaders` - Headers of getDevicePinnerById method ### Returns This function returns a value of type `DevicePinner`. Returns information about a single device pin. ## Remove device pin Deletes an individual device pin. This operation is performed by calling function `deleteDevicePinnerById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-device-pinners-id/). ``` client.getDevicePinners().deleteDevicePinnerById(devicePinnerId) ``` ### Arguments devicePinnerId `String` - The ID of the device pin. Example: "2324234" headers `DeleteDevicePinnerByIdHeaders` - Headers of deleteDevicePinnerById method ### Returns This function returns a value of type `void`. Returns an empty response when the pin has been deleted. ## List enterprise device pins Retrieves all the device pins within an enterprise. The user must have admin privileges, and the application needs the "manage enterprise" scope to make this call. This operation is performed by calling function `getEnterpriseDevicePinners`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-enterprises-id-device-pinners/). ``` client.getDevicePinners().getEnterpriseDevicePinners(enterpriseId) ``` ### Arguments enterpriseId `String` - The ID of the enterprise. Example: "3442311" queryParams `GetEnterpriseDevicePinnersQueryParams` - Query parameters of getEnterpriseDevicePinners method headers `GetEnterpriseDevicePinnersHeaders` - Headers of getEnterpriseDevicePinners method ### Returns This function returns a value of type `DevicePinners`. Returns a list of device pins for a given enterprise. --- ### DocgenManager **Type:** page | **Section:** Additional Resources DocgenManager Get Box Doc Gen job by ID List all Box Doc Gen jobs Get Box Doc Gen jobs by batch ID Generate document using Box Doc Gen… # DocgenManager - [Get Box Doc Gen job by ID](#get-box-doc-gen-job-by-id) - [List all Box Doc Gen jobs](#list-all-box-doc-gen-jobs) - [Get Box Doc Gen jobs by batch ID](#get-box-doc-gen-jobs-by-batch-id) - [Generate document using Box Doc Gen template](#generate-document-using-box-doc-gen-template) ## Get Box Doc Gen job by ID Get details of the Box Doc Gen job. This operation is performed by calling function `getDocgenJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs-id/). ``` await client.docgen.getDocgenJobByIdV2025R0(docgenJobItemFromList.id); ``` ### Arguments jobId `string` - Box Doc Gen job ID. Example: 123 optionalsInput `GetDocgenJobByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenJobV2025R0`. Details of the Box Doc Gen job. ## List all Box Doc Gen jobs Lists all Box Doc Gen jobs for a user. This operation is performed by calling function `getDocgenJobsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs/). ``` await client.docgen.getDocgenJobsV2025R0({ limit: 10000, } satisfies GetDocgenJobsV2025R0QueryParams); ``` ### Arguments queryParams `GetDocgenJobsV2025R0QueryParams` - Query parameters of getDocgenJobsV2025R0 method headersInput `GetDocgenJobsV2025R0HeadersInput` - Headers of getDocgenJobsV2025R0 method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `DocGenJobsFullV2025R0`. A list of Box Doc Gen jobs. ## Get Box Doc Gen jobs by batch ID Lists Box Doc Gen jobs in a batch. This operation is performed by calling function `getDocgenBatchJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id/). ``` await client.docgen.getDocgenBatchJobByIdV2025R0(docgenBatch.id); ``` ### Arguments batchId `string` - Box Doc Gen batch ID. Example: 123 optionalsInput `GetDocgenBatchJobByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenJobsV2025R0`. Returns a list of Box Doc Gen jobs in a Box Doc Gen batch. ## Generate document using Box Doc Gen template Generates a document using a Box Doc Gen template. This operation is performed by calling function `createDocgenBatchV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-batches/). ``` await client.docgen.createDocgenBatchV2025R0({ file: new FileReferenceV2025R0({ id: uploadedFileDocx.id }), inputSource: 'api', destinationFolder: new DocGenBatchCreateRequestV2025R0DestinationFolderField({ id: folder.id, }), outputType: 'pdf', documentGenerationData: [ { generatedFileName: 'test', userInput: { ['abc']: 'xyz' }, } satisfies DocGenDocumentGenerationDataV2025R0, ], } satisfies DocGenBatchCreateRequestV2025R0); ``` ### Arguments requestBody `DocGenBatchCreateRequestV2025R0` - Request body of createDocgenBatchV2025R0 method optionalsInput `CreateDocgenBatchV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenBatchBaseV2025R0`. The created Batch ID. --- ### DocgenManager **Type:** page | **Section:** Additional Resources DocgenManager Get Box Doc Gen job by ID List all Box Doc Gen jobs Get Box Doc Gen jobs by batch ID Generate document using Box Doc Gen… # DocgenManager - [Get Box Doc Gen job by ID](#get-box-doc-gen-job-by-id) - [List all Box Doc Gen jobs](#list-all-box-doc-gen-jobs) - [Get Box Doc Gen jobs by batch ID](#get-box-doc-gen-jobs-by-batch-id) - [Generate document using Box Doc Gen template](#generate-document-using-box-doc-gen-template) ## Get Box Doc Gen job by ID Get details of the Box Doc Gen job. This operation is performed by calling function `getDocgenJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs-id/). ``` client.getDocgen().getDocgenJobByIdV2025R0(docgenJobItemFromList.getId()) ``` ### Arguments jobId `String` - Box Doc Gen job ID. Example: 123 headers `GetDocgenJobByIdV2025R0Headers` - Headers of getDocgenJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobV2025R0`. Details of the Box Doc Gen job. ## List all Box Doc Gen jobs Lists all Box Doc Gen jobs for a user. This operation is performed by calling function `getDocgenJobsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs/). ``` client.getDocgen().getDocgenJobsV2025R0(new GetDocgenJobsV2025R0QueryParams.Builder().limit(10000L).build()) ``` ### Arguments queryParams `GetDocgenJobsV2025R0QueryParams` - Query parameters of getDocgenJobsV2025R0 method headers `GetDocgenJobsV2025R0Headers` - Headers of getDocgenJobsV2025R0 method ### Returns This function returns a value of type `DocGenJobsFullV2025R0`. A list of Box Doc Gen jobs. ## Get Box Doc Gen jobs by batch ID Lists Box Doc Gen jobs in a batch. This operation is performed by calling function `getDocgenBatchJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id/). ``` client.getDocgen().getDocgenBatchJobByIdV2025R0(docgenBatch.getId()) ``` ### Arguments batchId `String` - Box Doc Gen batch ID. Example: 123 queryParams `GetDocgenBatchJobByIdV2025R0QueryParams` - Query parameters of getDocgenBatchJobByIdV2025R0 method headers `GetDocgenBatchJobByIdV2025R0Headers` - Headers of getDocgenBatchJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobsV2025R0`. Returns a list of Box Doc Gen jobs in a Box Doc Gen batch. ## Generate document using Box Doc Gen template Generates a document using a Box Doc Gen template. This operation is performed by calling function `createDocgenBatchV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-batches/). ``` client.getDocgen().createDocgenBatchV2025R0(new DocGenBatchCreateRequestV2025R0(new FileReferenceV2025R0(uploadedFileDocx.getId()), "api", new DocGenBatchCreateRequestV2025R0DestinationFolderField(folder.getId()), "pdf", Arrays.asList(new DocGenDocumentGenerationDataV2025R0("test", mapOf(entryOf("abc", "xyz")))))) ``` ### Arguments requestBody `DocGenBatchCreateRequestV2025R0` - Request body of createDocgenBatchV2025R0 method headers `CreateDocgenBatchV2025R0Headers` - Headers of createDocgenBatchV2025R0 method ### Returns This function returns a value of type `DocGenBatchBaseV2025R0`. The created Batch ID. --- ### DocgenManager **Type:** page | **Section:** Additional Resources DocgenManager Get Box Doc Gen job by ID List all Box Doc Gen jobs Get Box Doc Gen jobs by batch ID Generate document using Box Doc Gen… # DocgenManager - [Get Box Doc Gen job by ID](#get-box-doc-gen-job-by-id) - [List all Box Doc Gen jobs](#list-all-box-doc-gen-jobs) - [Get Box Doc Gen jobs by batch ID](#get-box-doc-gen-jobs-by-batch-id) - [Generate document using Box Doc Gen template](#generate-document-using-box-doc-gen-template) ## Get Box Doc Gen job by ID Get details of the Box Doc Gen job. This operation is performed by calling function `get_docgen_job_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs-id/). ``` client.docgen.get_docgen_job_by_id_v2025_r0(docgen_job_item_from_list.id) ``` ### Arguments job_id `str` - Box Doc Gen job ID. Example: 123 box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenJobV2025R0`. Details of the Box Doc Gen job. ## List all Box Doc Gen jobs Lists all Box Doc Gen jobs for a user. This operation is performed by calling function `get_docgen_jobs_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs/). ``` client.docgen.get_docgen_jobs_v2025_r0(limit=10000) ``` ### Arguments marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenJobsFullV2025R0`. A list of Box Doc Gen jobs. ## Get Box Doc Gen jobs by batch ID Lists Box Doc Gen jobs in a batch. This operation is performed by calling function `get_docgen_batch_job_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id/). ``` client.docgen.get_docgen_batch_job_by_id_v2025_r0(docgen_batch.id) ``` ### Arguments batch_id `str` - Box Doc Gen batch ID. Example: 123 marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenJobsV2025R0`. Returns a list of Box Doc Gen jobs in a Box Doc Gen batch. ## Generate document using Box Doc Gen template Generates a document using a Box Doc Gen template. This operation is performed by calling function `create_docgen_batch_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-batches/). ``` client.docgen.create_docgen_batch_v2025_r0( FileReferenceV2025R0(id=uploaded_file_docx.id), "api", CreateDocgenBatchV2025R0DestinationFolder(id=folder.id), "pdf", [ DocGenDocumentGenerationDataV2025R0( generated_file_name="test", user_input={"abc": "xyz"} ) ], ) ``` ### Arguments - file `FileReferenceV2025R0` - file_version `Optional[FileVersionBaseV2025R0]` input_source `str` - Source of input. The value has to be `api` for all the API-based document generation requests. destination_folder `CreateDocgenBatchV2025R0DestinationFolder` output_type `str` - Type of the output file. document_generation_data `List[DocGenDocumentGenerationDataV2025R0]` box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenBatchBaseV2025R0`. The created Batch ID. --- ### DocgenManager **Type:** page | **Section:** Additional Resources DocgenManager Get Box Doc Gen job by ID List all Box Doc Gen jobs Get Box Doc Gen jobs by batch ID Generate document using Box Doc Gen… # DocgenManager - [Get Box Doc Gen job by ID](#get-box-doc-gen-job-by-id) - [List all Box Doc Gen jobs](#list-all-box-doc-gen-jobs) - [Get Box Doc Gen jobs by batch ID](#get-box-doc-gen-jobs-by-batch-id) - [Generate document using Box Doc Gen template](#generate-document-using-box-doc-gen-template) ## Get Box Doc Gen job by ID Get details of the Box Doc Gen job. This operation is performed by calling function `getDocgenJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs-id/). ``` try await client.docgen.getDocgenJobByIdV2025R0(jobId: docgenJobItemFromList.id) ``` ### Arguments jobId `String` - Box Doc Gen job ID. Example: 123 headers `GetDocgenJobByIdV2025R0Headers` - Headers of getDocgenJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobV2025R0`. Details of the Box Doc Gen job. ## List all Box Doc Gen jobs Lists all Box Doc Gen jobs for a user. This operation is performed by calling function `getDocgenJobsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs/). ``` try await client.docgen.getDocgenJobsV2025R0(queryParams: GetDocgenJobsV2025R0QueryParams(limit: Int64(10000))) ``` ### Arguments queryParams `GetDocgenJobsV2025R0QueryParams` - Query parameters of getDocgenJobsV2025R0 method headers `GetDocgenJobsV2025R0Headers` - Headers of getDocgenJobsV2025R0 method ### Returns This function returns a value of type `DocGenJobsFullV2025R0`. A list of Box Doc Gen jobs. ## Get Box Doc Gen jobs by batch ID Lists Box Doc Gen jobs in a batch. This operation is performed by calling function `getDocgenBatchJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id/). ``` try await client.docgen.getDocgenBatchJobByIdV2025R0(batchId: docgenBatch.id) ``` ### Arguments batchId `String` - Box Doc Gen batch ID. Example: 123 queryParams `GetDocgenBatchJobByIdV2025R0QueryParams` - Query parameters of getDocgenBatchJobByIdV2025R0 method headers `GetDocgenBatchJobByIdV2025R0Headers` - Headers of getDocgenBatchJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobsV2025R0`. Returns a list of Box Doc Gen jobs in a Box Doc Gen batch. ## Generate document using Box Doc Gen template Generates a document using a Box Doc Gen template. This operation is performed by calling function `createDocgenBatchV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-batches/). ``` try await client.docgen.createDocgenBatchV2025R0(requestBody: DocGenBatchCreateRequestV2025R0(file: FileReferenceV2025R0(id: uploadedFileDocx.id), inputSource: "api", destinationFolder: DocGenBatchCreateRequestV2025R0DestinationFolderField(id: folder.id), outputType: "pdf", documentGenerationData: [DocGenDocumentGenerationDataV2025R0(generatedFileName: "test", userInput: ["abc": "xyz"])])) ``` ### Arguments requestBody `DocGenBatchCreateRequestV2025R0` - Request body of createDocgenBatchV2025R0 method headers `CreateDocgenBatchV2025R0Headers` - Headers of createDocgenBatchV2025R0 method ### Returns This function returns a value of type `DocGenBatchBaseV2025R0`. The created Batch ID. --- ### DocgenManager **Type:** page | **Section:** Additional Resources DocgenManager Get Box Doc Gen job by ID List all Box Doc Gen jobs Get Box Doc Gen jobs by batch ID Generate document using Box Doc Gen… # DocgenManager - [Get Box Doc Gen job by ID](#get-box-doc-gen-job-by-id) - [List all Box Doc Gen jobs](#list-all-box-doc-gen-jobs) - [Get Box Doc Gen jobs by batch ID](#get-box-doc-gen-jobs-by-batch-id) - [Generate document using Box Doc Gen template](#generate-document-using-box-doc-gen-template) ## Get Box Doc Gen job by ID Get details of the Box Doc Gen job. This operation is performed by calling function `getDocgenJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs-id/). ``` await client.docgen.getDocgenJobByIdV2025R0(docgenJobItemFromList.id); ``` ### Arguments jobId `string` - Box Doc Gen job ID. Example: 123 optionalsInput `GetDocgenJobByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenJobV2025R0`. Details of the Box Doc Gen job. ## List all Box Doc Gen jobs Lists all Box Doc Gen jobs for a user. This operation is performed by calling function `getDocgenJobsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs/). ``` await client.docgen.getDocgenJobsV2025R0({ limit: 10000, } satisfies GetDocgenJobsV2025R0QueryParams); ``` ### Arguments queryParams `GetDocgenJobsV2025R0QueryParams` - Query parameters of getDocgenJobsV2025R0 method headersInput `GetDocgenJobsV2025R0HeadersInput` - Headers of getDocgenJobsV2025R0 method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `DocGenJobsFullV2025R0`. A list of Box Doc Gen jobs. ## Get Box Doc Gen jobs by batch ID Lists Box Doc Gen jobs in a batch. This operation is performed by calling function `getDocgenBatchJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id/). ``` await client.docgen.getDocgenBatchJobByIdV2025R0(docgenBatch.id); ``` ### Arguments batchId `string` - Box Doc Gen batch ID. Example: 123 optionalsInput `GetDocgenBatchJobByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenJobsV2025R0`. Returns a list of Box Doc Gen jobs in a Box Doc Gen batch. ## Generate document using Box Doc Gen template Generates a document using a Box Doc Gen template. This operation is performed by calling function `createDocgenBatchV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-batches/). ``` await client.docgen.createDocgenBatchV2025R0({ file: new FileReferenceV2025R0({ id: uploadedFile.id }), inputSource: 'api', destinationFolder: new DocGenBatchCreateRequestV2025R0DestinationFolderField({ id: folder.id, }), outputType: 'pdf', documentGenerationData: [ { generatedFileName: 'test', userInput: { ['abc']: 'xyz' }, } satisfies DocGenDocumentGenerationDataV2025R0, ], } satisfies DocGenBatchCreateRequestV2025R0); ``` ### Arguments requestBody `DocGenBatchCreateRequestV2025R0` - Request body of createDocgenBatchV2025R0 method optionalsInput `CreateDocgenBatchV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenBatchBaseV2025R0`. The created Batch ID. --- ### DocgenManager **Type:** page | **Section:** Additional Resources DocgenManager Get Box Doc Gen job by ID List all Box Doc Gen jobs Get Box Doc Gen jobs by batch ID Generate document using Box Doc Gen… # DocgenManager - [Get Box Doc Gen job by ID](#get-box-doc-gen-job-by-id) - [List all Box Doc Gen jobs](#list-all-box-doc-gen-jobs) - [Get Box Doc Gen jobs by batch ID](#get-box-doc-gen-jobs-by-batch-id) - [Generate document using Box Doc Gen template](#generate-document-using-box-doc-gen-template) ## Get Box Doc Gen job by ID Get details of the Box Doc Gen job. This operation is performed by calling function `get_docgen_job_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs-id/). ``` client.docgen.get_docgen_job_by_id_v2025_r0(docgen_job_item_from_list.id) ``` ### Arguments job_id `str` - Box Doc Gen job ID. Example: 123 box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenJobV2025R0`. Details of the Box Doc Gen job. ## List all Box Doc Gen jobs Lists all Box Doc Gen jobs for a user. This operation is performed by calling function `get_docgen_jobs_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs/). ``` client.docgen.get_docgen_jobs_v2025_r0(limit=10000) ``` ### Arguments marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenJobsFullV2025R0`. A list of Box Doc Gen jobs. ## Get Box Doc Gen jobs by batch ID Lists Box Doc Gen jobs in a batch. This operation is performed by calling function `get_docgen_batch_job_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id/). ``` client.docgen.get_docgen_batch_job_by_id_v2025_r0(docgen_batch.id) ``` ### Arguments batch_id `str` - Box Doc Gen batch ID. Example: 123 marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenJobsV2025R0`. Returns a list of Box Doc Gen jobs in a Box Doc Gen batch. ## Generate document using Box Doc Gen template Generates a document using a Box Doc Gen template. This operation is performed by calling function `create_docgen_batch_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-batches/). ``` client.docgen.create_docgen_batch_v2025_r0( FileReferenceV2025R0(id=uploaded_file.id), "api", CreateDocgenBatchV2025R0DestinationFolder(id=folder.id), "pdf", [ DocGenDocumentGenerationDataV2025R0( generated_file_name="test", user_input={"abc": "xyz"} ) ], ) ``` ### Arguments - file `FileReferenceV2025R0` - file_version `Optional[FileVersionBaseV2025R0]` input_source `str` - Source of input. The value has to be `api` for all the API-based document generation requests. destination_folder `CreateDocgenBatchV2025R0DestinationFolder` output_type `str` - Type of the output file. document_generation_data `List[DocGenDocumentGenerationDataV2025R0]` box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenBatchBaseV2025R0`. The created Batch ID. --- ### DocgenManager **Type:** page | **Section:** Additional Resources DocgenManager Get Box Doc Gen job by ID List all Box Doc Gen jobs Get Box Doc Gen jobs by batch ID Generate document using Box Doc Gen… # DocgenManager - [Get Box Doc Gen job by ID](#get-box-doc-gen-job-by-id) - [List all Box Doc Gen jobs](#list-all-box-doc-gen-jobs) - [Get Box Doc Gen jobs by batch ID](#get-box-doc-gen-jobs-by-batch-id) - [Generate document using Box Doc Gen template](#generate-document-using-box-doc-gen-template) ## Get Box Doc Gen job by ID Get details of the Box Doc Gen job. This operation is performed by calling function `getDocgenJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs-id/). ``` try await client.docgen.getDocgenJobByIdV2025R0(jobId: docgenJobItemFromList.id) ``` ### Arguments jobId `String` - Box Doc Gen job ID. Example: 123 headers `GetDocgenJobByIdV2025R0Headers` - Headers of getDocgenJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobV2025R0`. Details of the Box Doc Gen job. ## List all Box Doc Gen jobs Lists all Box Doc Gen jobs for a user. This operation is performed by calling function `getDocgenJobsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs/). ``` try await client.docgen.getDocgenJobsV2025R0(queryParams: GetDocgenJobsV2025R0QueryParams(limit: Int64(10000))) ``` ### Arguments queryParams `GetDocgenJobsV2025R0QueryParams` - Query parameters of getDocgenJobsV2025R0 method headers `GetDocgenJobsV2025R0Headers` - Headers of getDocgenJobsV2025R0 method ### Returns This function returns a value of type `DocGenJobsFullV2025R0`. A list of Box Doc Gen jobs. ## Get Box Doc Gen jobs by batch ID Lists Box Doc Gen jobs in a batch. This operation is performed by calling function `getDocgenBatchJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id/). ``` try await client.docgen.getDocgenBatchJobByIdV2025R0(batchId: docgenBatch.id) ``` ### Arguments batchId `String` - Box Doc Gen batch ID. Example: 123 queryParams `GetDocgenBatchJobByIdV2025R0QueryParams` - Query parameters of getDocgenBatchJobByIdV2025R0 method headers `GetDocgenBatchJobByIdV2025R0Headers` - Headers of getDocgenBatchJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobsV2025R0`. Returns a list of Box Doc Gen jobs in a Box Doc Gen batch. ## Generate document using Box Doc Gen template Generates a document using a Box Doc Gen template. This operation is performed by calling function `createDocgenBatchV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-batches/). ``` try await client.docgen.createDocgenBatchV2025R0(requestBody: DocGenBatchCreateRequestV2025R0(file: FileReferenceV2025R0(id: uploadedFile.id), inputSource: "api", destinationFolder: DocGenBatchCreateRequestV2025R0DestinationFolderField(id: folder.id), outputType: "pdf", documentGenerationData: [DocGenDocumentGenerationDataV2025R0(generatedFileName: "test", userInput: ["abc": "xyz"])])) ``` ### Arguments requestBody `DocGenBatchCreateRequestV2025R0` - Request body of createDocgenBatchV2025R0 method headers `CreateDocgenBatchV2025R0Headers` - Headers of createDocgenBatchV2025R0 method ### Returns This function returns a value of type `DocGenBatchBaseV2025R0`. The created Batch ID. --- ### DocgenManager **Type:** page | **Section:** Additional Resources DocgenManager Get Box Doc Gen job by ID List all Box Doc Gen jobs Get Box Doc Gen jobs by batch ID Generate document using Box Doc Gen… # DocgenManager - [Get Box Doc Gen job by ID](#get-box-doc-gen-job-by-id) - [List all Box Doc Gen jobs](#list-all-box-doc-gen-jobs) - [Get Box Doc Gen jobs by batch ID](#get-box-doc-gen-jobs-by-batch-id) - [Generate document using Box Doc Gen template](#generate-document-using-box-doc-gen-template) ## Get Box Doc Gen job by ID Get details of the Box Doc Gen job. This operation is performed by calling function `getDocgenJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs-id/). ``` client.getDocgen().getDocgenJobByIdV2025R0(docgenJobItemFromList.getId()) ``` ### Arguments jobId `String` - Box Doc Gen job ID. Example: 123 headers `GetDocgenJobByIdV2025R0Headers` - Headers of getDocgenJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobV2025R0`. Details of the Box Doc Gen job. ## List all Box Doc Gen jobs Lists all Box Doc Gen jobs for a user. This operation is performed by calling function `getDocgenJobsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-jobs/). ``` client.getDocgen().getDocgenJobsV2025R0(new GetDocgenJobsV2025R0QueryParams.Builder().limit(10000L).build()) ``` ### Arguments queryParams `GetDocgenJobsV2025R0QueryParams` - Query parameters of getDocgenJobsV2025R0 method headers `GetDocgenJobsV2025R0Headers` - Headers of getDocgenJobsV2025R0 method ### Returns This function returns a value of type `DocGenJobsFullV2025R0`. A list of Box Doc Gen jobs. ## Get Box Doc Gen jobs by batch ID Lists Box Doc Gen jobs in a batch. This operation is performed by calling function `getDocgenBatchJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-batch-jobs-id/). ``` client.getDocgen().getDocgenBatchJobByIdV2025R0(docgenBatch.getId()) ``` ### Arguments batchId `String` - Box Doc Gen batch ID. Example: 123 queryParams `GetDocgenBatchJobByIdV2025R0QueryParams` - Query parameters of getDocgenBatchJobByIdV2025R0 method headers `GetDocgenBatchJobByIdV2025R0Headers` - Headers of getDocgenBatchJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobsV2025R0`. Returns a list of Box Doc Gen jobs in a Box Doc Gen batch. ## Generate document using Box Doc Gen template Generates a document using a Box Doc Gen template. This operation is performed by calling function `createDocgenBatchV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-batches/). ``` client.getDocgen().createDocgenBatchV2025R0(new DocGenBatchCreateRequestV2025R0(new FileReferenceV2025R0(uploadedFile.getId()), "api", new DocGenBatchCreateRequestV2025R0DestinationFolderField(folder.getId()), "pdf", Arrays.asList(new DocGenDocumentGenerationDataV2025R0("test", mapOf(entryOf("abc", "xyz")))))) ``` ### Arguments requestBody `DocGenBatchCreateRequestV2025R0` - Request body of createDocgenBatchV2025R0 method headers `CreateDocgenBatchV2025R0Headers` - Headers of createDocgenBatchV2025R0 method ### Returns This function returns a value of type `DocGenBatchBaseV2025R0`. The created Batch ID. --- ### DocgenTemplateManager **Type:** page | **Section:** Additional Resources DocgenTemplateManager Create Box Doc Gen template List Box Doc Gen templates Delete Box Doc Gen template Get Box Doc Gen template by ID List… # DocgenTemplateManager - [Create Box Doc Gen template](#create-box-doc-gen-template) - [List Box Doc Gen templates](#list-box-doc-gen-templates) - [Delete Box Doc Gen template](#delete-box-doc-gen-template) - [Get Box Doc Gen template by ID](#get-box-doc-gen-template-by-id) - [List all Box Doc Gen template tags in template](#list-all-box-doc-gen-template-tags-in-template) - [Get list of all Box Doc Gen jobs for template](#get-list-of-all-box-doc-gen-jobs-for-template) ## Create Box Doc Gen template Marks a file as a Box Doc Gen template. This operation is performed by calling function `createDocgenTemplateV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-templates/). ``` await client.docgenTemplate.createDocgenTemplateV2025R0({ file: new FileReferenceV2025R0({ id: file.id }), } satisfies DocGenTemplateCreateRequestV2025R0); ``` ### Arguments requestBody `DocGenTemplateCreateRequestV2025R0` - Request body of createDocgenTemplateV2025R0 method optionalsInput `CreateDocgenTemplateV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenTemplateBaseV2025R0`. The file which has now been marked as a Box Doc Gen template. ## List Box Doc Gen templates Lists Box Doc Gen templates on which the user is a collaborator. This operation is performed by calling function `getDocgenTemplatesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates/). ``` await client.docgenTemplate.getDocgenTemplatesV2025R0(); ``` ### Arguments queryParams `GetDocgenTemplatesV2025R0QueryParams` - Query parameters of getDocgenTemplatesV2025R0 method headersInput `GetDocgenTemplatesV2025R0HeadersInput` - Headers of getDocgenTemplatesV2025R0 method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `DocGenTemplatesV2025R0`. Returns a collection of templates. ## Delete Box Doc Gen template Unmarks file as Box Doc Gen template. This operation is performed by calling function `deleteDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-docgen-templates-id/). ``` await client.docgenTemplate.deleteDocgenTemplateByIdV2025R0( createdDocgenTemplate.file!.id, ); ``` ### Arguments templateId `string` - ID of the file which will no longer be marked as a Box Doc Gen template. Example: "123" optionalsInput `DeleteDocgenTemplateByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `undefined`. Returns an empty response when a file is no longer marked as a Box Doc Gen template. ## Get Box Doc Gen template by ID Lists details of a specific Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id/). ``` await client.docgenTemplate.getDocgenTemplateByIdV2025R0( createdDocgenTemplate.file!.id, ); ``` ### Arguments templateId `string` - The ID of a Box Doc Gen template. Example: 123 optionalsInput `GetDocgenTemplateByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenTemplateV2025R0`. Returns a template. ## List all Box Doc Gen template tags in template Lists all tags in a Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateTagsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id-tags/). ``` await client.docgenTemplate.getDocgenTemplateTagsV2025R0( fetchedDocgenTemplate.file!.id, ); ``` ### Arguments templateId `string` - ID of template. Example: 123 optionalsInput `GetDocgenTemplateTagsV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenTagsV2025R0`. A list of document generation template tags.Processing tags for the file. ## Get list of all Box Doc Gen jobs for template Lists the users jobs which use this template. This operation is performed by calling function `getDocgenTemplateJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-template-jobs-id/). ``` await client.docgenTemplate.getDocgenTemplateJobByIdV2025R0( fetchedDocgenTemplate.file!.id, ); ``` ### Arguments templateId `string` - Id of template to fetch jobs for. Example: 123 optionalsInput `GetDocgenTemplateJobByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenJobsV2025R0`. A single Box Doc Gen template. --- ### DocgenTemplateManager **Type:** page | **Section:** Additional Resources DocgenTemplateManager Create Box Doc Gen template List Box Doc Gen templates Delete Box Doc Gen template Get Box Doc Gen template by ID List… # DocgenTemplateManager - [Create Box Doc Gen template](#create-box-doc-gen-template) - [List Box Doc Gen templates](#list-box-doc-gen-templates) - [Delete Box Doc Gen template](#delete-box-doc-gen-template) - [Get Box Doc Gen template by ID](#get-box-doc-gen-template-by-id) - [List all Box Doc Gen template tags in template](#list-all-box-doc-gen-template-tags-in-template) - [Get list of all Box Doc Gen jobs for template](#get-list-of-all-box-doc-gen-jobs-for-template) ## Create Box Doc Gen template Marks a file as a Box Doc Gen template. This operation is performed by calling function `createDocgenTemplateV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-templates/). ``` client.getDocgenTemplate().createDocgenTemplateV2025R0(new DocGenTemplateCreateRequestV2025R0(new FileReferenceV2025R0(file.getId()))) ``` ### Arguments requestBody `DocGenTemplateCreateRequestV2025R0` - Request body of createDocgenTemplateV2025R0 method headers `CreateDocgenTemplateV2025R0Headers` - Headers of createDocgenTemplateV2025R0 method ### Returns This function returns a value of type `DocGenTemplateBaseV2025R0`. The file which has now been marked as a Box Doc Gen template. ## List Box Doc Gen templates Lists Box Doc Gen templates on which the user is a collaborator. This operation is performed by calling function `getDocgenTemplatesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates/). ``` client.getDocgenTemplate().getDocgenTemplatesV2025R0() ``` ### Arguments queryParams `GetDocgenTemplatesV2025R0QueryParams` - Query parameters of getDocgenTemplatesV2025R0 method headers `GetDocgenTemplatesV2025R0Headers` - Headers of getDocgenTemplatesV2025R0 method ### Returns This function returns a value of type `DocGenTemplatesV2025R0`. Returns a collection of templates. ## Delete Box Doc Gen template Unmarks file as Box Doc Gen template. This operation is performed by calling function `deleteDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-docgen-templates-id/). ``` client.getDocgenTemplate().deleteDocgenTemplateByIdV2025R0(createdDocgenTemplate.getFile().getId()) ``` ### Arguments templateId `String` - ID of the file which will no longer be marked as a Box Doc Gen template. Example: "123" headers `DeleteDocgenTemplateByIdV2025R0Headers` - Headers of deleteDocgenTemplateByIdV2025R0 method ### Returns This function returns a value of type `void`. Returns an empty response when a file is no longer marked as a Box Doc Gen template. ## Get Box Doc Gen template by ID Lists details of a specific Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id/). ``` client.getDocgenTemplate().getDocgenTemplateByIdV2025R0(createdDocgenTemplate.getFile().getId()) ``` ### Arguments templateId `String` - The ID of a Box Doc Gen template. Example: 123 headers `GetDocgenTemplateByIdV2025R0Headers` - Headers of getDocgenTemplateByIdV2025R0 method ### Returns This function returns a value of type `DocGenTemplateV2025R0`. Returns a template. ## List all Box Doc Gen template tags in template Lists all tags in a Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateTagsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id-tags/). ``` client.getDocgenTemplate().getDocgenTemplateTagsV2025R0(fetchedDocgenTemplate.getFile().getId()) ``` ### Arguments templateId `String` - ID of template. Example: 123 queryParams `GetDocgenTemplateTagsV2025R0QueryParams` - Query parameters of getDocgenTemplateTagsV2025R0 method headers `GetDocgenTemplateTagsV2025R0Headers` - Headers of getDocgenTemplateTagsV2025R0 method ### Returns This function returns a value of type `DocGenTagsV2025R0`. A list of document generation template tags.Processing tags for the file. ## Get list of all Box Doc Gen jobs for template Lists the users jobs which use this template. This operation is performed by calling function `getDocgenTemplateJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-template-jobs-id/). ``` client.getDocgenTemplate().getDocgenTemplateJobByIdV2025R0(fetchedDocgenTemplate.getFile().getId()) ``` ### Arguments templateId `String` - Id of template to fetch jobs for. Example: 123 queryParams `GetDocgenTemplateJobByIdV2025R0QueryParams` - Query parameters of getDocgenTemplateJobByIdV2025R0 method headers `GetDocgenTemplateJobByIdV2025R0Headers` - Headers of getDocgenTemplateJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobsV2025R0`. A single Box Doc Gen template. --- ### DocgenTemplateManager **Type:** page | **Section:** Additional Resources DocgenTemplateManager Create Box Doc Gen template List Box Doc Gen templates Delete Box Doc Gen template Get Box Doc Gen template by ID List… # DocgenTemplateManager - [Create Box Doc Gen template](#create-box-doc-gen-template) - [List Box Doc Gen templates](#list-box-doc-gen-templates) - [Delete Box Doc Gen template](#delete-box-doc-gen-template) - [Get Box Doc Gen template by ID](#get-box-doc-gen-template-by-id) - [List all Box Doc Gen template tags in template](#list-all-box-doc-gen-template-tags-in-template) - [Get list of all Box Doc Gen jobs for template](#get-list-of-all-box-doc-gen-jobs-for-template) ## Create Box Doc Gen template Marks a file as a Box Doc Gen template. This operation is performed by calling function `create_docgen_template_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-templates/). ``` client.docgen_template.create_docgen_template_v2025_r0(FileReferenceV2025R0(id=file.id)) ``` ### Arguments - file `FileReferenceV2025R0` box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenTemplateBaseV2025R0`. The file which has now been marked as a Box Doc Gen template. ## List Box Doc Gen templates Lists Box Doc Gen templates on which the user is a collaborator. This operation is performed by calling function `get_docgen_templates_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates/). ``` client.docgen_template.get_docgen_templates_v2025_r0() ``` ### Arguments marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenTemplatesV2025R0`. Returns a collection of templates. ## Delete Box Doc Gen template Unmarks file as Box Doc Gen template. This operation is performed by calling function `delete_docgen_template_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-docgen-templates-id/). ``` client.docgen_template.delete_docgen_template_by_id_v2025_r0( created_docgen_template.file.id ) ``` ### Arguments template_id `str` - ID of the file which will no longer be marked as a Box Doc Gen template. Example: "123" box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Returns an empty response when a file is no longer marked as a Box Doc Gen template. ## Get Box Doc Gen template by ID Lists details of a specific Box Doc Gen template. This operation is performed by calling function `get_docgen_template_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id/). ``` client.docgen_template.get_docgen_template_by_id_v2025_r0( created_docgen_template.file.id ) ``` ### Arguments template_id `str` - The ID of a Box Doc Gen template. Example: 123 box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenTemplateV2025R0`. Returns a template. ## List all Box Doc Gen template tags in template Lists all tags in a Box Doc Gen template. This operation is performed by calling function `get_docgen_template_tags_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id-tags/). ``` client.docgen_template.get_docgen_template_tags_v2025_r0( fetched_docgen_template.file.id ) ``` ### Arguments template_id `str` - ID of template. Example: 123 template_version_id `Optional[str]` - Id of template version. marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenTagsV2025R0`. A list of document generation template tags.Processing tags for the file. ## Get list of all Box Doc Gen jobs for template Lists the users jobs which use this template. This operation is performed by calling function `get_docgen_template_job_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-template-jobs-id/). ``` client.docgen_template.get_docgen_template_job_by_id_v2025_r0( fetched_docgen_template.file.id ) ``` ### Arguments template_id `str` - Id of template to fetch jobs for. Example: 123 marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenJobsV2025R0`. A single Box Doc Gen template. --- ### DocgenTemplateManager **Type:** page | **Section:** Additional Resources DocgenTemplateManager Create Box Doc Gen template List Box Doc Gen templates Delete Box Doc Gen template Get Box Doc Gen template by ID List… # DocgenTemplateManager - [Create Box Doc Gen template](#create-box-doc-gen-template) - [List Box Doc Gen templates](#list-box-doc-gen-templates) - [Delete Box Doc Gen template](#delete-box-doc-gen-template) - [Get Box Doc Gen template by ID](#get-box-doc-gen-template-by-id) - [List all Box Doc Gen template tags in template](#list-all-box-doc-gen-template-tags-in-template) - [Get list of all Box Doc Gen jobs for template](#get-list-of-all-box-doc-gen-jobs-for-template) ## Create Box Doc Gen template Marks a file as a Box Doc Gen template. This operation is performed by calling function `createDocgenTemplateV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-templates/). ``` try await client.docgenTemplate.createDocgenTemplateV2025R0(requestBody: DocGenTemplateCreateRequestV2025R0(file: FileReferenceV2025R0(id: file.id))) ``` ### Arguments requestBody `DocGenTemplateCreateRequestV2025R0` - Request body of createDocgenTemplateV2025R0 method headers `CreateDocgenTemplateV2025R0Headers` - Headers of createDocgenTemplateV2025R0 method ### Returns This function returns a value of type `DocGenTemplateBaseV2025R0`. The file which has now been marked as a Box Doc Gen template. ## List Box Doc Gen templates Lists Box Doc Gen templates on which the user is a collaborator. This operation is performed by calling function `getDocgenTemplatesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates/). ``` try await client.docgenTemplate.getDocgenTemplatesV2025R0() ``` ### Arguments queryParams `GetDocgenTemplatesV2025R0QueryParams` - Query parameters of getDocgenTemplatesV2025R0 method headers `GetDocgenTemplatesV2025R0Headers` - Headers of getDocgenTemplatesV2025R0 method ### Returns This function returns a value of type `DocGenTemplatesV2025R0`. Returns a collection of templates. ## Delete Box Doc Gen template Unmarks file as Box Doc Gen template. This operation is performed by calling function `deleteDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-docgen-templates-id/). ``` try await client.docgenTemplate.deleteDocgenTemplateByIdV2025R0(templateId: createdDocgenTemplate.file!.id) ``` ### Arguments templateId `String` - ID of the file which will no longer be marked as a Box Doc Gen template. Example: "123" headers `DeleteDocgenTemplateByIdV2025R0Headers` - Headers of deleteDocgenTemplateByIdV2025R0 method ### Returns This function returns a value of type ``. Returns an empty response when a file is no longer marked as a Box Doc Gen template. ## Get Box Doc Gen template by ID Lists details of a specific Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id/). ``` try await client.docgenTemplate.getDocgenTemplateByIdV2025R0(templateId: createdDocgenTemplate.file!.id) ``` ### Arguments templateId `String` - The ID of a Box Doc Gen template. Example: 123 headers `GetDocgenTemplateByIdV2025R0Headers` - Headers of getDocgenTemplateByIdV2025R0 method ### Returns This function returns a value of type `DocGenTemplateV2025R0`. Returns a template. ## List all Box Doc Gen template tags in template Lists all tags in a Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateTagsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id-tags/). ``` try await client.docgenTemplate.getDocgenTemplateTagsV2025R0(templateId: fetchedDocgenTemplate.file!.id) ``` ### Arguments templateId `String` - ID of template. Example: 123 queryParams `GetDocgenTemplateTagsV2025R0QueryParams` - Query parameters of getDocgenTemplateTagsV2025R0 method headers `GetDocgenTemplateTagsV2025R0Headers` - Headers of getDocgenTemplateTagsV2025R0 method ### Returns This function returns a value of type `DocGenTagsV2025R0`. A list of document generation template tags.Processing tags for the file. ## Get list of all Box Doc Gen jobs for template Lists the users jobs which use this template. This operation is performed by calling function `getDocgenTemplateJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-template-jobs-id/). ``` try await client.docgenTemplate.getDocgenTemplateJobByIdV2025R0(templateId: fetchedDocgenTemplate.file!.id) ``` ### Arguments templateId `String` - Id of template to fetch jobs for. Example: 123 queryParams `GetDocgenTemplateJobByIdV2025R0QueryParams` - Query parameters of getDocgenTemplateJobByIdV2025R0 method headers `GetDocgenTemplateJobByIdV2025R0Headers` - Headers of getDocgenTemplateJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobsV2025R0`. A single Box Doc Gen template. --- ### DocgenTemplateManager **Type:** page | **Section:** Additional Resources DocgenTemplateManager Create Box Doc Gen template List Box Doc Gen templates Delete Box Doc Gen template Get Box Doc Gen template by ID List… # DocgenTemplateManager - [Create Box Doc Gen template](#create-box-doc-gen-template) - [List Box Doc Gen templates](#list-box-doc-gen-templates) - [Delete Box Doc Gen template](#delete-box-doc-gen-template) - [Get Box Doc Gen template by ID](#get-box-doc-gen-template-by-id) - [List all Box Doc Gen template tags in template](#list-all-box-doc-gen-template-tags-in-template) - [Get list of all Box Doc Gen jobs for template](#get-list-of-all-box-doc-gen-jobs-for-template) ## Create Box Doc Gen template Marks a file as a Box Doc Gen template. This operation is performed by calling function `createDocgenTemplateV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-templates/). ``` await client.docgenTemplate.createDocgenTemplateV2025R0({ file: new FileReferenceV2025R0({ id: file.id }), } satisfies DocGenTemplateCreateRequestV2025R0); ``` ### Arguments requestBody `DocGenTemplateCreateRequestV2025R0` - Request body of createDocgenTemplateV2025R0 method optionalsInput `CreateDocgenTemplateV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenTemplateBaseV2025R0`. The file which has now been marked as a Box Doc Gen template. ## List Box Doc Gen templates Lists Box Doc Gen templates on which the user is a collaborator. This operation is performed by calling function `getDocgenTemplatesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates/). ``` await client.docgenTemplate.getDocgenTemplatesV2025R0(); ``` ### Arguments queryParams `GetDocgenTemplatesV2025R0QueryParams` - Query parameters of getDocgenTemplatesV2025R0 method headersInput `GetDocgenTemplatesV2025R0HeadersInput` - Headers of getDocgenTemplatesV2025R0 method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `DocGenTemplatesV2025R0`. Returns a collection of templates. ## Delete Box Doc Gen template Unmarks file as Box Doc Gen template. This operation is performed by calling function `deleteDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-docgen-templates-id/). ``` await client.docgenTemplate.deleteDocgenTemplateByIdV2025R0( createdDocgenTemplate.file!.id, ); ``` ### Arguments templateId `string` - ID of the file which will no longer be marked as a Box Doc Gen template. Example: "123" optionalsInput `DeleteDocgenTemplateByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `undefined`. Returns an empty response when a file is no longer marked as a Box Doc Gen template. ## Get Box Doc Gen template by ID Lists details of a specific Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id/). ``` await client.docgenTemplate.getDocgenTemplateByIdV2025R0( createdDocgenTemplate.file!.id, ); ``` ### Arguments templateId `string` - The ID of a Box Doc Gen template. Example: 123 optionalsInput `GetDocgenTemplateByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenTemplateV2025R0`. Returns a template. ## List all Box Doc Gen template tags in template Lists all tags in a Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateTagsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id-tags/). ``` await client.docgenTemplate.getDocgenTemplateTagsV2025R0( fetchedDocgenTemplate.file!.id, ); ``` ### Arguments templateId `string` - ID of template. Example: 123 optionalsInput `GetDocgenTemplateTagsV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenTagsV2025R0`. A list of document generation template tags.Processing tags for the file. ## Get list of all Box Doc Gen jobs for template Lists the users jobs which use this template. This operation is performed by calling function `getDocgenTemplateJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-template-jobs-id/). ``` await client.docgenTemplate.getDocgenTemplateJobByIdV2025R0( fetchedDocgenTemplate.file!.id, ); ``` ### Arguments templateId `string` - Id of template to fetch jobs for. Example: 123 optionalsInput `GetDocgenTemplateJobByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `DocGenJobsV2025R0`. A single Box Doc Gen template. --- ### DocgenTemplateManager **Type:** page | **Section:** Additional Resources DocgenTemplateManager Create Box Doc Gen template List Box Doc Gen templates Delete Box Doc Gen template Get Box Doc Gen template by ID List… # DocgenTemplateManager - [Create Box Doc Gen template](#create-box-doc-gen-template) - [List Box Doc Gen templates](#list-box-doc-gen-templates) - [Delete Box Doc Gen template](#delete-box-doc-gen-template) - [Get Box Doc Gen template by ID](#get-box-doc-gen-template-by-id) - [List all Box Doc Gen template tags in template](#list-all-box-doc-gen-template-tags-in-template) - [Get list of all Box Doc Gen jobs for template](#get-list-of-all-box-doc-gen-jobs-for-template) ## Create Box Doc Gen template Marks a file as a Box Doc Gen template. This operation is performed by calling function `create_docgen_template_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-templates/). ``` client.docgen_template.create_docgen_template_v2025_r0(FileReferenceV2025R0(id=file.id)) ``` ### Arguments - file `FileReferenceV2025R0` box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenTemplateBaseV2025R0`. The file which has now been marked as a Box Doc Gen template. ## List Box Doc Gen templates Lists Box Doc Gen templates on which the user is a collaborator. This operation is performed by calling function `get_docgen_templates_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates/). ``` client.docgen_template.get_docgen_templates_v2025_r0() ``` ### Arguments marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenTemplatesV2025R0`. Returns a collection of templates. ## Delete Box Doc Gen template Unmarks file as Box Doc Gen template. This operation is performed by calling function `delete_docgen_template_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-docgen-templates-id/). ``` client.docgen_template.delete_docgen_template_by_id_v2025_r0( created_docgen_template.file.id ) ``` ### Arguments template_id `str` - ID of the file which will no longer be marked as a Box Doc Gen template. Example: "123" box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Returns an empty response when a file is no longer marked as a Box Doc Gen template. ## Get Box Doc Gen template by ID Lists details of a specific Box Doc Gen template. This operation is performed by calling function `get_docgen_template_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id/). ``` client.docgen_template.get_docgen_template_by_id_v2025_r0( created_docgen_template.file.id ) ``` ### Arguments template_id `str` - The ID of a Box Doc Gen template. Example: 123 box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenTemplateV2025R0`. Returns a template. ## List all Box Doc Gen template tags in template Lists all tags in a Box Doc Gen template. This operation is performed by calling function `get_docgen_template_tags_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id-tags/). ``` client.docgen_template.get_docgen_template_tags_v2025_r0( fetched_docgen_template.file.id ) ``` ### Arguments template_id `str` - ID of template. Example: 123 template_version_id `Optional[str]` - Id of template version. marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenTagsV2025R0`. A list of document generation template tags.Processing tags for the file. ## Get list of all Box Doc Gen jobs for template Lists the users jobs which use this template. This operation is performed by calling function `get_docgen_template_job_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-template-jobs-id/). ``` client.docgen_template.get_docgen_template_job_by_id_v2025_r0( fetched_docgen_template.file.id ) ``` ### Arguments template_id `str` - Id of template to fetch jobs for. Example: 123 marker `Optional[str]` - Defines the position marker at which to begin returning results. This is used when paginating using marker-based pagination. This requires `usemarker` to be set to `true`. limit `Optional[int]` - The maximum number of items to return per page. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `DocGenJobsV2025R0`. A single Box Doc Gen template. --- ### DocgenTemplateManager **Type:** page | **Section:** Additional Resources DocgenTemplateManager Create Box Doc Gen template List Box Doc Gen templates Delete Box Doc Gen template Get Box Doc Gen template by ID List… # DocgenTemplateManager - [Create Box Doc Gen template](#create-box-doc-gen-template) - [List Box Doc Gen templates](#list-box-doc-gen-templates) - [Delete Box Doc Gen template](#delete-box-doc-gen-template) - [Get Box Doc Gen template by ID](#get-box-doc-gen-template-by-id) - [List all Box Doc Gen template tags in template](#list-all-box-doc-gen-template-tags-in-template) - [Get list of all Box Doc Gen jobs for template](#get-list-of-all-box-doc-gen-jobs-for-template) ## Create Box Doc Gen template Marks a file as a Box Doc Gen template. This operation is performed by calling function `createDocgenTemplateV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-templates/). ``` try await client.docgenTemplate.createDocgenTemplateV2025R0(requestBody: DocGenTemplateCreateRequestV2025R0(file: FileReferenceV2025R0(id: file.id))) ``` ### Arguments requestBody `DocGenTemplateCreateRequestV2025R0` - Request body of createDocgenTemplateV2025R0 method headers `CreateDocgenTemplateV2025R0Headers` - Headers of createDocgenTemplateV2025R0 method ### Returns This function returns a value of type `DocGenTemplateBaseV2025R0`. The file which has now been marked as a Box Doc Gen template. ## List Box Doc Gen templates Lists Box Doc Gen templates on which the user is a collaborator. This operation is performed by calling function `getDocgenTemplatesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates/). ``` try await client.docgenTemplate.getDocgenTemplatesV2025R0() ``` ### Arguments queryParams `GetDocgenTemplatesV2025R0QueryParams` - Query parameters of getDocgenTemplatesV2025R0 method headers `GetDocgenTemplatesV2025R0Headers` - Headers of getDocgenTemplatesV2025R0 method ### Returns This function returns a value of type `DocGenTemplatesV2025R0`. Returns a collection of templates. ## Delete Box Doc Gen template Unmarks file as Box Doc Gen template. This operation is performed by calling function `deleteDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-docgen-templates-id/). ``` try await client.docgenTemplate.deleteDocgenTemplateByIdV2025R0(templateId: createdDocgenTemplate.file!.id) ``` ### Arguments templateId `String` - ID of the file which will no longer be marked as a Box Doc Gen template. Example: "123" headers `DeleteDocgenTemplateByIdV2025R0Headers` - Headers of deleteDocgenTemplateByIdV2025R0 method ### Returns This function returns a value of type ``. Returns an empty response when a file is no longer marked as a Box Doc Gen template. ## Get Box Doc Gen template by ID Lists details of a specific Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id/). ``` try await client.docgenTemplate.getDocgenTemplateByIdV2025R0(templateId: createdDocgenTemplate.file!.id) ``` ### Arguments templateId `String` - The ID of a Box Doc Gen template. Example: 123 headers `GetDocgenTemplateByIdV2025R0Headers` - Headers of getDocgenTemplateByIdV2025R0 method ### Returns This function returns a value of type `DocGenTemplateV2025R0`. Returns a template. ## List all Box Doc Gen template tags in template Lists all tags in a Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateTagsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id-tags/). ``` try await client.docgenTemplate.getDocgenTemplateTagsV2025R0(templateId: fetchedDocgenTemplate.file!.id) ``` ### Arguments templateId `String` - ID of template. Example: 123 queryParams `GetDocgenTemplateTagsV2025R0QueryParams` - Query parameters of getDocgenTemplateTagsV2025R0 method headers `GetDocgenTemplateTagsV2025R0Headers` - Headers of getDocgenTemplateTagsV2025R0 method ### Returns This function returns a value of type `DocGenTagsV2025R0`. A list of document generation template tags.Processing tags for the file. ## Get list of all Box Doc Gen jobs for template Lists the users jobs which use this template. This operation is performed by calling function `getDocgenTemplateJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-template-jobs-id/). ``` try await client.docgenTemplate.getDocgenTemplateJobByIdV2025R0(templateId: fetchedDocgenTemplate.file!.id) ``` ### Arguments templateId `String` - Id of template to fetch jobs for. Example: 123 queryParams `GetDocgenTemplateJobByIdV2025R0QueryParams` - Query parameters of getDocgenTemplateJobByIdV2025R0 method headers `GetDocgenTemplateJobByIdV2025R0Headers` - Headers of getDocgenTemplateJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobsV2025R0`. A single Box Doc Gen template. --- ### DocgenTemplateManager **Type:** page | **Section:** Additional Resources DocgenTemplateManager Create Box Doc Gen template List Box Doc Gen templates Delete Box Doc Gen template Get Box Doc Gen template by ID List… # DocgenTemplateManager - [Create Box Doc Gen template](#create-box-doc-gen-template) - [List Box Doc Gen templates](#list-box-doc-gen-templates) - [Delete Box Doc Gen template](#delete-box-doc-gen-template) - [Get Box Doc Gen template by ID](#get-box-doc-gen-template-by-id) - [List all Box Doc Gen template tags in template](#list-all-box-doc-gen-template-tags-in-template) - [Get list of all Box Doc Gen jobs for template](#get-list-of-all-box-doc-gen-jobs-for-template) ## Create Box Doc Gen template Marks a file as a Box Doc Gen template. This operation is performed by calling function `createDocgenTemplateV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/post-docgen-templates/). ``` client.getDocgenTemplate().createDocgenTemplateV2025R0(new DocGenTemplateCreateRequestV2025R0(new FileReferenceV2025R0(file.getId()))) ``` ### Arguments requestBody `DocGenTemplateCreateRequestV2025R0` - Request body of createDocgenTemplateV2025R0 method headers `CreateDocgenTemplateV2025R0Headers` - Headers of createDocgenTemplateV2025R0 method ### Returns This function returns a value of type `DocGenTemplateBaseV2025R0`. The file which has now been marked as a Box Doc Gen template. ## List Box Doc Gen templates Lists Box Doc Gen templates on which the user is a collaborator. This operation is performed by calling function `getDocgenTemplatesV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates/). ``` client.getDocgenTemplate().getDocgenTemplatesV2025R0() ``` ### Arguments queryParams `GetDocgenTemplatesV2025R0QueryParams` - Query parameters of getDocgenTemplatesV2025R0 method headers `GetDocgenTemplatesV2025R0Headers` - Headers of getDocgenTemplatesV2025R0 method ### Returns This function returns a value of type `DocGenTemplatesV2025R0`. Returns a collection of templates. ## Delete Box Doc Gen template Unmarks file as Box Doc Gen template. This operation is performed by calling function `deleteDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/delete-docgen-templates-id/). ``` client.getDocgenTemplate().deleteDocgenTemplateByIdV2025R0(createdDocgenTemplate.getFile().getId()) ``` ### Arguments templateId `String` - ID of the file which will no longer be marked as a Box Doc Gen template. Example: "123" headers `DeleteDocgenTemplateByIdV2025R0Headers` - Headers of deleteDocgenTemplateByIdV2025R0 method ### Returns This function returns a value of type `void`. Returns an empty response when a file is no longer marked as a Box Doc Gen template. ## Get Box Doc Gen template by ID Lists details of a specific Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id/). ``` client.getDocgenTemplate().getDocgenTemplateByIdV2025R0(createdDocgenTemplate.getFile().getId()) ``` ### Arguments templateId `String` - The ID of a Box Doc Gen template. Example: 123 headers `GetDocgenTemplateByIdV2025R0Headers` - Headers of getDocgenTemplateByIdV2025R0 method ### Returns This function returns a value of type `DocGenTemplateV2025R0`. Returns a template. ## List all Box Doc Gen template tags in template Lists all tags in a Box Doc Gen template. This operation is performed by calling function `getDocgenTemplateTagsV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-templates-id-tags/). ``` client.getDocgenTemplate().getDocgenTemplateTagsV2025R0(fetchedDocgenTemplate.getFile().getId()) ``` ### Arguments templateId `String` - ID of template. Example: 123 queryParams `GetDocgenTemplateTagsV2025R0QueryParams` - Query parameters of getDocgenTemplateTagsV2025R0 method headers `GetDocgenTemplateTagsV2025R0Headers` - Headers of getDocgenTemplateTagsV2025R0 method ### Returns This function returns a value of type `DocGenTagsV2025R0`. A list of document generation template tags.Processing tags for the file. ## Get list of all Box Doc Gen jobs for template Lists the users jobs which use this template. This operation is performed by calling function `getDocgenTemplateJobByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-docgen-template-jobs-id/). ``` client.getDocgenTemplate().getDocgenTemplateJobByIdV2025R0(fetchedDocgenTemplate.getFile().getId()) ``` ### Arguments templateId `String` - Id of template to fetch jobs for. Example: 123 queryParams `GetDocgenTemplateJobByIdV2025R0QueryParams` - Query parameters of getDocgenTemplateJobByIdV2025R0 method headers `GetDocgenTemplateJobByIdV2025R0Headers` - Headers of getDocgenTemplateJobByIdV2025R0 method ### Returns This function returns a value of type `DocGenJobsV2025R0`. A single Box Doc Gen template. --- ### Documentation **Type:** page | **Section:** Additional Resources Documentation High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available… # Documentation ## High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available by topic: - [Ai](https://ja.developer.box.com/17d6d3514dc89bc0fa3bea04f3c23bc3/ai.md) - [Ai studio](https://ja.developer.box.com/8822997d67c91efdef77e9832080d4e1/aiStudio.md) - [App item associations](https://ja.developer.box.com/4034943d9e64ff39152dc3139f382930/appItemAssociations.md) - [Archives](https://ja.developer.box.com/19a6fd577a4b2864712efbf198aeb074/archives.md) - [Authorization](https://ja.developer.box.com/54db4bdfd48f3a6ec39ff167cf37866f/authorization.md) - [Avatars](https://ja.developer.box.com/7c3b30e7558d2a2b891bff3612cf9c5a/avatars.md) - [Chunked uploads](https://ja.developer.box.com/389ec9827494b0b3ac9c2912ba2a2088/chunkedUploads.md) - [Classifications](https://ja.developer.box.com/7cd4dee4c8a39f7c49339926c04a1727/classifications.md) - [Collaboration allowlist entries](https://ja.developer.box.com/fefd69a7143c658da785ee8faf12e287/collaborationAllowlistEntries.md) - [Collaboration allowlist exempt targets](https://ja.developer.box.com/786501d756036bb7e91c363f879c6bbf/collaborationAllowlistExemptTargets.md) - [Collections](https://ja.developer.box.com/387abdb9c87dbbca0a7976c7e646f0bc/collections.md) - [Comments](https://ja.developer.box.com/5d89e1ff5d912ce9d6080560dbadbc14/comments.md) - [Device pinners](https://ja.developer.box.com/4ca72e5d948fc5485c6323931210c54d/devicePinners.md) - [Docgen](https://ja.developer.box.com/e285455ecc4ef359e25f73bb9e773187/docgen.md) - [Docgen template](https://ja.developer.box.com/ff7ab59ba903f6dc3bf5bd0548a55be3/docgenTemplate.md) - [Downloads](https://ja.developer.box.com/80f4868fdb960ff18c3bba8461ccefbb/downloads.md) - [Email aliases](https://ja.developer.box.com/ceaf283ee1976470bad67502d0c28b2d/emailAliases.md) - [Enterprise configurations](https://ja.developer.box.com/d5d8f79003e1ca62e6dd1cee99240ba7/enterpriseConfigurations.md) - [Events](https://ja.developer.box.com/387ce8cd898209498d3e54a6f55b5ba0/events.md) - [External users](https://ja.developer.box.com/9149b15be437fcdbb2db5e41a743d5f9/externalUsers.md) - [File classifications](https://ja.developer.box.com/167f08e301ea6c001265fba1e76c2c96/fileClassifications.md) - [File metadata](https://ja.developer.box.com/94ee1bf2763b45f6153f538236dc1612/fileMetadata.md) - [File requests](https://ja.developer.box.com/575355bac34130141841d217f6a657b0/fileRequests.md) - [File version legal holds](https://ja.developer.box.com/4ef97fec6c26bafa9ce8404356a5149c/fileVersionLegalHolds.md) - [File version retentions](https://ja.developer.box.com/efaf20ec4855b7db6e15682d9a7b0712/fileVersionRetentions.md) - [File versions](https://ja.developer.box.com/d8a439784c0923e94e5c2956438aaacf/fileVersions.md) - [File watermarks](https://ja.developer.box.com/57cf27e58b81c4f89366758c08ba5447/fileWatermarks.md) - [Files](https://ja.developer.box.com/f9349ca2388e93725d2ea6ab4a01fb21/files.md) - [Folder classifications](https://ja.developer.box.com/381e7a37b9c5e10f49114be777a6298c/folderClassifications.md) - [Folder locks](https://ja.developer.box.com/8a8fc37fc424948206c922024d88b576/folderLocks.md) - [Folder metadata](https://ja.developer.box.com/90c6a5cae9698e12462d169cd99fa132/folderMetadata.md) - [Folder watermarks](https://ja.developer.box.com/89888806b209dd3b28963340156b9605/folderWatermarks.md) - [Folders](https://ja.developer.box.com/f1f871579843955f34ddab4b1ff873eb/folders.md) - [Groups](https://ja.developer.box.com/9852d820fbf91c6823cd938abf5ff29b/groups.md) - [Hub collaborations](https://ja.developer.box.com/044f3759ad2dcb9778409186b3b00914/hubCollaborations.md) - [Hub items](https://ja.developer.box.com/6260f2aeb7c5ca22d5aa4a856b2a1866/hubItems.md) - [Hubs](https://ja.developer.box.com/b3c896af954c02aa4926a5ee55975838/hubs.md) - [Integration mappings](https://ja.developer.box.com/ea609e4da1a3e8be97f5cd3d8bfc8ec7/integrationMappings.md) - [Invites](https://ja.developer.box.com/570713a7f115e71ef94d2a31f91799d1/invites.md) - [Legal hold policies](https://ja.developer.box.com/f3c35a6cf28e239368a70c608a3b5eeb/legalHoldPolicies.md) - [Legal hold policy assignments](https://ja.developer.box.com/766e57e7ae862c1295aa97ebec2108e3/legalHoldPolicyAssignments.md) - [List collaborations](https://ja.developer.box.com/460f4df77c97e7a9dfe2771e42552f41/listCollaborations.md) - [Memberships](https://ja.developer.box.com/f9c0cc93abbed99477cb81bc2cee32f7/memberships.md) - [Metadata cascade policies](https://ja.developer.box.com/9de5dfde89750a42b5bef529b8d2b473/metadataCascadePolicies.md) - [Metadata taxonomies](https://ja.developer.box.com/6ce3c8b29b043222e8f19837d252fa63/metadataTaxonomies.md) - [Metadata templates](https://ja.developer.box.com/4b660eca31fb1d104018b476be30fc93/metadataTemplates.md) - [Recent items](https://ja.developer.box.com/e8464b93cdec65c4240e9a81184537dd/recentItems.md) - [Retention policies](https://ja.developer.box.com/4e5d789921f45688d198727e3c819442/retentionPolicies.md) - [Retention policy assignments](https://ja.developer.box.com/2a31d25ec24ac3f250d27f7747c03e1b/retentionPolicyAssignments.md) - [Search](https://ja.developer.box.com/a8858ba690486e321c9779dccb0bff51/search.md) - [Session termination](https://ja.developer.box.com/008b747050b6524e6f57d8171f0ee468/sessionTermination.md) - [Shared links app items](https://ja.developer.box.com/b309bf564a6ff77fb7febda29f0450ae/sharedLinksAppItems.md) - [Shared links files](https://ja.developer.box.com/63dbc250e82521bacec64f9131840628/sharedLinksFiles.md) - [Shared links folders](https://ja.developer.box.com/f41a61a94c970f9780a93ebf59659dde/sharedLinksFolders.md) - [Shared links web links](https://ja.developer.box.com/273993f9ac7054ef527aa10d984fcdf2/sharedLinksWebLinks.md) - [Shield information barrier reports](https://ja.developer.box.com/3bc57ac1d4eaf4eca2d5d769ee84fdf1/shieldInformationBarrierReports.md) - [Shield information barrier segment members](https://ja.developer.box.com/7519790d3212be1e03e5ea77974af8e6/shieldInformationBarrierSegmentMembers.md) - [Shield information barrier segment restrictions](https://ja.developer.box.com/f0ec9d47cec408877261f55b58fc45e1/shieldInformationBarrierSegmentRestrictions.md) - [Shield information barrier segments](https://ja.developer.box.com/41b908f45bb5085e90cd70d1ba67a542/shieldInformationBarrierSegments.md) - [Shield information barriers](https://ja.developer.box.com/e3c23e60a043f54945a1dd9a63eb3852/shieldInformationBarriers.md) - [Shield lists](https://ja.developer.box.com/4d261bc4440e84e5b99f721eeb2956cc/shieldLists.md) - [Sign requests](https://ja.developer.box.com/07171b3c0c1cf0495a9aa54fa1c12c89/signRequests.md) - [Sign templates](https://ja.developer.box.com/6e4e135ed584d32f8c8fcd3dfcf258fe/signTemplates.md) - [Skills](https://ja.developer.box.com/2069b036c3e063717f1ba5c295b69369/skills.md) - [Storage policies](https://ja.developer.box.com/9d06b1b430c4a84e5e11b5f3b8c3d472/storagePolicies.md) - [Storage policy assignments](https://ja.developer.box.com/77a6621be0c09237fa869d5366ce04a1/storagePolicyAssignments.md) - [Task assignments](https://ja.developer.box.com/fd631f75e820875193cccb1cb27e5617/taskAssignments.md) - [Tasks](https://ja.developer.box.com/116e16a33227b329ae30ac6a68f9b316/tasks.md) - [Terms of service user statuses](https://ja.developer.box.com/86f8d1fe48e9b4bc997a4dfdd1c5b578/termsOfServiceUserStatuses.md) - [Terms of services](https://ja.developer.box.com/3f9018652046f755ba2c4f482bcec9c3/termsOfServices.md) - [Transfer](https://ja.developer.box.com/3d2395fc699628e7ea427a024b9fe346/transfer.md) - [Trashed files](https://ja.developer.box.com/165a3995e3c2b2f6ed2c0c99d1e67dcc/trashedFiles.md) - [Trashed folders](https://ja.developer.box.com/361643440109850bb42589ac942cd9ab/trashedFolders.md) - [Trashed items](https://ja.developer.box.com/48aa1a5148c0149fffb3a64456a822f0/trashedItems.md) - [Trashed web links](https://ja.developer.box.com/348ae3e1fa3897632a53b9ee47955033/trashedWebLinks.md) - [Uploads](https://ja.developer.box.com/05b776ce26018b8d33b958a8ee419e8b/uploads.md) - [User collaborations](https://ja.developer.box.com/a427e667575ac3b981cb1f0052eca40b/userCollaborations.md) - [Users](https://ja.developer.box.com/77735260cf833430419a8313f6d8144f/users.md) - [Web links](https://ja.developer.box.com/eeb85371c138f2c0492fc01a22eb5424/webLinks.md) - [Webhooks](https://ja.developer.box.com/b7cfc413355f7af7206ec4e1f9d71828/webhooks.md) - [Workflows](https://ja.developer.box.com/d10e200014d42126c441e15bff385374/workflows.md) - [Zip downloads](https://ja.developer.box.com/41962cfb3bc656385407cc76127605c0/zipDownloads.md) --- ### Documentation **Type:** page | **Section:** Additional Resources Documentation High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available… # Documentation ## High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available by topic: - [Ai](https://ja.developer.box.com/f51edeb0e9ed552c4187a402d9f98f1c/ai.md) - [Aistudio](https://ja.developer.box.com/fa2d3be0c146c06c8c58f985db6475b6/aistudio.md) - [Appitemassociations](https://ja.developer.box.com/85856398ed7d5c853d641b74caaca122/appitemassociations.md) - [Archives](https://ja.developer.box.com/8993509d495d468e21ad0b89d4eeb961/archives.md) - [Authorization](https://ja.developer.box.com/e7dc87f3544ce5b0fe8f08b557128d58/authorization.md) - [Avatars](https://ja.developer.box.com/fd145549136dcb0a9e11fe6034847a1c/avatars.md) - [Chunkeduploads](https://ja.developer.box.com/bd63c4d75b1ed05b7fc926f221ad3fe1/chunkeduploads.md) - [Classifications](https://ja.developer.box.com/4ca4df76aa5144810dace8e84b0f6b45/classifications.md) - [Collaborationallowlistentries](https://ja.developer.box.com/71bb138bfca1ea3387dfe19ac0639247/collaborationallowlistentries.md) - [Collaborationallowlistexempttargets](https://ja.developer.box.com/572fad0c8059c8d1c36da673481d6d4b/collaborationallowlistexempttargets.md) - [Collections](https://ja.developer.box.com/e4cfdb96dde46c847e36333380084e90/collections.md) - [Comments](https://ja.developer.box.com/5c33921f78e20d1b81f52c4f96fc49e8/comments.md) - [Devicepinners](https://ja.developer.box.com/997dc738393181b6bea47214a8ae6151/devicepinners.md) - [Docgen](https://ja.developer.box.com/bd43403db154db86833707141e6d2acc/docgen.md) - [Docgentemplate](https://ja.developer.box.com/2205b28a3cd3e0f0f62afe664b7a5460/docgentemplate.md) - [Downloads](https://ja.developer.box.com/275ce6d012022de1cff7d6c260c32fc1/downloads.md) - [Emailaliases](https://ja.developer.box.com/13d5f1b719753acd7397f0226e047035/emailaliases.md) - [Enterpriseconfigurations](https://ja.developer.box.com/8cbf30e56531c5dbfa428301143beaa4/enterpriseconfigurations.md) - [Events](https://ja.developer.box.com/556f1d9577d462add9a7b724afc99d51/events.md) - [Externalusers](https://ja.developer.box.com/8afbec63f722e961a34f395d18658da4/externalusers.md) - [Fileclassifications](https://ja.developer.box.com/388e0106ae9ab177124b291de3a54a06/fileclassifications.md) - [Filemetadata](https://ja.developer.box.com/615580d54690d9e5d54f1444cf3ca8de/filemetadata.md) - [Filerequests](https://ja.developer.box.com/a8faeceec641bd9651cba877685f0574/filerequests.md) - [Files](https://ja.developer.box.com/6116446df6c48a4f6c573e19f7837b05/files.md) - [Fileversionlegalholds](https://ja.developer.box.com/8e6226fef8570d0f624c146be2b0251f/fileversionlegalholds.md) - [Fileversionretentions](https://ja.developer.box.com/760651b3a7c8b2d4509cd004a8d86046/fileversionretentions.md) - [Fileversions](https://ja.developer.box.com/3135b1d34bd483c7c9308dac7c11560a/fileversions.md) - [Filewatermarks](https://ja.developer.box.com/f1aa57f4b9c2692a953105262df9dfc8/filewatermarks.md) - [Folderclassifications](https://ja.developer.box.com/b705acfcd1309c02d81279143764576f/folderclassifications.md) - [Folderlocks](https://ja.developer.box.com/e7bab8893ba0270ed64b859df253b941/folderlocks.md) - [Foldermetadata](https://ja.developer.box.com/23c7ecfb1e70cbc6b9548b23b36806a6/foldermetadata.md) - [Folders](https://ja.developer.box.com/e911b39de68fc269e066767cc8fdb1d9/folders.md) - [Folderwatermarks](https://ja.developer.box.com/8b89b08d0a164d2ab84c7fad7052105e/folderwatermarks.md) - [Groups](https://ja.developer.box.com/5340618d953cb195925cc49a49fb3cae/groups.md) - [Hubcollaborations](https://ja.developer.box.com/dc0147f170a09ab5d6fb5d5da34fe7b5/hubcollaborations.md) - [Hubitems](https://ja.developer.box.com/0e057c35026ba8cecdb895408e673c10/hubitems.md) - [Hubs](https://ja.developer.box.com/a4547fe7d204a419ab6ce4bcd69639fa/hubs.md) - [Integrationmappings](https://ja.developer.box.com/d3608783843bf3ab3e123a86329d313d/integrationmappings.md) - [Invites](https://ja.developer.box.com/be73744888a25b129f1d7825a7e3dfc9/invites.md) - [Legalholdpolicies](https://ja.developer.box.com/520eb3d80bc63080848a7dcd0bbfe46b/legalholdpolicies.md) - [Legalholdpolicyassignments](https://ja.developer.box.com/a7ea003be24c1102f3f7c395d092187c/legalholdpolicyassignments.md) - [Listcollaborations](https://ja.developer.box.com/3c91fadbb61cf1d040da3502dfc59e04/listcollaborations.md) - [Memberships](https://ja.developer.box.com/4ca38d921501f32d38c17646224bbf48/memberships.md) - [Metadatacascadepolicies](https://ja.developer.box.com/c536763ae55a5653f4ecc8237931c371/metadatacascadepolicies.md) - [Metadatataxonomies](https://ja.developer.box.com/303105f880a3718cab1adbfb8a96a6ce/metadatataxonomies.md) - [Metadatatemplates](https://ja.developer.box.com/2c952b95509e7d56689d7b7c05df8ca4/metadatatemplates.md) - [Recentitems](https://ja.developer.box.com/614ddb4bdf92189c2e2e6ae044d5b6c1/recentitems.md) - [Retentionpolicies](https://ja.developer.box.com/256a5da6e2760654b626684b7d52207c/retentionpolicies.md) - [Retentionpolicyassignments](https://ja.developer.box.com/f459d6ab4a4f2ff17b9e2e75308d32e1/retentionpolicyassignments.md) - [Search](https://ja.developer.box.com/e9c9c63219f963d506b71c68119cedcf/search.md) - [Sessiontermination](https://ja.developer.box.com/65edb887c7d8dcd83a645b59a8c46f59/sessiontermination.md) - [Sharedlinksappitems](https://ja.developer.box.com/d8ba79121d7f8ce2c82a07bb3f1b69cc/sharedlinksappitems.md) - [Sharedlinksfiles](https://ja.developer.box.com/bfbc782c303925a0072caf21ee600683/sharedlinksfiles.md) - [Sharedlinksfolders](https://ja.developer.box.com/22577ede84a66f86f549ec3f01043a05/sharedlinksfolders.md) - [Sharedlinksweblinks](https://ja.developer.box.com/86e2ac7a5bed03ecd336b7f270a3304f/sharedlinksweblinks.md) - [Shieldinformationbarrierreports](https://ja.developer.box.com/0364b7ccf11087c30fd01cb3d83fe5cf/shieldinformationbarrierreports.md) - [Shieldinformationbarriers](https://ja.developer.box.com/247235b29132fa9cc0e56122442d45c9/shieldinformationbarriers.md) - [Shieldinformationbarriersegmentmembers](https://ja.developer.box.com/88dfa1c093c9987a692145a709cc9768/shieldinformationbarriersegmentmembers.md) - [Shieldinformationbarriersegmentrestrictions](https://ja.developer.box.com/ac0d7fa59520a072894bed726203defa/shieldinformationbarriersegmentrestrictions.md) - [Shieldinformationbarriersegments](https://ja.developer.box.com/d416676f5bdc63073a0769713f43de48/shieldinformationbarriersegments.md) - [Shieldlists](https://ja.developer.box.com/55f00b5f5fe4195f85b00785a0db2f6b/shieldlists.md) - [Signrequests](https://ja.developer.box.com/e7f9e20f2e50007ab91ccc7e02f94417/signrequests.md) - [Signtemplates](https://ja.developer.box.com/be3e240ab326283907d771b284781009/signtemplates.md) - [Skills](https://ja.developer.box.com/f26d39ba616089c327cc6584f0ae47ca/skills.md) - [Storagepolicies](https://ja.developer.box.com/a2712cd5a1f86fc34c74001920d32c0e/storagepolicies.md) - [Storagepolicyassignments](https://ja.developer.box.com/fc7ddf2c255ed81e4bd713988d5ab0cd/storagepolicyassignments.md) - [Taskassignments](https://ja.developer.box.com/d8945b755387ae48269013f7edb0fd04/taskassignments.md) - [Tasks](https://ja.developer.box.com/8df11c3da98dc1845e65f3c5d394deaa/tasks.md) - [Termsofservices](https://ja.developer.box.com/f5b6328dd46e8848971a39edc636f846/termsofservices.md) - [Termsofserviceuserstatuses](https://ja.developer.box.com/cedace8955ea8386a594561065ddf445/termsofserviceuserstatuses.md) - [Transfer](https://ja.developer.box.com/d53fc10748cea3bfbe35519739e3163b/transfer.md) - [Trashedfiles](https://ja.developer.box.com/4b1f75379e4b3780495c500e690826eb/trashedfiles.md) - [Trashedfolders](https://ja.developer.box.com/a2186d83557af7ff803bc2adf54b5165/trashedfolders.md) - [Trasheditems](https://ja.developer.box.com/14bb21e4093e736a1dc37e48abcde43f/trasheditems.md) - [Trashedweblinks](https://ja.developer.box.com/3200803434a63dac4a2f5c15dca95acd/trashedweblinks.md) - [Uploads](https://ja.developer.box.com/07cade95cf4f09fd6c250ef6a340a8fa/uploads.md) - [Usercollaborations](https://ja.developer.box.com/ffcdbd10376fdcbeaeb639fe9c3c7997/usercollaborations.md) - [Users](https://ja.developer.box.com/a84f47e755917c13acc89ce98c54a1f4/users.md) - [Webhooks](https://ja.developer.box.com/361f9b686eb003437b76ba31889a6b30/webhooks.md) - [Weblinks](https://ja.developer.box.com/b3c5748c2a0d9e6445fea45b7cfa99fb/weblinks.md) - [Workflows](https://ja.developer.box.com/3c1a2bf21694518697961d88c0b0f848/workflows.md) - [Zipdownloads](https://ja.developer.box.com/e04a0fda7b7caf63883871cd53334999/zipdownloads.md) --- ### Documentation **Type:** page | **Section:** Additional Resources Documentation High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available… # Documentation ## High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available by topic: - [Ai](https://ja.developer.box.com/7dbebcc255e036be23c3d69e178d7a31/ai.md) - [Ai studio](https://ja.developer.box.com/d2fc436ac21a939f957804200fd51573/ai_studio.md) - [App item associations](https://ja.developer.box.com/3fe11188dfa3635fd55a7aeb7686ea0b/app_item_associations.md) - [Archives](https://ja.developer.box.com/3904578aa192188853ccb184e39d1469/archives.md) - [Authorization](https://ja.developer.box.com/59f4e8c23b4987ec1bc1f0e9bd7ab180/authorization.md) - [Avatars](https://ja.developer.box.com/835511e98f383f1cbcf689229c7da2ba/avatars.md) - [Chunked uploads](https://ja.developer.box.com/6e423824607bc975dbed209439a46273/chunked_uploads.md) - [Classifications](https://ja.developer.box.com/cdf5e5e0c239360f75fe50b4b657f8d5/classifications.md) - [Collaboration allowlist entries](https://ja.developer.box.com/74a70dbaba7d04ba57e696fe4437068c/collaboration_allowlist_entries.md) - [Collaboration allowlist exempt targets](https://ja.developer.box.com/204645934a033b7eb2c9cef9ea19c614/collaboration_allowlist_exempt_targets.md) - [Collections](https://ja.developer.box.com/3cfdf1ea1b847b61221ada88462f5554/collections.md) - [Comments](https://ja.developer.box.com/668e8f09c4fdeef337b7ac1c262001e1/comments.md) - [Device pinners](https://ja.developer.box.com/b4ed6470194d72582bfe8f541dab93ef/device_pinners.md) - [Docgen](https://ja.developer.box.com/875276eaa844930387f70b34b89ab570/docgen.md) - [Docgen template](https://ja.developer.box.com/6a6b103a64e8ff15d5cc2a6b577bc1ab/docgen_template.md) - [Downloads](https://ja.developer.box.com/84c63835f09fe5fccbb4227ced85ff56/downloads.md) - [Email aliases](https://ja.developer.box.com/3180baa385460a64185c867e53196285/email_aliases.md) - [Enterprise configurations](https://ja.developer.box.com/e2fac990876c2548adc5b74cc43d9193/enterprise_configurations.md) - [Events](https://ja.developer.box.com/3c73dfaf1d87afdff536a2f79f306cab/events.md) - [External users](https://ja.developer.box.com/f301896aef952dfe72df22c023577049/external_users.md) - [File classifications](https://ja.developer.box.com/53200f5d5fd330c6545ba8349ae02001/file_classifications.md) - [File metadata](https://ja.developer.box.com/ca1f7e0b34cf2bfc24ed988515c8bd03/file_metadata.md) - [File requests](https://ja.developer.box.com/527311a9e6fc596c5a59ca58625c8e61/file_requests.md) - [File version legal holds](https://ja.developer.box.com/14bbcbe0aba045c5337cc55fbba52303/file_version_legal_holds.md) - [File version retentions](https://ja.developer.box.com/377a4b47237ea1e567739b3009b04d2e/file_version_retentions.md) - [File versions](https://ja.developer.box.com/af153e4b6c0172cdb13f060ac82e7482/file_versions.md) - [File watermarks](https://ja.developer.box.com/3a5a549b5e5c0bf4ea5acb108cb922a2/file_watermarks.md) - [Files](https://ja.developer.box.com/25fdc5d1bd34f7452c63a62401382d73/files.md) - [Folder classifications](https://ja.developer.box.com/e60035cb2782aac3684c90091bd17751/folder_classifications.md) - [Folder locks](https://ja.developer.box.com/a7b5efca17c684f1601b9c29827bdf61/folder_locks.md) - [Folder metadata](https://ja.developer.box.com/6ecbeb87207ab032aeb34fea39c31693/folder_metadata.md) - [Folder watermarks](https://ja.developer.box.com/dad5e85c61ce5e5bb088e1735fcd32cf/folder_watermarks.md) - [Folders](https://ja.developer.box.com/2ffc92b653dd0b07b8296508f3971b98/folders.md) - [Groups](https://ja.developer.box.com/19c77e92519e0a377c60c8dda9c7d349/groups.md) - [Hub collaborations](https://ja.developer.box.com/5c159a82ffa1b932a0cdeb54fa7abec0/hub_collaborations.md) - [Hub items](https://ja.developer.box.com/1c55f844f26b6dd4a58e9b39c36da5e8/hub_items.md) - [Hubs](https://ja.developer.box.com/7fee2de8cd9f8bb0e6611c801c677d31/hubs.md) - [Integration mappings](https://ja.developer.box.com/7c4cb93f5abbc92622f1d06dc4ff0a48/integration_mappings.md) - [Invites](https://ja.developer.box.com/e8d87e010425e6b27fc254653694500f/invites.md) - [Legal hold policies](https://ja.developer.box.com/cc1ffb63a81826d05ca3a4950e63f8e3/legal_hold_policies.md) - [Legal hold policy assignments](https://ja.developer.box.com/2b6c038eab6a8600f9f6b532ed3532a0/legal_hold_policy_assignments.md) - [List collaborations](https://ja.developer.box.com/bf50c526ea161dafbd5382843fe2617e/list_collaborations.md) - [Memberships](https://ja.developer.box.com/fabf5a724fe1d6758e5433a6fa755617/memberships.md) - [Metadata cascade policies](https://ja.developer.box.com/078273d0a1a0867d6a6b99bf350e50d5/metadata_cascade_policies.md) - [Metadata taxonomies](https://ja.developer.box.com/3880d1aadfe8eed4f10d5e73afd502c5/metadata_taxonomies.md) - [Metadata templates](https://ja.developer.box.com/af2c8cef2f3d9fa291a686879e21b30b/metadata_templates.md) - [Recent items](https://ja.developer.box.com/5421143128a2076837c5c40e082fff9b/recent_items.md) - [Retention policies](https://ja.developer.box.com/e47f383b8d4d6865c6f3478c1fcb90d4/retention_policies.md) - [Retention policy assignments](https://ja.developer.box.com/883337653a1c49f9bd592ede24cfb143/retention_policy_assignments.md) - [Search](https://ja.developer.box.com/c51786b6c3ac8a6afb0d25780abebed8/search.md) - [Session termination](https://ja.developer.box.com/cd389a41a0640c06a4712e408d3e71e1/session_termination.md) - [Shared links app items](https://ja.developer.box.com/d8c2a236b7ef57c5be71032bc6115936/shared_links_app_items.md) - [Shared links files](https://ja.developer.box.com/18e781ff9227033bcd1896624d8f34e0/shared_links_files.md) - [Shared links folders](https://ja.developer.box.com/84c8a671deed018692ed60bf777612a9/shared_links_folders.md) - [Shared links web links](https://ja.developer.box.com/beda87247d3103630705a063809e1308/shared_links_web_links.md) - [Shield information barrier reports](https://ja.developer.box.com/73579b1b9fbb371253789ee5cb2d8d44/shield_information_barrier_reports.md) - [Shield information barrier segment members](https://ja.developer.box.com/14027a92b5496fd7c9db7161f30f6281/shield_information_barrier_segment_members.md) - [Shield information barrier segment restrictions](https://ja.developer.box.com/85adc6b4f11a7d9c2a9a443a0f1d9faa/shield_information_barrier_segment_restrictions.md) - [Shield information barrier segments](https://ja.developer.box.com/d5af9c5729c6ec938df42f5610d2efab/shield_information_barrier_segments.md) - [Shield information barriers](https://ja.developer.box.com/fefd039c6cfecc64c50aa865fdd55057/shield_information_barriers.md) - [Shield lists](https://ja.developer.box.com/6393c29083285fac04053345968dc3e4/shield_lists.md) - [Sign requests](https://ja.developer.box.com/5e95a5bf5d229b8b64a0f9125f214989/sign_requests.md) - [Sign templates](https://ja.developer.box.com/edc3ff97e19ce3ad45500ac5dc86e019/sign_templates.md) - [Skills](https://ja.developer.box.com/6b0cfffd034c06bd5c82d58f336a80d8/skills.md) - [Storage policies](https://ja.developer.box.com/62f44b17e16c80a951b00a2c86fd32fa/storage_policies.md) - [Storage policy assignments](https://ja.developer.box.com/8c0281073ae3f81d0cc3dbc537f5ba97/storage_policy_assignments.md) - [Task assignments](https://ja.developer.box.com/7bd13edd15c58703c420934a1cc2ef38/task_assignments.md) - [Tasks](https://ja.developer.box.com/aa77cd7feecbb144d64be2e7801a0496/tasks.md) - [Terms of service user statuses](https://ja.developer.box.com/2cb30f787d2c3d525188041d80888c19/terms_of_service_user_statuses.md) - [Terms of services](https://ja.developer.box.com/641fd0bf3f5214d946f7633b972e6926/terms_of_services.md) - [Transfer](https://ja.developer.box.com/2e0dabad98b914cc6c27262f03a4da39/transfer.md) - [Trashed files](https://ja.developer.box.com/0ab351170852ebba2b141097b11c3302/trashed_files.md) - [Trashed folders](https://ja.developer.box.com/1854ec3b97321c9836024a042f308a93/trashed_folders.md) - [Trashed items](https://ja.developer.box.com/cdb3cc83aff70c2d018934fbac244e78/trashed_items.md) - [Trashed web links](https://ja.developer.box.com/8865f15da142222971012311287e3144/trashed_web_links.md) - [Uploads](https://ja.developer.box.com/51c242a5a8f87bae3d50ed4fc2fe098f/uploads.md) - [User collaborations](https://ja.developer.box.com/bd5315ee906ace8ff31c10bc9a1b6ab0/user_collaborations.md) - [Users](https://ja.developer.box.com/9429d3a5a14b9bf63c7d05f2d3135ced/users.md) - [Web links](https://ja.developer.box.com/fd88c2a990d46c5ab5117e733629b658/web_links.md) - [Webhooks](https://ja.developer.box.com/6c982161944f5adb31074ffa72e92e63/webhooks.md) - [Workflows](https://ja.developer.box.com/85c3e34f878e722529594e16e279bcc3/workflows.md) - [Zip downloads](https://ja.developer.box.com/693b1543ce8b09fffe5aa0533b94fe13/zip_downloads.md) --- ### Documentation **Type:** page | **Section:** Additional Resources Documentation High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available… # Documentation ## High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available by topic: - [Ai](https://ja.developer.box.com/3d2cbf20a5852591b2604dc0c0e6f215/Ai.md) - [Ai studio](https://ja.developer.box.com/7ec7f79b698d7091f3981cc181ae6f2e/AiStudio.md) - [App item associations](https://ja.developer.box.com/747dbfc211ee16fedd3463095b4f3d73/AppItemAssociations.md) - [Archives](https://ja.developer.box.com/0cc108119cb4709edd75f2ba4a4c3581/Archives.md) - [Authorization](https://ja.developer.box.com/d0a0c38e6569699d1e89e8a61ac9364c/Authorization.md) - [Avatars](https://ja.developer.box.com/3f6c1c9ef77384881ea43a9031b053df/Avatars.md) - [Chunked uploads](https://ja.developer.box.com/329b68d21295a6b4162936c798bf55e2/ChunkedUploads.md) - [Classifications](https://ja.developer.box.com/09393754cb3c03bdc17da0de13b947d3/Classifications.md) - [Collaboration allowlist entries](https://ja.developer.box.com/662f28c2244f02b000d59a07fa07611d/CollaborationAllowlistEntries.md) - [Collaboration allowlist exempt targets](https://ja.developer.box.com/42f060472f4271149debcfa17f461d43/CollaborationAllowlistExemptTargets.md) - [Collections](https://ja.developer.box.com/f5cdcd229ee876cf05b4e22fc5dec07b/Collections.md) - [Comments](https://ja.developer.box.com/254597f2dce8280d2a4abb74cb0a6d66/Comments.md) - [Device pinners](https://ja.developer.box.com/254830ff33e310766a56f197531bc5af/DevicePinners.md) - [Docgen](https://ja.developer.box.com/4c24dc633200958cd9cbd6b3f0c081d2/Docgen.md) - [Docgen template](https://ja.developer.box.com/badb81e071c9a0b7feb232e0cdaf7146/DocgenTemplate.md) - [Downloads](https://ja.developer.box.com/57130cc448ed335cf681280b67fb91f7/Downloads.md) - [Email aliases](https://ja.developer.box.com/4658210ba0c7761d578c3f5823a06d35/EmailAliases.md) - [Enterprise configurations](https://ja.developer.box.com/a915dc19adfde0146ce815f6b489abe0/EnterpriseConfigurations.md) - [Events](https://ja.developer.box.com/3be69d4d50769d8a040fbd14e43b3afe/Events.md) - [External users](https://ja.developer.box.com/c226b7f9e0d1cc7edf2679365dd6c9d6/ExternalUsers.md) - [File classifications](https://ja.developer.box.com/1f3f9f04590b2e101f25dd47250e3edf/FileClassifications.md) - [File metadata](https://ja.developer.box.com/0b00a3c73d68ca4920072a250077971c/FileMetadata.md) - [File requests](https://ja.developer.box.com/949897e145c5a6ed40f9b4b8995ec102/FileRequests.md) - [File version legal holds](https://ja.developer.box.com/17f50a574b39c87d0175bf0b65352f73/FileVersionLegalHolds.md) - [File version retentions](https://ja.developer.box.com/6dbdb0ef4a2474c8b76299933298bab8/FileVersionRetentions.md) - [File versions](https://ja.developer.box.com/71329b29e9eb6a38f67a2ee6a6fe22d9/FileVersions.md) - [File watermarks](https://ja.developer.box.com/6dc698be58eba864fa0da8aff4754dd7/FileWatermarks.md) - [Files](https://ja.developer.box.com/ae4411306e5215ee65923a330e1e9565/Files.md) - [Folder classifications](https://ja.developer.box.com/bbcc2bdfb9e45ba4f2c1c50d1c083e76/FolderClassifications.md) - [Folder locks](https://ja.developer.box.com/4bbaf513cdeb7e6dad6b0232ce7ce2f0/FolderLocks.md) - [Folder metadata](https://ja.developer.box.com/1fc70f92d0befdb329312b6c4eea0f94/FolderMetadata.md) - [Folder watermarks](https://ja.developer.box.com/af0d2c0fd49cb12eaaeabb947f0cc973/FolderWatermarks.md) - [Folders](https://ja.developer.box.com/a49c9dc4cb3860445cb6497fc57a1fa1/Folders.md) - [Groups](https://ja.developer.box.com/a37e64a2a67bec61a90aa22548bbcd10/Groups.md) - [Hub collaborations](https://ja.developer.box.com/2e14723f6939b2c022ef4e23c14dce5f/HubCollaborations.md) - [Hub items](https://ja.developer.box.com/19330a0b88fecc357b19b4f6a34a9055/HubItems.md) - [Hubs](https://ja.developer.box.com/203d8de934104d3cba5e30aca8894baf/Hubs.md) - [Integration mappings](https://ja.developer.box.com/1555bc9e12479eaf3058df376ee790dd/IntegrationMappings.md) - [Invites](https://ja.developer.box.com/8f95eb52c4fee68cf65ee65ff741548b/Invites.md) - [Legal hold policies](https://ja.developer.box.com/4e5743178eb437f048b35b87c49f7fa1/LegalHoldPolicies.md) - [Legal hold policy assignments](https://ja.developer.box.com/628e7b43a5d4d10ef6613020d658f915/LegalHoldPolicyAssignments.md) - [List collaborations](https://ja.developer.box.com/15e4850545eca9890d3f3a0ac9ef1bdc/ListCollaborations.md) - [Memberships](https://ja.developer.box.com/5d7e3bbe50b84444f739b981aa7a90ec/Memberships.md) - [Metadata cascade policies](https://ja.developer.box.com/c57554bdaf0d44c3b59f2f977c10a3fb/MetadataCascadePolicies.md) - [Metadata taxonomies](https://ja.developer.box.com/8df71df02ac7011b0529833c6653d57b/MetadataTaxonomies.md) - [Metadata templates](https://ja.developer.box.com/11b6140f794c573a66e8e18807e4cd4f/MetadataTemplates.md) - [Recent items](https://ja.developer.box.com/3edd4dc632bab6c9b51780ddb364cc22/RecentItems.md) - [Retention policies](https://ja.developer.box.com/757f3b6f7ada00444e869362def63c35/RetentionPolicies.md) - [Retention policy assignments](https://ja.developer.box.com/77cea9a333b25c448076ef9c8a27e6fb/RetentionPolicyAssignments.md) - [Search](https://ja.developer.box.com/c8c1a4cdb373ac495bf0b5f04b3575fe/Search.md) - [Session termination](https://ja.developer.box.com/7c8ce1945ad61320b6723b30c0155f45/SessionTermination.md) - [Shared links app items](https://ja.developer.box.com/4f83387f849ef80390aabc5a69aeeb88/SharedLinksAppItems.md) - [Shared links files](https://ja.developer.box.com/bdf2e7eec1d554cf65b60a162ff45322/SharedLinksFiles.md) - [Shared links folders](https://ja.developer.box.com/0846e2de2e792948afcdb45152220d45/SharedLinksFolders.md) - [Shared links web links](https://ja.developer.box.com/e1a04ef46c5992998c4535230d9141e5/SharedLinksWebLinks.md) - [Shield information barrier reports](https://ja.developer.box.com/901ea0b205bbefb6332637c066296cf1/ShieldInformationBarrierReports.md) - [Shield information barrier segment members](https://ja.developer.box.com/81721dae7f613dbf72af9963acd9fbdd/ShieldInformationBarrierSegmentMembers.md) - [Shield information barrier segment restrictions](https://ja.developer.box.com/cfbfe82062910f0c73af42469cd81972/ShieldInformationBarrierSegmentRestrictions.md) - [Shield information barrier segments](https://ja.developer.box.com/0da2a4792fff2d699ae7f48de535aa64/ShieldInformationBarrierSegments.md) - [Shield information barriers](https://ja.developer.box.com/32766871c6c3347a5e264f7872f5769d/ShieldInformationBarriers.md) - [Shield lists](https://ja.developer.box.com/92f0095d02c82ba410ed288f49e93b59/ShieldLists.md) - [Sign requests](https://ja.developer.box.com/e5c61a78fc88b9a9a6c35db204f278de/SignRequests.md) - [Sign templates](https://ja.developer.box.com/701c3a8ac2e6c25b5cc10fc60c63f032/SignTemplates.md) - [Skills](https://ja.developer.box.com/8d9aa74b7eaf4a027accd670284a6a1d/Skills.md) - [Storage policies](https://ja.developer.box.com/bedd4519d96757189bc0ca855d278c14/StoragePolicies.md) - [Storage policy assignments](https://ja.developer.box.com/418d00ab16ce6e8d031ed2b7806f1425/StoragePolicyAssignments.md) - [Task assignments](https://ja.developer.box.com/dbaa6892870b466f9ebcee31578c963a/TaskAssignments.md) - [Tasks](https://ja.developer.box.com/7a492aae73ab17cac5341acd8c15114b/Tasks.md) - [Terms of service user statuses](https://ja.developer.box.com/33514073546e1c822cd0dcc8a40f5b66/TermsOfServiceUserStatuses.md) - [Terms of services](https://ja.developer.box.com/bd83b1fdc2d3074bb154841004e322bb/TermsOfServices.md) - [Transfer](https://ja.developer.box.com/0a85def0d521e74c4015064b1f39aafa/Transfer.md) - [Trashed files](https://ja.developer.box.com/fdbf3abaf92c9bcd5b8ddf437e5b646d/TrashedFiles.md) - [Trashed folders](https://ja.developer.box.com/e5dbfec30d425ef5fb4c5d39f4ec20c5/TrashedFolders.md) - [Trashed items](https://ja.developer.box.com/bc07421c01fd50a38981853c003dbdec/TrashedItems.md) - [Trashed web links](https://ja.developer.box.com/d4ad7b7835366e06a935680e53896873/TrashedWebLinks.md) - [Uploads](https://ja.developer.box.com/f9db97938b2f5c81a71257eba2d9c4ca/Uploads.md) - [User collaborations](https://ja.developer.box.com/eed9d89e223f51806921441c2ea00739/UserCollaborations.md) - [Users](https://ja.developer.box.com/5d1e87e40d51411cbb7bd93547179065/Users.md) - [Web links](https://ja.developer.box.com/99e23c4c2b872f87a6a2c45ee7055c18/WebLinks.md) - [Webhooks](https://ja.developer.box.com/5de24e652a33902fbdf953d0581a7c4a/Webhooks.md) - [Workflows](https://ja.developer.box.com/14410c56df80410ba7099312b5830a61/Workflows.md) - [Zip downloads](https://ja.developer.box.com/1f36312e550116c7819192f1a5e0c5e1/ZipDownloads.md) --- ### Documentation **Type:** page | **Section:** Additional Resources Documentation High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available… # Documentation ## High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available by topic: - [Ai](https://ja.developer.box.com/fb5aba2e7781d27a2112ec76113ecac5/Ai.md) - [Ai studio](https://ja.developer.box.com/227b81b2fe46c92e313ad164ec5d20a8/AiStudio.md) - [App item associations](https://ja.developer.box.com/04d05fc1f7b6348be9ec6598399f2fb9/AppItemAssociations.md) - [Archives](https://ja.developer.box.com/fdae4690b29bb94eb6248922ccaf0cd2/Archives.md) - [Authorization](https://ja.developer.box.com/1e2d6b38f474114c770c3726cbae720c/Authorization.md) - [Avatars](https://ja.developer.box.com/6c67c5aed1b3fd03651dd8388f7ec5c1/Avatars.md) - [Chunked uploads](https://ja.developer.box.com/50e19ac7306264235c489f223bdd3f1d/ChunkedUploads.md) - [Classifications](https://ja.developer.box.com/2671efd2e8d76211b6655a52250d2d36/Classifications.md) - [Collaboration allowlist entries](https://ja.developer.box.com/de2f805c3217e1fefad04d2971390909/CollaborationAllowlistEntries.md) - [Collaboration allowlist exempt targets](https://ja.developer.box.com/e5d4c14e8586a311cac61d795be88b30/CollaborationAllowlistExemptTargets.md) - [Collections](https://ja.developer.box.com/f17f7569cbfd9c98f0a1e31a92af466a/Collections.md) - [Comments](https://ja.developer.box.com/fba7172d9a3d616981ed23155dd80e15/Comments.md) - [Device pinners](https://ja.developer.box.com/3e20308e2bd56cc3e00aa572f3169558/DevicePinners.md) - [Docgen](https://ja.developer.box.com/cfbc5bf4a6a8417d60835c5794a3e9f6/Docgen.md) - [Docgen template](https://ja.developer.box.com/6ff2bdbd3914ca62b003bbc8bb293d58/DocgenTemplate.md) - [Downloads](https://ja.developer.box.com/a58df25d77160e5c8d375e0a10e673d2/Downloads.md) - [Email aliases](https://ja.developer.box.com/7b9c9b272cc0710edd90f47c7a9997b9/EmailAliases.md) - [Enterprise configurations](https://ja.developer.box.com/22ed1708430e11ccad8e0dd1d718b599/EnterpriseConfigurations.md) - [Events](https://ja.developer.box.com/c8500a2472482fa596e33d83f3268cde/Events.md) - [External users](https://ja.developer.box.com/b73fcd320f71523abe914f2adcc46322/ExternalUsers.md) - [File classifications](https://ja.developer.box.com/0a3175a4c9fd6002fd7bdecfe4cd8ab9/FileClassifications.md) - [File metadata](https://ja.developer.box.com/c981ae0ab3464ee1a5c8a830bf670a1e/FileMetadata.md) - [File requests](https://ja.developer.box.com/8be9a969c48e7b20564d19b137cd741c/FileRequests.md) - [File version legal holds](https://ja.developer.box.com/c0e1e9db5819f8c336b58b167ed78b52/FileVersionLegalHolds.md) - [File version retentions](https://ja.developer.box.com/92e896892a96354404e851011d289245/FileVersionRetentions.md) - [File versions](https://ja.developer.box.com/4db74ad0c6fa9333c1fd2879e5a3934f/FileVersions.md) - [File watermarks](https://ja.developer.box.com/d640bba4ba90067afeeeb91f9e76f554/FileWatermarks.md) - [Files](https://ja.developer.box.com/4fb2f4d39c95c898db68e89b9676196c/Files.md) - [Folder classifications](https://ja.developer.box.com/7a1b8d8694a979ec35173378cd982566/FolderClassifications.md) - [Folder locks](https://ja.developer.box.com/069dbc54498d9c7fc175cdc1f5e99450/FolderLocks.md) - [Folder metadata](https://ja.developer.box.com/90ba161bda3f2d3673e57e267355036f/FolderMetadata.md) - [Folder watermarks](https://ja.developer.box.com/8a00f626a5646d60d2824c5a62d64d88/FolderWatermarks.md) - [Folders](https://ja.developer.box.com/61ad63fc29a2816d8f9f0c45a9a69132/Folders.md) - [Groups](https://ja.developer.box.com/ed02325488bf39dedd6ed7c72d3de994/Groups.md) - [Hub collaborations](https://ja.developer.box.com/61d7125092613ef061b10cfbff1a2e1f/HubCollaborations.md) - [Hub items](https://ja.developer.box.com/9f5e47e95890d2aa4185a31895337c65/HubItems.md) - [Hubs](https://ja.developer.box.com/5ea893a2ecf64ea2fcb0ec2d0f3a551d/Hubs.md) - [Integration mappings](https://ja.developer.box.com/aa5dd619f70e4c5df9f04f99c1d5a07f/IntegrationMappings.md) - [Invites](https://ja.developer.box.com/5f6091aa675bd1609535d0a454cdb9ab/Invites.md) - [Legal hold policies](https://ja.developer.box.com/756d3c4ef486e62c32270a30d00347f3/LegalHoldPolicies.md) - [Legal hold policy assignments](https://ja.developer.box.com/706d9a05ae66ab79cd331acc8fa65a41/LegalHoldPolicyAssignments.md) - [List collaborations](https://ja.developer.box.com/37595e2cc7f6a4ef9bee6875bd3ba09d/ListCollaborations.md) - [Memberships](https://ja.developer.box.com/10c6cbbadfb2a7553ec80f5dc4dd5112/Memberships.md) - [Metadata cascade policies](https://ja.developer.box.com/a959124da0fec5ab80f1981549b5d7e8/MetadataCascadePolicies.md) - [Metadata taxonomies](https://ja.developer.box.com/c15f9b1c9545ad57d3b24ca70aa31fef/MetadataTaxonomies.md) - [Metadata templates](https://ja.developer.box.com/b483047323b44b9268f8190adf76973e/MetadataTemplates.md) - [Recent items](https://ja.developer.box.com/090a8a7bbd34120c05a2c668a3a8223e/RecentItems.md) - [Retention policies](https://ja.developer.box.com/69f48cc4d528fc2353bb27564e6e1442/RetentionPolicies.md) - [Retention policy assignments](https://ja.developer.box.com/36f77dfbfa720f58817ea61b2be8f446/RetentionPolicyAssignments.md) - [Search](https://ja.developer.box.com/1aa63146bc2e43b5dd25883f9d8f2d25/Search.md) - [Session termination](https://ja.developer.box.com/f3f8feb1c444f7338b47016f00078f8e/SessionTermination.md) - [Shared links app items](https://ja.developer.box.com/ec53f626c3e0ac3c867245d156f36ac7/SharedLinksAppItems.md) - [Shared links files](https://ja.developer.box.com/ffb17430c963c811ce944e00d40f3966/SharedLinksFiles.md) - [Shared links folders](https://ja.developer.box.com/0c0d7b6b22d1daa10d5b53412c6ec662/SharedLinksFolders.md) - [Shared links web links](https://ja.developer.box.com/f1b922ccab5c43cbbb23774c81929a8e/SharedLinksWebLinks.md) - [Shield information barrier reports](https://ja.developer.box.com/89089c0bd63e32a77dc4cf07e8207ffb/ShieldInformationBarrierReports.md) - [Shield information barrier segment members](https://ja.developer.box.com/4f974cd274f15085bb0e821c4e6045b7/ShieldInformationBarrierSegmentMembers.md) - [Shield information barrier segment restrictions](https://ja.developer.box.com/0aaeabb6fa6bc3e81cd3d605622131db/ShieldInformationBarrierSegmentRestrictions.md) - [Shield information barrier segments](https://ja.developer.box.com/e98dfcd459d5d55c755dd7f6497ce238/ShieldInformationBarrierSegments.md) - [Shield information barriers](https://ja.developer.box.com/a20977d47e2f235dc7c003b00afcb256/ShieldInformationBarriers.md) - [Shield lists](https://ja.developer.box.com/0a23f842dd1ee70c0e0087764e931618/ShieldLists.md) - [Sign requests](https://ja.developer.box.com/15f7637dd800aa9f45922a34db4c8292/SignRequests.md) - [Sign templates](https://ja.developer.box.com/256bce276ab7a5f18c87c45bd15c35fe/SignTemplates.md) - [Skills](https://ja.developer.box.com/a6bc430e183348c7495ad928c77f2680/Skills.md) - [Storage policies](https://ja.developer.box.com/c254ac5008f6a1c060cce5d76faf67dd/StoragePolicies.md) - [Storage policy assignments](https://ja.developer.box.com/3e1c2bafd123a298bee4f0eef28377cc/StoragePolicyAssignments.md) - [Task assignments](https://ja.developer.box.com/f08cb5275bdebdbea309b616da608914/TaskAssignments.md) - [Tasks](https://ja.developer.box.com/d27989287e1e1e32eea39a7ad183b189/Tasks.md) - [Terms of service user statuses](https://ja.developer.box.com/913dd8ed7cd7ab2716860a153fd043ad/TermsOfServiceUserStatuses.md) - [Terms of services](https://ja.developer.box.com/faa36281b3b1a18ebdf28b32d58b9261/TermsOfServices.md) - [Transfer](https://ja.developer.box.com/d12019a1e565395beabd59253301c365/Transfer.md) - [Trashed files](https://ja.developer.box.com/32d1999c575c9ef189b58a27691b98a9/TrashedFiles.md) - [Trashed folders](https://ja.developer.box.com/7f618bb1f1ce19b4ea1c0a4b91953142/TrashedFolders.md) - [Trashed items](https://ja.developer.box.com/9f7c64d0af63556089078be05fbb6c41/TrashedItems.md) - [Trashed web links](https://ja.developer.box.com/3226282df756748ad546d1c165cbf05f/TrashedWebLinks.md) - [Uploads](https://ja.developer.box.com/e7966845f3cc06ba93d89fd3b6fc9173/Uploads.md) - [User collaborations](https://ja.developer.box.com/e066aafc20256e309d008c11f4dd5f6a/UserCollaborations.md) - [Users](https://ja.developer.box.com/83564da30e410a5bdc2c587325ac35f4/Users.md) - [Web links](https://ja.developer.box.com/222b06cdf7fcfc38bdf3cf7430dc52f1/WebLinks.md) - [Webhooks](https://ja.developer.box.com/700aacebc873f0ba29bf185a0e3babbb/Webhooks.md) - [Workflows](https://ja.developer.box.com/ec2b9b76c9ad7a05f78a8a4662785ac5/Workflows.md) - [Zip downloads](https://ja.developer.box.com/7fded645a4345ca1e63bf3625b0e9517/ZipDownloads.md) --- ### Documentation **Type:** page | **Section:** Additional Resources Documentation High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available… # Documentation ## High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available by topic: - [Ai](https://ja.developer.box.com/51161d4abc9813127316c5646f50489c/ai.md) - [Ai studio](https://ja.developer.box.com/8822997d67c91efdef77e9832080d4e1/aiStudio.md) - [App item associations](https://ja.developer.box.com/4034943d9e64ff39152dc3139f382930/appItemAssociations.md) - [Archives](https://ja.developer.box.com/a8cfdfecce548d80fbfd06e9765361e8/archives.md) - [Authorization](https://ja.developer.box.com/54db4bdfd48f3a6ec39ff167cf37866f/authorization.md) - [Avatars](https://ja.developer.box.com/7c3b30e7558d2a2b891bff3612cf9c5a/avatars.md) - [Chunked uploads](https://ja.developer.box.com/1bf542cbafed560ad041597c2e669b10/chunkedUploads.md) - [Classifications](https://ja.developer.box.com/7cd4dee4c8a39f7c49339926c04a1727/classifications.md) - [Collaboration allowlist entries](https://ja.developer.box.com/fefd69a7143c658da785ee8faf12e287/collaborationAllowlistEntries.md) - [Collaboration allowlist exempt targets](https://ja.developer.box.com/786501d756036bb7e91c363f879c6bbf/collaborationAllowlistExemptTargets.md) - [Collections](https://ja.developer.box.com/387abdb9c87dbbca0a7976c7e646f0bc/collections.md) - [Comments](https://ja.developer.box.com/5d89e1ff5d912ce9d6080560dbadbc14/comments.md) - [Device pinners](https://ja.developer.box.com/4ca72e5d948fc5485c6323931210c54d/devicePinners.md) - [Docgen](https://ja.developer.box.com/daae34f97d104cf46aa2037db2a52b5f/docgen.md) - [Docgen template](https://ja.developer.box.com/ff7ab59ba903f6dc3bf5bd0548a55be3/docgenTemplate.md) - [Downloads](https://ja.developer.box.com/80f4868fdb960ff18c3bba8461ccefbb/downloads.md) - [Email aliases](https://ja.developer.box.com/ceaf283ee1976470bad67502d0c28b2d/emailAliases.md) - [Enterprise configurations](https://ja.developer.box.com/d5d8f79003e1ca62e6dd1cee99240ba7/enterpriseConfigurations.md) - [Events](https://ja.developer.box.com/387ce8cd898209498d3e54a6f55b5ba0/events.md) - [External users](https://ja.developer.box.com/9149b15be437fcdbb2db5e41a743d5f9/externalUsers.md) - [File classifications](https://ja.developer.box.com/167f08e301ea6c001265fba1e76c2c96/fileClassifications.md) - [File metadata](https://ja.developer.box.com/94ee1bf2763b45f6153f538236dc1612/fileMetadata.md) - [File requests](https://ja.developer.box.com/575355bac34130141841d217f6a657b0/fileRequests.md) - [File version legal holds](https://ja.developer.box.com/4ef97fec6c26bafa9ce8404356a5149c/fileVersionLegalHolds.md) - [File version retentions](https://ja.developer.box.com/b01b11eec48e9c775d002a333a1aa7c0/fileVersionRetentions.md) - [File versions](https://ja.developer.box.com/d8a439784c0923e94e5c2956438aaacf/fileVersions.md) - [File watermarks](https://ja.developer.box.com/57cf27e58b81c4f89366758c08ba5447/fileWatermarks.md) - [Files](https://ja.developer.box.com/f9349ca2388e93725d2ea6ab4a01fb21/files.md) - [Folder classifications](https://ja.developer.box.com/381e7a37b9c5e10f49114be777a6298c/folderClassifications.md) - [Folder locks](https://ja.developer.box.com/8a8fc37fc424948206c922024d88b576/folderLocks.md) - [Folder metadata](https://ja.developer.box.com/90c6a5cae9698e12462d169cd99fa132/folderMetadata.md) - [Folder watermarks](https://ja.developer.box.com/89888806b209dd3b28963340156b9605/folderWatermarks.md) - [Folders](https://ja.developer.box.com/8605da97a3a372ed9e2cad4a4ae42b15/folders.md) - [Groups](https://ja.developer.box.com/9852d820fbf91c6823cd938abf5ff29b/groups.md) - [Hub collaborations](https://ja.developer.box.com/044f3759ad2dcb9778409186b3b00914/hubCollaborations.md) - [Hub items](https://ja.developer.box.com/6260f2aeb7c5ca22d5aa4a856b2a1866/hubItems.md) - [Hubs](https://ja.developer.box.com/b3c896af954c02aa4926a5ee55975838/hubs.md) - [Integration mappings](https://ja.developer.box.com/ea609e4da1a3e8be97f5cd3d8bfc8ec7/integrationMappings.md) - [Invites](https://ja.developer.box.com/570713a7f115e71ef94d2a31f91799d1/invites.md) - [Legal hold policies](https://ja.developer.box.com/f3c35a6cf28e239368a70c608a3b5eeb/legalHoldPolicies.md) - [Legal hold policy assignments](https://ja.developer.box.com/766e57e7ae862c1295aa97ebec2108e3/legalHoldPolicyAssignments.md) - [List collaborations](https://ja.developer.box.com/460f4df77c97e7a9dfe2771e42552f41/listCollaborations.md) - [Memberships](https://ja.developer.box.com/f9c0cc93abbed99477cb81bc2cee32f7/memberships.md) - [Metadata cascade policies](https://ja.developer.box.com/9de5dfde89750a42b5bef529b8d2b473/metadataCascadePolicies.md) - [Metadata templates](https://ja.developer.box.com/4b660eca31fb1d104018b476be30fc93/metadataTemplates.md) - [Recent items](https://ja.developer.box.com/e8464b93cdec65c4240e9a81184537dd/recentItems.md) - [Retention policies](https://ja.developer.box.com/4e5d789921f45688d198727e3c819442/retentionPolicies.md) - [Retention policy assignments](https://ja.developer.box.com/2a31d25ec24ac3f250d27f7747c03e1b/retentionPolicyAssignments.md) - [Search](https://ja.developer.box.com/a8858ba690486e321c9779dccb0bff51/search.md) - [Session termination](https://ja.developer.box.com/008b747050b6524e6f57d8171f0ee468/sessionTermination.md) - [Shared links app items](https://ja.developer.box.com/b309bf564a6ff77fb7febda29f0450ae/sharedLinksAppItems.md) - [Shared links files](https://ja.developer.box.com/63dbc250e82521bacec64f9131840628/sharedLinksFiles.md) - [Shared links folders](https://ja.developer.box.com/f41a61a94c970f9780a93ebf59659dde/sharedLinksFolders.md) - [Shared links web links](https://ja.developer.box.com/273993f9ac7054ef527aa10d984fcdf2/sharedLinksWebLinks.md) - [Shield information barrier reports](https://ja.developer.box.com/3bc57ac1d4eaf4eca2d5d769ee84fdf1/shieldInformationBarrierReports.md) - [Shield information barrier segment members](https://ja.developer.box.com/7519790d3212be1e03e5ea77974af8e6/shieldInformationBarrierSegmentMembers.md) - [Shield information barrier segment restrictions](https://ja.developer.box.com/f0ec9d47cec408877261f55b58fc45e1/shieldInformationBarrierSegmentRestrictions.md) - [Shield information barrier segments](https://ja.developer.box.com/41b908f45bb5085e90cd70d1ba67a542/shieldInformationBarrierSegments.md) - [Shield information barriers](https://ja.developer.box.com/e3c23e60a043f54945a1dd9a63eb3852/shieldInformationBarriers.md) - [Shield lists](https://ja.developer.box.com/4d261bc4440e84e5b99f721eeb2956cc/shieldLists.md) - [Sign requests](https://ja.developer.box.com/07171b3c0c1cf0495a9aa54fa1c12c89/signRequests.md) - [Sign templates](https://ja.developer.box.com/6e4e135ed584d32f8c8fcd3dfcf258fe/signTemplates.md) - [Skills](https://ja.developer.box.com/2069b036c3e063717f1ba5c295b69369/skills.md) - [Storage policies](https://ja.developer.box.com/9d06b1b430c4a84e5e11b5f3b8c3d472/storagePolicies.md) - [Storage policy assignments](https://ja.developer.box.com/77a6621be0c09237fa869d5366ce04a1/storagePolicyAssignments.md) - [Task assignments](https://ja.developer.box.com/fd631f75e820875193cccb1cb27e5617/taskAssignments.md) - [Tasks](https://ja.developer.box.com/116e16a33227b329ae30ac6a68f9b316/tasks.md) - [Terms of service user statuses](https://ja.developer.box.com/86f8d1fe48e9b4bc997a4dfdd1c5b578/termsOfServiceUserStatuses.md) - [Terms of services](https://ja.developer.box.com/3f9018652046f755ba2c4f482bcec9c3/termsOfServices.md) - [Transfer](https://ja.developer.box.com/127d549d1ccfa1875e86ee3d271060de/transfer.md) - [Trashed files](https://ja.developer.box.com/f71fe80a773ee514f5867da629ca5d78/trashedFiles.md) - [Trashed folders](https://ja.developer.box.com/c5e78e27035cfb6433141e273b307358/trashedFolders.md) - [Trashed items](https://ja.developer.box.com/48aa1a5148c0149fffb3a64456a822f0/trashedItems.md) - [Trashed web links](https://ja.developer.box.com/348ae3e1fa3897632a53b9ee47955033/trashedWebLinks.md) - [Uploads](https://ja.developer.box.com/05b776ce26018b8d33b958a8ee419e8b/uploads.md) - [User collaborations](https://ja.developer.box.com/a427e667575ac3b981cb1f0052eca40b/userCollaborations.md) - [Users](https://ja.developer.box.com/77735260cf833430419a8313f6d8144f/users.md) - [Web links](https://ja.developer.box.com/eeb85371c138f2c0492fc01a22eb5424/webLinks.md) - [Webhooks](https://ja.developer.box.com/b7cfc413355f7af7206ec4e1f9d71828/webhooks.md) - [Workflows](https://ja.developer.box.com/d10e200014d42126c441e15bff385374/workflows.md) - [Zip downloads](https://ja.developer.box.com/721efe8523b9cfa123495a1225868953/zipDownloads.md) --- ### Documentation **Type:** page | **Section:** Additional Resources Documentation High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available… # Documentation ## High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available by topic: - [Ai](https://ja.developer.box.com/e31a0d9b7e417dcb1c39e96b5e194f0d/ai.md) - [Ai studio](https://ja.developer.box.com/d2fc436ac21a939f957804200fd51573/ai_studio.md) - [App item associations](https://ja.developer.box.com/3fe11188dfa3635fd55a7aeb7686ea0b/app_item_associations.md) - [Archives](https://ja.developer.box.com/fc21d70410d27dc1c96e61e63f8f2ad8/archives.md) - [Authorization](https://ja.developer.box.com/59f4e8c23b4987ec1bc1f0e9bd7ab180/authorization.md) - [Avatars](https://ja.developer.box.com/835511e98f383f1cbcf689229c7da2ba/avatars.md) - [Chunked uploads](https://ja.developer.box.com/e28a459d3fa63fb006a342ef28a13b43/chunked_uploads.md) - [Classifications](https://ja.developer.box.com/cdf5e5e0c239360f75fe50b4b657f8d5/classifications.md) - [Collaboration allowlist entries](https://ja.developer.box.com/74a70dbaba7d04ba57e696fe4437068c/collaboration_allowlist_entries.md) - [Collaboration allowlist exempt targets](https://ja.developer.box.com/204645934a033b7eb2c9cef9ea19c614/collaboration_allowlist_exempt_targets.md) - [Collections](https://ja.developer.box.com/3cfdf1ea1b847b61221ada88462f5554/collections.md) - [Comments](https://ja.developer.box.com/668e8f09c4fdeef337b7ac1c262001e1/comments.md) - [Device pinners](https://ja.developer.box.com/b4ed6470194d72582bfe8f541dab93ef/device_pinners.md) - [Docgen](https://ja.developer.box.com/a3fa760cd58faf660f45e7c827d35734/docgen.md) - [Docgen template](https://ja.developer.box.com/6a6b103a64e8ff15d5cc2a6b577bc1ab/docgen_template.md) - [Downloads](https://ja.developer.box.com/3e62c42c0330571a33e2b70dde7c00cd/downloads.md) - [Email aliases](https://ja.developer.box.com/3180baa385460a64185c867e53196285/email_aliases.md) - [Enterprise configurations](https://ja.developer.box.com/e2fac990876c2548adc5b74cc43d9193/enterprise_configurations.md) - [Events](https://ja.developer.box.com/3c73dfaf1d87afdff536a2f79f306cab/events.md) - [External users](https://ja.developer.box.com/f301896aef952dfe72df22c023577049/external_users.md) - [File classifications](https://ja.developer.box.com/db6a7e2c5748e968aed6eefb8fb77a0d/file_classifications.md) - [File metadata](https://ja.developer.box.com/95d8e6c29063d06e0476accdd6b06837/file_metadata.md) - [File requests](https://ja.developer.box.com/527311a9e6fc596c5a59ca58625c8e61/file_requests.md) - [File version legal holds](https://ja.developer.box.com/14bbcbe0aba045c5337cc55fbba52303/file_version_legal_holds.md) - [File version retentions](https://ja.developer.box.com/d8b8993ac7b381689e41c53472631f2d/file_version_retentions.md) - [File versions](https://ja.developer.box.com/af153e4b6c0172cdb13f060ac82e7482/file_versions.md) - [File watermarks](https://ja.developer.box.com/3a5a549b5e5c0bf4ea5acb108cb922a2/file_watermarks.md) - [Files](https://ja.developer.box.com/b0b5d7bf237d6ceae03fd0d81aa567e2/files.md) - [Folder classifications](https://ja.developer.box.com/3991b429b08dfd4523d51558600e91e2/folder_classifications.md) - [Folder locks](https://ja.developer.box.com/a7b5efca17c684f1601b9c29827bdf61/folder_locks.md) - [Folder metadata](https://ja.developer.box.com/2a1e36f3381e803dc9adebb737cfd75a/folder_metadata.md) - [Folder watermarks](https://ja.developer.box.com/dad5e85c61ce5e5bb088e1735fcd32cf/folder_watermarks.md) - [Folders](https://ja.developer.box.com/4cea719129f8f7047d01357558228e59/folders.md) - [Groups](https://ja.developer.box.com/19c77e92519e0a377c60c8dda9c7d349/groups.md) - [Hub collaborations](https://ja.developer.box.com/5c159a82ffa1b932a0cdeb54fa7abec0/hub_collaborations.md) - [Hub items](https://ja.developer.box.com/1c55f844f26b6dd4a58e9b39c36da5e8/hub_items.md) - [Hubs](https://ja.developer.box.com/7fee2de8cd9f8bb0e6611c801c677d31/hubs.md) - [Integration mappings](https://ja.developer.box.com/7c4cb93f5abbc92622f1d06dc4ff0a48/integration_mappings.md) - [Invites](https://ja.developer.box.com/e8d87e010425e6b27fc254653694500f/invites.md) - [Legal hold policies](https://ja.developer.box.com/cc1ffb63a81826d05ca3a4950e63f8e3/legal_hold_policies.md) - [Legal hold policy assignments](https://ja.developer.box.com/2b6c038eab6a8600f9f6b532ed3532a0/legal_hold_policy_assignments.md) - [List collaborations](https://ja.developer.box.com/bf50c526ea161dafbd5382843fe2617e/list_collaborations.md) - [Memberships](https://ja.developer.box.com/fabf5a724fe1d6758e5433a6fa755617/memberships.md) - [Metadata cascade policies](https://ja.developer.box.com/1e39db6079a70edb0312a95531bf87ec/metadata_cascade_policies.md) - [Metadata templates](https://ja.developer.box.com/af2c8cef2f3d9fa291a686879e21b30b/metadata_templates.md) - [Recent items](https://ja.developer.box.com/5421143128a2076837c5c40e082fff9b/recent_items.md) - [Retention policies](https://ja.developer.box.com/e47f383b8d4d6865c6f3478c1fcb90d4/retention_policies.md) - [Retention policy assignments](https://ja.developer.box.com/883337653a1c49f9bd592ede24cfb143/retention_policy_assignments.md) - [Search](https://ja.developer.box.com/15eba0ce54aefa5cf7f742e0d792bd30/search.md) - [Session termination](https://ja.developer.box.com/cd389a41a0640c06a4712e408d3e71e1/session_termination.md) - [Shared links app items](https://ja.developer.box.com/d8c2a236b7ef57c5be71032bc6115936/shared_links_app_items.md) - [Shared links files](https://ja.developer.box.com/18e781ff9227033bcd1896624d8f34e0/shared_links_files.md) - [Shared links folders](https://ja.developer.box.com/84c8a671deed018692ed60bf777612a9/shared_links_folders.md) - [Shared links web links](https://ja.developer.box.com/beda87247d3103630705a063809e1308/shared_links_web_links.md) - [Shield information barrier reports](https://ja.developer.box.com/73579b1b9fbb371253789ee5cb2d8d44/shield_information_barrier_reports.md) - [Shield information barrier segment members](https://ja.developer.box.com/14027a92b5496fd7c9db7161f30f6281/shield_information_barrier_segment_members.md) - [Shield information barrier segment restrictions](https://ja.developer.box.com/85adc6b4f11a7d9c2a9a443a0f1d9faa/shield_information_barrier_segment_restrictions.md) - [Shield information barrier segments](https://ja.developer.box.com/d5af9c5729c6ec938df42f5610d2efab/shield_information_barrier_segments.md) - [Shield information barriers](https://ja.developer.box.com/fefd039c6cfecc64c50aa865fdd55057/shield_information_barriers.md) - [Shield lists](https://ja.developer.box.com/6393c29083285fac04053345968dc3e4/shield_lists.md) - [Sign requests](https://ja.developer.box.com/36a68c89098d3ebe8649b5351f685623/sign_requests.md) - [Sign templates](https://ja.developer.box.com/edc3ff97e19ce3ad45500ac5dc86e019/sign_templates.md) - [Skills](https://ja.developer.box.com/6b0cfffd034c06bd5c82d58f336a80d8/skills.md) - [Storage policies](https://ja.developer.box.com/62f44b17e16c80a951b00a2c86fd32fa/storage_policies.md) - [Storage policy assignments](https://ja.developer.box.com/8c0281073ae3f81d0cc3dbc537f5ba97/storage_policy_assignments.md) - [Task assignments](https://ja.developer.box.com/7bd13edd15c58703c420934a1cc2ef38/task_assignments.md) - [Tasks](https://ja.developer.box.com/aa77cd7feecbb144d64be2e7801a0496/tasks.md) - [Terms of service user statuses](https://ja.developer.box.com/2cb30f787d2c3d525188041d80888c19/terms_of_service_user_statuses.md) - [Terms of services](https://ja.developer.box.com/641fd0bf3f5214d946f7633b972e6926/terms_of_services.md) - [Transfer](https://ja.developer.box.com/3705357f8d670d464178ec5dd3049ef4/transfer.md) - [Trashed files](https://ja.developer.box.com/b8081c45623ed15e1cd461c9457f9672/trashed_files.md) - [Trashed folders](https://ja.developer.box.com/5cc3673f450994accbd7ad299d875225/trashed_folders.md) - [Trashed items](https://ja.developer.box.com/cdb3cc83aff70c2d018934fbac244e78/trashed_items.md) - [Trashed web links](https://ja.developer.box.com/8865f15da142222971012311287e3144/trashed_web_links.md) - [Uploads](https://ja.developer.box.com/51c242a5a8f87bae3d50ed4fc2fe098f/uploads.md) - [User collaborations](https://ja.developer.box.com/575fd2145aaabaa21c82949fb8619224/user_collaborations.md) - [Users](https://ja.developer.box.com/9429d3a5a14b9bf63c7d05f2d3135ced/users.md) - [Web links](https://ja.developer.box.com/fd88c2a990d46c5ab5117e733629b658/web_links.md) - [Webhooks](https://ja.developer.box.com/6c982161944f5adb31074ffa72e92e63/webhooks.md) - [Workflows](https://ja.developer.box.com/85c3e34f878e722529594e16e279bcc3/workflows.md) - [Zip downloads](https://ja.developer.box.com/6a6ad1c1ca1ec0808f1f75ab18cb2d55/zip_downloads.md) --- ### Documentation **Type:** page | **Section:** Additional Resources Documentation High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available… # Documentation ## High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available by topic: - [Ai](https://ja.developer.box.com/af48ae7b98cf223a1fac4866d15128d5/Ai.md) - [Ai studio](https://ja.developer.box.com/7ec7f79b698d7091f3981cc181ae6f2e/AiStudio.md) - [App item associations](https://ja.developer.box.com/747dbfc211ee16fedd3463095b4f3d73/AppItemAssociations.md) - [Archives](https://ja.developer.box.com/dcf48c1f3cd0e8170cd7a406e9cfa784/Archives.md) - [Authorization](https://ja.developer.box.com/d0a0c38e6569699d1e89e8a61ac9364c/Authorization.md) - [Avatars](https://ja.developer.box.com/3f6c1c9ef77384881ea43a9031b053df/Avatars.md) - [Chunked uploads](https://ja.developer.box.com/168397dd0a28531ceb91fae9a6ba6683/ChunkedUploads.md) - [Classifications](https://ja.developer.box.com/bad50bfefaa4ff6b2711f458120f340e/Classifications.md) - [Collaboration allowlist entries](https://ja.developer.box.com/662f28c2244f02b000d59a07fa07611d/CollaborationAllowlistEntries.md) - [Collaboration allowlist exempt targets](https://ja.developer.box.com/42f060472f4271149debcfa17f461d43/CollaborationAllowlistExemptTargets.md) - [Collections](https://ja.developer.box.com/f5cdcd229ee876cf05b4e22fc5dec07b/Collections.md) - [Comments](https://ja.developer.box.com/254597f2dce8280d2a4abb74cb0a6d66/Comments.md) - [Device pinners](https://ja.developer.box.com/254830ff33e310766a56f197531bc5af/DevicePinners.md) - [Docgen](https://ja.developer.box.com/ce283a35da2354c7223e6926008fb84d/Docgen.md) - [Docgen template](https://ja.developer.box.com/badb81e071c9a0b7feb232e0cdaf7146/DocgenTemplate.md) - [Downloads](https://ja.developer.box.com/6ce06f0d62fa68d89e1813f578ff2540/Downloads.md) - [Email aliases](https://ja.developer.box.com/4658210ba0c7761d578c3f5823a06d35/EmailAliases.md) - [Enterprise configurations](https://ja.developer.box.com/a915dc19adfde0146ce815f6b489abe0/EnterpriseConfigurations.md) - [Events](https://ja.developer.box.com/8dd34d4c1b76e5cc254ac017ceb3b6f2/Events.md) - [External users](https://ja.developer.box.com/c226b7f9e0d1cc7edf2679365dd6c9d6/ExternalUsers.md) - [File classifications](https://ja.developer.box.com/1f3f9f04590b2e101f25dd47250e3edf/FileClassifications.md) - [File metadata](https://ja.developer.box.com/c6bf7f682acb8bddad748d54c468859f/FileMetadata.md) - [File requests](https://ja.developer.box.com/949897e145c5a6ed40f9b4b8995ec102/FileRequests.md) - [File version legal holds](https://ja.developer.box.com/17f50a574b39c87d0175bf0b65352f73/FileVersionLegalHolds.md) - [File version retentions](https://ja.developer.box.com/aa22736bc5050e37a08fce5c8aeb4c15/FileVersionRetentions.md) - [File versions](https://ja.developer.box.com/71329b29e9eb6a38f67a2ee6a6fe22d9/FileVersions.md) - [File watermarks](https://ja.developer.box.com/6dc698be58eba864fa0da8aff4754dd7/FileWatermarks.md) - [Files](https://ja.developer.box.com/ae4411306e5215ee65923a330e1e9565/Files.md) - [Folder classifications](https://ja.developer.box.com/bbcc2bdfb9e45ba4f2c1c50d1c083e76/FolderClassifications.md) - [Folder locks](https://ja.developer.box.com/4bbaf513cdeb7e6dad6b0232ce7ce2f0/FolderLocks.md) - [Folder metadata](https://ja.developer.box.com/506b6d6a02cce2665e62964deb674dd8/FolderMetadata.md) - [Folder watermarks](https://ja.developer.box.com/af0d2c0fd49cb12eaaeabb947f0cc973/FolderWatermarks.md) - [Folders](https://ja.developer.box.com/2066cdd4e1d1228c9ddd8b3bbffb51a9/Folders.md) - [Groups](https://ja.developer.box.com/a37e64a2a67bec61a90aa22548bbcd10/Groups.md) - [Hub collaborations](https://ja.developer.box.com/2e14723f6939b2c022ef4e23c14dce5f/HubCollaborations.md) - [Hub items](https://ja.developer.box.com/19330a0b88fecc357b19b4f6a34a9055/HubItems.md) - [Hubs](https://ja.developer.box.com/203d8de934104d3cba5e30aca8894baf/Hubs.md) - [Integration mappings](https://ja.developer.box.com/1555bc9e12479eaf3058df376ee790dd/IntegrationMappings.md) - [Invites](https://ja.developer.box.com/8f95eb52c4fee68cf65ee65ff741548b/Invites.md) - [Legal hold policies](https://ja.developer.box.com/4e5743178eb437f048b35b87c49f7fa1/LegalHoldPolicies.md) - [Legal hold policy assignments](https://ja.developer.box.com/628e7b43a5d4d10ef6613020d658f915/LegalHoldPolicyAssignments.md) - [List collaborations](https://ja.developer.box.com/15e4850545eca9890d3f3a0ac9ef1bdc/ListCollaborations.md) - [Memberships](https://ja.developer.box.com/5d7e3bbe50b84444f739b981aa7a90ec/Memberships.md) - [Metadata cascade policies](https://ja.developer.box.com/c57554bdaf0d44c3b59f2f977c10a3fb/MetadataCascadePolicies.md) - [Metadata templates](https://ja.developer.box.com/11b6140f794c573a66e8e18807e4cd4f/MetadataTemplates.md) - [Recent items](https://ja.developer.box.com/3edd4dc632bab6c9b51780ddb364cc22/RecentItems.md) - [Retention policies](https://ja.developer.box.com/757f3b6f7ada00444e869362def63c35/RetentionPolicies.md) - [Retention policy assignments](https://ja.developer.box.com/77cea9a333b25c448076ef9c8a27e6fb/RetentionPolicyAssignments.md) - [Search](https://ja.developer.box.com/c8c1a4cdb373ac495bf0b5f04b3575fe/Search.md) - [Session termination](https://ja.developer.box.com/7c8ce1945ad61320b6723b30c0155f45/SessionTermination.md) - [Shared links app items](https://ja.developer.box.com/4f83387f849ef80390aabc5a69aeeb88/SharedLinksAppItems.md) - [Shared links files](https://ja.developer.box.com/bdf2e7eec1d554cf65b60a162ff45322/SharedLinksFiles.md) - [Shared links folders](https://ja.developer.box.com/0846e2de2e792948afcdb45152220d45/SharedLinksFolders.md) - [Shared links web links](https://ja.developer.box.com/e1a04ef46c5992998c4535230d9141e5/SharedLinksWebLinks.md) - [Shield information barrier reports](https://ja.developer.box.com/901ea0b205bbefb6332637c066296cf1/ShieldInformationBarrierReports.md) - [Shield information barrier segment members](https://ja.developer.box.com/81721dae7f613dbf72af9963acd9fbdd/ShieldInformationBarrierSegmentMembers.md) - [Shield information barrier segment restrictions](https://ja.developer.box.com/cfbfe82062910f0c73af42469cd81972/ShieldInformationBarrierSegmentRestrictions.md) - [Shield information barrier segments](https://ja.developer.box.com/0da2a4792fff2d699ae7f48de535aa64/ShieldInformationBarrierSegments.md) - [Shield information barriers](https://ja.developer.box.com/32766871c6c3347a5e264f7872f5769d/ShieldInformationBarriers.md) - [Shield lists](https://ja.developer.box.com/92f0095d02c82ba410ed288f49e93b59/ShieldLists.md) - [Sign requests](https://ja.developer.box.com/89d4065f43b84a7c9238334bc9b7b1b3/SignRequests.md) - [Sign templates](https://ja.developer.box.com/ada0deab883578a1700240437684b295/SignTemplates.md) - [Skills](https://ja.developer.box.com/8d9aa74b7eaf4a027accd670284a6a1d/Skills.md) - [Storage policies](https://ja.developer.box.com/bedd4519d96757189bc0ca855d278c14/StoragePolicies.md) - [Storage policy assignments](https://ja.developer.box.com/418d00ab16ce6e8d031ed2b7806f1425/StoragePolicyAssignments.md) - [Task assignments](https://ja.developer.box.com/dbaa6892870b466f9ebcee31578c963a/TaskAssignments.md) - [Tasks](https://ja.developer.box.com/7a492aae73ab17cac5341acd8c15114b/Tasks.md) - [Terms of service user statuses](https://ja.developer.box.com/33514073546e1c822cd0dcc8a40f5b66/TermsOfServiceUserStatuses.md) - [Terms of services](https://ja.developer.box.com/bd83b1fdc2d3074bb154841004e322bb/TermsOfServices.md) - [Transfer](https://ja.developer.box.com/ae8bc2a5dc0f360509150755da9f9d82/Transfer.md) - [Trashed files](https://ja.developer.box.com/49cffe9600e3331b4e8ce7adeefcf3f4/TrashedFiles.md) - [Trashed folders](https://ja.developer.box.com/54096a5f84173e0d286e1fd5039c88b8/TrashedFolders.md) - [Trashed items](https://ja.developer.box.com/bc07421c01fd50a38981853c003dbdec/TrashedItems.md) - [Trashed web links](https://ja.developer.box.com/d4ad7b7835366e06a935680e53896873/TrashedWebLinks.md) - [Uploads](https://ja.developer.box.com/f9db97938b2f5c81a71257eba2d9c4ca/Uploads.md) - [User collaborations](https://ja.developer.box.com/eed9d89e223f51806921441c2ea00739/UserCollaborations.md) - [Users](https://ja.developer.box.com/5d1e87e40d51411cbb7bd93547179065/Users.md) - [Web links](https://ja.developer.box.com/99e23c4c2b872f87a6a2c45ee7055c18/WebLinks.md) - [Webhooks](https://ja.developer.box.com/5de24e652a33902fbdf953d0581a7c4a/Webhooks.md) - [Workflows](https://ja.developer.box.com/14410c56df80410ba7099312b5830a61/Workflows.md) - [Zip downloads](https://ja.developer.box.com/ff49054385b96efdc423c1860310a469/ZipDownloads.md) --- ### Documentation **Type:** page | **Section:** Additional Resources Documentation High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available… # Documentation ## High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available by topic: - [Ai](https://ja.developer.box.com/ea8451d6382c42cfd2f0317656e32112/Ai.md) - [Ai studio](https://ja.developer.box.com/227b81b2fe46c92e313ad164ec5d20a8/AiStudio.md) - [App item associations](https://ja.developer.box.com/04d05fc1f7b6348be9ec6598399f2fb9/AppItemAssociations.md) - [Archives](https://ja.developer.box.com/0fa0228c2d69095a6b5aac47fab93257/Archives.md) - [Authorization](https://ja.developer.box.com/1e2d6b38f474114c770c3726cbae720c/Authorization.md) - [Avatars](https://ja.developer.box.com/6c67c5aed1b3fd03651dd8388f7ec5c1/Avatars.md) - [Chunked uploads](https://ja.developer.box.com/74295a615fd35cf795da5f1a09b90f1d/ChunkedUploads.md) - [Classifications](https://ja.developer.box.com/2671efd2e8d76211b6655a52250d2d36/Classifications.md) - [Collaboration allowlist entries](https://ja.developer.box.com/de2f805c3217e1fefad04d2971390909/CollaborationAllowlistEntries.md) - [Collaboration allowlist exempt targets](https://ja.developer.box.com/e5d4c14e8586a311cac61d795be88b30/CollaborationAllowlistExemptTargets.md) - [Collections](https://ja.developer.box.com/f17f7569cbfd9c98f0a1e31a92af466a/Collections.md) - [Comments](https://ja.developer.box.com/fba7172d9a3d616981ed23155dd80e15/Comments.md) - [Device pinners](https://ja.developer.box.com/3e20308e2bd56cc3e00aa572f3169558/DevicePinners.md) - [Docgen](https://ja.developer.box.com/3878c1f29c6574d040541e783d4df3d9/Docgen.md) - [Docgen template](https://ja.developer.box.com/6ff2bdbd3914ca62b003bbc8bb293d58/DocgenTemplate.md) - [Downloads](https://ja.developer.box.com/a58df25d77160e5c8d375e0a10e673d2/Downloads.md) - [Email aliases](https://ja.developer.box.com/7b9c9b272cc0710edd90f47c7a9997b9/EmailAliases.md) - [Enterprise configurations](https://ja.developer.box.com/22ed1708430e11ccad8e0dd1d718b599/EnterpriseConfigurations.md) - [Events](https://ja.developer.box.com/c8500a2472482fa596e33d83f3268cde/Events.md) - [External users](https://ja.developer.box.com/b73fcd320f71523abe914f2adcc46322/ExternalUsers.md) - [File classifications](https://ja.developer.box.com/0a3175a4c9fd6002fd7bdecfe4cd8ab9/FileClassifications.md) - [File metadata](https://ja.developer.box.com/6bcc4d28a4c5d3026aac4148ffd88bd4/FileMetadata.md) - [File requests](https://ja.developer.box.com/8be9a969c48e7b20564d19b137cd741c/FileRequests.md) - [File version legal holds](https://ja.developer.box.com/c0e1e9db5819f8c336b58b167ed78b52/FileVersionLegalHolds.md) - [File version retentions](https://ja.developer.box.com/bed1b4d1aed3c4d6a156909a9ff53e62/FileVersionRetentions.md) - [File versions](https://ja.developer.box.com/4db74ad0c6fa9333c1fd2879e5a3934f/FileVersions.md) - [File watermarks](https://ja.developer.box.com/d640bba4ba90067afeeeb91f9e76f554/FileWatermarks.md) - [Files](https://ja.developer.box.com/4fb2f4d39c95c898db68e89b9676196c/Files.md) - [Folder classifications](https://ja.developer.box.com/7a1b8d8694a979ec35173378cd982566/FolderClassifications.md) - [Folder locks](https://ja.developer.box.com/069dbc54498d9c7fc175cdc1f5e99450/FolderLocks.md) - [Folder metadata](https://ja.developer.box.com/1685743365ab810fa59b68205859afbb/FolderMetadata.md) - [Folder watermarks](https://ja.developer.box.com/8a00f626a5646d60d2824c5a62d64d88/FolderWatermarks.md) - [Folders](https://ja.developer.box.com/6af009ae17bee91fc9af22e2a34fe186/Folders.md) - [Groups](https://ja.developer.box.com/ed02325488bf39dedd6ed7c72d3de994/Groups.md) - [Hub collaborations](https://ja.developer.box.com/61d7125092613ef061b10cfbff1a2e1f/HubCollaborations.md) - [Hub items](https://ja.developer.box.com/9f5e47e95890d2aa4185a31895337c65/HubItems.md) - [Hubs](https://ja.developer.box.com/5ea893a2ecf64ea2fcb0ec2d0f3a551d/Hubs.md) - [Integration mappings](https://ja.developer.box.com/aa5dd619f70e4c5df9f04f99c1d5a07f/IntegrationMappings.md) - [Invites](https://ja.developer.box.com/5f6091aa675bd1609535d0a454cdb9ab/Invites.md) - [Legal hold policies](https://ja.developer.box.com/756d3c4ef486e62c32270a30d00347f3/LegalHoldPolicies.md) - [Legal hold policy assignments](https://ja.developer.box.com/706d9a05ae66ab79cd331acc8fa65a41/LegalHoldPolicyAssignments.md) - [List collaborations](https://ja.developer.box.com/37595e2cc7f6a4ef9bee6875bd3ba09d/ListCollaborations.md) - [Memberships](https://ja.developer.box.com/10c6cbbadfb2a7553ec80f5dc4dd5112/Memberships.md) - [Metadata cascade policies](https://ja.developer.box.com/a959124da0fec5ab80f1981549b5d7e8/MetadataCascadePolicies.md) - [Metadata templates](https://ja.developer.box.com/b483047323b44b9268f8190adf76973e/MetadataTemplates.md) - [Recent items](https://ja.developer.box.com/090a8a7bbd34120c05a2c668a3a8223e/RecentItems.md) - [Retention policies](https://ja.developer.box.com/69f48cc4d528fc2353bb27564e6e1442/RetentionPolicies.md) - [Retention policy assignments](https://ja.developer.box.com/36f77dfbfa720f58817ea61b2be8f446/RetentionPolicyAssignments.md) - [Search](https://ja.developer.box.com/1aa63146bc2e43b5dd25883f9d8f2d25/Search.md) - [Session termination](https://ja.developer.box.com/f3f8feb1c444f7338b47016f00078f8e/SessionTermination.md) - [Shared links app items](https://ja.developer.box.com/ec53f626c3e0ac3c867245d156f36ac7/SharedLinksAppItems.md) - [Shared links files](https://ja.developer.box.com/ffb17430c963c811ce944e00d40f3966/SharedLinksFiles.md) - [Shared links folders](https://ja.developer.box.com/0c0d7b6b22d1daa10d5b53412c6ec662/SharedLinksFolders.md) - [Shared links web links](https://ja.developer.box.com/f1b922ccab5c43cbbb23774c81929a8e/SharedLinksWebLinks.md) - [Shield information barrier reports](https://ja.developer.box.com/89089c0bd63e32a77dc4cf07e8207ffb/ShieldInformationBarrierReports.md) - [Shield information barrier segment members](https://ja.developer.box.com/4f974cd274f15085bb0e821c4e6045b7/ShieldInformationBarrierSegmentMembers.md) - [Shield information barrier segment restrictions](https://ja.developer.box.com/0aaeabb6fa6bc3e81cd3d605622131db/ShieldInformationBarrierSegmentRestrictions.md) - [Shield information barrier segments](https://ja.developer.box.com/e98dfcd459d5d55c755dd7f6497ce238/ShieldInformationBarrierSegments.md) - [Shield information barriers](https://ja.developer.box.com/a20977d47e2f235dc7c003b00afcb256/ShieldInformationBarriers.md) - [Shield lists](https://ja.developer.box.com/0a23f842dd1ee70c0e0087764e931618/ShieldLists.md) - [Sign requests](https://ja.developer.box.com/15f7637dd800aa9f45922a34db4c8292/SignRequests.md) - [Sign templates](https://ja.developer.box.com/256bce276ab7a5f18c87c45bd15c35fe/SignTemplates.md) - [Skills](https://ja.developer.box.com/a6bc430e183348c7495ad928c77f2680/Skills.md) - [Storage policies](https://ja.developer.box.com/c254ac5008f6a1c060cce5d76faf67dd/StoragePolicies.md) - [Storage policy assignments](https://ja.developer.box.com/3e1c2bafd123a298bee4f0eef28377cc/StoragePolicyAssignments.md) - [Task assignments](https://ja.developer.box.com/f08cb5275bdebdbea309b616da608914/TaskAssignments.md) - [Tasks](https://ja.developer.box.com/d27989287e1e1e32eea39a7ad183b189/Tasks.md) - [Terms of service user statuses](https://ja.developer.box.com/913dd8ed7cd7ab2716860a153fd043ad/TermsOfServiceUserStatuses.md) - [Terms of services](https://ja.developer.box.com/faa36281b3b1a18ebdf28b32d58b9261/TermsOfServices.md) - [Transfer](https://ja.developer.box.com/1c9ddfbba246afed021d7e220cb36ce2/Transfer.md) - [Trashed files](https://ja.developer.box.com/00eeda48126195ddbd138ffa158b2a33/TrashedFiles.md) - [Trashed folders](https://ja.developer.box.com/2c52b31a2527c35d607f6613a302d17a/TrashedFolders.md) - [Trashed items](https://ja.developer.box.com/9f7c64d0af63556089078be05fbb6c41/TrashedItems.md) - [Trashed web links](https://ja.developer.box.com/3226282df756748ad546d1c165cbf05f/TrashedWebLinks.md) - [Uploads](https://ja.developer.box.com/e7966845f3cc06ba93d89fd3b6fc9173/Uploads.md) - [User collaborations](https://ja.developer.box.com/e066aafc20256e309d008c11f4dd5f6a/UserCollaborations.md) - [Users](https://ja.developer.box.com/83564da30e410a5bdc2c587325ac35f4/Users.md) - [Web links](https://ja.developer.box.com/222b06cdf7fcfc38bdf3cf7430dc52f1/WebLinks.md) - [Webhooks](https://ja.developer.box.com/700aacebc873f0ba29bf185a0e3babbb/Webhooks.md) - [Workflows](https://ja.developer.box.com/ec2b9b76c9ad7a05f78a8a4662785ac5/Workflows.md) - [Zip downloads](https://ja.developer.box.com/0a2c8bf926c220dbc74be2a1a10f608d/ZipDownloads.md) --- ### Documentation **Type:** page | **Section:** Additional Resources Documentation High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available… # Documentation ## High-level Documentation General explanations of the available functionality and examples of how to use the SDK are available by topic: - [Ai](https://ja.developer.box.com/4c9768fbff41f5fac184743d4658da69/ai.md) - [Aistudio](https://ja.developer.box.com/fa2d3be0c146c06c8c58f985db6475b6/aistudio.md) - [Appitemassociations](https://ja.developer.box.com/85856398ed7d5c853d641b74caaca122/appitemassociations.md) - [Archives](https://ja.developer.box.com/c5a27486a04b3f6371eff22b8222253f/archives.md) - [Authorization](https://ja.developer.box.com/e7dc87f3544ce5b0fe8f08b557128d58/authorization.md) - [Avatars](https://ja.developer.box.com/fd145549136dcb0a9e11fe6034847a1c/avatars.md) - [Chunkeduploads](https://ja.developer.box.com/130fb5e9921cd03b0c5d839a3ca4d953/chunkeduploads.md) - [Classifications](https://ja.developer.box.com/4ca4df76aa5144810dace8e84b0f6b45/classifications.md) - [Collaborationallowlistentries](https://ja.developer.box.com/71bb138bfca1ea3387dfe19ac0639247/collaborationallowlistentries.md) - [Collaborationallowlistexempttargets](https://ja.developer.box.com/572fad0c8059c8d1c36da673481d6d4b/collaborationallowlistexempttargets.md) - [Collections](https://ja.developer.box.com/e4cfdb96dde46c847e36333380084e90/collections.md) - [Comments](https://ja.developer.box.com/5c33921f78e20d1b81f52c4f96fc49e8/comments.md) - [Devicepinners](https://ja.developer.box.com/997dc738393181b6bea47214a8ae6151/devicepinners.md) - [Docgen](https://ja.developer.box.com/a7791c8ad31c44ab074e54cb08d0f340/docgen.md) - [Docgentemplate](https://ja.developer.box.com/2205b28a3cd3e0f0f62afe664b7a5460/docgentemplate.md) - [Downloads](https://ja.developer.box.com/fb9fc134cc1570b12c358da6344fc81c/downloads.md) - [Emailaliases](https://ja.developer.box.com/13d5f1b719753acd7397f0226e047035/emailaliases.md) - [Enterpriseconfigurations](https://ja.developer.box.com/8cbf30e56531c5dbfa428301143beaa4/enterpriseconfigurations.md) - [Events](https://ja.developer.box.com/556f1d9577d462add9a7b724afc99d51/events.md) - [Externalusers](https://ja.developer.box.com/8afbec63f722e961a34f395d18658da4/externalusers.md) - [Fileclassifications](https://ja.developer.box.com/388e0106ae9ab177124b291de3a54a06/fileclassifications.md) - [Filemetadata](https://ja.developer.box.com/d9276a1316eea9a27a6f05e188af9a3d/filemetadata.md) - [Filerequests](https://ja.developer.box.com/a8faeceec641bd9651cba877685f0574/filerequests.md) - [Files](https://ja.developer.box.com/6116446df6c48a4f6c573e19f7837b05/files.md) - [Fileversionlegalholds](https://ja.developer.box.com/8e6226fef8570d0f624c146be2b0251f/fileversionlegalholds.md) - [Fileversionretentions](https://ja.developer.box.com/2532c854bbb48feddbf46f58874c5bc7/fileversionretentions.md) - [Fileversions](https://ja.developer.box.com/3135b1d34bd483c7c9308dac7c11560a/fileversions.md) - [Filewatermarks](https://ja.developer.box.com/f1aa57f4b9c2692a953105262df9dfc8/filewatermarks.md) - [Folderclassifications](https://ja.developer.box.com/b705acfcd1309c02d81279143764576f/folderclassifications.md) - [Folderlocks](https://ja.developer.box.com/e7bab8893ba0270ed64b859df253b941/folderlocks.md) - [Foldermetadata](https://ja.developer.box.com/daa05bb98fd6df0cf3bf5cdc0b9767ea/foldermetadata.md) - [Folders](https://ja.developer.box.com/b037c3ca8b8a64aaa54ba229e37bbf46/folders.md) - [Folderwatermarks](https://ja.developer.box.com/8b89b08d0a164d2ab84c7fad7052105e/folderwatermarks.md) - [Groups](https://ja.developer.box.com/5340618d953cb195925cc49a49fb3cae/groups.md) - [Hubcollaborations](https://ja.developer.box.com/dc0147f170a09ab5d6fb5d5da34fe7b5/hubcollaborations.md) - [Hubitems](https://ja.developer.box.com/0e057c35026ba8cecdb895408e673c10/hubitems.md) - [Hubs](https://ja.developer.box.com/a4547fe7d204a419ab6ce4bcd69639fa/hubs.md) - [Integrationmappings](https://ja.developer.box.com/d3608783843bf3ab3e123a86329d313d/integrationmappings.md) - [Invites](https://ja.developer.box.com/be73744888a25b129f1d7825a7e3dfc9/invites.md) - [Legalholdpolicies](https://ja.developer.box.com/520eb3d80bc63080848a7dcd0bbfe46b/legalholdpolicies.md) - [Legalholdpolicyassignments](https://ja.developer.box.com/a7ea003be24c1102f3f7c395d092187c/legalholdpolicyassignments.md) - [Listcollaborations](https://ja.developer.box.com/3c91fadbb61cf1d040da3502dfc59e04/listcollaborations.md) - [Memberships](https://ja.developer.box.com/4ca38d921501f32d38c17646224bbf48/memberships.md) - [Metadatacascadepolicies](https://ja.developer.box.com/c536763ae55a5653f4ecc8237931c371/metadatacascadepolicies.md) - [Metadatatemplates](https://ja.developer.box.com/2c952b95509e7d56689d7b7c05df8ca4/metadatatemplates.md) - [Recentitems](https://ja.developer.box.com/614ddb4bdf92189c2e2e6ae044d5b6c1/recentitems.md) - [Retentionpolicies](https://ja.developer.box.com/256a5da6e2760654b626684b7d52207c/retentionpolicies.md) - [Retentionpolicyassignments](https://ja.developer.box.com/f459d6ab4a4f2ff17b9e2e75308d32e1/retentionpolicyassignments.md) - [Search](https://ja.developer.box.com/e9c9c63219f963d506b71c68119cedcf/search.md) - [Sessiontermination](https://ja.developer.box.com/65edb887c7d8dcd83a645b59a8c46f59/sessiontermination.md) - [Sharedlinksappitems](https://ja.developer.box.com/d8ba79121d7f8ce2c82a07bb3f1b69cc/sharedlinksappitems.md) - [Sharedlinksfiles](https://ja.developer.box.com/bfbc782c303925a0072caf21ee600683/sharedlinksfiles.md) - [Sharedlinksfolders](https://ja.developer.box.com/22577ede84a66f86f549ec3f01043a05/sharedlinksfolders.md) - [Sharedlinksweblinks](https://ja.developer.box.com/86e2ac7a5bed03ecd336b7f270a3304f/sharedlinksweblinks.md) - [Shieldinformationbarrierreports](https://ja.developer.box.com/0364b7ccf11087c30fd01cb3d83fe5cf/shieldinformationbarrierreports.md) - [Shieldinformationbarriers](https://ja.developer.box.com/247235b29132fa9cc0e56122442d45c9/shieldinformationbarriers.md) - [Shieldinformationbarriersegmentmembers](https://ja.developer.box.com/88dfa1c093c9987a692145a709cc9768/shieldinformationbarriersegmentmembers.md) - [Shieldinformationbarriersegmentrestrictions](https://ja.developer.box.com/ac0d7fa59520a072894bed726203defa/shieldinformationbarriersegmentrestrictions.md) - [Shieldinformationbarriersegments](https://ja.developer.box.com/d416676f5bdc63073a0769713f43de48/shieldinformationbarriersegments.md) - [Shieldlists](https://ja.developer.box.com/55f00b5f5fe4195f85b00785a0db2f6b/shieldlists.md) - [Signrequests](https://ja.developer.box.com/e7f9e20f2e50007ab91ccc7e02f94417/signrequests.md) - [Signtemplates](https://ja.developer.box.com/be3e240ab326283907d771b284781009/signtemplates.md) - [Skills](https://ja.developer.box.com/f26d39ba616089c327cc6584f0ae47ca/skills.md) - [Storagepolicies](https://ja.developer.box.com/a2712cd5a1f86fc34c74001920d32c0e/storagepolicies.md) - [Storagepolicyassignments](https://ja.developer.box.com/fc7ddf2c255ed81e4bd713988d5ab0cd/storagepolicyassignments.md) - [Taskassignments](https://ja.developer.box.com/d8945b755387ae48269013f7edb0fd04/taskassignments.md) - [Tasks](https://ja.developer.box.com/8df11c3da98dc1845e65f3c5d394deaa/tasks.md) - [Termsofservices](https://ja.developer.box.com/f5b6328dd46e8848971a39edc636f846/termsofservices.md) - [Termsofserviceuserstatuses](https://ja.developer.box.com/cedace8955ea8386a594561065ddf445/termsofserviceuserstatuses.md) - [Transfer](https://ja.developer.box.com/fe7c2f557e7f8d18273592244f634992/transfer.md) - [Trashedfiles](https://ja.developer.box.com/fd902f5cf3f6ef41bf4939516f155adc/trashedfiles.md) - [Trashedfolders](https://ja.developer.box.com/b551a1c1eb5baab5ed5431f1c0df0dd3/trashedfolders.md) - [Trasheditems](https://ja.developer.box.com/14bb21e4093e736a1dc37e48abcde43f/trasheditems.md) - [Trashedweblinks](https://ja.developer.box.com/3200803434a63dac4a2f5c15dca95acd/trashedweblinks.md) - [Uploads](https://ja.developer.box.com/07cade95cf4f09fd6c250ef6a340a8fa/uploads.md) - [Usercollaborations](https://ja.developer.box.com/ffcdbd10376fdcbeaeb639fe9c3c7997/usercollaborations.md) - [Users](https://ja.developer.box.com/a84f47e755917c13acc89ce98c54a1f4/users.md) - [Webhooks](https://ja.developer.box.com/361f9b686eb003437b76ba31889a6b30/webhooks.md) - [Weblinks](https://ja.developer.box.com/b3c5748c2a0d9e6445fea45b7cfa99fb/weblinks.md) - [Workflows](https://ja.developer.box.com/3c1a2bf21694518697961d88c0b0f848/workflows.md) - [Zipdownloads](https://ja.developer.box.com/222b78060cc6ce2f6e00c7a553a06ee5/zipdownloads.md) --- ### Downloads **Type:** page | **Section:** Additional Resources Downloads Downloads module is used to download files from Box. Downloads Download a File Get download URL Arguments Returns Download a File… # Downloads Downloads module is used to download files from Box. [Downloads](#downloads) - [Download a File](#download-a-file) [Get download URL](#get-download-url) - [Arguments](#arguments) - [Returns](#returns) ## Download a File To get the entire contents of the file as `ArrayBuffer`, call `downloadFile` method. This method returns a `ArrayBuffer` object which contains the file content. ``` const fs = require('fs'); const fileContent = await client.downloads.downloadFile('123456789'); const fileWriteStream = fs.createWriteStream('file.pdf'); fileContent.pipe(fileWriteStream); ``` ## Get download URL Get a URL to download a file This operation is performed by calling function `getDownloadFileUrl`. ``` await client.downloads.getDownloadFileUrl(uploadedFile.id); ``` ### Arguments fileId `string` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" ## optionalsInput GetDownloadFileUrlOptionalsInput ### Returns This function returns a value of type `string`. --- ### Downloads **Type:** page | **Section:** Additional Resources Downloads Downloads module is used to download files from Box. Download a File Download a File To download a file to your device(local disk… # Downloads Downloads module is used to download files from Box. - [Download a File](#download-a-file) ## Download a File To download a file to your device(local disk), call `client.downloads.downloadFile(fileId:downloadDestinationURL:queryParams:headers)` method with the ID of the file to download and a URL to the location (including name of the file) where the file should be downloaded to. ``` let downloadsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! let destinationURL = downloadsDirectoryURL.appendingPathComponent("file.txt") let url = try await client.downloads.downloadFile(fileId: file.id, downloadDestinationURL: destinationURL) if let fileContent = try? String(contentsOf: url, encoding: .utf8) { print("The content of the file: \(fileContent)") } ``` --- ### Downloads **Type:** page | **Section:** Additional Resources Downloads Downloads module is used to download files from Box. Downloads Download a File Get download URL Arguments Returns Download a File… # Downloads Downloads module is used to download files from Box. [Downloads](#downloads) - [Download a File](#download-a-file) [Get download URL](#get-download-url) - [Arguments](#arguments) - [Returns](#returns) ## Download a File To get the entire contents of the file as `ArrayBuffer`, call `downloadFile` method. This method returns a `ArrayBuffer` object which contains the file content. ``` const fs = require('fs'); const fileContent = await client.downloads.downloadFile('123456789'); const fileWriteStream = fs.createWriteStream('file.pdf'); fileContent.pipe(fileWriteStream); ``` ## Get download URL Get a URL to download a file This operation is performed by calling function `getDownloadFileUrl`. ``` await client.downloads.getDownloadFileUrl(uploadedFile.id); ``` ### Arguments fileId `string` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" ## optionalsInput GetDownloadFileUrlOptionalsInput ### Returns This function returns a value of type `string`. --- ### Downloads **Type:** page | **Section:** Additional Resources Downloads Downloads module is used to download files from Box. Download a File Download a File To download a file to your device(local disk… # Downloads Downloads module is used to download files from Box. - [Download a File](#download-a-file) ## Download a File To download a file to your device(local disk), call `client.downloads.downloadFile(fileId:downloadDestinationURL:queryParams:headers)` method with the ID of the file to download and a URL to the location (including name of the file) where the file should be downloaded to. ``` let downloadsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first! let destinationURL = downloadsDirectoryURL.appendingPathComponent("file.txt") let url = try await client.downloads.downloadFile(fileId: file.id, downloadDestinationURL: destinationURL) if let fileContent = try? String(contentsOf: url, encoding: .utf8) { print("The content of the file: \(fileContent)") } ``` --- ### DownloadsManager **Type:** page | **Section:** Additional Resources DownloadsManager Download file URL Download file Download file Download file URL Get the download URL without downloading the content. This… # DownloadsManager - [Download file URL](#download-file-url) - [Download file](#download-file) - [Download file](#download-file) ## Download file URL Get the download URL without downloading the content. This operation is performed by calling function `getDownloadFileUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-content/). ``` client.getDownloads().getDownloadFileUrl(uploadedFile.getId()) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `GetDownloadFileUrlQueryParams` - Query parameters of downloadFile method headers `GetDownloadFileUrlHeaders` - Headers of downloadFile method ### Returns This function returns a value of type `String`. Returns the requested file if the client has the follow redirects setting enabled to automatically follow HTTP `3xx` responses as redirects. If not, the request will return `302` instead. For details, see the [download file guide](https://developer.box.com/guides/downloads/file#download-url).If the file is not ready to be downloaded yet `Retry-After` header will be returned indicating the time in seconds after which the file will be available for the client to download. This response can occur when the file was uploaded immediately before the download request. ## Download file Returns the contents of a file in binary format. This operation is performed by calling function `downloadFile`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-content/). ``` client.getDownloads().downloadFile(uploadedFile.getId()) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `DownloadFileQueryParams` - Query parameters of downloadFile method headers `DownloadFileHeaders` - Headers of downloadFile method ### Returns This function returns a value of type `InputStream`. Returns the requested file if the client has the follow redirects setting enabled to automatically follow HTTP `3xx` responses as redirects. If not, the request will return `302` instead. For details, see the [download file guide](https://developer.box.com/guides/downloads/file#download-url).If the file is not ready to be downloaded yet `Retry-After` header will be returned indicating the time in seconds after which the file will be available for the client to download. This response can occur when the file was uploaded immediately before the download request. ## Download file Download file to a given output stream This operation is performed by calling function `downloadFileToOutputStream`. ``` client.getDownloads().downloadFileToOutputStream(uploadedFile.getId(), fileOutputStream) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" outputStream `OutputStream` - Download file to a given output stream queryParams `DownloadFileToOutputStreamQueryParams` - Query parameters of downloadFile method headers `DownloadFileToOutputStreamHeaders` - Headers of downloadFile method ### Returns This function returns a value of type `void`. --- ### DownloadsManager **Type:** page | **Section:** Additional Resources DownloadsManager Download file URL Download file Download file Download file URL Get the download URL without downloading the content. This… # DownloadsManager - [Download file URL](#download-file-url) - [Download file](#download-file) - [Download file](#download-file) ## Download file URL Get the download URL without downloading the content. This operation is performed by calling function `get_download_file_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-content/). ``` client.downloads.get_download_file_url(uploaded_file.id) ``` ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" version `Optional[str]` - The file version to download. access_token `Optional[str]` - An optional access token that can be used to pre-authenticate this request, which means that a download link can be shared with a browser or a third party service without them needing to know how to handle the authentication. When using this parameter, please make sure that the access token is sufficiently scoped down to only allow read access to that file and no other files or folders. range `Optional[str]` - The byte range of the content to download. The format `bytes={start_byte}-{end_byte}` can be used to specify what section of the file to download. boxapi `Optional[str]` - The URL, and optional password, for the shared link of this item. This header can be used to access items that have not been explicitly shared with a user. Use the format `shared_link=[link]` or if a password is required then use `shared_link=[link]&shared_link_password=[password]`. This header can be used on the file or folder shared, as well as on any files or folders nested within the item. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `str`. Returns the requested file if the client has the follow redirects setting enabled to automatically follow HTTP `3xx` responses as redirects. If not, the request will return `302` instead. For details, see the [download file guide](https://developer.box.com/guides/downloads/file#download-url).If the file is not ready to be downloaded yet `Retry-After` header will be returned indicating the time in seconds after which the file will be available for the client to download. This response can occur when the file was uploaded immediately before the download request. ## Download file Returns the contents of a file in binary format. This operation is performed by calling function `download_file`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-content/). ``` client.downloads.download_file(uploaded_file.id) ``` ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" version `Optional[str]` - The file version to download. access_token `Optional[str]` - An optional access token that can be used to pre-authenticate this request, which means that a download link can be shared with a browser or a third party service without them needing to know how to handle the authentication. When using this parameter, please make sure that the access token is sufficiently scoped down to only allow read access to that file and no other files or folders. range `Optional[str]` - The byte range of the content to download. The format `bytes={start_byte}-{end_byte}` can be used to specify what section of the file to download. boxapi `Optional[str]` - The URL, and optional password, for the shared link of this item. This header can be used to access items that have not been explicitly shared with a user. Use the format `shared_link=[link]` or if a password is required then use `shared_link=[link]&shared_link_password=[password]`. This header can be used on the file or folder shared, as well as on any files or folders nested within the item. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Optional[ByteStream]`. Returns the requested file if the client has the follow redirects setting enabled to automatically follow HTTP `3xx` responses as redirects. If not, the request will return `302` instead. For details, see the [download file guide](https://developer.box.com/guides/downloads/file#download-url).If the file is not ready to be downloaded yet `Retry-After` header will be returned indicating the time in seconds after which the file will be available for the client to download. This response can occur when the file was uploaded immediately before the download request. ## Download file Download file to a given output stream This operation is performed by calling function `download_file_to_output_stream`. ``` client.downloads.download_file_to_output_stream(uploaded_file.id, file_output_stream) ``` ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" output_stream `OutputStream` - Download file to a given output stream version `Optional[str]` - The file version to download. access_token `Optional[str]` - An optional access token that can be used to pre-authenticate this request, which means that a download link can be shared with a browser or a third party service without them needing to know how to handle the authentication. When using this parameter, please make sure that the access token is sufficiently scoped down to only allow read access to that file and no other files or folders. range `Optional[str]` - The byte range of the content to download. The format `bytes={start_byte}-{end_byte}` can be used to specify what section of the file to download. boxapi `Optional[str]` - The URL, and optional password, for the shared link of this item. This header can be used to access items that have not been explicitly shared with a user. Use the format `shared_link=[link]` or if a password is required then use `shared_link=[link]&shared_link_password=[password]`. This header can be used on the file or folder shared, as well as on any files or folders nested within the item. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. --- ### DownloadsManager **Type:** page | **Section:** Additional Resources DownloadsManager Download file URL Download file Download file Download file URL Get the download URL without downloading the content. This… # DownloadsManager - [Download file URL](#download-file-url) - [Download file](#download-file) - [Download file](#download-file) ## Download file URL Get the download URL without downloading the content. This operation is performed by calling function `get_download_file_url`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-content/). ``` client.downloads.get_download_file_url(uploaded_file.id) ``` ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" version `Optional[str]` - The file version to download. access_token `Optional[str]` - An optional access token that can be used to pre-authenticate this request, which means that a download link can be shared with a browser or a third party service without them needing to know how to handle the authentication. When using this parameter, please make sure that the access token is sufficiently scoped down to only allow read access to that file and no other files or folders. range `Optional[str]` - The byte range of the content to download. The format `bytes={start_byte}-{end_byte}` can be used to specify what section of the file to download. boxapi `Optional[str]` - The URL, and optional password, for the shared link of this item. This header can be used to access items that have not been explicitly shared with a user. Use the format `shared_link=[link]` or if a password is required then use `shared_link=[link]&shared_link_password=[password]`. This header can be used on the file or folder shared, as well as on any files or folders nested within the item. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `str`. Returns the requested file if the client has the follow redirects setting enabled to automatically follow HTTP `3xx` responses as redirects. If not, the request will return `302` instead. For details, see the [download file guide](g://downloads/file#download-url).If the file is not ready to be downloaded yet `Retry-After` header will be returned indicating the time in seconds after which the file will be available for the client to download. This response can occur when the file was uploaded immediately before the download request. ## Download file Returns the contents of a file in binary format. This operation is performed by calling function `download_file`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-content/). ``` client.downloads.download_file(uploaded_file.id) ``` ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" version `Optional[str]` - The file version to download. access_token `Optional[str]` - An optional access token that can be used to pre-authenticate this request, which means that a download link can be shared with a browser or a third party service without them needing to know how to handle the authentication. When using this parameter, please make sure that the access token is sufficiently scoped down to only allow read access to that file and no other files or folders. range `Optional[str]` - The byte range of the content to download. The format `bytes={start_byte}-{end_byte}` can be used to specify what section of the file to download. boxapi `Optional[str]` - The URL, and optional password, for the shared link of this item. This header can be used to access items that have not been explicitly shared with a user. Use the format `shared_link=[link]` or if a password is required then use `shared_link=[link]&shared_link_password=[password]`. This header can be used on the file or folder shared, as well as on any files or folders nested within the item. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Optional[ByteStream]`. Returns the requested file if the client has the follow redirects setting enabled to automatically follow HTTP `3xx` responses as redirects. If not, the request will return `302` instead. For details, see the [download file guide](g://downloads/file#download-url).If the file is not ready to be downloaded yet `Retry-After` header will be returned indicating the time in seconds after which the file will be available for the client to download. This response can occur when the file was uploaded immediately before the download request. ## Download file Download file to a given output stream This operation is performed by calling function `download_file_to_output_stream`. ``` client.downloads.download_file_to_output_stream(uploaded_file.id, file_output_stream) ``` ### Arguments file_id `str` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" output_stream `OutputStream` - Download file to a given output stream version `Optional[str]` - The file version to download. access_token `Optional[str]` - An optional access token that can be used to pre-authenticate this request, which means that a download link can be shared with a browser or a third party service without them needing to know how to handle the authentication. When using this parameter, please make sure that the access token is sufficiently scoped down to only allow read access to that file and no other files or folders. range `Optional[str]` - The byte range of the content to download. The format `bytes={start_byte}-{end_byte}` can be used to specify what section of the file to download. boxapi `Optional[str]` - The URL, and optional password, for the shared link of this item. This header can be used to access items that have not been explicitly shared with a user. Use the format `shared_link=[link]` or if a password is required then use `shared_link=[link]&shared_link_password=[password]`. This header can be used on the file or folder shared, as well as on any files or folders nested within the item. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. --- ### DownloadsManager **Type:** page | **Section:** Additional Resources DownloadsManager Download file URL Download file Download file Download file URL Get the download URL without downloading the content. This… # DownloadsManager - [Download file URL](#download-file-url) - [Download file](#download-file) - [Download file](#download-file) ## Download file URL Get the download URL without downloading the content. This operation is performed by calling function `getDownloadFileUrl`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-content/). ``` client.getDownloads().getDownloadFileUrl(uploadedFile.getId()) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `GetDownloadFileUrlQueryParams` - Query parameters of downloadFile method headers `GetDownloadFileUrlHeaders` - Headers of downloadFile method ### Returns This function returns a value of type `String`. Returns the requested file if the client has the follow redirects setting enabled to automatically follow HTTP `3xx` responses as redirects. If not, the request will return `302` instead. For details, see the [download file guide](g://downloads/file#download-url).If the file is not ready to be downloaded yet `Retry-After` header will be returned indicating the time in seconds after which the file will be available for the client to download. This response can occur when the file was uploaded immediately before the download request. ## Download file Returns the contents of a file in binary format. This operation is performed by calling function `downloadFile`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-files-id-content/). ``` client.getDownloads().downloadFile(uploadedFile.getId()) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" queryParams `DownloadFileQueryParams` - Query parameters of downloadFile method headers `DownloadFileHeaders` - Headers of downloadFile method ### Returns This function returns a value of type `InputStream`. Returns the requested file if the client has the follow redirects setting enabled to automatically follow HTTP `3xx` responses as redirects. If not, the request will return `302` instead. For details, see the [download file guide](g://downloads/file#download-url).If the file is not ready to be downloaded yet `Retry-After` header will be returned indicating the time in seconds after which the file will be available for the client to download. This response can occur when the file was uploaded immediately before the download request. ## Download file Download file to a given output stream This operation is performed by calling function `downloadFileToOutputStream`. ``` client.getDownloads().downloadFileToOutputStream(uploadedFile.getId(), fileOutputStream) ``` ### Arguments fileId `String` - The unique identifier that represents a file. The ID for any file can be determined by visiting a file in the web application and copying the ID from the URL. For example, for the URL `https://*.app.box.com/files/123` the `file_id` is `123`. Example: "12345" outputStream `OutputStream` - Download file to a given output stream queryParams `DownloadFileToOutputStreamQueryParams` - Query parameters of downloadFile method headers `DownloadFileToOutputStreamHeaders` - Headers of downloadFile method ### Returns This function returns a value of type `void`. --- ### EmailAliasesManager **Type:** page | **Section:** Additional Resources EmailAliasesManager List user's email aliases Create email alias Remove email alias List user's email aliases Retrieves all email aliases… # EmailAliasesManager - [List user's email aliases](#list-users-email-aliases) - [Create email alias](#create-email-alias) - [Remove email alias](#remove-email-alias) ## List user's email aliases Retrieves all email aliases for a user. The collection does not include the primary login for the user. This operation is performed by calling function `getUserEmailAliases`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-email-aliases/). ``` await client.emailAliases.getUserEmailAliases(newUser.id); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" optionalsInput `GetUserEmailAliasesOptionalsInput` ### Returns This function returns a value of type `EmailAliases`. Returns a collection of email aliases. ## Create email alias Adds a new email alias to a user account.. This operation is performed by calling function `createUserEmailAlias`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-email-aliases/). ``` await client.emailAliases.createUserEmailAlias(newUser.id, { email: newAliasEmail, } satisfies CreateUserEmailAliasRequestBody); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" requestBody `CreateUserEmailAliasRequestBody` - Request body of createUserEmailAlias method optionalsInput `CreateUserEmailAliasOptionalsInput` ### Returns This function returns a value of type `EmailAlias`. Returns the newly created email alias object. ## Remove email alias Removes an email alias from a user. This operation is performed by calling function `deleteUserEmailAliasById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-email-aliases-id/). ``` await client.emailAliases.deleteUserEmailAliasById(newUser.id, newAlias.id!); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" emailAliasId `string` - The ID of the email alias. Example: "23432" optionalsInput `DeleteUserEmailAliasByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. Removes the alias and returns an empty response. --- ### EmailAliasesManager **Type:** page | **Section:** Additional Resources EmailAliasesManager List user's email aliases Create email alias Remove email alias List user's email aliases Retrieves all email aliases… # EmailAliasesManager - [List user's email aliases](#list-users-email-aliases) - [Create email alias](#create-email-alias) - [Remove email alias](#remove-email-alias) ## List user's email aliases Retrieves all email aliases for a user. The collection does not include the primary login for the user. This operation is performed by calling function `getUserEmailAliases`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-email-aliases/). ``` client.getEmailAliases().getUserEmailAliases(newUser.getId()) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" headers `GetUserEmailAliasesHeaders` - Headers of getUserEmailAliases method ### Returns This function returns a value of type `EmailAliases`. Returns a collection of email aliases. ## Create email alias Adds a new email alias to a user account.. This operation is performed by calling function `createUserEmailAlias`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-email-aliases/). ``` client.getEmailAliases().createUserEmailAlias(newUser.getId(), new CreateUserEmailAliasRequestBody(newAliasEmail)) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" requestBody `CreateUserEmailAliasRequestBody` - Request body of createUserEmailAlias method headers `CreateUserEmailAliasHeaders` - Headers of createUserEmailAlias method ### Returns This function returns a value of type `EmailAlias`. Returns the newly created email alias object. ## Remove email alias Removes an email alias from a user. This operation is performed by calling function `deleteUserEmailAliasById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-email-aliases-id/). ``` client.getEmailAliases().deleteUserEmailAliasById(newUser.getId(), newAlias.getId()) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" emailAliasId `String` - The ID of the email alias. Example: "23432" headers `DeleteUserEmailAliasByIdHeaders` - Headers of deleteUserEmailAliasById method ### Returns This function returns a value of type `void`. Removes the alias and returns an empty response. --- ### EmailAliasesManager **Type:** page | **Section:** Additional Resources EmailAliasesManager List user's email aliases Create email alias Remove email alias List user's email aliases Retrieves all email aliases… # EmailAliasesManager - [List user's email aliases](#list-users-email-aliases) - [Create email alias](#create-email-alias) - [Remove email alias](#remove-email-alias) ## List user's email aliases Retrieves all email aliases for a user. The collection does not include the primary login for the user. This operation is performed by calling function `get_user_email_aliases`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-email-aliases/). ``` client.email_aliases.get_user_email_aliases(new_user.id) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `EmailAliases`. Returns a collection of email aliases. ## Create email alias Adds a new email alias to a user account.. This operation is performed by calling function `create_user_email_alias`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-email-aliases/). ``` client.email_aliases.create_user_email_alias(new_user.id, new_alias_email) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" email `str` - The email address to add to the account as an alias. Note: The domain of the email alias needs to be registered to your enterprise. See the [domain verification guide](https://support.box.com/hc/en-us/articles/4408619650579-Domain-Verification) for steps to add a new domain. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `EmailAlias`. Returns the newly created email alias object. ## Remove email alias Removes an email alias from a user. This operation is performed by calling function `delete_user_email_alias_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-email-aliases-id/). ``` client.email_aliases.delete_user_email_alias_by_id(new_user.id, new_alias.id) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" email_alias_id `str` - The ID of the email alias. Example: "23432" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Removes the alias and returns an empty response. --- ### EmailAliasesManager **Type:** page | **Section:** Additional Resources EmailAliasesManager List user's email aliases Create email alias Remove email alias List user's email aliases Retrieves all email aliases… # EmailAliasesManager - [List user's email aliases](#list-users-email-aliases) - [Create email alias](#create-email-alias) - [Remove email alias](#remove-email-alias) ## List user's email aliases Retrieves all email aliases for a user. The collection does not include the primary login for the user. This operation is performed by calling function `getUserEmailAliases`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-email-aliases/). ``` try await client.emailAliases.getUserEmailAliases(userId: newUser.id) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" headers `GetUserEmailAliasesHeaders` - Headers of getUserEmailAliases method ### Returns This function returns a value of type `EmailAliases`. Returns a collection of email aliases. ## Create email alias Adds a new email alias to a user account.. This operation is performed by calling function `createUserEmailAlias`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-email-aliases/). ``` try await client.emailAliases.createUserEmailAlias(userId: newUser.id, requestBody: CreateUserEmailAliasRequestBody(email: newAliasEmail)) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" requestBody `CreateUserEmailAliasRequestBody` - Request body of createUserEmailAlias method headers `CreateUserEmailAliasHeaders` - Headers of createUserEmailAlias method ### Returns This function returns a value of type `EmailAlias`. Returns the newly created email alias object. ## Remove email alias Removes an email alias from a user. This operation is performed by calling function `deleteUserEmailAliasById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-email-aliases-id/). ``` try await client.emailAliases.deleteUserEmailAliasById(userId: newUser.id, emailAliasId: newAlias.id!) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" emailAliasId `String` - The ID of the email alias. Example: "23432" headers `DeleteUserEmailAliasByIdHeaders` - Headers of deleteUserEmailAliasById method ### Returns This function returns a value of type ``. Removes the alias and returns an empty response. --- ### EmailAliasesManager **Type:** page | **Section:** Additional Resources EmailAliasesManager List user's email aliases Create email alias Remove email alias List user's email aliases Retrieves all email aliases… # EmailAliasesManager - [List user's email aliases](#list-users-email-aliases) - [Create email alias](#create-email-alias) - [Remove email alias](#remove-email-alias) ## List user's email aliases Retrieves all email aliases for a user. The collection does not include the primary login for the user. This operation is performed by calling function `getUserEmailAliases`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-email-aliases/). ``` await client.emailAliases.getUserEmailAliases(newUser.id); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" optionalsInput `GetUserEmailAliasesOptionalsInput` ### Returns This function returns a value of type `EmailAliases`. Returns a collection of email aliases. ## Create email alias Adds a new email alias to a user account.. This operation is performed by calling function `createUserEmailAlias`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-email-aliases/). ``` await client.emailAliases.createUserEmailAlias(newUser.id, { email: newAliasEmail, } satisfies CreateUserEmailAliasRequestBody); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" requestBody `CreateUserEmailAliasRequestBody` - Request body of createUserEmailAlias method optionalsInput `CreateUserEmailAliasOptionalsInput` ### Returns This function returns a value of type `EmailAlias`. Returns the newly created email alias object. ## Remove email alias Removes an email alias from a user. This operation is performed by calling function `deleteUserEmailAliasById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-email-aliases-id/). ``` await client.emailAliases.deleteUserEmailAliasById(newUser.id, newAlias.id!); ``` ### Arguments userId `string` - The ID of the user. Example: "12345" emailAliasId `string` - The ID of the email alias. Example: "23432" optionalsInput `DeleteUserEmailAliasByIdOptionalsInput` ### Returns This function returns a value of type `undefined`. Removes the alias and returns an empty response. --- ### EmailAliasesManager **Type:** page | **Section:** Additional Resources EmailAliasesManager List user's email aliases Create email alias Remove email alias List user's email aliases Retrieves all email aliases… # EmailAliasesManager - [List user's email aliases](#list-users-email-aliases) - [Create email alias](#create-email-alias) - [Remove email alias](#remove-email-alias) ## List user's email aliases Retrieves all email aliases for a user. The collection does not include the primary login for the user. This operation is performed by calling function `get_user_email_aliases`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-email-aliases/). ``` client.email_aliases.get_user_email_aliases(new_user.id) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `EmailAliases`. Returns a collection of email aliases. ## Create email alias Adds a new email alias to a user account.. This operation is performed by calling function `create_user_email_alias`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-email-aliases/). ``` client.email_aliases.create_user_email_alias(new_user.id, new_alias_email) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" email `str` - The email address to add to the account as an alias. Note: The domain of the email alias needs to be registered to your enterprise. See the [domain verification guide](https://support.box.com/hc/en-us/articles/4408619650579-Domain-Verification) for steps to add a new domain. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `EmailAlias`. Returns the newly created email alias object. ## Remove email alias Removes an email alias from a user. This operation is performed by calling function `delete_user_email_alias_by_id`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-email-aliases-id/). ``` client.email_aliases.delete_user_email_alias_by_id(new_user.id, new_alias.id) ``` ### Arguments user_id `str` - The ID of the user. Example: "12345" email_alias_id `str` - The ID of the email alias. Example: "23432" extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `None`. Removes the alias and returns an empty response. --- ### EmailAliasesManager **Type:** page | **Section:** Additional Resources EmailAliasesManager List user's email aliases Create email alias Remove email alias List user's email aliases Retrieves all email aliases… # EmailAliasesManager - [List user's email aliases](#list-users-email-aliases) - [Create email alias](#create-email-alias) - [Remove email alias](#remove-email-alias) ## List user's email aliases Retrieves all email aliases for a user. The collection does not include the primary login for the user. This operation is performed by calling function `getUserEmailAliases`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-email-aliases/). ``` try await client.emailAliases.getUserEmailAliases(userId: newUser.id) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" headers `GetUserEmailAliasesHeaders` - Headers of getUserEmailAliases method ### Returns This function returns a value of type `EmailAliases`. Returns a collection of email aliases. ## Create email alias Adds a new email alias to a user account.. This operation is performed by calling function `createUserEmailAlias`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-email-aliases/). ``` try await client.emailAliases.createUserEmailAlias(userId: newUser.id, requestBody: CreateUserEmailAliasRequestBody(email: newAliasEmail)) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" requestBody `CreateUserEmailAliasRequestBody` - Request body of createUserEmailAlias method headers `CreateUserEmailAliasHeaders` - Headers of createUserEmailAlias method ### Returns This function returns a value of type `EmailAlias`. Returns the newly created email alias object. ## Remove email alias Removes an email alias from a user. This operation is performed by calling function `deleteUserEmailAliasById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-email-aliases-id/). ``` try await client.emailAliases.deleteUserEmailAliasById(userId: newUser.id, emailAliasId: newAlias.id!) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" emailAliasId `String` - The ID of the email alias. Example: "23432" headers `DeleteUserEmailAliasByIdHeaders` - Headers of deleteUserEmailAliasById method ### Returns This function returns a value of type ``. Removes the alias and returns an empty response. --- ### EmailAliasesManager **Type:** page | **Section:** Additional Resources EmailAliasesManager List user's email aliases Create email alias Remove email alias List user's email aliases Retrieves all email aliases… # EmailAliasesManager - [List user's email aliases](#list-users-email-aliases) - [Create email alias](#create-email-alias) - [Remove email alias](#remove-email-alias) ## List user's email aliases Retrieves all email aliases for a user. The collection does not include the primary login for the user. This operation is performed by calling function `getUserEmailAliases`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-users-id-email-aliases/). ``` client.getEmailAliases().getUserEmailAliases(newUser.getId()) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" headers `GetUserEmailAliasesHeaders` - Headers of getUserEmailAliases method ### Returns This function returns a value of type `EmailAliases`. Returns a collection of email aliases. ## Create email alias Adds a new email alias to a user account.. This operation is performed by calling function `createUserEmailAlias`. See the endpoint docs at [API Reference](https://developer.box.com/reference/post-users-id-email-aliases/). ``` client.getEmailAliases().createUserEmailAlias(newUser.getId(), new CreateUserEmailAliasRequestBody(newAliasEmail)) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" requestBody `CreateUserEmailAliasRequestBody` - Request body of createUserEmailAlias method headers `CreateUserEmailAliasHeaders` - Headers of createUserEmailAlias method ### Returns This function returns a value of type `EmailAlias`. Returns the newly created email alias object. ## Remove email alias Removes an email alias from a user. This operation is performed by calling function `deleteUserEmailAliasById`. See the endpoint docs at [API Reference](https://developer.box.com/reference/delete-users-id-email-aliases-id/). ``` client.getEmailAliases().deleteUserEmailAliasById(newUser.getId(), newAlias.getId()) ``` ### Arguments userId `String` - The ID of the user. Example: "12345" emailAliasId `String` - The ID of the email alias. Example: "23432" headers `DeleteUserEmailAliasByIdHeaders` - Headers of deleteUserEmailAliasById method ### Returns This function returns a value of type `void`. Removes the alias and returns an empty response. --- ### EnterpriseConfigurationsManager **Type:** page | **Section:** Additional Resources EnterpriseConfigurationsManager Get enterprise configuration Get enterprise configuration Retrieves the configuration for an enterprise… # EnterpriseConfigurationsManager - [Get enterprise configuration](#get-enterprise-configuration) ## Get enterprise configuration Retrieves the configuration for an enterprise. This operation is performed by calling function `getEnterpriseConfigurationByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-enterprise-configurations-id/). ``` await adminClient.enterpriseConfigurations.getEnterpriseConfigurationByIdV2025R0( enterpriseId, { categories: ['user_settings', 'content_and_sharing', 'security', 'shield'], } satisfies GetEnterpriseConfigurationByIdV2025R0QueryParams, ); ``` ### Arguments enterpriseId `string` - The ID of the enterprise. Example: "3442311" queryParams `GetEnterpriseConfigurationByIdV2025R0QueryParams` - Query parameters of getEnterpriseConfigurationByIdV2025R0 method optionalsInput `GetEnterpriseConfigurationByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `EnterpriseConfigurationV2025R0`. Returns the enterprise configuration. --- ### EnterpriseConfigurationsManager **Type:** page | **Section:** Additional Resources EnterpriseConfigurationsManager Get enterprise configuration Get enterprise configuration Retrieves the configuration for an enterprise… # EnterpriseConfigurationsManager - [Get enterprise configuration](#get-enterprise-configuration) ## Get enterprise configuration Retrieves the configuration for an enterprise. This operation is performed by calling function `getEnterpriseConfigurationByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-enterprise-configurations-id/). ``` adminClient.getEnterpriseConfigurations().getEnterpriseConfigurationByIdV2025R0(enterpriseId, new GetEnterpriseConfigurationByIdV2025R0QueryParams(Arrays.asList("user_settings", "content_and_sharing", "security", "shield"))) ``` ### Arguments enterpriseId `String` - The ID of the enterprise. Example: "3442311" queryParams `GetEnterpriseConfigurationByIdV2025R0QueryParams` - Query parameters of getEnterpriseConfigurationByIdV2025R0 method headers `GetEnterpriseConfigurationByIdV2025R0Headers` - Headers of getEnterpriseConfigurationByIdV2025R0 method ### Returns This function returns a value of type `EnterpriseConfigurationV2025R0`. Returns the enterprise configuration. --- ### EnterpriseConfigurationsManager **Type:** page | **Section:** Additional Resources EnterpriseConfigurationsManager Get enterprise configuration Get enterprise configuration Retrieves the configuration for an enterprise… # EnterpriseConfigurationsManager - [Get enterprise configuration](#get-enterprise-configuration) ## Get enterprise configuration Retrieves the configuration for an enterprise. This operation is performed by calling function `get_enterprise_configuration_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-enterprise-configurations-id/). ``` admin_client.enterprise_configurations.get_enterprise_configuration_by_id_v2025_r0( enterprise_id, ["user_settings", "content_and_sharing", "security", "shield"] ) ``` ### Arguments enterprise_id `str` - The ID of the enterprise. Example: "3442311" categories `List[str]` - A comma-separated list of the enterprise configuration categories. Allowed values: `security`, `content_and_sharing`, `user_settings`, `shield`. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `EnterpriseConfigurationV2025R0`. Returns the enterprise configuration. --- ### EnterpriseConfigurationsManager **Type:** page | **Section:** Additional Resources EnterpriseConfigurationsManager Get enterprise configuration Get enterprise configuration Retrieves the configuration for an enterprise… # EnterpriseConfigurationsManager - [Get enterprise configuration](#get-enterprise-configuration) ## Get enterprise configuration Retrieves the configuration for an enterprise. This operation is performed by calling function `getEnterpriseConfigurationByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-enterprise-configurations-id/). ``` try await adminClient.enterpriseConfigurations.getEnterpriseConfigurationByIdV2025R0(enterpriseId: enterpriseId, queryParams: GetEnterpriseConfigurationByIdV2025R0QueryParams(categories: ["user_settings", "content_and_sharing", "security", "shield"])) ``` ### Arguments enterpriseId `String` - The ID of the enterprise. Example: "3442311" queryParams `GetEnterpriseConfigurationByIdV2025R0QueryParams` - Query parameters of getEnterpriseConfigurationByIdV2025R0 method headers `GetEnterpriseConfigurationByIdV2025R0Headers` - Headers of getEnterpriseConfigurationByIdV2025R0 method ### Returns This function returns a value of type `EnterpriseConfigurationV2025R0`. Returns the enterprise configuration. --- ### EnterpriseConfigurationsManager **Type:** page | **Section:** Additional Resources EnterpriseConfigurationsManager Get enterprise configuration Get enterprise configuration Retrieves the configuration for an enterprise… # EnterpriseConfigurationsManager - [Get enterprise configuration](#get-enterprise-configuration) ## Get enterprise configuration Retrieves the configuration for an enterprise. This operation is performed by calling function `getEnterpriseConfigurationByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-enterprise-configurations-id/). ``` await adminClient.enterpriseConfigurations.getEnterpriseConfigurationByIdV2025R0( enterpriseId, { categories: ['user_settings', 'content_and_sharing', 'security', 'shield'], } satisfies GetEnterpriseConfigurationByIdV2025R0QueryParams, ); ``` ### Arguments enterpriseId `string` - The ID of the enterprise. Example: "3442311" queryParams `GetEnterpriseConfigurationByIdV2025R0QueryParams` - Query parameters of getEnterpriseConfigurationByIdV2025R0 method optionalsInput `GetEnterpriseConfigurationByIdV2025R0OptionalsInput` ### Returns This function returns a value of type `EnterpriseConfigurationV2025R0`. Returns the enterprise configuration. --- ### EnterpriseConfigurationsManager **Type:** page | **Section:** Additional Resources EnterpriseConfigurationsManager Get enterprise configuration Get enterprise configuration Retrieves the configuration for an enterprise… # EnterpriseConfigurationsManager - [Get enterprise configuration](#get-enterprise-configuration) ## Get enterprise configuration Retrieves the configuration for an enterprise. This operation is performed by calling function `get_enterprise_configuration_by_id_v2025_r0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-enterprise-configurations-id/). ``` admin_client.enterprise_configurations.get_enterprise_configuration_by_id_v2025_r0( enterprise_id, ["user_settings", "content_and_sharing", "security", "shield"] ) ``` ### Arguments enterprise_id `str` - The ID of the enterprise. Example: "3442311" categories `List[str]` - A comma-separated list of the enterprise configuration categories. Allowed values: `security`, `content_and_sharing`, `user_settings`, `shield`. box_version `BoxVersionHeaderV2025R0` - Version header. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `EnterpriseConfigurationV2025R0`. Returns the enterprise configuration. --- ### EnterpriseConfigurationsManager **Type:** page | **Section:** Additional Resources EnterpriseConfigurationsManager Get enterprise configuration Get enterprise configuration Retrieves the configuration for an enterprise… # EnterpriseConfigurationsManager - [Get enterprise configuration](#get-enterprise-configuration) ## Get enterprise configuration Retrieves the configuration for an enterprise. This operation is performed by calling function `getEnterpriseConfigurationByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-enterprise-configurations-id/). ``` try await adminClient.enterpriseConfigurations.getEnterpriseConfigurationByIdV2025R0(enterpriseId: enterpriseId, queryParams: GetEnterpriseConfigurationByIdV2025R0QueryParams(categories: ["user_settings", "content_and_sharing", "security", "shield"])) ``` ### Arguments enterpriseId `String` - The ID of the enterprise. Example: "3442311" queryParams `GetEnterpriseConfigurationByIdV2025R0QueryParams` - Query parameters of getEnterpriseConfigurationByIdV2025R0 method headers `GetEnterpriseConfigurationByIdV2025R0Headers` - Headers of getEnterpriseConfigurationByIdV2025R0 method ### Returns This function returns a value of type `EnterpriseConfigurationV2025R0`. Returns the enterprise configuration. --- ### EnterpriseConfigurationsManager **Type:** page | **Section:** Additional Resources EnterpriseConfigurationsManager Get enterprise configuration Get enterprise configuration Retrieves the configuration for an enterprise… # EnterpriseConfigurationsManager - [Get enterprise configuration](#get-enterprise-configuration) ## Get enterprise configuration Retrieves the configuration for an enterprise. This operation is performed by calling function `getEnterpriseConfigurationByIdV2025R0`. See the endpoint docs at [API Reference](https://developer.box.com/reference/v2025.0/get-enterprise-configurations-id/). ``` adminClient.getEnterpriseConfigurations().getEnterpriseConfigurationByIdV2025R0(enterpriseId, new GetEnterpriseConfigurationByIdV2025R0QueryParams(Arrays.asList("user_settings", "content_and_sharing", "security", "shield"))) ``` ### Arguments enterpriseId `String` - The ID of the enterprise. Example: "3442311" queryParams `GetEnterpriseConfigurationByIdV2025R0QueryParams` - Query parameters of getEnterpriseConfigurationByIdV2025R0 method headers `GetEnterpriseConfigurationByIdV2025R0Headers` - Headers of getEnterpriseConfigurationByIdV2025R0 method ### Returns This function returns a value of type `EnterpriseConfigurationV2025R0`. Returns the enterprise configuration. --- ### Event Stream **Type:** page | **Section:** Additional Resources Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and… # Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and manage the event stream which is extended from the stream.Readable class. [Event Stream](#event-stream) - [Listening to the Event Stream](#listening-to-the-event-stream) - [Deduplication](#deduplication) ## Listening to the Event Stream When the `EventStream` is started, it will begin long-polling asynchronously. Events received from the API are then forwarded to all listeners. You can also listen for errors and the end of the stream using the `error` and `end` events respectively. ``` const eventsStream = await client.events.getEventStream(); eventsStream.on('data', (event) => { console.log('Received event:', event); }); eventsStream.on('error', (error) => { console.error('Error in events stream:', error); }); eventsStream.on('end', () => { console.log('Events stream ended'); }); ``` ## Deduplication The `EventStream` class automatically deduplicates events based on their `event_id`. This means that if the same event is received multiple times, it will only be emitted once to the listeners. --- ### Event Stream **Type:** page | **Section:** Additional Resources Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and… # Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and manage the event stream which returns an iterable object and yields events as they are received. [Event Stream](#event-stream) - [Listening to the Event Stream](#listening-to-the-event-stream) - [Deduplication](#deduplication) ## Listening to the Event Stream When the `EventStream` is started, it will begin long-polling asynchronously. Events received from the API are then yielded to the caller. ``` EventStream stream = client.getEvents().getEventStream(); for (Event event : stream) { System.out.printf( "Received event: ID=%s, Type=%s, CreatedAt=%s%n\n",event.getEventId(),event.getEventType(),event.getCreatedAt()); } ``` ## Deduplication The `EventStream` class automatically deduplicates events based on their `eventId`. This means that if the same event is received multiple times, it will only be emitted once to the listeners. --- ### Event Stream **Type:** page | **Section:** Additional Resources Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and… # Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and manage the event stream which returns an iterable object and yields events as they are received. [Event Stream](#event-stream) - [Listening to the Event Stream](#listening-to-the-event-stream) - [Deduplication](#deduplication) ## Listening to the Event Stream When the `EventStream` is started, it will begin long-polling asynchronously. Events received from the API are then yielded to the caller. ``` event_stream = client.events.get_event_stream() for event in event_stream: print("Received event:", event) ``` ## Deduplication The `EventStream` class automatically deduplicates events based on their `event_id`. This means that if the same event is received multiple times, it will only be emitted once to the listeners. --- ### Event Stream **Type:** page | **Section:** Additional Resources Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and… # Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and manage the event stream. The .NET SDK offers two implementations depending on your target framework: - **.NET 6.0+**: Uses `IAsyncEnumerable` for async stream iteration - **.NET Standard 2.0**: Uses callback-based API with `Action` delegates Both implementations provide the same core functionality with automatic deduplication and retry logic. [Event Stream](#event-stream) [Listening to the Event Stream](#listening-to-the-event-stream) - [Using Async Streams (.NET 6.0+)](#using-async-streams-net-60) - [Using Callbacks (.NET Standard 2.0)](#using-callbacks-net-standard-20) [Stopping the Event Stream](#stopping-the-event-stream) [Deduplication](#deduplication) ## Listening to the Event Stream ### Using Async Streams (.NET 6.0+) When the `EventStream` is started, it begins long-polling asynchronously. Events received from the API are then yielded to the caller through an `IAsyncEnumerable<Event>`. ``` using Box.Sdk.Gen; var stream = client.Events.GetEventStream(); await foreach (var eventItem in stream.StreamEventsAsync()) { Console.WriteLine($"Received event: ID={eventItem.EventId}, Type={eventItem.EventType}, CreatedAt={eventItem.CreatedAt}"); } ``` ### Using Callbacks (.NET Standard 2.0) For .NET Standard 2.0 compatibility, the SDK provides a callback-based API where you provide an `Action<Event>` delegate that gets invoked for each event received. ``` using Box.Sdk.Gen; using System.Threading; var stream = client.Events.GetEventStream(); var cts = new CancellationTokenSource(); await stream.StartAsync( onEvent: (eventItem) => { Console.WriteLine($"Received event: ID={eventItem.EventId}, Type={eventItem.EventType}, CreatedAt={eventItem.CreatedAt}"); }, onError: (exception) => { Console.WriteLine($"Error occurred: {exception.Message}"); }, cancellationToken: cts.Token ); ``` ## Stopping the Event Stream To stop the event stream, use a `CancellationToken`: **.NET 6.0+ (Async Streams):** ``` var cts = new CancellationTokenSource(); // Cancel after 30 seconds cts.CancelAfter(TimeSpan.FromSeconds(30)); await foreach (var eventItem in stream.StreamEventsAsync(cts.Token)) { Console.WriteLine($"Event: {eventItem.EventType}"); } ``` **.NET Standard 2.0 (Callbacks):** ``` var cts = new CancellationTokenSource(); var streamTask = stream.StartAsync( onEvent: (eventItem) => Console.WriteLine($"Event: {eventItem.EventType}"), cancellationToken: cts.Token ); // Stop the stream when needed cts.Cancel(); await streamTask; ``` ## Deduplication The `EventStream` class automatically deduplicates events based on their `EventId`. This means that if the same event is received multiple times, it will only be emitted once to the listeners. --- ### Event Stream **Type:** page | **Section:** Additional Resources Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and… # Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and manage the event stream which is extended from the stream.Readable class. [Event Stream](#event-stream) - [Listening to the Event Stream](#listening-to-the-event-stream) - [Deduplication](#deduplication) ## Listening to the Event Stream When the `EventStream` is started, it will begin long-polling asynchronously. Events received from the API are then forwarded to all listeners. You can also listen for errors and the end of the stream using the `error` and `end` events respectively. ``` const eventsStream = await client.events.getEventStream(); eventsStream.on('data', (event) => { console.log('Received event:', event); }); eventsStream.on('error', (error) => { console.error('Error in events stream:', error); }); eventsStream.on('end', () => { console.log('Events stream ended'); }); ``` ## Deduplication The `EventStream` class automatically deduplicates events based on their `event_id`. This means that if the same event is received multiple times, it will only be emitted once to the listeners. --- ### Event Stream **Type:** page | **Section:** Additional Resources Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and… # Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and manage the event stream which returns an iterable object and yields events as they are received. [Event Stream](#event-stream) - [Listening to the Event Stream](#listening-to-the-event-stream) - [Deduplication](#deduplication) ## Listening to the Event Stream When the `EventStream` is started, it will begin long-polling asynchronously. Events received from the API are then yielded to the caller. ``` event_stream = client.events.get_event_stream() for event in event_stream: print("Received event:", event) ``` ## Deduplication The `EventStream` class automatically deduplicates events based on their `event_id`. This means that if the same event is received multiple times, it will only be emitted once to the listeners. --- ### Event Stream **Type:** page | **Section:** Additional Resources Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and… # Event Stream The Event Stream class utilizes long-polling to receive real-time events from Box. The SDK provides an easy way to set up and manage the event stream which returns an iterable object and yields events as they are received. [Event Stream](#event-stream) - [Listening to the Event Stream](#listening-to-the-event-stream) - [Deduplication](#deduplication) ## Listening to the Event Stream When the `EventStream` is started, it will begin long-polling asynchronously. Events received from the API are then yielded to the caller. ``` EventStream stream = client.getEvents().getEventStream(); for (Event event : stream) { System.out.printf( "Received event: ID=%s, Type=%s, CreatedAt=%s%n\n",event.getEventId(),event.getEventType(),event.getCreatedAt()); } ``` ## Deduplication The `EventStream` class automatically deduplicates events based on their `eventId`. This means that if the same event is received multiple times, it will only be emitted once to the listeners. --- ### EventsManager **Type:** page | **Section:** Additional Resources EventsManager Get events long poll endpoint List user and enterprise events Get event stream Get events long poll endpoint Returns a list of… # EventsManager - [Get events long poll endpoint](#get-events-long-poll-endpoint) - [List user and enterprise events](#list-user-and-enterprise-events) - [Get event stream](#get-event-stream) ## Get events long poll endpoint Returns a list of real-time servers that can be used for long-polling updates to the [event stream](#get-events). Long polling is the concept where a HTTP request is kept open until the server sends a response, then repeating the process over and over to receive updated responses. Long polling the event stream can only be used for user events, not for enterprise events. To use long polling, first use this endpoint to retrieve a list of long poll URLs. Next, make a long poll request to any of the provided URLs. When an event occurs in monitored account a response with the value `new_change` will be sent. The response contains no other details as it only serves as a prompt to take further action such as sending a request to the [events endpoint](#get-events) with the last known `stream_position`. After the server sends this response it closes the connection. You must now repeat the long poll process to begin listening for events again. If no events occur for a while and the connection times out you will receive a response with the value `reconnect`. When you receive this response you’ll make another call to this endpoint to restart the process. If you receive no events in `retry_timeout` seconds then you will need to make another request to the real-time server (one of the URLs in the response for this endpoint). This might be necessary due to network errors. Finally, if you receive a `max_retries` error when making a request to the real-time server, you should start over by making a call to this endpoint first. This operation is performed by calling function `getEventsWithLongPolling`. See the endpoint docs at [API Reference](https://developer.box.com/reference/options-events/). ``` await client.events.getEventsWithLongPolling(); ``` ### Arguments headersInput `GetEventsWithLongPollingHeadersInput` - Headers of getEventsWithLongPolling method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `RealtimeServers`. Returns a paginated array of servers that can be used instead of the regular endpoints for long-polling events. ## List user and enterprise events Returns up to a year of past events for a given user or for the entire enterprise. By default this returns events for the authenticated user. To retrieve events for the entire enterprise, set the `stream_type` to `admin_logs_streaming` for live monitoring of new events, or `admin_logs` for querying across historical events. The user making the API call will need to have admin privileges, and the application will need to have the scope `manage enterprise properties` checked. This operation is performed by calling function `getEvents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-events/). ``` await client.events.getEvents(); ``` ### Arguments queryParams `GetEventsQueryParams` - Query parameters of getEvents method headersInput `GetEventsHeadersInput` - Headers of getEvents method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `Events`. Returns a list of event objects. Events objects are returned in pages, with each page (chunk) including a list of event objects. The response includes a `chunk_size` parameter indicating how many events were returned in this chunk, as well as the next `stream_position` that can be queried. ## Get event stream Get an event stream for the Box API This operation is performed by calling function `getEventStream`. ``` client.events.getEventStream(); ``` ### Arguments queryParams `GetEventStreamQueryParams` - Query parameters of getEvents method headersInput `GetEventStreamHeadersInput` - Headers of getEvents method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `EventStream`. --- ### EventsManager **Type:** page | **Section:** Additional Resources EventsManager Get events long poll endpoint List user and enterprise events Get event stream Get events long poll endpoint Returns a list of… # EventsManager - [Get events long poll endpoint](#get-events-long-poll-endpoint) - [List user and enterprise events](#list-user-and-enterprise-events) - [Get event stream](#get-event-stream) ## Get events long poll endpoint Returns a list of real-time servers that can be used for long-polling updates to the [event stream](#get-events). Long polling is the concept where a HTTP request is kept open until the server sends a response, then repeating the process over and over to receive updated responses. Long polling the event stream can only be used for user events, not for enterprise events. To use long polling, first use this endpoint to retrieve a list of long poll URLs. Next, make a long poll request to any of the provided URLs. When an event occurs in monitored account a response with the value `new_change` will be sent. The response contains no other details as it only serves as a prompt to take further action such as sending a request to the [events endpoint](#get-events) with the last known `stream_position`. After the server sends this response it closes the connection. You must now repeat the long poll process to begin listening for events again. If no events occur for a while and the connection times out you will receive a response with the value `reconnect`. When you receive this response you’ll make another call to this endpoint to restart the process. If you receive no events in `retry_timeout` seconds then you will need to make another request to the real-time server (one of the URLs in the response for this endpoint). This might be necessary due to network errors. Finally, if you receive a `max_retries` error when making a request to the real-time server, you should start over by making a call to this endpoint first. This operation is performed by calling function `getEventsWithLongPolling`. See the endpoint docs at [API Reference](https://developer.box.com/reference/options-events/). ``` client.getEvents().getEventsWithLongPolling() ``` ### Arguments headers `GetEventsWithLongPollingHeaders` - Headers of getEventsWithLongPolling method ### Returns This function returns a value of type `RealtimeServers`. Returns a paginated array of servers that can be used instead of the regular endpoints for long-polling events. ## List user and enterprise events Returns up to a year of past events for a given user or for the entire enterprise. By default this returns events for the authenticated user. To retrieve events for the entire enterprise, set the `stream_type` to `admin_logs_streaming` for live monitoring of new events, or `admin_logs` for querying across historical events. The user making the API call will need to have admin privileges, and the application will need to have the scope `manage enterprise properties` checked. This operation is performed by calling function `getEvents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-events/). ``` client.getEvents().getEvents() ``` ### Arguments queryParams `GetEventsQueryParams` - Query parameters of getEvents method headers `GetEventsHeaders` - Headers of getEvents method ### Returns This function returns a value of type `Events`. Returns a list of event objects. Events objects are returned in pages, with each page (chunk) including a list of event objects. The response includes a `chunk_size` parameter indicating how many events were returned in this chunk, as well as the next `stream_position` that can be queried. ## Get event stream Get an event stream for the Box API This operation is performed by calling function `getEventStream`. ``` client.getEvents().getEventStream() ``` ### Arguments queryParams `GetEventStreamQueryParams` - Query parameters of getEvents method headers `GetEventStreamHeaders` - Headers of getEvents method ### Returns This function returns a value of type `EventStream`. --- ### EventsManager **Type:** page | **Section:** Additional Resources EventsManager Get events long poll endpoint List user and enterprise events Get event stream Get events long poll endpoint Returns a list of… # EventsManager - [Get events long poll endpoint](#get-events-long-poll-endpoint) - [List user and enterprise events](#list-user-and-enterprise-events) - [Get event stream](#get-event-stream) ## Get events long poll endpoint Returns a list of real-time servers that can be used for long-polling updates to the [event stream](#get-events). Long polling is the concept where a HTTP request is kept open until the server sends a response, then repeating the process over and over to receive updated responses. Long polling the event stream can only be used for user events, not for enterprise events. To use long polling, first use this endpoint to retrieve a list of long poll URLs. Next, make a long poll request to any of the provided URLs. When an event occurs in monitored account a response with the value `new_change` will be sent. The response contains no other details as it only serves as a prompt to take further action such as sending a request to the [events endpoint](#get-events) with the last known `stream_position`. After the server sends this response it closes the connection. You must now repeat the long poll process to begin listening for events again. If no events occur for a while and the connection times out you will receive a response with the value `reconnect`. When you receive this response you’ll make another call to this endpoint to restart the process. If you receive no events in `retry_timeout` seconds then you will need to make another request to the real-time server (one of the URLs in the response for this endpoint). This might be necessary due to network errors. Finally, if you receive a `max_retries` error when making a request to the real-time server, you should start over by making a call to this endpoint first. This operation is performed by calling function `get_events_with_long_polling`. See the endpoint docs at [API Reference](https://developer.box.com/reference/options-events/). ``` client.events.get_events_with_long_polling() ``` ### Arguments extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `RealtimeServers`. Returns a paginated array of servers that can be used instead of the regular endpoints for long-polling events. ## List user and enterprise events Returns up to a year of past events for a given user or for the entire enterprise. By default this returns events for the authenticated user. To retrieve events for the entire enterprise, set the `stream_type` to `admin_logs_streaming` for live monitoring of new events, or `admin_logs` for querying across historical events. The user making the API call will need to have admin privileges, and the application will need to have the scope `manage enterprise properties` checked. This operation is performed by calling function `get_events`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-events/). ``` client.events.get_events() ``` ### Arguments stream_type `Optional[GetEventsStreamType]` - Defines the type of events that are returned _ `all` returns everything for a user and is the default _ `changes` returns events that may cause file tree changes such as file updates or collaborations. _ `sync` is similar to `changes` but only applies to synced folders _ `admin_logs` returns all events for an entire enterprise and requires the user making the API call to have admin permissions. This stream type is for programmatically pulling from a 1 year history of events across all users within the enterprise and within a `created_after` and `created_before` time frame. The complete history of events will be returned in chronological order based on the event time, but latency will be much higher than `admin_logs_streaming`. * `admin_logs_streaming` returns all events for an entire enterprise and requires the user making the API call to have admin permissions. This stream type is for polling for recent events across all users within the enterprise. Latency will be much lower than `admin_logs`, but events will not be returned in chronological order and may contain duplicates. stream_position `Optional[str]` - The location in the event stream to start receiving events from. _ `now` will return an empty list events and the latest stream position for initialization. _ `0` or `null` will return all events. limit `Optional[int]` - Limits the number of events returned. Note: Sometimes, the events less than the limit requested can be returned even when there may be more events remaining. This is primarily done in the case where a number of events have already been retrieved and these retrieved events are returned rather than delaying for an unknown amount of time to see if there are any more results. event_type `Optional[List[GetEventsEventType]]` - A comma-separated list of events to filter by. This can only be used when requesting the events with a `stream_type` of `admin_logs` or `adming_logs_streaming`. For any other `stream_type` this value will be ignored. created_after `Optional[DateTime]` - The lower bound date and time to return events for. This can only be used when requesting the events with a `stream_type` of `admin_logs`. For any other `stream_type` this value will be ignored. created_before `Optional[DateTime]` - The upper bound date and time to return events for. This can only be used when requesting the events with a `stream_type` of `admin_logs`. For any other `stream_type` this value will be ignored. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Events`. Returns a list of event objects. Events objects are returned in pages, with each page (chunk) including a list of event objects. The response includes a `chunk_size` parameter indicating how many events were returned in this chunk, as well as the next `stream_position` that can be queried. ## Get event stream Get an event stream for the Box API This operation is performed by calling function `get_event_stream`. ``` client.events.get_event_stream() ``` ### Arguments query_params `GetEventStreamQueryParams` - Query parameters of getEvents method headers `GetEventStreamHeaders` - Headers of getEvents method ### Returns This function returns a value of type `EventStream`. --- ### EventsManager **Type:** page | **Section:** Additional Resources EventsManager Get events long poll endpoint List user and enterprise events Get events long poll endpoint Returns a list of real-time… # EventsManager - [Get events long poll endpoint](#get-events-long-poll-endpoint) - [List user and enterprise events](#list-user-and-enterprise-events) ## Get events long poll endpoint Returns a list of real-time servers that can be used for long-polling updates to the [event stream](#get-events). Long polling is the concept where a HTTP request is kept open until the server sends a response, then repeating the process over and over to receive updated responses. Long polling the event stream can only be used for user events, not for enterprise events. To use long polling, first use this endpoint to retrieve a list of long poll URLs. Next, make a long poll request to any of the provided URLs. When an event occurs in monitored account a response with the value `new_change` will be sent. The response contains no other details as it only serves as a prompt to take further action such as sending a request to the [events endpoint](#get-events) with the last known `stream_position`. After the server sends this response it closes the connection. You must now repeat the long poll process to begin listening for events again. If no events occur for a while and the connection times out you will receive a response with the value `reconnect`. When you receive this response you’ll make another call to this endpoint to restart the process. If you receive no events in `retry_timeout` seconds then you will need to make another request to the real-time server (one of the URLs in the response for this endpoint). This might be necessary due to network errors. Finally, if you receive a `max_retries` error when making a request to the real-time server, you should start over by making a call to this endpoint first. This operation is performed by calling function `getEventsWithLongPolling`. See the endpoint docs at [API Reference](https://developer.box.com/reference/options-events/). ``` try await client.events.getEventsWithLongPolling() ``` ### Arguments headers `GetEventsWithLongPollingHeaders` - Headers of getEventsWithLongPolling method ### Returns This function returns a value of type `RealtimeServers`. Returns a paginated array of servers that can be used instead of the regular endpoints for long-polling events. ## List user and enterprise events Returns up to a year of past events for a given user or for the entire enterprise. By default this returns events for the authenticated user. To retrieve events for the entire enterprise, set the `stream_type` to `admin_logs_streaming` for live monitoring of new events, or `admin_logs` for querying across historical events. The user making the API call will need to have admin privileges, and the application will need to have the scope `manage enterprise properties` checked. This operation is performed by calling function `getEvents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-events/). ``` try await client.events.getEvents() ``` ### Arguments queryParams `GetEventsQueryParams` - Query parameters of getEvents method headers `GetEventsHeaders` - Headers of getEvents method ### Returns This function returns a value of type `Events`. Returns a list of event objects. Events objects are returned in pages, with each page (chunk) including a list of event objects. The response includes a `chunk_size` parameter indicating how many events were returned in this chunk, as well as the next `stream_position` that can be queried. --- ### EventsManager **Type:** page | **Section:** Additional Resources EventsManager Get events long poll endpoint List user and enterprise events Get event stream Get events long poll endpoint Returns a list of… # EventsManager - [Get events long poll endpoint](#get-events-long-poll-endpoint) - [List user and enterprise events](#list-user-and-enterprise-events) - [Get event stream](#get-event-stream) ## Get events long poll endpoint Returns a list of real-time servers that can be used for long-polling updates to the [event stream](#get-events). Long polling is the concept where a HTTP request is kept open until the server sends a response, then repeating the process over and over to receive updated responses. Long polling the event stream can only be used for user events, not for enterprise events. To use long polling, first use this endpoint to retrieve a list of long poll URLs. Next, make a long poll request to any of the provided URLs. When an event occurs in monitored account a response with the value `new_change` will be sent. The response contains no other details as it only serves as a prompt to take further action such as sending a request to the [events endpoint](#get-events) with the last known `stream_position`. After the server sends this response it closes the connection. You must now repeat the long poll process to begin listening for events again. If no events occur for a while and the connection times out you will receive a response with the value `reconnect`. When you receive this response you’ll make another call to this endpoint to restart the process. If you receive no events in `retry_timeout` seconds then you will need to make another request to the real-time server (one of the URLs in the response for this endpoint). This might be necessary due to network errors. Finally, if you receive a `max_retries` error when making a request to the real-time server, you should start over by making a call to this endpoint first. This operation is performed by calling function `getEventsWithLongPolling`. See the endpoint docs at [API Reference](https://developer.box.com/reference/options-events/). ``` await client.events.getEventsWithLongPolling(); ``` ### Arguments headersInput `GetEventsWithLongPollingHeadersInput` - Headers of getEventsWithLongPolling method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `RealtimeServers`. Returns a paginated array of servers that can be used instead of the regular endpoints for long-polling events. ## List user and enterprise events Returns up to a year of past events for a given user or for the entire enterprise. By default this returns events for the authenticated user. To retrieve events for the entire enterprise, set the `stream_type` to `admin_logs_streaming` for live monitoring of new events, or `admin_logs` for querying across historical events. The user making the API call will need to have admin privileges, and the application will need to have the scope `manage enterprise properties` checked. This operation is performed by calling function `getEvents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-events/). ``` await client.events.getEvents(); ``` ### Arguments queryParams `GetEventsQueryParams` - Query parameters of getEvents method headersInput `GetEventsHeadersInput` - Headers of getEvents method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `Events`. Returns a list of event objects. Events objects are returned in pages, with each page (chunk) including a list of event objects. The response includes a `chunk_size` parameter indicating how many events were returned in this chunk, as well as the next `stream_position` that can be queried. ## Get event stream Get an event stream for the Box API This operation is performed by calling function `getEventStream`. ``` client.events.getEventStream(); ``` ### Arguments queryParams `GetEventStreamQueryParams` - Query parameters of getEvents method headersInput `GetEventStreamHeadersInput` - Headers of getEvents method cancellationToken `undefined | CancellationToken` - Token used for request cancellation. ### Returns This function returns a value of type `EventStream`. --- ### EventsManager **Type:** page | **Section:** Additional Resources EventsManager Get events long poll endpoint List user and enterprise events Get event stream Get events long poll endpoint Returns a list of… # EventsManager - [Get events long poll endpoint](#get-events-long-poll-endpoint) - [List user and enterprise events](#list-user-and-enterprise-events) - [Get event stream](#get-event-stream) ## Get events long poll endpoint Returns a list of real-time servers that can be used for long-polling updates to the [event stream](#get-events). Long polling is the concept where a HTTP request is kept open until the server sends a response, then repeating the process over and over to receive updated responses. Long polling the event stream can only be used for user events, not for enterprise events. To use long polling, first use this endpoint to retrieve a list of long poll URLs. Next, make a long poll request to any of the provided URLs. When an event occurs in monitored account a response with the value `new_change` will be sent. The response contains no other details as it only serves as a prompt to take further action such as sending a request to the [events endpoint](#get-events) with the last known `stream_position`. After the server sends this response it closes the connection. You must now repeat the long poll process to begin listening for events again. If no events occur for a while and the connection times out you will receive a response with the value `reconnect`. When you receive this response you’ll make another call to this endpoint to restart the process. If you receive no events in `retry_timeout` seconds then you will need to make another request to the real-time server (one of the URLs in the response for this endpoint). This might be necessary due to network errors. Finally, if you receive a `max_retries` error when making a request to the real-time server, you should start over by making a call to this endpoint first. This operation is performed by calling function `get_events_with_long_polling`. See the endpoint docs at [API Reference](https://developer.box.com/reference/options-events/). ``` client.events.get_events_with_long_polling() ``` ### Arguments extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `RealtimeServers`. Returns a paginated array of servers that can be used instead of the regular endpoints for long-polling events. ## List user and enterprise events Returns up to a year of past events for a given user or for the entire enterprise. By default this returns events for the authenticated user. To retrieve events for the entire enterprise, set the `stream_type` to `admin_logs_streaming` for live monitoring of new events, or `admin_logs` for querying across historical events. The user making the API call will need to have admin privileges, and the application will need to have the scope `manage enterprise properties` checked. This operation is performed by calling function `get_events`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-events/). ``` client.events.get_events() ``` ### Arguments stream_type `Optional[GetEventsStreamType]` - Defines the type of events that are returned _ `all` returns everything for a user and is the default _ `changes` returns events that may cause file tree changes such as file updates or collaborations. _ `sync` is similar to `changes` but only applies to synced folders _ `admin_logs` returns all events for an entire enterprise and requires the user making the API call to have admin permissions. This stream type is for programmatically pulling from a 1 year history of events across all users within the enterprise and within a `created_after` and `created_before` time frame. The complete history of events will be returned in chronological order based on the event time, but latency will be much higher than `admin_logs_streaming`. * `admin_logs_streaming` returns all events for an entire enterprise and requires the user making the API call to have admin permissions. This stream type is for polling for recent events across all users within the enterprise. Latency will be much lower than `admin_logs`, but events will not be returned in chronological order and may contain duplicates. stream_position `Optional[str]` - The location in the event stream to start receiving events from. _ `now` will return an empty list events and the latest stream position for initialization. _ `0` or `null` will return all events. limit `Optional[int]` - Limits the number of events returned. Note: Sometimes, the events less than the limit requested can be returned even when there may be more events remaining. This is primarily done in the case where a number of events have already been retrieved and these retrieved events are returned rather than delaying for an unknown amount of time to see if there are any more results. event_type `Optional[List[GetEventsEventType]]` - A comma-separated list of events to filter by. This can only be used when requesting the events with a `stream_type` of `admin_logs` or `adming_logs_streaming`. For any other `stream_type` this value will be ignored. created_after `Optional[DateTime]` - The lower bound date and time to return events for. This can only be used when requesting the events with a `stream_type` of `admin_logs`. For any other `stream_type` this value will be ignored. created_before `Optional[DateTime]` - The upper bound date and time to return events for. This can only be used when requesting the events with a `stream_type` of `admin_logs`. For any other `stream_type` this value will be ignored. extra_headers `Optional[Dict[str, Optional[str]]]` - Extra headers that will be included in the HTTP request. ### Returns This function returns a value of type `Events`. Returns a list of event objects. Events objects are returned in pages, with each page (chunk) including a list of event objects. The response includes a `chunk_size` parameter indicating how many events were returned in this chunk, as well as the next `stream_position` that can be queried. ## Get event stream Get an event stream for the Box API This operation is performed by calling function `get_event_stream`. ``` client.events.get_event_stream() ``` ### Arguments query_params `GetEventStreamQueryParams` - Query parameters of getEvents method headers `GetEventStreamHeaders` - Headers of getEvents method ### Returns This function returns a value of type `EventStream`. --- ### EventsManager **Type:** page | **Section:** Additional Resources EventsManager Get events long poll endpoint List user and enterprise events Get events long poll endpoint Returns a list of real-time… # EventsManager - [Get events long poll endpoint](#get-events-long-poll-endpoint) - [List user and enterprise events](#list-user-and-enterprise-events) ## Get events long poll endpoint Returns a list of real-time servers that can be used for long-polling updates to the [event stream](#get-events). Long polling is the concept where a HTTP request is kept open until the server sends a response, then repeating the process over and over to receive updated responses. Long polling the event stream can only be used for user events, not for enterprise events. To use long polling, first use this endpoint to retrieve a list of long poll URLs. Next, make a long poll request to any of the provided URLs. When an event occurs in monitored account a response with the value `new_change` will be sent. The response contains no other details as it only serves as a prompt to take further action such as sending a request to the [events endpoint](#get-events) with the last known `stream_position`. After the server sends this response it closes the connection. You must now repeat the long poll process to begin listening for events again. If no events occur for a while and the connection times out you will receive a response with the value `reconnect`. When you receive this response you’ll make another call to this endpoint to restart the process. If you receive no events in `retry_timeout` seconds then you will need to make another request to the real-time server (one of the URLs in the response for this endpoint). This might be necessary due to network errors. Finally, if you receive a `max_retries` error when making a request to the real-time server, you should start over by making a call to this endpoint first. This operation is performed by calling function `getEventsWithLongPolling`. See the endpoint docs at [API Reference](https://developer.box.com/reference/options-events/). ``` try await client.events.getEventsWithLongPolling() ``` ### Arguments headers `GetEventsWithLongPollingHeaders` - Headers of getEventsWithLongPolling method ### Returns This function returns a value of type `RealtimeServers`. Returns a paginated array of servers that can be used instead of the regular endpoints for long-polling events. ## List user and enterprise events Returns up to a year of past events for a given user or for the entire enterprise. By default this returns events for the authenticated user. To retrieve events for the entire enterprise, set the `stream_type` to `admin_logs_streaming` for live monitoring of new events, or `admin_logs` for querying across historical events. The user making the API call will need to have admin privileges, and the application will need to have the scope `manage enterprise properties` checked. This operation is performed by calling function `getEvents`. See the endpoint docs at [API Reference](https://developer.box.com/reference/get-events/). ``` try await client.events.getEvents() ``` ### Arguments queryParams `GetEventsQueryParams` - Query parameters of getEvents method headers `GetEventsHeaders` - Headers of getEvents method ### Returns This function returns a value of type `Events`. Returns a list of event objects. Events objects are returned in pages, with each page (chunk) including a list of event objects. The response includes a `chunk_size` parameter indicating how many events were returned in this chunk, as well as the next `stream_position` that can be queried. --- ### EventsManager **Type:** page | **Section:** Additional Resources EventsManager Get events long poll endpoint List user and enterprise events Get event stream Get events long poll endpoint Returns a list of… # EventsManager - [Get events long poll endpoint](#get-events-long-poll-endpoint) - [List user and enterprise events](#list-user-and-enterprise-events) - [Get event stream](#get-event-stream) ## Get events long poll endpoint Returns a list of real-time servers that can be used for long-polling updates to the [event stream](#get-events). Long polling is the concept where a HTTP request is kept open until the server sends a response, then repeating the process over and over to receive updated responses. Long polling the event stream can only be used for user events, not for enterprise events. To use long polling, first use this endpoint to retrieve a list of long poll URLs. Next, make a long poll request to any of the provided URLs. When an event occurs in monitored account a response with the value `new_change` will be sent. The response contains no other details as it only serves as a prompt to take further action such as sending a request to the [events endpoint](#get-events) with the last known `stream_position`. After the server sends this response it closes the connection. You must now repeat the long poll process to begin listening for events again. If no events occur for a while and the connection times out you will receive a response with the value `reconnect`. When you receive this response you’ll make another call to this endpoint to restart the process. If you receive no events in `retry_timeout` seconds then you will need to make another request to the real-time server (one of the URLs in the response for this endpoint). This might be necessary due to network errors. Finally, if you receive a `max_retries` error when making a request to the real-time server, you should start over by making a call to this endpoint first. This operation is performed by calling function `getEventsWithLongPolling`. See the endpoint docs at [API Reference](https://developer.box.com/reference/options-events/). ``` client.getEvents().getEventsWithLongPolling() ``` ### Arguments headers `GetEventsWithLongPollingHeaders` - Headers of getEventsWithLongPolling method ### Returns This function returns a value of type `RealtimeServers`. Returns a paginated array of servers that can be used instead o