Skip to main content

messaging_api/
targets.rs

1use crate::ManagementOperation;
2
3pub const PROVIDER_LIST_TARGET: &str = "/messaging/provider/list";
4pub const PROVIDER_ACCOUNT_LIST_TARGET: &str = "/messaging/provider-account/list";
5pub const PROVIDER_ACCOUNT_UPDATE_TARGET: &str = "/messaging/provider-account/update";
6pub const PROVIDER_ACCOUNT_DELETE_TARGET: &str = "/messaging/provider-account/delete";
7pub const PROVIDER_ACCOUNT_TEST_TARGET: &str = "/messaging/provider-account/test";
8pub const PROVIDER_ACCOUNT_STATUS_TARGET: &str = "/messaging/provider-account/status";
9pub const SHARED_ACCOUNT_GRANT_CREATE_TARGET: &str = "/messaging/shared-account-grant/create";
10pub const SHARED_ACCOUNT_GRANT_DELETE_TARGET: &str = "/messaging/shared-account-grant/delete";
11pub const SHARED_ACCOUNT_GRANT_LIST_TARGET: &str = "/messaging/shared-account-grant/list";
12pub const ROUTE_LIST_TARGET: &str = "/messaging/route/list";
13pub const ROUTE_UPDATE_TARGET: &str = "/messaging/route/update";
14pub const ROUTE_DELETE_TARGET: &str = "/messaging/route/delete";
15pub const SETUP_OPTIONS_TARGET: &str = "/messaging/setup/options";
16pub const SETUP_START_TARGET: &str = "/messaging/setup/start";
17pub const SETUP_STATUS_TARGET: &str = "/messaging/setup/status";
18pub const SURFACE_LIST_TARGET: &str = "/messaging/surface/list";
19pub const SURFACE_DISMISS_TARGET: &str = "/messaging/surface/dismiss";
20pub const SURFACE_BIND_CODE_CREATE_TARGET: &str = "/messaging/surface/bind-code/create";
21pub const ACTOR_LINK_CODE_CREATE_TARGET: &str = "/messaging/actor/link-code/create";
22pub const ACTOR_LINK_CLAIM_STATUS_TARGET: &str = "/messaging/actor/link-claim/status";
23pub const ACTOR_LINK_CLAIM_CONFIRM_TARGET: &str = "/messaging/actor/link-claim/confirm";
24pub const ACTOR_LINK_CLAIM_EVENT_TARGET: &str = "/messaging/actor/link-claim/event";
25pub const ACTOR_LINK_LIST_TARGET: &str = "/messaging/actor/link/list";
26pub const ACTOR_LINK_DELETE_TARGET: &str = "/messaging/actor/link/delete";
27
28pub const MANAGEMENT_TARGETS: &[&str] = &[
29    PROVIDER_LIST_TARGET,
30    PROVIDER_ACCOUNT_LIST_TARGET,
31    PROVIDER_ACCOUNT_UPDATE_TARGET,
32    PROVIDER_ACCOUNT_DELETE_TARGET,
33    PROVIDER_ACCOUNT_TEST_TARGET,
34    PROVIDER_ACCOUNT_STATUS_TARGET,
35    SHARED_ACCOUNT_GRANT_CREATE_TARGET,
36    SHARED_ACCOUNT_GRANT_DELETE_TARGET,
37    SHARED_ACCOUNT_GRANT_LIST_TARGET,
38    ROUTE_LIST_TARGET,
39    ROUTE_UPDATE_TARGET,
40    ROUTE_DELETE_TARGET,
41    SETUP_OPTIONS_TARGET,
42    SETUP_START_TARGET,
43    SETUP_STATUS_TARGET,
44    SURFACE_LIST_TARGET,
45    SURFACE_DISMISS_TARGET,
46    SURFACE_BIND_CODE_CREATE_TARGET,
47    ACTOR_LINK_CODE_CREATE_TARGET,
48    ACTOR_LINK_CLAIM_STATUS_TARGET,
49    ACTOR_LINK_CLAIM_CONFIRM_TARGET,
50    ACTOR_LINK_LIST_TARGET,
51    ACTOR_LINK_DELETE_TARGET,
52];
53
54pub const EVENT_TARGETS: &[&str] = &[ACTOR_LINK_CLAIM_EVENT_TARGET];
55
56pub fn is_management_target(target: &str) -> bool {
57    MANAGEMENT_TARGETS.contains(&target)
58}
59
60/// Returns the provider capability required by a provider-scoped management target.
61/// Provider discovery is intentionally not capability-gated because it selects no provider.
62pub fn required_management_operation(target: &str) -> Option<ManagementOperation> {
63    use ManagementOperation::*;
64    Some(match target {
65        PROVIDER_ACCOUNT_LIST_TARGET => ProviderAccountList,
66        PROVIDER_ACCOUNT_UPDATE_TARGET => ProviderAccountUpdate,
67        PROVIDER_ACCOUNT_DELETE_TARGET => ProviderAccountDelete,
68        PROVIDER_ACCOUNT_TEST_TARGET => ProviderAccountTest,
69        PROVIDER_ACCOUNT_STATUS_TARGET => ProviderAccountStatus,
70        SHARED_ACCOUNT_GRANT_CREATE_TARGET => SharedAccountGrantCreate,
71        SHARED_ACCOUNT_GRANT_DELETE_TARGET => SharedAccountGrantDelete,
72        SHARED_ACCOUNT_GRANT_LIST_TARGET => SharedAccountGrantList,
73        ROUTE_LIST_TARGET => RouteList,
74        ROUTE_UPDATE_TARGET => RouteUpdate,
75        ROUTE_DELETE_TARGET => RouteDelete,
76        SETUP_OPTIONS_TARGET => SetupOptions,
77        SETUP_START_TARGET => SetupStart,
78        SETUP_STATUS_TARGET => SetupStatus,
79        SURFACE_LIST_TARGET => SurfaceList,
80        SURFACE_DISMISS_TARGET => SurfaceDismiss,
81        SURFACE_BIND_CODE_CREATE_TARGET => SurfaceBindCodeCreate,
82        ACTOR_LINK_CODE_CREATE_TARGET => ActorLinkCodeCreate,
83        ACTOR_LINK_CLAIM_STATUS_TARGET => ActorLinkClaimStatus,
84        ACTOR_LINK_CLAIM_CONFIRM_TARGET => ActorLinkClaimConfirm,
85        ACTOR_LINK_LIST_TARGET => ActorLinkList,
86        ACTOR_LINK_DELETE_TARGET => ActorLinkDelete,
87        PROVIDER_LIST_TARGET | ACTOR_LINK_CLAIM_EVENT_TARGET => return None,
88        _ => return None,
89    })
90}