bmlt-server-semantic-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 (174) hide show
  1. package/.github/workflows/release.yml +25 -0
  2. package/.openapi-generator/FILES +44 -0
  3. package/.openapi-generator/VERSION +1 -0
  4. package/.openapi-generator-ignore +23 -0
  5. package/Makefile +31 -0
  6. package/README.md +125 -0
  7. package/dist/apis/FieldsApi.d.ts +56 -0
  8. package/dist/apis/FieldsApi.js +123 -0
  9. package/dist/apis/FormatsApi.d.ts +44 -0
  10. package/dist/apis/FormatsApi.js +87 -0
  11. package/dist/apis/MeetingsApi.d.ts +157 -0
  12. package/dist/apis/MeetingsApi.js +288 -0
  13. package/dist/apis/ServerApi.d.ts +43 -0
  14. package/dist/apis/ServerApi.js +104 -0
  15. package/dist/apis/ServiceBodiesApi.d.ts +51 -0
  16. package/dist/apis/ServiceBodiesApi.js +91 -0
  17. package/dist/apis/index.d.ts +5 -0
  18. package/dist/apis/index.js +23 -0
  19. package/dist/esm/apis/FieldsApi.d.ts +56 -0
  20. package/dist/esm/apis/FieldsApi.js +119 -0
  21. package/dist/esm/apis/FormatsApi.d.ts +44 -0
  22. package/dist/esm/apis/FormatsApi.js +83 -0
  23. package/dist/esm/apis/MeetingsApi.d.ts +157 -0
  24. package/dist/esm/apis/MeetingsApi.js +284 -0
  25. package/dist/esm/apis/ServerApi.d.ts +43 -0
  26. package/dist/esm/apis/ServerApi.js +100 -0
  27. package/dist/esm/apis/ServiceBodiesApi.d.ts +51 -0
  28. package/dist/esm/apis/ServiceBodiesApi.js +87 -0
  29. package/dist/esm/apis/index.d.ts +5 -0
  30. package/dist/esm/apis/index.js +7 -0
  31. package/dist/esm/index.d.ts +3 -0
  32. package/dist/esm/index.js +5 -0
  33. package/dist/esm/models/Format.d.ts +81 -0
  34. package/dist/esm/models/Format.js +37 -0
  35. package/dist/esm/models/GetCoverageArea200Response.d.ts +50 -0
  36. package/dist/esm/models/GetCoverageArea200Response.js +47 -0
  37. package/dist/esm/models/GetFieldKeys200ResponseInner.d.ts +38 -0
  38. package/dist/esm/models/GetFieldKeys200ResponseInner.js +43 -0
  39. package/dist/esm/models/GetFieldValues200ResponseInner.d.ts +38 -0
  40. package/dist/esm/models/GetFieldValues200ResponseInner.js +43 -0
  41. package/dist/esm/models/GetSearchResults200Response.d.ts +24 -0
  42. package/dist/esm/models/GetSearchResults200Response.js +68 -0
  43. package/dist/esm/models/GetSearchResults200ResponseOneOf.d.ts +40 -0
  44. package/dist/esm/models/GetSearchResults200ResponseOneOf.js +45 -0
  45. package/dist/esm/models/Meeting.d.ts +255 -0
  46. package/dist/esm/models/Meeting.js +37 -0
  47. package/dist/esm/models/MeetingChange.d.ts +89 -0
  48. package/dist/esm/models/MeetingChange.js +37 -0
  49. package/dist/esm/models/ModelError.d.ts +33 -0
  50. package/dist/esm/models/ModelError.js +37 -0
  51. package/dist/esm/models/SemanticError.d.ts +33 -0
  52. package/dist/esm/models/SemanticError.js +37 -0
  53. package/dist/esm/models/SemanticFormat.d.ts +81 -0
  54. package/dist/esm/models/SemanticFormat.js +37 -0
  55. package/dist/esm/models/SemanticMeeting.d.ts +255 -0
  56. package/dist/esm/models/SemanticMeeting.js +37 -0
  57. package/dist/esm/models/SemanticMeetingChange.d.ts +89 -0
  58. package/dist/esm/models/SemanticMeetingChange.js +37 -0
  59. package/dist/esm/models/SemanticServerInfo.d.ts +156 -0
  60. package/dist/esm/models/SemanticServerInfo.js +45 -0
  61. package/dist/esm/models/SemanticServerInfoAggregatorModeEnabled.d.ts +21 -0
  62. package/dist/esm/models/SemanticServerInfoAggregatorModeEnabled.js +43 -0
  63. package/dist/esm/models/SemanticServiceBody.d.ts +87 -0
  64. package/dist/esm/models/SemanticServiceBody.js +37 -0
  65. package/dist/esm/models/ServerInfo.d.ts +156 -0
  66. package/dist/esm/models/ServerInfo.js +45 -0
  67. package/dist/esm/models/ServerInfoAggregatorModeEnabled.d.ts +21 -0
  68. package/dist/esm/models/ServerInfoAggregatorModeEnabled.js +43 -0
  69. package/dist/esm/models/ServiceBody.d.ts +87 -0
  70. package/dist/esm/models/ServiceBody.js +37 -0
  71. package/dist/esm/models/index.d.ts +12 -0
  72. package/dist/esm/models/index.js +14 -0
  73. package/dist/esm/runtime.d.ts +184 -0
  74. package/dist/esm/runtime.js +349 -0
  75. package/dist/index.d.ts +3 -0
  76. package/dist/index.js +21 -0
  77. package/dist/models/Format.d.ts +81 -0
  78. package/dist/models/Format.js +44 -0
  79. package/dist/models/GetCoverageArea200Response.d.ts +50 -0
  80. package/dist/models/GetCoverageArea200Response.js +54 -0
  81. package/dist/models/GetFieldKeys200ResponseInner.d.ts +38 -0
  82. package/dist/models/GetFieldKeys200ResponseInner.js +50 -0
  83. package/dist/models/GetFieldValues200ResponseInner.d.ts +38 -0
  84. package/dist/models/GetFieldValues200ResponseInner.js +50 -0
  85. package/dist/models/GetSearchResults200Response.d.ts +24 -0
  86. package/dist/models/GetSearchResults200Response.js +74 -0
  87. package/dist/models/GetSearchResults200ResponseOneOf.d.ts +40 -0
  88. package/dist/models/GetSearchResults200ResponseOneOf.js +52 -0
  89. package/dist/models/Meeting.d.ts +255 -0
  90. package/dist/models/Meeting.js +44 -0
  91. package/dist/models/MeetingChange.d.ts +89 -0
  92. package/dist/models/MeetingChange.js +44 -0
  93. package/dist/models/ModelError.d.ts +33 -0
  94. package/dist/models/ModelError.js +44 -0
  95. package/dist/models/SemanticError.d.ts +33 -0
  96. package/dist/models/SemanticError.js +44 -0
  97. package/dist/models/SemanticFormat.d.ts +81 -0
  98. package/dist/models/SemanticFormat.js +44 -0
  99. package/dist/models/SemanticMeeting.d.ts +255 -0
  100. package/dist/models/SemanticMeeting.js +44 -0
  101. package/dist/models/SemanticMeetingChange.d.ts +89 -0
  102. package/dist/models/SemanticMeetingChange.js +44 -0
  103. package/dist/models/SemanticServerInfo.d.ts +156 -0
  104. package/dist/models/SemanticServerInfo.js +53 -0
  105. package/dist/models/SemanticServerInfoAggregatorModeEnabled.d.ts +21 -0
  106. package/dist/models/SemanticServerInfoAggregatorModeEnabled.js +49 -0
  107. package/dist/models/SemanticServiceBody.d.ts +87 -0
  108. package/dist/models/SemanticServiceBody.js +44 -0
  109. package/dist/models/ServerInfo.d.ts +156 -0
  110. package/dist/models/ServerInfo.js +53 -0
  111. package/dist/models/ServerInfoAggregatorModeEnabled.d.ts +21 -0
  112. package/dist/models/ServerInfoAggregatorModeEnabled.js +49 -0
  113. package/dist/models/ServiceBody.d.ts +87 -0
  114. package/dist/models/ServiceBody.js +44 -0
  115. package/dist/models/index.d.ts +12 -0
  116. package/dist/models/index.js +30 -0
  117. package/dist/runtime.d.ts +184 -0
  118. package/dist/runtime.js +365 -0
  119. package/docs/FieldsApi.md +139 -0
  120. package/docs/Format.md +50 -0
  121. package/docs/FormatsApi.md +83 -0
  122. package/docs/GetCoverageArea200Response.md +40 -0
  123. package/docs/GetFieldKeys200ResponseInner.md +36 -0
  124. package/docs/GetFieldValues200ResponseInner.md +36 -0
  125. package/docs/GetSearchResults200Response.md +36 -0
  126. package/docs/GetSearchResults200ResponseOneOf.md +36 -0
  127. package/docs/Meeting.md +109 -0
  128. package/docs/MeetingChange.md +52 -0
  129. package/docs/MeetingsApi.md +261 -0
  130. package/docs/ModelError.md +34 -0
  131. package/docs/SemanticError.md +34 -0
  132. package/docs/SemanticFormat.md +50 -0
  133. package/docs/SemanticMeeting.md +109 -0
  134. package/docs/SemanticMeetingChange.md +52 -0
  135. package/docs/SemanticServerInfo.md +72 -0
  136. package/docs/SemanticServerInfoAggregatorModeEnabled.md +33 -0
  137. package/docs/SemanticServiceBody.md +52 -0
  138. package/docs/ServerApi.md +124 -0
  139. package/docs/ServerInfo.md +72 -0
  140. package/docs/ServerInfoAggregatorModeEnabled.md +33 -0
  141. package/docs/ServiceBodiesApi.md +80 -0
  142. package/docs/ServiceBody.md +52 -0
  143. package/openapi.json +1 -0
  144. package/package.json +21 -0
  145. package/src/apis/FieldsApi.ts +145 -0
  146. package/src/apis/FormatsApi.ts +96 -0
  147. package/src/apis/MeetingsApi.ts +392 -0
  148. package/src/apis/ServerApi.ts +106 -0
  149. package/src/apis/ServiceBodiesApi.ts +99 -0
  150. package/src/apis/index.ts +7 -0
  151. package/src/index.ts +5 -0
  152. package/src/models/Format.ts +132 -0
  153. package/src/models/GetCoverageArea200Response.ts +89 -0
  154. package/src/models/GetFieldKeys200ResponseInner.ts +73 -0
  155. package/src/models/GetFieldValues200ResponseInner.ts +73 -0
  156. package/src/models/GetSearchResults200Response.ts +99 -0
  157. package/src/models/GetSearchResults200ResponseOneOf.ts +88 -0
  158. package/src/models/Meeting.ts +364 -0
  159. package/src/models/MeetingChange.ts +140 -0
  160. package/src/models/ModelError.ts +68 -0
  161. package/src/models/SemanticError.ts +68 -0
  162. package/src/models/SemanticFormat.ts +132 -0
  163. package/src/models/SemanticMeeting.ts +364 -0
  164. package/src/models/SemanticMeetingChange.ts +140 -0
  165. package/src/models/SemanticServerInfo.ts +239 -0
  166. package/src/models/SemanticServerInfoAggregatorModeEnabled.ts +55 -0
  167. package/src/models/SemanticServiceBody.ts +140 -0
  168. package/src/models/ServerInfo.ts +239 -0
  169. package/src/models/ServerInfoAggregatorModeEnabled.ts +55 -0
  170. package/src/models/ServiceBody.ts +140 -0
  171. package/src/models/index.ts +14 -0
  172. package/src/runtime.ts +449 -0
  173. package/tsconfig.esm.json +7 -0
  174. package/tsconfig.json +16 -0
@@ -0,0 +1,52 @@
1
+
2
+ # ServiceBody
3
+
4
+
5
+ ## Properties
6
+
7
+ Name | Type
8
+ ------------ | -------------
9
+ `id` | string
10
+ `parentId` | string
11
+ `name` | string
12
+ `description` | string
13
+ `type` | string
14
+ `url` | string
15
+ `helpline` | string
16
+ `worldId` | string
17
+ `rootServerId` | string
18
+ `rootServerUri` | string
19
+
20
+ ## Example
21
+
22
+ ```typescript
23
+ import type { ServiceBody } from 'bmlt-server-semantic-client'
24
+
25
+ // TODO: Update the object below with actual values
26
+ const example = {
27
+ "id": null,
28
+ "parentId": null,
29
+ "name": null,
30
+ "description": null,
31
+ "type": null,
32
+ "url": null,
33
+ "helpline": null,
34
+ "worldId": null,
35
+ "rootServerId": null,
36
+ "rootServerUri": null,
37
+ } satisfies ServiceBody
38
+
39
+ console.log(example)
40
+
41
+ // Convert the instance to a JSON string
42
+ const exampleJSON: string = JSON.stringify(example)
43
+ console.log(exampleJSON)
44
+
45
+ // Parse the JSON string back to an object
46
+ const exampleParsed = JSON.parse(exampleJSON) as ServiceBody
47
+ console.log(exampleParsed)
48
+ ```
49
+
50
+ [[Back to top]](#) [[Back to API list]](../README.md#api-endpoints) [[Back to Model list]](../README.md#models) [[Back to README]](../README.md)
51
+
52
+
package/openapi.json ADDED
@@ -0,0 +1 @@
1
+ {"openapi":"3.1.0","info":{"title":"BMLT Semantic API","description":"OpenAPI description of the BMLT Semantic Interface (the read-only meeting-query API) for the JSON data format.\n\nThe semantic interface dispatches all operations from a single endpoint (`/client_interface/json/`) using a `switcher` query parameter. To keep each operation discoverable, this spec models each `switcher` value as a distinct path key with the query string baked in. Tools such as Swagger UI, Redoc, and openapi-generator handle these path keys correctly even though the OpenAPI spec technically expects unique URL paths.\n\n### Things that do not map cleanly onto OpenAPI\n\n- **Sign-as-operator** \u2014 many filters (`formats`, `services`, `weekdays`, `venue_types`, `meeting_ids`, `root_server_ids`, `format_ids`) use *positive* values to include and *negative* values to exclude. JSON Schema cannot enforce that semantics; it is documented per parameter.\n- **Cross-parameter constraints** \u2014 in aggregator mode `GetSearchResults` requires at least one filter parameter. Invalid combinations typically return an empty array `[]` instead of an HTTP error.\n- **Empty-array errors** \u2014 many endpoints return `[]` for invalid input rather than a 4xx response body.","version":"1.0.0"},"servers":[{"url":"http://localhost:8000/main_server/","description":"this server"}],"paths":{"/client_interface/json/?switcher=GetFieldKeys":{"get":{"tags":["Fields"],"summary":"Get all available field keys","operationId":"getFieldKeys","responses":{"200":{"description":"List of field key descriptors","content":{"application/json":{"schema":{"type":"array","items":{"properties":{"key":{"type":"string"},"description":{"type":"string"}},"type":"object"}}}}}}}},"/client_interface/json/?switcher=GetFieldValues":{"get":{"tags":["Fields"],"summary":"Get distinct values for a field","operationId":"getFieldValues","parameters":[{"name":"meeting_key","in":"query","description":"Field key whose distinct values should be returned.","required":true,"schema":{"type":"string","example":"location_municipality"}},{"name":"specific_formats","in":"query","description":"Comma-separated list of format IDs to limit the field values to.","schema":{"type":"string"}},{"name":"all_formats","in":"query","description":"Set to `1` to include all formats (not just `specific_formats`).","schema":{"type":"string","enum":["0","1"]}}],"responses":{"200":{"description":"List of distinct values with usage counts","content":{"application/json":{"schema":{"type":"array","items":{"properties":{"ids":{"type":"string"},"meeting_key_value":{"type":"string"}},"type":"object"}}}}},"400":{"$ref":"#/components/responses/SemBadRequest"}}}},"/client_interface/json/?switcher=GetFormats":{"get":{"tags":["Formats"],"summary":"Get meeting formats","operationId":"getSemanticFormats","parameters":[{"$ref":"#/components/parameters/SemLangEnum"},{"$ref":"#/components/parameters/SemShowAll"},{"name":"format_ids","in":"query","description":"Format IDs to include (positive) or exclude (negative). Comma-separated.","schema":{"type":"string","example":"1,2,-3"}},{"name":"key_strings","in":"query","description":"Format key strings to filter by. Comma-separated.","schema":{"type":"string","example":"O,C"}}],"responses":{"200":{"description":"List of formats","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SemanticFormat"}}}}}}}},"/client_interface/json/?switcher=GetSearchResults":{"get":{"tags":["Meetings"],"summary":"Search for meetings","description":"Search meetings with extensive filtering (location, day, time, format, service body, text). In aggregator mode at least one filter parameter is required, otherwise the response will be an empty array.","operationId":"getSearchResults","parameters":[{"$ref":"#/components/parameters/SemMeetingIds"},{"$ref":"#/components/parameters/SemWeekdays"},{"$ref":"#/components/parameters/SemVenueTypes"},{"$ref":"#/components/parameters/SemFormats"},{"$ref":"#/components/parameters/SemFormatsComparisonOperator"},{"$ref":"#/components/parameters/SemServices"},{"$ref":"#/components/parameters/SemRecursive"},{"$ref":"#/components/parameters/SemGetUsedFormats"},{"$ref":"#/components/parameters/SemGetFormatsOnly"},{"$ref":"#/components/parameters/SemSearchString"},{"$ref":"#/components/parameters/SemStringSearchIsAnAddress"},{"$ref":"#/components/parameters/SemSearchStringRadius"},{"$ref":"#/components/parameters/SemStartsAfterH"},{"$ref":"#/components/parameters/SemStartsAfterM"},{"$ref":"#/components/parameters/SemStartsBeforeH"},{"$ref":"#/components/parameters/SemStartsBeforeM"},{"$ref":"#/components/parameters/SemEndsBeforeH"},{"$ref":"#/components/parameters/SemEndsBeforeM"},{"$ref":"#/components/parameters/SemMinDurationH"},{"$ref":"#/components/parameters/SemMinDurationM"},{"$ref":"#/components/parameters/SemMaxDurationH"},{"$ref":"#/components/parameters/SemMaxDurationM"},{"$ref":"#/components/parameters/SemLatVal"},{"$ref":"#/components/parameters/SemLongVal"},{"$ref":"#/components/parameters/SemGeoWidth"},{"$ref":"#/components/parameters/SemGeoWidthKm"},{"$ref":"#/components/parameters/SemSortResultsByDistance"},{"$ref":"#/components/parameters/SemMeetingKeyFilter"},{"$ref":"#/components/parameters/SemMeetingKeyValue"},{"$ref":"#/components/parameters/SemDataFieldKey"},{"$ref":"#/components/parameters/SemSortKeys"},{"$ref":"#/components/parameters/SemSortKey"},{"$ref":"#/components/parameters/SemPageSize"},{"$ref":"#/components/parameters/SemPageNum"},{"$ref":"#/components/parameters/SemAdvancedPublished"},{"$ref":"#/components/parameters/SemLangEnum"},{"$ref":"#/components/parameters/SemRootServerIds"}],"responses":{"200":{"description":"Meeting search results. May be a bare array of meetings, an array of formats when `get_formats_only=1`, or a `{meetings, formats}` envelope when `get_used_formats=1`.","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/SemanticMeeting"}},{"type":"array","items":{"$ref":"#/components/schemas/SemanticFormat"}},{"properties":{"meetings":{"type":"array","items":{"$ref":"#/components/schemas/SemanticMeeting"}},"formats":{"type":"array","items":{"$ref":"#/components/schemas/SemanticFormat"}}},"type":"object"}]}}}},"400":{"$ref":"#/components/responses/SemBadRequest"},"500":{"$ref":"#/components/responses/SemServerError"}}}},"/client_interface/json/?switcher=GetChanges":{"get":{"tags":["Meetings"],"summary":"Get meeting changes within a date range","operationId":"getChanges","parameters":[{"name":"start_date","in":"query","description":"Start date (inclusive) in YYYY-MM-DD format.","schema":{"type":"string","format":"date"}},{"name":"end_date","in":"query","description":"End date (inclusive) in YYYY-MM-DD format.","schema":{"type":"string","format":"date"}},{"name":"meeting_id","in":"query","description":"Restrict to changes for a single meeting.","schema":{"type":"integer"}},{"name":"service_body_id","in":"query","description":"Restrict to changes within a single service body.","schema":{"type":"integer"}}],"responses":{"200":{"description":"List of meeting changes","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SemanticMeetingChange"}}}}}}}},"/client_interface/json/?switcher=GetServerInfo":{"get":{"tags":["Server"],"summary":"Get server information","operationId":"getSemanticServerInfo","responses":{"200":{"description":"Server metadata such as version, language, semantic admin URL, etc.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SemanticServerInfo"}}}}}}}},"/client_interface/json/?switcher=GetCoverageArea":{"get":{"tags":["Server"],"summary":"Get the geographic coverage bounding box for this server","operationId":"getCoverageArea","responses":{"200":{"description":"Bounding box for the area covered by this server's meetings","content":{"application/json":{"schema":{"properties":{"nw_corner_longitude":{"type":"number","format":"float"},"nw_corner_latitude":{"type":"number","format":"float"},"se_corner_longitude":{"type":"number","format":"float"},"se_corner_latitude":{"type":"number","format":"float"}},"type":"object"}}}}}}},"/client_interface/json/?switcher=GetServiceBodies":{"get":{"tags":["Service Bodies"],"summary":"Get service bodies","operationId":"getSemanticServiceBodies","parameters":[{"$ref":"#/components/parameters/SemServices"},{"$ref":"#/components/parameters/SemRecursive"},{"name":"parents","in":"query","description":"Set to `1` to include parent service bodies in the result.","schema":{"type":"string","enum":["0","1"]}}],"responses":{"200":{"description":"List of service bodies","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SemanticServiceBody"}}}}}}}}},"components":{"schemas":{"SemanticMeeting":{"description":"A meeting record. The actual field set depends on the server's enabled fields and the `data_field_key` parameter.","properties":{"id_bigint":{"description":"Numeric meeting ID, returned as a string.","type":"string"},"worldid_mixed":{"description":"NAWS world committee code.","type":"string"},"shared_group_id_bigint":{"type":"string"},"service_body_bigint":{"type":"string"},"weekday_tinyint":{"description":"1=Sunday \u2026 7=Saturday.","type":"string"},"venue_type":{"description":"1=In-person, 2=Virtual, 3=Hybrid.","type":"string"},"start_time":{"description":"Local start time, HH:MM:SS.","type":"string"},"duration_time":{"description":"Duration, HH:MM:SS.","type":"string"},"time_zone":{"type":"string"},"formats":{"description":"Comma-separated format key strings.","type":"string"},"lang_enum":{"type":"string"},"longitude":{"type":"string"},"latitude":{"type":"string"},"distance_in_km":{"description":"Present only when sorting by distance.","type":"string"},"distance_in_miles":{"description":"Present only when sorting by distance.","type":"string"},"meeting_name":{"type":"string"},"location_text":{"type":"string"},"location_info":{"type":"string"},"location_street":{"type":"string"},"location_city_subsection":{"type":"string"},"location_neighborhood":{"type":"string"},"location_municipality":{"type":"string"},"location_sub_province":{"type":"string"},"location_province":{"type":"string"},"location_postal_code_1":{"type":"string"},"location_nation":{"type":"string"},"comments":{"type":"string"},"train_lines":{"type":"string"},"bus_lines":{"type":"string"},"phone_meeting_number":{"type":"string"},"virtual_meeting_link":{"type":"string"},"virtual_meeting_additional_info":{"type":"string"},"contact_name_1":{"type":"string"},"contact_phone_1":{"type":"string"},"contact_email_1":{"type":"string"},"root_server_id":{"description":"Aggregator mode only \u2014 ID of the root server this meeting came from.","type":"string"},"root_server_uri":{"type":"string"},"format_shared_id_list":{"type":"string"}},"type":"object","additionalProperties":true},"SemanticFormat":{"properties":{"key_string":{"type":"string"},"name_string":{"type":"string"},"description_string":{"type":"string"},"lang":{"type":"string"},"id":{"type":"string"},"world_id":{"type":"string"},"root_server_id":{"description":"Aggregator mode only.","type":"string"},"root_server_uri":{"description":"Aggregator mode only.","type":"string"},"format_type_enum":{"type":"string"}},"type":"object","additionalProperties":true},"SemanticServiceBody":{"properties":{"id":{"type":"string"},"parent_id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"type":{"type":"string"},"url":{"type":"string"},"helpline":{"type":"string"},"world_id":{"type":"string"},"root_server_id":{"description":"Aggregator mode only.","type":"string"},"root_server_uri":{"description":"Aggregator mode only.","type":"string"}},"type":"object","additionalProperties":true},"SemanticMeetingChange":{"properties":{"date_int":{"description":"Unix timestamp of the change.","type":"string"},"date_string":{"type":"string"},"change_type":{"description":"e.g. comdef_change_type_change, comdef_change_type_new, comdef_change_type_delete.","type":"string"},"meeting_id":{"type":"string"},"meeting_name":{"type":"string"},"user_id":{"type":"string"},"user_name":{"type":"string"},"service_body_id":{"type":"string"},"service_body_name":{"type":"string"},"details":{"description":"Per-field before/after values for change events.","type":"object","additionalProperties":true}},"type":"object","additionalProperties":true},"SemanticServerInfo":{"properties":{"version":{"type":"string"},"versionInt":{"type":"string"},"langs":{"description":"Comma-separated language codes.","type":"string"},"nativeLang":{"type":"string"},"centerLongitude":{"type":"string"},"centerLatitude":{"type":"string"},"centerZoom":{"type":"string"},"defaultDuration":{"type":"string"},"regionBias":{"type":"string"},"charSet":{"type":"string"},"distanceUnits":{"type":"string","enum":["mi","km"]},"semanticAdmin":{"type":"string"},"emailEnabled":{"type":"string"},"emailIncludesServiceBodies":{"type":"string"},"changesPerMeeting":{"type":"string"},"meeting_states_and_provinces":{"type":"string"},"meeting_counties_and_sub_provinces":{"type":"string"},"available_keys":{"description":"Comma-separated list of field keys exposed by this server.","type":"string"},"google_api_key":{"type":"string"},"aggregator_mode_enabled":{"description":"`1` / `true` if this server is running in aggregator mode.","oneOf":[{"type":"string"},{"type":"boolean"}]}},"type":"object","additionalProperties":true},"SemanticError":{"properties":{"error":{"description":"Human-readable error message.","type":"string"}},"type":"object","additionalProperties":true}},"responses":{"SemBadRequest":{"description":"Bad request \u2014 usually a missing required parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SemanticError"}}}},"SemServerError":{"description":"Internal server error \u2014 for example, a geocoding failure when `StringSearchIsAnAddress=1`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SemanticError"}}}}},"parameters":{"SemMeetingIds":{"name":"meeting_ids","in":"query","description":"Comma-separated meeting IDs. Positive values include, negative values exclude (e.g. `123,456,-789`).","schema":{"type":"string"}},"SemWeekdays":{"name":"weekdays","in":"query","description":"Days of week as comma-separated values. 1=Sunday \u2026 7=Saturday. Negative values exclude.","schema":{"type":"string","example":"2,3,4"}},"SemVenueTypes":{"name":"venue_types","in":"query","description":"Venue type filter, comma-separated. 1=In-person, 2=Virtual, 3=Hybrid. Negative values exclude.","schema":{"type":"string"}},"SemFormats":{"name":"formats","in":"query","description":"Format IDs as comma-separated values. Positive includes, negative excludes.","schema":{"type":"string"}},"SemFormatsComparisonOperator":{"name":"formats_comparison_operator","in":"query","description":"Logical operator for combining multiple `formats` values. Defaults to AND.","schema":{"type":"string","default":"AND","enum":["AND","OR"]}},"SemServices":{"name":"services","in":"query","description":"Service body IDs as comma-separated values. Positive includes, negative excludes.","schema":{"type":"string"}},"SemRecursive":{"name":"recursive","in":"query","description":"Set to `1` to include child service bodies when filtering by `services`.","schema":{"type":"string","enum":["0","1"]}},"SemGetUsedFormats":{"name":"get_used_formats","in":"query","description":"Set to `1` to also return the formats used by the matched meetings (alters response shape to `{meetings, formats}`).","schema":{"type":"string","enum":["0","1"]}},"SemGetFormatsOnly":{"name":"get_formats_only","in":"query","description":"Set to `1` to return only the formats and omit the meetings (requires `get_used_formats=1`).","schema":{"type":"string","enum":["0","1"]}},"SemSearchString":{"name":"SearchString","in":"query","description":"Free-text search string. URL-encode the value.","schema":{"type":"string"}},"SemStringSearchIsAnAddress":{"name":"StringSearchIsAnAddress","in":"query","description":"Set to `1` to interpret `SearchString` as an address to geocode. Requires a Google API key on the server.","schema":{"type":"string","enum":["0","1"]}},"SemSearchStringRadius":{"name":"SearchStringRadius","in":"query","description":"Radius for address searches. Positive = distance (miles or km depending on server). Negative integer = auto-radius.","schema":{"type":"number"}},"SemStartsAfterH":{"name":"StartsAfterH","in":"query","description":"Earliest start hour (0\u201323).","schema":{"type":"integer","maximum":23,"minimum":0}},"SemStartsAfterM":{"name":"StartsAfterM","in":"query","description":"Earliest start minute (0\u201359).","schema":{"type":"integer","maximum":59,"minimum":0}},"SemStartsBeforeH":{"name":"StartsBeforeH","in":"query","description":"Latest start hour (0\u201323).","schema":{"type":"integer","maximum":23,"minimum":0}},"SemStartsBeforeM":{"name":"StartsBeforeM","in":"query","description":"Latest start minute (0\u201359).","schema":{"type":"integer","maximum":59,"minimum":0}},"SemEndsBeforeH":{"name":"EndsBeforeH","in":"query","description":"Latest end hour (0\u201323).","schema":{"type":"integer","maximum":23,"minimum":0}},"SemEndsBeforeM":{"name":"EndsBeforeM","in":"query","description":"Latest end minute (0\u201359).","schema":{"type":"integer","maximum":59,"minimum":0}},"SemMinDurationH":{"name":"MinDurationH","in":"query","description":"Minimum duration, hours portion.","schema":{"type":"integer","minimum":0}},"SemMinDurationM":{"name":"MinDurationM","in":"query","description":"Minimum duration, minutes portion (0\u201359).","schema":{"type":"integer","maximum":59,"minimum":0}},"SemMaxDurationH":{"name":"MaxDurationH","in":"query","description":"Maximum duration, hours portion.","schema":{"type":"integer","minimum":0}},"SemMaxDurationM":{"name":"MaxDurationM","in":"query","description":"Maximum duration, minutes portion (0\u201359).","schema":{"type":"integer","maximum":59,"minimum":0}},"SemLatVal":{"name":"lat_val","in":"query","description":"Latitude for geographic search.","schema":{"type":"number","format":"float","maximum":90,"minimum":-90}},"SemLongVal":{"name":"long_val","in":"query","description":"Longitude for geographic search.","schema":{"type":"number","format":"float","maximum":180,"minimum":-180}},"SemGeoWidth":{"name":"geo_width","in":"query","description":"Search radius in miles. Negative integer = auto-radius.","schema":{"type":"number"}},"SemGeoWidthKm":{"name":"geo_width_km","in":"query","description":"Search radius in kilometers. Negative integer = auto-radius.","schema":{"type":"number"}},"SemSortResultsByDistance":{"name":"sort_results_by_distance","in":"query","description":"Set to `1` to sort results by distance from `lat_val`/`long_val`.","schema":{"type":"string","enum":["0","1"]}},"SemMeetingKeyFilter":{"name":"meeting_key","in":"query","description":"Field key to filter on (used with `meeting_key_value`).","schema":{"type":"string"}},"SemMeetingKeyValue":{"name":"meeting_key_value","in":"query","description":"Value to match against the field named by `meeting_key`.","schema":{"type":"string"}},"SemDataFieldKey":{"name":"data_field_key","in":"query","description":"Comma-separated list of fields to include in each returned meeting (whitelist).","schema":{"type":"string","example":"id_bigint,meeting_name,weekday_tinyint,start_time"}},"SemSortKeys":{"name":"sort_keys","in":"query","description":"Comma-separated list of fields to sort by.","schema":{"type":"string"}},"SemSortKey":{"name":"sort_key","in":"query","description":"Predefined sort alias.","schema":{"type":"string","enum":["weekday","time","town","state","weekday_state"]}},"SemPageSize":{"name":"page_size","in":"query","description":"Number of results per page.","schema":{"type":"integer","minimum":1}},"SemPageNum":{"name":"page_num","in":"query","description":"Page number, 1-based. Only meaningful when `page_size` is set.","schema":{"type":"integer","default":1,"minimum":1}},"SemAdvancedPublished":{"name":"advanced_published","in":"query","description":"Published-status filter. Omit to return only published meetings. `0` returns both. `-1` returns only unpublished (requires authentication).","schema":{"type":"integer","enum":[-1,0]}},"SemLangEnum":{"name":"lang_enum","in":"query","description":"Language code for translated format names (en, de, fr, es, it, pl, pt, sv, dk, fa).","schema":{"type":"string"}},"SemShowAll":{"name":"show_all","in":"query","description":"Set to `1` to include all formats (including ones not currently used by any meeting).","schema":{"type":"string","enum":["0","1"]}},"SemRootServerIds":{"name":"root_server_ids","in":"query","description":"Aggregator mode only. Comma-separated root server IDs. Positive includes, negative excludes.","schema":{"type":"string"}}}},"security":[],"tags":[{"name":"Meetings","description":"Meeting search and change history"},{"name":"Formats","description":"Meeting format metadata"},{"name":"Service Bodies","description":"Service body (region/area) metadata"},{"name":"Fields","description":"Schema introspection"},{"name":"Server","description":"Server information and coverage"}]}
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "bmlt-server-semantic-client",
3
+ "version": "1.0.0",
4
+ "description": "OpenAPI client for bmlt-server-semantic-client",
5
+ "author": "OpenAPI-Generator",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/bmlt-enabled/bmlt-server-semantic-typescript-client.git"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "module": "./dist/esm/index.js",
13
+ "sideEffects": false,
14
+ "scripts": {
15
+ "build": "tsc && tsc -p tsconfig.esm.json",
16
+ "prepare": "npm run build"
17
+ },
18
+ "devDependencies": {
19
+ "typescript": "^4.0 || ^5.0"
20
+ }
21
+ }
@@ -0,0 +1,145 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * BMLT Semantic API
5
+ * OpenAPI description of the BMLT Semantic Interface (the read-only meeting-query API) for the JSON data format. The semantic interface dispatches all operations from a single endpoint (`/client_interface/json/`) using a `switcher` query parameter. To keep each operation discoverable, this spec models each `switcher` value as a distinct path key with the query string baked in. Tools such as Swagger UI, Redoc, and openapi-generator handle these path keys correctly even though the OpenAPI spec technically expects unique URL paths. ### Things that do not map cleanly onto OpenAPI - **Sign-as-operator** — many filters (`formats`, `services`, `weekdays`, `venue_types`, `meeting_ids`, `root_server_ids`, `format_ids`) use *positive* values to include and *negative* values to exclude. JSON Schema cannot enforce that semantics; it is documented per parameter. - **Cross-parameter constraints** — in aggregator mode `GetSearchResults` requires at least one filter parameter. Invalid combinations typically return an empty array `[]` instead of an HTTP error. - **Empty-array errors** — many endpoints return `[]` for invalid input rather than a 4xx response body.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import * as runtime from '../runtime';
16
+ import {
17
+ type GetFieldKeys200ResponseInner,
18
+ GetFieldKeys200ResponseInnerFromJSON,
19
+ GetFieldKeys200ResponseInnerToJSON,
20
+ } from '../models/GetFieldKeys200ResponseInner';
21
+ import {
22
+ type GetFieldValues200ResponseInner,
23
+ GetFieldValues200ResponseInnerFromJSON,
24
+ GetFieldValues200ResponseInnerToJSON,
25
+ } from '../models/GetFieldValues200ResponseInner';
26
+ import {
27
+ type SemanticError,
28
+ SemanticErrorFromJSON,
29
+ SemanticErrorToJSON,
30
+ } from '../models/SemanticError';
31
+
32
+ export interface GetFieldValuesRequest {
33
+ meetingKey: string;
34
+ specificFormats?: string;
35
+ allFormats?: GetFieldValuesAllFormatsEnum;
36
+ }
37
+
38
+ /**
39
+ *
40
+ */
41
+ export class FieldsApi extends runtime.BaseAPI {
42
+
43
+ /**
44
+ * Creates request options for getFieldKeys without sending the request
45
+ */
46
+ async getFieldKeysRequestOpts(): Promise<runtime.RequestOpts> {
47
+ const queryParameters: any = {};
48
+
49
+ const headerParameters: runtime.HTTPHeaders = {};
50
+
51
+
52
+ let urlPath = `/client_interface/json/?switcher=GetFieldKeys`;
53
+
54
+ return {
55
+ path: urlPath,
56
+ method: 'GET',
57
+ headers: headerParameters,
58
+ query: queryParameters,
59
+ };
60
+ }
61
+
62
+ /**
63
+ * Get all available field keys
64
+ */
65
+ async getFieldKeysRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GetFieldKeys200ResponseInner>>> {
66
+ const requestOptions = await this.getFieldKeysRequestOpts();
67
+ const response = await this.request(requestOptions, initOverrides);
68
+
69
+ return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GetFieldKeys200ResponseInnerFromJSON));
70
+ }
71
+
72
+ /**
73
+ * Get all available field keys
74
+ */
75
+ async getFieldKeys(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GetFieldKeys200ResponseInner>> {
76
+ const response = await this.getFieldKeysRaw(initOverrides);
77
+ return await response.value();
78
+ }
79
+
80
+ /**
81
+ * Creates request options for getFieldValues without sending the request
82
+ */
83
+ async getFieldValuesRequestOpts(requestParameters: GetFieldValuesRequest): Promise<runtime.RequestOpts> {
84
+ if (requestParameters['meetingKey'] == null) {
85
+ throw new runtime.RequiredError(
86
+ 'meetingKey',
87
+ 'Required parameter "meetingKey" was null or undefined when calling getFieldValues().'
88
+ );
89
+ }
90
+
91
+ const queryParameters: any = {};
92
+
93
+ if (requestParameters['meetingKey'] != null) {
94
+ queryParameters['meeting_key'] = requestParameters['meetingKey'];
95
+ }
96
+
97
+ if (requestParameters['specificFormats'] != null) {
98
+ queryParameters['specific_formats'] = requestParameters['specificFormats'];
99
+ }
100
+
101
+ if (requestParameters['allFormats'] != null) {
102
+ queryParameters['all_formats'] = requestParameters['allFormats'];
103
+ }
104
+
105
+ const headerParameters: runtime.HTTPHeaders = {};
106
+
107
+
108
+ let urlPath = `/client_interface/json/?switcher=GetFieldValues`;
109
+
110
+ return {
111
+ path: urlPath,
112
+ method: 'GET',
113
+ headers: headerParameters,
114
+ query: queryParameters,
115
+ };
116
+ }
117
+
118
+ /**
119
+ * Get distinct values for a field
120
+ */
121
+ async getFieldValuesRaw(requestParameters: GetFieldValuesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<GetFieldValues200ResponseInner>>> {
122
+ const requestOptions = await this.getFieldValuesRequestOpts(requestParameters);
123
+ const response = await this.request(requestOptions, initOverrides);
124
+
125
+ return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(GetFieldValues200ResponseInnerFromJSON));
126
+ }
127
+
128
+ /**
129
+ * Get distinct values for a field
130
+ */
131
+ async getFieldValues(requestParameters: GetFieldValuesRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<GetFieldValues200ResponseInner>> {
132
+ const response = await this.getFieldValuesRaw(requestParameters, initOverrides);
133
+ return await response.value();
134
+ }
135
+
136
+ }
137
+
138
+ /**
139
+ * @export
140
+ */
141
+ export const GetFieldValuesAllFormatsEnum = {
142
+ _0: '0',
143
+ _1: '1'
144
+ } as const;
145
+ export type GetFieldValuesAllFormatsEnum = typeof GetFieldValuesAllFormatsEnum[keyof typeof GetFieldValuesAllFormatsEnum];
@@ -0,0 +1,96 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+ /**
4
+ * BMLT Semantic API
5
+ * OpenAPI description of the BMLT Semantic Interface (the read-only meeting-query API) for the JSON data format. The semantic interface dispatches all operations from a single endpoint (`/client_interface/json/`) using a `switcher` query parameter. To keep each operation discoverable, this spec models each `switcher` value as a distinct path key with the query string baked in. Tools such as Swagger UI, Redoc, and openapi-generator handle these path keys correctly even though the OpenAPI spec technically expects unique URL paths. ### Things that do not map cleanly onto OpenAPI - **Sign-as-operator** — many filters (`formats`, `services`, `weekdays`, `venue_types`, `meeting_ids`, `root_server_ids`, `format_ids`) use *positive* values to include and *negative* values to exclude. JSON Schema cannot enforce that semantics; it is documented per parameter. - **Cross-parameter constraints** — in aggregator mode `GetSearchResults` requires at least one filter parameter. Invalid combinations typically return an empty array `[]` instead of an HTTP error. - **Empty-array errors** — many endpoints return `[]` for invalid input rather than a 4xx response body.
6
+ *
7
+ * The version of the OpenAPI document: 1.0.0
8
+ *
9
+ *
10
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
11
+ * https://openapi-generator.tech
12
+ * Do not edit the class manually.
13
+ */
14
+
15
+ import * as runtime from '../runtime';
16
+ import {
17
+ type SemanticFormat,
18
+ SemanticFormatFromJSON,
19
+ SemanticFormatToJSON,
20
+ } from '../models/SemanticFormat';
21
+
22
+ export interface GetSemanticFormatsRequest {
23
+ langEnum?: string;
24
+ showAll?: GetSemanticFormatsShowAllEnum;
25
+ formatIds?: string;
26
+ keyStrings?: string;
27
+ }
28
+
29
+ /**
30
+ *
31
+ */
32
+ export class FormatsApi extends runtime.BaseAPI {
33
+
34
+ /**
35
+ * Creates request options for getSemanticFormats without sending the request
36
+ */
37
+ async getSemanticFormatsRequestOpts(requestParameters: GetSemanticFormatsRequest): Promise<runtime.RequestOpts> {
38
+ const queryParameters: any = {};
39
+
40
+ if (requestParameters['langEnum'] != null) {
41
+ queryParameters['lang_enum'] = requestParameters['langEnum'];
42
+ }
43
+
44
+ if (requestParameters['showAll'] != null) {
45
+ queryParameters['show_all'] = requestParameters['showAll'];
46
+ }
47
+
48
+ if (requestParameters['formatIds'] != null) {
49
+ queryParameters['format_ids'] = requestParameters['formatIds'];
50
+ }
51
+
52
+ if (requestParameters['keyStrings'] != null) {
53
+ queryParameters['key_strings'] = requestParameters['keyStrings'];
54
+ }
55
+
56
+ const headerParameters: runtime.HTTPHeaders = {};
57
+
58
+
59
+ let urlPath = `/client_interface/json/?switcher=GetFormats`;
60
+
61
+ return {
62
+ path: urlPath,
63
+ method: 'GET',
64
+ headers: headerParameters,
65
+ query: queryParameters,
66
+ };
67
+ }
68
+
69
+ /**
70
+ * Get meeting formats
71
+ */
72
+ async getSemanticFormatsRaw(requestParameters: GetSemanticFormatsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<SemanticFormat>>> {
73
+ const requestOptions = await this.getSemanticFormatsRequestOpts(requestParameters);
74
+ const response = await this.request(requestOptions, initOverrides);
75
+
76
+ return new runtime.JSONApiResponse(response, (jsonValue) => jsonValue.map(SemanticFormatFromJSON));
77
+ }
78
+
79
+ /**
80
+ * Get meeting formats
81
+ */
82
+ async getSemanticFormats(requestParameters: GetSemanticFormatsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Array<SemanticFormat>> {
83
+ const response = await this.getSemanticFormatsRaw(requestParameters, initOverrides);
84
+ return await response.value();
85
+ }
86
+
87
+ }
88
+
89
+ /**
90
+ * @export
91
+ */
92
+ export const GetSemanticFormatsShowAllEnum = {
93
+ _0: '0',
94
+ _1: '1'
95
+ } as const;
96
+ export type GetSemanticFormatsShowAllEnum = typeof GetSemanticFormatsShowAllEnum[keyof typeof GetSemanticFormatsShowAllEnum];