Skip to content

Commit

Permalink
migrate v1 smart contract operations
Browse files Browse the repository at this point in the history
  • Loading branch information
juraj.bacovcin committed Feb 5, 2024
1 parent 089de95 commit 4792964
Show file tree
Hide file tree
Showing 14 changed files with 442 additions and 0 deletions.
6 changes: 6 additions & 0 deletions categories/smart_contracts/openapi.yml
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,12 @@ tags:
servers:
- url: https://api.tatum.io
paths:
/v1/contract/deploy:
post:
$ref: categories/smart_contracts/paths/v1_contract_deploy_post.yml
/v1/contract/erc721/mint:
post:
$ref: categories/smart_contracts/paths/v1_contract_erc721_mint_post.yml
/v3/gas-pump:
post:
$ref: categories/smart_contracts/paths/v3_gas-pump_post.yml
Expand Down
67 changes: 67 additions & 0 deletions categories/smart_contracts/paths/v1_contract_deploy_post.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
description: "This operation is used to create a new smart contract on the blockchain.\
\ The operation is asynchronous and returns a transaction hash. The transaction\
\ hash can be used to query the status of the transaction.<br/>\nYou can create\
\ the following types of contracts:\n<ul>\n <li>ERC-20 - Fungible token like USDT</li>\n\
\ <li>ERC-721 - NFT collection like BAYC</li>\n <li>ERC-1155 - MultiToken NFT\
\ collection</li>\n</ul>\nYou can find more information about the contracts on our\
\ <a href=\"https://github.com/tatumio/smart-contract-library\" target=\"_blank\"\
>GitHub page</a> with steps required for verification.<br/>\nIf you deploy NFT collection\
\ contract (ERC-721), it is automatically enabled for <a href=\"https://docs.tatum.io/nft-express/what-is-nft-express\"\
\ target=\"_blank\">NFT Express functionality.</a><br/>\n"
operationId: deployContract
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '../../../components/migrated.yml#/components/schemas/DeployErc20Contract'
- $ref: '../../../components/migrated.yml#/components/schemas/DeployErc721Contract'
- $ref: '../../../components/migrated.yml#/components/schemas/DeployErc1155Contract'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '../../../components/migrated.yml#/components/schemas/TransactionHash'
description: OK
'400':
content:
application/json:
schema:
$ref: '../../../components/migrated.yml#/components/schemas/Error400'
description: Bad Request. Validation failed for the given object in the HTTP Body
or Request parameters.
'401':
content:
application/json:
schema:
oneOf:
- $ref: '../../../components/migrated.yml#/components/schemas/Error401NotActive'
- $ref: '../../../components/migrated.yml#/components/schemas/Error401Invalid'
description: Unauthorized. Not valid or inactive subscription key present in the
HTTP Header.
'403':
description: Forbidden. The request is authenticated, but it is not possible to
required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: '../../../components/migrated.yml#/components/schemas/Error403PlanNotSupported'
- $ref: '../../../components/migrated.yml#/components/schemas/Error403ChainNotSupported'
- $ref: '../../../components/migrated.yml#/components/schemas/Error403MainnetNotSupported'
- $ref: '../../../components/migrated.yml#/components/schemas/Error403LimitExceeded'
'500':
content:
application/json:
schema:
$ref: '../../../components/migrated.yml#/components/schemas/Error500'
description: Internal server error. There was an error on the server while processing
the request.
security:
- X-API-Key: []
x-codeSamples: []
summary: Deploy smart contract
tags:
- Smart Contract interactions
63 changes: 63 additions & 0 deletions categories/smart_contracts/paths/v1_contract_erc721_mint_post.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
description: 'This operation is used to mint NFT on existing NFT collection on the
blockchain. The operation is asynchronous and returns a transaction hash. The transaction
hash can be used to query the status of the transaction.<br/>
NFT will be minted as NFT Express. See more: <a href="https://docs.tatum.io/nft-express/what-is-nft-express"
target="_blank">NFT Express functionality.</a><br/>
'
operationId: mintErc721
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '../../../components/migrated.yml#/components/schemas/EvmErc721Mint'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '../../../components/migrated.yml#/components/schemas/TransactionHash'
description: OK
'400':
content:
application/json:
schema:
$ref: '../../../components/migrated.yml#/components/schemas/Error400'
description: Bad Request. Validation failed for the given object in the HTTP Body
or Request parameters.
'401':
content:
application/json:
schema:
oneOf:
- $ref: '../../../components/migrated.yml#/components/schemas/Error401NotActive'
- $ref: '../../../components/migrated.yml#/components/schemas/Error401Invalid'
description: Unauthorized. Not valid or inactive subscription key present in the
HTTP Header.
'403':
description: Forbidden. The request is authenticated, but it is not possible to
required perform operation due to logical error or invalid permissions.
content:
application/json:
schema:
oneOf:
- $ref: '../../../components/migrated.yml#/components/schemas/Error403PlanNotSupported'
- $ref: '../../../components/migrated.yml#/components/schemas/Error403ChainNotSupported'
- $ref: '../../../components/migrated.yml#/components/schemas/Error403MainnetNotSupported'
- $ref: '../../../components/migrated.yml#/components/schemas/Error403LimitExceeded'
'500':
content:
application/json:
schema:
$ref: '../../../components/migrated.yml#/components/schemas/Error500'
description: Internal server error. There was an error on the server while processing
the request.
security:
- X-API-Key: []
x-codeSamples: []
summary: Mint NFT
tags:
- Smart Contract interactions
47 changes: 47 additions & 0 deletions components/schemas/CreateContractAddressLogEventSubscription.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
type: object
required:
- type
- attr
properties:
type:
type: string
description: Type of the subscription.
example: CONTRACT_ADDRESS_LOG_EVENT
attr:
type: object
description: Additional attributes based on the subscription type.
required:
- chain
- address
- url
properties:
address:
description: Blockchain address to watch.
example: FykfMwA9WNShzPJbbb9DNXsfgDgS3XZzWiFgrVXfWoPJ
maxLength: 128
minLength: 13
type: string
chain:
description: Blockchain of the address.
example: SOL
type: string
enum:
- ETH
- MATIC
- CELO
- KLAY
- BSC
- TEZOS
url:
type: string
description: URL of the endpoint, where HTTP POST request will be sent, when
transaction is detected on the address.
example: https://dashboard.tatum.io/webhook-handler
maxLength: 500
event:
type: string
description: Event to watch. In case of EVM chains it is usually a hash of
the event signature. In case of Tezos it is a name of the event and max
length is not enforced.
example: 1.0038928713678618e+77
maxLength: 66
26 changes: 26 additions & 0 deletions components/schemas/DeployAbstractContract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
type: object
required:
- chain
- owner
properties:
chain:
type: string
enum:
- bsc-mainnet
- bsc-testnet
- ethereum-mainnet
- ethereum-sepolia
- polygon-mainnet
- polygon-mumbai
- celo-mainnet
- celo-alfajores
description: The blockchain network where the contract will be deployed.
owner:
type: string
pattern: ^0x[a-fA-F0-9]{40}$
description: The address of the owner of the contract.
minter:
type: string
pattern: ^0x[a-fA-F0-9]{40}$
description: The address of the minter of the contract. If not provided, the owner
will be the minter.
16 changes: 16 additions & 0 deletions components/schemas/DeployErc1155Contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
allOf:
- $ref: '../../../components/migrated.yml#/components/schemas/DeployAbstractContract'
- type: object
required:
- contractType
properties:
contractType:
type: string
enum:
- multitoken
description: The type of contract to deploy.
baseURI:
type: string
maxLength: 500
description: The base URI for the ERC1155 token metadata. If not provided, the
token will not have any base URI prefixed.
41 changes: 41 additions & 0 deletions components/schemas/DeployErc20Contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
allOf:
- $ref: '../../../components/migrated.yml#/components/schemas/DeployAbstractContract'
- type: object
required:
- name
- symbol
- contractType
- initialSupply
- initialHolder
properties:
name:
type: string
maxLength: 255
description: The name of the ERC20 token.
symbol:
type: string
maxLength: 255
description: The symbol of the ERC20 token.
contractType:
type: string
enum:
- fungible
description: The type of contract to deploy.
initialSupply:
type: string
description: The initial supply of the ERC20 token.
initialHolder:
type: string
pattern: ^0x[a-fA-F0-9]{40}$
description: The address that will hold the initial supply of the token.
decimals:
type: integer
minimum: 0
maximum: 30
description: The number of decimals the ERC20 token will have. If not provided,
the default value is 18.
pauser:
type: string
pattern: ^0x[a-fA-F0-9]{40}$
description: The address that can pause the token contract. If not provided,
the pauser is the owner.
26 changes: 26 additions & 0 deletions components/schemas/DeployErc721Contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
allOf:
- $ref: '../../../components/migrated.yml#/components/schemas/DeployAbstractContract'
- type: object
required:
- name
- symbol
- contractType
properties:
name:
type: string
maxLength: 255
description: The name of the ERC721 token.
symbol:
type: string
maxLength: 255
description: The symbol of the ERC721 token.
contractType:
type: string
enum:
- nft
description: The type of contract to deploy.
baseURI:
type: string
maxLength: 500
description: The base URI for the ERC721 token metadata. If not provided, the
token will not have any base URI prefixed.
17 changes: 17 additions & 0 deletions components/schemas/Error403ChainNotSupported.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
properties:
errorCode:
description: chain.not.supported
example: chain.not.supported
type: string
message:
description: Chain ${chain} is not supported for this operation.
example: Chain ${chain} is not supported for this operation.
type: string
statusCode:
description: '403'
example: 403
type: number
required:
- errorCode
- message
- statusCode
19 changes: 19 additions & 0 deletions components/schemas/Error403LimitExceeded.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
properties:
errorCode:
description: limit.exceeded
example: limit.exceeded
type: string
message:
description: Your plan limit is exceeded, you can't perform this operation more
then ${limit}x. You can upgrade at https://dashboard.tatum.com.
example: Your plan limit is exceeded, you can't perform this operation more then
${limit}x. You can upgrade at https://dashboard.tatum.com.
type: string
statusCode:
description: '403'
example: 403
type: number
required:
- errorCode
- message
- statusCode
19 changes: 19 additions & 0 deletions components/schemas/Error403MainnetNotSupported.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
properties:
errorCode:
description: mainnet.not.supported
example: mainnet.not.supported
type: string
message:
description: Mainnet is not supported for this operation for your plan. You can
upgrade at https://dashboard.tatum.com.
example: Mainnet is not supported for this operation for your plan. You can upgrade
at https://dashboard.tatum.com.
type: string
statusCode:
description: '403'
example: 403
type: number
required:
- errorCode
- message
- statusCode
19 changes: 19 additions & 0 deletions components/schemas/Error403PlanNotSupported.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
properties:
errorCode:
description: product.not.supported
example: product.not.supported
type: string
message:
description: Your plan is not supported to perform this operation. You can subscribe
at https://dashboard.tatum.com.
example: Your plan is not supported to perform this operation. You can subscribe
at https://dashboard.tatum.com.
type: string
statusCode:
description: '403'
example: 403
type: number
required:
- errorCode
- message
- statusCode
Loading

0 comments on commit 4792964

Please sign in to comment.