You're viewing documentation for release 6 (LTS). Looking for a different release?

Licensing data sets

Data sets are collections of structured data, such as reference databases, market feeds, or geospatial layers, delivered to client applications as licensed assets. When implementing licensing for data sets, the goal is controlling authorization and enforcing consumption limits—whether data is accessed programmatically by automated systems or directly by end users. 10Duke Enterprise allows you to control which data sets an application or user is authorized to access, while tracking consumption using count-based metered licensing.

For most data set use cases, 10Duke Enterprise recommends combining seat-based allocation—verifying that an authorized application or user holds a seat—with metered tracking of query volume, using two separate product packages.

10Duke Enterprise licensing solutions for data sets

Data sets are accessed in two main ways, either using machine-to-machine (M2M) or user-facing access. The authentication flow depends on which method applies:

  • Automated systems, query engines, or third-party backend integrations access the data directly without a user present. The client application authenticates using the client credentials grant flow, passing its client ID and client secret to 10Duke Enterprise in exchange for an OAuth 2.0 access token containing authorized scopes.

  • End users access the data through an application, for example, viewing different levels of property survey data they have acquired. The user signs in through the application using the authorization code grant flow (or PKCE for browser-only applications). The license is held by the user or their organization, and the application consumes it on the user’s behalf using their access token.

In both cases, your backend application validates the access token and makes license consumption requests to 10Duke Enterprise to verify that a valid license exists for the requested data set or data tier based on your configured license model. For example, modeling each data set as a separate licensed item lets you authorize access on a per-data-set basis. A license model restricts consumption based on a single credit type: seat count, use count, or use time. Choose the model that matches your billing structure.

Build tiers and data packages

A product package defines the set of licensed data items a customer receives. If your data set is offered in different access levels (for example, Basic, Standard, or Premium geospatial data or property survey tiers), create a product package for each tier containing its corresponding licensed data items.

Keep all licensed data items for a single tier within one package when using a single credit type. When a data tier combines seat-based access with metered query volume, deliver it using two separate product packages (one for seat access and one for metered queries) and grant both packages to the customer together.

Count-based metered licensing

Choose count-based metered licensing when billing based on query volume or data throughput, for example, capping views or downloads per tier, billing per 1,000 queries, or charging per record returned. This model restricts and tracks the exact number of queries or transactions executed against a specific data set or tier.

Seat-based or concurrency licensing

Use a seat to control which clients or users are authorized to access a data set, and optionally to limit how many concurrent queries or sessions they can run.

To enforce concurrent usage limits, add the ConcurrentSessions constraint. Its limits apply per seat for each user or device client, and session anchors define what counts as a separate session. For data sets, the LicensedResource anchor counts each data set, identified by the resource parameter in the consumption request, as a separate session. For example, with maxTotal set to 3, a client can hold sessions on up to three data sets at the same time. The total number of users and device clients that can access a data set concurrently is controlled by the seat count.

Combine seat access with consumption metering

If you need to license seat access separately from metering consumption, for example, granting access to a specific data set or tier while also tracking query volume, create two separate product packages, each containing its own licensed item and license model.

Implement data set licensing

To implement data set licensing in 10Duke Enterprise, add the 10Duke Enterprise validation checks directly into your data platform, query engine, or API gateway. You can use the 10Duke SDKs to handle token management within your data pipeline, or build a direct REST API integration to communicate usage from custom query engines.

If a consumption request exceeds the configured limits, the License Consumption API returns a specific error code (for example, licenseQuotaExceeded, maxConcurrentSessionsExceed, or maxUseCountExceed, depending on the constraint applied). See error codes for the full list your backend application should handle.

For detailed instructions on configuring custom rules and tracking modes in 10Duke SysAdmin, see defining settings for custom license models. For virtualized environments, see licensing in virtualized environments.

See more