1{
2    "$id": "http://redfish.dmtf.org/schemas/v1/OutboundConnection.v1_0_2.json",
3    "$ref": "#/definitions/OutboundConnection",
4    "$schema": "http://redfish.dmtf.org/schemas/v1/redfish-schema-v1.json",
5    "copyright": "Copyright 2014-2024 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright",
6    "definitions": {
7        "Actions": {
8            "additionalProperties": false,
9            "description": "The available actions for this resource.",
10            "longDescription": "This type shall contain the available actions for this resource.",
11            "patternProperties": {
12                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
13                    "description": "This property shall specify a valid odata or Redfish property.",
14                    "type": [
15                        "array",
16                        "boolean",
17                        "integer",
18                        "number",
19                        "null",
20                        "object",
21                        "string"
22                    ]
23                }
24            },
25            "properties": {
26                "Oem": {
27                    "$ref": "#/definitions/OemActions",
28                    "description": "The available OEM-specific actions for this resource.",
29                    "longDescription": "This property shall contain the available OEM-specific actions for this resource."
30                }
31            },
32            "type": "object"
33        },
34        "AuthenticationType": {
35            "enum": [
36                "MTLS",
37                "JWT",
38                "None",
39                "OEM"
40            ],
41            "enumDescriptions": {
42                "JWT": "JSON Web Token.",
43                "MTLS": "Mutual TLS.",
44                "None": "No authentication.",
45                "OEM": "OEM-specific."
46            },
47            "enumLongDescriptions": {
48                "JWT": "This value shall indicate an RFC7519-defined JSON Web Token (JWT) is specified in one of the HTTP headers in the `PreUpgradeHTTPHeaders` property.  This is typically encoded in the `Authorization` header with the scheme `Bearer`.",
49                "MTLS": "This value shall indicate the service will exchange and verify certificates during TLS handshaking when establishing the outbound connecting.",
50                "None": "This value shall indicate the service does not provide any authentication information to the remote client.",
51                "OEM": "This value shall indicate an OEM-specific authentication mechanism."
52            },
53            "type": "string"
54        },
55        "HTTPHeaderProperty": {
56            "additionalProperties": false,
57            "description": "The HTTP header value is the property value.  The header name is the property name.",
58            "longDescription": "This type shall contain the HTTP header name and value to add to the Redfish responses over the WebSocket.",
59            "patternProperties": {
60                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
61                    "description": "This property shall specify a valid odata or Redfish property.",
62                    "type": [
63                        "array",
64                        "boolean",
65                        "integer",
66                        "number",
67                        "null",
68                        "object",
69                        "string"
70                    ]
71                },
72                "^[^:\\\\s]+$": {
73                    "type": "string"
74                }
75            },
76            "properties": {},
77            "type": "object"
78        },
79        "Links": {
80            "additionalProperties": false,
81            "description": "The links to other resources that are related to this resource.",
82            "longDescription": "This Redfish Specification-described type shall contain links to resources that are related to but are not contained by, or subordinate to, this resource.",
83            "patternProperties": {
84                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
85                    "description": "This property shall specify a valid odata or Redfish property.",
86                    "type": [
87                        "array",
88                        "boolean",
89                        "integer",
90                        "number",
91                        "null",
92                        "object",
93                        "string"
94                    ]
95                }
96            },
97            "properties": {
98                "Oem": {
99                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
100                    "description": "The OEM extension property.",
101                    "longDescription": "This property shall contain the OEM extensions.  All values for properties contained in this object shall conform to the Redfish Specification-described requirements."
102                },
103                "Session": {
104                    "anyOf": [
105                        {
106                            "$ref": "http://redfish.dmtf.org/schemas/v1/Session.json#/definitions/Session"
107                        },
108                        {
109                            "type": "null"
110                        }
111                    ],
112                    "description": "The link to the session for this outbound connection.",
113                    "longDescription": "This property shall contain the link to a resource of type `Session` that represents the active connection for this outbound connection.",
114                    "readonly": true
115                }
116            },
117            "type": "object"
118        },
119        "OemActions": {
120            "additionalProperties": true,
121            "description": "The available OEM-specific actions for this resource.",
122            "longDescription": "This type shall contain the available OEM-specific actions for this resource.",
123            "patternProperties": {
124                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
125                    "description": "This property shall specify a valid odata or Redfish property.",
126                    "type": [
127                        "array",
128                        "boolean",
129                        "integer",
130                        "number",
131                        "null",
132                        "object",
133                        "string"
134                    ]
135                }
136            },
137            "properties": {},
138            "type": "object"
139        },
140        "OutboundConnection": {
141            "additionalProperties": false,
142            "description": "The `OutboundConnection` schema defines how the Redfish service connects to a remote client over a WebSocket connection.  This allows a service behind a firewall to establish a connection to a remote client outside of the firewall.",
143            "longDescription": "This resource shall represent the connection configuration necessary to connect to a remote client.  Services shall initiate the outbound connection over a WebSocket defined in the 'Outbound connections' clause of the Redfish Specification.",
144            "patternProperties": {
145                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
146                    "description": "This property shall specify a valid odata or Redfish property.",
147                    "type": [
148                        "array",
149                        "boolean",
150                        "integer",
151                        "number",
152                        "null",
153                        "object",
154                        "string"
155                    ]
156                }
157            },
158            "properties": {
159                "@odata.context": {
160                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/context"
161                },
162                "@odata.etag": {
163                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/etag"
164                },
165                "@odata.id": {
166                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/id"
167                },
168                "@odata.type": {
169                    "$ref": "http://redfish.dmtf.org/schemas/v1/odata-v4.json#/definitions/type"
170                },
171                "Actions": {
172                    "$ref": "#/definitions/Actions",
173                    "description": "The available actions for this resource.",
174                    "longDescription": "This property shall contain the available actions for this resource."
175                },
176                "Authentication": {
177                    "anyOf": [
178                        {
179                            "$ref": "#/definitions/AuthenticationType"
180                        },
181                        {
182                            "type": "null"
183                        }
184                    ],
185                    "description": "The authentication mechanism for the WebSocket connection.",
186                    "longDescription": "This property shall contain the authentication mechanism for the WebSocket connection.",
187                    "readonly": true
188                },
189                "Certificates": {
190                    "$ref": "http://redfish.dmtf.org/schemas/v1/CertificateCollection.json#/definitions/CertificateCollection",
191                    "description": "The link to a collection of server certificates for the remote client referenced by the `EndpointURI` property.",
192                    "longDescription": "This property shall contain a link to a resource collection of type `CertificateCollection` that represents the server certificates for the remote client referenced by the `EndpointURI` property.  If the `Authentication` property contains `MTLS`, the service shall compare the certificates in this collection with the certificate obtained during handshaking with the WebSocket service to verify the identity of the remote client prior to completing the connection.  If the remote client cannot be verified, the service shall not complete the connection.  Regardless of the contents of this collection, services may perform additional verification based on other factors, such as the configuration of the `SecurityPolicy` resource.",
193                    "readonly": true
194                },
195                "ClientCertificates": {
196                    "$ref": "http://redfish.dmtf.org/schemas/v1/CertificateCollection.json#/definitions/CertificateCollection",
197                    "description": "The link to a collection of client identity certificates provided to the remote client referenced by the `EndpointURI` property.",
198                    "longDescription": "This property shall contain a link to a resource collection of type `CertificateCollection` that represents the client identity certificates for the service.  If the `Authentication` property contains `MTLS`, these certificates are provided to the remote client referenced by the `EndpointURI` property as part of TLS handshaking.",
199                    "readonly": true
200                },
201                "ConnectionEnabled": {
202                    "description": "Indicates if the outbound connection is enabled.",
203                    "longDescription": "This property shall indicate if the outbound connection is enabled.  If `true`, the service shall attempt to establish an outbound connection to the remote client specified by the `EndpointURI` property.  If `false`, the service shall not attempt to establish a connection to the remote client and shall close the connection if one is already established.  When a connection is established, the service shall create a Session resource to represent the active connection.  When a connection is closed, the service shall delete the connection's respective Session resource.  If the client does not provide this property, the service shall default this value to `true`.",
204                    "readonly": false,
205                    "type": [
206                        "boolean",
207                        "null"
208                    ]
209                },
210                "Description": {
211                    "anyOf": [
212                        {
213                            "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Description"
214                        },
215                        {
216                            "type": "null"
217                        }
218                    ],
219                    "readonly": true
220                },
221                "EndpointURI": {
222                    "description": "The URI of the WebSocket connection to the remote client.",
223                    "format": "uri-reference",
224                    "longDescription": "This property shall contain the WebSocket URI to the external web service of the remote client.  The value shall follow the URI format defined in RFC6455.  Services shall reject URIs that do not contain the scheme `wss`.",
225                    "readonly": true,
226                    "type": "string"
227                },
228                "Id": {
229                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Id",
230                    "readonly": true
231                },
232                "Links": {
233                    "$ref": "#/definitions/Links",
234                    "description": "The links to other resources that are related to this resource.",
235                    "longDescription": "This property shall contain links to resources that are related to but are not contained by, or subordinate to, this resource."
236                },
237                "Name": {
238                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Name",
239                    "readonly": true
240                },
241                "Oem": {
242                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Oem",
243                    "description": "The OEM extension property.",
244                    "longDescription": "This property shall contain the OEM extensions.  All values for properties that this object contains shall conform to the Redfish Specification-described requirements."
245                },
246                "PreUpgradeHTTPHeaders": {
247                    "$ref": "#/definitions/HTTPHeaderProperty",
248                    "description": "The HTTP headers to send to the remote client during the initial connection prior to the WebSocket upgrade.  This property is an empty object in responses.",
249                    "longDescription": "This property shall contain an object consisting of the names and values of HTTP headers to send to the remote client during the initial connection prior to the WebSocket upgrade.  This property shall be an empty object in responses."
250                },
251                "RetryPolicy": {
252                    "$ref": "#/definitions/RetryPolicyType",
253                    "description": "The retry policy for this outbound connection.",
254                    "longDescription": "This property shall contain the retry policy for this outbound connection.  If not specified by the client in the create request, the service shall assume ConnectionRetryPolicy contains `None`."
255                },
256                "Roles": {
257                    "description": "The Redfish roles that contain the privileges of the remote client for the outbound connection.",
258                    "items": {
259                        "type": [
260                            "string",
261                            "null"
262                        ]
263                    },
264                    "longDescription": "This property shall contain the Redfish roles that contain the privileges of the remote client for the outbound connection.",
265                    "readonly": true,
266                    "type": "array"
267                },
268                "Status": {
269                    "$ref": "http://redfish.dmtf.org/schemas/v1/Resource.json#/definitions/Status",
270                    "description": "The status and health of the resource and its subordinate or dependent resources.",
271                    "longDescription": "This property shall contain any status or health properties of the resource."
272                },
273                "WebSocketPingIntervalMinutes": {
274                    "description": "Interval for sending the WebSocket ping opcode in minutes.  The value `0` indicates the ping opcode is not sent.",
275                    "longDescription": "This property shall contain the interval for the service to send the WebSocket ping opcode to the remote client in minutes.  If `0`, the service shall not send the WebSocket ping opcode to the remote client.",
276                    "maximum": 65535,
277                    "minimum": 0,
278                    "readonly": false,
279                    "type": [
280                        "integer",
281                        "null"
282                    ]
283                }
284            },
285            "required": [
286                "@odata.id",
287                "@odata.type",
288                "Id",
289                "Name"
290            ],
291            "requiredOnCreate": [
292                "Authentication",
293                "EndpointURI",
294                "Roles",
295                "WebSocketPingIntervalMinutes"
296            ],
297            "type": "object"
298        },
299        "OutboundConnectionRetryPolicyType": {
300            "enum": [
301                "None",
302                "RetryForever",
303                "RetryCount"
304            ],
305            "enumDescriptions": {
306                "None": "No retries.",
307                "RetryCount": "Retry until a maximum count is reached.",
308                "RetryForever": "Retry forever."
309            },
310            "enumLongDescriptions": {
311                "None": "This value shall indicate the service will not attempt to re-establish the outbound connection if the connection is dropped or not established.  If the connection is dropped or not established, the service shall set the `ConnectionEnabled` property to `false`.",
312                "RetryCount": "This value shall indicate the service will attempt to re-establish the outbound connection at the interval specified by the `RetryIntervalMinutes` property until the number of retries reaches the count specified by the `RetryCount` property.  If the limit is reached, the service shall set the `ConnectionEnabled` property to `false`.  If a connection is established, the service shall reset the count.",
313                "RetryForever": "This value shall indicate the service will attempt to re-establish the outbound connection at the interval specified by the `RetryIntervalMinutes` property regardless of the number of retries."
314            },
315            "type": "string"
316        },
317        "RetryPolicyType": {
318            "additionalProperties": false,
319            "description": "The retry policy for an outbound connection.",
320            "longDescription": "This type shall contain the retry policy for an outbound connection.",
321            "patternProperties": {
322                "^([a-zA-Z_][a-zA-Z0-9_]*)?@(odata|Redfish|Message)\\.[a-zA-Z_][a-zA-Z0-9_]*$": {
323                    "description": "This property shall specify a valid odata or Redfish property.",
324                    "type": [
325                        "array",
326                        "boolean",
327                        "integer",
328                        "number",
329                        "null",
330                        "object",
331                        "string"
332                    ]
333                }
334            },
335            "properties": {
336                "ConnectionRetryPolicy": {
337                    "anyOf": [
338                        {
339                            "$ref": "#/definitions/OutboundConnectionRetryPolicyType"
340                        },
341                        {
342                            "type": "null"
343                        }
344                    ],
345                    "description": "The type of retry policy for this outbound connection.",
346                    "longDescription": "This property shall contain the type of retry policy for this outbound connection.",
347                    "readonly": true
348                },
349                "RetryCount": {
350                    "description": "The number of retries to attempt if the retry policy specifies a maximum number of retries.",
351                    "longDescription": "This property shall contain the number of retries to attempt if the retry policy specifies a maximum number of retries.",
352                    "readonly": false,
353                    "type": [
354                        "integer",
355                        "null"
356                    ]
357                },
358                "RetryIntervalMinutes": {
359                    "description": "The retry interval in minutes.",
360                    "longDescription": "This property shall contain the interval for the service to retry connecting to remote client in minutes.",
361                    "readonly": false,
362                    "type": [
363                        "integer",
364                        "null"
365                    ]
366                }
367            },
368            "type": "object"
369        }
370    },
371    "language": "en",
372    "owningEntity": "DMTF",
373    "release": "2023.2",
374    "title": "#OutboundConnection.v1_0_2.OutboundConnection"
375}