egain-api-python 0.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- egain_api_python/__init__.py +17 -0
- egain_api_python/_hooks/__init__.py +5 -0
- egain_api_python/_hooks/registration.py +13 -0
- egain_api_python/_hooks/sdkhooks.py +76 -0
- egain_api_python/_hooks/types.py +112 -0
- egain_api_python/_version.py +15 -0
- egain_api_python/aiservices.py +23 -0
- egain_api_python/answers.py +281 -0
- egain_api_python/articlelists.py +469 -0
- egain_api_python/basesdk.py +368 -0
- egain_api_python/connectorssearchevents.py +537 -0
- egain_api_python/content.py +23 -0
- egain_api_python/errors/__init__.py +78 -0
- egain_api_python/errors/egaindefaulterror.py +40 -0
- egain_api_python/errors/egainerror.py +30 -0
- egain_api_python/errors/gethealthop.py +74 -0
- egain_api_python/errors/no_response_error.py +17 -0
- egain_api_python/errors/responsevalidationerror.py +27 -0
- egain_api_python/errors/schemas_wserrorcommon.py +51 -0
- egain_api_python/errors/wserrorcommon.py +49 -0
- egain_api_python/escalation.py +955 -0
- egain_api_python/export.py +487 -0
- egain_api_python/federatedsearchevent.py +287 -0
- egain_api_python/general.py +925 -0
- egain_api_python/guidedhelp.py +3373 -0
- egain_api_python/health.py +253 -0
- egain_api_python/httpclient.py +125 -0
- egain_api_python/import_.py +1161 -0
- egain_api_python/models/__init__.py +2136 -0
- egain_api_python/models/acceptghsolutionop.py +52 -0
- egain_api_python/models/acceptlanguage.py +23 -0
- egain_api_python/models/accessibleportal.py +37 -0
- egain_api_python/models/action.py +56 -0
- egain_api_python/models/actionsearch.py +92 -0
- egain_api_python/models/addasreferenceop.py +52 -0
- egain_api_python/models/addbookmarkop.py +43 -0
- egain_api_python/models/additionalsnippets.py +57 -0
- egain_api_python/models/addtoreplyop.py +52 -0
- egain_api_python/models/aisearchop.py +131 -0
- egain_api_python/models/aisearchresponse.py +67 -0
- egain_api_python/models/allaccessibleportals.py +28 -0
- egain_api_python/models/answer.py +21 -0
- egain_api_python/models/answeredquestion.py +125 -0
- egain_api_python/models/answerrange.py +41 -0
- egain_api_python/models/answersrequest.py +78 -0
- egain_api_python/models/answersresponse.py +93 -0
- egain_api_python/models/article.py +241 -0
- egain_api_python/models/articleactivitylink.py +62 -0
- egain_api_python/models/articleadditionalattributes.py +23 -0
- egain_api_python/models/articleaisearchresult.py +254 -0
- egain_api_python/models/articleattachment.py +44 -0
- egain_api_python/models/articlelist.py +48 -0
- egain_api_python/models/articlelistresult.py +38 -0
- egain_api_python/models/articlelistsresult.py +22 -0
- egain_api_python/models/articlepermissions.py +25 -0
- egain_api_python/models/articlepermissionsresult.py +27 -0
- egain_api_python/models/articlerating.py +51 -0
- egain_api_python/models/articleratingsresponse.py +28 -0
- egain_api_python/models/articleresult.py +159 -0
- egain_api_python/models/articleresultadditionalattributes.py +22 -0
- egain_api_python/models/articleresults.py +32 -0
- egain_api_python/models/articlesearchresult.py +243 -0
- egain_api_python/models/articlesearchresults.py +32 -0
- egain_api_python/models/articlesort.py +11 -0
- egain_api_python/models/articlesortorder.py +11 -0
- egain_api_python/models/articletype.py +56 -0
- egain_api_python/models/articlewitheditions.py +227 -0
- egain_api_python/models/attachment.py +31 -0
- egain_api_python/models/attachmentadditionalattributes.py +10 -0
- egain_api_python/models/attachmentcontent.py +57 -0
- egain_api_python/models/attachmentcontentresult.py +22 -0
- egain_api_python/models/attachmentforcreatesuggestion.py +25 -0
- egain_api_python/models/attachments.py +35 -0
- egain_api_python/models/attachmentsummary.py +37 -0
- egain_api_python/models/attachmentupload.py +20 -0
- egain_api_python/models/avertcustomerescalationop.py +44 -0
- egain_api_python/models/bookmark.py +57 -0
- egain_api_python/models/bookmarkresult.py +26 -0
- egain_api_python/models/bookmarkstatus.py +34 -0
- egain_api_python/models/case.py +158 -0
- egain_api_python/models/caseadditionalattributes.py +11 -0
- egain_api_python/models/caseanswer.py +21 -0
- egain_api_python/models/casebase.py +67 -0
- egain_api_python/models/casebaseresult.py +28 -0
- egain_api_python/models/casebasesearchsettings.py +26 -0
- egain_api_python/models/caselistresult.py +74 -0
- egain_api_python/models/caselistresults.py +28 -0
- egain_api_python/models/casequestion.py +16 -0
- egain_api_python/models/casequestiondetail.py +29 -0
- egain_api_python/models/casesearch.py +80 -0
- egain_api_python/models/clusterid.py +16 -0
- egain_api_python/models/clusterresult.py +37 -0
- egain_api_python/models/clusterresults.py +28 -0
- egain_api_python/models/comment.py +33 -0
- egain_api_python/models/comments.py +26 -0
- egain_api_python/models/completecustomerescalationop.py +44 -0
- egain_api_python/models/compliancearticleresult.py +166 -0
- egain_api_python/models/compliancearticleresultadditionalattributes.py +22 -0
- egain_api_python/models/compliancearticleresults.py +35 -0
- egain_api_python/models/complianceforarticle.py +59 -0
- egain_api_python/models/complyarticleop.py +40 -0
- egain_api_python/models/components_schemas_tag.py +25 -0
- egain_api_python/models/components_schemas_tagcategory.py +39 -0
- egain_api_python/models/components_schemas_taggroup.py +25 -0
- egain_api_python/models/configurableattribute.py +25 -0
- egain_api_python/models/configurableattributes.py +15 -0
- egain_api_python/models/contactperson.py +43 -0
- egain_api_python/models/contacts.py +21 -0
- egain_api_python/models/createbookmark.py +64 -0
- egain_api_python/models/createdby.py +37 -0
- egain_api_python/models/createfederatedsearchevent.py +85 -0
- egain_api_python/models/createfederatedsearchresulteventop.py +46 -0
- egain_api_python/models/createimportop.py +20 -0
- egain_api_python/models/createimportvalidationop.py +20 -0
- egain_api_python/models/createquickpick.py +34 -0
- egain_api_python/models/createquickpickop.py +55 -0
- egain_api_python/models/createsearchresulteventforconnectors.py +71 -0
- egain_api_python/models/createsearchresulteventforconnectorsop.py +48 -0
- egain_api_python/models/createsignedurlop.py +29 -0
- egain_api_python/models/createsuggestion.py +126 -0
- egain_api_python/models/createviewedsearchresulteventforconnectors.py +76 -0
- egain_api_python/models/createviewedsearchresultseventforconnectorsop.py +48 -0
- egain_api_python/models/customattribute.py +35 -0
- egain_api_python/models/deletebookmarkop.py +40 -0
- egain_api_python/models/deletesuggestionop.py +40 -0
- egain_api_python/models/department.py +21 -0
- egain_api_python/models/detailfield.py +32 -0
- egain_api_python/models/displayfield.py +27 -0
- egain_api_python/models/dynamiccluster.py +21 -0
- egain_api_python/models/dynamicsearch.py +40 -0
- egain_api_python/models/edition.py +79 -0
- egain_api_python/models/editionwithcontent.py +68 -0
- egain_api_python/models/email.py +21 -0
- egain_api_python/models/exportcontentop.py +14 -0
- egain_api_python/models/exportstatus.py +106 -0
- egain_api_python/models/exportstatusop.py +31 -0
- egain_api_python/models/feedbackarticleforsuggestion.py +34 -0
- egain_api_python/models/folderbreadcrumb.py +24 -0
- egain_api_python/models/foldersummary.py +29 -0
- egain_api_python/models/getacknowledgedcompliancearticlesop.py +119 -0
- egain_api_python/models/getallarticlelistsop.py +47 -0
- egain_api_python/models/getallcasebasesreleasesop.py +65 -0
- egain_api_python/models/getallcasesop.py +83 -0
- egain_api_python/models/getallportalsop.py +60 -0
- egain_api_python/models/getallprofilesinportalop.py +64 -0
- egain_api_python/models/getallquickpicksop.py +83 -0
- egain_api_python/models/getalltopicsop.py +132 -0
- egain_api_python/models/getalluserprofilesop.py +47 -0
- egain_api_python/models/getancestortopicsop.py +133 -0
- egain_api_python/models/getannouncementarticlesop.py +134 -0
- egain_api_python/models/getarticleattachmentbyidop.py +31 -0
- egain_api_python/models/getarticlebyidop.py +257 -0
- egain_api_python/models/getarticlebyidwitheditionsop.py +46 -0
- egain_api_python/models/getarticleeditiondetailsop.py +55 -0
- egain_api_python/models/getarticlelistdetailsop.py +115 -0
- egain_api_python/models/getarticlepermissionsbyidop.py +40 -0
- egain_api_python/models/getarticlepersonalizationop.py +73 -0
- egain_api_python/models/getarticleratingsop.py +74 -0
- egain_api_python/models/getarticlesintopicop.py +172 -0
- egain_api_python/models/getattachmentbyidinportalop.py +56 -0
- egain_api_python/models/getbookmarkop.py +31 -0
- egain_api_python/models/getcasebasereleasebyidop.py +64 -0
- egain_api_python/models/getcasebyidop.py +75 -0
- egain_api_python/models/getchildtopicsop.py +150 -0
- egain_api_python/models/getclusterbycasebasereleaseidop.py +74 -0
- egain_api_python/models/gethealthop.py +130 -0
- egain_api_python/models/getimportcontentop.py +46 -0
- egain_api_python/models/getmyportalsop.py +97 -0
- egain_api_python/models/getmysubscriptionop.py +115 -0
- egain_api_python/models/getpendingcompliancearticlesop.py +119 -0
- egain_api_python/models/getpopulararticlesop.py +133 -0
- egain_api_python/models/getportaldetailsbyidop.py +47 -0
- egain_api_python/models/getrelatedarticlesforsuggestionop.py +96 -0
- egain_api_python/models/getrelatedarticlesop.py +143 -0
- egain_api_python/models/getsuggestionattachmentbyidop.py +76 -0
- egain_api_python/models/getsuggestionattachmentsop.py +40 -0
- egain_api_python/models/getsuggestioncommentsop.py +40 -0
- egain_api_python/models/getsuggestionop.py +107 -0
- egain_api_python/models/gettagcategoriesforinterestforportalop.py +46 -0
- egain_api_python/models/gettopicbreadcrumbforarticleop.py +55 -0
- egain_api_python/models/getuserdetailsop.py +22 -0
- egain_api_python/models/getusermilestonesop.py +22 -0
- egain_api_python/models/ghsearchrequest.py +67 -0
- egain_api_python/models/ghsearchresult.py +75 -0
- egain_api_python/models/ghstepsearchrequest.py +64 -0
- egain_api_python/models/image.py +17 -0
- egain_api_python/models/importcontent.py +79 -0
- egain_api_python/models/importstatus.py +29 -0
- egain_api_python/models/kblanguage.py +63 -0
- egain_api_python/models/kblanguagecode.py +48 -0
- egain_api_python/models/kblanguages.py +22 -0
- egain_api_python/models/knowledgeexport.py +237 -0
- egain_api_python/models/l10nstring.py +22 -0
- egain_api_python/models/languagecode.py +39 -0
- egain_api_python/models/languagecode_parameter.py +39 -0
- egain_api_python/models/languagequeryparameter.py +39 -0
- egain_api_python/models/link.py +25 -0
- egain_api_python/models/makesuggestionop.py +44 -0
- egain_api_python/models/mandatorylanguagequeryparameter.py +38 -0
- egain_api_python/models/metadata.py +29 -0
- egain_api_python/models/milestone.py +21 -0
- egain_api_python/models/milestonename.py +26 -0
- egain_api_python/models/milestones.py +21 -0
- egain_api_python/models/modifiedby.py +37 -0
- egain_api_python/models/modifysuggestion.py +78 -0
- egain_api_python/models/modifysuggestionsop.py +44 -0
- egain_api_python/models/optionalarticleattributes.py +20 -0
- egain_api_python/models/order.py +10 -0
- egain_api_python/models/ownedby.py +37 -0
- egain_api_python/models/paginationinfo.py +32 -0
- egain_api_python/models/patchimportcontentvalidationop.py +46 -0
- egain_api_python/models/personalization.py +67 -0
- egain_api_python/models/phone.py +21 -0
- egain_api_python/models/portal.py +102 -0
- egain_api_python/models/portalresult.py +28 -0
- egain_api_python/models/portalsettings.py +398 -0
- egain_api_python/models/post_portalid_answersop.py +88 -0
- egain_api_python/models/post_portalid_retrieveop.py +88 -0
- egain_api_python/models/profile.py +26 -0
- egain_api_python/models/profileresult.py +24 -0
- egain_api_python/models/publishprofile.py +30 -0
- egain_api_python/models/publishview.py +38 -0
- egain_api_python/models/question.py +101 -0
- egain_api_python/models/questionandanswer.py +26 -0
- egain_api_python/models/quickpickrating.py +32 -0
- egain_api_python/models/quickpickresult.py +38 -0
- egain_api_python/models/quickpickresults.py +28 -0
- egain_api_python/models/ratearticleop.py +71 -0
- egain_api_python/models/referenceresponse.py +80 -0
- egain_api_python/models/rejectghsolutionop.py +52 -0
- egain_api_python/models/relatedquestions.py +28 -0
- egain_api_python/models/resourcetype_parameter.py +10 -0
- egain_api_python/models/restorequickpickop.py +63 -0
- egain_api_python/models/retrieverequest.py +47 -0
- egain_api_python/models/retrieveresponse.py +96 -0
- egain_api_python/models/role.py +26 -0
- egain_api_python/models/roletemplate.py +25 -0
- egain_api_python/models/schemas_answer.py +94 -0
- egain_api_python/models/schemas_customattribute.py +35 -0
- egain_api_python/models/schemas_link.py +27 -0
- egain_api_python/models/schemas_tag.py +21 -0
- egain_api_python/models/schemas_tagcategory.py +75 -0
- egain_api_python/models/schemas_taggroup.py +31 -0
- egain_api_python/models/schemas_tags.py +19 -0
- egain_api_python/models/schemas_wserrorcommon.py +17 -0
- egain_api_python/models/searchfilterattribute.py +61 -0
- egain_api_python/models/searchpriortoescalationop.py +108 -0
- egain_api_python/models/searchresult.py +101 -0
- egain_api_python/models/searchsuggestionop.py +93 -0
- egain_api_python/models/security.py +25 -0
- egain_api_python/models/selectuserprofileop.py +44 -0
- egain_api_python/models/sessioncontextvariable.py +17 -0
- egain_api_python/models/shorturl.py +32 -0
- egain_api_python/models/sortidname.py +10 -0
- egain_api_python/models/sortidnamedepartment.py +11 -0
- egain_api_python/models/stage.py +26 -0
- egain_api_python/models/startcustomerescalationop.py +66 -0
- egain_api_python/models/startescalationrequest.py +94 -0
- egain_api_python/models/startghsearchop.py +74 -0
- egain_api_python/models/startquestionandanswer.py +26 -0
- egain_api_python/models/stepghsearchop.py +62 -0
- egain_api_python/models/stringattributevalue.py +30 -0
- egain_api_python/models/structuredauthoringfields.py +33 -0
- egain_api_python/models/subscribearticleop.py +40 -0
- egain_api_python/models/suggestion.py +190 -0
- egain_api_python/models/suggestionadditionalattributes.py +11 -0
- egain_api_python/models/suggestionattachment.py +46 -0
- egain_api_python/models/suggestions.py +28 -0
- egain_api_python/models/tag.py +17 -0
- egain_api_python/models/tagcategoriesforinterest.py +22 -0
- egain_api_python/models/tagcategory.py +34 -0
- egain_api_python/models/taggroup.py +17 -0
- egain_api_python/models/taggroups.py +20 -0
- egain_api_python/models/tags.py +17 -0
- egain_api_python/models/topic.py +113 -0
- egain_api_python/models/topicadditionalattributes.py +20 -0
- egain_api_python/models/topicaisearchresult.py +67 -0
- egain_api_python/models/topicbreadcrumb.py +24 -0
- egain_api_python/models/topicresult.py +26 -0
- egain_api_python/models/topicsummary.py +31 -0
- egain_api_python/models/topictreenode.py +27 -0
- egain_api_python/models/topictreeresult.py +28 -0
- egain_api_python/models/unsubscribearticleop.py +55 -0
- egain_api_python/models/uploadattachmentop.py +36 -0
- egain_api_python/models/userdetails.py +44 -0
- egain_api_python/models/userprofile.py +33 -0
- egain_api_python/models/userprofiles.py +21 -0
- egain_api_python/models/userview.py +33 -0
- egain_api_python/models/validateimportcontent.py +58 -0
- egain_api_python/models/virtualcase.py +52 -0
- egain_api_python/models/workflow.py +21 -0
- egain_api_python/models/workflowmilestone.py +11 -0
- egain_api_python/models/wserrorcommon.py +17 -0
- egain_api_python/populararticles.py +287 -0
- egain_api_python/portal_article.py +4935 -0
- egain_api_python/portal_attachment.py +494 -0
- egain_api_python/portal_bookmark.py +707 -0
- egain_api_python/portal_sdk.py +88 -0
- egain_api_python/portal_suggestion.py +2283 -0
- egain_api_python/portal_topic.py +975 -0
- egain_api_python/portal_userdetails.py +211 -0
- egain_api_python/portal_userprofile.py +431 -0
- egain_api_python/py.typed +1 -0
- egain_api_python/retrieve.py +265 -0
- egain_api_python/sdk.py +216 -0
- egain_api_python/sdkconfiguration.py +50 -0
- egain_api_python/search.py +251 -0
- egain_api_python/types/__init__.py +21 -0
- egain_api_python/types/basemodel.py +39 -0
- egain_api_python/usermilestones.py +219 -0
- egain_api_python/utils/__init__.py +200 -0
- egain_api_python/utils/annotations.py +79 -0
- egain_api_python/utils/datetimes.py +23 -0
- egain_api_python/utils/enums.py +74 -0
- egain_api_python/utils/eventstreaming.py +248 -0
- egain_api_python/utils/forms.py +223 -0
- egain_api_python/utils/headers.py +136 -0
- egain_api_python/utils/logger.py +27 -0
- egain_api_python/utils/metadata.py +118 -0
- egain_api_python/utils/queryparams.py +205 -0
- egain_api_python/utils/requestbodies.py +66 -0
- egain_api_python/utils/retries.py +217 -0
- egain_api_python/utils/security.py +192 -0
- egain_api_python/utils/serializers.py +249 -0
- egain_api_python/utils/unmarshal_json_response.py +24 -0
- egain_api_python/utils/url.py +155 -0
- egain_api_python/utils/values.py +137 -0
- egain_api_python-0.1.1.dist-info/METADATA +827 -0
- egain_api_python-0.1.1.dist-info/RECORD +332 -0
- egain_api_python-0.1.1.dist-info/WHEEL +5 -0
- egain_api_python-0.1.1.dist-info/licenses/LICENSE +21 -0
- egain_api_python-0.1.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,487 @@
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
2
|
+
|
3
|
+
from .basesdk import BaseSDK
|
4
|
+
from egain_api_python import errors, models, utils
|
5
|
+
from egain_api_python._hooks import HookContext
|
6
|
+
from egain_api_python.types import OptionalNullable, UNSET
|
7
|
+
from egain_api_python.utils import get_security_from_env
|
8
|
+
from egain_api_python.utils.unmarshal_json_response import unmarshal_json_response
|
9
|
+
from typing import Any, List, Mapping, Optional, Union
|
10
|
+
|
11
|
+
|
12
|
+
class Export(BaseSDK):
|
13
|
+
def export_content(
|
14
|
+
self,
|
15
|
+
*,
|
16
|
+
portal_id: str,
|
17
|
+
language: Union[
|
18
|
+
models.KnowledgeExportLanguage, models.KnowledgeExportLanguageTypedDict
|
19
|
+
],
|
20
|
+
resource_types: List[models.KnowledgeExportResourceType],
|
21
|
+
data_destination: Union[
|
22
|
+
models.DataDestination, models.DataDestinationTypedDict
|
23
|
+
],
|
24
|
+
article_categories: Optional[models.ArticleCategories] = "searchable",
|
25
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
26
|
+
server_url: Optional[str] = None,
|
27
|
+
timeout_ms: Optional[int] = None,
|
28
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
29
|
+
) -> models.ExportContentResponse:
|
30
|
+
r"""Export Knowledge
|
31
|
+
|
32
|
+
## Overview
|
33
|
+
The Content Export API initiates a bulk export of the Knowledge Hub to a client-provided Amazon S3 bucket or SFTP server path.
|
34
|
+
It returns a URL with a Job ID to enable tracking the status of this asynchronous operation.
|
35
|
+
Each export job can send multiple JSON files, depending on the total number of items to process.
|
36
|
+
More than one bulk export can take place, as needed, one per portal.
|
37
|
+
|
38
|
+
## Permission
|
39
|
+
* Only a client application can invoke this API.
|
40
|
+
|
41
|
+
|
42
|
+
:param portal_id: The ID of the portal being accessed.<br><br>A portal ID is composed of a 2-4 letter prefix, followed by a dash and 4-15 digits.
|
43
|
+
:param language: The Knowledge Base language in which the content is created.
|
44
|
+
:param resource_types: Types of Knowledge Hub resources to export. Multiple values can be specified using a comma-separated list. Details of a single portal are exported. Articles whose state is Published are returned. | Portal Attribute Name | Description | ------------------------------- | ----------- | id | The ID of the Portal in Readable format. | alternateId | The system-generated ID of the Portal in long format. | name | The name of the Portal. | description | The Portal's description. | departmentId | ID of the department this Portal belongs to. | defaultContentLanguageId | The default ID of the language for the portal content. | Topic Attribute Name | Description | ------------------------------ | ----------- | id | The ID of the Topic in Readable form. | alternateId | The system-generated ID of the Topic in long form. | name | The name of the Topic. | departmentId | ID of the department this Topic belongs to. | modifiedDate | The date when the Topic was last modified on. | topicHomeArticleId | The ID of the Article used as the home page of this Topic. | childCount | Total number of children sub-topis below the current Topic. | subTopicIds | Array with the list of sub-topics (all levels of the topic hierarchy). | parentTopicId | ID of the parent Topic. -1 if it is the root Topic. | imageURL | URL of the inline Topic image. | customAttributes | One or more comma-separated names for Topic custom attributes defined by the user to be returned. | Article Attribute Name | Description | ---------------------- | ----------- | id | The ID of the Article in Readable form. | alternateId | The system-generated ID of the Article in long form. | name | The name of the Article. | additionalInfo | Additional information provided as Article metadata. | type | The Article type object and its attributes. | keywords | A comma-separated list of keywords associated with this Article, provided as metadata. | summary | A brief summary of the Article, provided as metadata. | state | The state of the Article. State P (Published). | departmentId | ID of the department this Article belongs to. | description | The description of the Article. | imageURL | The URL of the image that is present in the Article version. It is used as the thumbnail image for the Article. | attachements | The Article's uploaded attachments and their IDs. | includeInGenAI | Indicates whether this Article is used for eGain's generative AI features. | topicBreadcrumb | Contains a list of topics from the top-level topic to this Article. There may be multiple paths. | versionId | The ID of the Article version that is returned. | expirationDate | The date that the Article is set to expire. | averageRating | Average rating of the Article. | timesRated | Number or times the Article was rated. | availabilityDate | The date the Article is set to be available. | articleMacro | The macro of the Article. | content | path to the Article content in .html format. | customAttributes | One or more comma-separated names for Article custom attributes defined by the user to be returned. | personalization | Article personalization details, incuding tag categories. | editions | The editions of the Article, including the publish profile (view) associated with each edition.
|
45
|
+
:param data_destination:
|
46
|
+
:param article_categories: Category of articles to return. All includes browsable and searchable.
|
47
|
+
:param retries: Override the default retry configuration for this method
|
48
|
+
:param server_url: Override the default server URL for this method
|
49
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
50
|
+
:param http_headers: Additional headers to set or replace on requests.
|
51
|
+
"""
|
52
|
+
base_url = None
|
53
|
+
url_variables = None
|
54
|
+
if timeout_ms is None:
|
55
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
56
|
+
|
57
|
+
if server_url is not None:
|
58
|
+
base_url = server_url
|
59
|
+
else:
|
60
|
+
base_url = self._get_url(base_url, url_variables)
|
61
|
+
|
62
|
+
request = models.KnowledgeExport(
|
63
|
+
article_categories=article_categories,
|
64
|
+
portal_id=portal_id,
|
65
|
+
language=utils.get_pydantic_model(language, models.KnowledgeExportLanguage),
|
66
|
+
resource_types=resource_types,
|
67
|
+
data_destination=utils.get_pydantic_model(
|
68
|
+
data_destination, models.DataDestination
|
69
|
+
),
|
70
|
+
)
|
71
|
+
|
72
|
+
req = self._build_request(
|
73
|
+
method="POST",
|
74
|
+
path="/content/export",
|
75
|
+
base_url=base_url,
|
76
|
+
url_variables=url_variables,
|
77
|
+
request=request,
|
78
|
+
request_body_required=True,
|
79
|
+
request_has_path_params=False,
|
80
|
+
request_has_query_params=True,
|
81
|
+
user_agent_header="user-agent",
|
82
|
+
accept_header_value="application/json",
|
83
|
+
http_headers=http_headers,
|
84
|
+
security=self.sdk_configuration.security,
|
85
|
+
get_serialized_body=lambda: utils.serialize_request_body(
|
86
|
+
request, False, False, "json", models.KnowledgeExport
|
87
|
+
),
|
88
|
+
timeout_ms=timeout_ms,
|
89
|
+
)
|
90
|
+
|
91
|
+
if retries == UNSET:
|
92
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
93
|
+
retries = self.sdk_configuration.retry_config
|
94
|
+
|
95
|
+
retry_config = None
|
96
|
+
if isinstance(retries, utils.RetryConfig):
|
97
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
98
|
+
|
99
|
+
http_res = self.do_request(
|
100
|
+
hook_ctx=HookContext(
|
101
|
+
config=self.sdk_configuration,
|
102
|
+
base_url=base_url or "",
|
103
|
+
operation_id="exportContent",
|
104
|
+
oauth2_scopes=[],
|
105
|
+
security_source=get_security_from_env(
|
106
|
+
self.sdk_configuration.security, models.Security
|
107
|
+
),
|
108
|
+
),
|
109
|
+
request=req,
|
110
|
+
error_status_codes=["400", "401", "4XX", "500", "5XX"],
|
111
|
+
retry_config=retry_config,
|
112
|
+
)
|
113
|
+
|
114
|
+
response_data: Any = None
|
115
|
+
if utils.match_response(http_res, "202", "*"):
|
116
|
+
return models.ExportContentResponse(
|
117
|
+
headers=utils.get_response_headers(http_res.headers)
|
118
|
+
)
|
119
|
+
if utils.match_response(http_res, ["400", "401"], "application/json"):
|
120
|
+
response_data = unmarshal_json_response(errors.WSErrorCommonData, http_res)
|
121
|
+
raise errors.WSErrorCommon(response_data, http_res)
|
122
|
+
if utils.match_response(http_res, "500", "application/json"):
|
123
|
+
response_data = unmarshal_json_response(errors.WSErrorCommonData, http_res)
|
124
|
+
raise errors.WSErrorCommon(response_data, http_res)
|
125
|
+
if utils.match_response(http_res, "4XX", "*"):
|
126
|
+
http_res_text = utils.stream_to_text(http_res)
|
127
|
+
raise errors.EgainDefaultError(
|
128
|
+
"API error occurred", http_res, http_res_text
|
129
|
+
)
|
130
|
+
if utils.match_response(http_res, "5XX", "*"):
|
131
|
+
http_res_text = utils.stream_to_text(http_res)
|
132
|
+
raise errors.EgainDefaultError(
|
133
|
+
"API error occurred", http_res, http_res_text
|
134
|
+
)
|
135
|
+
|
136
|
+
raise errors.EgainDefaultError("Unexpected response received", http_res)
|
137
|
+
|
138
|
+
async def export_content_async(
|
139
|
+
self,
|
140
|
+
*,
|
141
|
+
portal_id: str,
|
142
|
+
language: Union[
|
143
|
+
models.KnowledgeExportLanguage, models.KnowledgeExportLanguageTypedDict
|
144
|
+
],
|
145
|
+
resource_types: List[models.KnowledgeExportResourceType],
|
146
|
+
data_destination: Union[
|
147
|
+
models.DataDestination, models.DataDestinationTypedDict
|
148
|
+
],
|
149
|
+
article_categories: Optional[models.ArticleCategories] = "searchable",
|
150
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
151
|
+
server_url: Optional[str] = None,
|
152
|
+
timeout_ms: Optional[int] = None,
|
153
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
154
|
+
) -> models.ExportContentResponse:
|
155
|
+
r"""Export Knowledge
|
156
|
+
|
157
|
+
## Overview
|
158
|
+
The Content Export API initiates a bulk export of the Knowledge Hub to a client-provided Amazon S3 bucket or SFTP server path.
|
159
|
+
It returns a URL with a Job ID to enable tracking the status of this asynchronous operation.
|
160
|
+
Each export job can send multiple JSON files, depending on the total number of items to process.
|
161
|
+
More than one bulk export can take place, as needed, one per portal.
|
162
|
+
|
163
|
+
## Permission
|
164
|
+
* Only a client application can invoke this API.
|
165
|
+
|
166
|
+
|
167
|
+
:param portal_id: The ID of the portal being accessed.<br><br>A portal ID is composed of a 2-4 letter prefix, followed by a dash and 4-15 digits.
|
168
|
+
:param language: The Knowledge Base language in which the content is created.
|
169
|
+
:param resource_types: Types of Knowledge Hub resources to export. Multiple values can be specified using a comma-separated list. Details of a single portal are exported. Articles whose state is Published are returned. | Portal Attribute Name | Description | ------------------------------- | ----------- | id | The ID of the Portal in Readable format. | alternateId | The system-generated ID of the Portal in long format. | name | The name of the Portal. | description | The Portal's description. | departmentId | ID of the department this Portal belongs to. | defaultContentLanguageId | The default ID of the language for the portal content. | Topic Attribute Name | Description | ------------------------------ | ----------- | id | The ID of the Topic in Readable form. | alternateId | The system-generated ID of the Topic in long form. | name | The name of the Topic. | departmentId | ID of the department this Topic belongs to. | modifiedDate | The date when the Topic was last modified on. | topicHomeArticleId | The ID of the Article used as the home page of this Topic. | childCount | Total number of children sub-topis below the current Topic. | subTopicIds | Array with the list of sub-topics (all levels of the topic hierarchy). | parentTopicId | ID of the parent Topic. -1 if it is the root Topic. | imageURL | URL of the inline Topic image. | customAttributes | One or more comma-separated names for Topic custom attributes defined by the user to be returned. | Article Attribute Name | Description | ---------------------- | ----------- | id | The ID of the Article in Readable form. | alternateId | The system-generated ID of the Article in long form. | name | The name of the Article. | additionalInfo | Additional information provided as Article metadata. | type | The Article type object and its attributes. | keywords | A comma-separated list of keywords associated with this Article, provided as metadata. | summary | A brief summary of the Article, provided as metadata. | state | The state of the Article. State P (Published). | departmentId | ID of the department this Article belongs to. | description | The description of the Article. | imageURL | The URL of the image that is present in the Article version. It is used as the thumbnail image for the Article. | attachements | The Article's uploaded attachments and their IDs. | includeInGenAI | Indicates whether this Article is used for eGain's generative AI features. | topicBreadcrumb | Contains a list of topics from the top-level topic to this Article. There may be multiple paths. | versionId | The ID of the Article version that is returned. | expirationDate | The date that the Article is set to expire. | averageRating | Average rating of the Article. | timesRated | Number or times the Article was rated. | availabilityDate | The date the Article is set to be available. | articleMacro | The macro of the Article. | content | path to the Article content in .html format. | customAttributes | One or more comma-separated names for Article custom attributes defined by the user to be returned. | personalization | Article personalization details, incuding tag categories. | editions | The editions of the Article, including the publish profile (view) associated with each edition.
|
170
|
+
:param data_destination:
|
171
|
+
:param article_categories: Category of articles to return. All includes browsable and searchable.
|
172
|
+
:param retries: Override the default retry configuration for this method
|
173
|
+
:param server_url: Override the default server URL for this method
|
174
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
175
|
+
:param http_headers: Additional headers to set or replace on requests.
|
176
|
+
"""
|
177
|
+
base_url = None
|
178
|
+
url_variables = None
|
179
|
+
if timeout_ms is None:
|
180
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
181
|
+
|
182
|
+
if server_url is not None:
|
183
|
+
base_url = server_url
|
184
|
+
else:
|
185
|
+
base_url = self._get_url(base_url, url_variables)
|
186
|
+
|
187
|
+
request = models.KnowledgeExport(
|
188
|
+
article_categories=article_categories,
|
189
|
+
portal_id=portal_id,
|
190
|
+
language=utils.get_pydantic_model(language, models.KnowledgeExportLanguage),
|
191
|
+
resource_types=resource_types,
|
192
|
+
data_destination=utils.get_pydantic_model(
|
193
|
+
data_destination, models.DataDestination
|
194
|
+
),
|
195
|
+
)
|
196
|
+
|
197
|
+
req = self._build_request_async(
|
198
|
+
method="POST",
|
199
|
+
path="/content/export",
|
200
|
+
base_url=base_url,
|
201
|
+
url_variables=url_variables,
|
202
|
+
request=request,
|
203
|
+
request_body_required=True,
|
204
|
+
request_has_path_params=False,
|
205
|
+
request_has_query_params=True,
|
206
|
+
user_agent_header="user-agent",
|
207
|
+
accept_header_value="application/json",
|
208
|
+
http_headers=http_headers,
|
209
|
+
security=self.sdk_configuration.security,
|
210
|
+
get_serialized_body=lambda: utils.serialize_request_body(
|
211
|
+
request, False, False, "json", models.KnowledgeExport
|
212
|
+
),
|
213
|
+
timeout_ms=timeout_ms,
|
214
|
+
)
|
215
|
+
|
216
|
+
if retries == UNSET:
|
217
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
218
|
+
retries = self.sdk_configuration.retry_config
|
219
|
+
|
220
|
+
retry_config = None
|
221
|
+
if isinstance(retries, utils.RetryConfig):
|
222
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
223
|
+
|
224
|
+
http_res = await self.do_request_async(
|
225
|
+
hook_ctx=HookContext(
|
226
|
+
config=self.sdk_configuration,
|
227
|
+
base_url=base_url or "",
|
228
|
+
operation_id="exportContent",
|
229
|
+
oauth2_scopes=[],
|
230
|
+
security_source=get_security_from_env(
|
231
|
+
self.sdk_configuration.security, models.Security
|
232
|
+
),
|
233
|
+
),
|
234
|
+
request=req,
|
235
|
+
error_status_codes=["400", "401", "4XX", "500", "5XX"],
|
236
|
+
retry_config=retry_config,
|
237
|
+
)
|
238
|
+
|
239
|
+
response_data: Any = None
|
240
|
+
if utils.match_response(http_res, "202", "*"):
|
241
|
+
return models.ExportContentResponse(
|
242
|
+
headers=utils.get_response_headers(http_res.headers)
|
243
|
+
)
|
244
|
+
if utils.match_response(http_res, ["400", "401"], "application/json"):
|
245
|
+
response_data = unmarshal_json_response(errors.WSErrorCommonData, http_res)
|
246
|
+
raise errors.WSErrorCommon(response_data, http_res)
|
247
|
+
if utils.match_response(http_res, "500", "application/json"):
|
248
|
+
response_data = unmarshal_json_response(errors.WSErrorCommonData, http_res)
|
249
|
+
raise errors.WSErrorCommon(response_data, http_res)
|
250
|
+
if utils.match_response(http_res, "4XX", "*"):
|
251
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
252
|
+
raise errors.EgainDefaultError(
|
253
|
+
"API error occurred", http_res, http_res_text
|
254
|
+
)
|
255
|
+
if utils.match_response(http_res, "5XX", "*"):
|
256
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
257
|
+
raise errors.EgainDefaultError(
|
258
|
+
"API error occurred", http_res, http_res_text
|
259
|
+
)
|
260
|
+
|
261
|
+
raise errors.EgainDefaultError("Unexpected response received", http_res)
|
262
|
+
|
263
|
+
def export_status(
|
264
|
+
self,
|
265
|
+
*,
|
266
|
+
job_id: str,
|
267
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
268
|
+
server_url: Optional[str] = None,
|
269
|
+
timeout_ms: Optional[int] = None,
|
270
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
271
|
+
) -> models.ExportStatus:
|
272
|
+
r"""Get Export Job Status
|
273
|
+
|
274
|
+
## Overview
|
275
|
+
The Content Export Status API provides real-time status information to monitor job progress and check completion status.
|
276
|
+
|
277
|
+
## Status Values
|
278
|
+
- **Pending**: Job is pending start of processing
|
279
|
+
- **In Progress**: Job is actively processing content
|
280
|
+
- **Completed**: Job finished successfully
|
281
|
+
- **Failed**: Job encountered errors and could not complete
|
282
|
+
|
283
|
+
## Response Information
|
284
|
+
- **Current Status**: Real-time job status
|
285
|
+
- **Progress Metrics**: Items processed, total items
|
286
|
+
- **Error Details**: Specific errors encountered during processing
|
287
|
+
- **Timing Information**: Start time, estimated completion, actual completion
|
288
|
+
|
289
|
+
## Permission
|
290
|
+
* Only a client application can invoke this API.
|
291
|
+
|
292
|
+
|
293
|
+
:param job_id: **Example Usage:** ```bash GET /content/export/7A84B875-6F75-4C7B-B137-0632B62DB0BD/status ```
|
294
|
+
:param retries: Override the default retry configuration for this method
|
295
|
+
:param server_url: Override the default server URL for this method
|
296
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
297
|
+
:param http_headers: Additional headers to set or replace on requests.
|
298
|
+
"""
|
299
|
+
base_url = None
|
300
|
+
url_variables = None
|
301
|
+
if timeout_ms is None:
|
302
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
303
|
+
|
304
|
+
if server_url is not None:
|
305
|
+
base_url = server_url
|
306
|
+
else:
|
307
|
+
base_url = self._get_url(base_url, url_variables)
|
308
|
+
|
309
|
+
request = models.ExportStatusRequest(
|
310
|
+
job_id=job_id,
|
311
|
+
)
|
312
|
+
|
313
|
+
req = self._build_request(
|
314
|
+
method="GET",
|
315
|
+
path="/content/export/{jobID}/status",
|
316
|
+
base_url=base_url,
|
317
|
+
url_variables=url_variables,
|
318
|
+
request=request,
|
319
|
+
request_body_required=False,
|
320
|
+
request_has_path_params=True,
|
321
|
+
request_has_query_params=True,
|
322
|
+
user_agent_header="user-agent",
|
323
|
+
accept_header_value="application/json",
|
324
|
+
http_headers=http_headers,
|
325
|
+
security=self.sdk_configuration.security,
|
326
|
+
timeout_ms=timeout_ms,
|
327
|
+
)
|
328
|
+
|
329
|
+
if retries == UNSET:
|
330
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
331
|
+
retries = self.sdk_configuration.retry_config
|
332
|
+
|
333
|
+
retry_config = None
|
334
|
+
if isinstance(retries, utils.RetryConfig):
|
335
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
336
|
+
|
337
|
+
http_res = self.do_request(
|
338
|
+
hook_ctx=HookContext(
|
339
|
+
config=self.sdk_configuration,
|
340
|
+
base_url=base_url or "",
|
341
|
+
operation_id="exportStatus",
|
342
|
+
oauth2_scopes=[],
|
343
|
+
security_source=get_security_from_env(
|
344
|
+
self.sdk_configuration.security, models.Security
|
345
|
+
),
|
346
|
+
),
|
347
|
+
request=req,
|
348
|
+
error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"],
|
349
|
+
retry_config=retry_config,
|
350
|
+
)
|
351
|
+
|
352
|
+
response_data: Any = None
|
353
|
+
if utils.match_response(http_res, "200", "application/json"):
|
354
|
+
return unmarshal_json_response(models.ExportStatus, http_res)
|
355
|
+
if utils.match_response(
|
356
|
+
http_res, ["400", "401", "403", "404"], "application/json"
|
357
|
+
):
|
358
|
+
response_data = unmarshal_json_response(errors.WSErrorCommonData, http_res)
|
359
|
+
raise errors.WSErrorCommon(response_data, http_res)
|
360
|
+
if utils.match_response(http_res, "500", "application/json"):
|
361
|
+
response_data = unmarshal_json_response(errors.WSErrorCommonData, http_res)
|
362
|
+
raise errors.WSErrorCommon(response_data, http_res)
|
363
|
+
if utils.match_response(http_res, "4XX", "*"):
|
364
|
+
http_res_text = utils.stream_to_text(http_res)
|
365
|
+
raise errors.EgainDefaultError(
|
366
|
+
"API error occurred", http_res, http_res_text
|
367
|
+
)
|
368
|
+
if utils.match_response(http_res, "5XX", "*"):
|
369
|
+
http_res_text = utils.stream_to_text(http_res)
|
370
|
+
raise errors.EgainDefaultError(
|
371
|
+
"API error occurred", http_res, http_res_text
|
372
|
+
)
|
373
|
+
|
374
|
+
raise errors.EgainDefaultError("Unexpected response received", http_res)
|
375
|
+
|
376
|
+
async def export_status_async(
|
377
|
+
self,
|
378
|
+
*,
|
379
|
+
job_id: str,
|
380
|
+
retries: OptionalNullable[utils.RetryConfig] = UNSET,
|
381
|
+
server_url: Optional[str] = None,
|
382
|
+
timeout_ms: Optional[int] = None,
|
383
|
+
http_headers: Optional[Mapping[str, str]] = None,
|
384
|
+
) -> models.ExportStatus:
|
385
|
+
r"""Get Export Job Status
|
386
|
+
|
387
|
+
## Overview
|
388
|
+
The Content Export Status API provides real-time status information to monitor job progress and check completion status.
|
389
|
+
|
390
|
+
## Status Values
|
391
|
+
- **Pending**: Job is pending start of processing
|
392
|
+
- **In Progress**: Job is actively processing content
|
393
|
+
- **Completed**: Job finished successfully
|
394
|
+
- **Failed**: Job encountered errors and could not complete
|
395
|
+
|
396
|
+
## Response Information
|
397
|
+
- **Current Status**: Real-time job status
|
398
|
+
- **Progress Metrics**: Items processed, total items
|
399
|
+
- **Error Details**: Specific errors encountered during processing
|
400
|
+
- **Timing Information**: Start time, estimated completion, actual completion
|
401
|
+
|
402
|
+
## Permission
|
403
|
+
* Only a client application can invoke this API.
|
404
|
+
|
405
|
+
|
406
|
+
:param job_id: **Example Usage:** ```bash GET /content/export/7A84B875-6F75-4C7B-B137-0632B62DB0BD/status ```
|
407
|
+
:param retries: Override the default retry configuration for this method
|
408
|
+
:param server_url: Override the default server URL for this method
|
409
|
+
:param timeout_ms: Override the default request timeout configuration for this method in milliseconds
|
410
|
+
:param http_headers: Additional headers to set or replace on requests.
|
411
|
+
"""
|
412
|
+
base_url = None
|
413
|
+
url_variables = None
|
414
|
+
if timeout_ms is None:
|
415
|
+
timeout_ms = self.sdk_configuration.timeout_ms
|
416
|
+
|
417
|
+
if server_url is not None:
|
418
|
+
base_url = server_url
|
419
|
+
else:
|
420
|
+
base_url = self._get_url(base_url, url_variables)
|
421
|
+
|
422
|
+
request = models.ExportStatusRequest(
|
423
|
+
job_id=job_id,
|
424
|
+
)
|
425
|
+
|
426
|
+
req = self._build_request_async(
|
427
|
+
method="GET",
|
428
|
+
path="/content/export/{jobID}/status",
|
429
|
+
base_url=base_url,
|
430
|
+
url_variables=url_variables,
|
431
|
+
request=request,
|
432
|
+
request_body_required=False,
|
433
|
+
request_has_path_params=True,
|
434
|
+
request_has_query_params=True,
|
435
|
+
user_agent_header="user-agent",
|
436
|
+
accept_header_value="application/json",
|
437
|
+
http_headers=http_headers,
|
438
|
+
security=self.sdk_configuration.security,
|
439
|
+
timeout_ms=timeout_ms,
|
440
|
+
)
|
441
|
+
|
442
|
+
if retries == UNSET:
|
443
|
+
if self.sdk_configuration.retry_config is not UNSET:
|
444
|
+
retries = self.sdk_configuration.retry_config
|
445
|
+
|
446
|
+
retry_config = None
|
447
|
+
if isinstance(retries, utils.RetryConfig):
|
448
|
+
retry_config = (retries, ["429", "500", "502", "503", "504"])
|
449
|
+
|
450
|
+
http_res = await self.do_request_async(
|
451
|
+
hook_ctx=HookContext(
|
452
|
+
config=self.sdk_configuration,
|
453
|
+
base_url=base_url or "",
|
454
|
+
operation_id="exportStatus",
|
455
|
+
oauth2_scopes=[],
|
456
|
+
security_source=get_security_from_env(
|
457
|
+
self.sdk_configuration.security, models.Security
|
458
|
+
),
|
459
|
+
),
|
460
|
+
request=req,
|
461
|
+
error_status_codes=["400", "401", "403", "404", "4XX", "500", "5XX"],
|
462
|
+
retry_config=retry_config,
|
463
|
+
)
|
464
|
+
|
465
|
+
response_data: Any = None
|
466
|
+
if utils.match_response(http_res, "200", "application/json"):
|
467
|
+
return unmarshal_json_response(models.ExportStatus, http_res)
|
468
|
+
if utils.match_response(
|
469
|
+
http_res, ["400", "401", "403", "404"], "application/json"
|
470
|
+
):
|
471
|
+
response_data = unmarshal_json_response(errors.WSErrorCommonData, http_res)
|
472
|
+
raise errors.WSErrorCommon(response_data, http_res)
|
473
|
+
if utils.match_response(http_res, "500", "application/json"):
|
474
|
+
response_data = unmarshal_json_response(errors.WSErrorCommonData, http_res)
|
475
|
+
raise errors.WSErrorCommon(response_data, http_res)
|
476
|
+
if utils.match_response(http_res, "4XX", "*"):
|
477
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
478
|
+
raise errors.EgainDefaultError(
|
479
|
+
"API error occurred", http_res, http_res_text
|
480
|
+
)
|
481
|
+
if utils.match_response(http_res, "5XX", "*"):
|
482
|
+
http_res_text = await utils.stream_to_text_async(http_res)
|
483
|
+
raise errors.EgainDefaultError(
|
484
|
+
"API error occurred", http_res, http_res_text
|
485
|
+
)
|
486
|
+
|
487
|
+
raise errors.EgainDefaultError("Unexpected response received", http_res)
|