Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Long-Running Actions #368

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
2 changes: 1 addition & 1 deletion vocabularies/Common.json
Original file line number Diff line number Diff line change
Expand Up @@ -1350,7 +1350,7 @@
"$AppliesTo": ["EntityContainer"],
"@Common.Experimental": true,
"@Core.Description": "Channel for WebSocket connections",
"@Core.LongDescription": "Messages sent over the channel follow the [ABAP Push Channel Protocol](https://community.sap.com/t5/application-development-blog-posts/specification-of-the-push-channel-protocol-pcp/ba-p/13137541).\nTo consume a channel, the client opens a web socket connection at the [`WebSocketBaseURL`](#WebSocketBaseURL)\nfollowed by URL parameters\n- parameter name = annotation qualifier, parameter value = channel ID (see below)\n- parameter name = `relatedService`, parameter value = base URL (relative to server root) of the OData service of the app\n\n<dl>Supported qualifiers and channel IDs:\n<dt>`sideEffects` <dd>Notifications about side effects to be triggered by the client (channel ID = non-null annotation value)\n</dl>"
"@Core.LongDescription": "Messages sent over the channel follow the [ABAP Push Channel Protocol](https://community.sap.com/t5/application-development-blog-posts/specification-of-the-push-channel-protocol-pcp/ba-p/13137541).\nTo consume a channel, the client opens a web socket connection at the [`WebSocketBaseURL`](#WebSocketBaseURL)\nfollowed by URL parameters\n- parameter name = annotation qualifier, parameter value = channel ID (see below)\n- parameter name = `relatedService`, parameter value = base URL (relative to server root) of the OData service of the app\n\n<dl>Supported qualifiers and channel IDs:\n<dt>`sideEffects` <dd>Notifications about side effects to be triggered by the client (channel ID = non-null annotation value)\n<dt>`progressIndicator` <dd>Progress notifications for operations tagged with [`UI.IsOperationReportingProgress`](UI.md#IsOperationReportingProgress) (channel ID = non-null annotation value)\n</dl>"
},
"AddressViaNavigationPath": {
"$Kind": "Term",
Expand Down
4 changes: 2 additions & 2 deletions vocabularies/Common.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@ Term|Type|Description
[mediaUploadLink](Common.xml#L1482) *([Experimental](Common.md#Experimental))*|URL|<a name="mediaUploadLink"></a>URL for uploading new media content to a Document Management Service<br>In contrast to the `@odata.mediaEditLink` this URL allows to upload new media content without directly changing a stream property or media resource. The upload request typically uses HTTP POST with `Content-Type: multipart/form-data` following RFC 7578. The upload request must contain one multipart representing the content of the file. The `name` parameter in the `Content-Disposition` header (as described in RFC 7578) is irrelevant, but the `filename` parameter is expected. If the request succeeds the response will contain a JSON body of `Content-Type: application/json` with a JSON property `readLink`. The newly uploaded media resource can be linked to the stream property by changing the `@odata.mediaReadLink` to the value of this `readLink` in a subsequent PATCH request to the OData entity.
[PrimitivePropertyPath](Common.xml#L1497) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|<a name="PrimitivePropertyPath"></a>A term or term property with this tag whose type is (a collection of) `Edm.PropertyPath` MUST resolve to a primitive structural property
[WebSocketBaseURL](Common.xml#L1502) *([Experimental](Common.md#Experimental))*|URL|<a name="WebSocketBaseURL"></a>Base URL for WebSocket connections<br>This annotation MUST be unqualified.
[WebSocketChannel](Common.xml#L1510) *([Experimental](Common.md#Experimental))*|String?|<a name="WebSocketChannel"></a>Channel for WebSocket connections<br><p>Messages sent over the channel follow the <a href="https://community.sap.com/t5/application-development-blog-posts/specification-of-the-push-channel-protocol-pcp/ba-p/13137541">ABAP Push Channel Protocol</a>. To consume a channel, the client opens a web socket connection at the <a href="#WebSocketBaseURL"><code>WebSocketBaseURL</code></a> followed by URL parameters</p> <ul> <li>parameter name = annotation qualifier, parameter value = channel ID (see below)</li> <li>parameter name = <code>relatedService</code>, parameter value = base URL (relative to server root) of the OData service of the app</li> </ul> <dl>Supported qualifiers and channel IDs: <dt>`sideEffects` <dd>Notifications about side effects to be triggered by the client (channel ID = non-null annotation value) </dl>
[AddressViaNavigationPath](Common.xml#L1526) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|<a name="AddressViaNavigationPath"></a>Service prefers requests to use a resource path with navigation properties<br>Use this tag on services that do not restrict requests to certain resource paths via [`Capabilities`](https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Capabilities.V1.html) or [`Core.RequiresExplicitBinding`](https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.html#RequiresExplicitBinding) annotations, but that prefer requests on a resource path that contains the navigation properties reflecting the object composition.
[WebSocketChannel](Common.xml#L1510) *([Experimental](Common.md#Experimental))*|String?|<a name="WebSocketChannel"></a>Channel for WebSocket connections<br><p>Messages sent over the channel follow the <a href="https://community.sap.com/t5/application-development-blog-posts/specification-of-the-push-channel-protocol-pcp/ba-p/13137541">ABAP Push Channel Protocol</a>. To consume a channel, the client opens a web socket connection at the <a href="#WebSocketBaseURL"><code>WebSocketBaseURL</code></a> followed by URL parameters</p> <ul> <li>parameter name = annotation qualifier, parameter value = channel ID (see below)</li> <li>parameter name = <code>relatedService</code>, parameter value = base URL (relative to server root) of the OData service of the app</li> </ul> <dl>Supported qualifiers and channel IDs: <dt>`sideEffects` <dd>Notifications about side effects to be triggered by the client (channel ID = non-null annotation value) <dt>`progressIndicator` <dd>Progress notifications for operations tagged with [`UI.IsOperationReportingProgress`](UI.md#IsOperationReportingProgress) (channel ID = non-null annotation value) </dl>
[AddressViaNavigationPath](Common.xml#L1527) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|<a name="AddressViaNavigationPath"></a>Service prefers requests to use a resource path with navigation properties<br>Use this tag on services that do not restrict requests to certain resource paths via [`Capabilities`](https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Capabilities.V1.html) or [`Core.RequiresExplicitBinding`](https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.html#RequiresExplicitBinding) annotations, but that prefer requests on a resource path that contains the navigation properties reflecting the object composition.

<a name="TextFormatType"></a>
## [TextFormatType](Common.xml#L134)
Expand Down
1 change: 1 addition & 0 deletions vocabularies/Common.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1519,6 +1519,7 @@ followed by URL parameters

&lt;dl&gt;Supported qualifiers and channel IDs:
&lt;dt&gt;`sideEffects` &lt;dd&gt;Notifications about side effects to be triggered by the client (channel ID = non-null annotation value)
&lt;dt&gt;`progressIndicator` &lt;dd&gt;Progress notifications for operations tagged with [`UI.IsOperationReportingProgress`](UI.md#IsOperationReportingProgress) (channel ID = non-null annotation value)
&lt;/dl&gt;</String>
</Annotation>
</Term>
Expand Down
9 changes: 9 additions & 0 deletions vocabularies/UI.json
Original file line number Diff line number Diff line change
Expand Up @@ -1836,6 +1836,15 @@
"$UnderlyingType": "Edm.String",
"@Core.Description": "Name of an Action, Function, ActionImport, or FunctionImport in scope",
"@Core.LongDescription": "Possible values are\n\n- Namespace-qualified name of an action or function (`foo.bar`)\n- Namespace-qualified name of an action or function followed by parentheses with the parameter signature to identify a specific overload, like in an [annotation target](https://docs.oasis-open.org/odata/odata-csdl-xml/v4.01/odata-csdl-xml-v4.01.html#sec_Target) (`foo.bar(baz.qux)`)\n- Simple name of an action import or function import of the annotated service (`quux`)\n- Namespace-qualified name of an entity container, followed by a slash and the simple name of an action import or function import in any referenced schema (`foo.corge/quux`)"
},
"IsOperationReportingProgress": {
"$Kind": "Term",
"$Type": "Core.Tag",
"$DefaultValue": true,
"$AppliesTo": ["Action", "Function"],
"@Common.Experimental": true,
"@Core.Description": "Progress is reported during the execution of this operation",
"@Core.LongDescription": "Requires a [`Common.WebSocketChannel#progressIndicator`](Common.md#WebSocketChannel) annotation on the entity container."
}
}
}
1 change: 1 addition & 0 deletions vocabularies/UI.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ Term|Type|Description
[ExcludeFromNavigationContext](UI.xml#L1996)|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|<a name="ExcludeFromNavigationContext"></a>The contents of this property must not be propagated to the app-to-app navigation context
[DoNotCheckScaleOfMeasuredQuantity](UI.xml#L2000) *([Experimental](Common.md#Experimental))*|Boolean|<a name="DoNotCheckScaleOfMeasuredQuantity"></a>Do not check the number of fractional digits of the annotated measured quantity<br>The annotated property contains a measured quantity, and the user may enter more fractional digits than defined for the corresponding unit of measure.<br>This switches off the validation of user input with respect to decimals.
[LeadingEntitySet](UI.xml#L2010) *([Experimental](Common.md#Experimental))*|String|<a name="LeadingEntitySet"></a>The referenced entity set is the preferred starting point for UIs using this service
[IsOperationReportingProgress](UI.xml#L2027) *([Experimental](Common.md#Experimental))*|[Tag](https://github.com/oasis-tcs/odata-vocabularies/blob/main/vocabularies/Org.OData.Core.V1.md#Tag)|<a name="IsOperationReportingProgress"></a>Progress is reported during the execution of this operation<br>Requires a [`Common.WebSocketChannel#progressIndicator`](Common.md#WebSocketChannel) annotation on the entity container.

<a name="HeaderInfoType"></a>
## [HeaderInfoType](UI.xml#L68)
Expand Down
8 changes: 8 additions & 0 deletions vocabularies/UI.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2024,6 +2024,14 @@ This switches off the validation of user input with respect to decimals.</String
</Annotation>
</TypeDefinition>

<Term Name="IsOperationReportingProgress" Type="Core.Tag" Nullable="false" DefaultValue="true" AppliesTo="Action Function">
<Annotation Term="Common.Experimental" />
<Annotation Term="Core.Description" String="Progress is reported during the execution of this operation" />
<Annotation Term="Core.LongDescription">
<String>Requires a [`Common.WebSocketChannel#progressIndicator`](Common.md#WebSocketChannel) annotation on the entity container.</String>
</Annotation>
</Term>

</Schema>
</edmx:DataServices>
</edmx:Edmx>