Offline Sign

API Endpoint

http://127.0.0.1:5001/api/v1/storage/upload/sign?

Input Parameters

Argument

Required?

Type

Description

Required?

session-id

Y

string

ID for the storage upload session.

Y

peer-id

N

string

Client that requires the offline signs

N

nonce-timestamp

Y

int64

Timestamp used for nonce. Must be within 1 hour of server time.

N

upload-session-signature

Y

string

Private key-signed string of “<upload-peer-id>:<file-hash>:<upload-nonce-timestamp>” for this delegated request.

N

session-status

Y

string

The “status” API session status that is received right before calling this API.

N

signed

N

string

The signed JSON string according to the unsigned response struct. This struct type is based on the session-status.

N

Usage

async sign(event, data) {
  let input  = {
    SessionId: this.state.added_session_id,
    SessionStatus: this.state.added_session_status,
    Hash: this.state.added_file_hash,
    Unsigned: data,
    TimeNonce: this.time,
    PrivKey: config.PrivKey,
    PeerID: config.PeerID
  }
  const signResponse = this.btfs.sign(input, {})
  try {
    for await (const response of signResponse) {
    }
  } catch (err) {
    console.error(err)
  }
}
// Usage:

sessionId, err := s.StorageUploadOffSign(hash, uts)


// Go Wrapper:

func (s *Shell) StorageUploadOffSign(hash string, uts string, options ...StorageUploadOpts) (string, error) {
	var out storageUploadResponse
	offlinePeerSessionSignature, err := NewSessionSignature(hash, utils.GetPeerId(), uts, false)
	if err != nil {
		return "", err
	}
	rb := s.Request("storage/upload/offline", hash, utils.GetPeerId(), uts, offlinePeerSessionSignature)
	for _, option := range options {
		_ = option(rb)
	}
	return out.ID, rb.Exec(context.Background(), &out)
}
curl -X POST "http://localhost:5001/api/v1/storage/upload?arg=QmdBX8seLx4TGHwr8Tu9L2QSByaJ9bbFUpxFvKAYyxCf7b&price=750000&storage-length=35"

Response

{
}