aws-sdk-networkfirewall 1.68.0 → 1.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,7 +23,7 @@ Aws::Plugins::GlobalConfiguration.add_identifier(:networkfirewall)
23
23
  # structure.
24
24
  #
25
25
  # network_firewall = Aws::NetworkFirewall::Client.new
26
- # resp = network_firewall.associate_firewall_policy(params)
26
+ # resp = network_firewall.accept_network_firewall_transit_gateway_attachment(params)
27
27
  #
28
28
  # See {Client} for more information.
29
29
  #
@@ -54,7 +54,7 @@ module Aws::NetworkFirewall
54
54
  autoload :EndpointProvider, 'aws-sdk-networkfirewall/endpoint_provider'
55
55
  autoload :Endpoints, 'aws-sdk-networkfirewall/endpoints'
56
56
 
57
- GEM_VERSION = '1.68.0'
57
+ GEM_VERSION = '1.69.0'
58
58
 
59
59
  end
60
60
 
data/sig/client.rbs CHANGED
@@ -78,6 +78,37 @@ module Aws
78
78
  | (?Hash[Symbol, untyped]) -> instance
79
79
 
80
80
 
81
+ interface _AcceptNetworkFirewallTransitGatewayAttachmentResponseSuccess
82
+ include ::Seahorse::Client::_ResponseSuccess[Types::AcceptNetworkFirewallTransitGatewayAttachmentResponse]
83
+ def transit_gateway_attachment_id: () -> ::String
84
+ def transit_gateway_attachment_status: () -> ("CREATING" | "DELETING" | "DELETED" | "FAILED" | "ERROR" | "READY" | "PENDING_ACCEPTANCE" | "REJECTING" | "REJECTED")
85
+ end
86
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NetworkFirewall/Client.html#accept_network_firewall_transit_gateway_attachment-instance_method
87
+ def accept_network_firewall_transit_gateway_attachment: (
88
+ transit_gateway_attachment_id: ::String
89
+ ) -> _AcceptNetworkFirewallTransitGatewayAttachmentResponseSuccess
90
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _AcceptNetworkFirewallTransitGatewayAttachmentResponseSuccess
91
+
92
+ interface _AssociateAvailabilityZonesResponseSuccess
93
+ include ::Seahorse::Client::_ResponseSuccess[Types::AssociateAvailabilityZonesResponse]
94
+ def firewall_arn: () -> ::String
95
+ def firewall_name: () -> ::String
96
+ def availability_zone_mappings: () -> ::Array[Types::AvailabilityZoneMapping]
97
+ def update_token: () -> ::String
98
+ end
99
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NetworkFirewall/Client.html#associate_availability_zones-instance_method
100
+ def associate_availability_zones: (
101
+ ?update_token: ::String,
102
+ ?firewall_arn: ::String,
103
+ ?firewall_name: ::String,
104
+ availability_zone_mappings: Array[
105
+ {
106
+ availability_zone: ::String
107
+ },
108
+ ]
109
+ ) -> _AssociateAvailabilityZonesResponseSuccess
110
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _AssociateAvailabilityZonesResponseSuccess
111
+
81
112
  interface _AssociateFirewallPolicyResponseSuccess
82
113
  include ::Seahorse::Client::_ResponseSuccess[Types::AssociateFirewallPolicyResponse]
83
114
  def firewall_arn: () -> ::String
@@ -145,7 +176,14 @@ module Aws
145
176
  key_id: ::String?,
146
177
  type: ("CUSTOMER_KMS" | "AWS_OWNED_KMS_KEY")
147
178
  },
148
- ?enabled_analysis_types: Array[("TLS_SNI" | "HTTP_HOST")]
179
+ ?enabled_analysis_types: Array[("TLS_SNI" | "HTTP_HOST")],
180
+ ?transit_gateway_id: ::String,
181
+ ?availability_zone_mappings: Array[
182
+ {
183
+ availability_zone: ::String
184
+ },
185
+ ],
186
+ ?availability_zone_change_protection: bool
149
187
  ) -> _CreateFirewallResponseSuccess
150
188
  | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _CreateFirewallResponseSuccess
151
189
 
@@ -252,7 +290,7 @@ module Aws
252
290
  {
253
291
  action: ("PASS" | "DROP" | "ALERT" | "REJECT"),
254
292
  header: {
255
- protocol: ("IP" | "TCP" | "UDP" | "ICMP" | "HTTP" | "FTP" | "TLS" | "SMB" | "DNS" | "DCERPC" | "SSH" | "SMTP" | "IMAP" | "MSN" | "KRB5" | "IKEV2" | "TFTP" | "NTP" | "DHCP"),
293
+ protocol: ("IP" | "TCP" | "UDP" | "ICMP" | "HTTP" | "FTP" | "TLS" | "SMB" | "DNS" | "DCERPC" | "SSH" | "SMTP" | "IMAP" | "MSN" | "KRB5" | "IKEV2" | "TFTP" | "NTP" | "DHCP" | "HTTP2" | "QUIC"),
256
294
  source: ::String,
257
295
  source_port: ::String,
258
296
  direction: ("FORWARD" | "ANY"),
@@ -461,6 +499,17 @@ module Aws
461
499
  ) -> _DeleteFirewallPolicyResponseSuccess
462
500
  | (?Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteFirewallPolicyResponseSuccess
463
501
 
502
+ interface _DeleteNetworkFirewallTransitGatewayAttachmentResponseSuccess
503
+ include ::Seahorse::Client::_ResponseSuccess[Types::DeleteNetworkFirewallTransitGatewayAttachmentResponse]
504
+ def transit_gateway_attachment_id: () -> ::String
505
+ def transit_gateway_attachment_status: () -> ("CREATING" | "DELETING" | "DELETED" | "FAILED" | "ERROR" | "READY" | "PENDING_ACCEPTANCE" | "REJECTING" | "REJECTED")
506
+ end
507
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NetworkFirewall/Client.html#delete_network_firewall_transit_gateway_attachment-instance_method
508
+ def delete_network_firewall_transit_gateway_attachment: (
509
+ transit_gateway_attachment_id: ::String
510
+ ) -> _DeleteNetworkFirewallTransitGatewayAttachmentResponseSuccess
511
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DeleteNetworkFirewallTransitGatewayAttachmentResponseSuccess
512
+
464
513
  interface _DeleteResourcePolicyResponseSuccess
465
514
  include ::Seahorse::Client::_ResponseSuccess[Types::DeleteResourcePolicyResponse]
466
515
  end
@@ -524,6 +573,7 @@ module Aws
524
573
  def description: () -> ::String
525
574
  def status: () -> ("PROVISIONING" | "DELETING" | "READY")
526
575
  def supported_availability_zones: () -> ::Hash[::String, Types::AvailabilityZoneMetadata]
576
+ def transit_gateway_attachment_id: () -> ::String
527
577
  end
528
578
  # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NetworkFirewall/Client.html#describe_firewall_metadata-instance_method
529
579
  def describe_firewall_metadata: (
@@ -647,6 +697,26 @@ module Aws
647
697
  ) -> _DescribeVpcEndpointAssociationResponseSuccess
648
698
  | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DescribeVpcEndpointAssociationResponseSuccess
649
699
 
700
+ interface _DisassociateAvailabilityZonesResponseSuccess
701
+ include ::Seahorse::Client::_ResponseSuccess[Types::DisassociateAvailabilityZonesResponse]
702
+ def firewall_arn: () -> ::String
703
+ def firewall_name: () -> ::String
704
+ def availability_zone_mappings: () -> ::Array[Types::AvailabilityZoneMapping]
705
+ def update_token: () -> ::String
706
+ end
707
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NetworkFirewall/Client.html#disassociate_availability_zones-instance_method
708
+ def disassociate_availability_zones: (
709
+ ?update_token: ::String,
710
+ ?firewall_arn: ::String,
711
+ ?firewall_name: ::String,
712
+ availability_zone_mappings: Array[
713
+ {
714
+ availability_zone: ::String
715
+ },
716
+ ]
717
+ ) -> _DisassociateAvailabilityZonesResponseSuccess
718
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _DisassociateAvailabilityZonesResponseSuccess
719
+
650
720
  interface _DisassociateSubnetsResponseSuccess
651
721
  include ::Seahorse::Client::_ResponseSuccess[Types::DisassociateSubnetsResponse]
652
722
  def firewall_arn: () -> ::String
@@ -827,6 +897,17 @@ module Aws
827
897
  ) -> _PutResourcePolicyResponseSuccess
828
898
  | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _PutResourcePolicyResponseSuccess
829
899
 
900
+ interface _RejectNetworkFirewallTransitGatewayAttachmentResponseSuccess
901
+ include ::Seahorse::Client::_ResponseSuccess[Types::RejectNetworkFirewallTransitGatewayAttachmentResponse]
902
+ def transit_gateway_attachment_id: () -> ::String
903
+ def transit_gateway_attachment_status: () -> ("CREATING" | "DELETING" | "DELETED" | "FAILED" | "ERROR" | "READY" | "PENDING_ACCEPTANCE" | "REJECTING" | "REJECTED")
904
+ end
905
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NetworkFirewall/Client.html#reject_network_firewall_transit_gateway_attachment-instance_method
906
+ def reject_network_firewall_transit_gateway_attachment: (
907
+ transit_gateway_attachment_id: ::String
908
+ ) -> _RejectNetworkFirewallTransitGatewayAttachmentResponseSuccess
909
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _RejectNetworkFirewallTransitGatewayAttachmentResponseSuccess
910
+
830
911
  interface _StartAnalysisReportResponseSuccess
831
912
  include ::Seahorse::Client::_ResponseSuccess[Types::StartAnalysisReportResponse]
832
913
  def analysis_report_id: () -> ::String
@@ -922,6 +1003,22 @@ module Aws
922
1003
  ) -> _UntagResourceResponseSuccess
923
1004
  | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _UntagResourceResponseSuccess
924
1005
 
1006
+ interface _UpdateAvailabilityZoneChangeProtectionResponseSuccess
1007
+ include ::Seahorse::Client::_ResponseSuccess[Types::UpdateAvailabilityZoneChangeProtectionResponse]
1008
+ def update_token: () -> ::String
1009
+ def firewall_arn: () -> ::String
1010
+ def firewall_name: () -> ::String
1011
+ def availability_zone_change_protection: () -> bool
1012
+ end
1013
+ # https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/NetworkFirewall/Client.html#update_availability_zone_change_protection-instance_method
1014
+ def update_availability_zone_change_protection: (
1015
+ ?update_token: ::String,
1016
+ ?firewall_arn: ::String,
1017
+ ?firewall_name: ::String,
1018
+ availability_zone_change_protection: bool
1019
+ ) -> _UpdateAvailabilityZoneChangeProtectionResponseSuccess
1020
+ | (Hash[Symbol, untyped] params, ?Hash[Symbol, untyped] options) -> _UpdateAvailabilityZoneChangeProtectionResponseSuccess
1021
+
925
1022
  interface _UpdateFirewallAnalysisSettingsResponseSuccess
926
1023
  include ::Seahorse::Client::_ResponseSuccess[Types::UpdateFirewallAnalysisSettingsResponse]
927
1024
  def enabled_analysis_types: () -> ::Array[("TLS_SNI" | "HTTP_HOST")]
@@ -1130,7 +1227,7 @@ module Aws
1130
1227
  {
1131
1228
  action: ("PASS" | "DROP" | "ALERT" | "REJECT"),
1132
1229
  header: {
1133
- protocol: ("IP" | "TCP" | "UDP" | "ICMP" | "HTTP" | "FTP" | "TLS" | "SMB" | "DNS" | "DCERPC" | "SSH" | "SMTP" | "IMAP" | "MSN" | "KRB5" | "IKEV2" | "TFTP" | "NTP" | "DHCP"),
1230
+ protocol: ("IP" | "TCP" | "UDP" | "ICMP" | "HTTP" | "FTP" | "TLS" | "SMB" | "DNS" | "DCERPC" | "SSH" | "SMTP" | "IMAP" | "MSN" | "KRB5" | "IKEV2" | "TFTP" | "NTP" | "DHCP" | "HTTP2" | "QUIC"),
1134
1231
  source: ::String,
1135
1232
  source_port: ::String,
1136
1233
  direction: ("FORWARD" | "ANY"),
data/sig/types.rbs CHANGED
@@ -13,6 +13,17 @@ module Aws::NetworkFirewall
13
13
  SENSITIVE: []
14
14
  end
15
15
 
16
+ class AcceptNetworkFirewallTransitGatewayAttachmentRequest
17
+ attr_accessor transit_gateway_attachment_id: ::String
18
+ SENSITIVE: []
19
+ end
20
+
21
+ class AcceptNetworkFirewallTransitGatewayAttachmentResponse
22
+ attr_accessor transit_gateway_attachment_id: ::String
23
+ attr_accessor transit_gateway_attachment_status: ("CREATING" | "DELETING" | "DELETED" | "FAILED" | "ERROR" | "READY" | "PENDING_ACCEPTANCE" | "REJECTING" | "REJECTED")
24
+ SENSITIVE: []
25
+ end
26
+
16
27
  class ActionDefinition
17
28
  attr_accessor publish_metric_action: Types::PublishMetricAction
18
29
  SENSITIVE: []
@@ -48,6 +59,22 @@ module Aws::NetworkFirewall
48
59
  SENSITIVE: []
49
60
  end
50
61
 
62
+ class AssociateAvailabilityZonesRequest
63
+ attr_accessor update_token: ::String
64
+ attr_accessor firewall_arn: ::String
65
+ attr_accessor firewall_name: ::String
66
+ attr_accessor availability_zone_mappings: ::Array[Types::AvailabilityZoneMapping]
67
+ SENSITIVE: []
68
+ end
69
+
70
+ class AssociateAvailabilityZonesResponse
71
+ attr_accessor firewall_arn: ::String
72
+ attr_accessor firewall_name: ::String
73
+ attr_accessor availability_zone_mappings: ::Array[Types::AvailabilityZoneMapping]
74
+ attr_accessor update_token: ::String
75
+ SENSITIVE: []
76
+ end
77
+
51
78
  class AssociateFirewallPolicyRequest
52
79
  attr_accessor update_token: ::String
53
80
  attr_accessor firewall_arn: ::String
@@ -88,6 +115,11 @@ module Aws::NetworkFirewall
88
115
  SENSITIVE: []
89
116
  end
90
117
 
118
+ class AvailabilityZoneMapping
119
+ attr_accessor availability_zone: ::String
120
+ SENSITIVE: []
121
+ end
122
+
91
123
  class AvailabilityZoneMetadata
92
124
  attr_accessor ip_address_type: ("DUALSTACK" | "IPV4" | "IPV6")
93
125
  SENSITIVE: []
@@ -139,6 +171,9 @@ module Aws::NetworkFirewall
139
171
  attr_accessor tags: ::Array[Types::Tag]
140
172
  attr_accessor encryption_configuration: Types::EncryptionConfiguration
141
173
  attr_accessor enabled_analysis_types: ::Array[("TLS_SNI" | "HTTP_HOST")]
174
+ attr_accessor transit_gateway_id: ::String
175
+ attr_accessor availability_zone_mappings: ::Array[Types::AvailabilityZoneMapping]
176
+ attr_accessor availability_zone_change_protection: bool
142
177
  SENSITIVE: []
143
178
  end
144
179
 
@@ -228,6 +263,17 @@ module Aws::NetworkFirewall
228
263
  SENSITIVE: []
229
264
  end
230
265
 
266
+ class DeleteNetworkFirewallTransitGatewayAttachmentRequest
267
+ attr_accessor transit_gateway_attachment_id: ::String
268
+ SENSITIVE: []
269
+ end
270
+
271
+ class DeleteNetworkFirewallTransitGatewayAttachmentResponse
272
+ attr_accessor transit_gateway_attachment_id: ::String
273
+ attr_accessor transit_gateway_attachment_status: ("CREATING" | "DELETING" | "DELETED" | "FAILED" | "ERROR" | "READY" | "PENDING_ACCEPTANCE" | "REJECTING" | "REJECTED")
274
+ SENSITIVE: []
275
+ end
276
+
231
277
  class DeleteResourcePolicyRequest
232
278
  attr_accessor resource_arn: ::String
233
279
  SENSITIVE: []
@@ -281,6 +327,7 @@ module Aws::NetworkFirewall
281
327
  attr_accessor description: ::String
282
328
  attr_accessor status: ("PROVISIONING" | "DELETING" | "READY")
283
329
  attr_accessor supported_availability_zones: ::Hash[::String, Types::AvailabilityZoneMetadata]
330
+ attr_accessor transit_gateway_attachment_id: ::String
284
331
  SENSITIVE: []
285
332
  end
286
333
 
@@ -418,6 +465,22 @@ module Aws::NetworkFirewall
418
465
  SENSITIVE: []
419
466
  end
420
467
 
468
+ class DisassociateAvailabilityZonesRequest
469
+ attr_accessor update_token: ::String
470
+ attr_accessor firewall_arn: ::String
471
+ attr_accessor firewall_name: ::String
472
+ attr_accessor availability_zone_mappings: ::Array[Types::AvailabilityZoneMapping]
473
+ SENSITIVE: []
474
+ end
475
+
476
+ class DisassociateAvailabilityZonesResponse
477
+ attr_accessor firewall_arn: ::String
478
+ attr_accessor firewall_name: ::String
479
+ attr_accessor availability_zone_mappings: ::Array[Types::AvailabilityZoneMapping]
480
+ attr_accessor update_token: ::String
481
+ SENSITIVE: []
482
+ end
483
+
421
484
  class DisassociateSubnetsRequest
422
485
  attr_accessor update_token: ::String
423
486
  attr_accessor firewall_arn: ::String
@@ -455,12 +518,17 @@ module Aws::NetworkFirewall
455
518
  attr_accessor encryption_configuration: Types::EncryptionConfiguration
456
519
  attr_accessor number_of_associations: ::Integer
457
520
  attr_accessor enabled_analysis_types: ::Array[("TLS_SNI" | "HTTP_HOST")]
521
+ attr_accessor transit_gateway_id: ::String
522
+ attr_accessor transit_gateway_owner_account_id: ::String
523
+ attr_accessor availability_zone_mappings: ::Array[Types::AvailabilityZoneMapping]
524
+ attr_accessor availability_zone_change_protection: bool
458
525
  SENSITIVE: []
459
526
  end
460
527
 
461
528
  class FirewallMetadata
462
529
  attr_accessor firewall_name: ::String
463
530
  attr_accessor firewall_arn: ::String
531
+ attr_accessor transit_gateway_attachment_id: ::String
464
532
  SENSITIVE: []
465
533
  end
466
534
 
@@ -503,6 +571,7 @@ module Aws::NetworkFirewall
503
571
  attr_accessor configuration_sync_state_summary: ("PENDING" | "IN_SYNC" | "CAPACITY_CONSTRAINED")
504
572
  attr_accessor sync_states: ::Hash[::String, Types::SyncState]
505
573
  attr_accessor capacity_usage_summary: Types::CapacityUsageSummary
574
+ attr_accessor transit_gateway_attachment_sync_state: Types::TransitGatewayAttachmentSyncState
506
575
  SENSITIVE: []
507
576
  end
508
577
 
@@ -567,7 +636,7 @@ module Aws::NetworkFirewall
567
636
  end
568
637
 
569
638
  class Header
570
- attr_accessor protocol: ("IP" | "TCP" | "UDP" | "ICMP" | "HTTP" | "FTP" | "TLS" | "SMB" | "DNS" | "DCERPC" | "SSH" | "SMTP" | "IMAP" | "MSN" | "KRB5" | "IKEV2" | "TFTP" | "NTP" | "DHCP")
639
+ attr_accessor protocol: ("IP" | "TCP" | "UDP" | "ICMP" | "HTTP" | "FTP" | "TLS" | "SMB" | "DNS" | "DCERPC" | "SSH" | "SMTP" | "IMAP" | "MSN" | "KRB5" | "IKEV2" | "TFTP" | "NTP" | "DHCP" | "HTTP2" | "QUIC")
571
640
  attr_accessor source: ::String
572
641
  attr_accessor source_port: ::String
573
642
  attr_accessor direction: ("FORWARD" | "ANY")
@@ -833,6 +902,17 @@ module Aws::NetworkFirewall
833
902
  SENSITIVE: []
834
903
  end
835
904
 
905
+ class RejectNetworkFirewallTransitGatewayAttachmentRequest
906
+ attr_accessor transit_gateway_attachment_id: ::String
907
+ SENSITIVE: []
908
+ end
909
+
910
+ class RejectNetworkFirewallTransitGatewayAttachmentResponse
911
+ attr_accessor transit_gateway_attachment_id: ::String
912
+ attr_accessor transit_gateway_attachment_status: ("CREATING" | "DELETING" | "DELETED" | "FAILED" | "ERROR" | "READY" | "PENDING_ACCEPTANCE" | "REJECTING" | "REJECTED")
913
+ SENSITIVE: []
914
+ end
915
+
836
916
  class ResourceNotFoundException
837
917
  attr_accessor message: ::String
838
918
  SENSITIVE: []
@@ -1104,6 +1184,13 @@ module Aws::NetworkFirewall
1104
1184
  SENSITIVE: []
1105
1185
  end
1106
1186
 
1187
+ class TransitGatewayAttachmentSyncState
1188
+ attr_accessor attachment_id: ::String
1189
+ attr_accessor transit_gateway_attachment_status: ("CREATING" | "DELETING" | "DELETED" | "FAILED" | "ERROR" | "READY" | "PENDING_ACCEPTANCE" | "REJECTING" | "REJECTED")
1190
+ attr_accessor status_message: ::String
1191
+ SENSITIVE: []
1192
+ end
1193
+
1107
1194
  class UniqueSources
1108
1195
  attr_accessor count: ::Integer
1109
1196
  SENSITIVE: []
@@ -1123,6 +1210,22 @@ module Aws::NetworkFirewall
1123
1210
  class UntagResourceResponse < Aws::EmptyStructure
1124
1211
  end
1125
1212
 
1213
+ class UpdateAvailabilityZoneChangeProtectionRequest
1214
+ attr_accessor update_token: ::String
1215
+ attr_accessor firewall_arn: ::String
1216
+ attr_accessor firewall_name: ::String
1217
+ attr_accessor availability_zone_change_protection: bool
1218
+ SENSITIVE: []
1219
+ end
1220
+
1221
+ class UpdateAvailabilityZoneChangeProtectionResponse
1222
+ attr_accessor update_token: ::String
1223
+ attr_accessor firewall_arn: ::String
1224
+ attr_accessor firewall_name: ::String
1225
+ attr_accessor availability_zone_change_protection: bool
1226
+ SENSITIVE: []
1227
+ end
1228
+
1126
1229
  class UpdateFirewallAnalysisSettingsRequest
1127
1230
  attr_accessor enabled_analysis_types: ::Array[("TLS_SNI" | "HTTP_HOST")]
1128
1231
  attr_accessor firewall_arn: ::String
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-networkfirewall
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.68.0
4
+ version: 1.69.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services