Skip to main content

nominal_api/conjure/endpoints/scout/integrations/api/
integrations_service.rs

1use conjure_http::endpoint;
2/// Service for managing integrations with external services.
3#[conjure_http::conjure_endpoints(
4    name = "IntegrationsService",
5    use_legacy_error_serialization
6)]
7pub trait IntegrationsService {
8    /// Generates link to request permissions for Slack bot to join workspaces and use a webhook.
9    #[endpoint(
10        method = GET,
11        path = "/scout/v2/integrations/slack-oauth/init-webhook",
12        name = "generateSlackWebhookLink",
13        produces = conjure_http::server::StdResponseSerializer
14    )]
15    fn generate_slack_webhook_link(
16        &self,
17        #[auth]
18        auth_: conjure_object::BearerToken,
19        #[query(
20            name = "workspace",
21            decoder = conjure_http::server::conjure::FromPlainOptionDecoder
22        )]
23        workspace: Option<conjure_object::ResourceIdentifier>,
24        #[query(
25            name = "isGovSlack",
26            decoder = conjure_http::server::conjure::FromPlainOptionDecoder,
27            log_as = "isGovSlack"
28        )]
29        is_gov_slack: Option<bool>,
30    ) -> Result<
31        super::super::super::super::super::objects::scout::integrations::api::GenerateSlackWebhookResponse,
32        conjure_http::private::Error,
33    >;
34    /// Creates a new Slack integration. Called internally after Slack authorization.
35    #[endpoint(
36        method = GET,
37        path = "/scout/v2/integrations/slack-oauth/redirect",
38        name = "createSlackWebhook"
39    )]
40    fn create_slack_webhook(
41        &self,
42        #[auth]
43        auth_: conjure_object::BearerToken,
44        #[query(
45            name = "code",
46            decoder = conjure_http::server::conjure::FromPlainDecoder
47        )]
48        code: String,
49        #[query(
50            name = "state",
51            decoder = conjure_http::server::conjure::FromPlainDecoder
52        )]
53        state: String,
54    ) -> Result<(), conjure_http::private::Error>;
55    /// Creates a new integration.
56    #[endpoint(
57        method = POST,
58        path = "/scout/v2/integrations",
59        name = "createIntegration",
60        produces = conjure_http::server::StdResponseSerializer
61    )]
62    fn create_integration(
63        &self,
64        #[auth]
65        auth_: conjure_object::BearerToken,
66        #[body(
67            deserializer = conjure_http::server::StdRequestDeserializer,
68            log_as = "createIntegrationRequest"
69        )]
70        create_integration_request: super::super::super::super::super::objects::scout::integrations::api::CreateIntegrationRequest,
71    ) -> Result<
72        super::super::super::super::super::objects::scout::integrations::api::Integration,
73        conjure_http::private::Error,
74    >;
75    /// Creates a new webhook integration with HMAC signing.
76    /// Returns the integration and the server-generated signing key.
77    /// The signing key is only returned once — store it securely.
78    #[endpoint(
79        method = POST,
80        path = "/scout/v2/integrations/internal/secure-webhook",
81        name = "createSecureWebhookIntegration",
82        produces = conjure_http::server::StdResponseSerializer
83    )]
84    fn create_secure_webhook_integration(
85        &self,
86        #[auth]
87        auth_: conjure_object::BearerToken,
88        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
89        request: super::super::super::super::super::objects::scout::integrations::api::CreateSecureWebhookIntegrationRequest,
90    ) -> Result<
91        super::super::super::super::super::objects::scout::integrations::api::CreateSecureWebhookIntegrationResponse,
92        conjure_http::private::Error,
93    >;
94    /// Sends a message to a secure webhook integration with HMAC-SHA256 signature.
95    /// Implements retry logic with exponential backoff based on merged delivery configuration.
96    /// Request configuration overrides take precedence over integration's stored configuration.
97    #[endpoint(
98        method = POST,
99        path = "/scout/v2/integrations/internal/secure-webhook/{integrationRid}",
100        name = "sendSecureWebhookMessage",
101        produces = conjure_http::server::StdResponseSerializer
102    )]
103    fn send_secure_webhook_message(
104        &self,
105        #[auth]
106        auth_: conjure_object::BearerToken,
107        #[path(
108            name = "integrationRid",
109            decoder = conjure_http::server::conjure::FromPlainDecoder,
110            log_as = "integrationRid",
111            safe
112        )]
113        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
114        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
115        request: super::super::super::super::super::objects::scout::integrations::api::SendSecureWebhookMessageRequest,
116    ) -> Result<
117        super::super::super::super::super::objects::scout::integrations::api::SendSecureWebhookMessageResponse,
118        conjure_http::private::Error,
119    >;
120    /// Deletes an integration by archiving.
121    #[endpoint(
122        method = DELETE,
123        path = "/scout/v2/integrations/{integrationRid}",
124        name = "deleteIntegration"
125    )]
126    fn delete_integration(
127        &self,
128        #[auth]
129        auth_: conjure_object::BearerToken,
130        #[path(
131            name = "integrationRid",
132            decoder = conjure_http::server::conjure::FromPlainDecoder,
133            log_as = "integrationRid",
134            safe
135        )]
136        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
137    ) -> Result<(), conjure_http::private::Error>;
138    /// Updates the metadata of an integration.
139    #[endpoint(
140        method = PUT,
141        path = "/scout/v2/integrations/{integrationRid}",
142        name = "updateIntegrationMetadata",
143        produces = conjure_http::server::StdResponseSerializer
144    )]
145    fn update_integration_metadata(
146        &self,
147        #[auth]
148        auth_: conjure_object::BearerToken,
149        #[path(
150            name = "integrationRid",
151            decoder = conjure_http::server::conjure::FromPlainDecoder,
152            log_as = "integrationRid",
153            safe
154        )]
155        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
156        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
157        request: super::super::super::super::super::objects::scout::integrations::api::UpdateIntegrationRequest,
158    ) -> Result<
159        super::super::super::super::super::objects::scout::integrations::api::Integration,
160        conjure_http::private::Error,
161    >;
162    /// Updates the integration details for an integration.
163    /// Intended to allow changing webhooks or rotating API keys.
164    #[endpoint(
165        method = PUT,
166        path = "/scout/v2/integrations/{integrationRid}/details",
167        name = "updateIntegrationDetails",
168        produces = conjure_http::server::StdResponseSerializer
169    )]
170    fn update_integration_details(
171        &self,
172        #[auth]
173        auth_: conjure_object::BearerToken,
174        #[path(
175            name = "integrationRid",
176            decoder = conjure_http::server::conjure::FromPlainDecoder,
177            log_as = "integrationRid",
178            safe
179        )]
180        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
181        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
182        request: super::super::super::super::super::objects::scout::integrations::api::UpdateIntegrationDetailsRequest,
183    ) -> Result<
184        super::super::super::super::super::objects::scout::integrations::api::Integration,
185        conjure_http::private::Error,
186    >;
187    /// Retrieves an integration with the specified integration RID.
188    #[endpoint(
189        method = GET,
190        path = "/scout/v2/integrations/{integrationRid}",
191        name = "getIntegration",
192        produces = conjure_http::server::StdResponseSerializer
193    )]
194    fn get_integration(
195        &self,
196        #[auth]
197        auth_: conjure_object::BearerToken,
198        #[path(
199            name = "integrationRid",
200            decoder = conjure_http::server::conjure::FromPlainDecoder,
201            log_as = "integrationRid",
202            safe
203        )]
204        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
205    ) -> Result<
206        super::super::super::super::super::objects::scout::integrations::api::Integration,
207        conjure_http::private::Error,
208    >;
209    /// Lists all integrations. Archived integrations are not included.
210    #[endpoint(
211        method = GET,
212        path = "/scout/v2/integrations/list",
213        name = "listIntegrations",
214        produces = conjure_http::server::conjure::CollectionResponseSerializer
215    )]
216    fn list_integrations(
217        &self,
218        #[auth]
219        auth_: conjure_object::BearerToken,
220        #[query(
221            name = "workspaces",
222            decoder = conjure_http::server::conjure::FromPlainSeqDecoder<_>
223        )]
224        workspaces: std::collections::BTreeSet<conjure_object::ResourceIdentifier>,
225    ) -> Result<
226        Vec<
227            super::super::super::super::super::objects::scout::integrations::api::Integration,
228        >,
229        conjure_http::private::Error,
230    >;
231    /// Sends a string message to the specified integration from a checklist execution.
232    #[endpoint(
233        method = POST,
234        path = "/scout/v2/integrations/send-message",
235        name = "sendMessage"
236    )]
237    fn send_message(
238        &self,
239        #[auth]
240        auth_: conjure_object::BearerToken,
241        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
242        request: super::super::super::super::super::objects::scout::integrations::api::SendMessageRequest,
243    ) -> Result<(), conjure_http::private::Error>;
244    /// Rotates the HMAC signing key for a webhook integration.
245    /// The old key is immediately invalidated and a new key is generated and returned.
246    /// This is the only way to retrieve the signing key after initial creation.
247    #[endpoint(
248        method = POST,
249        path = "/scout/v2/integrations/internal/{integrationRid}/rotate-signing-key",
250        name = "rotateSecureWebhookIntegrationSigningKey",
251        produces = conjure_http::server::StdResponseSerializer
252    )]
253    fn rotate_secure_webhook_integration_signing_key(
254        &self,
255        #[auth]
256        auth_: conjure_object::BearerToken,
257        #[path(
258            name = "integrationRid",
259            decoder = conjure_http::server::conjure::FromPlainDecoder,
260            log_as = "integrationRid",
261            safe
262        )]
263        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
264    ) -> Result<
265        super::super::super::super::super::objects::scout::integrations::api::RotateWebhookSigningKeyResponse,
266        conjure_http::private::Error,
267    >;
268}
269/// Service for managing integrations with external services.
270#[conjure_http::conjure_endpoints(
271    name = "IntegrationsService",
272    use_legacy_error_serialization
273)]
274pub trait AsyncIntegrationsService {
275    /// Generates link to request permissions for Slack bot to join workspaces and use a webhook.
276    #[endpoint(
277        method = GET,
278        path = "/scout/v2/integrations/slack-oauth/init-webhook",
279        name = "generateSlackWebhookLink",
280        produces = conjure_http::server::StdResponseSerializer
281    )]
282    async fn generate_slack_webhook_link(
283        &self,
284        #[auth]
285        auth_: conjure_object::BearerToken,
286        #[query(
287            name = "workspace",
288            decoder = conjure_http::server::conjure::FromPlainOptionDecoder
289        )]
290        workspace: Option<conjure_object::ResourceIdentifier>,
291        #[query(
292            name = "isGovSlack",
293            decoder = conjure_http::server::conjure::FromPlainOptionDecoder,
294            log_as = "isGovSlack"
295        )]
296        is_gov_slack: Option<bool>,
297    ) -> Result<
298        super::super::super::super::super::objects::scout::integrations::api::GenerateSlackWebhookResponse,
299        conjure_http::private::Error,
300    >;
301    /// Creates a new Slack integration. Called internally after Slack authorization.
302    #[endpoint(
303        method = GET,
304        path = "/scout/v2/integrations/slack-oauth/redirect",
305        name = "createSlackWebhook"
306    )]
307    async fn create_slack_webhook(
308        &self,
309        #[auth]
310        auth_: conjure_object::BearerToken,
311        #[query(
312            name = "code",
313            decoder = conjure_http::server::conjure::FromPlainDecoder
314        )]
315        code: String,
316        #[query(
317            name = "state",
318            decoder = conjure_http::server::conjure::FromPlainDecoder
319        )]
320        state: String,
321    ) -> Result<(), conjure_http::private::Error>;
322    /// Creates a new integration.
323    #[endpoint(
324        method = POST,
325        path = "/scout/v2/integrations",
326        name = "createIntegration",
327        produces = conjure_http::server::StdResponseSerializer
328    )]
329    async fn create_integration(
330        &self,
331        #[auth]
332        auth_: conjure_object::BearerToken,
333        #[body(
334            deserializer = conjure_http::server::StdRequestDeserializer,
335            log_as = "createIntegrationRequest"
336        )]
337        create_integration_request: super::super::super::super::super::objects::scout::integrations::api::CreateIntegrationRequest,
338    ) -> Result<
339        super::super::super::super::super::objects::scout::integrations::api::Integration,
340        conjure_http::private::Error,
341    >;
342    /// Creates a new webhook integration with HMAC signing.
343    /// Returns the integration and the server-generated signing key.
344    /// The signing key is only returned once — store it securely.
345    #[endpoint(
346        method = POST,
347        path = "/scout/v2/integrations/internal/secure-webhook",
348        name = "createSecureWebhookIntegration",
349        produces = conjure_http::server::StdResponseSerializer
350    )]
351    async fn create_secure_webhook_integration(
352        &self,
353        #[auth]
354        auth_: conjure_object::BearerToken,
355        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
356        request: super::super::super::super::super::objects::scout::integrations::api::CreateSecureWebhookIntegrationRequest,
357    ) -> Result<
358        super::super::super::super::super::objects::scout::integrations::api::CreateSecureWebhookIntegrationResponse,
359        conjure_http::private::Error,
360    >;
361    /// Sends a message to a secure webhook integration with HMAC-SHA256 signature.
362    /// Implements retry logic with exponential backoff based on merged delivery configuration.
363    /// Request configuration overrides take precedence over integration's stored configuration.
364    #[endpoint(
365        method = POST,
366        path = "/scout/v2/integrations/internal/secure-webhook/{integrationRid}",
367        name = "sendSecureWebhookMessage",
368        produces = conjure_http::server::StdResponseSerializer
369    )]
370    async fn send_secure_webhook_message(
371        &self,
372        #[auth]
373        auth_: conjure_object::BearerToken,
374        #[path(
375            name = "integrationRid",
376            decoder = conjure_http::server::conjure::FromPlainDecoder,
377            log_as = "integrationRid",
378            safe
379        )]
380        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
381        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
382        request: super::super::super::super::super::objects::scout::integrations::api::SendSecureWebhookMessageRequest,
383    ) -> Result<
384        super::super::super::super::super::objects::scout::integrations::api::SendSecureWebhookMessageResponse,
385        conjure_http::private::Error,
386    >;
387    /// Deletes an integration by archiving.
388    #[endpoint(
389        method = DELETE,
390        path = "/scout/v2/integrations/{integrationRid}",
391        name = "deleteIntegration"
392    )]
393    async fn delete_integration(
394        &self,
395        #[auth]
396        auth_: conjure_object::BearerToken,
397        #[path(
398            name = "integrationRid",
399            decoder = conjure_http::server::conjure::FromPlainDecoder,
400            log_as = "integrationRid",
401            safe
402        )]
403        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
404    ) -> Result<(), conjure_http::private::Error>;
405    /// Updates the metadata of an integration.
406    #[endpoint(
407        method = PUT,
408        path = "/scout/v2/integrations/{integrationRid}",
409        name = "updateIntegrationMetadata",
410        produces = conjure_http::server::StdResponseSerializer
411    )]
412    async fn update_integration_metadata(
413        &self,
414        #[auth]
415        auth_: conjure_object::BearerToken,
416        #[path(
417            name = "integrationRid",
418            decoder = conjure_http::server::conjure::FromPlainDecoder,
419            log_as = "integrationRid",
420            safe
421        )]
422        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
423        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
424        request: super::super::super::super::super::objects::scout::integrations::api::UpdateIntegrationRequest,
425    ) -> Result<
426        super::super::super::super::super::objects::scout::integrations::api::Integration,
427        conjure_http::private::Error,
428    >;
429    /// Updates the integration details for an integration.
430    /// Intended to allow changing webhooks or rotating API keys.
431    #[endpoint(
432        method = PUT,
433        path = "/scout/v2/integrations/{integrationRid}/details",
434        name = "updateIntegrationDetails",
435        produces = conjure_http::server::StdResponseSerializer
436    )]
437    async fn update_integration_details(
438        &self,
439        #[auth]
440        auth_: conjure_object::BearerToken,
441        #[path(
442            name = "integrationRid",
443            decoder = conjure_http::server::conjure::FromPlainDecoder,
444            log_as = "integrationRid",
445            safe
446        )]
447        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
448        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
449        request: super::super::super::super::super::objects::scout::integrations::api::UpdateIntegrationDetailsRequest,
450    ) -> Result<
451        super::super::super::super::super::objects::scout::integrations::api::Integration,
452        conjure_http::private::Error,
453    >;
454    /// Retrieves an integration with the specified integration RID.
455    #[endpoint(
456        method = GET,
457        path = "/scout/v2/integrations/{integrationRid}",
458        name = "getIntegration",
459        produces = conjure_http::server::StdResponseSerializer
460    )]
461    async fn get_integration(
462        &self,
463        #[auth]
464        auth_: conjure_object::BearerToken,
465        #[path(
466            name = "integrationRid",
467            decoder = conjure_http::server::conjure::FromPlainDecoder,
468            log_as = "integrationRid",
469            safe
470        )]
471        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
472    ) -> Result<
473        super::super::super::super::super::objects::scout::integrations::api::Integration,
474        conjure_http::private::Error,
475    >;
476    /// Lists all integrations. Archived integrations are not included.
477    #[endpoint(
478        method = GET,
479        path = "/scout/v2/integrations/list",
480        name = "listIntegrations",
481        produces = conjure_http::server::conjure::CollectionResponseSerializer
482    )]
483    async fn list_integrations(
484        &self,
485        #[auth]
486        auth_: conjure_object::BearerToken,
487        #[query(
488            name = "workspaces",
489            decoder = conjure_http::server::conjure::FromPlainSeqDecoder<_>
490        )]
491        workspaces: std::collections::BTreeSet<conjure_object::ResourceIdentifier>,
492    ) -> Result<
493        Vec<
494            super::super::super::super::super::objects::scout::integrations::api::Integration,
495        >,
496        conjure_http::private::Error,
497    >;
498    /// Sends a string message to the specified integration from a checklist execution.
499    #[endpoint(
500        method = POST,
501        path = "/scout/v2/integrations/send-message",
502        name = "sendMessage"
503    )]
504    async fn send_message(
505        &self,
506        #[auth]
507        auth_: conjure_object::BearerToken,
508        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
509        request: super::super::super::super::super::objects::scout::integrations::api::SendMessageRequest,
510    ) -> Result<(), conjure_http::private::Error>;
511    /// Rotates the HMAC signing key for a webhook integration.
512    /// The old key is immediately invalidated and a new key is generated and returned.
513    /// This is the only way to retrieve the signing key after initial creation.
514    #[endpoint(
515        method = POST,
516        path = "/scout/v2/integrations/internal/{integrationRid}/rotate-signing-key",
517        name = "rotateSecureWebhookIntegrationSigningKey",
518        produces = conjure_http::server::StdResponseSerializer
519    )]
520    async fn rotate_secure_webhook_integration_signing_key(
521        &self,
522        #[auth]
523        auth_: conjure_object::BearerToken,
524        #[path(
525            name = "integrationRid",
526            decoder = conjure_http::server::conjure::FromPlainDecoder,
527            log_as = "integrationRid",
528            safe
529        )]
530        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
531    ) -> Result<
532        super::super::super::super::super::objects::scout::integrations::api::RotateWebhookSigningKeyResponse,
533        conjure_http::private::Error,
534    >;
535}
536/// Service for managing integrations with external services.
537#[conjure_http::conjure_endpoints(
538    name = "IntegrationsService",
539    use_legacy_error_serialization,
540    local
541)]
542pub trait LocalAsyncIntegrationsService {
543    /// Generates link to request permissions for Slack bot to join workspaces and use a webhook.
544    #[endpoint(
545        method = GET,
546        path = "/scout/v2/integrations/slack-oauth/init-webhook",
547        name = "generateSlackWebhookLink",
548        produces = conjure_http::server::StdResponseSerializer
549    )]
550    async fn generate_slack_webhook_link(
551        &self,
552        #[auth]
553        auth_: conjure_object::BearerToken,
554        #[query(
555            name = "workspace",
556            decoder = conjure_http::server::conjure::FromPlainOptionDecoder
557        )]
558        workspace: Option<conjure_object::ResourceIdentifier>,
559        #[query(
560            name = "isGovSlack",
561            decoder = conjure_http::server::conjure::FromPlainOptionDecoder,
562            log_as = "isGovSlack"
563        )]
564        is_gov_slack: Option<bool>,
565    ) -> Result<
566        super::super::super::super::super::objects::scout::integrations::api::GenerateSlackWebhookResponse,
567        conjure_http::private::Error,
568    >;
569    /// Creates a new Slack integration. Called internally after Slack authorization.
570    #[endpoint(
571        method = GET,
572        path = "/scout/v2/integrations/slack-oauth/redirect",
573        name = "createSlackWebhook"
574    )]
575    async fn create_slack_webhook(
576        &self,
577        #[auth]
578        auth_: conjure_object::BearerToken,
579        #[query(
580            name = "code",
581            decoder = conjure_http::server::conjure::FromPlainDecoder
582        )]
583        code: String,
584        #[query(
585            name = "state",
586            decoder = conjure_http::server::conjure::FromPlainDecoder
587        )]
588        state: String,
589    ) -> Result<(), conjure_http::private::Error>;
590    /// Creates a new integration.
591    #[endpoint(
592        method = POST,
593        path = "/scout/v2/integrations",
594        name = "createIntegration",
595        produces = conjure_http::server::StdResponseSerializer
596    )]
597    async fn create_integration(
598        &self,
599        #[auth]
600        auth_: conjure_object::BearerToken,
601        #[body(
602            deserializer = conjure_http::server::StdRequestDeserializer,
603            log_as = "createIntegrationRequest"
604        )]
605        create_integration_request: super::super::super::super::super::objects::scout::integrations::api::CreateIntegrationRequest,
606    ) -> Result<
607        super::super::super::super::super::objects::scout::integrations::api::Integration,
608        conjure_http::private::Error,
609    >;
610    /// Creates a new webhook integration with HMAC signing.
611    /// Returns the integration and the server-generated signing key.
612    /// The signing key is only returned once — store it securely.
613    #[endpoint(
614        method = POST,
615        path = "/scout/v2/integrations/internal/secure-webhook",
616        name = "createSecureWebhookIntegration",
617        produces = conjure_http::server::StdResponseSerializer
618    )]
619    async fn create_secure_webhook_integration(
620        &self,
621        #[auth]
622        auth_: conjure_object::BearerToken,
623        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
624        request: super::super::super::super::super::objects::scout::integrations::api::CreateSecureWebhookIntegrationRequest,
625    ) -> Result<
626        super::super::super::super::super::objects::scout::integrations::api::CreateSecureWebhookIntegrationResponse,
627        conjure_http::private::Error,
628    >;
629    /// Sends a message to a secure webhook integration with HMAC-SHA256 signature.
630    /// Implements retry logic with exponential backoff based on merged delivery configuration.
631    /// Request configuration overrides take precedence over integration's stored configuration.
632    #[endpoint(
633        method = POST,
634        path = "/scout/v2/integrations/internal/secure-webhook/{integrationRid}",
635        name = "sendSecureWebhookMessage",
636        produces = conjure_http::server::StdResponseSerializer
637    )]
638    async fn send_secure_webhook_message(
639        &self,
640        #[auth]
641        auth_: conjure_object::BearerToken,
642        #[path(
643            name = "integrationRid",
644            decoder = conjure_http::server::conjure::FromPlainDecoder,
645            log_as = "integrationRid",
646            safe
647        )]
648        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
649        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
650        request: super::super::super::super::super::objects::scout::integrations::api::SendSecureWebhookMessageRequest,
651    ) -> Result<
652        super::super::super::super::super::objects::scout::integrations::api::SendSecureWebhookMessageResponse,
653        conjure_http::private::Error,
654    >;
655    /// Deletes an integration by archiving.
656    #[endpoint(
657        method = DELETE,
658        path = "/scout/v2/integrations/{integrationRid}",
659        name = "deleteIntegration"
660    )]
661    async fn delete_integration(
662        &self,
663        #[auth]
664        auth_: conjure_object::BearerToken,
665        #[path(
666            name = "integrationRid",
667            decoder = conjure_http::server::conjure::FromPlainDecoder,
668            log_as = "integrationRid",
669            safe
670        )]
671        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
672    ) -> Result<(), conjure_http::private::Error>;
673    /// Updates the metadata of an integration.
674    #[endpoint(
675        method = PUT,
676        path = "/scout/v2/integrations/{integrationRid}",
677        name = "updateIntegrationMetadata",
678        produces = conjure_http::server::StdResponseSerializer
679    )]
680    async fn update_integration_metadata(
681        &self,
682        #[auth]
683        auth_: conjure_object::BearerToken,
684        #[path(
685            name = "integrationRid",
686            decoder = conjure_http::server::conjure::FromPlainDecoder,
687            log_as = "integrationRid",
688            safe
689        )]
690        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
691        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
692        request: super::super::super::super::super::objects::scout::integrations::api::UpdateIntegrationRequest,
693    ) -> Result<
694        super::super::super::super::super::objects::scout::integrations::api::Integration,
695        conjure_http::private::Error,
696    >;
697    /// Updates the integration details for an integration.
698    /// Intended to allow changing webhooks or rotating API keys.
699    #[endpoint(
700        method = PUT,
701        path = "/scout/v2/integrations/{integrationRid}/details",
702        name = "updateIntegrationDetails",
703        produces = conjure_http::server::StdResponseSerializer
704    )]
705    async fn update_integration_details(
706        &self,
707        #[auth]
708        auth_: conjure_object::BearerToken,
709        #[path(
710            name = "integrationRid",
711            decoder = conjure_http::server::conjure::FromPlainDecoder,
712            log_as = "integrationRid",
713            safe
714        )]
715        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
716        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
717        request: super::super::super::super::super::objects::scout::integrations::api::UpdateIntegrationDetailsRequest,
718    ) -> Result<
719        super::super::super::super::super::objects::scout::integrations::api::Integration,
720        conjure_http::private::Error,
721    >;
722    /// Retrieves an integration with the specified integration RID.
723    #[endpoint(
724        method = GET,
725        path = "/scout/v2/integrations/{integrationRid}",
726        name = "getIntegration",
727        produces = conjure_http::server::StdResponseSerializer
728    )]
729    async fn get_integration(
730        &self,
731        #[auth]
732        auth_: conjure_object::BearerToken,
733        #[path(
734            name = "integrationRid",
735            decoder = conjure_http::server::conjure::FromPlainDecoder,
736            log_as = "integrationRid",
737            safe
738        )]
739        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
740    ) -> Result<
741        super::super::super::super::super::objects::scout::integrations::api::Integration,
742        conjure_http::private::Error,
743    >;
744    /// Lists all integrations. Archived integrations are not included.
745    #[endpoint(
746        method = GET,
747        path = "/scout/v2/integrations/list",
748        name = "listIntegrations",
749        produces = conjure_http::server::conjure::CollectionResponseSerializer
750    )]
751    async fn list_integrations(
752        &self,
753        #[auth]
754        auth_: conjure_object::BearerToken,
755        #[query(
756            name = "workspaces",
757            decoder = conjure_http::server::conjure::FromPlainSeqDecoder<_>
758        )]
759        workspaces: std::collections::BTreeSet<conjure_object::ResourceIdentifier>,
760    ) -> Result<
761        Vec<
762            super::super::super::super::super::objects::scout::integrations::api::Integration,
763        >,
764        conjure_http::private::Error,
765    >;
766    /// Sends a string message to the specified integration from a checklist execution.
767    #[endpoint(
768        method = POST,
769        path = "/scout/v2/integrations/send-message",
770        name = "sendMessage"
771    )]
772    async fn send_message(
773        &self,
774        #[auth]
775        auth_: conjure_object::BearerToken,
776        #[body(deserializer = conjure_http::server::StdRequestDeserializer)]
777        request: super::super::super::super::super::objects::scout::integrations::api::SendMessageRequest,
778    ) -> Result<(), conjure_http::private::Error>;
779    /// Rotates the HMAC signing key for a webhook integration.
780    /// The old key is immediately invalidated and a new key is generated and returned.
781    /// This is the only way to retrieve the signing key after initial creation.
782    #[endpoint(
783        method = POST,
784        path = "/scout/v2/integrations/internal/{integrationRid}/rotate-signing-key",
785        name = "rotateSecureWebhookIntegrationSigningKey",
786        produces = conjure_http::server::StdResponseSerializer
787    )]
788    async fn rotate_secure_webhook_integration_signing_key(
789        &self,
790        #[auth]
791        auth_: conjure_object::BearerToken,
792        #[path(
793            name = "integrationRid",
794            decoder = conjure_http::server::conjure::FromPlainDecoder,
795            log_as = "integrationRid",
796            safe
797        )]
798        integration_rid: super::super::super::super::super::objects::scout::integrations::api::IntegrationRid,
799    ) -> Result<
800        super::super::super::super::super::objects::scout::integrations::api::RotateWebhookSigningKeyResponse,
801        conjure_http::private::Error,
802    >;
803}