agentmail 0.5.36 → 0.5.37

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.
@@ -43,8 +43,8 @@ function normalizeClientOptions(options) {
43
43
  const headers = (0, headers_js_1.mergeHeaders)({
44
44
  "X-Fern-Language": "JavaScript",
45
45
  "X-Fern-SDK-Name": "agentmail",
46
- "X-Fern-SDK-Version": "0.5.36",
47
- "User-Agent": "agentmail/0.5.36",
46
+ "X-Fern-SDK-Version": "0.5.37",
47
+ "User-Agent": "agentmail/0.5.37",
48
48
  "X-Fern-Runtime": core.RUNTIME.type,
49
49
  "X-Fern-Runtime-Version": core.RUNTIME.version,
50
50
  }, options === null || options === void 0 ? void 0 : options.headers);
@@ -15,7 +15,7 @@ export declare class AgentClient {
15
15
  *
16
16
  * A 6-digit OTP is sent to the human's email for verification.
17
17
  *
18
- * `human_email` is optional. Without it, the inbox can receive email but cannot send to anyone until a human is attached with the attach human endpoint. There is also no way to recover the API key, so store it durably. Calling sign-up again without `human_email` creates a new organization, which needs a different `username`: the original username stays with the lost organization's inbox.
18
+ * `human_email` is optional. Without it, the inbox can receive email but cannot send to anyone until a human is attached with the attach human endpoint or, for a US-region inbox, claims it in the AgentMail Console with the API key (see [How do I claim my agent's inbox?](https://docs.agentmail.to/knowledge-base/claiming-agent-inbox)). There is also no way to recover the API key, so store it durably. Calling sign-up again without `human_email` creates a new organization, which needs a different `username`: the original username stays with the lost organization's inbox.
19
19
  *
20
20
  * This endpoint is idempotent. Calling it again with the same `human_email` will rotate the API key and resend the OTP if expired.
21
21
  *
@@ -61,7 +61,7 @@ class AgentClient {
61
61
  *
62
62
  * A 6-digit OTP is sent to the human's email for verification.
63
63
  *
64
- * `human_email` is optional. Without it, the inbox can receive email but cannot send to anyone until a human is attached with the attach human endpoint. There is also no way to recover the API key, so store it durably. Calling sign-up again without `human_email` creates a new organization, which needs a different `username`: the original username stays with the lost organization's inbox.
64
+ * `human_email` is optional. Without it, the inbox can receive email but cannot send to anyone until a human is attached with the attach human endpoint or, for a US-region inbox, claims it in the AgentMail Console with the API key (see [How do I claim my agent's inbox?](https://docs.agentmail.to/knowledge-base/claiming-agent-inbox)). There is also no way to recover the API key, so store it durably. Calling sign-up again without `human_email` creates a new organization, which needs a different `username`: the original username stays with the lost organization's inbox.
65
65
  *
66
66
  * This endpoint is idempotent. Calling it again with the same `human_email` will rotate the API key and resend the OTP if expired.
67
67
  *
@@ -39,44 +39,47 @@ export declare class AppsClient {
39
39
  search(request: AgentMail.SearchAppsRequest, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.SearchAppsResponse>;
40
40
  private __search;
41
41
  /**
42
- * Gets one app by ID. An app in the catalog returns its full entry.
42
+ * Gets one app by ID or slug. A catalog app returns its full entry.
43
43
  * A registered app that the catalog does not list returns its ID and
44
44
  * name only, without `updated_at`, so anyone holding its ID can still look
45
- * it up. List Apps and Search Apps show catalog entries only.
45
+ * it up; a slug finds catalog apps only. List Apps and Search Apps show
46
+ * catalog entries only.
46
47
  *
47
- * @param {AgentMail.AppId} app_id
48
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
48
49
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
49
50
  *
50
51
  * @throws {@link AgentMail.NotFoundError}
51
52
  *
52
53
  * @example
53
- * await client.apps.get("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32")
54
+ * await client.apps.get("app_id")
54
55
  */
55
- get(app_id: AgentMail.AppId, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.App>;
56
+ get(app_id: string, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.App>;
56
57
  private __get;
57
58
  /**
58
59
  * Lists accounts at one app, most recent sign-in first.
59
60
  *
60
- * @param {AgentMail.AppId} app_id
61
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
61
62
  * @param {AgentMail.ListAppAccountsRequest} request
62
63
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
63
64
  *
64
65
  * @throws {@link AgentMail.ValidationError}
65
66
  *
66
67
  * @example
67
- * await client.apps.listAccounts("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32")
68
+ * await client.apps.listAccounts("app_id")
68
69
  */
69
- listAccounts(app_id: AgentMail.AppId, request?: AgentMail.ListAppAccountsRequest, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.ListAppAccountsResponse>;
70
+ listAccounts(app_id: string, request?: AgentMail.ListAppAccountsRequest, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.ListAppAccountsResponse>;
70
71
  private __listAccounts;
71
72
  /**
72
73
  * Starts signing an inbox in to an app. Returns a single-use `magic_url`,
73
74
  * valid for five minutes, to open in the client that will hold the sign-in;
74
75
  * the client enrolls as the inbox and continues to the app.
76
+ * An app in the catalog can be named by its `slug`, as in
77
+ * `POST /v0/apps/firecrawl/connect`.
75
78
  * A `404` names the missing resource: `App` or `Inbox`.
76
79
  * A `403` `AppSignupLimitError` means the app accepts no more sign-ups from
77
80
  * your organization; sign in with an inbox that already has an account there.
78
81
  *
79
- * @param {AgentMail.AppId} app_id
82
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
80
83
  * @param {AgentMail.ConnectAppBody} request
81
84
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
82
85
  *
@@ -85,8 +88,8 @@ export declare class AppsClient {
85
88
  * @throws {@link AgentMail.AppSignupLimitError}
86
89
  *
87
90
  * @example
88
- * await client.apps.connect("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32", undefined)
91
+ * await client.apps.connect("app_id", undefined)
89
92
  */
90
- connect(app_id: AgentMail.AppId, request?: AgentMail.ConnectAppBody, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.ConnectAccepted>;
93
+ connect(app_id: string, request?: AgentMail.ConnectAppBody, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.ConnectAccepted>;
91
94
  private __connect;
92
95
  }
@@ -203,18 +203,19 @@ class AppsClient {
203
203
  });
204
204
  }
205
205
  /**
206
- * Gets one app by ID. An app in the catalog returns its full entry.
206
+ * Gets one app by ID or slug. A catalog app returns its full entry.
207
207
  * A registered app that the catalog does not list returns its ID and
208
208
  * name only, without `updated_at`, so anyone holding its ID can still look
209
- * it up. List Apps and Search Apps show catalog entries only.
209
+ * it up; a slug finds catalog apps only. List Apps and Search Apps show
210
+ * catalog entries only.
210
211
  *
211
- * @param {AgentMail.AppId} app_id
212
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
212
213
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
213
214
  *
214
215
  * @throws {@link AgentMail.NotFoundError}
215
216
  *
216
217
  * @example
217
- * await client.apps.get("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32")
218
+ * await client.apps.get("app_id")
218
219
  */
219
220
  get(app_id, requestOptions) {
220
221
  return core.HttpResponsePromise.fromPromise(this.__get(app_id, requestOptions));
@@ -226,7 +227,7 @@ class AppsClient {
226
227
  const _headers = (0, headers_js_1.mergeHeaders)(_authRequest.headers, (_a = this._options) === null || _a === void 0 ? void 0 : _a.headers, requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers);
227
228
  const _response = yield core.fetcher({
228
229
  url: core.url.join((_b = (yield core.Supplier.get(this._options.baseUrl))) !== null && _b !== void 0 ? _b : ((_c = (yield core.Supplier.get(this._options.environment))) !== null && _c !== void 0 ? _c : environments.AgentMailEnvironment.Prod)
229
- .http, `/v0/apps/${core.url.encodePathParam(serializers.AppId.jsonOrThrow(app_id, { omitUndefined: true }))}`),
230
+ .http, `/v0/apps/${core.url.encodePathParam(app_id)}`),
230
231
  method: "GET",
231
232
  headers: _headers,
232
233
  queryParameters: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.queryParams,
@@ -272,14 +273,14 @@ class AppsClient {
272
273
  /**
273
274
  * Lists accounts at one app, most recent sign-in first.
274
275
  *
275
- * @param {AgentMail.AppId} app_id
276
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
276
277
  * @param {AgentMail.ListAppAccountsRequest} request
277
278
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
278
279
  *
279
280
  * @throws {@link AgentMail.ValidationError}
280
281
  *
281
282
  * @example
282
- * await client.apps.listAccounts("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32")
283
+ * await client.apps.listAccounts("app_id")
283
284
  */
284
285
  listAccounts(app_id, request = {}, requestOptions) {
285
286
  return core.HttpResponsePromise.fromPromise(this.__listAccounts(app_id, request, requestOptions));
@@ -296,7 +297,7 @@ class AppsClient {
296
297
  const _headers = (0, headers_js_1.mergeHeaders)(_authRequest.headers, (_a = this._options) === null || _a === void 0 ? void 0 : _a.headers, requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers);
297
298
  const _response = yield core.fetcher({
298
299
  url: core.url.join((_b = (yield core.Supplier.get(this._options.baseUrl))) !== null && _b !== void 0 ? _b : ((_c = (yield core.Supplier.get(this._options.environment))) !== null && _c !== void 0 ? _c : environments.AgentMailEnvironment.Prod)
299
- .http, `/v0/apps/${core.url.encodePathParam(serializers.AppId.jsonOrThrow(app_id, { omitUndefined: true }))}/accounts`),
300
+ .http, `/v0/apps/${core.url.encodePathParam(app_id)}/accounts`),
300
301
  method: "GET",
301
302
  headers: _headers,
302
303
  queryParameters: Object.assign(Object.assign({}, _queryParams), requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.queryParams),
@@ -343,11 +344,13 @@ class AppsClient {
343
344
  * Starts signing an inbox in to an app. Returns a single-use `magic_url`,
344
345
  * valid for five minutes, to open in the client that will hold the sign-in;
345
346
  * the client enrolls as the inbox and continues to the app.
347
+ * An app in the catalog can be named by its `slug`, as in
348
+ * `POST /v0/apps/firecrawl/connect`.
346
349
  * A `404` names the missing resource: `App` or `Inbox`.
347
350
  * A `403` `AppSignupLimitError` means the app accepts no more sign-ups from
348
351
  * your organization; sign in with an inbox that already has an account there.
349
352
  *
350
- * @param {AgentMail.AppId} app_id
353
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
351
354
  * @param {AgentMail.ConnectAppBody} request
352
355
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
353
356
  *
@@ -356,7 +359,7 @@ class AppsClient {
356
359
  * @throws {@link AgentMail.AppSignupLimitError}
357
360
  *
358
361
  * @example
359
- * await client.apps.connect("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32", undefined)
362
+ * await client.apps.connect("app_id", undefined)
360
363
  */
361
364
  connect(app_id, request, requestOptions) {
362
365
  return core.HttpResponsePromise.fromPromise(this.__connect(app_id, request, requestOptions));
@@ -368,7 +371,7 @@ class AppsClient {
368
371
  const _headers = (0, headers_js_1.mergeHeaders)(_authRequest.headers, (_a = this._options) === null || _a === void 0 ? void 0 : _a.headers, requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers);
369
372
  const _response = yield core.fetcher({
370
373
  url: core.url.join((_b = (yield core.Supplier.get(this._options.baseUrl))) !== null && _b !== void 0 ? _b : ((_c = (yield core.Supplier.get(this._options.environment))) !== null && _c !== void 0 ? _c : environments.AgentMailEnvironment.Prod)
371
- .http, `/v0/apps/${core.url.encodePathParam(serializers.AppId.jsonOrThrow(app_id, { omitUndefined: true }))}/connect`),
374
+ .http, `/v0/apps/${core.url.encodePathParam(app_id)}/connect`),
372
375
  method: "POST",
373
376
  headers: _headers,
374
377
  contentType: "application/json",
@@ -4,6 +4,8 @@ import type * as AgentMail from "../../../index.js";
4
4
  */
5
5
  export interface App {
6
6
  appId: AgentMail.AppId;
7
+ /** Short name accepted in place of `app_id` by Get App, List App Accounts and Connect App. Set by AgentMail on apps in the catalog; renaming the app does not change it. Store `app_id`, the app's permanent ID. */
8
+ slug?: string;
7
9
  name?: string;
8
10
  /** Time at which app was last updated. */
9
11
  updatedAt?: Date;
@@ -7,6 +7,7 @@ export declare const App: core.serialization.ObjectSchema<serializers.App.Raw, A
7
7
  export declare namespace App {
8
8
  interface Raw {
9
9
  app_id: AppId.Raw;
10
+ slug?: string | null;
10
11
  name?: string | null;
11
12
  updated_at?: string | null;
12
13
  description?: string | null;
@@ -40,6 +40,7 @@ const AppCategory_js_1 = require("./AppCategory.js");
40
40
  const AppId_js_1 = require("./AppId.js");
41
41
  exports.App = core.serialization.object({
42
42
  appId: core.serialization.property("app_id", AppId_js_1.AppId),
43
+ slug: core.serialization.string().optional(),
43
44
  name: core.serialization.string().optional(),
44
45
  updatedAt: core.serialization.property("updated_at", core.serialization.date().optional()),
45
46
  description: core.serialization.string().optional(),
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "0.5.36";
1
+ export declare const SDK_VERSION = "0.5.37";
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SDK_VERSION = void 0;
4
- exports.SDK_VERSION = "0.5.36";
4
+ exports.SDK_VERSION = "0.5.37";
@@ -6,8 +6,8 @@ export function normalizeClientOptions(options) {
6
6
  const headers = mergeHeaders({
7
7
  "X-Fern-Language": "JavaScript",
8
8
  "X-Fern-SDK-Name": "agentmail",
9
- "X-Fern-SDK-Version": "0.5.36",
10
- "User-Agent": "agentmail/0.5.36",
9
+ "X-Fern-SDK-Version": "0.5.37",
10
+ "User-Agent": "agentmail/0.5.37",
11
11
  "X-Fern-Runtime": core.RUNTIME.type,
12
12
  "X-Fern-Runtime-Version": core.RUNTIME.version,
13
13
  }, options === null || options === void 0 ? void 0 : options.headers);
@@ -15,7 +15,7 @@ export declare class AgentClient {
15
15
  *
16
16
  * A 6-digit OTP is sent to the human's email for verification.
17
17
  *
18
- * `human_email` is optional. Without it, the inbox can receive email but cannot send to anyone until a human is attached with the attach human endpoint. There is also no way to recover the API key, so store it durably. Calling sign-up again without `human_email` creates a new organization, which needs a different `username`: the original username stays with the lost organization's inbox.
18
+ * `human_email` is optional. Without it, the inbox can receive email but cannot send to anyone until a human is attached with the attach human endpoint or, for a US-region inbox, claims it in the AgentMail Console with the API key (see [How do I claim my agent's inbox?](https://docs.agentmail.to/knowledge-base/claiming-agent-inbox)). There is also no way to recover the API key, so store it durably. Calling sign-up again without `human_email` creates a new organization, which needs a different `username`: the original username stays with the lost organization's inbox.
19
19
  *
20
20
  * This endpoint is idempotent. Calling it again with the same `human_email` will rotate the API key and resend the OTP if expired.
21
21
  *
@@ -25,7 +25,7 @@ export class AgentClient {
25
25
  *
26
26
  * A 6-digit OTP is sent to the human's email for verification.
27
27
  *
28
- * `human_email` is optional. Without it, the inbox can receive email but cannot send to anyone until a human is attached with the attach human endpoint. There is also no way to recover the API key, so store it durably. Calling sign-up again without `human_email` creates a new organization, which needs a different `username`: the original username stays with the lost organization's inbox.
28
+ * `human_email` is optional. Without it, the inbox can receive email but cannot send to anyone until a human is attached with the attach human endpoint or, for a US-region inbox, claims it in the AgentMail Console with the API key (see [How do I claim my agent's inbox?](https://docs.agentmail.to/knowledge-base/claiming-agent-inbox)). There is also no way to recover the API key, so store it durably. Calling sign-up again without `human_email` creates a new organization, which needs a different `username`: the original username stays with the lost organization's inbox.
29
29
  *
30
30
  * This endpoint is idempotent. Calling it again with the same `human_email` will rotate the API key and resend the OTP if expired.
31
31
  *
@@ -39,44 +39,47 @@ export declare class AppsClient {
39
39
  search(request: AgentMail.SearchAppsRequest, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.SearchAppsResponse>;
40
40
  private __search;
41
41
  /**
42
- * Gets one app by ID. An app in the catalog returns its full entry.
42
+ * Gets one app by ID or slug. A catalog app returns its full entry.
43
43
  * A registered app that the catalog does not list returns its ID and
44
44
  * name only, without `updated_at`, so anyone holding its ID can still look
45
- * it up. List Apps and Search Apps show catalog entries only.
45
+ * it up; a slug finds catalog apps only. List Apps and Search Apps show
46
+ * catalog entries only.
46
47
  *
47
- * @param {AgentMail.AppId} app_id
48
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
48
49
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
49
50
  *
50
51
  * @throws {@link AgentMail.NotFoundError}
51
52
  *
52
53
  * @example
53
- * await client.apps.get("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32")
54
+ * await client.apps.get("app_id")
54
55
  */
55
- get(app_id: AgentMail.AppId, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.App>;
56
+ get(app_id: string, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.App>;
56
57
  private __get;
57
58
  /**
58
59
  * Lists accounts at one app, most recent sign-in first.
59
60
  *
60
- * @param {AgentMail.AppId} app_id
61
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
61
62
  * @param {AgentMail.ListAppAccountsRequest} request
62
63
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
63
64
  *
64
65
  * @throws {@link AgentMail.ValidationError}
65
66
  *
66
67
  * @example
67
- * await client.apps.listAccounts("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32")
68
+ * await client.apps.listAccounts("app_id")
68
69
  */
69
- listAccounts(app_id: AgentMail.AppId, request?: AgentMail.ListAppAccountsRequest, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.ListAppAccountsResponse>;
70
+ listAccounts(app_id: string, request?: AgentMail.ListAppAccountsRequest, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.ListAppAccountsResponse>;
70
71
  private __listAccounts;
71
72
  /**
72
73
  * Starts signing an inbox in to an app. Returns a single-use `magic_url`,
73
74
  * valid for five minutes, to open in the client that will hold the sign-in;
74
75
  * the client enrolls as the inbox and continues to the app.
76
+ * An app in the catalog can be named by its `slug`, as in
77
+ * `POST /v0/apps/firecrawl/connect`.
75
78
  * A `404` names the missing resource: `App` or `Inbox`.
76
79
  * A `403` `AppSignupLimitError` means the app accepts no more sign-ups from
77
80
  * your organization; sign in with an inbox that already has an account there.
78
81
  *
79
- * @param {AgentMail.AppId} app_id
82
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
80
83
  * @param {AgentMail.ConnectAppBody} request
81
84
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
82
85
  *
@@ -85,8 +88,8 @@ export declare class AppsClient {
85
88
  * @throws {@link AgentMail.AppSignupLimitError}
86
89
  *
87
90
  * @example
88
- * await client.apps.connect("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32", undefined)
91
+ * await client.apps.connect("app_id", undefined)
89
92
  */
90
- connect(app_id: AgentMail.AppId, request?: AgentMail.ConnectAppBody, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.ConnectAccepted>;
93
+ connect(app_id: string, request?: AgentMail.ConnectAppBody, requestOptions?: AppsClient.RequestOptions): core.HttpResponsePromise<AgentMail.ConnectAccepted>;
91
94
  private __connect;
92
95
  }
@@ -167,18 +167,19 @@ export class AppsClient {
167
167
  });
168
168
  }
169
169
  /**
170
- * Gets one app by ID. An app in the catalog returns its full entry.
170
+ * Gets one app by ID or slug. A catalog app returns its full entry.
171
171
  * A registered app that the catalog does not list returns its ID and
172
172
  * name only, without `updated_at`, so anyone holding its ID can still look
173
- * it up. List Apps and Search Apps show catalog entries only.
173
+ * it up; a slug finds catalog apps only. List Apps and Search Apps show
174
+ * catalog entries only.
174
175
  *
175
- * @param {AgentMail.AppId} app_id
176
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
176
177
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
177
178
  *
178
179
  * @throws {@link AgentMail.NotFoundError}
179
180
  *
180
181
  * @example
181
- * await client.apps.get("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32")
182
+ * await client.apps.get("app_id")
182
183
  */
183
184
  get(app_id, requestOptions) {
184
185
  return core.HttpResponsePromise.fromPromise(this.__get(app_id, requestOptions));
@@ -190,7 +191,7 @@ export class AppsClient {
190
191
  const _headers = mergeHeaders(_authRequest.headers, (_a = this._options) === null || _a === void 0 ? void 0 : _a.headers, requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers);
191
192
  const _response = yield core.fetcher({
192
193
  url: core.url.join((_b = (yield core.Supplier.get(this._options.baseUrl))) !== null && _b !== void 0 ? _b : ((_c = (yield core.Supplier.get(this._options.environment))) !== null && _c !== void 0 ? _c : environments.AgentMailEnvironment.Prod)
193
- .http, `/v0/apps/${core.url.encodePathParam(serializers.AppId.jsonOrThrow(app_id, { omitUndefined: true }))}`),
194
+ .http, `/v0/apps/${core.url.encodePathParam(app_id)}`),
194
195
  method: "GET",
195
196
  headers: _headers,
196
197
  queryParameters: requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.queryParams,
@@ -236,14 +237,14 @@ export class AppsClient {
236
237
  /**
237
238
  * Lists accounts at one app, most recent sign-in first.
238
239
  *
239
- * @param {AgentMail.AppId} app_id
240
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
240
241
  * @param {AgentMail.ListAppAccountsRequest} request
241
242
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
242
243
  *
243
244
  * @throws {@link AgentMail.ValidationError}
244
245
  *
245
246
  * @example
246
- * await client.apps.listAccounts("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32")
247
+ * await client.apps.listAccounts("app_id")
247
248
  */
248
249
  listAccounts(app_id, request = {}, requestOptions) {
249
250
  return core.HttpResponsePromise.fromPromise(this.__listAccounts(app_id, request, requestOptions));
@@ -260,7 +261,7 @@ export class AppsClient {
260
261
  const _headers = mergeHeaders(_authRequest.headers, (_a = this._options) === null || _a === void 0 ? void 0 : _a.headers, requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers);
261
262
  const _response = yield core.fetcher({
262
263
  url: core.url.join((_b = (yield core.Supplier.get(this._options.baseUrl))) !== null && _b !== void 0 ? _b : ((_c = (yield core.Supplier.get(this._options.environment))) !== null && _c !== void 0 ? _c : environments.AgentMailEnvironment.Prod)
263
- .http, `/v0/apps/${core.url.encodePathParam(serializers.AppId.jsonOrThrow(app_id, { omitUndefined: true }))}/accounts`),
264
+ .http, `/v0/apps/${core.url.encodePathParam(app_id)}/accounts`),
264
265
  method: "GET",
265
266
  headers: _headers,
266
267
  queryParameters: Object.assign(Object.assign({}, _queryParams), requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.queryParams),
@@ -307,11 +308,13 @@ export class AppsClient {
307
308
  * Starts signing an inbox in to an app. Returns a single-use `magic_url`,
308
309
  * valid for five minutes, to open in the client that will hold the sign-in;
309
310
  * the client enrolls as the inbox and continues to the app.
311
+ * An app in the catalog can be named by its `slug`, as in
312
+ * `POST /v0/apps/firecrawl/connect`.
310
313
  * A `404` names the missing resource: `App` or `Inbox`.
311
314
  * A `403` `AppSignupLimitError` means the app accepts no more sign-ups from
312
315
  * your organization; sign in with an inbox that already has an account there.
313
316
  *
314
- * @param {AgentMail.AppId} app_id
317
+ * @param {string} app_id - ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
315
318
  * @param {AgentMail.ConnectAppBody} request
316
319
  * @param {AppsClient.RequestOptions} requestOptions - Request-specific configuration.
317
320
  *
@@ -320,7 +323,7 @@ export class AppsClient {
320
323
  * @throws {@link AgentMail.AppSignupLimitError}
321
324
  *
322
325
  * @example
323
- * await client.apps.connect("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32", undefined)
326
+ * await client.apps.connect("app_id", undefined)
324
327
  */
325
328
  connect(app_id, request, requestOptions) {
326
329
  return core.HttpResponsePromise.fromPromise(this.__connect(app_id, request, requestOptions));
@@ -332,7 +335,7 @@ export class AppsClient {
332
335
  const _headers = mergeHeaders(_authRequest.headers, (_a = this._options) === null || _a === void 0 ? void 0 : _a.headers, requestOptions === null || requestOptions === void 0 ? void 0 : requestOptions.headers);
333
336
  const _response = yield core.fetcher({
334
337
  url: core.url.join((_b = (yield core.Supplier.get(this._options.baseUrl))) !== null && _b !== void 0 ? _b : ((_c = (yield core.Supplier.get(this._options.environment))) !== null && _c !== void 0 ? _c : environments.AgentMailEnvironment.Prod)
335
- .http, `/v0/apps/${core.url.encodePathParam(serializers.AppId.jsonOrThrow(app_id, { omitUndefined: true }))}/connect`),
338
+ .http, `/v0/apps/${core.url.encodePathParam(app_id)}/connect`),
336
339
  method: "POST",
337
340
  headers: _headers,
338
341
  contentType: "application/json",
@@ -4,6 +4,8 @@ import type * as AgentMail from "../../../index.mjs";
4
4
  */
5
5
  export interface App {
6
6
  appId: AgentMail.AppId;
7
+ /** Short name accepted in place of `app_id` by Get App, List App Accounts and Connect App. Set by AgentMail on apps in the catalog; renaming the app does not change it. Store `app_id`, the app's permanent ID. */
8
+ slug?: string;
7
9
  name?: string;
8
10
  /** Time at which app was last updated. */
9
11
  updatedAt?: Date;
@@ -7,6 +7,7 @@ export declare const App: core.serialization.ObjectSchema<serializers.App.Raw, A
7
7
  export declare namespace App {
8
8
  interface Raw {
9
9
  app_id: AppId.Raw;
10
+ slug?: string | null;
10
11
  name?: string | null;
11
12
  updated_at?: string | null;
12
13
  description?: string | null;
@@ -4,6 +4,7 @@ import { AppCategory } from "./AppCategory.mjs";
4
4
  import { AppId } from "./AppId.mjs";
5
5
  export const App = core.serialization.object({
6
6
  appId: core.serialization.property("app_id", AppId),
7
+ slug: core.serialization.string().optional(),
7
8
  name: core.serialization.string().optional(),
8
9
  updatedAt: core.serialization.property("updated_at", core.serialization.date().optional()),
9
10
  description: core.serialization.string().optional(),
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "0.5.36";
1
+ export declare const SDK_VERSION = "0.5.37";
@@ -1 +1 @@
1
- export const SDK_VERSION = "0.5.36";
1
+ export const SDK_VERSION = "0.5.37";
package/dist/llms.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  # AgentMail | Documentation
2
2
 
3
- > AgentMail is an email API built for AI agents. Create inboxes, send and receive messages, manage threads, and handle webhooks programmatically.
3
+ > AgentMail is the first email provider built for AI agents. Create inboxes, send and receive messages, manage threads, and handle webhooks programmatically. Free tier, no credit card required.
4
4
 
5
5
  ## Instructions for AI Agents
6
6
 
@@ -71,8 +71,10 @@
71
71
  - [Knowledge Base](https://docs.agentmail.to/knowledge-base.md): A collection of answers to frequently asked questions.
72
72
  - [What is AgentMail and how is it different?](https://docs.agentmail.to/knowledge-base/what-is-agentmail.md): Understand how AgentMail compares to traditional email providers.
73
73
  - [What can I do with an AgentMail inbox?](https://docs.agentmail.to/knowledge-base/inbox-capabilities.md): A complete overview of inbox capabilities for AI agents.
74
+ - [Can I set a profile picture for my inbox?](https://docs.agentmail.to/knowledge-base/inbox-profile-pictures.md): Learn how to associate a Google profile picture with an AgentMail address, how BIMI logos differ, and when Gmail requires a VMC or CMC certificate.
74
75
  - [How do I create my first inbox?](https://docs.agentmail.to/knowledge-base/creating-first-inbox.md): Get up and running with your first AgentMail inbox.
75
76
  - [How do I get my API key?](https://docs.agentmail.to/knowledge-base/getting-api-key.md): Create and manage your AgentMail API keys.
77
+ - [How do I claim my agent's inbox?](https://docs.agentmail.to/knowledge-base/claiming-agent-inbox.md): Take ownership of an inbox your agent created without your email.
76
78
  - [How do I handle inbound emails with my agent?](https://docs.agentmail.to/knowledge-base/handling-inbound-emails.md): Compare Webhooks and WebSockets for processing incoming emails.
77
79
  - [How do I set up allowlists and blocklists?](https://docs.agentmail.to/knowledge-base/allowlists-blocklists.md): Control who your AI agent can send to and receive from.
78
80
  - [How do I manage threaded conversations?](https://docs.agentmail.to/knowledge-base/threaded-conversations.md): Maintain context across multi-turn email conversations with your agent.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentmail",
3
- "version": "0.5.36",
3
+ "version": "0.5.37",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
package/reference.md CHANGED
@@ -1468,7 +1468,7 @@ Create a new agent organization with an inbox and API key. This endpoint is for
1468
1468
 
1469
1469
  A 6-digit OTP is sent to the human's email for verification.
1470
1470
 
1471
- `human_email` is optional. Without it, the inbox can receive email but cannot send to anyone until a human is attached with the attach human endpoint. There is also no way to recover the API key, so store it durably. Calling sign-up again without `human_email` creates a new organization, which needs a different `username`: the original username stays with the lost organization's inbox.
1471
+ `human_email` is optional. Without it, the inbox can receive email but cannot send to anyone until a human is attached with the attach human endpoint or, for a US-region inbox, claims it in the AgentMail Console with the API key (see [How do I claim my agent's inbox?](https://docs.agentmail.to/knowledge-base/claiming-agent-inbox)). There is also no way to recover the API key, so store it durably. Calling sign-up again without `human_email` creates a new organization, which needs a different `username`: the original username stays with the lost organization's inbox.
1472
1472
 
1473
1473
  This endpoint is idempotent. Calling it again with the same `human_email` will rotate the API key and resend the OTP if expired.
1474
1474
 
@@ -2169,10 +2169,11 @@ await client.apps.search({
2169
2169
  <dl>
2170
2170
  <dd>
2171
2171
 
2172
- Gets one app by ID. An app in the catalog returns its full entry.
2172
+ Gets one app by ID or slug. A catalog app returns its full entry.
2173
2173
  A registered app that the catalog does not list returns its ID and
2174
2174
  name only, without `updated_at`, so anyone holding its ID can still look
2175
- it up. List Apps and Search Apps show catalog entries only.
2175
+ it up; a slug finds catalog apps only. List Apps and Search Apps show
2176
+ catalog entries only.
2176
2177
  </dd>
2177
2178
  </dl>
2178
2179
  </dd>
@@ -2187,7 +2188,7 @@ it up. List Apps and Search Apps show catalog entries only.
2187
2188
  <dd>
2188
2189
 
2189
2190
  ```typescript
2190
- await client.apps.get("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32");
2191
+ await client.apps.get("app_id");
2191
2192
 
2192
2193
  ```
2193
2194
  </dd>
@@ -2203,7 +2204,7 @@ await client.apps.get("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32");
2203
2204
  <dl>
2204
2205
  <dd>
2205
2206
 
2206
- **app_id:** `AgentMail.AppId`
2207
+ **app_id:** `string` — ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
2207
2208
 
2208
2209
  </dd>
2209
2210
  </dl>
@@ -2250,7 +2251,7 @@ Lists accounts at one app, most recent sign-in first.
2250
2251
  <dd>
2251
2252
 
2252
2253
  ```typescript
2253
- await client.apps.listAccounts("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32");
2254
+ await client.apps.listAccounts("app_id");
2254
2255
 
2255
2256
  ```
2256
2257
  </dd>
@@ -2266,7 +2267,7 @@ await client.apps.listAccounts("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32");
2266
2267
  <dl>
2267
2268
  <dd>
2268
2269
 
2269
- **app_id:** `AgentMail.AppId`
2270
+ **app_id:** `string` — ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
2270
2271
 
2271
2272
  </dd>
2272
2273
  </dl>
@@ -2309,6 +2310,8 @@ await client.apps.listAccounts("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32");
2309
2310
  Starts signing an inbox in to an app. Returns a single-use `magic_url`,
2310
2311
  valid for five minutes, to open in the client that will hold the sign-in;
2311
2312
  the client enrolls as the inbox and continues to the app.
2313
+ An app in the catalog can be named by its `slug`, as in
2314
+ `POST /v0/apps/firecrawl/connect`.
2312
2315
  A `404` names the missing resource: `App` or `Inbox`.
2313
2316
  A `403` `AppSignupLimitError` means the app accepts no more sign-ups from
2314
2317
  your organization; sign in with an inbox that already has an account there.
@@ -2326,7 +2329,7 @@ your organization; sign in with an inbox that already has an account there.
2326
2329
  <dd>
2327
2330
 
2328
2331
  ```typescript
2329
- await client.apps.connect("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32", undefined);
2332
+ await client.apps.connect("app_id", undefined);
2330
2333
 
2331
2334
  ```
2332
2335
  </dd>
@@ -2342,7 +2345,7 @@ await client.apps.connect("d5e9c84f-c2b2-4bf4-b4b0-7ffd7a9ffc32", undefined);
2342
2345
  <dl>
2343
2346
  <dd>
2344
2347
 
2345
- **app_id:** `AgentMail.AppId`
2348
+ **app_id:** `string` — ID of app, or the `slug` of an app in the catalog. A slug ignores case, spaces and punctuation.
2346
2349
 
2347
2350
  </dd>
2348
2351
  </dl>