@apteva/integrations 0.3.38 → 0.3.42

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.
@@ -924,6 +924,24 @@
924
924
  ],
925
925
  "webhooks": {
926
926
  "signature_header": "x-webhook-signature",
927
+ "registration": {
928
+ "method": "POST",
929
+ "path": "/webhooks-register",
930
+ "url_field": "endpoint_url",
931
+ "events_field": "event_types",
932
+ "secret_field": "secret_key",
933
+ "id_field": "webhook_id",
934
+ "extra": {
935
+ "name": "Apteva Webhook",
936
+ "direction": "outgoing",
937
+ "provider": "custom",
938
+ "auth_type": "hmac-sha256"
939
+ },
940
+ "delete_path": "/webhooks/{id}",
941
+ "delete_method": "DELETE",
942
+ "list_path": "/webhooks",
943
+ "list_field": "data"
944
+ },
927
945
  "events": [
928
946
  {
929
947
  "name": "content.created",
@@ -1146,6 +1146,24 @@
1146
1146
  ],
1147
1147
  "webhooks": {
1148
1148
  "signature_header": "x-webhook-signature",
1149
+ "registration": {
1150
+ "method": "POST",
1151
+ "path": "/webhooks-register",
1152
+ "url_field": "endpoint_url",
1153
+ "events_field": "event_types",
1154
+ "secret_field": "secret_key",
1155
+ "id_field": "webhook_id",
1156
+ "extra": {
1157
+ "name": "Apteva Webhook",
1158
+ "direction": "outgoing",
1159
+ "provider": "custom",
1160
+ "auth_type": "hmac-sha256"
1161
+ },
1162
+ "delete_path": "/webhooks/{id}",
1163
+ "delete_method": "DELETE",
1164
+ "list_path": "/webhooks",
1165
+ "list_field": "data"
1166
+ },
1149
1167
  "events": [
1150
1168
  {
1151
1169
  "name": "deployment.succeeded",
@@ -1826,6 +1826,24 @@
1826
1826
  ],
1827
1827
  "webhooks": {
1828
1828
  "signature_header": "x-webhook-signature",
1829
+ "registration": {
1830
+ "method": "POST",
1831
+ "path": "/webhooks-register",
1832
+ "url_field": "endpoint_url",
1833
+ "events_field": "event_types",
1834
+ "secret_field": "secret_key",
1835
+ "id_field": "webhook_id",
1836
+ "extra": {
1837
+ "name": "Apteva Webhook",
1838
+ "direction": "outgoing",
1839
+ "provider": "custom",
1840
+ "auth_type": "hmac-sha256"
1841
+ },
1842
+ "delete_path": "/webhooks/{id}",
1843
+ "delete_method": "DELETE",
1844
+ "list_path": "/webhooks",
1845
+ "list_field": "data"
1846
+ },
1829
1847
  "events": [
1830
1848
  {
1831
1849
  "name": "messaging.inbound_message_processed",
@@ -219,108 +219,92 @@
219
219
  ]
220
220
  }
221
221
  },
222
- {
223
- "name": "download_file",
224
- "description": "Get a download URL for a file",
225
- "method": "GET",
226
- "path": "/storage/files/{file_id}/download",
227
- "input_schema": {
228
- "type": "object",
229
- "properties": {
230
- "file_id": {
231
- "type": "integer",
232
- "description": "ID of the file to download"
233
- }
234
- },
235
- "required": [
236
- "file_id"
237
- ]
238
- }
239
- },
240
222
  {
241
223
  "name": "search",
242
- "description": "Advanced file search with filtering by name, type, MIME type, size, dimensions, duration, tags, date ranges, and more. Supports sorting by name, size, date, type.",
224
+ "description": "Search files in storage. For oldest content: sort_by=uploaded_at, sort_order=asc. For newest: sort_by=uploaded_at, sort_order=desc. For portrait videos: file_type=video, format=portrait. For safe content: content_rating=sfw. For random files: sort_by=random.",
243
225
  "method": "GET",
244
226
  "path": "/storage/search",
245
227
  "input_schema": {
246
228
  "type": "object",
247
229
  "properties": {
248
- "query": {
249
- "type": "string",
250
- "description": "Search query (searches file names and descriptions)"
251
- },
252
230
  "file_type": {
253
231
  "type": "string",
254
- "enum": [
255
- "image",
256
- "video",
257
- "audio",
258
- "document"
259
- ],
232
+ "enum": ["image", "video", "audio", "document"],
260
233
  "description": "Filter by file type"
261
234
  },
262
- "mime_type": {
235
+ "format": {
263
236
  "type": "string",
264
- "description": "Filter by MIME type (e.g., video/mp4)"
237
+ "enum": ["portrait", "landscape", "square"],
238
+ "description": "Filter by aspect ratio. portrait = vertical/mobile, landscape = horizontal/widescreen"
265
239
  },
266
- "folder_id": {
267
- "type": "integer",
268
- "description": "Filter by folder"
240
+ "content_rating": {
241
+ "type": "string",
242
+ "enum": ["sfw", "nsfw", "suggestive", "adult", "explicit"],
243
+ "description": "Filter by content rating. sfw = safe only, nsfw = everything except safe"
269
244
  },
270
- "bucket_id": {
271
- "type": "integer",
272
- "description": "Filter by bucket"
245
+ "folder": {
246
+ "type": "string",
247
+ "description": "Search within a folder by name (includes subfolders)"
273
248
  },
274
- "tags": {
249
+ "search": {
275
250
  "type": "string",
276
- "description": "Comma-separated tags to filter by"
251
+ "description": "Search in file names, descriptions, and tags"
277
252
  },
278
- "min_size": {
279
- "type": "integer",
280
- "description": "Minimum file size in bytes"
253
+ "uploaded_after": {
254
+ "type": "string",
255
+ "format": "date-time",
256
+ "description": "Content from after this date (e.g. 2024-01-01T00:00:00Z). This is the original content date, not upload date."
281
257
  },
282
- "max_size": {
283
- "type": "integer",
284
- "description": "Maximum file size in bytes"
258
+ "uploaded_before": {
259
+ "type": "string",
260
+ "format": "date-time",
261
+ "description": "Content from before this date. This is the original content date, not upload date."
285
262
  },
286
- "min_duration": {
263
+ "max_duration": {
287
264
  "type": "number",
288
- "description": "Minimum duration in seconds (audio/video)"
265
+ "description": "Maximum duration in seconds (video/audio)"
289
266
  },
290
- "max_duration": {
267
+ "min_duration": {
291
268
  "type": "number",
292
- "description": "Maximum duration in seconds (audio/video)"
269
+ "description": "Minimum duration in seconds (video/audio)"
293
270
  },
294
271
  "sort_by": {
295
272
  "type": "string",
296
- "enum": [
297
- "name",
298
- "size",
299
- "created_at",
300
- "updated_at",
301
- "file_type"
302
- ],
303
- "default": "created_at",
304
- "description": "Sort field"
273
+ "enum": ["uploaded_at", "created_at", "name", "size", "duration", "random"],
274
+ "default": "uploaded_at",
275
+ "description": "Sort field. uploaded_at = content date (use for oldest/newest). random = random order."
305
276
  },
306
277
  "sort_order": {
307
278
  "type": "string",
308
- "enum": [
309
- "asc",
310
- "desc"
311
- ],
279
+ "enum": ["asc", "desc"],
312
280
  "default": "desc",
313
- "description": "Sort order"
281
+ "description": "asc = oldest/smallest first, desc = newest/largest first"
314
282
  },
315
283
  "limit": {
316
284
  "type": "integer",
317
- "default": 50,
318
- "description": "Results per page (max 1000)"
285
+ "default": 10,
286
+ "maximum": 50,
287
+ "description": "Number of results to return (default 10, max 50)"
319
288
  },
320
289
  "offset": {
321
290
  "type": "integer",
322
291
  "default": 0,
323
292
  "description": "Pagination offset"
293
+ },
294
+ "include_metadata": {
295
+ "type": "boolean",
296
+ "default": false,
297
+ "description": "Include file metadata in response"
298
+ },
299
+ "include_storage_info": {
300
+ "type": "boolean",
301
+ "default": false,
302
+ "description": "Include storage bucket info and full URLs"
303
+ },
304
+ "include_thumbnails": {
305
+ "type": "boolean",
306
+ "default": false,
307
+ "description": "Include thumbnail data in response"
324
308
  }
325
309
  }
326
310
  }
@@ -362,46 +346,6 @@
362
346
  ]
363
347
  }
364
348
  },
365
- {
366
- "name": "generate_presigned_url",
367
- "description": "Generate a presigned URL for direct client-to-storage file upload. Use for large files instead of base64 upload. After upload, call confirm-upload to trigger processing.",
368
- "method": "POST",
369
- "path": "/storage/generate-presigned-url",
370
- "input_schema": {
371
- "type": "object",
372
- "properties": {
373
- "file_name": {
374
- "type": "string",
375
- "description": "Name of the file to upload"
376
- },
377
- "mime_type": {
378
- "type": "string",
379
- "description": "MIME type of the file"
380
- },
381
- "size_bytes": {
382
- "type": "integer",
383
- "description": "File size in bytes"
384
- },
385
- "folder_id": {
386
- "type": "integer",
387
- "description": "Target folder ID"
388
- },
389
- "access_level": {
390
- "type": "string",
391
- "enum": [
392
- "public",
393
- "private"
394
- ],
395
- "default": "public",
396
- "description": "File access level"
397
- }
398
- },
399
- "required": [
400
- "file_name",
401
- "mime_type"
402
- ]
403
- }
404
- },
405
349
  {
406
350
  "name": "confirm_upload",
407
351
  "description": "Confirm that a presigned URL upload completed. Triggers post-processing: thumbnail generation, transcription, and AI description.",
@@ -3,14 +3,29 @@
3
3
  "name": "Pushover",
4
4
  "description": "Real-time push notifications to mobile and desktop devices",
5
5
  "logo": "https://www.google.com/s2/favicons?domain=pushover.net&sz=128",
6
- "categories": ["communication", "notifications"],
6
+ "categories": [
7
+ "communication",
8
+ "notifications"
9
+ ],
7
10
  "base_url": "https://api.pushover.net/1",
8
11
  "auth": {
9
- "types": ["api_key"],
10
- "query_params": { "token": "{{app_token}}" },
12
+ "types": [
13
+ "api_key"
14
+ ],
15
+ "query_params": {
16
+ "token": "{{app_token}}"
17
+ },
11
18
  "credential_fields": [
12
- { "name": "app_token", "label": "Application Token", "description": "Your Pushover application API token" },
13
- { "name": "user_key", "label": "User/Group Key", "description": "Your Pushover user or group key (default recipient)" }
19
+ {
20
+ "name": "app_token",
21
+ "label": "Application Token",
22
+ "description": "Your Pushover application API token"
23
+ },
24
+ {
25
+ "name": "user_key",
26
+ "label": "User/Group Key",
27
+ "description": "Your Pushover user or group key (default recipient)"
28
+ }
14
29
  ]
15
30
  },
16
31
  "tools": [
@@ -22,15 +37,39 @@
22
37
  "input_schema": {
23
38
  "type": "object",
24
39
  "properties": {
25
- "message": { "type": "string", "description": "Notification message body" },
26
- "title": { "type": "string", "description": "Notification title" },
27
- "user": { "type": "string", "description": "Override recipient user/group key (uses stored key if omitted)" },
28
- "priority": { "type": "number", "description": "Priority: -2 (lowest) to 2 (emergency)", "default": 0 },
29
- "sound": { "type": "string", "description": "Sound name (e.g. pushover, bike, bugle)" },
30
- "url": { "type": "string", "description": "Supplementary URL to show with the message" },
31
- "url_title": { "type": "string", "description": "Title for the supplementary URL" }
40
+ "message": {
41
+ "type": "string",
42
+ "description": "Notification message body"
43
+ },
44
+ "title": {
45
+ "type": "string",
46
+ "description": "Notification title"
47
+ },
48
+ "user": {
49
+ "type": "string",
50
+ "description": "Override recipient user/group key (uses stored key if omitted)"
51
+ },
52
+ "priority": {
53
+ "type": "number",
54
+ "description": "Priority: -2 (lowest) to 2 (emergency)",
55
+ "default": 0
56
+ },
57
+ "sound": {
58
+ "type": "string",
59
+ "description": "Sound name (e.g. pushover, bike, bugle)"
60
+ },
61
+ "url": {
62
+ "type": "string",
63
+ "description": "Supplementary URL to show with the message"
64
+ },
65
+ "url_title": {
66
+ "type": "string",
67
+ "description": "Title for the supplementary URL"
68
+ }
32
69
  },
33
- "required": ["message"]
70
+ "required": [
71
+ "message"
72
+ ]
34
73
  }
35
74
  },
36
75
  {
@@ -41,9 +80,14 @@
41
80
  "input_schema": {
42
81
  "type": "object",
43
82
  "properties": {
44
- "user": { "type": "string", "description": "User or group key to validate" }
83
+ "user": {
84
+ "type": "string",
85
+ "description": "User or group key to validate"
86
+ }
45
87
  },
46
- "required": ["user"]
88
+ "required": [
89
+ "user"
90
+ ]
47
91
  }
48
92
  },
49
93
  {
@@ -55,6 +99,39 @@
55
99
  "type": "object",
56
100
  "properties": {}
57
101
  }
102
+ },
103
+ {
104
+ "name": "send_priority_alert",
105
+ "description": "Send a high-priority alert that requires acknowledgment",
106
+ "method": "POST",
107
+ "path": "/send-priority-alert",
108
+ "input_schema": {
109
+ "type": "object",
110
+ "properties": {
111
+ "message": {
112
+ "type": "string",
113
+ "description": "The alert message"
114
+ },
115
+ "title": {
116
+ "type": "string",
117
+ "description": "Alert title",
118
+ "default": "PRIORITY ALERT"
119
+ },
120
+ "expire": {
121
+ "type": "integer",
122
+ "description": "How long to keep sending alerts (seconds)",
123
+ "default": 3600
124
+ },
125
+ "retry": {
126
+ "type": "integer",
127
+ "description": "How often to retry (seconds)",
128
+ "default": 60
129
+ }
130
+ },
131
+ "required": [
132
+ "message"
133
+ ]
134
+ }
58
135
  }
59
136
  ]
60
137
  }
@@ -293,7 +293,7 @@
293
293
  },
294
294
  {
295
295
  "name": "keyword_domain_rankings",
296
- "description": "Get which domains rank for a specific keyword.",
296
+ "description": "Get all domains ranking for a keyword with page data (title, h1, word count, h2 count) and a content brief (target word count, title/h1 examples). Use with rankbird-content-gap: first get keyword opportunities, then call this to see what top pages look like and plan content.",
297
297
  "method": "GET",
298
298
  "path": "/keywords/{keyword_id}/domains",
299
299
  "input_schema": {