IPNS#

The Fleek Platform SDK helps you create mutable pointers to CIDs known as InterPlanetary Name System (IPNS) names. IPNS names can be thought of as links that can be updated over time, while retaining the verifiability of content addressing. In this case in particular, they are mostly used to represent IPFS files (through their hashes).

Methods#

Here is a list of the available methods for the Fleek Platform SDK IPFS Service:

Method              Description
-----------------------------------------------------------------------------------------------------------------
createRecord        Create an IPNS Record.
getRecord           Get an IPNS Record.
publishRecord       Publish an IPNS Record.
listRecords         List IPNS records.
deleteRecord        Delete an IPNS record.

CreateRecord#

The IPNS createRecord let’s a user create an IPNS Record.

Function Signature#

async (): Promise<IpnsRecord>

Parameters#

Not applicable.

Returns#

Returns a Promise which resolves to a IpnsRecord type, containing an id, name and the hash.

type IpnsRecord = {
  // The IPNS record ID on Fleek DB
  id: string;
  // The name of the IPNS record
  name: string;
  // The IPFS CID associated with the record
  hash: string;
};

Usage Example#

import { FleekSdk, PersonalAccessTokenService } from '@fleek-platform/sdk/node';

// The Fleek SDK should be authenticated
// with a valid Project ID
const accessTokenService = new PersonalAccessTokenService({
  personalAccessToken: '<PAT>',
  projectId: '<PROJECT-ID>',
});

const fleekSdk = new FleekSdk({
  accessTokenService,
});

const record = await fleekSdk.ipns().createRecord();

GetRecord#

The getRecord method allows you to get an IPNS record.

Function Signature#

async ({ name }: GetRecordArgs): Promise<IpnsRecord>

Parameters#

type GetRecordArgs = {
  name: string;
};

Returns#

Returns a Promise which resolves to a IpnsRecord type, containing an id, name and the hash.

type IpnsRecord = {
  // The IPNS record ID on Fleek DB
  id: string;
  // The name of the IPNS record
  name: string;
  // The IPFS CID associated with the record
  hash: string;
};

Usage Example#

import { FleekSdk, PersonalAccessTokenService } from '@fleek-platform/sdk/node';

// The Fleek SDK should be authenticated
// with a valid Project ID
const accessTokenService = new PersonalAccessTokenService({
  personalAccessToken: '<PAT>',
  projectId: '<PROJECT-ID>',
});

const fleekSdk = new FleekSdk({
  accessTokenService,
});

const record = await fleekSdk.ipns().getRecord({
  name: record.name,
});

PublishRecord#

To publish an IPNS record, you need to provide the IPNS record name and the IPFS hash you want to associate with it. Initially, all records are created with an empty IPFS hash. To add it, you will need to publish it.

Function Signature#

async ({ hash, id }: PublishRecordArgs): Promise<IpnsRecord>

Parameters#

type PublishRecordArgs = {
  id: string;
  hash: string;
};

Returns#

Returns a Promise which resolves to a IpnsRecord type, containing an id, name and the hash.

type IpnsRecord = {
  // The IPNS record ID on Fleek DB
  id: string;
  // The name of the IPNS record
  name: string;
  // The IPFS CID associated with the record
  hash: string;
};

Usage Example#

import { FleekSdk, PersonalAccessTokenService } from '@fleek-platform/sdk/node';

// The Fleek SDK should be authenticated
// with a valid Project ID
const accessTokenService = new PersonalAccessTokenService({
  personalAccessToken: '<PAT>',
  projectId: '<PROJECT-ID>',
});

const fleekSdk = new FleekSdk({
  accessTokenService,
});

const record = await fleekSdk.ipns().publishRecord({
  id: record.id,
  hash,
});

ListRecords#

To list all the records associated with a project, use the listRecords method.

Function Signature#

async (): Promise<IpnsRecord[]>

Parameters#

Not applicable.

Returns#

Returns a Promise which resolves to a list of IpnsRecord type, containing an id, name and the hash.

type IpnsRecord = {
  // The IPNS record ID on Fleek DB
  id: string;
  // The name of the IPNS record
  name: string;
  // The IPFS CID associated with the record
  hash: string;
}[];

Usage Example#

// The Fleek SDK should be authenticated
// with a valid Project ID
const records = await fleekSdk.ipns().listRecords();

DeleteRecord#

To delete an IPNS record, use the deleteRecord method.

Function Signature#

async ({ id }: DeleteRecordArgs): Promise<IpnsRecord>

Parameters#

type DeleteRecordArgs = {
  id: string;
};

Returns#

Returns a Promise which resolves to a IpnsRecord type, containing an id, name and the hash.

type IpnsRecord = {
  // The IPNS record ID on Fleek DB
  id: string;
  // The name of the IPNS record
  name: string;
  // The IPFS CID associated with the record
  hash: string;
};

Usage Example#

import { FleekSdk, PersonalAccessTokenService } from '@fleek-platform/sdk/node';

// The Fleek SDK should be authenticated
// with a valid Project ID
const accessTokenService = new PersonalAccessTokenService({
  personalAccessToken: '<PAT>',
  projectId: '<PROJECT-ID>',
});

const fleekSdk = new FleekSdk({
  accessTokenService,
});

await sdk.ipns().deleteRecord({
  id: record.id,
});