discourse/spec/requests/api/invites_spec.rb

52 lines
2.2 KiB
Ruby

# frozen_string_literal: true
require 'swagger_helper'
describe 'invites' do
let(:'Api-Key') { Fabricate(:api_key).key }
let(:'Api-Username') { 'system' }
path '/invites.json' do
post 'Create an invite' do
tags 'Invites'
consumes 'application/json'
parameter name: 'Api-Key', in: :header, type: :string, required: true
parameter name: 'Api-Username', in: :header, type: :string, required: true
parameter name: :request_body, in: :body, schema: {
type: :object,
properties: {
email: { type: :string, example: "not-a-user-yet@example.com", description: "required for email invites only" },
skip_email: { type: :boolean, default: false },
custom_message: { type: :string, description: "optional, for email invites" },
max_redemptions_allowed: { type: :integer, example: 5, default: 1, description: "optional, for link invites" },
topic_id: { type: :int },
group_id: { type: [:int], description: "optional, either this or `group_names`" },
group_names: { type: :string, description: "optional, either this or `group_id`" },
expires_at: { type: :string, default: "controlled by invite_expiry_days site setting" },
}
}
produces 'application/json'
response '200', 'success response' do
schema type: :object, properties: {
id: { type: :integer, example: 42 },
link: { type: :string, example: "http://example.com/invites/9045fd767efe201ca60c6658bcf14158" },
email: { type: :string, example: "not-a-user-yet@example.com" },
emailed: { type: :boolean, example: false },
custom_message: { type: :string, example: "Hello world!", nullable: true },
topics: { type: :array, example: [] },
groups: { type: :array, example: [] },
created_at: { type: :string, example: "2021-01-01T12:00:00.000Z" },
updated_at: { type: :string, example: "2021-01-01T12:00:00.000Z" },
expires_at: { type: :string, example: "2021-02-01T12:00:00.000Z" },
expired: { type: :boolean, example: false },
}
let(:request_body) { { email: 'not-a-user-yet@example.com' } }
run_test!
end
end
end
end