Skip to content

Commit d52c6cb

Browse files
feat(api): manual updates
1 parent 7454269 commit d52c6cb

File tree

9 files changed

+131
-26
lines changed

9 files changed

+131
-26
lines changed

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 18
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/beeper%2Fbeeper-desktop-api-5fb80d7f97f2428d1826b9c381476f0d46117fc694140175dbc15920b1884f1f.yml
3-
openapi_spec_hash: 06f8538bc0a27163d33a80c00fb16e86
4-
config_hash: 196c1c81b169ede101a71d1cf2796d99
1+
configured_endpoints: 19
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/beeper%2Fbeeper-desktop-api-099d55ac0e749a64dacc1706d7d8276d1acbe52103f0419393c39e8911966cfe.yml
3+
openapi_spec_hash: 70a1b1d513b62c6d6caabbbf360220b4
4+
config_hash: 48ff2d23c2ebc82bd3c15787f0041684

account.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ type Account struct {
5252
// Chat account added to Beeper. Use this to route account-scoped actions.
5353
AccountID string `json:"accountID,required"`
5454
// Display-only human-readable network name (e.g., 'WhatsApp', 'Messenger').
55-
//
56-
// Deprecated: deprecated
5755
Network string `json:"network,required"`
5856
// User the account belongs to.
5957
User shared.User `json:"user,required"`

api.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,21 +44,27 @@ Response Types:
4444
- <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#Chat">Chat</a>
4545
- <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatNewResponse">ChatNewResponse</a>
4646
- <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatListResponse">ChatListResponse</a>
47+
- <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatArchiveResponse">ChatArchiveResponse</a>
4748

4849
Methods:
4950

5051
- <code title="post /v1/chats">client.Chats.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, body <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatNewParams">ChatNewParams</a>) (\*<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatNewResponse">ChatNewResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
5152
- <code title="get /v1/chats/{chatID}">client.Chats.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatService.Get">Get</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, chatID <a href="https://pkg.go.dev/builtin#string">string</a>, query <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatGetParams">ChatGetParams</a>) (\*<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#Chat">Chat</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
5253
- <code title="get /v1/chats">client.Chats.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatService.List">List</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, query <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatListParams">ChatListParams</a>) (\*<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go/packages/pagination">pagination</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go/packages/pagination#CursorNoLimit">CursorNoLimit</a>[<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatListResponse">ChatListResponse</a>], <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
53-
- <code title="post /v1/chats/{chatID}/archive">client.Chats.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatService.Archive">Archive</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, chatID <a href="https://pkg.go.dev/builtin#string">string</a>, body <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatArchiveParams">ChatArchiveParams</a>) <a href="https://pkg.go.dev/builtin#error">error</a></code>
54+
- <code title="post /v1/chats/{chatID}/archive">client.Chats.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatService.Archive">Archive</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, chatID <a href="https://pkg.go.dev/builtin#string">string</a>, body <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatArchiveParams">ChatArchiveParams</a>) (\*<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatArchiveResponse">ChatArchiveResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
5455
- <code title="get /v1/chats/search">client.Chats.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatService.Search">Search</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, query <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatSearchParams">ChatSearchParams</a>) (\*<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go/packages/pagination">pagination</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go/packages/pagination#CursorSearch">CursorSearch</a>[<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#Chat">Chat</a>], <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
5556

5657
## Reminders
5758

59+
Response Types:
60+
61+
- <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatReminderNewResponse">ChatReminderNewResponse</a>
62+
- <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatReminderDeleteResponse">ChatReminderDeleteResponse</a>
63+
5864
Methods:
5965

60-
- <code title="post /v1/chats/{chatID}/reminders">client.Chats.Reminders.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatReminderService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, chatID <a href="https://pkg.go.dev/builtin#string">string</a>, body <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatReminderNewParams">ChatReminderNewParams</a>) <a href="https://pkg.go.dev/builtin#error">error</a></code>
61-
- <code title="delete /v1/chats/{chatID}/reminders">client.Chats.Reminders.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatReminderService.Delete">Delete</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, chatID <a href="https://pkg.go.dev/builtin#string">string</a>) <a href="https://pkg.go.dev/builtin#error">error</a></code>
66+
- <code title="post /v1/chats/{chatID}/reminders">client.Chats.Reminders.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatReminderService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, chatID <a href="https://pkg.go.dev/builtin#string">string</a>, body <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatReminderNewParams">ChatReminderNewParams</a>) (\*<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatReminderNewResponse">ChatReminderNewResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
67+
- <code title="delete /v1/chats/{chatID}/reminders">client.Chats.Reminders.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatReminderService.Delete">Delete</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, chatID <a href="https://pkg.go.dev/builtin#string">string</a>) (\*<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#ChatReminderDeleteResponse">ChatReminderDeleteResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
6268

6369
# Messages
6470

@@ -85,5 +91,6 @@ Response Types:
8591
Methods:
8692

8793
- <code title="post /v1/assets/download">client.Assets.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetService.Download">Download</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, body <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetDownloadParams">AssetDownloadParams</a>) (\*<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetDownloadResponse">AssetDownloadResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
94+
- <code title="get /v1/assets/serve">client.Assets.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetService.Serve">Serve</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, query <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetServeParams">AssetServeParams</a>) <a href="https://pkg.go.dev/builtin#error">error</a></code>
8895
- <code title="post /v1/assets/upload">client.Assets.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetService.Upload">Upload</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, body <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetUploadParams">AssetUploadParams</a>) (\*<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetUploadResponse">AssetUploadResponse</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
8996
- <code title="post /v1/assets/upload/base64">client.Assets.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetService.UploadBase64">UploadBase64</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, body <a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetUploadBase64Params">AssetUploadBase64Params</a>) (\*<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go">beeperdesktopapi</a>.<a href="https://pkg.go.dev/github.com/beeper/desktop-api-go#AssetUploadBase64Response">AssetUploadBase64Response</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>

asset.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ import (
88
"io"
99
"mime/multipart"
1010
"net/http"
11+
"net/url"
1112
"slices"
1213

1314
"github.com/beeper/desktop-api-go/internal/apiform"
1415
"github.com/beeper/desktop-api-go/internal/apijson"
16+
"github.com/beeper/desktop-api-go/internal/apiquery"
1517
"github.com/beeper/desktop-api-go/internal/requestconfig"
1618
"github.com/beeper/desktop-api-go/option"
1719
"github.com/beeper/desktop-api-go/packages/param"
@@ -48,6 +50,16 @@ func (r *AssetService) Download(ctx context.Context, body AssetDownloadParams, o
4850
return
4951
}
5052

53+
// Stream a file given an mxc://, localmxc://, or file:// URL. Downloads first if
54+
// not cached. Supports Range requests for seeking in large files.
55+
func (r *AssetService) Serve(ctx context.Context, query AssetServeParams, opts ...option.RequestOption) (err error) {
56+
opts = slices.Concat(r.Options, opts)
57+
opts = append([]option.RequestOption{option.WithHeader("Accept", "*/*")}, opts...)
58+
path := "v1/assets/serve"
59+
err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, query, nil, opts...)
60+
return
61+
}
62+
5163
// Upload a file to a temporary location using multipart/form-data. Returns an
5264
// uploadID that can be referenced when sending messages with attachments.
5365
func (r *AssetService) Upload(ctx context.Context, body AssetUploadParams, opts ...option.RequestOption) (res *AssetUploadResponse, err error) {
@@ -183,6 +195,20 @@ func (r *AssetDownloadParams) UnmarshalJSON(data []byte) error {
183195
return apijson.UnmarshalRoot(data, r)
184196
}
185197

198+
type AssetServeParams struct {
199+
// Asset URL to serve. Accepts mxc://, localmxc://, or file:// URLs.
200+
URL string `query:"url,required" json:"-"`
201+
paramObj
202+
}
203+
204+
// URLQuery serializes [AssetServeParams]'s query parameters as `url.Values`.
205+
func (r AssetServeParams) URLQuery() (v url.Values, err error) {
206+
return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
207+
ArrayFormat: apiquery.ArrayQueryFormatRepeat,
208+
NestedFormat: apiquery.NestedQueryFormatBrackets,
209+
})
210+
}
211+
186212
type AssetUploadParams struct {
187213
// The file to upload (max 500 MB).
188214
File io.Reader `json:"file,omitzero,required" format:"binary"`

asset_test.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,30 @@ func TestAssetDownload(t *testing.T) {
3939
}
4040
}
4141

42+
func TestAssetServe(t *testing.T) {
43+
baseURL := "http://localhost:4010"
44+
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {
45+
baseURL = envURL
46+
}
47+
if !testutil.CheckTestServer(t, baseURL) {
48+
return
49+
}
50+
client := beeperdesktopapi.NewClient(
51+
option.WithBaseURL(baseURL),
52+
option.WithAccessToken("My Access Token"),
53+
)
54+
err := client.Assets.Serve(context.TODO(), beeperdesktopapi.AssetServeParams{
55+
URL: "x",
56+
})
57+
if err != nil {
58+
var apierr *beeperdesktopapi.Error
59+
if errors.As(err, &apierr) {
60+
t.Log(string(apierr.DumpRequest(true)))
61+
}
62+
t.Fatalf("err should be nil: %s", err.Error())
63+
}
64+
}
65+
4266
func TestAssetUploadWithOptionalParams(t *testing.T) {
4367
baseURL := "http://localhost:4010"
4468
if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok {

chat.go

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,15 +93,14 @@ func (r *ChatService) ListAutoPaging(ctx context.Context, query ChatListParams,
9393

9494
// Archive or unarchive a chat. Set archived=true to move to archive,
9595
// archived=false to move back to inbox
96-
func (r *ChatService) Archive(ctx context.Context, chatID string, body ChatArchiveParams, opts ...option.RequestOption) (err error) {
96+
func (r *ChatService) Archive(ctx context.Context, chatID string, body ChatArchiveParams, opts ...option.RequestOption) (res *ChatArchiveResponse, err error) {
9797
opts = slices.Concat(r.Options, opts)
98-
opts = append([]option.RequestOption{option.WithHeader("Accept", "*/*")}, opts...)
9998
if chatID == "" {
10099
err = errors.New("missing required chatID parameter")
101100
return
102101
}
103102
path := fmt.Sprintf("v1/chats/%s/archive", chatID)
104-
err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, nil, opts...)
103+
err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...)
105104
return
106105
}
107106

@@ -135,10 +134,6 @@ type Chat struct {
135134
ID string `json:"id,required"`
136135
// Account ID this chat belongs to.
137136
AccountID string `json:"accountID,required"`
138-
// Display-only human-readable network name (e.g., 'WhatsApp', 'Messenger').
139-
//
140-
// Deprecated: deprecated
141-
Network string `json:"network,required"`
142137
// Chat participants information.
143138
Participants ChatParticipants `json:"participants,required"`
144139
// Display title of the chat as computed by the client/server.
@@ -165,7 +160,6 @@ type Chat struct {
165160
JSON struct {
166161
ID respjson.Field
167162
AccountID respjson.Field
168-
Network respjson.Field
169163
Participants respjson.Field
170164
Title respjson.Field
171165
Type respjson.Field
@@ -254,6 +248,25 @@ func (r *ChatListResponse) UnmarshalJSON(data []byte) error {
254248
return apijson.UnmarshalRoot(data, r)
255249
}
256250

251+
type ChatArchiveResponse struct {
252+
// Indicates the operation completed successfully
253+
//
254+
// Any of true.
255+
Success bool `json:"success,required"`
256+
// JSON contains metadata for fields, check presence with [respjson.Field.Valid].
257+
JSON struct {
258+
Success respjson.Field
259+
ExtraFields map[string]respjson.Field
260+
raw string
261+
} `json:"-"`
262+
}
263+
264+
// Returns the unmodified JSON received from the API
265+
func (r ChatArchiveResponse) RawJSON() string { return r.JSON.raw }
266+
func (r *ChatArchiveResponse) UnmarshalJSON(data []byte) error {
267+
return apijson.UnmarshalRoot(data, r)
268+
}
269+
257270
type ChatNewParams struct {
258271
// Account to create the chat on.
259272
AccountID string `json:"accountID,required"`

chat_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func TestChatArchiveWithOptionalParams(t *testing.T) {
108108
option.WithBaseURL(baseURL),
109109
option.WithAccessToken("My Access Token"),
110110
)
111-
err := client.Chats.Archive(
111+
_, err := client.Chats.Archive(
112112
context.TODO(),
113113
"!NCdzlIaMjZUmvmvyHU:beeper.com",
114114
beeperdesktopapi.ChatArchiveParams{

0 commit comments

Comments
 (0)