Core Application Resources

While there are a number of tangential api calls that the application makes, the above description of the BaseModeLReource should give a good idea as to how to handle them.

However, when it comes to making the application work, we have a number of core requests that allow us to provide data for our core functionaliy.

These endpoints are listed in relative importance to the application.

/api/v1/all_meta/

class rhizome.api.resources.all_meta.AllMetaResource(api_name=None)[source]
GET Request Returns all camapaigns, charts, dashboards, indicators,indicator_tags, locations and offices in the database.
  • Required Parameters:

    none

Response Format

{
  meta: {...},

  objects: [{
    campaigns: <List>,
    charts: <List>,
    dashboards: <List>,
    indicators: <List>,
    indicator_tags: <List>,
    indicator_to_tags: <List>,
    locations: <List>,
    offices: <List>,
    is_supeuser: <Boolean>

  }],

  errors: {...}
}

/api/v1/geo/

class rhizome.api.resources.geo.GeoResource(api_name=None)[source]
GET Request A non model resource that allows us to query for shapefiles

based on a colletion of parameters. - Required Parameters:

‘location_id__in’ the location of the shape file that we wish to retrieve
  • Optional Parameters:

    ‘location_depth’ the recursive depth in relation to the location_id parameter. For instance, a depth of 1 would get all children of that

    location. 2 would return all “grandchildren”

    ‘location_type’ return the descendants of the location_id param that

    have the given location_type id.

Response Format

{
  meta: {...},

  objects: [{
    location_id: <Integer>,
    type: <String>,
    properties <Dictionary>,
    geometry: <Dictionary>,
    parent_location_id: <Integer>
  }],

  errors: {...}
}

/api/v1/campaign/

class rhizome.api.resources.campaign.CampaignResource(api_name=None)[source]
GET Request Returns campaigns from the database
  • Optional Parameters:

    ‘id’: a comma delimited list of campaign ids. If the parameter is not set, the API will return all campaigns

  • Errors:

    if an invalid id is provided, the API returns a 200 code with an empty list of campaigns.

GET Request: Request Detail Another way to query for campaigns using the format: /api/v1/campaign/<campaign_id>/

  • Errors:

    if an id is invalid, the API returns a 500 error code.

POST Reguest: Create a camapaign
-Required Parameters:
‘name’,’top_lvl_location_id’, ‘campaign_type_id’, #’start_date’,’end_date’,
-Errors:
If any of the fields are missing, the system returns a 500 error.

Response Format

{
   meta: {},
   objects: [
     campaign_type_id: <Integer>,
     created_at: <Date>,
     start_date: <Date>,
     end_date: <Date>,
     id: <Integer>,
     name: <String>,
     office_id: <Integer>,
     pct_complete: <Float>,
     top_lvl_indicator_tag_id: <Integer>,
     top_lvl_location_id: <Integer>,
   ],
   errors: {}
}

/api/v1/custom_chart/

class rhizome.api.resources.custom_chart.CustomChartResource(api_name=None)[source]

GET Requests: returns charts from the API. If no parameters are given, returns all the charts

  • Optional Parameters:

    ‘id’ – returns the chart with the given id ‘dashboard_id’ – returns a chart associated with the given

    dashboard id

  • Errors:

    If an invalid id is passed, the API returns an empty list of objects and a status code of 200

DELETE Requests:
  • Required Parameters:

    ‘id’

POST Requests:
  • Required Parameters:

    ‘uuid’, ‘title’, ‘chart_json’

  • Errors:

    If any of the required parameters are missing, the API returns a 500 error

Response Format

{
  meta: {...},

  objects: [{
    id: <Number>,
    uuid: <String>,
    title: <String>,
    chart_json: <JSON>
  }],

  errors: {...}
}

/api/v1/custom_dashboard/

class rhizome.api.resources.custom_dashboard.CustomDashboardResource(api_name=None)[source]
GET Requests: Get a dashboard. If no params are passed, returns all the dashboards
  • Optional Parameters:

    ‘id’

GET Request get detail:
  • to access a specific chart, send a get request to /api/v1/custom_dashboard/<dashboard_id>/
POST Requests: Create a dashboard
  • Required Parameters:

    ‘title’

  • Optional Parameters:

    ‘chart_uuids’: this associates the given chart() with a dashboard

  • Errors:

    If a title is not supplied. The API will return a 500 error.

DELETE Requests: There are two ways to submit a delete request to API
  • to delete a resource, HTTP delete request to /api/v1/custom_dashboard/<dashboard_id>/

Response Format

{
   meta: {},
   objects: [
     id: <Integer>,
     title: <String>,
     description: <String>,
     layout: <Integer>,
     rows: <JSON>,
   ],
   errors: {}
}

/api/v1/location/

class rhizome.api.resources.location.LocationResource(api_name=None)[source]
GET Request Returns locations objects. All location objects will be returned if an optional parameter is not set.
  • Optional Parameters:

    ‘location_depth’ the recursive depth in relation to the location_id parameter. For instance, a depth of 1 would get all children of that location. 2 would return all “grandchildren” ‘location_type’ return the descendants of the location_id param that have the given location_type id.

Response Format

{
  meta: {...},

  objects: [{
    id: <Number>,
    name: <String>,
    latitude: <Number>,
    longitude: <Number>,
    location_code: <String>,
    location_type: <String>,
    office_id: <Number>,
    parent_location_id: <Number>,
    resource_uri: <String>,
    created_at: "YYYY-MM-DDTHH:MM:SS.sss",
  }],

  errors: {...}
}


``/api/v1/indicator/``
++++++++++++++++++++++

.. autoclass:: rhizome.api.resources.indicator.IndicatorResource

Response Format
~~~~~~~~~~~~~~~
.. code-block:: json

   {
      meta: {},
      objects: [
        short_name: <String>,
        name: <String>,
        description: <String>,
        is_reported: <Boolean>,
        data_format: <String>,
        created_at: <Date>,
        bound_json: <JSON>,
        tag_json: <JSON>,
        office_id: <JSON>,
        good_bound: <Float>,
        bad_bound: <Float>,
        source_name: <String>
      ],
      errors: {}
   }


``/api/v1/indicator_tag/``
++++++++++++++++++++++++++

.. autoclass:: rhizome.api.resources.indicator_tag.IndicatorTagResource


.. code-block:: json

  {
    meta: {...},

    objects: [{
      id: <Number>,
      tag_name:<String>,
      parent_tag_id:<Number>
    }],

    errors: {...}
  }


``/api/v1/indicator_to_tag/``
+++++++++++++++++++++++++++++

.. autoclass:: rhizome.api.resources.indicator_to_tag.IndicatorToTagResource
{"id": 146, "indicator__short_name": "Polio From Saliva", "indicator_id": 123, "indicator_tag__tag_name": "Perceived Threat", "indicator_tag_id": 19

Response Format
~~~~~~~~~~~~~~~
.. code-block:: json

  {
    meta: {...},

    objects: [{
      id: <Integer>,
      indicator_short_name: <String>,
      indicator_id: <Integer>,
      indicator_tag_name: <String>,
      indicator_tag_id: <Integer>,
    }],

    errors: {...}
  }

/api/v1/refresh_master/

class rhizome.api.resources.refresh_master.RefreshMasterResource(api_name=None)[source]
GET Request Runs refresh master, and agg refresh for a given document
  • Required Parameters:

    ‘document_id’

  • Errors:

    returns 500 error if no document id is provided

Response Format

{
  meta: {...},

  objects: [{
    docfile: <String>,
    doc_title: <String>,
    file_header: <JSON>,
    guid: <String>,
    created_at: <Date>,
    id: <Integer>,
    resource_uri: <String>
  }],

  errors: {...}
}

/api/v1/source_doc/

class rhizome.api.resources.document.DocumentResource(api_name=None)[source]
POST Request uploads a document to the rhizome server.
  • Required Parameters:

    ‘docfile’ the base64 encoded file: csv, xls, xlsx file format ‘doc_title’ the title of the document

  • Optional Parameters:

    ‘doc_id’ an id for the document

  • Errors:

    returns 500 error of the document is empty returns 500 error if a required parameter is not supplied

Response Format

{
  meta: {...},

  objects: [{
    docfile: <String>,
    doc_title: <String>,
    file_header: <JSON>,
    guid: <String>,
    created_at: <Date>,
    id: <Integer>,
    resource_uri: <String>
  }],

  errors: {...}
}

/api/v1/source_submission/

class rhizome.api.resources.source_submission.SourceSubmissionResource(api_name=None)[source]
GET Request Returns all SourceSubmissions unless an optional parameter is specified
  • Optional Parameters:

    ‘document_id’: return only the source submissions with the specified document ids

  • Errors:

    if an incorrect document id is provided, returns an empty object list

Response Format

{
  meta: {...},

  objects: [{
    document_id: <Integer>,
    instance_guid: <String>,
    row_number: <Integer>,
    data_date: <Date>,
    location_code: <String>,
    campaign_code: <String>,
    location_display: <String>,
    submission_json: <JSON>,
    created_at: <Date>,
    process_status: <String>
  }],

  errors: {...}
}

/api/v1/transform_upload/

class rhizome.api.resources.doc_trans_form.DocTransFormResource(api_name=None)[source]
GET Request Runs document transform, refresh master, and agg refresh

for a given document - Required Parameters:

‘document_id’
  • Errors:

    returns 500 error if no document id is provided

Response Format

{
  meta: {...},

  objects: [{
    docfile: <String>,
    doc_title: <String>,
    file_header: <JSON>,
    guid: <String>,
    created_at: <Date>,
    id: <Integer>,
    resource_uri: <String>
  }],

  errors: {...}
}