Sha256: 833a9d3ff036dd3feae6a3b7b055703e8fec179ead2c269f8cca3785302f32c6

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

module V1
  module Endpoints
    class Users
      include Praxis::EndpointDefinition
      # include AuthenticatedEndpoint

      media_type MediaTypes::User
      version '1'

      description 'Endpoints that allow the listing and manipulation of users'

      action :index do
        description 'List users'
        routing { get '' }
        params do
          attribute :fields, Praxis::Types::FieldSelector.for(MediaTypes::User),
                    description: 'Fields with which to render the result.'
          attribute :filters, Praxis::Types::FilteringParams.for(MediaTypes::User) do
            filter 'state', using: ['=', '!=']
            filter 'first_name', using: ['=', '!='], fuzzy: true
            filter 'last_name', using: ['=', '!='], fuzzy: true
          end
          attribute :pagination, Praxis::Types::PaginationParams.for(MediaTypes::User) do
            by_fields :uid, :first_name, :last_name
          end
          attribute :order, Praxis::Extensions::Pagination::OrderingParams.for(MediaTypes::User) do
            by_fields :uid, :last_name, :first_name
          end          
        end
        response :ok, media_type: Praxis::Collection.of(MediaTypes::User)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
praxis-2.0.pre.10 tasks/thor/templates/generator/example_app/design/v1/endpoints/users.rb