NFT Farm API Documentation (1.2.0)

Introduction

NFT Farm은 고유 디지털 자산(이하 "NFT") 중앙화 거래 플랫폼입니다.
NFT Farm은 간편하게 앱 및 NFT를 등록할 수 있도록 HTTP API를 지원하며 이 문서에서는 API에 대한 명세와 사용방법을 제공합니다.
연동 관련 질문 및 오류사항은 develop@itam.games 로 문의 부탁드립니다.

Authentication

NFT Farm의 REST API는 JWT형식을 사용하여 인증합니다.
JWT의 Payload는 다음과 같습니다.

accessKey

  • 발급된 Access Key

params

  • 파라미터를 SHA512로 해시한 값을 base64로 인코딩한 값
  • 모든 파라미터(path, query, body)를 오름차순으로 정렬 후 querystring으로 변환시켜 해시

서명된 토큰은 HTTP Header의 Authorization 필드에 넣어서 요청합니다.
같은 요청을 여러 번 하더라도 Replay attack 대응을 위해 특정 시간 뒤 만료되므로 요청마다 서명하는 것을 권장합니다.

NFT 수정 요청을 하는 인증 생성 예제 코드입니다.

const jwt = require('jsonwebtoken');
const crypto = require('crypto');
const uuidv4 = require("uuid/v4");

const path = {
  nftId: '<NFT Id>'
};
const body = {
  activateExchange: true,
  nonce: uuidv4()
};

const parameters = {...path, ...body};
const sortedKeys = Object.keys(parameters).sort();
const querystring = sortedKeys.map(key => `${key}=${parameters[key]}`).join('&');
const hashedQuerystring = crypto.createHash('sha512').update(querystring).digest('base64');

const jwtPayload = {
  accessKey: '<Access Key>',
  params: hashedQuerystring
};

const token = jwt.sign(jwtPayload, '<Secret Key>');

// HTTP Header Authorization value
const result = `Bearer ${token}`;

App (Setup)

인앱 등록 신청

만드신 또는 만드실 서비스 입점 신청을 위한 단계입니다.
서비스에 대한 설명과 NFT가 서비스와 어떻게 접목되는지 정보를 등록해 주세요.

Request Body schema: application/json
name
string

앱 이름

description
string

앱에 대한 설명 (NFT와 서비스 접목에 대한 자세한 설명)

email
string

이메일

company
string

회사명

icon
string

앱 아이콘 URL

socials
Array of objects

소셜

Responses

204

Success

post/v1/apps

Main

https://api.nft.farm/v1/apps

Sandbox

https://api.sandbox.nft.farm/v1/apps

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "name": "string",
  • "description": "string",
  • "email": "string",
  • "company": "string",
  • "icon": "string",
  • "socials":
    [
    ]
}

인앱 정보 수정

NFT Farm 에 노출되는 앱 정보를 수정합니다.
변경 시 디지털 자산 번역정보 추가를 위해 점검 상태로 간주되어 NFT Farm 메뉴에서 사라지고 거래가 중단됩니다.

Request Body schema: application/json
icon
string

앱 아이콘 URL (NFT Farm 메뉴에서 사용됩니다)

defaultLanguage
string

앱 기본 언어
* ko - 한국어
* en - 영어
* ja - 일본어

translations
Array of objects

번역 정보

socials
Array of objects

소셜

Responses

204

OK

put/v1/apps

Main

https://api.nft.farm/v1/apps

Sandbox

https://api.sandbox.nft.farm/v1/apps

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "icon": "string",
  • "defaultLanguage": "string",
  • "translations":
    [
    ],
  • "socials":
    [
    ]
}

인앱 정보 조회

Responses

200

Success

get/v1/apps

Main

https://api.nft.farm/v1/apps

Sandbox

https://api.sandbox.nft.farm/v1/apps

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "icon": "string",
  • "defaultLanguage": "string",
  • "translations":
    [
    ],
  • "socials":
    [
    ]
}

NFT Pre-register (Setup)

카테고리 생성

NFT 카테고리를 생성하여 마켓에서 검색 편의성을 제공합니다.
카테고리 이름은 고유해야 하며 최대 50개까지 생성이 가능합니다.

Request Body schema: application/json
translations
Array of objects

번역 정보

Responses

201

OK

post/v1/digtial-assets/categories

Main

https://api.nft.farm/v1/digtial-assets/categories

Sandbox

https://api.sandbox.nft.farm/v1/digtial-assets/categories

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "translations":
    [
    ]
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": 0
}

카테고리 수정

NFT 카테고리를 수정합니다.

path Parameters
categoryId
required
string

카테고리 아이디

Request Body schema: application/json
translations
Array of objects

번역 정보

Responses

204

Success

patch/v1/digital-assets/categories/{categoryId}

Main

https://api.nft.farm/v1/digital-assets/categories/{categoryId}

Sandbox

https://api.sandbox.nft.farm/v1/digital-assets/categories/{categoryId}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "translations":
    [
    ]
}

카테고리 삭제

NFT 카테고리를 삭제합니다.
단, NFT가 발행된 카테고리는 삭제가 불가능합니다.

path Parameters
categoryId
required
string

카테고리 아이디

Responses

204

Success

delete/v1/digital-assets/categories/{categoryId}

Main

https://api.nft.farm/v1/digital-assets/categories/{categoryId}

Sandbox

https://api.sandbox.nft.farm/v1/digital-assets/categories/{categoryId}

카테고리 조회

생성한 NFT의 카테고리를 조회합니다.

Responses

200

OK

get/v1/digital-assets/categories

Main

https://api.nft.farm/v1/digital-assets/categories

Sandbox

https://api.sandbox.nft.farm/v1/digital-assets/categories

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

NFT 정보 등록

NFT 정보를 등록합니다.
동일한 이름의 NFT는 등록할 수 없습니다.

Request Body schema: application/json
categoryId
number

카테고리 아이디

image
string

디지털 자산 이미지 URL

translations
Array of objects

번역 정보

Responses

201

Success

post/v1/digital-assets

Main

https://api.nft.farm/v1/digital-assets

Sandbox

https://api.sandbox.nft.farm/v1/digital-assets

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "categoryId": 0,
  • "image": "string",
  • "translations":
    [
    ]
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": 0
}

NFT 정보 수정

NFT 정보를 수정합니다.
NFT가 발행된 기록이 있으면 이름, 정보, 이미지만 수정 가능합니다.

path Parameters
digitalAssetId
required
string

디지털 자산 아이디

Request Body schema: application/json
categoryId
number

카테고리 아이디

image
string

디지털 자산 이미지 URL

translations
Array of objects

번역 정보

Responses

204

Success

patch/v1/digital-assets/{digitalAssetId}

Main

https://api.nft.farm/v1/digital-assets/{digitalAssetId}

Sandbox

https://api.sandbox.nft.farm/v1/digital-assets/{digitalAssetId}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "categoryId": 0,
  • "image": "string",
  • "translations":
    [
    ]
}

NFT 정보 삭제

NFT 정보를 삭제합니다.
NFT가 발행된 기록이 있으면 삭제할 수 없습니다.

path Parameters
digitalAssetId
required
string

디지털 자산 아이디

Responses

204

Success

delete/v1/digital-assets/{digitalAssetId}

Main

https://api.nft.farm/v1/digital-assets/{digitalAssetId}

Sandbox

https://api.sandbox.nft.farm/v1/digital-assets/{digitalAssetId}

NFT 정보 조회

NFT 정보를 조회합니다.

query Parameters
offset
number
Default: 0

오프셋

limit
number
Default: 20

조회할 개수

Responses

200

Success

get/v1/digital-assets/{digitalAssetId}

Main

https://api.nft.farm/v1/digital-assets/{digitalAssetId}

Sandbox

https://api.sandbox.nft.farm/v1/digital-assets/{digitalAssetId}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "rows":
    [
    ],
  • "count": 0
}

In App

지원 준비 중입니다.

Account

인앱 서비스가 별도 플랫폼(구글, 애플, 별도 URL, Steam 등)의 회원가입 절차를 따를 경우 NFT Farm 회원과 연동을 진행해야 합니다. NFT Farm 에서는 유저의 블록체인 지갑을 별도 개발 없이 서비스에게 제공함으로써 개발의 편리함을 제공합니다.
각 인앱마다 회원을 별도 관리하며 NFT Farm 회원가입 또는 기존 유저의 인앱 연동은 별도로 진행합니다.

지갑 생성 (유저 등록)

인앱 서비스에 신규 유저가 가입 시 서비스 유저를 NFT Farm에 등록하여 지갑을 생성합니다.
지갑을 생성하면 NFT를 생성할 수 있습니다.

path Parameters
gameAccount
required
string

게임계정

Responses

201

Success

409

Conflict

post/v1/accounts/{gameAccount}

Main

https://api.nft.farm/v1/accounts/{gameAccount}

Sandbox

https://api.sandbox.nft.farm/v1/accounts/{gameAccount}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "error": "string",
  • "message": "string"
}

지갑 조회

생성된 지갑 상태를 조회합니다.

path Parameters
gameAccount
required
string

게임계정

Responses

200

Success

404

Not Found

get/v1/accounts/{gameAccount}

Main

https://api.nft.farm/v1/accounts/{gameAccount}

Sandbox

https://api.sandbox.nft.farm/v1/accounts/{gameAccount}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "exchangeNickname": "string",
  • "exchangeGrade": "string",
  • "exchangeCreatedAt": null,
  • "createdAt": null
}

NFT Farm 회원가입

인앱 서비스에서 NFT Farm 서비스를 호출하는 매칭 URL을 제공합니다.
NFT Farm 신규가입 또는 로그인 시 요청한 지갑을 매칭합니다.

path Parameters
gameAccount
required
string

게임 계정

Responses

200

Success

404

Not Found

post/v1/accounts/{gameAccount}/exchanges

Main

https://api.nft.farm/v1/accounts/{gameAccount}/exchanges

Sandbox

https://api.sandbox.nft.farm/v1/accounts/{gameAccount}/exchanges

Response samples