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.
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/ts.iml +9 -0
- package/.idea/vcs.xml +6 -0
- package/.openapi-generator/FILES +91 -0
- package/.openapi-generator/VERSION +1 -0
- package/.openapi-generator-ignore +23 -0
- package/README.md +174 -0
- package/dist/apis/AdminApi.d.ts +187 -0
- package/dist/apis/AdminApi.js +515 -0
- package/dist/apis/CatalogApi.d.ts +84 -0
- package/dist/apis/CatalogApi.js +191 -0
- package/dist/apis/MeetingsApi.d.ts +98 -0
- package/dist/apis/MeetingsApi.js +235 -0
- package/dist/apis/SourcesApi.d.ts +35 -0
- package/dist/apis/SourcesApi.js +73 -0
- package/dist/apis/index.d.ts +4 -0
- package/dist/apis/index.js +22 -0
- package/dist/esm/apis/AdminApi.d.ts +187 -0
- package/dist/esm/apis/AdminApi.js +511 -0
- package/dist/esm/apis/CatalogApi.d.ts +84 -0
- package/dist/esm/apis/CatalogApi.js +187 -0
- package/dist/esm/apis/MeetingsApi.d.ts +98 -0
- package/dist/esm/apis/MeetingsApi.js +231 -0
- package/dist/esm/apis/SourcesApi.d.ts +35 -0
- package/dist/esm/apis/SourcesApi.js +69 -0
- package/dist/esm/apis/index.d.ts +4 -0
- package/dist/esm/apis/index.js +6 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/models/AdminSource.d.ts +190 -0
- package/dist/esm/models/AdminSource.js +112 -0
- package/dist/esm/models/AuthError.d.ts +32 -0
- package/dist/esm/models/AuthError.js +41 -0
- package/dist/esm/models/CreateSourceRequest.d.ts +76 -0
- package/dist/esm/models/CreateSourceRequest.js +64 -0
- package/dist/esm/models/CreateSourceResponse.d.ts +45 -0
- package/dist/esm/models/CreateSourceResponse.js +46 -0
- package/dist/esm/models/DedupCounters.d.ts +86 -0
- package/dist/esm/models/DedupCounters.js +59 -0
- package/dist/esm/models/DedupStats.d.ts +65 -0
- package/dist/esm/models/DedupStats.js +54 -0
- package/dist/esm/models/DedupStatsLatestRun.d.ts +60 -0
- package/dist/esm/models/DedupStatsLatestRun.js +56 -0
- package/dist/esm/models/DedupStatsRecentRunsInner.d.ts +45 -0
- package/dist/esm/models/DedupStatsRecentRunsInner.js +46 -0
- package/dist/esm/models/FeedValidationError.d.ts +54 -0
- package/dist/esm/models/FeedValidationError.js +54 -0
- package/dist/esm/models/IngestRun.d.ts +107 -0
- package/dist/esm/models/IngestRun.js +71 -0
- package/dist/esm/models/MapFeature.d.ts +46 -0
- package/dist/esm/models/MapFeature.js +47 -0
- package/dist/esm/models/MapFeatureCollection.d.ts +45 -0
- package/dist/esm/models/MapFeatureCollection.js +46 -0
- package/dist/esm/models/MapFeatureGeometry.d.ts +38 -0
- package/dist/esm/models/MapFeatureGeometry.js +43 -0
- package/dist/esm/models/MapFeatureProperties.d.ts +69 -0
- package/dist/esm/models/MapFeatureProperties.js +54 -0
- package/dist/esm/models/MapMeeting.d.ts +50 -0
- package/dist/esm/models/MapMeeting.js +47 -0
- package/dist/esm/models/Meeting.d.ts +272 -0
- package/dist/esm/models/Meeting.js +131 -0
- package/dist/esm/models/MeetingPage.d.ts +47 -0
- package/dist/esm/models/MeetingPage.js +48 -0
- package/dist/esm/models/MeetingPageLinks.d.ts +50 -0
- package/dist/esm/models/MeetingPageLinks.js +47 -0
- package/dist/esm/models/MeetingPageMeta.d.ts +50 -0
- package/dist/esm/models/MeetingPageMeta.js +47 -0
- package/dist/esm/models/MeetingType.d.ts +56 -0
- package/dist/esm/models/MeetingType.js +49 -0
- package/dist/esm/models/MeetingsFilterError.d.ts +44 -0
- package/dist/esm/models/MeetingsFilterError.js +45 -0
- package/dist/esm/models/Program.d.ts +44 -0
- package/dist/esm/models/Program.js +45 -0
- package/dist/esm/models/PublicSource.d.ts +113 -0
- package/dist/esm/models/PublicSource.js +80 -0
- package/dist/esm/models/SourceEnvelope.d.ts +33 -0
- package/dist/esm/models/SourceEnvelope.js +42 -0
- package/dist/esm/models/SourceRefreshResponse.d.ts +39 -0
- package/dist/esm/models/SourceRefreshResponse.js +44 -0
- package/dist/esm/models/Stats.d.ts +86 -0
- package/dist/esm/models/Stats.js +63 -0
- package/dist/esm/models/StatsGroups.d.ts +32 -0
- package/dist/esm/models/StatsGroups.js +41 -0
- package/dist/esm/models/StatsLocations.d.ts +38 -0
- package/dist/esm/models/StatsLocations.js +43 -0
- package/dist/esm/models/StatsMeetingTypes.d.ts +32 -0
- package/dist/esm/models/StatsMeetingTypes.js +41 -0
- package/dist/esm/models/StatsMeetings.d.ts +68 -0
- package/dist/esm/models/StatsMeetings.js +51 -0
- package/dist/esm/models/StatsProgramsBreakdownInner.d.ts +62 -0
- package/dist/esm/models/StatsProgramsBreakdownInner.js +51 -0
- package/dist/esm/models/StatsSources.d.ts +47 -0
- package/dist/esm/models/StatsSources.js +46 -0
- package/dist/esm/models/StatsSourcesTopByMeetingCountInner.d.ts +44 -0
- package/dist/esm/models/StatsSourcesTopByMeetingCountInner.js +45 -0
- package/dist/esm/models/StoreSourceValidationError.d.ts +23 -0
- package/dist/esm/models/StoreSourceValidationError.js +51 -0
- package/dist/esm/models/UpdateSourceRequest.d.ts +70 -0
- package/dist/esm/models/UpdateSourceRequest.js +58 -0
- package/dist/esm/models/ValidationError.d.ts +40 -0
- package/dist/esm/models/ValidationError.js +43 -0
- package/dist/esm/models/index.d.ts +36 -0
- package/dist/esm/models/index.js +38 -0
- package/dist/esm/runtime.d.ts +184 -0
- package/dist/esm/runtime.js +349 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +21 -0
- package/dist/models/AdminSource.d.ts +190 -0
- package/dist/models/AdminSource.js +120 -0
- package/dist/models/AuthError.d.ts +32 -0
- package/dist/models/AuthError.js +48 -0
- package/dist/models/CreateSourceRequest.d.ts +76 -0
- package/dist/models/CreateSourceRequest.js +72 -0
- package/dist/models/CreateSourceResponse.d.ts +45 -0
- package/dist/models/CreateSourceResponse.js +53 -0
- package/dist/models/DedupCounters.d.ts +86 -0
- package/dist/models/DedupCounters.js +66 -0
- package/dist/models/DedupStats.d.ts +65 -0
- package/dist/models/DedupStats.js +61 -0
- package/dist/models/DedupStatsLatestRun.d.ts +60 -0
- package/dist/models/DedupStatsLatestRun.js +64 -0
- package/dist/models/DedupStatsRecentRunsInner.d.ts +45 -0
- package/dist/models/DedupStatsRecentRunsInner.js +53 -0
- package/dist/models/FeedValidationError.d.ts +54 -0
- package/dist/models/FeedValidationError.js +62 -0
- package/dist/models/IngestRun.d.ts +107 -0
- package/dist/models/IngestRun.js +79 -0
- package/dist/models/MapFeature.d.ts +46 -0
- package/dist/models/MapFeature.js +54 -0
- package/dist/models/MapFeatureCollection.d.ts +45 -0
- package/dist/models/MapFeatureCollection.js +53 -0
- package/dist/models/MapFeatureGeometry.d.ts +38 -0
- package/dist/models/MapFeatureGeometry.js +50 -0
- package/dist/models/MapFeatureProperties.d.ts +69 -0
- package/dist/models/MapFeatureProperties.js +61 -0
- package/dist/models/MapMeeting.d.ts +50 -0
- package/dist/models/MapMeeting.js +54 -0
- package/dist/models/Meeting.d.ts +272 -0
- package/dist/models/Meeting.js +139 -0
- package/dist/models/MeetingPage.d.ts +47 -0
- package/dist/models/MeetingPage.js +55 -0
- package/dist/models/MeetingPageLinks.d.ts +50 -0
- package/dist/models/MeetingPageLinks.js +54 -0
- package/dist/models/MeetingPageMeta.d.ts +50 -0
- package/dist/models/MeetingPageMeta.js +54 -0
- package/dist/models/MeetingType.d.ts +56 -0
- package/dist/models/MeetingType.js +56 -0
- package/dist/models/MeetingsFilterError.d.ts +44 -0
- package/dist/models/MeetingsFilterError.js +52 -0
- package/dist/models/Program.d.ts +44 -0
- package/dist/models/Program.js +52 -0
- package/dist/models/PublicSource.d.ts +113 -0
- package/dist/models/PublicSource.js +88 -0
- package/dist/models/SourceEnvelope.d.ts +33 -0
- package/dist/models/SourceEnvelope.js +49 -0
- package/dist/models/SourceRefreshResponse.d.ts +39 -0
- package/dist/models/SourceRefreshResponse.js +51 -0
- package/dist/models/Stats.d.ts +86 -0
- package/dist/models/Stats.js +70 -0
- package/dist/models/StatsGroups.d.ts +32 -0
- package/dist/models/StatsGroups.js +48 -0
- package/dist/models/StatsLocations.d.ts +38 -0
- package/dist/models/StatsLocations.js +50 -0
- package/dist/models/StatsMeetingTypes.d.ts +32 -0
- package/dist/models/StatsMeetingTypes.js +48 -0
- package/dist/models/StatsMeetings.d.ts +68 -0
- package/dist/models/StatsMeetings.js +58 -0
- package/dist/models/StatsProgramsBreakdownInner.d.ts +62 -0
- package/dist/models/StatsProgramsBreakdownInner.js +58 -0
- package/dist/models/StatsSources.d.ts +47 -0
- package/dist/models/StatsSources.js +53 -0
- package/dist/models/StatsSourcesTopByMeetingCountInner.d.ts +44 -0
- package/dist/models/StatsSourcesTopByMeetingCountInner.js +52 -0
- package/dist/models/StoreSourceValidationError.d.ts +23 -0
- package/dist/models/StoreSourceValidationError.js +57 -0
- package/dist/models/UpdateSourceRequest.d.ts +70 -0
- package/dist/models/UpdateSourceRequest.js +66 -0
- package/dist/models/ValidationError.d.ts +40 -0
- package/dist/models/ValidationError.js +50 -0
- package/dist/models/index.d.ts +36 -0
- package/dist/models/index.js +54 -0
- package/dist/runtime.d.ts +184 -0
- package/dist/runtime.js +365 -0
- package/docs/AdminApi.md +734 -0
- package/docs/AdminSource.md +77 -0
- package/docs/AuthError.md +34 -0
- package/docs/CatalogApi.md +270 -0
- package/docs/CreateSourceRequest.md +46 -0
- package/docs/CreateSourceResponse.md +38 -0
- package/docs/DedupCounters.md +53 -0
- package/docs/DedupStats.md +45 -0
- package/docs/DedupStatsLatestRun.md +41 -0
- package/docs/DedupStatsRecentRunsInner.md +39 -0
- package/docs/FeedValidationError.md +39 -0
- package/docs/IngestRun.md +57 -0
- package/docs/MapFeature.md +39 -0
- package/docs/MapFeatureCollection.md +39 -0
- package/docs/MapFeatureGeometry.md +37 -0
- package/docs/MapFeatureProperties.md +47 -0
- package/docs/MapMeeting.md +41 -0
- package/docs/Meeting.md +109 -0
- package/docs/MeetingPage.md +39 -0
- package/docs/MeetingPageLinks.md +41 -0
- package/docs/MeetingPageMeta.md +41 -0
- package/docs/MeetingType.md +42 -0
- package/docs/MeetingsApi.md +323 -0
- package/docs/MeetingsFilterError.md +39 -0
- package/docs/Program.md +38 -0
- package/docs/PublicSource.md +55 -0
- package/docs/SourceEnvelope.md +35 -0
- package/docs/SourceRefreshResponse.md +37 -0
- package/docs/SourcesApi.md +76 -0
- package/docs/Stats.md +51 -0
- package/docs/StatsGroups.md +35 -0
- package/docs/StatsLocations.md +37 -0
- package/docs/StatsMeetingTypes.md +35 -0
- package/docs/StatsMeetings.md +45 -0
- package/docs/StatsProgramsBreakdownInner.md +45 -0
- package/docs/StatsSources.md +39 -0
- package/docs/StatsSourcesTopByMeetingCountInner.md +39 -0
- package/docs/StoreSourceValidationError.md +41 -0
- package/docs/UpdateSourceRequest.md +44 -0
- package/docs/ValidationError.md +36 -0
- package/package.json +21 -0
- package/src/apis/AdminApi.ts +659 -0
- package/src/apis/CatalogApi.ts +220 -0
- package/src/apis/MeetingsApi.ts +305 -0
- package/src/apis/SourcesApi.ts +74 -0
- package/src/apis/index.ts +6 -0
- package/src/index.ts +5 -0
- package/src/models/AdminSource.ts +270 -0
- package/src/models/AuthError.ts +65 -0
- package/src/models/CreateSourceRequest.ts +126 -0
- package/src/models/CreateSourceResponse.ts +89 -0
- package/src/models/DedupCounters.ts +137 -0
- package/src/models/DedupStats.ts +127 -0
- package/src/models/DedupStatsLatestRun.ts +109 -0
- package/src/models/DedupStatsRecentRunsInner.ts +89 -0
- package/src/models/FeedValidationError.ts +94 -0
- package/src/models/IngestRun.ts +165 -0
- package/src/models/MapFeature.ts +96 -0
- package/src/models/MapFeatureCollection.ts +89 -0
- package/src/models/MapFeatureGeometry.ts +73 -0
- package/src/models/MapFeatureProperties.ts +121 -0
- package/src/models/MapMeeting.ts +89 -0
- package/src/models/Meeting.ts +383 -0
- package/src/models/MeetingPage.ts +103 -0
- package/src/models/MeetingPageLinks.ts +89 -0
- package/src/models/MeetingPageMeta.ts +89 -0
- package/src/models/MeetingType.ts +97 -0
- package/src/models/MeetingsFilterError.ts +81 -0
- package/src/models/Program.ts +81 -0
- package/src/models/PublicSource.ts +170 -0
- package/src/models/SourceEnvelope.ts +73 -0
- package/src/models/SourceRefreshResponse.ts +81 -0
- package/src/models/Stats.ts +172 -0
- package/src/models/StatsGroups.ts +65 -0
- package/src/models/StatsLocations.ts +73 -0
- package/src/models/StatsMeetingTypes.ts +65 -0
- package/src/models/StatsMeetings.ts +105 -0
- package/src/models/StatsProgramsBreakdownInner.ts +105 -0
- package/src/models/StatsSources.ts +89 -0
- package/src/models/StatsSourcesTopByMeetingCountInner.ts +81 -0
- package/src/models/StoreSourceValidationError.ts +76 -0
- package/src/models/UpdateSourceRequest.ts +116 -0
- package/src/models/ValidationError.ts +73 -0
- package/src/models/index.ts +38 -0
- package/src/runtime.ts +449 -0
- package/tsconfig.esm.json +7 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,191 @@
|
|
|
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
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
16
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
17
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
18
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
19
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
20
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
21
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.CatalogApi = void 0;
|
|
26
|
+
const runtime = require("../runtime");
|
|
27
|
+
const MapFeatureCollection_1 = require("../models/MapFeatureCollection");
|
|
28
|
+
const MeetingType_1 = require("../models/MeetingType");
|
|
29
|
+
const Program_1 = require("../models/Program");
|
|
30
|
+
const Stats_1 = require("../models/Stats");
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
class CatalogApi extends runtime.BaseAPI {
|
|
35
|
+
/**
|
|
36
|
+
* Creates request options for getMap without sending the request
|
|
37
|
+
*/
|
|
38
|
+
getMapRequestOpts(requestParameters) {
|
|
39
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
const queryParameters = {};
|
|
41
|
+
if (requestParameters['program'] != null) {
|
|
42
|
+
queryParameters['program'] = requestParameters['program'];
|
|
43
|
+
}
|
|
44
|
+
const headerParameters = {};
|
|
45
|
+
let urlPath = `/api/v1/map`;
|
|
46
|
+
return {
|
|
47
|
+
path: urlPath,
|
|
48
|
+
method: 'GET',
|
|
49
|
+
headers: headerParameters,
|
|
50
|
+
query: queryParameters,
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* One Feature per Location (not per meeting), with the list of meetings-at-that-location in the properties. Intended for a coverage-map view — show pins, click to see meeting names. Cached for 5 minutes (per program filter).
|
|
56
|
+
* All geocoded locations with active meetings, as GeoJSON
|
|
57
|
+
*/
|
|
58
|
+
getMapRaw(requestParameters, initOverrides) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
const requestOptions = yield this.getMapRequestOpts(requestParameters);
|
|
61
|
+
const response = yield this.request(requestOptions, initOverrides);
|
|
62
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => (0, MapFeatureCollection_1.MapFeatureCollectionFromJSON)(jsonValue));
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* One Feature per Location (not per meeting), with the list of meetings-at-that-location in the properties. Intended for a coverage-map view — show pins, click to see meeting names. Cached for 5 minutes (per program filter).
|
|
67
|
+
* All geocoded locations with active meetings, as GeoJSON
|
|
68
|
+
*/
|
|
69
|
+
getMap() {
|
|
70
|
+
return __awaiter(this, arguments, void 0, function* (requestParameters = {}, initOverrides) {
|
|
71
|
+
const response = yield this.getMapRaw(requestParameters, initOverrides);
|
|
72
|
+
return yield response.value();
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Creates request options for getStats without sending the request
|
|
77
|
+
*/
|
|
78
|
+
getStatsRequestOpts(requestParameters) {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
const queryParameters = {};
|
|
81
|
+
if (requestParameters['program'] != null) {
|
|
82
|
+
queryParameters['program'] = requestParameters['program'];
|
|
83
|
+
}
|
|
84
|
+
const headerParameters = {};
|
|
85
|
+
let urlPath = `/api/v1/stats`;
|
|
86
|
+
return {
|
|
87
|
+
path: urlPath,
|
|
88
|
+
method: 'GET',
|
|
89
|
+
headers: headerParameters,
|
|
90
|
+
query: queryParameters,
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Cached for 60s in Redis (per program filter). Useful for dashboards, transparency pages, and monitoring. Pass `?program=AA` to scope every count to a single program; `programs_breakdown` is always included so you can see per-program slices alongside the totals.
|
|
96
|
+
* Aggregator-wide counts and health snapshot
|
|
97
|
+
*/
|
|
98
|
+
getStatsRaw(requestParameters, initOverrides) {
|
|
99
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
100
|
+
const requestOptions = yield this.getStatsRequestOpts(requestParameters);
|
|
101
|
+
const response = yield this.request(requestOptions, initOverrides);
|
|
102
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => (0, Stats_1.StatsFromJSON)(jsonValue));
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Cached for 60s in Redis (per program filter). Useful for dashboards, transparency pages, and monitoring. Pass `?program=AA` to scope every count to a single program; `programs_breakdown` is always included so you can see per-program slices alongside the totals.
|
|
107
|
+
* Aggregator-wide counts and health snapshot
|
|
108
|
+
*/
|
|
109
|
+
getStats() {
|
|
110
|
+
return __awaiter(this, arguments, void 0, function* (requestParameters = {}, initOverrides) {
|
|
111
|
+
const response = yield this.getStatsRaw(requestParameters, initOverrides);
|
|
112
|
+
return yield response.value();
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Creates request options for listMeetingTypes without sending the request
|
|
117
|
+
*/
|
|
118
|
+
listMeetingTypesRequestOpts(requestParameters) {
|
|
119
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
120
|
+
const queryParameters = {};
|
|
121
|
+
if (requestParameters['program'] != null) {
|
|
122
|
+
queryParameters['program'] = requestParameters['program'];
|
|
123
|
+
}
|
|
124
|
+
const headerParameters = {};
|
|
125
|
+
let urlPath = `/api/v1/types`;
|
|
126
|
+
return {
|
|
127
|
+
path: urlPath,
|
|
128
|
+
method: 'GET',
|
|
129
|
+
headers: headerParameters,
|
|
130
|
+
query: queryParameters,
|
|
131
|
+
};
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Returns all known meeting-type codes. Filter by `program` to scope to one program (e.g. AA).
|
|
136
|
+
* Meeting-type dictionary
|
|
137
|
+
*/
|
|
138
|
+
listMeetingTypesRaw(requestParameters, initOverrides) {
|
|
139
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
140
|
+
const requestOptions = yield this.listMeetingTypesRequestOpts(requestParameters);
|
|
141
|
+
const response = yield this.request(requestOptions, initOverrides);
|
|
142
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(MeetingType_1.MeetingTypeFromJSON));
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Returns all known meeting-type codes. Filter by `program` to scope to one program (e.g. AA).
|
|
147
|
+
* Meeting-type dictionary
|
|
148
|
+
*/
|
|
149
|
+
listMeetingTypes() {
|
|
150
|
+
return __awaiter(this, arguments, void 0, function* (requestParameters = {}, initOverrides) {
|
|
151
|
+
const response = yield this.listMeetingTypesRaw(requestParameters, initOverrides);
|
|
152
|
+
return yield response.value();
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Creates request options for listPrograms without sending the request
|
|
157
|
+
*/
|
|
158
|
+
listProgramsRequestOpts() {
|
|
159
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
const queryParameters = {};
|
|
161
|
+
const headerParameters = {};
|
|
162
|
+
let urlPath = `/api/v1/programs`;
|
|
163
|
+
return {
|
|
164
|
+
path: urlPath,
|
|
165
|
+
method: 'GET',
|
|
166
|
+
headers: headerParameters,
|
|
167
|
+
query: queryParameters,
|
|
168
|
+
};
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* List supported programs
|
|
173
|
+
*/
|
|
174
|
+
listProgramsRaw(initOverrides) {
|
|
175
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
176
|
+
const requestOptions = yield this.listProgramsRequestOpts();
|
|
177
|
+
const response = yield this.request(requestOptions, initOverrides);
|
|
178
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(Program_1.ProgramFromJSON));
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* List supported programs
|
|
183
|
+
*/
|
|
184
|
+
listPrograms(initOverrides) {
|
|
185
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
186
|
+
const response = yield this.listProgramsRaw(initOverrides);
|
|
187
|
+
return yield response.value();
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.CatalogApi = CatalogApi;
|
|
@@ -0,0 +1,98 @@
|
|
|
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 * as runtime from '../runtime';
|
|
13
|
+
import { type Meeting } from '../models/Meeting';
|
|
14
|
+
import { type MeetingPage } from '../models/MeetingPage';
|
|
15
|
+
export interface ExportMeetingsRequest {
|
|
16
|
+
includeInactive?: boolean;
|
|
17
|
+
program?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface GetRegionFeedRequest {
|
|
20
|
+
region: number;
|
|
21
|
+
}
|
|
22
|
+
export interface GetSourceFeedRequest {
|
|
23
|
+
source: number;
|
|
24
|
+
}
|
|
25
|
+
export interface ListMeetingsRequest {
|
|
26
|
+
bbox?: string;
|
|
27
|
+
near?: string;
|
|
28
|
+
radius?: number;
|
|
29
|
+
regionId?: number;
|
|
30
|
+
sourceId?: number;
|
|
31
|
+
program?: string;
|
|
32
|
+
day?: number;
|
|
33
|
+
type?: string;
|
|
34
|
+
includeInactive?: boolean;
|
|
35
|
+
cursor?: string;
|
|
36
|
+
limit?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
export declare class MeetingsApi extends runtime.BaseAPI {
|
|
42
|
+
/**
|
|
43
|
+
* Creates request options for exportMeetings without sending the request
|
|
44
|
+
*/
|
|
45
|
+
exportMeetingsRequestOpts(requestParameters: ExportMeetingsRequest): Promise<runtime.RequestOpts>;
|
|
46
|
+
/**
|
|
47
|
+
* Returns every meeting as newline-delimited JSON. Intended for researchers and downstream aggregators. Heavily rate-limited (5/minute) and requires a Sanctum bearer token. Filter by `program` to scope to one program (unknown codes stream an empty body).
|
|
48
|
+
* Streamed NDJSON export of all meetings
|
|
49
|
+
*/
|
|
50
|
+
exportMeetingsRaw(requestParameters: ExportMeetingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<void>>;
|
|
51
|
+
/**
|
|
52
|
+
* Returns every meeting as newline-delimited JSON. Intended for researchers and downstream aggregators. Heavily rate-limited (5/minute) and requires a Sanctum bearer token. Filter by `program` to scope to one program (unknown codes stream an empty body).
|
|
53
|
+
* Streamed NDJSON export of all meetings
|
|
54
|
+
*/
|
|
55
|
+
exportMeetings(requestParameters?: ExportMeetingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Creates request options for getRegionFeed without sending the request
|
|
58
|
+
*/
|
|
59
|
+
getRegionFeedRequestOpts(requestParameters: GetRegionFeedRequest): Promise<runtime.RequestOpts>;
|
|
60
|
+
/**
|
|
61
|
+
* Returns a bare JSON array of meetings located within the specified region or any sub-region.
|
|
62
|
+
* Full Meeting Guide feed for a region and its descendants
|
|
63
|
+
*/
|
|
64
|
+
getRegionFeedRaw(requestParameters: GetRegionFeedRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Meeting>>>;
|
|
65
|
+
/**
|
|
66
|
+
* Returns a bare JSON array of meetings located within the specified region or any sub-region.
|
|
67
|
+
* Full Meeting Guide feed for a region and its descendants
|
|
68
|
+
*/
|
|
69
|
+
getRegionFeed(requestParameters: GetRegionFeedRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Meeting>>;
|
|
70
|
+
/**
|
|
71
|
+
* Creates request options for getSourceFeed without sending the request
|
|
72
|
+
*/
|
|
73
|
+
getSourceFeedRequestOpts(requestParameters: GetSourceFeedRequest): Promise<runtime.RequestOpts>;
|
|
74
|
+
/**
|
|
75
|
+
* Drop-in replacement for the upstream `/wp-json/tsml/meetings` endpoint. Returns a bare JSON array of meetings — no pagination envelope.
|
|
76
|
+
* Full Meeting Guide feed for a single source
|
|
77
|
+
*/
|
|
78
|
+
getSourceFeedRaw(requestParameters: GetSourceFeedRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Meeting>>>;
|
|
79
|
+
/**
|
|
80
|
+
* Drop-in replacement for the upstream `/wp-json/tsml/meetings` endpoint. Returns a bare JSON array of meetings — no pagination envelope.
|
|
81
|
+
* Full Meeting Guide feed for a single source
|
|
82
|
+
*/
|
|
83
|
+
getSourceFeed(requestParameters: GetSourceFeedRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<Meeting>>;
|
|
84
|
+
/**
|
|
85
|
+
* Creates request options for listMeetings without sending the request
|
|
86
|
+
*/
|
|
87
|
+
listMeetingsRequestOpts(requestParameters: ListMeetingsRequest): Promise<runtime.RequestOpts>;
|
|
88
|
+
/**
|
|
89
|
+
* Returns meetings matching the provided filter(s). At least one of `bbox`, `near`, `region_id`, `source_id`, `program`, `day`, or `type` is required. Results are cursor-paginated (default 500/page, max 2000).
|
|
90
|
+
* Filtered meeting search
|
|
91
|
+
*/
|
|
92
|
+
listMeetingsRaw(requestParameters: ListMeetingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<MeetingPage>>;
|
|
93
|
+
/**
|
|
94
|
+
* Returns meetings matching the provided filter(s). At least one of `bbox`, `near`, `region_id`, `source_id`, `program`, `day`, or `type` is required. Results are cursor-paginated (default 500/page, max 2000).
|
|
95
|
+
* Filtered meeting search
|
|
96
|
+
*/
|
|
97
|
+
listMeetings(requestParameters?: ListMeetingsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<MeetingPage>;
|
|
98
|
+
}
|
|
@@ -0,0 +1,235 @@
|
|
|
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
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
16
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
17
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
18
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
19
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
20
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
21
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.MeetingsApi = void 0;
|
|
26
|
+
const runtime = require("../runtime");
|
|
27
|
+
const Meeting_1 = require("../models/Meeting");
|
|
28
|
+
const MeetingPage_1 = require("../models/MeetingPage");
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
*/
|
|
32
|
+
class MeetingsApi extends runtime.BaseAPI {
|
|
33
|
+
/**
|
|
34
|
+
* Creates request options for exportMeetings without sending the request
|
|
35
|
+
*/
|
|
36
|
+
exportMeetingsRequestOpts(requestParameters) {
|
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
const queryParameters = {};
|
|
39
|
+
if (requestParameters['includeInactive'] != null) {
|
|
40
|
+
queryParameters['include_inactive'] = requestParameters['includeInactive'];
|
|
41
|
+
}
|
|
42
|
+
if (requestParameters['program'] != null) {
|
|
43
|
+
queryParameters['program'] = requestParameters['program'];
|
|
44
|
+
}
|
|
45
|
+
const headerParameters = {};
|
|
46
|
+
if (this.configuration && this.configuration.accessToken) {
|
|
47
|
+
const token = this.configuration.accessToken;
|
|
48
|
+
const tokenString = yield token("bearerAuth", []);
|
|
49
|
+
if (tokenString) {
|
|
50
|
+
headerParameters["Authorization"] = `Bearer ${tokenString}`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
let urlPath = `/api/v1/meetings/export`;
|
|
54
|
+
return {
|
|
55
|
+
path: urlPath,
|
|
56
|
+
method: 'GET',
|
|
57
|
+
headers: headerParameters,
|
|
58
|
+
query: queryParameters,
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Returns every meeting as newline-delimited JSON. Intended for researchers and downstream aggregators. Heavily rate-limited (5/minute) and requires a Sanctum bearer token. Filter by `program` to scope to one program (unknown codes stream an empty body).
|
|
64
|
+
* Streamed NDJSON export of all meetings
|
|
65
|
+
*/
|
|
66
|
+
exportMeetingsRaw(requestParameters, initOverrides) {
|
|
67
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
const requestOptions = yield this.exportMeetingsRequestOpts(requestParameters);
|
|
69
|
+
const response = yield this.request(requestOptions, initOverrides);
|
|
70
|
+
return new runtime.VoidApiResponse(response);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Returns every meeting as newline-delimited JSON. Intended for researchers and downstream aggregators. Heavily rate-limited (5/minute) and requires a Sanctum bearer token. Filter by `program` to scope to one program (unknown codes stream an empty body).
|
|
75
|
+
* Streamed NDJSON export of all meetings
|
|
76
|
+
*/
|
|
77
|
+
exportMeetings() {
|
|
78
|
+
return __awaiter(this, arguments, void 0, function* (requestParameters = {}, initOverrides) {
|
|
79
|
+
yield this.exportMeetingsRaw(requestParameters, initOverrides);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Creates request options for getRegionFeed without sending the request
|
|
84
|
+
*/
|
|
85
|
+
getRegionFeedRequestOpts(requestParameters) {
|
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
if (requestParameters['region'] == null) {
|
|
88
|
+
throw new runtime.RequiredError('region', 'Required parameter "region" was null or undefined when calling getRegionFeed().');
|
|
89
|
+
}
|
|
90
|
+
const queryParameters = {};
|
|
91
|
+
const headerParameters = {};
|
|
92
|
+
let urlPath = `/api/v1/regions/{region}/feed`;
|
|
93
|
+
urlPath = urlPath.replace('{region}', encodeURIComponent(String(requestParameters['region'])));
|
|
94
|
+
return {
|
|
95
|
+
path: urlPath,
|
|
96
|
+
method: 'GET',
|
|
97
|
+
headers: headerParameters,
|
|
98
|
+
query: queryParameters,
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Returns a bare JSON array of meetings located within the specified region or any sub-region.
|
|
104
|
+
* Full Meeting Guide feed for a region and its descendants
|
|
105
|
+
*/
|
|
106
|
+
getRegionFeedRaw(requestParameters, initOverrides) {
|
|
107
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
108
|
+
const requestOptions = yield this.getRegionFeedRequestOpts(requestParameters);
|
|
109
|
+
const response = yield this.request(requestOptions, initOverrides);
|
|
110
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(Meeting_1.MeetingFromJSON));
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Returns a bare JSON array of meetings located within the specified region or any sub-region.
|
|
115
|
+
* Full Meeting Guide feed for a region and its descendants
|
|
116
|
+
*/
|
|
117
|
+
getRegionFeed(requestParameters, initOverrides) {
|
|
118
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
const response = yield this.getRegionFeedRaw(requestParameters, initOverrides);
|
|
120
|
+
return yield response.value();
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Creates request options for getSourceFeed without sending the request
|
|
125
|
+
*/
|
|
126
|
+
getSourceFeedRequestOpts(requestParameters) {
|
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
if (requestParameters['source'] == null) {
|
|
129
|
+
throw new runtime.RequiredError('source', 'Required parameter "source" was null or undefined when calling getSourceFeed().');
|
|
130
|
+
}
|
|
131
|
+
const queryParameters = {};
|
|
132
|
+
const headerParameters = {};
|
|
133
|
+
let urlPath = `/api/v1/sources/{source}/feed`;
|
|
134
|
+
urlPath = urlPath.replace('{source}', encodeURIComponent(String(requestParameters['source'])));
|
|
135
|
+
return {
|
|
136
|
+
path: urlPath,
|
|
137
|
+
method: 'GET',
|
|
138
|
+
headers: headerParameters,
|
|
139
|
+
query: queryParameters,
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Drop-in replacement for the upstream `/wp-json/tsml/meetings` endpoint. Returns a bare JSON array of meetings — no pagination envelope.
|
|
145
|
+
* Full Meeting Guide feed for a single source
|
|
146
|
+
*/
|
|
147
|
+
getSourceFeedRaw(requestParameters, initOverrides) {
|
|
148
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
const requestOptions = yield this.getSourceFeedRequestOpts(requestParameters);
|
|
150
|
+
const response = yield this.request(requestOptions, initOverrides);
|
|
151
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(Meeting_1.MeetingFromJSON));
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Drop-in replacement for the upstream `/wp-json/tsml/meetings` endpoint. Returns a bare JSON array of meetings — no pagination envelope.
|
|
156
|
+
* Full Meeting Guide feed for a single source
|
|
157
|
+
*/
|
|
158
|
+
getSourceFeed(requestParameters, initOverrides) {
|
|
159
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
const response = yield this.getSourceFeedRaw(requestParameters, initOverrides);
|
|
161
|
+
return yield response.value();
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Creates request options for listMeetings without sending the request
|
|
166
|
+
*/
|
|
167
|
+
listMeetingsRequestOpts(requestParameters) {
|
|
168
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
169
|
+
const queryParameters = {};
|
|
170
|
+
if (requestParameters['bbox'] != null) {
|
|
171
|
+
queryParameters['bbox'] = requestParameters['bbox'];
|
|
172
|
+
}
|
|
173
|
+
if (requestParameters['near'] != null) {
|
|
174
|
+
queryParameters['near'] = requestParameters['near'];
|
|
175
|
+
}
|
|
176
|
+
if (requestParameters['radius'] != null) {
|
|
177
|
+
queryParameters['radius'] = requestParameters['radius'];
|
|
178
|
+
}
|
|
179
|
+
if (requestParameters['regionId'] != null) {
|
|
180
|
+
queryParameters['region_id'] = requestParameters['regionId'];
|
|
181
|
+
}
|
|
182
|
+
if (requestParameters['sourceId'] != null) {
|
|
183
|
+
queryParameters['source_id'] = requestParameters['sourceId'];
|
|
184
|
+
}
|
|
185
|
+
if (requestParameters['program'] != null) {
|
|
186
|
+
queryParameters['program'] = requestParameters['program'];
|
|
187
|
+
}
|
|
188
|
+
if (requestParameters['day'] != null) {
|
|
189
|
+
queryParameters['day'] = requestParameters['day'];
|
|
190
|
+
}
|
|
191
|
+
if (requestParameters['type'] != null) {
|
|
192
|
+
queryParameters['type'] = requestParameters['type'];
|
|
193
|
+
}
|
|
194
|
+
if (requestParameters['includeInactive'] != null) {
|
|
195
|
+
queryParameters['include_inactive'] = requestParameters['includeInactive'];
|
|
196
|
+
}
|
|
197
|
+
if (requestParameters['cursor'] != null) {
|
|
198
|
+
queryParameters['cursor'] = requestParameters['cursor'];
|
|
199
|
+
}
|
|
200
|
+
if (requestParameters['limit'] != null) {
|
|
201
|
+
queryParameters['limit'] = requestParameters['limit'];
|
|
202
|
+
}
|
|
203
|
+
const headerParameters = {};
|
|
204
|
+
let urlPath = `/api/v1/meetings`;
|
|
205
|
+
return {
|
|
206
|
+
path: urlPath,
|
|
207
|
+
method: 'GET',
|
|
208
|
+
headers: headerParameters,
|
|
209
|
+
query: queryParameters,
|
|
210
|
+
};
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Returns meetings matching the provided filter(s). At least one of `bbox`, `near`, `region_id`, `source_id`, `program`, `day`, or `type` is required. Results are cursor-paginated (default 500/page, max 2000).
|
|
215
|
+
* Filtered meeting search
|
|
216
|
+
*/
|
|
217
|
+
listMeetingsRaw(requestParameters, initOverrides) {
|
|
218
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
219
|
+
const requestOptions = yield this.listMeetingsRequestOpts(requestParameters);
|
|
220
|
+
const response = yield this.request(requestOptions, initOverrides);
|
|
221
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => (0, MeetingPage_1.MeetingPageFromJSON)(jsonValue));
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Returns meetings matching the provided filter(s). At least one of `bbox`, `near`, `region_id`, `source_id`, `program`, `day`, or `type` is required. Results are cursor-paginated (default 500/page, max 2000).
|
|
226
|
+
* Filtered meeting search
|
|
227
|
+
*/
|
|
228
|
+
listMeetings() {
|
|
229
|
+
return __awaiter(this, arguments, void 0, function* (requestParameters = {}, initOverrides) {
|
|
230
|
+
const response = yield this.listMeetingsRaw(requestParameters, initOverrides);
|
|
231
|
+
return yield response.value();
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
exports.MeetingsApi = MeetingsApi;
|
|
@@ -0,0 +1,35 @@
|
|
|
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 * as runtime from '../runtime';
|
|
13
|
+
import { type PublicSource } from '../models/PublicSource';
|
|
14
|
+
export interface ListSourcesRequest {
|
|
15
|
+
program?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
export declare class SourcesApi extends runtime.BaseAPI {
|
|
21
|
+
/**
|
|
22
|
+
* Creates request options for listSources without sending the request
|
|
23
|
+
*/
|
|
24
|
+
listSourcesRequestOpts(requestParameters: ListSourcesRequest): Promise<runtime.RequestOpts>;
|
|
25
|
+
/**
|
|
26
|
+
* Returns every registered source minus admin-only fields (sharing keys, next_fetch_at, failures, etc.). Filter by `program` to scope to one program (e.g. `AA`, `NA`); unknown codes return an empty array.
|
|
27
|
+
* Public list of registered sources
|
|
28
|
+
*/
|
|
29
|
+
listSourcesRaw(requestParameters: ListSourcesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<PublicSource>>>;
|
|
30
|
+
/**
|
|
31
|
+
* Returns every registered source minus admin-only fields (sharing keys, next_fetch_at, failures, etc.). Filter by `program` to scope to one program (e.g. `AA`, `NA`); unknown codes return an empty array.
|
|
32
|
+
* Public list of registered sources
|
|
33
|
+
*/
|
|
34
|
+
listSources(requestParameters?: ListSourcesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<PublicSource>>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
16
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
17
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
18
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
19
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
20
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
21
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.SourcesApi = void 0;
|
|
26
|
+
const runtime = require("../runtime");
|
|
27
|
+
const PublicSource_1 = require("../models/PublicSource");
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
*/
|
|
31
|
+
class SourcesApi extends runtime.BaseAPI {
|
|
32
|
+
/**
|
|
33
|
+
* Creates request options for listSources without sending the request
|
|
34
|
+
*/
|
|
35
|
+
listSourcesRequestOpts(requestParameters) {
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
const queryParameters = {};
|
|
38
|
+
if (requestParameters['program'] != null) {
|
|
39
|
+
queryParameters['program'] = requestParameters['program'];
|
|
40
|
+
}
|
|
41
|
+
const headerParameters = {};
|
|
42
|
+
let urlPath = `/api/v1/sources`;
|
|
43
|
+
return {
|
|
44
|
+
path: urlPath,
|
|
45
|
+
method: 'GET',
|
|
46
|
+
headers: headerParameters,
|
|
47
|
+
query: queryParameters,
|
|
48
|
+
};
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Returns every registered source minus admin-only fields (sharing keys, next_fetch_at, failures, etc.). Filter by `program` to scope to one program (e.g. `AA`, `NA`); unknown codes return an empty array.
|
|
53
|
+
* Public list of registered sources
|
|
54
|
+
*/
|
|
55
|
+
listSourcesRaw(requestParameters, initOverrides) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
const requestOptions = yield this.listSourcesRequestOpts(requestParameters);
|
|
58
|
+
const response = yield this.request(requestOptions, initOverrides);
|
|
59
|
+
return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(PublicSource_1.PublicSourceFromJSON));
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Returns every registered source minus admin-only fields (sharing keys, next_fetch_at, failures, etc.). Filter by `program` to scope to one program (e.g. `AA`, `NA`); unknown codes return an empty array.
|
|
64
|
+
* Public list of registered sources
|
|
65
|
+
*/
|
|
66
|
+
listSources() {
|
|
67
|
+
return __awaiter(this, arguments, void 0, function* (requestParameters = {}, initOverrides) {
|
|
68
|
+
const response = yield this.listSourcesRaw(requestParameters, initOverrides);
|
|
69
|
+
return yield response.value();
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.SourcesApi = SourcesApi;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/* tslint:disable */
|
|
18
|
+
/* eslint-disable */
|
|
19
|
+
__exportStar(require("./AdminApi"), exports);
|
|
20
|
+
__exportStar(require("./CatalogApi"), exports);
|
|
21
|
+
__exportStar(require("./MeetingsApi"), exports);
|
|
22
|
+
__exportStar(require("./SourcesApi"), exports);
|