All Versions
37
Latest Version
Avg Release Cycle
43 days
Latest Release
613 days ago

Changelog History
Page 1

  • v0.10.0-alpha.0 Changes

    September 27, 2022

    πŸš€ This release ships the long-awaited Ory Permission Language (a.k.a. πŸ‘‰ userset-rewrites) πŸŽ‰. You can now define global 🌍 rules for permissions, like "every user who is an owner also has read access", and many more. Best of all, you don't have to learn a new language to express these rules, but instead just πŸ‘‰ use a subset of TypeScript. Therefore syntax highlighting, formatting tools, πŸ‘• linters, unit test frameworks, ... work out of the box πŸ“¦! We will give a talk πŸ—£οΈ about how we ended up with this solution at the Ory Summit, so make sure to sign up or watch the recoding on YouTube later. Start exploring the Ory Permission Language πŸ“„ by following our guide πŸ“–. πŸš€ This is only the most shiny ✨ feature we packed into this release, see the full πŸ”„ changelog for all the other fixes and features we included.

    πŸ› Bug Fixes

    • Concurrency-safe graph utils (ea9dda9)
    • Correct paths in TypeScript SDK (#1025) (8b30508)
    • Do not setup /etc/nsswitch.conf on alpine (1f9fa96):

    Go fixed the initial issue and does not rely on that file anymore, see https://github.com/golang/go/issues/35305

    • Race in serve metrics init (5f4c19b)
    • βœ‚ Remove check constraint (54c00c3):

    Tests now use the new httpclient to properly handle empty strings vs strings (where the value is omitted in the JSON request).

    http*request** metrics contain data related only to /metrics/prometheus endpoint. This commit adds endpoints from non-monitoring routers.

    • fix: register read and write routers with PrometheusManager

    • fix: register read and write routers with PrometheusManager p2

    • fix: register read and write routers with PrometheusManager p3

    • feat: grpc request metrics

    • chore: add test

    • chore: revert gRPC metric test

    • chore: re-trigger ci

    • chore: re-trigger ci

    • chore: re-trigger ci

    • fix: lint

    • fix: cve

    • fix: better error handling

    • chore: remove old httpclient

    Enable TLS and certificate checking in the gRPC client when communicating with remote hosts.

    • Uuid mapping migration paginates (3a5fb2c)
    • Validate tuples for non-nil subject (a22dd19)

    πŸ‘· Build System

    Code Generation

    • πŸš€ Pin v0.10.0-alpha.0 release commit (52259a3):

    Bumps from v0.10.0-alpha.0.pre.0

    πŸ”¨ Code Refactoring

    • Generalize tree structure (6a0b2fe):

    This will allow reusing the tree to provide debug info on how a check decision was reached.

    πŸ“š Documentation

    • βž• Add initial documentation example for rewrites (065ce46)
    • πŸ›  Fix version meta schema (b054b24)

    πŸ”‹ Features

    • βž• Add bearer token auth (5110f63)
    • πŸ”§ Configure subject-set rewrites (0ce1519):

    The subject-set rewrites can now be configured through the Ory Permission Language (OPL), which is a subset of TypeScript. The OPL config is referenced in the central configuration under namespaces as such:

      [...]
      namespaces:
        location: <location>
      [...]
    

    The can be any valid file, directory or URI.

    • πŸ”’ Fine-grained control over transport security (5f056b7):

    This adds two new flags to the Keto CLI:

    • --insecure-disable-transport-security: Use plaintext instead of TLS
    • --insecure-skip-hostname-verification: Use TLS, but do not verify the certificate

    By default, the Keto CLI now connects to the remote via TLS and verifies the hostname.

    • OPL typescript library on npm (446fe7d)
    • Simpler notation for subjects w/o relation (ec979df)
    • Subject-set rewrites (6f61af8)
    • πŸ‘Œ Support subject sets in check (1760459)

    βœ… Tests

    • βž• Add cases for checking subject sets (93aee83), closes #985
  • v0.9.0-alpha.0 Changes

    August 01, 2022

    πŸš€ This release ships a few changes in the API paths. Requests and responses were πŸ”¨ not changed. However, we did A LOT of internal refactoring and improvements on the persistence layer. Some naming in the SDKs changed, it is a lot cleaner now. 🚚 One important change is that we removed the single table migrator. From now on to migrate from v0.6.0-alpha.1, please first migrate the legacy namespaces using v0.8.0-alpha.2 We also overhauled the whole persistence structure to ensure high scalability. This means that the migration might take a bit longer than usual, βœ… so please test the process first on a backup or staging environment. For all the details, check out the full changelog.

    πŸ’₯ Breaking Changes

    🚚 keto namespace migrate ... commands were removed. To migrate from v0.6.0-alpha.1, please first migrate the legacy namespaces using v0.8.0-alpha.2

    ⬆️ The protobuf API was bumped to v1alpha2. Please upgrade your client dependency πŸ‘ to that version. v1alpha1 is still supported for now, but might be dropped soon.

    πŸ›° Some payload keys are now (not) required anymore. The generated SDKs will likely have breaking changes.

    Co-authored-by: Patrik [email protected] Co-authored-by: hperl [email protected]

    /check is now /relation-tupes/check

    /expand is now /relation-tuples/expand

    /relation-tuples is now /admin/relation-tuples for write APIs

    πŸ“¦ gRPC package is now called ory.keto.relation_tuples.v1alpha2

    πŸ›  gRPC relation-tuple-delta action enum names are prefixed with ACTION_

    πŸ› Bug Fixes

    • cli: Make flag registration non-racy (8415ced)
    • 0️⃣ Enable telemetry by default (9dc8c7c)
    • Hide relation tuples with deleted namespace (cb1a2dd)

    Code Generation

    • πŸš€ Pin v0.9.0-alpha.0 release commit (6a13898)

    πŸ”¨ Code Refactoring

    This change refactors the API paths to be consistent with the rest of the Ory ecosystem. This step is required for the unified Ory SDK. Additionally, as we plan to add high level APIs, e.g. for RBAC. The check and expand API paths changed to allow adding those.

    • πŸ”„ Change pagination to use keyset pagination (7b861c9):

    The page token now is the last ID of the previous page. This enables faster queries and more stable pagination. NOTE: in case an integration modified page tokens to control pagination, this change will break the integration. Page tokens are opaque strings and should never be messed with.

    πŸ“š Documentation

    • πŸ”¦ Expose embedded OpenAPI spec (f9d20e3)
    • πŸ›  Fix docker compose demo setup (#872) (e89fbb0)
    • πŸ‘Œ Improve wording in README (#881) (fd6af60)
    • πŸ‘· Shorten CI status badge (#928) (81d880d)
    • πŸ”– version schema: Require version or fall back to latest (#863) (5306c93)

    πŸ”‹ Features

    • βž• Add check endpoints that do not mirror status code (#853) (07d0fbd)
    • βž• Add reverse lookup indices (#875) (25af263)
    • βž• Add spec for namespace configs (3d61b1c):

    Co-authored-by: hackerman [email protected]

    With this change Keto now maps strings to UUIDv5 on the storage layer. This change allows unlimited strings to be used while maintaining good performance. Further, it reduces the likeliness of database hot-spots. The migration that applies this mapping might take some time, so please confirm that your migration strategy works for you.

    • Metric names same as for Kratos (315ff41)
    • tracing: Improved tracing for persisters and requests (#878) (eb62c50)
    • tracing: Switch to opentelemetry (#861) (31f38ed)

    βœ… Tests

    • βœ‚ Remove double dockertest cleanup (0bfb10e)
    • βœ… Use isolated databases to parallelize all tests (bc09032)
  • v0.8.0-alpha.2 Changes

    March 04, 2022

    πŸ›  Mainly fixes the SDKs.

    πŸ› Bug Fixes

    • Config schema required and additional properties (#848) (6230227)

    Code Generation

    • πŸš€ Pin v0.8.0-alpha.2 release commit (be5cffd)

    πŸ“š Documentation

    • πŸ”„ Change oathkeeper to keto in openapi meta (9cb0b98)
  • v0.8.0-alpha.1 Changes

    February 22, 2022

    πŸš€ This is merly a cleanup release to fix automation issues.

    πŸ› Bug Fixes

    • βž• Add foreign key constraint for network ID (e815cb0)
    • Phony (9f5d0aa)
    • πŸš€ Resolve post-release steps (#838) (d478567)

    Code Generation

    • πŸš€ Pin v0.8.0-alpha.1 release commit (6daf88b)

    βœ… Tests

    • πŸ›  Fix inconsistencies (dab1b1d)
  • v0.8.0-alpha.0 Changes

    February 10, 2022

    Ory Keto v0.8.0-alpha.0 mainly ships internal improvements next to one bigger, possibly breaking feature. With πŸ‘ PR #799 Keto now supports bulk deletion of relation-tuples. For gRPC clients we added a new rpc, while in the REST world we had to change the behavior of the existing delete handler.

    IT NOW DELETES ALL MATCHING TUPLES.

    Example:

    curl -X DELETE "https://keto.local/relation-tuples?subject_id=foo"
    

    will delete all relation tuples that have the subject ID foo, even across namespaces. Passing empty strings is equivalent to not setting a value. Please ⚑️ test your integrations on a copy of your database before rolling out the update.

    If you don't use that REST endpoint, you are on the safe side.

    πŸ› Bug Fixes

    • βž• Add dummy sidebar (555ffca)
    • βž• Add hiring notice to README (#798) (2a6ddae)
    • CORS config values are ignored (#789) (ffeb5e3)
    • 🐳 Docker compose migrate (#800) (f1599a4)
    • 🐳 Docker-compose-postgres.yml SQL migration service (#779) (8f041bc)
    • Namespace should not be required in List API (#796) (07be82e):

    The namespace parameter is now not required anymore in the list REST API.

    Found a deeply nested dependency which was importing https://github.com/markbates/pkger, causing unreasonable CPU consumption and significant delay at start up time. With this patch, start up time was reduced from almost 1.7s to 0.02s.

      $ time keto
      keto  1.65s user 2.02s system 734% cpu 0.499 total
    
      $ time ./keto-patch
      ./keto-patch  0.02s user 0.01s system 6% cpu 0.425 total
    
    • ⚑️ Update golang.org/x/sys to fix macOS binary execution (#794) (ad8df58), closes #793

    Code Generation

    • πŸš€ Pin v0.8.0-alpha.0 release commit (85d59ec)

    πŸ”¨ Code Refactoring

    • πŸ”§ Configuration structure for limits (ffa99ec)
    • πŸ“š Move documentation to ory/docs and move to OAS3.0 generator (#833) (55d9d4e)

    πŸ“š Documentation

    • βž• Add cloud (5c66087)
    • βž• Add link to quickstart in config reference docs (#775) (25bc579)
    • Clarify that CLI remotes should be addresses and not URIs (#808) (7ce7973)
    • Heading caseing (#785) (563087d)
    • ⚑️ Update readme (d9397cc)

    πŸ”‹ Features

    • βž• Add max-depth parameter for check and global max-depth (#791) (1e3b63f):

    The parameter max-depth for the check command limits the depth of the search, a safeguard against particularly expensive queries. This allows users more fine-grain control.

    Furthermore, there is now a global max-depth configuration value that limits the overall max-depth of check and expand operations. It defaults to 5, which is considered a very safe value.

  • v0.7.0-alpha.1 Changes

    October 19, 2021

    πŸš€ This release provides small docs fixes especially for SDK clients.

    Code Generation

    • πŸš€ Pin v0.7.0-alpha.1 release commit (0d1e33a)

    πŸ“š Documentation

    • Adjust details missed for v0.7 (#762) (caa18c0)
    • Correct required annotation for List API parameters (#760) (ba1bec9)
    • πŸ‘‰ Make max-depth expand parameter required (#755) (6d51422)
  • v0.7.0-alpha.0 Changes

    October 06, 2021

    πŸš€ We are proud to present you a new release of Ory Keto! It has been a while, but we have been working hard not only on code, but also concepts and discussing many upcoming features. To join us on this exciting journey, watch :eyes: and start :star: the repository.

    πŸš€ At a first glance the release might not look too exciting from the outside, but we had 376 changed files with 47,578 additions and 25,418 deletions. In total, πŸ›  12 contributors worked on the 192 commits. The most changes were bug fixes, πŸ”¨ internal refactoring, and improving API consistency. Expect a more reliable Keto, that is also prepared to receive πŸ“„ many new exciting features.

    Because the database schema changed significantly, and it is not possible to have SQL-only migrations, there is a special migration procedure needed to ⬆️ upgrade from Ory Keto v0.6. Please follow the πŸ“„ migration guide and, as always, read the changelog before ⬆️ upgrading.

    πŸ’₯ Breaking Changes

    This patch changes the payload of the REST API. The gRPC API is not affected. The parameter subject was previously an encoded string. With this πŸ”„ change clients have to explicitly use either subject_id or (subject_set.namespace and subject_set.object and subject_set.relation). The same is true for REST responses returned by Keto. An error with a hint will be returned if subject is still used.

    πŸ› Bug Fixes

    • make sdk dependency on the Ory CLI (#710) (0cb5706)
    • βž• Add missing tracers (#600) (aa263be), closes #593
    • cli: Panic when printing empty expand trees (#686) (7956dec)
    • 🐳 Dockerfiles (#737) (f10dec1)
    • πŸ”Š Exclude /health endpoints from logs (#716) (7c27f92)
    • πŸ– Handle relation tuple cycles in expand and check engine (#623) (8e30119)
    • 🌲 Log all database connection errors (#588) (2b0fad8)
    • 🚚 Move gRPC client module root up (#620) (3b881f6):

    BREAKING: The npm package @ory/keto-grpc-client from now on includes all API versions. Because of that, the import paths changed. For migrating to the new client package, change the import path according to the following example:

      - import acl from '@ory/keto-grpc-client/acl_pb.js'
      + // from the latest version
      + import { acl } from '@ory/keto-grpc-client'
      + // or a specific one
      + import acl from '@ory/keto-grpc-client/ory/keto/acl/v1alpha1/acl_pb.js'
    

    This change significantly improves and the config schema. Parts will now be taken from upstream to ensure a more up-to-date schema.

    • Patch REST API input validation and SDK generation (#717) (d49e098)
    • βš™ Run a whole namespace migration as one transaction (#739) (142bd47)
    • πŸš€ Set version during release build and register version handler (#714) (8091475)
    • ⚑️ Update docker-compose.yml version (#595) (7fa4dca), closes #549

    Chores

    • ⚑️ Update repository templates (f53d3eb)

    Code Generation

    • πŸš€ Pin v0.7.0-alpha.0 release commit (7962e77)

    πŸ”¨ Code Refactoring

    • Ensure namespace manager reload is resource contained (#735) (5696fc6)
    • πŸ‘‰ Make subject sets and subject IDs unambiguous (#729) (5a1b0ba)
    • Persistence table structure (#638) (d02b818):

    This big refactoring greatly reduces operation complexity and paves the way for upcoming performance improvements. From now on the relation tuples from all namespaces are stored in the same table, instead of having tables per namespace. A migration path will be provided separately.

    πŸ“š Documentation

    • βž• Add migration guide to v0.7 (#758) (3335a4b)
    • βž• Add new redoc docsc (#651) (435ae00)
    • πŸ”„ Change npm org scope from @oryd to @ory (#730) (945005f)
    • πŸ›  Fix build and gen:config (#676) (f128732)
    • πŸ›  Fix erroneous sidebar commit (5cf2b4c)
    • πŸ›  Fix example not following best practice (#582) (a015818)
    • πŸ›  Fix link in migration guide (e995829)
    • πŸ›  Fix REST API reference (#718) (f989b39)
    • ⚑️ Update NPM links due to organisation move (#616) (6355bea)
    • ⚑️ Update reference to Zanzibar in README (#746) (a0d8caf)

    πŸ”‹ Features

    • βž• Add gRPC client utils helpers (#657) (8b18802):

    Behold! The Keto gRPC client library now has useful helpers that allow you to replace:

      - deltas := make([]*acl.RelationTupleDelta, len(tuples))
      - for i := range rts {
      -     deltas[i] = &acl.RelationTupleDelta{
      -         Action:        acl.RelationTupleDelta_INSERT,
      -         RelationTuple: rts[i],
      -     }
      - }
      + deltas := acl.RelationTupleToDeltas(tuples, acl.RelationTupleDelta_INSERT)
    

    and

      - &acl.Subject{Ref: &acl.Subject_Set{Set: &acl.SubjectSet{
      -     Namespace: "directories",
      -     Object:    "/photos",
      -     Relation:  "access",
      - }}}
      + acl.NewSubjectSet("directories", "/photos", "access")
    

    and

      - &acl.Subject{Ref: &acl.Subject_Id{
      -     Id: "user1",
      - }}
      + acl.NewSubjectID("user1")
    

    Enjoy these new treats :chocolate_bar: :lollipop: :icecream:

    This change adds a migration path from Keto version v0.6.x to the new persistence structure introduced by https://github.com/ory/keto/pull/638. Every namespace has to be migrated separately, or you can use the CLI to detect and migrate all namespaces at once. Have a look at keto help namespace migrate legacy for all details. Please make sure that you backup the database before running the migration command. Please note that this migration might be a bit slower than usual, as we have to pull the data from the database, transcode it in Keto, and then write it to the new table structure. Versions of Keto >v0.7 will not include this migration script, so you will first have to migrate to v0.7 and move on from there.

    • πŸ‘Œ Support namespace validation from config files (#596) (f4253b8):

    The keto namespace validate command now additionally supports:

    • validation of namespaces in config files
    • validation of a directory specified in config files

    βœ… Tests

    Confirmed that the fix works because

      $ go test -tags sqlite -run TestStatusCmd/server_type=read/case=block -count 1000 ./cmd/status
    

    passed.

    • Ensure problematic chars are not creatable over REST (#709) (12b7954)
    • Single table migration as transaction (#736) (9eda48c)
  • v0.6.0-alpha.3 Changes

    April 29, 2021

    πŸ— Resolves CRDB and build issues.

    Code Generation

    • πŸš€ Pin v0.6.0-alpha.3 release commit (d766968)
  • v0.6.0-alpha.2 Changes

    April 29, 2021

    πŸ“š This release improves stability and documentation.

    πŸ› Bug Fixes

    • βž• Add npm run format to make format (7d844a8)
    • πŸ‘‰ Makefile target (0e6f612)
    • 🚚 Move swagger to spec dir (7f6a061)
    • Resolve clidoc issues (ef12b4e)
    • ⚑️ Update install.sh (#568) (86ab245)
    • πŸ‘‰ Use correct id (5e02902)
    • πŸ‘‰ Use correct id for api (32a6b04)
    • πŸ‘‰ Use sqlite image versions (#544) (ec6cc5e)

    Code Generation

    • πŸš€ Pin v0.6.0-alpha.2 release commit (470b2c6)

    πŸ“š Documentation

    • βž• Add gRPC client README.md (#559) (9dc3596)
    • πŸ”„ Change forum to discussions readme (#539) (ea2999d)
    • πŸ›  Fix cat videos example docker compose (#549) (b25a711)
    • πŸ›  Fix typo (#538) (99a9693)
    • Include namespace in olymp library example (#540) (135e814)
    • ⚑️ Update install from source steps to actually work (#548) (e662256)

    πŸ”‹ Features

    • πŸ“„ Global docs sidebar and added cloud pages (c631c82)
    • πŸ‘Œ Support retryable CRDB transactions (833147d)
  • v0.6.0-alpha.1 Changes

    April 07, 2021

    We are extremely happy to announce next-gen Ory Keto which implements Zanzibar: Google’s Consistent, Global Authorization System:

    πŸ”§ > Zanzibar provides a uniform data model and configuration language for

    expressing a wide range of access control policies from hundreds of client services at Google, including Calendar, Cloud, Drive, Maps, Photos, and YouTube. Its authorization decisions respect causal ordering of user actions and thus provide external consistency amid changes to access control lists and object contents. Zanzibar scales to trillions of access control lists and πŸ‘ > millions of authorization requests per second to support services used by 🚀 > billions of people. It has maintained 95th-percentile latency of less than 10 milliseconds and availability of greater than 99.999% over 3 years of production use.

    Ory Keto is the first open source planet-scale authorization system built with cloud native technologies (Go, gRPC, newSQL) and architecture. It is also the first open source implementation of Google Zanzibar :tada:!

    Many concepts developer by Google Zanzibar are implemented in Ory Keto already. Let's take a look!

    πŸš€ As of this release, Ory Keto knows how to interpret and operate on the basic access control lists known as relation tuples. They encode relations between objects and subjects. One simple example of such a relation tuple could encode "user1 has access to file /foo", a more complex one could encode "everyone who has write access on /foo has read access on /foo".

    Ory Keto comes with all the basic APIs as described in the Zanzibar paper. All of them are available over gRPC and REST.

    1. List: query relation tuples
    2. Check: determine whether a subject has a relation on an object
    3. Expand: get a tree of all subjects who have a relation on an object ⚑️ 4. Change: create, update, and delete relation tuples

    For all details, head over to the πŸ“š documentation.

    πŸš€ With this release we officially move the "old" Keto to the legacy-0.5 branch. We will only πŸ”’ provide security fixes from now on. A migration path to v0.6 is planned but not yet implemented, as the architectures are vastly different. Please refer to the issue.

    🐎 We are keen to bring more features and performance improvements. The next πŸ”‹ features we will tackle are:

    • Subject Set rewrites
    • πŸ‘ Native ABAC & RBAC Support
    • Integration with other policy servers
    • 🚀 Latency reduction through aggressive caching
    • Cluster mode that fans out requests over all Keto instances

    πŸš€ So stay tuned, :star: this repo, :eyes: releases, and πŸ”€ subscribe to our newsletter :email:.

    πŸ› Bug Fixes

    • βž• Add description attribute to access control policy role (#215) (831eba5)
    • Add leak_sensitive_values to config schema (2b21d2b)
    • ⬆️ Bump CLI (80c82d0)
    • ⬆️ Bump deps and replace swagutil (#212) (904258d)
    • Check engine overwrote result in some cases (#412) (3404492)
    • Check health status in status command (21c64d4)
    • Check REST API returns JSON object (#460) (501dcff), closes #406
    • Empty relationtuple list should not error (#440) (fbcb3e1)
    • Ensure nil subject is not allowed (#449) (7a0fcfc):

    The nodejs gRPC client was a great fuzzer and pointed me to some nil pointer dereference panics. This adds some input validation to prevent panics.

    • Ensure persister errors are handled by sqlcon (#473) (4343c4a)
    • πŸ– Handle pagination and errors in the check/expand engines (#398) (5eb1a7d)
    • Ignore dist (ba816ea)
    • Ignore x/net false positives (d8b36cb)
    • πŸ‘Œ Improve CLI remote sourcing (#474) (a85f4d7)
    • πŸ‘Œ Improve handlers and add tests (#470) (ca5ccb9)
    • πŸ–¨ Insert relation tuples without fmt.Sprintf (#443) (fe507bb)
    • πŸ›  Minor bugfixes (#371) (185ee1e)
    • 🐳 Move dockerfile to where it belongs (f087843)
    • Namespace migrator (#417) (ea79300), closes #404
    • βœ‚ Remove SQL logging (#455) (d8e2a86)
    • πŸ“‡ Rename /relationtuple endpoint to /relation-tuples (#519) (8eb55f6)
    • πŸ— Resolve gitignore build (6f04bbb)
    • πŸš€ Resolve goreleaser issues (d32767f)
    • 🏁 Resolve windows build issues (8bcdfbf)
    • Rewrite check engine to search starting at the object (#310) (7d99694), closes #302
    • πŸ— Secure query building (#442) (c7d2770)
    • 🐳 Strict version enforcement in docker (e45b28f)
    • ⚑️ Update dd-trace to fix build issues (2ad489f)
    • ⚑️ Update docker to go 1.16 and alpine (c63096c)
    • πŸ‘‰ Use errors.WithStack everywhere (#462) (5f25bce), closes #437:

    Fixed all occurrences found using the search pattern return .*, err\n.

    • πŸ“¦ Use package name in pkger (6435939)
    • schema: Add trace level to logger (a5a1402)
    • πŸ‘‰ Use make() to initialize slices (#250) (84f028d), closes #217

    πŸ‘· Build System

    • πŸ“Œ Pin dependency versions of buf and protoc plugins (#338) (5a2fd1c)

    Code Generation

    • πŸš€ Pin v0.6.0-alpha.1 release commit (875af25)

    πŸ”¨ Code Refactoring

    πŸ“š Documentation

    This also refactored the server startup. Functionality did not change.

    This also enables gRPC go, gRPC nodejs, cURL, and Keto CLI code samples to be tested.

    • ⚑️ Update comment in write response (#329) (4ca0baf)
    • ⚑️ Update install instructions (d2e4123)
    • ⚑️ Update introduction (5f71d73)
    • ⚑️ Update README (#515) (18d3cd6):

    Also format all markdown files in the root.

    • ⚑️ Update repository templates (db505f9)
    • ⚑️ Update repository templates (6c056bb)
    • ⚑️ Update SDK links (#514) (f920fbf)
    • πŸ“š Update swagger documentation for REST endpoints (c363de6)
    • πŸ‘‰ Use mdx for api reference (340f3a3)
    • ⚑️ Various improvements and updates (#486) (a812ace)

    πŸ”‹ Features

    This also refactors the current migrate and namespace migrate commands.

    Includes Typescript definitions.

    This is a first draft of the read API. It is reachable by REST and gRPC calls. The main purpose of this PR is to establish the basic repository structure and define the API.

    • πŸ“œ Relationtuple parse command (#490) (91a3cf4):

    This command parses the relation tuple format used in the docs. It greatly improves the experience when copying something from the documentation. It can especially be used to pipe relation tuples into other commands, e.g.:

      echo "messages:02y_15_4w350m3#decypher@john" | \
        keto relation-tuple parse - --format json | \
        keto relation-tuple create -
    

    The new PATCH handler allows transactional changes similar to the already existing gRPC service.

    βœ… Tests