アセット
注意: 一部のアセットマネージャーの機能(および一部のアセットマネージャーAPI操作)はプレミアム専用であり、すべてのアカウントで有効になっていない場合があります。詳細についてはサポートまたはアカウントマネージャーにお問い合わせください。
アセットマネージャーアセット操作は通常、source_id で指定される特定のソースに関連付けられます。
アセット操作
GET アセット操作には Asset Manager Browse 権限が必要です。その他のアセット操作にはすべて Asset Manager Edit 権限が必要です。
| エンドポイント | メソッド | 必要なパーミッション | 説明 | 
|---|---|---|---|
| sources/:source_id/assets | GET | アセット閲覧 | 指定されたソースからアセットの一覧を取得します。 | 
| sources/:source_id/assets/:origin_path | GET | アセット閲覧 | 指定された source_id内のasset_idによる単一アセットの詳細を取得します。 | 
| sources/:source_id/assets/:origin_path | PATCH | アセット編集 | 単一のアセットを更新します。 | 
| sources/:source_id/unpublish | POST | アセットパージ | 単一のアセットの公開を解除します。 | 
| sources/:source_id/publish | POST | アセットパージ | 単一のアセットを公開します。 | 
| sources/:source_id/upload/:origin_path | POST | アセット編集 | source_idのソースのorigin_pathに単一のアセットをアップロードします。アップロード を参照。 | 
| sources/:source_id/upload/:origin_path?overwrite=true | POST | アセット編集、アセットパージ | アップロードエンドポイントを変更して、ソース上で一致するパスのアセットを上書きします。 | 
| sources/:source_id/upload-sessions/:origin_path | POST | アセット編集 | 大きなアセットをアップロードするために origin_pathにアップロードセッションを開始します。アップロード を参照。 | 
| sources/:source_id/upload-sessions/:session_id | POST | アセット編集 | session_idのアップロードセッションを終了します。アップロード を参照。 | 
| sources/:source_id/assets/add/:origin_path | POST | アセット編集 | オリジンからアセットマネージャーに単一のアセットを追加します。アセットの追加 を参照。 | 
| sources/:source_id/assets/refresh/:origin_path | POST | アセット編集、アセットパージ | 単一のアセットをリフレッシュ、再処理、およびパージします。アセットのリフレッシュ を参照。 | 
アセットフィルター
| フィルター | タイプ | ノート | 
|---|---|---|
| categories | String | |
| colors | String | 16進数コード( #なし、例:8ca091)。 | 
| custom:<key> | String | このフィルターに値を渡さない場合、このキーを任意の値に設定した結果が返されます。値を渡すと、その特定の値に設定されたキーを持つ結果が返されます。 | 
| face_count | Integer | 単一の整数は、その数の顔がある結果を返します。範囲でフィルタリングするには、 :を使用します(例:1:3は1、2、または3の顔がある結果を返します。) | 
| has_frames | Boolean | |
| keyword | String | origin_path、name、descriptionなどの複数の事前定義フィールド全体で検索します。正確な動作は変更される可能性があります。 | 
| media_kind | String | アセットのタイプ。可能な値: IMAGE、ANIMATION、DOCUMENT、VECTOR。 | 
| origin_path | String | |
| tags | String | |
| warning_adult | Integer | 1から5までの数値で、コンテンツ警告レベルを説明します。1は最も低い確率で、5は最も高い確率です。 範囲でフィルタリングするには、:を使用します(例:1:3は1、2、または3の値を返します。)。 | 
| warning_medical | Integer | warning_adultと同じ動作です。 | 
| warning_racy | Integer | warning_adultと同じ動作です。 | 
| warning_spoof | Integer | warning_adultと同じ動作です。 | 
| warning_violence | Integer | warning_adultと同じ動作です。 | 
アセットソート
- date_created
- date_modified
- file_size
アセット属性
プレミアム機能
属性およびアセットの詳細へのアクセスは、現在、imgixのプレミアムプランをご利用のお客様に提供されています。この機能にご興味がある方は、営業チームにお問い合わせいただき、詳細情報をご確認ください。
| フィールド | タイプ | 更新可能? | 説明 | 
|---|---|---|---|
| analyzed_content_warnings | Boolean | いいえ | アセットのコンテンツ警告が解析されているかどうか。 | 
| analyzed_faces | Boolean | いいえ | 顔の存在が解析されているかどうか。 | 
| analyzed_tags | Boolean | いいえ | タグを生成するためにアセットが解析されているかどうか。 | 
| categories | List | はい | アセットを説明または整理するためのユーザーが追加したカテゴリのリスト(例: “Editorial Images” または “Summer Campaign” または “Profile Pictures”)。 | 
| color_model | String | いいえ | 検出されたカラーモデル(たとえば、 “RGB” または “CMYK”)。 | 
| color_profile | String | いいえ | 検出されたカラープロファイル(たとえば、 “Apple Wide Color Sharing Profile”)。 | 
| colors | Object | いいえ | 検出された優勢色。キーは16進数コードで、値はその色の画像内の割合を表す浮動小数点数です。パーセンテージ値は、画像内のすべての色が返されるわけではないため、必ずしも1になるとは限りません。 | 
| content_type | String | いいえ | アセットの検出されたコンテンツタイプ(例: image/jpeg、image/gif)。サポートされていないまたは未知のコンテンツタイプの場合、値はapplication/octet-streamになる場合があります。 | 
| custom_fields | Object | はい | ユーザーが追加したカスタムフィールドと値(例: { SKU: 1234 }) | 
| date_created | Integer | いいえ | このアセットがアセットマネージャーに最初に追加されたUnixタイムスタンプ(これは、imgixレンダリングサービスで画像が処理された最初の時間とは異なることに注意してください)。 | 
| date_modified | Integer | いいえ | このアセットが変更された最後の時間のUnixタイムスタンプ、エンドユーザーによってまたは自動更新によって。 | 
| description | String | はい | アセットのユーザー提供の説明。 | 
| dpi_height | Integer | いいえ | 画像の高さのDPI。 | 
| dpi_width | Integer | いいえ | 画像の幅のDPI。 | 
| face_count | Integer | いいえ | 画像内で検出された顔の数。 analyzed_facesがtrueの場合にのみ関連します。 | 
| file_size | Integer | いいえ | バイト単位のアセットサイズ。 | 
| has_frames | Boolean | いいえ | アニメーション(ビデオまたはGIF)の場合は true、それ以外の場合はfalse。 | 
| media_height | Integer | いいえ | アセットのピクセル高さ。 | 
| media_kind | String | いいえ | アセットのタイプ。可能な値: IMAGE、ANIMATION、DOCUMENT、VECTOR。 | 
| media_width | Integer | いいえ | アセットのピクセル幅。 | 
| name | String | はい | アセットのユーザー提供の名前。 origin-pathは変更されません。 | 
| origin_path | String | いいえ | ソースのプレフィックスに対するアセットのパス。 | 
| source_id | String | いいえ | このアセットが関連付けられているソースのID。 | 
| tags | Object | はい | 画像を説明する機械学習生成のタグ。キーはタグテキスト(例:「Dog」)、値は信頼レベルを表す浮動小数点数で、 0が信頼できないことを示し、1が100%の信頼を示します。 | 
| uploaded_by | String | いいえ | アセットがアセットマネージャーUI経由でアップロードされた場合のユーザーのID。 | 
| uploaded_by_api | Boolean | いいえ | アセットがAPIリクエスト経由でアップロードされた場合は true、それ以外の場合はfalse。 | 
| video_aspect_ratio | String | いいえ | ビデオのアスペクト比。 | 
| video_audio_channel_layout | String | いいえ | ビデオのオーディオチャンネルレイアウト。 | 
| video_duration | Integer | いいえ | 秒単位で表されるビデオの再生時間。 | 
| video_error_message | String | いいえ | ビデオの処理ができない場合のエラーメッセージ。それ以外の場合は null。 | 
| video_has_audio | Boolean | いいえ | ビデオにオーディオがある場合は true、それ以外の場合はfalse。 | 
| video_imgix_status | String | いいえ | ビデオの処理状態。可能な値: INIT_SENT:ビデオはトランスコーダーに転送中ですTRANSCODE_STARTED:ビデオファイルが処理中VIDEO_READY:ビデオが処理され、再生可能ERRORED:ビデオの処理に問題が発生しました | 
| video_max_stored_frame_rate | Float | いいえ | ビデオの最大保存フレームレート | 
| video_max_stored_resolution | String | いいえ | ビデオの最大保存解像度 | 
| video_max_stored_resolution_x | Integer | いいえ | ビデオの最大保存幅 | 
| video_max_stored_resolution_y | Integer | いいえ | ビデオの最大保存高さ | 
| video_playback_url | String | いいえ | ビデオ再生URL | 
| warning_adult | Integer | いいえ | コンテンツ警告レベルを説明する 0から5までの数値。analyzed_content_warningsがtrueの場合にのみ関連します。0は不明であり、1は低確率、5は高確率を意味します。 | 
| warning_medical | Integer | いいえ | warning_adultと同じ動作です。 | 
| warning_racy | Integer | いいえ | warning_adultと同じ動作です。 | 
| warning_spoof | Integer | いいえ | warning_adultと同じ動作です。 | 
| warning_violence | Integer | いいえ | warning_adultと同じ動作です。 | 
アセットリストのページネーション
レスポンスには、以下のような cursor が含まれます:
"cursor": {
  "current": "20",
  "hasMore": true,
  "next": "22",
  "totalRecords": "68",
}current は現在のページに対応し、 next は hasMore が true の場合に次のページの結果を取得するために渡すべきカーソル値です。
totalRecords は検索クエリによって見つかった合計レコード数を提供します。ただし、実際に一致するレコードの数に関係なく、最大で 1,001 件のカウントを返します。
ソースへのアセットのアップロード
Imgix Management API を使用すると、クラウドストレージにバックアップされたソース(Azure、GCS、またはS3)に直接アップロードできます。API は、ソースが読み取りを行うバケットにアップロードします。Web フォルダーまたは Web プロキシソースへのアップロードはサポートされていません。
ソースにアセットをアップロードする方法は2つあります:
- デフォルトのアップロード - 30MB未満のアセットに推奨されます。30MBを超えるファイルは、JSONレスポンスの代わりにHTMLコンテンツで 413 Request Too Largeエラーが返されます。
- アップロードセッションを使用したアップロード - ビデオなどの30MBを超えるアセットに推奨されます。
ソースでのアップロードを有効にするには、Imgix がクラウドストレージにアップロードするための資格情報を提供する必要があります。これらをソースの upload_credentials と呼びます。最初にソースを設定する際に提供した資格情報で、Imgix レンダリングサービスがオリジンからアセットを取得するために使用されます。レンダリングサービスはアセットを取得するために書き込み権限が必要ないため、upload_credentials と deployment_credentials を同じ資格情報に使用しないことを強くお勧めします。
既に Origin に存在するパスにアップロードを試みると、409 Conflict エラーが返されます。Origin 上のアセットを上書きするには、API リクエストにパラメータ ?overwrite=true を追加してください。これにより、Origin および Asset Manager 上のアセットが上書きされます。
アップロード資格情報の属性
| フィールド | 必須? | 説明 | 
|---|---|---|
| type | Yes | 受け入れられる値は azure、gcs、およびs3です。 | 
| azure_sas_string | Yes | azureタイプのソースにのみ必要です。Azure の資格情報の作成方法については、こちら を参照してください。 | 
| gcs_access_key | Yes | gcsタイプのソースにのみ必要です。 | 
| gcs_secret_key | Yes | gcsタイプのソースにのみ必要です。提供されると、返されません。こちら を参照して GCS の資格情報を作成してください。 | 
| s3_access_key | Yes | s3タイプのソースにのみ必要です。 | 
| s3_secret_key | Yes | s3タイプのソースにのみ必要です。提供されると、返されません。こちら を参照して S3 の資格情報を作成してください。 | 
upload_credentials を提供するには、新しい資格情報とソースの type を upload_credentials オブジェクト内に入れてソースに PATCH リクエストを行います。upload_credentials の type はソースの type と一致している必要があり、提供された資格情報は有効で、ソースのクラウドストレージバケットに書き込み権限を提供する必要があります。
次に、S3 ソースにアップロード資格情報を更新するための例です:
# Request
PATCH /api/v1/sources/5ae507164b595f0001e048bc
 
{
  "data": {
    "attributes": {
      "upload_credentials": {
        "s3_access_key": "<s3-access-key>",
        "s3_secret_key": "<s3-secret-key>",
        "type": "s3"
      }
    },
  "id": "5ae507164b595f0001e048bc",
  "type": "sources"
  }
}適切な upload_credentials がソースに設定されている場合、アセットをアップロードするには、生のアセットデータを含むリクエストボディで api/v1/sources/:source_id/upload/:origin_path に POST リクエストを行います。レスポンスは api/v1/assets/:source_id/:origin_path への GET リクエストと同じになります。
アセットの追加
add エンドポイントは、オリジンからアセットマネージャーに追加されるパスをキューに入れます。アセットが正常に追加されるには、次の条件が必要です。
- アセットのパスが存在する必要があります
- アセットのパスがオリジンから 200のレスポンスを返す必要があります
- ソースに十分な読み取り権限が必要です
add エンドポイントは、アップロードエンドポイントやアセットマネージャーUIを使用せずにアセットをアップロードし、imgixが定期的に新しいアセットをオリジンからクロールすることを依存している場合に便利です。
アセットを追加するには、空のPOSTボディを使用して sources/:source_id/assets/add/:origin-path に対して POST リクエストを発行します。
以下に例を示します:
# Request
POST api/v1/sources/5ae507164b595f0001e048bc/assets/add/marketing/logo.png
{}これにより、サーバーから 202 の空のレスポンスが返されます。add エンドポイントはアセットを処理するためにキューに入れるだけであり、アセットをキューに入れた後は、アセットの取得エンドポイントをポーリングしてアセットのステータスを取得できます。
アセットの更新
アセットの更新は、オリジンでアセットが更新されたが、imgixが使用する自動更新プロセス(24〜48時間かかる場合がある)がまだその変更を取得していない場合に便利です。 これらの場合、アセットを更新するリクエストを行うと、次のことが行われます。
- オリジンからアセットを再取得します。
- ETag が最後にアセットが処理されたときから変更されている場合、アセットを再処理します。
- アセットが以前にアセットマネージャーに取り込まれたことがない場合、リフレッシュエンドポイントはアセットをアセットマネージャーに取り込みます。
 
- すべてのimgixキャッシュからアセットを削除します。 更新されたアセットを表示するには、ブラウザを強制的に更新する必要がある場合があります。
アセットをリフレッシュするには、空の POST ボディを使用して sources/:source_id/assets/refresh/:origin-path に対して POST リクエストを発行します。
以下に例を示します:
# Request
POST api/v1/sources/5ae507164b595f0001e048bc/assets/refresh/marketing/logo.png
{}アセットのETagが前回処理されたときのETagと異なる場合、アセットは再処理されます。その後、アセットは削除され、レスポンスはsources/:source_id/assets/:origin_pathに対してGETリクエストを発行した場合と同様です。
アップロードセッションの使用
ビデオなどの50MBを超えるアセットをアップロードする場合は、アップロードセッションのフローを使用することをお勧めします。これは、セッションを作成し、そのセッションにファイルをアップロードし、最後にセッションを閉じる多部分、順次フローです。
注意:これは現在、Amazon S3、Google Cloud Storage、DigitalOcean、 Cloudflare R2、Wasabi、Linodeソースにのみ対応しており、ファイルサイズが5GBまでサポートされています。
アップロードセッションフロー:
- アップロードセッションを作成します。 アップロードされるファイルごとに1つのセッションを作成する必要があります。 セッションと署名付きURLは8時間開いたままになります。
- セッションの署名付きURLを使用して、ファイルをアップロードするためのHTTP PUTを実行します。
- アップロードが完了したら、セッションを閉じます。 セッションを閉じることは必須ではありませんが、アセットの処理を迅速化し、強く推奨されます。閉じられていないセッションは8時間後に閉じられます。
- アップロードのステータスを確認して、処理状態を確認します。有効なアップロードセッションの状態については以下を参照してください。
セッションには、アセットのアップロードステータスを追跡するための次の状態があります。
- PENDING: セッションは開いています。
- CLOSED: アップロードされたアセットがシステムによって処理されています。
- COMPLETE: 処理が完了しました。ビデオアセットの場合、トランスコーディングプロセスの完了には追加の時間が必要です。
- CANCELED: セッションがキャンセルされました。
Pythonでのフルアップロードセッションフローの例
import os
import requests
 
 
API_KEY = ""
BASE_URL = "https://api.imgix.com/api/v1/"
SOURCE_ID = ""
ORIGIN_PATH = ""
LOCAL_FILE = "/path/to/file"
 
 
session = requests.post(
    f"{BASE_URL}sources/{SOURCE_ID}/upload-sessions/{ORIGIN_PATH}",
    headers={"Authorization": f"Bearer {API_KEY}"},
).json()
 
with open(LOCAL_FILE, "rb") as f:
    requests.put(
        session["data"]["attributes"]["url"],
        f.read(),
        headers={"Content-Type": "image/jpeg"},
    )
 
session_id = session["data"]["id"]
closed_session = requests.post(
    f"{BASE_URL}sources/{SOURCE_ID}/upload-sessions/{session_id}",
    headers={"Authorization": f"Bearer {API_KEY}"},
).json()アセットの非公開
アセットマネージャーからアセットを非公開にし、Imgix CDN から削除しつつ、ファイル自体はオリジンに保存しておくことができます。これは、DMCA による削除要求やコンテンツレビューなど、一時的にアセットを削除したい場合に有用です。
非公開アセットは、レンダリング API を介してリクエストされた場合に 404 を返します。アセット自体はオリジンにはそのまま残ります。
アセットを非公開にするには、以下の属性を含む POST リクエストを api/v1/unpublish に送信します:
- url: 非公開にするアセットの完全な URL。有効な Imgix URL である必要があります。
- source_id: アセットが関連付けられている ソース ID
- type: このフィールドには- unpublishesを指定してください。
例:
POST /api/v1/unpublish
{
  "data": {
    "attributes": {
      "url": "https://assets.imgix.net/examples/bridge.jpg",
      "source_id": "64a6d7fc498afeeca4b9633a"
    },
    "type": "unpublishes"
  }
}アセットの公開
publish エンドポイントを使用して、以前に 非公開 にされたアセットを再度公開します。アセットを公開すると、その URL へのリクエストが再び可能になります。
アセットを公開するには、以下の属性を含む POST リクエストを api/v1/publish に送信します:
- url: 公開するアセットの完全な URL。有効な Imgix URL である必要があります。
- source_id: アセットが関連付けられている ソース ID
- type: このフィールドには- publishesを指定してください。
例:
POST /api/v1/publish
{
  "data": {
    "attributes": {
      "url": "https://assets.imgix.net/examples/bridge.jpg",
      "source_id": "64a6d7fc498afeeca4b9633a"
    },
    "type": "publishes"
  }
}アセットの例
単一のアセットの詳細を取得
# Request
GET /api/v1/assets/5b81e81539ddc50001a5d955/luke.jpg# Response
{
  "data": {
    "attributes": {
      "analyzed_content_warnings": true,
      "analyzed_faces": false,
      "analyzed_tags": true,
      "categories": [
        "Summer Photos"
      ],
      "color_model": "RGB",
      "color_profile": null,
      "colors": {
        "dominant_colors": {
          "#353237": 0.11076190322637558,
          "#545355": 0.07571428269147873,
          "#65a6fa": 0.08052381128072739,
          "#90c4f8": 0.06638095527887344,
          "#927942": 0.002190476283431053,
          "#a39173": 0.0018095237901434302,
          "#b1e7fe": 0.09242857247591019,
          "#e77abc": 0.005857143085449934,
          "#eebbc0": 0.0033333334140479565,
          "#f8f78e": 0.011857142671942711
        }
      },
      "content_type": "image/jpeg",
      "custom_fields": {
        "Dog name": "Luke"
      },
      "date_created": 1569633867,
      "date_modified": 1596825719,
      "description": null,
      "dpi_height": 300,
      "dpi_width": 300,
      "face_count": 0,
      "file_size": 357679,
      "has_frames": false,
      "media_height": 1825,
      "media_kind": "IMAGE",
      "media_width": 1704,
      "name": null,
      "origin_path": "/luke.jpg",
      "source_id": "5b81e81539ddc50001a5d955",
      "tags": {
        "Canidae": 0.9813780188560486,
        "Carnivore": 0.8667572736740112,
        "Dog": 0.9953705072402954,
        "Dog breed": 0.9838448762893677,
        "Havanese": 1,
        "Mammal": 0.975814163684845,
        "Puppy": 0.8966773748397827,
        "Schnoodle": 0,
        "Sporting Group": 0.8070302605628967,
        "Vertebrate": 0.9851104021072388
      },
      "uploaded_by": null,
      "uploaded_by_api": false,
      "warning_adult": 1,
      "warning_medical": 1,
      "warning_racy": 1,
      "warning_spoof": 2,
      "warning_violence": 1
    },
    "id": "5b81e81539ddc50001a5d955/luke.jpg",
    "type": "assets"
  },
  "included": [],
  "jsonapi": {
    "version": "1.0"
  },
  "meta": {
    "authentication": {
      "authorized": true,
      "clientId": null,
      "mode": "PUBLIC_APIKEY",
      "modeTitle": "Public API Key",
      "tag": "cindy@ymail.com",
      "user": null
    },
    "server": {
      "commit": "8835d05b",
      "status": {
        "healthy": true,
        "read_only": false,
        "tombstone": false
      },
      "version": "3.120.0"
    }
  }
}アセットのカテゴリとカスタムフィールドを更新
# Request
PATCH /api/v1/assets/5b81e81539ddc50001a5d955/luke.jpg
 
{
  "data": {
    "attributes": {
      "categories": [
        "Summer Photos",
        "Pet Photos"
       ],
       "custom_fields": {
         "Date taken": "August 2020",
         "Photographer": "Molly"
       }
    },
    "type": "assets",
     "id": "5b81e81539ddc50001a5d955/luke.jpg"
    }
}# Response
{
  "data": {
    "attributes": {
      "categories": [
        "Summer Photos",
        "Pet Photos"
       ],
       ...
       "custom_fields": {
         "Date taken": "August 2020",
         "Photographer": "Molly"
       },
       ...
    }
    ...
 }ソース内のアセットの2ページ目を取得
# Request
GET /api/v1/assets/5b81e81539ddc50001a5d955?page[cursor]=40&page[limit]=20# Response
{
  "data": [
     ...
   ],
   ...
   "cursor": {
     "current": "40",
     "estimatedRecords": null,
     "hasMore": true,
     "next": "60",
     "totalRecords": null
    }
    ...
}色でフィルタリングされ、作成日時でソートされたアセットを取得します。最新のものが最初に来ます
# Request
GET /api/v1/assets/5b81e81539ddc50001a5d955?filter[colors]=8ca091&sort=-date_created# Response
{
  "data": [
    {
      "attributes": {
      ...
        "colors": {
          "dominant_colors": {
            "#1b181a": 0.08416759222745895,
            "#343235": 0.09766407310962677,
            "#535153": 0.059176862239837646,
            "#a32438": 0.00037078236346133053,
            "#a49d97": 0.039377085864543915,
            "#b19f89": 0.05094549432396889,
            "#c8c1ba": 0.06518353521823883,
            "#d0bfa9": 0.10700778663158417,
            "#efe2cf": 0.06436781585216522,
            "#f7f3ee": 0.2693363130092621
          }
        },
        "content_type": "image/png",
        "custom_fields": null,
        "date_created": 1589337592,
	...
      },
      "id": "5b81e81539ddc50001a5d955/images/frances.jpg",
      "type": "assets"
    },
    {
      "attributes": {
      ...
        "colors": {
          "dominant_colors": {
            "#160802": 0.11790844798088074,
            "#230a03": 0.009009009227156639,
            "#2f1104": 0.04248843342065811,
            "#6a5340": 0.04790601506829262,
            "#6e4a36": 0.07487216591835022,
            "#8b6c5a": 0.010409058071672916,
            "#907864": 0.11200389266014099,
            "#a4958c": 0.011626491323113441,
            "#af967f": 0.1546749472618103,
            "#c4ae97": 0.0022522523067891598
          }
        },
        "content_type": "image/jpeg",
        "custom_fields": null,
        "date_created": 1587358372,
    	...
      },
      "id": "5b81e81539ddc50001a5d955/images/luke.jpg",
      "type": "assets"
    },
    ...
  ],
  ...
}
 アセットをソースにアップロードする
# Request
POST /api/v1/sources/5b81e81539ddc50001a5d955/upload/marketing/logo.png
 
<raw binary image file># Response
{
  "data": {
    "attributes": {
      ...
      "origin_path": "/marketing/logo.png",
      "tags": {
        "Brand": 0.772368848323822,
        "Clip art": 0.5367497801780701,
        "Font": 0.9227379560470581,
        "Graphics": 0.7015061974525452,
        "Line": 0.7984547019004822,
        "Logo": 0.9082068800926208,
        "Text": 0.9606743454933167,
        "Trademark": 0.7562870383262634
      },
      ...
    },
    "id": "5b81e81539ddc50001a5d955/marketing/logo.png",
    "type": "assets"
  },
  "included": [],
  "jsonapi": {
    "version": "1.0"
  },
  "meta": {
   ...
  }
}アップロードセッションを作成する
# Request
POST /api/v1/sources/5b81e81539ddc50001a5d955/upload-sessions/create/marketing/logo.png# Response
{
  "data": {
    "attributes": {
      "date_created": 1653506429,
      "date_expires": 1653535229,
      "date_modified": 1653506429,
      "id": "77c0f903-9475-4a6a-9fad-3995a5ad8cfe",
      "origin_path": "/marketing/logo.png",
      "source_id": "5b81e81539ddc50001a5d955",
      "status": "PENDING",
      "url": "$PRESIGNED_UPLOAD_URL"
    },
    "id": "77c0f903-9475-4a6a-9fad-3995a5ad8cfe",
    "type": "asset_uploads"
  },
  "included": [],
  "jsonapi": {
    "version": "1.0"
  },
  "meta": {
    ...
  }
}新しく作成したアップロードセッションからの url を使用して、アセットをアップロードする。
curl -XPUT $PRESIGNED_URL -T 'image.jpg'アップロードセッションを取得する
# Request
GET /api/v1/sources/5b81e81539ddc50001a5d955/upload-sessions/status/77c0f903-9475-4a6a-9fad-3995a5ad8cfe# Response
{
  "data": {
    "attributes": {
      "date_created": 1653506429,
      "date_expires": 1653535229,
      "date_modified": 1653506429,
      "id": "77c0f903-9475-4a6a-9fad-3995a5ad8cfe",
      "origin_path": "/marketing/logo.png",
      "source_id": "5b81e81539ddc50001a5d955",
      "status": "PENDING"
    },
    "id": "77c0f903-9475-4a6a-9fad-3995a5ad8cfe",
    "type": "asset_uploads"
  },
  "included": [],
  "jsonapi": {
    "version": "1.0"
  },
  "meta": {
    ...
  }
}アップロードセッションを閉じる
# Request
POST /api/v1/sources/5b81e81539ddc50001a5d955/upload-sessions/close/77c0f903-9475-4a6a-9fad-3995a5ad8cfe# Response
{
  "data": {
    "attributes": {
      ...
      "status": "CLOSED"
    },
    "id": "77c0f903-9475-4a6a-9fad-3995a5ad8cfe",
    "type": "asset_uploads"
  },
  "included": [],
  "jsonapi": {
    "version": "1.0"
  },
  "meta": {
    ...
  }
}アップロードセッションをキャンセルする
# Request
DELETE /api/v1/sources/5b81e81539ddc50001a5d955/upload-sessions/cancel/77c0f903-9475-4a6a-9fad-3995a5ad8cfe# Response
{
  "data": {
    "attributes": {
      ...
      "status": "CANCELED"
    },
    "id": "77c0f903-9475-4a6a-9fad-3995a5ad8cfe",
    "type": "asset_uploads"
  },
  "included": [],
  "jsonapi": {
    "version": "1.0"
  },
  "meta": {
    ...
  }
}アセットを非公開にする
# Request
POST /api/v1/unpublish
{
  "data": {
    "attributes": {
      "url": "https://assets.imgix.net/examples/bridge.jpg",
      "source_id": "64a6d7fc498afeeca4b9633a"
    },
    "type": "unpublishes"
  }
}# Response
{
    "data": {
        "attributes": {
            "unpublish_id": "81d12025-e65c-410e-b289-3a319c6d107a"
        },
        "id": "81d12025-e65c-410e-b289-3a319c6d107a",
        "type": "unpublishes"
    },
    "included": [],
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
      ...
    }
}アセットを公開する
# Request
POST /api/v1/publish
{
  "data": {
    "attributes": {
      "url": "https://assets.imgix.net/examples/bridge.jpg",
      "source_id": "64a6d7fc498afeeca4b9633a"
    },
    "type": "publishes"
  }
}# Response
{
    "data": {
        "attributes": {
            "publish_id": "7630c8e5-886a-4ea4-b513-9204b0a46909"
        },
        "id": "7630c8e5-886a-4ea4-b513-9204b0a46909",
        "type": "publishes"
    },
    "included": [],
    "jsonapi": {
        "version": "1.0"
    },
    "meta": {
      ...
    }
}