Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

API Differences Tracker #49

Open
randomouscrap98 opened this issue Dec 6, 2021 · 0 comments
Open

API Differences Tracker #49

randomouscrap98 opened this issue Dec 6, 2021 · 0 comments
Labels
documentation Improvements or additions to documentation

Comments

@randomouscrap98
Copy link
Owner

randomouscrap98 commented Dec 6, 2021

This ticket is to track the differences in the api from the previous version:

  • Buckets are gone, all files have fully working permissions now, and files that WERE in buckets are now fully private
  • All files have a public "hash" that allows access to the raw file regardless of permissions. The hash for all old files IS the id itself, new files will have a "random" hash like kland
  • The /api/file/raw/id endpoint has been replaced with /api/file/raw/hash. Because the hash for all old files is their id, all old file links will NOT break. When constructing file urls, use the HASH, not the id.
  • User avatar fields are strings now, represents the file "hash"
  • There are no implicit createUser permissions on content now; all permissions are explicitly listed in the permissions object. If you are the owner of a page, the system will automatically add or override whatever permissions you give yourself to explicitly add the full CRUD for you. Old content will automatically have these permissions applied during conversion
  • All individual GET endpoints for searching for particular types of items have been removed. All searching should be done through /api/request
  • The chainer endpoint is gone, the functionality is fully available with a different interface and implementation at /api/request
  • Categories are GONE by request of 12, website hierarchy is constructed with "content", as any content can now be the parent of any other content
  • All content has been unified into a single type, just with different "views" into that type. As such, modules, files, and pages (they're called pages now) all have the same capabilities, such as comments, votes, values, keywords, permissions, parents, etc. You can attach files to content, or make comments on modules, or even EDIT modules if someone gives you the permission to do so. Collaboration!
  • LocalSupers are gone, the field still exists on the "categories" (which are now just pages), but it does nothing.
  • Groups were added, adding a group ID to the permission array gives those permissions to every user in the group for the page. This is the replacement for local supers: put all "document writers" or whatever into a group, and add that group to every documentation page.
  • Fileviews have fields specific to them now: "mimetype" and "quantization". Quantization is a string and may explain what the quantization did in more detail
  • Modules have specific fields too: "code" rather than "content", and "description"
  • Super status is stored in the database rather than a file, so supers can add or remove other supers. This is a scary power that needs to be carefully considered
  • Deleted content and comments are returned in searches, just with no actual data and the "deleted" field marked. You will need to filter these out if you don't care about them. This is done for several reasons, sorry you'll just have to deal with it
  • Comment text field is now "text" rather than content. Also note that several other fields in many types have changed names.
  • During file upload, you can now specify the global permissions for your file with the query parameter "globalPerms". If you want no global perms, you should use "." to force the value to go through (empty values don't always work, depending on factors...)

Later additions (1-2022):

  • Watch notifications will no longer include comment edits or deletes; although this is a slight reduction in functionality, it greatly simplifies the watch system
  • Comments have split text and metadata. During conversion, I strip the metadata (the initial line json hack we've been using) and put it in a dedicated "metadata" field you can now set individually from the text. Please don't use the old format anymore once the change goes out!
  • Comments now have a "values" dictionary, same as content. The old "m", "a", and "n" metadata values for markup, avatar, and nickname that used to be WITHIN the comment text is now split out into the values array. You no longer need to parse the comment text
  • Comments and pages "content" field has been changed to "text" to be less confusing.
  • Comments and pages "values" dictionary is now string to object, so your values can be objects directly and not just strings that have json objects in them. All old data that is pertinent has been converted to objects, such as "photos", "pinned", "thumbnail", etc.
  • Notification counts included with the 'watch' request type. This should hopefully greatly simplify the process of figuring out notification counts. It is very fast, at least for now.
  • New file upload endpoint is entirely FormData now, no GET params. ALL parameters, such as the file itself, quantize, etc are POST. This greatly simplifies the usage of that endpoint

Later additions (4-2022):

  • All content is exactly the same now, so "modules" and "files" and "pages" and all that are differentiated by "contentType". As such, they all have exactly the same fields, meaning everything has a "meta" field. This "meta" field is managed by the API, and is always readonly. It may include things like the file quantization and size information for files, but it is currently unused by other types.
@randomouscrap98 randomouscrap98 added the documentation Improvements or additions to documentation label Feb 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

1 participant