From 0fa019897cb79de1def349b8fd0b660d1951681a Mon Sep 17 00:00:00 2001 From: efiacor Date: Mon, 8 Apr 2019 14:52:08 +0000 Subject: Adding docs for CADI Change-Id: If3324973a2e41ca0d98804cb8e6520fc1beccfe9 Issue-ID: DMAAP-1016 Signed-off-by: efiacor --- docs/architecture.rst | 56 ++ docs/configuration.rst | 43 + docs/data-router/DataRouterUserGuide.rst | 25 - docs/data-router/administration.rst | 14 - docs/data-router/architecture.rst | 25 - docs/data-router/configuration.rst | 7 - docs/data-router/consumedapis.rst | 7 - docs/data-router/data-router.rst | 1176 -------------------------- docs/data-router/delivery.rst | 32 - docs/data-router/dr_arch.png | Bin 35750 -> 0 bytes docs/data-router/humaninterfaces.rst | 10 - docs/data-router/logging.rst | 33 - docs/data-router/release-notes.rst | 153 ---- docs/delivery.rst | 32 + docs/images/dr_arch_only.png | Bin 0 -> 17291 bytes docs/images/dr_bc_prov.png | Bin 0 -> 51556 bytes docs/images/dr_pub_flow.png | Bin 0 -> 72010 bytes docs/index.rst | 35 +- docs/installation.rst | 51 ++ docs/logging.rst | 31 + docs/offered-apis.rst | 1350 ++++++++++++++++++++++++++++++ docs/release-notes.rst | 158 ++++ 22 files changed, 1730 insertions(+), 1508 deletions(-) create mode 100644 docs/architecture.rst create mode 100644 docs/configuration.rst delete mode 100644 docs/data-router/DataRouterUserGuide.rst delete mode 100644 docs/data-router/administration.rst delete mode 100644 docs/data-router/architecture.rst delete mode 100644 docs/data-router/configuration.rst delete mode 100644 docs/data-router/consumedapis.rst delete mode 100755 docs/data-router/data-router.rst delete mode 100644 docs/data-router/delivery.rst delete mode 100644 docs/data-router/dr_arch.png delete mode 100644 docs/data-router/humaninterfaces.rst delete mode 100644 docs/data-router/logging.rst delete mode 100644 docs/data-router/release-notes.rst create mode 100644 docs/delivery.rst create mode 100644 docs/images/dr_arch_only.png create mode 100644 docs/images/dr_bc_prov.png create mode 100644 docs/images/dr_pub_flow.png create mode 100644 docs/installation.rst create mode 100644 docs/logging.rst create mode 100755 docs/offered-apis.rst create mode 100644 docs/release-notes.rst (limited to 'docs') diff --git a/docs/architecture.rst b/docs/architecture.rst new file mode 100644 index 00000000..6f29e5d4 --- /dev/null +++ b/docs/architecture.rst @@ -0,0 +1,56 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Architecture +============ + +Capabilities +------------ +The DMaaP Data Router (DR) provisioning API is an HTTPS-based, REST-like API for creating and managing +DR feeds and subscriptions, which provides a pub/sub architectural model for the transfer of data. + +The DR API also supports `AAF CADI authorization `_. + +To use this feature, the API client must provide a valid AAF AppID / MechID with each request. +To enable this feature, see the :ref:`configuration` section. + +.. note:: In future releases, AAF CADI auth will be enabled by default. + +Usage Scenarios +--------------- +Typically, DR pub clients request the provisioning of a new DR feed. +Once created, DR sub clients can then subscribe to the feed to receive all data published to that feed. + + .. image:: images/dr_pub_flow.png + + +The DR provisioning API is not meant to be used directly by DR end users (publishers and subscribers) +for feed / subscription CRUD (create, read, update, delete) operations. + +Instead, prospective publishers and subscribers should use the DMaaP Bus Controller API, which will call +the DR provisioning API to manage feeds and subscriptions. + + .. image:: images/dr_bc_prov.png + + +See DMaaP Bus Controller API docs for more information: + +`Bus Controller Feeds API `_ + +`Bus Controller Subs API `_ + + +High level Architecture +----------------------- +The following diagram shows the high-level relationship between the system components: + + .. image:: images/dr_arch_only.png + + +DMaaP DR architecture uses the Eclipse Jetty server as an application server to service it's front-end. + * dmaap-dr-prov services all provisioning requests. + * dmaap-dr-node services the publishing of data to feed subscribers. + +DMaaP DR uses MariaDB as it's storage component for the following: + * DR Provisioning data. (feeds, subscribers, etc.) + * Historical logging data related to feed activity. (Publish, Delivery, etc.) \ No newline at end of file diff --git a/docs/configuration.rst b/docs/configuration.rst new file mode 100644 index 00000000..f7fa4bcf --- /dev/null +++ b/docs/configuration.rst @@ -0,0 +1,43 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +.. _configuration: + +Configuration +============= + +Configuration properties for both Data Router Provisioning server and Data Router Node server should remain as default values. + +The only exception to this, is when enabling the AAF CADI framework to authorize the DR provisioning requests. + +.. note:: The AAF CADI filtering feature is disabled by default. When AAF CADI auth is enabled, all DR API calls must provide an AAF AppID to access the relevant API endpoint. + +To enable DR AAF CADI authorization, the following steps are required: + +DR CADI Prerequisites: + * AAF deployment + +Update the following properties at deployment time. + + +**DMaaP DR Prov AAF properties** + +:: + + # AAF config + org.onap.dmaap.datarouter.provserver.cadi.enabled = true + + # AAF URL to connect to AAF server + org.onap.dmaap.datarouter.provserver.cadi.aaf.url = https://:8095 + + +**DMaaP DR Node AAF properties** + +:: + + # AAF URL to connect to AAF server + AafUrl = https://:8095 + + # AAF CADI enabled flag + CadiEnabled = true + diff --git a/docs/data-router/DataRouterUserGuide.rst b/docs/data-router/DataRouterUserGuide.rst deleted file mode 100644 index 8f7b9ef1..00000000 --- a/docs/data-router/DataRouterUserGuide.rst +++ /dev/null @@ -1,25 +0,0 @@ -=========================== -Data Router (DR) User Guide -=========================== - -Standalone Mode ---------------- - -Installation -============ - -1. Find the datarouter project on the gerrit website: https://gerrit.onap.org/r/#/admin/projects/dmaap/datarouter - -2. Clone the repo onto your server using the clone command found on the datarouter page on gerrit. - -3. cd into the docker-compose directory and run docker-compose up. - -Configurations -============== - -Using the Data Router ---------------------- - -For information on how to use the Data Router refer to the Data Router API guide at: - - :ref:`data_router_api_guide` \ No newline at end of file diff --git a/docs/data-router/administration.rst b/docs/data-router/administration.rst deleted file mode 100644 index b050a1fe..00000000 --- a/docs/data-router/administration.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Administration -============== - - -Processes ---------- -NA - -Actions -------- -NA diff --git a/docs/data-router/architecture.rst b/docs/data-router/architecture.rst deleted file mode 100644 index b18f7bb3..00000000 --- a/docs/data-router/architecture.rst +++ /dev/null @@ -1,25 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Architecture -============ - - -Capabilities ------------- -Data Router is a RESTful web service used for the transfer of data across networks any larger than a Message Router message (> 1Mb). - -Usage Scenarios ---------------- - Data Router endpoints are used to create/view/delete Feeds, Subscribers and Published files. Clients can use the Data Router endpoints - to publish a file to a feed and subscribe to this feed to receive the file. - -Interactions ------------- -Data Router REST service uses the Data Router API to allow users to publish to and subscribe to a feed, in order to send and receive files. - - - - |image0| - - .. |image0| image:: dr_arch.png diff --git a/docs/data-router/configuration.rst b/docs/data-router/configuration.rst deleted file mode 100644 index 2a7096a1..00000000 --- a/docs/data-router/configuration.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Configuration -============= - -NA \ No newline at end of file diff --git a/docs/data-router/consumedapis.rst b/docs/data-router/consumedapis.rst deleted file mode 100644 index aa1a8bd1..00000000 --- a/docs/data-router/consumedapis.rst +++ /dev/null @@ -1,7 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Consumed APIs -============= - -Data Router does not consume any API diff --git a/docs/data-router/data-router.rst b/docs/data-router/data-router.rst deleted file mode 100755 index 66e13bf5..00000000 --- a/docs/data-router/data-router.rst +++ /dev/null @@ -1,1176 +0,0 @@ -.. _data_router_api_guide: - -========================== -Data Router (DR) API Guide -========================== -Introduction ------------- - -The DataRouter(DR) provisioning API is an HTTPS-based, REST-like API for creating and managing DR feeds -and subscriptions. The DMaaP Data Router System project is intended to provide a common framework by which -data producers can make data available to data consumers and a way for potential consumers to find feeds -with the data they require. - - -HTTP Service APIs ------------------ - -DMaaP Data Router utilizes an HTTP REST API to service all transactions. HTTP and REST standards are followed so -clients as varied as CURL, Java applications and even Web Browsers will work to interact with the Data Router. - -General HTTP Requirements -========================= - -A DMaaP Data Router transactions consists of 4 distinct segments, HTTP URL, HTTP Header, HTTP Body (POST/PUT) -and HTTP Response. The general considerations for each segment are as follows and are required for each -of the specific transactions described in this section. - -HTTP URL -======== - -http[s]://{serverBaseURL}/{resourcePath} - -* The serverBaseURL points to DMaaP Data Router host:port that will service the request. -* The resourcePath specifies the service that the client is attempting to reach. - - -HTTP Header -=========== - -Specifies HTTP Headers, such as Content-Type, that define the parameters of the HTTP Transaction - -HTTP Body -========= - -The HTTP Body contains the feed content when creating a feed. - -Create a Feed -------------- - -**Description**: Creates a unique feed URL to service the publisher/subscriber model. - -Sample Request -============== - -``curl -k -X POST -H "Content-Type:application/vnd.dmaap-dr.feed" -H "X-DMAAP-DR-ON-BEHALF-OF:{user}" --data-ascii @createFeed.json https://{host}:{port}`` - -Request Parameters: -=================== - -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| Name | Description | Param Type | Data Type | MaxLen | Required | Valid/Example Values | -+========================+=================================+==================+============+==============+=============+======================================+ -| name | Feed name | Body | String | <=20 | Y | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| version | Feed version | Body | String | <=20 | Y | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| description | Feed description | Body | String | <=256 | Y | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| business description | Business description | Body | String | <=256 | Y | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| Authorization | Information for authorizing | Body | Object | | Y | | -| | publishing requests | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| suspend | Set to true if the feed is in | Body | Boolean | | N | * true | -| | the suspended state | | | | | * false | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| group-id | | Body | Integer | | Y | | -| | | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| content-type | To specify type of message | Header | String | | Y | application/vnd.dmaap-dr.feed | -| | (feed,subscriber,publisher) | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| X-DMAAP-DR-ON-BEHALF-OF| User id of owner of feed | Header | String | <=8 | Y | username | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ - -Response/Error Codes -==================== - -+------------------------+-------------------------------------------+ -| Response statusCode | Response Description | -+========================+===========================================+ -| 201 | Successful query | -+------------------------+-------------------------------------------+ -| 400 | Bad request - The request is defective in | -| | some way. Possible causes: | -| | | -| | * JSON object in request body does not | -| | conform to the spec. | -| | * Invalid parameter value in query string | -+------------------------+-------------------------------------------+ -| 401 | Indicates that the request was missing the| -| | Authorization header or, if the header | -| | was presented, the credentials were not | -| | acceptable | -+------------------------+-------------------------------------------+ -| 403 | The request failed authorization. | -| | Possible causes: | -| | | -| | * Request originated from an unauthorized | -| | IP address | -| | * Client certificate subject is not on | -| | the API’s authorized list. | -| | * X-DMAAP-DR-ON-BEHALF-OF identity is not | -| | authorized to perform | -+------------------------+-------------------------------------------+ -| 404 | Not Found - The Request-URI does not point| -| | to a resource that is known to the API. | -+------------------------+-------------------------------------------+ -| 405 | Method Not Allowed - The HTTP method in | -| | the request is not supported for the | -| | resource addressed by the Request-URI. | -+------------------------+-------------------------------------------+ -| 415 | Unsupported Media Type - The media type in| -| | the requests Content-Type header is not | -| | appropriate for the request. | -+------------------------+-------------------------------------------+ -| 500 | Internal Server Error - The DR API server | -| | encountered an internal error and could | -| | not complete the request. | -+------------------------+-------------------------------------------+ -| 503 | Service Unavailable - The DR API service | -| | is currently unavailable | -+------------------------+-------------------------------------------+ -| -1 | Failed Delivery | -+------------------------+-------------------------------------------+ - -Sample Body -=========== -.. code-block:: json - - { - "name": "Jettydemo", - "version": "v1.0.0", - "description": "Jettydemo", - "business_description": "Jettydemo", - "suspend": false, - "changeowner": true, - "authorization": { - "classification": "unclassified", - "endpoint_addrs": ["172.18.0.3","192.167.3.42"], - "endpoint_ids": [ - { - "password": "password", - "id": "user" - } - ] - } - } - - -Updating a Feed ---------------- - -**Description**: Update a feed with new parameters. - -Sample Request -============== - -``curl -k -X PUT -H "Content-Type: application/vnd.dmaap-dr.feed" -H "X-DMAAP-DR-ON-BEHALF-OF: {user}" --data-ascii @updateFeed.json --location-trusted https://{host}:{port}/feed/{feedId}`` - -Request Parameters: -=================== - -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| Name | Description | Param Type | Data Type | MaxLen | Required | Valid/Example Values | -+========================+=================================+==================+============+==============+=============+======================================+ -| description | Feed description | Body | String | <=256 | Y | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| business description | Business description | Body | String | <=256 | Y | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| Authorization | Information for authorizing | Body | Object | | Y | | -| | publishing requests | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| suspend | Set to true if the feed is in | Body | Boolean | | N | * true | -| | the suspended state | | | | | * false | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| group-id | | Body | Integer | | Y | | -| | | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| content-type | To specify type of message | Header | String | | Y | application/vnd.dmaap-dr.feed | -| | (feed,subscriber,publisher) | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| X-DMAAP-DR-ON-BEHALF-OF| User id of owner of feed | Header | String | <=8 | Y | username | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ - -Response/Error Codes -==================== - -+------------------------+-------------------------------------------+ -| Response statusCode | Response Description | -+========================+===========================================+ -| 200 | Successful query | -+------------------------+-------------------------------------------+ -| 400 | Bad request - The request is defective in | -| | some way. Possible causes: | -| | | -| | * JSON object in request body does not | -| | conform to the spec. | -| | * Invalid parameter value in query string | -+------------------------+-------------------------------------------+ -| 401 | Indicates that the request was missing the| -| | Authorization header or, if the header | -| | was presented, the credentials were not | -| | acceptable | -+------------------------+-------------------------------------------+ -| 403 | The request failed authorization. | -| | Possible causes: | -| | | -| | * Request originated from an unauthorized | -| | IP address | -| | * Client certificate subject is not on | -| | the API’s authorized list. | -| | * X-DMAAP-DR-ON-BEHALF-OF identity is not | -| | authorized to perform | -+------------------------+-------------------------------------------+ -| 404 | Not Found - The Request-URI does not point| -| | to a resource that is known to the API. | -+------------------------+-------------------------------------------+ -| 405 | Method Not Allowed - The HTTP method in | -| | the request is not supported for the | -| | resource addressed by the Request-URI. | -+------------------------+-------------------------------------------+ -| 415 | Unsupported Media Type - The media type in| -| | the request’s Content-Type header is not | -| | appropriate for the request. | -+------------------------+-------------------------------------------+ -| 500 | Internal Server Error - The DR API server | -| | encountered an internal error and could | -| | not complete the request. | -+------------------------+-------------------------------------------+ -| 503 | Service Unavailable - The DR API service | -| | is currently unavailable | -+------------------------+-------------------------------------------+ -| -1 | Failed Delivery | -+------------------------+-------------------------------------------+ - -Sample Body -=========== -.. code-block:: json - - { - "name": "Jettydemo", - "version": "v1.0.0", - "description": "Updated decription", - "business_description": "Updated business description", - "suspend": false, - "changeowner": true, - "authorization": { - "classification": "unclassified", - "endpoint_addrs": ["172.18.0.3","192.167.3.42"], - "endpoint_ids": [ - { - "password": "password", - "id": "user" - } - ] - } - } - - -Get a Feed ----------- - -**Description**: Retrieves a representation of the specified feed. - -Request URL -=========== - -http[s]://{host}:{port}/feed/{feedId} - -* {feedId}: Id of the feed you want to see a representation of - -Sample Request -============== - -``curl -k -H "X-DMAAP-DR-ON-BEHALF-OF: {user}" https://{host}:{port}/feed/{feedId}`` - -Response/Error Codes -==================== - -+------------------------+-------------------------------------------+ -| Response statusCode | Response Description | -+========================+===========================================+ -| 200 | Successful query | -+------------------------+-------------------------------------------+ -| 401 | Indicates that the request was missing the| -| | Authorization header or, if the header | -| | was presented, the credentials were not | -| | acceptable | -+------------------------+-------------------------------------------+ -| 403 | The request failed authorization. | -| | Possible causes: | -| | | -| | * Request originated from an unauthorized | -| | IP address | -| | * Client certificate subject is not on | -| | the API’s authorized list. | -| | * X-DMAAP-DR-ON-BEHALF-OF identity is not | -| | authorized to perform | -+------------------------+-------------------------------------------+ -| 404 | Not Found - The Request-URI does not point| -| | to a resource that is known to the API. | -+------------------------+-------------------------------------------+ -| 405 | Method Not Allowed - The HTTP method in | -| | the request is not supported for the | -| | resource addressed by the Request-URI. | -+------------------------+-------------------------------------------+ -| 415 | Unsupported Media Type - The media type in| -| | the request’s Content-Type header is not | -| | appropriate for the request. | -+------------------------+-------------------------------------------+ -| 500 | Internal Server Error - The DR API server | -| | encountered an internal error and could | -| | not complete the request. | -+------------------------+-------------------------------------------+ -| 503 | Service Unavailable - The DR API service | -| | is currently unavailable | -+------------------------+-------------------------------------------+ -| -1 | Failed Delivery | -+------------------------+-------------------------------------------+ - -Delete a Feed -------------- - -**Description**: Deletes a specified feed - -Request URL -=========== - -http[s]://{host}:{port}/feed/{feedId} - -* {feedId}: Id of the feed you want to delete - -Sample Request -============== - -``curl -k -X DELETE -H "X-DMAAP-DR-ON-BEHALF-OF: {user}" https://{host}:{port}/feed/{feedId}`` - -Response/Error Codes -==================== - -+------------------------+-------------------------------------------+ -| Response statusCode | Response Description | -+========================+===========================================+ -| 204 | Successful query | -+------------------------+-------------------------------------------+ -| 401 | Indicates that the request was missing the| -| | Authorization header or, if the header | -| | was presented, the credentials were not | -| | acceptable | -+------------------------+-------------------------------------------+ -| 403 | The request failed authorization. | -| | Possible causes: | -| | | -| | * Request originated from an unauthorized | -| | IP address | -| | * Client certificate subject is not on | -| | the API’s authorized list. | -| | * X-DMAAP-DR-ON-BEHALF-OF identity is not | -| | authorized to perform | -+------------------------+-------------------------------------------+ -| 404 | Not Found - The Request-URI does not point| -| | to a resource that is known to the API. | -+------------------------+-------------------------------------------+ -| 405 | Method Not Allowed - The HTTP method in | -| | the request is not supported for the | -| | resource addressed by the Request-URI. | -+------------------------+-------------------------------------------+ -| 415 | Unsupported Media Type - The media type in| -| | the request’s Content-Type header is not | -| | appropriate for the request. | -+------------------------+-------------------------------------------+ -| 500 | Internal Server Error - The DR API server | -| | encountered an internal error and could | -| | not complete the request. | -+------------------------+-------------------------------------------+ -| 503 | Service Unavailable - The DR API service | -| | is currently unavailable | -+------------------------+-------------------------------------------+ -| -1 | Failed Delivery | -+------------------------+-------------------------------------------+ - - -Subscribe to Feed ------------------ - -**Description**: Subscribes to a created feed to receive files published to that feed. - -Request URL -=========== - -http[s]://{host}:{port}/subscribe/{feedId} - -* {feedId}: Id of the feed to subscribe to - -Sample Request -============== - -``curl -k -X POST -H "Content-Type:application/vnd.dmaap-dr.subscription" -H "X-DMAAP-DR-ON-BEHALF-OF:{user}" --data-ascii @addSubscriber.json https://{host}:{port}/subscribe/{feedId}`` - -Request Parameters: -=================== - -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| Name | Description | Param Type | Data Type | MaxLen | Required | Valid/Example Values | -+========================+=================================+==================+============+==============+=============+======================================+ -| feedId | ID for the feed you are | Path | String | | Y | | -| | subscribing to | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| delivery | Address and credentials for | Body | Object | | Y | | -| | delivery | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| follow_redirect | Set to true if feed redirection | Body | Boolean | | Y | * true | -| | is expected | | | | | * false | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| metadata_only | Set to true if subscription is | Body | Boolean | | Y | * true | -| | to receive per-file metadata | | | | | * false | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| suspend | Set to true if the subscription | Body | Boolean | | N | * true | -| | is in the suspended state | | | | | * false | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| decompress | Set to true if the data is to | Body | Boolean | | N | * true | -| | be decompressed for subscriber | | | | | * false | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| group-id | | Body | Integer | | Y | | -| | | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| content-type | To specify type of message | Header | String | | Y | application/vnd.dmaap-dr.subscription| -| | (feed,subscriber,publisher) | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| X-DMAAP-DR-ON-BEHALF-OF| User id of subscriber | Header | String | <=8 | Y | username | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ - -Response/Error Codes -==================== - -+------------------------+-------------------------------------------+ -| Response statusCode | Response Description | -+========================+===========================================+ -| 201 | Successful query | -+------------------------+-------------------------------------------+ -| 400 | Bad request - The request is defective in | -| | some way. Possible causes: | -| | | -| | * JSON object in request body does not | -| | conform to the spec. | -| | * Invalid parameter value in query string | -+------------------------+-------------------------------------------+ -| 401 | Indicates that the request was missing the| -| | Authorization header or, if the header | -| | was presented, the credentials were not | -| | acceptable | -+------------------------+-------------------------------------------+ -| 403 | The request failed authorization. | -| | Possible causes: | -| | | -| | * Request originated from an unauthorized | -| | IP address | -| | * Client certificate subject is not on | -| | the API’s authorized list. | -| | * X-DMAAP-DR-ON-BEHALF-OF identity is not | -| | authorized to perform | -+------------------------+-------------------------------------------+ -| 404 | Not Found - The Request-URI does not point| -| | to a resource that is known to the API. | -+------------------------+-------------------------------------------+ -| 405 | Method Not Allowed - The HTTP method in | -| | the request is not supported for the | -| | resource addressed by the Request-URI. | -+------------------------+-------------------------------------------+ -| 415 | Unsupported Media Type - The media type in| -| | the requests Content-Type header is not | -| | appropriate for the request. | -+------------------------+-------------------------------------------+ -| 500 | Internal Server Error - The DR API server | -| | encountered an internal error and could | -| | not complete the request. | -+------------------------+-------------------------------------------+ -| 503 | Service Unavailable - The DR API service | -| | is currently unavailable | -+------------------------+-------------------------------------------+ -| -1 | Failed Delivery | -+------------------------+-------------------------------------------+ - -Sample Body -=========== -.. code-block:: json - - { - "delivery" :{ - "url" : "http://172.18.0.3:7070/", - "user" : "LOGIN", - "password" : "PASSWORD", - "use100" : true - }, - "metadataOnly" : false, - "groupid" : 1, - "subscriber" : "subuser" - } - -Update subscription -------------------- - -**Description**: Update a subscription to a feed. - -Request URL -=========== - -http[s]://{host}:{port}/subs/{subId} - -* {subId}: Id of the subscription to be updated - -Sample Request -============== - -``curl -k -X PUT -H "Content-Type:application/vnd.dmaap-dr.subscription" -H "X-DMAAP-DR-ON-BEHALF-OF:{user}" --data-ascii @updateSubscriber.json https://{host}:{port}/subs/{subId}`` - -Request Parameters: -=================== - -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| Name | Description | Param Type | Data Type | MaxLen | Required | Valid/Example Values | -+========================+=================================+==================+============+==============+=============+======================================+ -| subId | ID for the subscription you are | Path | String | | Y | | -| | updating | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| delivery | Address and credentials for | Body | Object | | Y | | -| | delivery | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| follow_redirect | Set to true if feed redirection | Body | Boolean | | Y | * true | -| | is expected | | | | | * false | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| metadata_only | Set to true if subscription is | Body | Boolean | | Y | * true | -| | to receive per-file metadata | | | | | * false | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| suspend | Set to true if the subscription | Body | Boolean | | N | * true | -| | is in the suspended state | | | | | * false | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| decompress | Set to true if the data is to | Body | Boolean | | N | * true | -| | be decompressed for subscriber | | | | | * false | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| group-id | | Body | Integer | | Y | | -| | | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| content-type | To specify type of message | Header | String | | Y | application/vnd.dmaap-dr.subscription| -| | (feed,subscriber,publisher) | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| X-DMAAP-DR-ON-BEHALF-OF| User id of subscriber | Header | String | 8 | Y | username | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ - -Response/Error Codes -==================== - -+------------------------+-------------------------------------------+ -| Response statusCode | Response Description | -+========================+===========================================+ -| 200 | Successful query | -+------------------------+-------------------------------------------+ -| 400 | Bad request - The request is defective in | -| | some way. Possible causes: | -| | | -| | * JSON object in request body does not | -| | conform to the spec. | -| | * Invalid parameter value in query string | -+------------------------+-------------------------------------------+ -| 401 | Indicates that the request was missing the| -| | Authorization header or, if the header | -| | was presented, the credentials were not | -| | acceptable | -+------------------------+-------------------------------------------+ -| 403 | The request failed authorization. | -| | Possible causes: | -| | | -| | * Request originated from an unauthorized | -| | IP address | -| | * Client certificate subject is not on | -| | the API’s authorized list. | -| | * X-DMAAP-DR-ON-BEHALF-OF identity is not | -| | authorized to perform | -+------------------------+-------------------------------------------+ -| 404 | Not Found - The Request-URI does not point| -| | to a resource that is known to the API. | -+------------------------+-------------------------------------------+ -| 405 | Method Not Allowed - The HTTP method in | -| | the request is not supported for the | -| | resource addressed by the Request-URI. | -+------------------------+-------------------------------------------+ -| 415 | Unsupported Media Type - The media type in| -| | the request’s Content-Type header is not | -| | appropriate for the request. | -+------------------------+-------------------------------------------+ -| 500 | Internal Server Error - The DR API server | -| | encountered an internal error and could | -| | not complete the request. | -+------------------------+-------------------------------------------+ -| 503 | Service Unavailable - The DR API service | -| | is currently unavailable | -+------------------------+-------------------------------------------+ -| -1 | Failed Delivery | -+------------------------+-------------------------------------------+ - -Sample Body -=========== -.. code-block:: json - - { - "delivery" :{ - "url" : "http://192.0.0.1:7070/", - "user" : "NEW_LOGIN", - "password" : "NEW_PASSWORD", - "use100" : true - }, - "metadataOnly" : false, - "groupid" : 2, - "subscriber" : "subuser" - } - - -Get a Subscription ------------------- - -**Description**: Retrieves a representation of the specified subscription. - -Request URL -=========== - -http[s]://{host}:{port}/subs/{subId} - -* {subId}: Id of the subscription you want to see a representation of - -Sample Request -============== - -``curl -k -H "X-DMAAP-DR-ON-BEHALF-OF:{user}" https://{host}:{port}/subs/{subId}`` - -Response/Error Codes -==================== - -+------------------------+-------------------------------------------+ -| Response statusCode | Response Description | -+========================+===========================================+ -| 200 | Successful query | -+------------------------+-------------------------------------------+ -| 401 | Indicates that the request was missing the| -| | Authorization header or, if the header | -| | was presented, the credentials were not | -| | acceptable | -+------------------------+-------------------------------------------+ -| 403 | The request failed authorization. | -| | Possible causes: | -| | | -| | * Request originated from an unauthorized | -| | IP address | -| | * Client certificate subject is not on | -| | the API’s authorized list. | -| | * X-DMAAP-DR-ON-BEHALF-OF identity is not | -| | authorized to perform | -+------------------------+-------------------------------------------+ -| 404 | Not Found - The Request-URI does not point| -| | to a resource that is known to the API. | -+------------------------+-------------------------------------------+ -| 405 | Method Not Allowed - The HTTP method in | -| | the request is not supported for the | -| | resource addressed by the Request-URI. | -+------------------------+-------------------------------------------+ -| 415 | Unsupported Media Type - The media type in| -| | the request’s Content-Type header is not | -| | appropriate for the request. | -+------------------------+-------------------------------------------+ -| 500 | Internal Server Error - The DR API server | -| | encountered an internal error and could | -| | not complete the request. | -+------------------------+-------------------------------------------+ -| 503 | Service Unavailable - The DR API service | -| | is currently unavailable | -+------------------------+-------------------------------------------+ -| -1 | Failed Delivery | -+------------------------+-------------------------------------------+ - -Delete a subscription ---------------------- - -**Description**: Deletes a specified subscription - -Request URL -=========== - -http[s]://{host}:{port}/subs/{subId} - -* {subId}: Id of the subscription you want to delete - -Sample Request -============== - -``curl -k -X DELETE -H "X-DMAAP-DR-ON-BEHALF-OF:{user}" https://{host}:{port}/subs/{subId}`` - -Response/Error Codes -==================== - -+------------------------+-------------------------------------------+ -| Response statusCode | Response Description | -+========================+===========================================+ -| 204 | Successful query | -+------------------------+-------------------------------------------+ -| 401 | Indicates that the request was missing the| -| | Authorization header or, if the header | -| | was presented, the credentials were not | -| | acceptable | -+------------------------+-------------------------------------------+ -| 403 | The request failed authorization. | -| | Possible causes: | -| | | -| | * Request originated from an unauthorized | -| | IP address | -| | * Client certificate subject is not on | -| | the API’s authorized list. | -| | * X-DMAAP-DR-ON-BEHALF-OF identity is not | -| | authorized to perform | -+------------------------+-------------------------------------------+ -| 404 | Not Found - The Request-URI does not point| -| | to a resource that is known to the API. | -+------------------------+-------------------------------------------+ -| 405 | Method Not Allowed - The HTTP method in | -| | the request is not supported for the | -| | resource addressed by the Request-URI. | -+------------------------+-------------------------------------------+ -| 415 | Unsupported Media Type - The media type in| -| | the request’s Content-Type header is not | -| | appropriate for the request. | -+------------------------+-------------------------------------------+ -| 500 | Internal Server Error - The DR API server | -| | encountered an internal error and could | -| | not complete the request. | -+------------------------+-------------------------------------------+ -| 503 | Service Unavailable - The DR API service | -| | is currently unavailable | -+------------------------+-------------------------------------------+ -| -1 | Failed Delivery | -+------------------------+-------------------------------------------+ - -Publish to Feed ---------------- - -**Description**: Publish data to a given feed - -Request URL -=========== - -http[s]://{host}:{port}/publish/{feedId}/{fileName} - -* {feedId} The id of the feed you are publishing to. -* {fileId} The name of the file you are publishing to the feed. - -Sample Request -============== - -``curl -k -X PUT --user {user}:{password} -H "Content-Type:application/octet-stream" -H "X-DMAAP-DR-META:{\"filetype\":\"txt\"}" --data-binary @sampleFile.txt --post301 --location-trusted https://{host}:{port}/publish/{feedId}/sampleFile`` - -Request parameters -================== - -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------------------------------------------+ -| Name | Description | Param Type | Data Type | MaxLen | Required | Valid/Example Values | -+========================+=================================+==================+============+==============+=============+==========================================================================+ -| feedId | ID of the feed you are | Path | String | | Y | | -| | publishing to | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------------------------------------------+ -| fileId | Name of the file when it is | Path | String | | Y | | -| | published to subscribers | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------------------------------------------+ -| content-type | To specify type of message | Header | String | | Y | application/octet-stream | -| | format | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------------------------------------------+ -| X-DMAAP-DR-META | Metadata for the file. Accepts | Header | String | 4096 | N | '{"compressionType":"gzip","id": 1234, "transferred":true, "size":null}' | -| | only non nested json objects | | | | | | -| | of the following type : | | | | | | -| | -Numbers | | | | | | -| | -Strings | | | | | | -| | -Lowercase boolean | | | | | | -| | -null | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------------------------------------------+ - -Response/Error Codes -==================== - -+------------------------+---------------------------------+ -| Response statusCode | Response Description | -+========================+=================================+ -| 204 | Successful PUT or DELETE | -+------------------------+---------------------------------+ -| 400 | Failure - Malformed request | -+------------------------+---------------------------------+ -| 401 | Failure - Request was missing | -| | authorization header, or | -| | credentials were not accepted | -+------------------------+---------------------------------+ -| 403 | Failure - User could not be | -| | authenticated, or was not | -| | authorized to make the request | -+------------------------+---------------------------------+ -| 404 | Failure - Path in the request | -| | URL did not point to a valid | -| | feed publishing URL | -+------------------------+---------------------------------+ -| 500 | Failure - DR experienced an | -| | internal problem | -+------------------------+---------------------------------+ -| 503 | Failure - DR is not currently | -| | available | -+------------------------+---------------------------------+ - - -Delete a Published file ------------------------ - -**Description**: Deletes a specified published file - -Request URL -=========== - -http[s]://{host}:{port}/publish/{feedId}/{fileId} - -* {feedId}: Id of the feed you want to delete a published file from -* {fileId}: Id of the published file you want to delete - -Sample Request -============== - -``curl -k -X DELETE --user {user}:{password} --location-trusted https://{host}:{port}/publish/{feedId}/{fileId}`` - -Response/Error Codes -==================== - -+------------------------+---------------------------------+ -| Response statusCode | Response Description | -+========================+=================================+ -| 204 | Successful PUT or DELETE | -+------------------------+---------------------------------+ -| 400 | Failure - Malformed request | -+------------------------+---------------------------------+ -| 401 | Failure - Request was missing | -| | authorization header, or | -| | credentials were not accepted | -+------------------------+---------------------------------+ -| 403 | Failure - User could not be | -| | authenticated, or was not | -| | authorized to make the request | -+------------------------+---------------------------------+ -| 404 | Failure - Path in the request | -| | URL did not point to a valid | -| | feed publishing URL | -+------------------------+---------------------------------+ -| 500 | Failure - DR experienced an | -| | internal problem | -+------------------------+---------------------------------+ -| 503 | Failure - DR is not currently | -| | available | -+------------------------+---------------------------------+ - -Feed logging ------------- - -**Description**: View logging information for specified feeds, which can be narrowed down with further parameters - -Request URL -=========== - -http[s]://{host}:{port}/feedlog/{feedId}?{queryParameter} - -* {feedId} : The id of the feed you want to get logs for -* {queryParameter}: A parameter passed through to narrow the returned logs. Multiple parameters can be passed. - - -Sample Request -============== - -``curl -k https://{host}:{port}/feedlog/{feedId}?statusCode=204`` - -Request parameters -================== - -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| Name | Description | Param Type | Data Type | MaxLen | Required | Valid/Example Values | -+========================+=================================+==================+============+==============+=============+======================================+ -| feedId | Id of the feed you want | Path | String | | Y | 1 | -| | logs for | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| type | Select records of the | Path | String | | N | * pub: Publish attempt | -| | specified type | | | | | * del: Delivery attempt | -| | | | | | | * exp: Delivery expiry | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| publishId | Select records with specified | Path | String | | N | | -| | publish id, carried in the | | | | | | -| | X-DMAAP-DR-PUBLISH-ID header | | | | | | -| | from original publish request | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| start | Select records created at or | Path | String | | N | A date-time expressed in the format | -| | after specified date | | | | | specified by RFC 3339 | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| end | Select records created at or | Path | String | | N | A date-time expressed in the format | -| | before specified date | | | | | specified by RFC 3339 | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| statusCode | Select records with the | Path | String | | N | An HTTP Integer status code or one | -| | specified statusCode field | | | | | of the following special values: | -| | | | | | | | -| | | | | | | * Success: Any code between 200-299 | -| | | | | | | * Redirect: Any code between 300-399 | -| | | | | | | * Failure: Any code > 399 | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| expiryReason | Select records with the | Path | String | | N | | -| | specified expiry reason | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| filename | Select published records with | Path | String | | N | | -| | the specified filename | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ - -Response Parameters -=================== - -+------------------------+----------------------------------------------+ -| Name | Description | -+========================+==============================================+ -| type | Record type: | -| | | -| | * pub: publication attempt | -| | * del: delivery attempt | -| | * exp: delivery expiry | -+------------------------+----------------------------------------------+ -| date | The UTC date and time at which the record | -| | was generated, with millisecond resolution | -| | in the format specified by RFC 3339 | -+------------------------+----------------------------------------------+ -| publishId | The unique identifier assigned by the DR | -| | at the time of the initial publication | -| | request (carried in the X-DMAAP-DR-PUBLISH-ID| -| | header in the response to the original | -| | publish request) | -+------------------------+----------------------------------------------+ -| requestURI | The Request-URI associated with the | -| | request | -+------------------------+----------------------------------------------+ -| method | The HTTP method (PUT or DELETE) for the | -| | request | -+------------------------+----------------------------------------------+ -| contentType | The media type of the payload of the | -| | request | -+------------------------+----------------------------------------------+ -| contentLength | The size (in bytes) of the payload of | -| | the request | -+------------------------+----------------------------------------------+ -| sourceIp | The IP address from which the request | -| | originated | -+------------------------+----------------------------------------------+ -| endpointId | The identity used to submit a publish | -| | request to the DR | -+------------------------+----------------------------------------------+ -| deliveryId | The identity used to submit a delivery | -| | request to a subscriber endpoint | -+------------------------+----------------------------------------------+ -| statusCode | The HTTP status code in the response to | -| | the request. A value of -1 indicates that | -| | the DR was not able to obtain an HTTP | -| | status code | -+------------------------+----------------------------------------------+ -| expiryReason | The reason that delivery attempts were | -| | discontinued: | -| | | -| | * notRetryable: The last delivery attempt | -| | encountered an error condition for which | -| | the DR does not make retries. | -| | * retriesExhausted: The DR reached its | -| | limit for making further retry attempts | -+------------------------+----------------------------------------------+ -| attempts | Total number of attempts made before | -| | delivery attempts were discontinued | -+------------------------+----------------------------------------------+ -| filename | File name associated with a publish record | -+------------------------+----------------------------------------------+ - -Response/Error Codes -==================== - -+------------------------+-------------------------------------------+ -| Response statusCode | Response Description | -+========================+===========================================+ -| 200 | Successful query | -+------------------------+-------------------------------------------+ -| 400 | Bad request - The request is defective in | -| | some way. Possible causes: | -| | | -| | * Unrecognized parameter name in query | -| | string | -| | * Invalid parameter value in query string | -+------------------------+-------------------------------------------+ -| 404 | Not Found - The request was not directed | -| | to a feed log URL or subscription log URL | -| | known to the system | -+------------------------+-------------------------------------------+ -| 405 | Method not allowed - The HTTP method in | -| | the request was something other than GET | -+------------------------+-------------------------------------------+ -| 406 | Not Acceptable - The request has an Accept| -| | header indicating that the requester will | -| | not accept a response with | -| | application/vnd.dmaap-dr.log-list content.| -+------------------------+-------------------------------------------+ -| 500 | Internal Server Error - The DR API server | -| | encountered an internal error and could | -| | not complete the request | -+------------------------+-------------------------------------------+ -| 503 | Service Unavailable - The DR API service | -| | is currently unavailable | -+------------------------+-------------------------------------------+ - - -Subscription logging ------------------- - -**Description**: View logging information for specified subscriptions, which can be narrowed down with further parameters - -Request URL -=========== - -http[s]://{host}:{port}/sublog/{subId}?{queryParameter} - -* {subId}: The id of the feed you want to get logs from -* {queryParameter}: A parameter passed through to narrow the returned logs. Multiple parameters can be passed. - - -Sample Request -============== - -``curl -k https://{host}:{port}/sublog/{subId}?statusCode=204`` - -Request parameters -================== - -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| Name | Description | Param Type | Data Type | MaxLen | Required | Valid/Example Values | -+========================+=================================+==================+============+==============+=============+======================================+ -| subId | Id of the subscription you want | Path | String | | N | 1 | -| | logs for | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| type | Select records of the | Path | String | | N | * pub: Publish attempt | -| | specified type | | | | | * del: Delivery attempt | -| | | | | | | * exp: Delivery expiry | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| publishId | Select records with specified | Path | String | | N | | -| | publish id, carried in the | | | | | | -| | X-DMAAP-DR-PUBLISH-ID header | | | | | | -| | from original publish request | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| start | Select records created at or | Path | String | | N | A date-time expressed in the format | -| | after specified date | | | | | specified by RFC 3339 | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| end | Select records created at or | Path | String | | N | A date-time expressed in the format | -| | before specified date | | | | | specified by RFC 3339 | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| statusCode | Select records with the | Path | String | | N | An Http Integer status code or one | -| | specified statusCode field | | | | | of the following special values: | -| | | | | | | | -| | | | | | | * Success: Any code between 200-299 | -| | | | | | | * Redirect: Any code between 300-399 | -| | | | | | | * Failure: Any code > 399 | -| | | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ -| expiryReason | Select records with the | Path | String | | N | | -| | specified expiry reason | | | | | | -+------------------------+---------------------------------+------------------+------------+--------------+-------------+--------------------------------------+ - -Response Parameters -=================== - -+------------------------+---------------------------------------------+ -| Name | Description | -+========================+=============================================+ -| type | Record type: | -| | | -| | * pub: publication attempt | -| | * del: delivery attempt | -| | * exp: delivery expiry | -+------------------------+---------------------------------------------+ -| date | The UTC date and time at which the record | -| | was generated, with millisecond resolution | -| | in the format specified by RFC 3339 | -+------------------------+---------------------------------------------+ -| publishId | The unique identifier assigned by the DR | -| | at the time of the initial publication | -| | request(carried in the X-DMAAP-DR-PUBLISH-ID| -| | header in the response to the original | -| | publish request) to a feed log URL or | -| | subscription log URL known to the system | -+------------------------+---------------------------------------------+ -| requestURI | The Request-URI associated with the | -| | request | -+------------------------+---------------------------------------------+ -| method | The HTTP method (PUT or DELETE) for the | -| | request | -+------------------------+---------------------------------------------+ -| contentType | The media type of the payload of the | -| | request | -+------------------------+---------------------------------------------+ -| contentLength | The size (in bytes) of the payload of | -| | the request | -+------------------------+---------------------------------------------+ -| sourceIp | The IP address from which the request | -| | originated | -+------------------------+---------------------------------------------+ -| endpointId | The identity used to submit a publish | -| | request to the DR | -+------------------------+---------------------------------------------+ -| deliveryId | The identity used to submit a delivery | -| | request to a subscriber endpoint | -+------------------------+---------------------------------------------+ -| statusCode | The HTTP status code in the response to | -| | the request. A value of -1 indicates that | -| | the DR was not able to obtain an HTTP | -| | status code | -+------------------------+---------------------------------------------+ -| expiryReason | The reason that delivery attempts were | -| | discontinued: | -| | | -| | * notRetryable: The last delivery attempt | -| | encountered an error condition for which | -| | the DR does not make retries. | -| | * retriesExhausted: The DR reached its | -| | limit for making further retry attempts | -+------------------------+---------------------------------------------+ -| attempts | Total number of attempts made before | -| | delivery attempts were discontinued | -+------------------------+---------------------------------------------+ - -Response/Error Codes -==================== - -+------------------------+-------------------------------------------+ -| Response statusCode | Response Description | -+========================+===========================================+ -| 200 | Successful query | -+------------------------+-------------------------------------------+ -| 400 | Bad request - The request is defective in | -| | some way. Possible causes: | -| | | -| | * Unrecognized parameter name in query | -| | string | -| | * Invalid parameter value in query string | -+------------------------+-------------------------------------------+ -| 404 | Not Found - The request was not directed | -| | to a feed log URL or subscription log URL | -| | known to the system | -+------------------------+-------------------------------------------+ -| 405 | Method not allowed - The HTTP method in | -| | the request was something other than GET | -+------------------------+-------------------------------------------+ -| 406 | Not Acceptable - The request has an Accept| -| | header indicating that the requester will | -| | not accept a response with | -| | application/vnd.dmaap-dr.log-list content.| -+------------------------+-------------------------------------------+ -| 500 | Internal Server Error - The DR API server | -| | encountered an internal error and could | -| | could not complete the request | -+------------------------+-------------------------------------------+ -| 503 | Service Unavailable - The DR API service | -| | is currently unavailable | -+------------------------+-------------------------------------------+ diff --git a/docs/data-router/delivery.rst b/docs/data-router/delivery.rst deleted file mode 100644 index 775841a4..00000000 --- a/docs/data-router/delivery.rst +++ /dev/null @@ -1,32 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Delivery -============== - -Data Router is comprised of a datarouter-provisioning container, a datarouter-node container and a mariadb container. - -.. blockdiag:: - - - blockdiag layers { - orientation = portrait - MARIADB -> DR-PROV; - DR-PROV -> DR-NODE; - group l1 { - color = blue; - label = "dr-prov Container"; - DR-PROV; - } - group l2 { - color = yellow; - label = "dr-node Container"; - DR-NODE; - } - group l3 { - color = orange; - label = "MariaDb Container"; - MARIADB; - } - - } diff --git a/docs/data-router/dr_arch.png b/docs/data-router/dr_arch.png deleted file mode 100644 index 54cd7e8d..00000000 Binary files a/docs/data-router/dr_arch.png and /dev/null differ diff --git a/docs/data-router/humaninterfaces.rst b/docs/data-router/humaninterfaces.rst deleted file mode 100644 index 71a2b730..00000000 --- a/docs/data-router/humaninterfaces.rst +++ /dev/null @@ -1,10 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Human Interfaces -================ - -Data Router does not have human interfaces - - - diff --git a/docs/data-router/logging.rst b/docs/data-router/logging.rst deleted file mode 100644 index 6ac7a0a3..00000000 --- a/docs/data-router/logging.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Logging -======= - - -Where to Access Information ---------------------------- -Data Router uses logback framework to generate logs. - -Error / Warning Messages ------------------------- -Currently Data Router does not have any unique error codes. However the following are the common HTTP error codes that -could possibly occur in Data Router: - - OK = 200 : The normal response from a successful update or get of a feed or subscription - - CREATED = 201 : the normal response from successfully creating or subscribing to a feed. - - NO_CONTENT = 204 : the normal response from a successful publish attempt and on successfully deleting a feed or subscription - - MOVED_PERMANENTLY = 301 :the normal redirect response from prov to a publisher - - BAD_REQUEST = 400: Usually indicates that either Json object in request body is incorrect in some way, or an Invalid parameter value was included in query string. - - UNAUTHORIZED = 401 : Usually indicated either request was missing Authorization header, or indicates incorrect Username/password credentials - - FORBIDDEN = 403 : Usually indicates the request originated from an unauthorized IP address, or that a client certificate was not a part of authorized list. - - NOT_FOUND = 404 : Usually indicates an incorrect URI - - METHOD_NOT_ALLOWED = 405 : Indicates an HTTP method is not accepted for given URI \ No newline at end of file diff --git a/docs/data-router/release-notes.rst b/docs/data-router/release-notes.rst deleted file mode 100644 index b879c6bc..00000000 --- a/docs/data-router/release-notes.rst +++ /dev/null @@ -1,153 +0,0 @@ -.. This work is licensed under a Creative Commons Attribution 4.0 International License. -.. http://creativecommons.org/licenses/by/4.0 - -Release-notes -============== -Version: 1.0.3 (Casablanca) ---------------------------- - -:Release Date: 2018-11-30 - -The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and -subscriptions. - -New Features: - -+--------------+------------------------------------------------------------------+ -| JIRA ID | Description | -+==============+==================================================================+ -| DMAAP-20 | REST api for publishing data to DR | -+--------------+------------------------------------------------------------------+ -| DMAAP-21 | REST api for subscribing to data in DR | -+--------------+------------------------------------------------------------------+ - -Bug Fixes: - -+----------------+---------------------------------------------------------------------------------------------------------------------------------+ -| JIRA ID | Description | -+================+=================================================================================================================================+ -| DMAAP-877 | DR Logging API not storing Feed/Sub data | -+----------------+---------------------------------------------------------------------------------------------------------------------------------+ -| DMAAP-850 | Second subscriber not receiving the published file | -+----------------+---------------------------------------------------------------------------------------------------------------------------------+ -| DMAAP-596 | DR - datarouter-prov container fails to come up successfully | -+----------------+---------------------------------------------------------------------------------------------------------------------------------+ -| DMAAP-565 | Incorrect nexusUrl parameter in datarouter pom files | -+----------------+---------------------------------------------------------------------------------------------------------------------------------+ - -Known Issues -N/A - -Security Issues -DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been -addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open -Critical security vulnerabilities and their risk assessment have been documented as part of the `project `_. - -- `DMAAP Project Page `_ -- `Passing Badge information for DMAAP DataRouter `_ -- `Project Vulnerability Review Table for DMAAP `_ - -Upgrade Notes -N/A - -Deprecation Notes -N/A - -Other -N/A - -Version: 1.0.8 (Casablanca) ---------------------------- - -:Release Date: 2019-02-28 - -The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and -subscriptions. - -New Features: - -+--------------+------------------------------------------------------------------+ -| JIRA ID | Description | -+==============+==================================================================+ -+--------------+------------------------------------------------------------------+ - -Bug Fixes: - -+----------------+--------------------------------------------------------------------------------------------------+ -| JIRA ID | Description | -+================+==================================================================================================+ -| DMAAP-1065 | [DR] Casablanca - AAF certs expired on dmaap-dr-prov and dmaap-dr-node | -+----------------+--------------------------------------------------------------------------------------------------+ - -Known Issues -N/A - -Security Issues -DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been -addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open -Critical security vulnerabilities and their risk assessment have been documented as part of the `project `_. - -- `DMAAP Project Page `_ -- `Passing Badge information for DMAAP DataRouter `_ -- `Project Vulnerability Review Table for DMAAP `_ - -Upgrade Notes -N/A - -Deprecation Notes -N/A - -Other -N/A - - -Version: 2.0.1 (Dublin) ---------------------------- - -:Release Date: 2019-02-28 - -The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and -subscriptions. - -New Features: - -+--------------+------------------------------------------------------------------+ -| JIRA ID | Description | -+==============+==================================================================+ -| DMAAP-988 | Update to new oparent | -+--------------+------------------------------------------------------------------+ - -Bug Fixes: - -+----------------+--------------------------------------------------------------------------------------------------+ -| JIRA ID | Description | -+================+==================================================================================================+ -| DMAAP-964 | DMAAP deployment failures starting 20190115 on casablanca branch | -+----------------+--------------------------------------------------------------------------------------------------+ -| DMAAP-1047 | Data Router docker version missing explicit version number | -+----------------+--------------------------------------------------------------------------------------------------+ -| DMAAP-1048 | [DR] AAF certs expired on dmaap-dr-prov and dmaap-dr-node | -+----------------+--------------------------------------------------------------------------------------------------+ -| DMAAP-1064 | [DR] Update datarouter POM version following AAF cert updates | -+----------------+--------------------------------------------------------------------------------------------------+ - -Known Issues -N/A - -Security Issues -DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been -addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open -Critical security vulnerabilities and their risk assessment have been documented as part of the `project `_. - -- `DMAAP Project Page `_ -- `Passing Badge information for DMAAP DataRouter `_ -- `Project Vulnerability Review Table for DMAAP `_ - -Upgrade Notes -N/A - -Deprecation Notes -N/A - -Other -N/A \ No newline at end of file diff --git a/docs/delivery.rst b/docs/delivery.rst new file mode 100644 index 00000000..ccfab3f0 --- /dev/null +++ b/docs/delivery.rst @@ -0,0 +1,32 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Delivery +============== + +Below is a diagram of the DMaaP Data Router project docker containers and the connections between them. + +.. blockdiag:: + + + blockdiag layers { + orientation = portrait + MARIADB -> DR-PROV; + DR-PROV -> DR-NODE; + group l1 { + color = blue; + label = "dr-prov Container"; + DR-PROV; + } + group l2 { + color = yellow; + label = "dr-node Container"; + DR-NODE; + } + group l3 { + color = orange; + label = "MariaDb Container"; + MARIADB; + } + + } diff --git a/docs/images/dr_arch_only.png b/docs/images/dr_arch_only.png new file mode 100644 index 00000000..cc147e44 Binary files /dev/null and b/docs/images/dr_arch_only.png differ diff --git a/docs/images/dr_bc_prov.png b/docs/images/dr_bc_prov.png new file mode 100644 index 00000000..9e2f7e47 Binary files /dev/null and b/docs/images/dr_bc_prov.png differ diff --git a/docs/images/dr_pub_flow.png b/docs/images/dr_pub_flow.png new file mode 100644 index 00000000..83af9bd2 Binary files /dev/null and b/docs/images/dr_pub_flow.png differ diff --git a/docs/index.rst b/docs/index.rst index 99f0f281..fa1a250c 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -2,36 +2,19 @@ .. http://creativecommons.org/licenses/by/4.0 .. Copyright © 2017 AT&T Intellectual Property. All rights reserved. +DMaaP Data Router ============================================ -Data Router (DR) API Guide -============================================ -Introduction ------------------- - -The DataRouter(DR)provisioning API is an HTTPS-based,REST-like API for creating and managing DR feeds and subscriptions. The Data Routing System project is intended to provide a common framework by which data producers can make data available to data consumers and a way for potential consumers to find feeds with the data they require. - - -HTTP Service APIs ------------------- - -DMaaP Data Router utilizes an HTTPS REST API to service all transactions. HTTPS and REST standards are followed so -clients as varied as CURL, Java applications and even Web Browsers will work to interact with the Data Router. - - .. toctree:: :maxdepth: 1 - - data-router/data-router.rst - data-router/administration.rst - data-router/architecture.rst - data-router/configuration.rst - data-router/consumedapis.rst - data-router/DataRouterUserGuide.rst - data-router/delivery.rst - data-router/humaninterfaces.rst - data-router/logging.rst - data-router/release-notes.rst + + architecture.rst + offered-apis.rst + delivery.rst + logging.rst + installation.rst + configuration.rst + release-notes.rst diff --git a/docs/installation.rst b/docs/installation.rst new file mode 100644 index 00000000..95cda4e1 --- /dev/null +++ b/docs/installation.rst @@ -0,0 +1,51 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Installation +============= + +**Standalone** +Pre-requisites: + +* docker 18.09.3 or higher. +* docker-compose 1.17.1 or higher. +* Ensure port 8080 is not already in use. + +1. Clone the DMaaP Data Router project from ONAP gerrit: + +.. code-block:: bash + + git clone https://gerrit.onap.org/r/dmaap/datarouter + +2. Move/cd to the docker-compose directory and execute the following: + +.. code-block:: bash + + cd datarouter/datarouter-docker-compose/src/main/resources/ + + docker-compose up -d + + +The following docker containers should be deployed successfully: + +.. code-block:: bash + + docker ps --format '{{.Image}}' + + nexus3.onap.org:10001/onap/dmaap/datarouter-node + nexus3.onap.org:10001/onap/dmaap/datarouter-prov + nexus3.onap.org:10001/onap/dmaap/datarouter-subscriber + mariadb:10.2.14 + + +To verify that the provisioning API is active, get the IP of the datarouter-prov container: + +.. code-block:: bash + + docker inspect --format '{{ .NetworkSettings.Networks.resources_testing_net.IPAddress }}' datarouter-prov + +and execute the following CURL command: + +.. code-block:: bash + + curl -k https://{DR_PROV_CONTAINER_IP}:8443/internal/prov \ No newline at end of file diff --git a/docs/logging.rst b/docs/logging.rst new file mode 100644 index 00000000..140c265f --- /dev/null +++ b/docs/logging.rst @@ -0,0 +1,31 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +Logging +======= + + +**Where to Access Information** +Data Router uses logback framework to generate logs. + +**Error / Warning Messages** +Currently Data Router does not have any unique error codes. However the following are the common HTTP error codes that +could possibly occur in Data Router: + + OK = 200 : The normal response from a successful update or get of a feed or subscription + + CREATED = 201 : the normal response from successfully creating or subscribing to a feed. + + NO_CONTENT = 204 : the normal response from a successful publish attempt and on successfully deleting a feed or subscription + + MOVED_PERMANENTLY = 301 :the normal redirect response from prov to a publisher + + BAD_REQUEST = 400: Usually indicates that either Json object in request body is incorrect in some way, or an Invalid parameter value was included in query string. + + UNAUTHORIZED = 401 : Usually indicated either request was missing Authorization header, or indicates incorrect Username/password credentials + + FORBIDDEN = 403 : Usually indicates the request originated from an unauthorized IP address, or that a client certificate was not a part of authorized list. + + NOT_FOUND = 404 : Usually indicates an incorrect URI + + METHOD_NOT_ALLOWED = 405 : Indicates an HTTP method is not accepted for given URI \ No newline at end of file diff --git a/docs/offered-apis.rst b/docs/offered-apis.rst new file mode 100755 index 00000000..a3a12139 --- /dev/null +++ b/docs/offered-apis.rst @@ -0,0 +1,1350 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +.. _data_router_api_guide: + +.. toctree:: + :maxdepth: 2 + +Offered APIs +============ + +**The API Provisioning Model** + +The DMaaP Data Router (DR) provisioning API defines two resource types - the feed and the subscription, each with JSON +representations. The API models the provisioning data as a collection of feeds that are known to the DR +(the feeds collection), with each feed containing a collection of the subscriptions to the feed. +The standard HTTP operations (POST, GET, PUT, and DELETE), used in conjunction with these resource +representations, allow an API user to create, get information about, modify, and delete feeds and +subscriptions. + +**HTTP Service APIs** + +DMaaP Data Router utilizes an HTTPS REST API to service all transactions. HTTPS and REST standards are followed so +clients as varied as CURL, Java applications and even Web Browsers will work to interact with the Data Router. + +**General HTTP Requirements** + +A DMaaP Data Router transactions consists of 4 distinct segments, HTTP URL, HTTP Header, HTTP Body (POST/PUT) +and HTTP Response. The general considerations for each segment are as follows and are required for each +of the specific transactions described in this section. + +**HTTP URL** + +http[s]://{serverBaseURL}/{resourcePath} + +* The serverBaseURL points to DMaaP Data Router host:port that will service the request. +* The resourcePath specifies the service that the client is attempting to reach. + + +**HTTP Header** + +Specifies HTTP Headers, such as Content-Type, that define the parameters of the HTTP Transaction + +**HTTP Body** + +The HTTP Body contains the feed content when creating a feed. + +**HTTP Authorization** + +The user-id:password pair: + +* If AAF enabled: A valid AAF AppId to be authenticated and authorized by the AAF CADI framework. +* If Non AAF : When publishing or retracting a file, a valid `EID Object`_ with publish permissions. + +Create a Feed +------------- + +**Description**: Creates a unique feed URL to service the publisher/subscriber model. + +.. code-block:: bash + + POST / + +**Request Parameters:** + ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| Field | Description | Param Type | Data Type | MaxLen | Set By | Updatable? | Required | Valid/Example Values | ++======================+================================+============+==================+========+========+============+==========+===============================+ +| name | Feed name | Body | String | <=20 | Client | N | Y | | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| version | Feed version | Body | String | <=20 | Client | N | Y | v1.0.0 | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| description | Feed description | Body | String | <=256 | Client | Y | N | | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| business description | Business description | Body | String | <=256 | Client | Y | N | | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| authorization | Information for authorizing | Body |`Auth Object`_ | | Client | Y | Y | | +| | publishing requests | | | | | | | | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| suspend | Set to true if the feed is in | Body | Boolean | | Client | Y | N | * true | +| | the suspended state | | | | | | | * false (default) | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| group-id | Auth group for feed management | Body | Integer | | Client | Y | N | 0 (default) | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| aaf_instance | The instance passed to aaf | Body | String | <=256 | Client | N | N | legacy (default) | +| | during permission checks | | | | | | | | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| Content-Type | To specify type of message | Header | String | | Client | N | Y | application/vnd.dmaap-dr.feed | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| publisher | Publisher identity as passed | Header | String | <=8 | DR | N | Y | username | +| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | | | | +| | creation time | | | | | | | | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| Authorization | The user / AppId to be | Header | String | | Client | N | Y if AAF | dcae@dcae.onap.org:{password} | +| | authorized by the AAF CADI | | | | | | enabled | | +| | framework | | | | | | | | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| X-EXCLUDE-AAF | To determine if the feed to | Header | Boolean | | Client | N | Y if AAF | * true (for legacy feed) | +| | create is legacy or AAF | | | | | | enabled | * false (for AAF feed) | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ +| Links | URLs related to this feed | Body |`Feed Links Obj`_ | | DR | N | N | | ++----------------------+--------------------------------+------------+------------------+--------+--------+------------+----------+-------------------------------+ + +**Response Codes** + +* Success: + 200 + +* Error: + See `Response Codes`_ + +**Consumes** + application/json + +**Produces** + application/json + + +**Sample Request** + +.. code-block:: bash + + curl -k -X POST -H "Content-Type:application/vnd.dmaap-dr.feed" -H "X-DMAAP-DR-ON-BEHALF-OF:{user}" --data-ascii @createFeed.json https://{host}:{port} + +**Sample Body** + +.. code-block:: json + + { + "name": "ONAP Data Feed", + "version": "v1.0", + "authorization": { + "classification": "unclassified", + "endpoint_addrs": [ + ], + "endpoint_ids": [ + { + "id": "dradmin", + "password": "dradmin" + } + ] + } + } + +**Sample Response** + +.. code-block:: json + + { + "suspend": false, + "groupid": 0, + "description": "", + "version": "v1.0", + "authorization": { + "endpoint_addrs": [ + ], + "classification": "unclassified", + "endpoint_ids": [ + { + "password": "dradmin", + "id": "dradmin" + }, + { + "password": "demo123456!", + "id": "onap" + } + ] + }, + "name": "ONAP Data Feed", + "business_description": "", + "aaf_instance": "legacy", + "publisher": "dradmin", + "links": { + "subscribe": "https://dmaap-dr-prov/subscribe/1", + "log": "https://dmaap-dr-prov/feedlog/1", + "publish": "https://dmaap-dr-prov/publish/1", + "self": "https://dmaap-dr-prov/feed/1" + } + } + + + +Update a Feed +------------- + +**Description**: Update a feed with new parameters. + +.. code-block:: bash + + PUT /feed/{feedId} + + +**Request Parameters:** + ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| Field | Description | Param Type | Data Type | MaxLen | Required | ++========================+=================================+=============+===============+============+=============+ +| name | Feed name | Body | String | <=20 | Y | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| description | Feed description | Body | String | <=256 | N | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| business description | Business description | Body | String | <=256 | N | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| authorization | Information for authorizing | Body |`Auth Object`_ | | Y | +| | publishing requests | | | | | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| suspend | Set to true if the feed is in | Body | Boolean | | N | +| | the suspended state | | | | | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| group-id | Auth group for feed management | Body | Integer | | N | +| | | | | | | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| Content-type | To specify type of message | Header | String | | Y | +| | (feed,subscriber,publisher) | | | | | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| publisher | Publisher identity as passed | Header | String | <=8 | Y | +| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | +| | creation time | | | | | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| Authorization | The user / AppId to be | Header | String | | Y if AAF | +| | authorized by the AAF CADI | | | | enabled | +| | framework | | | | | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ + +**Response Codes** + +* Success: + 200 + +* Error: + See `Response Codes`_ + +**Consumes** + application/json + +**Produces** + application/json + + +**Sample Request** + +.. code-block:: bash + + curl -k -X PUT -H "Content-Type: application/vnd.dmaap-dr.feed" -H "X-DMAAP-DR-ON-BEHALF-OF: {user}" --data-ascii @updateFeed.json --location-trusted https://{host}:{port}/feed/{feedId} + +**Sample Body** + +.. code-block:: json + + { + "name": "ONAP Data Feed", + "business_description": "Updated ONAP Feed", + "groupid": 33, + "description": "Updated ONAP Feed", + "authorization": { + "endpoint_addrs": [ + "10.1.2.3" + ], + "classification": "unclassified", + "endpoint_ids": [ + { + "password": "dradmin", + "id": "dradmin" + }, + { + "password": "demo123456!", + "id": "onap" + } + ] + } + } + +**Sample Response** + +.. code-block:: json + + { + "suspend": false, + "groupid": 33, + "description": "Updated ONAP Feed", + "authorization": { + "endpoint_addrs": [ + "10.1.2.3" + ], + "classification": "unclassified", + "endpoint_ids": [ + { + "password": "dradmin", + "id": "dradmin" + }, + { + "password": "demo123456!", + "id": "onap" + } + ] + }, + "name": "ONAP Data Feed1", + "business_description": "Updated ONAP Feed", + "aaf_instance": "legacy", + "publisher": "dradmin", + "links": { + "subscribe": "https://dmaap-dr-prov/subscribe/1", + "log": "https://dmaap-dr-prov/feedlog/1", + "publish": "https://dmaap-dr-prov/publish/1", + "self": "https://dmaap-dr-prov/feed/1" + } + } + + + +Get a Feed +---------- + +**Description**: Retrieves a representation of the specified feed. + +.. code-block:: bash + + GET /feed/{feedId} + + +**Request Parameters:** + ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| Field | Description | Param Type | Data Type | MaxLen | Required | ++========================+=================================+=============+===============+============+=============+ +| publisher | Publisher identity as passed | Header | String | <=8 | Y | +| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | +| | creation time | | | | | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| Authorization | The user / AppId to be | Header | String | | Y if AAF | +| | authorized by the AAF CADI | | | | enabled | +| | framework | | | | | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ + +**Response Codes** + +* Success: + 200 + +* Error: + See `Response Codes`_ + +**Produces** + application/json + +**Sample Request** + +.. code-block:: bash + + curl -k -H "X-DMAAP-DR-ON-BEHALF-OF: {user}" https://{host}:{port}/feed/{feedId} + +**Sample Response** + +.. code-block:: json + + { + "suspend": false, + "groupid": 33, + "description": "Updated ONAP Feed", + "version": "v1.0", + "authorization": { + "endpoint_addrs": [ + "10.1.2.3", + "173.2.33.4" + ], + "classification": "unclassified", + "endpoint_ids": [ + { + "password": "dradmin", + "id": "dradmin" + }, + { + "password": "demo123456!", + "id": "onap" + } + ] + }, + "name": "ONAP Data Feed", + "business_description": "Updated ONAP Feed", + "aaf_instance": "legacy", + "publisher": "dradmin", + "links": { + "subscribe": "https://dmaap-dr-prov/subscribe/1", + "log": "https://dmaap-dr-prov/feedlog/1", + "publish": "https://dmaap-dr-prov/publish/1", + "self": "https://dmaap-dr-prov/feed/1" + } + } + + +Delete a Feed +------------- + +**Description**: Deletes a specified feed + +.. code-block:: bash + + DELETE /feed/{feedId} + + +**Request Parameters:** + ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| Field | Description | Param Type | Data Type | MaxLen | Required | ++========================+=================================+=============+===============+============+=============+ +| publisher | Publisher identity as passed | Header | String | <=8 | Y | +| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | +| | creation time | | | | | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ +| Authorization | The user / AppId to be | Header | String | | Y if AAF | +| | authorized by the AAF CADI | | | | enabled | +| | framework | | | | | ++------------------------+---------------------------------+-------------+---------------+------------+-------------+ + +**Response Codes** + +* Success: + 204 + +* Error: + See `Response Codes`_ + +**Sample Request** + +.. code-block:: bash + + curl -k -X DELETE -H "X-DMAAP-DR-ON-BEHALF-OF: {user}" https://{host}:{port}/feed/{feedId} + + +Subscribe to Feed +----------------- + +**Description**: Subscribes to a created feed to receive files published to that feed. + +.. code-block:: bash + + POST /subscribe/{feedId} + + +**Request Parameters:** + ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| Field | Description | Param Type | Data Type | MaxLen | Set By | Updatable? | Required | Valid/Example Values | ++=================+=================================+===============+=================+========+========+============+==========+======================================+ +| feedId | ID for the feed you are | Path | String | | Client | N | Y | 1 | +| | subscribing to | | | | | | | | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| delivery | Address and credentials for | Body | `Del Object`_ | | Client | Y | Y | | +| | delivery | | | | | | | | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| follow_redirect | Set to true if feed redirection | Body | Boolean | | Client | Y | N | * true | +| | is expected | | | | | | | * false (default) | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| metadata_only | Set to true if subscription is | Body | Boolean | | Client | Y | Y | * true | +| | to receive per-file metadata | | | | | | | * false | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| suspend | Set to true if the subscription | Body | Boolean | | Client | Y | N | * true | +| | is in the suspended state | | | | | | | * false (default) | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| decompress | Set to true if the data is to | Body | Boolean | | Client | Y | N | * true | +| | be decompressed for subscriber | | | | | | | * false (default) | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| group-id | Auth group for sub management | Body | Integer | | Client | Y | Y | 22 | +| | | | | | | | | | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| aaf_instance | The instance passed to aaf | Body | String | <=256 | Client | N | N | * legacy (default) | +| | during permission checks | | | | | | | | +| | | | | | | | | | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| Content-type | To specify type of message | Header | String | | Client | N | Y | application/vnd.dmaap-dr.subscription| +| | (feed,subscriber,publisher) | | | | | | | | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| subscriber | Subscriber identity as passed | Header | String | <=8 | DR | N | Y | username | +| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | | | | +| | creation time | | | | | | | | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| Authorization | The user / AppId to be | Header | String | | Client | N | Y if AAF | dcae@dcae.onap.org:{password} | +| | authorized by the AAF CADI | | | | | | enabled | | +| | framework | | | | | | | | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| X-EXCLUDE-AAF | To determine if the feed to | Header | Boolean | | Client | N | Y if AAF | * true (for legacy feed) | +| | create is legacy or AAF | | | | | | enabled | * false (for AAF feed) | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ +| Links | URLs related to this | Body |`Sub Links Obj`_ | | DR | N | N | | +| | subscription | | | | | | | | ++-----------------+---------------------------------+---------------+-----------------+--------+--------+------------+----------+--------------------------------------+ + +**Response Codes** + +* Success: + 201 + +* Error: + See `Response Codes`_ + +**Consumes** + application/json + +**Produces** + application/json + + +**Sample Request** + +.. code-block:: bash + + curl -k -X POST -H "Content-Type:application/vnd.dmaap-dr.subscription" -H "X-DMAAP-DR-ON-BEHALF-OF:{user}" --data-ascii @addSubscriber.json https://{host}:{port}/subscribe/{feedId} + +**Sample Body** + +.. code-block:: json + + { + "delivery": { + "url": "http://dmaap-dr-subscriber:7070/", + "user": "LOGIN", + "password": "PASSWORD", + "use100": true + }, + "metadataOnly": false, + "groupid": 22, + "follow_redirect": true, + "suspend": false, + "decompress": true + } + +**Sample Response** + +.. code-block:: json + + { + "suspend": false, + "delivery": { + "use100": true, + "password": "PASSWORD", + "user": "LOGIN", + "url": "http://dmaap-dr-subscriber:7070/" + }, + "subscriber": "onap", + "groupid": 1, + "metadataOnly": false, + "follow_redirect": true, + "decompress": true, + "aaf_instance": "legacy", + "links": { + "feed": "https://dmaap-dr-prov/feed/1", + "log": "https://dmaap-dr-prov/sublog/1", + "self": "https://dmaap-dr-prov/subs/1" + }, + "created_date": 1553707279509 + } + + + +Update subscription +------------------- + +**Description**: Update a subscription to a feed. + +.. code-block:: bash + + PUT /subs/{subId} + + +**Request Parameters:** + ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| Field | Description | Param Type | Data Type | MaxLen | Required | ++=================+=================================+==============+===============+========+=============+ +| subId | ID for the subscription you are | Path | String | | Y | +| | updating | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| delivery | Address and credentials for | Body | `Del Object`_ | | Y | +| | delivery | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| follow_redirect | Set to true if feed redirection | Body | Boolean | | N | +| | is expected | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| metadata_only | Set to true if subscription is | Body | Boolean | | Y | +| | to receive per-file metadata | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| suspend | Set to true if the subscription | Body | Boolean | | N | +| | is in the suspended state | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| decompress | Set to true if the data is to | Body | Boolean | | N | +| | be decompressed for subscriber | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| group-id | Auth group for sub management | Body | Integer | | Y | +| | | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| Content-type | To specify type of message | Header | String | | Y | +| | (feed,subscriber,publisher) | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| subscriber | Subscriber identity as passed | Header | String | <=8 | Y | +| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | +| | creation time | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| Authorization | The user / AppId to be | Header | String | | Y if AAF | +| | authorized by the AAF CADI | | | | enabled | +| | framework | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| X-EXCLUDE-AAF | To determine if the feed to | Header | Boolean | | Y if AAF | +| | create is legacy or AAF | | | | enabled | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ + +**Response Codes** + +* Success: + 200 + +* Error: + See `Response Codes`_ + +**Consumes** + application/json + +**Produces** + application/json + +**Sample Request** + +.. code-block:: bash + + curl -k -X PUT -H "Content-Type:application/vnd.dmaap-dr.subscription" -H "X-DMAAP-DR-ON-BEHALF-OF:{user}" --data-ascii @updateSubscriber.json https://{host}:{port}/subs/{subId} + +**Sample Body** + +.. code-block:: json + + { + "delivery": { + "url": "http://dmaap-dr-subscriber:7070/", + "user": "NEW_LOGIN", + "password": "NEW_PASSWORD", + "use100": false + }, + "metadataOnly": true, + "groupid": 67, + "follow_redirect": false, + "decompress": false + } + + +**Sample Response** + +.. code-block:: json + + { + "suspend": false, + "delivery": { + "use100": false, + "password": "NEW_PASSWORD", + "user": "NEW_LOGIN", + "url": "http://dmaap-dr-subscriber:7070/" + }, + "subscriber": "onap", + "groupid": 67, + "metadataOnly": true, + "follow_redirect": false, + "decompress": false, + "aaf_instance": "legacy", + "links": { + "feed": "https://dmaap-dr-prov/feed/1", + "log": "https://dmaap-dr-prov/sublog/1", + "self": "https://dmaap-dr-prov/subs/1" + }, + "created_date": 1553714446614 + } + + + +Get a Subscription +------------------ + +**Description**: Retrieves a representation of the specified subscription. + +.. code-block:: bash + + GET /subs/{subId} + + +**Request Parameters:** + ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| Field | Description | Param Type | Data Type | MaxLen | Required | ++=================+=================================+==============+===============+========+=============+ +| subscriber | Subscriber identity as passed | Header | String | <=8 | Y | +| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | +| | creation time | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| Authorization | The user / AppId to be | Header | String | | Y if AAF | +| | authorized by the AAF CADI | | | | enabled | +| | framework | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ + +**Response Codes** + +* Success: + 200 + +* Error: + See `Response Codes`_ + +**Produces** + application/json + +**Sample Request** + +.. code-block:: bash + + curl -k -H "X-DMAAP-DR-ON-BEHALF-OF:{user}" https://{host}:{port}/subs/{subId} + +**Sample Response** + +.. code-block:: json + + { + "suspend": false, + "delivery": { + "use100": false, + "password": "NEW_PASSWORD", + "user": "NEW_LOGIN", + "url": "http://dmaap-dr-subscriber:7070/" + }, + "subscriber": "onap", + "groupid": 67, + "metadataOnly": true, + "privilegedSubscriber": false, + "follow_redirect": false, + "decompress": false, + "aaf_instance": "legacy", + "links": { + "feed": "https://dmaap-dr-prov/feed/2", + "log": "https://dmaap-dr-prov/sublog/6", + "self": "https://dmaap-dr-prov/subs/6" + } + } + + + +Delete a subscription +--------------------- + +**Description**: Deletes a specified subscription + +.. code-block:: bash + + DELETE /subs/{subId} + + +**Request Parameters:** + ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| Field | Description | Param Type | Data Type | MaxLen | Required | ++=================+=================================+==============+===============+========+=============+ +| subscriber | Subscriber identity as passed | Header | String | <=8 | Y | +| | in X-DMAAP-DR-ON-BEHALF-OF at | | | | | +| | creation time | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ +| Authorization | The user / AppId to be | Header | String | | Y if AAF | +| | authorized by the AAF CADI | | | | enabled | +| | framework | | | | | ++-----------------+---------------------------------+--------------+---------------+--------+-------------+ + +**Response Codes** + +* Success: + 204 + +* Error: + See `Response Codes`_ + +**Sample Request** + +.. code-block:: bash + + curl -k -X DELETE -H "X-DMAAP-DR-ON-BEHALF-OF:{user}" https://{host}:{port}/subs/{subId} + + +Publish to Feed +--------------- + +**Description**: Publish data to a given feed + +.. code-block:: bash + + PUT /publish/{feedId}/{fileId} + + +**Request parameters** + ++------------------------+---------------------------------+------------------+------------+--------------+-------------+-------------------------------------------+ +| Name | Description | Param Type | Data Type | MaxLen | Required | Valid/Example Values | ++========================+=================================+==================+============+==============+=============+===========================================+ +| feedId | ID of the feed you are | Path | String | | Y | | +| | publishing to | | | | | | ++------------------------+---------------------------------+------------------+------------+--------------+-------------+-------------------------------------------+ +| fileId | Name of the file when it is | Path | String | | Y | | +| | published to subscribers | | | | | | ++------------------------+---------------------------------+------------------+------------+--------------+-------------+-------------------------------------------+ +| Content-type | To specify type of message | Header | String | | Y | application/octet-stream | +| | format | | | | | | ++------------------------+---------------------------------+------------------+------------+--------------+-------------+-------------------------------------------+ +| X-DMAAP-DR-META | Metadata for the file. Accepts | Header | String | <=4096 | N | '{“compressionType”: ”gzip”, | +| | only non nested json objects | | | | | ”id”: 1234, | +| | of the following type: | | | | | “transferred”: true, | +| | | | | | | “size”: null }’ | +| | * Numbers | | | | | | +| | * Strings | | | | | | +| | * Lowercase boolean | | | | | | +| | * null | | | | | | ++------------------------+---------------------------------+------------------+------------+--------------+-------------+-------------------------------------------+ +| Authorization | An `EID Object`_ with publish | Header | String | | Y | * (legacy Feed) dradmin:dradmin | +| | permissions. | | | | | * (AAF Feed) dcae@dcae.onap.org:{password}| +| | If AAF CADI is enabled, use a | | | | | | +| | valid AAF user/AppId instead. | | | | | | ++------------------------+---------------------------------+------------------+------------+--------------+-------------+-------------------------------------------+ + +**Response Codes** + +* Success: + 204 + +* Error: + See `Response Codes`_ + +**Sample Request** + +.. code-block:: bash + + curl -k -X PUT --user {user}:{password} -H "Content-Type:application/octet-stream" -H "X-DMAAP-DR-META:{\"filetype\":\"txt\"}" --data-binary @sampleFile.txt --post301 --location-trusted https://{host}:{port}/publish/{feedId}/{fileId} + + + +Delete/Retract a Published file +------------------------------- + +**Description**: Deletes/retracts a specified published file + +.. code-block:: bash + + DELETE /publish/{feedId}/{fileId} + + +**Request Parameters:** + ++-----------------+---------------------------------+--------------+---------------+------------+-------------------------------------------+ +| Field | Description | Param Type | Data Type | Required | Valid/Example Values | ++=================+=================================+==============+===============+============+===========================================+ +| Authorization | An `EID Object`_ with publish | Header | String | Y | * (legacy Feed) dradmin:dradmin | +| | permissions. | | | | * (AAF Feed) dcae@dcae.onap.org:{password}| +| | If AAF CADI is enabled, use a | | | | | +| | valid AAF user/AppId instead. | | | | | ++-----------------+---------------------------------+--------------+---------------+------------+-------------------------------------------+ +| feedId | ID of the feed that was | Path | String | Y | | +| | publishing to | | | | | ++-----------------+---------------------------------+--------------+---------------+------------+-------------------------------------------+ +| fileId | Name of the file when it was | Path | String | Y | | +| | published to subscribers | | | | | ++-----------------+---------------------------------+--------------+---------------+------------+-------------------------------------------+ + +**Response Codes** + +* Success: + 204 + +* Error: + See `Response Codes`_ + + +**Sample Request** + +.. code-block:: bash + + curl -k -X DELETE --user {user}:{password} --location-trusted https://{host}:{port}/publish/{feedId}/{fileId} + + + +Feed logging +------------ + +**Description**: View logging information for specified feeds, which can be narrowed down with further parameters + +.. code-block:: bash + + GET /feedlog/{feedId}?{queryParam} + + +**Request parameters** + ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| Name | Description | Param Type | Data Type | Required | Valid/Example Values | ++========================+=================================+==================+============+=============+======================================+ +| feedId | Id of the feed you want | Path | String | Y | 1 | +| | logs for | | | | | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| type | Select records of the | Path | String | N | * pub: Publish attempt | +| | specified type | | | | * del: Delivery attempt | +| | | | | | * exp: Delivery expiry | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| publishId | Select records with specified | Path | String | N | | +| | publish id, carried in the | | | | | +| | X-DMAAP-DR-PUBLISH-ID header | | | | | +| | from original publish request | | | | | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| start | Select records created at or | Path | String | N | A date-time expressed in the format | +| | after specified date | | | | specified by RFC 3339 | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| end | Select records created at or | Path | String | N | A date-time expressed in the format | +| | before specified date | | | | specified by RFC 3339 | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| statusCode | Select records with the | Path | String | N | An HTTP Integer status code or one | +| | specified statusCode field | | | | of the following special values: | +| | | | | | | +| | | | | | * Success: Any code between 200-299 | +| | | | | | * Redirect: Any code between 300-399 | +| | | | | | * Failure: Any code > 399 | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| expiryReason | Select records with the | Path | String | N | | +| | specified expiry reason | | | | | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| filename | Select published records with | Path | String | N | | +| | the specified filename | | | | | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ + +**Response Parameters** + ++------------------------+----------------------------------------------+ +| Name | Description | ++========================+==============================================+ +| type | Record type: | +| | | +| | * pub: publication attempt | +| | * del: delivery attempt | +| | * exp: delivery expiry | ++------------------------+----------------------------------------------+ +| date | The UTC date and time at which the record | +| | was generated, with millisecond resolution | +| | in the format specified by RFC 3339 | ++------------------------+----------------------------------------------+ +| publishId | The unique identifier assigned by the DR | +| | at the time of the initial publication | +| | request (carried in the X-DMAAP-DR-PUBLISH-ID| +| | header in the response to the original | +| | publish request) | ++------------------------+----------------------------------------------+ +| requestURI | The Request-URI associated with the | +| | request | ++------------------------+----------------------------------------------+ +| method | The HTTP method (PUT or DELETE) for the | +| | request | ++------------------------+----------------------------------------------+ +| contentType | The media type of the payload of the | +| | request | ++------------------------+----------------------------------------------+ +| contentLength | The size (in bytes) of the payload of | +| | the request | ++------------------------+----------------------------------------------+ +| sourceIp | The IP address from which the request | +| | originated | ++------------------------+----------------------------------------------+ +| endpointId | The identity used to submit a publish | +| | request to the DR | ++------------------------+----------------------------------------------+ +| deliveryId | The identity used to submit a delivery | +| | request to a subscriber endpoint | ++------------------------+----------------------------------------------+ +| statusCode | The HTTP status code in the response to | +| | the request. A value of -1 indicates that | +| | the DR was not able to obtain an HTTP | +| | status code | ++------------------------+----------------------------------------------+ +| expiryReason | The reason that delivery attempts were | +| | discontinued: | +| | | +| | * notRetryable: The last delivery attempt | +| | encountered an error condition for which | +| | the DR does not make retries. | +| | * retriesExhausted: The DR reached its | +| | limit for making further retry attempts | ++------------------------+----------------------------------------------+ +| attempts | Total number of attempts made before | +| | delivery attempts were discontinued | ++------------------------+----------------------------------------------+ +| filename | File name associated with a publish record | ++------------------------+----------------------------------------------+ + +**Response Codes** + +* Success: + 200 + +* Error: + See `Response Codes`_ + +**Produces** + application/json + + +**Sample Request** + +.. code-block:: bash + + curl -k https://{host}:{port}/feedlog/{feedId}?statusCode=204`` + +**Sample Response** + +.. code-block:: json + + [ + { + "statusCode": 204, + "publishId": "1553715307322.dmaap-dr-node", + "requestURI": "https://dmaap-dr-node/publish/1/hello", + "sourceIP": "172.19.0.1", + "method": "PUT", + "contentType": "application/octet-stream", + "endpointId": "dradmin", + "type": "pub", + "date": "2019-03-27T19:35:07.324Z", + "contentLength": 14, + "fileName": "hello" + }, + { + "statusCode": 204, + "publishId": "1553715312071.dmaap-dr-node", + "requestURI": "https://dmaap-dr-node/publish/2/hello", + "sourceIP": "172.19.0.1", + "method": "PUT", + "contentType": "application/octet-stream", + "endpointId": "onap", + "type": "pub", + "date": "2019-03-27T19:35:12.072Z", + "contentLength": 14, + "fileName": "hello2" + } + ] + + +Subscription logging +-------------------- + +**Description**: View logging information for specified subscriptions, which can be narrowed down with further parameters + +.. code-block:: bash + + GET /sublog/{subId}?{queryParam} + + +**Request parameters** + ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| Name | Description | Param Type | Data Type | Required | Valid/Example Values | ++========================+=================================+==================+============+=============+======================================+ +| subId | Id of the subscription you want | Path | String | Y | 1 | +| | logs for | | | | | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| type | Select records of the | Path | String | N | * pub: Publish attempt | +| | specified type | | | | * del: Delivery attempt | +| | | | | | * exp: Delivery expiry | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| publishId | Select records with specified | Path | String | N | | +| | publish id, carried in the | | | | | +| | X-DMAAP-DR-PUBLISH-ID header | | | | | +| | from original publish request | | | | | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| start | Select records created at or | Path | String | N | A date-time expressed in the format | +| | after specified date | | | | specified by RFC 3339 | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| end | Select records created at or | Path | String | N | A date-time expressed in the format | +| | before specified date | | | | specified by RFC 3339 | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| statusCode | Select records with the | Path | String | N | An Http Integer status code or one | +| | specified statusCode field | | | | of the following special values: | +| | | | | | | +| | | | | | * Success: Any code between 200-299 | +| | | | | | * Redirect: Any code between 300-399 | +| | | | | | * Failure: Any code > 399 | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ +| expiryReason | Select records with the | Path | String | N | | +| | specified expiry reason | | | | | ++------------------------+---------------------------------+------------------+------------+-------------+--------------------------------------+ + +Response Parameters +------------------- + ++------------------------+---------------------------------------------+ +| Name | Description | ++========================+=============================================+ +| type | Record type: | +| | | +| | * pub: publication attempt | +| | * del: delivery attempt | +| | * exp: delivery expiry | ++------------------------+---------------------------------------------+ +| date | The UTC date and time at which the record | +| | was generated, with millisecond resolution | +| | in the format specified by RFC 3339 | ++------------------------+---------------------------------------------+ +| publishId | The unique identifier assigned by the DR | +| | at the time of the initial publication | +| | request(carried in the X-DMAAP-DR-PUBLISH-ID| +| | header in the response to the original | +| | publish request) to a feed log URL or | +| | subscription log URL known to the system | ++------------------------+---------------------------------------------+ +| requestURI | The Request-URI associated with the | +| | request | ++------------------------+---------------------------------------------+ +| method | The HTTP method (PUT or DELETE) for the | +| | request | ++------------------------+---------------------------------------------+ +| contentType | The media type of the payload of the | +| | request | ++------------------------+---------------------------------------------+ +| contentLength | The size (in bytes) of the payload of | +| | the request | ++------------------------+---------------------------------------------+ +| sourceIp | The IP address from which the request | +| | originated | ++------------------------+---------------------------------------------+ +| endpointId | The identity used to submit a publish | +| | request to the DR | ++------------------------+---------------------------------------------+ +| deliveryId | The identity used to submit a delivery | +| | request to a subscriber endpoint | ++------------------------+---------------------------------------------+ +| statusCode | The HTTP status code in the response to | +| | the request. A value of -1 indicates that | +| | the DR was not able to obtain an HTTP | +| | status code | ++------------------------+---------------------------------------------+ +| expiryReason | The reason that delivery attempts were | +| | discontinued: | +| | | +| | * notRetryable: The last delivery attempt | +| | encountered an error condition for which | +| | the DR does not make retries. | +| | * retriesExhausted: The DR reached its | +| | limit for making further retry attempts | ++------------------------+---------------------------------------------+ +| attempts | Total number of attempts made before | +| | delivery attempts were discontinued | ++------------------------+---------------------------------------------+ + +**Response Codes** + +* Success: + 200 + +* Error: + See `Response Codes`_ + +**Produces** + application/json + +**Sample Request** + +.. code-block:: bash + + curl -k https://{host}:{port}/sublog/{subId}?statusCode=204 + +**Sample Response** + +.. code-block:: json + + [ + { + "statusCode": 204, + "publishId": "1553715307322.dmaap-dr-node", + "requestURI": "https://dmaap-dr-node/publish/1/hello", + "sourceIP": "172.19.0.1", + "method": "PUT", + "contentType": "application/octet-stream", + "endpointId": "dradmin", + "type": "pub", + "date": "2019-03-27T19:35:07.324Z", + "contentLength": 14, + "fileName": "hello" + }, + { + "statusCode": 204, + "publishId": "1553715312071.dmaap-dr-node", + "requestURI": "https://dmaap-dr-node/publish/2/hello", + "sourceIP": "172.19.0.1", + "method": "PUT", + "contentType": "application/octet-stream", + "endpointId": "onap", + "type": "pub", + "date": "2019-03-27T19:35:12.072Z", + "contentLength": 14, + "fileName": "hello2" + } + ] + + +**Feed Authorization Object** + +.. _`Auth Object`: + ++----------------+-----------------+--------------------------------+------------------------------+ +| Field | Type | Description | Restrictions | ++================+=================+================================+==============================+ +| classification | string | An indicator of the feed’s | Length <=32 | +| | | data security classification | | ++----------------+-----------------+--------------------------------+------------------------------+ +| endpoint_ids |`EID Object`_ [] | Array of objects defining the | At least 1 id in the array | +| | | identities that are allowed | | +| | | to publish to this feed | | ++----------------+-----------------+--------------------------------+------------------------------+ +| endpoint_addrs | string[] | Array of IP addresses or IP | Each string must be a valid | +| | | subnetwork addresses that | textual representation of | +| | | are allowed to publish to this | IPv4 or IPv6 host address or | +| | | feed; an empty array indicates | subnetwork address. | +| | | that publish requests are | | +| | | permitted from any IP address | | ++----------------+-----------------+--------------------------------+------------------------------+ + + +**Endpoint Identity Object** + +.. _`EID Object`: + ++----------+--------+--------------------------+--------------+ +| Field | Type | Description | Restrictions | ++==========+========+==========================+==============+ +| id | string | Publishing endpoint | Length <= 20 | +| | | identifier | | ++----------+--------+--------------------------+--------------+ +| password | string | Password associated with | Length <= 32 | +| | | id | | ++----------+--------+--------------------------+--------------+ + + +**Feed Links Object** + +.. _`Feed Links Obj`: + ++-----------+---------------------------------------------------+----------------+ +| Field | Description | Symbolic Name | ++===========+===================================================+================+ +| self | URL pointing to this feed, used for updating and | | +| | deleting the feed. | | ++-----------+---------------------------------------------------+----------------+ +| publish | URL for publishing requests for this feed | | ++-----------+---------------------------------------------------+----------------+ +| subscribe | URL for subscribing to this feed | | ++-----------+---------------------------------------------------+----------------+ +| log | URL for accessing log information about this feed | | ++-----------+---------------------------------------------------+----------------+ + + +**Delivery Object** + +.. _`Del Object`: + ++----------+---------+-----------------------------------------------+-------------------------------------+ +| Field | Type | Description | Restrictions | ++==========+=========+===============================================+=====================================+ +| url | string | URL to which deliveries for this subscription | length <= 256 | +| | | should be directed Valid HTTPS URL | | ++----------+---------+-----------------------------------------------+-------------------------------------+ +| user | string | User ID to be passed in the Authorization | Length <= 20 | +| | | header when deliveries are made | | ++----------+---------+-----------------------------------------------+-------------------------------------+ +| password | string | Password to be passed in the Authorization | Length <= 32 | +| | | header when deliveries are made | | ++----------+---------+-----------------------------------------------+-------------------------------------+ +| use100 | boolean | Flag indicating whether the DR should use | Must be: true to use 100-continue | +| | | the HTTP 100-continue feature | | +| | | | false to disable using 100-continue | ++----------+---------+-----------------------------------------------+-------------------------------------+ + + +**Sub Links Object** + +.. _`Sub Links Obj`: + ++-----------+---------------------------------------------------+-------------------+ +| Field | Description | Symbolic Name | ++===========+===================================================+===================+ +| self | URL pointing to this subscription, used for | | +| | updating and deleting the subscription. | | ++-----------+---------------------------------------------------+-------------------+ +| feed | URL of the feed to which this subscription | | +| | applies; the same URL as the in the | | +| | representation of the feed | | ++-----------+---------------------------------------------------+-------------------+ +| log | URL for accessing log information about this | | +| | subscription | | ++-----------+---------------------------------------------------+-------------------+ + + +**Response/Error Codes** + +.. _`Response Codes`: + ++------------------------+-------------------------------------------+ +| Response statusCode | Response Description | ++========================+===========================================+ +| 200 to 299 | Success Response | ++------------------------+-------------------------------------------+ +| 400 | Bad request - The request is defective in | +| | some way. Possible causes: | +| | | +| | * JSON object in request body does not | +| | conform to the spec. | +| | * Invalid parameter value in query string | ++------------------------+-------------------------------------------+ +| 401 | Indicates that the request was missing the| +| | Authorization header or, if the header | +| | was presented, the credentials were not | +| | acceptable | ++------------------------+-------------------------------------------+ +| 403 | Forbidden - The request failed | +| | authorization. | +| | Possible causes: | +| | | +| | * Request originated from an unauthorized | +| | IP address | +| | * Client certificate subject is not on | +| | the API’s authorized list. | +| | * X-DMAAP-DR-ON-BEHALF-OF identity is not | +| | authorized to perform | ++------------------------+-------------------------------------------+ +| 404 | Not Found - The Request-URI does not point| +| | to a resource that is known to the API. | ++------------------------+-------------------------------------------+ +| 405 | Method Not Allowed - The HTTP method in | +| | the request is not supported for the | +| | resource addressed by the Request-URI. | ++------------------------+-------------------------------------------+ +| 406 | Not Acceptable - The request has an Accept| +| | header indicating that the requester will | +| | not accept a response with | +| | application/vnd.dmaap-dr.log-list content.| ++------------------------+-------------------------------------------+ +| 415 | Unsupported Media Type - The media type in| +| | the requests Content-Type header is not | +| | appropriate for the request. | ++------------------------+-------------------------------------------+ +| 500 | Internal Server Error - The DR API server | +| | encountered an internal error and could | +| | not complete the request. | ++------------------------+-------------------------------------------+ +| 503 | Service Unavailable - The DR API service | +| | is currently unavailable | ++------------------------+-------------------------------------------+ +| -1 | Failed Delivery | ++------------------------+-------------------------------------------+ \ No newline at end of file diff --git a/docs/release-notes.rst b/docs/release-notes.rst new file mode 100644 index 00000000..12014e69 --- /dev/null +++ b/docs/release-notes.rst @@ -0,0 +1,158 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +.. toctree:: + :maxdepth: 2 + +Release-notes +============== + +Version: 2.0.1 (Dublin) +--------------------------- + +:Release Date: 2019-02-28 + +The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and +subscriptions. + +New Features: + ++--------------+------------------------------------------------------------------+ +| JIRA ID | Description | ++==============+==================================================================+ +| DMAAP-988 | Update to new oparent | ++--------------+------------------------------------------------------------------+ + +Bug Fixes: + ++----------------+--------------------------------------------------------------------------------------------------+ +| JIRA ID | Description | ++================+==================================================================================================+ +| DMAAP-964 | DMAAP deployment failures starting 20190115 on casablanca branch | ++----------------+--------------------------------------------------------------------------------------------------+ +| DMAAP-1047 | Data Router docker version missing explicit version number | ++----------------+--------------------------------------------------------------------------------------------------+ +| DMAAP-1048 | [DR] AAF certs expired on dmaap-dr-prov and dmaap-dr-node | ++----------------+--------------------------------------------------------------------------------------------------+ +| DMAAP-1064 | [DR] Update datarouter POM version following AAF cert updates | ++----------------+--------------------------------------------------------------------------------------------------+ + +Known Issues +N/A + +Security Issues +DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open +Critical security vulnerabilities and their risk assessment have been documented as part of the `project `_. + +- `DMAAP Project Page `_ +- `Passing Badge information for DMAAP DataRouter `_ +- `Project Vulnerability Review Table for DMAAP `_ + +Upgrade Notes +N/A + +Deprecation Notes +N/A + +Other +N/A + + +Version: 1.0.8 (Casablanca) +--------------------------- + +:Release Date: 2019-02-28 + +The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and +subscriptions. + +New Features: + ++--------------+------------------------------------------------------------------+ +| JIRA ID | Description | ++==============+==================================================================+ ++--------------+------------------------------------------------------------------+ + +Bug Fixes: + ++----------------+--------------------------------------------------------------------------------------------------+ +| JIRA ID | Description | ++================+==================================================================================================+ +| DMAAP-1065 | [DR] Casablanca - AAF certs expired on dmaap-dr-prov and dmaap-dr-node | ++----------------+--------------------------------------------------------------------------------------------------+ + +Known Issues +N/A + +Security Issues +DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open +Critical security vulnerabilities and their risk assessment have been documented as part of the `project `_. + +- `DMAAP Project Page `_ +- `Passing Badge information for DMAAP DataRouter `_ +- `Project Vulnerability Review Table for DMAAP `_ + +Upgrade Notes +N/A + +Deprecation Notes +N/A + +Other +N/A + + +Version: 1.0.3 (Casablanca) +--------------------------- + +:Release Date: 2018-11-30 + +The DataRouter(DR) provisioning API is a HTTPS-based, REST-like API for creating and managing DR feeds and +subscriptions. + +New Features: + ++--------------+------------------------------------------------------------------+ +| JIRA ID | Description | ++==============+==================================================================+ +| DMAAP-20 | REST api for publishing data to DR | ++--------------+------------------------------------------------------------------+ +| DMAAP-21 | REST api for subscribing to data in DR | ++--------------+------------------------------------------------------------------+ + +Bug Fixes: + ++----------------+---------------------------------------------------------------------------------------------------------------------------------+ +| JIRA ID | Description | ++================+=================================================================================================================================+ +| DMAAP-877 | DR Logging API not storing Feed/Sub data | ++----------------+---------------------------------------------------------------------------------------------------------------------------------+ +| DMAAP-850 | Second subscriber not receiving the published file | ++----------------+---------------------------------------------------------------------------------------------------------------------------------+ +| DMAAP-596 | DR - datarouter-prov container fails to come up successfully | ++----------------+---------------------------------------------------------------------------------------------------------------------------------+ +| DMAAP-565 | Incorrect nexusUrl parameter in datarouter pom files | ++----------------+---------------------------------------------------------------------------------------------------------------------------------+ + +Known Issues +N/A + +Security Issues +DMAAP code has been formally scanned during build time using NexusIQ and all Critical vulnerabilities have been +addressed, items that remain open have been assessed for risk and determined to be false positive. The DMAAP open +Critical security vulnerabilities and their risk assessment have been documented as part of the `project `_. + +- `DMAAP Project Page `_ +- `Passing Badge information for DMAAP DataRouter `_ +- `Project Vulnerability Review Table for DMAAP `_ + +Upgrade Notes +N/A + +Deprecation Notes +N/A + +Other +N/A -- cgit 1.2.3-korg