Issue & Transfer

to issue or issue+transfer SRR

POST <base_url>/port/api/v1/commerce/srrs

Please replace <base_url> as explained here.

Precaution

Multiple issuance

Feel free to include more than one issuance in a single request via the payload array. The minimum number of issue requests is one. Though there is no fixed upper limit for the number of issue requests you can submit at one time, we recommend limiting batches to no more than 250 issue requests for optimal processing.

issue to issuer

If payload[*].to is not given, your SRR will be issued to your luw address

Headers

Name
Type
Description

commerce-api-key*

string

Commerce API Key

issuer-address*

string

Contract Address of API Key owner

Request Body

Name
Type
Description

requestId

string

A requestId given by the caller, to ensure requests are only processed once. If the requestId is known and processed before, api will not process this call again, and respond with an error. A good practice is using random UUID.

*requestId must be unique for a given issuer-address. As a result any duplicate combination of requestId and issuer-address is instantly rejected with no impact on either.

payload*

array

payload[*].externalId*

string

An ID to identify the record in your system. We recommend to use UUID, but it can use any string as long it is unique in your system.

payload[*].metadata*

object

The API accepts versions 2.0 and higher.

payload[*].artistAddress*

string

The ethereum address of the artist of the artwork.

payload[*].isPrimaryIssuer*

boolean

If you are the primary issuer of this NFT, set this to true.

payload[*].lockExternalTransfer*

boolean

If you want to prevent your NFTs to be transferred on decentralized marketplaces, set this to true.

payload[*].to

string

Ethereum address target the NFT should be sent to after minting (Issue on Buyer).

If none is given the NFT will be minted into your LUW by default.

payload[*].attachmentFiles

Array<object>

Attachment files that will be included in SRR.

payload[*].attachmentFiles[*].name

string

The name of file.

This is used for when the file is downloaded or shown. The extension is recommended to be the same as the actual uploaded file.

payload[*].attachmentFiles[*].category

string

Please note that contract terms and thumbnail are NOT attachment files. The URL for contract terms and thumbnail are needed for metadata. (See metadata attribute)

payload[*].attachmentFiles[*].url

string

payload[*].collectionAddress

string

The address of collection that the SRR will belong to. This collection must be owned by the caller issuer-address.

The API responds with 201. see Response Body results[*].status for details of each entry.

Body Attribute
Description
Format

results

results of the request

Array

results[*].srr

Detail of the SRR. Please check example for detailed information.

object

results[*].externalId

ID to identify the SRR. Defined by client when calling.

string

results[*].status

string

After a successful issuance, 2 types of JSONs will be returned in results[*].srr.metadata:

  1. json

    It is converted from the originalJson. The object contains some values that are different from those that are written on chain. This json is meant to be easier for consumption on third party applications and it is maintained for backward compatibility. For example if an ipfs link exists in the metadata, this json converts it to an https link for easier consumption.

  2. originalJson

    It is equal to what is written on chain. So if you want to consume this field, some carings are needed. For example it can contain ipfs links like ipfs:// that requires conversion before a browser can display it.

* both of the above JSONs may be different from what originally sent in the request payload.

Swagger Endpoint (Test Environment)

Swagger to test

Required Permissions

Check the parent page.

Request Body Example

{
  "requestId": "0004f572-7769-4b8b-8108-a13a36cd88d4",
  "payload": [
    {
      "externalId": "0004f572-7769-4b8b-8108-a13a36cd88d4",
      "metadata": {
        "$schema": "https://api.startrail.io/api/v1/schema/registry-record-metadata.v2.1.schema.json",
        "$schemaIntegrity": "sha256-15f8e99eb9d4292287282942db2f2de9bbcc4761c555c6f7da23feec010c1221",
        "title": {
          "en": "A title",
          "ja": "ใ‚ฟใ‚คใƒˆใƒซ",
          "zh": "ไธ€ไธชๆ ‡้ข˜"
        },
        "size": {
          "width": 200,
          "height": 400,
          "depth": 12.4,
          "unit": "pixel",
          "flexibleDescription": {
            "en": "flexibleDescription comes here",
            "ja": "่‡ช็”ฑใ ใƒผใƒผใƒผ"
          }
        },
        "medium": {
          "en": "Oil on canvas",
          "ja": "ใ‚ญใƒฃใƒณใƒใ‚นใซๆฒนๅฝฉ",
          "zh": "ๅธƒ้ขๆฒน็”ป"
        },
        "edition": {
          "uniqueness": "unique work",
          "proofType": "ED",
          "number": 1,
          "totalNumber": 3,
          "note": {
            "en": "some extra notes in 1 or more languages"
          }
        },
        "contractTerms": {
          "royaltyRate": 15.7,
          "fileURL": "https://startrail.io/whitepaper/startrail_wp_en_v1.1.pdf"
        },
        "note": {
          "en": "note",
          "zh": "ๆณจๆ„"
        },
        "thumbnailURL": "https://storage.googleapis.com/opensea-prod.appspot.com/puffs/3.png",
        "yearOfCreation": {
          "en": "around 2010-2020",
          "ja": "2010ๅนดใ‹ใ‚‰2020ๅนด้ ƒ"
        },
        "isDigital": true,
        "name": "some nft name",
        "description": "some nft description",
        "image": "https://storage.googleapis.com/opensea-prod.appspot.com/puffs/3.png",
        "external_url": "https://openseacreatures.io/3"
      },
      "artistAddress": "0x36E9f4C26357FDb14AdF939a12AdBba92a209C01",
      "isPrimaryIssuer": true,
      "lockExternalTransfer": false,
      "to": "0x36E9f4C26357FDb14AdF939a12AdBba92a209C01",
      "collectionAddress": "0xfbF4C1A1eb4258aE0F74807f6c1e854918DC8ed3",
      "attachmentFiles": [
        {
          "name": "image-example.jpg",
          "url": "https://static-files-stg.startrail.startbahn.jp/srr-images/image-example.jpg",
          "category": "artwork"
        },
        {
          "name": "certificate-example.jpg",
          "url": "https://static-files-stg.startrail.startbahn.jp/srr-images/certificate-example.jpg",
          "category": "certificate"
        },
        {
          "name": "for_authenticity.jpg",
          "url": "https://static-files-stg.startrail.startbahn.jp/srr-images/for_authenticity.jpg",
          "category": "for_authenticity"
        },
        {
          "name": "installation.jpg",
          "url": "https://static-files-stg.startrail.startbahn.jp/srr-images/installation.jpg",
          "category": "installation"
        }
      ]
    }
  ]
}

Code Example

Check parent page.

If you have a TAG for a physical artwork please add

chipUIDs and startbahnCertICTagUIDs both at the same time and they both need to contain the same value. The value is an array containing the list of the Chip UIDs. For example

"startbahnCertICTagUIDs": [
    "1234567890abcdef"
],
"chipUIDs": [
    "1234567890abcdef"
],

Last updated

ยฉ2023 Startbahn, Inc.