# General Translation Platform: ソースファイルをアップロード URL: https://generaltranslation.com/ja/docs/platform/openapi/reference/files/upload-source.mdx --- title: ソースファイルをアップロード description: 翻訳をキューに追加する前に、1 つ以上のソースファイルを General Translation プロジェクトにアップロードします。ソースファイルのアップロードに関する API リファレンス。 method: POST --- 翻訳キューに追加できるよう、ソースファイルをプロジェクトにアップロードします。ファイルの内容は base64 で送信します。1 回のリクエストで送信できるファイル数は 1〜100 件です。 ## 概要 [#overview] ```http POST https://api2.gtx.dev/v2/project/files/upload-files ``` **権限** `project:files:write` · **レート制限** 中 (120/分) プロジェクトのソースファイルをアップロードします。すでに翻訳済みのファイルをアップロードする場合は、[翻訳をアップロード](/docs/platform/openapi/reference/files/upload-translations) を使用してください。アップロードしたファイルをその後翻訳するには、[翻訳をキューに追加](/docs/platform/openapi/reference/translation/queue) を参照してください。 ## 仕組み [#how-it-works] * 各ファイルの`content`はBase64エンコードされ、サーバー側でデコードされます。無効なBase64は拒否されます。 * `fileId`が指定されていない場合は`fileName`をハッシュ化して生成され、`versionId`が指定されていない場合はファイル内容をハッシュ化して生成されます。そのため、同一内容を再アップロードしても、バージョンごとに冪等性が保たれます。 * 有効な`branchId`が指定されていない限り、ファイルはデフォルトブランチに紐付けられます。不明な`branchId`を指定すると`400`が返されます。 * `sourceLocale`が送信され、かつ現在のプロジェクトのデフォルトロケールと異なる場合は、プロジェクトのデフォルトロケールが更新されます。 ## リクエスト [#request] ### ヘッダー | ヘッダー | 説明 | 必須 | | ----------------- | --------------------------------------- | --- | | `x-gt-api-key` | プロジェクトまたはOrganizationのAPI Key。 | はい | | `x-gt-project-id` | project ID。Organizationのキーを使用する場合に必要です。 | いいえ | ### 本文 **コンテンツタイプ** `application/json` | フィールド | 説明 | 型 | 任意 | デフォルト | | --------------- | ------------------------- | ---------- | --- | ---------------- | | [`data`](#data) | アップロードするファイルの配列 (1~100) 。 | `object[]` | いいえ | — | | `sourceLocale` | アップロードするファイルのソースロケール。 | `string` | はい | プロジェクトのデフォルトロケール | #### `data` [#data] **型** `object[]` · **必須** 各要素は `{ "source": { ... } }` の形式で、`source` には次のフィールドがあります。 | フィールド | 説明 | 型 | 任意 | デフォルト | | ---------------- | ------------------------------------------- | -------- | --- | ---------------- | | `content` | Base64 エンコードされたファイルの内容。最大ファイルサイズの制限が適用されます。 | `string` | いいえ | — | | `fileName` | ファイル名。空文字列は指定できません。 | `string` | いいえ | — | | `fileFormat` | ファイル形式の識別子 (例: `JSON`、`MDX`) 。 | `string` | いいえ | — | | `locale` | source コンテンツのロケール。空文字列は指定できません。 | `string` | いいえ | — | | `dataFormat` | 構造化コンテンツのデータ形式。 | `string` | はい | — | | `fileId` | 変更されないファイル識別子。 | `string` | はい | `fileName` のハッシュ | | `versionId` | このコンテンツのバージョン識別子。 | `string` | はい | content のハッシュ | | `branchId` | ファイルを紐付ける ブランチ。 | `string` | はい | デフォルト ブランチ | | `formatMetadata` | 形式固有の追加メタデータ。 | `object` | はい | — | ## レスポンス [#response] **ステータス** `201 Created` ```json title="Response" { "uploadedFiles": [ { "branchId": "br_...", "fileId": "file_...", "versionId": "ver_...", "fileName": "en/common.json", "fileFormat": "JSON", "dataFormat": "JSON" } ], "count": 1, "message": "Successfully uploaded 1 source file(s)" } ``` ## エラー [#errors] | ステータス | 原因 | | ----- | --------------------------------------------------------- | | `400` | 無効なリクエスト本文、無効なロケール/形式、デコード失敗、ファイルサイズ超過、または不明な `branchId`。 | | `401` | API Key がないか無効です。 | | `403` | API Key に `project:files:write` がありません。 | | `429` | レート制限を超過しました。 | | `503` | サーバーがビジー状態です。バックオフして再試行してください。 | ## 例 [#example] ```bash curl -X POST https://api2.gtx.dev/v2/project/files/upload-files \ -H "x-gt-api-key: gtx-api-..." \ -H "Content-Type: application/json" \ -d '{ "sourceLocale": "en", "data": [ { "source": { "content": "eyJoZWxsbyI6ICJIZWxsbyJ9", "fileName": "en/common.json", "fileFormat": "JSON", "locale": "en" } } ] }' ```