API call to Senaite from Mirth Issues

when I try to create an analyst request via Mirth I receive this error
{
"_runtime" : 0.2564578056335449,
"message" : "'NoneType' object has no attribute 'getPrefix'",
"success" : false
}

However when sending the same api call via postman it works.

is there some sort of permission issue with SENAITE Core I am not aware of?

When sending a get request with Mirth Connect the api call is successful but it does not return any objects even though there are objects in Senaite. However doing the get request in postman returns the correct number of objects.

Would love someone’s insight on this.

The failure above is coming from the ID Server, probably at this line:

Is the sample type UID missing in the request data?

Maybe you can post the full request data you send.

Thanks and best regards
Ramon

this is the result from the response when I try to query clients, placed using this request url http://localhost:8081/senaite/@@API/senaite/v1/client
{
“count”: 0,
“pagesize”: 25,
“items”: [],
“page”: 1,
“_runtime”: 0.00047898292541503906,
“next”: null,
“pages”: 1,
“previous”: null
}

and for creating an analyst request: [{{URL}}](http://localhost:8081/senaite/@@API/senaite/v1/AnalysisRequest/create/0979530590c842bbbcb2150cfbc57872
this is the post body
{
“Contact”: “de5ec41b439f4f25840b74f6e5819354”,
“SampleType”: “0b49393309824187a44950d99cbad085”,
“DateSampled”: “2022-06-01 13:32:29”,
“Template”: “047b9c5153464ee894eaa6c32cc11c63”,
}

this is the full traceback when querying client, sample type and creating an analyst request.
54.196.75.144 - mirth [01/Jul/2022:13:51:52 +0000] “GET /senaite/%40%40API/senaite/v1/login?__ac_name=mirth&__ac_password=mirth HTTP/1.1” 200 1053 “-” “Apache-HttpClient/4.5.13 (Java/11.0.15)”
2022-07-01 13:51:52,613 WARNING [senaite.jsonapi:273][waitress-2] Skip None value in kw parameter ‘UID=None’
2022-07-01 13:51:52,613 WARNING [senaite.jsonapi:273][waitress-2] Skip None value in kw parameter ‘UID=None’
2022-07-01 13:51:52,613 WARNING [senaite.jsonapi:160][waitress-2] Index ‘None’ is not in allowed_indexes
2022-07-01 13:51:52,613 WARNING [senaite.jsonapi:160][waitress-2] Index ‘None’ is not in allowed_indexes
2022-07-01 13:51:52,613 INFO [senaite.jsonapi:156][waitress-2] make_query:: query={‘portal_type’: [‘Client’], ‘sort_order’: ‘ascending’} | catalog=<senaite.jsonapi.catalog.Catalog object at 0x7f9991044890>
2022-07-01 13:51:52,613 INFO [senaite.jsonapi:156][waitress-2] make_query:: query={‘portal_type’: [‘Client’], ‘sort_order’: ‘ascending’} | catalog=<senaite.jsonapi.catalog.Catalog object at 0x7f9991044890>
2022-07-01 13:51:52,613 INFO [senaite.jsonapi:53][waitress-2] Catalog query={‘portal_type’: [‘Client’], ‘sort_order’: ‘ascending’}
2022-07-01 13:51:52,613 INFO [senaite.jsonapi:53][waitress-2] Catalog query={‘portal_type’: [‘Client’], ‘sort_order’: ‘ascending’}
54.196.75.144 - - [01/Jul/2022:13:51:52 +0000] “GET /senaite/%40%40API/senaite/v1/client HTTP/1.1” 200 131 “-” “Apache-HttpClient/4.5.13 (Java/11.0.15)”
2022-07-01 13:51:52,678 WARNING [senaite.jsonapi:273][waitress-3] Skip None value in kw parameter ‘UID=None’
2022-07-01 13:51:52,678 WARNING [senaite.jsonapi:273][waitress-3] Skip None value in kw parameter ‘UID=None’
2022-07-01 13:51:52,678 WARNING [senaite.jsonapi:160][waitress-3] Index ‘None’ is not in allowed_indexes
2022-07-01 13:51:52,678 WARNING [senaite.jsonapi:160][waitress-3] Index ‘None’ is not in allowed_indexes
2022-07-01 13:51:52,678 INFO [senaite.jsonapi:156][waitress-3] make_query:: query={‘portal_type’: [‘Patient’], ‘sort_order’: ‘ascending’} | catalog=<senaite.jsonapi.catalog.Catalog object at 0x7f99a614c1d0>
2022-07-01 13:51:52,678 INFO [senaite.jsonapi:156][waitress-3] make_query:: query={‘portal_type’: [‘Patient’], ‘sort_order’: ‘ascending’} | catalog=<senaite.jsonapi.catalog.Catalog object at 0x7f99a614c1d0>
2022-07-01 13:51:52,678 INFO [senaite.jsonapi:53][waitress-3] Catalog query={‘portal_type’: [‘Patient’], ‘sort_order’: ‘ascending’}
2022-07-01 13:51:52,678 INFO [senaite.jsonapi:53][waitress-3] Catalog query={‘portal_type’: [‘Patient’], ‘sort_order’: ‘ascending’}
54.196.75.144 - - [01/Jul/2022:13:51:52 +0000] “GET /senaite/%40%40API/senaite/v1/patient HTTP/1.1” 200 2333 “-” “Apache-HttpClient/4.5.13 (Java/11.0.15)”
2022-07-01 13:51:52,737 WARNING [senaite.jsonapi:273][waitress-0] Skip None value in kw parameter ‘UID=None’
2022-07-01 13:51:52,737 WARNING [senaite.jsonapi:273][waitress-0] Skip None value in kw parameter ‘UID=None’
2022-07-01 13:51:52,737 WARNING [senaite.jsonapi:160][waitress-0] Index ‘None’ is not in allowed_indexes
2022-07-01 13:51:52,737 WARNING [senaite.jsonapi:160][waitress-0] Index ‘None’ is not in allowed_indexes
2022-07-01 13:51:52,737 INFO [senaite.jsonapi:156][waitress-0] make_query:: query={‘portal_type’: [‘SampleType’], ‘sort_order’: ‘ascending’} | catalog=<senaite.jsonapi.catalog.Catalog object at 0x7f9990d60110>
2022-07-01 13:51:52,737 INFO [senaite.jsonapi:156][waitress-0] make_query:: query={‘portal_type’: [‘SampleType’], ‘sort_order’: ‘ascending’} | catalog=<senaite.jsonapi.catalog.Catalog object at 0x7f9990d60110>
2022-07-01 13:51:52,737 INFO [senaite.jsonapi:53][waitress-0] Catalog query={‘portal_type’: [‘SampleType’], ‘sort_order’: ‘ascending’}
2022-07-01 13:51:52,737 INFO [senaite.jsonapi:53][waitress-0] Catalog query={‘portal_type’: [‘SampleType’], ‘sort_order’: ‘ascending’}
54.196.75.144 - - [01/Jul/2022:13:51:52 +0000] “GET /senaite/%40%40API/senaite/v1/SampleType HTTP/1.1” 200 130 “-” “Apache-HttpClient/4.5.13 (Java/11.0.15)”
2022-07-01 13:51:52,813 ERROR [Archetypes:160][waitress-1] None
Traceback (most recent call last):
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/BaseObject.py”, line 146, in initializeArchetype
self.setDefaults()
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/BaseObject.py”, line 445, in setDefaults
self.Schema().setDefaults(self)
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/Schema/init.py”, line 518, in setDefaults
mapply(mutator, *args, **kw)
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/utils.py”, line 131, in mapply
return method(*call_args, **kw)
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/ClassGen.py”, line 77, in generatedMutator
return schema[name].set(self, value, **kw)
File “/home/senaite/senaitelims/src/senaite.core/src/bika/lims/browser/fields/aranalysesfield.py”, line 126, in set
.format(AddAnalysis))
Unauthorized: You do not have the ‘senaite.core: Add Analysis’ permission
2022-07-01 13:51:52,813 ERROR [Archetypes:160][waitress-1] None
Traceback (most recent call last):
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/BaseObject.py”, line 146, in initializeArchetype
self.setDefaults()
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/BaseObject.py”, line 445, in setDefaults
self.Schema().setDefaults(self)
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/Schema/init.py”, line 518, in setDefaults
mapply(mutator, *args, **kw)
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/utils.py”, line 131, in mapply
return method(*call_args, **kw)
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/ClassGen.py”, line 77, in generatedMutator
return schema[name].set(self, value, **kw)
File “/home/senaite/senaitelims/src/senaite.core/src/bika/lims/browser/fields/aranalysesfield.py”, line 126, in set
.format(AddAnalysis))
Unauthorized: You do not have the ‘senaite.core: Add Analysis’ permission
2022-07-01 13:51:52,884 INFO [senaite.core:76][waitress-1] Generating catalog metadata for ‘/senaite/clients/client-1/d59541e43383c6c7230a68ac079e31eb’ manually
2022-07-01 13:51:52,884 INFO [senaite.core:76][waitress-1] Generating catalog metadata for ‘/senaite/clients/client-1/d59541e43383c6c7230a68ac079e31eb’ manually
2022-07-01 13:51:52,950 INFO [senaite.core:76][waitress-1] Generating catalog metadata for ‘/senaite/clients/client-1/d59541e43383c6c7230a68ac079e31eb’ manually
2022-07-01 13:51:52,950 INFO [senaite.core:76][waitress-1] Generating catalog metadata for ‘/senaite/clients/client-1/d59541e43383c6c7230a68ac079e31eb’ manually
2022-07-01 13:51:53,039 INFO [senaite.core:76][waitress-1] Generating catalog metadata for ‘/senaite/clients/client-1/d59541e43383c6c7230a68ac079e31eb’ manually
2022-07-01 13:51:53,039 INFO [senaite.core:76][waitress-1] Generating catalog metadata for ‘/senaite/clients/client-1/d59541e43383c6c7230a68ac079e31eb’ manually
Traceback (most recent call last):
File “/home/senaite/senaitelims/eggs/cp27mu/plone.jsonapi.core-0.7.0-py2.7.egg/plone/jsonapi/core/browser/decorators.py”, line 23, in decorator
return f(*args, **kwargs)
File “/home/senaite/senaitelims/eggs/cp27mu/plone.jsonapi.core-0.7.0-py2.7.egg/plone/jsonapi/core/browser/api.py”, line 57, in to_json
return self.dispatch()
File “/home/senaite/senaitelims/eggs/cp27mu/plone.jsonapi.core-0.7.0-py2.7.egg/plone/jsonapi/core/browser/api.py”, line 51, in dispatch
return router(self.context, self.request, path)
File “/home/senaite/senaitelims/eggs/cp27mu/plone.jsonapi.core-0.7.0-py2.7.egg/plone/jsonapi/core/browser/router.py”, line 150, in call
return self.view_functions[endpoint](context, request, **values)
File “/home/senaite/senaitelims/src/senaite.jsonapi/src/senaite/jsonapi/v1/routes/content.py”, line 88, in action
items = action_func(portal_type=portal_type, uid=uid)
File “/home/senaite/senaitelims/src/senaite.jsonapi/src/senaite/jsonapi/api.py”, line 158, in create_items
obj = create_object(container, portal_type, **record)
File “/home/senaite/senaitelims/src/senaite.jsonapi/src/senaite/jsonapi/api.py”, line 1387, in create_object
obj = create_analysisrequest(container, **data)
File “/home/senaite/senaitelims/src/senaite.jsonapi/src/senaite/jsonapi/api.py”, line 1422, in create_analysisrequest
return create_ar(container, request, data)
File “/home/senaite/senaitelims/src/senaite.core/src/bika/lims/utils/analysisrequest.py”, line 84, in create_analysisrequest
ar.processForm(REQUEST=request, values=values)
File “/home/senaite/senaitelims/eggs/cp27mu/Products.Archetypes-1.16.6-py2.7.egg/Products/Archetypes/BaseObject.py”, line 679, in processForm
self._renameAfterCreation(check_auto_id=True)
File “/home/senaite/senaitelims/src/senaite.core/src/bika/lims/content/analysisrequest.py”, line 1404, in _renameAfterCreation
renameAfterCreation(self)
File “/home/senaite/senaitelims/src/senaite.core/src/bika/lims/idserver.py”, line 549, in renameAfterCreation
new_id = generateUniqueId(obj)
File “/home/senaite/senaitelims/src/senaite.core/src/bika/lims/idserver.py”, line 490, in generateUniqueId
variables = get_variables(context, **kw)
File “/home/senaite/senaitelims/src/senaite.core/src/bika/lims/idserver.py”, line 245, in get_variables
“sampleType”: context.getSampleType().getPrefix(),
AttributeError: ‘NoneType’ object has no attribute ‘getPrefix’
54.196.75.144 - - [01/Jul/2022:13:51:52 +0000] “POST /senaite/%40%40API/senaite/v1/AnalysisRequest/create/1857d878a7ec4c67989e9968c8a295f6 HTTP/1.1” 200 111 “-” “Apache-HttpClient/4.5.13 (Java/11.0.15)”

Is anyone else having this issue?