diff --git a/.swagger/cloud-swagger.json b/.swagger/5.7-swagger.json similarity index 99% rename from .swagger/cloud-swagger.json rename to .swagger/5.7-swagger.json index 875774c..1566995 100644 --- a/.swagger/cloud-swagger.json +++ b/.swagger/5.7-swagger.json @@ -230,7 +230,7 @@ "Attachments" ], "summary": "Upload new attachment file", - "description": "File size is restricted to 50 MB (52 428 800 bytes)", + "description": "File size is restricted to 1 GB (1 073 741 824 bytes)", "requestBody": { "content": { "multipart/form-data": { @@ -13649,85 +13649,6 @@ } } }, - "/api/v2/projects/demo": { - "post": { - "tags": [ - "Projects" - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DemoProjectApiResult" - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ValidationProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "422": { - "description": "Unprocessable Entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - } - } - }, "/api/v2/projects/{id}/restore": { "post": { "tags": [ @@ -15496,31 +15417,18 @@ } } }, - "/api/v2/search/globalSearch": { - "post": { + "/api/v2/roles": { + "get": { "tags": [ - "Search" + "Roles" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/GlobalSearchRequest" - } - ] - } - } - } - }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GlobalSearchResponse" + "$ref": "#/components/schemas/RoleApiModelApiCollection" } } } @@ -15588,44 +15496,31 @@ } } }, - "/api/v2/sections/{id}": { - "get": { + "/api/v2/search/globalSearch": { + "post": { "tags": [ - "Sections" + "Search" ], - "summary": "Get section", - "description": "\nUse case\n\nUser sets section internal (guid format) identifier\n\nUser runs method execution\n\nSystem search section by the section identifier\n\n[Optional] If isDeleted flag equals false, deleted work items are not being searched.\n If true, deleted work items are also being searched, null for all work items.\n\nSystem returns section", - "operationId": "GetSectionById", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Section internal (UUID) identifier", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "isDeleted", - "in": "query", - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/DeletionState" - } - ] + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/GlobalSearchRequest" + } + ] + } } } - ], + }, "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SectionWithStepsModel" + "$ref": "#/components/schemas/GlobalSearchResponse" } } } @@ -15651,7 +15546,7 @@ } }, "403": { - "description": "Read permission for test library is required", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -15661,7 +15556,7 @@ } }, "404": { - "description": "Section with provided ID was not found", + "description": "Not Found", "content": { "application/json": { "schema": { @@ -15691,13 +15586,16 @@ } } } - }, - "patch": { + } + }, + "/api/v2/sections/{id}": { + "get": { "tags": [ "Sections" ], - "summary": "Patch section", - "description": "See RFC 6902: JavaScript Object Notation (JSON) Patch for details", + "summary": "Get section", + "description": "\nUse case\n\nUser sets section internal (guid format) identifier\n\nUser runs method execution\n\nSystem search section by the section identifier\n\n[Optional] If isDeleted flag equals false, deleted work items are not being searched.\n If true, deleted work items are also being searched, null for all work items.\n\nSystem returns section", + "operationId": "GetSectionById", "parameters": [ { "name": "id", @@ -15708,108 +15606,210 @@ "type": "string", "format": "uuid" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Operation" + }, + { + "name": "isDeleted", + "in": "query", + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/DeletionState" } - } + ] } } - }, + ], "responses": { - "204": { - "description": "No Content" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ValidationProblemDetails" - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "403": { - "description": "Update permission for section is required", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "404": { - "description": "Not Found", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "409": { - "description": "Conflict", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "422": { - "description": "Unprocessable Entity", + "200": { + "description": "OK", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "$ref": "#/components/schemas/SectionWithStepsModel" } } } - } - } - }, - "delete": { - "tags": [ - "Sections" - ], - "summary": "Delete section", - "description": "\nUse case\n\nUser sets section identifier\n\nUser runs method execution\n\nSystem search section by the identifier\n\nSystem search and delete nested sections of the found section\n\nSystem search and delete workitems related to the found nested sections\n\nSystem deletes initial section and related workitem\n\nSystem returns no content response", - "operationId": "DeleteSection", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Section internal (UUID) identifier", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } - ], - "responses": { - "204": { - "description": "No Content" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Read permission for test library is required", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Section with provided ID was not found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "patch": { + "tags": [ + "Sections" + ], + "summary": "Patch section", + "description": "See RFC 6902: JavaScript Object Notation (JSON) Patch for details", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Section internal (UUID) identifier", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Operation" + } + } + } + } + }, + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Update permission for section is required", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Sections" + ], + "summary": "Delete section", + "description": "\nUse case\n\nUser sets section identifier\n\nUser runs method execution\n\nSystem search section by the identifier\n\nSystem search and delete nested sections of the found section\n\nSystem search and delete workitems related to the found nested sections\n\nSystem deletes initial section and related workitem\n\nSystem returns no content response", + "operationId": "DeleteSection", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Section internal (UUID) identifier", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", @@ -24372,18 +24372,380 @@ } } }, - "/api/v2/testRuns/{id}/purge": { + "/api/v2/testRuns/{id}/purge": { + "post": { + "tags": [ + "TestRuns" + ], + "summary": "Permanently delete test run from archive", + "description": "\nUse case\n\nUser sets archived test run internal (guid format) identifier\n\nSystem search and purge archived test run", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Test run internal (UUID) identifier", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "\n- ID is not valid", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Delete permission for archived test runs is required", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/api/v2/testRuns/purge/bulk": { + "post": { + "tags": [ + "TestRuns" + ], + "summary": "Permanently delete multiple test runs from archive", + "description": "\nUse case\n\nUser sets selection parameters of archived test runs\n\nSystem search and delete collection of archived test runs\n\nSystem returns the number of deleted archived test runs", + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/TestRunSelectApiModel" + } + ], + "description": "Model containing options to filter test runs" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Delete permission for archived test runs is required", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/api/v2/testRuns/{id}/restore": { + "post": { + "tags": [ + "TestRuns" + ], + "summary": "Restore test run from the archive", + "description": "\nUse case\n\nUser sets archived test run internal (guid format) identifier\n\nSystem search and restore test run", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Unique ID of the test run", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "responses": { + "204": { + "description": "No Content" + }, + "400": { + "description": "\n- ID is not valid\n\n- Project was archived and cannot be edited anymore", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Read permission for archive is required", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/api/v2/testRuns/restore/bulk": { + "post": { + "tags": [ + "TestRuns" + ], + "summary": "Restore multiple test runs from the archive", + "description": "\nUse case\n\nUser sets selection parameters of archived test runs\n\nSystem search and restore collection of archived test runs\n\nSystem returns the number of restored test runs", + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/TestRunSelectApiModel" + } + ], + "description": "Model containing options to filter test runs" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "integer", + "format": "int32" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ValidationProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "403": { + "description": "Read permission for archive is required", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + } + }, + "/api/v2/testRuns/{id}/reruns": { "post": { "tags": [ "TestRuns" ], - "summary": "Permanently delete test run from archive", - "description": "\nUse case\n\nUser sets archived test run internal (guid format) identifier\n\nSystem search and purge archived test run", + "summary": "Manual autotests rerun in test run", "parameters": [ { "name": "id", "in": "path", - "description": "Test run internal (UUID) identifier", "required": true, "schema": { "type": "string", @@ -24391,12 +24753,32 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/ManualRerunSelectTestResultsApiModel" + } + ] + } + } + } + }, "responses": { - "204": { - "description": "No Content" + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ManualRerunApiResult" + } + } + } }, "400": { - "description": "\n- ID is not valid", + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -24416,7 +24798,7 @@ } }, "403": { - "description": "Delete permission for archived test runs is required", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -24458,35 +24840,30 @@ } } }, - "/api/v2/testRuns/purge/bulk": { - "post": { + "/api/v2/testRuns/{id}/autoTestsNamespaces": { + "get": { "tags": [ "TestRuns" ], - "summary": "Permanently delete multiple test runs from archive", - "description": "\nUse case\n\nUser sets selection parameters of archived test runs\n\nSystem search and delete collection of archived test runs\n\nSystem returns the number of deleted archived test runs", - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/TestRunSelectApiModel" - } - ], - "description": "Model containing options to filter test runs" - } + "summary": "Get autotest classes and namespaces in test run", + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } } - }, + ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/AutoTestNamespacesCountResponse" } } } @@ -24512,7 +24889,7 @@ } }, "403": { - "description": "Delete permission for archived test runs is required", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -24554,31 +24931,74 @@ } } }, - "/api/v2/testRuns/{id}/restore": { + "/api/v2/testStatuses/search": { "post": { "tags": [ - "TestRuns" + "TestStatuses" ], - "summary": "Restore test run from the archive", - "description": "\nUse case\n\nUser sets archived test run internal (guid format) identifier\n\nSystem search and restore test run", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Unique ID of the test run", - "required": true, - "schema": { - "type": "string", - "format": "uuid" + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/SearchTestStatusesApiModel" + } + ] + } + }, + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/SearchTestStatusesApiModel" + } + ] + } + }, + "text/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/SearchTestStatusesApiModel" + } + ] + } + }, + "application/*+json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/SearchTestStatusesApiModel" + } + ] + } } } - ], + }, "responses": { - "204": { - "description": "No Content" + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/TestStatusApiResultReply" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/TestStatusApiResultReply" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TestStatusApiResultReply" + } + } + } }, "400": { - "description": "\n- ID is not valid\n\n- Project was archived and cannot be edited anymore", + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -24598,7 +25018,7 @@ } }, "403": { - "description": "Read permission for archive is required", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -24640,35 +25060,39 @@ } } }, - "/api/v2/testRuns/restore/bulk": { - "post": { + "/api/v2/testStatuses/{id}": { + "get": { "tags": [ - "TestRuns" + "TestStatuses" ], - "summary": "Restore multiple test runs from the archive", - "description": "\nUse case\n\nUser sets selection parameters of archived test runs\n\nSystem search and restore collection of archived test runs\n\nSystem returns the number of restored test runs", - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/TestRunSelectApiModel" - } - ], - "description": "Model containing options to filter test runs" - } + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } } - }, + ], "responses": { "200": { "description": "OK", "content": { + "text/plain": { + "schema": { + "$ref": "#/components/schemas/TestStatusApiResult" + } + }, "application/json": { "schema": { - "type": "integer", - "format": "int32" + "$ref": "#/components/schemas/TestStatusApiResult" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/TestStatusApiResult" } } } @@ -24694,7 +25118,7 @@ } }, "403": { - "description": "Read permission for archive is required", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -24734,14 +25158,11 @@ } } } - } - }, - "/api/v2/testRuns/{id}/reruns": { - "post": { + }, + "put": { "tags": [ - "TestRuns" + "TestStatuses" ], - "summary": "Manual autotests rerun in test run", "parameters": [ { "name": "id", @@ -24755,11 +25176,38 @@ ], "requestBody": { "content": { + "application/json-patch+json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/UpdateTestStatusApiModel" + } + ] + } + }, "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/ManualRerunSelectTestResultsApiModel" + "$ref": "#/components/schemas/UpdateTestStatusApiModel" + } + ] + } + }, + "text/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/UpdateTestStatusApiModel" + } + ] + } + }, + "application/*+json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/UpdateTestStatusApiModel" } ] } @@ -24767,15 +25215,8 @@ } }, "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ManualRerunApiResult" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", @@ -24838,14 +25279,11 @@ } } } - } - }, - "/api/v2/testRuns/{id}/autoTestsNamespaces": { - "get": { + }, + "delete": { "tags": [ - "TestRuns" + "TestStatuses" ], - "summary": "Get autotest classes and namespaces in test run", "parameters": [ { "name": "id", @@ -24858,15 +25296,8 @@ } ], "responses": { - "200": { - "description": "OK", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AutoTestNamespacesCountResponse" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", @@ -24931,7 +25362,7 @@ } } }, - "/api/v2/testStatuses/search": { + "/api/v2/testStatuses": { "post": { "tags": [ "TestStatuses" @@ -24942,7 +25373,7 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/SearchTestStatusesApiModel" + "$ref": "#/components/schemas/CreateTestStatusApiModel" } ] } @@ -24951,7 +25382,7 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/SearchTestStatusesApiModel" + "$ref": "#/components/schemas/CreateTestStatusApiModel" } ] } @@ -24960,7 +25391,7 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/SearchTestStatusesApiModel" + "$ref": "#/components/schemas/CreateTestStatusApiModel" } ] } @@ -24969,7 +25400,7 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/SearchTestStatusesApiModel" + "$ref": "#/components/schemas/CreateTestStatusApiModel" } ] } @@ -24977,22 +25408,22 @@ } }, "responses": { - "200": { - "description": "OK", + "201": { + "description": "Created", "content": { "text/plain": { "schema": { - "$ref": "#/components/schemas/TestStatusApiResultReply" + "$ref": "#/components/schemas/TestStatusApiResult" } }, "application/json": { "schema": { - "$ref": "#/components/schemas/TestStatusApiResultReply" + "$ref": "#/components/schemas/TestStatusApiResult" } }, "text/json": { "schema": { - "$ref": "#/components/schemas/TestStatusApiResultReply" + "$ref": "#/components/schemas/TestStatusApiResult" } } } @@ -25060,19 +25491,18 @@ } } }, - "/api/v2/testStatuses/{id}": { + "/api/v2/testStatuses/name/{name}/exists": { "get": { "tags": [ "TestStatuses" ], "parameters": [ { - "name": "id", + "name": "name", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], @@ -25082,17 +25512,17 @@ "content": { "text/plain": { "schema": { - "$ref": "#/components/schemas/TestStatusApiResult" + "type": "boolean" } }, "application/json": { "schema": { - "$ref": "#/components/schemas/TestStatusApiResult" + "type": "boolean" } }, "text/json": { "schema": { - "$ref": "#/components/schemas/TestStatusApiResult" + "type": "boolean" } } } @@ -25158,65 +25588,43 @@ } } } - }, - "put": { + } + }, + "/api/v2/testStatuses/code/{code}/exists": { + "get": { "tags": [ "TestStatuses" ], "parameters": [ { - "name": "id", + "name": "code", "in": "path", "required": true, "schema": { - "type": "string", - "format": "uuid" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json-patch+json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/UpdateTestStatusApiModel" - } - ] - } - }, - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/UpdateTestStatusApiModel" - } - ] - } - }, - "text/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/UpdateTestStatusApiModel" - } - ] - } - }, - "application/*+json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/UpdateTestStatusApiModel" - } - ] + "responses": { + "200": { + "description": "OK", + "content": { + "text/plain": { + "schema": { + "type": "boolean" + } + }, + "application/json": { + "schema": { + "type": "boolean" + } + }, + "text/json": { + "schema": { + "type": "boolean" + } } } - } - }, - "responses": { - "204": { - "description": "No Content" }, "400": { "description": "Bad Request", @@ -25279,25 +25687,39 @@ } } } - }, - "delete": { + } + }, + "/api/v2/testSuites/{id}": { + "get": { "tags": [ - "TestStatuses" + "TestSuites" ], + "summary": "Get TestSuite by Id", + "description": "\nUse case\n\nUser sets test suite identifier\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem returns test suite", + "operationId": "GetTestSuiteById", "parameters": [ { "name": "id", "in": "path", + "description": "Test suite internal (guid format) identifier\"", "required": true, "schema": { "type": "string", "format": "uuid" - } + }, + "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } ], "responses": { - "204": { - "description": "No Content" + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TestSuiteApiResult" + } + } + } }, "400": { "description": "Bad Request", @@ -25320,7 +25742,7 @@ } }, "403": { - "description": "Forbidden", + "description": "Read permission for test plan required", "content": { "application/json": { "schema": { @@ -25330,7 +25752,7 @@ } }, "404": { - "description": "Not Found", + "description": "\nCan't find a TestSuite with id!", "content": { "application/json": { "schema": { @@ -25360,74 +25782,127 @@ } } } - } - }, - "/api/v2/testStatuses": { - "post": { + }, + "patch": { "tags": [ - "TestStatuses" + "TestSuites" + ], + "summary": "Patch test suite", + "description": "See RFC 6902: JavaScript Object Notation (JSON) Patch for details", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Test Suite internal (UUID) identifier", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } ], "requestBody": { "content": { - "application/json-patch+json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CreateTestStatusApiModel" - } - ] - } - }, "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CreateTestStatusApiModel" - } - ] - } - }, - "text/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CreateTestStatusApiModel" - } - ] - } - }, - "application/*+json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CreateTestStatusApiModel" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/Operation" + } } } } }, "responses": { - "201": { - "description": "Created", + "204": { + "description": "No Content" + }, + "400": { + "description": "Bad Request", "content": { - "text/plain": { + "application/json": { "schema": { - "$ref": "#/components/schemas/TestStatusApiResult" + "$ref": "#/components/schemas/ValidationProblemDetails" } - }, + } + } + }, + "401": { + "description": "Unauthorized", + "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TestStatusApiResult" + "$ref": "#/components/schemas/ProblemDetails" } - }, - "text/json": { + } + } + }, + "403": { + "description": "Update permission for test suite is required", + "content": { + "application/json": { "schema": { - "$ref": "#/components/schemas/TestStatusApiResult" + "$ref": "#/components/schemas/ProblemDetails" } } } }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "422": { + "description": "Unprocessable Entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + "delete": { + "tags": [ + "TestSuites" + ], + "summary": "Delete TestSuite", + "description": "\nUse case\n\nUser sets test suite identifier\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem deletes test suite\n\nSystem returns no content response", + "operationId": "DeleteTestSuite", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Test suite internal (guid format) identifier\"", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + }, + "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } + ], + "responses": { + "204": { + "description": "Successful operation" + }, "400": { "description": "Bad Request", "content": { @@ -25449,7 +25924,7 @@ } }, "403": { - "description": "Forbidden", + "description": "Delete permission for test plan required", "content": { "application/json": { "schema": { @@ -25459,7 +25934,7 @@ } }, "404": { - "description": "Not Found", + "description": "\nCan't find a TestSuite with id", "content": { "application/json": { "schema": { @@ -25491,38 +25966,32 @@ } } }, - "/api/v2/testStatuses/name/{name}/exists": { - "get": { + "/api/v2/testSuites": { + "post": { "tags": [ - "TestStatuses" + "TestSuites" ], - "parameters": [ - { - "name": "name", - "in": "path", - "required": true, - "schema": { - "type": "string" + "summary": "Create test suite", + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/TestSuiteV2PostModel" + } + ] + } } } - ], + }, "responses": { - "200": { - "description": "OK", + "201": { + "description": "Created", "content": { - "text/plain": { - "schema": { - "type": "boolean" - } - }, "application/json": { "schema": { - "type": "boolean" - } - }, - "text/json": { - "schema": { - "type": "boolean" + "$ref": "#/components/schemas/TestSuiteV2GetModel" } } } @@ -25548,7 +26017,7 @@ } }, "403": { - "description": "Forbidden", + "description": "Update permission for test plan is required", "content": { "application/json": { "schema": { @@ -25588,43 +26057,28 @@ } } } - } - }, - "/api/v2/testStatuses/code/{code}/exists": { - "get": { + }, + "put": { "tags": [ - "TestStatuses" + "TestSuites" ], - "parameters": [ - { - "name": "code", - "in": "path", - "required": true, - "schema": { - "type": "string" + "summary": "Edit test suite", + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/TestSuiteV2PutModel" + } + ] + } } } - ], + }, "responses": { - "200": { - "description": "OK", - "content": { - "text/plain": { - "schema": { - "type": "boolean" - } - }, - "application/json": { - "schema": { - "type": "boolean" - } - }, - "text/json": { - "schema": { - "type": "boolean" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", @@ -25647,7 +26101,7 @@ } }, "403": { - "description": "Forbidden", + "description": "Update permission for test plan is required", "content": { "application/json": { "schema": { @@ -25689,37 +26143,27 @@ } } }, - "/api/v2/testSuites/{id}": { - "get": { + "/api/v2/testSuites/{id}/refresh": { + "post": { "tags": [ "TestSuites" ], - "summary": "Get TestSuite by Id", - "description": "\nUse case\n\nUser sets test suite identifier\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem returns test suite", - "operationId": "GetTestSuiteById", + "summary": "Refresh test suite. Only dynamic test suites are supported by this method", "parameters": [ { "name": "id", "in": "path", - "description": "Test suite internal (guid format) identifier\"", + "description": "Test Suite internal (UUID) identifier", "required": true, "schema": { "type": "string", "format": "uuid" - }, - "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } } ], "responses": { - "200": { - "description": "Successful operation", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/TestSuiteApiResult" - } - } - } + "204": { + "description": "No Content" }, "400": { "description": "Bad Request", @@ -25742,7 +26186,7 @@ } }, "403": { - "description": "Read permission for test plan required", + "description": "Update permission for test suite is required", "content": { "application/json": { "schema": { @@ -25752,7 +26196,7 @@ } }, "404": { - "description": "\nCan't find a TestSuite with id!", + "description": "Not Found", "content": { "application/json": { "schema": { @@ -25782,40 +26226,42 @@ } } } - }, - "patch": { + } + }, + "/api/v2/testSuites/{id}/testPoints": { + "get": { "tags": [ "TestSuites" ], - "summary": "Patch test suite", - "description": "See RFC 6902: JavaScript Object Notation (JSON) Patch for details", + "summary": "Get TestPoints By Id", + "description": "\nUse case\n\nUser sets test suite identifier\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem search test points related to the test suite\n\nSystem returns test points array", + "operationId": "GetTestPointsById", "parameters": [ { "name": "id", "in": "path", - "description": "Test Suite internal (UUID) identifier", + "description": "Test suite internal (guid format) identifier\"", "required": true, "schema": { "type": "string", "format": "uuid" - } + }, + "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Operation" + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TestPointByTestSuiteModel" + } } } } - } - }, - "responses": { - "204": { - "description": "No Content" }, "400": { "description": "Bad Request", @@ -25838,7 +26284,7 @@ } }, "403": { - "description": "Update permission for test suite is required", + "description": "Read permission for test plan required", "content": { "application/json": { "schema": { @@ -25848,7 +26294,7 @@ } }, "404": { - "description": "Not Found", + "description": "\nCan't find a TestSuite with id!", "content": { "application/json": { "schema": { @@ -25878,14 +26324,16 @@ } } } - }, - "delete": { + } + }, + "/api/v2/testSuites/{id}/testResults": { + "get": { "tags": [ "TestSuites" ], - "summary": "Delete TestSuite", - "description": "\nUse case\n\nUser sets test suite identifier\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem deletes test suite\n\nSystem returns no content response", - "operationId": "DeleteTestSuite", + "summary": "Get TestResults By Id", + "description": "\nUse case\n\nUser sets test suite identifier\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem search test points related to the test suite\n\nSystem search test results related to the test points\n\nSystem returns test results array", + "operationId": "GetTestResultsById", "parameters": [ { "name": "id", @@ -25900,8 +26348,18 @@ } ], "responses": { - "204": { - "description": "Successful operation" + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TestResultV2ShortModel" + } + } + } + } }, "400": { "description": "Bad Request", @@ -25924,7 +26382,7 @@ } }, "403": { - "description": "Delete permission for test plan required", + "description": "Read permission for test plan required", "content": { "application/json": { "schema": { @@ -25934,7 +26392,7 @@ } }, "404": { - "description": "\nCan't find a TestSuite with id", + "description": "\nCan't find a TestSuite with id!", "content": { "application/json": { "schema": { @@ -25966,19 +26424,74 @@ } } }, - "/api/v2/testSuites": { + "/api/v2/testSuites/{id}/workItems/search": { "post": { "tags": [ "TestSuites" ], - "summary": "Create test suite", + "summary": "Search WorkItems", + "description": "\nUse case\n\nUser sets test suite identifier\n\n[Optional] User sets filter\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem search test points related to the test suite\n\nSystem search work items related to the test points\n\n[Optional] User sets filter, system applies filter\n\nSystem returns work items array", + "operationId": "SearchWorkItems", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Test suite internal (guid format) identifier\"", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + }, + "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + }, + { + "name": "Skip", + "in": "query", + "description": "Amount of items to be skipped (offset)", + "schema": { + "type": "integer" + } + }, + { + "name": "Take", + "in": "query", + "description": "Amount of items to be taken (limit)", + "schema": { + "type": "integer" + } + }, + { + "name": "OrderBy", + "in": "query", + "description": "SQL-like ORDER BY statement (column1 ASC|DESC , column2 ASC|DESC)", + "schema": { + "type": "string" + } + }, + { + "name": "SearchField", + "in": "query", + "description": "Property name for searching", + "schema": { + "type": "string" + } + }, + { + "name": "SearchValue", + "in": "query", + "description": "Value for searching", + "schema": { + "type": "string" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/TestSuiteV2PostModel" + "$ref": "#/components/schemas/TestSuiteWorkItemsSearchModel" } ] } @@ -25986,12 +26499,41 @@ } }, "responses": { - "201": { - "description": "Created", + "200": { + "description": "Successful operation", + "headers": { + "Pagination-Skip": { + "description": "Skipped amount of items", + "schema": { + "type": "integer" + } + }, + "Pagination-Take": { + "description": "Taken items", + "schema": { + "type": "integer" + } + }, + "Pagination-Pages": { + "description": "Expected number of pages", + "schema": { + "type": "integer" + } + }, + "Pagination-Total-Items": { + "description": "Total count of items", + "schema": { + "type": "integer" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TestSuiteV2GetModel" + "type": "array", + "items": { + "$ref": "#/components/schemas/WorkItemShortModel" + } } } } @@ -26017,7 +26559,7 @@ } }, "403": { - "description": "Update permission for test plan is required", + "description": "Read permission for test plan required", "content": { "application/json": { "schema": { @@ -26027,7 +26569,7 @@ } }, "404": { - "description": "Not Found", + "description": "Can't find a TestSuite with id!", "content": { "application/json": { "schema": { @@ -26056,22 +26598,38 @@ } } } - } - }, - "put": { + }, + "deprecated": true + } + }, + "/api/v2/testSuites/{id}/workItems": { + "post": { "tags": [ "TestSuites" ], - "summary": "Edit test suite", + "summary": "Set work items for test suite", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Unique ID of the test suite", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], "requestBody": { "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/TestSuiteV2PutModel" - } - ] + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid" + } } } } @@ -26143,27 +26701,44 @@ } } }, - "/api/v2/testSuites/{id}/refresh": { + "/api/v2/testSuites/{id}/test-points": { "post": { "tags": [ "TestSuites" ], - "summary": "Refresh test suite. Only dynamic test suites are supported by this method", + "summary": "Add test-points to test suite", + "operationId": "AddTestPointsToTestSuite", "parameters": [ { "name": "id", "in": "path", - "description": "Test Suite internal (UUID) identifier", + "description": "Test suite internal identifier", "required": true, "schema": { "type": "string", "format": "uuid" - } + }, + "example": "1ed608bf-8ac9-4ffd-b91e-ebdbbdce6132" } ], + "requestBody": { + "description": "Filter object to retrieve work items for test-suite's project", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/WorkItemSelectModel" + } + ], + "description": "Model containing options to filter work items" + } + } + } + }, "responses": { "204": { - "description": "No Content" + "description": "Successful operation" }, "400": { "description": "Bad Request", @@ -26186,7 +26761,7 @@ } }, "403": { - "description": "Update permission for test suite is required", + "description": "Update permission for test plan is required", "content": { "application/json": { "schema": { @@ -26196,7 +26771,7 @@ } }, "404": { - "description": "Not Found", + "description": "Test suite with provided ID was not found", "content": { "application/json": { "schema": { @@ -26216,7 +26791,7 @@ } }, "422": { - "description": "Unprocessable Entity", + "description": "Shared steps cannot be added to test suite", "content": { "application/json": { "schema": { @@ -26228,14 +26803,14 @@ } } }, - "/api/v2/testSuites/{id}/testPoints": { + "/api/v2/testSuites/{id}/configurations": { "get": { "tags": [ "TestSuites" ], - "summary": "Get TestPoints By Id", - "description": "\nUse case\n\nUser sets test suite identifier\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem search test points related to the test suite\n\nSystem returns test points array", - "operationId": "GetTestPointsById", + "summary": "Get Configurations By Id", + "description": "\nUse case\n\nUser sets test suite identifier\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem search test points related to the test suite\n\nSystem search configurations related to the test points\n\nSystem returns configurations array", + "operationId": "GetConfigurationsByTestSuiteId", "parameters": [ { "name": "id", @@ -26257,7 +26832,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/TestPointByTestSuiteModel" + "$ref": "#/components/schemas/ConfigurationModel" } } } @@ -26324,16 +26899,14 @@ } } } - } - }, - "/api/v2/testSuites/{id}/testResults": { - "get": { + }, + "post": { "tags": [ "TestSuites" ], - "summary": "Get TestResults By Id", - "description": "\nUse case\n\nUser sets test suite identifier\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem search test points related to the test suite\n\nSystem search test results related to the test points\n\nSystem returns test results array", - "operationId": "GetTestResultsById", + "summary": "Set Configurations By TestSuite Id", + "description": "\nUse case\n\nUser sets test suite identifier\n\nUser sets collection of configuration identifiers\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem search test points related to the test suite\n\nSystem search configuration\n\nSystem restores(if exist) or creates test points with listed configuration\n\nSystem returns no content response", + "operationId": "SetConfigurationsByTestSuiteId", "parameters": [ { "name": "id", @@ -26347,22 +26920,27 @@ "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } ], - "responses": { - "200": { - "description": "Successful operation", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/TestResultV2ShortModel" - } + "requestBody": { + "description": "Collection of configuration identifiers\"", + "content": { + "application/json": { + "schema": { + "uniqueItems": true, + "type": "array", + "items": { + "type": "string", + "format": "uuid" } } } + } + }, + "responses": { + "204": { + "description": "Successful operation" }, "400": { - "description": "Bad Request", + "description": "\nSome of Configurations do not exist in the project, or they are not active", "content": { "application/json": { "schema": { @@ -26382,7 +26960,7 @@ } }, "403": { - "description": "Read permission for test plan required", + "description": "Update permission for test plan required", "content": { "application/json": { "schema": { @@ -26392,7 +26970,7 @@ } }, "404": { - "description": "\nCan't find a TestSuite with id!", + "description": "\nCan't find a TestSuite with id", "content": { "application/json": { "schema": { @@ -26424,119 +27002,34 @@ } } }, - "/api/v2/testSuites/{id}/workItems/search": { + "/api/v2/users/{userId}/roles/{roleId}": { "post": { "tags": [ - "TestSuites" + "UserRoleAssignments" ], - "summary": "Search WorkItems", - "description": "\nUse case\n\nUser sets test suite identifier\n\n[Optional] User sets filter\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem search test points related to the test suite\n\nSystem search work items related to the test points\n\n[Optional] User sets filter, system applies filter\n\nSystem returns work items array", - "operationId": "SearchWorkItems", "parameters": [ { - "name": "id", + "name": "userId", "in": "path", - "description": "Test suite internal (guid format) identifier\"", "required": true, "schema": { "type": "string", "format": "uuid" - }, - "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6" - }, - { - "name": "Skip", - "in": "query", - "description": "Amount of items to be skipped (offset)", - "schema": { - "type": "integer" } }, { - "name": "Take", - "in": "query", - "description": "Amount of items to be taken (limit)", - "schema": { - "type": "integer" - } - }, - { - "name": "OrderBy", - "in": "query", - "description": "SQL-like ORDER BY statement (column1 ASC|DESC , column2 ASC|DESC)", - "schema": { - "type": "string" - } - }, - { - "name": "SearchField", - "in": "query", - "description": "Property name for searching", - "schema": { - "type": "string" - } - }, - { - "name": "SearchValue", - "in": "query", - "description": "Value for searching", + "name": "roleId", + "in": "path", + "required": true, "schema": { - "type": "string" + "type": "string", + "format": "uuid" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/TestSuiteWorkItemsSearchModel" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Successful operation", - "headers": { - "Pagination-Skip": { - "description": "Skipped amount of items", - "schema": { - "type": "integer" - } - }, - "Pagination-Take": { - "description": "Taken items", - "schema": { - "type": "integer" - } - }, - "Pagination-Pages": { - "description": "Expected number of pages", - "schema": { - "type": "integer" - } - }, - "Pagination-Total-Items": { - "description": "Total count of items", - "schema": { - "type": "integer" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WorkItemShortModel" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -26559,7 +27052,7 @@ } }, "403": { - "description": "Read permission for test plan required", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -26569,7 +27062,7 @@ } }, "404": { - "description": "Can't find a TestSuite with id!", + "description": "Not Found", "content": { "application/json": { "schema": { @@ -26598,45 +27091,35 @@ } } } - }, - "deprecated": true - } - }, - "/api/v2/testSuites/{id}/workItems": { - "post": { + } + }, + "delete": { "tags": [ - "TestSuites" + "UserRoleAssignments" ], - "summary": "Set work items for test suite", "parameters": [ { - "name": "id", + "name": "userId", "in": "path", - "description": "Unique ID of the test suite", "required": true, "schema": { "type": "string", "format": "uuid" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "uniqueItems": true, - "type": "array", - "items": { - "type": "string", - "format": "uuid" - } - } + }, + { + "name": "roleId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" } } - }, + ], "responses": { - "204": { - "description": "No Content" + "200": { + "description": "OK" }, "400": { "description": "Bad Request", @@ -26659,7 +27142,7 @@ } }, "403": { - "description": "Update permission for test plan is required", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -26701,44 +27184,32 @@ } } }, - "/api/v2/testSuites/{id}/test-points": { - "post": { + "/api/v2/users/{userId}": { + "get": { "tags": [ - "TestSuites" + "Users" ], - "summary": "Add test-points to test suite", - "operationId": "AddTestPointsToTestSuite", "parameters": [ { - "name": "id", + "name": "userId", "in": "path", - "description": "Test suite internal identifier", "required": true, "schema": { "type": "string", "format": "uuid" - }, - "example": "1ed608bf-8ac9-4ffd-b91e-ebdbbdce6132" + } } ], - "requestBody": { - "description": "Filter object to retrieve work items for test-suite's project", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/WorkItemSelectModel" - } - ], - "description": "Model containing options to filter work items" + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserApiModel" + } } } - } - }, - "responses": { - "204": { - "description": "Successful operation" }, "400": { "description": "Bad Request", @@ -26761,7 +27232,7 @@ } }, "403": { - "description": "Update permission for test plan is required", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -26771,7 +27242,7 @@ } }, "404": { - "description": "Test suite with provided ID was not found", + "description": "Not Found", "content": { "application/json": { "schema": { @@ -26791,7 +27262,7 @@ } }, "422": { - "description": "Shared steps cannot be added to test suite", + "description": "Unprocessable Entity", "content": { "application/json": { "schema": { @@ -26801,42 +27272,25 @@ } } } - } - }, - "/api/v2/testSuites/{id}/configurations": { - "get": { + }, + "delete": { "tags": [ - "TestSuites" + "Users" ], - "summary": "Get Configurations By Id", - "description": "\nUse case\n\nUser sets test suite identifier\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem search test points related to the test suite\n\nSystem search configurations related to the test points\n\nSystem returns configurations array", - "operationId": "GetConfigurationsByTestSuiteId", "parameters": [ { - "name": "id", + "name": "userId", "in": "path", - "description": "Test suite internal (guid format) identifier\"", "required": true, "schema": { "type": "string", "format": "uuid" - }, - "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6" + } } ], "responses": { "200": { - "description": "Successful operation", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ConfigurationModel" - } - } - } - } + "description": "OK" }, "400": { "description": "Bad Request", @@ -26859,7 +27313,7 @@ } }, "403": { - "description": "Read permission for test plan required", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -26869,7 +27323,7 @@ } }, "404": { - "description": "\nCan't find a TestSuite with id!", + "description": "Not Found", "content": { "application/json": { "schema": { @@ -26899,48 +27353,39 @@ } } } - }, + } + }, + "/api/v2/users": { "post": { "tags": [ - "TestSuites" - ], - "summary": "Set Configurations By TestSuite Id", - "description": "\nUse case\n\nUser sets test suite identifier\n\nUser sets collection of configuration identifiers\n\nUser runs method execution\n\nSystem search test suite by identifier\n\nSystem search test points related to the test suite\n\nSystem search configuration\n\nSystem restores(if exist) or creates test points with listed configuration\n\nSystem returns no content response", - "operationId": "SetConfigurationsByTestSuiteId", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Test suite internal (guid format) identifier\"", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - }, - "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6" - } + "Users" ], "requestBody": { - "description": "Collection of configuration identifiers\"", "content": { "application/json": { "schema": { - "uniqueItems": true, - "type": "array", - "items": { - "type": "string", - "format": "uuid" - } + "allOf": [ + { + "$ref": "#/components/schemas/CreateUserApiModel" + } + ] } } } }, "responses": { - "204": { - "description": "Successful operation" + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserApiModel" + } + } + } }, "400": { - "description": "\nSome of Configurations do not exist in the project, or they are not active", + "description": "Bad Request", "content": { "application/json": { "schema": { @@ -26960,7 +27405,7 @@ } }, "403": { - "description": "Update permission for test plan required", + "description": "Forbidden", "content": { "application/json": { "schema": { @@ -26970,7 +27415,7 @@ } }, "404": { - "description": "\nCan't find a TestSuite with id", + "description": "Not Found", "content": { "application/json": { "schema": { @@ -36891,6 +37336,49 @@ }, "additionalProperties": false }, + "CreateUserApiModel": { + "required": [ + "displayName", + "email", + "firstName", + "lastName", + "userName" + ], + "type": "object", + "properties": { + "userName": { + "minLength": 1, + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "password": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "format": "email" + }, + "providerId": { + "type": "string", + "format": "uuid", + "nullable": true + }, + "externalId": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, "CreateWorkItemApiModel": { "required": [ "attributes", @@ -37847,20 +38335,6 @@ ], "type": "string" }, - "DemoProjectApiResult": { - "required": [ - "jobId" - ], - "type": "object", - "properties": { - "jobId": { - "type": "string", - "description": "Job ID", - "format": "uuid" - } - }, - "additionalProperties": false - }, "EnableProjectExternalServiceApiModel": { "required": [ "settings" @@ -39876,8 +40350,6 @@ "LinkShortApiResult": { "required": [ "id", - "title", - "type", "url" ], "type": "object", @@ -39887,13 +40359,15 @@ "format": "uuid" }, "title": { - "type": "string" + "type": "string", + "nullable": true }, "url": { "type": "string" }, "type": { - "type": "string" + "type": "string", + "nullable": true } }, "additionalProperties": false @@ -39901,7 +40375,6 @@ "LinkShortModel": { "required": [ "id", - "title", "url" ], "type": "object", @@ -39911,7 +40384,8 @@ "format": "uuid" }, "title": { - "type": "string" + "type": "string", + "nullable": true }, "type": { "type": "string", @@ -40422,6 +40896,11 @@ "type": "string", "format": "uuid", "example": "39d127a1-a511-473f-8b21-f75b747a9420" + }, + "sharedStepId": { + "type": "string", + "format": "uuid", + "nullable": true } }, "additionalProperties": false @@ -40468,6 +40947,11 @@ "type": "string", "format": "uuid" }, + "sharedStepId": { + "type": "string", + "format": "uuid", + "nullable": true + }, "parameterKeyId": { "type": "string", "format": "uuid" @@ -41793,6 +42277,49 @@ }, "additionalProperties": false }, + "RoleApiModel": { + "required": [ + "id", + "isSystem", + "name" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "isSystem": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "RoleApiModelApiCollection": { + "required": [ + "data", + "totalCount" + ], + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RoleApiModel" + }, + "description": "Items" + }, + "totalCount": { + "type": "integer", + "description": "Total count", + "format": "int64" + } + }, + "additionalProperties": false + }, "SearchCustomAttributeTemplateGetModel": { "required": [ "customAttributeModels", @@ -50856,6 +51383,46 @@ }, "additionalProperties": false }, + "UserApiModel": { + "required": [ + "displayName", + "email", + "firstName", + "id", + "lastName", + "userName" + ], + "type": "object", + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "userName": { + "minLength": 1, + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "email": { + "type": "string", + "format": "email" + }, + "providerId": { + "type": "string", + "format": "uuid", + "nullable": true + } + }, + "additionalProperties": false + }, "UserCustomNameValidationResponse": { "required": [ "exists" @@ -54960,6 +55527,9 @@ { "name": "Projects" }, + { + "name": "Roles" + }, { "name": "Search" }, @@ -54987,6 +55557,9 @@ { "name": "TestSuites" }, + { + "name": "UserRoleAssignments" + }, { "name": "Users" }, diff --git a/README.md b/README.md index 8697f77..3a290aa 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ | 5.4.1 | 7.0.3.post541 | | 5.5.0 | 7.2.0.post550 | | 5.6.0 | 7.4.0.post560 | +| 5.7.0 | 7.5.5.post570 | | Cloud | 7.5.5 + | 1. For current versions, see the releases tab. @@ -195,7 +196,6 @@ Class | Method | HTTP request | Description *ProjectWorkItemsApi* | [**api_v2_projects_project_id_work_items_tags_get**](docs/ProjectWorkItemsApi.md#api_v2_projects_project_id_work_items_tags_get) | **GET** /api/v2/projects/{projectId}/workItems/tags | Get WorkItems Tags *ProjectWorkItemsApi* | [**get_work_items_by_project_id**](docs/ProjectWorkItemsApi.md#get_work_items_by_project_id) | **GET** /api/v2/projects/{projectId}/workItems | Get project work items *ProjectsApi* | [**add_global_attributes_to_project**](docs/ProjectsApi.md#add_global_attributes_to_project) | **POST** /api/v2/projects/{id}/globalAttributes | Add global attributes to project -*ProjectsApi* | [**api_v2_projects_demo_post**](docs/ProjectsApi.md#api_v2_projects_demo_post) | **POST** /api/v2/projects/demo | *ProjectsApi* | [**api_v2_projects_id_delete**](docs/ProjectsApi.md#api_v2_projects_id_delete) | **DELETE** /api/v2/projects/{id} | Archive project *ProjectsApi* | [**api_v2_projects_id_failure_classes_get**](docs/ProjectsApi.md#api_v2_projects_id_failure_classes_get) | **GET** /api/v2/projects/{id}/failureClasses | Get failure classes *ProjectsApi* | [**api_v2_projects_id_favorite_put**](docs/ProjectsApi.md#api_v2_projects_id_favorite_put) | **PUT** /api/v2/projects/{id}/favorite | Mark Project as favorite @@ -219,6 +219,7 @@ Class | Method | HTTP request | Description *ProjectsApi* | [**get_test_plans_by_project_id**](docs/ProjectsApi.md#get_test_plans_by_project_id) | **GET** /api/v2/projects/{id}/testPlans | Get project test plans *ProjectsApi* | [**get_test_runs_by_project_id**](docs/ProjectsApi.md#get_test_runs_by_project_id) | **GET** /api/v2/projects/{id}/testRuns | Get project test runs *ProjectsApi* | [**update_project**](docs/ProjectsApi.md#update_project) | **PUT** /api/v2/projects | Update project +*RolesApi* | [**api_v2_roles_get**](docs/RolesApi.md#api_v2_roles_get) | **GET** /api/v2/roles | *SearchApi* | [**api_v2_search_global_search_post**](docs/SearchApi.md#api_v2_search_global_search_post) | **POST** /api/v2/search/globalSearch | *SectionsApi* | [**api_v2_sections_id_patch**](docs/SectionsApi.md#api_v2_sections_id_patch) | **PATCH** /api/v2/sections/{id} | Patch section *SectionsApi* | [**create_section**](docs/SectionsApi.md#create_section) | **POST** /api/v2/sections | Create section @@ -328,7 +329,12 @@ Class | Method | HTTP request | Description *TestSuitesApi* | [**get_test_suite_by_id**](docs/TestSuitesApi.md#get_test_suite_by_id) | **GET** /api/v2/testSuites/{id} | Get TestSuite by Id *TestSuitesApi* | [**search_work_items**](docs/TestSuitesApi.md#search_work_items) | **POST** /api/v2/testSuites/{id}/workItems/search | Search WorkItems *TestSuitesApi* | [**set_configurations_by_test_suite_id**](docs/TestSuitesApi.md#set_configurations_by_test_suite_id) | **POST** /api/v2/testSuites/{id}/configurations | Set Configurations By TestSuite Id +*UserRoleAssignmentsApi* | [**api_v2_users_user_id_roles_role_id_delete**](docs/UserRoleAssignmentsApi.md#api_v2_users_user_id_roles_role_id_delete) | **DELETE** /api/v2/users/{userId}/roles/{roleId} | +*UserRoleAssignmentsApi* | [**api_v2_users_user_id_roles_role_id_post**](docs/UserRoleAssignmentsApi.md#api_v2_users_user_id_roles_role_id_post) | **POST** /api/v2/users/{userId}/roles/{roleId} | *UsersApi* | [**api_v2_users_exists_get**](docs/UsersApi.md#api_v2_users_exists_get) | **GET** /api/v2/users/exists | +*UsersApi* | [**api_v2_users_post**](docs/UsersApi.md#api_v2_users_post) | **POST** /api/v2/users | +*UsersApi* | [**api_v2_users_user_id_delete**](docs/UsersApi.md#api_v2_users_user_id_delete) | **DELETE** /api/v2/users/{userId} | +*UsersApi* | [**api_v2_users_user_id_get**](docs/UsersApi.md#api_v2_users_user_id_get) | **GET** /api/v2/users/{userId} | *WebhooksApi* | [**api_v2_webhooks_delete**](docs/WebhooksApi.md#api_v2_webhooks_delete) | **DELETE** /api/v2/webhooks | *WebhooksApi* | [**api_v2_webhooks_get**](docs/WebhooksApi.md#api_v2_webhooks_get) | **GET** /api/v2/webhooks | Get all webhooks *WebhooksApi* | [**api_v2_webhooks_id_delete**](docs/WebhooksApi.md#api_v2_webhooks_id_delete) | **DELETE** /api/v2/webhooks/{id} | Delete webhook by ID @@ -444,6 +450,7 @@ Class | Method | HTTP request | Description - [ApiV2TestStatusesSearchPostRequest](docs/ApiV2TestStatusesSearchPostRequest.md) - [ApiV2TestSuitesPostRequest](docs/ApiV2TestSuitesPostRequest.md) - [ApiV2TestSuitesPutRequest](docs/ApiV2TestSuitesPutRequest.md) + - [ApiV2UsersPostRequest](docs/ApiV2UsersPostRequest.md) - [ApiV2WebhooksDeleteRequest](docs/ApiV2WebhooksDeleteRequest.md) - [ApiV2WebhooksPostRequest](docs/ApiV2WebhooksPostRequest.md) - [ApiV2WebhooksPutRequest](docs/ApiV2WebhooksPutRequest.md) @@ -589,6 +596,7 @@ Class | Method | HTTP request | Description - [CreateTestRunAndFillByConfigurationsApiModel](docs/CreateTestRunAndFillByConfigurationsApiModel.md) - [CreateTestRunAndFillByWorkItemsApiModel](docs/CreateTestRunAndFillByWorkItemsApiModel.md) - [CreateTestStatusApiModel](docs/CreateTestStatusApiModel.md) + - [CreateUserApiModel](docs/CreateUserApiModel.md) - [CreateWorkItemApiModel](docs/CreateWorkItemApiModel.md) - [CreateWorkItemCommentApiModel](docs/CreateWorkItemCommentApiModel.md) - [CreateWorkItemPreviewsApiModel](docs/CreateWorkItemPreviewsApiModel.md) @@ -616,7 +624,6 @@ Class | Method | HTTP request | Description - [DateTimeRangeSelectorModel](docs/DateTimeRangeSelectorModel.md) - [DefectApiModel](docs/DefectApiModel.md) - [DeletionState](docs/DeletionState.md) - - [DemoProjectApiResult](docs/DemoProjectApiResult.md) - [EnableProjectExternalServiceApiModel](docs/EnableProjectExternalServiceApiModel.md) - [ExternalFormAllowedValueModel](docs/ExternalFormAllowedValueModel.md) - [ExternalFormCreateModel](docs/ExternalFormCreateModel.md) @@ -768,6 +775,8 @@ Class | Method | HTTP request | Description - [RerunTestResultApiResult](docs/RerunTestResultApiResult.md) - [RerunTestResultApiResultStatus](docs/RerunTestResultApiResultStatus.md) - [RerunsApiResult](docs/RerunsApiResult.md) + - [RoleApiModel](docs/RoleApiModel.md) + - [RoleApiModelApiCollection](docs/RoleApiModelApiCollection.md) - [SearchAttributesInProjectRequest](docs/SearchAttributesInProjectRequest.md) - [SearchCustomAttributeTemplateGetModel](docs/SearchCustomAttributeTemplateGetModel.md) - [SearchExternalIssuesApiModel](docs/SearchExternalIssuesApiModel.md) @@ -1012,6 +1021,7 @@ Class | Method | HTTP request | Description - [UpdateWorkItemCommentApiModel](docs/UpdateWorkItemCommentApiModel.md) - [UpdateWorkItemRequest](docs/UpdateWorkItemRequest.md) - [UpdateWorkflowApiModel](docs/UpdateWorkflowApiModel.md) + - [UserApiModel](docs/UserApiModel.md) - [UserCustomNameValidationResponse](docs/UserCustomNameValidationResponse.md) - [UserNameApiResult](docs/UserNameApiResult.md) - [ValidationProblemDetails](docs/ValidationProblemDetails.md) diff --git a/docs/ApiV2UsersPostRequest.md b/docs/ApiV2UsersPostRequest.md new file mode 100644 index 0000000..13db440 --- /dev/null +++ b/docs/ApiV2UsersPostRequest.md @@ -0,0 +1,19 @@ +# ApiV2UsersPostRequest + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**user_name** | **str** | | +**first_name** | **str** | | +**last_name** | **str** | | +**display_name** | **str** | | +**email** | **str** | | +**password** | **str, none_type** | | [optional] +**provider_id** | **str, none_type** | | [optional] +**external_id** | **str, none_type** | | [optional] +**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/AttachmentsApi.md b/docs/AttachmentsApi.md index dd628c1..f48ca45 100644 --- a/docs/AttachmentsApi.md +++ b/docs/AttachmentsApi.md @@ -362,7 +362,7 @@ This endpoint does not need any parameter. Upload new attachment file -File size is restricted to 50 MB (52 428 800 bytes) +File size is restricted to 1 GB (1 073 741 824 bytes) ### Example diff --git a/docs/CreateUserApiModel.md b/docs/CreateUserApiModel.md new file mode 100644 index 0000000..ff14e62 --- /dev/null +++ b/docs/CreateUserApiModel.md @@ -0,0 +1,18 @@ +# CreateUserApiModel + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**user_name** | **str** | | +**first_name** | **str** | | +**last_name** | **str** | | +**display_name** | **str** | | +**email** | **str** | | +**password** | **str, none_type** | | [optional] +**provider_id** | **str, none_type** | | [optional] +**external_id** | **str, none_type** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/LinkShortApiResult.md b/docs/LinkShortApiResult.md index b2e91ce..2ba4866 100644 --- a/docs/LinkShortApiResult.md +++ b/docs/LinkShortApiResult.md @@ -5,9 +5,9 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **str** | | -**title** | **str** | | **url** | **str** | | -**type** | **str** | | +**title** | **str, none_type** | | [optional] +**type** | **str, none_type** | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/LinkShortModel.md b/docs/LinkShortModel.md index b7e5fc5..ed0bdc8 100644 --- a/docs/LinkShortModel.md +++ b/docs/LinkShortModel.md @@ -5,8 +5,8 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **str** | | -**title** | **str** | | **url** | **str** | | +**title** | **str, none_type** | | [optional] **type** | **str, none_type** | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ParameterIterationModel.md b/docs/ParameterIterationModel.md index 4281e49..53207a1 100644 --- a/docs/ParameterIterationModel.md +++ b/docs/ParameterIterationModel.md @@ -5,6 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- **id** | **str** | | +**shared_step_id** | **str, none_type** | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ParameterShortModel.md b/docs/ParameterShortModel.md index a04856f..da3b3d0 100644 --- a/docs/ParameterShortModel.md +++ b/docs/ParameterShortModel.md @@ -9,6 +9,7 @@ Name | Type | Description | Notes **value** | **str** | Value of the parameter | **name** | **str** | Key of the parameter | **project_ids** | **[str]** | | +**shared_step_id** | **str, none_type** | | [optional] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/ProjectsApi.md b/docs/ProjectsApi.md index bee4ff3..9f936be 100644 --- a/docs/ProjectsApi.md +++ b/docs/ProjectsApi.md @@ -5,7 +5,6 @@ All URIs are relative to *http://localhost* Method | HTTP request | Description ------------- | ------------- | ------------- [**add_global_attributes_to_project**](ProjectsApi.md#add_global_attributes_to_project) | **POST** /api/v2/projects/{id}/globalAttributes | Add global attributes to project -[**api_v2_projects_demo_post**](ProjectsApi.md#api_v2_projects_demo_post) | **POST** /api/v2/projects/demo | [**api_v2_projects_id_delete**](ProjectsApi.md#api_v2_projects_id_delete) | **DELETE** /api/v2/projects/{id} | Archive project [**api_v2_projects_id_failure_classes_get**](ProjectsApi.md#api_v2_projects_id_failure_classes_get) | **GET** /api/v2/projects/{id}/failureClasses | Get failure classes [**api_v2_projects_id_favorite_put**](ProjectsApi.md#api_v2_projects_id_favorite_put) | **PUT** /api/v2/projects/{id}/favorite | Mark Project as favorite @@ -127,85 +126,6 @@ void (empty response body) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) -# **api_v2_projects_demo_post** -> DemoProjectApiResult api_v2_projects_demo_post() - - - -### Example - -* Api Key Authentication (Bearer or PrivateToken): - -```python -import time -import testit_api_client -from testit_api_client.api import projects_api -from testit_api_client.model.problem_details import ProblemDetails -from testit_api_client.model.demo_project_api_result import DemoProjectApiResult -from testit_api_client.model.validation_problem_details import ValidationProblemDetails -from pprint import pprint -# Defining the host is optional and defaults to http://localhost -# See configuration.py for a list of all supported configuration parameters. -configuration = testit_api_client.Configuration( - host = "http://localhost" -) - -# The client must configure the authentication and authorization parameters -# in accordance with the API server security policy. -# Examples for each auth method are provided below, use the example that -# satisfies your auth use case. - -# Configure API key authorization: Bearer or PrivateToken -configuration.api_key['Bearer or PrivateToken'] = 'YOUR_API_KEY' - -# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed -# configuration.api_key_prefix['Bearer or PrivateToken'] = 'Bearer' - -# Enter a context with an instance of the API client -with testit_api_client.ApiClient(configuration) as api_client: - # Create an instance of the API class - api_instance = projects_api.ProjectsApi(api_client) - - # example, this endpoint has no required or optional parameters - try: - api_response = api_instance.api_v2_projects_demo_post() - pprint(api_response) - except testit_api_client.ApiException as e: - print("Exception when calling ProjectsApi->api_v2_projects_demo_post: %s\n" % e) -``` - - -### Parameters -This endpoint does not need any parameter. - -### Return type - -[**DemoProjectApiResult**](DemoProjectApiResult.md) - -### Authorization - -[Bearer or PrivateToken](../README.md#Bearer or PrivateToken) - -### HTTP request headers - - - **Content-Type**: Not defined - - **Accept**: application/json - - -### HTTP response details - -| Status code | Description | Response headers | -|-------------|-------------|------------------| -**200** | OK | - | -**400** | Bad Request | - | -**401** | Unauthorized | - | -**403** | Forbidden | - | -**404** | Not Found | - | -**409** | Conflict | - | -**422** | Unprocessable Entity | - | - -[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) - # **api_v2_projects_id_delete** > api_v2_projects_id_delete(id) diff --git a/docs/DemoProjectApiResult.md b/docs/RoleApiModel.md similarity index 74% rename from docs/DemoProjectApiResult.md rename to docs/RoleApiModel.md index 39989a3..cc503ca 100644 --- a/docs/DemoProjectApiResult.md +++ b/docs/RoleApiModel.md @@ -1,10 +1,12 @@ -# DemoProjectApiResult +# RoleApiModel ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**job_id** | **str** | Job ID | +**id** | **str** | | +**name** | **str** | | +**is_system** | **bool** | | [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/docs/RoleApiModelApiCollection.md b/docs/RoleApiModelApiCollection.md new file mode 100644 index 0000000..885169c --- /dev/null +++ b/docs/RoleApiModelApiCollection.md @@ -0,0 +1,12 @@ +# RoleApiModelApiCollection + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**data** | [**[RoleApiModel]**](RoleApiModel.md) | Items | +**total_count** | **int** | Total count | + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/RolesApi.md b/docs/RolesApi.md new file mode 100644 index 0000000..1765ac7 --- /dev/null +++ b/docs/RolesApi.md @@ -0,0 +1,88 @@ +# testit_api_client.RolesApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**api_v2_roles_get**](RolesApi.md#api_v2_roles_get) | **GET** /api/v2/roles | + + +# **api_v2_roles_get** +> RoleApiModelApiCollection api_v2_roles_get() + + + +### Example + +* Api Key Authentication (Bearer or PrivateToken): + +```python +import time +import testit_api_client +from testit_api_client.api import roles_api +from testit_api_client.model.problem_details import ProblemDetails +from testit_api_client.model.role_api_model_api_collection import RoleApiModelApiCollection +from testit_api_client.model.validation_problem_details import ValidationProblemDetails +from pprint import pprint +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = testit_api_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure API key authorization: Bearer or PrivateToken +configuration.api_key['Bearer or PrivateToken'] = 'YOUR_API_KEY' + +# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed +# configuration.api_key_prefix['Bearer or PrivateToken'] = 'Bearer' + +# Enter a context with an instance of the API client +with testit_api_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = roles_api.RolesApi(api_client) + + # example, this endpoint has no required or optional parameters + try: + api_response = api_instance.api_v2_roles_get() + pprint(api_response) + except testit_api_client.ApiException as e: + print("Exception when calling RolesApi->api_v2_roles_get: %s\n" % e) +``` + + +### Parameters +This endpoint does not need any parameter. + +### Return type + +[**RoleApiModelApiCollection**](RoleApiModelApiCollection.md) + +### Authorization + +[Bearer or PrivateToken](../README.md#Bearer or PrivateToken) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | +**400** | Bad Request | - | +**401** | Unauthorized | - | +**403** | Forbidden | - | +**404** | Not Found | - | +**409** | Conflict | - | +**422** | Unprocessable Entity | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/UserApiModel.md b/docs/UserApiModel.md new file mode 100644 index 0000000..04a9154 --- /dev/null +++ b/docs/UserApiModel.md @@ -0,0 +1,17 @@ +# UserApiModel + + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | | +**user_name** | **str** | | +**first_name** | **str** | | +**last_name** | **str** | | +**display_name** | **str** | | +**email** | **str** | | +**provider_id** | **str, none_type** | | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/docs/UserRoleAssignmentsApi.md b/docs/UserRoleAssignmentsApi.md new file mode 100644 index 0000000..4e20001 --- /dev/null +++ b/docs/UserRoleAssignmentsApi.md @@ -0,0 +1,176 @@ +# testit_api_client.UserRoleAssignmentsApi + +All URIs are relative to *http://localhost* + +Method | HTTP request | Description +------------- | ------------- | ------------- +[**api_v2_users_user_id_roles_role_id_delete**](UserRoleAssignmentsApi.md#api_v2_users_user_id_roles_role_id_delete) | **DELETE** /api/v2/users/{userId}/roles/{roleId} | +[**api_v2_users_user_id_roles_role_id_post**](UserRoleAssignmentsApi.md#api_v2_users_user_id_roles_role_id_post) | **POST** /api/v2/users/{userId}/roles/{roleId} | + + +# **api_v2_users_user_id_roles_role_id_delete** +> api_v2_users_user_id_roles_role_id_delete(user_id, role_id) + + + +### Example + +* Api Key Authentication (Bearer or PrivateToken): + +```python +import time +import testit_api_client +from testit_api_client.api import user_role_assignments_api +from testit_api_client.model.problem_details import ProblemDetails +from testit_api_client.model.validation_problem_details import ValidationProblemDetails +from pprint import pprint +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = testit_api_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure API key authorization: Bearer or PrivateToken +configuration.api_key['Bearer or PrivateToken'] = 'YOUR_API_KEY' + +# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed +# configuration.api_key_prefix['Bearer or PrivateToken'] = 'Bearer' + +# Enter a context with an instance of the API client +with testit_api_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = user_role_assignments_api.UserRoleAssignmentsApi(api_client) + user_id = "userId_example" # str | + role_id = "roleId_example" # str | + + # example passing only required values which don't have defaults set + try: + api_instance.api_v2_users_user_id_roles_role_id_delete(user_id, role_id) + except testit_api_client.ApiException as e: + print("Exception when calling UserRoleAssignmentsApi->api_v2_users_user_id_roles_role_id_delete: %s\n" % e) +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user_id** | **str**| | + **role_id** | **str**| | + +### Return type + +void (empty response body) + +### Authorization + +[Bearer or PrivateToken](../README.md#Bearer or PrivateToken) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | +**400** | Bad Request | - | +**401** | Unauthorized | - | +**403** | Forbidden | - | +**404** | Not Found | - | +**409** | Conflict | - | +**422** | Unprocessable Entity | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **api_v2_users_user_id_roles_role_id_post** +> api_v2_users_user_id_roles_role_id_post(user_id, role_id) + + + +### Example + +* Api Key Authentication (Bearer or PrivateToken): + +```python +import time +import testit_api_client +from testit_api_client.api import user_role_assignments_api +from testit_api_client.model.problem_details import ProblemDetails +from testit_api_client.model.validation_problem_details import ValidationProblemDetails +from pprint import pprint +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = testit_api_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure API key authorization: Bearer or PrivateToken +configuration.api_key['Bearer or PrivateToken'] = 'YOUR_API_KEY' + +# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed +# configuration.api_key_prefix['Bearer or PrivateToken'] = 'Bearer' + +# Enter a context with an instance of the API client +with testit_api_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = user_role_assignments_api.UserRoleAssignmentsApi(api_client) + user_id = "userId_example" # str | + role_id = "roleId_example" # str | + + # example passing only required values which don't have defaults set + try: + api_instance.api_v2_users_user_id_roles_role_id_post(user_id, role_id) + except testit_api_client.ApiException as e: + print("Exception when calling UserRoleAssignmentsApi->api_v2_users_user_id_roles_role_id_post: %s\n" % e) +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user_id** | **str**| | + **role_id** | **str**| | + +### Return type + +void (empty response body) + +### Authorization + +[Bearer or PrivateToken](../README.md#Bearer or PrivateToken) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | +**400** | Bad Request | - | +**401** | Unauthorized | - | +**403** | Forbidden | - | +**404** | Not Found | - | +**409** | Conflict | - | +**422** | Unprocessable Entity | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/docs/UsersApi.md b/docs/UsersApi.md index 07b8aa8..d825091 100644 --- a/docs/UsersApi.md +++ b/docs/UsersApi.md @@ -5,6 +5,9 @@ All URIs are relative to *http://localhost* Method | HTTP request | Description ------------- | ------------- | ------------- [**api_v2_users_exists_get**](UsersApi.md#api_v2_users_exists_get) | **GET** /api/v2/users/exists | +[**api_v2_users_post**](UsersApi.md#api_v2_users_post) | **POST** /api/v2/users | +[**api_v2_users_user_id_delete**](UsersApi.md#api_v2_users_user_id_delete) | **DELETE** /api/v2/users/{userId} | +[**api_v2_users_user_id_get**](UsersApi.md#api_v2_users_user_id_get) | **GET** /api/v2/users/{userId} | # **api_v2_users_exists_get** @@ -91,3 +94,252 @@ Name | Type | Description | Notes [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) +# **api_v2_users_post** +> UserApiModel api_v2_users_post() + + + +### Example + +* Api Key Authentication (Bearer or PrivateToken): + +```python +import time +import testit_api_client +from testit_api_client.api import users_api +from testit_api_client.model.problem_details import ProblemDetails +from testit_api_client.model.api_v2_users_post_request import ApiV2UsersPostRequest +from testit_api_client.model.user_api_model import UserApiModel +from testit_api_client.model.validation_problem_details import ValidationProblemDetails +from pprint import pprint +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = testit_api_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure API key authorization: Bearer or PrivateToken +configuration.api_key['Bearer or PrivateToken'] = 'YOUR_API_KEY' + +# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed +# configuration.api_key_prefix['Bearer or PrivateToken'] = 'Bearer' + +# Enter a context with an instance of the API client +with testit_api_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = users_api.UsersApi(api_client) + api_v2_users_post_request = ApiV2UsersPostRequest(None) # ApiV2UsersPostRequest | (optional) + + # example passing only required values which don't have defaults set + # and optional values + try: + api_response = api_instance.api_v2_users_post(api_v2_users_post_request=api_v2_users_post_request) + pprint(api_response) + except testit_api_client.ApiException as e: + print("Exception when calling UsersApi->api_v2_users_post: %s\n" % e) +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **api_v2_users_post_request** | [**ApiV2UsersPostRequest**](ApiV2UsersPostRequest.md)| | [optional] + +### Return type + +[**UserApiModel**](UserApiModel.md) + +### Authorization + +[Bearer or PrivateToken](../README.md#Bearer or PrivateToken) + +### HTTP request headers + + - **Content-Type**: application/json + - **Accept**: application/json + + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | +**400** | Bad Request | - | +**401** | Unauthorized | - | +**403** | Forbidden | - | +**404** | Not Found | - | +**409** | Conflict | - | +**422** | Unprocessable Entity | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **api_v2_users_user_id_delete** +> api_v2_users_user_id_delete(user_id) + + + +### Example + +* Api Key Authentication (Bearer or PrivateToken): + +```python +import time +import testit_api_client +from testit_api_client.api import users_api +from testit_api_client.model.problem_details import ProblemDetails +from testit_api_client.model.validation_problem_details import ValidationProblemDetails +from pprint import pprint +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = testit_api_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure API key authorization: Bearer or PrivateToken +configuration.api_key['Bearer or PrivateToken'] = 'YOUR_API_KEY' + +# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed +# configuration.api_key_prefix['Bearer or PrivateToken'] = 'Bearer' + +# Enter a context with an instance of the API client +with testit_api_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = users_api.UsersApi(api_client) + user_id = "userId_example" # str | + + # example passing only required values which don't have defaults set + try: + api_instance.api_v2_users_user_id_delete(user_id) + except testit_api_client.ApiException as e: + print("Exception when calling UsersApi->api_v2_users_user_id_delete: %s\n" % e) +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user_id** | **str**| | + +### Return type + +void (empty response body) + +### Authorization + +[Bearer or PrivateToken](../README.md#Bearer or PrivateToken) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | +**400** | Bad Request | - | +**401** | Unauthorized | - | +**403** | Forbidden | - | +**404** | Not Found | - | +**409** | Conflict | - | +**422** | Unprocessable Entity | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + +# **api_v2_users_user_id_get** +> UserApiModel api_v2_users_user_id_get(user_id) + + + +### Example + +* Api Key Authentication (Bearer or PrivateToken): + +```python +import time +import testit_api_client +from testit_api_client.api import users_api +from testit_api_client.model.problem_details import ProblemDetails +from testit_api_client.model.user_api_model import UserApiModel +from testit_api_client.model.validation_problem_details import ValidationProblemDetails +from pprint import pprint +# Defining the host is optional and defaults to http://localhost +# See configuration.py for a list of all supported configuration parameters. +configuration = testit_api_client.Configuration( + host = "http://localhost" +) + +# The client must configure the authentication and authorization parameters +# in accordance with the API server security policy. +# Examples for each auth method are provided below, use the example that +# satisfies your auth use case. + +# Configure API key authorization: Bearer or PrivateToken +configuration.api_key['Bearer or PrivateToken'] = 'YOUR_API_KEY' + +# Uncomment below to setup prefix (e.g. Bearer) for API key, if needed +# configuration.api_key_prefix['Bearer or PrivateToken'] = 'Bearer' + +# Enter a context with an instance of the API client +with testit_api_client.ApiClient(configuration) as api_client: + # Create an instance of the API class + api_instance = users_api.UsersApi(api_client) + user_id = "userId_example" # str | + + # example passing only required values which don't have defaults set + try: + api_response = api_instance.api_v2_users_user_id_get(user_id) + pprint(api_response) + except testit_api_client.ApiException as e: + print("Exception when calling UsersApi->api_v2_users_user_id_get: %s\n" % e) +``` + + +### Parameters + +Name | Type | Description | Notes +------------- | ------------- | ------------- | ------------- + **user_id** | **str**| | + +### Return type + +[**UserApiModel**](UserApiModel.md) + +### Authorization + +[Bearer or PrivateToken](../README.md#Bearer or PrivateToken) + +### HTTP request headers + + - **Content-Type**: Not defined + - **Accept**: application/json + + +### HTTP response details + +| Status code | Description | Response headers | +|-------------|-------------|------------------| +**200** | OK | - | +**400** | Bad Request | - | +**401** | Unauthorized | - | +**403** | Forbidden | - | +**404** | Not Found | - | +**409** | Conflict | - | +**422** | Unprocessable Entity | - | + +[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) + diff --git a/genConfig.yml b/genConfig.yml index f0c2ff3..7a4a9c3 100644 --- a/genConfig.yml +++ b/genConfig.yml @@ -1,4 +1,4 @@ packageName: "testit_api_client" packageUrl: "https://pypi.org/project/testit-api-client/" -packageVersion: 7.5.5 +packageVersion: 7.5.5.post570 projectName: "testit-api-client" diff --git a/run.sh b/run.sh index 10b0ed0..d502ba1 100644 --- a/run.sh +++ b/run.sh @@ -1,8 +1,8 @@ #!/bin/bash # Настройка переменных -FILE_NAME="cloud-swagger.json" -NEW_VERSION="7.5.5" +FILE_NAME="5.7-swagger.json" +NEW_VERSION="7.5.5.post570" GENERATOR="openapi-generator-cli-6.6.0.jar" if [ ! -f ".swagger/$FILE_NAME" ]; then diff --git a/setup.py b/setup.py index 21992cb..ad2ee35 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ NAME = "testit-api-client" -VERSION = "7.5.5" +VERSION = "7.5.5.post570" PYTHON_REQUIRES = ">=3.7" REQUIRES = [ diff --git a/src/testit_api_client/__init__.py b/src/testit_api_client/__init__.py index dca0b0c..de862df 100644 --- a/src/testit_api_client/__init__.py +++ b/src/testit_api_client/__init__.py @@ -10,7 +10,7 @@ """ -__version__ = "7.5.5" +__version__ = "7.5.5.post570" # import ApiClient from testit_api_client.api_client import ApiClient diff --git a/src/testit_api_client/api/attachments_api.py b/src/testit_api_client/api/attachments_api.py index ca93ed3..d9fb06d 100644 --- a/src/testit_api_client/api/attachments_api.py +++ b/src/testit_api_client/api/attachments_api.py @@ -666,7 +666,7 @@ def api_v2_attachments_post( ): """Upload new attachment file # noqa: E501 - File size is restricted to 50 MB (52 428 800 bytes) # noqa: E501 + File size is restricted to 1 GB (1 073 741 824 bytes) # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True diff --git a/src/testit_api_client/api/projects_api.py b/src/testit_api_client/api/projects_api.py index 7d8253a..5ef0edc 100644 --- a/src/testit_api_client/api/projects_api.py +++ b/src/testit_api_client/api/projects_api.py @@ -26,7 +26,6 @@ from testit_api_client.model.api_v2_projects_shorts_post_request import ApiV2ProjectsShortsPostRequest from testit_api_client.model.auto_test_namespace_api_result import AutoTestNamespaceApiResult from testit_api_client.model.create_project_request import CreateProjectRequest -from testit_api_client.model.demo_project_api_result import DemoProjectApiResult from testit_api_client.model.failure_category_api_result import FailureCategoryApiResult from testit_api_client.model.filter_model import FilterModel from testit_api_client.model.operation import Operation @@ -115,50 +114,6 @@ def __init__(self, api_client=None): }, api_client=api_client ) - self.api_v2_projects_demo_post_endpoint = _Endpoint( - settings={ - 'response_type': (DemoProjectApiResult,), - 'auth': [ - 'Bearer or PrivateToken' - ], - 'endpoint_path': '/api/v2/projects/demo', - 'operation_id': 'api_v2_projects_demo_post', - 'http_method': 'POST', - 'servers': None, - }, - params_map={ - 'all': [ - ], - 'required': [], - 'nullable': [ - ], - 'enum': [ - ], - 'validation': [ - ] - }, - root_map={ - 'validations': { - }, - 'allowed_values': { - }, - 'openapi_types': { - }, - 'attribute_map': { - }, - 'location_map': { - }, - 'collection_format_map': { - } - }, - headers_map={ - 'accept': [ - 'application/json' - ], - 'content_type': [], - }, - api_client=api_client - ) self.api_v2_projects_id_delete_endpoint = _Endpoint( settings={ 'response_type': None, @@ -1626,83 +1581,6 @@ def add_global_attributes_to_project( id return self.add_global_attributes_to_project_endpoint.call_with_http_info(**kwargs) - def api_v2_projects_demo_post( - self, - **kwargs - ): - """api_v2_projects_demo_post # noqa: E501 - - This method makes a synchronous HTTP request by default. To make an - asynchronous HTTP request, please pass async_req=True - - >>> thread = api.api_v2_projects_demo_post(async_req=True) - >>> result = thread.get() - - - Keyword Args: - _return_http_data_only (bool): response data without head status - code and headers. Default is True. - _preload_content (bool): if False, the urllib3.HTTPResponse object - will be returned without reading/decoding response data. - Default is True. - _request_timeout (int/float/tuple): timeout setting for this request. If - one number provided, it will be total request timeout. It can also - be a pair (tuple) of (connection, read) timeouts. - Default is None. - _check_input_type (bool): specifies if type checking - should be done one the data sent to the server. - Default is True. - _check_return_type (bool): specifies if type checking - should be done one the data received from the server. - Default is True. - _spec_property_naming (bool): True if the variable names in the input data - are serialized names, as specified in the OpenAPI document. - False if the variable names in the input data - are pythonic names, e.g. snake case (default) - _content_type (str/None): force body content-type. - Default is None and content-type will be predicted by allowed - content-types and body. - _host_index (int/None): specifies the index of the server - that we want to use. - Default is read from the configuration. - _request_auths (list): set to override the auth_settings for an a single - request; this effectively ignores the authentication - in the spec for a single request. - Default is None - async_req (bool): execute request asynchronously - - Returns: - DemoProjectApiResult - If the method is called asynchronously, returns the request - thread. - """ - kwargs['async_req'] = kwargs.get( - 'async_req', False - ) - kwargs['_return_http_data_only'] = kwargs.get( - '_return_http_data_only', True - ) - kwargs['_preload_content'] = kwargs.get( - '_preload_content', True - ) - kwargs['_request_timeout'] = kwargs.get( - '_request_timeout', None - ) - kwargs['_check_input_type'] = kwargs.get( - '_check_input_type', True - ) - kwargs['_check_return_type'] = kwargs.get( - '_check_return_type', True - ) - kwargs['_spec_property_naming'] = kwargs.get( - '_spec_property_naming', False - ) - kwargs['_content_type'] = kwargs.get( - '_content_type') - kwargs['_host_index'] = kwargs.get('_host_index') - kwargs['_request_auths'] = kwargs.get('_request_auths', None) - return self.api_v2_projects_demo_post_endpoint.call_with_http_info(**kwargs) - def api_v2_projects_id_delete( self, id, diff --git a/src/testit_api_client/api/roles_api.py b/src/testit_api_client/api/roles_api.py new file mode 100644 index 0000000..8caf9b6 --- /dev/null +++ b/src/testit_api_client/api/roles_api.py @@ -0,0 +1,161 @@ +""" + API + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: v2.0 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from testit_api_client.api_client import ApiClient, Endpoint as _Endpoint +from testit_api_client.model_utils import ( # noqa: F401 + check_allowed_values, + check_validations, + date, + datetime, + file_type, + none_type, + validate_and_convert_types +) +from testit_api_client.model.problem_details import ProblemDetails +from testit_api_client.model.role_api_model_api_collection import RoleApiModelApiCollection +from testit_api_client.model.validation_problem_details import ValidationProblemDetails + + +class RolesApi(object): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient() + self.api_client = api_client + self.api_v2_roles_get_endpoint = _Endpoint( + settings={ + 'response_type': (RoleApiModelApiCollection,), + 'auth': [ + 'Bearer or PrivateToken' + ], + 'endpoint_path': '/api/v2/roles', + 'operation_id': 'api_v2_roles_get', + 'http_method': 'GET', + 'servers': None, + }, + params_map={ + 'all': [ + ], + 'required': [], + 'nullable': [ + ], + 'enum': [ + ], + 'validation': [ + ] + }, + root_map={ + 'validations': { + }, + 'allowed_values': { + }, + 'openapi_types': { + }, + 'attribute_map': { + }, + 'location_map': { + }, + 'collection_format_map': { + } + }, + headers_map={ + 'accept': [ + 'application/json' + ], + 'content_type': [], + }, + api_client=api_client + ) + + def api_v2_roles_get( + self, + **kwargs + ): + """api_v2_roles_get # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.api_v2_roles_get(async_req=True) + >>> result = thread.get() + + + Keyword Args: + _return_http_data_only (bool): response data without head status + code and headers. Default is True. + _preload_content (bool): if False, the urllib3.HTTPResponse object + will be returned without reading/decoding response data. + Default is True. + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also + be a pair (tuple) of (connection, read) timeouts. + Default is None. + _check_input_type (bool): specifies if type checking + should be done one the data sent to the server. + Default is True. + _check_return_type (bool): specifies if type checking + should be done one the data received from the server. + Default is True. + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _content_type (str/None): force body content-type. + Default is None and content-type will be predicted by allowed + content-types and body. + _host_index (int/None): specifies the index of the server + that we want to use. + Default is read from the configuration. + _request_auths (list): set to override the auth_settings for an a single + request; this effectively ignores the authentication + in the spec for a single request. + Default is None + async_req (bool): execute request asynchronously + + Returns: + RoleApiModelApiCollection + If the method is called asynchronously, returns the request + thread. + """ + kwargs['async_req'] = kwargs.get( + 'async_req', False + ) + kwargs['_return_http_data_only'] = kwargs.get( + '_return_http_data_only', True + ) + kwargs['_preload_content'] = kwargs.get( + '_preload_content', True + ) + kwargs['_request_timeout'] = kwargs.get( + '_request_timeout', None + ) + kwargs['_check_input_type'] = kwargs.get( + '_check_input_type', True + ) + kwargs['_check_return_type'] = kwargs.get( + '_check_return_type', True + ) + kwargs['_spec_property_naming'] = kwargs.get( + '_spec_property_naming', False + ) + kwargs['_content_type'] = kwargs.get( + '_content_type') + kwargs['_host_index'] = kwargs.get('_host_index') + kwargs['_request_auths'] = kwargs.get('_request_auths', None) + return self.api_v2_roles_get_endpoint.call_with_http_info(**kwargs) + diff --git a/src/testit_api_client/api/user_role_assignments_api.py b/src/testit_api_client/api/user_role_assignments_api.py new file mode 100644 index 0000000..589294d --- /dev/null +++ b/src/testit_api_client/api/user_role_assignments_api.py @@ -0,0 +1,325 @@ +""" + API + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: v2.0 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from testit_api_client.api_client import ApiClient, Endpoint as _Endpoint +from testit_api_client.model_utils import ( # noqa: F401 + check_allowed_values, + check_validations, + date, + datetime, + file_type, + none_type, + validate_and_convert_types +) +from testit_api_client.model.problem_details import ProblemDetails +from testit_api_client.model.validation_problem_details import ValidationProblemDetails + + +class UserRoleAssignmentsApi(object): + """NOTE: This class is auto generated by OpenAPI Generator + Ref: https://openapi-generator.tech + + Do not edit the class manually. + """ + + def __init__(self, api_client=None): + if api_client is None: + api_client = ApiClient() + self.api_client = api_client + self.api_v2_users_user_id_roles_role_id_delete_endpoint = _Endpoint( + settings={ + 'response_type': None, + 'auth': [ + 'Bearer or PrivateToken' + ], + 'endpoint_path': '/api/v2/users/{userId}/roles/{roleId}', + 'operation_id': 'api_v2_users_user_id_roles_role_id_delete', + 'http_method': 'DELETE', + 'servers': None, + }, + params_map={ + 'all': [ + 'user_id', + 'role_id', + ], + 'required': [ + 'user_id', + 'role_id', + ], + 'nullable': [ + ], + 'enum': [ + ], + 'validation': [ + ] + }, + root_map={ + 'validations': { + }, + 'allowed_values': { + }, + 'openapi_types': { + 'user_id': + (str,), + 'role_id': + (str,), + }, + 'attribute_map': { + 'user_id': 'userId', + 'role_id': 'roleId', + }, + 'location_map': { + 'user_id': 'path', + 'role_id': 'path', + }, + 'collection_format_map': { + } + }, + headers_map={ + 'accept': [ + 'application/json' + ], + 'content_type': [], + }, + api_client=api_client + ) + self.api_v2_users_user_id_roles_role_id_post_endpoint = _Endpoint( + settings={ + 'response_type': None, + 'auth': [ + 'Bearer or PrivateToken' + ], + 'endpoint_path': '/api/v2/users/{userId}/roles/{roleId}', + 'operation_id': 'api_v2_users_user_id_roles_role_id_post', + 'http_method': 'POST', + 'servers': None, + }, + params_map={ + 'all': [ + 'user_id', + 'role_id', + ], + 'required': [ + 'user_id', + 'role_id', + ], + 'nullable': [ + ], + 'enum': [ + ], + 'validation': [ + ] + }, + root_map={ + 'validations': { + }, + 'allowed_values': { + }, + 'openapi_types': { + 'user_id': + (str,), + 'role_id': + (str,), + }, + 'attribute_map': { + 'user_id': 'userId', + 'role_id': 'roleId', + }, + 'location_map': { + 'user_id': 'path', + 'role_id': 'path', + }, + 'collection_format_map': { + } + }, + headers_map={ + 'accept': [ + 'application/json' + ], + 'content_type': [], + }, + api_client=api_client + ) + + def api_v2_users_user_id_roles_role_id_delete( + self, + user_id, + role_id, + **kwargs + ): + """api_v2_users_user_id_roles_role_id_delete # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.api_v2_users_user_id_roles_role_id_delete(user_id, role_id, async_req=True) + >>> result = thread.get() + + Args: + user_id (str): + role_id (str): + + Keyword Args: + _return_http_data_only (bool): response data without head status + code and headers. Default is True. + _preload_content (bool): if False, the urllib3.HTTPResponse object + will be returned without reading/decoding response data. + Default is True. + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also + be a pair (tuple) of (connection, read) timeouts. + Default is None. + _check_input_type (bool): specifies if type checking + should be done one the data sent to the server. + Default is True. + _check_return_type (bool): specifies if type checking + should be done one the data received from the server. + Default is True. + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _content_type (str/None): force body content-type. + Default is None and content-type will be predicted by allowed + content-types and body. + _host_index (int/None): specifies the index of the server + that we want to use. + Default is read from the configuration. + _request_auths (list): set to override the auth_settings for an a single + request; this effectively ignores the authentication + in the spec for a single request. + Default is None + async_req (bool): execute request asynchronously + + Returns: + None + If the method is called asynchronously, returns the request + thread. + """ + kwargs['async_req'] = kwargs.get( + 'async_req', False + ) + kwargs['_return_http_data_only'] = kwargs.get( + '_return_http_data_only', True + ) + kwargs['_preload_content'] = kwargs.get( + '_preload_content', True + ) + kwargs['_request_timeout'] = kwargs.get( + '_request_timeout', None + ) + kwargs['_check_input_type'] = kwargs.get( + '_check_input_type', True + ) + kwargs['_check_return_type'] = kwargs.get( + '_check_return_type', True + ) + kwargs['_spec_property_naming'] = kwargs.get( + '_spec_property_naming', False + ) + kwargs['_content_type'] = kwargs.get( + '_content_type') + kwargs['_host_index'] = kwargs.get('_host_index') + kwargs['_request_auths'] = kwargs.get('_request_auths', None) + kwargs['user_id'] = \ + user_id + kwargs['role_id'] = \ + role_id + return self.api_v2_users_user_id_roles_role_id_delete_endpoint.call_with_http_info(**kwargs) + + def api_v2_users_user_id_roles_role_id_post( + self, + user_id, + role_id, + **kwargs + ): + """api_v2_users_user_id_roles_role_id_post # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.api_v2_users_user_id_roles_role_id_post(user_id, role_id, async_req=True) + >>> result = thread.get() + + Args: + user_id (str): + role_id (str): + + Keyword Args: + _return_http_data_only (bool): response data without head status + code and headers. Default is True. + _preload_content (bool): if False, the urllib3.HTTPResponse object + will be returned without reading/decoding response data. + Default is True. + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also + be a pair (tuple) of (connection, read) timeouts. + Default is None. + _check_input_type (bool): specifies if type checking + should be done one the data sent to the server. + Default is True. + _check_return_type (bool): specifies if type checking + should be done one the data received from the server. + Default is True. + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _content_type (str/None): force body content-type. + Default is None and content-type will be predicted by allowed + content-types and body. + _host_index (int/None): specifies the index of the server + that we want to use. + Default is read from the configuration. + _request_auths (list): set to override the auth_settings for an a single + request; this effectively ignores the authentication + in the spec for a single request. + Default is None + async_req (bool): execute request asynchronously + + Returns: + None + If the method is called asynchronously, returns the request + thread. + """ + kwargs['async_req'] = kwargs.get( + 'async_req', False + ) + kwargs['_return_http_data_only'] = kwargs.get( + '_return_http_data_only', True + ) + kwargs['_preload_content'] = kwargs.get( + '_preload_content', True + ) + kwargs['_request_timeout'] = kwargs.get( + '_request_timeout', None + ) + kwargs['_check_input_type'] = kwargs.get( + '_check_input_type', True + ) + kwargs['_check_return_type'] = kwargs.get( + '_check_return_type', True + ) + kwargs['_spec_property_naming'] = kwargs.get( + '_spec_property_naming', False + ) + kwargs['_content_type'] = kwargs.get( + '_content_type') + kwargs['_host_index'] = kwargs.get('_host_index') + kwargs['_request_auths'] = kwargs.get('_request_auths', None) + kwargs['user_id'] = \ + user_id + kwargs['role_id'] = \ + role_id + return self.api_v2_users_user_id_roles_role_id_post_endpoint.call_with_http_info(**kwargs) + diff --git a/src/testit_api_client/api/users_api.py b/src/testit_api_client/api/users_api.py index ddf5aba..baca677 100644 --- a/src/testit_api_client/api/users_api.py +++ b/src/testit_api_client/api/users_api.py @@ -21,7 +21,9 @@ none_type, validate_and_convert_types ) +from testit_api_client.model.api_v2_users_post_request import ApiV2UsersPostRequest from testit_api_client.model.problem_details import ProblemDetails +from testit_api_client.model.user_api_model import UserApiModel from testit_api_client.model.user_custom_name_validation_response import UserCustomNameValidationResponse from testit_api_client.model.validation_problem_details import ValidationProblemDetails @@ -86,6 +88,158 @@ def __init__(self, api_client=None): }, api_client=api_client ) + self.api_v2_users_post_endpoint = _Endpoint( + settings={ + 'response_type': (UserApiModel,), + 'auth': [ + 'Bearer or PrivateToken' + ], + 'endpoint_path': '/api/v2/users', + 'operation_id': 'api_v2_users_post', + 'http_method': 'POST', + 'servers': None, + }, + params_map={ + 'all': [ + 'api_v2_users_post_request', + ], + 'required': [], + 'nullable': [ + ], + 'enum': [ + ], + 'validation': [ + ] + }, + root_map={ + 'validations': { + }, + 'allowed_values': { + }, + 'openapi_types': { + 'api_v2_users_post_request': + (ApiV2UsersPostRequest,), + }, + 'attribute_map': { + }, + 'location_map': { + 'api_v2_users_post_request': 'body', + }, + 'collection_format_map': { + } + }, + headers_map={ + 'accept': [ + 'application/json' + ], + 'content_type': [ + 'application/json' + ] + }, + api_client=api_client + ) + self.api_v2_users_user_id_delete_endpoint = _Endpoint( + settings={ + 'response_type': None, + 'auth': [ + 'Bearer or PrivateToken' + ], + 'endpoint_path': '/api/v2/users/{userId}', + 'operation_id': 'api_v2_users_user_id_delete', + 'http_method': 'DELETE', + 'servers': None, + }, + params_map={ + 'all': [ + 'user_id', + ], + 'required': [ + 'user_id', + ], + 'nullable': [ + ], + 'enum': [ + ], + 'validation': [ + ] + }, + root_map={ + 'validations': { + }, + 'allowed_values': { + }, + 'openapi_types': { + 'user_id': + (str,), + }, + 'attribute_map': { + 'user_id': 'userId', + }, + 'location_map': { + 'user_id': 'path', + }, + 'collection_format_map': { + } + }, + headers_map={ + 'accept': [ + 'application/json' + ], + 'content_type': [], + }, + api_client=api_client + ) + self.api_v2_users_user_id_get_endpoint = _Endpoint( + settings={ + 'response_type': (UserApiModel,), + 'auth': [ + 'Bearer or PrivateToken' + ], + 'endpoint_path': '/api/v2/users/{userId}', + 'operation_id': 'api_v2_users_user_id_get', + 'http_method': 'GET', + 'servers': None, + }, + params_map={ + 'all': [ + 'user_id', + ], + 'required': [ + 'user_id', + ], + 'nullable': [ + ], + 'enum': [ + ], + 'validation': [ + ] + }, + root_map={ + 'validations': { + }, + 'allowed_values': { + }, + 'openapi_types': { + 'user_id': + (str,), + }, + 'attribute_map': { + 'user_id': 'userId', + }, + 'location_map': { + 'user_id': 'path', + }, + 'collection_format_map': { + } + }, + headers_map={ + 'accept': [ + 'application/json' + ], + 'content_type': [], + }, + api_client=api_client + ) def api_v2_users_exists_get( self, @@ -165,3 +319,245 @@ def api_v2_users_exists_get( kwargs['_request_auths'] = kwargs.get('_request_auths', None) return self.api_v2_users_exists_get_endpoint.call_with_http_info(**kwargs) + def api_v2_users_post( + self, + **kwargs + ): + """api_v2_users_post # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.api_v2_users_post(async_req=True) + >>> result = thread.get() + + + Keyword Args: + api_v2_users_post_request (ApiV2UsersPostRequest): [optional] + _return_http_data_only (bool): response data without head status + code and headers. Default is True. + _preload_content (bool): if False, the urllib3.HTTPResponse object + will be returned without reading/decoding response data. + Default is True. + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also + be a pair (tuple) of (connection, read) timeouts. + Default is None. + _check_input_type (bool): specifies if type checking + should be done one the data sent to the server. + Default is True. + _check_return_type (bool): specifies if type checking + should be done one the data received from the server. + Default is True. + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _content_type (str/None): force body content-type. + Default is None and content-type will be predicted by allowed + content-types and body. + _host_index (int/None): specifies the index of the server + that we want to use. + Default is read from the configuration. + _request_auths (list): set to override the auth_settings for an a single + request; this effectively ignores the authentication + in the spec for a single request. + Default is None + async_req (bool): execute request asynchronously + + Returns: + UserApiModel + If the method is called asynchronously, returns the request + thread. + """ + kwargs['async_req'] = kwargs.get( + 'async_req', False + ) + kwargs['_return_http_data_only'] = kwargs.get( + '_return_http_data_only', True + ) + kwargs['_preload_content'] = kwargs.get( + '_preload_content', True + ) + kwargs['_request_timeout'] = kwargs.get( + '_request_timeout', None + ) + kwargs['_check_input_type'] = kwargs.get( + '_check_input_type', True + ) + kwargs['_check_return_type'] = kwargs.get( + '_check_return_type', True + ) + kwargs['_spec_property_naming'] = kwargs.get( + '_spec_property_naming', False + ) + kwargs['_content_type'] = kwargs.get( + '_content_type') + kwargs['_host_index'] = kwargs.get('_host_index') + kwargs['_request_auths'] = kwargs.get('_request_auths', None) + return self.api_v2_users_post_endpoint.call_with_http_info(**kwargs) + + def api_v2_users_user_id_delete( + self, + user_id, + **kwargs + ): + """api_v2_users_user_id_delete # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.api_v2_users_user_id_delete(user_id, async_req=True) + >>> result = thread.get() + + Args: + user_id (str): + + Keyword Args: + _return_http_data_only (bool): response data without head status + code and headers. Default is True. + _preload_content (bool): if False, the urllib3.HTTPResponse object + will be returned without reading/decoding response data. + Default is True. + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also + be a pair (tuple) of (connection, read) timeouts. + Default is None. + _check_input_type (bool): specifies if type checking + should be done one the data sent to the server. + Default is True. + _check_return_type (bool): specifies if type checking + should be done one the data received from the server. + Default is True. + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _content_type (str/None): force body content-type. + Default is None and content-type will be predicted by allowed + content-types and body. + _host_index (int/None): specifies the index of the server + that we want to use. + Default is read from the configuration. + _request_auths (list): set to override the auth_settings for an a single + request; this effectively ignores the authentication + in the spec for a single request. + Default is None + async_req (bool): execute request asynchronously + + Returns: + None + If the method is called asynchronously, returns the request + thread. + """ + kwargs['async_req'] = kwargs.get( + 'async_req', False + ) + kwargs['_return_http_data_only'] = kwargs.get( + '_return_http_data_only', True + ) + kwargs['_preload_content'] = kwargs.get( + '_preload_content', True + ) + kwargs['_request_timeout'] = kwargs.get( + '_request_timeout', None + ) + kwargs['_check_input_type'] = kwargs.get( + '_check_input_type', True + ) + kwargs['_check_return_type'] = kwargs.get( + '_check_return_type', True + ) + kwargs['_spec_property_naming'] = kwargs.get( + '_spec_property_naming', False + ) + kwargs['_content_type'] = kwargs.get( + '_content_type') + kwargs['_host_index'] = kwargs.get('_host_index') + kwargs['_request_auths'] = kwargs.get('_request_auths', None) + kwargs['user_id'] = \ + user_id + return self.api_v2_users_user_id_delete_endpoint.call_with_http_info(**kwargs) + + def api_v2_users_user_id_get( + self, + user_id, + **kwargs + ): + """api_v2_users_user_id_get # noqa: E501 + + This method makes a synchronous HTTP request by default. To make an + asynchronous HTTP request, please pass async_req=True + + >>> thread = api.api_v2_users_user_id_get(user_id, async_req=True) + >>> result = thread.get() + + Args: + user_id (str): + + Keyword Args: + _return_http_data_only (bool): response data without head status + code and headers. Default is True. + _preload_content (bool): if False, the urllib3.HTTPResponse object + will be returned without reading/decoding response data. + Default is True. + _request_timeout (int/float/tuple): timeout setting for this request. If + one number provided, it will be total request timeout. It can also + be a pair (tuple) of (connection, read) timeouts. + Default is None. + _check_input_type (bool): specifies if type checking + should be done one the data sent to the server. + Default is True. + _check_return_type (bool): specifies if type checking + should be done one the data received from the server. + Default is True. + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _content_type (str/None): force body content-type. + Default is None and content-type will be predicted by allowed + content-types and body. + _host_index (int/None): specifies the index of the server + that we want to use. + Default is read from the configuration. + _request_auths (list): set to override the auth_settings for an a single + request; this effectively ignores the authentication + in the spec for a single request. + Default is None + async_req (bool): execute request asynchronously + + Returns: + UserApiModel + If the method is called asynchronously, returns the request + thread. + """ + kwargs['async_req'] = kwargs.get( + 'async_req', False + ) + kwargs['_return_http_data_only'] = kwargs.get( + '_return_http_data_only', True + ) + kwargs['_preload_content'] = kwargs.get( + '_preload_content', True + ) + kwargs['_request_timeout'] = kwargs.get( + '_request_timeout', None + ) + kwargs['_check_input_type'] = kwargs.get( + '_check_input_type', True + ) + kwargs['_check_return_type'] = kwargs.get( + '_check_return_type', True + ) + kwargs['_spec_property_naming'] = kwargs.get( + '_spec_property_naming', False + ) + kwargs['_content_type'] = kwargs.get( + '_content_type') + kwargs['_host_index'] = kwargs.get('_host_index') + kwargs['_request_auths'] = kwargs.get('_request_auths', None) + kwargs['user_id'] = \ + user_id + return self.api_v2_users_user_id_get_endpoint.call_with_http_info(**kwargs) + diff --git a/src/testit_api_client/api_client.py b/src/testit_api_client/api_client.py index bb35f68..91e6127 100644 --- a/src/testit_api_client/api_client.py +++ b/src/testit_api_client/api_client.py @@ -76,7 +76,7 @@ def __init__(self, configuration=None, header_name=None, header_value=None, self.default_headers[header_name] = header_value self.cookie = cookie # Set default User-Agent. - self.user_agent = 'OpenAPI-Generator/7.5.5/python' + self.user_agent = 'OpenAPI-Generator/7.5.5.post570/python' def __enter__(self): return self diff --git a/src/testit_api_client/apis/__init__.py b/src/testit_api_client/apis/__init__.py index 9e5186f..9d7a5f4 100644 --- a/src/testit_api_client/apis/__init__.py +++ b/src/testit_api_client/apis/__init__.py @@ -34,6 +34,7 @@ from testit_api_client.api.project_test_plans_api import ProjectTestPlansApi from testit_api_client.api.project_work_items_api import ProjectWorkItemsApi from testit_api_client.api.projects_api import ProjectsApi +from testit_api_client.api.roles_api import RolesApi from testit_api_client.api.search_api import SearchApi from testit_api_client.api.sections_api import SectionsApi from testit_api_client.api.tags_api import TagsApi @@ -43,6 +44,7 @@ from testit_api_client.api.test_runs_api import TestRunsApi from testit_api_client.api.test_statuses_api import TestStatusesApi from testit_api_client.api.test_suites_api import TestSuitesApi +from testit_api_client.api.user_role_assignments_api import UserRoleAssignmentsApi from testit_api_client.api.users_api import UsersApi from testit_api_client.api.webhooks_api import WebhooksApi from testit_api_client.api.webhooks_logs_api import WebhooksLogsApi diff --git a/src/testit_api_client/configuration.py b/src/testit_api_client/configuration.py index 22616e4..b5133ec 100644 --- a/src/testit_api_client/configuration.py +++ b/src/testit_api_client/configuration.py @@ -413,7 +413,7 @@ def to_debug_report(self): "OS: {env}\n"\ "Python Version: {pyversion}\n"\ "Version of the API: v2.0\n"\ - "SDK Package Version: 7.5.5".\ + "SDK Package Version: 7.5.5.post570".\ format(env=sys.platform, pyversion=sys.version) def get_host_settings(self): diff --git a/src/testit_api_client/model/api_v2_users_post_request.py b/src/testit_api_client/model/api_v2_users_post_request.py new file mode 100644 index 0000000..f295348 --- /dev/null +++ b/src/testit_api_client/model/api_v2_users_post_request.py @@ -0,0 +1,350 @@ +""" + API + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: v2.0 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from testit_api_client.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, + OpenApiModel +) +from testit_api_client.exceptions import ApiAttributeError + + +def lazy_import(): + from testit_api_client.model.create_user_api_model import CreateUserApiModel + globals()['CreateUserApiModel'] = CreateUserApiModel + + +class ApiV2UsersPostRequest(ModelComposed): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + ('user_name',): { + 'min_length': 1, + }, + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + lazy_import() + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + lazy_import() + return { + 'user_name': (str,), # noqa: E501 + 'first_name': (str,), # noqa: E501 + 'last_name': (str,), # noqa: E501 + 'display_name': (str,), # noqa: E501 + 'email': (str,), # noqa: E501 + 'password': (str, none_type,), # noqa: E501 + 'provider_id': (str, none_type,), # noqa: E501 + 'external_id': (str, none_type,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'user_name': 'userName', # noqa: E501 + 'first_name': 'firstName', # noqa: E501 + 'last_name': 'lastName', # noqa: E501 + 'display_name': 'displayName', # noqa: E501 + 'email': 'email', # noqa: E501 + 'password': 'password', # noqa: E501 + 'provider_id': 'providerId', # noqa: E501 + 'external_id': 'externalId', # noqa: E501 + } + + read_only_vars = { + } + + @classmethod + @convert_js_args_to_python_args + def _from_openapi_data(cls, *args, **kwargs): # noqa: E501 + """ApiV2UsersPostRequest - a model defined in OpenAPI + + Keyword Args: + user_name (str): + first_name (str): + last_name (str): + display_name (str): + email (str): + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + password (str, none_type): [optional] # noqa: E501 + provider_id (str, none_type): [optional] # noqa: E501 + external_id (str, none_type): [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + self = super(OpenApiModel, cls).__new__(cls) + + if args: + for arg in args: + if isinstance(arg, dict): + kwargs.update(arg) + else: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + constant_args = { + '_check_type': _check_type, + '_path_to_item': _path_to_item, + '_spec_property_naming': _spec_property_naming, + '_configuration': _configuration, + '_visited_composed_classes': self._visited_composed_classes, + } + composed_info = validate_get_composed_info( + constant_args, kwargs, self) + self._composed_instances = composed_info[0] + self._var_name_to_model_instances = composed_info[1] + self._additional_properties_model_instances = composed_info[2] + discarded_args = composed_info[3] + + for var_name, var_value in kwargs.items(): + if var_name in discarded_args and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self._additional_properties_model_instances: + # discard variable. + continue + setattr(self, var_name, var_value) + + return self + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + '_composed_instances', + '_var_name_to_model_instances', + '_additional_properties_model_instances', + ]) + + @convert_js_args_to_python_args + def __init__(self, *args, **kwargs): # noqa: E501 + """ApiV2UsersPostRequest - a model defined in OpenAPI + + Keyword Args: + user_name (str): + first_name (str): + last_name (str): + display_name (str): + email (str): + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + password (str, none_type): [optional] # noqa: E501 + provider_id (str, none_type): [optional] # noqa: E501 + external_id (str, none_type): [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + for arg in args: + if isinstance(arg, dict): + kwargs.update(arg) + else: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + constant_args = { + '_check_type': _check_type, + '_path_to_item': _path_to_item, + '_spec_property_naming': _spec_property_naming, + '_configuration': _configuration, + '_visited_composed_classes': self._visited_composed_classes, + } + composed_info = validate_get_composed_info( + constant_args, kwargs, self) + self._composed_instances = composed_info[0] + self._var_name_to_model_instances = composed_info[1] + self._additional_properties_model_instances = composed_info[2] + discarded_args = composed_info[3] + + for var_name, var_value in kwargs.items(): + if var_name in discarded_args and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self._additional_properties_model_instances: + # discard variable. + continue + setattr(self, var_name, var_value) + if var_name in self.read_only_vars: + raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " + f"class with read only attributes.") + + @cached_property + def _composed_schemas(): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + lazy_import() + return { + 'anyOf': [ + ], + 'allOf': [ + CreateUserApiModel, + ], + 'oneOf': [ + ], + } diff --git a/src/testit_api_client/model/create_user_api_model.py b/src/testit_api_client/model/create_user_api_model.py new file mode 100644 index 0000000..c62a862 --- /dev/null +++ b/src/testit_api_client/model/create_user_api_model.py @@ -0,0 +1,302 @@ +""" + API + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: v2.0 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from testit_api_client.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, + OpenApiModel +) +from testit_api_client.exceptions import ApiAttributeError + + + +class CreateUserApiModel(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + ('user_name',): { + 'min_length': 1, + }, + } + + additional_properties_type = None + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + return { + 'user_name': (str,), # noqa: E501 + 'first_name': (str,), # noqa: E501 + 'last_name': (str,), # noqa: E501 + 'display_name': (str,), # noqa: E501 + 'email': (str,), # noqa: E501 + 'password': (str, none_type,), # noqa: E501 + 'provider_id': (str, none_type,), # noqa: E501 + 'external_id': (str, none_type,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'user_name': 'userName', # noqa: E501 + 'first_name': 'firstName', # noqa: E501 + 'last_name': 'lastName', # noqa: E501 + 'display_name': 'displayName', # noqa: E501 + 'email': 'email', # noqa: E501 + 'password': 'password', # noqa: E501 + 'provider_id': 'providerId', # noqa: E501 + 'external_id': 'externalId', # noqa: E501 + } + + read_only_vars = { + } + + _composed_schemas = {} + + @classmethod + @convert_js_args_to_python_args + def _from_openapi_data(cls, user_name, first_name, last_name, display_name, email, *args, **kwargs): # noqa: E501 + """CreateUserApiModel - a model defined in OpenAPI + + Args: + user_name (str): + first_name (str): + last_name (str): + display_name (str): + email (str): + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + password (str, none_type): [optional] # noqa: E501 + provider_id (str, none_type): [optional] # noqa: E501 + external_id (str, none_type): [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', True) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + self = super(OpenApiModel, cls).__new__(cls) + + if args: + for arg in args: + if isinstance(arg, dict): + kwargs.update(arg) + else: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + self.user_name = user_name + self.first_name = first_name + self.last_name = last_name + self.display_name = display_name + self.email = email + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + return self + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, user_name, first_name, last_name, display_name, email, *args, **kwargs): # noqa: E501 + """CreateUserApiModel - a model defined in OpenAPI + + Args: + user_name (str): + first_name (str): + last_name (str): + display_name (str): + email (str): + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + password (str, none_type): [optional] # noqa: E501 + provider_id (str, none_type): [optional] # noqa: E501 + external_id (str, none_type): [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + for arg in args: + if isinstance(arg, dict): + kwargs.update(arg) + else: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + self.user_name = user_name + self.first_name = first_name + self.last_name = last_name + self.display_name = display_name + self.email = email + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + if var_name in self.read_only_vars: + raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " + f"class with read only attributes.") diff --git a/src/testit_api_client/model/link_short_api_result.py b/src/testit_api_client/model/link_short_api_result.py index b1451da..d64295d 100644 --- a/src/testit_api_client/model/link_short_api_result.py +++ b/src/testit_api_client/model/link_short_api_result.py @@ -76,9 +76,9 @@ def openapi_types(): """ return { 'id': (str,), # noqa: E501 - 'title': (str,), # noqa: E501 'url': (str,), # noqa: E501 - 'type': (str,), # noqa: E501 + 'title': (str, none_type,), # noqa: E501 + 'type': (str, none_type,), # noqa: E501 } @cached_property @@ -88,8 +88,8 @@ def discriminator(): attribute_map = { 'id': 'id', # noqa: E501 - 'title': 'title', # noqa: E501 'url': 'url', # noqa: E501 + 'title': 'title', # noqa: E501 'type': 'type', # noqa: E501 } @@ -100,14 +100,12 @@ def discriminator(): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, id, title, url, type, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, id, url, *args, **kwargs): # noqa: E501 """LinkShortApiResult - a model defined in OpenAPI Args: id (str): - title (str): url (str): - type (str): Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -140,6 +138,8 @@ def _from_openapi_data(cls, id, title, url, type, *args, **kwargs): # noqa: E50 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + title (str, none_type): [optional] # noqa: E501 + type (str, none_type): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -172,9 +172,7 @@ def _from_openapi_data(cls, id, title, url, type, *args, **kwargs): # noqa: E50 self._visited_composed_classes = _visited_composed_classes + (self.__class__,) self.id = id - self.title = title self.url = url - self.type = type for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -195,14 +193,12 @@ def _from_openapi_data(cls, id, title, url, type, *args, **kwargs): # noqa: E50 ]) @convert_js_args_to_python_args - def __init__(self, id, title, url, type, *args, **kwargs): # noqa: E501 + def __init__(self, id, url, *args, **kwargs): # noqa: E501 """LinkShortApiResult - a model defined in OpenAPI Args: id (str): - title (str): url (str): - type (str): Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -235,6 +231,8 @@ def __init__(self, id, title, url, type, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + title (str, none_type): [optional] # noqa: E501 + type (str, none_type): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -265,9 +263,7 @@ def __init__(self, id, title, url, type, *args, **kwargs): # noqa: E501 self._visited_composed_classes = _visited_composed_classes + (self.__class__,) self.id = id - self.title = title self.url = url - self.type = type for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/src/testit_api_client/model/link_short_model.py b/src/testit_api_client/model/link_short_model.py index 85f63e5..cffb086 100644 --- a/src/testit_api_client/model/link_short_model.py +++ b/src/testit_api_client/model/link_short_model.py @@ -76,8 +76,8 @@ def openapi_types(): """ return { 'id': (str,), # noqa: E501 - 'title': (str,), # noqa: E501 'url': (str,), # noqa: E501 + 'title': (str, none_type,), # noqa: E501 'type': (str, none_type,), # noqa: E501 } @@ -88,8 +88,8 @@ def discriminator(): attribute_map = { 'id': 'id', # noqa: E501 - 'title': 'title', # noqa: E501 'url': 'url', # noqa: E501 + 'title': 'title', # noqa: E501 'type': 'type', # noqa: E501 } @@ -100,12 +100,11 @@ def discriminator(): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, id, title, url, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, id, url, *args, **kwargs): # noqa: E501 """LinkShortModel - a model defined in OpenAPI Args: id (str): - title (str): url (str): Keyword Args: @@ -139,6 +138,7 @@ def _from_openapi_data(cls, id, title, url, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + title (str, none_type): [optional] # noqa: E501 type (str, none_type): [optional] # noqa: E501 """ @@ -172,7 +172,6 @@ def _from_openapi_data(cls, id, title, url, *args, **kwargs): # noqa: E501 self._visited_composed_classes = _visited_composed_classes + (self.__class__,) self.id = id - self.title = title self.url = url for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ @@ -194,12 +193,11 @@ def _from_openapi_data(cls, id, title, url, *args, **kwargs): # noqa: E501 ]) @convert_js_args_to_python_args - def __init__(self, id, title, url, *args, **kwargs): # noqa: E501 + def __init__(self, id, url, *args, **kwargs): # noqa: E501 """LinkShortModel - a model defined in OpenAPI Args: id (str): - title (str): url (str): Keyword Args: @@ -233,6 +231,7 @@ def __init__(self, id, title, url, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + title (str, none_type): [optional] # noqa: E501 type (str, none_type): [optional] # noqa: E501 """ @@ -264,7 +263,6 @@ def __init__(self, id, title, url, *args, **kwargs): # noqa: E501 self._visited_composed_classes = _visited_composed_classes + (self.__class__,) self.id = id - self.title = title self.url = url for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ diff --git a/src/testit_api_client/model/parameter_iteration_model.py b/src/testit_api_client/model/parameter_iteration_model.py index f81b37c..3da6449 100644 --- a/src/testit_api_client/model/parameter_iteration_model.py +++ b/src/testit_api_client/model/parameter_iteration_model.py @@ -76,6 +76,7 @@ def openapi_types(): """ return { 'id': (str,), # noqa: E501 + 'shared_step_id': (str, none_type,), # noqa: E501 } @cached_property @@ -85,6 +86,7 @@ def discriminator(): attribute_map = { 'id': 'id', # noqa: E501 + 'shared_step_id': 'sharedStepId', # noqa: E501 } read_only_vars = { @@ -131,6 +133,7 @@ def _from_openapi_data(cls, id, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + shared_step_id (str, none_type): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -220,6 +223,7 @@ def __init__(self, id, *args, **kwargs): # noqa: E501 Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + shared_step_id (str, none_type): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/src/testit_api_client/model/parameter_short_model.py b/src/testit_api_client/model/parameter_short_model.py index ea9135f..b73f29e 100644 --- a/src/testit_api_client/model/parameter_short_model.py +++ b/src/testit_api_client/model/parameter_short_model.py @@ -88,6 +88,7 @@ def openapi_types(): 'value': (str,), # noqa: E501 'name': (str,), # noqa: E501 'project_ids': ([str],), # noqa: E501 + 'shared_step_id': (str, none_type,), # noqa: E501 } @cached_property @@ -101,6 +102,7 @@ def discriminator(): 'value': 'value', # noqa: E501 'name': 'name', # noqa: E501 'project_ids': 'projectIds', # noqa: E501 + 'shared_step_id': 'sharedStepId', # noqa: E501 } read_only_vars = { @@ -151,6 +153,7 @@ def _from_openapi_data(cls, id, parameter_key_id, value, name, project_ids, *arg Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + shared_step_id (str, none_type): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -248,6 +251,7 @@ def __init__(self, id, parameter_key_id, value, name, project_ids, *args, **kwar Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + shared_step_id (str, none_type): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/src/testit_api_client/model/demo_project_api_result.py b/src/testit_api_client/model/role_api_model.py similarity index 92% rename from src/testit_api_client/model/demo_project_api_result.py rename to src/testit_api_client/model/role_api_model.py index 04ec7af..5b9d5e8 100644 --- a/src/testit_api_client/model/demo_project_api_result.py +++ b/src/testit_api_client/model/role_api_model.py @@ -30,7 +30,7 @@ -class DemoProjectApiResult(ModelNormal): +class RoleApiModel(ModelNormal): """NOTE: This class is auto generated by OpenAPI Generator. Ref: https://openapi-generator.tech @@ -75,7 +75,9 @@ def openapi_types(): and the value is attribute type. """ return { - 'job_id': (str,), # noqa: E501 + 'id': (str,), # noqa: E501 + 'name': (str,), # noqa: E501 + 'is_system': (bool,), # noqa: E501 } @cached_property @@ -84,7 +86,9 @@ def discriminator(): attribute_map = { - 'job_id': 'jobId', # noqa: E501 + 'id': 'id', # noqa: E501 + 'name': 'name', # noqa: E501 + 'is_system': 'isSystem', # noqa: E501 } read_only_vars = { @@ -94,11 +98,13 @@ def discriminator(): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, job_id, *args, **kwargs): # noqa: E501 - """DemoProjectApiResult - a model defined in OpenAPI + def _from_openapi_data(cls, id, name, is_system, *args, **kwargs): # noqa: E501 + """RoleApiModel - a model defined in OpenAPI Args: - job_id (str): Job ID + id (str): + name (str): + is_system (bool): Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -162,7 +168,9 @@ def _from_openapi_data(cls, job_id, *args, **kwargs): # noqa: E501 self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.job_id = job_id + self.id = id + self.name = name + self.is_system = is_system for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -183,11 +191,13 @@ def _from_openapi_data(cls, job_id, *args, **kwargs): # noqa: E501 ]) @convert_js_args_to_python_args - def __init__(self, job_id, *args, **kwargs): # noqa: E501 - """DemoProjectApiResult - a model defined in OpenAPI + def __init__(self, id, name, is_system, *args, **kwargs): # noqa: E501 + """RoleApiModel - a model defined in OpenAPI Args: - job_id (str): Job ID + id (str): + name (str): + is_system (bool): Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -249,7 +259,9 @@ def __init__(self, job_id, *args, **kwargs): # noqa: E501 self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.job_id = job_id + self.id = id + self.name = name + self.is_system = is_system for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/src/testit_api_client/model/role_api_model_api_collection.py b/src/testit_api_client/model/role_api_model_api_collection.py new file mode 100644 index 0000000..3c6a069 --- /dev/null +++ b/src/testit_api_client/model/role_api_model_api_collection.py @@ -0,0 +1,274 @@ +""" + API + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: v2.0 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from testit_api_client.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, + OpenApiModel +) +from testit_api_client.exceptions import ApiAttributeError + + +def lazy_import(): + from testit_api_client.model.role_api_model import RoleApiModel + globals()['RoleApiModel'] = RoleApiModel + + +class RoleApiModelApiCollection(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + additional_properties_type = None + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + lazy_import() + return { + 'data': ([RoleApiModel],), # noqa: E501 + 'total_count': (int,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'data': 'data', # noqa: E501 + 'total_count': 'totalCount', # noqa: E501 + } + + read_only_vars = { + } + + _composed_schemas = {} + + @classmethod + @convert_js_args_to_python_args + def _from_openapi_data(cls, data, total_count, *args, **kwargs): # noqa: E501 + """RoleApiModelApiCollection - a model defined in OpenAPI + + Args: + data ([RoleApiModel]): Items + total_count (int): Total count + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', True) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + self = super(OpenApiModel, cls).__new__(cls) + + if args: + for arg in args: + if isinstance(arg, dict): + kwargs.update(arg) + else: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + self.data = data + self.total_count = total_count + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + return self + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, data, total_count, *args, **kwargs): # noqa: E501 + """RoleApiModelApiCollection - a model defined in OpenAPI + + Args: + data ([RoleApiModel]): Items + total_count (int): Total count + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + for arg in args: + if isinstance(arg, dict): + kwargs.update(arg) + else: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + self.data = data + self.total_count = total_count + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + if var_name in self.read_only_vars: + raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " + f"class with read only attributes.") diff --git a/src/testit_api_client/model/user_api_model.py b/src/testit_api_client/model/user_api_model.py new file mode 100644 index 0000000..6f6162d --- /dev/null +++ b/src/testit_api_client/model/user_api_model.py @@ -0,0 +1,300 @@ +""" + API + + No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501 + + The version of the OpenAPI document: v2.0 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from testit_api_client.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, + OpenApiModel +) +from testit_api_client.exceptions import ApiAttributeError + + + +class UserApiModel(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + ('user_name',): { + 'min_length': 1, + }, + } + + additional_properties_type = None + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + return { + 'id': (str,), # noqa: E501 + 'user_name': (str,), # noqa: E501 + 'first_name': (str,), # noqa: E501 + 'last_name': (str,), # noqa: E501 + 'display_name': (str,), # noqa: E501 + 'email': (str,), # noqa: E501 + 'provider_id': (str, none_type,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'id': 'id', # noqa: E501 + 'user_name': 'userName', # noqa: E501 + 'first_name': 'firstName', # noqa: E501 + 'last_name': 'lastName', # noqa: E501 + 'display_name': 'displayName', # noqa: E501 + 'email': 'email', # noqa: E501 + 'provider_id': 'providerId', # noqa: E501 + } + + read_only_vars = { + } + + _composed_schemas = {} + + @classmethod + @convert_js_args_to_python_args + def _from_openapi_data(cls, id, user_name, first_name, last_name, display_name, email, *args, **kwargs): # noqa: E501 + """UserApiModel - a model defined in OpenAPI + + Args: + id (str): + user_name (str): + first_name (str): + last_name (str): + display_name (str): + email (str): + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + provider_id (str, none_type): [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', True) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + self = super(OpenApiModel, cls).__new__(cls) + + if args: + for arg in args: + if isinstance(arg, dict): + kwargs.update(arg) + else: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + self.id = id + self.user_name = user_name + self.first_name = first_name + self.last_name = last_name + self.display_name = display_name + self.email = email + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + return self + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, id, user_name, first_name, last_name, display_name, email, *args, **kwargs): # noqa: E501 + """UserApiModel - a model defined in OpenAPI + + Args: + id (str): + user_name (str): + first_name (str): + last_name (str): + display_name (str): + email (str): + + Keyword Args: + _check_type (bool): if True, values for parameters in openapi_types + will be type checked and a TypeError will be + raised if the wrong type is input. + Defaults to True + _path_to_item (tuple/list): This is a list of keys or values to + drill down to the model in received_data + when deserializing a response + _spec_property_naming (bool): True if the variable names in the input data + are serialized names, as specified in the OpenAPI document. + False if the variable names in the input data + are pythonic names, e.g. snake case (default) + _configuration (Configuration): the instance to use when + deserializing a file_type parameter. + If passed, type conversion is attempted + If omitted no type conversion is done. + _visited_composed_classes (tuple): This stores a tuple of + classes that we have traveled through so that + if we see that class again we will not use its + discriminator again. + When traveling through a discriminator, the + composed schema that is + is traveled through is added to this set. + For example if Animal has a discriminator + petType and we pass in "Dog", and the class Dog + allOf includes Animal, we move through Animal + once using the discriminator, and pick Dog. + Then in Dog, we will make an instance of the + Animal class but this time we won't travel + through its discriminator because we passed in + _visited_composed_classes = (Animal,) + provider_id (str, none_type): [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + for arg in args: + if isinstance(arg, dict): + kwargs.update(arg) + else: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + self.id = id + self.user_name = user_name + self.first_name = first_name + self.last_name = last_name + self.display_name = display_name + self.email = email + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + if var_name in self.read_only_vars: + raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " + f"class with read only attributes.") diff --git a/src/testit_api_client/models/__init__.py b/src/testit_api_client/models/__init__.py index cd4aa78..50a4127 100644 --- a/src/testit_api_client/models/__init__.py +++ b/src/testit_api_client/models/__init__.py @@ -68,6 +68,7 @@ from testit_api_client.model.api_v2_test_statuses_search_post_request import ApiV2TestStatusesSearchPostRequest from testit_api_client.model.api_v2_test_suites_post_request import ApiV2TestSuitesPostRequest from testit_api_client.model.api_v2_test_suites_put_request import ApiV2TestSuitesPutRequest +from testit_api_client.model.api_v2_users_post_request import ApiV2UsersPostRequest from testit_api_client.model.api_v2_webhooks_delete_request import ApiV2WebhooksDeleteRequest from testit_api_client.model.api_v2_webhooks_post_request import ApiV2WebhooksPostRequest from testit_api_client.model.api_v2_webhooks_put_request import ApiV2WebhooksPutRequest @@ -213,6 +214,7 @@ from testit_api_client.model.create_test_run_and_fill_by_configurations_api_model import CreateTestRunAndFillByConfigurationsApiModel from testit_api_client.model.create_test_run_and_fill_by_work_items_api_model import CreateTestRunAndFillByWorkItemsApiModel from testit_api_client.model.create_test_status_api_model import CreateTestStatusApiModel +from testit_api_client.model.create_user_api_model import CreateUserApiModel from testit_api_client.model.create_work_item_api_model import CreateWorkItemApiModel from testit_api_client.model.create_work_item_comment_api_model import CreateWorkItemCommentApiModel from testit_api_client.model.create_work_item_previews_api_model import CreateWorkItemPreviewsApiModel @@ -240,7 +242,6 @@ from testit_api_client.model.date_time_range_selector_model import DateTimeRangeSelectorModel from testit_api_client.model.defect_api_model import DefectApiModel from testit_api_client.model.deletion_state import DeletionState -from testit_api_client.model.demo_project_api_result import DemoProjectApiResult from testit_api_client.model.enable_project_external_service_api_model import EnableProjectExternalServiceApiModel from testit_api_client.model.external_form_allowed_value_model import ExternalFormAllowedValueModel from testit_api_client.model.external_form_create_model import ExternalFormCreateModel @@ -392,6 +393,8 @@ from testit_api_client.model.rerun_test_result_api_result import RerunTestResultApiResult from testit_api_client.model.rerun_test_result_api_result_status import RerunTestResultApiResultStatus from testit_api_client.model.reruns_api_result import RerunsApiResult +from testit_api_client.model.role_api_model import RoleApiModel +from testit_api_client.model.role_api_model_api_collection import RoleApiModelApiCollection from testit_api_client.model.search_attributes_in_project_request import SearchAttributesInProjectRequest from testit_api_client.model.search_custom_attribute_template_get_model import SearchCustomAttributeTemplateGetModel from testit_api_client.model.search_external_issues_api_model import SearchExternalIssuesApiModel @@ -636,6 +639,7 @@ from testit_api_client.model.update_work_item_comment_api_model import UpdateWorkItemCommentApiModel from testit_api_client.model.update_work_item_request import UpdateWorkItemRequest from testit_api_client.model.update_workflow_api_model import UpdateWorkflowApiModel +from testit_api_client.model.user_api_model import UserApiModel from testit_api_client.model.user_custom_name_validation_response import UserCustomNameValidationResponse from testit_api_client.model.user_name_api_result import UserNameApiResult from testit_api_client.model.validation_problem_details import ValidationProblemDetails