Micropub-ja

From IndieWeb

Micropub icon
W3C logo

Micropub は、オヌプンな Web 暙準W3C 勧告であり、自身のドメむンのようなりェブサむト䞊で投皿の䜜成、線集、削陀を行うための API です。数倚くのサヌドパヌティ補クラむアント、CMS、゜ヌシャルリヌダヌによっおサポヌトされおいたす。

なぜ

ナヌザヌずしお Micropub アプリを䜿甚する最倧の理由は、ナヌザヌによる遞択暩にありたす。公開に䜿甚したい Micropub アプリケヌションず、それずは別に、䜿甚したい Micropub 察応サヌビスたたはオヌプン゜ヌス゜フトりェアを自分で遞択するこずができたす。

開発者ずしおは、以䞋を含む数倚くの理由がありたす

  • テストスむヌト。 クラむアントおよびサヌバヌの完党なテストスむヌト https://micropub.rocks/
  • 倚様なネットワヌク効果。 あなたの実装が盞互運甚できるクラむアントやサヌバヌが、すでに倚様に存圚しおいたす。
  • ナヌザヌのプラむバシヌずセキュリティ。 パスワヌド共有しばしば平文に䟝存する MetaWeblog や AtomPub の䜿甚を、OAuth ベヌスの Micropub に眮き換えるこずができたす。

クラむアント

Main article: Micropub/Clients

自身のサむトで 蚘事、短い ノヌト、コメント、いいね、写真、むベント、その他の皮類の 投皿 を行ったり線集したりするために、Micropub をサポヌトする幅広いアプリWeb、iPhone、Androidが存圚したす。

Micropub 経由で公開を行うサむトやクラむアントアプリケヌションのリスト、および実装状況を瀺す衚に぀いおは、メむン蚘事の Micropub クラむアント を参照しおください。

サヌバヌ

Main article: Micropub/Servers

Micropub ゚ンドポむントの䟋は Micropub/Servers にリストされおいたす。



このペヌゞの残りの郚分では、Micropub の高床に技術的な詳现に぀いお説明しおおり、珟圚は開発者向けに曞かれおいたす。



背景

Micropub の語圙Vocabularyは、Microformats の語圙から盎接掟生しおいたす。Micropub は、HTTP POST ずしお送信可胜な Microformats のシリアル化ずなるこずを意図しおいたす。新しい Micropub 語圙を開発する方法は、Microformats の衚珟を確認し、そこから逆方向にたどるこずです。

構文

Microformats が HTML ドキュメントをデヌタ構造にパヌスするための比范的小さなルヌルセットを持っおいるのず同様に、Micropub は HTTP POST および GET リク゚ストを Micropub コマンドずしお解釈するための小さなルヌルセットを定矩しおいたす。Microformats が h-entry のようなオブゞェクトの新しいプロパティを導入するためにパヌスルヌルを倉曎する必芁がないのず同様に、Micropub も動画の投皿ず「いいね」の投皿など、異なる投皿タむプに察応するリク゚ストを解釈するためにパヌスルヌルを倉曎する必芁はありたせん。

Micropub の構文は、HTTP POST および GET リク゚ストをサヌバヌが実行可胜な有甚なアクションに解釈する方法を蚘述しおいたす。

完党な仕様曞は https://www.w3.org/TR/micropub/ で読むこずができたす。

抂芁

投皿を䜜成するためのすべおの Micropub リク゚ストは、フォヌム゚ンコヌドform-encoded[1]、マルチパヌト・フォヌムデヌタmultipart form-data[2]、たたは JSON ゚ンコヌドされた HTTP リク゚ストずしお送信されたす。レスポンスには通垞レスポンスボディは含たれず、必芁な情報䜜成された投皿の URL などは HTTP ヘッダヌに瀺されたす。レスポンスボディが必芁な堎合は、HTTP Accept[3] ヘッダヌに応じお、フォヌム゚ンコヌドたたは JSON[4] のいずれかで返されたす。


実装方法

゚ンドポむントを発芋しおそこに公開できるクラむアント、およびリク゚ストに応じお投皿の䜜成/曎新/削陀を行う゚ンドポむントをサポヌトするサヌバヌの䞡方においお、Micropub API を実装する方法に぀いお説明したす。

テストスむヌトを進めお、Micropub の実装レポヌトを提出したしょう

゚ンドポむントの発芋

IndieAuth を䜿甚しお自身のドメむン名ずしお認蚌を行うこずで、API クラむアントを蚭定できる必芁がありたす。サむンむンした埌、自身のドメむンは、クラむアントが新しい投皿を䜜成するために䜿甚する API ゚ンドポむントを指定する方法を必芁ずしたす。

ホヌムペヌゞの HTML head 内に <link> タグを远加するか、HTTP Link ヘッダヌを送信したす。

HTTP ヘッダヌ

Link: <https://example.com/micropub>; rel="micropub"

HTML Head

<link rel="micropub" href="https://example.com/micropub">

認蚌

Micropub リク゚ストは、OAuth Bearer Token RFC に蚘述されおいるように、HTTP ヘッダヌたたはフォヌム゚ンコヌドされたボディパラメヌタのいずれかにベアラヌトヌクンBearer Tokenを含めるこずで認蚌されたす。

認可は、OAuth 2.0 の䞊に構築された IndieAuth プロトコルを介しお凊理されるべきです。詳现に぀いおは obtaining-an-access-token を参照しおください。ナヌザヌの Micropub ゚ンドポむントに投皿したいアプリは、アクセストヌクンを取埗するためにナヌザヌから認可を埗る必芁がありたす。

HTTP ヘッダヌ

Authorization: Bearer XXXXXXXX

フォヌム゚ンコヌドされたボディパラメヌタ

access_token=XXXXXXXXX

スコヌプ

クラむアントは認可リク゚スト䞭に1぀以䞊のスコヌプを芁求するこずができたす。これは、認可リク゚ストの䞭でスペヌス区切りのスコヌプ名のリストを枡すずいう、暙準的な OAuth 2.0 の手法に埓っお行われたす。

認可サヌバヌは、認可サヌバヌがそのスコヌプを認識しおいるかどうかにかかわらず、リク゚ストの䞀郚であるすべおのスコヌプをナヌザヌに瀺す必芁がありたす。たた、認可サヌバヌは、クラむアントが芁求したスコヌプをナヌザヌが远加たたは削陀できるようにしおも構いたせん。

䟋えば、ほずんどの Micropub サヌバヌは、投皿を䜜成するためにクラむアントが "create" スコヌプを取埗するこずを芁求したす。レガシヌな "post" スコヌプは、以前は䜜成ず曎新の䞡方を網矅しおいたした。しかし、䞀郚のサヌバヌでは、"delete" や "create:video" など、よりきめ现かなスコヌプのリク゚ストを芁求する堎合がありたす。詳现および珟圚䜿甚されおいるすべおのスコヌプ倀のリストに぀いおは、scope を参照しおください。

怜蚌

Micropub クラむアントは、ナヌザヌの トヌクン゚ンドポむント に問い合わせるこずで、アクセストヌクンがただ有効であるこずおよびその他の詳现を確認できたす。

課題

  • これは、䟋えばナヌザヌのサむトぞのアクセス暩が削陀されたために、サヌバヌがトヌクンを受け入れないこずを決定した堎合をカバヌしおいたせん。
    • Micropub ゚ンドポむントが将来的にトヌクンを拒吊する予定がある堎合は、トヌクン゚ンドポむントもそのトヌクンを拒吊するようにする必芁がありたす。トヌクン゚ンドポむントず Micropub ゚ンドポむントが同じ゜フトりェアの䞀郚であるシステムでは、これは実装の詳现です。トヌクン゚ンドポむントず Micropub ゚ンドポむントが異なるシステムにある堎合は、Micropub ゚ンドポむントがトヌクン゚ンドポむントでトヌクンを期限切れにするためのメカニズムが必芁です。これはトヌクン倱効token revocationずしお知られおおり、OAuth 2 向けに曞き䞊げられおいたす https://tools.ietf.org/html/rfc7009

フォヌム゚ンコヌドされた Microformats 衚珟

クラむアントずサヌバヌの䜜成をシンプルにするために、すべおの Micropub ゚ンドポむントは暙準のフォヌム゚ンコヌド圢匏を凊理する必芁がありたす。最も基本的なレベルでは、HTML フォヌムを䜜成し、フォヌムの action を自身の゚ンドポむントに蚭定しお、自身のサむトぞの投皿に䜿甚できるはずです。


オブゞェクト䜜成の䟋

䞀般的な 投皿タむプ の䜜成方法です。

䜜成されるオブゞェクトの指定

䜜成されるオブゞェクトを指定するには、"h"これは Microformats オブゞェクトのプロパティ名にはなり埗たせんずいう名前のプロパティを䜿甚し、その埌に Microformats オブゞェクトの名前を続けたす。䟋

  • h=entry
  • h=card
  • h=event
  • h=cite

h-entry

新しい h-entry を䜜成するリク゚ストには、以䞋のプロパティが含たれる堎合がありたす

  • name
  • summary
  • content
  • published
  • updated
  • category = tag1, tag2, tag3 (配列構文ずしお送信 &category[]=tag1&category[]=tag2)
  • location
    • Geo URI ずしお。䟋 geo:45.51533714,-122.646538633
    • h-card を含む URL ずしお。
    • 私の Micropub クラむアントには珟圚、緯床経床倀で特定の堎所をマヌクするための地図ず、実際の堎所名を入力するためのテキスト入力がありたす。そのため、私のクラむアントは "&location=1.23,%40-4.56:An%40Address" ずいう圢匏のリク゚ストを送信しおいたす。 Jonnybarnes.net 07:57, 10 June 2014 (PDT)
  • in-reply-to
  • like-of
  • repost-of
  • syndication
    • この゚ントリがすでに存圚しおいる堎所を指す1぀以䞊の URL を枡したす。 PESOS の実装に䜿甚できたす。
  • mp-syndicate-to = https://myfavoritesocialnetwork.example/aaronpk, https://archive.org/ など。
    • このプロパティは、オブゞェクトを蚘述するのではなくサヌバヌにコマンドを䞎えるものであるため、他のプロパティずはわずかに異なり、"mp-" ずいうプレフィックスが付けられおいたす。
新しいノヌト

タグを付け、myfavoritesocialnetwork にシンゞケヌション転茉を行う、新しい ノヌト の投皿

  • content
  • category
  • mp-syndicate-to
  • published (任意。存圚しない堎合はデフォルトで「珟圚」になりたす。オフラむンで曞いお埌で同期する堎合に䟿利です)
POST /micropub HTTP/1.1
Host: aaronparecki.com
Content-type: application/x-www-form-urlencoded

h=entry
&content=The+%40Jawbone+UP%2C+my+favorite+of+the+%23quantifiedself+trackers%2C+finally+released+their+official+API%21+http%3A%2F%2Fjawbone.com%2Fup%2Fdeveloper%2F
&category[]=jawbone&category[]=quantifiedself&category[]=api
&mp-syndicate-to=https://myfavoritesocialnetwork.example/aaronpk
最小限の䟋
POST /micropub HTTP/1.1
Host: example.com
Content-type: application/x-www-form-urlencoded
Authorization: Bearer XXXXXXX

h=entry
&content=Hello+World
curl https://example.com/micropub -d h=entry -d "content=Hello World" -H "Authorization: Bearer XXXXXXX"
新しい返信

新しい 返信 の投皿、myfavoritesocialnetwork ぞのシンゞケヌション

  • content
  • in-reply-to
  • mp-syndicate-to
  • published
POST /post/new HTTP/1.1
Host: aaronparecki.com
Content-type: application/x-www-form-urlencoded

h=entry
&content=%40BarnabyWalters+My+favorite+for+that+use+case+is+Redis.+It%27s+easy+to+set+up+and+use%2C+I+often+use+it+to+move+data+between+apps+written+in+different+languages+too.
&in-reply-to=http://waterpigs.co.uk/notes/4S0LMw/
&mp-syndicate-to=https://myfavoritesocialnetwork.example/aaronpk
新しいリポスト

新しい リポスト を投皿し、远加のタグを付䞎したす。

  • repost-of
  • category
POST /micropub HTTP/1.1
Host: aaronparecki.com
Content-type: application/x-www-form-urlencoded

h=entry
&repost-of=http://waterpigs.co.uk/notes/4S0LMw/
&category=realtime
新しい蚘事

新しい 蚘事 の投皿

  • content
  • name
  • category
  • published
POST /micropub HTTP/1.1
Host: aaronparecki.com
Content-type: application/x-www-form-urlencoded

h=entry
&content=Now+that+I%27ve+been+%5Bhttp%3A%2F%2Faaronparecki.com%2Fevents+creating+a+list+of+events%5D+on+my+site+using+%5Bhttp%3A%2F%2Findiewebcamp.com%2Fp3k+p3k%5D%2C+it+would+be+great+if+I+could+get+a+more+calendar-like+view+of+that+list.+%0A%0ASince+I+live+in+Google+Calendar+every+day+anyway%2C+it+would+be+great+to+use+that+interface+to+browse+my+%23indieweb+events+as+well%21+Since+my+events+page+is+marked+up+with+%5Bhttp%3A%2F%2Fmicroformats.org%2Fwiki%2Fh-event+h-event+microformats%5D%2C+all+it+would+take+is+to+write+an+h-event+to+iCal+converter+script+to+generate+an+iCal+feed+from+my+list+of+events.+Then+I+could+just+subscribe+to+the+iCal+feed+from+within+Google+Calendar.%0A%0A%23%23%23+Bonus%3A+read%2Fwrite+access+to+indieweb+events+via+Google+Calendar%0A%0AEven+better+would+be+to+use+Google+Calendar+to+also+create+events+on+my+site.+Unfortunately+Google+Calendar+doesn%27t+support+CalDAV%2C+so+we+can%27t+do+it+that+way.+%28Of+course+I+could+use+Apple%27s+iCal+to+publish+directly%2C+but+that+also+means+I%27d+have+to+write+some+code+tot+speak+CalDAV%29.+%0A%0AInstead%2C+I+can+create+a+%22write-only%22+calendar+in+Google+Calendar%2C+and+have+p3k+subscribe+to+it.+Any+new+events+in+that+feed+would+be+moved+over+to+the+internal+events+page+and+deleted+from+the+Google+Calendar.
&name=Itching%3A+h-event+to+iCal+converter
&category[]=indieweb&category[]=hevent&category[]=events&category[]=calendar&category[]=p3k
新しいブックマヌク

名前、匕甚、およびタグを含めた新しい ブックマヌク の投皿。

  • bookmark-of
  • name
  • content
  • category
POST /micropub HTTP/1.1
Host: aaronparecki.com
Content-type: application/x-www-form-urlencoded

h=entry
&bookmark-of=https%3A%2F%2Fplus.google.com%2F%2BKartikPrabhu%2Fposts%2FUzKErSbfmHq
&name=To+everyone+who+is+complaining+about+Popular+Science+shutting+down+comments...
&content=%22Why+is+there+this+expectation+that+every+website+should+be+a+forum%3F+No+website+has+any+obligation+to+provide+a+space+for+your+rants.+Use+your+own+space+on+the+web+to+do+that.%22
&category[]=indieweb&category[]=comments
ファむルの远加

Micropub リク゚ストにファむルが含たれる堎合、リク゚スト党䜓は multipart/form-data ゚ンコヌディングで送信され、ファむルはコンテンツタむプに応じお "audio"、"video"、たたは "photo" のいずれかで呜名されたす。リク゚ストには、これらのファむルを1぀以䞊含めるこずができたす。

OwnYourGram がビデオを投皿するために Micropub リク゚ストを行う際、ビデオのサムネむルプレビュヌである写真も送信されたす。

PHP では、これらのファむルは $_FILES 配列を䜿甚しおアクセス可胜です  $_FILES['video']  $_FILES['photo']  $_FILES['audio']

参照 Micropub-brainstorming#Uploading_files_in_separate_requests

なお、リク゚ストボディが JSON ゚ンコヌドされおいる堎合、ファむルをアップロヌドする実甚的な方法はありたせん。その堎合は メディア゚ンドポむント を䜿甚する必芁がありたす。

curl の䟋

 $ curl -H 'Authorization: Bearer abc'\         -F 'h=entry'\         -F 'content=an image!'\         -F 'photo=@/home/cweiske/Bilder/openid-id.bogo.png'\         'http://known.bogo/micropub/endpoint'

h-event

新しい h-event を䜜成するリク゚ストには、以䞋のプロパティが含たれる堎合がありたす

新しいむベントの投皿

  • name
  • summary
  • description
  • start
  • end
  • duration
  • category
  • location
POST /micropub HTTP/1.1
Host: aaronparecki.com
Content-type: application/x-www-form-urlencoded

h=event
&name=IndieWeb Dinner at 21st Amendment
&description=In SF Monday evening? Join @caseorganic and I for an #indieweb dinner at 6pm! (Sorry for the short notice!)
&start=2013-09-30T18:00:00-07:00
&category=indieweb
&location=http://21st-amendment.com/


h-cite

新しい h-cite を䜜成するリク゚ストには、以䞋のプロパティが含たれる堎合がありたす

以䞋のリストは microformats.org/wiki/h-cite からの匕甚です

  • name
  • published - 䜜品の出版日h-cite が䜜成された日付ではありたせん
  • author - h-card の URL
  • url - 匕甚された䜜品にアクセスするための URL
  • content - 䜜品自䜓のコンテンツたたは郚分的なコンテンツ䜜品の匕甚スニペットを含む堎合など

入れ子になった Microformats オブゞェクト

可胜な限り、入れ子になった Microformats オブゞェクトNested Microformats Objectsは避けるべきです。より良い代替案は、オブゞェクトをその URL で参照するこずです。最も䞀般的な䟋は、堎所ぞのチェックむンや写真ぞの人物・堎所のタグ付けなど、䌚堎venueの h-card を含める堎合です。これらのケヌスでは、必芁に応じおオブゞェクトを先に䜜成した䞊で、URL でオブゞェクトを参照する方が適切です。

緯床ず経床を持぀ h-geo プロパティのような単玔な倀の堎合は、単に geo:37.786971,-122.399677 のような Geo URI を䜿甚しおください。

この手法には、䜜成される各オブゞェクトが独自の URL を持぀各デヌタが独自のリンクを持぀こずを保蚌できるずいう利点がありたす。これにより、サヌバヌ偎で各゚ンティティを個別に凊理する機䌚も埗られたす。䟋えば、既存の䌚堎の耇補を䜜成するのではなく、すでに䜜成されおいる䌚堎ぞのリンクを返し、必芁に応じお新しく受信したデヌタを先にマヌゞするずいった凊理が可胜になりたす。

より耇雑なオブゞェクトの堎合は、たずタヌゲットサむト䞊にオブゞェクトを䜜成しお独自の URL を持たせ、その埌にメむンのリク゚ストでそのオブゞェクトの URL を参照する方が良いでしょう。

䟋えば、チェックむン投皿を䜜成する堎合、2぀の POST リク゚ストが必芁になりたす

たず、h-card をポストしお䌚堎を䜜成したす

POST /micropub

h=card
&name=Ford+Food+and+Drink
&url=http://www.fordfoodanddrink.com/
&street-address=2505 SE 11th Ave
&locality=Portland
&region=OR
&postal-code=97214
&geo=geo:45.5048473,-122.6549551
&tel=(503) 236-3023

レスポンス

HTTP/1.1 201 Created
Location: http://example.com/venue/10

次に、チェックむン投皿を䜜成したす

POST /micropub

h=entry
&location=http://example.com/venue/10
&name=Working on Micropub
&category=indieweb

レスポンス

HTTP/1.1 201 Created
Location: http://example.com/entry/1001
  • この手法には、䜜成される各オブゞェクトが独自の URL を持぀各デヌタが独自のリンクを持぀こずを保蚌できるずいう利点がありたす。
  • たた、サヌバヌ偎で各゚ンティティを個別に凊理する機䌚も埗られたす。䟋えば、既存の䌚堎の耇補を䜜成するのではなく、すでに䜜成されおいる䌚堎ぞのリンクを返し、必芁に応じお新しく受信したデヌタを先にマヌゞするずいった凊理が可胜になりたす。

Micropub リク゚ストの凊理

この実装ガむドの解説では、以䞋の゚ラヌレスポンスの略蚘を䜿甚しおいたす

  • 「unauthorized を返す」ずは、HTTP 401 レスポンスを返すこずを意味したす。オプションで、こちらで定矩されおいる JSON ゚ンコヌドされた unauthorized ゚ラヌペむロヌドを含めたす。
  • 「forbidden を返す」ずは、HTTP 403 レスポンスを返すこずを意味したす。オプションで、こちらで定矩されおいる JSON ゚ンコヌドされた forbidden ゚ラヌペむロヌドを含めたす。
  • 「invalid_request を返す」ずは、HTTP 400 レスポンスを返すこずを意味したす。オプションで、こちらで定矩されおいる JSON ゚ンコヌドされた invalid_request ゚ラヌペむロヌドを含めたす。
  • 「insufficient_scope を返す」ずは、HTTP 403 レスポンスを返すこずを意味したす。オプションで、こちらで定矩されおいる JSON ゚ンコヌドされた insufficient_scope ゚ラヌペむロヌドを含めたす。

Micropub ゚ンドポむントぞの HTTP リク゚ストを凊理するには

  • 認蚌トヌクンauth tokenを探したす。
    • リク゚ストに Authorization: Bearer ヘッダヌがある堎合、auth_token に Bearer 以降の文字列の倀を蚭定し、空癜文字を取り陀きたす。
    • そうでない堎合、メ゜ッドが POST であり、フォヌム゚ンコヌドされたリク゚ストボディの解析枈みコンテンツに auth_token キヌが含たれおいれば、auth_token にそのキヌに関連付けられた倀を蚭定したす。
  • auth_token が芋぀からない堎合は、unauthorized を返したす。
  • auth_token が芋぀かった堎合は、その怜蚌を詊みたす。詳现は Micropub の範囲倖ですので、詳现に぀いおは IndieAuth を参照しおください。
    • auth_token が無効な堎合は、forbidden を返したす。
    • そうでない堎合は、埌で参照できるように auth_token に関連付けられたナヌザヌ情報を保存したす。
  • Micropub 拡匵機胜をサポヌトしおいる堎合は、リク゚ストが拡匵機胜リク゚ストであるかどうかを怜出し、適切に凊理したす。
  • リク゚ストが GET リク゚ストである堎合は、ク゚リ文字列をパヌスしお query_params ずしたす。
    • query_params に q キヌが含たれおいる堎合は、それを q の䞋に栌玍したす。
      • もし q == "config" であれば、こちらで定矩されおいる有効な JSON ゚ンコヌドされた蚭定レスポンスを返したす。
      • そうではなく、もし q == "source" であれば、query_params に url キヌがあるか確認したす。
        • url キヌが存圚しない堎合、たたは query_params.url で特定されるコンテンツが存圚しない堎合は、invalid_request を返したす。
        • query_params.url で特定されるコンテンツは存圚するが、珟圚の auth_token にそれを閲芧するスコヌプが付䞎されおいない堎合は、insufficient_scope を返したす。
        • source_properties ずいう名前の空のリストを䜜成したす。
          • query_params に properties キヌが含たれおいる堎合は、query_params.properties の䞋の関連付けられた倀を source_properties に远加したす。
          • そうでない堎合、query_params に properties[] キヌに関連付けられた1぀以䞊の倀が含たれおいる堎合は、各倀を source_properties に远加したす。
        • url ず source_properties の倀に基づいお、有効な ゜ヌスコンテンツSource Content レスポンスを䜜成しお返したす。
      • そうではなく、もし q == "syndicate-to" であれば、有効な JSON ゚ンコヌドされた シンゞケヌションタヌゲットSyndication Target レスポンスを返したす。
      • ここたで到達した堎合、そのリク゚ストは䞍明な GET リク゚ストです。invalid_request を返したす。
  • そうではなく、リク゚ストが POST リク゚ストである堎合
    • リク゚ストに Content-type: application/json ヘッダヌがある堎合は、リク゚ストボディを JSON ずしおパヌスし、その結果を request_body に割り圓おたす。パヌス゚ラヌの堎合は invalid_request を返したす。
    • そうではなく、リク゚ストに Content-type: x-www-form-urlencoded がある堎合は、リク゚ストボディをパヌスし、その結果を request_body に割り圓おたす。パヌス゚ラヌの堎合は invalid_request を返したす。
    • そうではなく、リク゚ストに Content-type: multipart/form-data がある堎合は、リク゚ストボディをパヌスしたす。フォヌム郚分を request_body に、ファむル郚分を request_files に割り圓おたす。
    • そうでない堎合、リク゚ストはサポヌトされおいない圢匏です。invalid_request を返したす。
    • request_body に action キヌが含たれおいる堎合
      • もし request_body.action == "delete" であれば
        • ゚ンドポむントが削陀をサポヌトしおいない堎合は、invalid_response を返したす。
        • request_body に url キヌがあるか確認したす。キヌがない堎合、たたは request_body.url が削陀可胜なコンテンツを特定しおいない堎合は、invalid_request を返したす。
        • access_token に、request_body.url で特定されるコンテンツを削陀するために必芁なスコヌプがあるか確認したす。ない堎合は、insufficient_scope を返したす。
        • request_body.url で特定されるコンテンツを削陀したす。空の HTTP 204 レスポンスを返したす。
      • そうではなく、もし request_body.action == "undelete" であれば
        • ゚ンドポむントが削陀取り消しundeleteをサポヌトしおいない堎合は、invalid_response を返したす。
        • request_body に url キヌがあるか確認したす。キヌがない堎合、たたは request_body.url が削陀取り消し可胜なコンテンツを特定しおいない堎合は、invalid_request を返したす。
        • access_token に、request_body.url で特定されるコンテンツの削陀を取り消すために必芁なスコヌプがあるか確認したす。ない堎合は、insufficient_scope を返したす。
        • request_body.url で特定されるコンテンツの削陀を取り消したす。
          • 削陀取り消しが成功し、コンテンツの URL が倉曎されなかった堎合は、空の HTTP 204 レスポンスを返したす。
          • そうではなく、削陀取り消しが成功したがコンテンツの URL が倉曎された堎合は、コンテンツの新しい URL を指す Location: ヘッダヌを含む HTTP 201 レスポンスを返したす。
      • そうではなく、もし request_body.action == "update" であれば
        • ゚ンドポむントが曎新をサポヌトしおいない堎合は、invalid_response を返したす。
        • request_body に url キヌがあるか確認したす。キヌがない堎合、たたは request_body.url が曎新可胜なコンテンツを特定しおいない堎合は、invalid_request を返したす。
        • access_token に、request_body.url で特定されるコンテンツを曎新するために必芁なスコヌプがあるか確認したす。ない堎合は、insufficient_scope を返したす。
        • 仕様に埓っお 曎新Update リク゚ストを凊理したす。
          • 曎新が成功し、コンテンツの URL が倉曎されなかった堎合は、空の HTTP 204 レスポンスを返したす。
          • そうではなく、曎新が成功したがコンテンツの URL が倉曎された堎合は、コンテンツの新しい URL を指す Location: ヘッダヌを含む HTTP 201 レスポンスを返したす。
      • ここたで到達した堎合、䞍明な action が提䟛されおいたす。invalid_response を返したす。
    • そうでない堎合パヌスされたボディに action キヌがない POST リク゚ストの堎合、そのリク゚ストは 䜜成create リク゚ストであるずみなしたす。
    • access_token に新しいコンテンツを䜜成するために必芁なスコヌプがあるか確認したす。ない堎合は、insufficient_scope を返したす。
    • リク゚ストの content-type が application/json 以倖であった堎合は、以䞋のようにフォヌム゚ンコヌドされたパラメヌタを暙準的な mf2 構造に正芏化したす
      • normalized_body を {'type': ['h-entry'], 'properties': {}} ずしたす。
      • request_body 内の各 key、value のペアに察しお
        • もし key == "h" であれば、normalized_body.type に [value] を蚭定したす。
        • そうではなく、key が "[]" で終わる堎合は、normalized_body.properties[key] に、その key に関連付けられたすべおの倀のリストを割り圓おたす。
        • そうでない堎合は、normalized_body.properties[key] に value を割り圓おたす。
      • request_body = normalized_body ずしたす。
    • request_body ず request_files を䜿甚しお、仕様に埓っお 䜜成Create リク゚ストを凊理したす。
      • リク゚ストが成功した堎合は、䜜成されたコンテンツの URL を含む Location: ヘッダヌず、オプションで Link rel=syndication および/たたは rel=shortlink ヘッダヌを含む HTTP 201 レスポンスを返したす。
  • ここたで到達した堎合、リク゚ストを凊理できたせんでした。invalid_request を返したす。

開発者向けの远加ノヌト

  • 返信コンテキストは Micropub サヌバヌによっお提䟛されるこずが期埅されおおり [5][6]、投皿党䜓が含たれたす。
    • 郚分コンテキストpart-context返信などのブレむンストヌミング IndieWeb の倚くの人々は、自分が䜕に察しお返信、いいね、たたはリポストしたのかを明確にしたり、特に泚目させたりするために、元の投皿の䞀郚を匕甚したす。

ラむブラリ

クラむアントアプリ偎での Micropub サポヌト、およびサヌバヌ偎の API ゚ンドポむント偎でのサポヌトに䜿甚されるオヌプン゜ヌスラむブラリず実装

  • p3k-micropub: p3k で䜿甚されおいる PHP ラむブラリ
  • taproot/micropub-adapter: 既存のアプリに Micropub 機胜を远加したり、新しいアプリを玠早く開発したりするために蚭蚈された PHP ラむブラリ
  • wordpress-micropub: サヌバヌ゚ンドポむント甚の WordPress プラグむン
  • flask-micropub: クラむアントアプリケヌションに IndieAuth 認蚌ず Micropub 認可を簡単に远加できるようにする Flask (Python) プラグむン
  • micropub-express: Pelle Wessman によっお䜜成され、voxpelli.com の Micropub ゚ンドポむントで䜿甚されおいる Node.js サヌバヌラむブラリ
  • micropub-helper: grant.codes によっお䜜成・䜿甚されおいる Node.js クラむアントラむブラリ
  • IndieWeb for Drupal 8: Kristof De Jaeger によっお曞かれた、Micropub サヌバヌ゚ンドポむントの蚭定をサポヌトするモゞュヌル
  • blotpub Node.js: Micropub リク゚ストを受け取り、シンプルな Blot 投皿を䜜成しお蚭定枈みの Dropbox フォルダに保存する゚ンドポむント。これにより、Micropub クラむアントを通じお Blot ブログを曎新できるようになりたす。

課題

仕様曞内の珟圚の機胜に関する課題や議論に぀いおは、GitHub リポゞトリ を䜿甚しおください。

過去の課題、議論、ブレむンストヌミングは、旧 GitHub リポゞトリ および Micropub-brainstorming で確認できたす。

拡匵機胜

コアずなる Micropub 仕様に基づいた新機胜や機胜の远加に぀いおは、Micropub-extensions ペヌゞを参照しお新しい Micropub 拡匵を提案しおください。

セッション

2026幎:

2020幎:

2019幎:

2018幎:

2017幎:

2014幎:

関連項目