carlyemail 0.6.4 → 0.6.6

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.
package/carlyemail.js CHANGED
@@ -18,7 +18,7 @@ import { basename, extname, join } from "node:path";
18
18
  import { fileURLToPath } from "node:url";
19
19
  import { randomBytes } from "node:crypto";
20
20
 
21
- export const VERSION = "0.6.4";
21
+ export const VERSION = "0.6.6";
22
22
 
23
23
  const DEFAULT_API = "https://api.carlyemail.com";
24
24
  const CONFIG_DIR = join(homedir(), ".carlyemail");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carlyemail",
3
- "version": "0.6.4",
3
+ "version": "0.6.6",
4
4
  "description": "Real email inboxes your agent can send, receive and reply from. SDK and CLI.",
5
5
  "keywords": [
6
6
  "email",
package/sdk.d.ts CHANGED
@@ -1,5 +1,13 @@
1
1
  // Generated by scripts/build_sdk.py from the OpenAPI spec. Do not edit.
2
2
 
3
+ export interface Actor {
4
+ type: string;
5
+ member_id?: string | null;
6
+ api_key_id?: string | null;
7
+ name?: string | null;
8
+ email?: string | null;
9
+ }
10
+
3
11
  export interface AgentSigninRequest {
4
12
  human_email: string;
5
13
  }
@@ -11,6 +19,7 @@ export interface AgentSigninResponse {
11
19
  export interface AgentSigninVerifyRequest {
12
20
  human_email: string;
13
21
  otp_code: string;
22
+ organization_id?: string | null;
14
23
  }
15
24
 
16
25
  export interface AgentSigninVerifyResponse {
@@ -18,6 +27,8 @@ export interface AgentSigninVerifyResponse {
18
27
  api_key: string;
19
28
  inbox_domain?: string | null;
20
29
  inboxes_on_signup_domain?: Array<string>;
30
+ member?: MemberOut | null;
31
+ organizations?: Array<OrganizationChoice>;
21
32
  }
22
33
 
23
34
  export interface AgentSignupRequest {
@@ -161,6 +172,10 @@ export interface CreateListEntryRequest {
161
172
  reason?: string | null;
162
173
  }
163
174
 
175
+ export interface CreateNoteRequest {
176
+ text: string;
177
+ }
178
+
164
179
  export interface CreatePodRequest {
165
180
  name?: string | null;
166
181
  client_id?: string | null;
@@ -188,6 +203,14 @@ export interface DomainOut {
188
203
  created_at: string;
189
204
  }
190
205
 
206
+ export interface DraftInProgress {
207
+ draft_id: string;
208
+ created_by?: Actor | null;
209
+ updated_by?: Actor | null;
210
+ send_at?: string | null;
211
+ updated_at: string;
212
+ }
213
+
191
214
  export interface DraftOut {
192
215
  inbox_id: string;
193
216
  draft_id: string;
@@ -207,6 +230,8 @@ export interface DraftOut {
207
230
  references?: Array<string>;
208
231
  send_status?: string | null;
209
232
  send_at?: string | null;
233
+ created_by?: Actor | null;
234
+ updated_by?: Actor | null;
210
235
  updated_at: string;
211
236
  created_at: string;
212
237
  }
@@ -255,6 +280,8 @@ export interface Identity {
255
280
  pod_id?: string | null;
256
281
  inbox_id?: string | null;
257
282
  api_key_id?: string | null;
283
+ member?: MemberOut | null;
284
+ organizations?: Array<OrganizationChoice>;
258
285
  }
259
286
 
260
287
  export interface InboxEventOut {
@@ -265,6 +292,7 @@ export interface InboxEventOut {
265
292
  event_type: "label.added" | "label.removed";
266
293
  message_id?: string | null;
267
294
  label?: string | null;
295
+ actor?: Actor | null;
268
296
  event_at: string;
269
297
  created_at: string;
270
298
  }
@@ -280,6 +308,13 @@ export interface InboxOut {
280
308
  created_at: string;
281
309
  }
282
310
 
311
+ export interface InviteMemberRequest {
312
+ email: string;
313
+ role?: string | null;
314
+ inbox_ids?: Array<string> | null;
315
+ name?: string | null;
316
+ }
317
+
283
318
  export interface ListApiKeysResponse {
284
319
  count: number;
285
320
  next_page_token?: string | null;
@@ -341,6 +376,11 @@ export interface ListListEntriesResponse {
341
376
  entries: Array<ListEntryOut>;
342
377
  }
343
378
 
379
+ export interface ListMembersResponse {
380
+ count: number;
381
+ members: Array<MemberOut>;
382
+ }
383
+
344
384
  export interface ListMessagesResponse {
345
385
  count: number;
346
386
  limit?: number | null;
@@ -348,6 +388,11 @@ export interface ListMessagesResponse {
348
388
  messages: Array<MessageItem>;
349
389
  }
350
390
 
391
+ export interface ListNotesResponse {
392
+ count: number;
393
+ notes: Array<NoteOut>;
394
+ }
395
+
351
396
  export interface ListPodsResponse {
352
397
  count: number;
353
398
  limit?: number | null;
@@ -374,6 +419,18 @@ export interface ListWebhooksResponse {
374
419
  webhooks: Array<WebhookOut>;
375
420
  }
376
421
 
422
+ export interface MemberOut {
423
+ member_id: string;
424
+ email: string;
425
+ name?: string | null;
426
+ role: string;
427
+ inbox_ids?: Array<string>;
428
+ status: string;
429
+ joined_at?: string | null;
430
+ last_signed_in_at?: string | null;
431
+ created_at?: string | null;
432
+ }
433
+
377
434
  export interface MessageItem {
378
435
  inbox_id: string;
379
436
  thread_id: string;
@@ -389,6 +446,7 @@ export interface MessageItem {
389
446
  preview?: string | null;
390
447
  attachments?: Array<AttachmentOut>;
391
448
  size?: number;
449
+ sent_by?: Actor | null;
392
450
  updated_at: string;
393
451
  created_at: string;
394
452
  }
@@ -408,6 +466,7 @@ export interface MessageOut {
408
466
  preview?: string | null;
409
467
  attachments?: Array<AttachmentOut>;
410
468
  size?: number;
469
+ sent_by?: Actor | null;
411
470
  updated_at: string;
412
471
  created_at: string;
413
472
  text?: string | null;
@@ -420,17 +479,37 @@ export interface MessageOut {
420
479
  authentication?: Record<string, string>;
421
480
  }
422
481
 
482
+ export interface NoteOut {
483
+ note_id: string;
484
+ thread_id: string;
485
+ inbox_id: string;
486
+ text: string;
487
+ author?: Actor | null;
488
+ created_at: string;
489
+ }
490
+
491
+ export interface OrganizationChoice {
492
+ organization_id: string;
493
+ name?: string | null;
494
+ role: string;
495
+ status: string;
496
+ }
497
+
423
498
  export interface OrganizationOut {
424
499
  organization_id: string;
500
+ human_email?: string | null;
501
+ name?: string | null;
425
502
  inbox_count: number;
426
503
  domain_count: number;
427
504
  pod_count?: number;
428
505
  webhook_count?: number;
506
+ member_count?: number;
429
507
  storage_bytes?: number;
430
508
  inbox_limit?: number | null;
431
509
  domain_limit?: number | null;
432
510
  pod_limit?: number | null;
433
511
  webhook_limit?: number | null;
512
+ member_limit?: number | null;
434
513
  storage_limit_bytes?: number | null;
435
514
  plan?: string | null;
436
515
  billing_id?: string | null;
@@ -510,6 +589,16 @@ export interface SendMessageResponse {
510
589
  thread_id: string;
511
590
  }
512
591
 
592
+ export interface SwitchRequest {
593
+ organization_id: string;
594
+ }
595
+
596
+ export interface SwitchResponse {
597
+ organization_id: string;
598
+ api_key: string;
599
+ member: MemberOut;
600
+ }
601
+
513
602
  export interface ThreadItem {
514
603
  inbox_id: string;
515
604
  thread_id: string;
@@ -525,6 +614,7 @@ export interface ThreadItem {
525
614
  last_message_id?: string | null;
526
615
  message_count?: number;
527
616
  size?: number;
617
+ assignee?: Actor | null;
528
618
  updated_at: string;
529
619
  created_at: string;
530
620
  }
@@ -544,9 +634,12 @@ export interface ThreadOut {
544
634
  last_message_id?: string | null;
545
635
  message_count?: number;
546
636
  size?: number;
637
+ assignee?: Actor | null;
547
638
  updated_at: string;
548
639
  created_at: string;
549
640
  messages?: Array<MessageOut>;
641
+ notes?: Array<NoteOut>;
642
+ drafts?: Array<DraftInProgress>;
550
643
  }
551
644
 
552
645
  export interface UpdateDomainRequest {
@@ -579,6 +672,12 @@ export interface UpdateInboxWebhookRequest {
579
672
  enabled?: boolean | null;
580
673
  }
581
674
 
675
+ export interface UpdateMemberRequest {
676
+ role?: string | null;
677
+ inbox_ids?: Array<string> | null;
678
+ name?: string | null;
679
+ }
680
+
582
681
  export interface UpdateMessageRequest {
583
682
  add_labels?: Array<string> | null;
584
683
  remove_labels?: Array<string> | null;
@@ -592,11 +691,13 @@ export interface UpdateMessageResponse {
592
691
  export interface UpdateThreadRequest {
593
692
  add_labels?: Array<string> | null;
594
693
  remove_labels?: Array<string> | null;
694
+ assignee_id?: string | null;
595
695
  }
596
696
 
597
697
  export interface UpdateThreadResponse {
598
698
  thread_id: string;
599
699
  labels: Array<string>;
700
+ assignee?: Actor | null;
600
701
  }
601
702
 
602
703
  export interface UpdateWebhookHeadersRequest {
@@ -685,6 +786,7 @@ export declare class Agent {
685
786
 
686
787
  export declare class Auth {
687
788
  whoami(): Promise<Identity>;
789
+ switchOrganization(body: SwitchRequest): Promise<SwitchResponse>;
688
790
  }
689
791
 
690
792
  export declare class Billing {
@@ -722,13 +824,16 @@ export declare class Messages {
722
824
  }
723
825
 
724
826
  export declare class Threads {
725
- list(inboxId: string, query?: { limit?: number | null; pageToken?: string | null; labels?: Array<string> | null; before?: string | null; after?: string | null; ascending?: boolean; senders?: Array<string> | null; recipients?: Array<string> | null; subject?: string | null }): Promise<ListThreadsResponse>;
827
+ list(inboxId: string, query?: { limit?: number | null; pageToken?: string | null; labels?: Array<string> | null; before?: string | null; after?: string | null; ascending?: boolean; senders?: Array<string> | null; recipients?: Array<string> | null; subject?: string | null; assignee?: string | null }): Promise<ListThreadsResponse>;
726
828
  search(inboxId: string, query?: { q?: string; limit?: number | null; pageToken?: string | null; before?: string | null; after?: string | null }): Promise<ListThreadsResponse>;
727
829
  getAttachment(inboxId: string, threadId: string, attachmentId: string): Promise<AttachmentResponse>;
728
830
  get(inboxId: string, threadId: string): Promise<ThreadOut>;
729
831
  update(inboxId: string, threadId: string, body: UpdateThreadRequest): Promise<UpdateThreadResponse>;
730
832
  delete(inboxId: string, threadId: string): Promise<void>;
731
- listOrg(query?: { limit?: number | null; pageToken?: string | null; labels?: Array<string> | null; before?: string | null; after?: string | null; ascending?: boolean; includeSpam?: boolean; includeBlocked?: boolean; includeUnauthenticated?: boolean; includeTrash?: boolean; senders?: Array<string> | null; recipients?: Array<string> | null; subject?: string | null }): Promise<ListThreadsResponse>;
833
+ listNotes(inboxId: string, threadId: string): Promise<ListNotesResponse>;
834
+ addNote(inboxId: string, threadId: string, body: CreateNoteRequest): Promise<NoteOut>;
835
+ deleteNote(inboxId: string, threadId: string, noteId: string): Promise<void>;
836
+ listOrg(query?: { limit?: number | null; pageToken?: string | null; labels?: Array<string> | null; before?: string | null; after?: string | null; ascending?: boolean; includeSpam?: boolean; includeBlocked?: boolean; includeUnauthenticated?: boolean; includeTrash?: boolean; senders?: Array<string> | null; recipients?: Array<string> | null; subject?: string | null; assignee?: string | null }): Promise<ListThreadsResponse>;
732
837
  searchOrg(query?: { q?: string; limit?: number | null; pageToken?: string | null; before?: string | null; after?: string | null }): Promise<ListThreadsResponse>;
733
838
  getOrg(threadId: string): Promise<ThreadOut>;
734
839
  updateOrg(threadId: string, body: UpdateThreadRequest): Promise<UpdateThreadResponse>;
@@ -779,6 +884,14 @@ export declare class ApiKeys {
779
884
  deleteInbox(inboxId: string, apiKeyId: string): Promise<void>;
780
885
  }
781
886
 
887
+ export declare class Members {
888
+ list(): Promise<ListMembersResponse>;
889
+ invite(body: InviteMemberRequest): Promise<MemberOut>;
890
+ get(memberId: string): Promise<MemberOut>;
891
+ update(memberId: string, body: UpdateMemberRequest): Promise<MemberOut>;
892
+ remove(memberId: string): Promise<void>;
893
+ }
894
+
782
895
  export declare class Events {
783
896
  list(query?: { eventTypes?: Array<string> | null; inboxId?: string | null; start?: string | null; end?: string | null; limit?: number | null; pageToken?: string | null }): Promise<ListEventsResponse>;
784
897
  }
@@ -800,7 +913,7 @@ export declare class Pods {
800
913
  getInbox(inboxId: string, podId: string): Promise<InboxOut>;
801
914
  updateInbox(inboxId: string, podId: string, body: UpdateInboxRequest): Promise<InboxOut>;
802
915
  deleteInbox(inboxId: string, podId: string, query?: { force?: boolean }): Promise<void>;
803
- listThreads(podId: string, query?: { limit?: number | null; pageToken?: string | null; labels?: Array<string> | null; before?: string | null; after?: string | null; ascending?: boolean; includeSpam?: boolean; includeBlocked?: boolean; includeUnauthenticated?: boolean; includeTrash?: boolean; senders?: Array<string> | null; recipients?: Array<string> | null; subject?: string | null }): Promise<ListThreadsResponse>;
916
+ listThreads(podId: string, query?: { limit?: number | null; pageToken?: string | null; labels?: Array<string> | null; before?: string | null; after?: string | null; ascending?: boolean; includeSpam?: boolean; includeBlocked?: boolean; includeUnauthenticated?: boolean; includeTrash?: boolean; senders?: Array<string> | null; recipients?: Array<string> | null; subject?: string | null; assignee?: string | null }): Promise<ListThreadsResponse>;
804
917
  searchThreads(podId: string, query?: { q?: string; limit?: number | null; pageToken?: string | null; before?: string | null; after?: string | null }): Promise<ListThreadsResponse>;
805
918
  getThread(threadId: string, podId: string): Promise<ThreadOut>;
806
919
  updateThread(threadId: string, podId: string, body: UpdateThreadRequest): Promise<UpdateThreadResponse>;
@@ -874,6 +987,7 @@ export declare class CarlyEmail {
874
987
  lists: Lists;
875
988
  domains: Domains;
876
989
  apiKeys: ApiKeys;
990
+ members: Members;
877
991
  events: Events;
878
992
  metrics: Metrics;
879
993
  pods: Pods;
package/sdk.js CHANGED
@@ -103,6 +103,11 @@ class Auth {
103
103
  whoami() {
104
104
  return this.$.request("GET", `/v0/auth/me`);
105
105
  }
106
+
107
+ /** Switch Organization */
108
+ switchOrganization(body) {
109
+ return this.$.request("POST", `/v0/auth/switch`, { body });
110
+ }
106
111
  }
107
112
 
108
113
  class Billing {
@@ -246,7 +251,7 @@ class Threads {
246
251
 
247
252
  /** List Threads */
248
253
  list(inboxId, query = {}) {
249
- return this.$.request("GET", `/v0/inboxes/${encode(inboxId)}/threads`, { query: { "limit": query.limit, "page_token": query.pageToken, "labels": query.labels, "before": query.before, "after": query.after, "ascending": query.ascending, "senders": query.senders, "recipients": query.recipients, "subject": query.subject } });
254
+ return this.$.request("GET", `/v0/inboxes/${encode(inboxId)}/threads`, { query: { "limit": query.limit, "page_token": query.pageToken, "labels": query.labels, "before": query.before, "after": query.after, "ascending": query.ascending, "senders": query.senders, "recipients": query.recipients, "subject": query.subject, "assignee": query.assignee } });
250
255
  }
251
256
 
252
257
  /** Search Threads */
@@ -274,9 +279,24 @@ class Threads {
274
279
  return this.$.request("DELETE", `/v0/inboxes/${encode(inboxId)}/threads/${encode(threadId)}`);
275
280
  }
276
281
 
282
+ /** List Notes */
283
+ listNotes(inboxId, threadId) {
284
+ return this.$.request("GET", `/v0/inboxes/${encode(inboxId)}/threads/${encode(threadId)}/notes`);
285
+ }
286
+
287
+ /** Add Note */
288
+ addNote(inboxId, threadId, body) {
289
+ return this.$.request("POST", `/v0/inboxes/${encode(inboxId)}/threads/${encode(threadId)}/notes`, { body });
290
+ }
291
+
292
+ /** Delete Note */
293
+ deleteNote(inboxId, threadId, noteId) {
294
+ return this.$.request("DELETE", `/v0/inboxes/${encode(inboxId)}/threads/${encode(threadId)}/notes/${encode(noteId)}`);
295
+ }
296
+
277
297
  /** List Threads */
278
298
  listOrg(query = {}) {
279
- return this.$.request("GET", `/v0/threads`, { query: { "limit": query.limit, "page_token": query.pageToken, "labels": query.labels, "before": query.before, "after": query.after, "ascending": query.ascending, "include_spam": query.includeSpam, "include_blocked": query.includeBlocked, "include_unauthenticated": query.includeUnauthenticated, "include_trash": query.includeTrash, "senders": query.senders, "recipients": query.recipients, "subject": query.subject } });
299
+ return this.$.request("GET", `/v0/threads`, { query: { "limit": query.limit, "page_token": query.pageToken, "labels": query.labels, "before": query.before, "after": query.after, "ascending": query.ascending, "include_spam": query.includeSpam, "include_blocked": query.includeBlocked, "include_unauthenticated": query.includeUnauthenticated, "include_trash": query.includeTrash, "senders": query.senders, "recipients": query.recipients, "subject": query.subject, "assignee": query.assignee } });
280
300
  }
281
301
 
282
302
  /** Search Threads */
@@ -484,6 +504,37 @@ class ApiKeys {
484
504
  }
485
505
  }
486
506
 
507
+ class Members {
508
+ constructor(transport) {
509
+ this.$ = transport;
510
+ }
511
+
512
+ /** List Members */
513
+ list() {
514
+ return this.$.request("GET", `/v0/members`);
515
+ }
516
+
517
+ /** Invite Member */
518
+ invite(body) {
519
+ return this.$.request("POST", `/v0/members`, { body });
520
+ }
521
+
522
+ /** Get Member */
523
+ get(memberId) {
524
+ return this.$.request("GET", `/v0/members/${encode(memberId)}`);
525
+ }
526
+
527
+ /** Update Member */
528
+ update(memberId, body) {
529
+ return this.$.request("PATCH", `/v0/members/${encode(memberId)}`, { body });
530
+ }
531
+
532
+ /** Remove Member */
533
+ remove(memberId) {
534
+ return this.$.request("DELETE", `/v0/members/${encode(memberId)}`);
535
+ }
536
+ }
537
+
487
538
  class Events {
488
539
  constructor(transport) {
489
540
  this.$ = transport;
@@ -573,7 +624,7 @@ class Pods {
573
624
 
574
625
  /** List Threads */
575
626
  listThreads(podId, query = {}) {
576
- return this.$.request("GET", `/v0/pods/${encode(podId)}/threads`, { query: { "limit": query.limit, "page_token": query.pageToken, "labels": query.labels, "before": query.before, "after": query.after, "ascending": query.ascending, "include_spam": query.includeSpam, "include_blocked": query.includeBlocked, "include_unauthenticated": query.includeUnauthenticated, "include_trash": query.includeTrash, "senders": query.senders, "recipients": query.recipients, "subject": query.subject } });
627
+ return this.$.request("GET", `/v0/pods/${encode(podId)}/threads`, { query: { "limit": query.limit, "page_token": query.pageToken, "labels": query.labels, "before": query.before, "after": query.after, "ascending": query.ascending, "include_spam": query.includeSpam, "include_blocked": query.includeBlocked, "include_unauthenticated": query.includeUnauthenticated, "include_trash": query.includeTrash, "senders": query.senders, "recipients": query.recipients, "subject": query.subject, "assignee": query.assignee } });
577
628
  }
578
629
 
579
630
  /** Search Threads */
@@ -854,6 +905,7 @@ export class CarlyEmail {
854
905
  this.lists = new Lists(transport);
855
906
  this.domains = new Domains(transport);
856
907
  this.apiKeys = new ApiKeys(transport);
908
+ this.members = new Members(transport);
857
909
  this.events = new Events(transport);
858
910
  this.metrics = new Metrics(transport);
859
911
  this.pods = new Pods(transport);