Skip to content

Commit

Permalink
wip: data onboarding
Browse files Browse the repository at this point in the history
  • Loading branch information
hacdias committed May 4, 2023
1 parent cce026c commit f7a0d6c
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/_includes/specs/http-gateways/http.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,9 @@
that allow light IPFS clients to retrieve data behind a CID and verify its integrity without delegating any
trust to the gateway itself.
</dd>
<dt><a href="/http-gateways/writable-gateway/">Writable Gateways</a></dt>
<dd>
Writable Gateways are a way of onboarding data into IPFS via the HTTP gateways. It exposes a POST endpoint
that supports multiple input types, then ingests the data into IPFS, returning its final location.
</dd>
</dl>
42 changes: 42 additions & 0 deletions src/http-gateways/writable-gateway.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
---
date: 2023-04-17
editors:
- name: Henrique Dias
github: hacdias
url: https://hacdias.com/
---

# Writable Gateway Specification

Writable Gateway is an extension of :cite[path-gateway], which allows data onboarding
to IPFS via HTTP endpoints. This allows for more interoperability with the remaining
of the web, and allows for more ways of adding data to IPFS.

# HTTP API

This API is a superset of the HTTP API of :cite[path-gateway]. The differences are
documented below. The main difference is the introduction of a `POST` endpoint.

## `POST /ipfs`

Onboards new data to the IPFS node behind the gateway. The onboarded data can be
of any of the following types and be specified via the `Content-Type` header:

- [`application/vnd.ipld.raw`] - adds raw [blocks] to the gateway. The data in
the request body is assumed to be pure blocks of data, with no specific structure.
- [`application/vnd.ipld.car`] - adds a [CAR] to the gateway. The data in the request
body is assumed to be a CAR file.
- [`application/x-tar`] - adds a [TAR] archive to the gateway. The data in the request
body is assumed to be a TAR archive containing a directory tree that will be added
as a UnixFS directory to IPFS.

In case of success, the request will return a `201 Created` status code, as
well as a `Content-Location` header containing the content path of the newly added
resource.

[`application/vnd.ipld.raw`]: https://www.iana.org/assignments/media-types/application/vnd.ipld.raw
[`application/vnd.ipld.car`]: https://www.iana.org/assignments/media-types/application/vnd.ipld.car
[`application/x-tar`]: https://en.wikipedia.org/wiki/Tar_(computing)
[blocks]: https://docs.ipfs.io/concepts/glossary/#block
[CAR]: https://docs.ipfs.io/concepts/glossary/#car
[TAR]: https://en.wikipedia.org/wiki/Tar_(computing)
53 changes: 53 additions & 0 deletions src/ipips/ipip-0401.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
date: 2023-04-17
ipip: draft
editors:
- name: Henrique Dias
github: hacdias
url: https://hacdias.com/
- name: Marcin Rataj
github: lidel
relatedIssues:
- https://github.com/ipfs/specs/issues/375
---

# IPIP-0401: Data Onboarding (POST) via Writable Gateways

## Summary

Create a new gateway extension, named Writable Gateway, that provides data
onboarding via the HTTP method `POST`.

## Motivation

The IPFS implementation Kubo has provided a non-standardized version of a writable
gateway for the past few years. This gateway has received little attention over the
years and there have been requests from users in order to get a

## Detailed design

## Test fixtures

## Design rationale

### User benefit

### Compatibility

This IPIP is backwards compatible: it adds a new opt-in functionality for the gateway,
not modifying any existing behaviours.

### Security

Introducing data onboarding via HTTP Gateways opens possibility for data creation
and modification through the gateway. It is likely that not all users will want to
have Writable Gateways enabled, or that they are available to everyone. Therefore,
we recommend that the implementer includes an Authentication method. This
authentication method can be application dependent and is therefore not specified.

### Alternatives


### Copyright

Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).

0 comments on commit f7a0d6c

Please sign in to comment.