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