mirror of
https://github.com/discourse/discourse.git
synced 2024-12-16 11:15:48 +08:00
ee7809e8a8
From the openapi spec: https://spec.openapis.org/oas/latest.html#fixed-fields-7 each endpoint needs to have an `operationId`: > Unique string used to identify the operation. The id MUST be unique > among all operations described in the API. The operationId value is > case-sensitive. Tools and libraries MAY use the operationId to uniquely > identify an operation, therefore, it is RECOMMENDED to follow common > programming naming conventions. Running the linter on our openapi.json file with this command: `npx @redocly/openapi-cli lint openapi.json` produced the following warning on all of our endpoints: > Operation object should contain `operationId` field This commit resolves these warnings by adding an operationId field to each endpoint.
87 lines
2.3 KiB
Ruby
87 lines
2.3 KiB
Ruby
# frozen_string_literal: true
|
|
require 'swagger_helper'
|
|
|
|
describe 'notifications' do
|
|
|
|
let(:admin) { Fabricate(:admin) }
|
|
let!(:notification) { Fabricate(:notification, user: admin) }
|
|
|
|
before do
|
|
Jobs.run_immediately!
|
|
sign_in(admin)
|
|
end
|
|
|
|
path '/notifications.json' do
|
|
|
|
get 'Get the notifications that belong to the current user' do
|
|
tags 'Notifications'
|
|
operationId 'getNotifications'
|
|
|
|
produces 'application/json'
|
|
response '200', 'notifications' do
|
|
schema type: :object, properties: {
|
|
notifications: {
|
|
type: :array,
|
|
items: {
|
|
type: :object,
|
|
properties: {
|
|
id: { type: :integer },
|
|
user_id: { type: :integer },
|
|
notification_type: { type: :integer },
|
|
read: { type: :boolean },
|
|
created_at: { type: :string },
|
|
post_number: { type: [:string, :null] },
|
|
topic_id: { type: [:integer, :null] },
|
|
slug: { type: [:string, :null] },
|
|
data: {
|
|
type: :object,
|
|
properties: {
|
|
badge_id: { type: :integer },
|
|
badge_name: { type: :string },
|
|
badge_slug: { type: :string },
|
|
badge_title: { type: :boolean },
|
|
username: { type: :string },
|
|
}
|
|
},
|
|
}
|
|
},
|
|
},
|
|
total_rows_notifications: { type: :integer },
|
|
seen_notification_id: { type: :integer },
|
|
load_more_notifications: { type: :string },
|
|
}
|
|
|
|
run_test!
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
path '/notifications/mark-read.json' do
|
|
|
|
put 'Mark notifications as read' do
|
|
tags 'Notifications'
|
|
operationId 'markNotificationsAsRead'
|
|
consumes 'application/json'
|
|
parameter name: :notification, in: :body, schema: {
|
|
type: :object,
|
|
properties: {
|
|
id: {
|
|
type: :integer,
|
|
description: '(optional) Leave off to mark all notifications as read'
|
|
}
|
|
},
|
|
}
|
|
|
|
produces 'application/json'
|
|
response '200', 'notifications marked read' do
|
|
schema type: :object, properties: {
|
|
success: { type: :string },
|
|
}
|
|
|
|
run_test!
|
|
end
|
|
end
|
|
end
|
|
end
|