From 22f836edc23863f4fd15f9e83ee50d57d91dd3cb Mon Sep 17 00:00:00 2001 From: Ben Halpern Date: Tue, 5 Sep 2023 16:04:18 -0400 Subject: [PATCH] Add priority weight to billboards (#20019) * Add priority weight to billboards * Rewrite query as activerecord * Change naming from priority_weight to just weight --- .../api/v1/billboards_controller.rb | 2 +- app/models/billboard.rb | 25 +- ...60030_add_priority_weight_to_billboards.rb | 5 + db/schema.rb | 3 +- spec/factories/billboards.rb | 1 + spec/models/billboard_spec.rb | 35 + spec/requests/api/v1/billboards_spec.rb | 7 +- swagger/v1/api_v1.json | 671 +++++++++--------- 8 files changed, 409 insertions(+), 340 deletions(-) create mode 100644 db/migrate/20230831160030_add_priority_weight_to_billboards.rb diff --git a/app/controllers/api/v1/billboards_controller.rb b/app/controllers/api/v1/billboards_controller.rb index 8f741b1a2..23b3c1fb2 100644 --- a/app/controllers/api/v1/billboards_controller.rb +++ b/app/controllers/api/v1/billboards_controller.rb @@ -49,7 +49,7 @@ module Api def permitted_params params.permit :approved, :body_markdown, :creator_id, :display_to, :name, :organization_id, :placement_area, :published, - :tag_list, :type_of, :exclude_article_ids, + :tag_list, :type_of, :exclude_article_ids, :weight, :audience_segment_type, :audience_segment_id, :priority, # Permitting twice allows both comma-separated string and array values :target_geolocations, target_geolocations: [] diff --git a/app/models/billboard.rb b/app/models/billboard.rb index 2013e7d15..8b44dca14 100644 --- a/app/models/billboard.rb +++ b/app/models/billboard.rb @@ -38,6 +38,7 @@ class Billboard < ApplicationRecord inclusion: { in: ALLOWED_PLACEMENT_AREAS } validates :body_markdown, presence: true validates :organization, presence: true, if: :community? + validates :weight, numericality: { greater_than_or_equal_to: 0, less_than_or_equal_to: 10_000 } validates :audience_segment_type, inclusion: { in: AudienceSegment.type_ofs }, allow_blank: true @@ -88,7 +89,8 @@ class Billboard < ApplicationRecord when (random_range_max(area)..new_and_priority_range_max(area)) # medium range, 30% # Here we sample from only billboards with fewer than 1000 impressions (with a fallback # if there are none of those, causing an extra query, but that shouldn't happen very often). - billboards_for_display.seldom_seen(area).sample || billboards_for_display.sample + relation = billboards_for_display.seldom_seen(area) + weighted_random_selection(relation) || billboards_for_display.sample else # large range, 65% # Ads that get engagement have a higher "success rate", and among this category, we sample from the top 15 that @@ -101,6 +103,27 @@ class Billboard < ApplicationRecord end end + def self.weighted_random_selection(relation) + base_query = relation.to_sql + random_val = rand.to_f + + query = <<-SQL + WITH base AS (#{base_query}), + weighted AS ( + SELECT *, weight, + SUM(weight) OVER () AS total_weight, + SUM(weight) OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_weight + FROM base + ) + SELECT *, running_weight, ? * total_weight AS random_value FROM weighted + WHERE running_weight >= ? * total_weight + ORDER BY running_weight ASC + LIMIT 1 + SQL + + relation.find_by_sql([query, random_val, random_val]).first + end + # Temporary ENV configs, to eventually be replaced by permanent configurations # once we determine what the appropriate long-term config approach is. diff --git a/db/migrate/20230831160030_add_priority_weight_to_billboards.rb b/db/migrate/20230831160030_add_priority_weight_to_billboards.rb new file mode 100644 index 000000000..57427c67d --- /dev/null +++ b/db/migrate/20230831160030_add_priority_weight_to_billboards.rb @@ -0,0 +1,5 @@ +class AddPriorityWeightToBillboards < ActiveRecord::Migration[7.0] + def change + add_column :display_ads, :weight, :float, default: 1.0, null: false + end +end diff --git a/db/schema.rb b/db/schema.rb index d87cf115b..2974ec5ee 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2023_08_03_133228) do +ActiveRecord::Schema[7.0].define(version: 2023_08_31_160030) do # These are extensions that must be enabled in order to support this database enable_extension "citext" enable_extension "ltree" @@ -483,6 +483,7 @@ ActiveRecord::Schema[7.0].define(version: 2023_08_03_133228) do t.ltree "target_geolocations", default: [], array: true t.integer "type_of", default: 0, null: false t.datetime "updated_at", precision: nil, null: false + t.float "weight", default: 1.0, null: false t.index ["cached_tag_list"], name: "index_display_ads_on_cached_tag_list", opclass: :gin_trgm_ops, using: :gin t.index ["exclude_article_ids"], name: "index_display_ads_on_exclude_article_ids", using: :gin t.index ["placement_area"], name: "index_display_ads_on_placement_area" diff --git a/spec/factories/billboards.rb b/spec/factories/billboards.rb index 459fcea91..7b1d967df 100644 --- a/spec/factories/billboards.rb +++ b/spec/factories/billboards.rb @@ -4,5 +4,6 @@ FactoryBot.define do sequence(:body_markdown) { |n| "Hello _hey_ Hey hey #{n}" } organization priority { false } + weight { 1.0 } end end diff --git a/spec/models/billboard_spec.rb b/spec/models/billboard_spec.rb index 50e573baa..1f9a4f71e 100644 --- a/spec/models/billboard_spec.rb +++ b/spec/models/billboard_spec.rb @@ -493,4 +493,39 @@ RSpec.describe Billboard do expect(described_class.seldom_seen("sidebar_left").size).to be 2 end end + + describe ".weighted_random_selection" do + it "samples with weights correctly" do + described_class.delete_all + bb1 = create(:billboard, weight: 5) + bb2 = create(:billboard, weight: 1) + bb3 = create(:billboard, weight: 1) + bb4 = create(:billboard, weight: 2) + bb5 = create(:billboard, weight: 1) + + total_weight = 5 + 1 + 1 + 2 + 1 # 10 + expected_probabilities = { + bb1.id => 5.0 / total_weight, + bb2.id => 1.0 / total_weight, + bb3.id => 1.0 / total_weight, + bb4.id => 2.0 / total_weight, + bb5.id => 1.0 / total_weight + } + + counts = Hash.new(0) + num_trials = 5_000 + + num_trials.times do + id = described_class.weighted_random_selection(described_class.all).id + counts[id] += 1 + end + + counts.each do |id, count| + observed_probability = count.to_f / num_trials + expected_probability = expected_probabilities[id] + + expect(observed_probability).to be_within(0.025).of(expected_probability) + end + end + end end diff --git a/spec/requests/api/v1/billboards_spec.rb b/spec/requests/api/v1/billboards_spec.rb index 1bff6ebc2..460797033 100644 --- a/spec/requests/api/v1/billboards_spec.rb +++ b/spec/requests/api/v1/billboards_spec.rb @@ -52,7 +52,7 @@ RSpec.describe "Api::V1::Billboards" do "success_rate", "tag_list", "type_of", "updated_at", "creator_id", "exclude_article_ids", "audience_segment_type", "audience_segment_id", - "priority", "target_geolocations") + "priority", "weight", "target_geolocations") expect(response.parsed_body["target_geolocations"]).to contain_exactly("US-WA", "CA-BC") end @@ -71,7 +71,7 @@ RSpec.describe "Api::V1::Billboards" do "success_rate", "tag_list", "type_of", "updated_at", "creator_id", "exclude_article_ids", "audience_segment_type", "audience_segment_id", - "priority", "target_geolocations") + "priority", "weight", "target_geolocations") expect(response.parsed_body["target_geolocations"]).to contain_exactly("US-WA", "CA-BC") end @@ -109,6 +109,7 @@ RSpec.describe "Api::V1::Billboards" do "published" => true, "approved" => true, "priority" => false, + "weight" => 1.0, "type_of" => "in_house", "cached_tag_list" => "", "clicks_count" => 0, @@ -135,7 +136,7 @@ RSpec.describe "Api::V1::Billboards" do "success_rate", "tag_list", "type_of", "updated_at", "creator_id", "exclude_article_ids", "audience_segment_type", "audience_segment_id", - "priority", "target_geolocations") + "priority", "weight", "target_geolocations") end it "also accepts target geolocations as an array" do diff --git a/swagger/v1/api_v1.json b/swagger/v1/api_v1.json index 772c29687..1f7a315e7 100644 --- a/swagger/v1/api_v1.json +++ b/swagger/v1/api_v1.json @@ -20,40 +20,40 @@ "application/json": { "example": { "type_of": "article", - "id": 5073, + "id": 2, "title": "New article", "description": "New post example", - "readable_publish_date": "Aug 29", - "slug": "new-article-1ec4", - "path": "/username2/new-article-1ec4", - "url": "http://forem.test/username2/new-article-1ec4", + "readable_publish_date": "Aug 31", + "slug": "new-article-31g9", + "path": "/username2/new-article-31g9", + "url": "http://forem.test/username2/new-article-31g9", "comments_count": 0, "public_reactions_count": 0, - "collection_id": 69, - "published_timestamp": "2023-08-29T07:34:00Z", + "collection_id": 1, + "published_timestamp": "2023-08-31T16:14:06Z", "positive_reactions_count": 0, "cover_image": "https://thepracticaldev.s3.amazonaws.com/i/5wfo25724gzgk5e5j50g.jpg", "social_image": "https://thepracticaldev.s3.amazonaws.com/i/5wfo25724gzgk5e5j50g.jpg", "canonical_url": "https://dev.to/fdocr/headless-chrome-dual-mode-tests-for-ruby-on-rails-4p6g", - "created_at": "2023-08-29T07:34:00Z", + "created_at": "2023-08-31T16:14:06Z", "edited_at": null, "crossposted_at": null, - "published_at": "2023-08-29T07:34:00Z", - "last_comment_at": "2023-08-29T07:34:00Z", + "published_at": "2023-08-31T16:14:06Z", + "last_comment_at": "2023-08-31T16:14:06Z", "reading_time_minutes": 1, "tag_list": "", "tags": [], "body_html": "

New body for the article

\n\n", "body_markdown": "**New** body for the article", "user": { - "name": "Courtney \"Emilio\" \\:/ O'Keefe", + "name": "Laurene \"Genaro\" \\:/ Feil", "username": "username2", "twitter_username": "twitter2", "github_username": "github2", - "user_id": 11415, + "user_id": 2, "website_url": null, - "profile_image": "/uploads/user/profile_image/11415/f7c164f1-78d3-4b6e-8226-60790d9b742d.jpeg", - "profile_image_90": "/uploads/user/profile_image/11415/f7c164f1-78d3-4b6e-8226-60790d9b742d.jpeg" + "profile_image": "/uploads/user/profile_image/2/dcd9de82-ae2e-4f76-b410-f419e0e4958b.jpeg", + "profile_image_90": "/uploads/user/profile_image/2/dcd9de82-ae2e-4f76-b410-f419e0e4958b.jpeg" } } } @@ -188,45 +188,45 @@ "example": [ { "type_of": "article", - "id": 5076, - "title": "Behold the Man4", - "description": "Muggle magic mustache five dollar toast. Kogi bushwick farm-to-table. Goth godard occupy cronut small...", - "readable_publish_date": "Aug 29", - "slug": "behold-the-man4-479g", - "path": "/username6/behold-the-man4-479g", - "url": "http://forem.test/username6/behold-the-man4-479g", + "id": 5, + "title": "Stranger in a Strange Land4", + "description": "Franzen offal pork belly pour-over muggle magic. Brooklyn ethical iphone viral everyday paleo tumblr....", + "readable_publish_date": "Aug 31", + "slug": "stranger-in-a-strange-land4-4pe2", + "path": "/username6/stranger-in-a-strange-land4-4pe2", + "url": "http://forem.test/username6/stranger-in-a-strange-land4-4pe2", "comments_count": 0, "public_reactions_count": 0, "collection_id": null, - "published_timestamp": "2023-08-29T07:34:00Z", + "published_timestamp": "2023-08-31T16:14:06Z", "positive_reactions_count": 0, - "cover_image": "http://forem.test/assets/40-57aabe055a9fc60491e0fca9a4dade362141764e7ad214956bbfc9c9e69763b0.png", - "social_image": "http://forem.test/assets/40-57aabe055a9fc60491e0fca9a4dade362141764e7ad214956bbfc9c9e69763b0.png", - "canonical_url": "http://forem.test/username6/behold-the-man4-479g", - "created_at": "2023-08-29T07:34:00Z", + "cover_image": "http://forem.test/assets/36-83d24fbff858b9dd4035d1e7d2df14090946ae4fed631055fc1d5862e7018348.png", + "social_image": "http://forem.test/assets/36-83d24fbff858b9dd4035d1e7d2df14090946ae4fed631055fc1d5862e7018348.png", + "canonical_url": "http://forem.test/username6/stranger-in-a-strange-land4-4pe2", + "created_at": "2023-08-31T16:14:06Z", "edited_at": null, "crossposted_at": null, - "published_at": "2023-08-29T07:34:00Z", - "last_comment_at": "2023-08-29T07:34:00Z", + "published_at": "2023-08-31T16:14:06Z", + "last_comment_at": "2023-08-31T16:14:06Z", "reading_time_minutes": 1, "tag_list": ["discuss"], "tags": "discuss", "user": { - "name": "Alden \"Aurelio\" \\:/ Little", + "name": "Milagro \"Tabatha\" \\:/ Grady", "username": "username6", "twitter_username": "twitter6", "github_username": "github6", - "user_id": 11419, + "user_id": 6, "website_url": null, - "profile_image": "/uploads/user/profile_image/11419/4566e0df-380c-454c-a870-e11b3f3479a3.jpeg", - "profile_image_90": "/uploads/user/profile_image/11419/4566e0df-380c-454c-a870-e11b3f3479a3.jpeg" + "profile_image": "/uploads/user/profile_image/6/d0e96237-c811-453a-bf1f-03f75dd68680.jpeg", + "profile_image_90": "/uploads/user/profile_image/6/d0e96237-c811-453a-bf1f-03f75dd68680.jpeg" }, "organization": { - "name": "Graham Inc", + "name": "Orn, Walker and Windler", "username": "org4", "slug": "org4", - "profile_image": "/uploads/organization/profile_image/1464/dee7b721-b790-4701-b6b2-3e006cfab7ec.png", - "profile_image_90": "/uploads/organization/profile_image/1464/dee7b721-b790-4701-b6b2-3e006cfab7ec.png" + "profile_image": "/uploads/organization/profile_image/4/17e0ce9b-1b48-48ae-848e-73f18577f847.png", + "profile_image_90": "/uploads/organization/profile_image/4/17e0ce9b-1b48-48ae-848e-73f18577f847.png" }, "flare_tag": { "name": "discuss", @@ -270,38 +270,38 @@ "example": [ { "type_of": "article", - "id": 5079, - "title": "The Millstone7", - "description": "Small batch pork belly retro +1 slow-carb. Poutine keytar kogi. Drinking brunch cray...", - "readable_publish_date": "Aug 29", - "slug": "the-millstone7-3a0i", - "path": "/username9/the-millstone7-3a0i", - "url": "http://forem.test/username9/the-millstone7-3a0i", + "id": 8, + "title": "The Cricket on the Hearth7", + "description": "Salvia cleanse direct trade kinfolk blue bottle cold-pressed cronut neutra. Microdosing authentic...", + "readable_publish_date": "Aug 31", + "slug": "the-cricket-on-the-hearth7-7kg", + "path": "/username9/the-cricket-on-the-hearth7-7kg", + "url": "http://forem.test/username9/the-cricket-on-the-hearth7-7kg", "comments_count": 0, "public_reactions_count": 0, "collection_id": null, - "published_timestamp": "2023-08-29T07:34:01Z", + "published_timestamp": "2023-08-31T16:14:06Z", "positive_reactions_count": 0, - "cover_image": "http://forem.test/assets/9-1fea7c7f07002fc02de9c2962ca140942c9ad3c92c5e5c1c7bd51fd6025800c0.png", - "social_image": "http://forem.test/assets/9-1fea7c7f07002fc02de9c2962ca140942c9ad3c92c5e5c1c7bd51fd6025800c0.png", - "canonical_url": "http://forem.test/username9/the-millstone7-3a0i", - "created_at": "2023-08-29T07:34:01Z", + "cover_image": "http://forem.test/assets/15-680d1f40ea6901cfc18b12fab21c19e432463aa63a44853f8ad84e469adb2e54.png", + "social_image": "http://forem.test/assets/15-680d1f40ea6901cfc18b12fab21c19e432463aa63a44853f8ad84e469adb2e54.png", + "canonical_url": "http://forem.test/username9/the-cricket-on-the-hearth7-7kg", + "created_at": "2023-08-31T16:14:06Z", "edited_at": null, "crossposted_at": null, - "published_at": "2023-08-29T07:34:01Z", - "last_comment_at": "2023-08-29T07:34:01Z", + "published_at": "2023-08-31T16:14:06Z", + "last_comment_at": "2023-08-31T16:14:06Z", "reading_time_minutes": 1, "tag_list": ["javascript", "html", "discuss"], "tags": "javascript, html, discuss", "user": { - "name": "Gayle \"Garrett\" \\:/ Hoeger", + "name": "Carl \"Phillip\" \\:/ Nicolas", "username": "username9", "twitter_username": "twitter9", "github_username": "github9", - "user_id": 11422, + "user_id": 9, "website_url": null, - "profile_image": "/uploads/user/profile_image/11422/6f42d0d4-acb5-4c79-9989-73143777f53b.jpeg", - "profile_image_90": "/uploads/user/profile_image/11422/6f42d0d4-acb5-4c79-9989-73143777f53b.jpeg" + "profile_image": "/uploads/user/profile_image/9/15a67ff8-81eb-43d1-bcbe-c6f01dcbfc7e.jpeg", + "profile_image_90": "/uploads/user/profile_image/9/15a67ff8-81eb-43d1-bcbe-c6f01dcbfc7e.jpeg" }, "flare_tag": { "name": "discuss", @@ -311,38 +311,38 @@ }, { "type_of": "article", - "id": 5078, - "title": "No Country for Old Men6", - "description": "Carry pabst freegan letterpress franzen gastropub banjo butcher. Cardigan shoreditch vhs fingerstache...", - "readable_publish_date": "Aug 29", - "slug": "no-country-for-old-men6-18nf", - "path": "/username8/no-country-for-old-men6-18nf", - "url": "http://forem.test/username8/no-country-for-old-men6-18nf", + "id": 7, + "title": "The House of Mirth6", + "description": "Pour-over narwhal sustainable kitsch pickled. Jean shorts meditation messenger bag swag bitters...", + "readable_publish_date": "Aug 31", + "slug": "the-house-of-mirth6-32ba", + "path": "/username8/the-house-of-mirth6-32ba", + "url": "http://forem.test/username8/the-house-of-mirth6-32ba", "comments_count": 0, "public_reactions_count": 0, "collection_id": null, - "published_timestamp": "2023-08-29T07:34:01Z", + "published_timestamp": "2023-08-31T16:14:06Z", "positive_reactions_count": 0, - "cover_image": "http://forem.test/assets/30-08b2d52669e0680784f50291966e33f77cbee815907e6abbacf74018fa3f3567.png", - "social_image": "http://forem.test/assets/30-08b2d52669e0680784f50291966e33f77cbee815907e6abbacf74018fa3f3567.png", - "canonical_url": "http://forem.test/username8/no-country-for-old-men6-18nf", - "created_at": "2023-08-29T07:34:01Z", + "cover_image": "http://forem.test/assets/34-d27f3a4a9f6f1f373003c74b31749764691f510b2a18b55039478583864a067e.png", + "social_image": "http://forem.test/assets/34-d27f3a4a9f6f1f373003c74b31749764691f510b2a18b55039478583864a067e.png", + "canonical_url": "http://forem.test/username8/the-house-of-mirth6-32ba", + "created_at": "2023-08-31T16:14:06Z", "edited_at": null, "crossposted_at": null, - "published_at": "2023-08-29T07:34:01Z", - "last_comment_at": "2023-08-29T07:34:01Z", + "published_at": "2023-08-31T16:14:06Z", + "last_comment_at": "2023-08-31T16:14:06Z", "reading_time_minutes": 1, "tag_list": ["javascript", "html", "discuss"], "tags": "javascript, html, discuss", "user": { - "name": "Colleen \"Ruthie\" \\:/ Spinka", + "name": "Logan \"Ginger\" \\:/ Tromp", "username": "username8", "twitter_username": "twitter8", "github_username": "github8", - "user_id": 11421, + "user_id": 8, "website_url": null, - "profile_image": "/uploads/user/profile_image/11421/3ab2cc87-2bec-4fc7-8957-8db038b7bea2.jpeg", - "profile_image_90": "/uploads/user/profile_image/11421/3ab2cc87-2bec-4fc7-8957-8db038b7bea2.jpeg" + "profile_image": "/uploads/user/profile_image/8/75000ec0-f568-44da-9d7f-53d196cd9dcc.jpeg", + "profile_image_90": "/uploads/user/profile_image/8/75000ec0-f568-44da-9d7f-53d196cd9dcc.jpeg" }, "flare_tag": { "name": "discuss", @@ -352,38 +352,38 @@ }, { "type_of": "article", - "id": 5077, - "title": "A Darkling Plain5", - "description": "Pork belly kogi seitan wayfarers vinegar. Fanny pack vice artisan. Meh literally knausgaard organic...", - "readable_publish_date": "Aug 29", - "slug": "a-darkling-plain5-312b", - "path": "/username7/a-darkling-plain5-312b", - "url": "http://forem.test/username7/a-darkling-plain5-312b", + "id": 6, + "title": "The Heart Is Deceitful Above All Things5", + "description": "Pabst heirloom umami. Narwhal trust fund pabst thundercats leggings paleo. Artisan raw denim health...", + "readable_publish_date": "Aug 31", + "slug": "the-heart-is-deceitful-above-all-things5-4ab7", + "path": "/username7/the-heart-is-deceitful-above-all-things5-4ab7", + "url": "http://forem.test/username7/the-heart-is-deceitful-above-all-things5-4ab7", "comments_count": 0, "public_reactions_count": 0, "collection_id": null, - "published_timestamp": "2023-08-29T07:34:01Z", + "published_timestamp": "2023-08-31T16:14:06Z", "positive_reactions_count": 0, - "cover_image": "http://forem.test/assets/32-543e7c7f0a939e829c37aab48d705350b855c887dc16dfab30fd9a0825c09291.png", - "social_image": "http://forem.test/assets/32-543e7c7f0a939e829c37aab48d705350b855c887dc16dfab30fd9a0825c09291.png", - "canonical_url": "http://forem.test/username7/a-darkling-plain5-312b", - "created_at": "2023-08-29T07:34:01Z", + "cover_image": "http://forem.test/assets/5-ae4b452d58aedebf5435dbbd1978ea4acacf8657e6bef44304a3fccde0dd04ea.png", + "social_image": "http://forem.test/assets/5-ae4b452d58aedebf5435dbbd1978ea4acacf8657e6bef44304a3fccde0dd04ea.png", + "canonical_url": "http://forem.test/username7/the-heart-is-deceitful-above-all-things5-4ab7", + "created_at": "2023-08-31T16:14:06Z", "edited_at": null, "crossposted_at": null, - "published_at": "2023-08-29T07:34:01Z", - "last_comment_at": "2023-08-29T07:34:01Z", + "published_at": "2023-08-31T16:14:06Z", + "last_comment_at": "2023-08-31T16:14:06Z", "reading_time_minutes": 1, "tag_list": ["javascript", "html", "discuss"], "tags": "javascript, html, discuss", "user": { - "name": "Desmond \"Winston\" \\:/ Von", + "name": "Faith \"Nathanael\" \\:/ Jenkins", "username": "username7", "twitter_username": "twitter7", "github_username": "github7", - "user_id": 11420, + "user_id": 7, "website_url": null, - "profile_image": "/uploads/user/profile_image/11420/bf3ed247-1bef-42fd-a4b6-52fefdb3931f.jpeg", - "profile_image_90": "/uploads/user/profile_image/11420/bf3ed247-1bef-42fd-a4b6-52fefdb3931f.jpeg" + "profile_image": "/uploads/user/profile_image/7/ed542112-be37-4932-85a9-5d1e990e7656.jpeg", + "profile_image_90": "/uploads/user/profile_image/7/ed542112-be37-4932-85a9-5d1e990e7656.jpeg" }, "flare_tag": { "name": "discuss", @@ -428,40 +428,40 @@ "application/json": { "example": { "type_of": "article", - "id": 5080, - "title": "Paths of Glory8", - "description": "Humblebrag wes anderson blog craft beer kickstarter twee selvage stumptown. Green juice ramps...", - "readable_publish_date": "Aug 29", - "slug": "paths-of-glory8-3ol4", - "path": "/username10/paths-of-glory8-3ol4", - "url": "http://forem.test/username10/paths-of-glory8-3ol4", + "id": 9, + "title": "Beneath the Bleeding8", + "description": "Schlitz chartreuse deep v selvage skateboard. Tousled hammock kogi crucifix farm-to-table selfies...", + "readable_publish_date": "Aug 31", + "slug": "beneath-the-bleeding8-4k30", + "path": "/username10/beneath-the-bleeding8-4k30", + "url": "http://forem.test/username10/beneath-the-bleeding8-4k30", "comments_count": 0, "public_reactions_count": 0, "collection_id": null, - "published_timestamp": "2023-08-29T07:34:01Z", + "published_timestamp": "2023-08-31T16:14:06Z", "positive_reactions_count": 0, - "cover_image": "http://forem.test/assets/1-613c6ba62b8bf11f61018f6da5140eaa03eadd4b2ae5ce640c955655808aafcc.png", - "social_image": "http://forem.test/assets/1-613c6ba62b8bf11f61018f6da5140eaa03eadd4b2ae5ce640c955655808aafcc.png", - "canonical_url": "http://forem.test/username10/paths-of-glory8-3ol4", - "created_at": "2023-08-29T07:34:01Z", + "cover_image": "http://forem.test/assets/17-c3d951980f63ed0823e9ba3e0324b187c8c7842f2e07dd3064978a070650a5ee.png", + "social_image": "http://forem.test/assets/17-c3d951980f63ed0823e9ba3e0324b187c8c7842f2e07dd3064978a070650a5ee.png", + "canonical_url": "http://forem.test/username10/beneath-the-bleeding8-4k30", + "created_at": "2023-08-31T16:14:06Z", "edited_at": null, "crossposted_at": null, - "published_at": "2023-08-29T07:34:01Z", - "last_comment_at": "2023-08-29T07:34:01Z", + "published_at": "2023-08-31T16:14:06Z", + "last_comment_at": "2023-08-31T16:14:06Z", "reading_time_minutes": 1, "tag_list": "discuss", "tags": ["discuss"], - "body_html": "

Humblebrag wes anderson blog craft beer kickstarter twee selvage stumptown. Green juice ramps truffaut pour-over pbr&b direct trade chambray.

\n\n

Chillwave etsy letterpress schlitz. Retro single-origin coffee paleo post-ironic park small batch quinoa pork belly.

\n\n", - "body_markdown": "---\ntitle: Paths of Glory8\npublished: true\ntags: discuss\ndate: \nseries: \ncanonical_url: \n\n---\n\nHumblebrag wes anderson blog craft beer kickstarter twee selvage stumptown. Green juice ramps truffaut pour-over pbr&b direct trade chambray.\n\n\nChillwave etsy letterpress schlitz. Retro single-origin coffee paleo post-ironic park small batch quinoa pork belly.\n\n", + "body_html": "

Schlitz chartreuse deep v selvage skateboard. Tousled hammock kogi crucifix farm-to-table selfies twee.

\n\n

Letterpress leggings craft beer cardigan trust fund schlitz.

\n\n", + "body_markdown": "---\ntitle: Beneath the Bleeding8\npublished: true\ntags: discuss\ndate: \nseries: \ncanonical_url: \n\n---\n\nSchlitz chartreuse deep v selvage skateboard. Tousled hammock kogi crucifix farm-to-table selfies twee.\n\n\nLetterpress leggings craft beer cardigan trust fund schlitz.\n\n", "user": { - "name": "Timmy \"Nancie\" \\:/ Durgan", + "name": "Mervin \"Zelda\" \\:/ Rogahn", "username": "username10", "twitter_username": "twitter10", "github_username": "github10", - "user_id": 11423, + "user_id": 10, "website_url": null, - "profile_image": "/uploads/user/profile_image/11423/462265d4-0f76-4ea6-9384-7f832133d7bf.jpeg", - "profile_image_90": "/uploads/user/profile_image/11423/462265d4-0f76-4ea6-9384-7f832133d7bf.jpeg" + "profile_image": "/uploads/user/profile_image/10/a1f12535-d889-41a6-8ea0-048255fc504f.jpeg", + "profile_image_90": "/uploads/user/profile_image/10/a1f12535-d889-41a6-8ea0-048255fc504f.jpeg" }, "flare_tag": { "name": "discuss", @@ -517,40 +517,40 @@ "application/json": { "example": { "type_of": "article", - "id": 5081, - "title": "The Golden Bowl9", - "description": "Skateboard kickstarter meh. Before they sold out keytar pitchfork. Fanny pack farm-to-table hella...", - "readable_publish_date": "Aug 29", - "slug": "the-golden-bowl9-3olb", - "path": "/username11/the-golden-bowl9-3olb", - "url": "http://forem.test/username11/the-golden-bowl9-3olb", + "id": 10, + "title": "Frequent Hearses9", + "description": "Taxidermy artisan sartorial. Kickstarter kinfolk viral normcore +1 butcher truffaut lomo. Keytar food...", + "readable_publish_date": "Aug 31", + "slug": "frequent-hearses9-3p8c", + "path": "/username11/frequent-hearses9-3p8c", + "url": "http://forem.test/username11/frequent-hearses9-3p8c", "comments_count": 0, "public_reactions_count": 0, "collection_id": null, - "published_timestamp": "2023-08-29T07:34:01Z", + "published_timestamp": "2023-08-31T16:14:06Z", "positive_reactions_count": 0, - "cover_image": "http://forem.test/assets/1-613c6ba62b8bf11f61018f6da5140eaa03eadd4b2ae5ce640c955655808aafcc.png", - "social_image": "http://forem.test/assets/1-613c6ba62b8bf11f61018f6da5140eaa03eadd4b2ae5ce640c955655808aafcc.png", - "canonical_url": "http://forem.test/username11/the-golden-bowl9-3olb", - "created_at": "2023-08-29T07:34:01Z", - "edited_at": "2023-08-29T07:34:01Z", + "cover_image": "http://forem.test/assets/25-b4bb206b62bee552880440f638594e41dcd649ed9bd821af2e8dfc671d1d6813.png", + "social_image": "http://forem.test/assets/25-b4bb206b62bee552880440f638594e41dcd649ed9bd821af2e8dfc671d1d6813.png", + "canonical_url": "http://forem.test/username11/frequent-hearses9-3p8c", + "created_at": "2023-08-31T16:14:06Z", + "edited_at": "2023-08-31T16:14:06Z", "crossposted_at": null, - "published_at": "2023-08-29T07:34:01Z", - "last_comment_at": "2023-08-29T07:34:01Z", + "published_at": "2023-08-31T16:14:06Z", + "last_comment_at": "2023-08-31T16:14:06Z", "reading_time_minutes": 1, "tag_list": "", "tags": [], "body_html": "

New body for the article

\n\n", "body_markdown": "**New** body for the article", "user": { - "name": "Carl \"Marni\" \\:/ Mraz", + "name": "Linda \"Ouida\" \\:/ Orn", "username": "username11", "twitter_username": "twitter11", "github_username": "github11", - "user_id": 11424, + "user_id": 11, "website_url": null, - "profile_image": "/uploads/user/profile_image/11424/29521865-d47d-4448-ae3f-a2e6c2b32b8c.jpeg", - "profile_image_90": "/uploads/user/profile_image/11424/29521865-d47d-4448-ae3f-a2e6c2b32b8c.jpeg" + "profile_image": "/uploads/user/profile_image/11/0a43175f-d7bf-4f53-b6fd-696b9c1fb4d7.jpeg", + "profile_image_90": "/uploads/user/profile_image/11/0a43175f-d7bf-4f53-b6fd-696b9c1fb4d7.jpeg" } } } @@ -633,40 +633,40 @@ "application/json": { "example": { "type_of": "article", - "id": 5084, - "title": "The Mirror Crack'd from Side to Side12", - "description": "Mlkshk crucifix readymade 3 wolf moon semiotics. Church-key roof park you probably haven't heard of...", - "readable_publish_date": "Aug 29", - "slug": "the-mirror-crackd-from-side-to-side12-26nd", - "path": "/username15/the-mirror-crackd-from-side-to-side12-26nd", - "url": "http://forem.test/username15/the-mirror-crackd-from-side-to-side12-26nd", + "id": 13, + "title": "A Confederacy of Dunces12", + "description": "Sustainable williamsburg polaroid vegan wes anderson tumblr leggings chillwave. Kitsch tumblr kinfolk...", + "readable_publish_date": "Aug 31", + "slug": "a-confederacy-of-dunces12-2m3l", + "path": "/username15/a-confederacy-of-dunces12-2m3l", + "url": "http://forem.test/username15/a-confederacy-of-dunces12-2m3l", "comments_count": 0, "public_reactions_count": 0, "collection_id": null, - "published_timestamp": "2023-08-29T07:34:01Z", + "published_timestamp": "2023-08-31T16:14:07Z", "positive_reactions_count": 0, - "cover_image": "http://forem.test/assets/5-ae4b452d58aedebf5435dbbd1978ea4acacf8657e6bef44304a3fccde0dd04ea.png", - "social_image": "http://forem.test/assets/5-ae4b452d58aedebf5435dbbd1978ea4acacf8657e6bef44304a3fccde0dd04ea.png", - "canonical_url": "http://forem.test/username15/the-mirror-crackd-from-side-to-side12-26nd", - "created_at": "2023-08-29T07:34:01Z", + "cover_image": "http://forem.test/assets/3-93b6b57b5a6115cffe5d63d29a22825eb9e65f647bfef57a88244bc2b98186f0.png", + "social_image": "http://forem.test/assets/3-93b6b57b5a6115cffe5d63d29a22825eb9e65f647bfef57a88244bc2b98186f0.png", + "canonical_url": "http://forem.test/username15/a-confederacy-of-dunces12-2m3l", + "created_at": "2023-08-31T16:14:07Z", "edited_at": null, "crossposted_at": null, - "published_at": "2023-08-29T07:34:01Z", - "last_comment_at": "2023-08-29T07:34:01Z", + "published_at": "2023-08-31T16:14:07Z", + "last_comment_at": "2023-08-31T16:14:07Z", "reading_time_minutes": 1, "tag_list": "discuss", "tags": ["discuss"], - "body_html": "

Mlkshk crucifix readymade 3 wolf moon semiotics. Church-key roof park you probably haven't heard of them cleanse locavore. Cronut hammock leggings thundercats polaroid.

\n\n

Park craft beer offal twee sustainable vinegar. Deep v yr aesthetic hella vinegar iphone sustainable.

\n\n", - "body_markdown": "---\ntitle: The Mirror Crack'd from Side to Side12\npublished: true\ntags: discuss\ndate: \nseries: \ncanonical_url: \n\n---\n\nMlkshk crucifix readymade 3 wolf moon semiotics. Church-key roof park you probably haven't heard of them cleanse locavore. Cronut hammock leggings thundercats polaroid.\n\n\nPark craft beer offal twee sustainable vinegar. Deep v yr aesthetic hella vinegar iphone sustainable.\n\n", + "body_html": "

Sustainable williamsburg polaroid vegan wes anderson tumblr leggings chillwave. Kitsch tumblr kinfolk beard venmo etsy. Polaroid wayfarers farm-to-table occupy mlkshk williamsburg letterpress flannel.

\n\n

Actually 90's kale chips vhs farm-to-table literally pop-up. Art party neutra gentrify paleo swag. Ennui retro 8-bit.

\n\n", + "body_markdown": "---\ntitle: A Confederacy of Dunces12\npublished: true\ntags: discuss\ndate: \nseries: \ncanonical_url: \n\n---\n\nSustainable williamsburg polaroid vegan wes anderson tumblr leggings chillwave. Kitsch tumblr kinfolk beard venmo etsy. Polaroid wayfarers farm-to-table occupy mlkshk williamsburg letterpress flannel.\n\n\nActually 90's kale chips vhs farm-to-table literally pop-up. Art party neutra gentrify paleo swag. Ennui retro 8-bit.\n\n", "user": { - "name": "Madonna \"Pablo\" \\:/ Schuster", + "name": "Joi \"Walton\" \\:/ Klocko", "username": "username15", "twitter_username": "twitter15", "github_username": "github15", - "user_id": 11428, + "user_id": 15, "website_url": null, - "profile_image": "/uploads/user/profile_image/11428/e6d6a287-6995-4783-975e-fffc261f86cf.jpeg", - "profile_image_90": "/uploads/user/profile_image/11428/e6d6a287-6995-4783-975e-fffc261f86cf.jpeg" + "profile_image": "/uploads/user/profile_image/15/1d474420-4a19-4d51-8434-f011180c6b70.jpeg", + "profile_image_90": "/uploads/user/profile_image/15/1d474420-4a19-4d51-8434-f011180c6b70.jpeg" }, "flare_tag": { "name": "discuss", @@ -946,17 +946,17 @@ "application/json": { "example": [ { - "id": 164, - "created_at": "2023-08-29T18:34:02.900+11:00", + "id": 2, + "created_at": "2023-08-31T09:14:08.377-07:00", "type_of": "manual", - "updated_at": "2023-08-29T18:34:02.900+11:00", + "updated_at": "2023-08-31T09:14:08.377-07:00", "user_count": 1 }, { - "id": 163, - "created_at": "2023-08-29T18:34:02.758+11:00", + "id": 1, + "created_at": "2023-08-31T09:14:08.318-07:00", "type_of": "manual", - "updated_at": "2023-08-29T18:34:02.758+11:00", + "updated_at": "2023-08-31T09:14:08.318-07:00", "user_count": 3 } ], @@ -993,10 +993,10 @@ "content": { "application/json": { "example": { - "id": 165, - "created_at": "2023-08-29T18:34:03.195+11:00", + "id": 3, + "created_at": "2023-08-31T09:14:08.631-07:00", "type_of": "manual", - "updated_at": "2023-08-29T18:34:03.195+11:00" + "updated_at": "2023-08-31T09:14:08.631-07:00" } } } @@ -1039,10 +1039,10 @@ "content": { "application/json": { "example": { - "id": 166, - "created_at": "2023-08-29T18:34:03.372+11:00", + "id": 4, + "created_at": "2023-08-31T09:14:08.795-07:00", "type_of": "manual", - "updated_at": "2023-08-29T18:34:03.372+11:00", + "updated_at": "2023-08-31T09:14:08.795-07:00", "user_count": 3 }, "schema": { @@ -1101,10 +1101,10 @@ "content": { "application/json": { "example": { - "id": 170, - "created_at": "2023-08-29T18:34:03.697+11:00", + "id": 8, + "created_at": "2023-08-31T09:14:09.117-07:00", "type_of": "manual", - "updated_at": "2023-08-29T18:34:03.697+11:00" + "updated_at": "2023-08-31T09:14:09.117-07:00" } } } @@ -1173,42 +1173,42 @@ "example": [ { "type_of": "user", - "id": 11468, + "id": 55, "username": "username55", - "name": "Trenton \"Basil\" \\:/ Kuphal", + "name": "Makeda \"Casey\" \\:/ Ryan", "twitter_username": "twitter55", "github_username": "github55", "summary": null, "location": null, "website_url": null, - "joined_at": "Aug 29, 2023", - "profile_image": "/uploads/user/profile_image/11468/bdb2fa60-1db0-464e-a417-95d8530611df.jpeg" + "joined_at": "Aug 31, 2023", + "profile_image": "/uploads/user/profile_image/55/420077e0-ad8f-4ce6-94c4-62527657fbd7.jpeg" }, { "type_of": "user", - "id": 11469, + "id": 56, "username": "username56", - "name": "Judson \"Gregorio\" \\:/ Vandervort", + "name": "Kathrine \"Jordan\" \\:/ Jacobson", "twitter_username": "twitter56", "github_username": "github56", "summary": null, "location": null, "website_url": null, - "joined_at": "Aug 29, 2023", - "profile_image": "/uploads/user/profile_image/11469/7c3764f4-a8f6-423f-b356-bb712dab7310.jpeg" + "joined_at": "Aug 31, 2023", + "profile_image": "/uploads/user/profile_image/56/3183a414-75af-4498-ab8a-7f751e7e69f1.jpeg" }, { "type_of": "user", - "id": 11470, + "id": 57, "username": "username57", - "name": "Melanie \"Season\" \\:/ Leannon", + "name": "Lemuel \"Lindsey\" \\:/ Bayer", "twitter_username": "twitter57", "github_username": "github57", "summary": null, "location": null, "website_url": null, - "joined_at": "Aug 29, 2023", - "profile_image": "/uploads/user/profile_image/11470/3b01a093-abcd-47a4-a4bb-4cfb43046b4b.jpeg" + "joined_at": "Aug 31, 2023", + "profile_image": "/uploads/user/profile_image/57/515f8bfe-f3a1-4fb9-b425-ea10c7af96d4.jpeg" } ], "schema": { @@ -1269,7 +1269,7 @@ "content": { "application/json": { "example": { - "succeeded": [11476, 11477, 11478], + "succeeded": [63, 64, 65], "failed": [] } } @@ -1344,7 +1344,7 @@ "content": { "application/json": { "example": { - "succeeded": [11495, 11496, 11497], + "succeeded": [82, 83, 84], "failed": [] } } @@ -1439,13 +1439,13 @@ "content": { "application/json": { "example": { - "id": 248, + "id": 2, "approved": true, "audience_segment_id": null, "body_markdown": "# Hi, this is ad\nYep, it's an ad", "cached_tag_list": "", "clicks_count": 0, - "created_at": "2023-08-29T18:34:06.064+11:00", + "created_at": "2023-08-31T09:14:11.245-07:00", "creator_id": null, "display_to": "all", "exclude_article_ids": "", @@ -1454,11 +1454,12 @@ "organization_id": null, "placement_area": "post_comments", "priority": false, + "weight": 1.0, "processed_html": "

Hi, this is ad

Yep, it's an ad

", "published": true, "success_rate": 0.0, "type_of": "in_house", - "updated_at": "2023-08-29T18:34:06.064+11:00", + "updated_at": "2023-08-31T09:14:11.245-07:00", "audience_segment_type": null, "tag_list": "", "target_geolocations": ["US-WA", "CA-BC"] @@ -1534,26 +1535,27 @@ "content": { "application/json": { "example": { - "id": 249, + "id": 3, "approved": false, "audience_segment_id": null, "body_markdown": "Hello _hey_ Hey hey 2", "cached_tag_list": "", "clicks_count": 0, - "created_at": "2023-08-29T18:34:06.239+11:00", + "created_at": "2023-08-31T09:14:11.405-07:00", "creator_id": null, "display_to": "all", "exclude_article_ids": "", "impressions_count": 0, - "name": "Billboard 249", - "organization_id": 1466, + "name": "Billboard 3", + "organization_id": 6, "placement_area": "sidebar_left", "priority": false, + "weight": 1.0, "processed_html": "

Hello hey Hey hey 2

", "published": false, "success_rate": 0.0, "type_of": "in_house", - "updated_at": "2023-08-29T18:34:06.241+11:00", + "updated_at": "2023-08-31T09:14:11.407-07:00", "audience_segment_type": null, "tag_list": "", "target_geolocations": [] @@ -1613,22 +1615,23 @@ "body_markdown": "Hello _hey_ Hey hey 3", "creator_id": null, "display_to": "all", - "name": "Billboard 250", - "organization_id": 1467, + "name": "Billboard 4", + "organization_id": 7, "placement_area": "sidebar_left", "published": false, "type_of": "in_house", "exclude_article_ids": "", + "weight": 1.0, "audience_segment_id": null, "priority": false, "cached_tag_list": "", - "id": 250, + "id": 4, "clicks_count": 0, - "created_at": "2023-08-29T18:34:06.431+11:00", + "created_at": "2023-08-31T09:14:11.601-07:00", "impressions_count": 0, "processed_html": "

Hello hey Hey hey 3

", "success_rate": 0.0, - "updated_at": "2023-08-29T18:34:06.434+11:00", + "updated_at": "2023-08-31T09:14:11.603-07:00", "audience_segment_type": null, "tag_list": "", "target_geolocations": [] @@ -1764,18 +1767,18 @@ "example": [ { "type_of": "comment", - "id_code": "213", - "created_at": "2023-08-29T07:34:06Z", - "body_html": "

90's bitters viral umami banh mi tofu vinegar before they sold out.

\n\n", + "id_code": "1", + "created_at": "2023-08-31T16:14:12Z", + "body_html": "

Hashtag 3 wolf moon vice kale chips pour-over shoreditch. Selvage biodiesel drinking pork belly roof. Yr humblebrag tattooed deep v bespoke narwhal semiotics.

\n\n", "user": { - "name": "Malik \"Parker\" \\:/ McGlynn", + "name": "Vicente \"Jannie\" \\:/ Murray", "username": "username121", "twitter_username": "twitter121", "github_username": "github121", - "user_id": 11534, + "user_id": 121, "website_url": null, - "profile_image": "/uploads/user/profile_image/11534/670e8a41-53c4-4e6e-8421-661602ff10e1.jpeg", - "profile_image_90": "/uploads/user/profile_image/11534/670e8a41-53c4-4e6e-8421-661602ff10e1.jpeg" + "profile_image": "/uploads/user/profile_image/121/f2c2c08f-4cf7-4386-bd9c-6c91e7fd8743.jpeg", + "profile_image_90": "/uploads/user/profile_image/121/f2c2c08f-4cf7-4386-bd9c-6c91e7fd8743.jpeg" }, "children": [] } @@ -1829,18 +1832,18 @@ "application/json": { "example": { "type_of": "comment", - "id_code": "215", - "created_at": "2023-08-29T07:34:07Z", - "body_html": "

Ennui microdosing chicharrones trust fund pinterest lumbersexual yuccie meditation.

\n\n", + "id_code": "3", + "created_at": "2023-08-31T16:14:12Z", + "body_html": "

Cliche readymade neutra microdosing seitan typewriter mlkshk. Trust fund keffiyeh meh everyday ennui asymmetrical bicycle rights 90's.

\n\n", "user": { - "name": "Damon \"Karl\" \\:/ Larson", + "name": "Beau \"Laureen\" \\:/ Oberbrunner", "username": "username125", "twitter_username": "twitter125", "github_username": "github125", - "user_id": 11538, + "user_id": 125, "website_url": null, - "profile_image": "/uploads/user/profile_image/11538/16a3dab7-c8ab-4685-9b8b-e04b92b04b0c.jpeg", - "profile_image_90": "/uploads/user/profile_image/11538/16a3dab7-c8ab-4685-9b8b-e04b92b04b0c.jpeg" + "profile_image": "/uploads/user/profile_image/125/4e16715d-7a3c-4c01-a181-ec350d4dd2f4.jpeg", + "profile_image_90": "/uploads/user/profile_image/125/4e16715d-7a3c-4c01-a181-ec350d4dd2f4.jpeg" }, "children": [] } @@ -1885,13 +1888,13 @@ "application/json": { "example": [ { - "id": 9561, - "name": "tag4", + "id": 46, + "name": "tag3", "points": 1.0 }, { - "id": 9560, - "name": "tag3", + "id": 47, + "name": "tag4", "points": 1.0 } ], @@ -1939,23 +1942,23 @@ "example": [ { "type_of": "user_follower", - "id": 373, - "created_at": "2023-08-29T07:34:07Z", - "user_id": 11545, - "name": "Fabiola \"Kelsey\" \\:/ Leuschke", + "id": 6, + "created_at": "2023-08-31T16:14:12Z", + "user_id": 132, + "name": "Arnoldo \"Dan\" \\:/ Simonis", "path": "/username132", "username": "username132", - "profile_image": "/uploads/user/profile_image/11545/3506991a-9fff-4813-8675-4642a0d1478d.jpeg" + "profile_image": "/uploads/user/profile_image/132/2c8fc42d-49b0-4c0e-a75f-15ccb23e051a.jpeg" }, { "type_of": "user_follower", - "id": 372, - "created_at": "2023-08-29T07:34:07Z", - "user_id": 11543, - "name": "Stacey \"Regena\" \\:/ O'Connell", + "id": 5, + "created_at": "2023-08-31T16:14:12Z", + "user_id": 130, + "name": "Corey \"Orville\" \\:/ Schneider", "path": "/username130", "username": "username130", - "profile_image": "/uploads/user/profile_image/11543/0350291b-c6f1-44a4-af47-f085bc50ef09.jpeg" + "profile_image": "/uploads/user/profile_image/130/8a5261a9-c00a-4c2b-8109-dc6bd5a3955a.jpeg" } ], "schema": { @@ -2033,19 +2036,19 @@ "application/json": { "example": { "type_of": "organization", - "id": 1472, + "id": 12, "username": "org12", - "name": "McCullough-Yundt", - "summary": "Lomo pinterest taxidermy. Lomo street messenger bag pug brunch.", - "twitter_username": "org3709", - "github_username": "org7148", - "url": "http://rice.co/samira.abernathy", + "name": "Durgan-Mante", + "summary": "Drinking carry fixie kitsch. Gluten-free next level phlogiston typewriter you probably haven't heard of them neutra intelligentsia forage. Irony craft ", + "twitter_username": "org7205", + "github_username": "org6367", + "url": "http://koelpin.biz/kristal.block", "location": null, "tech_stack": null, "tag_line": null, "story": null, - "joined_at": "2023-08-29T07:34:07Z", - "profile_image": "/uploads/organization/profile_image/1472/aadae4cd-3653-424a-b762-e74a794b5f69.png" + "joined_at": "2023-08-31T16:14:12Z", + "profile_image": "/uploads/organization/profile_image/12/fb2030d2-b14a-473d-8e6a-c6803ea3cb24.png" }, "schema": { "type": "object", @@ -2101,29 +2104,29 @@ "example": [ { "type_of": "user", - "id": 11555, + "id": 142, "username": "username142", - "name": "Sindy \"Nathaniel\" \\:/ Kemmer", + "name": "Jerrold \"Jeanene\" \\:/ Parisian", "twitter_username": "twitter142", "github_username": "github142", "summary": null, "location": null, "website_url": null, - "joined_at": "Aug 29, 2023", - "profile_image": "/uploads/user/profile_image/11555/38d3c39f-9195-42ae-9240-95b71471b848.jpeg" + "joined_at": "Aug 31, 2023", + "profile_image": "/uploads/user/profile_image/142/80de7b82-d28d-444c-a8b1-26da740599bf.jpeg" }, { "type_of": "user", - "id": 11556, + "id": 143, "username": "username143", - "name": "Zane \"Elliot\" \\:/ Stiedemann", + "name": "Quinn \"Alexis\" \\:/ Pfeffer", "twitter_username": "twitter143", "github_username": "github143", "summary": null, "location": null, "website_url": null, - "joined_at": "Aug 29, 2023", - "profile_image": "/uploads/user/profile_image/11556/036085d6-0966-45fc-8b2d-70e16e8dc2dc.jpeg" + "joined_at": "Aug 31, 2023", + "profile_image": "/uploads/user/profile_image/143/c5f4cc9c-7773-4e39-857f-652a38298d5f.jpeg" } ], "schema": { @@ -2180,45 +2183,45 @@ "example": [ { "type_of": "article", - "id": 5096, - "title": "This Lime Tree Bower24", - "description": "Mustache selfies narwhal tumblr pour-over. You probably haven't heard of them biodiesel lumbersexual...", - "readable_publish_date": "Aug 29", - "slug": "this-lime-tree-bower24-3h0i", - "path": "/org16/this-lime-tree-bower24-3h0i", - "url": "http://forem.test/org16/this-lime-tree-bower24-3h0i", + "id": 25, + "title": "The Proper Study24", + "description": "Twee sriracha lo-fi vinyl direct trade art party thundercats. Shabby chic vinyl flexitarian bespoke...", + "readable_publish_date": "Aug 31", + "slug": "the-proper-study24-507o", + "path": "/org16/the-proper-study24-507o", + "url": "http://forem.test/org16/the-proper-study24-507o", "comments_count": 0, "public_reactions_count": 0, "collection_id": null, - "published_timestamp": "2023-08-29T07:34:08Z", + "published_timestamp": "2023-08-31T16:14:13Z", "positive_reactions_count": 0, - "cover_image": "http://forem.test/assets/31-2a89a91581ce9080fed8d62dd9c70a3fd5f92472da8c023e7b29256e04811b2e.png", - "social_image": "http://forem.test/assets/31-2a89a91581ce9080fed8d62dd9c70a3fd5f92472da8c023e7b29256e04811b2e.png", - "canonical_url": "http://forem.test/org16/this-lime-tree-bower24-3h0i", - "created_at": "2023-08-29T07:34:08Z", + "cover_image": "http://forem.test/assets/25-b4bb206b62bee552880440f638594e41dcd649ed9bd821af2e8dfc671d1d6813.png", + "social_image": "http://forem.test/assets/25-b4bb206b62bee552880440f638594e41dcd649ed9bd821af2e8dfc671d1d6813.png", + "canonical_url": "http://forem.test/org16/the-proper-study24-507o", + "created_at": "2023-08-31T16:14:13Z", "edited_at": null, "crossposted_at": null, - "published_at": "2023-08-29T07:34:08Z", - "last_comment_at": "2023-08-29T07:34:08Z", + "published_at": "2023-08-31T16:14:13Z", + "last_comment_at": "2023-08-31T16:14:13Z", "reading_time_minutes": 1, "tag_list": ["javascript", "html", "discuss"], "tags": "javascript, html, discuss", "user": { - "name": "Christopher \"Logan\" \\:/ O'Hara", + "name": "Kami \"Jerrold\" \\:/ Beahan", "username": "username150", "twitter_username": "twitter150", "github_username": "github150", - "user_id": 11563, + "user_id": 150, "website_url": null, - "profile_image": "/uploads/user/profile_image/11563/971ac209-ae43-4d47-b67a-ef39ae0f1310.jpeg", - "profile_image_90": "/uploads/user/profile_image/11563/971ac209-ae43-4d47-b67a-ef39ae0f1310.jpeg" + "profile_image": "/uploads/user/profile_image/150/be08afc9-5183-4b4a-8821-519ff3bbfec9.jpeg", + "profile_image_90": "/uploads/user/profile_image/150/be08afc9-5183-4b4a-8821-519ff3bbfec9.jpeg" }, "organization": { - "name": "Berge, Medhurst and Dietrich", + "name": "Ledner-Turcotte", "username": "org16", "slug": "org16", - "profile_image": "/uploads/organization/profile_image/1476/8c1ec2f7-e1db-4169-8f85-fb77a5866ace.png", - "profile_image_90": "/uploads/organization/profile_image/1476/8c1ec2f7-e1db-4169-8f85-fb77a5866ace.png" + "profile_image": "/uploads/organization/profile_image/16/d3c01a7b-a340-4f88-9328-8013205f57e4.png", + "profile_image_90": "/uploads/organization/profile_image/16/d3c01a7b-a340-4f88-9328-8013205f57e4.png" } } ], @@ -2267,15 +2270,15 @@ "application/json": { "example": [ { - "id": 1478, - "name": "Wunsch Group", + "id": 18, + "name": "Kiehn, Robel and Hintz", "profile_image": { - "url": "/uploads/organization/profile_image/1478/0746013b-125c-4431-ab06-6d57e0e2b03d.png" + "url": "/uploads/organization/profile_image/18/2fbf8c19-9700-4ceb-b9cc-98865663f471.png" }, "slug": "org18", - "summary": "Cornhole pop-up thundercats flexitarian you probably haven't heard of them pickled. Godard pour-over pitchfork lomo. Pork belly pinterest hammock tousl", + "summary": "Seitan knausgaard keytar shabby chic. Cornhole 8-bit mumblecore pitchfork aesthetic. Keytar skateboard helvetica fanny pack neutra fashion axe park.", "tag_line": null, - "url": "http://kshlerin.net/shaun.kuvalis" + "url": "http://hane-klocko.info/pam_hills" } ], "schema": { @@ -2301,7 +2304,7 @@ "content": { "application/json": { "example": { - "id": 1481, + "id": 21, "name": "New Test Org", "profile_image": "uploads/organization/profile_image/1/400x400.jpg", "slug": "org10001", @@ -2362,19 +2365,19 @@ "application/json": { "example": { "type_of": "organization", - "id": 1479, + "id": 19, "username": "org19", - "name": "Smith-Hintz", - "summary": "Kinfolk sriracha ugh master tofu phlogiston chillwave. Yuccie shabby chic yr deep v plaid viral selvage. Poutine before they sold out literally fixie s", - "twitter_username": "org3768", - "github_username": "org2242", - "url": "http://wunsch.com/dalton", + "name": "McGlynn-Schaefer", + "summary": "Fashion axe 3 wolf moon tacos. Art party shoreditch actually +1 lomo deep v xoxo yolo. Shabby chic cold-pressed biodiesel migas chia skateboard polaroi", + "twitter_username": "org4517", + "github_username": "org1008", + "url": "http://ondricka.io/sharee_streich", "location": null, "tech_stack": null, "tag_line": null, "story": null, - "joined_at": "2023-08-29T07:34:09Z", - "profile_image": "/uploads/organization/profile_image/1479/4451b281-2f90-47a6-874c-d7bbc6be4d45.png" + "joined_at": "2023-08-31T16:14:13Z", + "profile_image": "/uploads/organization/profile_image/19/1caad85a-3d0c-4de0-a1c0-56eaf88a41e4.png" }, "schema": { "type": "object", @@ -2422,13 +2425,13 @@ "content": { "application/json": { "example": { - "id": 1482, - "name": "Leuschke LLC", - "profile_image": "/uploads/organization/profile_image/1482/b49ca181-1c1a-4a0b-bbd9-3efb99aab7ba.png", + "id": 22, + "name": "Langosh-Smitham", + "profile_image": "/uploads/organization/profile_image/22/e0dcf74d-eb09-432d-9343-20122f5a53aa.png", "slug": "org21", "summary": "An updated summary for the organization.", "tag_line": null, - "url": "http://klein.co/shannon_gutmann" + "url": "http://hegmann-walsh.biz/danilo" } } } @@ -2501,7 +2504,7 @@ "content": { "application/json": { "example": { - "message": "deletion scheduled for organization with ID 1486", + "message": "deletion scheduled for organization with ID 26", "status": 200 } } @@ -2534,16 +2537,16 @@ "application/json": { "example": [ { - "id": 83, - "title": "Consider the Lilies", - "slug": "thank-doctor", - "description": "Quam a neque ad.", + "id": 1, + "title": "Beyond the Mexique Bay", + "slug": "authority_polish", + "description": "Atque odio est placeat.", "is_top_level_path": false, "landing_page": false, "body_html": null, "body_json": null, - "body_markdown": "Libero vel ut assumenda.", - "processed_html": "

Libero vel ut assumenda.

\n\n", + "body_markdown": "Sapiente dolores sint in.", + "processed_html": "

Sapiente dolores sint in.

\n\n", "social_image": { "url": null }, @@ -2572,7 +2575,7 @@ "content": { "application/json": { "example": { - "id": 85, + "id": 3, "title": "Example Page", "slug": "example1", "description": "a new page", @@ -2699,16 +2702,16 @@ "content": { "application/json": { "example": { - "id": 88, - "title": "Beneath the Bleeding", - "slug": "corn_conglomerate", - "description": "Rerum vel nisi neque.", + "id": 6, + "title": "Of Human Bondage", + "slug": "polish_highway", + "description": "Et provident fugit rerum.", "is_top_level_path": false, "landing_page": false, "body_html": null, "body_json": null, - "body_markdown": "Nostrum ipsam nobis et.", - "processed_html": "

Nostrum ipsam nobis et.

\n\n", + "body_markdown": "Quibusdam fugit ullam nesciunt.", + "processed_html": "

Quibusdam fugit ullam nesciunt.

\n\n", "social_image": { "url": null }, @@ -2746,16 +2749,16 @@ "content": { "application/json": { "example": { - "id": 89, + "id": 7, "title": "New Title", - "slug": "relationship_minister", - "description": "Itaque cupiditate earum saepe.", + "slug": "theorist_whole", + "description": "Exercitationem libero recusandae suscipit.", "is_top_level_path": false, "landing_page": false, "body_html": null, "body_json": null, - "body_markdown": "Dolor quo enim quae.", - "processed_html": "

Dolor quo enim quae.

\n\n", + "body_markdown": "Iure omnis eveniet consequatur.", + "processed_html": "

Iure omnis eveniet consequatur.

\n\n", "social_image": { "url": null }, @@ -2783,16 +2786,16 @@ "content": { "application/json": { "example": { - "id": 91, - "title": "Recalled to Life", - "slug": "guess_academy", - "description": "Optio reprehenderit illum dolorum.", + "id": 9, + "title": "The Man Within", + "slug": "relationship_smile", + "description": "Dolorem in nesciunt neque.", "is_top_level_path": false, "landing_page": false, "body_html": null, "body_json": null, - "body_markdown": "Ut consequatur et consequuntur.", - "processed_html": "

Minima sed beatae qui.

\n\n", + "body_markdown": "Ea ut assumenda non.", + "processed_html": "

Omnis velit in neque.

\n\n", "social_image": { "url": null }, @@ -2836,16 +2839,16 @@ "content": { "application/json": { "example": { - "id": 92, - "title": "The Glory and the Dream", - "slug": "design-freckle", - "description": "Autem sit est qui.", + "id": 10, + "title": "Of Mice and Men", + "slug": "strict-perception", + "description": "Nisi ut id sed.", "is_top_level_path": false, "landing_page": false, "body_html": null, "body_json": null, - "body_markdown": "Et necessitatibus ipsam qui.", - "processed_html": "

Et necessitatibus ipsam qui.

\n\n", + "body_markdown": "Sunt rem ut non.", + "processed_html": "

Sunt rem ut non.

\n\n", "social_image": { "url": null }, @@ -2921,14 +2924,14 @@ { "type_of": "podcast_episodes", "class_name": "PodcastEpisode", - "id": 250, + "id": 2, "path": "/codenewbie/slug-2", - "title": "24", - "image_url": "/uploads/podcast/image/342/af80bcf8-88ee-41ff-ba9c-a6a8590eca51.jpeg", + "title": "22", + "image_url": "/uploads/podcast/image/2/1980fcab-bb04-411e-88ea-a212d0c4034d.jpeg", "podcast": { - "title": "Shakespeare Oatmeal", + "title": "HopSlam Ale", "slug": "codenewbie", - "image_url": "/uploads/podcast/image/342/af80bcf8-88ee-41ff-ba9c-a6a8590eca51.jpeg" + "image_url": "/uploads/podcast/image/2/1980fcab-bb04-411e-88ea-a212d0c4034d.jpeg" } } ], @@ -2981,8 +2984,8 @@ "example": { "type_of": "profile_image", "image_of": "user", - "profile_image": "/uploads/user/profile_image/11587/201e7010-3f67-4e40-a3d3-4f683f77cbc4.jpeg", - "profile_image_90": "/uploads/user/profile_image/11587/201e7010-3f67-4e40-a3d3-4f683f77cbc4.jpeg" + "profile_image": "/uploads/user/profile_image/174/fd9c5c0a-cc51-4a92-aa48-0175a0a8cc22.jpeg", + "profile_image_90": "/uploads/user/profile_image/174/fd9c5c0a-cc51-4a92-aa48-0175a0a8cc22.jpeg" }, "schema": { "type": "object", @@ -3055,8 +3058,8 @@ "example": { "result": "create", "category": "like", - "id": 846, - "reactable_id": 5098, + "id": 1, + "reactable_id": 27, "reactable_type": "Article" } } @@ -3124,8 +3127,8 @@ "example": { "result": "none", "category": "like", - "id": 848, - "reactable_id": 5100, + "id": 3, + "reactable_id": 29, "reactable_type": "Article" } } @@ -3210,20 +3213,20 @@ "application/json": { "example": [ { - "id": 9592, - "name": "tag5", + "id": 80, + "name": "tag7", "bg_color_hex": null, "text_color_hex": null }, { - "id": 9593, + "id": 79, "name": "tag6", "bg_color_hex": null, "text_color_hex": null }, { - "id": 9594, - "name": "tag7", + "id": 78, + "name": "tag5", "bg_color_hex": null, "text_color_hex": null } @@ -3253,16 +3256,16 @@ "application/json": { "example": { "type_of": "user", - "id": 11599, + "id": 186, "username": "username186", - "name": "Dierdre \"Berry\" \\:/ Dietrich", + "name": "Ira \"Guadalupe\" \\:/ Pacocha", "twitter_username": "twitter186", "github_username": "github186", "summary": null, "location": null, "website_url": null, - "joined_at": "Aug 29, 2023", - "profile_image": "/uploads/user/profile_image/11599/a9d4bd96-e7d2-4e3f-a076-6f2cc7623170.jpeg" + "joined_at": "Aug 31, 2023", + "profile_image": "/uploads/user/profile_image/186/c6c197c2-ee86-4078-aff5-fc602016f8d8.jpeg" }, "schema": { "type": "object", @@ -3486,28 +3489,28 @@ "example": [ { "type_of": "video_article", - "id": 5102, - "path": "/username205/clouds-of-witness30-3f3c", + "id": 31, + "path": "/username205/jacob-have-i-loved30-3lh3", "cloudinary_video_url": "https://dw71fyauz7yz9.cloudfront.net/video-upload__1e42eb0bab4abb3c63baeb5e8bdfe69f/thumbs-video-upload__1e42eb0bab4abb3c63baeb5e8bdfe69f-00001.png", - "title": "Clouds of Witness30", - "user_id": 11619, + "title": "Jacob Have I Loved30", + "user_id": 206, "video_duration_in_minutes": "00:00", "video_source_url": "https://dw71fyauz7yz9.cloudfront.net/video-upload__1e42eb0bab4abb3c63baeb5e8bdfe69f/video-upload__1e42eb0bab4abb3c63baeb5e8bdfe69f.m3u8", "user": { - "name": "Walker \"Hugo\" \\:/ Gerhold" + "name": "Cyrus \"Enrique\" \\:/ Hilpert" } }, { "type_of": "video_article", - "id": 5103, - "path": "/username206/from-here-to-eternity31-4kcn", + "id": 32, + "path": "/username206/if-i-forget-thee-jerusalem31-1nfn", "cloudinary_video_url": "https://dw71fyauz7yz9.cloudfront.net/video-upload__1e42eb0bab4abb3c63baeb5e8bdfe69f/thumbs-video-upload__1e42eb0bab4abb3c63baeb5e8bdfe69f-00001.png", - "title": "From Here to Eternity31", - "user_id": 11620, + "title": "If I Forget Thee Jerusalem31", + "user_id": 207, "video_duration_in_minutes": "00:00", "video_source_url": "https://dw71fyauz7yz9.cloudfront.net/video-upload__1e42eb0bab4abb3c63baeb5e8bdfe69f/video-upload__1e42eb0bab4abb3c63baeb5e8bdfe69f.m3u8", "user": { - "name": "Coretta \"Fredricka\" \\:/ Dietrich" + "name": "Dara \"Alaina\" \\:/ Legros" } } ],