公開APIについて

当サイトの情報の一部をREST APIとして公開しています。注意をお読みの上 自由にお使いください。

機能リクエストなどあればGithubのissueまでお願いします。

共通

  • 日付や時刻のデータはすべてJavaScriptのDateクラスを使って生成しているため、UTC (協定世界時)での1970年1月1日0時0分0秒から経過時間をミリ秒数で数えた数です。
  • 全体的に入力のバリデーションやエラー時のレスポンスが雑なのはご愛嬌

GET /api/skill

スキルの一覧を取得するAPIです。
なお 現在絞り込みや並び替えには対応しておらず一覧のみ。あしからず...

リクエスト形式

なし

レスポンス形式

  • スキルオブジェクトの配列
  • スキルオブジェクトとは以下のような形式のオブジェクトです。
{
"icon": スキルの画像,
"name": スキルの名称,
"assessment": スキルに対する評価,
"assessmentMax": スキルに対する評価の最大値,
"interest": 現在TBStenがそのスキルに興味があるか,
"tags": スキルのタグ(android,webなど),
"learnStartYear": スキルを学習し始めた年
}

Zodのスキーマはこちら

  • 評価(assessment,assessmentMax)はTBStenの自己評価です。
リクエスト例
curlでのリクエスト例
$ curl https://tbsten.me/api/skill
JavaScriptでのリクエスト例
const skills = await fetch("https://tbsten.me/api/skill")
.then(r=>r.json())
レスポンス例
[
{
    "icon": "https://storage.googleapis.com/tbsten-me-public-content/android.png",
    "name": "Android",
    "assessment": 2,
    "assessmentMax": 4,
    "interest": true,
    "tags": ["android"],
    "learnStartYear": 2022
},
{
    "icon": "https://storage.googleapis.com/tbsten-me-public-content/jetpackcompose.png",
    "name": "Jetpack Compose",
    "assessment": 3,
    "assessmentMax": 4,
    "interest": true,
    "tags": ["android","mobile"],
    "learnStartYear": 2022
},
{
    "icon": "https://storage.googleapis.com/tbsten-me-public-content/kotlin.png",
    "name": "Kotlin",
    "assessment": 3,
    "assessmentMax": 4,
    "interest": true,
    "tags": ["android","language","jvm"],
    "learnStartYear": 2022
},
]

GET /api/monolog

TBStenの独り言を一覧で取得するAPIです。
なお 現在絞り込みには対応しておらず一覧のみ。あしからず...

リクエスト形式

クエリパラメータ

クエリ 説明
dir 並べ替え順を制御できます。 ascを指定すると公開時刻の昇順、descを指定すると公開時刻の降順に並び替えられます。デフォルトはdescです。

レスポンス形式

  • 独り言オブジェクトの配列
  • 独り言オブジェクトとは以下のようなオブジェクトです。
{
"slug": 独り言オブジェクトのID,
"content": 独り言のMarkdown (適宜zenn markdown htmlなどでパースしてください),
"publishAt": 公開時刻,
// 以下は内部で使用しているプロパティのため使用は非推奨です
"isPublished": 公開中か(このAPIでアクセスすると必ずtrueになります),
"createAt": 作成時刻,
"updateAt": 更新時刻,
"random": ランダム値(内部で使用しています),
}
  • 時刻については共通を参照してください
リクエスト例
curlでのリクエスト例1
curl https://tbsten.me/api/monolog
curlでのリクエスト例2
curl https://tbsten.me/api/monolog?dir=asc
JavaScriptでのリクエスト例
const monologs = await fetch("https://tbsten.me/api/monolog")
.then(r=>r.json())
レスポンス例
[
{
    "slug": "d271bce8-cbc9-4bf2-ac33-941e4c7c1aff",
    "content": "`apply` の型宣言すごいで\n\n```kotlin\ninline fun <T> T.apply(block: T.() -> Unit): T\n```\n\n> [applyのドキュメント](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/apply.html)",
    "publishAt": 1684286569643,
    "isPublished": true,
    "createAt": 1684240901027,
    "updateAt": 1684240901027,
    "random": 0.2077298804518286
},
{
    "slug": "996351dc-b028-493c-a306-3a29cc4c1dc3",
    "content": "jetpack composeの `dp` 、実は拡張プロパティ\n\n```kotlin\nval Int.dp: Dp\n```\n\n> [dpのドキュメント](https://developer.android.com/reference/kotlin/androidx/compose/ui/unit/package-summary#(kotlin.Int).dp())",
    "publishAt": 1684240904051,
    "isPublished": true,
    "createAt": 1684240249925,
    "updateAt": 1684240249925,
    "random": 0.9290079294630915
},
...
]

GET /api/monolog/[slug]

指定したslugの独り言を取得するAPIです。

リクエスト形式

クエリ 説明
slug 独り言のslugを指定してください。

レスポンス形式

  • 独り言オブジェクト
リクエスト例
curlでのリクエスト例1
curl https://tbsten.me/api/monolog/phrase-milabo-1
JavaScriptでのリクエスト例
const monolog = await fetch("https://tbsten.me/api/monolog/phrase-milabo-1")
.then(r=>r.json())
レスポンス例
{
"slug": "phrase-milabo-1",
"content": "変わってくから 私ねもっと\n\n> [ずっと真夜中でいいのに。](http://tbsten.me/likes#%E3%81%9A%E3%81%A3%E3%81%A8%E7%9C%9F%E5%A4%9C%E4%B8%AD%E3%81%A7%E3%81%84%E3%81%84%E3%81%AE%E3%81%AB%E3%80%82) 「MILABO」",
"createAt": 1683811233994,
"updateAt": 1683811233994,
"isPublished": true,
"publishAt": 1683828392624,
"random": 0.45503922617166825
}

GET /api/monolog/random

独り言をランダムで1つ選びます。
何も選ばれない(nullになる) こともあります。

リクエスト形式

なし

(将来的にnullを返さないように指定するパラメータを付与する予定)

レスポンス形式

リクエスト例
curlでのリクエスト例1
curl https://tbsten.me/api/monolog/random
JavaScriptでのリクエスト例
const monolog = await fetch("https://tbsten.me/api/monolog/random")
.then(r=>r.json())
レスポンス例
レスポンス例1
{
"slug": "phrase-milabo-1",
"content": "変わってくから 私ねもっと\n\n> [ずっと真夜中でいいのに。](http://tbsten.me/likes#%E3%81%9A%E3%81%A3%E3%81%A8%E7%9C%9F%E5%A4%9C%E4%B8%AD%E3%81%A7%E3%81%84%E3%81%84%E3%81%AE%E3%81%AB%E3%80%82) 「MILABO」",
"createAt": 1683811233994,
"updateAt": 1683811233994,
"isPublished": true,
"publishAt": 1683828392624,
"random": 0.45503922617166825
}
レスポンス例2
null

GET /api/work

作ったもので公開しているものを取得するAPIです。

リクエスト形式

なし

レスポンス形式

  • 作ったものオブジェクトの配列
  • 作ったものオブジェクトとは以下のような形式のオブジェクトです。
{
"title": タイトル,
"detail": 作ったものの説明,
"link": 作ったもののリンク,
"image": イメージ画像
}
リクエスト例
curlでのリクエスト例1
curl https://tbsten.me/api/work
JavaScriptでのリクエスト例
const monolog = await fetch("https://tbsten.me/api/work")
.then(r=>r.json())
レスポンス例
[
{
    "title": "ポートフォリオサイト",
    "detail": "謎にレトロゲーム風なポートフォリオサイトです。",
    "link": "https://tbsten.me",
    "image": "https://storage.googleapis.com/tbsten-me-public-content/portfolio.png"
},
{
    "title": "Flowchart Build Executor",
    "detail": "フローチャートを組み立てて実行するツールです!",
    "link": "https://fbe.vercel.app",
    "image": "https://storage.googleapis.com/tbsten-me-public-content/fbe.png"
},
{
    "title": "guess RGB",
    "detail": "表示された色のRGB値を当てるWebアプリです。",
    "link": "https://guess-rgb.vercel.app/",
    "image": "https://storage.googleapis.com/tbsten-me-public-content/guessRGB.png"
}
]

注意

サイト更新時などに予告なく仕様が変更される可能性もありますが、 その場合なるべく速く当ページにも仕様を記載するように努力します。

常識の範囲内でのリクエストをお願いします。 (クラウドハサンシタクナイヨ

なお以下に記載していない管理用APIも存在します(アクセスはできません)。