Skip to main content

Survey Solutions API Wrapper

Project description

SSAW: Python wrapper for the Survey Solutions HTTP API

Python package codecov PyPI version Documentation Status

Read more about Survey Solutions at https://mysurvey.solutions

Details on API at https://demo.mysurvey.solutions/apidocs/index

Quickstart

Install SSAW:

pip install ssaw

Initialize connection with the server:

import ssaw

client = ssaw.Client('https://demo.mysurvey.solutions', 'api_user', 'api_password')

Get list of questionnaires:

for q in ssaw.QuestionnairesApi(client).get_list():
    print(q.title)

Download latest export file in SPSS format:

from ssaw import ExportApi

# without export_path parameter file will be saved in the current working directory
filename = ExportApi(client).get(export_type="SPSS", questionnaire_identity="64136490cbc24a71a1df10f4b7115599$1")

Create new assignment:

from ssaw.models import Assignment
from ssaw import AssignmentsApi, QuestionnairesApi
from ssaw.models import InterviewAnswers

identifying_data = [
    {"Variable": "address", "Answer": "123 Main Street"},
    {"Variable": "name", "Answer": "Jane Doe"}
]
newobj = Assignment(
    responsible="inter1",
    questionnaire_id="",
    quantity=5,
    identifying_data=identifying_data)

res = AssignmentsApi(client).create(newobj)
print(res.id)

# More advanced example with data-preloading
q_doc = QuestionnairesApi(client).document(id="00000000-0000-0000-0000-000000000000", version=1)

d = InterviewAnswers(q_doc)
d.set_answer(variable="address", answer="123 Main Street")
d.set_answer(variable="name", answer="Jane Doe")
d.set_answer(variable="member_name", answer="Jane", roster_vector=0)  # question in the first-level roster
d.set_answer(variable="pet", answer="Cat", roster_vector=[0, 0])  # second-level roster

newobj = Assignment(
    responsible="inter1",
    questionnaire_id="",
    quantity=5,
    identifying_data=d.dict())

res = AssignmentsApi(client).create(newobj)

Get list of interviews that were updated during last 15 minutes (using GraphQL)

import datetime
from ssaw import InterviewApi

timestamp = datetime.datetime.now() - datetime.timedelta(minutes=15)
for i in InterviewsApi(client).get_list(update_date_gt=timestamp):
    print(i)

Get list of map files linked to the interviewer and remove the links

from ssaw import MapsApi

for m in MapsApi(client).get_list(filter_user="inter"):
    print(m.file_name)
    MapsApi(client).delete_user(file_name=m.file_name, user_name="inter")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ssaw-0.3.tar.gz (18.7 kB view hashes)

Uploaded Source

Built Distribution

ssaw-0.3-py3-none-any.whl (20.7 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page