BCF-API icon indicating copy to clipboard operation
BCF-API copied to clipboard

Move Schema Definitions from JSON to swagger.yaml

Open GeorgDangl opened this issue 11 months ago • 4 comments

We've discussed it in the group, we want to get rid of the embedded JSON schema files for all objects and instead only rely on a single swagger.yaml file. For this, we'll have to do a bit of work:

  • [ ] Work in the feature/swagger-spec branch
  • [x] Publish the API to SwaggerHub: https://app.swaggerhub.com/apis/buildingSMART/BCF/4.0
  • [x] Automatically publish the swagger.yaml changes
  • [ ] Configure automatically publishing only to run for the master branch
  • [ ] Update the swagger.yaml file with all changes since the 3.0 release (its current state)
  • [ ] Remove the JSON schemas
  • [ ] Update the links in the README to point to swagger hub (we can deep link both to actions as well as models there)
  • [ ] Check the swagger.yaml on SwaggerHub and make sure it has no errors or warnings

We need to sync those items:

  • [x] https://github.com/buildingSMART/BCF-API/commit/84af26ddaa03be2dd44901e773d978aaa7e9b525#diff-ac8d0a54775f67811b0c24e33fd2fa997d59a30af88b696789daf117e3095391 https://github.com/buildingSMART/BCF-API/commit/3885f36a8b6437416db35fb367864c03f65930bf -> Custom fields ✔

  • [x] https://github.com/buildingSMART/BCF-API/commit/d92ce0deb550173b204d7c46d83428ee09b098a0 -> Change url parameter names ✔

  • [x] https://github.com/buildingSMART/BCF-API/commit/5cbce2ff4cac0d0854f4f40730db9988a81212df -> Topic relations ✔

  • [x] https://github.com/buildingSMART/BCF-API/commit/3b6653c0301a819ebb67a97533a43596aa7d3acf -> parent / child relations ✔

  • [x] https://github.com/buildingSMART/BCF-API/commit/c2584b006ac90f93886c64fbdf96cb9755ebb5c6 -> Viewpoint audit info ✔

  • [x] https://github.com/buildingSMART/BCF-API/commit/fa9aa9378ce3118d9f3fd2c224767eb54d809a4e -> translucency ✔

  • [x] https://github.com/buildingSMART/BCF-API/commit/56599838ce5072136ce069bcaf0514193ac6489d -> Remove BIM snippet ✔

  • [x] https://github.com/buildingSMART/BCF-API/commit/f4f5035b9c2c5f30363cc4012f6cddc580732780 -> Topic files in viewpoints ✔

  • [ ] https://github.com/buildingSMART/BCF-API/commit/0f3e26677589ad086a960baa786490fd235c5abe -> id and name properties

  • [x] https://github.com/buildingSMART/BCF-API/commit/6ce1ee5dc915b8d550ea0771457491f8551a497a -> markers ✔

  • [x] https://github.com/buildingSMART/BCF-API/commit/edfde645e1a53955ad2774374fc60f909f99b8c0 -> Main viewpoint guid ✔

GeorgDangl avatar Mar 25 '24 10:03 GeorgDangl

Hello, will 4.0 be a new version in terms of breaking changes or is this just some cleanup regarding the swagger.yaml ?

NKnusperer avatar Apr 04 '24 11:04 NKnusperer

Hey @NKnusperer, it'll be a new version sometime in the future. There have been a few new features, and also some breaking changes. We don't yet know when this will be released, but the work for moving away from the JSON schemas to the Swagger file won't be made for currently released versions.

GeorgDangl avatar Apr 04 '24 13:04 GeorgDangl

Thank you @GeorgDangl. After looking into the changes in master compared to the current 3.0 specification the most interesting part seems to be the addition of custom_fields which was something I was actually missing in 3.0. I'm in a very early stage of implementing the BCF API and I'm wondering what would be the best way to already start using this in a "compliant" way until this has been ratified. The first which comes to mind is declaring the version like /bcf/4.0-draft.2024.02. Any thoughts on this?

NKnusperer avatar Apr 07 '24 10:04 NKnusperer

Well you can also just include the fields already in your endpoints, clients should ignore any fields they don't know about. So including extra information right now should just work, and those fields can be consumed by clients that know about it.

GeorgDangl avatar Apr 08 '24 07:04 GeorgDangl