User Preference API

User Preference API will holds preferences related to the users. Refer https://ranenetwork.atlassian.net/wiki/spaces/TECH/pages/884473857/Preferences+Alerts+Notifications+User+data+API for initial draft of API.

Service Description

The service-description will show following information for an API:

  • Gives the Python Version the API using

  • Gives the list of all installed Python packages

  • Gives the name of API

  • Gives all the available versions

  • Gives a list of middleware being used

  • Gives all available routes for each versions.

URL: /user-preference/service-description

Method: GET

Example Response:

{
    "status_code": 200,
    "request_id": "c83bc540-2510-441b-881c-c053379d061c",
    "data": {
        "python_version": "3.6.8",
        "installed_packages": [
            "alabaster==0.7.12",
            "Babel==2.8.0",
            ...
        ],
        "name": "user-data",
        "versions": [
            "v1",
            "v2"
        ],
        "middleware": [
            "RequestResponseMiddleware",
            "AuthenticationMiddleware",
            "ResponseGeneratorMiddleware"
        ],
        "routes": {
            "v1": {
                "preference-hierarchy": [
                    "delete",
                    "get",
                    "post",
                    "put"
                ],
                "preference-hierarchy/{pk:int}": [
                    "delete",
                    "get",
                    "post",
                    "put"
                ]
                ...
            },
            "v2": {
                ...
            }
        }
    }
}

Application Resource

class v1.resources.application.ApplicationResource

Application Class

Note

Allowed Methods: GET / POST / PUT / DELETE

GET Method

ApplicationResource.on_get(req, resp)

Application GET Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
          "id" :            <Integer, Application ID>,
          "name" :          <String, Application Name>,
          "description" :   <String, Application Description>
        }
        ...
    ]
}

POST Method

ApplicationResource.on_post(req, resp)

Application POST Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id": <Integer, Application ID>,
            "name": <String, Application Name>,
            "description": <String, Application Description>
        }
    ]
}

PUT Method

ApplicationResource.on_put(req, resp, pk: int)

Application PUT Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id": <Integer, Application ID>,
            "name": <String, Application Name>,
            "description": <String, Application Description>
        }
    ]
}

DELETE Method

ApplicationResource.on_delete(req, resp, pk: int)

Application Delete Method

Request

Response Object

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id": <Integer, Application ID>,
            "name": <String, Application Name>,
            "description": <String, Application Description>
        }
    ]
}

Application Preference Resource

GET Method

POST Method

PUT Method

DELETE Method

Entity Preference Resource

class v1.resources.entity_preference.EntityPreferenceResource

Entity Preference Class

Note

Allowed Methods: GET / POST / PUT / DELETE

GET Method

EntityPreferenceResource.on_get(req, resp)

Entity Preference GET Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id":                   <Integer, Entity Preference ID>,
            "preference_id":        <Integer, Preference ID>,
            "entity_gid":           <String, Entity GID>
        },
        ...
    ]
}

POST Method

EntityPreferenceResource.on_post(req, resp)

Entity Preference POST Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id":                   <Integer, Entity Preference ID>,
            "preference_id":        <Integer, Preference ID>,
            "entity_gid":           <String, Entity GID>
        },
        ...
    ]
}

PUT Method

EntityPreferenceResource.on_put(req, resp, pk: int)

Entity Preference PUT Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data":[
        {
            "id":                   <Integer, Entity Preference ID>,
            "preference_id":        <Integer, Preference ID>,
            "entity_gid":           <String, Entity GID>
        }
    ]
}

DELETE Method

EntityPreferenceResource.on_delete(req, resp, pk: int)

Entity Preference Delete Method

Request

Response Object

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id":                   <Integer, Entity Preference ID>,
            "preference_id":        <Integer, Preference ID>,
            "entity_gid":           <String, Entity GID>
        }
    ]
}

Generic Preference Resource

class v1.resources.generic_preference.GenericPreferenceResource

Generic Preference Class

Note

Allowed Methods: GET / POST / PUT / DELETE

GET Method

GenericPreferenceResource.on_get(req, resp)

Generic Preference GET Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
          "id" :                <Integer, Generic Preference ID>,
          "preference_id" :     <Integer, Preference ID>,
          "preference_value" :  <String, Preference Value>,
          "schema_version" :    <Integer, Schema Version>
        },
        ...
    ]
}

POST Method

GenericPreferenceResource.on_post(req, resp)

Generic Preference POST Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id":                   <Integer, Generic Preference ID>,
            "preference_id":        <Integer, Preference ID>,
            "preference_value'":    <String, Preference Value>,
            "schema_version":       <Integer, Schema Version>
        },
        ...
    ]
}

PUT Method

GenericPreferenceResource.on_put(req, resp, pk: int)

Generic Preference PUT Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data":[
        {
            "id":                   <Integer, Generic Preference ID>,
            "preference_id":        <Integer, Preference ID>,
            "preference_value'":    <String, Preference Value>,
            "schema_version":       <Integer, Schema Version>
        }
    ]
}

DELETE Method

GenericPreferenceResource.on_delete(req, resp, pk: int)

Generic Preference Delete Method

Request

Response Object

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id":                   <Integer, Generic Preference ID>,
            "preference_id":        <Integer, Preference ID>,
            "preference_value'":    <String, Preference Value>,
            "schema_version":       <Integer, Schema Version>
        }
    ]
}

Preference Resource

class v1.resources.preference.PreferenceResource

Preference Class

Note

Allowed Methods: GET / POST / PUT / DELETE

GET Method

PreferenceResource.on_get(req, resp)

Preference GET Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id" :                      <Integer, Preference ID>,
            "name" :                    <String, Preference Name>,
            "preference_hierarchy" :    <int, Preference Hierarchy>,
            "user_id" :                 <int, User ID>,
            "user_email" :              <String, User Email>,
            "application_preference" :  <int, Application Preference ID>,
            "type" :                    <String, Preference Type(Entity/Generic)>
        },
        ...
    ]
}

POST Method

PreferenceResource.on_post(req, resp)

Preference POST Method

Request

  • Method: POST

  • URL: https://stag.api.ranenetwork.com/user-preference/v1/preference

  • Request Array:

    [
        {
            "name" :                    <String, Preference Name>,
            "preference_hierarchy" :    <int, Preference Hierarchy>,
            "user_id" :                 <int, User ID>,
            "user_email" :              <String, User Email>,
            "application_preference" :  <int, Application Preference ID>,
            "type" :                    <String, Preference Type(Entity/Generic) -optional>,
        },
        ...
    ]
    

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id" :                      <Integer, Preference ID>,
            "name" :                    <String, Preference Name>,
            "preference_hierarchy" :    <int, Preference Hierarchy>,
            "user_id" :                 <int, User ID>,
            "user_email" :              <String, User Email>,
            "application_preference" :  <int, Application Preference ID>,
            "type" :                    <String, Preference Type(Entity/Generic)>
        },
        ...
    ]
}

PUT Method

PreferenceResource.on_put(req, resp, pk: int)

Preference PUT Method

Request

  • Method: PUT

  • URL: https://stag.api.ranenetwork.com/user-preference/v1/preference/<preference_id>

  • Request Object:

    {
        "name" :                    <String, Preference Name -optional>,
        "preference_hierarchy" :    <int, Preference Hierarchy -optional>,
        "user_id" :                 <int, User ID -optional>,
        "user_email" :              <String, User Email -optional>,
        "application_preference" :  <int, Application Preference ID -optional>,
        "type" :                    <String, Preference Type(Entity/Generic) -optional>,
    }
    

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data":{
        "id" :                      <Integer, Preference ID>,
        "name" :                    <String, Preference Name>,
        "preference_hierarchy" :    <int, Preference Hierarchy>,
        "user_id" :                 <int, User ID>,
        "user_email" :              <String, User Email>,
        "application_preference" :  <int, Application Preference ID>,
        "type" :                    <String, Preference Type(Entity/Generic)>
    }
}

DELETE Method

PreferenceResource.on_delete(req, resp, pk: int)

Preference Delete Method

Request

Response Object

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": {
            "id" :                      <Integer, Preference ID>,
            "name" :                    <String, Preference Name>,
            "preference_hierarchy" :    <int, Preference Hierarchy>,
            "user_id" :                 <int, User ID>,
            "user_email" :              <String, User Email>,
            "application_preference" :  <int, Application Preference ID>,
            "type" :                    <String, Preference Type(Entity/Generic)>
    }
}

Preference Getter Resource

class v1.resources.preference_getter_setter.UserPreferenceGetter

User Preference getter Class

Note

Allowed Methods: POST

POST Method

UserPreferenceGetter.on_post(req, resp)

User Preference getter POST Method

Request

  • Method: POST

  • URL: https://stag.api.ranenetwork.com/user-preference/v1/get-preference

  • Request Object:

    {
        "id" :                      [<Integer, Preference ID -optional>],
        "name" :                    [<String, Preference Name -optional>],
        "preference_hierarchy" :    [<Integer, Preference Hierarchy -optional>],
        "user_id" :                 [<Integer, User ID -optional>],
        "user_email" :              [<Integer, User Email -optional>],
        "application_preference" :  [<Integer, Application Preference ID -optional>],
        "type" :                    [<String, Preference Type(Entity/Generic) -optional>]
    }
    

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
                {
                    "id" :                      <Integer, Preference ID>,
                    "name" :                    <String, Preference Name>,
                    "preference_hierarchy" :    <Integer, Preference Hierarchy>
                    "user_id" :                 <Integer, User ID>,
                    "user_email" :              <Integer, User Email>,
                    "application_preference" :  <Integer, Application Preference ID>,
                    "type" :                    <String, Preference Type(Entity/Generic)>,
                    "generic": [
                        {
                            "id":                   <Integer, Generic Preference ID>,
                            "preference_value'":    <String, Preference Value>,
                            "schema_version":       <Integer, Schema Version>
                        },
                        ...
                    ],
                    "entity": [
                        {
                            "id":                   <Integer, Entity Preference ID>,
                            "entity_gid":           <String, Entity GID>
                        },
                        ...
                    ]
                }
            ]
}

Preference Setter Resource

class v1.resources.preference_getter_setter.UserPreferenceSetter

User Preference Setter Class

Note

Allowed Methods: POST

POST Method

UserPreferenceSetter.on_post(req, resp)

User Preference Setter POST Method

Request

  • Method: POST

  • URL: https://stag.api.ranenetwork.com/user-preference/v1/set-preference

  • Request Object:

    [
        {
            "name" :                    <String, Preference Name -optional>,
            "preference_hierarchy" :    <Integer, Preference Hierarchy ID>
            "user_id" :                 <Integer, User ID>,
            "user_email" :              <String, User Email>,
            "application_preference" :  <Integer, Application Preference ID>
            "type" :                    <String, Preference Type(Entity/Generic)>,
            "generic": [
                {
                    "preference_value'":    <String, Preference Value>,
                    "schema_version":       <Integer, Schema Version>
                },
                ...
            ],
            "entity": [
                {
                    "entity_gid":       <String, Entity GID -optional>
    
                },
                ...
            ]
        },
    ...
    ]
    #note:: if name is left empty application_preference.label is set
    

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
                {
                    "id" :                          <Integer, Preference ID>,
                    "name" :                        <String, Preference Name>,
                    "preference_hierarchy" :        <Integer, Preference Hierarchy ID>
                    "user_id" :                     <Integer, User ID>,
                    "user_email" :                  <String, User Email>,
                    "application_preference" :      <Integer, Application Preference ID>
                    "type" :                        <String, Preference Type(Entity/Generic)>,
                    "generic": [
                        {
                            "id":                   <Integer, Generic Preference ID>,
                            "preference_value'":    <String, Preference Value>,
                            "schema_version":       <Integer, Schema Version>
                        },
                        ...
                    ],
                    "entity": [
                        {
                            "id":                   <Integer, Entity Preference ID>,
                            "entity_gid":           <String, Entity GID>
                        },
                        ...
                    ]
                }
            ]
}

Preference Hierarchy Resource

class v1.resources.preference_hierarchy.PreferenceHierarchyResource

Preference Hierarchy Type Class

Note

Allowed Methods: GET / POST / PUT / DELETE

GET Method

PreferenceHierarchyResource.on_get(req, resp)

Preference Hierarchy Type GET Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
          "id" :            <Integer, Preference Hierarchy Type ID>,
          "label" :         <String, Preference Hierarchy Type Label>,
          "description" :   <String, Preference Hierarchy Title>,
          "parent" :        <Integer, Preference Hierarchy Parent ID >
        }
        ...
    ]
}

POST Method

PreferenceHierarchyResource.on_post(req, resp)

Preference Hierarchy POST Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": [
        {
            "id": <Integer, Preference Hierarchy ID>,
            "label": <String, Preference Hierarchy Label>,
            "description": <String, Preference Hierarchy Description>,
            "parent": <Integer, Preference Hierarchy Parent ID>
        }
    ]
}

PUT Method

PreferenceHierarchyResource.on_put(req, resp, pk: int)

Preference Hierarchy PUT Method

Request

Response Object:

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data":{
            "id": <Integer, Preference Hierarchy ID>,
            "label": <String, Preference Hierarchy Label>,
            "description": <String, Preference Hierarchy Description>,
            "parent": <Integer, Preference Hierarchy Parent ID>
        }
}

DELETE Method

PreferenceHierarchyResource.on_delete(req, resp, pk: int)

Preference Hierarchy Delete Method

Request

Response Object

{
    "status_code": 200,
    "request_id": <Request UUID>,
    "data": {
            "id": <Integer, Preference Hierarchy ID>,
            "label": <String, Preference Hierarchy Label>,
            "description": <String, Preference Hierarchy Description>,
            "parent": <Integer, Preference Hierarchy Parent ID>
    }
}

Note

it will delete all related user_preference as well