Coder Social home page Coder Social logo

Panoptes Routes about panoptes HOT 10 CLOSED

edpaget avatar edpaget commented on August 24, 2024
Panoptes Routes

from panoptes.

Comments (10)

camallen avatar camallen commented on August 24, 2024

Weren't we planning on using the user_name (URL friendly) as the root url path for all beta / small projects? e.g. zooniverse.org/my_zoo_user_name/project_name/

As you said above the "sponsored" projects would look like zooniverse.org/project_name/.+

from panoptes.

brian-c avatar brian-c commented on August 24, 2024

I think super-explicit API endpoints and slightly looser, human-friendly front end URLs is the way to go. /:project_name aliases (redirects?) sound good to me too.

What're collections?

What's a user doing looking for a specific workflow?

Subject sets won't be tied to a project. Neither will workflows, for that matter.

from panoptes.

camallen avatar camallen commented on August 24, 2024

Wasn't the idea for workflows being generic in the sense of project creation but linked to a specific project definition?

from panoptes.

edpaget avatar edpaget commented on August 24, 2024

Collections are subject collections (like favorites) a user can make. Right now Workflows and SubjectSets assume a link to a specific project, to reduce the number of joins in the database. I'd assume if you wanted to import them into a second project, we could duplicate their records in the db?

from panoptes.

camallen avatar camallen commented on August 24, 2024

perhaps we need a workflow and project_workflow join table? Save the data duplication but allow the links to happen? Either that or the workflows are defined in code?

from panoptes.

brian-c avatar brian-c commented on August 24, 2024

I think the goal is to have people provide big open data sets (e.g. "SDSS 2013 images") that people (e.g. students) can build projects around.

Workflows should be generic so people can build two projects with different data sets using the same tasks (e.g. Galaxy Zoo 1 and Galaxy Zoo 2 or something). Might be rare, but I think it should be possible.

from panoptes.

edpaget avatar edpaget commented on August 24, 2024

I think workflow sharing is something that's easy to make happen so we should do it, but I'm for copying existing "template" workflows, so someone changing an upstream workflow doesn't change the one you're using on your project.

For instance in the GZ1/GZ2 senario. I don't think it'd good for the GZ1 owner to be able to remove a "Is there a merger question?" from their project and have it also disappear from the GZ2 project without explicit user action making that happen.

from panoptes.

camallen avatar camallen commented on August 24, 2024

good point. We need to lock the workflow to the point of project workflow selection.

from panoptes.

edpaget avatar edpaget commented on August 24, 2024

Hi all. I merged in my routes pull request as a starting point. Let's keep talking about what what exactly we want them to look like. As as now here's the output for rake routes | grep api

                                      api_me GET    /api/me(.:format)                                                                              api/v1/users#show
                  api_user_collections GET    /api/users/:user_id/collections(.:format)                                                      api/v1/collections#index
                                       POST   /api/users/:user_id/collections(.:format)                                                      api/v1/collections#create
                   api_user_collection GET    /api/users/:user_id/collections/:id(.:format)                                                  api/v1/collections#show
                                       PATCH  /api/users/:user_id/collections/:id(.:format)                                                  api/v1/collections#update
                                       PUT    /api/users/:user_id/collections/:id(.:format)                                                  api/v1/collections#update
                                       DELETE /api/users/:user_id/collections/:id(.:format)                                                  api/v1/collections#destroy
      api_user_project_classifications GET    /api/users/:user_id/projects/:project_id/classifications(.:format)                             api/v1/classifications#index
                                       POST   /api/users/:user_id/projects/:project_id/classifications(.:format)                             api/v1/classifications#create
       api_user_project_classification GET    /api/users/:user_id/projects/:project_id/classifications/:id(.:format)                         api/v1/classifications#show
                                       PATCH  /api/users/:user_id/projects/:project_id/classifications/:id(.:format)                         api/v1/classifications#update
                                       PUT    /api/users/:user_id/projects/:project_id/classifications/:id(.:format)                         api/v1/classifications#update
                                       DELETE /api/users/:user_id/projects/:project_id/classifications/:id(.:format)                         api/v1/classifications#destroy
            api_user_project_workflows GET    /api/users/:user_id/projects/:project_id/workflows(.:format)                                   api/v1/workflows#index
                                       POST   /api/users/:user_id/projects/:project_id/workflows(.:format)                                   api/v1/workflows#create
             api_user_project_workflow GET    /api/users/:user_id/projects/:project_id/workflows/:id(.:format)                               api/v1/workflows#show
                                       PATCH  /api/users/:user_id/projects/:project_id/workflows/:id(.:format)                               api/v1/workflows#update
                                       PUT    /api/users/:user_id/projects/:project_id/workflows/:id(.:format)                               api/v1/workflows#update
                                       DELETE /api/users/:user_id/projects/:project_id/workflows/:id(.:format)                               api/v1/workflows#destroy
 api_user_project_subject_set_subjects GET    /api/users/:user_id/projects/:project_id/subject_sets/:subject_set_id/subjects(.:format)       api/v1/subjects#index
                                       POST   /api/users/:user_id/projects/:project_id/subject_sets/:subject_set_id/subjects(.:format)       api/v1/subjects#create
  api_user_project_subject_set_subject GET    /api/users/:user_id/projects/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format)   api/v1/subjects#show
                                       PATCH  /api/users/:user_id/projects/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format)   api/v1/subjects#update
                                       PUT    /api/users/:user_id/projects/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format)   api/v1/subjects#update
                                       DELETE /api/users/:user_id/projects/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format)   api/v1/subjects#destroy
         api_user_project_subject_sets GET    /api/users/:user_id/projects/:project_id/subject_sets(.:format)                                api/v1/subject_sets#index
                                       POST   /api/users/:user_id/projects/:project_id/subject_sets(.:format)                                api/v1/subject_sets#create
          api_user_project_subject_set GET    /api/users/:user_id/projects/:project_id/subject_sets/:id(.:format)                            api/v1/subject_sets#show
                                       PATCH  /api/users/:user_id/projects/:project_id/subject_sets/:id(.:format)                            api/v1/subject_sets#update
                                       PUT    /api/users/:user_id/projects/:project_id/subject_sets/:id(.:format)                            api/v1/subject_sets#update
                                       DELETE /api/users/:user_id/projects/:project_id/subject_sets/:id(.:format)                            api/v1/subject_sets#destroy
                     api_user_projects GET    /api/users/:user_id/projects(.:format)                                                         api/v1/projects#index
                                       POST   /api/users/:user_id/projects(.:format)                                                         api/v1/projects#create
                      api_user_project GET    /api/users/:user_id/projects/:id(.:format)                                                     api/v1/projects#show
                                       PATCH  /api/users/:user_id/projects/:id(.:format)                                                     api/v1/projects#update
                                       PUT    /api/users/:user_id/projects/:id(.:format)                                                     api/v1/projects#update
                                       DELETE /api/users/:user_id/projects/:id(.:format)                                                     api/v1/projects#destroy
                             api_users GET    /api/users(.:format)                                                                           api/v1/users#index
                                       POST   /api/users(.:format)                                                                           api/v1/users#create
                              api_user GET    /api/users/:id(.:format)                                                                       api/v1/users#show
                                       PATCH  /api/users/:id(.:format)                                                                       api/v1/users#update
                                       PUT    /api/users/:id(.:format)                                                                       api/v1/users#update
                                       DELETE /api/users/:id(.:format)                                                                       api/v1/users#destroy
                 api_group_collections GET    /api/groups/:group_id/collections(.:format)                                                    api/v1/collections#index
                                       POST   /api/groups/:group_id/collections(.:format)                                                    api/v1/collections#create
                  api_group_collection GET    /api/groups/:group_id/collections/:id(.:format)                                                api/v1/collections#show
                                       PATCH  /api/groups/:group_id/collections/:id(.:format)                                                api/v1/collections#update
                                       PUT    /api/groups/:group_id/collections/:id(.:format)                                                api/v1/collections#update
                                       DELETE /api/groups/:group_id/collections/:id(.:format)                                                api/v1/collections#destroy
     api_group_project_classifications GET    /api/groups/:group_id/projects/:project_id/classifications(.:format)                           api/v1/classifications#index
                                       POST   /api/groups/:group_id/projects/:project_id/classifications(.:format)                           api/v1/classifications#create
      api_group_project_classification GET    /api/groups/:group_id/projects/:project_id/classifications/:id(.:format)                       api/v1/classifications#show
                                       PATCH  /api/groups/:group_id/projects/:project_id/classifications/:id(.:format)                       api/v1/classifications#update
                                       PUT    /api/groups/:group_id/projects/:project_id/classifications/:id(.:format)                       api/v1/classifications#update
                                       DELETE /api/groups/:group_id/projects/:project_id/classifications/:id(.:format)                       api/v1/classifications#destroy
           api_group_project_workflows GET    /api/groups/:group_id/projects/:project_id/workflows(.:format)                                 api/v1/workflows#index
                                       POST   /api/groups/:group_id/projects/:project_id/workflows(.:format)                                 api/v1/workflows#create
            api_group_project_workflow GET    /api/groups/:group_id/projects/:project_id/workflows/:id(.:format)                             api/v1/workflows#show
                                       PATCH  /api/groups/:group_id/projects/:project_id/workflows/:id(.:format)                             api/v1/workflows#update
                                       PUT    /api/groups/:group_id/projects/:project_id/workflows/:id(.:format)                             api/v1/workflows#update
                                       DELETE /api/groups/:group_id/projects/:project_id/workflows/:id(.:format)                             api/v1/workflows#destroy
api_group_project_subject_set_subjects GET    /api/groups/:group_id/projects/:project_id/subject_sets/:subject_set_id/subjects(.:format)     api/v1/subjects#index
                                       POST   /api/groups/:group_id/projects/:project_id/subject_sets/:subject_set_id/subjects(.:format)     api/v1/subjects#create
 api_group_project_subject_set_subject GET    /api/groups/:group_id/projects/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format) api/v1/subjects#show
                                       PATCH  /api/groups/:group_id/projects/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format) api/v1/subjects#update
                                       PUT    /api/groups/:group_id/projects/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format) api/v1/subjects#update
                                       DELETE /api/groups/:group_id/projects/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format) api/v1/subjects#destroy
        api_group_project_subject_sets GET    /api/groups/:group_id/projects/:project_id/subject_sets(.:format)                              api/v1/subject_sets#index
                                       POST   /api/groups/:group_id/projects/:project_id/subject_sets(.:format)                              api/v1/subject_sets#create
         api_group_project_subject_set GET    /api/groups/:group_id/projects/:project_id/subject_sets/:id(.:format)                          api/v1/subject_sets#show
                                       PATCH  /api/groups/:group_id/projects/:project_id/subject_sets/:id(.:format)                          api/v1/subject_sets#update
                                       PUT    /api/groups/:group_id/projects/:project_id/subject_sets/:id(.:format)                          api/v1/subject_sets#update
                                       DELETE /api/groups/:group_id/projects/:project_id/subject_sets/:id(.:format)                          api/v1/subject_sets#destroy
                    api_group_projects GET    /api/groups/:group_id/projects(.:format)                                                       api/v1/projects#index
                                       POST   /api/groups/:group_id/projects(.:format)                                                       api/v1/projects#create
                     api_group_project GET    /api/groups/:group_id/projects/:id(.:format)                                                   api/v1/projects#show
                                       PATCH  /api/groups/:group_id/projects/:id(.:format)                                                   api/v1/projects#update
                                       PUT    /api/groups/:group_id/projects/:id(.:format)                                                   api/v1/projects#update
                                       DELETE /api/groups/:group_id/projects/:id(.:format)                                                   api/v1/projects#destroy
                            api_groups GET    /api/groups(.:format)                                                                          api/v1/groups#index
                                       POST   /api/groups(.:format)                                                                          api/v1/groups#create
                             api_group GET    /api/groups/:id(.:format)                                                                      api/v1/groups#show
                                       PATCH  /api/groups/:id(.:format)                                                                      api/v1/groups#update
                                       PUT    /api/groups/:id(.:format)                                                                      api/v1/groups#update
                                       DELETE /api/groups/:id(.:format)                                                                      api/v1/groups#destroy
               api_collection_subjects GET    /api/collections/:ownername/:collection_id/subjects(.:format)                                  api/v1/subjects#index
                                       POST   /api/collections/:ownername/:collection_id/subjects(.:format)                                  api/v1/subjects#create
                api_collection_subject GET    /api/collections/:ownername/:collection_id/subjects/:id(.:format)                              api/v1/subjects#show
                                       PATCH  /api/collections/:ownername/:collection_id/subjects/:id(.:format)                              api/v1/subjects#update
                                       PUT    /api/collections/:ownername/:collection_id/subjects/:id(.:format)                              api/v1/subjects#update
                                       DELETE /api/collections/:ownername/:collection_id/subjects/:id(.:format)                              api/v1/subjects#destroy
                       api_collections GET    /api/collections/:ownername(.:format)                                                          api/v1/collections#index
                                       POST   /api/collections/:ownername(.:format)                                                          api/v1/collections#create
                        api_collection GET    /api/collections/:ownername/:id(.:format)                                                      api/v1/collections#show
                                       PATCH  /api/collections/:ownername/:id(.:format)                                                      api/v1/collections#update
                                       PUT    /api/collections/:ownername/:id(.:format)                                                      api/v1/collections#update
                                       DELETE /api/collections/:ownername/:id(.:format)                                                      api/v1/collections#destroy
                          api_subjects GET    /api/subjects(.:format)                                                                        api/v1/subjects#index
                                       POST   /api/subjects(.:format)                                                                        api/v1/subjects#create
                           api_subject GET    /api/subjects/:id(.:format)                                                                    api/v1/subjects#show
                                       PATCH  /api/subjects/:id(.:format)                                                                    api/v1/subjects#update
                                       PUT    /api/subjects/:id(.:format)                                                                    api/v1/subjects#update
                                       DELETE /api/subjects/:id(.:format)                                                                    api/v1/subjects#destroy
           api_project_classifications GET    /api/projects/:ownername/:project_id/classifications(.:format)                                 api/v1/classifications#index
                                       POST   /api/projects/:ownername/:project_id/classifications(.:format)                                 api/v1/classifications#create
            api_project_classification GET    /api/projects/:ownername/:project_id/classifications/:id(.:format)                             api/v1/classifications#show
                                       PATCH  /api/projects/:ownername/:project_id/classifications/:id(.:format)                             api/v1/classifications#update
                                       PUT    /api/projects/:ownername/:project_id/classifications/:id(.:format)                             api/v1/classifications#update
                                       DELETE /api/projects/:ownername/:project_id/classifications/:id(.:format)                             api/v1/classifications#destroy
                 api_project_workflows GET    /api/projects/:ownername/:project_id/workflows(.:format)                                       api/v1/workflows#index
                                       POST   /api/projects/:ownername/:project_id/workflows(.:format)                                       api/v1/workflows#create
                  api_project_workflow GET    /api/projects/:ownername/:project_id/workflows/:id(.:format)                                   api/v1/workflows#show
                                       PATCH  /api/projects/:ownername/:project_id/workflows/:id(.:format)                                   api/v1/workflows#update
                                       PUT    /api/projects/:ownername/:project_id/workflows/:id(.:format)                                   api/v1/workflows#update
                                       DELETE /api/projects/:ownername/:project_id/workflows/:id(.:format)                                   api/v1/workflows#destroy
      api_project_subject_set_subjects GET    /api/projects/:ownername/:project_id/subject_sets/:subject_set_id/subjects(.:format)           api/v1/subjects#index
                                       POST   /api/projects/:ownername/:project_id/subject_sets/:subject_set_id/subjects(.:format)           api/v1/subjects#create
       api_project_subject_set_subject GET    /api/projects/:ownername/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format)       api/v1/subjects#show
                                       PATCH  /api/projects/:ownername/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format)       api/v1/subjects#update
                                       PUT    /api/projects/:ownername/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format)       api/v1/subjects#update
                                       DELETE /api/projects/:ownername/:project_id/subject_sets/:subject_set_id/subjects/:id(.:format)       api/v1/subjects#destroy
              api_project_subject_sets GET    /api/projects/:ownername/:project_id/subject_sets(.:format)                                    api/v1/subject_sets#index
                                       POST   /api/projects/:ownername/:project_id/subject_sets(.:format)                                    api/v1/subject_sets#create
               api_project_subject_set GET    /api/projects/:ownername/:project_id/subject_sets/:id(.:format)                                api/v1/subject_sets#show
                                       PATCH  /api/projects/:ownername/:project_id/subject_sets/:id(.:format)                                api/v1/subject_sets#update
                                       PUT    /api/projects/:ownername/:project_id/subject_sets/:id(.:format)                                api/v1/subject_sets#update
                                       DELETE /api/projects/:ownername/:project_id/subject_sets/:id(.:format)                                api/v1/subject_sets#destroy
                          api_projects GET    /api/projects/:ownername(.:format)                                                             api/v1/projects#index
                                       POST   /api/projects/:ownername(.:format)                                                             api/v1/projects#create
                           api_project GET    /api/projects/:ownername/:id(.:format)                                                         api/v1/projects#show
                                       PATCH  /api/projects/:ownername/:id(.:format)                                                         api/v1/projects#update
                                       PUT    /api/projects/:ownername/:id(.:format)                                                         api/v1/projects#update
                                       DELETE /api/projects/:ownername/:id(.:format)                                                         api/v1/projects#destroy

from panoptes.

edpaget avatar edpaget commented on August 24, 2024

I think we're all settled. This is the final form for the routes:

                       api_me GET    /api/me                                      api/v1/users#me
              api_memberships GET    /api/memberships                             api/v1/memberships#index
                              POST   /api/memberships                             api/v1/memberships#create
               api_membership GET    /api/memberships/:id                         api/v1/memberships#show
                              PATCH  /api/memberships/:id                         api/v1/memberships#update
                              PUT    /api/memberships/:id                         api/v1/memberships#update
                              DELETE /api/memberships/:id                         api/v1/memberships#destroy
                    api_users GET    /api/users                                   api/v1/users#index
                              POST   /api/users                                   api/v1/users#create
                     api_user GET    /api/users/:id                               api/v1/users#show
                              PATCH  /api/users/:id                               api/v1/users#update
                              PUT    /api/users/:id                               api/v1/users#update
                              DELETE /api/users/:id                               api/v1/users#destroy
                   api_groups GET    /api/groups                                  api/v1/groups#index
                              POST   /api/groups                                  api/v1/groups#create
                    api_group GET    /api/groups/:id                              api/v1/groups#show
                              PATCH  /api/groups/:id                              api/v1/groups#update
                              PUT    /api/groups/:id                              api/v1/groups#update
                              DELETE /api/groups/:id                              api/v1/groups#destroy
              api_collections GET    /api/collections                             api/v1/collections#index
                              POST   /api/collections                             api/v1/collections#create
               api_collection GET    /api/collections/:id                         api/v1/collections#show
                              PATCH  /api/collections/:id                         api/v1/collections#update
                              PUT    /api/collections/:id                         api/v1/collections#update
                              DELETE /api/collections/:id                         api/v1/collections#destroy
                 api_subjects GET    /api/subjects                                api/v1/subjects#index
                              POST   /api/subjects                                api/v1/subjects#create
                  api_subject GET    /api/subjects/:id                            api/v1/subjects#show
                              PATCH  /api/subjects/:id                            api/v1/subjects#update
                              PUT    /api/subjects/:id                            api/v1/subjects#update
                              DELETE /api/subjects/:id                            api/v1/subjects#destroy
                 api_projects GET    /api/projects                                api/v1/projects#index
                              POST   /api/projects                                api/v1/projects#create
                  api_project GET    /api/projects/:id                            api/v1/projects#show
                              PATCH  /api/projects/:id                            api/v1/projects#update
                              PUT    /api/projects/:id                            api/v1/projects#update
                              DELETE /api/projects/:id                            api/v1/projects#destroy
          api_classifications GET    /api/classifications                         api/v1/classifications#index
                              POST   /api/classifications                         api/v1/classifications#create
           api_classification GET    /api/classifications/:id                     api/v1/classifications#show
                              PATCH  /api/classifications/:id                     api/v1/classifications#update
                              PUT    /api/classifications/:id                     api/v1/classifications#update
                              DELETE /api/classifications/:id                     api/v1/classifications#destroy
                api_workflows GET    /api/workflows                               api/v1/workflows#index
                              POST   /api/workflows                               api/v1/workflows#create
                 api_workflow GET    /api/workflows/:id                           api/v1/workflows#show
                              PATCH  /api/workflows/:id                           api/v1/workflows#update
                              PUT    /api/workflows/:id                           api/v1/workflows#update
                              DELETE /api/workflows/:id                           api/v1/workflows#destroy
             api_subject_sets GET    /api/subject_sets                            api/v1/subject_sets#index
                              POST   /api/subject_sets                            api/v1/subject_sets#create
              api_subject_set GET    /api/subject_sets/:id                        api/v1/subject_sets#show
                              PATCH  /api/subject_sets/:id                        api/v1/subject_sets#update
                              PUT    /api/subject_sets/:id                        api/v1/subject_sets#update
                              DELETE /api/subject_sets/:id                        api/v1/subject_sets#destroy

from panoptes.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.