temper-rb 0.5.1

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 (384) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +291 -0
  4. data/lib/temper/act.rb +47 -0
  5. data/lib/temper/client.rb +96 -0
  6. data/lib/temper/cognitive_maps.rb +75 -0
  7. data/lib/temper/connection.rb +113 -0
  8. data/lib/temper/contexts.rb +54 -0
  9. data/lib/temper/credentials.rb +138 -0
  10. data/lib/temper/errors.rb +154 -0
  11. data/lib/temper/generated/api/access_api.rb +356 -0
  12. data/lib/temper/generated/api/auditor_api.rb +228 -0
  13. data/lib/temper/generated/api/blobs_api.rb +785 -0
  14. data/lib/temper/generated/api/cognitive_maps_api.rb +996 -0
  15. data/lib/temper/generated/api/contexts_api.rb +1039 -0
  16. data/lib/temper/generated/api/data_artifact_shapes_api.rb +243 -0
  17. data/lib/temper/generated/api/data_artifacts_api.rb +261 -0
  18. data/lib/temper/generated/api/events_api.rb +164 -0
  19. data/lib/temper/generated/api/facets_api.rb +406 -0
  20. data/lib/temper/generated/api/graph_api.rb +612 -0
  21. data/lib/temper/generated/api/health_api.rb +84 -0
  22. data/lib/temper/generated/api/ingest_api.rb +398 -0
  23. data/lib/temper/generated/api/invitations_api.rb +514 -0
  24. data/lib/temper/generated/api/invocations_api.rb +308 -0
  25. data/lib/temper/generated/api/meta_api.rb +169 -0
  26. data/lib/temper/generated/api/profile_api.rb +219 -0
  27. data/lib/temper/generated/api/query_api.rb +97 -0
  28. data/lib/temper/generated/api/reblocking_api.rb +95 -0
  29. data/lib/temper/generated/api/relationships_api.rb +332 -0
  30. data/lib/temper/generated/api/resources_api.rb +1329 -0
  31. data/lib/temper/generated/api/schema_api.rb +218 -0
  32. data/lib/temper/generated/api/search_api.rb +97 -0
  33. data/lib/temper/generated/api/slack_link_api.rb +159 -0
  34. data/lib/temper/generated/api/steward_api.rb +372 -0
  35. data/lib/temper/generated/api/teams_api.rb +687 -0
  36. data/lib/temper/generated/api_client.rb +441 -0
  37. data/lib/temper/generated/api_error.rb +58 -0
  38. data/lib/temper/generated/api_model_base.rb +88 -0
  39. data/lib/temper/generated/configuration.rb +393 -0
  40. data/lib/temper/generated/models/accept_invitation_response.rb +239 -0
  41. data/lib/temper/generated/models/act_input.rb +238 -0
  42. data/lib/temper/generated/models/act_invocation.rb +271 -0
  43. data/lib/temper/generated/models/act_name.rb +104 -0
  44. data/lib/temper/generated/models/act_quantity.rb +219 -0
  45. data/lib/temper/generated/models/act_refusal.rb +192 -0
  46. data/lib/temper/generated/models/actor_authority.rb +41 -0
  47. data/lib/temper/generated/models/add_member_request.rb +213 -0
  48. data/lib/temper/generated/models/advance_watermark_ack.rb +188 -0
  49. data/lib/temper/generated/models/advance_watermark_request.rb +161 -0
  50. data/lib/temper/generated/models/agent_authorship.rb +227 -0
  51. data/lib/temper/generated/models/anchor_address_resolution.rb +106 -0
  52. data/lib/temper/generated/models/anchor_address_resolution_one_of.rb +189 -0
  53. data/lib/temper/generated/models/anchor_address_resolution_one_of1.rb +242 -0
  54. data/lib/temper/generated/models/anchor_address_resolution_one_of2.rb +189 -0
  55. data/lib/temper/generated/models/anchor_shape.rb +239 -0
  56. data/lib/temper/generated/models/anchor_verdict.rb +41 -0
  57. data/lib/temper/generated/models/append_block_payload.rb +250 -0
  58. data/lib/temper/generated/models/artifact_commit_request.rb +337 -0
  59. data/lib/temper/generated/models/artifact_commit_response.rb +192 -0
  60. data/lib/temper/generated/models/artifact_view.rb +466 -0
  61. data/lib/temper/generated/models/assert_relationship_request.rb +406 -0
  62. data/lib/temper/generated/models/atlas_edge.rb +327 -0
  63. data/lib/temper/generated/models/atlas_entry.rb +221 -0
  64. data/lib/temper/generated/models/atlas_home.rb +195 -0
  65. data/lib/temper/generated/models/atlas_node.rb +329 -0
  66. data/lib/temper/generated/models/atlas_subgraph.rb +195 -0
  67. data/lib/temper/generated/models/audit_citation.rb +220 -0
  68. data/lib/temper/generated/models/audit_sweep_row.rb +220 -0
  69. data/lib/temper/generated/models/auditor_dispatch_tick_request.rb +150 -0
  70. data/lib/temper/generated/models/auditor_dispatch_tick_response.rb +178 -0
  71. data/lib/temper/generated/models/auditor_job_complete_ack.rb +175 -0
  72. data/lib/temper/generated/models/bind_team_outcome.rb +218 -0
  73. data/lib/temper/generated/models/bind_team_request.rb +166 -0
  74. data/lib/temper/generated/models/blob_commit_response.rb +283 -0
  75. data/lib/temper/generated/models/blob_delete_ack.rb +191 -0
  76. data/lib/temper/generated/models/blob_relation_ack.rb +165 -0
  77. data/lib/temper/generated/models/blob_relation_assert_request.rb +404 -0
  78. data/lib/temper/generated/models/blob_relation_direction.rb +40 -0
  79. data/lib/temper/generated/models/blob_relation_edge_direction.rb +40 -0
  80. data/lib/temper/generated/models/blob_relation_row.rb +390 -0
  81. data/lib/temper/generated/models/blob_summary.rb +256 -0
  82. data/lib/temper/generated/models/blob_upload_begin_request.rb +219 -0
  83. data/lib/temper/generated/models/blob_upload_begin_response.rb +165 -0
  84. data/lib/temper/generated/models/blob_upload_finalize_request.rb +211 -0
  85. data/lib/temper/generated/models/blob_upload_progress.rb +220 -0
  86. data/lib/temper/generated/models/blob_upload_segment_info.rb +227 -0
  87. data/lib/temper/generated/models/block_chunk_ref.rb +217 -0
  88. data/lib/temper/generated/models/block_fold_disposition.rb +106 -0
  89. data/lib/temper/generated/models/block_fold_disposition_one_of.rb +245 -0
  90. data/lib/temper/generated/models/block_fold_disposition_one_of1.rb +189 -0
  91. data/lib/temper/generated/models/block_fold_disposition_one_of2.rb +189 -0
  92. data/lib/temper/generated/models/block_provenance_row.rb +348 -0
  93. data/lib/temper/generated/models/block_read.rb +106 -0
  94. data/lib/temper/generated/models/block_read_one_of.rb +311 -0
  95. data/lib/temper/generated/models/block_read_one_of1.rb +297 -0
  96. data/lib/temper/generated/models/block_read_one_of2.rb +215 -0
  97. data/lib/temper/generated/models/block_successor.rb +177 -0
  98. data/lib/temper/generated/models/blocks_response.rb +194 -0
  99. data/lib/temper/generated/models/body_storage.rb +40 -0
  100. data/lib/temper/generated/models/bridge.rb +217 -0
  101. data/lib/temper/generated/models/bulk_reassign_ack.rb +167 -0
  102. data/lib/temper/generated/models/bulk_reassign_request.rb +191 -0
  103. data/lib/temper/generated/models/change_role_request.rb +187 -0
  104. data/lib/temper/generated/models/charter_block.rb +220 -0
  105. data/lib/temper/generated/models/charter_disposition.rb +42 -0
  106. data/lib/temper/generated/models/citation_audit_request.rb +231 -0
  107. data/lib/temper/generated/models/citation_audit_row.rb +366 -0
  108. data/lib/temper/generated/models/claimed_audit_job.rb +249 -0
  109. data/lib/temper/generated/models/claimed_job.rb +220 -0
  110. data/lib/temper/generated/models/close_invocation_request.rb +197 -0
  111. data/lib/temper/generated/models/cogmap_analytics_row.rb +220 -0
  112. data/lib/temper/generated/models/cogmap_detail.rb +224 -0
  113. data/lib/temper/generated/models/cogmap_foundation_row.rb +247 -0
  114. data/lib/temper/generated/models/cogmap_grant_body.rb +295 -0
  115. data/lib/temper/generated/models/cogmap_region_metrics_row.rb +248 -0
  116. data/lib/temper/generated/models/cogmap_region_row.rb +269 -0
  117. data/lib/temper/generated/models/cogmap_regulation_row.rb +228 -0
  118. data/lib/temper/generated/models/cogmap_revoke_body.rb +191 -0
  119. data/lib/temper/generated/models/cogmap_row.rb +341 -0
  120. data/lib/temper/generated/models/cogmap_staleness.rb +185 -0
  121. data/lib/temper/generated/models/combine_node.rb +263 -0
  122. data/lib/temper/generated/models/combine_op.rb +41 -0
  123. data/lib/temper/generated/models/composition.rb +203 -0
  124. data/lib/temper/generated/models/composition_trace.rb +167 -0
  125. data/lib/temper/generated/models/confidence_band.rb +41 -0
  126. data/lib/temper/generated/models/content_response.rb +213 -0
  127. data/lib/temper/generated/models/context_create_request.rb +176 -0
  128. data/lib/temper/generated/models/context_owner_ref.rb +106 -0
  129. data/lib/temper/generated/models/context_owner_ref_one_of.rb +166 -0
  130. data/lib/temper/generated/models/context_owner_ref_one_of1.rb +166 -0
  131. data/lib/temper/generated/models/context_panorama.rb +221 -0
  132. data/lib/temper/generated/models/context_row.rb +404 -0
  133. data/lib/temper/generated/models/context_row_with_counts.rb +430 -0
  134. data/lib/temper/generated/models/create_cogmap_outcome.rb +217 -0
  135. data/lib/temper/generated/models/create_cogmap_request.rb +221 -0
  136. data/lib/temper/generated/models/create_invitation_request.rb +213 -0
  137. data/lib/temper/generated/models/create_request_body.rb +184 -0
  138. data/lib/temper/generated/models/create_review_body.rb +148 -0
  139. data/lib/temper/generated/models/deactivated.rb +189 -0
  140. data/lib/temper/generated/models/delete_response.rb +165 -0
  141. data/lib/temper/generated/models/denied.rb +189 -0
  142. data/lib/temper/generated/models/device_overrides.rb +162 -0
  143. data/lib/temper/generated/models/discouraged_open_meta_key.rb +191 -0
  144. data/lib/temper/generated/models/dispatch_tick_request.rb +161 -0
  145. data/lib/temper/generated/models/dispatch_tick_response.rb +178 -0
  146. data/lib/temper/generated/models/disposition.rb +41 -0
  147. data/lib/temper/generated/models/doc_type_description.rb +247 -0
  148. data/lib/temper/generated/models/doc_type_summary.rb +219 -0
  149. data/lib/temper/generated/models/drift_sweep_row.rb +258 -0
  150. data/lib/temper/generated/models/edge_facet_row.rb +332 -0
  151. data/lib/temper/generated/models/edge_facet_set_request.rb +288 -0
  152. data/lib/temper/generated/models/edge_facets_response.rb +193 -0
  153. data/lib/temper/generated/models/edge_filter.rb +192 -0
  154. data/lib/temper/generated/models/edge_kind.rb +42 -0
  155. data/lib/temper/generated/models/element_event.rb +307 -0
  156. data/lib/temper/generated/models/element_kind.rb +40 -0
  157. data/lib/temper/generated/models/embed_dispatch_summary.rb +355 -0
  158. data/lib/temper/generated/models/enforcement_mode.rb +40 -0
  159. data/lib/temper/generated/models/entitlements.rb +234 -0
  160. data/lib/temper/generated/models/entry_bounds.rb +247 -0
  161. data/lib/temper/generated/models/error_body.rb +164 -0
  162. data/lib/temper/generated/models/error_detail.rb +201 -0
  163. data/lib/temper/generated/models/error_details.rb +105 -0
  164. data/lib/temper/generated/models/event_cursor_response.rb +150 -0
  165. data/lib/temper/generated/models/event_trail.rb +241 -0
  166. data/lib/temper/generated/models/exact_arm.rb +226 -0
  167. data/lib/temper/generated/models/exact_hit.rb +193 -0
  168. data/lib/temper/generated/models/extent.rb +106 -0
  169. data/lib/temper/generated/models/extent_one_of.rb +189 -0
  170. data/lib/temper/generated/models/extent_one_of1.rb +189 -0
  171. data/lib/temper/generated/models/extent_one_of2.rb +215 -0
  172. data/lib/temper/generated/models/facet_ack.rb +168 -0
  173. data/lib/temper/generated/models/facet_predicate.rb +191 -0
  174. data/lib/temper/generated/models/facet_retract_ack.rb +165 -0
  175. data/lib/temper/generated/models/facet_set_request.rb +304 -0
  176. data/lib/temper/generated/models/finalize_payload.rb +212 -0
  177. data/lib/temper/generated/models/fold_relationship_request.rb +248 -0
  178. data/lib/temper/generated/models/grant_outcome.rb +166 -0
  179. data/lib/temper/generated/models/graph_edge_row.rb +421 -0
  180. data/lib/temper/generated/models/group_key_meta.rb +217 -0
  181. data/lib/temper/generated/models/health_response.rb +202 -0
  182. data/lib/temper/generated/models/home_cogmap.rb +297 -0
  183. data/lib/temper/generated/models/home_context.rb +281 -0
  184. data/lib/temper/generated/models/id_kind.rb +104 -0
  185. data/lib/temper/generated/models/id_provenance.rb +105 -0
  186. data/lib/temper/generated/models/id_provenance_one_of.rb +215 -0
  187. data/lib/temper/generated/models/id_provenance_one_of1.rb +215 -0
  188. data/lib/temper/generated/models/id_set.rb +214 -0
  189. data/lib/temper/generated/models/idp_revocation.rb +41 -0
  190. data/lib/temper/generated/models/illegal_transition.rb +225 -0
  191. data/lib/temper/generated/models/ingest_create_response.rb +105 -0
  192. data/lib/temper/generated/models/ingest_delta.rb +334 -0
  193. data/lib/temper/generated/models/ingest_payload.rb +478 -0
  194. data/lib/temper/generated/models/ingest_state.rb +40 -0
  195. data/lib/temper/generated/models/inherited_read_grant.rb +219 -0
  196. data/lib/temper/generated/models/inherited_share.rb +192 -0
  197. data/lib/temper/generated/models/input_source.rb +106 -0
  198. data/lib/temper/generated/models/input_source_one_of.rb +227 -0
  199. data/lib/temper/generated/models/input_source_one_of1.rb +189 -0
  200. data/lib/temper/generated/models/input_source_one_of2.rb +189 -0
  201. data/lib/temper/generated/models/insufficient_authority.rb +241 -0
  202. data/lib/temper/generated/models/intention.rb +212 -0
  203. data/lib/temper/generated/models/invitation_status.rb +42 -0
  204. data/lib/temper/generated/models/invitation_token_request.rb +165 -0
  205. data/lib/temper/generated/models/invitee_invitation.rb +447 -0
  206. data/lib/temper/generated/models/invocation_ack.rb +191 -0
  207. data/lib/temper/generated/models/invocation_act_row.rb +269 -0
  208. data/lib/temper/generated/models/invocation_close_ack.rb +213 -0
  209. data/lib/temper/generated/models/invocation_summary.rb +296 -0
  210. data/lib/temper/generated/models/invocation_view.rb +433 -0
  211. data/lib/temper/generated/models/join_request.rb +403 -0
  212. data/lib/temper/generated/models/join_request_status.rb +42 -0
  213. data/lib/temper/generated/models/kind_owner_input.rb +105 -0
  214. data/lib/temper/generated/models/kind_owner_input_one_of.rb +164 -0
  215. data/lib/temper/generated/models/kind_owner_input_one_of1.rb +164 -0
  216. data/lib/temper/generated/models/lineage_node.rb +326 -0
  217. data/lib/temper/generated/models/managed_meta.rb +249 -0
  218. data/lib/temper/generated/models/match_location.rb +188 -0
  219. data/lib/temper/generated/models/materialize_ack.rb +307 -0
  220. data/lib/temper/generated/models/materialize_delta.rb +296 -0
  221. data/lib/temper/generated/models/materialize_request.rb +150 -0
  222. data/lib/temper/generated/models/merge_policy.rb +40 -0
  223. data/lib/temper/generated/models/meta_update_payload.rb +358 -0
  224. data/lib/temper/generated/models/narrowed_by.rb +210 -0
  225. data/lib/temper/generated/models/no_prior_standing.rb +189 -0
  226. data/lib/temper/generated/models/no_standing.rb +189 -0
  227. data/lib/temper/generated/models/node_home.rb +40 -0
  228. data/lib/temper/generated/models/open_invocation_request.rb +204 -0
  229. data/lib/temper/generated/models/open_meta_convention.rb +180 -0
  230. data/lib/temper/generated/models/ord_op.rb +42 -0
  231. data/lib/temper/generated/models/orphan_node.rb +264 -0
  232. data/lib/temper/generated/models/outcome_declaration.rb +177 -0
  233. data/lib/temper/generated/models/pending_invitation_counts.rb +177 -0
  234. data/lib/temper/generated/models/plan_refusal.rb +220 -0
  235. data/lib/temper/generated/models/plan_refusal_details.rb +167 -0
  236. data/lib/temper/generated/models/polarity.rb +40 -0
  237. data/lib/temper/generated/models/profile.rb +313 -0
  238. data/lib/temper/generated/models/profile_auth_link.rb +332 -0
  239. data/lib/temper/generated/models/profile_update_request.rb +169 -0
  240. data/lib/temper/generated/models/profile_with_entitlements.rb +344 -0
  241. data/lib/temper/generated/models/property_op.rb +106 -0
  242. data/lib/temper/generated/models/property_op_one_of.rb +189 -0
  243. data/lib/temper/generated/models/property_op_one_of1.rb +217 -0
  244. data/lib/temper/generated/models/property_op_one_of2.rb +227 -0
  245. data/lib/temper/generated/models/property_predicate.rb +191 -0
  246. data/lib/temper/generated/models/provenance_source.rb +106 -0
  247. data/lib/temper/generated/models/provenance_source_one_of.rb +214 -0
  248. data/lib/temper/generated/models/provenance_source_one_of1.rb +214 -0
  249. data/lib/temper/generated/models/provenance_source_one_of2.rb +216 -0
  250. data/lib/temper/generated/models/public_system_settings.rb +169 -0
  251. data/lib/temper/generated/models/quantity_scale.rb +106 -0
  252. data/lib/temper/generated/models/quantity_scale_one_of.rb +189 -0
  253. data/lib/temper/generated/models/quantity_scale_one_of1.rb +215 -0
  254. data/lib/temper/generated/models/quantity_scale_one_of2.rb +189 -0
  255. data/lib/temper/generated/models/query_response.rb +195 -0
  256. data/lib/temper/generated/models/reassign_ack.rb +191 -0
  257. data/lib/temper/generated/models/reassign_context_outcome.rb +243 -0
  258. data/lib/temper/generated/models/reassign_context_request.rb +166 -0
  259. data/lib/temper/generated/models/reassign_resource_request.rb +165 -0
  260. data/lib/temper/generated/models/reblock_candidate.rb +192 -0
  261. data/lib/temper/generated/models/reblock_outcome.rb +109 -0
  262. data/lib/temper/generated/models/reblock_outcome_one_of.rb +165 -0
  263. data/lib/temper/generated/models/reblock_outcome_one_of1.rb +165 -0
  264. data/lib/temper/generated/models/reblock_outcome_one_of1_in_progress.rb +166 -0
  265. data/lib/temper/generated/models/reblock_outcome_one_of2.rb +165 -0
  266. data/lib/temper/generated/models/reblock_outcome_one_of3.rb +165 -0
  267. data/lib/temper/generated/models/reblock_outcome_one_of4.rb +165 -0
  268. data/lib/temper/generated/models/reblock_outcome_one_of4_error.rb +165 -0
  269. data/lib/temper/generated/models/reblock_outcome_one_of_reblocked.rb +165 -0
  270. data/lib/temper/generated/models/reblock_receipt.rb +259 -0
  271. data/lib/temper/generated/models/reblock_request.rb +215 -0
  272. data/lib/temper/generated/models/reblock_scope.rb +106 -0
  273. data/lib/temper/generated/models/reblock_scope_one_of.rb +166 -0
  274. data/lib/temper/generated/models/reblock_scope_one_of1.rb +166 -0
  275. data/lib/temper/generated/models/reblock_summary.rb +350 -0
  276. data/lib/temper/generated/models/reconcile_cogmap_request.rb +199 -0
  277. data/lib/temper/generated/models/reconcile_edge.rb +253 -0
  278. data/lib/temper/generated/models/reconcile_edge_tombstone.rb +217 -0
  279. data/lib/temper/generated/models/reconcile_entry.rb +318 -0
  280. data/lib/temper/generated/models/reconcile_outcome.rb +327 -0
  281. data/lib/temper/generated/models/reconcile_telos.rb +167 -0
  282. data/lib/temper/generated/models/reconcile_telos_block.rb +191 -0
  283. data/lib/temper/generated/models/reconcile_tombstone.rb +165 -0
  284. data/lib/temper/generated/models/refusal.rb +112 -0
  285. data/lib/temper/generated/models/refusal_reason.rb +104 -0
  286. data/lib/temper/generated/models/region_disclosure.rb +193 -0
  287. data/lib/temper/generated/models/region_hit.rb +192 -0
  288. data/lib/temper/generated/models/relationship_ack.rb +165 -0
  289. data/lib/temper/generated/models/relationship_target.rb +40 -0
  290. data/lib/temper/generated/models/remove_member_outcome.rb +165 -0
  291. data/lib/temper/generated/models/rename_context_outcome.rb +300 -0
  292. data/lib/temper/generated/models/rename_context_request.rb +166 -0
  293. data/lib/temper/generated/models/requested.rb +189 -0
  294. data/lib/temper/generated/models/residual_bucket.rb +191 -0
  295. data/lib/temper/generated/models/residual_context.rb +201 -0
  296. data/lib/temper/generated/models/residual_groups.rb +193 -0
  297. data/lib/temper/generated/models/residual_owned_reach.rb +202 -0
  298. data/lib/temper/generated/models/resource_annotate_request.rb +261 -0
  299. data/lib/temper/generated/models/resource_create_request.rb +355 -0
  300. data/lib/temper/generated/models/resource_facet_row.rb +317 -0
  301. data/lib/temper/generated/models/resource_facets.rb +226 -0
  302. data/lib/temper/generated/models/resource_facets_response.rb +193 -0
  303. data/lib/temper/generated/models/resource_filter.rb +265 -0
  304. data/lib/temper/generated/models/resource_grant_body.rb +295 -0
  305. data/lib/temper/generated/models/resource_hit.rb +216 -0
  306. data/lib/temper/generated/models/resource_lineage.rb +224 -0
  307. data/lib/temper/generated/models/resource_list_response.rb +313 -0
  308. data/lib/temper/generated/models/resource_revoke_body.rb +191 -0
  309. data/lib/temper/generated/models/resource_section.rb +41 -0
  310. data/lib/temper/generated/models/resource_sort_field.rb +45 -0
  311. data/lib/temper/generated/models/resource_update_request.rb +379 -0
  312. data/lib/temper/generated/models/resource_view.rb +592 -0
  313. data/lib/temper/generated/models/restore_context_outcome.rb +274 -0
  314. data/lib/temper/generated/models/retire_context_outcome.rb +247 -0
  315. data/lib/temper/generated/models/return_spec.rb +189 -0
  316. data/lib/temper/generated/models/retype_relationship_request.rb +290 -0
  317. data/lib/temper/generated/models/revoke_outcome.rb +165 -0
  318. data/lib/temper/generated/models/revoked.rb +189 -0
  319. data/lib/temper/generated/models/reweight_relationship_request.rb +264 -0
  320. data/lib/temper/generated/models/score_kind.rb +104 -0
  321. data/lib/temper/generated/models/scoring.rb +192 -0
  322. data/lib/temper/generated/models/search_params.rb +254 -0
  323. data/lib/temper/generated/models/search_reason.rb +41 -0
  324. data/lib/temper/generated/models/search_response.rb +217 -0
  325. data/lib/temper/generated/models/search_result_row.rb +343 -0
  326. data/lib/temper/generated/models/search_scope.rb +41 -0
  327. data/lib/temper/generated/models/search_scope_info.rb +199 -0
  328. data/lib/temper/generated/models/segment_info.rb +200 -0
  329. data/lib/temper/generated/models/segmented_begin.rb +212 -0
  330. data/lib/temper/generated/models/segmented_begin_response.rb +247 -0
  331. data/lib/temper/generated/models/shape_declare_request.rb +315 -0
  332. data/lib/temper/generated/models/shape_emptiness.rb +42 -0
  333. data/lib/temper/generated/models/shape_view.rb +438 -0
  334. data/lib/temper/generated/models/share_context_outcome.rb +218 -0
  335. data/lib/temper/generated/models/share_context_request.rb +166 -0
  336. data/lib/temper/generated/models/slack_disconnect_request.rb +166 -0
  337. data/lib/temper/generated/models/slack_disconnect_response.rb +168 -0
  338. data/lib/temper/generated/models/slack_disconnected_principal.rb +269 -0
  339. data/lib/temper/generated/models/slice_request.rb +216 -0
  340. data/lib/temper/generated/models/sort_order.rb +40 -0
  341. data/lib/temper/generated/models/stage_disposition.rb +42 -0
  342. data/lib/temper/generated/models/stage_input.rb +105 -0
  343. data/lib/temper/generated/models/stage_input_one_of.rb +241 -0
  344. data/lib/temper/generated/models/stage_input_one_of1.rb +253 -0
  345. data/lib/temper/generated/models/stage_input_trace.rb +241 -0
  346. data/lib/temper/generated/models/stage_node.rb +105 -0
  347. data/lib/temper/generated/models/stage_output.rb +105 -0
  348. data/lib/temper/generated/models/stage_output_one_of.rb +217 -0
  349. data/lib/temper/generated/models/stage_output_one_of1.rb +217 -0
  350. data/lib/temper/generated/models/stage_relation.rb +40 -0
  351. data/lib/temper/generated/models/stage_result.rb +423 -0
  352. data/lib/temper/generated/models/stage_trace.rb +451 -0
  353. data/lib/temper/generated/models/standing.rb +43 -0
  354. data/lib/temper/generated/models/standing_shape.rb +355 -0
  355. data/lib/temper/generated/models/subscription.rb +267 -0
  356. data/lib/temper/generated/models/subscription_override.rb +193 -0
  357. data/lib/temper/generated/models/system_access_details.rb +206 -0
  358. data/lib/temper/generated/models/team_create_request.rb +217 -0
  359. data/lib/temper/generated/models/team_detail.rb +313 -0
  360. data/lib/temper/generated/models/team_invitation.rb +406 -0
  361. data/lib/temper/generated/models/team_member_detail.rb +265 -0
  362. data/lib/temper/generated/models/team_member_row.rb +265 -0
  363. data/lib/temper/generated/models/team_member_source.rb +40 -0
  364. data/lib/temper/generated/models/team_role.rb +42 -0
  365. data/lib/temper/generated/models/team_row.rb +287 -0
  366. data/lib/temper/generated/models/team_update_request.rb +159 -0
  367. data/lib/temper/generated/models/territory.rb +298 -0
  368. data/lib/temper/generated/models/territory_kind.rb +41 -0
  369. data/lib/temper/generated/models/territory_overview.rb +223 -0
  370. data/lib/temper/generated/models/unbind_team_outcome.rb +218 -0
  371. data/lib/temper/generated/models/unrecognized_standing.rb +215 -0
  372. data/lib/temper/generated/models/unshare_context_outcome.rb +218 -0
  373. data/lib/temper/generated/models/vault_config.rb +174 -0
  374. data/lib/temper/generated/models/via_entry.rb +305 -0
  375. data/lib/temper/generated/models/wide_arm.rb +252 -0
  376. data/lib/temper/generated/models/wide_hit.rb +193 -0
  377. data/lib/temper/generated/version.rb +15 -0
  378. data/lib/temper/generated.rb +402 -0
  379. data/lib/temper/refs.rb +36 -0
  380. data/lib/temper/resources.rb +68 -0
  381. data/lib/temper/validate.rb +127 -0
  382. data/lib/temper/version.rb +11 -0
  383. data/lib/temper.rb +47 -0
  384. metadata +525 -0
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Temper
4
+ class Contexts
5
+ def initialize(client)
6
+ @client = client
7
+ end
8
+
9
+ # POST /api/contexts -> 201 ContextRow.
10
+ #
11
+ # ContextCreateRequest's fields are `name` and `owner`; only `name` is
12
+ # required, and there is no `slug` on the wire -- the server derives it.
13
+ def create(name:, owner: nil)
14
+ attrs = { name: name }
15
+ attrs[:owner] = owner_ref(owner) unless owner.nil?
16
+ body = Generated::ContextCreateRequest.new(attrs)
17
+ @client.call { |api| Generated::ContextsApi.new(api).create_context(body) }
18
+ end
19
+
20
+ def list(**filters)
21
+ @client.call(idempotent: true) { |api| Generated::ContextsApi.new(api).list_contexts(filters) }
22
+ end
23
+
24
+ def show(ref)
25
+ id = Temper.parse_ref(ref)
26
+ @client.call(idempotent: true) { |api| Generated::ContextsApi.new(api).get_context(id) }
27
+ end
28
+
29
+ private
30
+
31
+ # ContextOwnerRef is an externally-tagged serde enum mixing a unit variant
32
+ # with newtype variants, so it has no discriminator and the generated oneOf
33
+ # wrapper is best-effort by its own admission ("we do not attempt to check
34
+ # whether exactly one item matches"). We build the wire shape directly and
35
+ # let the generated model carry it: to_hash passes non-model values verbatim.
36
+ #
37
+ # Unencodable input is an error, never a guess.
38
+ def owner_ref(owner)
39
+ case owner
40
+ when :me, 'me' then 'Me'
41
+ when Hash then hash_owner_ref(owner)
42
+ else
43
+ raise ArgumentError, "owner must be :me, {team:}, or {profile:}, got #{owner.inspect}"
44
+ end
45
+ end
46
+
47
+ def hash_owner_ref(owner)
48
+ return { 'Team' => owner.fetch(:team) } if owner.key?(:team)
49
+ return { 'Profile' => owner.fetch(:profile) } if owner.key?(:profile)
50
+
51
+ raise ArgumentError, "owner Hash must carry :team or :profile, got #{owner.keys.inspect}"
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,138 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'faraday'
4
+ require 'json'
5
+ require 'uri'
6
+
7
+ module Temper
8
+ # Two strategies behind one interface. Precedence is not discovered from the
9
+ # environment -- it is the caller's explicit choice. That avoids, structurally,
10
+ # the drift the steward's temper-auth.ts header documents: its schedules went
11
+ # Connect-first while its MCP connection went M2M-first, so on the Auth0-fronted
12
+ # prod instance the schedules' REST calls silently failed while MCP worked.
13
+ module Credentials
14
+ # A token the caller already holds -- a Puma request serving a signed-in user.
15
+ # No I/O, no refresh.
16
+ class BearerToken
17
+ def initialize(token)
18
+ raise ArgumentError, 'token must be a non-empty String' unless token.is_a?(String) && !token.empty?
19
+
20
+ @token = token
21
+ end
22
+
23
+ attr_reader :token
24
+
25
+ def refresh!
26
+ raise Unauthorized.new('BearerToken cannot refresh; mint a new token upstream', status: 401)
27
+ end
28
+ end
29
+
30
+ # A client_credentials machine principal -- a Sidekiq worker.
31
+ #
32
+ # Works against BOTH issuers a temper instance can be fronted by:
33
+ #
34
+ # * Auth0 (`temper admin machine provision`), where `token_url` is your Auth0
35
+ # tenant's /oauth/token and `audience` must equal the API's AUTH_AUDIENCE.
36
+ # * temper's own AS (`temper admin machine issue`, a `tmpr_*` client id), where
37
+ # `token_url` is your own instance's /oauth/token and `audience` is omitted --
38
+ # that AS mints with its server-side AS_AUDIENCE and ignores a request-supplied
39
+ # one entirely.
40
+ #
41
+ # Ported from packages/agent-workflows/steward/agent/lib/temper-auth.ts, the
42
+ # machine-principal caller already running in production: the same TEMPER_M2M_*
43
+ # inputs, `requireEnv` semantics (throw, never default), and a cache keyed on an
44
+ # ABSOLUTE expires_at with a 60s skew.
45
+ #
46
+ # Two deliberate divergences from that reference:
47
+ #
48
+ # * The cache is mutex-guarded. The steward's is a bare module global, sound
49
+ # only because a serverless function is single-threaded. Under Puma every
50
+ # in-flight thread races to mint at expiry.
51
+ # * #refresh! exists. Refresh-ahead-of-expiry alone is insufficient: the
52
+ # steward resolves a token once per tick, so a tick outliving its cached
53
+ # token takes a 401 nothing recovers. A Sidekiq job holding a token across
54
+ # a long unit of work has precisely that bug. Re-mint ON 401.
55
+ class ClientCredentials
56
+ SKEW_SECONDS = 60
57
+ TOKEN_REQUEST_CONTENT_TYPE = 'application/x-www-form-urlencoded'
58
+
59
+ # `audience` is optional because it is Auth0's, not the protocol's. Omit it for a
60
+ # temper-issued credential.
61
+ def initialize(token_url:, client_id:, client_secret:, audience: nil, clock: -> { Time.now },
62
+ allow_insecure_http: false)
63
+ # The client_secret goes on the wire to this URL on every mint, so the
64
+ # scheme is checked at construction -- refused here, not flagged per mint.
65
+ Validate.require_endpoint(token_url, name: 'token_url',
66
+ allow_insecure_http: allow_insecure_http)
67
+ @token_url = require_value(token_url, 'token_url')
68
+ @client_id = require_value(client_id, 'client_id')
69
+ @client_secret = require_value(client_secret, 'client_secret')
70
+ @audience = audience.nil? ? nil : require_value(audience, 'audience')
71
+ @clock = clock
72
+ @mutex = Mutex.new
73
+ @token = nil
74
+ @expires_at = nil
75
+ end
76
+
77
+ def token
78
+ @mutex.synchronize do
79
+ mint! if expired?
80
+ @token
81
+ end
82
+ end
83
+
84
+ def refresh!
85
+ @mutex.synchronize { mint! }
86
+ end
87
+
88
+ private
89
+
90
+ def require_value(value, name)
91
+ raise ArgumentError, "#{name} must be a non-empty String" unless value.is_a?(String) && !value.empty?
92
+
93
+ value
94
+ end
95
+
96
+ def expired?
97
+ @token.nil? || @clock.call.to_f >= (@expires_at - SKEW_SECONDS)
98
+ end
99
+
100
+ # Caller holds @mutex.
101
+ def mint!
102
+ body = JSON.parse(post_token_request.body)
103
+ @token = body.fetch('access_token')
104
+ # Absolute, not relative: a duration cannot survive being cached.
105
+ @expires_at = @clock.call.to_f + body.fetch('expires_in').to_i
106
+ @token
107
+ end
108
+
109
+ def post_token_request
110
+ response = Faraday.post(@token_url) do |req|
111
+ req.headers['Content-Type'] = TOKEN_REQUEST_CONTENT_TYPE
112
+ req.body = token_request_body
113
+ end
114
+ return response if response.success?
115
+
116
+ raise Unauthorized.new("token mint failed (#{response.status})",
117
+ status: response.status, details: response.body)
118
+ end
119
+
120
+ # RFC 6749 §4 mandates form encoding at the token endpoint. Auth0 also accepts
121
+ # JSON, which is why this sent JSON while Auth0 was the only issuer it faced --
122
+ # and why every test stayed green. Temper's own AS reads the body with
123
+ # `req.formData()`, so a JSON mint never reaches its client_credentials branch.
124
+ # Form-encoding is what both issuers accept.
125
+ def token_request_body
126
+ params = {
127
+ grant_type: 'client_credentials',
128
+ client_id: @client_id,
129
+ client_secret: @client_secret
130
+ }
131
+ # Auth0 requires it; temper's AS ignores a request-supplied audience and mints
132
+ # with its own AS_AUDIENCE. Sending an empty one would be a lie, so omit it.
133
+ params[:audience] = @audience unless @audience.nil?
134
+ URI.encode_www_form(params)
135
+ end
136
+ end
137
+ end
138
+ end
@@ -0,0 +1,154 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Temper
6
+ class Error < StandardError
7
+ attr_reader :status, :code, :details
8
+
9
+ def initialize(message = nil, status: nil, code: nil, details: nil)
10
+ super(message)
11
+ @status = status
12
+ @code = code
13
+ @details = details
14
+ end
15
+ end
16
+
17
+ # Let these escape: Sidekiq retries a job whose exception escapes.
18
+ class TransientError < Error; end
19
+
20
+ class RateLimited < TransientError
21
+ attr_reader :retry_after
22
+
23
+ def initialize(message = nil, retry_after: nil, **kwargs)
24
+ super(message, **kwargs)
25
+ @retry_after = retry_after
26
+ end
27
+ end
28
+
29
+ class ServerError < TransientError; end
30
+ class ConnectionError < TransientError; end
31
+
32
+ # Rescue these: retrying will not help. Dead-letter them.
33
+ class PermanentError < Error; end
34
+
35
+ class Unauthorized < PermanentError; end
36
+ class Forbidden < PermanentError; end
37
+
38
+ # The one error whose `#details` is a typed payload rather than a free-form blob: the server
39
+ # says *why* it refused, so a worker can tell "never granted" from "granted and then revoked"
40
+ # without matching on the message string.
41
+ class SystemAccessRequired < Forbidden
42
+ # The refusal as a generated model — `Denied`, `Revoked`, `IllegalTransition`, and so on.
43
+ #
44
+ # `nil` means this build cannot name the refusal: either the server sent none (it predates the
45
+ # typed 403) or it sent a kind added after this gem was generated. Reach for #refusal_kind in
46
+ # that case — a name we cannot resolve is still worth logging.
47
+ def refusal
48
+ raw = refusal_hash
49
+ # The generated oneOf dispatcher matches on SYMBOL keys, because the ApiClient deserializes
50
+ # with symbolize_names. #details comes off the error envelope with string keys, and feeding
51
+ # those in resolves to nil SILENTLY — so the symbolize belongs here, once, not in every
52
+ # caller. The refusal payload is flat, so shallow is sufficient.
53
+ raw && Temper::Generated::Refusal.build(raw.transform_keys(&:to_sym))
54
+ end
55
+
56
+ # The refusal's discriminator as the server sent it, resolvable or not.
57
+ def refusal_kind
58
+ refusal_hash&.fetch('kind', nil)
59
+ end
60
+
61
+ private
62
+
63
+ def refusal_hash
64
+ return nil unless details.is_a?(Hash)
65
+
66
+ raw = details['refusal']
67
+ raw.is_a?(Hash) ? raw : nil
68
+ end
69
+ end
70
+
71
+ class NotFound < PermanentError; end
72
+ class Conflict < PermanentError; end
73
+ class BadRequest < PermanentError; end
74
+
75
+ # Translates the generated core's one flat ApiError into the tree above.
76
+ #
77
+ # The split is load-bearing rather than decorative: a 409 classified transient
78
+ # spins a Sidekiq job forever, and a 503 classified permanent is silently
79
+ # dropped.
80
+ module ErrorMapper
81
+ SYSTEM_ACCESS_REQUIRED = 'SYSTEM_ACCESS_REQUIRED'
82
+
83
+ # 422 is declared on no operation but is what a serde rejection surfaces as.
84
+ # 403 and 429 are not here: each needs more than the status to classify.
85
+ STATUS_CLASSES = {
86
+ 400 => BadRequest,
87
+ 401 => Unauthorized,
88
+ 404 => NotFound,
89
+ 409 => Conflict,
90
+ 422 => BadRequest
91
+ }.freeze
92
+
93
+ module_function
94
+
95
+ def call(api_error)
96
+ status = api_error.code
97
+ code, message, details = parse_envelope(api_error.response_body)
98
+ # ApiError#message decorates itself with status/headers/body when it has
99
+ # them. A transport failure has none, so this fallback stays clean.
100
+ message ||= api_error.message
101
+ kwargs = { status: status, code: code, details: details }
102
+
103
+ # A nil status means the generated ApiClient rescued a Faraday transport
104
+ # failure (timeout / connection refused) and re-raised it code-less.
105
+ return ConnectionError.new(message, **kwargs) if status.nil?
106
+
107
+ build(status, message, code, kwargs, api_error)
108
+ end
109
+
110
+ def build(status, message, code, kwargs, api_error)
111
+ # 403 discriminates on error.code; 429 carries Retry-After. Everything else
112
+ # classifies off the status alone.
113
+ return forbidden(code, message, kwargs) if status == 403
114
+ return RateLimited.new(message, retry_after: retry_after_of(api_error), **kwargs) if status == 429
115
+
116
+ klass = STATUS_CLASSES[status] || (server_error?(status) ? ServerError : Error)
117
+ klass.new(message, **kwargs)
118
+ end
119
+
120
+ def server_error?(status)
121
+ (500..599).cover?(status)
122
+ end
123
+
124
+ def forbidden(code, message, kwargs)
125
+ return SystemAccessRequired.new(message, **kwargs) if code == SYSTEM_ACCESS_REQUIRED
126
+
127
+ Forbidden.new(message, **kwargs)
128
+ end
129
+
130
+ # The server speaks exactly one envelope: {"error":{code,message,details}}.
131
+ # Anything else -- an HTML 502 from a proxy, an undeclared 500 -- degrades to
132
+ # a raw body on #details rather than raising inside the error path.
133
+ #
134
+ # 422/429/500/503 are declared on NO operation, so those bodies are parsed
135
+ # opportunistically and classified off the raw HTTP status.
136
+ def parse_envelope(body)
137
+ return [nil, nil, nil] if body.nil? || body.to_s.empty?
138
+
139
+ parsed = JSON.parse(body.to_s)
140
+ error = parsed.is_a?(Hash) ? parsed['error'] : nil
141
+ return [nil, nil, body] unless error.is_a?(Hash)
142
+
143
+ [error['code'], error['message'], error['details']]
144
+ rescue JSON::ParserError
145
+ [nil, nil, body]
146
+ end
147
+
148
+ def retry_after_of(api_error)
149
+ headers = api_error.response_headers || {}
150
+ raw = headers['Retry-After'] || headers['retry-after']
151
+ raw && Integer(raw, exception: false)
152
+ end
153
+ end
154
+ end