{ "openapi": "3.0.1", "info": { "title": "Fenergo Nebula Product Command", "description": "Product Command API is part of FenX eco-system to manage Product Data. All the operations require valid access token obtained from Identity service.", "version": "1.0" }, "servers": [ { "url": "/productcommand" } ], "paths": { "/api/product/{productId}/datadeletion/{id}": { "put": { "tags": [ "DataDeletion" ], "summary": "Set For Deletion status product draft", "description": "

Required permissions:
Following permissions are required: ProductEdit", "operationId": "SetForDeletionProductDraft", "parameters": [ { "name": "productId", "in": "path", "description": "Product id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "id", "in": "path", "description": "Product draft id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "responses": { "409": { "description": "Conflict saving changes in expected version", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "There are conflicts that cannot be resolved automatically, get latest and apply your changes", "type": "Error", "errorCode": "CONFLICT" } ] } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "404": { "description": "Resource not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Not Found. Product/Product draft with given id does not exist", "type": "Error", "errorCode": "Error Code" } ] } } } }, "202": { "description": "Success. Product draft updated" }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "500": { "description": "Internal server exception. Please, contact your provider.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": null, "messages": [ { "message": "Internal server exception. Please, contact your provider.", "type": "Error", "errorCode": "INTERNAL_SERVER_ERROR" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/managedProduct": { "post": { "tags": [ "Product" ], "summary": "Creates a managed product", "description": "\nThis method creates a managed product and stores the data related to the product.\r\n\nThe method returns an object containing some basic information as the result to the user,\r\n and type. The returned Id can be used in the query api to get the product.

Required permissions:
Following permissions are required: ProductEdit", "operationId": "CreateManagedProduct", "parameters": [ { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "requestBody": { "description": "The create managed product request", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ManagedProductDtoServiceRequest" } ] } } } }, "responses": { "202": { "description": "An instance of the Fenergo.Nebula.Product.Command.Application.Features.CreateManagedProduct.ManagedProductDto class with some metadata that represent the managed product created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ManagedProductDtoServiceResponse" } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "500": { "description": "Internal server error" }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product": { "post": { "tags": [ "Product" ], "summary": "Creates a product", "description": "\nThis method creates a product and stores the data related to the product.\r\n\nThe method returns an object containing some basic information as the result to the user,\r\n and type. The returned Id can be used in the query api to get the product.

Required permissions:
Following permissions are required: ProductEdit", "operationId": "CreateProduct", "parameters": [ { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "requestBody": { "description": "The create product request", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/ProductDtoServiceRequest" } ] } } } }, "responses": { "202": { "description": "An instance of the Fenergo.Nebula.Product.Command.Application.Features.CreateProduct.ProductDto class with some metadata that represent the product created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductDtoServiceResponse" } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "500": { "description": "Internal server error" }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/{id}/clone": { "post": { "tags": [ "Product" ], "summary": "Clones a product", "description": "\nThis method clones a product.\r\n\nThe cloned product will remain within the same entity and journey as the source product.

Required permissions:
Following permissions are required: ProductEdit", "operationId": "CloneProduct", "parameters": [ { "name": "id", "in": "path", "description": "The Source Product Id which should be cloned", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "requestBody": { "description": "Parameters to clone the productd", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/CloneProductRequestDtoServiceRequest" } ] } } } }, "responses": { "202": { "description": "An instance of the Fenergo.Nebula.Product.Command.Application.Dto.ProductDraftDto class with some metadata that represent the product created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductDraftDtoServiceResponse" } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "429": { "description": "Too many requests. The tenant has exceeded its API rate limit; wait and retry.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "500": { "description": "Internal server error" }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/{id}": { "delete": { "tags": [ "Product" ], "summary": "Deletes a product", "description": "\nThis method deletes a product record and all associated drafts.\r\n\nOnly products with the Onboarding status can be deleted.

Required permissions:
Following permissions are required: ProductEdit", "operationId": "DeleteProduct", "parameters": [ { "name": "id", "in": "path", "description": "The Id of the product", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "responses": { "202": { "description": "An instance of the Fenergo.Nebula.Product.Command.Application.Features.CreateProduct.ProductDto class with some metadata that represent the product created" }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "409": { "description": "Conflict saving changes in expected version", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "There are conflicts that cannot be resolved automatically, get latest and apply your changes", "type": "Error", "errorCode": "CONFLICT" } ] } } } }, "500": { "description": "Internal server error" }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } }, "put": { "tags": [ "Product" ], "summary": "Updates a Product Status to Approved (Verified)", "description": "\nThis method updates a product record status.

Required permissions:
Following permissions are required: ProductEdit", "operationId": "VerifyProduct", "parameters": [ { "name": "id", "in": "path", "description": "The Id of the product", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "responses": { "202": { "description": "An instance of the Fenergo.Nebula.Product.Command.Application.Features.CreateProduct.ProductDto class with some metadata that represent the product created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "500": { "description": "Internal server error" }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/{id}/reproject-reports": { "post": { "tags": [ "Product" ], "summary": "Re-syncs a product to Advanced Reporting.", "description": "\nRe-emits the product's current state to the Advanced Reporting projection,\r\n rebuilding its reports object if it is missing (for example after a reprojection\r\n skipped it). This is an idempotent ops/support action.

Required permissions:
Following permissions are required: ProductEdit", "operationId": "ReprojectReports", "parameters": [ { "name": "id", "in": "path", "description": "The Id of the product to re-sync to reporting.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "responses": { "200": { "description": "The product was re-synced. The payload indicates whether a projection object was written.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReprojectReportsResponseDtoServiceResponse" } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "404": { "description": "Resource not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "No product was found for the supplied id.", "type": "Error", "errorCode": "Error Code" } ] } } } }, "500": { "description": "Internal server error" }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/{id}/create-url-to-upload-file": { "post": { "tags": [ "Product" ], "summary": "Create url to upload file.\r\nThis endpoint is intended for use with the new DataField type - RichTextEditor.", "description": "

Required permissions:
Following permissions are required: ProductEdit", "operationId": "CreateUrlToUploadFile", "parameters": [ { "name": "id", "in": "path", "description": "Product id.", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "requestBody": { "description": "Parameters to create url to upload", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/CreateUrlToUploadFileRequestDtoServiceRequest" } ] } } } }, "responses": { "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorModelListServiceResponse" } } } }, "202": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateUrlToUploadFileResponseDtoServiceResponse" } } } }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "500": { "description": "Internal server exception. Please, contact your provider.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": null, "messages": [ { "message": "Internal server exception. Please, contact your provider.", "type": "Error", "errorCode": "INTERNAL_SERVER_ERROR" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/{productId}/draft/journey/{journeyId}": { "post": { "tags": [ "ProductDraft" ], "summary": "Creates a product draft", "description": "\nThis method creates a Product Draft and stores the data related to the product.\r\n\nThe method returns an object containing some basic information as the result to the user,\r\n type and status. The returned Id can be used in the query api to get the product.

Required permissions:
Following permissions are required: ProductEdit", "operationId": "CreateProductDraft", "parameters": [ { "name": "productId", "in": "path", "description": "The id of the product record that is the source for this draft", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "journeyId", "in": "path", "description": "The id of the product record that is the source for this draft", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "responses": { "202": { "description": "An instance of the Fenergo.Nebula.Product.Command.Application.Dto.ProductDraftDto class with some metadata that represent the Product Draft created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductDraftDtoServiceResponse" } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "500": { "description": "Internal server error" }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/{productId}/draft/{id}": { "put": { "tags": [ "ProductDraft" ], "summary": "Update product draft", "description": "\nUpdates an existing product draft.

Required permissions:
Following permissions are required: ProductEdit", "operationId": "UpdateProductDraft", "parameters": [ { "name": "productId", "in": "path", "description": "Product id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "id", "in": "path", "description": "Product draft id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "requestBody": { "description": "Update product draft request. Must contain product draft properties", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/UpdateProductDraftDtoServiceRequest" } ] } } } }, "responses": { "202": { "description": "Success. Product draft updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductDraftUpdatedDtoServiceResponse" } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "409": { "description": "Conflict saving changes in expected version", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "There are conflicts that cannot be resolved automatically, get latest and apply your changes", "type": "Error", "errorCode": "CONFLICT" } ] } } } }, "404": { "description": "Resource not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Not Found. Product/Product draft with given id does not exist", "type": "Error", "errorCode": "Error Code" } ] } } } }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "500": { "description": "Internal server exception. Please, contact your provider.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": null, "messages": [ { "message": "Internal server exception. Please, contact your provider.", "type": "Error", "errorCode": "INTERNAL_SERVER_ERROR" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } }, "delete": { "tags": [ "ProductDraft" ], "summary": "Deletes a product draft and its information from the database.", "description": "

Required permissions:
Following permissions are required: ProductEdit", "operationId": "DeleteProductDraft", "parameters": [ { "name": "productId", "in": "path", "description": "Product id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "id", "in": "path", "description": "Product draft id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "responses": { "202": { "description": "Product draft deleted successfully" }, "409": { "description": "Conflict saving changes in expected version", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "There are conflicts that cannot be resolved automatically, get latest and apply your changes", "type": "Error", "errorCode": "CONFLICT" } ] } } } }, "404": { "description": "Resource not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Not Found", "type": "Error", "errorCode": "Error Code" } ] } } } }, "400": { "description": "Product draft not found" }, "500": { "description": "Internal server error" }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/{productId}/draft/{id}/save-without-validation": { "put": { "tags": [ "ProductDraft" ], "summary": "Update product draft without validation (auto-save)", "description": "\nUpdates an existing product draft without validation. Used for auto-saving user's work in progress.\r\n\nThis endpoint allows saving partial data without enforcing mandatory field validation.

Required permissions:
Following permissions are required: ProductEdit", "operationId": "UpdateProductDraftWithoutValidation", "parameters": [ { "name": "productId", "in": "path", "description": "Product id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "id", "in": "path", "description": "Product draft id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "requestBody": { "description": "Update product draft request. Must contain product draft properties", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/UpdateProductDraftWithoutValidationDtoServiceRequest" } ] } } } }, "responses": { "202": { "description": "Success. Product draft saved", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductDraftSavedDtoServiceResponse" } } } }, "409": { "description": "Conflict saving changes in expected version", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "There are conflicts that cannot be resolved automatically, get latest and apply your changes", "type": "Error", "errorCode": "CONFLICT" } ] } } } }, "404": { "description": "Resource not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Not Found. Product/Product draft with given id does not exist", "type": "Error", "errorCode": "Error Code" } ] } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceResponse" } } } }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "500": { "description": "Internal server exception. Please, contact your provider.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": null, "messages": [ { "message": "Internal server exception. Please, contact your provider.", "type": "Error", "errorCode": "INTERNAL_SERVER_ERROR" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/{productId}/draft/{id}/verify": { "put": { "tags": [ "ProductDraft" ], "summary": "Verify product draft", "description": "\nVerifies an product draft record.

Required permissions:
Following permissions are required: ProductApprove", "operationId": "VerifyProductDraft", "parameters": [ { "name": "id", "in": "path", "description": "product draft id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "productId", "in": "path", "description": "the id of the product record", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "responses": { "202": { "description": "Success. Product draft verified" }, "409": { "description": "Conflict saving changes in expected version", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "There are conflicts that cannot be resolved automatically, get latest and apply your changes", "type": "Error", "errorCode": "CONFLICT" } ] } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorModelListServiceResponse" } } } }, "404": { "description": "Resource not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Not Found. Product/Product draft with given id does not exist", "type": "Error", "errorCode": "Error Code" } ] } } } }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "500": { "description": "Internal server exception. Please, contact your provider.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": null, "messages": [ { "message": "Internal server exception. Please, contact your provider.", "type": "Error", "errorCode": "INTERNAL_SERVER_ERROR" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/{productId}/draft/{id}/conflicts": { "put": { "tags": [ "ProductDraftConflictResolution" ], "summary": "Manage conflicts for Product Draft Record.", "description": "\nUsed to check and resolve conflicts for a Product Draft compared to the latest Verified Record.

Required permissions:
At least one of the following permissions is required: ProductConflictResolutionEdit, ProductConflictResolutionAccess", "operationId": "ProductDraftConflicts", "parameters": [ { "name": "productId", "in": "path", "description": "Product id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "id", "in": "path", "description": "Product draft id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "requestBody": { "description": "Conflict Resolutions request", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/DraftConflictDtoServiceRequest" } ] } } } }, "responses": { "202": { "description": "Success. No conflicts were found for the Product Draft Record" }, "409": { "description": "Conflict saving changes in expected version", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "There are conflicts that cannot be resolved automatically, get latest and apply your changes", "type": "Error", "errorCode": "CONFLICT" } ] } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorModelListServiceResponse" } } } }, "404": { "description": "Resource not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Not Found. Product/product draft with given id does not exist", "type": "Error", "errorCode": "Error Code" } ] } } } }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "500": { "description": "Internal server exception. Please, contact your provider.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": null, "messages": [ { "message": "Internal server exception. Please, contact your provider.", "type": "Error", "errorCode": "INTERNAL_SERVER_ERROR" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/draft/bulkconflicts": { "put": { "tags": [ "ProductDraftConflictResolution" ], "summary": "Manage conflicts for bulk Product Draft Records.", "description": "\nUsed to check and resolve conflicts for multiple Product Drafts compared to their latest Verified Records.

Required permissions:
At least one of the following permissions is required: ProductConflictResolutionEdit, ProductConflictResolutionAccess", "operationId": "ProductDraftsBulkConflicts", "parameters": [ { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "requestBody": { "description": "List of Conflict Resolutions request", "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/BulkDraftConflictDtoListServiceRequest" } ] } } } }, "responses": { "202": { "description": "Success. No conflicts were found for the Product Draft Records" }, "409": { "description": "Conflict saving changes in expected version", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "There are conflicts that cannot be resolved automatically, get latest and apply your changes", "type": "Error", "errorCode": "CONFLICT" } ] } } } }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorModelListServiceResponse" } } } }, "404": { "description": "Resource not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Not Found", "type": "Error", "errorCode": "Error Code" } ] } } } }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "500": { "description": "Internal server exception. Please, contact your provider.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": null, "messages": [ { "message": "Internal server exception. Please, contact your provider.", "type": "Error", "errorCode": "INTERNAL_SERVER_ERROR" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } }, "/api/product/draft/journey/{journeyId}/complete-inaccessible-conflicts": { "put": { "tags": [ "ProductDraftConflictResolution" ], "summary": "Complete conflict resolution for product drafts the current user cannot access due to access layers.", "description": "\nFor any product drafts in the journey that are inaccessible to the current user due to access layer\r\n enforcement, all detected conflicts are automatically resolved. Fields whose policy category matches the\r\n configured `productCategory` list take the verified record value; all other conflicted fields take\r\n the new (draft) value. If no `productCategory` is supplied, all conflicts default to the new (draft) value.

Required permissions:
Following permissions are required: ProductConflictResolutionEdit", "operationId": "CompleteInaccessibleProductDraftConflicts", "parameters": [ { "name": "journeyId", "in": "path", "description": "Journey id", "required": true, "schema": { "type": "string", "format": "uuid" } }, { "name": "X-TENANT-ID", "in": "header", "description": "The UiD of the tenant representing organization", "required": true, "schema": { "type": "string" }, "example": "b11f8be3-f29b-4959-8964-956d4af7c468" } ], "requestBody": { "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/CompleteInaccessibleConflictsDto" } ] } } } }, "responses": { "202": { "description": "Success. Inaccessible conflicts resolved (or none existed)" }, "400": { "description": "Bad request. The request has missing/invalid values", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorModelListServiceResponse" } } } }, "401": { "description": "User is not authorized to perform this request", "content": { "application/json": { "example": { "message": "Unauthorized" } } } }, "403": { "description": "Access to resource is forbidden.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": { }, "messages": [ { "message": "Access denied. Following permissions are required: Permission1, Permission2", "type": "Forbidden", "errorCode": "Error Code" } ] } } } }, "500": { "description": "Internal server exception. Please, contact your provider.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ObjectServiceResponse" }, "example": { "data": null, "messages": [ { "message": "Internal server exception. Please, contact your provider.", "type": "Error", "errorCode": "INTERNAL_SERVER_ERROR" } ] } } } }, "410": { "description": "Endpoint marked as deprecated was terminated. This response will be present only if the endpoint was marked as deprecated and has reached the sunset date. During the deprecation period, the API will include additional 'sunset' and 'deprecation' headers.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StringServiceResponse" }, "example": { "data": null, "messages": [ { "message": "This endpoint is obsolete and was terminated on yyyy-MM-dd", "type": "Error", "errorCode": "OBSOLETE_ENDPOINT" } ] } } } } } } } }, "components": { "schemas": { "BulkDraftConflictDto": { "type": "object", "properties": { "productVersion": { "type": "integer", "description": "Used to determine if passed draft is outdated", "format": "int32", "nullable": true }, "pushChanges": { "type": "boolean", "description": "If true updates the product Draft when all conflicts are resolved", "example": true }, "dataConflictResolutions": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "Data conflict resolutions properties", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "productId": { "type": "string", "description": "The Product Id", "format": "uuid" }, "productDraftId": { "type": "string", "description": "The Product Draft Id", "format": "uuid" } }, "additionalProperties": false }, "BulkDraftConflictDtoListServiceRequest": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/BulkDraftConflictDto" }, "nullable": true } }, "additionalProperties": false }, "BulkMergeConflictsDto": { "type": "object", "properties": { "productVersion": { "type": "integer", "description": "Current Product version returned to frontend after resolving merge conflicts.", "format": "int32", "example": 1 }, "dataConflicts": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/DataConflictDto" }, "description": "Data conflicts.", "nullable": true }, "productId": { "type": "string", "description": "The Product Id", "format": "uuid" }, "productDraftId": { "type": "string", "description": "The Product Draft Id", "format": "uuid" } }, "additionalProperties": false, "description": "Class to represent merge conflicts" }, "BulkMergeConflictsDtoListServiceResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/BulkMergeConflictsDto" }, "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "CloneProductRequestDto": { "type": "object", "properties": { "entityId": { "type": "string", "description": "Id of the Entity", "format": "uuid", "example": "b73aecd4-6a11-4ca6-bcf0-c372c5b5da9b" }, "journeyId": { "type": "string", "description": "Id of the Journey", "format": "uuid", "example": "a43a93b3-bf8f-4899-8fe2-7439c92431da" }, "includeRelatedParties": { "type": "boolean", "description": "If set to true the product's related parties will be included in clone process", "example": false } }, "additionalProperties": false }, "CloneProductRequestDtoServiceRequest": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/CloneProductRequestDto" } ], "nullable": true } }, "additionalProperties": false }, "CollectionDto": { "type": "object", "properties": { "isValid": { "type": "boolean" }, "properties": { "type": "object", "additionalProperties": { "type": "string", "nullable": true }, "nullable": true }, "propertiesInfo": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/CollectionPropertyInfoDto" }, "nullable": true } }, "additionalProperties": false }, "CollectionPropertyDto": { "allOf": [ { "$ref": "#/components/schemas/PropertyDto" }, { "type": "object", "properties": { "dataGroupId": { "type": "string", "format": "uuid" }, "dataGroupVersionNumber": { "type": "integer", "format": "int32", "nullable": true }, "collections": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/CollectionDto" }, "nullable": true } }, "additionalProperties": false } ] }, "CollectionPropertyInfoDto": { "type": "object", "properties": { "valueId": { "type": "string", "nullable": true } }, "additionalProperties": false }, "CompleteInaccessibleConflictsDto": { "type": "object", "properties": { "productCategory": { "type": "array", "items": { "type": "string" }, "description": "Journey task product categories for which conflicted fields should default to the verified record value.\r\nFields whose category is NOT in this list will default to the new (draft) value.\r\nIf null or empty, all conflicts default to the new (draft) value.", "nullable": true }, "fieldCategories": { "type": "object", "additionalProperties": { "type": "string", "nullable": true }, "description": "Map of field data key to its product category, used to determine the category of each conflicted field.", "nullable": true } }, "additionalProperties": false }, "CreateUrlToUploadFileRequestDto": { "type": "object", "properties": { "fileName": { "type": "string", "description": "File name", "nullable": true, "example": "file.png" }, "dataKey": { "type": "string", "description": "Requirement dataKey", "nullable": true, "example": "richTextEditorV1" }, "isRootContent": { "type": "boolean", "description": "Identifier if it's requirement content" }, "productDraftId": { "type": "string", "description": "Product Draft Id", "format": "uuid", "example": "2124efd2-3423-40f5-9bdb-fae66c7fa88a" }, "contentSize": { "type": "integer", "description": "File content size", "format": "int64", "example": 6892 } }, "additionalProperties": false }, "CreateUrlToUploadFileRequestDtoServiceRequest": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/CreateUrlToUploadFileRequestDto" } ], "nullable": true } }, "additionalProperties": false }, "CreateUrlToUploadFileResponseDto": { "type": "object", "properties": { "url": { "type": "string", "nullable": true }, "fileIdentifier": { "type": "string", "nullable": true } }, "additionalProperties": false }, "CreateUrlToUploadFileResponseDtoServiceResponse": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/CreateUrlToUploadFileResponseDto" } ], "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "CustomPropertyDto": { "allOf": [ { "$ref": "#/components/schemas/PropertyDto" }, { "type": "object", "properties": { "customTypeId": { "type": "string", "format": "uuid" }, "properties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } } }, "additionalProperties": false } ] }, "DataConflictDto": { "type": "object", "properties": { "existingValue": { "allOf": [ { "$ref": "#/components/schemas/PropertyDto" } ], "description": "Existing value.", "nullable": true }, "newValue": { "allOf": [ { "$ref": "#/components/schemas/PropertyDto" } ], "description": "New value.", "nullable": true } }, "additionalProperties": false, "description": "Class to represent data conflicts" }, "DraftConflictDto": { "type": "object", "properties": { "productVersion": { "type": "integer", "description": "Used to determine if passed draft is outdated", "format": "int32", "nullable": true }, "pushChanges": { "type": "boolean", "description": "If true updates the product Draft when all conflicts are resolved", "example": true }, "dataConflictResolutions": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "Data conflict resolutions properties", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } } }, "additionalProperties": false, "description": "Request DTO representing the conflict resolution data" }, "DraftConflictDtoServiceRequest": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/DraftConflictDto" } ], "description": "Request DTO representing the conflict resolution data", "nullable": true } }, "additionalProperties": false }, "HttpValidationProblemDetails": { "allOf": [ { "$ref": "#/components/schemas/ProblemDetails" }, { "type": "object", "properties": { "errors": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } }, "nullable": true } }, "additionalProperties": { } } ] }, "ManagedProductDto": { "allOf": [ { "$ref": "#/components/schemas/ProductDto" }, { "type": "object", "properties": { "mrId": { "type": "string", "description": "The Managed Relationship Id", "format": "uuid", "example": "e1809731-77df-4e72-98e7-0d314b7a5151" }, "agentId": { "type": "string", "description": "The Agent Id", "format": "uuid", "example": "e1809731-77df-4e72-98e7-0d314b7a5151" } }, "additionalProperties": false } ], "description": "Class to represent the managed product uploaded. \r\nContains all properties needed to fill the metadata of the product being uploaded." }, "ManagedProductDtoServiceRequest": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/ManagedProductDto" } ], "description": "Class to represent the managed product uploaded. \r\nContains all properties needed to fill the metadata of the product being uploaded.", "nullable": true } }, "additionalProperties": false }, "ManagedProductDtoServiceResponse": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/ManagedProductDto" } ], "description": "Class to represent the managed product uploaded. \r\nContains all properties needed to fill the metadata of the product being uploaded.", "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "MergeConflictsDto": { "type": "object", "properties": { "productVersion": { "type": "integer", "description": "Current Product version returned to frontend after resolving merge conflicts.", "format": "int32", "example": 1 }, "dataConflicts": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/DataConflictDto" }, "description": "Data conflicts.", "nullable": true } }, "additionalProperties": false, "description": "Class to represent merge conflicts" }, "MergeConflictsDtoServiceResponse": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/MergeConflictsDto" } ], "description": "Class to represent merge conflicts", "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "ObjectServiceResponse": { "type": "object", "properties": { "data": { "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "ProblemDetails": { "type": "object", "properties": { "type": { "type": "string", "nullable": true }, "title": { "type": "string", "nullable": true }, "status": { "type": "integer", "format": "int32", "nullable": true }, "detail": { "type": "string", "nullable": true }, "instance": { "type": "string", "nullable": true } }, "additionalProperties": { } }, "ProductAccessLayerDetailsDto": { "type": "object", "properties": { "dataKey": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ProductAccessLayerDto": { "type": "object", "properties": { "geographic": { "type": "array", "items": { "type": "string" }, "nullable": true }, "businessRelated": { "type": "array", "items": { "type": "string" }, "nullable": true }, "geographicDetails": { "type": "array", "items": { "$ref": "#/components/schemas/ProductAccessLayerDetailsDto" }, "nullable": true }, "businessRelatedDetails": { "type": "array", "items": { "$ref": "#/components/schemas/ProductAccessLayerDetailsDto" }, "nullable": true } }, "additionalProperties": false }, "ProductDraftDto": { "type": "object", "properties": { "id": { "type": "string", "description": "The Product Id", "format": "uuid", "example": "e1809731-77df-4e72-98e7-0d314b7a5151" }, "type": { "type": "string", "description": "The Product Type", "nullable": true, "example": "Loans" }, "family": { "type": "string", "description": "The Product Family", "nullable": true, "example": "Trading" }, "properties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "List of custom properties for a product separate from the standard\r\nout of the box properties.", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "status": { "type": "string", "description": "The Product Draft Status", "nullable": true, "example": "Active" }, "sourceProductVersion": { "type": "integer", "description": "The Version of Product that draft was made for", "format": "int32", "example": 1 }, "conflictsResolvedSourceProductVersion": { "type": "integer", "description": "Conflict Resolved version", "format": "int32", "example": 1 }, "sourceProductId": { "type": "string", "description": "ProductId for Product Draft", "format": "uuid" }, "journeyId": { "type": "string", "description": "JourneyId for Product Draft", "format": "uuid" }, "version": { "type": "integer", "description": "Version of the Product Draft", "format": "int32" }, "createdDate": { "type": "string", "description": "DateTime of the created Product", "format": "date-time", "nullable": true }, "productAccessLayers": { "allOf": [ { "$ref": "#/components/schemas/ProductAccessLayerDto" } ], "description": "The list of the product access layers", "nullable": true }, "onboardedDate": { "type": "string", "description": "Date when product was first successfully verified (onboarded)", "format": "date-time", "nullable": true }, "offboardedDate": { "type": "string", "description": "Date when product was successfully verified as offboarded", "format": "date-time", "nullable": true }, "lastUpdatedDate": { "type": "string", "description": "Most recent date when product was successfully verified after modification", "format": "date-time", "nullable": true } }, "additionalProperties": false, "description": "Class to represent the product uploaded. \r\nContains all properties needed to fill the metadata of the product being uploaded." }, "ProductDraftDtoServiceResponse": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/ProductDraftDto" } ], "description": "Class to represent the product uploaded. \r\nContains all properties needed to fill the metadata of the product being uploaded.", "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "ProductDraftSavedDto": { "type": "object", "properties": { "version": { "type": "integer", "description": "The version of the saved draft", "format": "int32" }, "success": { "type": "boolean", "description": "Indicates if the save was successful" } }, "additionalProperties": false, "description": "Response for product draft saved without validation" }, "ProductDraftSavedDtoServiceResponse": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/ProductDraftSavedDto" } ], "description": "Response for product draft saved without validation", "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "ProductDraftUpdatedDto": { "type": "object", "properties": { "version": { "type": "integer", "description": "Version of product draft after update", "format": "int32", "example": 4 } }, "additionalProperties": false, "description": "Response DTO representing updated product draft" }, "ProductDraftUpdatedDtoServiceResponse": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/ProductDraftUpdatedDto" } ], "description": "Response DTO representing updated product draft", "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "ProductDto": { "type": "object", "properties": { "id": { "type": "string", "description": "The Product Id", "format": "uuid", "example": "e1809731-77df-4e72-98e7-0d314b7a5151" }, "type": { "type": "string", "description": "The Product Type", "nullable": true, "example": "Loans" }, "family": { "type": "string", "description": "The Product Family", "nullable": true, "example": "Trading" }, "alternateId": { "type": "string", "description": "Product Id from data migration", "nullable": true }, "properties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "List of custom properties for a product separate from the standard\r\nout of the box properties.", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "entityId": { "type": "string", "description": "The Entity Id", "format": "uuid", "example": "e1809731-77df-4e72-98e7-0d314b7a5151" }, "journeyId": { "type": "string", "description": "The Journey Id", "format": "uuid", "example": "e1809731-77df-4e72-98e7-0d314b7a5151" }, "categories": { "type": "array", "items": { "type": "string" }, "description": "Collection of categories of passed properties, if null then use all", "nullable": true }, "entityProperties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "EntityData properties used for rules evaluation", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "enforceValidation": { "type": "boolean", "description": "If set to true the data will be validated before saving" }, "performHardMandatoryValidation": { "type": "boolean", "description": "If set to true the hard mandatory fields will be validated at api level" }, "performLookupValidation": { "type": "boolean", "description": "If set to true the lookup validation will happen" }, "jurisdictions": { "type": "array", "items": { "$ref": "#/components/schemas/VersionedJurisdictionDto" }, "description": "Optional list of Jurisdiction to skip jurisdiction evaluation and use the ones sent here", "nullable": true }, "productAccessLayers": { "allOf": [ { "$ref": "#/components/schemas/ProductAccessLayerDto" } ], "description": "Product Access Layers", "nullable": true } }, "additionalProperties": false, "description": "Class to represent the product uploaded. \r\nContains all properties needed to fill the metadata of the product being uploaded." }, "ProductDtoServiceRequest": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/ProductDto" } ], "description": "Class to represent the product uploaded. \r\nContains all properties needed to fill the metadata of the product being uploaded.", "nullable": true } }, "additionalProperties": false }, "ProductDtoServiceResponse": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/ProductDto" } ], "description": "Class to represent the product uploaded. \r\nContains all properties needed to fill the metadata of the product being uploaded.", "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "ProductMigrationDto": { "allOf": [ { "$ref": "#/components/schemas/ProductDto" }, { "type": "object", "properties": { "jurisdiction": { "type": "string", "nullable": true }, "isOffboarded": { "type": "boolean" } }, "additionalProperties": false } ] }, "PropertyDto": { "required": [ "discriminator", "type" ], "type": "object", "properties": { "type": { "allOf": [ { "$ref": "#/components/schemas/PropertyType" } ], "readOnly": true }, "discriminator": { "allOf": [ { "$ref": "#/components/schemas/PropertyType" } ], "readOnly": true }, "isValid": { "type": "boolean", "nullable": true } }, "additionalProperties": false }, "PropertyType": { "enum": [ "Single", "Custom", "Collection" ], "type": "string" }, "ReprojectReportsResponseDto": { "type": "object", "properties": { "productId": { "type": "string", "format": "uuid" }, "projectionWritten": { "type": "boolean" }, "timestamp": { "type": "string", "format": "date-time" } }, "additionalProperties": false, "description": "Result of a product reports re-sync." }, "ReprojectReportsResponseDtoServiceResponse": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/ReprojectReportsResponseDto" } ], "description": "Result of a product reports re-sync.", "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "ServiceResponse": { "type": "object", "properties": { "data": { "type": "string", "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "ServiceResponseMessage": { "type": "object", "properties": { "message": { "type": "string", "nullable": true }, "type": { "type": "string", "nullable": true }, "errorCode": { "type": "string", "nullable": true } }, "additionalProperties": false }, "SinglePropertyDto": { "allOf": [ { "$ref": "#/components/schemas/PropertyDto" }, { "type": "object", "properties": { "value": { "type": "string", "nullable": true }, "valueId": { "type": "string", "nullable": true } }, "additionalProperties": false } ] }, "StringServiceResponse": { "type": "object", "properties": { "data": { "type": "string", "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false }, "UpdateProductDraftDto": { "type": "object", "properties": { "id": { "type": "string", "description": "The Product Id", "format": "uuid", "example": "e1809731-77df-4e72-98e7-0d314b7a5151" }, "type": { "type": "string", "description": "The Product Type", "nullable": true, "example": "Loans" }, "family": { "type": "string", "description": "The Product Family", "nullable": true, "example": "Trading" }, "properties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "List of custom properties for a product separate from the standard\r\nout of the box properties.", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "status": { "type": "string", "description": "The Product Draft Status", "nullable": true, "example": "Active" }, "sourceProductVersion": { "type": "integer", "description": "The Version of Product that draft was made for", "format": "int32", "example": 1 }, "version": { "type": "integer", "description": "The version of the updated draft", "format": "int32", "nullable": true }, "jurisdictions": { "type": "array", "items": { "$ref": "#/components/schemas/VersionedJurisdictionDto" }, "description": "Collection of policy jurisdictions", "nullable": true }, "categories": { "type": "array", "items": { "type": "string" }, "description": "Collection of categories of passed properties, if null then use all", "nullable": true }, "isUpdateEnforced": { "type": "boolean", "description": "Checks if the product draft has been saved or completed" }, "isRelatedPartiesEnabled": { "type": "boolean", "description": "Checks if related parties grid has been enabled" }, "isDocumentsEnabled": { "type": "boolean", "description": "Checks if documents tab has been enabled" }, "taskId": { "type": "string", "description": "Id of the Manage Product task", "format": "uuid", "nullable": true }, "sourceEntityId": { "type": "string", "description": "Id of entity that created the Product", "format": "uuid", "nullable": true }, "updateEntityDataJurisdictions": { "type": "boolean", "description": "If set to True Entity Data Jurisdictions will be evaluated after update" }, "skipMandatoryValidationFieldsNotInPayload": { "type": "boolean", "description": "SkipMandatoryValidationFieldsNotInPayload" }, "entityProperties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "EntityData properties used for rules evaluation", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "relatedInvestmentManagerDataSourceProperties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "Properties for the Related Investment Manager Data Source", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "currentProductMetadataProperties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "Properties for the Current Product Metadata Data Source", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "relatedUnderlyingPrincipalOwnerProperties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "Properties for the Underlying Principal Owner Data Source", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "productAccessLayers": { "allOf": [ { "$ref": "#/components/schemas/ProductAccessLayerDto" } ], "description": "Product access layers", "nullable": true } }, "additionalProperties": false, "description": "Class to represent the product uploaded. \r\nContains all properties needed to fill the metadata of the product being uploaded." }, "UpdateProductDraftDtoServiceRequest": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/UpdateProductDraftDto" } ], "description": "Class to represent the product uploaded. \r\nContains all properties needed to fill the metadata of the product being uploaded.", "nullable": true } }, "additionalProperties": false }, "UpdateProductDraftWithoutValidationDto": { "type": "object", "properties": { "id": { "type": "string", "description": "The Product Id", "format": "uuid" }, "type": { "type": "string", "description": "The Product Type", "nullable": true }, "family": { "type": "string", "description": "The Product Family", "nullable": true }, "properties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "List of custom properties for a product", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "status": { "type": "string", "description": "The Product Draft Status", "nullable": true }, "sourceProductVersion": { "type": "integer", "description": "The Version of Product that draft was made for", "format": "int32" }, "version": { "type": "integer", "description": "The version of the updated draft", "format": "int32", "nullable": true }, "jurisdictions": { "type": "array", "items": { "$ref": "#/components/schemas/VersionedJurisdictionDto" }, "description": "Collection of policy jurisdictions", "nullable": true }, "taskId": { "type": "string", "description": "Id of the Manage Product task", "format": "uuid", "nullable": true }, "updateEntityDataJurisdictions": { "type": "boolean", "description": "If set to True Entity Data Jurisdictions will be evaluated after update" }, "entityProperties": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/PropertyDto" }, "description": "EntityData properties", "nullable": true, "example": { "firstName": { "type": "Single", "value": "Tom" }, "dateOfBirth": { "type": "Single", "value": "2021-07-15" }, "address": { "type": "Collection", "dataGroupId": "674ccef1-cfdc-46af-97f8-340b24ab7f43", "collections": { "54a25d24-1a4b-45c6-a5b4-980e5d3a1df5": { "properties": { "country": "Spain", "city": "Madrid", "street": "C. de Sevilla" } }, "93468632-1a9e-4ad0-b2e1-c5ec0f65d7b2": { "properties": { "country": "Spain", "city": "Barcelona", "street": "Carrer de Girona" } } } } } }, "productAccessLayers": { "allOf": [ { "$ref": "#/components/schemas/ProductAccessLayerDto" } ], "description": "Product access layers", "nullable": true } }, "additionalProperties": false, "description": "DTO for updating product draft without validation (auto-save)" }, "UpdateProductDraftWithoutValidationDtoServiceRequest": { "type": "object", "properties": { "data": { "allOf": [ { "$ref": "#/components/schemas/UpdateProductDraftWithoutValidationDto" } ], "description": "DTO for updating product draft without validation (auto-save)", "nullable": true } }, "additionalProperties": false }, "ValidationErrorModel": { "type": "object", "properties": { "propertyName": { "type": "string", "nullable": true }, "errorMessage": { "type": "string", "nullable": true }, "attemptedValue": { "nullable": true }, "errorCode": { "type": "string", "nullable": true } }, "additionalProperties": false }, "ValidationErrorModelListServiceResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/ValidationErrorModel" }, "nullable": true }, "messages": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceResponseMessage" }, "nullable": true } }, "additionalProperties": false, "example": { "data": [ { "propertyName": "data", "errorMessage": "Data is required", "attemptedValue": "", "errorCode": "NotNullValidator" } ], "messages": [ { "message": "Data is required", "type": "Error", "errorCode": "Error Code" } ] } }, "VersionedJurisdictionDto": { "type": "object", "properties": { "jurisdiction": { "type": "string", "nullable": true }, "versionId": { "type": "string", "format": "uuid" } }, "additionalProperties": false } }, "securitySchemes": { "Bearer": { "type": "apiKey", "description": "Please insert JWT with Bearer into field", "name": "Authorization", "in": "header" } } }, "security": [ { "Bearer": [ ] } ] }