@37signals/basecamp 0.13.0 → 0.15.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.
Files changed (71) hide show
  1. package/README.md +4 -3
  2. package/dist/client.d.ts +2 -2
  3. package/dist/client.js +2 -2
  4. package/dist/download.d.ts +3 -1
  5. package/dist/download.d.ts.map +1 -1
  6. package/dist/download.js +17 -4
  7. package/dist/download.js.map +1 -1
  8. package/dist/errors.d.ts +27 -1
  9. package/dist/errors.d.ts.map +1 -1
  10. package/dist/errors.js +89 -13
  11. package/dist/errors.js.map +1 -1
  12. package/dist/generated/metadata.d.ts.map +1 -1
  13. package/dist/generated/metadata.js +12 -1
  14. package/dist/generated/metadata.js.map +1 -1
  15. package/dist/generated/metadata.ts +12 -1
  16. package/dist/generated/openapi-stripped.json +559 -30
  17. package/dist/generated/path-mapping.d.ts.map +1 -1
  18. package/dist/generated/path-mapping.js +1 -0
  19. package/dist/generated/path-mapping.js.map +1 -1
  20. package/dist/generated/path-mapping.ts +1 -0
  21. package/dist/generated/schema.d.ts +468 -29
  22. package/dist/generated/services/checkins.d.ts +1 -1
  23. package/dist/generated/services/checkins.d.ts.map +1 -1
  24. package/dist/generated/services/checkins.ts +1 -1
  25. package/dist/generated/services/gauges.d.ts +3 -2
  26. package/dist/generated/services/gauges.d.ts.map +1 -1
  27. package/dist/generated/services/gauges.ts +2 -2
  28. package/dist/generated/services/search.d.ts +2 -1
  29. package/dist/generated/services/search.d.ts.map +1 -1
  30. package/dist/generated/services/search.ts +1 -1
  31. package/dist/generated/services/uploads.d.ts +36 -2
  32. package/dist/generated/services/uploads.d.ts.map +1 -1
  33. package/dist/generated/services/uploads.js +37 -1
  34. package/dist/generated/services/uploads.js.map +1 -1
  35. package/dist/generated/services/uploads.ts +65 -2
  36. package/dist/index.d.ts +1 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/oauth/authorization-document.d.ts +208 -0
  40. package/dist/oauth/authorization-document.d.ts.map +1 -0
  41. package/dist/oauth/authorization-document.js +135 -0
  42. package/dist/oauth/authorization-document.js.map +1 -0
  43. package/dist/oauth/identity.d.ts +7 -1
  44. package/dist/oauth/identity.d.ts.map +1 -1
  45. package/dist/oauth/identity.js +8 -19
  46. package/dist/oauth/identity.js.map +1 -1
  47. package/dist/oauth/index.d.ts +1 -0
  48. package/dist/oauth/index.d.ts.map +1 -1
  49. package/dist/oauth/index.js +2 -0
  50. package/dist/oauth/index.js.map +1 -1
  51. package/dist/retry.d.ts +23 -0
  52. package/dist/retry.d.ts.map +1 -1
  53. package/dist/retry.js +45 -10
  54. package/dist/retry.js.map +1 -1
  55. package/dist/services/authorization.d.ts +22 -52
  56. package/dist/services/authorization.d.ts.map +1 -1
  57. package/dist/services/authorization.js +14 -32
  58. package/dist/services/authorization.js.map +1 -1
  59. package/dist/services/base.d.ts +25 -2
  60. package/dist/services/base.d.ts.map +1 -1
  61. package/dist/services/base.js +85 -15
  62. package/dist/services/base.js.map +1 -1
  63. package/package.json +6 -4
  64. package/src/generated/metadata.ts +12 -1
  65. package/src/generated/openapi-stripped.json +559 -30
  66. package/src/generated/path-mapping.ts +1 -0
  67. package/src/generated/schema.d.ts +468 -29
  68. package/src/generated/services/checkins.ts +1 -1
  69. package/src/generated/services/gauges.ts +2 -2
  70. package/src/generated/services/search.ts +1 -1
  71. package/src/generated/services/uploads.ts +65 -2
@@ -193,6 +193,7 @@ export const PATH_TO_OPERATION: Record<string, string> = {
193
193
  "GET:/{accountId}/uploads/{uploadId}": "GetUpload",
194
194
  "PUT:/{accountId}/uploads/{uploadId}": "UpdateUpload",
195
195
  "GET:/{accountId}/uploads/{uploadId}/versions.json": "ListUploadVersions",
196
+ "POST:/{accountId}/uploads/{uploadId}/versions.json": "CreateUploadVersion",
196
197
  "GET:/{accountId}/vaults/{vaultId}": "GetVault",
197
198
  "PUT:/{accountId}/vaults/{vaultId}": "UpdateVault",
198
199
  "GET:/{accountId}/vaults/{vaultId}/documents.json": "ListDocuments",
@@ -3307,7 +3307,14 @@ export interface paths {
3307
3307
  */
3308
3308
  get: operations["ListUploadVersions"];
3309
3309
  put?: never;
3310
- post?: never;
3310
+ /**
3311
+ * @description Replace an upload's file with a new version
3312
+ *
3313
+ * The recording keeps its id, its URL and its comments; the previous file becomes a
3314
+ * past version. Use this instead of CreateUpload when publishing a new release of the
3315
+ * same file, so its published link keeps working.
3316
+ */
3317
+ post: operations["CreateUploadVersion"];
3311
3318
  delete?: never;
3312
3319
  options?: never;
3313
3320
  head?: never;
@@ -3722,9 +3729,11 @@ export interface components {
3722
3729
  created_at: string;
3723
3730
  updated_at: string;
3724
3731
  service_name: string;
3732
+ /** @description Only present when the requester is an account administrator; possession of this URL is enough to command the bot. */
3725
3733
  command_url?: string;
3726
3734
  url?: string;
3727
3735
  app_url?: string;
3736
+ /** @description Only present when the requester is an account administrator; possession of this URL is enough to post lines as the bot. */
3728
3737
  lines_url?: string;
3729
3738
  };
3730
3739
  ClientApproval: {
@@ -4214,6 +4223,26 @@ export interface components {
4214
4223
  visible_to_clients?: boolean;
4215
4224
  };
4216
4225
  CreateUploadResponseContent: components["schemas"]["Upload"];
4226
+ CreateUploadVersionRequestContent: {
4227
+ attachable_sgid: string;
4228
+ /** @description Omit to keep the uploaded file's own name. Sending "" also keeps it. */
4229
+ base_name?: string;
4230
+ /**
4231
+ * @description Presence-aware: omit to carry the previous version's description forward,
4232
+ * send "" to clear it, send a value to set it.
4233
+ */
4234
+ description?: string;
4235
+ /**
4236
+ * @description Who to notify: "default", "everyone", or "custom" (the people in subscriptions).
4237
+ *
4238
+ * Omit both this and subscriptions to notify nobody. A subscriptions array sent
4239
+ * without notify is read as "custom".
4240
+ */
4241
+ notify?: string;
4242
+ /** @description People to notify about the replacement and subscribe to the upload. */
4243
+ subscriptions?: number[];
4244
+ };
4245
+ CreateUploadVersionResponseContent: components["schemas"]["Upload"];
4217
4246
  CreateVaultRequestContent: {
4218
4247
  title: string;
4219
4248
  };
@@ -4742,8 +4771,8 @@ export interface components {
4742
4771
  over_three_months_late?: components["schemas"]["Todo"][];
4743
4772
  };
4744
4773
  GetPersonProgressResponseContent: {
4745
- person?: components["schemas"]["Person"];
4746
- events?: components["schemas"]["TimelineEvent"][];
4774
+ person: components["schemas"]["Person"];
4775
+ events: components["schemas"]["TimelineEvent"][];
4747
4776
  };
4748
4777
  GetPersonResponseContent: components["schemas"]["Person"];
4749
4778
  GetProgressReportResponseContent: components["schemas"]["TimelineEvent"][];
@@ -4915,7 +4944,7 @@ export interface components {
4915
4944
  ListTodolistGroupsResponseContent: components["schemas"]["Todolist"][];
4916
4945
  ListTodolistsResponseContent: components["schemas"]["Todolist"][];
4917
4946
  ListTodosResponseContent: components["schemas"]["Todo"][];
4918
- ListUploadVersionsResponseContent: components["schemas"]["Upload"][];
4947
+ ListUploadVersionsResponseContent: components["schemas"]["UploadVersion"][];
4919
4948
  ListUploadsResponseContent: components["schemas"]["Upload"][];
4920
4949
  ListVaultsResponseContent: components["schemas"]["Vault"][];
4921
4950
  ListWebhooksResponseContent: components["schemas"]["Webhook"][];
@@ -5020,13 +5049,19 @@ export interface components {
5020
5049
  parent?: components["schemas"]["MyAssignmentParent"];
5021
5050
  children?: components["schemas"]["MyAssignment"][];
5022
5051
  };
5052
+ /**
5053
+ * @description A person as bc3's `people/_person_minimal.json.jbuilder` renders them —
5054
+ * the same three-key partial behind UpcomingSchedulePerson and
5055
+ * OutOfOfficePerson. All three keys are emitted unconditionally, so all
5056
+ * three are required.
5057
+ */
5023
5058
  MyAssignmentAssignee: {
5024
5059
  /** Format: int64 */
5025
5060
  id: number;
5026
5061
  /** Format: password */
5027
- name?: string;
5062
+ name: string;
5028
5063
  /** Format: password */
5029
- avatar_url?: string;
5064
+ avatar_url: string;
5030
5065
  };
5031
5066
  MyAssignmentBucket: {
5032
5067
  /** Format: int64 */
@@ -5140,13 +5175,19 @@ export interface components {
5140
5175
  /** @description End date in ISO 8601 format (YYYY-MM-DD) */
5141
5176
  end_date: string;
5142
5177
  };
5178
+ /**
5179
+ * @description A person as bc3's `people/_person_minimal.json.jbuilder` renders them —
5180
+ * the same three-key partial behind UpcomingSchedulePerson and
5181
+ * MyAssignmentAssignee. All three keys are emitted unconditionally, so all
5182
+ * three are required.
5183
+ */
5143
5184
  OutOfOfficePerson: {
5144
5185
  /** Format: int64 */
5145
5186
  id: number;
5146
5187
  /** Format: password */
5147
- name?: string;
5188
+ name: string;
5148
5189
  /** Format: password */
5149
- avatar_url?: string;
5190
+ avatar_url: string;
5150
5191
  };
5151
5192
  PauseQuestionResponseContent: {
5152
5193
  paused?: boolean;
@@ -5788,19 +5829,61 @@ export interface components {
5788
5829
  default_type_label: string;
5789
5830
  };
5790
5831
  SearchResponseContent: components["schemas"]["SearchResult"][];
5832
+ /**
5833
+ * @description One hit from account-wide search — a polymorphic projection over every
5834
+ * searchable recording type.
5835
+ *
5836
+ * Most result types render the common recording envelope
5837
+ * (`recordings/_recording.json.jbuilder`) plus their own recordable partial,
5838
+ * but `api_search_result_template_path` special-cases four branches — chat
5839
+ * lines, kanban (card table) lists, file attachments and gauge needles — and
5840
+ * the file-attachment branch writes its own projection from scratch instead
5841
+ * of the envelope. Members are therefore optional unless every branch emits
5842
+ * them; the doc comments name the branches that carry each optional member.
5843
+ */
5791
5844
  SearchResult: {
5792
- /** Format: int64 */
5793
- id: number;
5845
+ /**
5846
+ * Format: int64
5847
+ * @description The recording id. Optional only because the file-attachment branch
5848
+ * (`searches/_attachment.json.jbuilder`) skips the recording envelope and
5849
+ * emits none of the top-level id/title/type/url/app_url keys; every other
5850
+ * branch emits all five.
5851
+ */
5852
+ id?: number;
5794
5853
  status?: string;
5795
5854
  visible_to_clients?: boolean;
5796
5855
  created_at?: string;
5797
5856
  updated_at?: string;
5798
- title: string;
5857
+ /**
5858
+ * @description See `id` — omitted by the file-attachment branch, emitted by every other
5859
+ * branch.
5860
+ */
5861
+ title?: string;
5799
5862
  inherits_status?: boolean;
5800
- type: string;
5801
- url: string;
5802
- app_url: string;
5863
+ /**
5864
+ * @description See `id` — omitted by the file-attachment branch, emitted by every other
5865
+ * branch. A file-attachment hit is therefore recognizable by the absence
5866
+ * of this key (its file keys, `filename` through `app_download_url`, are
5867
+ * the positive signal).
5868
+ */
5869
+ type?: string;
5870
+ /**
5871
+ * @description See `id` — omitted by the file-attachment branch, emitted by every other
5872
+ * branch.
5873
+ */
5874
+ url?: string;
5875
+ /**
5876
+ * @description See `id` — omitted by the file-attachment branch, emitted by every other
5877
+ * branch.
5878
+ */
5879
+ app_url?: string;
5803
5880
  bookmark_url?: string;
5881
+ /**
5882
+ * @description Subscription URL, emitted by the common recording envelope for any
5883
+ * subscribable result — kanban lists and gauge needles among the special
5884
+ * branches, plus subscribable generic-branch types (messages, todos, …).
5885
+ */
5886
+ subscription_url?: string;
5804
5887
  /**
5805
5888
  * @description URL of the Bubble Up record for this recording (BC5 addition). Optional
5806
5889
  * here because this is a polymorphic projection:
@@ -5850,22 +5933,173 @@ export interface components {
5850
5933
  * the array matching its rich-text attribute (`content_attachments` for a
5851
5934
  * Comment/Message, `description_attachments` for a Todo); a webhook-sourced
5852
5935
  * result carries neither. Optional (no `@required`), non-nullable.
5853
- *
5854
- * Search results additionally repeat this same array under a generic
5855
- * `attachments` key. It is a redundant projection, not a distinct
5856
- * aggregate: `searches/show.json.jbuilder` emits
5857
- * `recording.downloadable_attachments`, which delegates to the recordable's
5858
- * sole `rich_text_content`, through the same `attachments/_attachment`
5859
- * partial that `recordings/_rich_text.json.jbuilder` uses to build the
5860
- * companion array. `RichText.rich_text_attribute` permits exactly one
5861
- * rich-text attribute per model, so the two keys always carry identical
5862
- * elements. Modeling `attachments` would duplicate the field, so it is
5863
- * deliberately not modeled.
5864
5936
  */
5865
5937
  content_attachments?: components["schemas"]["RichTextAttachment"][];
5866
5938
  /** @description See `content_attachments` — the description-attribute companion array. */
5867
5939
  description_attachments?: components["schemas"]["RichTextAttachment"][];
5940
+ /**
5941
+ * @description File attachments on the result, in either of two wire shapes — see
5942
+ * `SearchResultAttachment`.
5943
+ *
5944
+ * For a result whose recordable carries downloadable rich-text
5945
+ * attachments, `searches/show.json.jbuilder` emits this key through the
5946
+ * same `attachments/_attachment` partial that builds the rich-text
5947
+ * companion array above, so it repeats that array's elements. For a chat
5948
+ * *upload* line, `chats/lines/_upload.json.jbuilder` instead builds a
5949
+ * bespoke six-key aggregate inline — and because upload lines have no
5950
+ * rich-text attribute, the show template never overwrites it, so that
5951
+ * distinct shape survives to the wire.
5952
+ */
5953
+ attachments?: components["schemas"]["SearchResultAttachment"][];
5868
5954
  subject?: string;
5955
+ /**
5956
+ * Format: int32
5957
+ * @description Boost count, emitted by the recording envelope when the branch passes
5958
+ * `boostable` — chat lines and gauge needles.
5959
+ */
5960
+ boosts_count?: number;
5961
+ /** @description See `boosts_count` — the companion URL. */
5962
+ boosts_url?: string;
5963
+ /**
5964
+ * @description Language of a code chat line (`chats/lines/_code.json.jbuilder`);
5965
+ * validated present on the model, so never null when the key is emitted.
5966
+ */
5967
+ language?: string;
5968
+ /**
5969
+ * @description Image URL of a soundtracked (play-kind) chat line whose sound carries an
5970
+ * image; such a line emits `image_url` in place of `content`.
5971
+ */
5972
+ image_url?: string;
5973
+ /** @description Sound URL of a play-kind chat line; always emitted for that kind. */
5974
+ sound_url?: string;
5975
+ /** @description Everyone subscribed to the kanban list, as full Person projections. */
5976
+ subscribers?: components["schemas"]["Person"][];
5977
+ /**
5978
+ * @description Color of a kanban list or gauge needle. Emitted unconditionally by both
5979
+ * branches with a null value when unset, so it is nullable (the enhance
5980
+ * pass layers `nullable: true` onto the OpenAPI).
5981
+ */
5982
+ color?: string | null;
5983
+ /**
5984
+ * Format: int32
5985
+ * @description Number of cards in the kanban list.
5986
+ */
5987
+ cards_count?: number;
5988
+ /**
5989
+ * Format: int32
5990
+ * @description Comment count of a kanban list or gauge needle (branch-partial key,
5991
+ * singular `comment_count` — distinct from the envelope's
5992
+ * `comments_count`, which a needle also carries).
5993
+ */
5994
+ comment_count?: number;
5995
+ /** @description API URL of the kanban list's cards. */
5996
+ cards_url?: string;
5997
+ on_hold?: components["schemas"]["CardColumnOnHold"];
5998
+ /**
5999
+ * Format: int32
6000
+ * @description Comment count, emitted by the recording envelope when the branch passes
6001
+ * `commentable` — gauge needles among the special branches, plus
6002
+ * commentable generic-branch types.
6003
+ */
6004
+ comments_count?: number;
6005
+ /** @description See `comments_count` — the companion URL. */
6006
+ comments_url?: string;
6007
+ /**
6008
+ * Format: int32
6009
+ * @description Position of the result. Two emitters share the key: the recording
6010
+ * envelope emits list position for positioned recordings (kanban lists
6011
+ * among the special branches), and the gauge-needle branch overwrites it
6012
+ * with the needle's own 0–100 gauge position.
6013
+ */
6014
+ position?: number;
6015
+ /**
6016
+ * @description Filename of a file-attachment hit. This and the following file keys are
6017
+ * emitted only by the file-attachment branch — the one branch that omits
6018
+ * the id/title/type/url/app_url envelope keys.
6019
+ */
6020
+ filename?: string;
6021
+ /** @description MIME type of a file-attachment hit. */
6022
+ content_type?: string;
6023
+ /**
6024
+ * Format: int64
6025
+ * @description Size in bytes of a file-attachment hit.
6026
+ */
6027
+ byte_size?: number;
6028
+ /** @description Whether the file can be previewed. */
6029
+ previewable?: boolean;
6030
+ /**
6031
+ * Format: int32
6032
+ * @description Pixel width, emitted only when the file is previewable. May be
6033
+ * float-spelled (`1024.0`) and nullable, like every other blob dimension —
6034
+ * see `RichTextAttachment.width` for the cross-SDK typing note.
6035
+ */
6036
+ width?: number | null;
6037
+ /**
6038
+ * Format: int32
6039
+ * @description See `width` — same conditional emission and nullable/float-spelled
6040
+ * behavior.
6041
+ */
6042
+ height?: number | null;
6043
+ /** @description Full-size preview URL of a file-attachment hit. */
6044
+ preview_url?: string;
6045
+ /** @description Thumbnail URL of a file-attachment hit. */
6046
+ thumbnail_url?: string;
6047
+ /** @description Authenticated download URL of a file-attachment hit. */
6048
+ download_url?: string;
6049
+ /** @description Web (app-host) download URL of a file-attachment hit. */
6050
+ app_download_url?: string;
6051
+ };
6052
+ /**
6053
+ * @description A file attached to a search result, in either of two wire shapes.
6054
+ *
6055
+ * This is an optional-field superset over the two variants the search
6056
+ * projection emits (the TimelineAttachment approach): the rich-text
6057
+ * attachment/blob shape rendered through `attachments/_attachment` +
6058
+ * `blobs/_blob` — the same emitters `RichTextAttachment` models — and the
6059
+ * bespoke six-key aggregate a chat upload line builds inline in
6060
+ * `chats/lines/_upload.json.jbuilder`. Only the four keys both variants
6061
+ * always emit are `@required`; the rest identify their variant.
6062
+ */
6063
+ SearchResultAttachment: {
6064
+ /** @description Original filename (both variants). */
6065
+ filename: string;
6066
+ /** @description MIME type of the file (both variants). */
6067
+ content_type: string;
6068
+ /**
6069
+ * Format: int64
6070
+ * @description Size of the file in bytes (both variants).
6071
+ */
6072
+ byte_size: number;
6073
+ /** @description Authenticated download URL for the file (both variants). */
6074
+ download_url: string;
6075
+ /**
6076
+ * Format: int64
6077
+ * @description Attachment id (rich-text variant).
6078
+ */
6079
+ id?: number;
6080
+ /** @description Signed global id of the attachment (rich-text variant). */
6081
+ sgid?: string;
6082
+ /** @description Whether the blob can be previewed (rich-text variant). */
6083
+ previewable?: boolean;
6084
+ /** @description Full-size preview URL (rich-text variant). */
6085
+ preview_url?: string;
6086
+ /** @description Thumbnail URL (rich-text variant). */
6087
+ thumbnail_url?: string;
6088
+ /**
6089
+ * Format: int32
6090
+ * @description Pixel width (rich-text variant) — null for non-image blobs and may be
6091
+ * float-spelled (`1024.0`); see `RichTextAttachment.width`.
6092
+ */
6093
+ width?: number | null;
6094
+ /**
6095
+ * Format: int32
6096
+ * @description See `width` (rich-text variant).
6097
+ */
6098
+ height?: number | null;
6099
+ /** @description Title of the attachment recording (chat upload-line variant). */
6100
+ title?: string;
6101
+ /** @description Browser preview URL of the blob (chat upload-line variant). */
6102
+ url?: string;
5869
6103
  };
5870
6104
  /**
5871
6105
  * @description A selectable search filter option. `key` is the value passed back as a
@@ -5896,6 +6130,17 @@ export interface components {
5896
6130
  visible_to_clients: boolean;
5897
6131
  };
5898
6132
  SetClientVisibilityResponseContent: components["schemas"]["Recording"];
6133
+ /**
6134
+ * @description The account has reached its file storage limit.
6135
+ *
6136
+ * Raised by ResourceLimits#ensure_account_can_upload_files ahead of any operation
6137
+ * that stores new bytes. No retry can satisfy it: the account needs more storage,
6138
+ * so this maps to `limit_exceeded` rather than a retryable server error.
6139
+ */
6140
+ StorageLimitErrorResponseContent: {
6141
+ error: string;
6142
+ message?: string;
6143
+ };
5899
6144
  SubscribeResponseContent: components["schemas"]["Subscription"];
5900
6145
  Subscription: {
5901
6146
  subscribed: boolean;
@@ -6334,16 +6579,41 @@ export interface components {
6334
6579
  /** Format: int64 */
6335
6580
  id: number;
6336
6581
  status?: string;
6582
+ visible_to_clients: boolean;
6337
6583
  created_at: string;
6338
6584
  updated_at: string;
6339
6585
  title: string;
6340
- name: string;
6341
- enabled: boolean;
6342
- /** Format: int32 */
6343
- position?: number;
6586
+ inherits_status: boolean;
6587
+ /** @description The tool's recordable type, e.g. `Chat::Transcript`, `Todoset`, `Vault`. */
6588
+ type: string;
6344
6589
  url?: string;
6345
6590
  app_url?: string;
6591
+ bookmark_url?: string;
6592
+ /** @description Absent for tool types that are not subscribable. */
6593
+ subscription_url?: string;
6594
+ /**
6595
+ * Format: int32
6596
+ * @description Emitted only for a positioned recording. For a docked tool that makes an
6597
+ * absent position the disabled signal — disabling removes the tool from the
6598
+ * dock without deleting it. Positioning is independent of dockedness, so
6599
+ * this does not generalize: a nested vault is not docked and is positioned.
6600
+ */
6601
+ position?: number;
6602
+ parent?: components["schemas"]["RecordingParent"];
6346
6603
  bucket?: components["schemas"]["RecordingBucket"];
6604
+ creator: components["schemas"]["Person"];
6605
+ /**
6606
+ * @description Not emitted by this projection. The dock array on a project
6607
+ * (`DockItem$name`) carries the tool's slug; this key is absent from every
6608
+ * GetTool/CreateTool/UpdateTool response.
6609
+ */
6610
+ name?: string;
6611
+ /**
6612
+ * @description Not emitted by this projection. The dock array on a project
6613
+ * (`DockItem$enabled`) is the authoritative enabled flag; on a docked tool's
6614
+ * own response, an absent `position` is the equivalent signal.
6615
+ */
6616
+ enabled?: boolean;
6347
6617
  };
6348
6618
  UnauthorizedErrorResponseContent: {
6349
6619
  error: string;
@@ -6796,6 +7066,59 @@ export interface components {
6796
7066
  boosts_count?: number;
6797
7067
  boosts_url?: string;
6798
7068
  };
7069
+ /**
7070
+ * @description A version event for an upload, from GET /uploads/{id}/versions.json.
7071
+ *
7072
+ * `action` is one of `created`, `active` (the upload's publication) or `blob_changed`
7073
+ * (a file replacement). To list the file's PAST versions, select entries that carry
7074
+ * an `upload` whose `current` is false — the original file arrives as `created` or
7075
+ * `active`, never `blob_changed`, so filtering on that action drops the original
7076
+ * and keeps the current file instead. This is an Event plus the file it recorded, rendered by its own
7077
+ * partial rather than the shared event one, so upload fields don't leak onto todo,
7078
+ * message and card events.
7079
+ */
7080
+ UploadVersion: {
7081
+ /** Format: int64 */
7082
+ id: number;
7083
+ /** Format: int64 */
7084
+ recording_id: number;
7085
+ action: string;
7086
+ details?: components["schemas"]["EventDetails"];
7087
+ created_at: string;
7088
+ creator: components["schemas"]["Person"];
7089
+ /** Format: int32 */
7090
+ boosts_count?: number;
7091
+ boosts_url?: string;
7092
+ upload?: components["schemas"]["UploadVersionFile"];
7093
+ };
7094
+ /** @description The file a version event recorded — a reduced projection, not an Upload. */
7095
+ UploadVersionFile: {
7096
+ content_type?: string;
7097
+ /** Format: int64 */
7098
+ byte_size?: number;
7099
+ filename: string;
7100
+ /**
7101
+ * @description Fetches THIS version's bytes. The upload's own download_url always serves the
7102
+ * latest, which is the whole point of the feature.
7103
+ */
7104
+ download_url: string;
7105
+ app_download_url: string;
7106
+ /**
7107
+ * @description True for the newest version *event*, and for exactly one element of any
7108
+ * non-empty response. The renderer computes it positionally — `event ==
7109
+ * @events.first` over a reverse-chronological list — so it is a property of
7110
+ * ordering, not of what the upload currently points at, and it cannot be
7111
+ * zero or plural.
7112
+ *
7113
+ * That distinction is the whole caveat: `current` does NOT mean "this is the
7114
+ * file the upload's own download_url serves". A metadata-only PUT swaps in a
7115
+ * recordable carrying the same blob and emits no event, so afterwards no
7116
+ * event references the upload's current recordable — and this flag still
7117
+ * marks exactly one element, the newest event. bc3 pins that case by name in
7118
+ * "exactly one version is current after a metadata-only update".
7119
+ */
7120
+ current: boolean;
7121
+ };
6799
7122
  ValidationErrorResponseContent: {
6800
7123
  error: string;
6801
7124
  message?: string;
@@ -7259,6 +7582,15 @@ export interface operations {
7259
7582
  "application/json": components["schemas"]["InternalServerErrorResponseContent"];
7260
7583
  };
7261
7584
  };
7585
+ /** @description StorageLimitError 507 response */
7586
+ 507: {
7587
+ headers: {
7588
+ [name: string]: unknown;
7589
+ };
7590
+ content: {
7591
+ "application/json": components["schemas"]["StorageLimitErrorResponseContent"];
7592
+ };
7593
+ };
7262
7594
  };
7263
7595
  };
7264
7596
  GetBoost: {
@@ -11362,6 +11694,15 @@ export interface operations {
11362
11694
  "application/json": components["schemas"]["InternalServerErrorResponseContent"];
11363
11695
  };
11364
11696
  };
11697
+ /** @description StorageLimitError 507 response */
11698
+ 507: {
11699
+ headers: {
11700
+ [name: string]: unknown;
11701
+ };
11702
+ content: {
11703
+ "application/json": components["schemas"]["StorageLimitErrorResponseContent"];
11704
+ };
11705
+ };
11365
11706
  };
11366
11707
  };
11367
11708
  GetEverythingCheckins: {
@@ -22280,6 +22621,95 @@ export interface operations {
22280
22621
  };
22281
22622
  };
22282
22623
  };
22624
+ CreateUploadVersion: {
22625
+ parameters: {
22626
+ query?: never;
22627
+ header?: never;
22628
+ path: {
22629
+ uploadId: number;
22630
+ };
22631
+ cookie?: never;
22632
+ };
22633
+ requestBody: {
22634
+ content: {
22635
+ "application/json": components["schemas"]["CreateUploadVersionRequestContent"];
22636
+ };
22637
+ };
22638
+ responses: {
22639
+ /** @description CreateUploadVersion 201 response */
22640
+ 201: {
22641
+ headers: {
22642
+ [name: string]: unknown;
22643
+ };
22644
+ content: {
22645
+ "application/json": components["schemas"]["CreateUploadVersionResponseContent"];
22646
+ };
22647
+ };
22648
+ /** @description UnauthorizedError 401 response */
22649
+ 401: {
22650
+ headers: {
22651
+ [name: string]: unknown;
22652
+ };
22653
+ content: {
22654
+ "application/json": components["schemas"]["UnauthorizedErrorResponseContent"];
22655
+ };
22656
+ };
22657
+ /** @description ForbiddenError 403 response */
22658
+ 403: {
22659
+ headers: {
22660
+ [name: string]: unknown;
22661
+ };
22662
+ content: {
22663
+ "application/json": components["schemas"]["ForbiddenErrorResponseContent"];
22664
+ };
22665
+ };
22666
+ /** @description NotFoundError 404 response */
22667
+ 404: {
22668
+ headers: {
22669
+ [name: string]: unknown;
22670
+ };
22671
+ content: {
22672
+ "application/json": components["schemas"]["NotFoundErrorResponseContent"];
22673
+ };
22674
+ };
22675
+ /** @description ValidationError 422 response */
22676
+ 422: {
22677
+ headers: {
22678
+ [name: string]: unknown;
22679
+ };
22680
+ content: {
22681
+ "application/json": components["schemas"]["ValidationErrorResponseContent"];
22682
+ };
22683
+ };
22684
+ /** @description RateLimitError 429 response */
22685
+ 429: {
22686
+ headers: {
22687
+ [name: string]: unknown;
22688
+ };
22689
+ content: {
22690
+ "application/json": components["schemas"]["RateLimitErrorResponseContent"];
22691
+ };
22692
+ };
22693
+ /** @description InternalServerError 500 response */
22694
+ 500: {
22695
+ headers: {
22696
+ [name: string]: unknown;
22697
+ };
22698
+ content: {
22699
+ "application/json": components["schemas"]["InternalServerErrorResponseContent"];
22700
+ };
22701
+ };
22702
+ /** @description StorageLimitError 507 response */
22703
+ 507: {
22704
+ headers: {
22705
+ [name: string]: unknown;
22706
+ };
22707
+ content: {
22708
+ "application/json": components["schemas"]["StorageLimitErrorResponseContent"];
22709
+ };
22710
+ };
22711
+ };
22712
+ };
22283
22713
  GetVault: {
22284
22714
  parameters: {
22285
22715
  query?: never;
@@ -22671,6 +23101,15 @@ export interface operations {
22671
23101
  "application/json": components["schemas"]["InternalServerErrorResponseContent"];
22672
23102
  };
22673
23103
  };
23104
+ /** @description StorageLimitError 507 response */
23105
+ 507: {
23106
+ headers: {
23107
+ [name: string]: unknown;
23108
+ };
23109
+ content: {
23110
+ "application/json": components["schemas"]["StorageLimitErrorResponseContent"];
23111
+ };
23112
+ };
22674
23113
  };
22675
23114
  };
22676
23115
  ListVaults: {
@@ -135,7 +135,7 @@ export class CheckinsService extends BaseService {
135
135
  * const result = await client.checkins.reminders();
136
136
  * ```
137
137
  */
138
- async reminders(options?: RemindersCheckinOptions): Promise<components["schemas"]["GetQuestionRemindersResponseContent"]> {
138
+ async reminders(options?: RemindersCheckinOptions): Promise<ListResult<components["schemas"]["QuestionReminder"]>> {
139
139
  return this.requestPaginated(
140
140
  {
141
141
  service: "Checkins",
@@ -214,7 +214,7 @@ export class GaugesService extends BaseService {
214
214
  * const filtered = await client.gauges.listGaugeNeedles(123, { page: 1 });
215
215
  * ```
216
216
  */
217
- async listGaugeNeedles(projectId: number, options?: ListGaugeNeedlesGaugeOptions): Promise<components["schemas"]["ListGaugeNeedlesResponseContent"]> {
217
+ async listGaugeNeedles(projectId: number, options?: ListGaugeNeedlesGaugeOptions): Promise<ListResult<components["schemas"]["GaugeNeedle"]>> {
218
218
  return this.requestPaginated(
219
219
  {
220
220
  service: "Gauges",
@@ -286,7 +286,7 @@ export class GaugesService extends BaseService {
286
286
  * const filtered = await client.gauges.listGauges({ bucketIds: "example" });
287
287
  * ```
288
288
  */
289
- async listGauges(options?: ListGaugesGaugeOptions): Promise<components["schemas"]["ListGaugesResponseContent"]> {
289
+ async listGauges(options?: ListGaugesGaugeOptions): Promise<ListResult<components["schemas"]["Gauge"]>> {
290
290
  return this.requestPaginated(
291
291
  {
292
292
  service: "Gauges",