Allow all active users to retrieve list of keep nodes.
[arvados.git] / services / api / app / controllers / arvados / v1 / schema_controller.rb
index 2940ca49385ad6aaa1a9be58337ecf4445b41e71..80b2cb6694553fcdb8bc36bf0011936e210c479f 100644 (file)
@@ -31,7 +31,8 @@ class Arvados::V1::SchemaController < ApplicationController
         id: "arvados:v1",
         name: "arvados",
         version: "v1",
-        revision: "20130226",
+        revision: "20131114",
+        generatedAt: Time.now.iso8601,
         title: "Arvados API",
         description: "The API to interact with Arvados.",
         documentationLink: "https://redmine.clinicalfuture.com/projects/arvados/",
@@ -234,11 +235,19 @@ class Arvados::V1::SchemaController < ApplicationController
               parameters: {
                 k.to_s.underscore => {
                   type: "object",
-                  required: true,
+                  required: false,
                   location: "query",
                   properties: object_properties
                 }
               },
+              request: {
+                required: false,
+                properties: {
+                  k.to_s => {
+                    "$ref" => k.to_s
+                  }
+                }
+              },
               response: {
                 "$ref" => k.to_s
               },
@@ -260,11 +269,19 @@ class Arvados::V1::SchemaController < ApplicationController
                 },
                 k.to_s.underscore => {
                   type: "object",
-                  required: true,
+                  required: false,
                   location: "query",
                   properties: object_properties
                 }
               },
+              request: {
+                required: false,
+                properties: {
+                  k.to_s => {
+                    "$ref" => k.to_s
+                  }
+                }
+              },
               response: {
                 "$ref" => k.to_s
               },
@@ -299,13 +316,16 @@ class Arvados::V1::SchemaController < ApplicationController
         d_methods = discovery[:resources][k.to_s.underscore.pluralize][:methods]
         Rails.application.routes.routes.each do |route|
           action = route.defaults[:action]
-          httpMethod = (route.verb && route.verb.length > 0) ? route.verb : 'GET'
-          if route.defaults[:controller] == 'arvados/v1/' + k.to_s.underscore.pluralize and
+          httpMethod = ['GET', 'POST', 'PUT', 'DELETE'].map { |method|
+            method if route.verb.match(method)
+          }.compact.first
+          if httpMethod and
+              route.defaults[:controller] == 'arvados/v1/' + k.to_s.underscore.pluralize and
               !d_methods[action.to_sym] and
               ctl_class.action_methods.include? action
             method = {
               id: "arvados.#{k.to_s.underscore.pluralize}.#{action}",
-              path: route.path.sub('/arvados/v1/','').sub('(.:format)','').sub(/:(uu)?id/,'{uuid}'),
+              path: route.path.spec.to_s.sub('/arvados/v1/','').sub('(.:format)','').sub(/:(uu)?id/,'{uuid}'),
               httpMethod: httpMethod,
               description: "#{route.defaults[:action]} #{k.to_s.underscore.pluralize}",
               parameters: {},