Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( CoreSystemNSDescription = ffm("core.systemNSDescription", "FireFly system namespace (legacy - no longer used by newer versions)") APIParamsConfigRecordKeyUpdate = ffm("api.params.configRecordKey.update", "The configuration key to update. This should use dot notation to reference a key documented in https://hyperledger.github.io/firefly/reference/config.html") APIParamsConfigRecordKeyGet = ffm("api.params.configRecordKey.get", "The configuration key to get. This should use dot notation to reference a key documented in https://hyperledger.github.io/firefly/reference/config.html") APIParamsOperationIDGet = ffm("api.params.operationID.get", "The operation ID key to get") APIParamsNamespace = ffm("api.params.namespace", "The namespace which scopes this request") APIParamsContractListenerNameOrID = ffm("api.params.contractListenerNameOrID", "The contract listener name or ID") APIParamsSubscriptionID = ffm("api.params.subscriptionID", "The subscription ID") APIParamsBatchID = ffm("api.params.batchId", "The batch ID") APIParamsBlockchainEventID = ffm("api.params.blockchainEventID", "The blockchain event ID") APIParamsCollectionID = ffm("api.params.collectionID", "The collection ID") APIParamsContractAPIName = ffm("api.params.contractAPIName", "The name of the contract API") APIParamsContractInterfaceName = ffm("api.params.contractInterfaceName", "The name of the contract interface") APIParamsContractInterfaceVersion = ffm("api.params.contractInterfaceVersion", "The version of the contract interface") APIParamsContractInterfaceID = ffm("api.params.contractInterfaceID", "The ID of the contract interface") APIParamsContractInterfaceFetchChildren = ffm("api.params.contractInterfaceFetchChildren", "When set, the API will return the full FireFly Interface document including all methods, events, and parameters") APIParamsBlobID = ffm("api.params.blobID", "The blob ID") APIParamsDataID = ffm("api.params.dataID", "The data item ID") APIParamsDatatypeName = ffm("api.params.datatypeName", "The name of the datatype") APIParamsDatatypeVersion = ffm("api.params.datatypeVersion", "The version of the datatype") APIParamsEventID = ffm("api.params.eventID", "The event ID") APIParamsFetchReferences = ffm("api.params.fetchReferences", "When set, the API will return the record that this item references in its 'ref' field") APIParamsGroupHash = ffm("api.params.groupID", "The hash of the group") APIParamsFetchVerifiers = ffm("api.params.fetchVerifiers", "When set, the API will return the verifier for this identity") APIParamsIdentityID = ffm("api.params.identityID", "The identity ID, which is a UUID generated by FireFly") APIParamsMessageID = ffm("api.params.messageID", "The message ID") APIParamsDID = ffm("api.params.DID", "The identity DID") APIParamsNodeNameOrID = ffm("api.params.nodeNameOrID", "The name or ID of the node") APIParamsOrgNameOrID = ffm("api.params.orgNameOrID", "The name or ID of the org") APIParamsTokenAccountKey = ffm("api.params.tokenAccountKey", "The key for the token account. The exact format may vary based on the token connector use.") APIParamsTokenPoolNameOrID = ffm("api.params.tokenPoolNameOrID", "The token pool name or ID") APIParamsTokenTransferFromOrTo = ffm("api.params.tokenTransferFromOrTo", "The sending or receiving token account for a token transfer") APIParamsTokenTransferID = ffm("api.params.tokenTransferID", "The token transfer ID") APIParamsTransactionID = ffm("api.params.transactionID", "The transaction ID") APIParamsVerifierHash = ffm("api.params.verifierID", "The hash of the verifier") APIParamsMethodPath = ffm("api.params.methodPath", "The name or uniquely generated path name of a method on a smart contract") APIParamsEventPath = ffm("api.params.eventPath", "The name or uniquely generated path name of a event on a smart contract") APIParamsInterfaceID = ffm("api.params.interfaceID", "The contract interface ID") APIParamsValidator = ffm("api.params.validator", "The validator type for this data item. Options are: \"json\", \"none\", or \"definition\"") APIParamsMetadata = ffm("api.params.metadata", "Metadata associated with this data item") APIParamsAutometa = ffm("api.params.autometa", "When set, FireFly will automatically generate JSON metadata with the upload details") APIParamsContractAPIID = ffm("api.params.contractAPIID", "The ID of the contract API") APIEndpointsAdminDeleteConfigRecord = ffm("api.endpoints.adminDeleteConfigRecord", "Deletes a configuration record from the database") APIEndpointsAdminGetConfigRecord = ffm("api.endpoints.adminGetConfigRecord", "Gets a configuration record from the database") APIEndpointsAdminGetConfigRecords = ffm("api.endpoints.adminGetConfigRecords", "Lists configuration records from the database") APIEndpointsAdminGetConfig = ffm("api.endpoints.adminGetConfig", "Gets the full configuration for this node") APIEndpointsAdminGetOpByID = ffm("api.endpoints.adminGetOpByID", "Gets an operation by ID") APIEndpointsAdminGetOps = ffm("api.endpoints.adminGetOps", "Lists operations") APIEndpointsAdminPutConfigRecord = ffm("api.endpoints.adminPutConfigRecord", "Sets a configuration key in the database. This will override matching configuration keys set in the core config file.") APIEndpointsAdminPostResetConfig = ffm("api.endpoints.adminPostResetConfig", "Restarts FireFly Core HTTP servers and apply all configuration updates. This will apply any new changes that have been made to the core config file, or through the admin API.") APIEndpointsAdminPatchOpByID = ffm("api.endpoints.adminPatchOpByID", "Updates an operation by ID") APIEndpointsDeleteContractListener = ffm("api.endpoints.deleteContractListener", "Deletes a contract listener referenced by its name or its ID") APIEndpointsDeleteSubscription = ffm("api.endpoints.deleteSubscription", "Deletes a subscription") APIEndpointsGetBatchBbyID = ffm("api.endpoints.getBatchByID", "Gets a message batch") APIEndpointsGetBatches = ffm("api.endpoints.getBatches", "Gets a list of message batches") APIEndpointsGetBlockchainEventByID = ffm("api.endpoints.getBlockchainEventByID", "Gets a blockchain event") APIEndpointsListBlockchainEvents = ffm("api.endpoints.getBlockchainEvents", "Gets a list of blockchain events") APIEndpointsGetChartHistogram = ffm("api.endpoints.getChartHistogram", "Gets a JSON object containing statistics data that can be used to build a graphical representation of recent activity in a given database collection") APIEndpointsGetContractAPIByName = ffm("api.endpoints.getContractAPIByName", "Gets information about a contract API, including the URLs for the OpenAPI Spec and Swagger UI for the API") APIEndpointsGetContractAPIs = ffm("api.endpoints.getContractAPIs", "Gets a list of contract APIs that have been published") APIEndpointsGetContractInterfaceNameVersion = ffm("api.endpoints.getContractInterfaceNameVersion", "Gets a contract interface by its name and version") APIEndpointsGetContractInterface = ffm("api.endpoints.getContractInterface", "Gets a contract interface by its ID") APIEndpointsGetContractInterfaces = ffm("api.endpoints.getContractInterfaces", "Gets a list of contract interfaces that have been published") APIEndpointsGetContractListenerByNameOrID = ffm("api.endpoints.getContractListenerByNameOrID", "Gets a contract listener by its name or ID") APIEndpointsGetContractListeners = ffm("api.endpoints.getContractListeners", "Gets a list of contract listeners") APIEndpointsGetDataBlob = ffm("api.endpoints.getDataBlob", "Downloads the original file that was previously uploaded or received") APIEndpointsGetDataByID = ffm("api.endpoints.getDataByID", "Gets a data item by its ID, including metadata about this item") APIEndpointsGetDataMsgs = ffm("api.endpoints.getDataMsgs", "Gets a list of the messages associated with a data item") APIEndpointsGetData = ffm("api.endpoints.getData", "Gets a list of data items") APIEndpointsGetDatatypeByName = ffm("api.endpoints.getDatatypeByName", "Gets a datatype by its name and version") APIEndpointsGetDatatypes = ffm("api.endpoints.getDatatypes", "Gets a list of datatypes that have been published") APIEndpointsGetEventByID = ffm("api.endpoints.eventID", "Gets an event by its ID") APIEndpointsGetEvents = ffm("api.endpoints.getEvents", "Gets a list of events") APIEndpointsGetGroupByHash = ffm("api.endpoints.getGroupByHash", "Gets a group by its ID (hash)") APIEndpointsGetGroups = ffm("api.endpoints.getGroups", "Gets a list of groups") APIEndpointsGetIdentities = ffm("api.endpoints.getIdentities", "Gets a list of all identities that have been registered in the namespace") APIEndpointsGetIdentityByID = ffm("api.endpoints.getIdentityByID", "Gets an identity by its ID") APIEndpointsGetIdentityDID = ffm("api.endpoints.getIdentityDID", "Gets the DID for an identity based on its ID") APIEndpointsGetIdentityVerifiers = ffm("api.endpoints.getIdentityVerifiers", "Gets the verifiers for an identity") APIEndpointsGetMsgByID = ffm("api.endpoints.getMsgByID", "Gets a message by its ID") APIEndpointsGetMsgData = ffm("api.endpoints.getMsgData", "Gets the list of data items that are attached to a message") APIEndpointsGetMsgEvents = ffm("api.endpoints.getMsgEvents", "Gets the list of events for a message") APIEndpointsGetMsgTxn = ffm("api.endpoints.getMsgTxn", "Gets the transaction for a message") APIEndpointsGetMsgs = ffm("api.endpoints.getMsgs", "Gets a list of messages") APIEndpointsGetNamespace = ffm("api.endpoints.getNamespace", "Gets a namespace") APIEndpointsGetNamespaces = ffm("api.endpoints.getNamespaces", "Gets a list of namespaces") APIEndpointsGetNetworkIdentityByDID = ffm("api.endpoints.getNetworkIdentityByDID", "Gets an identity by its DID (deprecated - use /identities/{did} instead of /network/identities/{did})") APIEndpointsGetIdentityByDID = ffm("api.endpoints.getIdentityByDID", "Gets an identity by its DID") APIEndpointsGetDIDDocByDID = ffm("api.endpoints.getDIDDocByDID", "Gets a DID document by its DID") APIEndpointsGetNetworkIdentities = ffm("api.endpoints.getNetworkIdentities", "Gets the list of identities in the network (deprecated - use /identities instead of /network/identities") APIEndpointsGetNetworkNode = ffm("api.endpoints.getNetworkNode", "Gets information about a specific node in the network") APIEndpointsGetNetworkNodes = ffm("api.endpoints.getNetworkNodes", "Gets a list of nodes in the network") APIEndpointsGetNetworkOrg = ffm("api.endpoints.getNetworkOrg", "Gets information about a specifc org in the network") APIEndpointsGetNetworkOrgs = ffm("api.endpoints.APIEndpointsGetNetworkOrgs", "Gets a list of orgs in the network") APIEndpointsGetOpByID = ffm("api.endpoints.getOpByID", "Gets an operation by ID") APIEndpointsGetOps = ffm("api.endpoints.getOps", "Gets a a list of operations") APIEndpointsGetStatusBatchManager = ffm("api.endpoints.getStatusBatchManager", "Gets the status of the batch manager") APIEndpointsGetStatusPins = ffm("api.endpoints.getStatusPins", "Queries the pins table that is the status of the event aggregator") APIEndpointsGetStatusWebSockets = ffm("api.endpoints.getStatusWebSockets", "Gets the status of the current WebSocket connections to this node") APIEndpointsGetStatus = ffm("api.endpoints.getStatus", "Gets the status of this node") APIEndpointsGetSubscriptionByID = ffm("api.endpoints.getSubscriptionByID", "Gets a subscription by its ID") APIEndpointsGetSubscriptions = ffm("api.endpoints.getSubscriptions", "Gets a list of subscriptions") APIEndpointsGetTokenAccountPools = ffm("api.endpoints.getTokenAccountPools", "Gets a list of token pools that contain a given token account key") APIEndpointsGetTokenAccounts = ffm("api.endpoints.getTokenAccounts", "Gets a list of token accounts") APIEndpointsGetTokenApprovals = ffm("api.endpoints.getTokenApprovals", "Gets a list of token approvals") APIEndpointsGetTokenBalances = ffm("api.endpoints.getTokenBalances", "Gets a list of token balances") APIEndpointsGetTokenConnectors = ffm("api.endpoints.getTokenConnectors", "Gets the list of token connectors currently in use") APIEndpointsGetTokenPoolByNameOrID = ffm("api.endpoints.getTokenPoolByNameOrID", "Gets a token pool by its name or its ID") APIEndpointsGetTokenPools = ffm("api.endpoints.getTokenPools", "Gets a list of token pools") APIEndpointsGetTokenTransferByID = ffm("api.endpoints.getTokenTransferByID", "Gets a token transfer by its ID") APIEndpointsGetTokenTransfers = ffm("api.endpoints.getTokenTransfers", "Gets a list of token transfers") APIEndpointsGetTxnBlockchainEvents = ffm("api.endpoints.getTxnBlockchainEvents", "Gets a list blockchain events for a specific transaction") APIEndpointsGetTxnByID = ffm("api.endpoints.getTxnByID", "Gets a transaction by its ID") APIEndpointsGetTxnOps = ffm("api.endpoints.getTxnOps", "Gets a list of operations in a specific transaction") APIEndpointsGetTxnStatus = ffm("api.endpoints.getTxnStatus", "Gets the status of a transaction") APIEndpointsGetTxns = ffm("api.endpoints.getTxns", "Gets a list of transactions") APIEndpointsGetVerifierByHash = ffm("api.endpoints.getVerifierByHash", "Gets a verifier by its hash") APIEndpointsGetVerifiers = ffm("api.endpoints.getVerifiers", "Gets a list of verifiers") APIEndpointsPatchUpdateIdentity = ffm("api.endpoints.patchUpdateIdentity", "Updates an identity") APIEndpointsPostContractAPIInvoke = ffm("api.endpoints.postContractAPIInvoke", "Invokes a method on a smart contract API. Performs a blockchain transaction.") APIEndpointsPostContractAPIQuery = ffm("api.endpoints.postContractAPIQuery", "Queries a method on a smart contract API. Performs a read-only query.") APIEndpointsPostContractInterfaceGenerate = ffm("api.endpoints.postContractInterfaceGenerate", "A convenience method to convert a blockchain specific smart contract format into a FireFly Interface format. The specific blockchain plugin in use must support this functionality.") APIEndpointsPostContractInterfaceInvoke = ffm("api.endpoints.postContractInterfaceInvoke", "Invokes a method on a smart contract that matches a given contract interface. Performs a blockchain transaction.") APIEndpointsPostContractInterfaceQuery = ffm("api.endpoints.postContractInterfaceQuery", "Queries a method on a smart contract that matches a given contract interface. Performs a read-only query.") APIEndpointsPostContractInvoke = ffm("api.endpoints.postContractInvoke", "Invokes a method on a smart contract. Performs a blockchain transaction.") APIEndpointsPostContractQuery = ffm("api.endpoints.postContractQuery", "Queries a method on a smart contract. Performs a read-only query.") APIEndpointsPostData = ffm("api.endpoints.postData", "Creates a new data item in this FireFly node") APIEndpointsPostNewContractAPI = ffm("api.endpoints.postNewContractAPI", "Creates and broadcasts a new custom smart contract API") APIEndpointsPostNewContractInterface = ffm("api.endpoints.postNewContractInterface", "Creates and broadcasts a new custom smart contract interface") APIEndpointsPostNewContractListener = ffm("api.endpoints.postNewContractListener", "Creates a new blockchain listener for events emitted by custom smart contracts") APIEndpointsPostNewDatatype = ffm("api.endpoints.postNewDatatype", "Creates and broadcasts a new datatype") APIEndpointsPostNewIdentity = ffm("api.endpoints.postNewIdentity", "Registers a new identity in the network") APIEndpointsPostNewMessageBroadcast = ffm("api.endpoints.postNewMessageBroadcast", "Broadcasts a message to all members in the network") APIEndpointsPostNewMessagePrivate = ffm("api.endpoints.postNewMessagePrivate", "Privately sends a message to one or more members in the network") APIEndpointsPostNewMessageRequestReply = ffm("api.endpoints.postNewMessageRequestReply", "Sends a message with a blocking HTTP request, waits for a reply to that message, then sends the reply as the HTTP response.") APIEndpointsPostNewNamespace = ffm("api.endpoints.postNewNamespace", "Creates and broadcasts a new namespace") APIEndpointsPostNodesSelf = ffm("api.endpoints.postNodesSelf", "Instructs this FireFly node to register itself on the network") APIEndpointsPostNewOrganizationSelf = ffm("api.endpoints.postNewOrganizationSelf", "Instructs this FireFly node to register its org on the network") APIEndpointsPostNewOrganization = ffm("api.endpoints.postNewOrganization", "Registers a new org in the network") APIEndpointsPostNewSubscription = ffm("api.endpoints.postNewSubscription", "Creates a new subscription for an application to receive events from FireFly") APIEndpointsPostOpRetry = ffm("api.endpoints.postOpRetry", "Retries a failed operation") APIEndpointsPostTokenApproval = ffm("api.endpoints.postTokenApproval", "Creates a token approval") APIEndpointsPostTokenBurn = ffm("api.endpoints.postTokenBurn", "Burns some tokens") APIEndpointsPostTokenMint = ffm("api.endpoints.postTokenMint", "Mints some tokens") APIEndpointsPostTokenPool = ffm("api.endpoints.postTokenPool", "Creates a new token pool") APIEndpointsPostTokenTransfer = ffm("api.endpoints.postTokenTransfer", "Transfers some tokens") APIEndpointsPutContractAPI = ffm("api.endpoints.putContractAPI", "Updates an existing contract API") APIEndpointsPutSubscription = ffm("api.endpoints.putSubscription", "Update an existing subscription") APIEndpointsGetContractAPIInterface = ffm("api.endpoints.getContractAPIInterface", "Gets a contract interface for a contract API") APIEndpointsPostNetworkAction = ffm("api.endpoints.postNetworkAction", "Notify all nodes in the network of a new governance action") APISuccessResponse = ffm("api.success", "Success") APIRequestTimeoutDesc = ffm("api.requestTimeout", "Server-side request timeout (millseconds, or set a custom suffix like 10s)") APIFilterParamDesc = ffm("api.filterParam", "Data filter field. Prefixes supported: > >= < <= @ ^ ! !@ !^") APIFilterSortDesc = ffm("api.filterSort", "Sort field. For multi-field sort use comma separated values (or multiple query values) with '-' prefix for descending") APIFilterAscendingDesc = ffm("api.filterAscending", "Ascending sort order (overrides all fields in a multi-field sort)") APIFilterDescendingDesc = ffm("api.filterDescending", "Descending sort order (overrides all fields in a multi-field sort)") APIFilterSkipDesc = ffm("api.filterSkip", "The number of records to skip (max: %d). Unsuitable for bulk operations") APIFilterLimitDesc = ffm("api.filterLimit", "The maximum number of records to return (max: %d)") APIFilterCountDesc = ffm("api.filterCount", "Return a total count as well as items (adds extra database processing)") APIFetchDataDesc = ffm("api.fetchData", "Fetch the data and include it in the messages returned") APIConfirmQueryParam = ffm("api.confirmQueryParam", "When true the HTTP request blocks until the message is confirmed") APIHistogramStartTimeParam = ffm("api.histogramStartTime", "Start time of the data to be fetched") APIHistogramEndTimeParam = ffm("api.histogramEndTime", "End time of the data to be fetched") APIHistogramBucketsParam = ffm("api.histogramBuckets", "Number of buckets between start time and end time") )
View Source
var ( ConfigGlobalMigrationsAuto = ffc("config.global.migrations.auto", "Enables automatic database migrations", i18n.BooleanType) ConfigGlobalMigrationsDirectory = ffc("config.global.migrations.directory", "The directory containing the numerically ordered migration DDL files to apply to the database", i18n.StringType) ConfigGlobalShutdownTimeout = ffc("config.global.shutdownTimeout", "The maximum amount of time to wait for any open HTTP requests to finish before shutting down the HTTP server", i18n.TimeDurationType) ConfigAdminAddress = ffc("config.admin.address", "The IP address on which the admin HTTP API should listen", "IP Address "+i18n.StringType) ConfigAdminEnabled = ffc("config.admin.enabled", "Enables the admin HTTP API", i18n.BooleanType) ConfigAdminPort = ffc("config.admin.port", "The port on which the admin HTTP API should listen", i18n.IntType) ConfigAdminPublicURL = ffc("config.admin.publicURL", "The fully qualified public URL for the admin API. This is used for building URLs in HTTP responses and in OpenAPI Spec generation", "URL "+i18n.StringType) ConfigAdminReadTimeout = ffc("config.admin.readTimeout", "The maximum time to wait when reading from an HTTP connection", i18n.TimeDurationType) ConfigAdminWriteTimeout = ffc("config.admin.writeTimeout", "The maximum time to wait when writing to an HTTP connection", i18n.TimeDurationType) ConfigAPIDefaultFilterLimit = ffc("config.api.defaultFilterLimit", "The maximum number of rows to return if no limit is specified on an API request", i18n.IntType) ConfigAPIMaxFilterLimit = ffc("config.api.maxFilterLimit", "The largest value of `limit` that an HTTP client can specify in a request", i18n.IntType) ConfigAPIRequestMaxTimeout = ffc("config.api.requestMaxTimeout", "The maximum amount of time that an HTTP client can specify in a `Request-Timeout` header to keep a specific request open", i18n.TimeDurationType) ConfigAssetManagerKeyNormalization = ffc("config.asset.manager.keyNormalization", "Mechanism to normalize keys before using them. Valid options are `blockchain_plugin` - use blockchain plugin (default) or `none` - do not attempt normalization", i18n.StringType) ConfigBatchManagerMinimumPollDelay = ffc("config.batch.manager.minimumPollDelay", "The minimum time the batch manager waits between polls on the DB - to prevent thrashing", i18n.TimeDurationType) ConfigBatchManagerPollTimeout = ffc("config.batch.manager.pollTimeout", "How long to wait without any notifications of new messages before doing a page query", i18n.TimeDurationType) ConfigBatchManagerReadPageSize = ffc("config.batch.manager.readPageSize", "The size of each page of messages read from the database into memory when assembling batches", i18n.IntType) ConfigBlobreceiverWorkerBatchMaxInserts = ffc("config.blobreceiver.worker.batchMaxInserts", "The maximum number of items the blob receiver worker will insert in a batch", i18n.IntType) ConfigBlobreceiverWorkerBatchTimeout = ffc("config.blobreceiver.worker.batchTimeout", "The maximum amount of the the blob receiver worker will wait", i18n.TimeDurationType) ConfigBlobreceiverWorkerCount = ffc("config.blobreceiver.worker.count", "The number of blob receiver workers", i18n.IntType) ConfigBlockchainType = ffc("config.blockchain.type", "A string defining which type of blockchain plugin to use. This tells FireFly which type of configuration to load for the rest of the `blockchain` section", i18n.StringType) ConfigBlockchainEthereumAddressResolverBodyTemplate = ffc("config.blockchain.ethereum.addressResolver.bodyTemplate", "The body go template string to use when making HTTP requests", i18n.GoTemplateType) ConfigBlockchainEthereumAddressResolverCustomClient = ffc("config.blockchain.ethereum.addressResolver.customClient", "Used for testing purposes only", i18n.IgnoredType) ConfigBlockchainEthereumAddressResolverExpectContinueTimeout = ffc("config.blockchain.ethereum.addressResolver.expectContinueTimeout", "See [ExpectContinueTimeout in the Go docs](https://pkg.go.dev/net/http#Transport)", i18n.TimeDurationType) ConfigBlockchainEthereumAddressResolverHeaders = ffc("config.blockchain.ethereum.addressResolver.headers", "Adds custom headers to HTTP requests", i18n.StringType) ConfigBlockchainEthereumAddressResolverIdleTimeout = ffc("config.blockchain.ethereum.addressResolver.idleTimeout", "The max duration to hold a HTTP keepalive connection between calls", i18n.TimeDurationType) ConfigBlockchainEthereumAddressResolverMaxIdleConns = ffc("config.blockchain.ethereum.addressResolver.maxIdleConns", "The max number of idle connections to hold pooled", i18n.IntType) ConfigBlockchainEthereumAddressResolverMethod = ffc("config.blockchain.ethereum.addressResolver.method", "The HTTP method to use when making requests to the Address Resolver", i18n.StringType) ConfigBlockchainEthereumAddressResolverResponseField = ffc("config.blockchain.ethereum.addressResolver.responseField", "The name of a JSON field that is provided in the response, that contains the ethereum address (default `address`)", i18n.StringType) ConfigBlockchainEthereumAddressResolverRetainOriginal = ffc("config.blockchain.ethereum.addressResolver.retainOriginal", "When true the original pre-resolved string is retained after the lookup, and passed down to Ethconnect as the from address", i18n.BooleanType) ConfigBlockchainEthereumAddressResolverURL = ffc("config.blockchain.ethereum.addressResolver.url", "The URL of the Address Resolver", i18n.StringType) ConfigBlockchainEthereumAddressResolverURLTemplate = ffc("config.blockchain.ethereum.addressResolver.urlTemplate", "The URL Go template string to use when calling the Address Resolver", i18n.GoTemplateType) ConfigBlockchainEthereumAddressResolverProxyURL = ffc("config.blockchain.ethereum.addressResolver.proxy.url", "Optional HTTP proxy server to use when connecting to the Address Resolver", "URL "+i18n.StringType) ConfigBlockchainEthereumEthconnectBatchSize = ffc("config.blockchain.ethereum.ethconnect.batchSize", "The number of events Ethconnect should batch together for delivery to FireFly core. Only applies when automatically creating a new event stream", i18n.IntType) ConfigBlockchainEthereumEthconnectBatchTimeout = ffc("config.blockchain.ethereum.ethconnect.batchTimeout", "How long Ethconnect should wait for new events to arrive and fill a batch, before sending the batch to FireFly core. Only applies when automatically creating a new event stream", i18n.TimeDurationType) ConfigBlockchainEthereumEthconnectInstance = ffc("config.blockchain.ethereum.ethconnect.instance", "The Ethereum address of the FireFly BatchPin smart contract that has been deployed to the blockchain (deprecated - use fireflyContract[].address)", "Address "+i18n.StringType) ConfigBlockchainEthereumEthconnectFromBlock = ffc("config.blockchain.ethereum.ethconnect.fromBlock", "The first event this FireFly instance should listen to from the BatchPin smart contract. Default=0. Only affects initial creation of the event stream (deprecated - use fireflyContract[].fromBlock)", "Address "+i18n.StringType) ConfigBlockchainEthereumEthconnectPrefixLong = ffc("config.blockchain.ethereum.ethconnect.prefixLong", "The prefix that will be used for Ethconnect specific HTTP headers when FireFly makes requests to Ethconnect", i18n.StringType) ConfigBlockchainEthereumEthconnectPrefixShort = ffc("config.blockchain.ethereum.ethconnect.prefixShort", "The prefix that will be used for Ethconnect specific query parameters when FireFly makes requests to Ethconnect", i18n.StringType) ConfigBlockchainEthereumEthconnectTopic = ffc("config.blockchain.ethereum.ethconnect.topic", "The websocket listen topic that the node should register on, which is important if there are multiple nodes using a single ethconnect", i18n.StringType) ConfigBlockchainEthereumEthconnectURL = ffc("config.blockchain.ethereum.ethconnect.url", "The URL of the Ethconnect instance", "URL "+i18n.StringType) ConfigBlockchainEthereumEthconnectProxyURL = ffc("config.blockchain.ethereum.ethconnect.proxy.url", "Optional HTTP proxy server to use when connecting to Ethconnect", "URL "+i18n.StringType) ConfigBlockchainEthereumContractAddress = ffc("config.blockchain.ethereum.fireflyContract[].address", "The Ethereum address of the FireFly BatchPin smart contract that has been deployed to the blockchain", "Address "+i18n.StringType) ConfigBlockchainEthereumContractFromBlock = ffc("config.blockchain.ethereum.fireflyContract[].fromBlock", "The first event this FireFly instance should listen to from the BatchPin smart contract. Default=0. Only affects initial creation of the event stream", "Address "+i18n.StringType) ConfigBlockchainEthereumFFTMURL = ffc("config.blockchain.ethereum.fftm.url", "The URL of the FireFly Transaction Manager runtime, if enabled", i18n.StringType) ConfigBlockchainEthereumFFTMProxyURL = ffc("config.blockchain.ethereum.fftm.proxy.url", "Optional HTTP proxy server to use when connecting to the Transaction Manager", i18n.StringType) ConfigBlockchainFabricFabconnectBatchSize = ffc("config.blockchain.fabric.fabconnect.batchSize", "The number of events Fabconnect should batch together for delivery to FireFly core. Only applies when automatically creating a new event stream", i18n.IntType) ConfigBlockchainFabricFabconnectBatchTimeout = ffc("config.blockchain.fabric.fabconnect.batchTimeout", "The maximum amount of time to wait for a batch to complete", i18n.TimeDurationType) ConfigBlockchainFabricFabconnectChaincode = ffc("config.blockchain.fabric.fabconnect.chaincode", "The name of the Fabric chaincode that FireFly will use for BatchPin transactions (deprecated - use fireflyContract[].chaincode)", i18n.StringType) ConfigBlockchainFabricFabconnectChannel = ffc("config.blockchain.fabric.fabconnect.channel", "The Fabric channel that FireFly will use for BatchPin transactions", i18n.StringType) ConfigBlockchainFabricFabconnectPrefixLong = ffc("config.blockchain.fabric.fabconnect.prefixLong", "The prefix that will be used for Fabconnect specific HTTP headers when FireFly makes requests to Fabconnect", i18n.StringType) ConfigBlockchainFabricFabconnectPrefixShort = ffc("config.blockchain.fabric.fabconnect.prefixShort", "The prefix that will be used for Fabconnect specific query parameters when FireFly makes requests to Fabconnect", i18n.StringType) ConfigBlockchainFabricFabconnectSigner = ffc("config.blockchain.fabric.fabconnect.signer", "The Fabric signing key to use when submitting transactions to Fabconnect", i18n.StringType) ConfigBlockchainFabricFabconnectTopic = ffc("config.blockchain.fabric.fabconnect.topic", "The websocket listen topic that the node should register on, which is important if there are multiple nodes using a single Fabconnect", i18n.StringType) ConfigBlockchainFabricFabconnectURL = ffc("config.blockchain.fabric.fabconnect.url", "The URL of the Fabconnect instance", "URL "+i18n.StringType) ConfigBlockchainFabricFabconnectProxyURL = ffc("config.blockchain.fabric.fabconnect.proxy.url", "Optional HTTP proxy server to use when connecting to Fabconnect", "URL "+i18n.StringType) ConfigBlockchainFabricContractChaincode = ffc("config.blockchain.fabric.fireflyContract[].chaincode", "The name of the Fabric chaincode that FireFly will use for BatchPin transactions", i18n.StringType) ConfigBlockchainFabricContractFromBlock = ffc("config.blockchain.fabric.fireflyContract[].fromBlock", "The first event this FireFly instance should listen to from the BatchPin chaincode. Default=0. Only affects initial creation of the event stream", "Address "+i18n.StringType) ConfigPluginDatabase = ffc("config.plugins.database", "The list of configured Database plugins", i18n.StringType) ConfigPluginDatabaseName = ffc("config.plugins.database[].name", "The name of the Database plugin", i18n.StringType) ConfigPluginDatabaseType = ffc("config.plugins.database[].type", "The type of the configured Database plugin", i18n.StringType) ConfigPluginDatabasePostgresMaxConnIdleTime = ffc("config.plugins.database[].postgres.maxConnIdleTime", "The maximum amount of time a database connection can be idle", i18n.TimeDurationType) ConfigPluginDatabasePostgresMaxConnLifetime = ffc("config.plugins.database[].postgres.maxConnLifetime", "The maximum amount of time to keep a database connection open", i18n.TimeDurationType) ConfigPluginDatabasePostgresMaxConns = ffc("config.plugins.database[].postgres.maxConns", "Maximum connections to the database", i18n.IntType) ConfigPluginDatabasePostgresMaxIdleConns = ffc("config.plugins.database[].postgres.maxIdleConns", "The maximum number of idle connections to the database", i18n.IntType) ConfigPluginDatabasePostgresURL = ffc("config.plugins.database[].postgres.url", "The PostgreSQL connection string for the database", i18n.StringType) ConfigPluginDatabaseSqlite3MaxConnIdleTime = ffc("config.plugins.database[].sqlite3.maxConnIdleTime", "The maximum amount of time a database connection can be idle", i18n.TimeDurationType) ConfigPluginDatabaseSqlite3MaxConnLifetime = ffc("config.plugins.database[].sqlite3.maxConnLifetime", "The maximum amount of time to keep a database connection open", i18n.TimeDurationType) ConfigPluginDatabaseSqlite3MaxConns = ffc("config.plugins.database[].sqlite3.maxConns", "Maximum connections to the database", i18n.IntType) ConfigPluginDatabaseSqlite3MaxIdleConns = ffc("config.plugins.database[].sqlite3.maxIdleConns", "The maximum number of idle connections to the database", i18n.IntType) ConfigPluginDatabaseSqlite3URL = ffc("config.plugins.database[].sqlite3.url", "The SQLite connection string for the database", i18n.StringType) ConfigPluginBlockchain = ffc("config.plugins.blockchain", "The list of configured Blockchain plugins", i18n.StringType) ConfigPluginBlockchainName = ffc("config.plugins.blockchain[].name", "The name of the configured Blockchain plugin", i18n.StringType) ConfigPluginBlockchainType = ffc("config.plugins.blockchain[].type", "The type of the configured Blockchain Connector plugin", i18n.StringType) ConfigPluginBlockchainEthereumAddressResolverBodyTemplate = ffc("config.plugins.blockchain[].ethereum.addressResolver.bodyTemplate", "The body go template string to use when making HTTP requests", i18n.GoTemplateType) ConfigPluginBlockchainEthereumAddressResolverCustomClient = ffc("config.plugins.blockchain[].ethereum.addressResolver.customClient", "Used for testing purposes only", i18n.IgnoredType) ConfigPluginBlockchainEthereumAddressResolverExpectContinueTimeout = ffc("config.plugins.blockchain[].ethereum.addressResolver.expectContinueTimeout", "See [ExpectContinueTimeout in the Go docs](https://pkg.go.dev/net/http#Transport)", i18n.TimeDurationType) ConfigPluginBlockchainEthereumAddressResolverHeaders = ffc("config.plugins.blockchain[].ethereum.addressResolver.headers", "Adds custom headers to HTTP requests", i18n.StringType) ConfigPluginBlockchainEthereumAddressResolverIdleTimeout = ffc("config.plugins.blockchain[].ethereum.addressResolver.idleTimeout", "The max duration to hold a HTTP keepalive connection between calls", i18n.TimeDurationType) ConfigPluginBlockchainEthereumAddressResolverMaxIdleConns = ffc("config.plugins.blockchain[].ethereum.addressResolver.maxIdleConns", "The max number of idle connections to hold pooled", i18n.IntType) ConfigPluginBlockchainEthereumAddressResolverMethod = ffc("config.plugins.blockchain[].ethereum.addressResolver.method", "The HTTP method to use when making requests to the Address Resolver", i18n.StringType) ConfigPluginBlockchainEthereumAddressResolverResponseField = ffc("config.plugins.blockchain[].ethereum.addressResolver.responseField", "The name of a JSON field that is provided in the response, that contains the ethereum address (default `address`)", i18n.StringType) ConfigPluginBlockchainEthereumAddressResolverRetainOriginal = ffc("config.plugins.blockchain[].ethereum.addressResolver.retainOriginal", "When true the original pre-resolved string is retained after the lookup, and passed down to Ethconnect as the from address", i18n.BooleanType) ConfigPluginBlockchainEthereumAddressResolverURL = ffc("config.plugins.blockchain[].ethereum.addressResolver.url", "The URL of the Address Resolver", i18n.StringType) ConfigPluginBlockchainEthereumAddressResolverURLTemplate = ffc("config.plugins.blockchain[].ethereum.addressResolver.urlTemplate", "The URL Go template string to use when calling the Address Resolver", i18n.GoTemplateType) ConfigPluginBlockchainEthereumAddressResolverProxyURL = ffc("config.plugins.blockchain[].ethereum.addressResolver.proxy.url", "Optional HTTP proxy server to use when connecting to the Address Resolver", "URL "+i18n.StringType) ConfigPluginBlockchainEthereumEthconnectBatchSize = ffc("config.plugins.blockchain[].ethereum.ethconnect.batchSize", "The number of events Ethconnect should batch together for delivery to FireFly core. Only applies when automatically creating a new event stream", i18n.IntType) ConfigPluginBlockchainEthereumEthconnectBatchTimeout = ffc("config.plugins.blockchain[].ethereum.ethconnect.batchTimeout", "How long Ethconnect should wait for new events to arrive and fill a batch, before sending the batch to FireFly core. Only applies when automatically creating a new event stream", i18n.TimeDurationType) ConfigPluginBlockchainEthereumEthconnectInstance = ffc("config.plugins.blockchain[].ethereum.ethconnect.instance", "The Ethereum address of the FireFly BatchPin smart contract that has been deployed to the blockchain", "Address "+i18n.StringType) ConfigPluginBlockchainEthereumEthconnectFromBlock = ffc("config.plugins.blockchain[].ethereum.ethconnect.fromBlock", "The first event this FireFly instance should listen to from the BatchPin smart contract. Default=0. Only affects initial creation of the event stream", "Address "+i18n.StringType) ConfigPluginBlockchainEthereumEthconnectPrefixLong = ffc("config.plugins.blockchain[].ethereum.ethconnect.prefixLong", "The prefix that will be used for Ethconnect specific HTTP headers when FireFly makes requests to Ethconnect", i18n.StringType) ConfigPluginBlockchainEthereumEthconnectPrefixShort = ffc("config.plugins.blockchain[].ethereum.ethconnect.prefixShort", "The prefix that will be used for Ethconnect specific query parameters when FireFly makes requests to Ethconnect", i18n.StringType) ConfigPluginBlockchainEthereumEthconnectTopic = ffc("config.plugins.blockchain[].ethereum.ethconnect.topic", "The websocket listen topic that the node should register on, which is important if there are multiple nodes using a single ethconnect", i18n.StringType) ConfigPluginBlockchainEthereumEthconnectURL = ffc("config.plugins.blockchain[].ethereum.ethconnect.url", "The URL of the Ethconnect instance", "URL "+i18n.StringType) ConfigPluginBlockchainEthereumEthconnectProxyURL = ffc("config.plugins.blockchain[].ethereum.ethconnect.proxy.url", "Optional HTTP proxy server to use when connecting to Ethconnect", "URL "+i18n.StringType) ConfigPluginBlockchainEthereumContractAddress = ffc("config.plugins.blockchain[].ethereum.fireflyContract[].address", "The Ethereum address of the FireFly BatchPin smart contract that has been deployed to the blockchain", "Address "+i18n.StringType) ConfigPluginBlockchainEthereumContractFromBlock = ffc("config.plugins.blockchain[].ethereum.fireflyContract[].fromBlock", "The first event this FireFly instance should listen to from the BatchPin smart contract. Default=0. Only affects initial creation of the event stream", "Address "+i18n.StringType) ConfigPluginBlockchainEthereumFFTMURL = ffc("config.plugins.blockchain[].ethereum.fftm.url", "The URL of the FireFly Transaction Manager runtime, if enabled", i18n.StringType) ConfigPluginBlockchainEthereumFFTMProxyURL = ffc("config.plugins.blockchain[].ethereum.fftm.proxy.url", "Optional HTTP proxy server to use when connecting to the Transaction Manager", i18n.StringType) ConfigPluginBlockchainFabricFabconnectBatchSize = ffc("config.plugins.blockchain[].fabric.fabconnect.batchSize", "The number of events Fabconnect should batch together for delivery to FireFly core. Only applies when automatically creating a new event stream", i18n.IntType) ConfigPluginBlockchainFabricFabconnectBatchTimeout = ffc("config.plugins.blockchain[].fabric.fabconnect.batchTimeout", "The maximum amount of time to wait for a batch to complete", i18n.TimeDurationType) ConfigPluginBlockchainFabricFabconnectChaincode = ffc("config.plugins.blockchain[].fabric.fabconnect.chaincode", "The name of the Fabric chaincode that FireFly will use for BatchPin transactions (deprecated - use fireflyContract[].chaincode)", i18n.StringType) ConfigPluginBlockchainFabricFabconnectChannel = ffc("config.plugins.blockchain[].fabric.fabconnect.channel", "The Fabric channel that FireFly will use for BatchPin transactions", i18n.StringType) ConfigPluginBlockchainFabricFabconnectPrefixLong = ffc("config.plugins.blockchain[].fabric.fabconnect.prefixLong", "The prefix that will be used for Fabconnect specific HTTP headers when FireFly makes requests to Fabconnect", i18n.StringType) ConfigPluginBlockchainFabricFabconnectPrefixShort = ffc("config.plugins.blockchain[].fabric.fabconnect.prefixShort", "The prefix that will be used for Fabconnect specific query parameters when FireFly makes requests to Fabconnect", i18n.StringType) ConfigPluginBlockchainFabricFabconnectSigner = ffc("config.plugins.blockchain[].fabric.fabconnect.signer", "The Fabric signing key to use when submitting transactions to Fabconnect", i18n.StringType) ConfigPluginBlockchainFabricFabconnectTopic = ffc("config.plugins.blockchain[].fabric.fabconnect.topic", "The websocket listen topic that the node should register on, which is important if there are multiple nodes using a single Fabconnect", i18n.StringType) ConfigPluginBlockchainFabricFabconnectURL = ffc("config.plugins.blockchain[].fabric.fabconnect.url", "The URL of the Fabconnect instance", "URL "+i18n.StringType) ConfigPluginBlockchainFabricFabconnectProxyURL = ffc("config.plugins.blockchain[].fabric.fabconnect.proxy.url", "Optional HTTP proxy server to use when connecting to Fabconnect", "URL "+i18n.StringType) ConfigPluginBlockchainFabricContractChaincode = ffc("config.plugins.blockchain[].fabric.fireflyContract[].chaincode", "The name of the Fabric chaincode that FireFly will use for BatchPin transactions", i18n.StringType) ConfigPluginBlockchainFabricContractFromBlock = ffc("config.plugins.blockchain[].fabric.fireflyContract[].fromBlock", "The first event this FireFly instance should listen to from the BatchPin chaincode. Default=0. Only affects initial creation of the event stream", "Address "+i18n.StringType) ConfigBroadcastBatchAgentTimeout = ffc("config.broadcast.batch.agentTimeout", "How long to keep around a batching agent for a sending identity before disposal", i18n.StringType) ConfigBroadcastBatchPayloadLimit = ffc("config.broadcast.batch.payloadLimit", "The maximum payload size of a batch for broadcast messages", i18n.ByteSizeType) ConfigBroadcastBatchSize = ffc("config.broadcast.batch.size", "The maximum number of messages that can be packed into a batch", i18n.IntType) ConfigBroadcastBatchTimeout = ffc("config.broadcast.batch.timeout", "The timeout to wait for a batch to fill, before sending", i18n.TimeDurationType) ConfigDatabaseType = ffc("config.database.type", "The type of the database interface plugin to use", i18n.IntType) ConfigDatabasePostgresMaxConnIdleTime = ffc("config.database.postgres.maxConnIdleTime", "The maximum amount of time a database connection can be idle", i18n.TimeDurationType) ConfigDatabasePostgresMaxConnLifetime = ffc("config.database.postgres.maxConnLifetime", "The maximum amount of time to keep a database connection open", i18n.TimeDurationType) ConfigDatabasePostgresMaxConns = ffc("config.database.postgres.maxConns", "Maximum connections to the database", i18n.IntType) ConfigDatabasePostgresMaxIdleConns = ffc("config.database.postgres.maxIdleConns", "The maximum number of idle connections to the database", i18n.IntType) ConfigDatabasePostgresURL = ffc("config.database.postgres.url", "The PostgreSQL connection string for the database", i18n.StringType) ConfigDatabaseSqlite3MaxConnIdleTime = ffc("config.database.sqlite3.maxConnIdleTime", "The maximum amount of time a database connection can be idle", i18n.TimeDurationType) ConfigDatabaseSqlite3MaxConnLifetime = ffc("config.database.sqlite3.maxConnLifetime", "The maximum amount of time to keep a database connection open", i18n.TimeDurationType) ConfigDatabaseSqlite3MaxConns = ffc("config.database.sqlite3.maxConns", "Maximum connections to the database", i18n.IntType) ConfigDatabaseSqlite3MaxIdleConns = ffc("config.database.sqlite3.maxIdleConns", "The maximum number of idle connections to the database", i18n.IntType) ConfigDatabaseSqlite3URL = ffc("config.database.sqlite3.url", "The SQLite connection string for the database", i18n.StringType) ConfigDataexchangeType = ffc("config.dataexchange.type", "The Data Exchange plugin to use", i18n.StringType) ConfigDataexchangeFfdxInitEnabled = ffc("config.dataexchange.ffdx.initEnabled", "Instructs FireFly to always post all current nodes to the `/init` API before connecting or reconnecting to the connector", i18n.BooleanType) ConfigDataexchangeFfdxManifestEnabled = ffc("config.dataexchange.ffdx.manifestEnabled", "Determines whether to require+validate a manifest from other DX instances in the network. Must be supported by the connector", i18n.StringType) ConfigDataexchangeFfdxURL = ffc("config.dataexchange.ffdx.url", "The URL of the Data Exchange instance", "URL "+i18n.StringType) ConfigDataexchangeFfdxProxyURL = ffc("config.dataexchange.ffdx.proxy.url", "Optional HTTP proxy server to use when connecting to the Data Exchange", "URL "+i18n.StringType) ConfigPluginDataexchange = ffc("config.plugins.dataexchange", "The array of configured Data Exchange plugins ", i18n.StringType) ConfigPluginDataexchangeType = ffc("config.plugins.dataexchange[].type", "The Data Exchange plugin to use", i18n.StringType) ConfigPluginDataexchangeName = ffc("config.plugins.dataexchange[].name", "The name of the configured Data Exchange plugin", i18n.StringType) ConfigPluginDataexchangeFfdxInitEnabled = ffc("config.plugins.dataexchange[].ffdx.initEnabled", "Instructs FireFly to always post all current nodes to the `/init` API before connecting or reconnecting to the connector", i18n.BooleanType) ConfigPluginDataexchangeFfdxManifestEnabled = ffc("config.plugins.dataexchange[].ffdx.manifestEnabled", "Determines whether to require+validate a manifest from other DX instances in the network. Must be supported by the connector", i18n.StringType) ConfigPluginDataexchangeFfdxURL = ffc("config.plugins.dataexchange[].ffdx.url", "The URL of the Data Exchange instance", "URL "+i18n.StringType) ConfigPluginDataexchangeFfdxProxyURL = ffc("config.plugins.dataexchange[].ffdx.proxy.url", "Optional HTTP proxy server to use when connecting to the Data Exchange", "URL "+i18n.StringType) ConfigDebugPort = ffc("config.debug.port", "An HTTP port on which to enable the go debugger", i18n.IntType) ConfigDownloadWorkerCount = ffc("config.download.worker.count", "The number of download workers", i18n.IntType) ConfigDownloadWorkerQueueLength = ffc("config.download.worker.queueLength", "The length of the work queue in the channel to the workers - defaults to 2x the worker count", i18n.IntType) ConfigEventAggregatorBatchSize = ffc("config.event.aggregator.batchSize", "The maximum number of records to read from the DB before performing an aggregation run", i18n.ByteSizeType) ConfigEventAggregatorBatchTimeout = ffc("config.event.aggregator.batchTimeout", "How long to wait for new events to arrive before performing aggregation on a page of events", i18n.TimeDurationType) ConfigEventAggregatorFirstEvent = ffc("config.event.aggregator.firstEvent", "The first event the aggregator should process, if no previous offest is stored in the DB. Valid options are `oldest` or `newest`", i18n.StringType) ConfigEventAggregatorPollTimeout = ffc("config.event.aggregator.pollTimeout", "The time to wait without a notification of new events, before trying a select on the table", i18n.TimeDurationType) ConfigEventAggregatorRewindQueueLength = ffc("config.event.aggregator.rewindQueueLength", "The size of the queue into the rewind dispatcher", i18n.IntType) ConfigEventAggregatorRewindTimout = ffc("config.event.aggregator.rewindTimeout", "The minimum time to wait for rewinds to accumulate before resolving them", i18n.TimeDurationType) ConfigEventAggregatorRewindQueryLimit = ffc("config.event.aggregator.rewindQueryLimit", "Safety limit on the maximum number of records to search when performing queries to search for rewinds", i18n.IntType) ConfigEventDbeventsBufferSize = ffc("config.event.dbevents.bufferSize", "The size of the buffer of change events", i18n.ByteSizeType) ConfigEventDispatcherBatchTimeout = ffc("config.event.dispatcher.batchTimeout", "A short time to wait for new events to arrive before re-polling for new events", i18n.TimeDurationType) ConfigEventDispatcherBufferLength = ffc("config.event.dispatcher.bufferLength", "The number of events + attachments an individual dispatcher should hold in memory ready for delivery to the subscription", i18n.IntType) ConfigEventDispatcherPollTimeout = ffc("config.event.dispatcher.pollTimeout", "The time to wait without a notification of new events, before trying a select on the table", i18n.TimeDurationType) ConfigEventTransportsDefault = ffc("config.event.transports.default", "The default event transport for new subscriptions", i18n.StringType) ConfigEventTransportsEnabled = ffc("config.event.transports.enabled", "Which event interface plugins are enabled", i18n.BooleanType) ConfigHistogramsMaxChartRows = ffc("config.histograms.maxChartRows", "The maximum rows to fetch for each histogram bucket", i18n.IntType) ConfigHTTPAddress = ffc("config.http.address", "The IP address on which the HTTP API should listen", "IP Address "+i18n.StringType) ConfigHTTPPort = ffc("config.http.port", "The port on which the HTTP API should listen", i18n.IntType) ConfigHTTPPublicURL = ffc("config.http.publicURL", "The fully qualified public URL for the API. This is used for building URLs in HTTP responses and in OpenAPI Spec generation", "URL "+i18n.StringType) ConfigHTTPReadTimeout = ffc("config.http.readTimeout", "The maximum time to wait when reading from an HTTP connection", i18n.TimeDurationType) ConfigHTTPWriteTimeout = ffc("config.http.writeTimeout", "The maximum time to wait when writing to an HTTP connection", i18n.TimeDurationType) ConfigPluginIdentity = ffc("config.plugins.identity", "The list of available Identity plugins", i18n.StringType) ConfigPluginIdentityType = ffc("config.plugins.identity[].type", "The type of a configured Identity plugin", i18n.StringType) ConfigPluginIdentityName = ffc("config.plugins.identity[].name", "The name of a configured Identity plugin", i18n.StringType) ConfigIdentityManagerCacheLimit = ffc("config.identity.manager.cache.limit", "The identity manager cache limit in count of items", i18n.IntType) ConfigIdentityManagerLegacySystemIdentitites = ffc("config.identity.manager.legacySystemIdentities", "Whether the identity manager should resolve legacy identities registered on the ff_system namespace", i18n.BooleanType) ConfigLogCompress = ffc("config.log.compress", "Determines if the rotated log files should be compressed using gzip", i18n.BooleanType) ConfigLogFilename = ffc("config.log.filename", "Filename is the file to write logs to. Backup log files will be retained in the same directory", i18n.StringType) ConfigLogFilesize = ffc("config.log.filesize", "MaxSize is the maximum size the log file before it gets rotated", i18n.ByteSizeType) ConfigLogForceColor = ffc("config.log.forceColor", "Force color to be enabled, even when a non-TTY output is detected", i18n.BooleanType) ConfigLogLevel = ffc("config.log.level", "The log level - error, warn, info, debug, trace", i18n.StringType) ConfigLogMaxAge = ffc("config.log.maxAge", "The maximum time to retain old log files based on the timestamp encoded in their filename", i18n.TimeDurationType) ConfigLogMaxBackups = ffc("config.log.maxBackups", "Maximum number of old log files to retain", i18n.IntType) ConfigLogNoColor = ffc("config.log.noColor", "Force color to be disabled, event when TTY output is detected", i18n.BooleanType) ConfigLogTimeFormat = ffc("config.log.timeFormat", "Custom time format for logs", i18n.TimeFormatType) ConfigLogUtc = ffc("config.log.utc", "Use UTC timestamps for logs", i18n.BooleanType) ConfigMessageWriterBatchMaxInserts = ffc("config.message.writer.batchMaxInserts", "The maximum number of database inserts to include when writing a single batch of messages + data", i18n.IntType) ConfigMessageWriterBatchTimeout = ffc("config.message.writer.batchTimeout", "How long to wait for more messages to arrive before flushing the batch", i18n.TimeDurationType) ConfigMessageWriterCount = ffc("config.message.writer.count", "The number of message writer workers", i18n.IntType) ConfigMetricsAddress = ffc("config.metrics.address", "The IP address on which the metrics HTTP API should listen", i18n.IntType) ConfigMetricsEnabled = ffc("config.metrics.enabled", "Enables the metrics API", i18n.BooleanType) ConfigMetricsPath = ffc("config.metrics.path", "The path from which to serve the Prometheus metrics", i18n.StringType) ConfigMetricsPort = ffc("config.metrics.port", "The port on which the metrics HTTP API should listen", i18n.IntType) ConfigMetricsPublicURL = ffc("config.metrics.publicURL", "The fully qualified public URL for the metrics API. This is used for building URLs in HTTP responses and in OpenAPI Spec generation", "URL "+i18n.StringType) ConfigMetricsReadTimeout = ffc("config.metrics.readTimeout", "The maximum time to wait when reading from an HTTP connection", i18n.TimeDurationType) ConfigMetricsWriteTimeout = ffc("config.metrics.writeTimeout", "The maximum time to wait when writing to an HTTP connection", i18n.TimeDurationType) ConfigNamespacesDefault = ffc("config.namespaces.default", "The default namespace - must be in the predefined list", i18n.StringType) ConfigNamespacesPredefined = ffc("config.namespaces.predefined", "A list of namespaces to ensure exists, without requiring a broadcast from the network", "List "+i18n.StringType) ConfigNamespacesPredefinedName = ffc("config.namespaces.predefined[].name", "The name of the namespace (must be unique)", i18n.StringType) ConfigNamespacesPredefinedDescription = ffc("config.namespaces.predefined[].description", "A description for the namespace", i18n.StringType) ConfigNamespacesPredefinedPlugins = ffc("config.namespaces.predefined[].plugins", "The list of plugins for this namespace", i18n.StringType) ConfigNamespacesPredefinedRemoteName = ffc("config.namespaces.predefined[].remoteName", "The namespace name to be sent in plugin calls, if it differs from namespace name", i18n.StringType) ConfigNamespacesPredefinedDefaultKey = ffc("config.namespaces.predefined[].defaultKey", "A default signing key for blockchain transactions within this namespace", i18n.StringType) ConfigNamespacesMultipartyEnabled = ffc("config.namespaces.predefined[].multiparty.enabled", "Enables multi-party mode for this namespace (defaults to true if an org name or key is configured, either here or at the root level)", i18n.BooleanType) ConfigNamespacesMultipartyOrgName = ffc("config.namespaces.predefined[].multiparty.org.name", "A short name for the local root organization within this namespace", i18n.StringType) ConfigNamespacesMultipartyOrgDesc = ffc("config.namespaces.predefined[].multiparty.org.description", "A description for the local root organization within this namespace", i18n.StringType) ConfigNamespacesMultipartyOrgKey = ffc("config.namespaces.predefined[].multiparty.org.key", "The signing key allocated to the root organization within this namespace", i18n.StringType) ConfigNodeDescription = ffc("config.node.description", "The description of this FireFly node", i18n.StringType) ConfigNodeName = ffc("config.node.name", "The name of this FireFly node", i18n.StringType) ConfigOpupdateWorkerBatchMaxInserts = ffc("config.opupdate.worker.batchMaxInserts", "The maximum number of database inserts to include when writing a single batch of messages + data", i18n.IntType) ConfigOpupdateWorkerBatchTimeout = ffc("config.opupdate.worker.batchTimeout", "How long to wait for more messages to arrive before flushing the batch", i18n.TimeDurationType) ConfigOpupdateWorkerCount = ffc("config.opupdate.worker.count", "The number of operation update works", i18n.IntType) ConfigOpupdateWorkerQueueLength = ffc("config.opupdate.worker.queueLength", "The size of the queue for the Operation Update worker", i18n.IntType) ConfigOrchestratorStartupAttempts = ffc("config.orchestrator.startupAttempts", "The number of times to attempt to connect to core infrastructure on startup", i18n.StringType) ConfigOrgDescription = ffc("config.org.description", "A description of the organization to which this FireFly node belongs (deprecated - should be set on each multi-party namespace instead)", i18n.StringType) ConfigOrgKey = ffc("config.org.key", "The signing key allocated to the organization (deprecated - should be set on each multi-party namespace instead)", i18n.StringType) ConfigOrgName = ffc("config.org.name", "The name of the organization to which this FireFly node belongs (deprecated - should be set on each multi-party namespace instead)", i18n.StringType) ConfigPrivatemessagingBatchAgentTimeout = ffc("config.privatemessaging.batch.agentTimeout", "How long to keep around a batching agent for a sending identity before disposal", i18n.TimeDurationType) ConfigPrivatemessagingBatchPayloadLimit = ffc("config.privatemessaging.batch.payloadLimit", "The maximum payload size of a private message Data Exchange payload", i18n.ByteSizeType) ConfigPrivatemessagingBatchSize = ffc("config.privatemessaging.batch.size", "The maximum number of messages in a batch for private messages", i18n.IntType) ConfigPrivatemessagingBatchTimeout = ffc("config.privatemessaging.batch.timeout", "The timeout to wait for a batch to fill, before sending", i18n.TimeDurationType) ConfigSubscriptionMax = ffc("config.subscription.max", "The maximum number of pre-defined subscriptions that can exist (note for high fan-out consider connecting a dedicated pub/sub broker to the dispatcher)", i18n.IntType) ConfigSubscriptionDefaultsBatchSize = ffc("config.subscription.defaults.batchSize", "Default read ahead to enable for subscriptions that do not explicitly configure readahead", i18n.IntType) ConfigTokensConnector = ffc("config.tokens[].connector", "The name of the Tokens Connector. This will be used in the FireFly API path to refer to this specific Token Connector", i18n.StringType) ConfigTokensName = ffc("config.tokens[].name", "The name of the Tokens Connector. This will be used in the FireFly API path to refer to this specific Token Connector", i18n.StringType) ConfigTokensPlugin = ffc("config.tokens[].plugin", "The name of the Tokens Connector plugin to use", i18n.StringType) ConfigTokensURL = ffc("config.tokens[].url", "The URL of the Token Connector", "URL "+i18n.StringType) ConfigPluginTokens = ffc("config.plugins.tokens", "The tokens plugin configurations. This will be used to configure tokens connectors", i18n.StringType) ConfigPluginTokensName = ffc("config.plugins.tokens[].name", "The name of the Tokens Connector. This will be used in the FireFly API path to refer to this specific Token Connector", i18n.StringType) ConfigPluginTokensType = ffc("config.plugins.tokens[].type", "The type of the Tokens Connector plugin to use", i18n.StringType) ConfigPluginTokensURL = ffc("config.plugins.tokens[].fftokens.url", "The URL of the Token Connector", "URL "+i18n.StringType) ConfigPluginTokensProxyURL = ffc("config.plugins.tokens[].fftokens.proxy.url", "Optional HTTP proxy server to use when connecting to the Token Connector", "URL "+i18n.StringType) ConfigTokensProxyURL = ffc("config.tokens[].proxy.url", "Optional HTTP proxy server to use when connecting to the Token Connector", "URL "+i18n.StringType) ConfigUIEnabled = ffc("config.ui.enabled", "Enables the web user interface", i18n.BooleanType) ConfigUIPath = ffc("config.ui.path", "The file system path which contains the static HTML, CSS, and JavaScript files for the user interface", i18n.StringType) ConfigAPIOASPanicOnMissingDescription = ffc("config.api.oas.panicOnMissingDescription", "Used for testing purposes only", i18n.IgnoredType) ConfigAdminWebSocketBlockedWarnInternal = ffc("config.admin.ws.blockedWarnInterval", "How often to log warnings in core, when an admin change event listener falls behind the stream they requested and misses events", i18n.TimeDurationType) ConfigAdminWebSocketEventQueueLength = ffc("config.admin.ws.eventQueueLength", "Server-side queue length for events waiting for delivery over an admin change event listener websocket", i18n.IntType) )
View Source
var ( MsgConfigFailed = ffe("FF10101", "Failed to read config") MsgJSONDecodeFailed = ffe("FF10103", "Failed to decode input JSON") MsgTLSConfigFailed = ffe("FF10105", "Failed to initialize TLS configuration") MsgResponseMarshalError = ffe("FF10107", "Failed to serialize response data", 400) MsgWebsocketClientError = ffe("FF10108", "Error received from WebSocket client: %s") Msg404NotFound = ffe("FF10109", "Not found", 404) MsgUnknownBlockchainPlugin = ffe("FF10110", "Unknown blockchain plugin: %s") MsgEthconnectRESTErr = ffe("FF10111", "Error from ethconnect: %s") MsgDBInitFailed = ffe("FF10112", "Database initialization failed") MsgDBQueryBuildFailed = ffe("FF10113", "Database query builder failed") MsgDBBeginFailed = ffe("FF10114", "Database begin transaction failed") MsgDBQueryFailed = ffe("FF10115", "Database query failed") MsgDBInsertFailed = ffe("FF10116", "Database insert failed") MsgDBUpdateFailed = ffe("FF10117", "Database update failed") MsgDBDeleteFailed = ffe("FF10118", "Database delete failed") MsgDBCommitFailed = ffe("FF10119", "Database commit failed") MsgDBMissingJoin = ffe("FF10120", "Database missing expected join entry in table '%s' for id '%s'") MsgDBReadErr = ffe("FF10121", "Database resultset read error from table '%s'") MsgUnknownDatabasePlugin = ffe("FF10122", "Unknown database plugin '%s'") MsgNullDataReferenceID = ffe("FF10123", "Data id is null in message data reference %d") MsgDupDataReferenceID = ffe("FF10124", "Duplicate data ID in message '%s'") MsgScanFailed = ffe("FF10125", "Failed to restore type '%T' into '%T'") MsgUnregisteredBatchType = ffe("FF10126", "Unregistered batch type '%s'") MsgBatchDispatchTimeout = ffe("FF10127", "Timed out dispatching work to batch") MsgInitializationNilDepError = ffe("FF10128", "Initialization failed in %s due to unmet dependency") MsgNilResponseNon204 = ffe("FF10129", "No output from API call") MsgInvalidContentType = ffe("FF10130", "Invalid content type", 415) MsgDataNotFound = ffe("FF10133", "Data not found for message %s", 400) MsgIPFSHashDecodeFailed = ffe("FF10135", "Failed to decode IPFS hash into 32byte value '%s'") MsgIPFSRESTErr = ffe("FF10136", "Error from IPFS: %s") MsgSerializationFailed = ffe("FF10137", "Serialization failed") MsgMissingPluginConfig = ffe("FF10138", "Missing configuration '%s' for %s") MsgMissingDataHashIndex = ffe("FF10139", "Missing data hash for index '%d' in message", 400) MsgInvalidEthAddress = ffe("FF10141", "Supplied ethereum address is invalid", 400) Msg404NoResult = ffe("FF10143", "No result found", 404) MsgUnsupportedSQLOpInFilter = ffe("FF10150", "No SQL mapping implemented for filter operator '%s'", 400) MsgFilterSortDesc = ffe("FF10154", "Sort field. For multi-field sort use comma separated values (or multiple query values) with '-' prefix for descending") MsgContextCanceled = ffe("FF00154", "Context cancelled") MsgDBMigrationFailed = ffe("FF10163", "Database migration failed") MsgHashMismatch = ffe("FF10164", "Hash mismatch") MsgDefaultNamespaceNotFound = ffe("FF10166", "namespaces.default '%s' must be included in the namespaces.predefined configuration") MsgEventTypesParseFail = ffe("FF10168", "Unable to parse list of event types", 400) MsgUnknownEventType = ffe("FF10169", "Unknown event type '%s'", 400) MsgIDMismatch = ffe("FF10170", "ID mismatch") MsgRegexpCompileFailed = ffe("FF10171", "Unable to compile '%s' regexp '%s'") MsgUnknownEventTransportPlugin = ffe("FF10172", "Unknown event transport plugin: %s") MsgWSConnectionNotActive = ffe("FF10173", "Websocket connection '%s' no longer active") MsgWSSubAlreadyInFlight = ffe("FF10174", "Websocket subscription '%s' already has a message in flight") MsgWSMsgSubNotMatched = ffe("FF10175", "Acknowledgment does not match an inflight event + subscription") MsgWSClientSentInvalidData = ffe("FF10176", "Invalid data") MsgWSClientUnknownAction = ffe("FF10177", "Unknown action '%s'") MsgWSInvalidStartAction = ffe("FF10178", "A start action must set namespace and either a name or ephemeral=true") MsgWSAutoAckChanged = ffe("FF10179", "The autoack option must be set consistently on all start requests") MsgWSAutoAckEnabled = ffe("FF10180", "The autoack option is enabled on this connection") MsgConnSubscriptionNotStarted = ffe("FF10181", "Subscription %v is not started on connection") MsgDispatcherClosing = ffe("FF10182", "Event dispatcher closing") MsgMaxFilterSkip = ffe("FF10183", "You have reached the maximum pagination limit for this query (%d)") MsgMaxFilterLimit = ffe("FF10184", "Your query exceeds the maximum filter limit (%d)") MsgAPIServerStaticFail = ffe("FF10185", "An error occurred loading static content", 500) MsgEventListenerClosing = ffe("FF10186", "Event listener closing") MsgNamespaceNotExist = ffe("FF10187", "Namespace does not exist") MsgInvalidSubscription = ffe("FF10189", "Invalid subscription", 400) MsgMismatchedTransport = ffe("FF10190", "Connection ID '%s' appears not to be unique between transport '%s' and '%s'", 400) MsgInvalidFirstEvent = ffe("FF10191", "Invalid firstEvent definition - must be 'newest','oldest' or a sequence number", 400) MsgNumberMustBeGreaterEqual = ffe("FF10192", "Number must be greater than or equal to %d", 400) MsgAlreadyExists = ffe("FF10193", "A %s with name '%s:%s' already exists", 409) MsgJSONValidatorBadRef = ffe("FF10194", "Cannot use JSON validator for data with type '%s' and validator reference '%v'", 400) MsgDatatypeNotFound = ffe("FF10195", "Datatype '%v' not found", 400) MsgSchemaLoadFailed = ffe("FF10196", "Datatype '%s' schema invalid", 400) MsgDataCannotBeValidated = ffe("FF10197", "Data cannot be validated", 400) MsgJSONDataInvalidPerSchema = ffe("FF10198", "Data does not conform to the JSON schema of datatype '%s': %s", 400) MsgDataValueIsNull = ffe("FF10199", "Data value is null", 400) MsgDataInvalidHash = ffe("FF10201", "Invalid data: hashes do not match Hash=%s Expected=%s", 400) MsgDataReferenceUnresolvable = ffe("FF10204", "Data reference %d cannot be resolved", 400) MsgDataMissing = ffe("FF10205", "Data entry %d has neither 'id' to refer to existing data, or 'value' to include in-line JSON data", 400) MsgAuthorInvalid = ffe("FF10206", "Invalid author specified", 400) MsgNoTransaction = ffe("FF10207", "Message does not have a transaction", 404) MsgBatchNotSet = ffe("FF10208", "Message does not have an assigned batch", 404) MsgBatchNotFound = ffe("FF10209", "Batch '%s' not found for message", 500) MsgBatchTXNotSet = ffe("FF10210", "Batch '%s' does not have an assigned transaction", 404) MsgOwnerMissing = ffe("FF10211", "Owner missing", 400) MsgUnknownIdentityPlugin = ffe("FF10212", "Unknown Identity plugin '%s'") MsgUnknownDataExchangePlugin = ffe("FF10213", "Unknown Data Exchange plugin '%s'") MsgParentIdentityNotFound = ffe("FF10214", "Identity '%s' not found in identity chain for %s '%s'") MsgInvalidSigningIdentity = ffe("FF10215", "Invalid signing identity") MsgNodeAndOrgIDMustBeSet = ffe("FF10216", "node.name, org.name and org.key must be configured first", 409) MsgBlobStreamingFailed = ffe("FF10217", "Blob streaming terminated with error", 500) MsgMultiPartFormReadError = ffe("FF10218", "Error reading multi-part form input", 400) MsgNodeNotFound = ffe("FF10224", "Node with name or identity '%s' not found", 400) MsgLocalNodeResolveFailed = ffe("FF10225", "Unable to find local node to add to group. Check the status API to confirm the node is registered", 500) MsgGroupNotFound = ffe("FF10226", "Group '%s' not found", 404) MsgDXRESTErr = ffe("FF10229", "Error from data exchange: %s") MsgInvalidHex = ffe("FF10231", "Invalid hex supplied", 400) MsgInvalidWrongLenB32 = ffe("FF00107", "Byte length must be 32 (64 hex characters)", 400) MsgNodeNotFoundInOrg = ffe("FF10233", "Unable to find any nodes owned by org '%s', or parent orgs", 400) MsgFieldsAfterFile = ffe("FF10236", "Additional form field sent after file in multi-part form (ignored): '%s'", 400) MsgDXBadResponse = ffe("FF10237", "Unexpected '%s' in data exchange response: %s") MsgDXBadHash = ffe("FF10238", "Unexpected hash returned from data exchange upload. Hash=%s Expected=%s") MsgBlobNotFound = ffe("FF10239", "No blob has been uploaded or confirmed received, with hash=%s", 404) MsgDownloadBlobFailed = ffe("FF10240", "Error download blob with reference '%s' from local data exchange") MsgDataDoesNotHaveBlob = ffe("FF10241", "Data does not have a blob attachment", 404) MsgWebhookURLEmpty = ffe("FF10242", "Webhook subscription option 'url' cannot be empty", 400) MsgWebhookInvalidStringMap = ffe("FF10243", "Webhook subscription option '%s' must be map of string values. %s=%T", 400) MsgWebsocketsNoData = ffe("FF10244", "Websockets subscriptions do not support streaming the full data payload, just the references (withData must be false)", 400) MsgWebhooksWithData = ffe("FF10245", "Webhook subscriptions require the full data payload (withData must be true)", 400) MsgWebhooksReplyBadJSON = ffe("FF10257", "Failed to process reply from webhook as JSON") MsgRequestTimeout = ffe("FF10260", "The request with id '%s' timed out after %.2fms", 408) MsgRequestReplyTagRequired = ffe("FF10261", "For request messages 'header.tag' must be set on the request message to route it to a suitable responder", 400) MsgRequestCannotHaveCID = ffe("FF10262", "For request messages 'header.cid' must be unset", 400) MsgSystemTransportInternal = ffe("FF10266", "You cannot create subscriptions on the system events transport") MsgFilterCountNotSupported = ffe("FF10267", "This query does not support generating a count of all results") MsgRejected = ffe("FF10269", "Message with ID '%s' was rejected. Please check the FireFly logs for more information") MsgRequestMustBePrivate = ffe("FF10271", "For request messages you must specify a group of private recipients", 400) MsgUnknownTokensPlugin = ffe("FF10272", "Unknown tokens plugin '%s'", 400) MsgMissingTokensPluginConfig = ffe("FF10273", "Invalid tokens configuration - name and plugin are required", 400) MsgTokensRESTErr = ffe("FF10274", "Error from tokens service: %s") MsgTokenPoolDuplicate = ffe("FF10275", "Duplicate token pool: %s") MsgTokenPoolRejected = ffe("FF10276", "Token pool with ID '%s' was rejected. Please check the FireFly logs for more information") MsgIdentityNotFoundByString = ffe("FF10277", "Identity could not be resolved via lookup string '%s'") MsgAuthorOrgSigningKeyMismatch = ffe("FF10279", "Author organization '%s' is not associated with signing key '%s'") MsgCannotTransferToSelf = ffe("FF10280", "From and to addresses must be different", 400) MsgLocalOrgLookupFailed = ffe("FF10281", "Unable resolve the local org '%s' by the configured signing key on the node. Please confirm the org is registered with key '%s'", 500) MsgFabconnectRESTErr = ffe("FF10284", "Error from fabconnect: %s") MsgInvalidIdentity = ffe("FF10285", "Supplied Fabric signer identity is invalid", 400) MsgFailedToDecodeCertificate = ffe("FF10286", "Failed to decode certificate: %s", 500) MsgInvalidMessageType = ffe("FF10287", "Invalid message type - allowed types are %s", 400) MsgWSClosed = ffe("FF10290", "Websocket closed") MsgFieldNotSpecified = ffe("FF10292", "Field '%s' must be specified", 400) MsgTokenPoolNotConfirmed = ffe("FF10293", "Token pool is not yet confirmed") MsgHistogramCollectionParam = ffe("FF10297", "Collection to fetch") MsgInvalidNumberOfIntervals = ffe("FF10298", "Number of time intervals must be between %d and %d", 400) MsgInvalidChartNumberParam = ffe("FF10299", "Invalid %s. Must be a number.", 400) MsgHistogramInvalidTimes = ffe("FF10300", "Start time must be before end time", 400) MsgUnsupportedCollection = ffe("FF10301", "%s collection is not supported", 400) MsgContractInterfaceExists = ffe("FF10302", "A contract interface already exists in the namespace: '%s' with name: '%s' and version: '%s'", 409) MsgContractInterfaceNotFound = ffe("FF10303", "Contract interface %s not found", 404) MsgContractMissingInputArgument = ffe("FF10304", "Missing required input argument '%s'", 400) MsgContractWrongInputType = ffe("FF10305", "Input '%v' is of type '%v' not expected type of '%v'", 400) MsgContractMissingInputField = ffe("FF10306", "Expected object of type '%v' to contain field named '%v' but it was missing", 400) MsgContractMapInputType = ffe("FF10307", "Unable to map input type '%v' to known FireFly type - was expecting '%v'", 400) MsgContractByteDecode = ffe("FF10308", "Unable to decode field '%v' as bytes", 400) MsgContractInternalType = ffe("FF10309", "Input '%v' of type '%v' is not compatible blockchain internalType of '%v'", 400) MsgContractLocationInvalid = ffe("FF10310", "Failed to validate contract location: %v", 400) MsgContractParamInvalid = ffe("FF10311", "Failed to validate contract param: %v", 400) MsgContractListenerNameExists = ffe("FF10312", "A contract listener already exists in the namespace: '%s' with name: '%s'", 409) MsgContractMethodNotSet = ffe("FF10313", "Either an interface reference and method path, or in-line method definition, must be supplied on invoke contract request", 400) MsgContractMethodResolveError = ffe("FF10315", "Unable to resolve contract method: %s", 400) MsgContractLocationExists = ffe("FF10316", "The contract location cannot be changed after it is created", 400) MsgListenerNoEvent = ffe("FF10317", "Either an interface reference and event path, or in-line event definition must be supplied when creating a contract listener", 400) MsgListenerEventNotFound = ffe("FF10318", "No event was found in namespace '%s' with id '%s'", 400) MsgEventNameMustBeSet = ffe("FF10319", "Event name must be set", 400) MsgMethodNameMustBeSet = ffe("FF10320", "Method name must be set", 400) MsgContractEventResolveError = ffe("FF10321", "Unable to resolve contract event", 400) MsgQueryOpUnsupportedMod = ffe("FF10322", "Operation '%s' on '%s' does not support modifiers", 400) MsgDXBadSize = ffe("FF10323", "Unexpected size returned from data exchange upload. Size=%d Expected=%d") MsgTooLargeBroadcast = ffe("FF10327", "Message size %.2fkb is too large for the max broadcast batch size of %.2fkb", 400) MsgTooLargePrivate = ffe("FF10328", "Message size %.2fkb is too large for the max private message size of %.2fkb", 400) MsgManifestMismatch = ffe("FF10329", "Manifest mismatch overriding '%s' status as failure: '%s'", 400) MsgFFIValidationFail = ffe("FF10331", "Field '%s' does not validate against the provided schema", 400) MsgFFISchemaParseFail = ffe("FF10332", "Failed to parse schema for param '%s'", 400) MsgFFISchemaCompileFail = ffe("FF10333", "Failed compile schema for param '%s'", 400) MsgPluginInitializationFailed = ffe("FF10334", "Plugin initialization error", 500) MsgUnknownTransactionType = ffe("FF10336", "Unknown transaction type '%s'", 400) MsgGoTemplateCompileFailed = ffe("FF10337", "Go template compilation for '%s' failed: %s", 500) MsgGoTemplateExecuteFailed = ffe("FF10338", "Go template execution for '%s' failed: %s", 500) MsgAddressResolveFailed = ffe("FF10339", "Failed to resolve signing key string '%s': %s", 500) MsgAddressResolveBadStatus = ffe("FF10340", "Failed to resolve signing key string '%s' [%d]: %s", 500) MsgAddressResolveBadResData = ffe("FF10341", "Failed to resolve signing key string '%s' - invalid address returned '%s': %s", 500) MsgDXNotInitialized = ffe("FF10342", "Data exchange is initializing") MsgGroupRequired = ffe("FF10344", "Group must be set", 400) MsgDBLockFailed = ffe("FF10345", "Database lock failed") MsgFFIGenerationFailed = ffe("FF10346", "Error generating smart contract interface: %s", 400) MsgFFIGenerationUnsupported = ffe("FF10347", "Smart contract interface generation is not supported by this blockchain plugin", 400) MsgBlobHashMismatch = ffe("FF10348", "Blob hash mismatch sent=%s received=%s", 400) MsgDIDResolverUnknown = ffe("FF10349", "DID resolver unknown for DID: %s", 400) MsgIdentityNotOrg = ffe("FF10350", "Identity '%s' with DID '%s' is not an organization", 400) MsgIdentityNotNode = ffe("FF10351", "Identity '%s' with DID '%s' is not a node", 400) MsgBlockchainKeyNotSet = ffe("FF10352", "No blockchain key specified", 400) MsgNoVerifierForIdentity = ffe("FF10353", "No %s verifier registered for identity %s", 400) MsgNodeMissingBlockchainKey = ffe("FF10354", "No default signing key or organization signing key configured for this namespace", 400) MsgAuthorRegistrationMismatch = ffe("FF10355", "Verifier '%s' cannot be used for signing with author '%s'. Verifier registered to '%s'", 400) MsgAuthorMissingForKey = ffe("FF10356", "Key '%s' has not been registered by any identity, and a separate 'author' was not supplied", 404) MsgAuthorIncorrectForRootReg = ffe("FF10357", "Author namespace '%s' and DID '%s' combination invalid for root organization registration", 400) MsgKeyIdentityMissing = ffe("FF10358", "Identity owner of key '%s' not found", 500) MsgIdentityChainLoop = ffe("FF10364", "Loop detected on identity %s in chain for %s (%s)", 400) MsgInvalidIdentityParentType = ffe("FF10365", "Parent %s (%s) of type %s is invalid for child %s (%s) of type", 400) MsgParentIdentityMissingClaim = ffe("FF10366", "Parent %s (%s) is invalid (missing claim)", 400) MsgDXInfoMissingID = ffe("FF10367", "Data exchange endpoint info missing 'id' field", 500) MsgEventNotFound = ffe("FF10370", "Event with name '%s' not found", 400) MsgOperationNotSupported = ffe("FF10371", "Operation not supported: %s", 400) MsgFailedToRetrieve = ffe("FF10372", "Failed to retrieve %s %s", 500) MsgBlobMissingPublic = ffe("FF10373", "Blob for data %s missing public payload reference while flushing batch", 500) MsgDBMultiRowConfigError = ffe("FF10374", "Database invalid configuration - using multi-row insert on DB plugin that does not support query syntax for input") MsgDBNoSequence = ffe("FF10375", "Failed to retrieve sequence for insert row %d (could mean duplicate insert)", 500) MsgDownloadBatchMaxBytes = ffe("FF10377", "Error downloading batch with reference '%s' from shared storage - maximum size limit reached") MsgOperationDataIncorrect = ffe("FF10378", "Operation data type incorrect: %T", 400) MsgDataMissingBlobHash = ffe("FF10379", "Blob for data %s cannot be transferred as it is missing a hash", 500) MsgUnexpectedDXMessageType = ffe("FF10380", "Unexpected websocket event type from DX plugin: %s", 500) MsgFieldDescriptionMissing = ffe("FF10381", "Field description missing for '%s' on route '%s'") MsgFFStructTagMissing = ffe("FF10382", "ffstruct tag is missing for '%s' on route '%s'") MsgContractListenerExists = ffe("FF10383", "A contract listener already exists for this combination of topic + location + event", 409) MsgRouteDescriptionMissing = ffe("FF10384", "API route description missing for route '%s'") MsgInvalidOutputOption = ffe("FF10385", "invalid output option '%s'") MsgInvalidPluginConfiguration = ffe("FF10386", "Invalid %s plugin configuration - name and type are required") MsgReferenceMarkdownMissing = ffe("FF10387", "Reference markdown file missing: '%s'") MsgFFSystemReservedName = ffe("FF10388", "Invalid namespace configuration - %s is a reserved name") MsgInvalidNamespaceMode = ffe("FF10389", "Invalid %s namespace configuration - unknown mode") MsgNamespaceUnknownPlugin = ffe("FF10390", "Invalid %s namespace configuration - unknown plugin %s") MsgNamespaceMultipartyConfiguration = ffe("FF10391", "Invalid %s multiparty namespace configuration - database, blockchain, shared storage, and data exchange plugins are required") MsgNamespaceGatewayNoDB = ffe("FF10392", "Invalid %s gateway namespace configuration - a database plugin is required") MsgNamespaceGatewayInvalidPlugins = ffe("FF10393", "Invalid %s gateway namespace configuration - cannot specify dataexchange or shared storage plugins") MsgNamespaceGatewayMultiplePluginType = ffe("FF10394", "Invalid %s namespace configuration - multiple %s plugins provided") MsgDuplicatePluginName = ffe("FF10395", "Invalid plugin configuration - plugin with name %s already exists") MsgInvalidFireFlyContractIndex = ffe("FF10396", "No configuration found for FireFly contract at %s") MsgUnrecognizedNetworkAction = ffe("FF10397", "Unrecognized network action: %s", 400) MsgOverrideExistingFieldCustomOption = ffe("FF10398", "Cannot override existing field with custom option named '%s'", 400) MsgTerminateNotSupported = ffe("FF10399", "The 'terminate' operation to mark a switchover of smart contracts is not supported on namespace %s", 400) )
View Source
var ( // MessageHeader field descriptions MessageHeaderID = ffm("MessageHeader.id", "The UUID of the message. Unique to each message") MessageHeaderCID = ffm("MessageHeader.cid", "The correlation ID of the message. Set this when a message is a response to another message") MessageHeaderType = ffm("MessageHeader.type", "The type of the message") MessageHeaderTxType = ffm("MessageHeader.txtype", "The type of transaction used to order/deliver this message") MessageHeaderCreated = ffm("MessageHeader.created", "The creation time of the message") MessageHeaderNamespace = ffm("MessageHeader.namespace", "The namespace of the message") MessageHeaderGroup = ffm("MessageHeader.group", "Private messages only - the identifier hash of the privacy group. Derived from the name and member list of the group") MessageHeaderTopics = ffm("MessageHeader.topics", "A message topic associates this message with an ordered stream of data. A custom topic should be assigned - using the default topic is discouraged") MessageHeaderTag = ffm("MessageHeader.tag", "The message tag indicates the purpose of the message to the applications that process it") MessageHeaderDataHash = ffm("MessageHeader.datahash", "A single hash representing all data in the message. Derived from the array of data ids+hashes attached to this message") // Message field descriptions MessageHeader = ffm("Message.header", "The message header contains all fields that are used to build the message hash") MessageHash = ffm("Message.hash", "The hash of the message. Derived from the header, which includes the data hash") MessageBatchID = ffm("Message.batch", "The UUID of the batch in which the message was pinned/transferred") MessageState = ffm("Message.state", "The current state of the message") MessageConfirmed = ffm("Message.confirmed", "The timestamp of when the message was confirmed/rejected") MessageData = ffm("Message.data", "The list of data elements attached to the message") MessagePins = ffm("Message.pins", "For private messages, a unique pin hash:nonce is assigned for each topic") // MessageInOut field descriptions MessageInOutData = ffm("MessageInOut.data", "For input allows you to specify data in-line in the message, that will be turned into data attachments. For output when fetchdata is used on API calls, includes the in-line data payloads of all data attachments") MessageInOutGroup = ffm("MessageInOut.group", "Allows you to specify details of the private group of recipients in-line in the message. Alternative to using the header.group to specify the hash of a group that has been previously resolved") // InputGroup field descriptions InputGroupName = ffm("InputGroup.name", "Optional name for the group. Allows you to have multiple separate groups with the same list of participants") InputGroupMembers = ffm("InputGroup.members", "An array of members of the group. If no identities local to the sending node are included, then the organization owner of the local node is added automatically") // DataRefOrValue field descriptions DataRefOrValueValidator = ffm("DataRefOrValue.validator", "The data validator type to use for in-line data") DataRefOrValueDatatype = ffm("DataRefOrValue.datatype", "The optional datatype to use for validation of the in-line data") DataRefOrValueValue = ffm("DataRefOrValue.value", "The in-line value for the data. Can be any JSON type - object, array, string, number or boolean") DataRefOrValueBlob = ffm("DataRefOrValue.blob", "An optional in-line hash reference to a previously uploaded binary data blob") // MessageRef field descriptions MessageRefID = ffm("MessageRef.id", "The UUID of the referenced message") MessageRefHash = ffm("MessageRef.hash", "The hash of the referenced message") // Group field descriptions GroupNamespace = ffm("Group.namespace", "The namespace of the group") GroupName = ffm("Group.name", "The optional name of the group, allowing multiple unique groups to exist with the same list of recipients") GroupMembers = ffm("Group.members", "The list of members in this privacy group") GroupMessage = ffm("Group.message", "The message used to broadcast this group privately to the members") GroupHash = ffm("Group.hash", "The identifier hash of this group. Derived from the name and group members") GroupCreated = ffm("Group.created", "The time when the group was first used to send a message in the network") // MemberInput field descriptions MemberInputIdentity = ffm("MemberInput.identity", "The DID of the group member. On input can be a UUID or org name, and will be resolved to a DID") MemberInputNode = ffm("MemberInput.node", "The UUID of the node that will receive a copy of the off-chain message for the identity. The first applicable node for the identity will be picked automatically on input if not specified") // Member field descriptions MemberIdentity = ffm("Member.identity", "The DID of the group member") MembertNode = ffm("Member.node", "The UUID of the node that receives a copy of the off-chain message for the identity") // DataRef field descriptions DataRefID = ffm("DataRef.id", "The UUID of the referenced data resource") DataRefHash = ffm("DataRef.hash", "The hash of the referenced data") // BlobRef field descriptions BlobRefHash = ffm("BlobRef.hash", "The hash of the binary blob data") BlobRefSize = ffm("BlobRef.size", "The size of the binary data") BlobRefName = ffm("BlobRef.name", "The name field from the metadata attached to the blob, commonly used as a path/filename, and indexed for search") BlobRefPublic = ffm("BlobRef.public", "If this data has been published to shared storage, this field is the id of the data in the shared storage plugin (IPFS hash etc.)") // Data field descriptions DataID = ffm("Data.id", "The UUID of the data resource") DataValidator = ffm("Data.validator", "The data validator type") DataNamespace = ffm("Data.namespace", "The namespace of the data resource") DataHash = ffm("Data.hash", "The hash of the data resource. Derived from the value and the hash of any binary blob attachment") DataCreated = ffm("Data.created", "The creation time of the data resource") DataDatatype = ffm("Data.datatype", "The optional datatype to use of validation of this data") DataValue = ffm("Data.value", "The value for the data, stored in the FireFly core database. Can be any JSON type - object, array, string, number or boolean. Can be combined with a binary blob attachment") DataBlob = ffm("Data.blob", "An optional hash reference to a binary blob attachment") // DatatypeRef field descriptions DatatypeRefName = ffm("DatatypeRef.name", "The name of the datatype") DatatypeRefVersion = ffm("DatatypeRef.version", "The version of the datatype. Semantic versioning is encouraged, such as v1.0.1") // Datatype field descriptions DatatypeID = ffm("Datatype.id", "The UUID of the datatype") DatatypeMessage = ffm("Datatype.message", "The UUID of the broadcast message that was used to publish this datatype to the network") DatatypeValidator = ffm("Datatype.validator", "The validator that should be used to verify this datatype") DatatypeNamespace = ffm("Datatype.namespace", "The namespace of the datatype. Data resources can only be created referencing datatypes in the same namespace") DatatypeName = ffm("Datatype.name", "The name of the datatype") DatatypeVersion = ffm("Datatype.version", "The version of the datatype. Multiple versions can exist with the same name. Use of semantic versioning is encourages, such as v1.0.1") DatatypeHash = ffm("Datatype.hash", "The hash of the value, such as the JSON schema. Allows all parties to be confident they have the exact same rules for verifying data created against a datatype") DatatypeCreated = ffm("Datatype.created", "The time the datatype was created") DatatypeValue = ffm("Datatype.value", "The definition of the datatype, in the syntax supported by the validator (such as a JSON Schema definition)") // SignerRef field descriptions SignerRefAuthor = ffm("SignerRef.author", "The DID of identity of the submitter") SignerRefKey = ffm("SignerRef.key", "The on-chain signing key used to sign the transaction") // MessageManifestEntry field descriptions MessageManifestEntry = ffm("MessageManifestEntry.topics", "The count of topics in the message") // BatchHeader field descriptions BatchHeaderID = ffm("BatchHeader.id", "The UUID of the batch") BatchHeaderType = ffm("BatchHeader.type", "The type of the batch") BatchHeaderNamespace = ffm("BatchHeader.namespace", "The namespace of the batch") BatchHeaderNode = ffm("BatchHeader.node", "The UUID of the node that generated the batch") BatchHeaderGroup = ffm("BatchHeader.group", "The privacy group the batch is sent to, for private batches") BatchHeaderCreated = ffm("BatchHeader.created", "The time the batch was sealed") // BatchManifest field descriptions BatchManifestVersion = ffm("BatchManifest.version", "The version of the manifest generated") BatchManifestID = ffm("BatchManifest.id", "The UUID of the batch") BatchManifestTX = ffm("BatchManifest.tx", "The FireFly transaction associated with this batch") BatchManifestMessages = ffm("BatchManifest.messages", "Array of manifest entries, succinctly summarizing the messages in the batch") BatchManifestData = ffm("BatchManifest.data", "Array of manifest entries, succinctly summarizing the data in the batch") // BatchPersisted field descriptions BatchPersistedHash = ffm("Batch.hash", "The hash of the manifest of the batch") BatchPersistedManifest = ffm("Batch.manifest", "The manifest of the batch") BatchPersistedTX = ffm("Batch.tx", "The FireFly transaction associated with this batch") BatchPersistedPayloadRef = ffm("Batch.payloadRef", "For broadcast batches, this is the reference to the binary batch in shared storage") BatchPersistedConfirmed = ffm("Batch.confirmed", "The time when the batch was confirmed") // Transaction field descriptions TransactionID = ffm("Transaction.id", "The UUID of the FireFly transaction") TransactionType = ffm("Transaction.type", "The type of the FireFly transaction") TransactionNamespace = ffm("Transaction.namespace", "The namespace of the FireFly transaction") TransactionCreated = ffm("Transaction.created", "The time the transaction was created on this node. Note the transaction is individually created with the same UUID on each participant in the FireFly transaction") TransactionBlockchainID = ffm("Transaction.blockchainId", "The blockchain transaction ID, in the format specific to the blockchain involved in the transaction. Not all FireFly transactions include a blockchain") TransactionBlockchainIDs = ffm("Transaction.blockchainIds", "The blockchain transaction ID, in the format specific to the blockchain involved in the transaction. Not all FireFly transactions include a blockchain. FireFly transactions are extensible to support multiple blockchain transactions") // Operation field description OperationID = ffm("Operation.id", "The UUID of the operation") OperationNamespace = ffm("Operation.namespace", "The namespace of the operation") OperationTransaction = ffm("Operation.tx", "The UUID of the FireFly transaction the operation is part of") OperationType = ffm("Operation.type", "The type of the operation") OperationStatus = ffm("Operation.status", "The current status of the operation") OperationPlugin = ffm("Operation.plugin", "The plugin responsible for performing the operation") OperationInput = ffm("Operation.input", "The input to this operation") OperationOutput = ffm("Operation.output", "Any output reported back from the plugin for this operation") OperationError = ffm("Operation.error", "Any error reported back from the plugin for this operation") OperationCreated = ffm("Operation.created", "The time the operation was created") OperationUpdated = ffm("Operation.updated", "The last update time of the operation") OperationRetry = ffm("Operation.retry", "If this operation was initiated as a retry to a previous operation, this field points to the UUID of the operation being retried") // BlockchainEvent field descriptions BlockchainEventID = ffm("BlockchainEvent.id", "The UUID assigned to the event by FireFly") BlockchainEventSource = ffm("BlockchainEvent.source", "The blockchain plugin or token service that detected the event") BlockchainEventNamespace = ffm("BlockchainEvent.namespace", "The namespace of the listener that detected this blockchain event") BlockchainEventName = ffm("BlockchainEvent.name", "The name of the event in the blockchain smart contract") BlockchainEventListener = ffm("BlockchainEvent.listener", "The UUID of the listener that detected this event, or nil for built-in events in the system namespace") BlockchainEventProtocolID = ffm("BlockchainEvent.protocolId", "An alphanumerically sortable string that represents this event uniquely on the blockchain (convention for plugins is zero-padded values BLOCKNUMBER/TXN_INDEX/EVENT_INDEX)") BlockchainEventOutput = ffm("BlockchainEvent.output", "The data output by the event, parsed to JSON according to the interface of the smart contract") BlockchainEventInfo = ffm("BlockchainEvent.info", "Detailed blockchain specific information about the event, as generated by the blockchain connector") BlockchainEventTimestamp = ffm("BlockchainEvent.timestamp", "The time allocated to this event by the blockchain. This is the block timestamp for most blockchain connectors") BlockchainEventTX = ffm("BlockchainEvent.tx", "If this blockchain event is coorelated to FireFly transaction such as a FireFly submitted token transfer, this field is set to the UUID of the FireFly transaction") // ChartHistogram field descriptions ChartHistogramCount = ffm("ChartHistogram.count", "Total count of entries in this time bucket within the histogram") ChartHistogramTimestamp = ffm("ChartHistogram.timestamp", "Starting timestamp for the bucket") ChartHistogramTypes = ffm("ChartHistogram.types", "Array of separate counts for individual types of record within the bucket") ChartHistogramIsCapped = ffm("ChartHistogram.isCapped", "Indicates whether there are more results in this bucket that are not being displayed") // ChartHistogramType field descriptions ChartHistogramTypeCount = ffm("ChartHistogramType.count", "Count of entries of a given type within a bucket") ChartHistogramTypeType = ffm("ChartHistogramType.type", "Name of the type") // ContractAPI field descriptions ContractAPIID = ffm("ContractAPI.id", "The UUID of the contract API") ContractAPINamespace = ffm("ContractAPI.namespace", "The namespace of the contract API") ContractAPIInterface = ffm("ContractAPI.interface", "Reference to the FireFly Interface definition associated with the contract API") ContractAPILocation = ffm("ContractAPI.location", "If this API is tied to an individual instance of a smart contract, this field can include a blockchain specific contract identifier. For example an Ethereum contract address, or a Fabric chaincode name and channel") ContractAPIName = ffm("ContractAPI.name", "The name that is used in the URL to access the API") ContractAPIMessage = ffm("ContractAPI.message", "The UUID of the broadcast message that was used to publish this API to the network") ContractAPIURLs = ffm("ContractAPI.urls", "The URLs to use to access the API") // ContractURLs field descriptions ContractURLsOpenAPI = ffm("ContractURLs.openapi", "The URL to download the OpenAPI v3 (Swagger) description for the API generated in JSON or YAML format") ContractURLsUI = ffm("ContractURLs.ui", "The URL to use in a web browser to access the SwaggerUI explorer/exerciser for the API") // FFIReference field descriptions FFIReferenceID = ffm("FFIReference.id", "The UUID of the FireFly interface") FFIReferenceName = ffm("FFIReference.name", "The name of the FireFly interface") FFIReferenceVersion = ffm("FFIReference.version", "The version of the FireFly interface") // FFI field descriptions FFIID = ffm("FFI.id", "The UUID of the FireFly interface (FFI) smart contract definition") FFIMessage = ffm("FFI.message", "The UUID of the broadcast message that was used to publish this FFI to the network") FFINamespace = ffm("FFI.namespace", "The namespace of the FFI") FFIName = ffm("FFI.name", "The name of the FFI - usually matching the smart contract name") FFIDescription = ffm("FFI.description", "A description of the smart contract this FFI represents") FFIVersion = ffm("FFI.version", "A version for the FFI - use of semantic versioning such as 'v1.0.1' is encouraged") FFIMethods = ffm("FFI.methods", "An array of smart contract method definitions") FFIEvents = ffm("FFI.events", "An array of smart contract event definitions") // FFIMethod field descriptions FFIMethodID = ffm("FFIMethod.id", "The UUID of the FFI method definition") FFIMethodInterface = ffm("FFIMethod.interface", "The UUID of the FFI smart contract definition that this method is part of") FFIMethodName = ffm("FFIMethod.name", "The name of the method") FFIMethodNamespace = ffm("FFIMethod.namespace", "The namespace of the FFI") FFIMethodPathname = ffm("FFIMethod.pathname", "The unique name allocated to this method within the FFI for use on URL paths. Supports contracts that have multiple method overrides with the same name") FFIMethodDescription = ffm("FFIMethod.description", "A description of the smart contract method") FFIMethodParams = ffm("FFIMethod.params", "An array of method parameter/argument definitions") FFIMethodReturns = ffm("FFIMethod.returns", "An array of method return definitions") // FFIEvent field descriptions FFIEventID = ffm("FFIEvent.id", "The UUID of the FFI event definition") FFIEventInterface = ffm("FFIEvent.interface", "The UUID of the FFI smart contract definition that this event is part of") FFIEventName = ffm("FFIEvent.name", "The name of the event") FFIEventNamespace = ffm("FFIEvent.namespace", "The namespace of the FFI") FFIEventPathname = ffm("FFIEvent.pathname", "The unique name allocated to this event within the FFI for use on URL paths. Supports contracts that have multiple event overrides with the same name") FFIEventDescription = ffm("FFIEvent.description", "A description of the smart contract event") FFIEventParams = ffm("FFIEvent.params", "An array of event parameter/argument definitions") FFIEventSignature = ffm("FFIEvent.signature", "The stringified signature of the event, as computed by the blockchain plugin") // FFIParam field descriptions FFIParamName = ffm("FFIParam.name", "The name of the parameter. Note that parameters must be ordered correctly on the FFI, according to the order in the blockchain smart contract") FFIParamSchema = ffm("FFIParam.schema", "FireFly uses an extended subset of JSON Schema to describe parameters, similar to OpenAPI/Swagger. Converters are available for native blockchain interface definitions / type systems - such as an Ethereum ABI. See the documentation for more detail") // FFIGenerationRequest field descriptions FFIGenerationRequestNamespace = ffm("FFIGenerationRequest.namespace", "The namespace into which the FFI will be generated") FFIGenerationRequestName = ffm("FFIGenerationRequest.name", "The name of the FFI to generate") FFIGenerationRequestDescription = ffm("FFIGenerationRequest.description", "The description of the FFI to be generated. Defaults to the description extracted by the blockchain specific converter utility") FFIGenerationRequestVersion = ffm("FFIGenerationRequest.version", "The version of the FFI to generate") FFIGenerationRequestInput = ffm("FFIGenerationRequest.input", "A blockchain connector specific payload. For example in Ethereum this is a JSON structure containing an 'abi' array, and optionally a 'devdocs' array.") // ContractListener field descriptions ContractListenerID = ffm("ContractListener.id", "The UUID of the smart contract listener") ContractListenerInterface = ffm("ContractListener.interface", "A reference to an existing FFI, containing pre-registered type information for the event") ContractListenerNamespace = ffm("ContractListener.namespace", "The namespace of the listener, which defines the namespace of all blockchain events detected by this listener") ContractListenerName = ffm("ContractListener.name", "A descriptive name for the listener") ContractListenerBackendID = ffm("ContractListener.backendId", "An ID assigned by the blockchain connector to this listener") ContractListenerLocation = ffm("ContractListener.location", "A blockchain specific contract identifier. For example an Ethereum contract address, or a Fabric chaincode name and channel") ContractListenerCreated = ffm("ContractListener.created", "The creation time of the listener") ContractListenerEvent = ffm("ContractListener.event", "The definition of the event, either provided in-line when creating the listener, or extracted from the referenced FFI") ContractListenerTopic = ffm("ContractListener.topic", "A topic to set on the FireFly event that is emitted each time a blockchain event is detected from the blockchain. Setting this topic on a number of listeners allows applications to easily subscribe to all events they need") ContractListenerOptions = ffm("ContractListener.options", "Options that control how the listener subscribes to events from the underlying blockchain") ContractListenerEventPath = ffm("ContractListener.eventPath", "When creating a listener from an existing FFI, this is the pathname of the event on that FFI to be detected by this listener") ContractListenerSignature = ffm("ContractListener.signature", "The stringified signature of the event, as computed by the blockchain plugin") // ContractListenerOptions field descriptions ContractListenerOptionsFirstEvent = ffm("ContractListenerOptions.firstEvent", "A blockchain specific string, such as a block number, to start listening from. The special strings 'oldest' and 'newest' are supported by all blockchain connectors. Default is 'newest'") // DIDDocument field descriptions DIDDocumentContext = ffm("DIDDocument.@context", "See https://www.w3.org/TR/did-core/#json-ld") DIDDocumentID = ffm("DIDDocument.id", "See https://www.w3.org/TR/did-core/#did-document-properties") DIDDocumentAuthentication = ffm("DIDDocument.authentication", "See https://www.w3.org/TR/did-core/#did-document-properties") DIDDocumentVerificationMethod = ffm("DIDDocument.verificationMethod", "See https://www.w3.org/TR/did-core/#did-document-properties") // DIDVerificationMethod field descriptions DIDVerificationMethodID = ffm("DIDVerificationMethod.id", "See https://www.w3.org/TR/did-core/#service-properties") DIDVerificationMethodController = ffm("DIDVerificationMethod.controller", "See https://www.w3.org/TR/did-core/#service-properties") DIDVerificationMethodType = ffm("DIDVerificationMethod.type", "See https://www.w3.org/TR/did-core/#service-properties") DIDVerificationMethodBlockchainAccountID = ffm("DIDVerificationMethod.blockchainAcountId", "For blockchains like Ethereum that represent signing identities directly by their public key summarized in an account string") DIDVerificationMethodMSPIdentityString = ffm("DIDVerificationMethod.mspIdentityString", "For Hyperledger Fabric where the signing identity is represented by an MSP identifier (containing X509 certificate DN strings) that were validated by your local MSP") DIDVerificationMethodDataExchangePeerID = ffm("DIDVerificationMethod.dataExchangePeerID", "A string provided by your Data Exchange plugin, that it uses a technology specific mechanism to validate against when messages arrive from this identity") // Event field descriptions EventID = ffm("Event.id", "The UUID assigned to this event by your local FireFly node") EventSequence = ffm("Event.sequence", "A sequence indicating the order in which events are delivered to your application. Assure to be unique per event in your local FireFly database (unlike the created timestamp)") EventType = ffm("Event.type", "All interesting activity in FireFly is emitted as a FireFly event, of a given type. The 'type' combined with the 'reference' can be used to determine how to process the event within your application") EventNamespace = ffm("Event.namespace", "The namespace of the event. Your application must subscribe to events within a namespace") EventReference = ffm("Event.reference", "The UUID of an resource that is the subject of this event. The event type determines what type of resource is referenced, and whether this field might be unset") EventCorrelator = ffm("Event.correlator", "For message events, this is the 'header.cid' field from the referenced message. For certain other event types, a secondary object is referenced such as a token pool") EventTransaction = ffm("Event.tx", "The UUID of a transaction that is event is part of. Not all events are part of a transaction") EventTopic = ffm("Event.topic", "A stream of information this event relates to. For message confirmation events, a separate event is emitted for each topic in the message. For blockchain events, the listener specifies the topic. Rules exist for how the topic is set for other event types") EventCreated = ffm("Event.created", "The time the event was emitted. Not guaranteed to be unique, or to increase between events in the same order as the final sequence events are delivered to your application. As such, the 'sequence' field should be used instead of the 'created' field for querying events in the exact order they are delivered to applications") // EnrichedEvent field descriptions EnrichedEventBlockchainEvent = ffm("EnrichedEvent.blockchainEvent", "A blockchain event if referenced by the FireFly event") EnrichedEventContractAPI = ffm("EnrichedEvent.contractAPI", "A Contract API if referenced by the FireFly event") EnrichedEventContractInterface = ffm("EnrichedEvent.contractInterface", "A Contract Interface (FFI) if referenced by the FireFly event") EnrichedEventDatatype = ffm("EnrichedEvent.datatype", "A Datatype if referenced by the FireFly event") EnrichedEventIdentity = ffm("EnrichedEvent.identity", "An Identity if referenced by the FireFly event") EnrichedEventMessage = ffm("EnrichedEvent.message", "A Message if referenced by the FireFly event") EnrichedEventNamespaceDetails = ffm("EnrichedEvent.namespaceDetails", "Full resource detail of a Namespace if referenced by the FireFly event") EnrichedEventTokenApproval = ffm("EnrichedEvent.tokenApproval", "A Token Approval if referenced by the FireFly event") EnrichedEventTokenPool = ffm("EnrichedEvent.tokenPool", "A Token Pool if referenced by the FireFly event") EnrichedEventTokenTransfer = ffm("EnrichedEvent.tokenTransfer", "A Token Transfer if referenced by the FireFly event") EnrichedEventTransaction = ffm("EnrichedEvent.transaction", "A Transaction if associated with the FireFly event") // IdentityMessages field descriptions IdentityMessagesClaim = ffm("IdentityMessages.claim", "The UUID of claim message") IdentityMessagesVerification = ffm("IdentityMessages.verification", "The UUID of claim message. Unset for root organization identities") IdentityMessagesUpdate = ffm("IdentityMessages.update", "The UUID of the most recently applied update message. Unset if no updates have been confirmed") // Identity field descriptions IdentityID = ffm("Identity.id", "The UUID of the identity") IdentityDID = ffm("Identity.did", "The DID of the identity. Unique across namespaces within a FireFly network") IdentityType = ffm("Identity.type", "The type of the identity") IdentityParent = ffm("Identity.parent", "The UUID of the parent identity. Unset for root organization identities") IdentityNamespace = ffm("Identity.namespace", "The namespace of the identity. Organization and node identities are always defined in the ff_system namespace") IdentityName = ffm("Identity.name", "The name of the identity. The name must be unique within the type and namespace") IdentityMessages = ffm("Identity.messages", "References to the broadcast messages that established this identity and proved ownership of the associated verifiers (keys)") IdentityCreated = ffm("Identity.created", "The creation time of the identity") IdentityUpdated = ffm("Identity.updated", "The last update time of the identity profile") // IdentityProfile field descriptions IdentityProfileProfile = ffm("IdentityProfile.profile", "A set of metadata for the identity. Part of the updatable profile information of an identity") IdentityProfileDescription = ffm("IdentityProfile.description", "A description of the identity. Part of the updatable profile information of an identity") // IdentityWithVerifiers field descriptions IdentityWithVerifiersVerifiers = ffm("IdentityWithVerifiers.verifiers", "The verifiers, such as blockchain signing keys, that have been bound to this identity and can be used to prove data orignates from that identity") // IdentityCreateDTO field descriptions IdentityCreateDTOParent = ffm("IdentityCreateDTO.parent", "On input the parent can be specified directly as the UUID of and existing identity, or as a DID to resolve to that identity, or an organization name. The parent must already have been registered, and its blockchain signing key must be available to the local node to sign the verification") IdentityCreateDTOKey = ffm("IdentityCreateDTO.key", "The blockchain signing key to use to make the claim to the identity. Must be available to the local node to sign the identity claim. Will become a verifier on the established identity") // IdentityClaim field descriptions IdentityClaimIdentity = ffm("IdentityClaim.identity", "The identity being claimed") // IdentityVerification field descriptions IdentityVerificationClaim = ffm("IdentityVerification.claim", "The UUID of the message containing the identity claim being verified") IdentityVerificationIdentity = ffm("IdentityVerification.identity", "The identity being verified") // IdentityUpdate field descriptions IdentityUpdateIdentity = ffm("IdentityUpdate.identity", "The identity being updated") IdentityUpdateProfile = ffm("IdentityUpdate.profile", "The new profile, which is replaced in its entirety when the update is confirmed") // Verifier field descriptions VerifierHash = ffm("Verifier.hash", "Hash used as a globally consistent identifier for this namespace + type + value combination on every node in the network") VerifierIdentity = ffm("Verifier.identity", "The UUID of the parent identity that has claimed this verifier") VerifierType = ffm("Verifier.type", "The type of the verifier") VerifierValue = ffm("Verifier.value", "The verifier string, such as an Ethereum address, or Fabric MSP identifier") VerifierNamespace = ffm("Verifier.namespace", "The namespace of the verifier") VerifierCreated = ffm("Verifier.created", "The time this verifier was created on this node") // Namespace field descriptions NamespaceID = ffm("Namespace.id", "The UUID of the namespace. For locally established namespaces will be different on each node in the network. For broadcast namespaces, will be the same on every node") NamespaceMessage = ffm("Namespace.message", "The UUID of broadcast message used to establish the namespace. Unset for local namespaces") NamespaceName = ffm("Namespace.name", "The namespace name") NamespaceDescription = ffm("Namespace.description", "A description of the namespace") NamespaceType = ffm("Namespace.type", "The type of the namespace") NamespaceCreated = ffm("Namespace.created", "The time the namespace was created") NamespaceContract = ffm("Namespace.fireflyContract", "Info on the FireFly smart contract configured for this namespace") FireFlyContractsActive = ffm("FireFlyContracts.active", "The currently active FireFly smart contract") FireFlyContractsTerminated = ffm("FireFlyContracts.terminated", "Previously-terminated FireFly smart contracts") FireFlyContractIndex = ffm("FireFlyContractInfo.index", "The index of this contract in the config file") FireFlyContractFinalEvent = ffm("FireFlyContractInfo.finalEvent", "The identifier for the final blockchain event received from this contract before termination") FireFlyContractInfo = ffm("FireFlyContractInfo.info", "Blockchain-specific info on the contract, such as its location on chain") NetworkActionType = ffm("NetworkAction.type", "The action to be performed") // NodeStatus field descriptions NodeNamespace = ffm("NodeStatus.namespace", "The namespace that this status applies to") NodeStatusNode = ffm("NodeStatus.node", "Details of the local node") NodeStatusOrg = ffm("NodeStatus.org", "Details of the organization identity that operates this node") NodePlugins = ffm("NodeStatus.plugins", "Information about plugins configured on this node") // NodeStatusNode field descriptions NodeStatusNodeName = ffm("NodeStatusNode.name", "The name of this node, as specified in the local configuration") NodeStatusNodeRegistered = ffm("NodeStatusNode.registered", "Whether the node has been successfully registered") NodeStatusNodeID = ffm("NodeStatusNode.id", "The UUID of the node, if registered") // NodeStatusOrg field descriptions NodeStatusOrgName = ffm("NodeStatusOrg.name", "The name of the node operator organization, as specified in the local configuration") NodeStatusOrgRegistered = ffm("NodeStatusOrg.registered", "Whether the organization has been successfully registered") NodeStatusOrgDID = ffm("NodeStatusOrg.did", "The DID of the organization identity, if registered") NodeStatusOrgID = ffm("NodeStatusOrg.id", "The UUID of the organization, if registered") NodeStatusOrgVerifiers = ffm("NodeStatusOrg.verifiers", "Array of verifiers (blockchain keys) owned by this identity") // NodeStatusDefaults field descriptions NodeStatusDefaultsNamespace = ffm("NodeStatusDefaults.namespace", "The default namespace on this node") // NodeStatusPlugins field descriptions NodeStatusPluginsBlockchain = ffm("NodeStatusPlugins.blockchain", "The blockchain plugins on this node") NodeStatusPluginsDatabase = ffm("NodeStatusPlugins.database", "The database plugins on this node") NodeStatusPluginsDataExchange = ffm("NodeStatusPlugins.dataExchange", "The data exchange plugins on this node") Events = ffm("NodeStatusPlugins.events", "The event plugins on this node") NodeStatusPluginsIdentity = ffm("NodeStatusPlugins.identity", "The identity plugins on this node") NodeStatusPluginsTokens = ffm("NodeStatusPlugins.tokens", "The token plugins on this node") // NodeStatusPlugin field descriptions NodeStatusPluginName = ffm("NodeStatusPlugin.name", "The name of the plugin") NodeStatusPluginType = ffm("NodeStatusPlugin.pluginType", "The type of the plugin") // BatchManagerStatus field descriptions BatchManagerStatusProcessors = ffm("BatchManagerStatus.processors", "An array of currently active batch processors") // BatchProcessorStatus field descriptions BatchProcessorStatusDispatcher = ffm("BatchProcessorStatus.dispatcher", "The type of dispatcher for this processor") BatchProcessorStatusName = ffm("BatchProcessorStatus.name", "The name of the processor, which includes details of the attributes of message are allocated to this processor") BatchProcessorStatusStatus = ffm("BatchProcessorStatus.status", "The flush status for this batch processor") // BatchFlushStatus field descriptions BatchFlushStatusLastFlushTime = ffm("BatchFlushStatus.lastFlushStartTime", "The last time a flush was performed") BatchFlushStatusFlushing = ffm("BatchFlushStatus.flushing", "If a flush is in progress, this is the UUID of the batch being flushed") BatchFlushStatusBlocked = ffm("BatchFlushStatus.blocked", "True if the batch flush is in a retry loop, due to errors being returned by the plugins") BatchFlushStatusLastFlushError = ffm("BatchFlushStatus.lastFlushError", "The last error received by this batch processor while flushing") BatchFlushStatusLastFlushErrorTime = ffm("BatchFlushStatus.lastFlushErrorTime", "The time of the last flush") BatchFlushStatusAverageBatchBytes = ffm("BatchFlushStatus.averageBatchBytes", "The average byte size of each batch") BatchFlushStatusAverageBatchMessages = ffm("BatchFlushStatus.averageBatchMessages", "The average number of messages included in each batch") BatchFlushStatusAverageBatchData = ffm("BatchFlushStatus.averageBatchData", "The average number of data attachments included in each batch") BatchFlushStatusAverageFlushTimeMS = ffm("BatchFlushStatus.averageFlushTimeMS", "The average amount of time spent flushing each batch") BatchFlushStatusTotalBatches = ffm("BatchFlushStatus.totalBatches", "The total count of batches flushed by this processor since it started") BatchFlushStatusTotalErrors = ffm("BatchFlushStatus.totalErrors", "The total count of error flushed encountered by this processor since it started") // Pin field descriptions PinSequence = ffm("Pin.sequence", "The order of the pin in the local FireFly database, which matches the order in which pins were delivered to FireFly by the blockchain connector event stream") PinMasked = ffm("Pin.masked", "True if the pin is for a private message, and hence is masked with the group ID and salted with a nonce so observers of the blockchain cannot use pin hash to match this transaction to other transactions or participants") PinHash = ffm("Pin.hash", "The hash represents a topic within a message in the batch. If a message has multiple topics, then multiple pins are created. If the message is private, the hash is masked for privacy") PinBatch = ffm("Pin.batch", "The UUID of the batch of messages this pin is part of") PinBatchHash = ffm("Pin.batchHash", "The manifest hash batch of messages this pin is part of") PinIndex = ffm("Pin.index", "The index of this pin within the batch. One pin is created for each topic, of each message in the batch") PinDispatched = ffm("Pin.dispatched", "Once true, this pin has been processed and will not be processed again") PinSigner = ffm("Pin.signer", "The blockchain signing key that submitted this transaction, as passed through to FireFly by the smart contract that emitted the blockchain event") PinCreated = ffm("Pin.created", "The time the FireFly node created the pin") // Subscription field descriptions SubscriptionID = ffm("Subscription.id", "The UUID of the subscription") SubscriptionNamespace = ffm("Subscription.namespace", "The namespace of the subscription. A subscription will only receive events generated in the namespace of the subscription") SubscriptionName = ffm("Subscription.name", "The name of the subscription. The application specifies this name when it connects, in order to attach to the subscription and receive events that arrived while it was disconnected. If multiple apps connect to the same subscription, events are workload balanced across the connected application instances") SubscriptionTransport = ffm("Subscription.transport", "The transport plugin responsible for event delivery (WebSockets, Webhooks, JMS, NATS etc.)") SubscriptionFilter = ffm("Subscription.filter", "Server-side filter to apply to events") SubscriptionOptions = ffm("Subscription.options", "Subscription options") SubscriptionEphemeral = ffm("Subscription.ephemeral", "Ephemeral subscriptions only exist as long as the application is connected, and as such will miss events that occur while the application is disconnected, and cannot be created administratively. You can create one over over a connected WebSocket connection") SubscriptionCreated = ffm("Subscription.created", "Creation time of the subscription") SubscriptionUpdated = ffm("Subscription.updated", "Last time the subscription was updated") // SubscriptionFilter field descriptions SubscriptionFilterEvents = ffm("SubscriptionFilter.events", "Regular expression to apply to the event type, to subscribe to a subset of event types") SubscriptionFilterTopic = ffm("SubscriptionFilter.topic", "Regular expression to apply to the topic of the event, to subscribe to a subset of topics. Note for messages sent with multiple topics, a separate event is emitted for each topic") SubscriptionFilterMessage = ffm("SubscriptionFilter.message", "Filters specific to message events. If an event is not a message event, these filters are ignored") SubscriptionFilterTransaction = ffm("SubscriptionFilter.transaction", "Filters specific to events with a transaction. If an event is not associated with a transaction, this filter is ignored") SubscriptionFilterBlockchainEvent = ffm("SubscriptionFilter.blockchainevent", "Filters specific to blockchain events. If an event is not a blockchain event, these filters are ignored") SubscriptionFilterDeprecatedTopics = ffm("SubscriptionFilter.topics", "Deprecated: Please use 'topic' instead") SubscriptionFilterDeprecatedTag = ffm("SubscriptionFilter.tag", "Deprecated: Please use 'message.tag' instead") SubscriptionFilterDeprecatedGroup = ffm("SubscriptionFilter.group", "Deprecated: Please use 'message.group' instead") SubscriptionFilterDeprecatedAuthor = ffm("SubscriptionFilter.author", "Deprecated: Please use 'message.author' instead") // SubscriptionMessageFilter field descriptions SubscriptionMessageFilterTag = ffm("SubscriptionMessageFilter.tag", "Regular expression to apply to the message 'header.tag' field") SubscriptionMessageFilterGroup = ffm("SubscriptionMessageFilter.group", "Regular expression to apply to the message 'header.group' field") SubscriptionMessageFilterAuthor = ffm("SubscriptionMessageFilter.author", "Regular expression to apply to the message 'header.author' field") // SubscriptionTransactionFilter field descriptions SubscriptionTransactionFilterType = ffm("SubscriptionTransactionFilter.type", "Regular expression to apply to the transaction 'type' field") // SubscriptionBlockchainEventFilter field descriptions SubscriptionBlockchainEventFilterName = ffm("SubscriptionBlockchainEventFilter.name", "Regular expression to apply to the blockchain event 'name' field, which is the name of the event in the underlying blockchain smart contract") SubscriptionBlockchainEventFilterListener = ffm("SubscriptionBlockchainEventFilter.listener", "Regular expression to apply to the blockchain event 'listener' field, which is the UUID of the event listener. So you can restrict your subscription to certain blockchain listeners. Alternatively to avoid your application need to know listener UUIDs you can set the 'topic' field of blockchain event listeners, and use a topic filter on your subscriptions") // SubscriptionCoreOptions field descriptions SubscriptionCoreOptionsFirstEvent = ffm("SubscriptionCoreOptions.firstEvent", "Whether your appplication would like to receive events from the 'oldest' event emitted by your FireFly node (from the beginning of time), or the 'newest' event (from now), or a specific event sequence. Default is 'newest'") SubscriptionCoreOptionsReadAhead = ffm("SubscriptionCoreOptions.readAhead", "The number of events to stream ahead to your application, while waiting for confirmation of consumption of those events. At least once delivery semantics are used in FireFly, so if your application crashes/reconnects this is the maximum number of events you would expect to be redelivered after it restarts") SubscriptionCoreOptionsWithData = ffm("SubscriptionCoreOptions.withData", "Whether message events delivered over the subscription, should be packaged with the full data of those messages in-line as part of the event JSON payload. Or if the application should make separate REST calls to download that data. May not be supported on some transports.") // TokenApproval field descriptions TokenApprovalLocalID = ffm("TokenApproval.localId", "The UUID of this token approval, in the local FireFly node") TokenApprovalPool = ffm("TokenApproval.pool", "The UUID the token pool this approval applies to") TokenApprovalConnector = ffm("TokenApproval.connector", "The name of the token connector, as specified in the FireFly core configuration file. Required on input when there are more than one token connectors configured") TokenApprovalKey = ffm("TokenApproval.key", "The blockchain signing key for the approval request. On input defaults to the first signing key of the organization that operates the node") TokenApprovalOperator = ffm("TokenApproval.operator", "The blockchain identity that is granted the approval") TokenApprovalApproved = ffm("TokenApproval.approved", "Whether this record grants permission for an operator to perform actions on the token balance (true), or revokes permission (false)") TokenApprovalInfo = ffm("TokenApproval.info", "Token connector specific information about the approval operation, such as whether it applied to a limited balance of a fungible token. See your chosen token connector documentation for details") TokenApprovalNamespace = ffm("TokenApproval.namespace", "The namespace for the approval, which must match the namespace of the token pool") TokenApprovalProtocolID = ffm("TokenApproval.protocolId", "An alphanumerically sortable string that represents this event uniquely with respect to the blockchain") TokenApprovalSubject = ffm("TokenApproval.subject", "A string identifying the parties and entities in the scope of this approval, as provided by the token connector") TokenApprovalActive = ffm("TokenApproval.active", "Indicates if this approval is currently active (only one approval can be active per subject)") TokenApprovalCreated = ffm("TokenApproval.created", "The creation time of the token approval") TokenApprovalTX = ffm("TokenApproval.tx", "If submitted via FireFly, this will reference the UUID of the FireFly transaction (if the token connector in use supports attaching data)") TokenApprovalBlockchainEvent = ffm("TokenApproval.blockchainEvent", "The UUID of the blockchain event") TokenApprovalConfig = ffm("TokenApproval.config", "Input only field, with token connector specific configuration of the approval. See your chosen token connector documentation for details") // TokenApprovalInputInput field descriptions TokenApprovalInputInputPool = ffm("TokenApprovalInput.pool", "The name or UUID of a token pool. Required if more than one pool exists.") // TokenBalance field descriptions TokenBalancePool = ffm("TokenBalance.pool", "The UUID the token pool this balance entry applies to") TokenBalanceTokenIndex = ffm("TokenBalance.tokenIndex", "The index of the token within the pool that this balance applies to") TokenBalanceURI = ffm("TokenBalance.uri", "The URI of the token this balance entry applies to") TokenBalanceConnector = ffm("TokenBalance.connector", "The token connector that is responsible for the token pool of this balance entry") TokenBalanceNamespace = ffm("TokenBalance.namespace", "The namespace of the token pool for this balance entry") TokenBalanceKey = ffm("TokenBalance.key", "The blockchain signing identity this balance applies to") TokenBalanceBalance = ffm("TokenBalance.balance", "The numeric balance. For non-fungible tokens will always be 1. For fungible tokens, the number of decimals for the token pool should be considered when interpreting the balance. For example, with 18 decimals a fractional balance of 10.234 will be returned as 10,234,000,000,000,000,000") TokenBalanceUpdated = ffm("TokenBalance.updated", "The last time the balance was updated by applying a transfer event") // TokenBalance field descriptions TokenConnectorName = ffm("TokenConnector.name", "The name of the token connector, as configured in the FireFly core configuration file") // TokenPool field descriptions TokenPoolID = ffm("TokenPool.id", "The UUID of the token pool") TokenPoolType = ffm("TokenPool.type", "The type of token the pool contains, such as fungible/non-fungible") TokenPoolNamespace = ffm("TokenPool.namespace", "The namespace for the token pool") TokenPoolName = ffm("TokenPool.name", "The name of the token pool. Note the name is not validated against the description of the token on the blockchain") TokenPoolStandard = ffm("TokenPool.standard", "The ERC standard the token pool conforms to, as reported by the token connector") TokenPoolLocator = ffm("TokenPool.locator", "A unique identifier for the pool, as provided by the token connector") TokenPoolKey = ffm("TokenPool.key", "The signing key used to create the token pool. On input for token connectors that support on-chain deployment of new tokens (vs. only index existing ones) this determines the signing key used to create the token on-chain") TokenPoolSymbol = ffm("TokenPool.symbol", "The token symbol. If supplied on input for an existing on-chain token, this must match the on-chain information") TokenPoolDecimals = ffm("TokenPool.decimals", "Number of decimal places that this token has") TokenPoolConnector = ffm("TokenPool.connector", "The name of the token connector, as specified in the FireFly core configuration file that is responsible for the token pool. Required on input when multiple token connectors are configured") TokenPoolMessage = ffm("TokenPool.message", "The UUID of the broadcast message used to inform the network to index this pool") TokenPoolState = ffm("TokenPool.state", "The current state of the token pool") TokenPoolCreated = ffm("TokenPool.created", "The creation time of the pool") TokenPoolConfig = ffm("TokenPool.config", "Input only field, with token connector specific configuration of the pool, such as an existing Ethereum address and block number to used to index the pool. See your chosen token connector documentation for details") TokenPoolInfo = ffm("TokenPool.info", "Token connector specific information about the pool. See your chosen token connector documentation for details") TokenPoolTX = ffm("TokenPool.tx", "Reference to the FireFly transaction used to create and broadcast this pool to the network") // TokenTransfer field descriptions TokenTransferType = ffm("TokenTransfer.type", "The type of transfer such as mint/burn/transfer") TokenTransferLocalID = ffm("TokenTransfer.localId", "The UUID of this token transfer, in the local FireFly node") TokenTransferPool = ffm("TokenTransfer.pool", "The UUID the token pool this transfer applies to") TokenTransferTokenIndex = ffm("TokenTransfer.tokenIndex", "The index of the token within the pool that this transfer applies to") TokenTransferURI = ffm("TokenTransfer.uri", "The URI of the token this transfer applies to") TokenTransferConnector = ffm("TokenTransfer.connector", "The name of the token connector, as specified in the FireFly core configuration file. Required on input when there are more than one token connectors configured") TokenTransferNamespace = ffm("TokenTransfer.namespace", "The namespace for the transfer, which must match the namespace of the token pool") TokenTransferKey = ffm("TokenTransfer.key", "The blockchain signing key for the transfer. On input defaults to the first signing key of the organization that operates the node") TokenTransferFrom = ffm("TokenTransfer.from", "The source account for the transfer. On input defaults to the value of 'key'") TokenTransferTo = ffm("TokenTransfer.to", "The target account for the transfer. On input defaults to the value of 'key'") TokenTransferAmount = ffm("TokenTransfer.amount", "The amount for the transfer. For non-fungible tokens will always be 1. For fungible tokens, the number of decimals for the token pool should be considered when inputting the amount. For example, with 18 decimals a fractional balance of 10.234 will be specified as 10,234,000,000,000,000,000") TokenTransferProtocolID = ffm("TokenTransfer.protocolId", "An alphanumerically sortable string that represents this event uniquely with respect to the blockchain") TokenTransferMessage = ffm("TokenTransfer.message", "The UUID of a message that has been correlated with this transfer using the data field of the transfer in a compatible token connector") TokenTransferMessageHash = ffm("TokenTransfer.messageHash", "The hash of a message that has been correlated with this transfer using the data field of the transfer in a compatible token connector") TokenTransferCreated = ffm("TokenTransfer.created", "The creation time of the transfer") TokenTransferTX = ffm("TokenTransfer.tx", "If submitted via FireFly, this will reference the UUID of the FireFly transaction (if the token connector in use supports attaching data)") TokenTransferBlockchainEvent = ffm("TokenTransfer.blockchainEvent", "The UUID of the blockchain event") // TokenTransferInput field descriptions TokenTransferInputMessage = ffm("TokenTransferInput.message", "You can specify a message to correlate with the transfer, which can be of type broadcast or private. Your chosen token connector and on-chain smart contract must support on-chain/off-chain correlation by taking a `data` input on the transfer") TokenTransferInputPool = ffm("TokenTransferInput.pool", "The name or UUID of a token pool") // TransactionStatus field descriptions TransactionStatusStatus = ffm("TransactionStatus.status", "The overall computed status of the transaction, after analyzing the details during the API call") TransactionStatusDetails = ffm("TransactionStatus.details", "A set of records describing the activities within the transaction known by the local FireFly node") // TransactionStatusDetails field descriptions TransactionStatusDetailsType = ffm("TransactionStatusDetails.type", "The type of the transaction status detail record") TransactionStatusDetailsSubType = ffm("TransactionStatusDetails.subtype", "A sub-type, such as an operation type, or an event type") TransactionStatusDetailsStatus = ffm("TransactionStatusDetails.status", "The status of the detail record. Cases where an event is required for completion, but has not arrived yet are marked with a 'pending' record") TransactionStatusDetailsTimestamp = ffm("TransactionStatusDetails.timestamp", "The time relevant to when the record was updated, such as the time an event was created, or the last update time of an operation") TransactionStatusDetailsID = ffm("TransactionStatusDetails.id", "The UUID of the entry referenced by this detail. The type of this record can be inferred from the entry type") TransactionStatusDetailsError = ffm("TransactionStatusDetails.error", "If an error occurred related to the detail entry, it is included here") TransactionStatusDetailsInfo = ffm("TransactionStatusDetails.info", "Output details for this entry") // ContractCallRequest field descriptions ContractCallRequestType = ffm("ContractCallRequest.type", "Invocations cause transactions on the blockchain. Whereas queries simply execute logic in your local node to query data at a given current/historical block") ContractCallRequestInterface = ffm("ContractCallRequest.interface", "The UUID of a method within a pre-configured FireFly interface (FFI) definition for a smart contract. Required if the 'method' is omitted. Also see Contract APIs as a way to configure a dedicated API for your FFI, including all methods and an OpenAPI/Swagger interface") ContractCallRequestLocation = ffm("ContractCallRequest.location", "A blockchain specific contract identifier. For example an Ethereum contract address, or a Fabric chaincode name and channel") ContractCallRequestKey = ffm("ContractCallRequest.key", "The blockchain signing key that will sign the invocation. Defaults to the first signing key of the organization that operates the node") ContractCallRequestMethod = ffm("ContractCallRequest.method", "An in-line FFI method definition for the method to invoke. Required when FFI is not specified") ContractCallRequestMethodPath = ffm("ContractCallRequest.methodPath", "The pathname of the method on the specified FFI") ContractCallRequestInput = ffm("ContractCallRequest.input", "A map of named inputs. The name and type of each input must be compatible with the FFI description of the method, so that FireFly knows how to serialize it to the blockchain via the connector") ContractCallRequestOptions = ffm("ContractCallRequest.options", "A map of named inputs that will be passed through to the blockchain connector") // WebSocketStatus field descriptions WebSocketStatusEnabled = ffm("WebSocketStatus.enabled", "Indicates whether the websockets plugin is enabled") WebSocketStatusConnections = ffm("WebSocketStatus.connections", "List of currently active websocket client connections") // WSConnectionStatus field descriptions WSConnectionStatusID = ffm("WSConnectionStatus.id", "The unique ID assigned to this client connection") WSConnectionStatusRemoteAddress = ffm("WSConnectionStatus.remoteAddress", "The remote address of the connected client (if available)") WSConnectionStatusUserAgent = ffm("WSConnectionStatus.userAgent", "The user agent of the connected client (if available)") WSConnectionStatusSubscriptions = ffm("WSConnectionStatus.subscriptions", "List of subscriptions currently started by this client") // WSSubscriptionStatus field descriptions WSSubscriptionStatusEphemeral = ffm("WSSubscriptionStatus.ephemeral", "Indicates whether the subscription is ephemeral (vs durable)") WSSubscriptionStatusNamespace = ffm("WSSubscriptionStatus.namespace", "The subscription namespace") WSSubscriptionStatusName = ffm("WSSubscriptionStatus.name", "The subscription name (for durable subscriptions only)") WebhooksOptJSON = ffm("WebhookSubOptions.json", "Webhooks only: Whether to assume the response body is JSON, regardless of the returned Content-Type") WebhooksOptReply = ffm("WebhookSubOptions.reply", "Webhooks only: Whether to automatically send a reply event, using the body returned by the webhook") WebhooksOptHeaders = ffm("WebhookSubOptions.headers", "Webhooks only: Static headers to set on the webhook request") WebhooksOptQuery = ffm("WebhookSubOptions.query", "Webhooks only: Static query params to set on the webhook request") WebhooksOptInput = ffm("WebhookSubOptions.input", "Webhooks only: A set of options to extract data from the first JSON input data in the incoming message. Only applies if withData=true") WebhooksOptFastAck = ffm("WebhookSubOptions.fastack", "Webhooks only: When true the event will be acknowledged before the webhook is invoked, allowing parallel invocations") WebhooksOptURL = ffm("WebhookSubOptions.url", "Webhooks only: HTTP url to invoke. Can be relative if a base URL is set in the webhook plugin config") WebhooksOptMethod = ffm("WebhookSubOptions.method", "Webhooks only: HTTP method to invoke. Default=POST") WebhooksOptReplyTag = ffm("WebhookSubOptions.replytag", "Webhooks only: The tag to set on the reply message") WebhooksOptReplyTx = ffm("WebhookSubOptions.replytx", "Webhooks only: The transaction type to set on the reply message") WebhooksOptInputQuery = ffm("WebhookInputOptions.query", "A top-level property of the first data input, to use for query parameters") WebhooksOptInputHeaders = ffm("WebhookInputOptions.headers", "A top-level property of the first data input, to use for headers") WebhooksOptInputBody = ffm("WebhookInputOptions.body", "A top-level property of the first data input, to use for the request body. Default is the whole first body") WebhooksOptInputPath = ffm("WebhookInputOptions.path", "A top-level property of the first data input, to use for a path to append with escaping to the webhook path") WebhooksOptInputReplyTx = ffm("WebhookInputOptions.replytx", "A top-level property of the first data input, to use to dynamically set whether to pin the response (so the requester can choose)") )
Functions ¶
This section is empty.
Types ¶
This section is empty.
Source Files ¶
Click to show internal directories.
Click to hide internal directories.