mirror of
https://github.com/we-promise/sure.git
synced 2026-05-07 12:54:04 +00:00
Add categories endpoint in API (#460)
* Add categories endpoint in API * FIX eager load parent and subcategories associations * FIX update specs to match * Add rswag spec * FIX openapi spec * FIX final warns
This commit is contained in:
@@ -110,18 +110,33 @@ RSpec.describe 'API V1 Transactions', type: :request do
|
||||
description: 'Filter by category ID'
|
||||
parameter name: :merchant_id, in: :query, type: :string, required: false,
|
||||
description: 'Filter by merchant ID'
|
||||
parameter name: :start_date, in: :query, type: :string, format: :date, required: false,
|
||||
description: 'Filter transactions from this date'
|
||||
parameter name: :end_date, in: :query, type: :string, format: :date, required: false,
|
||||
description: 'Filter transactions until this date'
|
||||
parameter name: :start_date, in: :query, required: false,
|
||||
description: 'Filter transactions from this date',
|
||||
schema: { type: :string, format: :date }
|
||||
parameter name: :end_date, in: :query, required: false,
|
||||
description: 'Filter transactions until this date',
|
||||
schema: { type: :string, format: :date }
|
||||
parameter name: :min_amount, in: :query, type: :number, required: false,
|
||||
description: 'Filter by minimum amount'
|
||||
parameter name: :max_amount, in: :query, type: :number, required: false,
|
||||
description: 'Filter by maximum amount'
|
||||
parameter name: :type, in: :query, type: :string, enum: %w[income expense], required: false,
|
||||
description: 'Filter by transaction type'
|
||||
parameter name: :type, in: :query, required: false,
|
||||
description: 'Filter by transaction type',
|
||||
schema: { type: :string, enum: %w[income expense] }
|
||||
parameter name: :search, in: :query, type: :string, required: false,
|
||||
description: 'Search by name, notes, or merchant name'
|
||||
parameter name: :account_ids, in: :query, required: false,
|
||||
description: 'Filter by multiple account IDs',
|
||||
schema: { type: :array, items: { type: :string } }
|
||||
parameter name: :category_ids, in: :query, required: false,
|
||||
description: 'Filter by multiple category IDs',
|
||||
schema: { type: :array, items: { type: :string } }
|
||||
parameter name: :merchant_ids, in: :query, required: false,
|
||||
description: 'Filter by multiple merchant IDs',
|
||||
schema: { type: :array, items: { type: :string } }
|
||||
parameter name: :tag_ids, in: :query, required: false,
|
||||
description: 'Filter by tag IDs',
|
||||
schema: { type: :array, items: { type: :string } }
|
||||
|
||||
response '200', 'transactions listed' do
|
||||
schema '$ref' => '#/components/schemas/TransactionCollection'
|
||||
@@ -174,6 +189,7 @@ RSpec.describe 'API V1 Transactions', type: :request do
|
||||
date: { type: :string, format: :date, description: 'Transaction date' },
|
||||
amount: { type: :number, description: 'Transaction amount' },
|
||||
name: { type: :string, description: 'Transaction name/description' },
|
||||
description: { type: :string, description: 'Alternative to name field' },
|
||||
notes: { type: :string, description: 'Additional notes' },
|
||||
currency: { type: :string, description: 'Currency code (defaults to family currency)' },
|
||||
category_id: { type: :string, format: :uuid, description: 'Category ID' },
|
||||
@@ -294,7 +310,9 @@ RSpec.describe 'API V1 Transactions', type: :request do
|
||||
date: { type: :string, format: :date },
|
||||
amount: { type: :number },
|
||||
name: { type: :string },
|
||||
description: { type: :string, description: 'Alternative to name field' },
|
||||
notes: { type: :string },
|
||||
currency: { type: :string, description: 'Currency code' },
|
||||
category_id: { type: :string, format: :uuid },
|
||||
merchant_id: { type: :string, format: :uuid },
|
||||
nature: { type: :string, enum: %w[income expense inflow outflow] },
|
||||
|
||||
Reference in New Issue
Block a user