diff --git a/categories/smart_contracts/openapi.yml b/categories/smart_contracts/openapi.yml
index 6eccb72..a2413f7 100644
--- a/categories/smart_contracts/openapi.yml
+++ b/categories/smart_contracts/openapi.yml
@@ -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
diff --git a/categories/smart_contracts/paths/v1_contract_deploy_post.yml b/categories/smart_contracts/paths/v1_contract_deploy_post.yml
new file mode 100644
index 0000000..4c351d1
--- /dev/null
+++ b/categories/smart_contracts/paths/v1_contract_deploy_post.yml
@@ -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.
\nYou can create\
+ \ the following types of contracts:\n
\n - ERC-20 - Fungible token like USDT
\n\
+ \ - ERC-721 - NFT collection like BAYC
\n - ERC-1155 - MultiToken NFT\
+ \ collection
\n
\nYou can find more information about the contracts on our\
+ \ GitHub page with steps required for verification.
\nIf you deploy NFT collection\
+ \ contract (ERC-721), it is automatically enabled for NFT Express functionality.
\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
diff --git a/categories/smart_contracts/paths/v1_contract_erc721_mint_post.yml b/categories/smart_contracts/paths/v1_contract_erc721_mint_post.yml
new file mode 100644
index 0000000..1973765
--- /dev/null
+++ b/categories/smart_contracts/paths/v1_contract_erc721_mint_post.yml
@@ -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.
+
+ NFT will be minted as NFT Express. See more: NFT Express functionality.
+
+ '
+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
diff --git a/components/schemas/DeployErc1155Contract.yml b/components/schemas/DeployErc1155Contract.yml
new file mode 100644
index 0000000..6d7f9c4
--- /dev/null
+++ b/components/schemas/DeployErc1155Contract.yml
@@ -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.
diff --git a/components/schemas/DeployErc20Contract.yml b/components/schemas/DeployErc20Contract.yml
new file mode 100644
index 0000000..12d0ea6
--- /dev/null
+++ b/components/schemas/DeployErc20Contract.yml
@@ -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.
diff --git a/components/schemas/DeployErc721Contract.yml b/components/schemas/DeployErc721Contract.yml
new file mode 100644
index 0000000..ef2f0a5
--- /dev/null
+++ b/components/schemas/DeployErc721Contract.yml
@@ -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.
diff --git a/components/schemas/EvmErc721Mint.yml b/components/schemas/EvmErc721Mint.yml
new file mode 100644
index 0000000..9473490
--- /dev/null
+++ b/components/schemas/EvmErc721Mint.yml
@@ -0,0 +1,45 @@
+type: object
+properties:
+ chain:
+ type: string
+ enum:
+ - bsc-mainnet
+ - bsc-testnet
+ - ethereum-mainnet
+ - ethereum-sepolia
+ - polygon-mainnet
+ - polygon-mumbai
+ - celo-mainnet
+ - celo-alfajores
+ - one-mainnet-s0
+ - one-testnet-s0
+ - kcs-mainnet
+ - kcs-testnet
+ description: The blockchain network where to mint NFT.
+ to:
+ type: string
+ pattern: ^0x[a-fA-F0-9]{40}$
+ description: The address of the NFT receiver.
+ url:
+ type: string
+ pattern: ipfs://[a-f0-9]{60}
+ description: The URL pointing to the NFT metadata; for more information, see EIP-721
+ tokenId:
+ type: string
+ pattern: ^[0-9]+$
+ description: Token Id of NFT to be minted
+ contractAddress:
+ type: string
+ pattern: ^0x[a-fA-F0-9]{40}$
+ description: Smart contract address of the NFT collection
+ 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.
+required:
+- chain
+- to
+- url
+- tokenId
+- contractAddress