OpenID Connectによるユーザーの認可、認証

一部のAPI の使用には、それに先立って、ユーザーの認可を得、さらにアクセストークンを得るという手順が必要なものがあります。発行されるアクセストークンは、APIへのアクセスの度に必要です。アクセストークンは、発行から一定時間が過ぎると使えなくなります。発行されたアクセストークンの有効期限が切れたときは、再びユーザーの認可を受けるという手順を踏まずに、再びアクセストークンを得ることができます。

認可GET https://console.root.bricks.pub/oauth/authorize
アクセストークン取得GET https://console.root.bricks.pub/oauth/token
アクセストークン再取得GET https://console.root.bricks.pub/oauth/token
ユーザー情報取得GET https://console.root.bricks.pub/oauth/userinfo

ユーザーの認可を得る

OAuth2 Authorization Code Flow による認証を行い、特定のAPIエンドポイントにアクセスする権限を取得する。

各APIエンドポイントには、アクセスに必要な権限(スコープ)が指定されている。Brickは、指定された全ての権限について本エンドポイントから認可された時にのみ、当該のAPIエンドポイントにアクセスできる。本エンドポイントへのアクセスは、APIエンドポイントへのアクセスごとや権限ごとに行う必要は無く、複数のAPIエンドポイントで必要な権限をまとめて認可されうる。各権限は、次の全てを満たした場合に認可される。

  • Brickの登録時に、FLB ROOTがBrickに対してその権限を与えている。
  • Brickが本エンドポイントにアクセスした時に、要求のパラメーターにその権限が含まれている。
  • Brickがその権限を持ってユーザーの情報にアクセスすることをユーザーがウェブブラウザを通じて認める。

本エンドポイントから権限の認可を受けるだけではAPIエンドポイントを使うことは出来ず、戻り値に含まれる code の値を使ってさらにアクセストークンを得る必要がある。

Brickが秘密の文字列を生成して要求時にパラメーター state の値として渡すと、応答にも同じ値が返され、Brickがその同一性を検証することによって、応答がFLB ROOTのなりすましからのものでないことの目安にできる。

パラメーター説明データ形式必須
response_typeレスポンスタイプcodeString
client_idBrick登録時にFLB ROOTが発行したOpenID ConnectのID05db40592ba093fc7af4b2b0925625a2869a551b6beba90aa84fb6df1019ca25String
client_secretBrick登録時にFLB ROOTが発行したOpenID ConnectのSecrete1cb1707ed0bf779c0adf455467e1ffb17e4fbe6f47561bfbff3c250e1278d38String
redirect_uriBrick登録時にFLB ROOTに登録したリダイレクトURIhttps://example.com/auth_callbackString
scopeこのあと発行されるトークンを使ってアクセスするAPIエンドポイントに必要な全ての権限を空白でつないだものopenid emailString
nonce任意の文字列363df3006cbadb6695f02b48658bba97String
state任意の文字列cbd27e4f027eea53c4fdbe7e76a26eString

GET /oauth/authorize

/*
 * 要求をすると認可画面にリダイレクトされ、
 * ユーザーがその画面上の説明に同意して「許可する」ボタンを押すと、
 * 次にredirect_urlにリダイレクトされる。そのURLのクエリーに以下のパラメータ値が与えられる。
 */
https://example.com/auth_callback?code=e885b973e64797bcf3342529d57cd2adca97a11f787ef9736ea92d8061e5aa59&state=cbd27e4f027eea53c4fdbe7e76a26e

アクセストークンを得る

認可を得たら、それに引き続いて、APIへのアクセスに必要なアクセストークンを得る。

パラメーター説明データ形式必須
grant_typeauthorization_codeString
client_idBrick登録時にFLB ROOTが発行したOpenID ConnectのID05db40592ba093fc7af4b2b0925625a2869a551b6beba90aa84fb6df1019ca25String
client_secretBrick登録時にFLB ROOTが発行したOpenID ConnectのSecrete1cb1707ed0bf779c0adf455467e1ffb17e4fbe6f47561bfbff3c250e1278d38String
redirect_uriBrick登録時にFLB ROOTに登録したリダイレクトURIhttps://example.com/auth_callbackString
code認可を得た時に応答の本文に含まれていたcodeの値e885b973e64797bcf3342529d57cd2adca97a11f787ef9736ea92d8061e5aa59String

GET /oauth/token

{
  "token_type": "bearer",
  "access_token": "KGWLeYtDKj4caXm-cIOnHGRzMbHWgS-iJKYNxUh1Ei0",
  "expires_in": 1209599,
  "refresh_token": "LRGipWfRdqGaK3_v6lSjQ_WLaqMbrGdSRpVjARYpTJc",
  "scope": "openid email",
  "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImFGam5uVzE1ZFdPU1lycjhHeGdxclU5b1N4c3lGUGxCNE1Hdkl5WUV6TWMifQ.eyJpc3MiOiJodHRwczovL2NvbnNvbGUucm9vdC5icmlja3MucHViIiwic3ViIjoiODNlZDMzN2QtNjBlZi00M2E1LWFjMjctNDcwNzAwZDJkNjM3IiwiYXVkIjoiMDVkYjQwNTkyYmEwOTNmYzdhZjRiMmIwOTI1NjI1YTI4NjlhNTUxYjZiZWJhOTBhYTg0ZmI2ZGYxMDE5Y2EyNSIsImV4cCI6MTU2MDMwNTcwNCwiaWF0IjoxNTYwMzA1NTg0LCJub25jZSI6IjQzYjA0YWUxMmRjZTU0ZDJmZTA4Yzk3ZjkyMGNjYTllIiwiYXV0aF90aW1lIjoxNTQ4OTE5Mzc3fQ.uTLl16rNb8WHoQK-2Ou2jyTdibYLTEjz1eSnBIhtRdtGiy0UeDCW2aaxJyAV6tAoA91zgBM_ZDg3KZgEkGpZJ5jY6VDtKD1BthJz3UDLXAVVbJvOtWADOJ3-ooqo0LTtMXrTh4lAmjbYEs78DVqlsFO1ZfiBQzSYU9c7-Yphvn8ocpX8VE3zKIzEjOWG_fB4rS-a6Xua78msOptolq_L0FWkQ9WfbPQ-cie0R9pij_tPe1yAUKNY-qISvdou_d6ccN1OHaCmhbDeIxm-D71GBgV7hgTg6SFnpOgx2MI3BrfYWANJ0Ro0UCRjcWoCffnEXDzmhy3OnRubHzXTlLR9tQ"
}

アクセストークンを再び得る

一度アクセストークンの発行を受けた後、再び認可を受ける手順を踏まずにアクセストークンを再び得る。

再発行されたアクセストークンを使用すると、以前のアクセストークン access_token 及び refresh_token は無効になります。

パラメーター説明データ形式必須
grant_typerefresh_tokenString
refresh_tokenアクセストークンを得た時に応答の本文に含まれていたrefresh_tokenの値LRGipWfRdqGaK3_v6lSjQ_WLaqMbrGdSRpVjARYpTJcString
client_idBrick登録時にFLB ROOTが発行したOpenID ConnectのID05db40592ba093fc7af4b2b0925625a2869a551b6beba90aa84fb6df1019ca25String
client_secretBrick登録時にFLB ROOTが発行したOpenID ConnectのSecrete1cb1707ed0bf779c0adf455467e1ffb17e4fbe6f47561bfbff3c250e1278d38String

GET /oauth/token

{
  "token_type": "bearer",
  "access_token": "KGWLeYtDKj4caXm-cIOnHGRzMbHWgS-iJKYNxUh1Ei0",
  "expires_in": 1209599,
  "refresh_token": "LRGipWfRdqGaK3_v6lSjQ_WLaqMbrGdSRpVjARYpTJc",
  "scope": "openid email",
  "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImFGam5uVzE1ZFdPU1lycjhHeGdxclU5b1N4c3lGUGxCNE1Hdkl5WUV6TWMifQ.eyJpc3MiOiJodHRwczovL2NvbnNvbGUucm9vdC5icmlja3MucHViIiwic3ViIjoiODNlZDMzN2QtNjBlZi00M2E1LWFjMjctNDcwNzAwZDJkNjM3IiwiYXVkIjoiMDVkYjQwNTkyYmEwOTNmYzdhZjRiMmIwOTI1NjI1YTI4NjlhNTUxYjZiZWJhOTBhYTg0ZmI2ZGYxMDE5Y2EyNSIsImV4cCI6MTU2MDMwNTcwNCwiaWF0IjoxNTYwMzA1NTg0LCJub25jZSI6IjQzYjA0YWUxMmRjZTU0ZDJmZTA4Yzk3ZjkyMGNjYTllIiwiYXV0aF90aW1lIjoxNTQ4OTE5Mzc3fQ.uTLl16rNb8WHoQK-2Ou2jyTdibYLTEjz1eSnBIhtRdtGiy0UeDCW2aaxJyAV6tAoA91zgBM_ZDg3KZgEkGpZJ5jY6VDtKD1BthJz3UDLXAVVbJvOtWADOJ3-ooqo0LTtMXrTh4lAmjbYEs78DVqlsFO1ZfiBQzSYU9c7-Yphvn8ocpX8VE3zKIzEjOWG_fB4rS-a6Xua78msOptolq_L0FWkQ9WfbPQ-cie0R9pij_tPe1yAUKNY-qISvdou_d6ccN1OHaCmhbDeIxm-D71GBgV7hgTg6SFnpOgx2MI3BrfYWANJ0Ro0UCRjcWoCffnEXDzmhy3OnRubHzXTlLR9tQ"
}

ユーザー情報を得る

ユーザーごとにユニークな値subなどのユーザー情報を取得します。
設定したscopeにより取得できる情報が変わります。

HTTPヘッダーに設定が必要なパラメーター

パラメーター説明データ形式必須
Authorization認可時に生成されたAccess tokenBearer 0c0188db9ec9e0094db220c6cfacf4b8c554cc753626495f8d17f6b120a686fdString

GET /oauth/userinfo

{
  "sub": "2a4767aa-cd30-4b3b-9ad7-466a79b568dd",
  "email": "test@example.com", /* email scopeを設定すると取得できます。 */
  "updated_at": "2019-05-16T02:16:58.866Z", /* profile scopeを設定すると取得できます。 */
  "owners": [
    {
      "id": "aa500ea0-cab3-42fe-ab26-9c4b38934c01",
      "name": "テストオーナー",
      "created_at": "2019-03-15T08:13:27.936Z",
      "updated_at": "2019-03-15T08:13:27.936Z"
    }
  ] /* profile scopeを設定すると取得できます。 */
}

全般

成功時には 2xx を、エラー時には 4xx または 5xx をステータスコードとして返します。

全てのAPIに共通して必要なHTTPヘッダー

パラメーター説明
Content-Typeコンテントタイプapplication/json
X-API-KEY作成したBrickのAPIキーQi9rmEkBKx2AHdJKMwwkTr3wW67Jaxv6Je8yL88d

owners配下のAPIに共通して必要なHTTPヘッダー

パラメーター説明
Authorization認可時に生成されたAccess tokenBearer 0c0188db9ec9e0094db220c6cfacf4b8c554cc753626495f8d17f6b120a686fd

コンテンツ

コンテンツ一覧取得

GET /v1/contents

{
  "data": [
    {
      "id": "fe74a103-73f7-4ac0-bd4f-0a183c686fc3",
      "title": "吾輩は猫である",
      "description": "吾輩は猫である。名前はまだ無い。",
      "owner_id": "c97835a9-0565-41a1-b8a8-e6943128e1e5",
      "authors": [
        {
          "name": "夏目漱石",
          "role": "著"
        }
      ],
      "file": {
        "layout_type": "pre_paginated",
        "trial_range": "1-3",
        "size": 1697542,
        "uploaded_stamp": 1522132979
      },
      "image": {
        "url": "https://s3.ap-northeast-1.amazonaws.com/root.bricks.pub-staging/content_images/fe74a103-73f7-4ac0-bd4f-0a183c686fc3/default.jpg",
        "size": 187809,
        "uploaded_stamp": 1522132977
      }
    },
    {
      "id": "aa717822-e437-4595-8a11-0d38882789e9",
      "title": "人間失格",
      "description": "私は、その男の写真を三葉、見たことがある。",
      "owner_id": "5fb20d98-b5cf-4e0b-96e2-2fe80fe8b1dc",
      "authors": [
        {
          "name": "太宰治",
          "role": "著"
        }
      ],
      "file": {
        "layout_type": "pre_paginated",
        "trial_range": "1-2",
        "size": 358508909,
        "uploaded_stamp": 1522128276
      },
      "image": {
        "url": "https://s3.ap-northeast-1.amazonaws.com/root.bricks.pub-staging/content_images/aa717822-e437-4595-8a11-0d38882789e9/default.jpg",
        "size": 99954,
        "uploaded_stamp": 1522128215
      }
    }
  ],
  "paging": {
    "prev_url": "http://api.root.bricks.pub/v1/contents?before=eyJsaW1pdCI6NTAsInJlc291cmNlX2lkIjoiZDA1NjE3ZWQtYTdjOC00YmQ1LWExNDAtYjZhNTQ5YzMwYzg0IiwicmVzb3VyY2VfY3JlYXRlZF9hdCI6IjIwMTktMDItMjdUMDA6MzE6MDkuMzcyWiJ9",
    "next_url": "http://api.root.bricks.pub/v1/contents?after=eyJsaW1pdCI6NTAsInJlc291cmNlX2lkIjoiZDA1NjE3ZWQtYTdjOC00YmQ1LWExNDAtYjZhNTQ5YzMwYzg0IiwicmVzb3VyY2VfY3JlYXRlZF9hdCI6IjIwMTktMDItMjdUMDA6MzE6MDkuMzcyWiJ9"
  }
}

コンテンツ詳細取得

パラメーター説明データ形式必須
content_idパスパラメータに指定したIDのコンテンツ情報を取得する16a4ac21-4b45-462d-af18-b8c1e90418a1UUID

GET /v1/contents/{content_id}

{
  "data":  {
    "id": "fe74a103-73f7-4ac0-bd4f-0a183c686fc3",
    "title": "吾輩は猫である",
    "description": "吾輩は猫である。名前はまだ無い。",
    "owner_id": "c97835a9-0565-41a1-b8a8-e6943128e1e5",
    "authors": [
      {
        "name": "夏目漱石",
        "role": "著"
      }
    ],
    "file": {
      "layout_type": "pre_paginated",
      "trial_range": "1-3",
      "size": 1697542,
      "uploaded_stamp": 1522132979
    },
    "image": {
      "url": "https://s3.ap-northeast-1.amazonaws.com/root.bricks.pub-staging/content_images/fe74a103-73f7-4ac0-bd4f-0a183c686fc3/default.jpg",
      "size": 187809,
      "uploaded_stamp": 1522132977
    }
  }
}

自分のコンテンツ一覧取得

パラメーター説明データ形式必須
owner_idパスパラメータに指定したowner_idが保有するコンテンツを対象とする684f9003-8f5d-4ed1-b9de-f2b86fb3c3ebUUID

GET /v1/owners/{owner_id}/contents

{
  "data": [
    {
      "id": "fe74a103-73f7-4ac0-bd4f-0a183c686fc3",
      "title": "吾輩は猫である",
      "description": "吾輩は猫である。名前はまだ無い。",
      "owner_id": "c97835a9-0565-41a1-b8a8-e6943128e1e5",
      "authors": [
        {
          "name": "夏目漱石",
          "role": "著"
        }
      ],
      "file": {
        "layout_type": "pre_paginated",
        "trial_range": "1-3",
        "size": 1697542,
        "uploaded_stamp": 1522132979
      },
      "image": {
        "url": "https://s3.ap-northeast-1.amazonaws.com/root.bricks.pub-staging/content_images/fe74a103-73f7-4ac0-bd4f-0a183c686fc3/default.jpg",
        "size": 187809,
        "uploaded_stamp": 1522132977
      }
    },
    {
      "id": "aa717822-e437-4595-8a11-0d38882789e9",
      "title": "人間失格",
      "description": "私は、その男の写真を三葉、見たことがある。",
      "owner_id": "5fb20d98-b5cf-4e0b-96e2-2fe80fe8b1dc",
      "authors": [
        {
          "name": "太宰治",
          "role": "著"
        }
      ],
      "file": {
        "layout_type": "pre_paginated",
        "trial_range": "1-2",
        "size": 358508909,
        "uploaded_stamp": 1522128276
      },
      "image": {
        "url": "https://s3.ap-northeast-1.amazonaws.com/root.bricks.pub-staging/content_images/aa717822-e437-4595-8a11-0d38882789e9/default.jpg",
        "size": 99954,
        "uploaded_stamp": 1522128215
      }
    }
  ],
  "paging": {
    "prev_url": "http://api.root.bricks.pub/v1/contents?before=eyJsaW1pdCI6NTAsInJlc291cmNlX2lkIjoiZDA1NjE3ZWQtYTdjOC00YmQ1LWExNDAtYjZhNTQ5YzMwYzg0IiwicmVzb3VyY2VfY3JlYXRlZF9hdCI6IjIwMTktMDItMjdUMDA6MzE6MDkuMzcyWiJ9",
    "next_url": "http://api.root.bricks.pub/v1/contents?after=eyJsaW1pdCI6NTAsInJlc291cmNlX2lkIjoiZDA1NjE3ZWQtYTdjOC00YmQ1LWExNDAtYjZhNTQ5YzMwYzg0IiwicmVzb3VyY2VfY3JlYXRlZF9hdCI6IjIwMTktMDItMjdUMDA6MzE6MDkuMzcyWiJ9"
  }
}

自分のコンテンツ詳細取得

パラメーター説明データ形式必須
owner_idパスパラメータに指定したowner_idが保有するコンテンツを対象とする684f9003-8f5d-4ed1-b9de-f2b86fb3c3ebUUID
content_idパスパラメータに指定したIDのコンテンツ情報を取得する16a4ac21-4b45-462d-af18-b8c1e90418a1UUID

GET /v1/owners/{owner_id}/contents/{content_id}

{
  "data": {
    "id": "fe74a103-73f7-4ac0-bd4f-0a183c686fc3",
    "title": "吾輩は猫である",
    "description": "吾輩は猫である。名前はまだ無い。",
    "owner_id": "c97835a9-0565-41a1-b8a8-e6943128e1e5",
    "authors": [
      {
        "name": "夏目漱石",
        "role": "著"
      }
    ],
    "file": {
      "url": "https://s3.ap-northeast-1.amazonaws.com/root.bricks.pub-staging/content_files/fe74a103-73f7-4ac0-bd4f-0a183c686fc3/d4b96078-d9ae-4543-a9aa-c12ba00885d9.pdf?response-content-type=application%2Fforce-download&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAJLLXFHCUMKSFOTJA%2F20180808%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-Date=20180808T032015Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=d09cf058ddaafda59a5dbfff370d850390c4a45a4ab56185f0c71223fc1f176d",
      "layout_type": "pre_paginated",
      "trial_range": "1-3",
      "size": 1697542,
      "uploaded_stamp": 1522132979
    },
    "image": {
      "url": "https://s3.ap-northeast-1.amazonaws.com/root.bricks.pub-staging/content_images/fe74a103-73f7-4ac0-bd4f-0a183c686fc3/default.jpg",
      "size": 187809,
      "uploaded_stamp": 1522132977
    }
  }
}

コンテンツ登録

パラメーター説明データ形式必須
owner_idパスパラメータに指定したowner_idが保有するコンテンツを対象とする684f9003-8f5d-4ed1-b9de-f2b86fb3c3ebUUID
titleコンテンツのタイトル老舗の流儀 戦後六十年 あの本の新聞広告String
descriptionコンテンツの概要話題になったあの本の新聞広告を90点一挙掲載。\nまた、作家・評論家の紀田順一郎氏、幻冬舎社長の見城徹氏らのインタビューにより、戦後の本と、広告の60年を閉じ込めました。広告一つひとつにこめられた広告会社の営業マンの物語や、ベストセラーと広告の関係など、本書でしか読めないエピソードが満載です。Text
authorsコンテンツの著者一覧Array
authors[_].name著者名南陀楼綾繁String
authors[_].role

役割

著, 訳, 監修, 編集, 表紙, 挿絵など

String
image

コンテンツの画像データ

※ファイルアップロードについてはコンテンツファイルアップロードの項を参照

Object
image.filename

画像データのファイル名。主に表紙画像。

JPEG, PNG

image.jpegString
file

コンテンツの元データ

※ファイルアップロードについてはコンテンツファイルアップロードの項を参照

Object
file.filename

書籍データのファイル名

EPUB, PDF, DotBook

ryugi.epubString
file.layout_type

書籍データの形式

reflowable, pre_paginated

※リフロー型、固定型については以下を参照
http://www.jepa.or.jp/ebookpedia/201508_2553/
http://www.jepa.or.jp/ebookpedia/201508_2551/

※PDFは固定型で処理

リフロー型:reflowable

固定型: pre_paginated

String
file.trial_range

試し読み範囲の指定

リフロー型:文字列

固定型:ページ番号

※空文字の場合はエラーになります

- の場合は全ページ試し読みになります

リフロー型:

  • -{エピソードが満載です}
  • -

固定型:

  • 15
  • -15
  • 15-
  • 3-15
  • -
String

POST /v1/owners/{owner_id}/contents

{
  "data": {
    "id": "bee9c6cc-4a68-4b61-a93c-79cb9cd4aefe",
    "title": "タイトル",
    "description": "概要\n概要\n概要",
    "owner_id": "2d363704-7923-4826-ac25-6b3128ee6014",
    "authors": [
      {
        "name": "著者名",
        "role": "著"
      },
      {
        "name": "著者名",
        "role": "訳"
      }
    ],
    "file": {
      "upload_url": "https://s3-northeast-1.amazonaws.com/flb-root/content_files/bee9c6cc-4a68-4b61-a93c-79cb9cd4aefe/bd177321-8a77-43c9-b041-25e8196c8f15.pdf?x-amz-acl=private&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=dummy_aws_access_key_id%2F20180629%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-Date=20180629T031258Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=904b042f39b9270514c35ef2b4400048ccad339781bd18162b39e658f9332eaa",
      "layout_type": "pre_paginated",
      "trial_range": "1-10",
      "size": null,
      "uploaded_stamp": null
    },
    "image": {
      "upload_url": "https://s3-northeast-1.amazonaws.com/flb-root/content_images/bee9c6cc-4a68-4b61-a93c-79cb9cd4aefe/default.jpg?x-amz-acl=public-read&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=dummy_aws_access_key_id%2F20180629%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-Date=20180629T031258Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=60c4478bfddf53fcbe4ad833f3c3056f960ebfd50d1a52e0b3a39e89c5d52411",
      "size": null,
      "uploaded_stamp": null
    }
  }
}

コンテンツファイルアップロード

コンテンツ登録、更新APIのレスポンスに含まれるupload_urlを使用してPUTすることでファイル、画像をAmazon S3にアップロードすることができる。

uploadurlは15分後に失効します。

パラメーター説明データ形式必須
content_typeファイルのmime-typeを設定

EPUB:application/epub+zip

PDF:application/pdf

JPEG:image/jpeg

PNG:image/png

String

コンテンツ更新

パラメーター説明データ形式必須
owner_idパスパラメータに指定したowner_idが保有するコンテンツを対象とする684f9003-8f5d-4ed1-b9de-f2b86fb3c3ebUUID
content_idパスパラメータに指定したIDのコンテンツ情報を取得する16a4ac21-4b45-462d-af18-b8c1e90418a1UUID
titleコンテンツのタイトル老舗の流儀 戦後六十年 あの本の新聞広告String
descriptionコンテンツの概要話題になったあの本の新聞広告を90点一挙掲載。\nまた、作家・評論家の紀田順一郎氏、幻冬舎社長の見城徹氏らのインタビューにより、戦後の本と、広告の60年を閉じ込めました。広告一つひとつにこめられた広告会社の営業マンの物語や、ベストセラーと広告の関係など、本書でしか読めないエピソードが満載です。Text
authorsコンテンツの著者一覧Array
authors[_].name著者名南陀楼綾繁String
authors[_].role

役割

著, 訳, 監修, 編集, 表紙, 挿絵など

String
image

コンテンツの画像データ

※ファイルアップロードについてはコンテンツファイルアップロードの項を参照

Object
image.filename

画像データのファイル名。主に表紙画像。

JPEG, PNG

image.jpegString
file

コンテンツの元データ

※ファイルアップロードについてはコンテンツファイルアップロードの項を参照

Object
file.filename

書籍データのファイル名

EPUB, PDF, DotBook

ryugi.epubString
file.layout_type

書籍データの形式

reflowable, pre_paginated

※リフロー型、固定型については以下を参照
http://www.jepa.or.jp/ebookpedia/201508_2553/
http://www.jepa.or.jp/ebookpedia/201508_2551/

※PDFは固定型で処理

リフロー型:reflowable

固定型: pre_paginated

String
file.trial_range

試し読み範囲の指定

リフロー型:文字列

固定型:ページ番号

※空文字の場合はエラーになります

- の場合は全ページ試し読みになります

リフロー型:

  • -{エピソードが満載です}
  • -

固定型:

  • 15
  • -15
  • 15-
  • 3-15
  • -
String

PUT /v1/owners/{owner_id}/contents/{content_id}

{
  "data": {
    "id": "bee9c6cc-4a68-4b61-a93c-79cb9cd4aefe",
    "title": "タイトル",
    "description": "概要\n概要\n概要",
    "owner_id": "2d363704-7923-4826-ac25-6b3128ee6014",
    "authors": [
      {
        "name": "著者名",
        "role": "著"
      },
      {
        "name": "著者名",
        "role": "訳"
      }
    ],
    "file": {
      "upload_url": "https://s3-northeast-1.amazonaws.com/flb-root/content_files/bee9c6cc-4a68-4b61-a93c-79cb9cd4aefe/bd177321-8a77-43c9-b041-25e8196c8f15.pdf?x-amz-acl=private&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=dummy_aws_access_key_id%2F20180629%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-Date=20180629T031258Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=904b042f39b9270514c35ef2b4400048ccad339781bd18162b39e658f9332eaa",
      "layout_type": "pre_paginated",
      "trial_range": "1-10",
      "size": null,
      "uploaded_stamp": null
    },
    "image": {
      "upload_url": "https://s3-northeast-1.amazonaws.com/flb-root/content_images/bee9c6cc-4a68-4b61-a93c-79cb9cd4aefe/default.jpg?x-amz-acl=public-read&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=dummy_aws_access_key_id%2F20180629%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-Date=20180629T031258Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=60c4478bfddf53fcbe4ad833f3c3056f960ebfd50d1a52e0b3a39e89c5d52411",
      "size": null,
      "uploaded_stamp": null
    }
  }
}

コンテンツ削除

パラメーター説明データ形式必須
owner_idパスパラメータに指定したowner_idが保有するコンテンツを対象とする684f9003-8f5d-4ed1-b9de-f2b86fb3c3ebUUID
content_idパスパラメータに指定したIDのコンテンツ情報を取得する16a4ac21-4b45-462d-af18-b8c1e90418a1UUID

DELETE /v1/owners/{owner_id}/contents/{content_id}

権限(Public Brick開発者向け)

権限チェック

パラメーター説明データ形式必須
content_idパスパラメータに指定したIDのコンテンツ情報を取得するArray
content_id[_]コンテンツのID16a4ac21-4b45-462d-af18-b8c1e90418a1UUID
tokenコンテンツ利用のチェックに使う確認用トークン
※ Brickを作成すると発行される
CDvXi7F9MPEVHbvm9RJ713kiString

GET /v1/permissions?token={confirmation_token}&content_id[]={content_id}&content_id[]={content_id}

{
  "data":  {
    "16a4ac21-4b45-462d-af18-b8c1e90418a1": {
      "id": "16a4ac21-4b45-462d-af18-b8c1e90418a1",
      "permitted": true,
      "message": "",
    },
    "bee9c6cc-4a68-4b61-a93c-79cb9cd4aefe": {
      "id": "bee9c6cc-4a68-4b61-a93c-79cb9cd4aefe",
      "permitted": false,
      "message": "テストBrick is not permitted.",
    }
  }
}

注意事項

FLB ROOTからコンテンツファイルを取得、提供する場合は提供先Brickからconfirmation_tokenを取得し権限チェックを行った上でコンテンツの提供をお願いします。

Webhook

イベントの種類

  • メタデータの更新 (meta_updated)
  • ファイルの更新 (file_updated)
  • 画像の更新 (image_updated)
  • コンテンツの削除 (content_deleted)

認証情報

設定できるAuthorization Headerの種類

  • Basic
  • Bearer
  • Digest

リクエスト形式

送信ヘッダ

  • POSTで送信されます
  • User-Agent: FLB-ROOT-Webhook/xxxxが設定されます

Example delivery headers

{
  "Content-Type": "application/json",
  "Authorization": "Basic Zmw6MDM5MA==",
  "User-Agent": "FLB-ROOT-Webhook/e6f89ff"
}

送信ペイロード

  • resourceに更新されたリソースの種類が設定されます
  • eventsイベントの種類が設定されます
  • dataに更新されたリソースの詳細情報が設定されます

Payload

{
  "resource": "contents",
  "events": [
    "meta_updated",
    "image_updated",
    "file_updated"
  ],
  "data": [
    {
      "id": "fe74a103-73f7-4ac0-bd4f-0a183c686fc3",
      "owner_id": "c97835a9-0565-41a1-b8a8-e6943128e1e5"
    }
  ]
}
{
  "resource": "contents",
  "events": [
    "deleted"
  ],
  "data": [
    {
      "id": "fe74a103-73f7-4ac0-bd4f-0a183c686fc3",
      "owner_id": "c97835a9-0565-41a1-b8a8-e6943128e1e5"
    }
  ]
}

レスポンス形式

ステータスコード200を返してください

注意事項

ファイルと画像のアップロード期限

upload_urlが失効すると、ファイル、画像はアップロードされなかったこととしてWebhookが送信されます。

Timeout

Webhookを送信後レスポンスが10秒以内に返ってこない場合、Timeoutとなります。
処理が長くなる場合は、レスポンスを返却後、バックグラウンドで処理することを推奨します。