> For the complete documentation index, see [llms.txt](https://bittu-1.gitbook.io/meshkit-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bittu-1.gitbook.io/meshkit-documentation/ipfs_integration.md).

# IPFS Save & Retrieve Integration

This document outlines the architecture, setup, and operations for decentralized backup and retrieval using Pinata IPFS.

## Architecture Overview

All application operations are offline-first and client-side. The IPFS integration connects directly to the Pinata Pinning API and public/custom IPFS Gateways from the client environment.

```
+------------------+       Pin JSON       +-------------+
|   Invoice App    | -------------------> | Pinata API  | -> Pinned to IPFS
| (Capacitor/Vite) |                      +-------------+
|                  |       GET CID        +-------------+
|                  | <------------------- | IPFS Gateway|
+------------------+                      +-------------+
```

## Configuration

Users must configure their own credentials on the **Settings** page:

1. **Pinata JWT Token** (Recommended): A single access token providing direct write access to the user's Pinata account.
2. **Pinata API Key + API Secret** (Legacy option): Standard credentials.
3. **IPFS Gateway URL**: Used to retrieve JSON objects by CID. Default: `https://gateway.pinata.cloud/ipfs/`.

## User Operations

### 1. Saving to IPFS

* **Editor**: Select **More Actions** -> **Save to IPFS**.
  * The app saves the invoice locally first to compile updated spreadsheet content and metadata.
  * The JSON object is sent to the Pinata pinning API.
  * On success, the CID is displayed and automatically copied to the clipboard.
* **File Manager**: Click the green **Pin to IPFS** icon on the invoice row.

### 2. Retrieving from IPFS

* **File Manager**: Click **Import IPFS**.
  * Input the invoice CID.
  * The app fetches the content from the configured Gateway.
  * Validates the structure and saves it to the local app database (automatically renaming if a collision is detected).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://bittu-1.gitbook.io/meshkit-documentation/ipfs_integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
