# Supported Messages and Queries

## Specific for SIX-Protocol

Import on your code:

```go
import nftmngrtypes "github.com/thesixnetwork/sixnft/x/nftmngr/types"
```

<table><thead><tr><th width="716">Message Type</th></tr></thead><tbody><tr><td><p><strong>Create NFT Schema</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgCreateNFTSchema{
    Creator: "&#x3C;creator-address>",
    NftSchemaBase64: "&#x3C;nft-schema-base64>"
}
</code></pre><p><mark style="color:blue;">creator-address</mark>: Same address which will be used to sign the transaction<br><mark style="color:blue;">nft-schema-base64</mark>: NFT Schema in JSON encoded with Base64.  For more information about the schema , go to <a data-mention href="../../../overview/modules/core-module#metadata-schema">#metadata-schema</a> or see example <a data-mention href="../../sdk-package-for-nodejs/example-resources#nft-schema-example">#nft-schema-example</a></p></td></tr><tr><td><p><strong>Create Meta Data</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgCreateMetadata{
    Creator : "creator-address",
    NftSchemaCode : "nft-schema-code",
    TokenId : "token-id",
    Base64NFTData : "base64-nft-data"
}
</code></pre><p><mark style="color:blue;">nft-schema-code</mark>: The code of the NFT schema previously created<br><mark style="color:blue;">token-id</mark>: An id of the token to create meta data<br><mark style="color:blue;">base64-nft-data</mark>: Data corresponding to the schema created for the token in JSON format, and encoded with Base64. Find more about NFT data in <a data-mention href="../../sdk-package-for-nodejs/example-resources#nft-metadata-example">#nft-metadata-example</a></p></td></tr><tr><td><p><strong>Perform Action By Admin</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgPerformActionByAdmin{
    Creator:       "creator-address",
    NftSchemaCode: "nft-schema-code",
    TokenId:       "token-id",
    Action:        "action-name",
    RefId:         "reference-id",
    Parameters:    []*nftmngrtypes.ActionParameter{}, // parameter lists
}
</code></pre><p><mark style="color:blue;">action-name</mark>: A name of the action to perform<br><mark style="color:blue;">reference-id</mark>: A unique ID (for all actions on the chain) that serves as a reference to the performing action. You can use a query to retrieve the transaction of this action using the reference ID, without the need to search through other transaction APIs.<br><mark style="color:blue;">parameters</mark>: A list of parameter need for the action.</p><pre class="language-go"><code class="lang-go">type ActionParameter struct {
	Name  string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}
</code></pre></td></tr><tr><td><p><strong>Add System Actioner</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgAddSystemActioner{
    Creator: "&#x3C;creator-address>",
    NftSchemaCode: "&#x3C;nft-schema-code>",
    Actioner: "&#x3C;actioner-address>",
}
</code></pre><p><strong>Remove System Actioner</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgRemoveSystemActioner{
    Creator: "creator-address",
    NftSchemaCode: "nft-schema-code",
    Actioner: "actioner-address",
}
</code></pre><p><mark style="color:blue;">actioner-address</mark>: An address that will be allowed/denied to perform actions on the token on behalf of the admin</p></td></tr><tr><td><p><strong>Add Action</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgAddAction{
    Creator: "&#x3C;creator-address>",
    Code: "&#x3C;nft-schema-code>",
    Base64NewAction: "&#x3C;base64-new-action>",
}
</code></pre><p><mark style="color:blue;">base64-new-action</mark>: A new action to add to the schema in Base64 encoded JSON. See more in action <a data-mention href="../../sdk-package-for-nodejs/example-resources#new-action-example">#new-action-example</a></p></td></tr><tr><td><p><strong>Change Schema Owner</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgChangeSchemaOwner{
    Creator: "&#x3C;creator-address>",
    NftSchemaCode: "&#x3C;nft-schema-code>",
    NewOwner: "&#x3C;new-owner-address>",
}
</code></pre><p><mark style="color:blue;">new-owner-address</mark>: An address of a new owner for the NFT.</p></td></tr><tr><td><p><strong>Change Organization Owner</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgChangeOrgOwner{
    Creator: "&#x3C;creator-address>",
    OrgName: "&#x3C;org-name>",
    ToNewOwner: "&#x3C;to-new-owner>",
}
</code></pre><p><mark style="color:blue;">org-name</mark>: The name of the organization is to be changed. For example, suppose you have created a schema with the code 'mycompany.schema1'. No one else will be able to create a schema with a code name starting with 'mycompany', except for you. The system will assume that 'mycompany' is the organization code, and you will have the ability to transfer ownership to others.<br><mark style="color:blue;">to-new-owner</mark><em>: A new organization owner.</em></p></td></tr><tr><td><p><strong>Toggle Action</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgToggleAction{
    Creator: "&#x3C;creator-address>",
    Code: "&#x3C;nft-schema-code>",
    Action: "&#x3C;action-name>",
    Disable: &#x3C;disable>,
}
</code></pre><p><mark style="color:blue;">disable</mark>: A flag to set if the action is disabled or not. Action cannot be called when it is disabled. By setting this flag to false, action will be available again.</p></td></tr><tr><td><p><strong>Show Attribute</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgShowAttributes{
    Creator: "&#x3C;creator-address>",
    NftSchemaCode: "&#x3C;nft-schema-code>",
    Show: "&#x3C;show>",
    AttributeNames: []string{"&#x3C;attribute-name>"},
}
</code></pre><p><mark style="color:blue;">show</mark>: A boolean flag to set if the attribute will be visible on marketplace or not.<br><mark style="color:blue;">attribute-name</mark>: A list of attribute names in which to set the flag.</p></td></tr><tr><td><p><strong>Add Attribute</strong></p><pre class="language-go"><code class="lang-go">&#x26;nftmngrtypes.MsgAddAttribute{
    Creator: "creator-address",
    Code:   "nft-schema-code",
    Location: &#x3C;location>,
    Base64NewAttriuteDefenition: "base64-new-attriute-defenition",
}
</code></pre><p><mark style="color:blue;">location</mark>: A place to add a new attribute. 0 is to add new attribute as a NFT Attribute (Attribute which available for all Token) and 1 is to add new attribute to Token Attribute<br><mark style="color:blue;">base64-new-attribute-definition</mark>: An attribute definition of the new attribute in Base64 encoded JSON.</p></td></tr></tbody></table>

## Specific Query for SIX Protocol

Below is the list of query specific for SIX Protocol in version 0.8.0

```go
type QueryClient interface {
	// Parameters queries the parameters of the module.
	Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)
	// Queries a NFTSchema by index.
	NFTSchema(ctx context.Context, in *QueryGetNFTSchemaRequest, opts ...grpc.CallOption) (*QueryGetNFTSchemaResponse, error)
	// will be deprecated next version (074)
	// Queries a NFTSchema by index.
	NFTSchemaV063(ctx context.Context, in *QueryGetNFTSchemaRequest, opts ...grpc.CallOption) (*QueryGetNFTSchemaResponseV063, error)
	// Queries a NFTSchema by index.
	NFTSchemaV072(ctx context.Context, in *QueryGetNFTSchemaRequest, opts ...grpc.CallOption) (*QueryGetNFTSchemaResponseV072, error)
	// Queries a list of NFTSchema items.
	NFTSchemaAll(ctx context.Context, in *QueryAllNFTSchemaRequest, opts ...grpc.CallOption) (*QueryAllNFTSchemaResponse, error)
	// will be deprecated next version (074)
	// Queries a list of NFTSchema items.
	NFTSchemaAllV063(ctx context.Context, in *QueryAllNFTSchemaRequest, opts ...grpc.CallOption) (*QueryAllNFTSchemaResponseV063, error)
	// Queries a list of NFTSchema items.
	NFTSchemaAllV072(ctx context.Context, in *QueryAllNFTSchemaRequest, opts ...grpc.CallOption) (*QueryAllNFTSchemaResponseV072, error)
	// Queries a NftData by index.
	NftData(ctx context.Context, in *QueryGetNftDataRequest, opts ...grpc.CallOption) (*QueryGetNftDataResponse, error)
	// Queries a list of NftData items.
	NftDataAll(ctx context.Context, in *QueryAllNftDataRequest, opts ...grpc.CallOption) (*QueryAllNftDataResponse, error)
	// Queries a ActionByRefId by index.
	ActionByRefId(ctx context.Context, in *QueryGetActionByRefIdRequest, opts ...grpc.CallOption) (*QueryGetActionByRefIdResponse, error)
	// Queries a list of ActionByRefId items.
	ActionByRefIdAll(ctx context.Context, in *QueryAllActionByRefIdRequest, opts ...grpc.CallOption) (*QueryAllActionByRefIdResponse, error)
	// Queries a Organization by index.
	Organization(ctx context.Context, in *QueryGetOrganizationRequest, opts ...grpc.CallOption) (*QueryGetOrganizationResponse, error)
	// Queries a list of Organization items.
	OrganizationAll(ctx context.Context, in *QueryAllOrganizationRequest, opts ...grpc.CallOption) (*QueryAllOrganizationResponse, error)
	// Queries a NftCollection by index.
	NftCollection(ctx context.Context, in *QueryGetNftCollectionRequest, opts ...grpc.CallOption) (*QueryGetNftCollectionResponse, error)
	// Queries a NFTSchemaByContract by index.
	NFTSchemaByContract(ctx context.Context, in *QueryGetNFTSchemaByContractRequest, opts ...grpc.CallOption) (*QueryGetNFTSchemaByContractResponse, error)
	// Queries a list of NFTSchemaByContract items.
	NFTSchemaByContractAll(ctx context.Context, in *QueryAllNFTSchemaByContractRequest, opts ...grpc.CallOption) (*QueryAllNFTSchemaByContractResponse, error)
	// Queries a NFTFeeConfig by index.
	NFTFeeConfig(ctx context.Context, in *QueryGetNFTFeeConfigRequest, opts ...grpc.CallOption) (*QueryGetNFTFeeConfigResponse, error)
	// Queries a NFTFeeBalance by index.
	NFTFeeBalance(ctx context.Context, in *QueryGetNFTFeeBalanceRequest, opts ...grpc.CallOption) (*QueryGetNFTFeeBalanceResponse, error)
	// Queries a MetadataCreator by index.
	MetadataCreator(ctx context.Context, in *QueryGetMetadataCreatorRequest, opts ...grpc.CallOption) (*QueryGetMetadataCreatorResponse, error)
	// Queries a list of MetadataCreator items.
	MetadataCreatorAll(ctx context.Context, in *QueryAllMetadataCreatorRequest, opts ...grpc.CallOption) (*QueryAllMetadataCreatorResponse, error)
}
```

For more detail on the query please see our [repositiry](https://github.com/thesixnetwork/sixnft/blob/33a96d0c696a47a1ee88d777358496c3e8ff8c18/x/nftmngr/types/query.pb.go#L1848) on github
