We're thrilled to announce the alpha release of Hasura V3! 🎉
Key Features
- Data Connectors: The v3-engine can be used with any connector that adheres to the NDC specification to get a GraphQL API. We currently have NDC agents available for Postgres, Clickhouse and Deno (Typescript). Learn more about Hasura connectors here.
- Metadata Modeling Objects: Use these metadata objects to map the underlying data sources using NDC agents and create a supergraph:
- Models: collections of data objects that can be queried. These serve as the interface for querying your data. A model may be backed by a database table, an ad-hoc SQL query, a pre-materialized view or a custom API server.
- Commands: opaque functions or procedures that can be used to query or mutate data. You can use them to validate, process, enrich some data or call another API,
- Permissions: access control rules on your types / models / commands. There are two types of permissions available - model permissions and type permissions.
- Relationships: creating edges in your graph from a data type to a model or a command. A relationship allows you to query nested or linked information and it can span across multiple data sources such as from Postgres to Clickhouse.
- Global ID: is a unique identifier for an object across the entire application, not just within a specific table or type.The Global ID generated by Hasura DDN follows the Relay Global ID spec and can be used to fetch any object directly.
- GraphQL API Features
- Queries - Leverage a powerful API to query data with the following features -
- Simple Queries including query by primary key, running multiple queries in a request, using multiple arguments in the same query, using variables, aliases and fragments.
- Nested Queries including object and array relationships across data sources.
- Sorting objects, nested objects, sorting based on nested object’s fields including computed fields, and sorting by multiple fields.
- Pagination using limit and offset operators including limiting results from an offset, limiting results in a nested object and keyset cursor based
- Filtering using the where argument with support of the following operators - simple comparison operator, boolean operator, text search operator and nested objects.
- Directives including
@include
and@skip
for fields. - Native Queries for PostgreSQL where each query is specified as SQL and can take arguments using the
{{argument_name}}
syntax - Business Logic - Now write your business logic in Typescript and use Hasura to front them as queries and mutations using the Typescript Deno connector.
- Mutations - Leverage the flexibility of mutating data with the following ways -
- Using the Typescript Deno connector which exposes Typescript functions as Hasura commands, which can be made available over the GraphQL API as a mutation. You can write to a database or an API and incorporate any business logic in the Typescript function while mutating.
- Point to point (simple) database inserts, updates, and deletes via the respective data connectors are coming soon.
- Queries - Leverage a powerful API to query data with the following features -
- Authentication: Hasura v3 utilizes "session variables", with specific user, role, organization and any other information you may need to determine the data access rights of the user. Hasura's authentication can be configured via JSON web tokens (JWT) or a webhook service and can be integrated with any other provider you choose.
Alpha Phase
This release marks the initial phase of our alpha rollout. Please note that Hasura V3 is still in its early stages and has limited functionality. We encourage feedback, bug reports, and contributions from the community to help us shape the future of this project.
Get Involved
We're excited to have you on board as we embark on this journey together.
- Report any bugs or issues you encounter via GitHub Issues.
- Propose new features or enhancements via Pull Requests.
- Join the discussions in our Discord channel.
Your participation and feedback are invaluable as we work towards more updates and exciting features in the upcoming releases! 🚀