Skip to content

Latest commit

Β 

History

History
882 lines (736 loc) Β· 53.2 KB

IMPLEMENTATION_STATUS.md

File metadata and controls

882 lines (736 loc) Β· 53.2 KB

IPFS Implementation Status

Legend: 🍏 Done Β  πŸ‹ In Progress Β  πŸ… Missing Β  🌰 Not planned

Table of Contents

API

Bitswap

CLI

Command Go Impl JS Impl
ipfs ledger 🍏 πŸ‹
peer 🍏 πŸ‹
ipfs reprovide 🍏 πŸ…
ipfs bitswap stat 🍏 🍏
ipfs bitswap unwant 🍏 🍏
key 🍏 🍏
ipfs bitswap wantlist 🍏 🍏
peer 🍏 🍏

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/bitswap/ledger 🍏 πŸ‹
arg= 🍏 πŸ‹
GET /api/v0/bitswap/reprovide 🍏 πŸ…
GET /api/v0/bitswap/stat 🍏 🍏
GET /api/v0/bitswap/unwant 🍏 🍏
arg= 🍏 🍏
GET /api/v0/bitswap/wantlist 🍏 🍏
peer= 🍏 🍏

Core

See interface-ipfs-core.


Block ipfs block

CLI

Command Go Impl JS Impl
ipfs block get 🍏 🍏
key 🍏 🍏
ipfs block put 🍏 🍏
data 🍏 🍏
format 🍏 🍏
mhtype 🍏 🍏
mhlen 🍏 🍏
ipfs block rm 🍏 πŸ‹
hash 🍏 πŸ‹
force 🍏 πŸ‹
ipfs block stat 🍏 🍏
key 🍏 🍏

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/block/get 🍏 🍏
arg= 🍏 🍏
POST /api/v0/block/put 🍏 🍏
arg= 🍏 🍏
format= 🍏 🍏
mhtype= 🍏 🍏
mhlen= 🍏 🍏
GET /api/v0/block/rm 🍏 πŸ‹
arg= 🍏 πŸ‹
force= 🍏 πŸ‹
GET /api/v0/block/stat 🍏 🍏
arg= 🍏 🍏

Core

See interface-ipfs-core.


Bootstrap

CLI

Command Go Impl JS Impl
ipfs bootstrap add 🍏 🍏
arg= 🍏 🍏
default= 🍏 🍏
ipfs bootstrap list 🍏 🍏
ipfs bootstrap rm 🍏 🍏
arg= 🍏 🍏
all= 🍏 🍏

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/bootstrap/add 🍏 🍏
arg= 🍏 🍏
default= 🍏 🍏
GET /api/v0/bootstrap/add/default 🍏 πŸ…
GET /api/v0/bootstrap/list 🍏 🍏
GET /api/v0/bootstrap/rm 🍏 🍏
arg= 🍏 🍏
all= 🍏 🍏
GET /api/v0/bootstrap/rm/all 🍏 πŸ…

Core

See interface-ipfs-core.


Config

CLI

Command Go Impl JS Impl
ipfs config edit 🍏 🌰
ipfs config 🍏 🌰
key 🍏 🍏
value 🍏 🍏
bool= 🍏 🍏
json= 🍏 🍏
ipfs config replace 🍏 🍏
file 🍏 🍏
ipfs config show 🍏 🍏
ipfs log level 🍏 🌰
subsystem 🍏 🌰
level 🍏 🌰
ipfs log ls 🍏 🌰
ipfs log tail 🍏 🌰

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/config/edit 🍏 🌰
POST /api/v0/config 🍏 🌰
arg1= 🍏 🍏
arg2= 🍏 🍏
bool= 🍏 🍏
json= 🍏 🍏
POST /api/v0/config/replace 🍏 🍏
arg= 🍏 🍏
GET /api/v0/config/show 🍏 🍏
POST /api/v0/log/level 🍏 🌰
arg1= 🍏 🌰
arg2= 🍏 🌰
GET /api/v0/log/ls 🍏 🌰
GET /api/v0/log/tail 🍏 🌰

Core

See interface-ipfs-core.


DAG

Blocked until the following are resolved:

CLI

HTTP

Core

See interface-ipfs-core.


Stats and Diagnostics

CLI

Command Go Impl JS Impl
ipfs stats bitswap 🍏 πŸ…
ipfs stats bw 🍏 πŸ…
peer 🍏 πŸ…
proto 🍏 πŸ…
poll 🍏 πŸ…
interval 🍏 πŸ…
ipfs stats repo 🍏 πŸ…
ipfs diag cmds 🍏 🌰
ipfs diag cmds clear 🍏 🌰
ipfs diag cmds set-time 🍏 🌰
time 🍏 🌰
ipfs diag sys 🍏 🌰

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/stats/bitswap 🍏 πŸ…
POST /api/v0/stats/bw 🍏 πŸ…
peer= 🍏 πŸ…
proto= 🍏 πŸ…
poll= 🍏 πŸ…
interval= 🍏 πŸ…
GET /api/v0/stats/repo 🍏 πŸ…
GET /api/v0/diag/cmds 🍏 🌰
GET /api/v0/diag/cmds/clear 🍏 🌰
GET /api/v0/diag/cmds/set-time 🍏 🌰
arg= 🍏 🌰
GET /api/v0/net 🍏 🌰
vis 🍏 🌰
GET /api/v0/sys 🍏 🌰

Core

See interface-ipfs-core.


DHT

Note: This is blocked by core implementation of DHT itself. Follow ipfs/js-ipfs#856

CLI

Command Go Impl JS Impl
ipfs dht findpeer 🍏 πŸ…
peer ID 🍏 πŸ…
verbose= 🍏 πŸ…
ipfs dht findprovs 🍏 πŸ…
key 🍏 πŸ…
verbose= 🍏 πŸ…
num-providers= 🍏 πŸ…
ipfs dht get 🍏 πŸ…
key 🍏 πŸ…
verbose= 🍏 πŸ…
ipfs dht provide 🍏 πŸ…
key 🍏 πŸ…
verbose= 🍏 πŸ…
recursive= 🍏 πŸ…
ipfs dht put 🍏 πŸ…
key 🍏 πŸ…
value 🍏 πŸ…
verbose= 🍏 πŸ…
ipfs dht query 🍏 πŸ…
peer ID 🍏 πŸ…
verbose= 🍏 πŸ…

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/dht/findpeer 🍏 πŸ…
arg= 🍏 πŸ…
verbose= 🍏 πŸ…
GET /api/v0/dht/findprovs 🍏 πŸ…
arg= 🍏 πŸ…
verbose= 🍏 πŸ…
num-providers= 🍏 πŸ…
GET /api/v0/dht/get 🍏 πŸ…
arg= 🍏 πŸ…
verbose= 🍏 πŸ…
GET /api/v0/dht/provide 🍏 πŸ…
arg= 🍏 πŸ…
verbose= 🍏 πŸ…
recursive= 🍏 πŸ…
GET /api/v0/dht/put 🍏 πŸ…
arg1= 🍏 πŸ…
arg2= 🍏 πŸ…
verbose= 🍏 πŸ…
GET /api/v0/dht/query 🍏 πŸ…
arg= 🍏 πŸ…
verbose= 🍏 πŸ…

Core

See interface-ipfs-core.


Files

CLI

Command Go Impl JS Impl
ipfs add 🍏 πŸ‹
file 🍏 🍏
recursive 🍏 🍏
quiet 🍏 🍏
quieter 🍏 🍏
silent 🍏 🍏
progress 🍏 🍏
trickle 🍏 🍏
only-hash 🍏 🍏
wrap-with-directory 🍏 🍏
hidden 🍏 πŸ…
chunker 🍏 πŸ…
pin 🍏 πŸ‹
raw-leaves 🍏 πŸ…
nocopy 🍏 πŸ…
fscache 🍏 πŸ…
cid-version 🍏 πŸ…
hash 🍏 πŸ…
ipfs cat 🍏 🍏
arg 🍏 🍏
ipfs ls 🍏 πŸ‹
arg 🍏 πŸ‹
headers 🍏 πŸ‹
resolve-type 🍏 πŸ‹
ipfs file ls 🍏 🌰
path 🍏 🌰
ipfs files cp 🍏 πŸ…
src 🍏 πŸ…
dst 🍏 πŸ…
flush 🍏 πŸ…
ipfs files flush 🍏 πŸ…
path 🍏 πŸ…
ipfs files ls 🍏 πŸ…
path 🍏 πŸ…
level 🍏 πŸ…
flush 🍏 πŸ…
ipfs files mkdir 🍏 πŸ…
path 🍏 πŸ…
parents 🍏 πŸ…
flush 🍏 πŸ…
ipfs files mv 🍏 πŸ…
src 🍏 πŸ…
dst 🍏 πŸ…
flush 🍏 πŸ…
ipfs files read 🍏 πŸ…
path 🍏 πŸ…
offset 🍏 πŸ…
count 🍏 πŸ…
flush 🍏 πŸ…
ipfs files rm 🍏 πŸ…
path 🍏 πŸ…
recursive 🍏 πŸ…
flush 🍏 πŸ…
ipfs files stat 🍏 πŸ…
path 🍏 πŸ…
flush 🍏 πŸ…
ipfs files write 🍏 πŸ…
path 🍏 πŸ…
data 🍏 πŸ…
offset 🍏 πŸ…
create 🍏 πŸ…
truncate 🍏 πŸ…
count 🍏 πŸ…
flush 🍏 πŸ…
ipfs get 🍏 🍏
path 🍏 🍏
archive 🍏 πŸ…
compress 🍏 πŸ…
compression-level 🍏 πŸ…

HTTP

Endpoint Go Impl JS Impl
POST /api/v0/add 🍏 πŸ‹
arg= 🍏 🍏
recursive= 🍏 🍏
quiet= 🍏 πŸ…
quieter= 🍏 πŸ…
silent= 🍏 πŸ…
progress= 🍏 🍏
trickle= 🍏 🍏
only-hash= 🍏 🍏
wrap-with-directory 🍏 🍏
hidden 🍏 πŸ…
chunker 🍏 πŸ…
pin 🍏 πŸ‹
raw-leaves 🍏 πŸ…
nocopy 🍏 πŸ…
fscache 🍏 πŸ…
cid-version 🍏 πŸ…
hash 🍏 πŸ…
GET /api/v0/cat 🍏 🍏
arg= 🍏 🍏
GET /api/v0/ls 🍏 πŸ‹
arg= 🍏 πŸ‹
headers= 🍏 πŸ‹
resolve-type= 🍏 πŸ‹
GET /api/v0/file/ls 🍏 🌰
arg= 🍏 🌰
GET /api/v0/files/cp 🍏 πŸ…
arg= 🍏 πŸ…
arg2= 🍏 πŸ…
flush=,f= 🍏 πŸ…
GET /api/v0/files/flush 🍏 πŸ…
arg= 🍏 πŸ…
GET /api/v0/files/ls 🍏 πŸ…
arg= 🍏 πŸ…
l= 🍏 πŸ…
flush=,f= 🍏 πŸ…
GET /api/v0/files/mkdir 🍏 πŸ…
arg= 🍏 πŸ…
parents=,p= 🍏 πŸ…
flush=,f= 🍏 πŸ…
GET /api/v0/files/mv 🍏 πŸ…
arg= 🍏 πŸ…
arg2= 🍏 πŸ…
flush=,f= 🍏 πŸ…
GET /api/v0/files/read 🍏 πŸ…
arg= 🍏 πŸ…
offset=,o= 🍏 πŸ…
count=,n= 🍏 πŸ…
flush=,f= 🍏 πŸ…
POST /api/v0/files/rm 🍏 πŸ…
arg= 🍏 πŸ…
recursive=,r= 🍏 πŸ…
flush=,f= 🍏 πŸ…
GET /api/v0/files/stat 🍏 πŸ…
arg= 🍏 πŸ…
flush=,f= 🍏 πŸ…
POST /api/v0/files/write 🍏 πŸ…
arg= 🍏 πŸ…
arg2= 🍏 πŸ…
offset=,o= 🍏 πŸ…
create=,e= 🍏 πŸ…
truncate=,t= 🍏 πŸ…
count=,n= 🍏 πŸ…
flush=,f= 🍏 πŸ…
POST /api/v0/get 🍏 🍏
arg= 🍏 🍏
archive= 🍏 πŸ…
compress= 🍏 πŸ…
compression-level=-1 🍏 πŸ…
compression-level=0 🍏 πŸ…
compression-level=1 🍏 πŸ…
compression-level=2 🍏 πŸ…
compression-level=3 🍏 πŸ…
compression-level=4 🍏 πŸ…
compression-level=5 🍏 πŸ…
compression-level=6 🍏 πŸ…
compression-level=7 🍏 πŸ…
compression-level=8 🍏 πŸ…
compression-level=9 🍏 πŸ…

Core

See interface-ipfs-core.


File Store (IPFS Pack)

Note: Implementation in js-ipfs is not planned for now.

CLI

HTTP

Core

See interface-ipfs-core.


Key Management

CLI

Command Go Impl JS Impl
ipfs key gen 🍏 🌰
name 🍏 🌰
type= 🍏 🌰
size= 🍏 🌰
ipfs key list 🍏 🌰
l= 🍏 🌰
ipfs key rename 🍏 🌰
name 🍏 🌰
newName 🍏 🌰
force= 🍏 🌰
ipfs key rm 🍏 🌰
name 🍏 🌰
l= 🍏 🌰

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/key/gen 🍏 🌰
arg= 🍏 🌰
type= 🍏 🌰
size= 🍏 🌰
GET /api/v0/key/list 🍏 🌰
l= 🍏 🌰
GET /api/v0/key/rename 🍏 🌰
arg= 🍏 🌰
arg= 🍏 🌰
force= 🍏 🌰
GET /api/v0/key/rm 🍏 🌰
arg= 🍏 🌰
l= 🍏 🌰

Core

See interface-ipfs-core.


Miscellaneous

CLI

Command Go Impl JS Impl
ipfs ping 🍏 πŸ‹
peer ID 🍏 πŸ…
count 🍏 πŸ…
ipfs update 🌰 🌰
ipfs version 🍏 🍏
ipfs commands 🍏 🍏
ipfs id 🍏 🍏
peerid 🍏 πŸ…
aver 🍏 πŸ…
pver 🍏 πŸ…
pubkey 🍏 πŸ…
addrs 🍏 πŸ…
ipfs mount 🍏 🌰
ipfs-path= 🍏 🌰
ipns-path= 🍏 🌰
ipfs mount 🍏 🌰

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/ping 🍏 πŸ‹
arg= 🍏 πŸ…
count= 🍏 πŸ…
GET /api/v0/update 🌰 🌰
GET /api/v0/version 🍏 🍏
GET /api/v0/commands 🍏 🍏
POST /api/v0/id 🍏 🍏
arg= 🍏 🍏
GET /api/v0/mount 🍏 🌰
ipfs-path= 🍏 🌰
ipns-path= 🍏 🌰
GET /api/v0/mount 🍏 🌰

Core

See interface-ipfs-core.


Naming

Note: Implementation in js-ipfs is blocked until DHT is finished.

CLI

Command Go Impl JS Impl
ipfs name publish 🍏 πŸ…
ipfs-path 🍏 πŸ…
resolve= 🍏 πŸ…
lifetime= 🍏 πŸ…
ttl= 🍏 πŸ…
key= 🍏 πŸ…
ipfs name resolve 🍏 πŸ…
name 🍏 πŸ…
recursive= 🍏 πŸ…
nocache= 🍏 πŸ…
ipfs resolve 🍏 πŸ…
name 🍏 πŸ…
recursive= 🍏 πŸ…
ipfs dns 🍏 πŸ…
domain 🍏 πŸ…
recursive= 🍏 πŸ…

HTTP

Endpoint Go Impl JS Impl
POST /api/v0/name/publish 🍏 πŸ…
arg= 🍏 πŸ…
resolve= 🍏 πŸ…
lifetime= 🍏 πŸ…
ttl= 🍏 πŸ…
key= 🍏 πŸ…
GET /api/v0/name/resolve 🍏 πŸ…
arg= 🍏 πŸ…
recursive= 🍏 πŸ…
nocache= 🍏 πŸ…
GET /api/v0/resolve 🍏 πŸ…
arg= 🍏 πŸ…
recursive= 🍏 πŸ…
GET /api/v0/dns 🍏 πŸ…
arg= 🍏 πŸ…
recursive= 🍏 πŸ…

Core

See interface-ipfs-core.


Object ipfs object

CLI

Endpoint Go Impl JS Impl
ipfs object data 🍏 🍏
key 🍏 🍏
ipfs object diff 🍏 πŸ…
key1 🍏 πŸ…
key2 🍏 πŸ…
ipfs object/get 🍏 🍏
key 🍏 🍏
encoding 🍏 🍏
GET /api/v0/object/links 🍏 🍏
key 🍏 🍏
GET /api/v0/object/new 🍏 🍏
template 🍏 🍏
GET /api/v0/object/patch/append-data 🍏 🍏
root 🍏 🍏
data 🍏 🍏
POST /api/v0/object/patch/add-link 🍏 🍏
root 🍏 🍏
name 🍏 🍏
ref 🍏 πŸ‹
create 🍏 πŸ…
POST /api/v0/object/patch/rm-link 🍏 🍏
root 🍏 🍏
link 🍏 🍏
POST /api/v0/object/patch/set-data 🍏 🍏
root 🍏 🍏
data 🍏 🍏
GET /api/v0/object/put 🍏 🍏
data 🍏 🍏
inputenc 🍏 🍏
datafieldenc 🍏 πŸ…
pin 🍏 πŸ…
GET /api/v0/object/stat 🍏 🍏
root 🍏 🍏

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/object/data 🍏 🍏
arg= 🍏 🍏
GET /api/v0/object/diff 🍏 πŸ…
arg1= 🍏 πŸ…
arg2= 🍏 πŸ…
POST /api/v0/object/get 🍏 🍏
arg= 🍏 🍏
encoding=json,enc=json 🍏 🍏
encoding=protobuf,enc=protobuf 🍏 🍏
encoding=xml,enc=xml 🍏 🍏
GET /api/v0/object/links 🍏 🍏
arg= 🍏 🍏
GET /api/v0/object/new 🍏 🍏
arg=unixfs-dir 🍏 🍏
GET /api/v0/object/patch/append-data 🍏 🍏
arg1= 🍏 🍏
arg2= 🍏 🍏
POST /api/v0/object/patch/add-link 🍏 🍏
arg1= 🍏 🍏
arg2= 🍏 🍏
arg3= 🍏 🍏
create= 🍏 🍏
POST /api/v0/object/patch/rm-link 🍏 🍏
arg1= 🍏 🍏
arg2= 🍏 🍏
POST /api/v0/object/patch/set-data 🍏 🍏
arg1= 🍏 🍏
arg2= 🍏 🍏
GET /api/v0/object/put 🍏 🍏
arg= 🍏 🍏
inputenc 🍏 🍏
GET /api/v0/object/stat 🍏 🍏
arg= 🍏 🍏

Core

See interface-ipfs-core.


p2p (libp2p exposed API)

This is blocked until there is a formalized interface-libp2p. Currently, js-ipfs exposes libp2p directly while go-ipfs exposes a subset of commands that use libp2p.

CLI

HTTP

Core

See interface-ipfs-core.


Pining

CLI

Command Go Impl JS Impl
ipfs pin add 🍏 πŸ‹
hash 🍏 πŸ‹
recursive 🍏 πŸ‹
progress 🍏 πŸ…
ipfs pin ls 🍏 πŸ‹
type 🍏 πŸ‹
quiet 🍏 πŸ‹
ipfs pin rm 🍏 πŸ‹
hash 🍏 πŸ‹
recursive 🍏 πŸ‹
ipfs pin update 🍏 πŸ…
hash 🍏 πŸ…
unpin 🍏 πŸ…
ipfs pin verify 🍏 πŸ…
verbose 🍏 πŸ…
ipfs refs 🍏 πŸ…
hash 🍏 πŸ…
format 🍏 πŸ…
edges 🍏 πŸ…
unique 🍏 πŸ…
recursive 🍏 πŸ…
ipfs refs local 🍏 πŸ…

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/pin/add 🍏 πŸ‹
arg= 🍏 πŸ‹
recursive= 🍏 πŸ‹
POST /api/v0/pin/ls 🍏 πŸ‹
type= 🍏 πŸ…
quiet= 🍏 πŸ…
GET /api/v0/pin/rm 🍏 πŸ…
arg= 🍏 πŸ…
recursive= 🍏 πŸ…
GET /api/v0/pin/update 🍏 πŸ…
arg= 🍏 πŸ…
unpin= 🍏 πŸ…
GET /api/v0/pin/verify 🍏 πŸ…
verbose= 🍏 πŸ…
GET /api/v0/refs 🍏 πŸ…
arg= 🍏 πŸ…
format= 🍏 πŸ…
edges= 🍏 πŸ…
unique= 🍏 πŸ…
recursive= 🍏 πŸ…
GET /api/v0//refs/local 🍏 πŸ…

Core

See interface-ipfs-core.


PubSub

CLI

Command Go Impl JS Impl
ipfs pubsub ls 🍏 🍏
ipfs pubsub peers 🍏 🍏
topic 🍏 🍏
ipfs pubsub pub 🍏 🍏
topic 🍏 🍏
data 🍏 🍏
ipfs pubsub sub 🍏 🍏
topic 🍏 🍏
discover 🍏 πŸ…

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/pubsub/ls 🍏 🍏
GET /api/v0/pubsub/peers 🍏 🍏
arg= 🍏 🍏
GET /api/v0/pubsub/pub 🍏 🍏
arg= 🍏 🍏
arg= 🍏 🍏
GET /api/v0/pubsub/sub 🍏 🍏
arg= 🍏 🍏
discover= 🍏 🍏

Core

See interface-ipfs-core.


Repo

CLI

Command Go Impl JS Impl
ipfs repo fsck 🍏 🌰
ipfs repo gc 🍏 πŸ…
ipfs repo stat 🍏 πŸ…
ipfs repo verify 🍏 🌰
ipfs repo version 🍏 🍏

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/repo/fsck 🍏 🌰
GET /api/v0/repo/gc 🍏 πŸ…
GET /api/v0/repo/stat 🍏 πŸ…
GET /api/v0/repo/verify 🍏 🌰
GET /api/v0/repo/version 🍏 🍏

Core

See interface-ipfs-core.


Swarm

CLI

Command Go Impl JS Impl
ipfs swarm addrs 🍏 🍏
ipfs swarm addrs listen 🍏 πŸ…
ipfs swarm addrs local 🍏 🍏
id= 🍏 πŸ…
ipfs swarm connect 🍏 🍏
arg= 🍏 🍏
ipfs swarm disconnect 🍏 🍏
arg= 🍏 🍏
ipfs swarm filters 🍏 πŸ…
ipfs swarm filters add 🍏 πŸ…
arg= 🍏 πŸ…
ipfs swarm filters rm 🍏 πŸ…
arg= 🍏 πŸ…
ipfs swarm peers 🍏 🍏
verbose= 🍏 πŸ…
latency= 🍏 πŸ…
streams= 🍏 πŸ…

HTTP

Endpoint Go Impl JS Impl
GET /api/v0/swarm/addrs 🍏 🍏
GET /api/v0/swarm/addrs/listen 🍏 πŸ…
GET /api/v0/swarm/addrs/local 🍏 🍏
id= 🍏 πŸ…
GET /api/v0/swarm/connect 🍏 🍏
arg= 🍏 🍏
GET /api/v0/swarm/disconnect 🍏 🍏
arg= 🍏 🍏
GET /api/v0/swarm/filters 🍏 πŸ…
GET /api/v0/swarm/filters/add 🍏 πŸ…
arg= 🍏 πŸ…
GET /api/v0/swarm/filters/rm 🍏 πŸ…
arg= 🍏 πŸ…
GET /api/v0/swarm/peers 🍏 🍏
verbose= 🍏 πŸ…
latency= 🍏 πŸ…
streams= 🍏 πŸ…

Core

See interface-ipfs-core.