# frozen_string_literal: true $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__) require File.expand_path("../../lib/discourse_api", __FILE__) config = DiscourseApi::ExampleHelper.load_yml client = DiscourseApi::Client.new(config["host"] || "http://localhost:3000") client.api_key = config["api_key"] || "YOUR_API_KEY" client.api_username = config["api_username"] || "YOUR_USERNAME" response = client.create_topic( category: 1, skip_validations: true, auto_track: false, title: "Concert Master: A new way to choose", raw: "This is the raw markdown for my post", ) # get topic_id from response topic_id = response["topic_id"] ## # available options (guessing from reading discourse source) # status can be: ['autoclose', 'closed', 'archived', 'disabled', 'visible'] # enabled can be: [true, false] ## # lock topic (note: api_username determines user that is performing action) params = { status: "closed", enabled: true, api_username: "YOUR USERNAME/USERS USERNAME" } client.change_topic_status(topic_id, params) # unlock topic (note: api_username determines user that is performing action) params = { status: "closed", enabled: false, api_username: "YOUR USERNAME/USERS USERNAME" } client.change_topic_status(topic_id, params)