### GET /posts.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /posts.json ```markdown ### Parameters - **before** (integer, query, optional): Load posts with an id lower than this value. Useful for pagination. ### Responses #### 200 - latest posts ### Example Usage ```bash curl -X GET "https://{defaultHost}/posts.json?before=0" ``` ``` -------------------------------- ### GET /top.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /top.json ```markdown ### Parameters - **Api-Key** (string, header, required) - **Api-Username** (string, header, required) - **period** (string, query, optional): Enum: `all`, `yearly`, `quarterly`, `monthly`, `weekly`, `daily` - **per_page** (integer, query, optional): Maximum number of topics returned, between 1-100 ### Responses #### 200 - response - **users** (array (object)) Array items: - **id** (integer) - **username** (string) - **name** (string) - **avatar_template** (string) - **primary_groups** (array (unknown)) - **topic_list** (object) - **can_create_topic** (boolean) - **draft** (string,null) - **draft_key** (string) - **draft_sequence** (integer) - **for_period** (string) - **per_page** (integer) - **topics** (array (object)) Array items: - **id** (integer) - **title** (string) - **fancy_title** (string) - **slug** (string) - **posts_count** (integer) - **reply_count** (integer) - **highest_post_number** (integer) - **image_url** (string,null) - **created_at** (string) - **last_posted_at** (string) - **bumped** (boolean) - **bumped_at** (string) - **archetype** (string) - **unseen** (boolean) - **last_read_post_number** (integer) - **unread_posts** (integer) - **pinned** (boolean) - **unpinned** (boolean) - **visible** (boolean) - **closed** (boolean) - **archived** (boolean) - **notification_level** (integer) - **bookmarked** (boolean) - **liked** (boolean) - **views** (integer) - **like_count** (integer) - **has_summary** (boolean) - **last_poster_username** (string) - **category_id** (integer) - **op_like_count** (integer) - **pinned_globally** (boolean) - **featured_link** (string,null) - **posters** (array (object)) Array items: - **extras** (string,null) - **description** (string) - **user_id** (integer) - **primary_group_id** (integer,null) ### Example Usage ```bash curl -X GET "https://{defaultHost}/top.json?period=string&per_page=0" ``` ``` -------------------------------- ### GET /admin/backups.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /admin/backups.json ```markdown ### Responses #### 200 - success response - Array of object - **filename** (string) (required) - **size** (integer) (required) - **last_modified** (string) (required) ### Example Usage ```bash curl -X GET "https://{defaultHost}/admin/backups.json" ``` ``` -------------------------------- ### GET /latest.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /latest.json ```markdown ### Parameters - **Api-Key** (string, header, required) - **Api-Username** (string, header, required) - **order** (string, query, optional): Enum: `default`, `created`, `activity`, `views`, `posts`, `category`, `likes`, `op_likes`, `posters` - **ascending** (string, query, optional): Defaults to `desc`, add `ascending=true` to sort asc - **per_page** (integer, query, optional): Maximum number of topics returned, between 1-100 ### Responses #### 200 - topic updated - **users** (array (object)) Array items: - **id** (integer) - **username** (string) - **name** (string,null) - **avatar_template** (string) - **primary_groups** (array (unknown)) - **topic_list** (object) - **can_create_topic** (boolean) - **draft** (string,null) - **draft_key** (string) - **draft_sequence** (integer) - **per_page** (integer) - **topics** (array (object)) Array items: - **id** (integer) - **title** (string) - **fancy_title** (string) - **slug** (string) - **posts_count** (integer) - **reply_count** (integer) - **highest_post_number** (integer) - **image_url** (string) - **created_at** (string) - **last_posted_at** (string) - **bumped** (boolean) - **bumped_at** (string) - **archetype** (string) - **unseen** (boolean) - **last_read_post_number** (integer) - **unread_posts** (integer) - **pinned** (boolean) - **unpinned** (string,null) - **visible** (boolean) - **closed** (boolean) - **archived** (boolean) - **notification_level** (integer) - **bookmarked** (boolean) - **liked** (boolean) - **views** (integer) - **like_count** (integer) - **has_summary** (boolean) - **last_poster_username** (string) - **category_id** (integer) - **op_like_count** (integer) - **pinned_globally** (boolean) - **featured_link** (string,null) - **posters** (array (object)) Array items: - **extras** (string) - **description** (string) - **user_id** (integer) - **primary_group_id** (integer,null) ### Example Usage ```bash curl -X GET "https://{defaultHost}/latest.json?order=string&ascending=string&per_page=0" ``` ``` -------------------------------- ### GET /user_actions.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /user_actions.json ```markdown ### Parameters - **offset** (integer, query, required) - **username** (string, query, required) - **filter** (string, query, required) ### Responses #### 200 - response ### Example Usage ```bash curl -X GET "https://{defaultHost}/user_actions.json?offset=0&username=string&filter=string" ``` ``` -------------------------------- ### GET /admin/backups/{filename} Source: https://docs.discourse.org/openapi.json API endpoint for GET /admin/backups/{filename} ```markdown ### Parameters - **filename** (string, path, required) - **token** (string, query, required) ### Responses #### 200 - success response Empty response body ### Example Usage ```bash curl -X GET "https://{defaultHost}/admin/backups/{filename}?token=string" ``` ``` -------------------------------- ### GET /search.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /search.json ```markdown ### Parameters - **q** (string, query, optional): The query string needs to be url encoded and is made up of the following options: - Search term. This is just a string. Usually it would be the first item in the query. - `@`: Use the `@` followed by the username to specify posts by this user. - `#`: Use the `#` followed by the category slug to search within this category. - `tags:`: `api,solved` or for posts that have all the specified tags `api+solved`. - `before:`: `yyyy-mm-dd` - `after:`: `yyyy-mm-dd` - `order:`: `latest`, `likes`, `views`, `latest_topic` - `assigned:`: username (without `@`) - `in:`: `title`, `likes`, `personal`, `messages`, `seen`, `unseen`, `posted`, `created`, `watching`, `tracking`, `bookmarks`, `assigned`, `unassigned`, `first`, `pinned`, `wiki` - `with:`: `images` - `status:`: `open`, `closed`, `public`, `archived`, `noreplies`, `single_user`, `solved`, `unsolved` - `group:`: group_name or group_id - `group_messages:`: group_name or group_id - `min_posts:`: 1 - `max_posts:`: 10 - `min_views:`: 1 - `max_views:`: 10 If you are using cURL you can use the `-G` and the `--data-urlencode` flags to encode the query: ``` curl -i -sS -X GET -G "http://localhost:4200/search.json" \ --data-urlencode 'q=wordpress @scossar #fun after:2020-01-01' ``` - **page** (integer, query, optional) ### Responses #### 200 - success response ### Example Usage ```bash curl -X GET "https://{defaultHost}/search.json?q=string&page=0" ``` ``` -------------------------------- ### GET /directory_items.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /directory_items.json ```markdown ### Parameters - **period** (string (daily|weekly|monthly|quarterly|yearly|all), query, required) - **order** (string (likes_received|likes_given|topic_count|post_count|topics_entered|posts_read|days_visited), query, required) - **asc** (string (true), query, optional) - **page** (integer, query, optional) ### Responses #### 200 - directory items response ### Example Usage ```bash curl -X GET "https://{defaultHost}/directory_items.json?period=daily&order=likes_received&asc=true&page=0" ``` ``` -------------------------------- ### API Overview: Discourse API Documentation Source: https://docs.discourse.org/openapi.json This page contains the documentation on how to use Discourse through API calls. > Note: For any endpoints not listed you can follow the [reverse engineer the Discourse API](https://meta.discourse.org/t/-/20576) guide to figure out how to use an API endpoint. ### Request Content-Type The Content-Type for POST and PUT requests can be set to `application/x-www-form-urlencoded`, `multipart/form-data`, or `application/json`. ### Endpoint Names and Response Content-Type Most API endpoints provide the same content as their HTML counterparts. For example the URL `/categories` serves a list of categories, the `/categories.json` API provides the same information in JSON format. Instead of sending API requests to `/categories.json` you may also send them to `/categories` and add an `Accept: application/json` header to the request to get the JSON response. Sending requests with the `Accept` header is necessary if you want to use URLs for related endpoints returned by the API, such as pagination URLs. These URLs are returned without the `.json` prefix so you need to add the header in order to get the correct response format. ### Authentication Some endpoints do not require any authentication, pretty much anything else will require you to be authenticated. To become authenticated you will need to create an API Key from the admin panel. Once you have your API Key you can pass it in along with your API Username as an HTTP header like this: ``` curl -X GET "http://127.0.0.1:3000/admin/users/list/active.json" \ -H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \ -H "Api-Username: system" ``` and this is how POST requests will look: ``` curl -X POST "http://127.0.0.1:3000/categories" \ -H "Content-Type: multipart/form-data;" \ -H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \ -H "Api-Username: system" \ -F "name=89853c20-4409-e91a-a8ea-f6cdff96aaaa" \ -F "color=49d9e9" \ -F "text_color=f0fcfd" ``` ### Boolean values If an endpoint accepts a boolean be sure to specify it as a lowercase `true` or `false` value unless noted otherwise. ```yaml # Discourse API Documentation # Version: latest This page contains the documentation on how to use Discourse through API calls. > Note: For any endpoints not listed you can follow the [reverse engineer the Discourse API](https://meta.discourse.org/t/-/20576) guide to figure out how to use an API endpoint. ### Request Content-Type The Content-Type for POST and PUT requests can be set to `application/x-www-form-urlencoded`, `multipart/form-data`, or `application/json`. ### Endpoint Names and Response Content-Type Most API endpoints provide the same content as their HTML counterparts. For example the URL `/categories` serves a list of categories, the `/categories.json` API provides the same information in JSON format. Instead of sending API requests to `/categories.json` you may also send them to `/categories` and add an `Accept: application/json` header to the request to get the JSON response. Sending requests with the `Accept` header is necessary if you want to use URLs for related endpoints returned by the API, such as pagination URLs. These URLs are returned without the `.json` prefix so you need to add the header in order to get the correct response format. ### Authentication Some endpoints do not require any authentication, pretty much anything else will require you to be authenticated. To become authenticated you will need to create an API Key from the admin panel. Once you have your API Key you can pass it in along with your API Username as an HTTP header like this: ``` curl -X GET "http://127.0.0.1:3000/admin/users/list/active.json" \ -H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \ -H "Api-Username: system" ``` and this is how POST requests will look: ``` curl -X POST "http://127.0.0.1:3000/categories" \ -H "Content-Type: multipart/form-data;" \ -H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \ -H "Api-Username: system" \ -F "name=89853c20-4409-e91a-a8ea-f6cdff96aaaa" \ -F "color=49d9e9" \ -F "text_color=f0fcfd" ``` ### Boolean values If an endpoint accepts a boolean be sure to specify it as a lowercase `true` or `false` value unless noted otherwise. # Base URL: https://{defaultHost} ``` -------------------------------- ### GET /site/basic-info.json Source: https://docs.discourse.org/openapi.json Can be used to fetch basic info about a site ```markdown ### Responses #### 200 - success response ### Example Usage ```bash curl -X GET "https://{defaultHost}/site/basic-info.json" ``` ``` -------------------------------- ### GET /groups.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /groups.json ```markdown ### Responses #### 200 - response ### Example Usage ```bash curl -X GET "https://{defaultHost}/groups.json" ``` ``` -------------------------------- ### GET /site.json Source: https://docs.discourse.org/openapi.json Can be used to fetch all categories and subcategories ```markdown ### Responses #### 200 - success response ### Example Usage ```bash curl -X GET "https://{defaultHost}/site.json" ``` ``` -------------------------------- ### GET /notifications.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /notifications.json ```markdown ### Responses #### 200 - notifications - **notifications** (array (object)) Array items: - **id** (integer) - **user_id** (integer) - **notification_type** (integer) - **read** (boolean) - **created_at** (string) - **post_number** (integer,null) - **topic_id** (integer,null) - **slug** (string,null) - **data** (object) - **badge_id** (integer) - **badge_name** (string) - **badge_slug** (string) - **badge_title** (boolean) - **username** (string) - **total_rows_notifications** (integer) - **seen_notification_id** (integer) - **load_more_notifications** (string) ### Example Usage ```bash curl -X GET "https://{defaultHost}/notifications.json" ``` ``` -------------------------------- ### GET /discourse-post-event/events.ics Source: https://docs.discourse.org/openapi.json API endpoint for GET /discourse-post-event/events.ics ```markdown ### Parameters - **category_id** (integer, query, optional): Filter events by category ID - **include_subcategories** (string (true|false), query, optional): Include events from subcategories when filtering by category - **attending_user** (string, query, optional): Filter to events where the specified user (username) has RSVP'd as going - **before** (string (date-time), query, optional): Return events starting before this date/time (ISO 8601 format) - **after** (string (date-time), query, optional): Return events starting after this date/time (ISO 8601 format) - **order** (string (asc|desc), query, optional): Sort order for events by start date (default: asc) - **limit** (integer, query, optional): Maximum number of events to return (default: 200) ### Responses #### 200 - iCalendar file ### Example Usage ```bash curl -X GET "https://{defaultHost}/discourse-post-event/events.ics?category_id=0&include_subcategories=true&attending_user=string&before=2023-01-01T00:00:00Z&after=2023-01-01T00:00:00Z&order=asc&limit=0" ``` ``` -------------------------------- ### GET /admin/badges.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /admin/badges.json ```markdown ### Responses #### 200 - success response ### Example Usage ```bash curl -X GET "https://{defaultHost}/admin/badges.json" ``` ``` -------------------------------- ### GET /categories.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /categories.json ```markdown ### Parameters - **include_subcategories** (boolean, query, optional) ### Responses #### 200 - success response ### Example Usage ```bash curl -X GET "https://{defaultHost}/categories.json?include_subcategories=true" ``` ``` -------------------------------- ### GET /admin/users.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /admin/users.json ```markdown ### Parameters - **order** (string (created|last_emailed|seen|username|email|trust_level|days_visited|posts_read|topics_viewed|posts|read_time), query, optional) - **asc** (string (true), query, optional) - **page** (integer, query, optional) - **show_emails** (boolean, query, optional): Include user email addresses in response. These requests will be logged in the staff action logs. - **stats** (boolean, query, optional): Include user stats information - **email** (string, query, optional): Filter to the user with this email address - **ip** (string, query, optional): Filter to users with this IP address ### Responses #### 200 - users response - Array of object - **id** (integer) (required) - **username** (string) (required) - **name** (string,null) (required) - **avatar_template** (string) (required) - **email** (string) - **secondary_emails** (array (unknown)) - **active** (boolean) (required) - **admin** (boolean) (required) - **moderator** (boolean) (required) - **last_seen_at** (string,null) (required) - **last_emailed_at** (string,null) (required) - **created_at** (string) (required) - **last_seen_age** (number,null) (required) - **last_emailed_age** (number,null) (required) - **created_at_age** (number,null) (required) - **trust_level** (integer) (required) - **manual_locked_trust_level** (string,null) (required) - **title** (string,null) (required) - **time_read** (integer) (required) - **staged** (boolean) (required) - **days_visited** (integer) (required) - **posts_read_count** (integer) (required) - **topics_entered** (integer) (required) - **post_count** (integer) (required) ### Example Usage ```bash curl -X GET "https://{defaultHost}/admin/users.json?order=created&asc=true&page=0&show_emails=true&stats=true&email=string&ip=string" ``` ``` -------------------------------- ### GET /c/{id}/show.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /c/{id}/show.json ```markdown ### Parameters - **id** (integer, path, required) ### Responses #### 200 - response ### Example Usage ```bash curl -X GET "https://{defaultHost}/c/{id}/show.json" ``` ``` -------------------------------- ### GET /tags.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /tags.json ```markdown ### Responses #### 200 - notifications - **tags** (array (object)) Array items: - **id** (integer) - **text** (string) - **name** (string) - **count** (integer) - **pm_count** (integer) - **target_tag** (string,null) - **extras** (object) - **categories** (array (unknown)) ### Example Usage ```bash curl -X GET "https://{defaultHost}/tags.json" ``` ``` -------------------------------- ### GET /discourse-post-event/events.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /discourse-post-event/events.json ```markdown ### Parameters - **include_details** (string (true|false), query, optional): Include detailed event information (creator, invitees, stats, etc.) - **category_id** (integer, query, optional): Filter events by category ID - **include_subcategories** (string (true|false), query, optional): Include events from subcategories when filtering by category - **post_id** (integer, query, optional): Filter to events associated with a specific post ID - **attending_user** (string, query, optional): Filter to events where the specified user (username) has RSVP'd as going - **before** (string (date-time), query, optional): Return events starting before this date/time (ISO 8601 format) - **after** (string (date-time), query, optional): Return events starting after this date/time (ISO 8601 format) - **order** (string (asc|desc), query, optional): Sort order for events by start date (default: asc) - **limit** (integer, query, optional): Maximum number of events to return (default: 200) ### Responses #### 200 - success response (detailed) - **events** (array (object)) (required) Array items: - **id** (integer) (required) - **category_id** (integer,null) (required) - **name** (string,null) - **recurrence** (string,null) - **recurrence_until** (string,null) - **starts_at** (string,null) (required) - **ends_at** (string,null) (required) - **rrule** (string) - **show_local_time** (boolean) (required) - **timezone** (string,null) (required) - **duration** (string) - **all_day** (boolean) - **post** (object) (required) - **id** (integer) (required) - **post_number** (integer) (required) - **url** (string) (required) - **category_slug** (string) (required) - **topic** (object) (required) - **id** (integer) (required) - **title** (string) (required) - **tags** (array (string)) (required) - **tags_descriptions** (object) (required) - **occurrences** (array (object)) (required) Array items: - **starts_at** (string,null) (required) - **ends_at** (string,null) (required) - **can_act_on_discourse_post_event** (boolean,null) (required) - **can_update_attendance** (boolean,null) (required) - **creator** (object) - **id** (integer) (required) - **username** (string) (required) - **name** (string,null) - **avatar_template** (string) (required) - **custom_fields** (object,null) - **is_closed** (boolean) (required) - **is_expired** (boolean) (required) - **is_ongoing** (boolean) (required) - **is_private** (boolean) (required) - **is_public** (boolean) (required) - **is_standalone** (boolean) (required) - **minimal** (boolean,null) - **raw_invitees** (array,null) - **reminders** (array (object)) Array items: - **value** (integer) (required) - **unit** (string) (required) - **period** (string (before|after)) (required) ("before"|"after") - **type** (string) (required) - **sample_invitees** (array (object)) - **should_display_invitees** (boolean) (required) - **stats** (object) - **status** (string (public|private|standalone)) (required) ("public"|"private"|"standalone") - **url** (string) - **description** (string,null) - **description_html** (string,null) - **location** (string,null) - **watching_invitee** (object,null) - **chat_enabled** (boolean,null) - **channel** (object) - **max_attendees** (integer,null) - **at_capacity** (boolean) (required) - **image_upload** (object,null) ### Example Usage ```bash curl -X GET "https://{defaultHost}/discourse-post-event/events.json?include_details=true&category_id=0&include_subcategories=true&post_id=0&attending_user=string&before=2023-01-01T00:00:00Z&after=2023-01-01T00:00:00Z&order=asc&limit=0" ``` ``` -------------------------------- ### GET /admin/users/list/{flag}.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /admin/users/list/{flag}.json ```markdown ### Parameters - **flag** (string (active|new|staff|suspended|blocked|suspect), path, required) - **order** (string (created|last_emailed|seen|username|email|trust_level|days_visited|posts_read|topics_viewed|posts|read_time), query, optional) - **asc** (string (true), query, optional) - **page** (integer, query, optional) - **show_emails** (boolean, query, optional): Include user email addresses in response. These requests will be logged in the staff action logs. - **stats** (boolean, query, optional): Include user stats information - **email** (string, query, optional): Filter to the user with this email address - **ip** (string, query, optional): Filter to users with this IP address ### Responses #### 200 - response - Array of object - **id** (integer) (required) - **username** (string) (required) - **name** (string,null) (required) - **avatar_template** (string) (required) - **email** (string) - **secondary_emails** (array (unknown)) - **active** (boolean) (required) - **admin** (boolean) (required) - **moderator** (boolean) (required) - **last_seen_at** (string,null) (required) - **last_emailed_at** (string,null) (required) - **created_at** (string) (required) - **last_seen_age** (number,null) (required) - **last_emailed_age** (number,null) (required) - **created_at_age** (number,null) (required) - **trust_level** (integer) (required) - **manual_locked_trust_level** (string,null) (required) - **title** (string,null) (required) - **time_read** (integer) (required) - **staged** (boolean) (required) - **days_visited** (integer) (required) - **posts_read_count** (integer) (required) - **topics_entered** (integer) (required) - **post_count** (integer) (required) ### Example Usage ```bash curl -X GET "https://{defaultHost}/admin/users/list/{flag}.json?order=created&asc=true&page=0&show_emails=true&stats=true&email=string&ip=string" ``` ``` -------------------------------- ### POST /uploads/batch-presign-multipart-parts.json Source: https://docs.discourse.org/openapi.json Multipart uploads are uploaded in chunks or parts to individual presigned URLs, similar to the one generated by /generate-presigned-put. The part numbers provided must be between 1 and 10000. The total number of parts will depend on the chunk size in bytes that you intend to use to upload each chunk. For example a 12MB file may have 2 5MB chunks and a final 2MB chunk, for part numbers 1, 2, and 3. This endpoint will return a presigned URL for each part number provided, which you can then use to send PUT requests for the binary chunk corresponding to that part. When the part is uploaded, the provider should return an ETag for the part, and this should be stored along with the part number, because this is needed to complete the multipart upload. You must have the correct permissions and CORS settings configured in your external provider. We support AWS S3 as the default. See: https://meta.discourse.org/t/-/210469#s3-multipart-direct-uploads-4. An external file store must be set up and `enable_direct_s3_uploads` must be set to true for this endpoint to function. ```markdown ### Request Body **Content-Type:** application/json ### Responses #### 200 - external upload initialized ### Example Usage ```bash curl -X POST "https://{defaultHost}/uploads/batch-presign-multipart-parts.json" \ -H "Content-Type: application/json" \ -d '"value"' ``` ``` -------------------------------- ### GET /groups/{name}.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /groups/{name}.json ```markdown ### Parameters - **name** (string, path, required): Use group name instead of id ### Responses #### 200 - success response ### Example Usage ```bash curl -X GET "https://{defaultHost}/groups/{name}.json" ``` ``` -------------------------------- ### GET /tag_groups.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /tag_groups.json ```markdown ### Responses #### 200 - tags ### Example Usage ```bash curl -X GET "https://{defaultHost}/tag_groups.json" ``` ``` -------------------------------- ### GET /t/{id}.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /t/{id}.json ```markdown ### Parameters - **Api-Key** (string, header, required) - **Api-Username** (string, header, required) - **id** (string, path, required) ### Responses #### 200 - specific posts ### Example Usage ```bash curl -X GET "https://{defaultHost}/t/{id}.json" ``` ``` -------------------------------- ### GET /user-badges/{username}.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /user-badges/{username}.json ```markdown ### Parameters - **username** (string, path, required) ### Responses #### 200 - success response ### Example Usage ```bash curl -X GET "https://{defaultHost}/user-badges/{username}.json" ``` ``` -------------------------------- ### GET /tag/{name}.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /tag/{name}.json ```markdown ### Parameters - **name** (string, path, required) ### Responses #### 200 - notifications - **users** (array (object)) Array items: - **id** (integer) - **username** (string) - **name** (string,null) - **avatar_template** (string) - **primary_groups** (array (unknown)) - **topic_list** (object) - **can_create_topic** (boolean) - **draft** (string,null) - **draft_key** (string) - **draft_sequence** (integer) - **per_page** (integer) - **tags** (array (object)) Array items: - **id** (integer) - **name** (string) - **topic_count** (integer) - **staff** (boolean) - **topics** (array (object)) Array items: - **id** (integer) - **title** (string) - **fancy_title** (string) - **slug** (string) - **posts_count** (integer) - **reply_count** (integer) - **highest_post_number** (integer) - **image_url** (string,null) - **created_at** (string) - **last_posted_at** (string) - **bumped** (boolean) - **bumped_at** (string) - **archetype** (string) - **unseen** (boolean) - **last_read_post_number** (integer) - **unread_posts** (integer) - **pinned** (boolean) - **unpinned** (string,null) - **visible** (boolean) - **closed** (boolean) - **archived** (boolean) - **notification_level** (integer) - **bookmarked** (boolean) - **liked** (boolean) - **tags** (array (unknown)) - **views** (integer) - **like_count** (integer) - **has_summary** (boolean) - **last_poster_username** (string) - **category_id** (integer) - **pinned_globally** (boolean) - **featured_link** (string,null) - **posters** (array (object)) Array items: - **extras** (string) - **description** (string) - **user_id** (integer) - **primary_group_id** (integer,null) ### Example Usage ```bash curl -X GET "https://{defaultHost}/tag/{name}.json" ``` ``` -------------------------------- ### GET /posts/{id}/replies.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /posts/{id}/replies.json ```markdown ### Parameters - **id** (string, path, required) ### Responses #### 200 - post replies - Array of object - **id** (integer) (required) - **name** (string,null) (required) - **username** (string) (required) - **avatar_template** (string) (required) - **created_at** (string) (required) - **cooked** (string) (required) - **post_number** (integer) (required) - **post_type** (integer) (required) - **posts_count** (integer) (required) - **updated_at** (string) (required) - **reply_count** (integer) (required) - **reply_to_post_number** (integer) (required) - **quote_count** (integer) (required) - **incoming_link_count** (integer) (required) - **reads** (integer) (required) - **readers_count** (integer) (required) - **score** (number) (required) - **yours** (boolean) (required) - **topic_id** (integer) (required) - **topic_slug** (string) (required) - **display_username** (string,null) (required) - **primary_group_name** (string,null) (required) - **flair_name** (string,null) (required) - **flair_url** (string,null) (required) - **flair_bg_color** (string,null) (required) - **flair_color** (string,null) (required) - **flair_group_id** (integer,null) - **version** (integer) (required) - **can_edit** (boolean) (required) - **can_delete** (boolean) (required) - **can_recover** (boolean) (required) - **can_see_hidden_post** (boolean) (required) - **can_wiki** (boolean) (required) - **user_title** (string,null) (required) - **reply_to_user** (object) (required) - **id** (integer) - **username** (string) (required) - **name** (string) - **avatar_template** (string) (required) - **bookmarked** (boolean) (required) - **actions_summary** (array (object)) (required) Array items: - **id** (integer) (required) - **can_act** (boolean) (required) - **moderator** (boolean) (required) - **admin** (boolean) (required) - **staff** (boolean) (required) - **user_id** (integer) (required) - **hidden** (boolean) (required) - **trust_level** (integer) (required) - **deleted_at** (string,null) (required) - **user_deleted** (boolean) (required) - **edit_reason** (string,null) (required) - **can_view_edit_history** (boolean) (required) - **wiki** (boolean) (required) - **reviewable_id** (integer,null) (required) - **reviewable_score_count** (integer) (required) - **reviewable_score_pending_count** (integer) (required) - **post_url** (string) (required) ### Example Usage ```bash curl -X GET "https://{defaultHost}/posts/{id}/replies.json" ``` ``` -------------------------------- ### GET /u/{username}.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /u/{username}.json ```markdown ### Parameters - **Api-Key** (string, header, required) - **Api-Username** (string, header, required) - **username** (string, path, required) ### Responses #### 200 - user with primary group response ### Example Usage ```bash curl -X GET "https://{defaultHost}/u/{username}.json" ``` ``` -------------------------------- ### GET /groups/{name}/members.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /groups/{name}/members.json ```markdown ### Parameters - **name** (string, path, required): Use group name instead of id ### Responses #### 200 - success response ### Example Usage ```bash curl -X GET "https://{defaultHost}/groups/{name}/members.json" ``` ``` -------------------------------- ### GET /c/{slug}/{id}.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /c/{slug}/{id}.json ```markdown ### Parameters - **slug** (string, path, required) - **id** (integer, path, required) ### Responses #### 200 - success response ### Example Usage ```bash curl -X GET "https://{defaultHost}/c/{slug}/{id}.json" ``` ``` -------------------------------- ### GET /t/{id}/posts.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /t/{id}/posts.json ```markdown ### Parameters - **Api-Key** (string, header, required) - **Api-Username** (string, header, required) - **id** (string, path, required) ### Request Body **Content-Type:** application/json - **post_ids[]** (integer) (required) ### Responses #### 200 - specific posts - **post_stream** (object) - **posts** (array (object)) Array items: - **id** (integer) - **name** (string,null) - **username** (string) - **avatar_template** (string) - **created_at** (string) - **cooked** (string) - **post_number** (integer) - **post_type** (integer) - **updated_at** (string) - **reply_count** (integer) - **reply_to_post_number** (string,null) - **quote_count** (integer) - **incoming_link_count** (integer) - **reads** (integer) - **readers_count** (integer) - **score** (number) - **yours** (boolean) - **topic_id** (integer) - **topic_slug** (string) - **display_username** (string,null) - **primary_group_name** (string,null) - **flair_name** (string,null) - **flair_url** (string,null) - **flair_bg_color** (string,null) - **flair_color** (string,null) - **version** (integer) - **can_edit** (boolean) - **can_delete** (boolean) - **can_recover** (boolean) - **can_wiki** (boolean) - **read** (boolean) - **user_title** (string,null) - **actions_summary** (array (object)) Array items: - **id** (integer) - **can_act** (boolean) - **moderator** (boolean) - **admin** (boolean) - **staff** (boolean) - **user_id** (integer) - **hidden** (boolean) - **trust_level** (integer) - **deleted_at** (string,null) - **user_deleted** (boolean) - **edit_reason** (string,null) - **can_view_edit_history** (boolean) - **wiki** (boolean) - **reviewable_id** (integer) - **reviewable_score_count** (integer) - **reviewable_score_pending_count** (integer) - **id** (integer) ### Example Usage ```bash curl -X GET "https://{defaultHost}/t/{id}/posts.json" \ -H "Content-Type: application/json" \ -d '{ "post_ids[]": "0" }' ``` ``` -------------------------------- ### GET /groups/by-id/{id}.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /groups/by-id/{id}.json ```markdown ### Parameters - **id** (string, path, required): Use group name instead of id ### Responses #### 200 - success response (by id) ### Example Usage ```bash curl -X GET "https://{defaultHost}/groups/by-id/{id}.json" ``` ``` -------------------------------- ### GET /admin/users/{id}.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /admin/users/{id}.json ```markdown ### Parameters - **id** (integer, path, required) ### Responses #### 200 - response ### Example Usage ```bash curl -X GET "https://{defaultHost}/admin/users/{id}.json" ``` ``` -------------------------------- ### GET /u/{username}/emails.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /u/{username}/emails.json ```markdown ### Parameters - **username** (string, path, required) ### Responses #### 200 - success response ### Example Usage ```bash curl -X GET "https://{defaultHost}/u/{username}/emails.json" ``` ``` -------------------------------- ### GET /u/by-external/{provider}/{external_id}.json Source: https://docs.discourse.org/openapi.json API endpoint for GET /u/by-external/{provider}/{external_id}.json ```markdown ### Parameters - **Api-Key** (string, header, required) - **Api-Username** (string, header, required) - **provider** (string, path, required): Authentication provider name. Can be found in the provider callback URL: `/auth/{provider}/callback` - **external_id** (string, path, required) ### Responses #### 200 - user response ### Example Usage ```bash curl -X GET "https://{defaultHost}/u/by-external/{provider}/{external_id}.json" ``` ```