c4r-aggregator-client 1.0.0

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.
Files changed (271) hide show
  1. package/.idea/misc.xml +6 -0
  2. package/.idea/modules.xml +8 -0
  3. package/.idea/ts.iml +9 -0
  4. package/.idea/vcs.xml +6 -0
  5. package/.openapi-generator/FILES +91 -0
  6. package/.openapi-generator/VERSION +1 -0
  7. package/.openapi-generator-ignore +23 -0
  8. package/README.md +174 -0
  9. package/dist/apis/AdminApi.d.ts +187 -0
  10. package/dist/apis/AdminApi.js +515 -0
  11. package/dist/apis/CatalogApi.d.ts +84 -0
  12. package/dist/apis/CatalogApi.js +191 -0
  13. package/dist/apis/MeetingsApi.d.ts +98 -0
  14. package/dist/apis/MeetingsApi.js +235 -0
  15. package/dist/apis/SourcesApi.d.ts +35 -0
  16. package/dist/apis/SourcesApi.js +73 -0
  17. package/dist/apis/index.d.ts +4 -0
  18. package/dist/apis/index.js +22 -0
  19. package/dist/esm/apis/AdminApi.d.ts +187 -0
  20. package/dist/esm/apis/AdminApi.js +511 -0
  21. package/dist/esm/apis/CatalogApi.d.ts +84 -0
  22. package/dist/esm/apis/CatalogApi.js +187 -0
  23. package/dist/esm/apis/MeetingsApi.d.ts +98 -0
  24. package/dist/esm/apis/MeetingsApi.js +231 -0
  25. package/dist/esm/apis/SourcesApi.d.ts +35 -0
  26. package/dist/esm/apis/SourcesApi.js +69 -0
  27. package/dist/esm/apis/index.d.ts +4 -0
  28. package/dist/esm/apis/index.js +6 -0
  29. package/dist/esm/index.d.ts +3 -0
  30. package/dist/esm/index.js +5 -0
  31. package/dist/esm/models/AdminSource.d.ts +190 -0
  32. package/dist/esm/models/AdminSource.js +112 -0
  33. package/dist/esm/models/AuthError.d.ts +32 -0
  34. package/dist/esm/models/AuthError.js +41 -0
  35. package/dist/esm/models/CreateSourceRequest.d.ts +76 -0
  36. package/dist/esm/models/CreateSourceRequest.js +64 -0
  37. package/dist/esm/models/CreateSourceResponse.d.ts +45 -0
  38. package/dist/esm/models/CreateSourceResponse.js +46 -0
  39. package/dist/esm/models/DedupCounters.d.ts +86 -0
  40. package/dist/esm/models/DedupCounters.js +59 -0
  41. package/dist/esm/models/DedupStats.d.ts +65 -0
  42. package/dist/esm/models/DedupStats.js +54 -0
  43. package/dist/esm/models/DedupStatsLatestRun.d.ts +60 -0
  44. package/dist/esm/models/DedupStatsLatestRun.js +56 -0
  45. package/dist/esm/models/DedupStatsRecentRunsInner.d.ts +45 -0
  46. package/dist/esm/models/DedupStatsRecentRunsInner.js +46 -0
  47. package/dist/esm/models/FeedValidationError.d.ts +54 -0
  48. package/dist/esm/models/FeedValidationError.js +54 -0
  49. package/dist/esm/models/IngestRun.d.ts +107 -0
  50. package/dist/esm/models/IngestRun.js +71 -0
  51. package/dist/esm/models/MapFeature.d.ts +46 -0
  52. package/dist/esm/models/MapFeature.js +47 -0
  53. package/dist/esm/models/MapFeatureCollection.d.ts +45 -0
  54. package/dist/esm/models/MapFeatureCollection.js +46 -0
  55. package/dist/esm/models/MapFeatureGeometry.d.ts +38 -0
  56. package/dist/esm/models/MapFeatureGeometry.js +43 -0
  57. package/dist/esm/models/MapFeatureProperties.d.ts +69 -0
  58. package/dist/esm/models/MapFeatureProperties.js +54 -0
  59. package/dist/esm/models/MapMeeting.d.ts +50 -0
  60. package/dist/esm/models/MapMeeting.js +47 -0
  61. package/dist/esm/models/Meeting.d.ts +272 -0
  62. package/dist/esm/models/Meeting.js +131 -0
  63. package/dist/esm/models/MeetingPage.d.ts +47 -0
  64. package/dist/esm/models/MeetingPage.js +48 -0
  65. package/dist/esm/models/MeetingPageLinks.d.ts +50 -0
  66. package/dist/esm/models/MeetingPageLinks.js +47 -0
  67. package/dist/esm/models/MeetingPageMeta.d.ts +50 -0
  68. package/dist/esm/models/MeetingPageMeta.js +47 -0
  69. package/dist/esm/models/MeetingType.d.ts +56 -0
  70. package/dist/esm/models/MeetingType.js +49 -0
  71. package/dist/esm/models/MeetingsFilterError.d.ts +44 -0
  72. package/dist/esm/models/MeetingsFilterError.js +45 -0
  73. package/dist/esm/models/Program.d.ts +44 -0
  74. package/dist/esm/models/Program.js +45 -0
  75. package/dist/esm/models/PublicSource.d.ts +113 -0
  76. package/dist/esm/models/PublicSource.js +80 -0
  77. package/dist/esm/models/SourceEnvelope.d.ts +33 -0
  78. package/dist/esm/models/SourceEnvelope.js +42 -0
  79. package/dist/esm/models/SourceRefreshResponse.d.ts +39 -0
  80. package/dist/esm/models/SourceRefreshResponse.js +44 -0
  81. package/dist/esm/models/Stats.d.ts +86 -0
  82. package/dist/esm/models/Stats.js +63 -0
  83. package/dist/esm/models/StatsGroups.d.ts +32 -0
  84. package/dist/esm/models/StatsGroups.js +41 -0
  85. package/dist/esm/models/StatsLocations.d.ts +38 -0
  86. package/dist/esm/models/StatsLocations.js +43 -0
  87. package/dist/esm/models/StatsMeetingTypes.d.ts +32 -0
  88. package/dist/esm/models/StatsMeetingTypes.js +41 -0
  89. package/dist/esm/models/StatsMeetings.d.ts +68 -0
  90. package/dist/esm/models/StatsMeetings.js +51 -0
  91. package/dist/esm/models/StatsProgramsBreakdownInner.d.ts +62 -0
  92. package/dist/esm/models/StatsProgramsBreakdownInner.js +51 -0
  93. package/dist/esm/models/StatsSources.d.ts +47 -0
  94. package/dist/esm/models/StatsSources.js +46 -0
  95. package/dist/esm/models/StatsSourcesTopByMeetingCountInner.d.ts +44 -0
  96. package/dist/esm/models/StatsSourcesTopByMeetingCountInner.js +45 -0
  97. package/dist/esm/models/StoreSourceValidationError.d.ts +23 -0
  98. package/dist/esm/models/StoreSourceValidationError.js +51 -0
  99. package/dist/esm/models/UpdateSourceRequest.d.ts +70 -0
  100. package/dist/esm/models/UpdateSourceRequest.js +58 -0
  101. package/dist/esm/models/ValidationError.d.ts +40 -0
  102. package/dist/esm/models/ValidationError.js +43 -0
  103. package/dist/esm/models/index.d.ts +36 -0
  104. package/dist/esm/models/index.js +38 -0
  105. package/dist/esm/runtime.d.ts +184 -0
  106. package/dist/esm/runtime.js +349 -0
  107. package/dist/index.d.ts +3 -0
  108. package/dist/index.js +21 -0
  109. package/dist/models/AdminSource.d.ts +190 -0
  110. package/dist/models/AdminSource.js +120 -0
  111. package/dist/models/AuthError.d.ts +32 -0
  112. package/dist/models/AuthError.js +48 -0
  113. package/dist/models/CreateSourceRequest.d.ts +76 -0
  114. package/dist/models/CreateSourceRequest.js +72 -0
  115. package/dist/models/CreateSourceResponse.d.ts +45 -0
  116. package/dist/models/CreateSourceResponse.js +53 -0
  117. package/dist/models/DedupCounters.d.ts +86 -0
  118. package/dist/models/DedupCounters.js +66 -0
  119. package/dist/models/DedupStats.d.ts +65 -0
  120. package/dist/models/DedupStats.js +61 -0
  121. package/dist/models/DedupStatsLatestRun.d.ts +60 -0
  122. package/dist/models/DedupStatsLatestRun.js +64 -0
  123. package/dist/models/DedupStatsRecentRunsInner.d.ts +45 -0
  124. package/dist/models/DedupStatsRecentRunsInner.js +53 -0
  125. package/dist/models/FeedValidationError.d.ts +54 -0
  126. package/dist/models/FeedValidationError.js +62 -0
  127. package/dist/models/IngestRun.d.ts +107 -0
  128. package/dist/models/IngestRun.js +79 -0
  129. package/dist/models/MapFeature.d.ts +46 -0
  130. package/dist/models/MapFeature.js +54 -0
  131. package/dist/models/MapFeatureCollection.d.ts +45 -0
  132. package/dist/models/MapFeatureCollection.js +53 -0
  133. package/dist/models/MapFeatureGeometry.d.ts +38 -0
  134. package/dist/models/MapFeatureGeometry.js +50 -0
  135. package/dist/models/MapFeatureProperties.d.ts +69 -0
  136. package/dist/models/MapFeatureProperties.js +61 -0
  137. package/dist/models/MapMeeting.d.ts +50 -0
  138. package/dist/models/MapMeeting.js +54 -0
  139. package/dist/models/Meeting.d.ts +272 -0
  140. package/dist/models/Meeting.js +139 -0
  141. package/dist/models/MeetingPage.d.ts +47 -0
  142. package/dist/models/MeetingPage.js +55 -0
  143. package/dist/models/MeetingPageLinks.d.ts +50 -0
  144. package/dist/models/MeetingPageLinks.js +54 -0
  145. package/dist/models/MeetingPageMeta.d.ts +50 -0
  146. package/dist/models/MeetingPageMeta.js +54 -0
  147. package/dist/models/MeetingType.d.ts +56 -0
  148. package/dist/models/MeetingType.js +56 -0
  149. package/dist/models/MeetingsFilterError.d.ts +44 -0
  150. package/dist/models/MeetingsFilterError.js +52 -0
  151. package/dist/models/Program.d.ts +44 -0
  152. package/dist/models/Program.js +52 -0
  153. package/dist/models/PublicSource.d.ts +113 -0
  154. package/dist/models/PublicSource.js +88 -0
  155. package/dist/models/SourceEnvelope.d.ts +33 -0
  156. package/dist/models/SourceEnvelope.js +49 -0
  157. package/dist/models/SourceRefreshResponse.d.ts +39 -0
  158. package/dist/models/SourceRefreshResponse.js +51 -0
  159. package/dist/models/Stats.d.ts +86 -0
  160. package/dist/models/Stats.js +70 -0
  161. package/dist/models/StatsGroups.d.ts +32 -0
  162. package/dist/models/StatsGroups.js +48 -0
  163. package/dist/models/StatsLocations.d.ts +38 -0
  164. package/dist/models/StatsLocations.js +50 -0
  165. package/dist/models/StatsMeetingTypes.d.ts +32 -0
  166. package/dist/models/StatsMeetingTypes.js +48 -0
  167. package/dist/models/StatsMeetings.d.ts +68 -0
  168. package/dist/models/StatsMeetings.js +58 -0
  169. package/dist/models/StatsProgramsBreakdownInner.d.ts +62 -0
  170. package/dist/models/StatsProgramsBreakdownInner.js +58 -0
  171. package/dist/models/StatsSources.d.ts +47 -0
  172. package/dist/models/StatsSources.js +53 -0
  173. package/dist/models/StatsSourcesTopByMeetingCountInner.d.ts +44 -0
  174. package/dist/models/StatsSourcesTopByMeetingCountInner.js +52 -0
  175. package/dist/models/StoreSourceValidationError.d.ts +23 -0
  176. package/dist/models/StoreSourceValidationError.js +57 -0
  177. package/dist/models/UpdateSourceRequest.d.ts +70 -0
  178. package/dist/models/UpdateSourceRequest.js +66 -0
  179. package/dist/models/ValidationError.d.ts +40 -0
  180. package/dist/models/ValidationError.js +50 -0
  181. package/dist/models/index.d.ts +36 -0
  182. package/dist/models/index.js +54 -0
  183. package/dist/runtime.d.ts +184 -0
  184. package/dist/runtime.js +365 -0
  185. package/docs/AdminApi.md +734 -0
  186. package/docs/AdminSource.md +77 -0
  187. package/docs/AuthError.md +34 -0
  188. package/docs/CatalogApi.md +270 -0
  189. package/docs/CreateSourceRequest.md +46 -0
  190. package/docs/CreateSourceResponse.md +38 -0
  191. package/docs/DedupCounters.md +53 -0
  192. package/docs/DedupStats.md +45 -0
  193. package/docs/DedupStatsLatestRun.md +41 -0
  194. package/docs/DedupStatsRecentRunsInner.md +39 -0
  195. package/docs/FeedValidationError.md +39 -0
  196. package/docs/IngestRun.md +57 -0
  197. package/docs/MapFeature.md +39 -0
  198. package/docs/MapFeatureCollection.md +39 -0
  199. package/docs/MapFeatureGeometry.md +37 -0
  200. package/docs/MapFeatureProperties.md +47 -0
  201. package/docs/MapMeeting.md +41 -0
  202. package/docs/Meeting.md +109 -0
  203. package/docs/MeetingPage.md +39 -0
  204. package/docs/MeetingPageLinks.md +41 -0
  205. package/docs/MeetingPageMeta.md +41 -0
  206. package/docs/MeetingType.md +42 -0
  207. package/docs/MeetingsApi.md +323 -0
  208. package/docs/MeetingsFilterError.md +39 -0
  209. package/docs/Program.md +38 -0
  210. package/docs/PublicSource.md +55 -0
  211. package/docs/SourceEnvelope.md +35 -0
  212. package/docs/SourceRefreshResponse.md +37 -0
  213. package/docs/SourcesApi.md +76 -0
  214. package/docs/Stats.md +51 -0
  215. package/docs/StatsGroups.md +35 -0
  216. package/docs/StatsLocations.md +37 -0
  217. package/docs/StatsMeetingTypes.md +35 -0
  218. package/docs/StatsMeetings.md +45 -0
  219. package/docs/StatsProgramsBreakdownInner.md +45 -0
  220. package/docs/StatsSources.md +39 -0
  221. package/docs/StatsSourcesTopByMeetingCountInner.md +39 -0
  222. package/docs/StoreSourceValidationError.md +41 -0
  223. package/docs/UpdateSourceRequest.md +44 -0
  224. package/docs/ValidationError.md +36 -0
  225. package/package.json +21 -0
  226. package/src/apis/AdminApi.ts +659 -0
  227. package/src/apis/CatalogApi.ts +220 -0
  228. package/src/apis/MeetingsApi.ts +305 -0
  229. package/src/apis/SourcesApi.ts +74 -0
  230. package/src/apis/index.ts +6 -0
  231. package/src/index.ts +5 -0
  232. package/src/models/AdminSource.ts +270 -0
  233. package/src/models/AuthError.ts +65 -0
  234. package/src/models/CreateSourceRequest.ts +126 -0
  235. package/src/models/CreateSourceResponse.ts +89 -0
  236. package/src/models/DedupCounters.ts +137 -0
  237. package/src/models/DedupStats.ts +127 -0
  238. package/src/models/DedupStatsLatestRun.ts +109 -0
  239. package/src/models/DedupStatsRecentRunsInner.ts +89 -0
  240. package/src/models/FeedValidationError.ts +94 -0
  241. package/src/models/IngestRun.ts +165 -0
  242. package/src/models/MapFeature.ts +96 -0
  243. package/src/models/MapFeatureCollection.ts +89 -0
  244. package/src/models/MapFeatureGeometry.ts +73 -0
  245. package/src/models/MapFeatureProperties.ts +121 -0
  246. package/src/models/MapMeeting.ts +89 -0
  247. package/src/models/Meeting.ts +383 -0
  248. package/src/models/MeetingPage.ts +103 -0
  249. package/src/models/MeetingPageLinks.ts +89 -0
  250. package/src/models/MeetingPageMeta.ts +89 -0
  251. package/src/models/MeetingType.ts +97 -0
  252. package/src/models/MeetingsFilterError.ts +81 -0
  253. package/src/models/Program.ts +81 -0
  254. package/src/models/PublicSource.ts +170 -0
  255. package/src/models/SourceEnvelope.ts +73 -0
  256. package/src/models/SourceRefreshResponse.ts +81 -0
  257. package/src/models/Stats.ts +172 -0
  258. package/src/models/StatsGroups.ts +65 -0
  259. package/src/models/StatsLocations.ts +73 -0
  260. package/src/models/StatsMeetingTypes.ts +65 -0
  261. package/src/models/StatsMeetings.ts +105 -0
  262. package/src/models/StatsProgramsBreakdownInner.ts +105 -0
  263. package/src/models/StatsSources.ts +89 -0
  264. package/src/models/StatsSourcesTopByMeetingCountInner.ts +81 -0
  265. package/src/models/StoreSourceValidationError.ts +76 -0
  266. package/src/models/UpdateSourceRequest.ts +116 -0
  267. package/src/models/ValidationError.ts +73 -0
  268. package/src/models/index.ts +38 -0
  269. package/src/runtime.ts +449 -0
  270. package/tsconfig.esm.json +7 -0
  271. package/tsconfig.json +16 -0
@@ -0,0 +1,107 @@
1
+ /**
2
+ * C4R Aggregator API
3
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ /**
13
+ * A single fetch attempt against a source
14
+ * @export
15
+ * @interface IngestRun
16
+ */
17
+ export interface IngestRun {
18
+ /**
19
+ *
20
+ * @type {number}
21
+ * @memberof IngestRun
22
+ */
23
+ id?: number;
24
+ /**
25
+ *
26
+ * @type {number}
27
+ * @memberof IngestRun
28
+ */
29
+ sourceId?: number;
30
+ /**
31
+ *
32
+ * @type {Date}
33
+ * @memberof IngestRun
34
+ */
35
+ startedAt?: Date;
36
+ /**
37
+ *
38
+ * @type {Date}
39
+ * @memberof IngestRun
40
+ */
41
+ finishedAt?: Date | null;
42
+ /**
43
+ *
44
+ * @type {IngestRunStatusEnum}
45
+ * @memberof IngestRun
46
+ */
47
+ status?: IngestRunStatusEnum;
48
+ /**
49
+ *
50
+ * @type {boolean}
51
+ * @memberof IngestRun
52
+ */
53
+ wasSuspicious?: boolean;
54
+ /**
55
+ *
56
+ * @type {string}
57
+ * @memberof IngestRun
58
+ */
59
+ errorType?: string | null;
60
+ /**
61
+ *
62
+ * @type {string}
63
+ * @memberof IngestRun
64
+ */
65
+ errorMessage?: string | null;
66
+ /**
67
+ *
68
+ * @type {number}
69
+ * @memberof IngestRun
70
+ */
71
+ seen?: number;
72
+ /**
73
+ *
74
+ * @type {number}
75
+ * @memberof IngestRun
76
+ */
77
+ created?: number;
78
+ /**
79
+ *
80
+ * @type {number}
81
+ * @memberof IngestRun
82
+ */
83
+ updated?: number;
84
+ /**
85
+ *
86
+ * @type {number}
87
+ * @memberof IngestRun
88
+ */
89
+ removed?: number;
90
+ }
91
+ /**
92
+ * @export
93
+ */
94
+ export declare const IngestRunStatusEnum: {
95
+ readonly Success: "success";
96
+ readonly Failed: "failed";
97
+ readonly Suspicious: "suspicious";
98
+ };
99
+ export type IngestRunStatusEnum = typeof IngestRunStatusEnum[keyof typeof IngestRunStatusEnum];
100
+ /**
101
+ * Check if a given object implements the IngestRun interface.
102
+ */
103
+ export declare function instanceOfIngestRun(value: object): value is IngestRun;
104
+ export declare function IngestRunFromJSON(json: any): IngestRun;
105
+ export declare function IngestRunFromJSONTyped(json: any, ignoreDiscriminator: boolean): IngestRun;
106
+ export declare function IngestRunToJSON(json: any): IngestRun;
107
+ export declare function IngestRunToJSONTyped(value?: IngestRun | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ /**
5
+ * C4R Aggregator API
6
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
7
+ *
8
+ * The version of the OpenAPI document: 1.0.0
9
+ *
10
+ *
11
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
12
+ * https://openapi-generator.tech
13
+ * Do not edit the class manually.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.IngestRunStatusEnum = void 0;
17
+ exports.instanceOfIngestRun = instanceOfIngestRun;
18
+ exports.IngestRunFromJSON = IngestRunFromJSON;
19
+ exports.IngestRunFromJSONTyped = IngestRunFromJSONTyped;
20
+ exports.IngestRunToJSON = IngestRunToJSON;
21
+ exports.IngestRunToJSONTyped = IngestRunToJSONTyped;
22
+ /**
23
+ * @export
24
+ */
25
+ exports.IngestRunStatusEnum = {
26
+ Success: 'success',
27
+ Failed: 'failed',
28
+ Suspicious: 'suspicious'
29
+ };
30
+ /**
31
+ * Check if a given object implements the IngestRun interface.
32
+ */
33
+ function instanceOfIngestRun(value) {
34
+ return true;
35
+ }
36
+ function IngestRunFromJSON(json) {
37
+ return IngestRunFromJSONTyped(json, false);
38
+ }
39
+ function IngestRunFromJSONTyped(json, ignoreDiscriminator) {
40
+ if (json == null) {
41
+ return json;
42
+ }
43
+ return {
44
+ 'id': json['id'] == null ? undefined : json['id'],
45
+ 'sourceId': json['source_id'] == null ? undefined : json['source_id'],
46
+ 'startedAt': json['started_at'] == null ? undefined : (new Date(json['started_at'])),
47
+ 'finishedAt': json['finished_at'] == null ? undefined : (new Date(json['finished_at'])),
48
+ 'status': json['status'] == null ? undefined : json['status'],
49
+ 'wasSuspicious': json['was_suspicious'] == null ? undefined : json['was_suspicious'],
50
+ 'errorType': json['error_type'] == null ? undefined : json['error_type'],
51
+ 'errorMessage': json['error_message'] == null ? undefined : json['error_message'],
52
+ 'seen': json['seen'] == null ? undefined : json['seen'],
53
+ 'created': json['created'] == null ? undefined : json['created'],
54
+ 'updated': json['updated'] == null ? undefined : json['updated'],
55
+ 'removed': json['removed'] == null ? undefined : json['removed'],
56
+ };
57
+ }
58
+ function IngestRunToJSON(json) {
59
+ return IngestRunToJSONTyped(json, false);
60
+ }
61
+ function IngestRunToJSONTyped(value, ignoreDiscriminator = false) {
62
+ if (value == null) {
63
+ return value;
64
+ }
65
+ return {
66
+ 'id': value['id'],
67
+ 'source_id': value['sourceId'],
68
+ 'started_at': value['startedAt'] == null ? value['startedAt'] : value['startedAt'].toISOString(),
69
+ 'finished_at': value['finishedAt'] == null ? value['finishedAt'] : value['finishedAt'].toISOString(),
70
+ 'status': value['status'],
71
+ 'was_suspicious': value['wasSuspicious'],
72
+ 'error_type': value['errorType'],
73
+ 'error_message': value['errorMessage'],
74
+ 'seen': value['seen'],
75
+ 'created': value['created'],
76
+ 'updated': value['updated'],
77
+ 'removed': value['removed'],
78
+ };
79
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * C4R Aggregator API
3
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import type { MapFeatureGeometry } from './MapFeatureGeometry';
13
+ import type { MapFeatureProperties } from './MapFeatureProperties';
14
+ /**
15
+ * GeoJSON Feature: one per geocoded location with the list of active meetings at that location.
16
+ * @export
17
+ * @interface MapFeature
18
+ */
19
+ export interface MapFeature {
20
+ /**
21
+ *
22
+ * @type {string}
23
+ * @memberof MapFeature
24
+ */
25
+ type?: string;
26
+ /**
27
+ *
28
+ * @type {MapFeatureGeometry}
29
+ * @memberof MapFeature
30
+ */
31
+ geometry?: MapFeatureGeometry;
32
+ /**
33
+ *
34
+ * @type {MapFeatureProperties}
35
+ * @memberof MapFeature
36
+ */
37
+ properties?: MapFeatureProperties;
38
+ }
39
+ /**
40
+ * Check if a given object implements the MapFeature interface.
41
+ */
42
+ export declare function instanceOfMapFeature(value: object): value is MapFeature;
43
+ export declare function MapFeatureFromJSON(json: any): MapFeature;
44
+ export declare function MapFeatureFromJSONTyped(json: any, ignoreDiscriminator: boolean): MapFeature;
45
+ export declare function MapFeatureToJSON(json: any): MapFeature;
46
+ export declare function MapFeatureToJSONTyped(value?: MapFeature | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ /**
5
+ * C4R Aggregator API
6
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
7
+ *
8
+ * The version of the OpenAPI document: 1.0.0
9
+ *
10
+ *
11
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
12
+ * https://openapi-generator.tech
13
+ * Do not edit the class manually.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.instanceOfMapFeature = instanceOfMapFeature;
17
+ exports.MapFeatureFromJSON = MapFeatureFromJSON;
18
+ exports.MapFeatureFromJSONTyped = MapFeatureFromJSONTyped;
19
+ exports.MapFeatureToJSON = MapFeatureToJSON;
20
+ exports.MapFeatureToJSONTyped = MapFeatureToJSONTyped;
21
+ const MapFeatureGeometry_1 = require("./MapFeatureGeometry");
22
+ const MapFeatureProperties_1 = require("./MapFeatureProperties");
23
+ /**
24
+ * Check if a given object implements the MapFeature interface.
25
+ */
26
+ function instanceOfMapFeature(value) {
27
+ return true;
28
+ }
29
+ function MapFeatureFromJSON(json) {
30
+ return MapFeatureFromJSONTyped(json, false);
31
+ }
32
+ function MapFeatureFromJSONTyped(json, ignoreDiscriminator) {
33
+ if (json == null) {
34
+ return json;
35
+ }
36
+ return {
37
+ 'type': json['type'] == null ? undefined : json['type'],
38
+ 'geometry': json['geometry'] == null ? undefined : (0, MapFeatureGeometry_1.MapFeatureGeometryFromJSON)(json['geometry']),
39
+ 'properties': json['properties'] == null ? undefined : (0, MapFeatureProperties_1.MapFeaturePropertiesFromJSON)(json['properties']),
40
+ };
41
+ }
42
+ function MapFeatureToJSON(json) {
43
+ return MapFeatureToJSONTyped(json, false);
44
+ }
45
+ function MapFeatureToJSONTyped(value, ignoreDiscriminator = false) {
46
+ if (value == null) {
47
+ return value;
48
+ }
49
+ return {
50
+ 'type': value['type'],
51
+ 'geometry': (0, MapFeatureGeometry_1.MapFeatureGeometryToJSON)(value['geometry']),
52
+ 'properties': (0, MapFeatureProperties_1.MapFeaturePropertiesToJSON)(value['properties']),
53
+ };
54
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * C4R Aggregator API
3
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import type { MapFeature } from './MapFeature';
13
+ /**
14
+ * GeoJSON FeatureCollection of all geocoded locations with at least one active meeting. Cached 5 minutes.
15
+ * @export
16
+ * @interface MapFeatureCollection
17
+ */
18
+ export interface MapFeatureCollection {
19
+ /**
20
+ *
21
+ * @type {string}
22
+ * @memberof MapFeatureCollection
23
+ */
24
+ type?: string;
25
+ /**
26
+ *
27
+ * @type {Date}
28
+ * @memberof MapFeatureCollection
29
+ */
30
+ generatedAt?: Date;
31
+ /**
32
+ *
33
+ * @type {Array<MapFeature>}
34
+ * @memberof MapFeatureCollection
35
+ */
36
+ features?: Array<MapFeature>;
37
+ }
38
+ /**
39
+ * Check if a given object implements the MapFeatureCollection interface.
40
+ */
41
+ export declare function instanceOfMapFeatureCollection(value: object): value is MapFeatureCollection;
42
+ export declare function MapFeatureCollectionFromJSON(json: any): MapFeatureCollection;
43
+ export declare function MapFeatureCollectionFromJSONTyped(json: any, ignoreDiscriminator: boolean): MapFeatureCollection;
44
+ export declare function MapFeatureCollectionToJSON(json: any): MapFeatureCollection;
45
+ export declare function MapFeatureCollectionToJSONTyped(value?: MapFeatureCollection | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ /**
5
+ * C4R Aggregator API
6
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
7
+ *
8
+ * The version of the OpenAPI document: 1.0.0
9
+ *
10
+ *
11
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
12
+ * https://openapi-generator.tech
13
+ * Do not edit the class manually.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.instanceOfMapFeatureCollection = instanceOfMapFeatureCollection;
17
+ exports.MapFeatureCollectionFromJSON = MapFeatureCollectionFromJSON;
18
+ exports.MapFeatureCollectionFromJSONTyped = MapFeatureCollectionFromJSONTyped;
19
+ exports.MapFeatureCollectionToJSON = MapFeatureCollectionToJSON;
20
+ exports.MapFeatureCollectionToJSONTyped = MapFeatureCollectionToJSONTyped;
21
+ const MapFeature_1 = require("./MapFeature");
22
+ /**
23
+ * Check if a given object implements the MapFeatureCollection interface.
24
+ */
25
+ function instanceOfMapFeatureCollection(value) {
26
+ return true;
27
+ }
28
+ function MapFeatureCollectionFromJSON(json) {
29
+ return MapFeatureCollectionFromJSONTyped(json, false);
30
+ }
31
+ function MapFeatureCollectionFromJSONTyped(json, ignoreDiscriminator) {
32
+ if (json == null) {
33
+ return json;
34
+ }
35
+ return {
36
+ 'type': json['type'] == null ? undefined : json['type'],
37
+ 'generatedAt': json['generated_at'] == null ? undefined : (new Date(json['generated_at'])),
38
+ 'features': json['features'] == null ? undefined : (json['features'].map(MapFeature_1.MapFeatureFromJSON)),
39
+ };
40
+ }
41
+ function MapFeatureCollectionToJSON(json) {
42
+ return MapFeatureCollectionToJSONTyped(json, false);
43
+ }
44
+ function MapFeatureCollectionToJSONTyped(value, ignoreDiscriminator = false) {
45
+ if (value == null) {
46
+ return value;
47
+ }
48
+ return {
49
+ 'type': value['type'],
50
+ 'generated_at': value['generatedAt'] == null ? value['generatedAt'] : value['generatedAt'].toISOString(),
51
+ 'features': value['features'] == null ? undefined : (value['features'].map(MapFeature_1.MapFeatureToJSON)),
52
+ };
53
+ }
@@ -0,0 +1,38 @@
1
+ /**
2
+ * C4R Aggregator API
3
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ /**
13
+ * GeoJSON point geometry for a MapFeature.
14
+ * @export
15
+ * @interface MapFeatureGeometry
16
+ */
17
+ export interface MapFeatureGeometry {
18
+ /**
19
+ *
20
+ * @type {string}
21
+ * @memberof MapFeatureGeometry
22
+ */
23
+ type?: string;
24
+ /**
25
+ * [longitude, latitude] — GeoJSON order.
26
+ * @type {Array<number>}
27
+ * @memberof MapFeatureGeometry
28
+ */
29
+ coordinates?: Array<number>;
30
+ }
31
+ /**
32
+ * Check if a given object implements the MapFeatureGeometry interface.
33
+ */
34
+ export declare function instanceOfMapFeatureGeometry(value: object): value is MapFeatureGeometry;
35
+ export declare function MapFeatureGeometryFromJSON(json: any): MapFeatureGeometry;
36
+ export declare function MapFeatureGeometryFromJSONTyped(json: any, ignoreDiscriminator: boolean): MapFeatureGeometry;
37
+ export declare function MapFeatureGeometryToJSON(json: any): MapFeatureGeometry;
38
+ export declare function MapFeatureGeometryToJSONTyped(value?: MapFeatureGeometry | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ /**
5
+ * C4R Aggregator API
6
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
7
+ *
8
+ * The version of the OpenAPI document: 1.0.0
9
+ *
10
+ *
11
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
12
+ * https://openapi-generator.tech
13
+ * Do not edit the class manually.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.instanceOfMapFeatureGeometry = instanceOfMapFeatureGeometry;
17
+ exports.MapFeatureGeometryFromJSON = MapFeatureGeometryFromJSON;
18
+ exports.MapFeatureGeometryFromJSONTyped = MapFeatureGeometryFromJSONTyped;
19
+ exports.MapFeatureGeometryToJSON = MapFeatureGeometryToJSON;
20
+ exports.MapFeatureGeometryToJSONTyped = MapFeatureGeometryToJSONTyped;
21
+ /**
22
+ * Check if a given object implements the MapFeatureGeometry interface.
23
+ */
24
+ function instanceOfMapFeatureGeometry(value) {
25
+ return true;
26
+ }
27
+ function MapFeatureGeometryFromJSON(json) {
28
+ return MapFeatureGeometryFromJSONTyped(json, false);
29
+ }
30
+ function MapFeatureGeometryFromJSONTyped(json, ignoreDiscriminator) {
31
+ if (json == null) {
32
+ return json;
33
+ }
34
+ return {
35
+ 'type': json['type'] == null ? undefined : json['type'],
36
+ 'coordinates': json['coordinates'] == null ? undefined : json['coordinates'],
37
+ };
38
+ }
39
+ function MapFeatureGeometryToJSON(json) {
40
+ return MapFeatureGeometryToJSONTyped(json, false);
41
+ }
42
+ function MapFeatureGeometryToJSONTyped(value, ignoreDiscriminator = false) {
43
+ if (value == null) {
44
+ return value;
45
+ }
46
+ return {
47
+ 'type': value['type'],
48
+ 'coordinates': value['coordinates'],
49
+ };
50
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * C4R Aggregator API
3
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ import type { MapMeeting } from './MapMeeting';
13
+ /**
14
+ * Per-location properties on a MapFeature — name/city/state plus the list of active meetings there.
15
+ * @export
16
+ * @interface MapFeatureProperties
17
+ */
18
+ export interface MapFeatureProperties {
19
+ /**
20
+ * Location id.
21
+ * @type {number}
22
+ * @memberof MapFeatureProperties
23
+ */
24
+ id?: number;
25
+ /**
26
+ *
27
+ * @type {string}
28
+ * @memberof MapFeatureProperties
29
+ */
30
+ name?: string | null;
31
+ /**
32
+ *
33
+ * @type {string}
34
+ * @memberof MapFeatureProperties
35
+ */
36
+ city?: string | null;
37
+ /**
38
+ *
39
+ * @type {string}
40
+ * @memberof MapFeatureProperties
41
+ */
42
+ state?: string | null;
43
+ /**
44
+ *
45
+ * @type {number}
46
+ * @memberof MapFeatureProperties
47
+ */
48
+ meetingCount?: number;
49
+ /**
50
+ * Sorted unique program codes hosted at this location — clients can use this to overlay/toggle per-program views without scanning the meetings list.
51
+ * @type {Array<string>}
52
+ * @memberof MapFeatureProperties
53
+ */
54
+ programs?: Array<string>;
55
+ /**
56
+ *
57
+ * @type {Array<MapMeeting>}
58
+ * @memberof MapFeatureProperties
59
+ */
60
+ meetings?: Array<MapMeeting>;
61
+ }
62
+ /**
63
+ * Check if a given object implements the MapFeatureProperties interface.
64
+ */
65
+ export declare function instanceOfMapFeatureProperties(value: object): value is MapFeatureProperties;
66
+ export declare function MapFeaturePropertiesFromJSON(json: any): MapFeatureProperties;
67
+ export declare function MapFeaturePropertiesFromJSONTyped(json: any, ignoreDiscriminator: boolean): MapFeatureProperties;
68
+ export declare function MapFeaturePropertiesToJSON(json: any): MapFeatureProperties;
69
+ export declare function MapFeaturePropertiesToJSONTyped(value?: MapFeatureProperties | null, ignoreDiscriminator?: boolean): any;
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /* tslint:disable */
3
+ /* eslint-disable */
4
+ /**
5
+ * C4R Aggregator API
6
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
7
+ *
8
+ * The version of the OpenAPI document: 1.0.0
9
+ *
10
+ *
11
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
12
+ * https://openapi-generator.tech
13
+ * Do not edit the class manually.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.instanceOfMapFeatureProperties = instanceOfMapFeatureProperties;
17
+ exports.MapFeaturePropertiesFromJSON = MapFeaturePropertiesFromJSON;
18
+ exports.MapFeaturePropertiesFromJSONTyped = MapFeaturePropertiesFromJSONTyped;
19
+ exports.MapFeaturePropertiesToJSON = MapFeaturePropertiesToJSON;
20
+ exports.MapFeaturePropertiesToJSONTyped = MapFeaturePropertiesToJSONTyped;
21
+ const MapMeeting_1 = require("./MapMeeting");
22
+ /**
23
+ * Check if a given object implements the MapFeatureProperties interface.
24
+ */
25
+ function instanceOfMapFeatureProperties(value) {
26
+ return true;
27
+ }
28
+ function MapFeaturePropertiesFromJSON(json) {
29
+ return MapFeaturePropertiesFromJSONTyped(json, false);
30
+ }
31
+ function MapFeaturePropertiesFromJSONTyped(json, ignoreDiscriminator) {
32
+ if (json == null) {
33
+ return json;
34
+ }
35
+ return {
36
+ 'id': json['id'] == null ? undefined : json['id'],
37
+ 'name': json['name'] == null ? undefined : json['name'],
38
+ 'city': json['city'] == null ? undefined : json['city'],
39
+ 'state': json['state'] == null ? undefined : json['state'],
40
+ 'meetingCount': json['meeting_count'] == null ? undefined : json['meeting_count'],
41
+ 'programs': json['programs'] == null ? undefined : json['programs'],
42
+ 'meetings': json['meetings'] == null ? undefined : (json['meetings'].map(MapMeeting_1.MapMeetingFromJSON)),
43
+ };
44
+ }
45
+ function MapFeaturePropertiesToJSON(json) {
46
+ return MapFeaturePropertiesToJSONTyped(json, false);
47
+ }
48
+ function MapFeaturePropertiesToJSONTyped(value, ignoreDiscriminator = false) {
49
+ if (value == null) {
50
+ return value;
51
+ }
52
+ return {
53
+ 'id': value['id'],
54
+ 'name': value['name'],
55
+ 'city': value['city'],
56
+ 'state': value['state'],
57
+ 'meeting_count': value['meetingCount'],
58
+ 'programs': value['programs'],
59
+ 'meetings': value['meetings'] == null ? undefined : (value['meetings'].map(MapMeeting_1.MapMeetingToJSON)),
60
+ };
61
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * C4R Aggregator API
3
+ * Aggregator for public [12-Step Meeting List](https://wordpress.org/plugins/12-step-meeting-list/) WordPress feeds. Ingests registered sources on a schedule, normalizes duplicates across feeds, and exposes a unified read API whose responses follow the [Meeting Guide API spec](https://github.com/code4recovery/spec) for drop-in client compatibility. - **Public endpoints** return Meeting Guide-shape data. `/meetings` requires at least one filter (bounding box, radius, region, source, program, day, or type) and is cursor-paginated. - **Per-source and per-region feeds** return bare JSON arrays — safe drop-in replacements for the upstream TSML endpoint. - **Admin endpoints** under `/admin/_*` require a Sanctum bearer token.
4
+ *
5
+ * The version of the OpenAPI document: 1.0.0
6
+ *
7
+ *
8
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
9
+ * https://openapi-generator.tech
10
+ * Do not edit the class manually.
11
+ */
12
+ /**
13
+ * Minimal meeting shape embedded in a MapFeature.properties.meetings array.
14
+ * @export
15
+ * @interface MapMeeting
16
+ */
17
+ export interface MapMeeting {
18
+ /**
19
+ *
20
+ * @type {string}
21
+ * @memberof MapMeeting
22
+ */
23
+ name?: string | null;
24
+ /**
25
+ *
26
+ * @type {number}
27
+ * @memberof MapMeeting
28
+ */
29
+ day?: number | null;
30
+ /**
31
+ *
32
+ * @type {string}
33
+ * @memberof MapMeeting
34
+ */
35
+ time?: string | null;
36
+ /**
37
+ *
38
+ * @type {string}
39
+ * @memberof MapMeeting
40
+ */
41
+ program?: string;
42
+ }
43
+ /**
44
+ * Check if a given object implements the MapMeeting interface.
45
+ */
46
+ export declare function instanceOfMapMeeting(value: object): value is MapMeeting;
47
+ export declare function MapMeetingFromJSON(json: any): MapMeeting;
48
+ export declare function MapMeetingFromJSONTyped(json: any, ignoreDiscriminator: boolean): MapMeeting;
49
+ export declare function MapMeetingToJSON(json: any): MapMeeting;
50
+ export declare function MapMeetingToJSONTyped(value?: MapMeeting | null, ignoreDiscriminator?: boolean): any;