# 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sixnetwork.gitbook.io/nft-gen-2-tech-doc/getting-started/sdk-for-go/supported-messages-and-queries.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
