# Copyright (C) 2024 Manuel Bustillo # frozen_string_literal: true module SwaggerResponseHelper TIMESTAMP_FORMAT = '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z' TIMESTAMP_EXAMPLE = Time.zone.now.iso8601(3) TIMESTAMP = { type: :string, pattern: TIMESTAMP_FORMAT, example: TIMESTAMP_EXAMPLE }.freeze PASSWORD = { type: :string, minLength: User.password_length.begin, maxLength: User.password_length.end }.freeze def regular_api_responses response401 end def response422 response(422, 'Validation errors in input parameters') do produces 'application/json' error_schema xit end end def response_empty200 response(200, 'Success') do produces 'application/json' schema type: :object xit end end def response_empty201 response(201, 'Created') do produces 'application/json' schema type: :object xit end end def response404 response(404, 'Record not found') do produces 'application/json' error_schema xit end end def response401(message: nil) response(401, 'Unauthorized') do produces 'application/json' schema type: :object, required: %i[error], properties: { error: { type: :string, example: message || 'You need to sign in or sign up before continuing.' } } xit end end private def error_schema schema type: :object, required: %i[message errors], properties: { message: { type: :string }, errors: { type: :array, items: { type: :string } } } end end