glitch-javascript-sdk 3.2.24 → 3.2.26

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.
@@ -173,5 +173,9 @@ declare class GameShows {
173
173
  * List notification signups for a game show. Requires organizer permissions.
174
174
  */
175
175
  static listWishlist<T>(show_id: string, params?: Record<string, any>): AxiosPromise<Response<T>>;
176
+ /**
177
+ * List public game shows that include a title. Useful for game-page festival banners.
178
+ */
179
+ static listForTitle<T>(title_id: string, params?: Record<string, any>): AxiosPromise<Response<T>>;
176
180
  }
177
181
  export default GameShows;
@@ -24,6 +24,14 @@ export type PrContactVerificationStatus = "unverified" | "verified" | "stale" |
24
24
  * Link refresh status for evidence URLs.
25
25
  */
26
26
  export type PrLinkStatus = "unverified" | "ok" | "redirected" | "broken" | "blocked" | "failed" | "stale";
27
+ /**
28
+ * Refresh state for discovered RSS/Atom/JSON feeds.
29
+ */
30
+ export type PrFeedStatus = "unverified" | "ok" | "empty" | "blocked" | "failed" | "stale" | "needs_review";
31
+ /**
32
+ * Feed format detected during PR content ingestion.
33
+ */
34
+ export type PrFeedType = "rss" | "atom" | "json" | "unknown";
27
35
  /**
28
36
  * Filters accepted by `/pr/publications` and `/pr/report`.
29
37
  *
@@ -67,6 +75,39 @@ export interface PrPeopleSearchParams {
67
75
  page?: number;
68
76
  per_page?: number;
69
77
  }
78
+ /**
79
+ * Filters accepted by `/pr/feeds`.
80
+ */
81
+ export interface PrFeedSearchParams {
82
+ q?: string;
83
+ publication_id?: string;
84
+ feed_type?: PrFeedType;
85
+ status?: PrFeedStatus;
86
+ source?: string;
87
+ has_stories?: boolean;
88
+ sort?: "title" | "-title" | "feed_type" | "-feed_type" | "status" | "-status" | "last_fetched_at" | "-last_fetched_at" | "next_fetch_at" | "-next_fetch_at" | "updated_at" | "-updated_at" | string;
89
+ page?: number;
90
+ per_page?: number;
91
+ include_raw?: boolean;
92
+ }
93
+ /**
94
+ * Filters accepted by `/pr/stories`.
95
+ */
96
+ export interface PrStorySearchParams {
97
+ q?: string;
98
+ publication_id?: string;
99
+ pr_feed_id?: string;
100
+ pr_person_id?: string;
101
+ story_type?: string;
102
+ language?: string;
103
+ ingestion_status?: string;
104
+ has_author?: boolean;
105
+ published_after?: string;
106
+ published_before?: string;
107
+ sort?: "published_at" | "-published_at" | "updated_at" | "-updated_at" | "title" | "-title" | string;
108
+ page?: number;
109
+ per_page?: number;
110
+ }
70
111
  /**
71
112
  * Filters accepted by `/pr/tags`.
72
113
  */
@@ -86,6 +127,13 @@ export interface PrTitleMatchParams extends PrPublicationSearchParams {
86
127
  audiences?: string[];
87
128
  limit?: number;
88
129
  }
130
+ /**
131
+ * Query parameters accepted by `/titles/{title_id}/pr/research`.
132
+ */
133
+ export interface PrTitleResearchParams extends PrStorySearchParams {
134
+ limit?: number;
135
+ story_sort?: string;
136
+ }
89
137
  /**
90
138
  * Request body accepted by `/admin/pr/verification/queue`.
91
139
  */
@@ -94,6 +142,34 @@ export interface PrQueueVerificationRequest {
94
142
  limit?: number;
95
143
  link_ids?: string[];
96
144
  }
145
+ /**
146
+ * Review-only PR draft request for `/titles/{title_id}/pr/drafts`.
147
+ */
148
+ export interface PrTitleDraftRequest {
149
+ publication_id?: string;
150
+ pr_person_id?: string;
151
+ q?: string;
152
+ prompt?: string;
153
+ press_kit_url?: string;
154
+ trailer_url?: string;
155
+ demo_or_review_key?: string;
156
+ embargo_or_timing?: string;
157
+ sender?: {
158
+ name?: string;
159
+ };
160
+ use_ai?: boolean;
161
+ }
162
+ /**
163
+ * Admin request body for `/admin/pr/feeds/refresh`.
164
+ */
165
+ export interface PrFeedRefreshRequest {
166
+ discover?: boolean;
167
+ due?: boolean;
168
+ queue?: boolean;
169
+ limit?: number;
170
+ feed_ids?: string[];
171
+ publication_ids?: string[];
172
+ }
97
173
  /**
98
174
  * A normalized metadata tag used to filter and match PR outlets, people, and
99
175
  * roles.
@@ -143,6 +219,90 @@ export interface PrLink {
143
219
  created_at?: string | null;
144
220
  updated_at?: string | null;
145
221
  }
222
+ /**
223
+ * RSS/Atom/JSON feed discovered for a publication and used for story research.
224
+ */
225
+ export interface PrFeed {
226
+ id: string;
227
+ publication_id: string;
228
+ pr_link_id?: string | null;
229
+ feed_url: string;
230
+ canonical_url?: string | null;
231
+ feed_type: PrFeedType;
232
+ title?: string | null;
233
+ description?: string | null;
234
+ language?: string | null;
235
+ status: PrFeedStatus;
236
+ http_status?: number | null;
237
+ content_type?: string | null;
238
+ etag?: string | null;
239
+ raw_feed_hash?: string | null;
240
+ raw_feed_content?: string | null;
241
+ raw_feed_size?: number;
242
+ last_modified_at?: string | null;
243
+ last_fetched_at?: string | null;
244
+ next_fetch_at?: string | null;
245
+ item_count_last_fetch: number;
246
+ source?: string | null;
247
+ last_error?: string | null;
248
+ publication?: PrPublication | null;
249
+ stories_count?: number;
250
+ stories?: PrStory[];
251
+ metadata?: Record<string, any>;
252
+ created_at?: string | null;
253
+ updated_at?: string | null;
254
+ }
255
+ /**
256
+ * A story, article, guide, review, or episode imported from a PR feed.
257
+ */
258
+ export interface PrStory {
259
+ id: string;
260
+ publication_id: string;
261
+ pr_feed_id?: string | null;
262
+ canonical_url?: string | null;
263
+ guid?: string | null;
264
+ title: string;
265
+ dek?: string | null;
266
+ summary?: string | null;
267
+ content_excerpt?: string | null;
268
+ content_hash?: string | null;
269
+ author_name_raw?: string | null;
270
+ author_email_raw?: string | null;
271
+ author_url_raw?: string | null;
272
+ published_at?: string | null;
273
+ updated_at_feed?: string | null;
274
+ story_type?: string | null;
275
+ language?: string | null;
276
+ categories?: string[];
277
+ tags?: string[];
278
+ media_url?: string | null;
279
+ analysis?: Record<string, any>;
280
+ ingestion_status?: string | null;
281
+ publication?: PrPublication | null;
282
+ feed?: PrFeed | null;
283
+ authors?: PrStoryAuthor[];
284
+ created_at?: string | null;
285
+ updated_at?: string | null;
286
+ }
287
+ /**
288
+ * Raw byline evidence and optional match to a known PR contact.
289
+ */
290
+ export interface PrStoryAuthor {
291
+ id: string;
292
+ pr_story_id: string;
293
+ publication_id?: string | null;
294
+ pr_person_id?: string | null;
295
+ author_name?: string | null;
296
+ author_email?: string | null;
297
+ author_url?: string | null;
298
+ confidence?: number | null;
299
+ match_source?: string | null;
300
+ evidence?: Record<string, any>;
301
+ story?: PrStory | null;
302
+ person?: PrPerson | null;
303
+ created_at?: string | null;
304
+ updated_at?: string | null;
305
+ }
146
306
  /**
147
307
  * A normalized way to reach an outlet, person, or publication role.
148
308
  */
@@ -220,9 +380,13 @@ export interface PrPublication {
220
380
  people_count?: number;
221
381
  contact_points_count?: number;
222
382
  links_count?: number;
383
+ feeds_count?: number;
384
+ stories_count?: number;
223
385
  people?: PublicationPerson[];
224
386
  contact_points?: PrContactPoint[];
225
387
  links?: PrLink[];
388
+ feeds?: PrFeed[];
389
+ stories?: PrStory[];
226
390
  tags?: PrTag[];
227
391
  metadata?: Record<string, any>;
228
392
  created_at?: string | null;
@@ -249,9 +413,11 @@ export interface PrPerson {
249
413
  roles_count?: number;
250
414
  contact_points_count?: number;
251
415
  links_count?: number;
416
+ stories_count?: number;
252
417
  roles?: PublicationPerson[];
253
418
  contact_points?: PrContactPoint[];
254
419
  links?: PrLink[];
420
+ stories?: PrStoryAuthor[];
255
421
  tags?: PrTag[];
256
422
  metadata?: Record<string, any>;
257
423
  created_at?: string | null;
@@ -292,6 +458,16 @@ export interface PrDirectoryReport {
292
458
  total: number;
293
459
  by_namespace: Record<string, number>;
294
460
  };
461
+ feeds: {
462
+ total: number;
463
+ by_status: Record<string, number>;
464
+ due_for_fetch: number;
465
+ };
466
+ stories: {
467
+ total: number;
468
+ with_author: number;
469
+ by_type: Record<string, number>;
470
+ };
295
471
  }
296
472
  /**
297
473
  * A ranked title-to-outlet match with evidence, contact route, and plain-English
@@ -306,19 +482,88 @@ export interface PrTitleMatch {
306
482
  risks: string[];
307
483
  evidence_links: PrLink[];
308
484
  }
485
+ /**
486
+ * Title-scoped PR research workspace response.
487
+ */
488
+ export interface PrTitleResearchResponse {
489
+ generated_at: string;
490
+ title: {
491
+ id: string;
492
+ name: string;
493
+ slug?: string | null;
494
+ short_description?: string | null;
495
+ description?: string | null;
496
+ genres?: string[];
497
+ platforms?: string[];
498
+ website_url?: string | null;
499
+ steam_url?: string | null;
500
+ itch_url?: string | null;
501
+ demo_url?: string | null;
502
+ video_url?: string | null;
503
+ };
504
+ readiness: {
505
+ score: number;
506
+ strengths: string[];
507
+ gaps: string[];
508
+ };
509
+ publication_matches: PrTitleMatch[];
510
+ stories: PrStory[];
511
+ story_summary: {
512
+ count: number;
513
+ with_known_author: number;
514
+ publication_count: number;
515
+ };
516
+ suggested_next_steps: string[];
517
+ }
518
+ /**
519
+ * Structured draft fields returned alongside the formatted HTML email body.
520
+ */
521
+ export interface PrOutreachDraft {
522
+ subject?: string | null;
523
+ opener?: string | null;
524
+ body?: string | null;
525
+ body_html?: string | null;
526
+ key_points?: string[];
527
+ personalization_notes?: string[];
528
+ review_notes?: string[];
529
+ missing_context_warnings?: string[];
530
+ [key: string]: any;
531
+ }
532
+ /**
533
+ * Review-only PR draft response. The API never sends email from this endpoint.
534
+ */
535
+ export interface PrTitleDraftResponse {
536
+ draft_status: "draft_only_not_sent" | "no_verified_email_found" | "no_publication_found" | string;
537
+ emails_sent: boolean;
538
+ publication?: PrPublication | null;
539
+ person?: PrPerson | null;
540
+ target: Record<string, any>;
541
+ recent_stories: PrStory[];
542
+ draft: PrOutreachDraft;
543
+ body_html: string;
544
+ review_notes: string[];
545
+ }
309
546
  /**
310
547
  * Response body returned after queueing PR verification jobs.
311
548
  */
312
549
  export interface PrQueueVerificationResponse {
313
550
  queued: number;
314
551
  }
552
+ /**
553
+ * Response body returned after discovering, queueing, or fetching PR feeds.
554
+ */
555
+ export interface PrFeedRefreshResponse {
556
+ discovered: number;
557
+ queued: number;
558
+ fetched: number;
559
+ }
315
560
  /**
316
561
  * SDK wrapper for the PR Directory API.
317
562
  *
318
563
  * The PR directory is read-friendly by default: public endpoints expose
319
- * searchable publications, people, tags, and reporting metrics. Authenticated
320
- * title admins can request title-specific PR matches, and site admins can queue
321
- * monthly-style verification jobs.
564
+ * searchable publications, people, feeds, stories, tags, and reporting metrics.
565
+ * Authenticated title admins can request title-specific research and review-only
566
+ * outreach drafts, and site admins can queue verification or feed refresh jobs.
322
567
  */
323
568
  declare class PrDirectory {
324
569
  /**
@@ -358,6 +603,23 @@ declare class PrDirectory {
358
603
  * contact points, and metadata tags.
359
604
  */
360
605
  static viewPerson<T = PrPerson>(person_id: string, params?: Record<string, any>): AxiosPromise<Response<T>>;
606
+ /**
607
+ * Search discovered RSS/Atom/JSON feeds across known publications.
608
+ */
609
+ static listFeeds<T = PrFeed[]>(params?: PrFeedSearchParams): AxiosPromise<Response<T>>;
610
+ /**
611
+ * Retrieve one feed with freshness metadata and recent imported stories.
612
+ * Pass `include_raw: true` to request the stored XML/RSS payload.
613
+ */
614
+ static viewFeed<T = PrFeed>(feed_id: string, params?: PrFeedSearchParams): AxiosPromise<Response<T>>;
615
+ /**
616
+ * Search imported stories, reviews, guides, and episodes by outlet or byline.
617
+ */
618
+ static listStories<T = PrStory[]>(params?: PrStorySearchParams): AxiosPromise<Response<T>>;
619
+ /**
620
+ * Retrieve one imported story with feed, publication, and byline evidence.
621
+ */
622
+ static viewStory<T = PrStory>(story_id: string, params?: Record<string, any>): AxiosPromise<Response<T>>;
361
623
  /**
362
624
  * List the normalized tag vocabulary used for PR search, filters, matching,
363
625
  * and reporting.
@@ -373,6 +635,16 @@ declare class PrDirectory {
373
635
  * user who can administer the requested title.
374
636
  */
375
637
  static titleMatches<T = PrTitleMatch[]>(title_id: string, params?: PrTitleMatchParams): AxiosPromise<Response<T>>;
638
+ /**
639
+ * Get a title-scoped PR research workspace with outlet matches, recent story
640
+ * context, media kit readiness, and next steps.
641
+ */
642
+ static titleResearch<T = PrTitleResearchResponse>(title_id: string, params?: PrTitleResearchParams): AxiosPromise<Response<T>>;
643
+ /**
644
+ * Create a formatted, review-only PR email draft for a selected title target.
645
+ * The backend returns HTML with paragraphs, bullets, and links but sends no email.
646
+ */
647
+ static titleDraft<T = PrTitleDraftResponse>(title_id: string, data?: PrTitleDraftRequest, params?: Record<string, any>): AxiosPromise<Response<T>>;
376
648
  /**
377
649
  * Queue PR verification jobs. Requires a site-admin auth token.
378
650
  *
@@ -382,5 +654,10 @@ declare class PrDirectory {
382
654
  * ```
383
655
  */
384
656
  static queueVerification<T = PrQueueVerificationResponse>(data?: PrQueueVerificationRequest, params?: Record<string, any>): AxiosPromise<Response<T>>;
657
+ /**
658
+ * Discover, queue, or synchronously refresh PR feeds. Requires a site-admin
659
+ * auth token.
660
+ */
661
+ static refreshFeeds<T = PrFeedRefreshResponse>(data?: PrFeedRefreshRequest, params?: Record<string, any>): AxiosPromise<Response<T>>;
385
662
  }
386
663
  export default PrDirectory;
package/dist/esm/index.js CHANGED
@@ -14923,6 +14923,7 @@ var GameShowsRoute = /** @class */ (function () {
14923
14923
  analyticsReport: { url: '/gameshows/{show_id}/analytics/report', method: HTTP_METHODS.GET },
14924
14924
  joinWishlist: { url: '/gameshows/{show_id}/wishlist', method: HTTP_METHODS.POST },
14925
14925
  listWishlist: { url: '/gameshows/{show_id}/wishlist', method: HTTP_METHODS.GET },
14926
+ listForTitle: { url: '/titles/{title_id}/gameshows', method: HTTP_METHODS.GET },
14926
14927
  };
14927
14928
  return GameShowsRoute;
14928
14929
  }());
@@ -15164,6 +15165,12 @@ var GameShows = /** @class */ (function () {
15164
15165
  GameShows.listWishlist = function (show_id, params) {
15165
15166
  return Requests.processRoute(GameShowsRoute.routes.listWishlist, {}, { show_id: show_id }, params);
15166
15167
  };
15168
+ /**
15169
+ * List public game shows that include a title. Useful for game-page festival banners.
15170
+ */
15171
+ GameShows.listForTitle = function (title_id, params) {
15172
+ return Requests.processRoute(GameShowsRoute.routes.listForTitle, {}, { title_id: title_id }, params);
15173
+ };
15167
15174
  return GameShows;
15168
15175
  }());
15169
15176
 
@@ -19839,7 +19846,7 @@ var Mcp = /** @class */ (function () {
19839
19846
  * Route declarations for the PR Directory API.
19840
19847
  *
19841
19848
  * These mirror the Laravel routes under `/api/pr/*` and the title-scoped
19842
- * matcher route under `/api/titles/{title_id}/pr/matches`. Keeping the URL
19849
+ * matcher/research routes under `/api/titles/{title_id}/pr/*`. Keeping the URL
19843
19850
  * templates in one place lets the SDK methods stay small and consistent with
19844
19851
  * the rest of the package's route-wrapper pattern.
19845
19852
  */
@@ -19851,10 +19858,17 @@ var PrDirectoryRoutes = /** @class */ (function () {
19851
19858
  viewPublication: { url: "/pr/publications/{publication_id}", method: HTTP_METHODS.GET },
19852
19859
  listPeople: { url: "/pr/people", method: HTTP_METHODS.GET },
19853
19860
  viewPerson: { url: "/pr/people/{person_id}", method: HTTP_METHODS.GET },
19861
+ listFeeds: { url: "/pr/feeds", method: HTTP_METHODS.GET },
19862
+ viewFeed: { url: "/pr/feeds/{feed_id}", method: HTTP_METHODS.GET },
19863
+ listStories: { url: "/pr/stories", method: HTTP_METHODS.GET },
19864
+ viewStory: { url: "/pr/stories/{story_id}", method: HTTP_METHODS.GET },
19854
19865
  listTags: { url: "/pr/tags", method: HTTP_METHODS.GET },
19855
19866
  report: { url: "/pr/report", method: HTTP_METHODS.GET },
19856
19867
  titleMatches: { url: "/titles/{title_id}/pr/matches", method: HTTP_METHODS.GET },
19868
+ titleResearch: { url: "/titles/{title_id}/pr/research", method: HTTP_METHODS.GET },
19869
+ titleDraft: { url: "/titles/{title_id}/pr/drafts", method: HTTP_METHODS.POST },
19857
19870
  queueVerification: { url: "/admin/pr/verification/queue", method: HTTP_METHODS.POST },
19871
+ refreshFeeds: { url: "/admin/pr/feeds/refresh", method: HTTP_METHODS.POST },
19858
19872
  };
19859
19873
  return PrDirectoryRoutes;
19860
19874
  }());
@@ -19863,9 +19877,9 @@ var PrDirectoryRoutes = /** @class */ (function () {
19863
19877
  * SDK wrapper for the PR Directory API.
19864
19878
  *
19865
19879
  * The PR directory is read-friendly by default: public endpoints expose
19866
- * searchable publications, people, tags, and reporting metrics. Authenticated
19867
- * title admins can request title-specific PR matches, and site admins can queue
19868
- * monthly-style verification jobs.
19880
+ * searchable publications, people, feeds, stories, tags, and reporting metrics.
19881
+ * Authenticated title admins can request title-specific research and review-only
19882
+ * outreach drafts, and site admins can queue verification or feed refresh jobs.
19869
19883
  */
19870
19884
  var PrDirectory = /** @class */ (function () {
19871
19885
  function PrDirectory() {
@@ -19915,6 +19929,31 @@ var PrDirectory = /** @class */ (function () {
19915
19929
  PrDirectory.viewPerson = function (person_id, params) {
19916
19930
  return Requests.processRoute(PrDirectoryRoutes.routes.viewPerson, {}, { person_id: person_id }, params);
19917
19931
  };
19932
+ /**
19933
+ * Search discovered RSS/Atom/JSON feeds across known publications.
19934
+ */
19935
+ PrDirectory.listFeeds = function (params) {
19936
+ return Requests.processRoute(PrDirectoryRoutes.routes.listFeeds, {}, {}, params);
19937
+ };
19938
+ /**
19939
+ * Retrieve one feed with freshness metadata and recent imported stories.
19940
+ * Pass `include_raw: true` to request the stored XML/RSS payload.
19941
+ */
19942
+ PrDirectory.viewFeed = function (feed_id, params) {
19943
+ return Requests.processRoute(PrDirectoryRoutes.routes.viewFeed, {}, { feed_id: feed_id }, params);
19944
+ };
19945
+ /**
19946
+ * Search imported stories, reviews, guides, and episodes by outlet or byline.
19947
+ */
19948
+ PrDirectory.listStories = function (params) {
19949
+ return Requests.processRoute(PrDirectoryRoutes.routes.listStories, {}, {}, params);
19950
+ };
19951
+ /**
19952
+ * Retrieve one imported story with feed, publication, and byline evidence.
19953
+ */
19954
+ PrDirectory.viewStory = function (story_id, params) {
19955
+ return Requests.processRoute(PrDirectoryRoutes.routes.viewStory, {}, { story_id: story_id }, params);
19956
+ };
19918
19957
  /**
19919
19958
  * List the normalized tag vocabulary used for PR search, filters, matching,
19920
19959
  * and reporting.
@@ -19936,6 +19975,20 @@ var PrDirectory = /** @class */ (function () {
19936
19975
  PrDirectory.titleMatches = function (title_id, params) {
19937
19976
  return Requests.processRoute(PrDirectoryRoutes.routes.titleMatches, {}, { title_id: title_id }, params);
19938
19977
  };
19978
+ /**
19979
+ * Get a title-scoped PR research workspace with outlet matches, recent story
19980
+ * context, media kit readiness, and next steps.
19981
+ */
19982
+ PrDirectory.titleResearch = function (title_id, params) {
19983
+ return Requests.processRoute(PrDirectoryRoutes.routes.titleResearch, {}, { title_id: title_id }, params);
19984
+ };
19985
+ /**
19986
+ * Create a formatted, review-only PR email draft for a selected title target.
19987
+ * The backend returns HTML with paragraphs, bullets, and links but sends no email.
19988
+ */
19989
+ PrDirectory.titleDraft = function (title_id, data, params) {
19990
+ return Requests.processRoute(PrDirectoryRoutes.routes.titleDraft, data || {}, { title_id: title_id }, params);
19991
+ };
19939
19992
  /**
19940
19993
  * Queue PR verification jobs. Requires a site-admin auth token.
19941
19994
  *
@@ -19947,6 +20000,13 @@ var PrDirectory = /** @class */ (function () {
19947
20000
  PrDirectory.queueVerification = function (data, params) {
19948
20001
  return Requests.processRoute(PrDirectoryRoutes.routes.queueVerification, data || {}, {}, params);
19949
20002
  };
20003
+ /**
20004
+ * Discover, queue, or synchronously refresh PR feeds. Requires a site-admin
20005
+ * auth token.
20006
+ */
20007
+ PrDirectory.refreshFeeds = function (data, params) {
20008
+ return Requests.processRoute(PrDirectoryRoutes.routes.refreshFeeds, data || {}, {}, params);
20009
+ };
19950
20010
  return PrDirectory;
19951
20011
  }());
19952
20012