basecamp-sdk 0.31.0 → 0.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00acc309383e2d8873cb562767c706215ebaa1e7607c2003facd9db555754030
4
- data.tar.gz: a8c6bd82375b23d1db11a91eaabb13f0853114de34bd373986d3f35303535b61
3
+ metadata.gz: 6964f730d2e803598d2772252292e4b7ace32af1edc6ebf781754b8850a4a3d9
4
+ data.tar.gz: 165f62d720aa119678defdbbe985181be1a404250f326765c0c8bf4d3fd52460
5
5
  SHA512:
6
- metadata.gz: 460bdbc512f82b773743175c50ea78c62b497bd090d196f71a07fc655710715ccfee47a0abddfafb62c6d5e6e9e9d5846657473cc1f99391971b04d9a4a2691f
7
- data.tar.gz: 84b2645cf180a60746fae78a80c297e061322d2ae78b7ef3ba45e242ad39613e762db6dcbe8df5e57701c6388ff5e9d098a8576ca3e671937f2c2e53cf24fda7
6
+ metadata.gz: df76fda291281f47a8ce052752ee7e2b7cdd0e8ba60b8415ce4b26a3649149b069dcb1f38b4648bfe4ad96f01c1dd9623b2e11c9bb41e8ddc846d596ffb806a8
7
+ data.tar.gz: 49d6c36399db556e74ad359cd68a215b67c5115c6232ec82bd11a1e23a3b05220681e110f54d40d4dfe1b78a3d9b43738e872f0a0f9859bc3a85088c3f0c15bf
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://basecamp.com/schemas/sdk-metadata.json",
3
3
  "version": "1.0.0",
4
- "generated": "2026-10-27T22:05:31Z",
4
+ "generated": "2026-10-28T05:27:32Z",
5
5
  "operations": {
6
6
  "GetAccount": {
7
7
  "retry": {
@@ -3613,6 +3613,33 @@
3613
3613
  "natural": true
3614
3614
  }
3615
3615
  },
3616
+ "ListHillChartVersions": {
3617
+ "retry": {
3618
+ "maxAttempts": 3,
3619
+ "baseDelayMs": 1000,
3620
+ "backoff": "exponential",
3621
+ "retryOn": [
3622
+ 429,
3623
+ 503
3624
+ ]
3625
+ },
3626
+ "pagination": {
3627
+ "style": "link",
3628
+ "totalCountHeader": "X-Total-Count",
3629
+ "maxPageSize": 50
3630
+ }
3631
+ },
3632
+ "GetHillChartVersion": {
3633
+ "retry": {
3634
+ "maxAttempts": 3,
3635
+ "baseDelayMs": 1000,
3636
+ "backoff": "exponential",
3637
+ "retryOn": [
3638
+ 429,
3639
+ 503
3640
+ ]
3641
+ }
3642
+ },
3616
3643
  "ListTodolists": {
3617
3644
  "retry": {
3618
3645
  "maxAttempts": 3,
@@ -4217,6 +4244,9 @@
4217
4244
  "GetGoogleDocument": [
4218
4245
  "creator"
4219
4246
  ],
4247
+ "GetHillChartVersion": [
4248
+ "creator"
4249
+ ],
4220
4250
  "GetInbox": [
4221
4251
  "creator"
4222
4252
  ],
@@ -4453,6 +4483,9 @@
4453
4483
  "ListGauges": [
4454
4484
  "[].creator"
4455
4485
  ],
4486
+ "ListHillChartVersions": [
4487
+ "[].creator"
4488
+ ],
4456
4489
  "ListMessages": [
4457
4490
  "[].creator"
4458
4491
  ],
@@ -26,6 +26,28 @@ module Basecamp
26
26
  http_put("/todosets/#{todoset_id}/hills/settings.json", body: compact_params(tracked: tracked, untracked: untracked)).json(operation: "UpdateHillChartSettings")
27
27
  end
28
28
  end
29
+
30
+ # List the progress updates on a todoset's hill chart, newest first.
31
+ # @param todoset_id [Integer] todoset id ID
32
+ # @param page [Integer, nil] Page number for paginating through results. Defaults to 1. A positive value selects exactly that page, not a starting offset; see SPEC section 8.
33
+ # @param max_items [Integer, nil] cap on items yielded across pages; nil or non-positive means no cap
34
+ # @return [ListEnumerator<Hash>] lazily paginated results (#meta carries pagination metadata)
35
+ def list_versions(todoset_id:, page: nil, max_items: nil)
36
+ wrap_paginated(service: "hillcharts", operation: "list_versions", is_mutation: false, resource_id: todoset_id) do
37
+ params = compact_query_params(page: page)
38
+ paginate("/todosets/#{todoset_id}/hills/versions.json", params: params, operation: "ListHillChartVersions", max_items: max_items)
39
+ end
40
+ end
41
+
42
+ # Get one progress update from a todoset's hill chart
43
+ # @param todoset_id [Integer] todoset id ID
44
+ # @param version_id [Integer] version id ID
45
+ # @return [Hash] response data
46
+ def get_version(todoset_id:, version_id:)
47
+ with_operation(service: "hillcharts", operation: "get_version", is_mutation: false, resource_id: version_id) do
48
+ http_get("/todosets/#{todoset_id}/hills/versions/#{version_id}", operation: "GetHillChartVersion").json(operation: "GetHillChartVersion")
49
+ end
50
+ end
29
51
  end
30
52
  end
31
53
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Auto-generated from OpenAPI spec. Do not edit manually.
4
- # Generated: 2026-10-27T22:05:31Z
4
+ # Generated: 2026-10-28T05:27:32Z
5
5
 
6
6
  require "json"
7
7
  require "time"
@@ -2512,7 +2512,7 @@ module Basecamp
2512
2512
  # HillChart
2513
2513
  class HillChart
2514
2514
  include TypeHelpers
2515
- attr_accessor :enabled, :stale, :app_update_url, :app_versions_url, :dots, :updated_at
2515
+ attr_accessor :enabled, :stale, :app_update_url, :app_versions_url, :dots, :updated_at, :versions_url
2516
2516
 
2517
2517
  # @return [Array<Symbol>]
2518
2518
  def self.required_fields
@@ -2526,6 +2526,7 @@ module Basecamp
2526
2526
  @app_versions_url = data["app_versions_url"]
2527
2527
  @dots = parse_array(data["dots"], "HillChartDot")
2528
2528
  @updated_at = parse_datetime(data["updated_at"])
2529
+ @versions_url = data["versions_url"]
2529
2530
  end
2530
2531
 
2531
2532
  def to_h
@@ -2536,6 +2537,7 @@ module Basecamp
2536
2537
  "app_versions_url" => @app_versions_url,
2537
2538
  "dots" => @dots,
2538
2539
  "updated_at" => @updated_at,
2540
+ "versions_url" => @versions_url,
2539
2541
  }.compact
2540
2542
  end
2541
2543
 
@@ -2579,6 +2581,108 @@ module Basecamp
2579
2581
  end
2580
2582
  end
2581
2583
 
2584
+ # HillChartVersion
2585
+ class HillChartVersion
2586
+ include TypeHelpers
2587
+ attr_accessor :app_url, :bucket, :created_at, :creator, :description_attachments, :dots, :id, :inherits_status, :parent, :status, :title, :type, :updated_at, :url, :visible_to_clients, :bookmark_url, :boosts_count, :boosts_url, :comments_count, :comments_url, :description, :subscription_url
2588
+
2589
+ # @return [Array<Symbol>]
2590
+ def self.required_fields
2591
+ %i[app_url bucket created_at creator description_attachments dots id inherits_status parent status title type updated_at url visible_to_clients].freeze
2592
+ end
2593
+
2594
+ def initialize(data = {})
2595
+ @app_url = data["app_url"]
2596
+ @bucket = parse_type(data["bucket"], "TodoBucket")
2597
+ @created_at = parse_datetime(data["created_at"])
2598
+ @creator = parse_type(data["creator"], "Person")
2599
+ @description_attachments = parse_array(data["description_attachments"], "RichTextAttachment")
2600
+ @dots = parse_array(data["dots"], "HillChartVersionDot")
2601
+ @id = parse_integer(data["id"])
2602
+ @inherits_status = parse_boolean(data["inherits_status"])
2603
+ @parent = parse_type(data["parent"], "RecordingParent")
2604
+ @status = data["status"]
2605
+ @title = data["title"]
2606
+ @type = data["type"]
2607
+ @updated_at = parse_datetime(data["updated_at"])
2608
+ @url = data["url"]
2609
+ @visible_to_clients = parse_boolean(data["visible_to_clients"])
2610
+ @bookmark_url = data["bookmark_url"]
2611
+ @boosts_count = parse_integer(data["boosts_count"])
2612
+ @boosts_url = data["boosts_url"]
2613
+ @comments_count = parse_integer(data["comments_count"])
2614
+ @comments_url = data["comments_url"]
2615
+ @description = data["description"]
2616
+ @subscription_url = data["subscription_url"]
2617
+ end
2618
+
2619
+ def to_h
2620
+ {
2621
+ "app_url" => @app_url,
2622
+ "bucket" => @bucket,
2623
+ "created_at" => @created_at,
2624
+ "creator" => @creator,
2625
+ "description_attachments" => @description_attachments,
2626
+ "dots" => @dots,
2627
+ "id" => @id,
2628
+ "inherits_status" => @inherits_status,
2629
+ "parent" => @parent,
2630
+ "status" => @status,
2631
+ "title" => @title,
2632
+ "type" => @type,
2633
+ "updated_at" => @updated_at,
2634
+ "url" => @url,
2635
+ "visible_to_clients" => @visible_to_clients,
2636
+ "bookmark_url" => @bookmark_url,
2637
+ "boosts_count" => @boosts_count,
2638
+ "boosts_url" => @boosts_url,
2639
+ "comments_count" => @comments_count,
2640
+ "comments_url" => @comments_url,
2641
+ "description" => @description,
2642
+ "subscription_url" => @subscription_url,
2643
+ }.compact
2644
+ end
2645
+
2646
+ def to_json(*args)
2647
+ to_h.to_json(*args)
2648
+ end
2649
+ end
2650
+
2651
+ # HillChartVersionDot
2652
+ class HillChartVersionDot
2653
+ include TypeHelpers
2654
+ attr_accessor :color, :label, :position, :app_url, :id, :url
2655
+
2656
+ # @return [Array<Symbol>]
2657
+ def self.required_fields
2658
+ %i[color label position].freeze
2659
+ end
2660
+
2661
+ def initialize(data = {})
2662
+ @color = data["color"]
2663
+ @label = data["label"]
2664
+ @position = parse_integer(data["position"])
2665
+ @app_url = data["app_url"]
2666
+ @id = data["id"]
2667
+ @url = data["url"]
2668
+ end
2669
+
2670
+ def to_h
2671
+ {
2672
+ "color" => @color,
2673
+ "label" => @label,
2674
+ "position" => @position,
2675
+ "app_url" => @app_url,
2676
+ "id" => @id,
2677
+ "url" => @url,
2678
+ }.compact
2679
+ end
2680
+
2681
+ def to_json(*args)
2682
+ to_h.to_json(*args)
2683
+ end
2684
+ end
2685
+
2582
2686
  # Inbox
2583
2687
  class Inbox
2584
2688
  include TypeHelpers
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Basecamp
4
- VERSION = "0.31.0"
4
+ VERSION = "0.33.0"
5
5
  API_VERSION = "2026-10-27"
6
6
  end
@@ -161,7 +161,7 @@ class ServiceGenerator
161
161
  'Todos' => %w[ListTodos CreateTodo CreateTodosetTodo GetTodo ReplaceTodo CompleteTodo UncompleteTodo],
162
162
  'Todolists' => %w[GetTodolistOrGroup UpdateTodolistOrGroup ListTodolists CreateTodolist RepositionTodolist],
163
163
  'Todosets' => %w[GetTodoset],
164
- 'HillCharts' => %w[GetHillChart UpdateHillChartSettings],
164
+ 'HillCharts' => %w[GetHillChart UpdateHillChartSettings ListHillChartVersions GetHillChartVersion],
165
165
  'TodolistGroups' => %w[ListTodolistGroups CreateTodolistGroup RepositionTodolistGroup]
166
166
  },
167
167
  'Untagged' => {
@@ -300,7 +300,9 @@ class ServiceGenerator
300
300
  'ListScheduleEntries' => 'list_entries',
301
301
  'GetScheduleEntryOccurrence' => 'get_entry_occurrence',
302
302
  'GetHillChart' => 'get',
303
- 'UpdateHillChartSettings' => 'update_settings'
303
+ 'UpdateHillChartSettings' => 'update_settings',
304
+ 'ListHillChartVersions' => 'list_versions',
305
+ 'GetHillChartVersion' => 'get_version'
304
306
  }.freeze
305
307
 
306
308
  # Verb patterns for extracting method names
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: basecamp-sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.31.0
4
+ version: 0.33.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Basecamp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-28 00:00:00.000000000 Z
11
+ date: 2026-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday