Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This article shows an example of an API connection in Python.

PyPi package

We have a PyPi package available that provides functionality for authentication, authorization, and requesting resources. This package can be installed using pip.

Code Block
pip install mopinion

We provide additional and more in-depth information on https://mopinion-python-api.readthedocs.io/en/latest/.

...

Create a Python connection without the PyPi package

In the below code replace the following with your own credentials.

...

Code Block
breakoutModewide
languagepy
import requests
import base64
import hmac, hashlib
import simplejson as json
import pprint

pp = pprint.PrettyPrinter(indent=1)

def callAPI(base_url, public_key, token, endpoint='/account', method='GET', body='', query=''):
    
    
    
    signature_token = bytes(token.encode('utf-8'))
    uri_and_body = '{}|{}'.format(endpoint,body).encode('utf-8')
    uri_and_body_hmac_sha256 = hmac.new(signature_token, msg=uri_and_body, digestmod = hashlib.sha256).hexdigest()
    
    xtoken = base64.b64encode(bytes('{}:{}'.format(public_key, uri_and_body_hmac_sha256), 'utf-8'))
    url = '{}{}{}'.format(base_url, endpoint, query)
    headers = {
        'X-Auth-Token': xtoken,
        'version':'1.18.14',
        'verbosity':'full'
    }
    
    response = requests.request(method, url, data=body, headers=headers, params=query)
    return response, xtoken


baseurl = 'https://api.mopinion.com'
endpoint = '/account'

#public key and signature token
public_key = '8e8e8e8e8e88e'
token = '9d9galnojvavlkre455%lreagfglkfgslkng'
query = ''
call = callAPI(baseurl,public_key,token,endpoint,query=query)
pp.pprint(call[0].json())
print(call[1])

 

...

Easy html macro
theme{"label":"solarized_dark","value":"solarized_dark"}
contentByMode{"html":"<div id=\"surveyContent\"></div>","javascript":"var confluenceData = {};\nvar pageId;\nvar pageTitle;\n\ntry {\n confluenceData = JSON.parse(parent.window.name);\n var pageId = confluenceData.options.productContext['page.id'];\n var pageTitle = confluenceData.options.productContext['page.title'];\n} catch(e) {}\n\nvar src = 'https://collect.mopinion.com/assets/surveys/2.0/js/survey.min.js';\n\nvar vars = {\n key:'211a4fdb96626776846147095cc335b448e20458', \n domain:'app.mopinion.com', \n divName:'surveyContent', \n button:false, \n use_collect:false, \n useQuerySelectorAll:false\n};\n\nvar s = document.createElement('script');\ns.async = 'async';\ns.id = 'mopinionFeedbackScript';\ns.src = src;\ns.onload = s.onreadystatechange = function() {\n if (!s.readyState || s.readyState === 'loaded' || s.readyState === 'complete') {\n try {\n srv.loadSurvey(vars);\n } catch (e) {}\n }\n}\ndocument.head.appendChild(s);","css":""}

Filter by label (Content by label)
showLabelsfalse
max5
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@957
sortmodified
showSpacefalse
reversetrue
typepage
cqllabel = "api" and type = "page" and space = "KB"
labelsAPI
Page Properties
hiddentrue

Related issues