{:group-id "metosin", :artifact-id "compojure-api", :version "2.0.0-alpha32", :analysis {"clj" ({:name compojure.api.api, :publics ({:name api, :file "compojure/api/api.clj", :line 19, :arglists ([& body]), :doc "Returns a ring handler wrapped in compojure.api.middleware/api-middlware.\nCreates the route-table at api creation time and injects that into the request via\nmiddlewares. Api and the mounted api-middleware can be configured by optional\noptions map as the first parameter:\n\n (api\n {:exceptions {:handlers {:compojure.api.exception/default my-logging-handler}}\n :api {:invalid-routes-fn (constantly nil)}\n :swagger {:spec \"/swagger.json\"\n :ui \"/api-docs\"\n :data {:info {:version \"1.0.0\"\n :title \"My API\"\n :description \"the description\"}}}}\n (context \"/api\" []\n ...))\n\n### direct api options:\n\n- **:api** All api options are under `:api`.\n - **:invalid-routes-fn** A 2-arity function taking handler and a sequence of\n invalid routes (not satisfying compojure.api.route.Routing)\n setting value to nil ignores invalid routes completely.\n defaults to `compojure.api.routes/log-invalid-child-routes`\n - **:disable-api-middleware?** boolean to disable the `api-middleware` from api.\n- **:swagger** Options to configure the Swagger-routes. Defaults to nil.\n See `compojure.api.swagger/swagger-routes` for details.\n\n### api-middleware options\n\nSee `compojure.api.middleware/api-middleware` for more available options.\n\nOpinionated chain of middlewares for web apis. Takes optional options-map.\n\n### Exception handlers\n\nAn error handler is a function of exception, ex-data and request to response.\n\nWhen defining these options, it is suggested to use alias for the exceptions namespace,\ne.g. `[compojure.api.exception :as ex]`.\n\nDefault:\n\n {::ex/request-validation ex/request-validation-handler\n ::ex/request-parsing ex/request-parsing-handler\n ::ex/response-validation ex/response-validation-handler\n ::ex/default ex/safe-handler}\n\nNote: Because the handlers are merged into default handlers map, to disable default handler you\nneed to provide `nil` value as handler.\n\nNote: To catch Schema errors use `{:schema.core/error ex/schema-error-handler}`.\n\n### Options\n\n- **:exceptions** for *compojure.api.middleware/wrap-exceptions* (nil to unmount it)\n - **:handlers** Map of error handlers for different exception types, type refers to `:type` key in ExceptionInfo data.\n\n- **:formats** for Muuntaja middleware. Value can be a valid muuntaja options-map,\n a Muuntaja instance or nil (to unmount it). See\n https://github.com/metosin/muuntaja/blob/master/doc/Configuration.md for details.\n\n- **:middleware** vector of extra middleware to be applied last (just before the handler).\n\n- **:ring-swagger** options for ring-swagger's swagger-json method.\n e.g. `{:ignore-missing-mappings? true}`\n\n- **:coercion** A function from request->type->coercion-matcher, used\n in endpoint coercion for types :body, :string and :response.\n Defaults to `compojure.api.middleware/default-coercion`\n Setting value to nil disables all coercion.\n\n- **:components** Components which should be accessible to handlers using\n :components restructuring. (If you are using api,\n you might want to take look at using wrap-components\n middleware manually.). Defaults to nil (middleware not mounted).", :type :var} {:name api-defaults, :file "compojure/api/api.clj", :line 12, :type :var} {:name defapi, :file "compojure/api/api.clj", :line 76, :arglists ([name & body]), :deprecated "2.0.0", :doc "Deprecated: please use (def name (api ...body..))\n\nDefines an api.\n\nAPI middleware options:\n\nOpinionated chain of middlewares for web apis. Takes optional options-map.\n\n### Exception handlers\n\nAn error handler is a function of exception, ex-data and request to response.\n\nWhen defining these options, it is suggested to use alias for the exceptions namespace,\ne.g. `[compojure.api.exception :as ex]`.\n\nDefault:\n\n {::ex/request-validation ex/request-validation-handler\n ::ex/request-parsing ex/request-parsing-handler\n ::ex/response-validation ex/response-validation-handler\n ::ex/default ex/safe-handler}\n\nNote: Because the handlers are merged into default handlers map, to disable default handler you\nneed to provide `nil` value as handler.\n\nNote: To catch Schema errors use `{:schema.core/error ex/schema-error-handler}`.\n\n### Options\n\n- **:exceptions** for *compojure.api.middleware/wrap-exceptions* (nil to unmount it)\n - **:handlers** Map of error handlers for different exception types, type refers to `:type` key in ExceptionInfo data.\n\n- **:formats** for Muuntaja middleware. Value can be a valid muuntaja options-map,\n a Muuntaja instance or nil (to unmount it). See\n https://github.com/metosin/muuntaja/blob/master/doc/Configuration.md for details.\n\n- **:middleware** vector of extra middleware to be applied last (just before the handler).\n\n- **:ring-swagger** options for ring-swagger's swagger-json method.\n e.g. `{:ignore-missing-mappings? true}`\n\n- **:coercion** A function from request->type->coercion-matcher, used\n in endpoint coercion for types :body, :string and :response.\n Defaults to `compojure.api.middleware/default-coercion`\n Setting value to nil disables all coercion.\n\n- **:components** Components which should be accessible to handlers using\n :components restructuring. (If you are using api,\n you might want to take look at using wrap-components\n middleware manually.). Defaults to nil (middleware not mounted).", :type :macro})} {:name compojure.api.async, :publics ()} {:name compojure.api.coercion, :publics ({:name coerce-request!, :file "compojure/api/coercion.clj", :line 31, :arglists ([model in type keywordize? open? request]), :type :var} {:name coerce-response!, :file "compojure/api/coercion.clj", :line 53, :arglists ([request {:keys [status body], :as response} responses]), :type :var} {:name default-coercion, :file "compojure/api/coercion.clj", :line 10, :type :var} {:name get-apidocs, :file "compojure/api/coercion.clj", :line 27, :arglists ([maybe-coercion spec info]), :type :var} {:name get-request-coercion, :file "compojure/api/coercion.clj", :line 15, :arglists ([request]), :type :var} {:name resolve-coercion, :file "compojure/api/coercion.clj", :line 20, :arglists ([coercion]), :type :var} {:name set-request-coercion, :file "compojure/api/coercion.clj", :line 12, :arglists ([request coercion]), :type :var} {:name wrap-coerce-response, :file "compojure/api/coercion.clj", :line 86, :arglists ([handler responses]), :type :var})} {:name compojure.api.coercion.core, :publics ({:name Coercion, :file "compojure/api/coercion/core.clj", :line 3, :type :protocol, :members ({:name accept-response?, :arglists ([this model]), :type :var} {:name coerce-request, :arglists ([this model value type format request]), :type :var} {:name coerce-response, :arglists ([this model value type format request]), :type :var} {:name encode-error, :arglists ([this error]), :type :var} {:name get-apidocs, :arglists ([this model data]), :type :var} {:name get-name, :arglists ([this]), :type :var} {:name make-open, :arglists ([this model]), :type :var})} {:name named-coercion, :file "compojure/api/coercion/core.clj", :line 14, :type :multimethod})} {:name compojure.api.coercion.schema, :publics ({:name coerce-response?, :file "compojure/api/coercion/schema.clj", :line 35, :type :multimethod} {:name create-coercion, :file "compojure/api/coercion/schema.clj", :line 83, :arglists ([options]), :type :var} {:name default-coercion, :file "compojure/api/coercion/schema.clj", :line 86, :type :var} {:name default-options, :file "compojure/api/coercion/schema.clj", :line 75, :type :var} {:name json-coercion-matcher, :file "compojure/api/coercion/schema.clj", :line 14, :type :var} {:name memoized-coercer, :file "compojure/api/coercion/schema.clj", :line 31, :type :var} {:name string-coercion-matcher, :file "compojure/api/coercion/schema.clj", :line 13, :type :var} {:name stringify, :file "compojure/api/coercion/schema.clj", :line 16, :arglists ([error]), :doc "Stringifies Schema records recursively.\n", :type :var})} {:name compojure.api.coercion.spec, :publics ({:name coerce-response?, :file "compojure/api/coercion/spec.clj", :line 84, :type :multimethod} {:name create-coercion, :file "compojure/api/coercion/spec.clj", :line 148, :arglists ([options]), :type :var} {:name default-coercion, :file "compojure/api/coercion/spec.clj", :line 151, :type :var} {:name default-options, :file "compojure/api/coercion/spec.clj", :line 137, :type :var} {:name default-transformer, :file "compojure/api/coercion/spec.clj", :line 27, :arglists ([] [name]), :type :var} {:name json-transformer, :file "compojure/api/coercion/spec.clj", :line 21, :type :var} {:name maybe-memoized-specify, :file "compojure/api/coercion/spec.clj", :line 74, :arglists ([spec]), :type :var} {:name memoized-specify, :file "compojure/api/coercion/spec.clj", :line 71, :type :var} {:name Specify, :file "compojure/api/coercion/spec.clj", :line 31, :type :protocol, :members ({:name specify, :arglists ([this name]), :type :var})} {:name string-transformer, :file "compojure/api/coercion/spec.clj", :line 15, :type :var} {:name stringify-pred, :file "compojure/api/coercion/spec.clj", :line 79, :arglists ([pred]), :type :var})} {:name compojure.api.common, :publics ({:name extract-parameters, :file "compojure/api/common.clj", :line 8, :arglists ([c expect-body]), :doc "Extract parameters from head of the list. Parameters can be:\n\n1. a map (if followed by any form) `[{:a 1 :b 2} :body]` => `{:a 1 :b 2}`\n2. list of keywords & values `[:a 1 :b 2 :body]` => `{:a 1 :b 2}`\n3. else => `{}`\n\nReturns a tuple with parameters and body without the parameters", :type :var} {:name fast-map-merge, :file "compojure/api/common.clj", :line 46, :arglists ([x y]), :type :var} {:name fifo-memoize, :file "compojure/api/common.clj", :line 54, :arglists ([f size]), :type :var} {:name group-with, :file "compojure/api/common.clj", :line 33, :arglists ([pred coll]), :doc "Groups a sequence with predicate returning a tuple of sequences.\n", :type :var} {:name merge-vector, :file "compojure/api/common.clj", :line 39, :arglists ([v]), :doc "Merges vector elements, optimized for 1 arity (x10 faster than merge).\n", :type :var} {:name plain-map?, :file "compojure/api/common.clj", :line 4, :arglists ([x]), :doc "checks whether input is a map, but not a record\n", :type :var} {:name when-ns, :file "compojure/api/common.clj", :line 73, :arglists ([ns & body]), :type :macro})} {:name compojure.api.compojure-compat, :publics (), :doc "Compatibility for older Compojure versions.\n"} {:name compojure.api.core, :publics ({:name ANY, :file "compojure/api/core.clj", :line 80, :arglists ([& args]), :type :macro} {:name context, :file "compojure/api/core.clj", :line 77, :arglists ([& args]), :type :macro} {:name defroutes, :file "compojure/api/core.clj", :line 24, :arglists ([name & routes]), :doc "Define a Ring handler function from a sequence of routes.\nThe name may optionally be followed by a doc-string and metadata map.", :type :macro} {:name DELETE, :file "compojure/api/core.clj", :line 83, :arglists ([& args]), :type :macro} {:name GET, :file "compojure/api/core.clj", :line 79, :arglists ([& args]), :type :macro} {:name HEAD, :file "compojure/api/core.clj", :line 81, :arglists ([& args]), :type :macro} {:name let-routes, :file "compojure/api/core.clj", :line 32, :arglists ([bindings & body]), :doc "Takes a vector of bindings and a body of routes.\n\nEquivalent to: `(let [...] (routes ...))`", :type :macro} {:name middleware, :file "compojure/api/core.clj", :line 47, :arglists ([middleware & body]), :deprecated "1.1.14", :doc "Wraps routes with given middlewares using thread-first macro.\n\nNote that middlewares will be executed even if routes in body\ndo not match the request uri. Be careful with middleware that\nhas side-effects.", :type :macro} {:name OPTIONS, :file "compojure/api/core.clj", :line 84, :arglists ([& args]), :type :macro} {:name PATCH, :file "compojure/api/core.clj", :line 82, :arglists ([& args]), :type :macro} {:name POST, :file "compojure/api/core.clj", :line 85, :arglists ([& args]), :type :macro} {:name PUT, :file "compojure/api/core.clj", :line 86, :arglists ([& args]), :type :macro} {:name ring-handler, :file "compojure/api/core.clj", :line 9, :arglists ([handler]), :doc "Creates vanilla ring-handler from any invokable thing (e.g. compojure-api route)\n", :type :var} {:name route-middleware, :file "compojure/api/core.clj", :line 65, :arglists ([middleware & body]), :doc "Wraps routes with given middlewares using thread-first macro.\n", :type :var} {:name routes, :file "compojure/api/core.clj", :line 16, :arglists ([& handlers]), :doc "Create a Ring handler by combining several handlers into one.\n", :type :var} {:name undocumented, :file "compojure/api/core.clj", :line 40, :arglists ([& handlers]), :doc "Routes without route-documentation. Can be used to wrap routes,\nnot satisfying compojure.api.routes/Routing -protocol.", :type :var})} {:name compojure.api.exception, :publics ({:name http-response-handler, :file "compojure/api/exception.clj", :line 59, :arglists ([_ {:keys [response]} _]), :doc "reads response from ex-data :response\n", :type :var} {:name mapped-exception-types, :file "compojure/api/exception.clj", :line 96, :type :var} {:name request-parsing-handler, :file "compojure/api/exception.clj", :line 70, :arglists ([ex data req]), :type :var} {:name request-validation-handler, :file "compojure/api/exception.clj", :line 42, :arglists ([e data req]), :doc "Creates error response based on Schema error. The following keys are available:\n\n:type type of the exception (::request-validation)\n:coercion coercion instance used\n:value value that was validated\n:in location of the value (e.g. [:request :query-params])\n:schema schema to be validated against\n:error schema error\n:request raw request", :type :var} {:name response-validation-handler, :file "compojure/api/exception.clj", :line 23, :arglists ([e data req]), :doc "Creates error response based on a response error. The following keys are available:\n\n:type type of the exception (::response-validation)\n:coercion coercion instance used\n:in location of the value ([:response :body])\n:schema schema to be validated against\n:error schema error\n:request raw request\n:response raw response", :type :var} {:name safe-handler, :file "compojure/api/exception.clj", :line 12, :arglists ([e data req]), :doc "Writes :error to log with the exception message & stacktrace.\n\nError response only contains class of the Exception so that it won't accidentally\nexpose secret details.", :type :var} {:name schema-error-handler, :file "compojure/api/exception.clj", :line 64, :arglists ([e data req]), :doc "Creates error response based on Schema error.\n", :type :var} {:name with-logging, :file "compojure/api/exception.clj", :line 82, :arglists ([handler] [handler log-level]), :doc "Wrap compojure-api exception-handler a function which will log the\nexception message and stack-trace with given log-level.", :type :var})} {:name compojure.api.help, :publics ({:name code, :file "compojure/api/help.clj", :line 20, :arglists ([& s]), :type :var} {:name help, :file "compojure/api/help.clj", :line 62, :arglists ([] [topic] [topic subject]), :doc "Inputs: ([] [topic :- Topic] [topic :- Topic subject :- Subject])\n", :type :var} {:name help-for, :file "compojure/api/help.clj", :line 23, :type :multimethod} {:name Subject, :file "compojure/api/help.clj", :line 6, :type :var} {:name text, :file "compojure/api/help.clj", :line 12, :arglists ([& s]), :type :var} {:name title, :file "compojure/api/help.clj", :line 17, :arglists ([& s]), :type :var} {:name Topic, :file "compojure/api/help.clj", :line 5, :type :var})} {:name compojure.api.main, :publics ({:name -main, :file "compojure/api/main.clj", :line 16, :arglists ([& args]), :type :var} {:name resolve-start-fn, :file "compojure/api/main.clj", :line 5, :arglists ([]), :type :var})} {:name compojure.api.meta, :publics ({:name +compojure-api-request+, :file "compojure/api/meta.clj", :line 18, :doc "lexically bound ring-request for handlers.\n", :type :var} {:name context-vars, :file "compojure/api/meta.clj", :line 702, :type :var} {:name dummy-let, :file "compojure/api/meta.clj", :line 588, :arglists ([bindings & body]), :doc "Dummy let-macro used in resolving route-docs. not part of normal invokation chain.\n", :type :macro} {:name dummy-letk, :file "compojure/api/meta.clj", :line 594, :arglists ([bindings & body]), :doc "Dummy letk-macro used in resolving route-docs. not part of normal invokation chain.\n", :type :macro} {:name endpoint-vars, :file "compojure/api/meta.clj", :line 662, :type :var} {:name fnk-schema, :file "compojure/api/meta.clj", :line 29, :arglists ([bind]), :type :var} {:name merge-parameters, :file "compojure/api/meta.clj", :line 653, :arglists ([info]), :doc "Merge parameters at runtime to allow usage of runtime-paramers with route-macros.\n", :type :var} {:name middleware-vars, :file "compojure/api/meta.clj", :line 718, :type :var} {:name resource-vars, :file "compojure/api/meta.clj", :line 686, :type :var} {:name restructure, :file "compojure/api/meta.clj", :line 918, :arglists ([method [path route-arg & args] {:keys [context? &form &env]}]), :type :var} {:name restructure-param, :file "compojure/api/meta.clj", :line 67, :doc "Restructures a key value pair in smart routes. By default the key\nis consumed form the :parameters map in acc. k = given key, v = value.", :type :multimethod} {:name route-middleware-vars, :file "compojure/api/meta.clj", :line 754, :type :var} {:name routes-vars, :file "compojure/api/meta.clj", :line 669, :type :var} {:name routing, :file "compojure/api/meta.clj", :line 617, :arglists ([handlers]), :type :var} {:name src-coerce!, :file "compojure/api/meta.clj", :line 51, :arglists ([schema key type] [schema key type keywordize?]), :doc "Inputs: ([schema key type] [schema key type keywordize?])\n\nReturn source code for coerce! for a schema with coercion type,\nextracted from a key in a ring request.", :type :var} {:name static-context, :file "compojure/api/meta.clj", :line 611, :arglists ([path route]), :type :macro} {:name strict, :file "compojure/api/meta.clj", :line 26, :arglists ([schema]), :type :var})} {:name compojure.api.methods, :publics ({:name all-methods, :file "compojure/api/methods.clj", :line 3, :type :var})} {:name compojure.api.middleware, :publics ({:name api-middleware, :file "compojure/api/middleware.clj", :line 213, :arglists ([handler] [handler options]), :doc "Opinionated chain of middlewares for web apis. Takes optional options-map.\n\n### Exception handlers\n\nAn error handler is a function of exception, ex-data and request to response.\n\nWhen defining these options, it is suggested to use alias for the exceptions namespace,\ne.g. `[compojure.api.exception :as ex]`.\n\nDefault:\n\n {::ex/request-validation ex/request-validation-handler\n ::ex/request-parsing ex/request-parsing-handler\n ::ex/response-validation ex/response-validation-handler\n ::ex/default ex/safe-handler}\n\nNote: Because the handlers are merged into default handlers map, to disable default handler you\nneed to provide `nil` value as handler.\n\nNote: To catch Schema errors use `{:schema.core/error ex/schema-error-handler}`.\n\n### Options\n\n- **:exceptions** for *compojure.api.middleware/wrap-exceptions* (nil to unmount it)\n - **:handlers** Map of error handlers for different exception types, type refers to `:type` key in ExceptionInfo data.\n\n- **:formats** for Muuntaja middleware. Value can be a valid muuntaja options-map,\n a Muuntaja instance or nil (to unmount it). See\n https://github.com/metosin/muuntaja/blob/master/doc/Configuration.md for details.\n\n- **:middleware** vector of extra middleware to be applied last (just before the handler).\n\n- **:ring-swagger** options for ring-swagger's swagger-json method.\n e.g. `{:ignore-missing-mappings? true}`\n\n- **:coercion** A function from request->type->coercion-matcher, used\n in endpoint coercion for types :body, :string and :response.\n Defaults to `compojure.api.middleware/default-coercion`\n Setting value to nil disables all coercion.\n\n- **:components** Components which should be accessible to handlers using\n :components restructuring. (If you are using api,\n you might want to take look at using wrap-components\n middleware manually.). Defaults to nil (middleware not mounted).", :type :var} {:name api-middleware-defaults, :file "compojure/api/middleware.clj", :line 198, :type :var} {:name api-middleware-options, :file "compojure/api/middleware.clj", :line 209, :arglists ([options]), :type :var} {:name compose-middleware, :file "compojure/api/middleware.clj", :line 163, :arglists ([middleware]), :type :var} {:name create-muuntaja, :file "compojure/api/middleware.clj", :line 128, :arglists ([] [muuntaja-or-options]), :type :var} {:name default-muuntaja-options, :file "compojure/api/middleware.clj", :line 122, :type :var} {:name encode?, :file "compojure/api/middleware.clj", :line 115, :arglists ([_ response]), :doc "Returns true if the response body is serializable: body is a\ncollection or response has key :compojure.api.meta/serializable?", :type :var} {:name get-components, :file "compojure/api/middleware.clj", :line 84, :arglists ([req]), :type :var} {:name get-swagger-data, :file "compojure/api/middleware.clj", :line 179, :arglists ([request]), :doc "Reads and deep-merges top-level swagger-data from request,\npushed in by set-swagger-data.", :type :var} {:name middleware-fn, :file "compojure/api/middleware.clj", :line 157, :arglists ([middleware]), :type :var} {:name set-swagger-data, :file "compojure/api/middleware.clj", :line 173, :arglists ([request data]), :doc "Add extra top-level swagger-data into a request.\nData can be read with get-swagger-data.", :type :var} {:name wrap-coercion, :file "compojure/api/middleware.clj", :line 104, :arglists ([handler coercion]), :type :var} {:name wrap-components, :file "compojure/api/middleware.clj", :line 75, :arglists ([handler components]), :doc "Assoc given components to the request.\n", :type :var} {:name wrap-exceptions, :file "compojure/api/middleware.clj", :line 46, :arglists ([handler {:keys [handlers]}]), :doc "Catches all exceptions and delegates to correct error handler according to :type of Exceptions\n- **:handlers** - a map from exception type to handler\n - **:compojure.api.exception/default** - Handler used when exception type doesn't match other handler,\n by default prints stack trace.", :type :var} {:name wrap-format, :file "compojure/api/middleware.clj", :line 301, :arglists ([handler] [handler options]), :doc "Muuntaja format middleware. Can be safely mounted on top of multiple api\n\n- **:formats** for Muuntaja middleware. Value can be a valid muuntaja options-map,\n a Muuntaja instance or nil (to unmount it). See\n https://github.com/metosin/muuntaja/blob/master/doc/Configuration.md for details.", :type :var} {:name wrap-inject-data, :file "compojure/api/middleware.clj", :line 91, :arglists ([handler data]), :doc "Injects data into the request.\n", :type :var} {:name wrap-swagger-data, :file "compojure/api/middleware.clj", :line 185, :arglists ([handler data]), :doc "Middleware that adds top level swagger-data into request.\n", :type :var})} {:name compojure.api.request, :publics ({:name coercion, :file "compojure/api/request.clj", :line 3, :doc "Request-scoped coercion\n", :type :var} {:name lookup, :file "compojure/api/request.clj", :line 19, :doc "Reverse routing tree\n", :type :var} {:name muuntaja, :file "compojure/api/request.clj", :line 23, :doc "Muuntaja instance\n", :type :var} {:name paths, :file "compojure/api/request.clj", :line 15, :doc "Paths\n", :type :var} {:name ring-swagger, :file "compojure/api/request.clj", :line 11, :doc "Ring-swagger options\n", :type :var} {:name swagger, :file "compojure/api/request.clj", :line 7, :doc "Vector of extra swagger data\n", :type :var})} {:name compojure.api.resource, :publics ({:name Options, :file "compojure/api/resource.clj", :line 142, :type :var} {:name resource, :file "compojure/api/resource.clj", :line 147, :arglists ([data]), :doc "Creates a nested compojure-api Route from enchanced ring-swagger operations map.\nBy default, applies both request- and response-coercion based on those definitions.\n\nExtra keys:\n\n- **:middleware** Middleware in duct-format either at top-level or under methods.\n Top-level mw are applied first if route matches, method-level\n mw are applied next if method matches\n\n- **:coercion** A function from request->type->coercion-matcher, used\n in resource coercion for :body, :string and :response.\n Setting value to `(constantly nil)` disables both request- &\n response coercion. See tests and wiki for details.\n\nEnhancements to ring-swagger operations map:\n\n1) :parameters use ring request keys (query-params, path-params, ...) instead of\nswagger-params (query, path, ...). This keeps things simple as ring keys are used in\nthe handler when destructuring the request.\n\n2) at resource root, one can add any ring-swagger operation definitions, which will be\navailable for all operations, using the following rules:\n\n 2.1) :parameters are deep-merged into operation :parameters\n 2.2) :responses are merged into operation :responses (operation can fully override them)\n 2.3) all others (:produces, :consumes, :summary,...) are deep-merged by compojure-api\n\n3) special keys `:handler` and/or `:async-handler` either under operations or at top-level.\nThey should be 1-ary and 3-ary Ring handler functions, respectively, that are responsible\nfor the actual request processing. Handler lookup order is the following:\n\n 3.1) If called asynchronously, operations-level :async-handler\n 3.2) Operations-level :handler\n 3.3) If called asynchronously, top-level :async-handler\n 3.4) Top-level :handler\n\n4) request-coercion is applied once, using deep-merged parameters for a given\noperation or resource-level if only resource-level handler is defined.\n\n5) response-coercion is applied once, using merged responses for a given\noperation or resource-level if only resource-level handler is defined.\n\nNote: Swagger operations are generated only from declared operations (:get, :post, ..),\ndespite the top-level handler could process more operations.\n\nExample:\n\n(resource\n {:parameters {:query-params {:x Long}}\n :responses {500 {:schema {:reason s/Str}}}\n :get {:parameters {:query-params {:y Long}}\n :responses {200 {:schema {:total Long}}}\n :handler (fn [request]\n (ok {:total (+ (-> request :query-params :x)\n (-> request :query-params :y))}))}\n :post {}\n :handler (constantly\n (internal-server-error {:reason \"not implemented\"}))})", :type :var})} {:name compojure.api.routes, :publics ({:name all-paths, :file "compojure/api/routes.clj", :line 169, :arglists ([routes]), :type :var} {:name create, :file "compojure/api/routes.clj", :line 96, :arglists ([path method info childs handler]), :type :var} {:name fail-on-invalid-child-routes, :file "compojure/api/routes.clj", :line 113, :arglists ([handler invalid-childs]), :type :var} {:name filter-routes, :file "compojure/api/routes.clj", :line 39, :arglists ([{:keys [childs], :as handler} {:keys [invalid-routes-fn]}]), :type :var} {:name get-routes, :file "compojure/api/routes.clj", :line 45, :arglists ([handler] [handler options]), :type :var} {:name get-static-context-routes, :file "compojure/api/routes.clj", :line 54, :arglists ([handler] [handler options]), :type :var} {:name log-invalid-child-routes, :file "compojure/api/routes.clj", :line 118, :arglists ([handler invalid-childs]), :type :var} {:name non-nil-routes, :file "compojure/api/routes.clj", :line 202, :arglists ([endpoint]), :type :var} {:name path-for, :file "compojure/api/routes.clj", :line 242, :arglists ([route-name & [params]]), :doc "Extracts the lookup-table from request and finds a route by name.\n", :type :macro} {:name path-for*, :file "compojure/api/routes.clj", :line 229, :arglists ([route-name request & [params]]), :doc "Extracts the lookup-table from request and finds a route by name.\n", :type :var} {:name ring-swagger-paths, :file "compojure/api/routes.clj", :line 144, :arglists ([routes]), :type :var} {:name route-lookup-table, :file "compojure/api/routes.clj", :line 180, :arglists ([routes]), :type :var} {:name Routing, :file "compojure/api/routes.clj", :line 29, :type :protocol, :members ({:name -get-routes, :arglists ([handler options]), :type :var})})} {:name compojure.api.swagger, :publics ({:name base-path, :file "compojure/api/swagger.clj", :line 14, :arglists ([request]), :type :var} {:name swagger-defaults, :file "compojure/api/swagger.clj", :line 54, :type :var} {:name swagger-docs, :file "compojure/api/swagger.clj", :line 35, :arglists ([{:keys [path], :or {path "/swagger.json"}, :as options}]), :type :var} {:name swagger-routes, :file "compojure/api/swagger.clj", :line 56, :arglists ([] [options]), :doc "Returns routes for swagger-articats (ui & spec). Accepts an options map, with the\nfollowing options:\n\n**:ui** Path for the swagger-ui (defaults to \"/\").\n Setting the value to nil will cause the swagger-ui not to be mounted\n\n**:spec** Path for the swagger-spec (defaults to \"/swagger.json\")\n Setting the value to nil will cause the swagger-ui not to be mounted\n\n**:data** Swagger data in the Ring-Swagger format.\n\n**:options**\n **:ui** Options to configure the ui\n **:spec** Options to configure the spec. Nada at the moment.\n\nExample options:\n\n {:ui \"/api-docs\"\n :spec \"/swagger.json\"\n :options {:ui {:jsonEditor true}\n :spec {}}\n :data {:basePath \"/app\"\n :info {:version \"1.0.0\"\n :title \"Sausages\"\n :description \"Sausage description\"\n :termsOfService \"http://helloreverb.com/terms/\"\n :contact {:name \"My API Team\"\n :email \"foo@example.com\"\n :url \"http://www.metosin.fi\"}\n :license {:name: \"Eclipse Public License\"\n :url: \"http://www.eclipse.org/legal/epl-v10.html\"}}\n :tags [{:name \"sausages\", :description \"Sausage api-set\"}]}}", :type :var} {:name swagger-spec-path, :file "compojure/api/swagger.clj", :line 18, :arglists ([app]), :type :var} {:name swagger-ui, :file "compojure/api/swagger.clj", :line 30, :arglists ([options]), :type :var} {:name transform-operations, :file "compojure/api/swagger.clj", :line 27, :arglists ([swagger]), :type :var})} {:name compojure.api.sweet, :publics ({:name ANY, :file "compojure/api/sweet.clj", :line 11, :arglists ([& args]), :type :macro} {:name api, :file "compojure/api/sweet.clj", :line 18, :arglists ([& body]), :doc "Returns a ring handler wrapped in compojure.api.middleware/api-middlware.\nCreates the route-table at api creation time and injects that into the request via\nmiddlewares. Api and the mounted api-middleware can be configured by optional\noptions map as the first parameter:\n\n (api\n {:exceptions {:handlers {:compojure.api.exception/default my-logging-handler}}\n :api {:invalid-routes-fn (constantly nil)}\n :swagger {:spec \"/swagger.json\"\n :ui \"/api-docs\"\n :data {:info {:version \"1.0.0\"\n :title \"My API\"\n :description \"the description\"}}}}\n (context \"/api\" []\n ...))\n\n### direct api options:\n\n- **:api** All api options are under `:api`.\n - **:invalid-routes-fn** A 2-arity function taking handler and a sequence of\n invalid routes (not satisfying compojure.api.route.Routing)\n setting value to nil ignores invalid routes completely.\n defaults to `compojure.api.routes/log-invalid-child-routes`\n - **:disable-api-middleware?** boolean to disable the `api-middleware` from api.\n- **:swagger** Options to configure the Swagger-routes. Defaults to nil.\n See `compojure.api.swagger/swagger-routes` for details.\n\n### api-middleware options\n\nSee `compojure.api.middleware/api-middleware` for more available options.\n\nOpinionated chain of middlewares for web apis. Takes optional options-map.\n\n### Exception handlers\n\nAn error handler is a function of exception, ex-data and request to response.\n\nWhen defining these options, it is suggested to use alias for the exceptions namespace,\ne.g. `[compojure.api.exception :as ex]`.\n\nDefault:\n\n {::ex/request-validation ex/request-validation-handler\n ::ex/request-parsing ex/request-parsing-handler\n ::ex/response-validation ex/response-validation-handler\n ::ex/default ex/safe-handler}\n\nNote: Because the handlers are merged into default handlers map, to disable default handler you\nneed to provide `nil` value as handler.\n\nNote: To catch Schema errors use `{:schema.core/error ex/schema-error-handler}`.\n\n### Options\n\n- **:exceptions** for *compojure.api.middleware/wrap-exceptions* (nil to unmount it)\n - **:handlers** Map of error handlers for different exception types, type refers to `:type` key in ExceptionInfo data.\n\n- **:formats** for Muuntaja middleware. Value can be a valid muuntaja options-map,\n a Muuntaja instance or nil (to unmount it). See\n https://github.com/metosin/muuntaja/blob/master/doc/Configuration.md for details.\n\n- **:middleware** vector of extra middleware to be applied last (just before the handler).\n\n- **:ring-swagger** options for ring-swagger's swagger-json method.\n e.g. `{:ignore-missing-mappings? true}`\n\n- **:coercion** A function from request->type->coercion-matcher, used\n in endpoint coercion for types :body, :string and :response.\n Defaults to `compojure.api.middleware/default-coercion`\n Setting value to nil disables all coercion.\n\n- **:components** Components which should be accessible to handlers using\n :components restructuring. (If you are using api,\n you might want to take look at using wrap-components\n middleware manually.). Defaults to nil (middleware not mounted).", :type :var} {:name context, :file "compojure/api/sweet.clj", :line 9, :arglists ([& args]), :type :macro} {:name defapi, :file "compojure/api/sweet.clj", :line 19, :arglists ([name & body]), :deprecated "2.0.0", :doc "Deprecated: please use (def name (api ...body..))\n\nDefines an api.\n\nAPI middleware options:\n\nOpinionated chain of middlewares for web apis. Takes optional options-map.\n\n### Exception handlers\n\nAn error handler is a function of exception, ex-data and request to response.\n\nWhen defining these options, it is suggested to use alias for the exceptions namespace,\ne.g. `[compojure.api.exception :as ex]`.\n\nDefault:\n\n {::ex/request-validation ex/request-validation-handler\n ::ex/request-parsing ex/request-parsing-handler\n ::ex/response-validation ex/response-validation-handler\n ::ex/default ex/safe-handler}\n\nNote: Because the handlers are merged into default handlers map, to disable default handler you\nneed to provide `nil` value as handler.\n\nNote: To catch Schema errors use `{:schema.core/error ex/schema-error-handler}`.\n\n### Options\n\n- **:exceptions** for *compojure.api.middleware/wrap-exceptions* (nil to unmount it)\n - **:handlers** Map of error handlers for different exception types, type refers to `:type` key in ExceptionInfo data.\n\n- **:formats** for Muuntaja middleware. Value can be a valid muuntaja options-map,\n a Muuntaja instance or nil (to unmount it). See\n https://github.com/metosin/muuntaja/blob/master/doc/Configuration.md for details.\n\n- **:middleware** vector of extra middleware to be applied last (just before the handler).\n\n- **:ring-swagger** options for ring-swagger's swagger-json method.\n e.g. `{:ignore-missing-mappings? true}`\n\n- **:coercion** A function from request->type->coercion-matcher, used\n in endpoint coercion for types :body, :string and :response.\n Defaults to `compojure.api.middleware/default-coercion`\n Setting value to nil disables all coercion.\n\n- **:components** Components which should be accessible to handlers using\n :components restructuring. (If you are using api,\n you might want to take look at using wrap-components\n middleware manually.). Defaults to nil (middleware not mounted).", :type :macro} {:name defroutes, :file "compojure/api/sweet.clj", :line 4, :arglists ([name & routes]), :doc "Define a Ring handler function from a sequence of routes.\nThe name may optionally be followed by a doc-string and metadata map.", :type :macro} {:name DELETE, :file "compojure/api/sweet.clj", :line 14, :arglists ([& args]), :type :macro} {:name describe, :file "compojure/api/sweet.clj", :line 23, :arglists ([schema desc & kvs]), :doc "Attach description and possibly other meta-data to a schema.\n", :type :var} {:name GET, :file "compojure/api/sweet.clj", :line 10, :arglists ([& args]), :type :macro} {:name HEAD, :file "compojure/api/sweet.clj", :line 12, :arglists ([& args]), :type :macro} {:name let-routes, :file "compojure/api/sweet.clj", :line 5, :arglists ([bindings & body]), :doc "Takes a vector of bindings and a body of routes.\n\nEquivalent to: `(let [...] (routes ...))`", :type :macro} {:name middleware, :file "compojure/api/sweet.clj", :line 7, :arglists ([middleware & body]), :deprecated "1.1.14", :doc "Wraps routes with given middlewares using thread-first macro.\n\nNote that middlewares will be executed even if routes in body\ndo not match the request uri. Be careful with middleware that\nhas side-effects.", :type :macro} {:name OPTIONS, :file "compojure/api/sweet.clj", :line 15, :arglists ([& args]), :type :macro} {:name PATCH, :file "compojure/api/sweet.clj", :line 13, :arglists ([& args]), :type :macro} {:name path-for, :file "compojure/api/sweet.clj", :line 21, :arglists ([route-name & arg2]), :doc "Extracts the lookup-table from request and finds a route by name.\n", :type :macro} {:name POST, :file "compojure/api/sweet.clj", :line 16, :arglists ([& args]), :type :macro} {:name PUT, :file "compojure/api/sweet.clj", :line 17, :arglists ([& args]), :type :macro} {:name resource, :file "compojure/api/sweet.clj", :line 20, :arglists ([data]), :doc "Creates a nested compojure-api Route from enchanced ring-swagger operations map.\nBy default, applies both request- and response-coercion based on those definitions.\n\nExtra keys:\n\n- **:middleware** Middleware in duct-format either at top-level or under methods.\n Top-level mw are applied first if route matches, method-level\n mw are applied next if method matches\n\n- **:coercion** A function from request->type->coercion-matcher, used\n in resource coercion for :body, :string and :response.\n Setting value to `(constantly nil)` disables both request- &\n response coercion. See tests and wiki for details.\n\nEnchancements to ring-swagger operations map:\n\n1) :parameters use ring request keys (query-params, path-params, ...) instead of\nswagger-params (query, path, ...). This keeps things simple as ring keys are used in\nthe handler when destructuring the request.\n\n2) at resource root, one can add any ring-swagger operation definitions, which will be\navailable for all operations, using the following rules:\n\n 2.1) :parameters are deep-merged into operation :parameters\n 2.2) :responses are merged into operation :responses (operation can fully override them)\n 2.3) all others (:produces, :consumes, :summary,...) are deep-merged by compojure-api\n\n3) special keys `:handler` and/or `:async-handler` either under operations or at top-level.\nThey should be 1-ary and 3-ary Ring handler functions, respectively, that are responsible\nfor the actual request processing. Handler lookup order is the following:\n\n 3.1) If called asynchronously, operations-level :async-handler\n 3.2) Operations-level :handler\n 3.3) If called asynchronously, top-level :async-handler\n 3.4) Top-level :handler\n\n4) request-coercion is applied once, using deep-merged parameters for a given\noperation or resource-level if only resource-level handler is defined.\n\n5) response-coercion is applied once, using merged responses for a given\noperation or resource-level if only resource-level handler is defined.\n\nNote: Swagger operations are generated only from declared operations (:get, :post, ..),\ndespite the top-level handler could process more operations.\n\nExample:\n\n(resource\n {:parameters {:query-params {:x Long}}\n :responses {500 {:schema {:reason s/Str}}}\n :get {:parameters {:query-params {:y Long}}\n :responses {200 {:schema {:total Long}}}\n :handler (fn [request]\n (ok {:total (+ (-> request :query-params :x)\n (-> request :query-params :y))}))}\n :post {}\n :handler (constantly\n (internal-server-error {:reason \"not implemented\"}))})", :type :var} {:name route-middleware, :file "compojure/api/sweet.clj", :line 8, :arglists ([middleware & body]), :doc "Wraps routes with given middlewares using thread-first macro.\n", :type :var} {:name routes, :file "compojure/api/sweet.clj", :line 3, :arglists ([& handlers]), :doc "Create a Ring handler by combining several handlers into one.\n", :type :var} {:name swagger-routes, :file "compojure/api/sweet.clj", :line 22, :arglists ([] [options]), :doc "Returns routes for swagger-articats (ui & spec). Accepts an options map, with the\nfollowing options:\n\n**:ui** Path for the swagger-ui (defaults to \"/\").\n Setting the value to nil will cause the swagger-ui not to be mounted\n\n**:spec** Path for the swagger-spec (defaults to \"/swagger.json\")\n Setting the value to nil will cause the swagger-ui not to be mounted\n\n**:data** Swagger data in the Ring-Swagger format.\n\n**:options**\n **:ui** Options to configure the ui\n **:spec** Options to configure the spec. Nada at the moment.\n\nExample options:\n\n {:ui \"/api-docs\"\n :spec \"/swagger.json\"\n :options {:ui {:jsonEditor true}\n :spec {}}\n :data {:basePath \"/app\"\n :info {:version \"1.0.0\"\n :title \"Sausages\"\n :description \"Sausage description\"\n :termsOfService \"http://helloreverb.com/terms/\"\n :contact {:name \"My API Team\"\n :email \"foo@example.com\"\n :url \"http://www.metosin.fi\"}\n :license {:name: \"Eclipse Public License\"\n :url: \"http://www.eclipse.org/legal/epl-v10.html\"}}\n :tags [{:name \"sausages\", :description \"Sausage api-set\"}]}}", :type :var} {:name undocumented, :file "compojure/api/sweet.clj", :line 6, :arglists ([& handlers]), :doc "Routes without route-documentation. Can be used to wrap routes,\nnot satisfying compojure.api.routes/Routing -protocol.", :type :var})} {:name compojure.api.upload, :publics ({:name ByteArrayUpload, :file "compojure/api/upload.clj", :line 5, :doc "Schema for file param created by ring.middleware.multipart-params.byte-array store.\n", :type :var} {:name TempFileUpload, :file "compojure/api/upload.clj", :line 4, :doc "Schema for file param created by ring.middleware.multipart-params.temp-file store.\n", :type :var} {:name wrap-multipart-params, :file "compojure/api/upload.clj", :line 3, :arglists ([handler] [handler options]), :doc "Middleware to parse multipart parameters from a request. Adds the\nfollowing keys to the request map:\n\n:multipart-params - a map of multipart parameters\n:params - a merged map of all types of parameter\n\nThe following options are accepted\n\n:encoding - character encoding to use for multipart parsing.\n Overrides the encoding specified in the request. If not\n specified, uses the encoding specified in a part named\n \"_charset_\", or the content type for each part, or\n request character encoding if the part has no encoding,\n or \"UTF-8\" if no request character encoding is set.\n\n:fallback-encoding - specifies the character encoding used in parsing if a\n part of the request does not specify encoding in its\n content type or no part named \"_charset_\" is present.\n Has no effect if :encoding is also set.\n\n:store - a function that stores a file upload. The function\n should expect a map with :filename, :content-type and\n :stream keys, and its return value will be used as the\n value for the parameter in the multipart parameter map.\n The default storage function is the temp-file-store.\n\n:progress-fn - a function that gets called during uploads. The\n function should expect four parameters: request,\n bytes-read, content-length, and item-count.", :type :var})} {:name compojure.api.validator, :publics ({:name validate, :file "compojure/api/validator.clj", :line 8, :arglists ([api]), :doc "Validates an api. If the api is Swagger-enabled, the swagger-spec\nis requested and validated against the JSON Schema. Returns either\nthe (valid) api or throws an exception. Requires lazily the\nring.swagger.validator -namespace allowing it to be excluded, #227", :type :var})})}, :pom-str "\n\n 4.0.0\n metosin\n compojure-api\n jar\n 2.0.0-alpha32\n compojure-api\n Compojure Api\n https://github.com/metosin/compojure-api\n \n \n Eclipse Public License\n http://www.eclipse.org/legal/epl-v10.html\n repo\n same as Clojure\n \n \n \n https://github.com/metosin/compojure-api\n scm:git:git://github.com/metosin/compojure-api.git\n scm:git:ssh://git@github.com/metosin/compojure-api.git\n b6a8b37da349ebf85ba2a6a5247514350273e1c0\n \n \n src\n test19\n \n \n resources\n \n \n \n \n resources\n \n \n target\n target/classes\n \n \n org.codehaus.mojo\n build-helper-maven-plugin\n 1.7\n \n \n add-test-source\n generate-test-sources\n \n add-test-source\n \n \n \n test\n \n \n \n \n \n \n \n \n \n central\n https://repo1.maven.org/maven2/\n \n false\n \n \n true\n \n \n \n clojars\n https://repo.clojars.org/\n \n true\n \n \n true\n \n \n \n \n \n \n \n \n prismatic\n schema\n 1.1.12\n \n \n prismatic\n plumbing\n 0.5.5\n \n \n ikitommi\n linked\n 1.3.1-alpha1\n \n \n metosin\n muuntaja\n 0.6.6\n \n \n com.fasterxml.jackson.datatype\n jackson-datatype-joda\n 2.10.1\n \n \n ring\n ring-core\n 1.8.0\n \n \n compojure\n compojure\n 1.6.1\n \n \n metosin\n spec-tools\n 0.10.0\n \n \n metosin\n ring-http-response\n 0.9.1\n \n \n metosin\n ring-swagger-ui\n 3.24.3\n \n \n metosin\n ring-swagger\n 0.26.2\n \n \n clj-time\n clj-time\n 0.15.2\n \n \n joda-time\n joda-time\n 2.10.5\n \n \n riddley\n riddley\n 0.2.0\n \n \n org.clojure\n clojure\n 1.10.1\n test\n \n \n org.clojure\n core.async\n 0.6.532\n test\n \n \n javax.servlet\n javax.servlet-api\n 4.0.1\n test\n \n \n peridot\n peridot\n 0.5.2\n test\n \n \n com.rpl\n specter\n 1.1.3\n test\n \n \n com.stuartsierra\n component\n 0.4.0\n test\n \n \n expound\n expound\n 0.8.2\n test\n \n \n metosin\n jsonista\n 0.2.5\n test\n \n \n reloaded.repl\n reloaded.repl\n 0.2.4\n test\n \n \n metosin\n muuntaja-msgpack\n 0.6.6\n test\n \n \n metosin\n muuntaja-yaml\n 0.6.6\n test\n \n \n org.immutant\n immutant\n 2.1.10\n test\n \n \n http-kit\n http-kit\n 2.3.0\n test\n \n \n criterium\n criterium\n 0.4.5\n test\n \n \n\n\n\n"}