restpki-ng-python-client 0.9.0__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.
Files changed (181) hide show
  1. restpki_ng_python_client/__init__.py +200 -0
  2. restpki_ng_python_client/api/__init__.py +17 -0
  3. restpki_ng_python_client/api/authentication_api.py +2041 -0
  4. restpki_ng_python_client/api/cades_signature_api.py +2376 -0
  5. restpki_ng_python_client/api/document_keys_api.py +1199 -0
  6. restpki_ng_python_client/api/documents_api.py +868 -0
  7. restpki_ng_python_client/api/pades_signature_api.py +1797 -0
  8. restpki_ng_python_client/api/pades_visual_positioning_presets_api.py +869 -0
  9. restpki_ng_python_client/api/pdf_api.py +334 -0
  10. restpki_ng_python_client/api/signature_api.py +624 -0
  11. restpki_ng_python_client/api/signature_inspection_api.py +337 -0
  12. restpki_ng_python_client/api/signature_sessions_api.py +891 -0
  13. restpki_ng_python_client/api/timestamp_api.py +654 -0
  14. restpki_ng_python_client/api/upload_api.py +1124 -0
  15. restpki_ng_python_client/api/xml_signature_api.py +1781 -0
  16. restpki_ng_python_client/api_client.py +741 -0
  17. restpki_ng_python_client/api_response.py +21 -0
  18. restpki_ng_python_client/configuration.py +426 -0
  19. restpki_ng_python_client/exceptions.py +166 -0
  20. restpki_ng_python_client/file_utils.py +122 -0
  21. restpki_ng_python_client/models/__init__.py +165 -0
  22. restpki_ng_python_client/models/allocate_document_key_batch_request.py +96 -0
  23. restpki_ng_python_client/models/allocate_document_key_request.py +93 -0
  24. restpki_ng_python_client/models/attribute_certificate_model.py +141 -0
  25. restpki_ng_python_client/models/audit_package_options.py +90 -0
  26. restpki_ng_python_client/models/authentication_failures.py +45 -0
  27. restpki_ng_python_client/models/authentication_get_response.py +92 -0
  28. restpki_ng_python_client/models/authentication_post_request.py +116 -0
  29. restpki_ng_python_client/models/authentication_post_response.py +98 -0
  30. restpki_ng_python_client/models/authentications_post_request.py +95 -0
  31. restpki_ng_python_client/models/authentications_post_response.py +114 -0
  32. restpki_ng_python_client/models/authentications_post_signed_bytes_request.py +99 -0
  33. restpki_ng_python_client/models/authentications_post_signed_bytes_response.py +98 -0
  34. restpki_ng_python_client/models/auto_positioning_horizontal_directions.py +45 -0
  35. restpki_ng_python_client/models/auto_positioning_vertical_directions.py +45 -0
  36. restpki_ng_python_client/models/blockchains.py +45 -0
  37. restpki_ng_python_client/models/cades_signature_model.py +123 -0
  38. restpki_ng_python_client/models/cades_signature_post_request_v1.py +137 -0
  39. restpki_ng_python_client/models/cades_signature_post_request_v2.py +152 -0
  40. restpki_ng_python_client/models/cades_signature_post_request_v3.py +149 -0
  41. restpki_ng_python_client/models/cades_signature_post_response.py +120 -0
  42. restpki_ng_python_client/models/cades_signature_post_signed_bytes_request.py +92 -0
  43. restpki_ng_python_client/models/cades_signature_post_signed_bytes_response.py +106 -0
  44. restpki_ng_python_client/models/cades_signer_model.py +159 -0
  45. restpki_ng_python_client/models/cades_timestamp_model.py +140 -0
  46. restpki_ng_python_client/models/certificate_model.py +197 -0
  47. restpki_ng_python_client/models/certificate_reference_model.py +99 -0
  48. restpki_ng_python_client/models/certificate_requirement.py +95 -0
  49. restpki_ng_python_client/models/certificate_requirement_types.py +45 -0
  50. restpki_ng_python_client/models/certificate_summary.py +142 -0
  51. restpki_ng_python_client/models/certified_attribute_model.py +94 -0
  52. restpki_ng_python_client/models/certified_attribute_types.py +44 -0
  53. restpki_ng_python_client/models/cms_content_types.py +50 -0
  54. restpki_ng_python_client/models/cms_signature_options.py +109 -0
  55. restpki_ng_python_client/models/color_model.py +98 -0
  56. restpki_ng_python_client/models/commitment_type_model.py +99 -0
  57. restpki_ng_python_client/models/complete_authentication_request.py +93 -0
  58. restpki_ng_python_client/models/complete_authentication_response.py +103 -0
  59. restpki_ng_python_client/models/complete_signature_request.py +95 -0
  60. restpki_ng_python_client/models/complete_signature_request_v2.py +91 -0
  61. restpki_ng_python_client/models/create_signature_session_request.py +161 -0
  62. restpki_ng_python_client/models/create_signature_session_response.py +95 -0
  63. restpki_ng_python_client/models/digest_algorithm_and_value_model.py +103 -0
  64. restpki_ng_python_client/models/digest_algorithms.py +49 -0
  65. restpki_ng_python_client/models/document_file_model.py +137 -0
  66. restpki_ng_python_client/models/document_key_model.py +100 -0
  67. restpki_ng_python_client/models/document_key_query_response.py +110 -0
  68. restpki_ng_python_client/models/document_key_summary.py +100 -0
  69. restpki_ng_python_client/models/document_model.py +150 -0
  70. restpki_ng_python_client/models/document_query_response.py +93 -0
  71. restpki_ng_python_client/models/document_status.py +47 -0
  72. restpki_ng_python_client/models/document_summary.py +128 -0
  73. restpki_ng_python_client/models/error_model_v2.py +120 -0
  74. restpki_ng_python_client/models/file_model.py +114 -0
  75. restpki_ng_python_client/models/file_reference_model.py +137 -0
  76. restpki_ng_python_client/models/full_xml_signature_post_request.py +136 -0
  77. restpki_ng_python_client/models/general_name_choices.py +52 -0
  78. restpki_ng_python_client/models/general_name_model.py +108 -0
  79. restpki_ng_python_client/models/holder_types.py +45 -0
  80. restpki_ng_python_client/models/inspect_signature_failures.py +44 -0
  81. restpki_ng_python_client/models/inspect_signature_request.py +127 -0
  82. restpki_ng_python_client/models/inspect_signature_response.py +131 -0
  83. restpki_ng_python_client/models/multipart_upload_begin_response.py +95 -0
  84. restpki_ng_python_client/models/multipart_upload_end_request.py +95 -0
  85. restpki_ng_python_client/models/name_model.py +205 -0
  86. restpki_ng_python_client/models/namespace_model.py +99 -0
  87. restpki_ng_python_client/models/open_cades_signature_request_model.py +147 -0
  88. restpki_ng_python_client/models/open_signature_request_model.py +145 -0
  89. restpki_ng_python_client/models/open_xml_signature_request_model.py +151 -0
  90. restpki_ng_python_client/models/other_name_model.py +107 -0
  91. restpki_ng_python_client/models/pades_certification_level.py +47 -0
  92. restpki_ng_python_client/models/pades_horizontal_align.py +46 -0
  93. restpki_ng_python_client/models/pades_measurement_units.py +45 -0
  94. restpki_ng_python_client/models/pades_page_optimization_model.py +98 -0
  95. restpki_ng_python_client/models/pades_signature_model.py +113 -0
  96. restpki_ng_python_client/models/pades_signature_post_request_v1.py +167 -0
  97. restpki_ng_python_client/models/pades_signature_post_request_v2.py +171 -0
  98. restpki_ng_python_client/models/pades_signature_post_response.py +120 -0
  99. restpki_ng_python_client/models/pades_signature_post_signed_bytes_request.py +92 -0
  100. restpki_ng_python_client/models/pades_signature_post_signed_bytes_response.py +106 -0
  101. restpki_ng_python_client/models/pades_signer_model.py +168 -0
  102. restpki_ng_python_client/models/pades_size_model.py +89 -0
  103. restpki_ng_python_client/models/pades_text_horizontal_align.py +45 -0
  104. restpki_ng_python_client/models/pades_vertical_align.py +46 -0
  105. restpki_ng_python_client/models/pades_visual_auto_positioning_model.py +106 -0
  106. restpki_ng_python_client/models/pades_visual_image_model.py +105 -0
  107. restpki_ng_python_client/models/pades_visual_positioning_model.py +109 -0
  108. restpki_ng_python_client/models/pades_visual_rectangle_model.py +127 -0
  109. restpki_ng_python_client/models/pades_visual_representation_model.py +103 -0
  110. restpki_ng_python_client/models/pades_visual_text_model.py +111 -0
  111. restpki_ng_python_client/models/page_orientations.py +46 -0
  112. restpki_ng_python_client/models/paper_sizes.py +56 -0
  113. restpki_ng_python_client/models/pdf_add_marks_request.py +117 -0
  114. restpki_ng_python_client/models/pdf_add_marks_response.py +91 -0
  115. restpki_ng_python_client/models/pdf_container_definition.py +208 -0
  116. restpki_ng_python_client/models/pdf_helper.py +43 -0
  117. restpki_ng_python_client/models/pdf_mark_element_model.py +230 -0
  118. restpki_ng_python_client/models/pdf_mark_element_type.py +46 -0
  119. restpki_ng_python_client/models/pdf_mark_image_model.py +98 -0
  120. restpki_ng_python_client/models/pdf_mark_model.py +168 -0
  121. restpki_ng_python_client/models/pdf_mark_page_options.py +47 -0
  122. restpki_ng_python_client/models/pdf_signature_options.py +101 -0
  123. restpki_ng_python_client/models/pdf_text_section_model.py +125 -0
  124. restpki_ng_python_client/models/pdf_text_style.py +46 -0
  125. restpki_ng_python_client/models/pki_brazil_certificate_model.py +159 -0
  126. restpki_ng_python_client/models/pki_brazil_certificate_types.py +54 -0
  127. restpki_ng_python_client/models/pki_italy_certificate_model.py +103 -0
  128. restpki_ng_python_client/models/pki_italy_certificate_types.py +46 -0
  129. restpki_ng_python_client/models/prepare_authentication_request.py +100 -0
  130. restpki_ng_python_client/models/prepare_authentication_response.py +99 -0
  131. restpki_ng_python_client/models/prepare_signature_failures.py +46 -0
  132. restpki_ng_python_client/models/prepare_signature_request.py +133 -0
  133. restpki_ng_python_client/models/prepare_signature_response.py +116 -0
  134. restpki_ng_python_client/models/resource_content_or_reference.py +107 -0
  135. restpki_ng_python_client/models/role_attribute_model.py +114 -0
  136. restpki_ng_python_client/models/session_completion_status.py +89 -0
  137. restpki_ng_python_client/models/signature_algorithm_and_value_model.py +106 -0
  138. restpki_ng_python_client/models/signature_algorithm_identifier.py +88 -0
  139. restpki_ng_python_client/models/signature_algorithms.py +48 -0
  140. restpki_ng_python_client/models/signature_b_stamp_model.py +135 -0
  141. restpki_ng_python_client/models/signature_policy_identifier_model.py +105 -0
  142. restpki_ng_python_client/models/signature_result_model.py +105 -0
  143. restpki_ng_python_client/models/signature_session_document_data.py +128 -0
  144. restpki_ng_python_client/models/signature_session_document_summary.py +138 -0
  145. restpki_ng_python_client/models/signature_session_model.py +126 -0
  146. restpki_ng_python_client/models/signature_session_status.py +49 -0
  147. restpki_ng_python_client/models/signature_types.py +46 -0
  148. restpki_ng_python_client/models/signer_b_stamp_model.py +132 -0
  149. restpki_ng_python_client/models/signer_model.py +187 -0
  150. restpki_ng_python_client/models/signer_summary.py +94 -0
  151. restpki_ng_python_client/models/timestamp_issue_response.py +99 -0
  152. restpki_ng_python_client/models/validation_item_model.py +111 -0
  153. restpki_ng_python_client/models/validation_item_types.py +91 -0
  154. restpki_ng_python_client/models/validation_results_model.py +131 -0
  155. restpki_ng_python_client/models/webhook_event_model.py +94 -0
  156. restpki_ng_python_client/models/webhook_event_types.py +44 -0
  157. restpki_ng_python_client/models/xml_attribute_model.py +107 -0
  158. restpki_ng_python_client/models/xml_element_location_model.py +111 -0
  159. restpki_ng_python_client/models/xml_element_model.py +115 -0
  160. restpki_ng_python_client/models/xml_element_signature_post_request.py +145 -0
  161. restpki_ng_python_client/models/xml_id_attribute_model.py +96 -0
  162. restpki_ng_python_client/models/xml_id_resolution_table_model.py +123 -0
  163. restpki_ng_python_client/models/xml_insertion_options.py +47 -0
  164. restpki_ng_python_client/models/xml_node_name_model.py +96 -0
  165. restpki_ng_python_client/models/xml_signature_model.py +154 -0
  166. restpki_ng_python_client/models/xml_signature_options.py +102 -0
  167. restpki_ng_python_client/models/xml_signature_post_response.py +120 -0
  168. restpki_ng_python_client/models/xml_signature_post_signed_bytes_request.py +92 -0
  169. restpki_ng_python_client/models/xml_signature_post_signed_bytes_response.py +106 -0
  170. restpki_ng_python_client/models/xml_signature_response_model.py +113 -0
  171. restpki_ng_python_client/models/xml_signature_types.py +47 -0
  172. restpki_ng_python_client/models/xml_signed_entity_types.py +46 -0
  173. restpki_ng_python_client/py.typed +0 -0
  174. restpki_ng_python_client/rest.py +231 -0
  175. restpki_ng_python_client/restpki_ng_client.py +458 -0
  176. restpki_ng_python_client/standard_signature_policies.py +24 -0
  177. restpki_ng_python_client/utils.py +80 -0
  178. restpki_ng_python_client-0.9.0.dist-info/METADATA +16 -0
  179. restpki_ng_python_client-0.9.0.dist-info/RECORD +181 -0
  180. restpki_ng_python_client-0.9.0.dist-info/WHEEL +5 -0
  181. restpki_ng_python_client-0.9.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,208 @@
1
+ from .pades_visual_rectangle_model import PadesVisualRectangleModel
2
+
3
+
4
+ class PdfContainerDefinition:
5
+
6
+ class VarWidthAndHeight:
7
+
8
+ def __init__(self, container: PadesVisualRectangleModel):
9
+ self.__container = container
10
+
11
+ def margins(self,
12
+ top_margin,
13
+ right_margin=None,
14
+ bottom_margin=None,
15
+ left_margin=None):
16
+ self.__container.top = top_margin
17
+ self.__container.right = right_margin \
18
+ if right_margin is not None else top_margin
19
+ self.__container.bottom = bottom_margin \
20
+ if bottom_margin is not None else top_margin
21
+ self.__container.left = left_margin \
22
+ if left_margin is not None else self.__container.right
23
+ return self.__container
24
+
25
+ class HeightDefinedVarWidth:
26
+
27
+ def __init__(self, container: PadesVisualRectangleModel):
28
+ self.__container = container
29
+
30
+ def margins(self, left_margin, right_margin=None):
31
+ self.__container.left = left_margin
32
+ self.__container.right = right_margin \
33
+ if right_margin is not None else left_margin
34
+ return self.__container
35
+
36
+ class HeightDefinedFixedWidth:
37
+
38
+ def __init__(self, container: PadesVisualRectangleModel):
39
+ self.__container = container
40
+
41
+ def anchor_left(self, margin=0.0):
42
+ self.__container.left = margin
43
+ return self.__container
44
+
45
+ def anchor_right(self, margin=0.0):
46
+ self.__container.right = margin
47
+ return self.__container
48
+
49
+ def center(self):
50
+ return self.__container
51
+
52
+ class WidthDefinedVarHeight:
53
+
54
+ def __init__(self, container: PadesVisualRectangleModel):
55
+ self.__container = container
56
+
57
+ def margins(self, top_margin, bottom_margin=None):
58
+ self.__container.top = top_margin
59
+ self.__container.bottom = bottom_margin \
60
+ if bottom_margin is not None else top_margin
61
+ return self.__container
62
+
63
+ class WidthDefinedFixedHeight:
64
+
65
+ def __init__(self, container: PadesVisualRectangleModel):
66
+ self.__container = container
67
+
68
+ def anchor_top(self, margin=0.0):
69
+ self.__container.top = margin
70
+ return self.__container
71
+
72
+ def anchor_bottom(self, margin=0.0):
73
+ self.__container.bottom = margin
74
+ return self.__container
75
+
76
+ def center(self):
77
+ return self.__container
78
+
79
+ class HeightDefined:
80
+
81
+ def __init__(self, container: PadesVisualRectangleModel):
82
+ self.__container = container
83
+
84
+ def width(self, value):
85
+ self.__container.width = value
86
+ return PdfContainerDefinition.\
87
+ HeightDefinedFixedWidth(self.__container)
88
+
89
+ def var_width(self):
90
+ return PdfContainerDefinition.\
91
+ HeightDefinedVarWidth(self.__container)
92
+
93
+ def full_width(self):
94
+ self.__container.left = 0.0
95
+ self.__container.right = 0.0
96
+ return self.__container
97
+
98
+ class WidthDefined:
99
+
100
+ def __init__(self, container: PadesVisualRectangleModel):
101
+ self.__container = container
102
+
103
+ def height(self, value):
104
+ self.__container.height = value
105
+ return PdfContainerDefinition.\
106
+ WidthDefinedFixedHeight(self.__container)
107
+
108
+ def var_height(self):
109
+ return PdfContainerDefinition.\
110
+ WidthDefinedVarHeight(self.__container)
111
+
112
+ def full_height(self):
113
+ self.__container.top = 0.0
114
+ self.__container.bottom = 0.0
115
+ return self.__container
116
+
117
+ class VarHeight:
118
+
119
+ def __init__(self, container: PadesVisualRectangleModel):
120
+ self.__container = container
121
+
122
+ def margins(self, top_margin, bottom_margin=None):
123
+ self.__container.top = top_margin
124
+ self.__container.bottom = bottom_margin \
125
+ if bottom_margin is not None else top_margin
126
+ return PdfContainerDefinition.HeightDefined(self.__container)
127
+
128
+ class FixedHeight:
129
+
130
+ def __init__(self, container: PadesVisualRectangleModel):
131
+ self.__container = container
132
+
133
+ def anchor_top(self, margin=0.0):
134
+ self.__container.top = margin
135
+ return PdfContainerDefinition.HeightDefined(self.__container)
136
+
137
+ def anchor_bottom(self, margin=0.0):
138
+ self.__container.bottom = margin
139
+ return PdfContainerDefinition.HeightDefined(self.__container)
140
+
141
+ def center(self):
142
+ return PdfContainerDefinition.HeightDefined(self.__container)
143
+
144
+ class VarWidth:
145
+
146
+ def __init__(self, container: PadesVisualRectangleModel):
147
+ self.__container = container
148
+
149
+ def margins(self, left_margin, right_margin=None):
150
+ self.__container.left = left_margin
151
+ self.__container.right = right_margin \
152
+ if right_margin is not None else left_margin
153
+ return PdfContainerDefinition.WidthDefined(self.__container)
154
+
155
+ class FixedWidth:
156
+
157
+ def __init__(self, container: PadesVisualRectangleModel):
158
+ self.__container = container
159
+
160
+ def anchor_left(self, margin=0.0):
161
+ self.__container.left = margin
162
+ return PdfContainerDefinition.WidthDefined(self.__container)
163
+
164
+ def anchor_right(self, margin=0.0):
165
+ self.__container.right = margin
166
+ return PdfContainerDefinition.WidthDefined(self.__container)
167
+
168
+ def center(self):
169
+ return PdfContainerDefinition.WidthDefined(self.__container)
170
+
171
+ class Initial:
172
+
173
+ def __init__(self):
174
+ self.__container = PadesVisualRectangleModel()
175
+
176
+ def width(self, value):
177
+ self.__container.width = value
178
+ return PdfContainerDefinition.FixedWidth(self.__container)
179
+
180
+ def var_width(self):
181
+ return PdfContainerDefinition.VarWidth(self.__container)
182
+
183
+ def full_width(self):
184
+ self.__container.left = 0.0
185
+ self.__container.right = 0.0
186
+ return PdfContainerDefinition.WidthDefined(self.__container)
187
+
188
+ def height(self, value):
189
+ self.__container.height = value
190
+ return PdfContainerDefinition.FixedHeight(self.__container)
191
+
192
+ def var_height(self):
193
+ return PdfContainerDefinition.VarHeight(self.__container)
194
+
195
+ def full_height(self):
196
+ self.__container.top = 0.0
197
+ self.__container.bottom = 0.0
198
+ return PdfContainerDefinition.HeightDefined(self.__container)
199
+
200
+ def var_width_and_height(self):
201
+ return PdfContainerDefinition.VarWidthAndHeight(self.__container)
202
+
203
+ def full(self):
204
+ self.__container.top = 0.0
205
+ self.__container.right = 0.0
206
+ self.__container.bottom = 0.0
207
+ self.__container.left = 0.0
208
+ return self.__container
@@ -0,0 +1,43 @@
1
+ from .pdf_mark_image_model import PdfMarkImageModel
2
+ from .pades_visual_rectangle_model import PadesVisualRectangleModel
3
+ from .pdf_mark_element_type import PdfMarkElementType
4
+ from .pdf_mark_element_model import PdfMarkElementModel
5
+ from .pdf_text_style import PdfTextStyle
6
+ from .pdf_container_definition import PdfContainerDefinition
7
+ from .pdf_text_section_model import PdfTextSectionModel
8
+ from .pdf_mark_model import PdfMarkModel
9
+
10
+ class PdfHelper(object):
11
+
12
+ @staticmethod
13
+ def mark():
14
+ return PdfMarkModel(
15
+ container=PadesVisualRectangleModel(),
16
+ elements=list()
17
+ )
18
+
19
+ @staticmethod
20
+ def container():
21
+ return PdfContainerDefinition.Initial()
22
+
23
+ @staticmethod
24
+ def text_element():
25
+ return PdfMarkElementModel(
26
+ elementType=PdfMarkElementType.TEXT,
27
+ textSections=list()
28
+ )
29
+
30
+ @staticmethod
31
+ def image_element():
32
+ return PdfMarkElementModel(
33
+ elementType=PdfMarkElementType.IMAGE,
34
+ image=PdfMarkImageModel()
35
+ )
36
+
37
+ @staticmethod
38
+ def qr_code_element():
39
+ return PdfMarkElementModel(elementType=PdfMarkElementType.QRCODE)
40
+
41
+ @staticmethod
42
+ def text_section():
43
+ return PdfTextSectionModel(text="TEXT SECTION")
@@ -0,0 +1,230 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Rest PKI Core API
5
+
6
+ <b><i>Para Português, <a href=\"https://docs.lacunasoftware.com/pt-br/articles/rest-pki/core/integration/get-started\">clique aqui</a></i></b> <p> <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/core/\">Rest PKI Core</a> is an upcoming version of <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/\">Rest PKI</a> that will have extended compatibility with environments and databases. </p> <p> In addition to Windows Server (which is already supported by Rest PKI), Rest PKI Core will also run on <b>Linux</b> (Debian- and RedHat-based distributions) and on <b>Docker</b>. As for database servers, in addition to SQL Server, <b>PostgreSQL</b> will also be supported. </p> <p> <b>Before getting started, see the integration overview on the <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/core/integration/\">Integration Guide</a></b> </p> <p> For questions regarding the usage of this API, please reach us at <a href=\"https://lacuna.help/\">lacuna.help</a> </p> <h2>Parameters</h2> <p> You will need the following parameters: </p> <ul> <li><b>Endpoint</b>: address of the Rest PKI Core instance that will be used</li> <li><b>API Key</b>: authorization key for using the API</li> </ul> <p> The <span class=\"model\">endpoint</span> must be prefixed to all relative URLs mentioned here. As for the <span class=\"model\">API Key</span>, see how to use it below. </p> <h2>Authentication</h2> <p> The API key must be sent on the <span class=\"model\">X-Api-Key</span> header on each request: </p> <!-- unfortunately, class \"example microlight\" doesn't seem to work here --> <pre style=\"font-size: 12px; padding: 10px; border-radius: 4px; background: #41444e; font-weight: 600; color: #fff;\"> X-Api-Key: yourapp|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx </pre> <h2>HTTP Codes</h2> <p> The APIs will return the following HTTP codes: </p> <table> <thead> <tr> <th>Code</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><strong class=\"model-title\">200 (OK)</strong></td> <td>Request processed successfully. The response is different for each API, please refer to the operation's documentation</td> </tr> <tr> <td><strong class=\"model-title\">400 (Bad Request)</strong></td> <td>Syntax error. For instance, when a required field was not provided</td> </tr> <tr> <td><strong class=\"model-title\">401 (Unauthorized)</strong></td> <td>API key not provided or invalid</td> </tr> <tr> <td><strong class=\"model-title\">403 (Forbidden)</strong></td> <td>API key is valid, but the application has insufficient permissions to complete the requested operation</td> </tr> <tr> <td><strong class=\"model-title\">422 (Unprocessable Entity)</strong></td> <td>API error. The response body is an <a href=\"#model-ErrorModelV2\" class=\"model\">ErrorModelV2</a> </tr> <tr> <td><strong class=\"model-title\">500 (Internal Server Error)</strong></td> <td>An unexpected error occurred. The <span class=\"model\">exceptionCode</span> contained on the response body may be of help for our support team during diagnostic.</td> </tr> </tbody> </table> <h3>Error Codes</h3> <p> Some of the error codes returned in the <span class=\"model\">code</span> field of an <a href=\"#model-ErrorModelV2\" class=\"model\">ErrorModelV2</a> (body of responses with HTTP status code 422) are provided below*: </p> <table> <thead> <tr> <th>Code</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td class=\"model\">DocumentNotFound</td> <td>A referenced document was not found (check the document ID)</td> </tr> <tr> <td class=\"model\">SecurityContextNotFound</td> <td>A referenced security context was not found (check the security context ID)</td> </tr> <tr> <td class=\"model\">SignatureSessionNotFound</td> <td>A referenced signature session was not found (check the signature session ID)</td> </tr> <tr> <td class=\"model\">BadSignatureSessionOperation</td> <td>The operation is invalid for the current signature session or document status. For instance, trying to await the session's completion if it is still <span class=\"model\">Pending</span> results in this error</td> </tr> <tr> <td class=\"model\">BackgroundProcessing</td> <td>The operation cannot be completed at this time because the resource is being processed in background</td> </tr> <tr> <td class=\"model\">SignatureSessionTokenRequired</td> <td>The signature session token was not passed on the <span class=\"model\">X-Signature-Session-Token</span> request header</td> </tr> <tr> <td class=\"model\">BadSignatureSessionToken</td> <td>An invalid signature session token was passed on the <span class=\"model\">X-Signature-Session-Token</span> request header. Check your application for possible corruption of the session token, which may contain characters <span class=\"code\">-</span> (hyphen) and <span class=\"code\">_</span> (underscore)</td> </tr> <tr> <td class=\"model\">ExpiredSignatureSessionToken</td> <td>An expired signature session token was passed on the <span class=\"model\">X-Signature-Session-Token</span> request header. Signature session tokens are normally valid for 4 hours.</td> </tr> </tbody> </table> <p style=\"font-size: 0.9em\"> *The codes shown above are the most common error codes. Nonetheless, this list is not comprehensive. New codes may be added anytime without previous warning. </p> <h2>Culture / Internationalization (i18n)</h2> <p>The <span class=\"model\">Accept-Language</span> request header is observed by this API. The following cultures are supported:</p> <ul> <li><span class=\"code\">en-US</span> (or simply <span class=\"code\">en</span>)</li> <li><span class=\"code\">pt-BR</span> (or simply <span class=\"code\">pt</span>)</li> </ul> <p><i>Notice: error messages are not affected by this header and therefore should not be displayed to users, being better suited for logging.</i></p>
7
+
8
+ The version of the OpenAPI document: 2.1.2
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, ClassVar, Dict, List, Optional, Union
22
+ from pydantic import BaseModel, StrictBool, StrictFloat, StrictInt, StrictStr
23
+ from pydantic import Field
24
+ from restpki_ng_python_client.models.resource_content_or_reference import ResourceContentOrReference
25
+ from restpki_ng_python_client.models.pdf_text_style import PdfTextStyle
26
+ from restpki_ng_python_client.models.pades_horizontal_align import PadesHorizontalAlign
27
+ from restpki_ng_python_client.models.pades_vertical_align import PadesVerticalAlign
28
+ from restpki_ng_python_client.models.pades_visual_rectangle_model import PadesVisualRectangleModel
29
+ from restpki_ng_python_client.models.pdf_mark_element_type import PdfMarkElementType
30
+ from restpki_ng_python_client.models.pdf_mark_image_model import PdfMarkImageModel
31
+ from restpki_ng_python_client.models.pdf_text_section_model import PdfTextSectionModel
32
+ try:
33
+ from typing import Self
34
+ except ImportError:
35
+ from typing_extensions import Self
36
+
37
+ class PdfMarkElementModel(BaseModel):
38
+ """
39
+ PdfMarkElementModel
40
+ """ # noqa: E501
41
+ element_type: Optional[PdfMarkElementType] = Field(default=None, alias="elementType")
42
+ relative_container: Optional[PadesVisualRectangleModel] = Field(default=None, alias="relativeContainer")
43
+ rotation: Optional[StrictInt] = None
44
+ text_sections: Optional[List[PdfTextSectionModel]] = Field(default=None, alias="textSections")
45
+ image: Optional[PdfMarkImageModel] = None
46
+ qr_code_data: Optional[StrictStr] = Field(default=None, alias="qrCodeData")
47
+ qr_code_draw_quiet_zones: Optional[StrictBool] = Field(default=None, alias="qrCodeDrawQuietZones")
48
+ align: Optional[PadesHorizontalAlign] = None
49
+ vertical_align: Optional[PadesVerticalAlign] = Field(default=None, alias="verticalAlign")
50
+ opacity: Optional[Union[StrictFloat, StrictInt]] = None
51
+ __properties: ClassVar[List[str]] = ["elementType", "relativeContainer", "rotation", "textSections", "image", "qrCodeData", "qrCodeDrawQuietZones", "align", "verticalAlign", "opacity"]
52
+
53
+ model_config = {
54
+ "populate_by_name": True,
55
+ "validate_assignment": True
56
+ }
57
+
58
+
59
+ def to_str(self) -> str:
60
+ """Returns the string representation of the model using alias"""
61
+ return pprint.pformat(self.model_dump(by_alias=True))
62
+
63
+ def to_json(self) -> str:
64
+ """Returns the JSON representation of the model using alias"""
65
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
66
+ return json.dumps(self.to_dict())
67
+
68
+ @classmethod
69
+ def from_json(cls, json_str: str) -> Self:
70
+ """Create an instance of PdfMarkElementModel from a JSON string"""
71
+ return cls.from_dict(json.loads(json_str))
72
+
73
+ def to_dict(self) -> Dict[str, Any]:
74
+ """Return the dictionary representation of the model using alias.
75
+
76
+ This has the following differences from calling pydantic's
77
+ `self.model_dump(by_alias=True)`:
78
+
79
+ * `None` is only added to the output dict for nullable fields that
80
+ were set at model initialization. Other fields with value `None`
81
+ are ignored.
82
+ """
83
+ _dict = self.model_dump(
84
+ by_alias=True,
85
+ exclude={
86
+ },
87
+ exclude_none=True,
88
+ )
89
+ # override the default output from pydantic by calling `to_dict()` of relative_container
90
+ if self.relative_container:
91
+ _dict['relativeContainer'] = self.relative_container.to_dict()
92
+ # override the default output from pydantic by calling `to_dict()` of each item in text_sections (list)
93
+ _items = []
94
+ if self.text_sections:
95
+ for _item in self.text_sections:
96
+ if _item:
97
+ _items.append(_item.to_dict())
98
+ _dict['textSections'] = _items
99
+ # override the default output from pydantic by calling `to_dict()` of image
100
+ if self.image:
101
+ _dict['image'] = self.image.to_dict()
102
+ # set to None if text_sections (nullable) is None
103
+ # and model_fields_set contains the field
104
+ if self.text_sections is None and "text_sections" in self.model_fields_set:
105
+ _dict['textSections'] = None
106
+
107
+ # set to None if qr_code_data (nullable) is None
108
+ # and model_fields_set contains the field
109
+ if self.qr_code_data is None and "qr_code_data" in self.model_fields_set:
110
+ _dict['qrCodeData'] = None
111
+
112
+ # set to None if qr_code_draw_quiet_zones (nullable) is None
113
+ # and model_fields_set contains the field
114
+ if self.qr_code_draw_quiet_zones is None and "qr_code_draw_quiet_zones" in self.model_fields_set:
115
+ _dict['qrCodeDrawQuietZones'] = None
116
+
117
+ # set to None if opacity (nullable) is None
118
+ # and model_fields_set contains the field
119
+ if self.opacity is None and "opacity" in self.model_fields_set:
120
+ _dict['opacity'] = None
121
+
122
+ return _dict
123
+
124
+ @classmethod
125
+ def from_dict(cls, obj: Dict) -> Self:
126
+ """Create an instance of PdfMarkElementModel from a dict"""
127
+ if obj is None:
128
+ return None
129
+
130
+ if not isinstance(obj, dict):
131
+ return cls.model_validate(obj)
132
+
133
+ _obj = cls.model_validate({
134
+ "elementType": obj.get("elementType"),
135
+ "relativeContainer": PadesVisualRectangleModel.from_dict(obj.get("relativeContainer")) if obj.get("relativeContainer") is not None else None,
136
+ "rotation": obj.get("rotation"),
137
+ "textSections": [PdfTextSectionModel.from_dict(_item) for _item in obj.get("textSections")] if obj.get("textSections") is not None else None,
138
+ "image": PdfMarkImageModel.from_dict(obj.get("image")) if obj.get("image") is not None else None,
139
+ "qrCodeData": obj.get("qrCodeData"),
140
+ "qrCodeDrawQuietZones": obj.get("qrCodeDrawQuietZones"),
141
+ "align": obj.get("align"),
142
+ "verticalAlign": obj.get("verticalAlign"),
143
+ "opacity": obj.get("opacity")
144
+ })
145
+ return _obj
146
+
147
+ # region FluentAPI Text
148
+
149
+ def align_text_left(self):
150
+ self.align = PadesHorizontalAlign.LEFT
151
+ return self
152
+
153
+ def align_text_right(self):
154
+ self.align = PadesHorizontalAlign.RIGHT
155
+ return self
156
+
157
+ def align_text_center(self):
158
+ self.align = PadesHorizontalAlign.CENTER
159
+ return self
160
+
161
+ def add_section_from_text(self, text: str):
162
+ self.text_sections.append(PdfTextSectionModel(text=text))
163
+ return self
164
+
165
+ def add_section(self, section: PdfTextSectionModel):
166
+ self.text_sections.append(section)
167
+ return self
168
+
169
+ # endregion
170
+
171
+ # region FluentAPI Image
172
+
173
+ def with_image(self, image: PdfMarkImageModel):
174
+ self.image = image
175
+ return self
176
+
177
+ def with_image_content(self, image_content, mime_type):
178
+ self.image = PdfMarkImageModel(resource=
179
+ ResourceContentOrReference(content=image_content, mimeType=mime_type)
180
+ )
181
+ return self
182
+
183
+ def with_opacity(self, opacity):
184
+ self.opacity = opacity
185
+ return self
186
+
187
+ # endregion
188
+
189
+ # region FluentAPI QRCode
190
+
191
+ def with_qr_code_data(self, qr_code_data):
192
+ self.qr_code_data = qr_code_data
193
+ return self
194
+
195
+ def draw_quiet_zones(self):
196
+ self.qr_code_draw_quiet_zones = True
197
+ return self
198
+
199
+ # endregion
200
+
201
+ # region FluentAPI
202
+
203
+ def on_container(self, relative_container):
204
+ self.relative_container = relative_container
205
+ return self
206
+
207
+ def with_rotation(self, rotation):
208
+ self.rotation = rotation
209
+ return self
210
+
211
+ def rotate_90_clockwise(self):
212
+ self.rotation = 270
213
+ return self
214
+
215
+ def rotate_90_counter_clockwise(self):
216
+ self.rotation = 90
217
+ return self
218
+
219
+ def rotate_180(self):
220
+ self.rotation = 180
221
+ return self
222
+
223
+ def with_opacity(self, opacity):
224
+ self.opacity = opacity
225
+ return self
226
+
227
+ # endregion
228
+
229
+
230
+
@@ -0,0 +1,46 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Rest PKI Core API
5
+
6
+ <b><i>Para Português, <a href=\"https://docs.lacunasoftware.com/pt-br/articles/rest-pki/core/integration/get-started\">clique aqui</a></i></b> <p> <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/core/\">Rest PKI Core</a> is an upcoming version of <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/\">Rest PKI</a> that will have extended compatibility with environments and databases. </p> <p> In addition to Windows Server (which is already supported by Rest PKI), Rest PKI Core will also run on <b>Linux</b> (Debian- and RedHat-based distributions) and on <b>Docker</b>. As for database servers, in addition to SQL Server, <b>PostgreSQL</b> will also be supported. </p> <p> <b>Before getting started, see the integration overview on the <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/core/integration/\">Integration Guide</a></b> </p> <p> For questions regarding the usage of this API, please reach us at <a href=\"https://lacuna.help/\">lacuna.help</a> </p> <h2>Parameters</h2> <p> You will need the following parameters: </p> <ul> <li><b>Endpoint</b>: address of the Rest PKI Core instance that will be used</li> <li><b>API Key</b>: authorization key for using the API</li> </ul> <p> The <span class=\"model\">endpoint</span> must be prefixed to all relative URLs mentioned here. As for the <span class=\"model\">API Key</span>, see how to use it below. </p> <h2>Authentication</h2> <p> The API key must be sent on the <span class=\"model\">X-Api-Key</span> header on each request: </p> <!-- unfortunately, class \"example microlight\" doesn't seem to work here --> <pre style=\"font-size: 12px; padding: 10px; border-radius: 4px; background: #41444e; font-weight: 600; color: #fff;\"> X-Api-Key: yourapp|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx </pre> <h2>HTTP Codes</h2> <p> The APIs will return the following HTTP codes: </p> <table> <thead> <tr> <th>Code</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><strong class=\"model-title\">200 (OK)</strong></td> <td>Request processed successfully. The response is different for each API, please refer to the operation's documentation</td> </tr> <tr> <td><strong class=\"model-title\">400 (Bad Request)</strong></td> <td>Syntax error. For instance, when a required field was not provided</td> </tr> <tr> <td><strong class=\"model-title\">401 (Unauthorized)</strong></td> <td>API key not provided or invalid</td> </tr> <tr> <td><strong class=\"model-title\">403 (Forbidden)</strong></td> <td>API key is valid, but the application has insufficient permissions to complete the requested operation</td> </tr> <tr> <td><strong class=\"model-title\">422 (Unprocessable Entity)</strong></td> <td>API error. The response body is an <a href=\"#model-ErrorModelV2\" class=\"model\">ErrorModelV2</a> </tr> <tr> <td><strong class=\"model-title\">500 (Internal Server Error)</strong></td> <td>An unexpected error occurred. The <span class=\"model\">exceptionCode</span> contained on the response body may be of help for our support team during diagnostic.</td> </tr> </tbody> </table> <h3>Error Codes</h3> <p> Some of the error codes returned in the <span class=\"model\">code</span> field of an <a href=\"#model-ErrorModelV2\" class=\"model\">ErrorModelV2</a> (body of responses with HTTP status code 422) are provided below*: </p> <table> <thead> <tr> <th>Code</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td class=\"model\">DocumentNotFound</td> <td>A referenced document was not found (check the document ID)</td> </tr> <tr> <td class=\"model\">SecurityContextNotFound</td> <td>A referenced security context was not found (check the security context ID)</td> </tr> <tr> <td class=\"model\">SignatureSessionNotFound</td> <td>A referenced signature session was not found (check the signature session ID)</td> </tr> <tr> <td class=\"model\">BadSignatureSessionOperation</td> <td>The operation is invalid for the current signature session or document status. For instance, trying to await the session's completion if it is still <span class=\"model\">Pending</span> results in this error</td> </tr> <tr> <td class=\"model\">BackgroundProcessing</td> <td>The operation cannot be completed at this time because the resource is being processed in background</td> </tr> <tr> <td class=\"model\">SignatureSessionTokenRequired</td> <td>The signature session token was not passed on the <span class=\"model\">X-Signature-Session-Token</span> request header</td> </tr> <tr> <td class=\"model\">BadSignatureSessionToken</td> <td>An invalid signature session token was passed on the <span class=\"model\">X-Signature-Session-Token</span> request header. Check your application for possible corruption of the session token, which may contain characters <span class=\"code\">-</span> (hyphen) and <span class=\"code\">_</span> (underscore)</td> </tr> <tr> <td class=\"model\">ExpiredSignatureSessionToken</td> <td>An expired signature session token was passed on the <span class=\"model\">X-Signature-Session-Token</span> request header. Signature session tokens are normally valid for 4 hours.</td> </tr> </tbody> </table> <p style=\"font-size: 0.9em\"> *The codes shown above are the most common error codes. Nonetheless, this list is not comprehensive. New codes may be added anytime without previous warning. </p> <h2>Culture / Internationalization (i18n)</h2> <p>The <span class=\"model\">Accept-Language</span> request header is observed by this API. The following cultures are supported:</p> <ul> <li><span class=\"code\">en-US</span> (or simply <span class=\"code\">en</span>)</li> <li><span class=\"code\">pt-BR</span> (or simply <span class=\"code\">pt</span>)</li> </ul> <p><i>Notice: error messages are not affected by this header and therefore should not be displayed to users, being better suited for logging.</i></p>
7
+
8
+ The version of the OpenAPI document: 2.1.2
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import json
17
+ import pprint
18
+ import re # noqa: F401
19
+ from enum import Enum
20
+
21
+
22
+
23
+ try:
24
+ from typing import Self
25
+ except ImportError:
26
+ from typing_extensions import Self
27
+
28
+
29
+ class PdfMarkElementType(str, Enum):
30
+ """
31
+ PdfMarkElementType
32
+ """
33
+
34
+ """
35
+ allowed enum values
36
+ """
37
+ TEXT = 'Text'
38
+ IMAGE = 'Image'
39
+ QRCODE = 'QRCode'
40
+
41
+ @classmethod
42
+ def from_json(cls, json_str: str) -> Self:
43
+ """Create an instance of PdfMarkElementType from a JSON string"""
44
+ return cls(json.loads(json_str))
45
+
46
+
@@ -0,0 +1,98 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Rest PKI Core API
5
+
6
+ <b><i>Para Português, <a href=\"https://docs.lacunasoftware.com/pt-br/articles/rest-pki/core/integration/get-started\">clique aqui</a></i></b> <p> <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/core/\">Rest PKI Core</a> is an upcoming version of <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/\">Rest PKI</a> that will have extended compatibility with environments and databases. </p> <p> In addition to Windows Server (which is already supported by Rest PKI), Rest PKI Core will also run on <b>Linux</b> (Debian- and RedHat-based distributions) and on <b>Docker</b>. As for database servers, in addition to SQL Server, <b>PostgreSQL</b> will also be supported. </p> <p> <b>Before getting started, see the integration overview on the <a href=\"https://docs.lacunasoftware.com/en-us/articles/rest-pki/core/integration/\">Integration Guide</a></b> </p> <p> For questions regarding the usage of this API, please reach us at <a href=\"https://lacuna.help/\">lacuna.help</a> </p> <h2>Parameters</h2> <p> You will need the following parameters: </p> <ul> <li><b>Endpoint</b>: address of the Rest PKI Core instance that will be used</li> <li><b>API Key</b>: authorization key for using the API</li> </ul> <p> The <span class=\"model\">endpoint</span> must be prefixed to all relative URLs mentioned here. As for the <span class=\"model\">API Key</span>, see how to use it below. </p> <h2>Authentication</h2> <p> The API key must be sent on the <span class=\"model\">X-Api-Key</span> header on each request: </p> <!-- unfortunately, class \"example microlight\" doesn't seem to work here --> <pre style=\"font-size: 12px; padding: 10px; border-radius: 4px; background: #41444e; font-weight: 600; color: #fff;\"> X-Api-Key: yourapp|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx </pre> <h2>HTTP Codes</h2> <p> The APIs will return the following HTTP codes: </p> <table> <thead> <tr> <th>Code</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><strong class=\"model-title\">200 (OK)</strong></td> <td>Request processed successfully. The response is different for each API, please refer to the operation's documentation</td> </tr> <tr> <td><strong class=\"model-title\">400 (Bad Request)</strong></td> <td>Syntax error. For instance, when a required field was not provided</td> </tr> <tr> <td><strong class=\"model-title\">401 (Unauthorized)</strong></td> <td>API key not provided or invalid</td> </tr> <tr> <td><strong class=\"model-title\">403 (Forbidden)</strong></td> <td>API key is valid, but the application has insufficient permissions to complete the requested operation</td> </tr> <tr> <td><strong class=\"model-title\">422 (Unprocessable Entity)</strong></td> <td>API error. The response body is an <a href=\"#model-ErrorModelV2\" class=\"model\">ErrorModelV2</a> </tr> <tr> <td><strong class=\"model-title\">500 (Internal Server Error)</strong></td> <td>An unexpected error occurred. The <span class=\"model\">exceptionCode</span> contained on the response body may be of help for our support team during diagnostic.</td> </tr> </tbody> </table> <h3>Error Codes</h3> <p> Some of the error codes returned in the <span class=\"model\">code</span> field of an <a href=\"#model-ErrorModelV2\" class=\"model\">ErrorModelV2</a> (body of responses with HTTP status code 422) are provided below*: </p> <table> <thead> <tr> <th>Code</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td class=\"model\">DocumentNotFound</td> <td>A referenced document was not found (check the document ID)</td> </tr> <tr> <td class=\"model\">SecurityContextNotFound</td> <td>A referenced security context was not found (check the security context ID)</td> </tr> <tr> <td class=\"model\">SignatureSessionNotFound</td> <td>A referenced signature session was not found (check the signature session ID)</td> </tr> <tr> <td class=\"model\">BadSignatureSessionOperation</td> <td>The operation is invalid for the current signature session or document status. For instance, trying to await the session's completion if it is still <span class=\"model\">Pending</span> results in this error</td> </tr> <tr> <td class=\"model\">BackgroundProcessing</td> <td>The operation cannot be completed at this time because the resource is being processed in background</td> </tr> <tr> <td class=\"model\">SignatureSessionTokenRequired</td> <td>The signature session token was not passed on the <span class=\"model\">X-Signature-Session-Token</span> request header</td> </tr> <tr> <td class=\"model\">BadSignatureSessionToken</td> <td>An invalid signature session token was passed on the <span class=\"model\">X-Signature-Session-Token</span> request header. Check your application for possible corruption of the session token, which may contain characters <span class=\"code\">-</span> (hyphen) and <span class=\"code\">_</span> (underscore)</td> </tr> <tr> <td class=\"model\">ExpiredSignatureSessionToken</td> <td>An expired signature session token was passed on the <span class=\"model\">X-Signature-Session-Token</span> request header. Signature session tokens are normally valid for 4 hours.</td> </tr> </tbody> </table> <p style=\"font-size: 0.9em\"> *The codes shown above are the most common error codes. Nonetheless, this list is not comprehensive. New codes may be added anytime without previous warning. </p> <h2>Culture / Internationalization (i18n)</h2> <p>The <span class=\"model\">Accept-Language</span> request header is observed by this API. The following cultures are supported:</p> <ul> <li><span class=\"code\">en-US</span> (or simply <span class=\"code\">en</span>)</li> <li><span class=\"code\">pt-BR</span> (or simply <span class=\"code\">pt</span>)</li> </ul> <p><i>Notice: error messages are not affected by this header and therefore should not be displayed to users, being better suited for logging.</i></p>
7
+
8
+ The version of the OpenAPI document: 2.1.2
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+
15
+ from __future__ import annotations
16
+ import pprint
17
+ import re # noqa: F401
18
+ import json
19
+
20
+
21
+ from typing import Any, ClassVar, Dict, List, Optional, Union
22
+ from pydantic import BaseModel, StrictFloat, StrictInt
23
+ from restpki_ng_python_client.models.resource_content_or_reference import ResourceContentOrReference
24
+ try:
25
+ from typing import Self
26
+ except ImportError:
27
+ from typing_extensions import Self
28
+
29
+ class PdfMarkImageModel(BaseModel):
30
+ """
31
+ PdfMarkImageModel
32
+ """ # noqa: E501
33
+ opacity: Optional[Union[StrictFloat, StrictInt]] = None
34
+ resource: Optional[ResourceContentOrReference] = None
35
+ __properties: ClassVar[List[str]] = ["opacity", "resource"]
36
+
37
+ model_config = {
38
+ "populate_by_name": True,
39
+ "validate_assignment": True
40
+ }
41
+
42
+
43
+ def to_str(self) -> str:
44
+ """Returns the string representation of the model using alias"""
45
+ return pprint.pformat(self.model_dump(by_alias=True))
46
+
47
+ def to_json(self) -> str:
48
+ """Returns the JSON representation of the model using alias"""
49
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
50
+ return json.dumps(self.to_dict())
51
+
52
+ @classmethod
53
+ def from_json(cls, json_str: str) -> Self:
54
+ """Create an instance of PdfMarkImageModel from a JSON string"""
55
+ return cls.from_dict(json.loads(json_str))
56
+
57
+ def to_dict(self) -> Dict[str, Any]:
58
+ """Return the dictionary representation of the model using alias.
59
+
60
+ This has the following differences from calling pydantic's
61
+ `self.model_dump(by_alias=True)`:
62
+
63
+ * `None` is only added to the output dict for nullable fields that
64
+ were set at model initialization. Other fields with value `None`
65
+ are ignored.
66
+ """
67
+ _dict = self.model_dump(
68
+ by_alias=True,
69
+ exclude={
70
+ },
71
+ exclude_none=True,
72
+ )
73
+ # override the default output from pydantic by calling `to_dict()` of resource
74
+ if self.resource:
75
+ _dict['resource'] = self.resource.to_dict()
76
+ # set to None if opacity (nullable) is None
77
+ # and model_fields_set contains the field
78
+ if self.opacity is None and "opacity" in self.model_fields_set:
79
+ _dict['opacity'] = None
80
+
81
+ return _dict
82
+
83
+ @classmethod
84
+ def from_dict(cls, obj: Dict) -> Self:
85
+ """Create an instance of PdfMarkImageModel from a dict"""
86
+ if obj is None:
87
+ return None
88
+
89
+ if not isinstance(obj, dict):
90
+ return cls.model_validate(obj)
91
+
92
+ _obj = cls.model_validate({
93
+ "opacity": obj.get("opacity"),
94
+ "resource": ResourceContentOrReference.from_dict(obj.get("resource")) if obj.get("resource") is not None else None
95
+ })
96
+ return _obj
97
+
98
+