This is just pseudo-code to give you a general idea:
# client code
class MyClient
def get(params)
RestClient.get '/some/api', params
end
end| { | |
| "ucp": { | |
| "version": "2026-01-23", | |
| "capabilities": { | |
| "dev.ucp.shopping.checkout": [{"version": "2026-01-23"}], | |
| "dev.ucp.shopping.cart": [{"version": "2026-01-23"}], | |
| "dev.ucp.shopping.discount": [{"extends": "dev.ucp.shopping.checkout", "version": "2026-01-23"}], | |
| "dev.ucp.shopping.fulfillment": [{"extends": "dev.ucp.shopping.checkout", "version": "2026-01-23"}], | |
| "dev.ucp.shopping.buyer_consent": [{"extends": "dev.ucp.shopping.checkout", "version": "2026-01-23"}] | |
| } |
| # config/initializers/strong_resources.rb | |
| Parameters = ActionController::Parameters | |
| # first, define our custom type according to the stronger_parameters documentation | |
| custom_type = Parameters.array(Parameters.id) | |
| # then, register this custom type with strong resources. we need: | |
| # * a name for the type (:array_of_integers) | |
| # * since swagger only allows certain types, how should swagger handle this type? |
| require 'swagger/diff' | |
| require 'pp' | |
| def get_swagger(path) | |
| token = ENV['JSONAPI_TOKEN'] | |
| session = ActionDispatch::Integration::Session.new(Rails.application) | |
| session.get path, headers: { | |
| 'Authorization' => "Token token=\"#{token}\"" | |
| } | |
| session.response.body |
This is just pseudo-code to give you a general idea:
# client code
class MyClient
def get(params)
RestClient.get '/some/api', params
end
end| before_action :authenticate_user_from_token! | |
| before_action :authenticate_user! | |
| # Ripped from ember-simple-auth-devise | |
| def authenticate_user_from_token! | |
| if user = user_via_token | |
| sign_in(user, store: false) | |
| else | |
| raise NotAuthorized, 'Access is denied due to invalid token.' | |
| end |
| app = ActionDispatch.test_app | |
| session = ActionDispatch::Integration::Session.new(app) | |
| session.get '/api/foo' | |
| session.response.body |
| data: { | |
| type: 'authors', | |
| attributes: { first_name: 'Stephen', last_name: 'King' }, | |
| relationships: { | |
| books: { | |
| :"added-data" => [ | |
| { | |
| :"temp-id" => "abc123", | |
| type: 'books', | |
| attributes: { title: 'The Shining' }, |
| data: { | |
| type: 'authors', | |
| attributes: { first_name: 'Stephen', last_name: 'King' }, | |
| relationships: { | |
| books: { | |
| :"added-data" => [ | |
| { | |
| :"temp-id" => "abc123", | |
| type: 'books', | |
| } |