{"openapi":"3.1.0","info":{"title":"Public API Documentation","description":"Public API documentation aims to describe the Public API endpoints.","license":{"name":"EUPL","url":"https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12"},"version":"1.1.6"},"servers":[{"description":"Generated server url","url":"https://enotices2.preview.ted.europa.eu/esenders"}],"paths":{"/api/v2/notice/notices/{businessId}/validation-report":{"get":{"tags":["Notice"],"summary":"Retrieve the notice validation report.","operationId":"getValidationReport","parameters":[{"name":"businessId","in":"path","description":"The notice business identifier (notice identifier - version)","required":true,"schema":{"type":"string"},"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6-01"}],"responses":{"200":{"description":"Provides the notice validation report in SVRL (Schematron Validation Report Language) format.","content":{"*/*":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid business id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"401":{"description":"Issue with the Authorization, either missing Authorization header in request or api key doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"404":{"description":"Notice or notice report was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"406":{"description":"The server is unable to provide a response that matches the client’s requested format, typically specified in the Accept header of the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}}}}},"/api/v2/notice/notices/submit":{"post":{"tags":["Notice"],"summary":"Submit XML notice","operationId":"submitNotice","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/MetadataAndNotice"}}},"required":true},"responses":{"201":{"description":"The notice is created. If CVS validation succeeds, the notice is submitted for publication. Otherwise, is not submitted for publication and report validation can be retrieved from 'validationReportUrl' response property.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CVSReport"}}}},"400":{"description":"Possible issues: \n- Notice and metadata are mandatory.\n- Notice author email is not valid.\n- A notice with the same id and version id already exists.\n- Could not find given procedure and cannot create new one for this type of notice.\n- Missing procedure id in notice.\n- NoticeAuthorEmail and noticeAuthorLocale are mandatory.\n- Notice parameter cannot be empty.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"401":{"description":"Issue with the Authorization, either missing Authorization header in request or api key doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"409":{"description":"Possible issues: \n- Multiple objects are created/updated at the same time.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"500":{"description":"Possible issues: \n- The CVS service is not available to validate the notice.\n- CVS service failed to validate the notice.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"406":{"description":"The server is unable to provide a response that matches the client’s requested format, typically specified in the Accept header of the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}}}}},"/api/v2/notice/notices/convert":{"post":{"tags":["Notice"],"summary":"Convert an XML notice","operationId":"convert","requestBody":{"content":{"application/xml":{"schema":{"type":"string","format":"byte"}}},"required":true},"responses":{"200":{"description":"The notice was successfully converted.","content":{"application/xml":{"schema":{"type":"string","format":"byte"}}}},"400":{"description":"The request body is incomplete or invalid."}}}},"/api/v2/notice/notices/{businessId}/stop-publication-esentool":{"post":{"tags":["Notice"],"summary":"Stop the notice publication.","operationId":"stopPublicationEsentool","parameters":[{"name":"businessId","in":"path","description":"The notice business identifier (notice identifier - version)","required":true,"schema":{"type":"string"},"example":"3fa85f64-5717-4562-b3fc-2c963f66afa6-01"}],"responses":{"200":{"description":"The publication of the notice has been stopped.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Notice"}}}},"400":{"description":"Invalid business id.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"401":{"description":"Issue with the Authorization, either missing Authorization header in request or api key doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"403":{"description":"Notice cannot be stopped because it is not in SUBMITTED status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"404":{"description":"Notice was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"406":{"description":"The server is unable to provide a response that matches the client’s requested format, typically specified in the Accept header of the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"423":{"description":"Cannot acquire lock because notice is already locked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"500":{"description":"Possible issue: Internal services connection issue.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"504":{"description":"Possible issue: Internal services connection issue.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}}}}},"/api/v2/notice/notices/search-esentool":{"get":{"tags":["Notice"],"summary":"Search procedures.","operationId":"searchProceduresEsentool","parameters":[{"name":"page","in":"query","description":"Indicates the page number of the paginated result list","required":false,"schema":{"type":"integer","format":"int32","default":0,"minimum":0}},{"name":"size","in":"query","description":"Indicates the size of the paginated result list","required":false,"schema":{"type":"integer","format":"int32","default":20,"minimum":1}},{"name":"sortProperty","in":"query","description":"The property to use to sort the results","required":false,"schema":{"type":"string","enum":["id","versionId","procedureId","status","createdAt","updatedAt","submittedAt","transmittedAt","publicationId","publicationDate","noticeType","legalBasis","noticeAuthor","expectedPublicationDate"]}},{"name":"sortDirection","in":"query","description":"The sort direction, ascending (ASC) or descending (DESC)","required":false,"schema":{"type":"string","enum":["ASC","DESC"]}},{"name":"searchNoticesEsentool","in":"query","required":true,"schema":{"$ref":"#/components/schemas/SearchNotice"}}],"responses":{"200":{"description":"All notices based on filters. Even if 0 results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchNoticeResult"}}}},"401":{"description":"Issue with the Authorization, either missing Authorization header in request or api key doesn't exist.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}},"406":{"description":"The server is unable to provide a response that matches the client’s requested format, typically specified in the Accept header of the request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExceptionBody"}}}}}}}},"components":{"schemas":{"Notice":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"The notice identifier (without the version).","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"versionId":{"type":"string","description":"The version identifier.","example":"01"},"procedureId":{"type":"string","format":"uuid","description":"The procedure identifier.","example":"3fa85f64-5717-4562-b3fc-2c963f66afa5"},"status":{"$ref":"#/components/schemas/NoticeStatus","description":"The notice status: \n * DRAFT - The notice is being drafted. \n * SUBMITTED - The notice is successfully received, validated and sent to OP (received by TED-Monitor-2022). \n * STOPPED - Publication of the notice was stopped by the buyer/ eSender before publication and the request was accepted. \n * PUBLISHED - The notice is published online on TED. \n * PUBLISHING - Publication process in progress, i.e. the notice has been added to the daily export for TED. \n * DELETED - The notice has been deleted by front-end user. \n * NOT_PUBLISHED - The notice was received but not published on TED. \n * ARCHIVED - The notice has been archived by front-end user. \n * IMPORTED_PUBLISHED - The notice has been imported from TED.","example":"STOPPED"},"updatedAt":{"type":"string","format":"date-time","description":"The exact moment of the latest update of the notice by either user or system.","example":"2022-01-01T13:15:55.89Z"},"submittedAt":{"type":"string","format":"date-time","description":"The notice submission date/time.","example":"2022-01-01T13:15:55.89Z"},"createdAt":{"type":"string","format":"date-time","description":"The notice creation date/time.","example":"2022-01-01T13:15:55.89Z"},"transmittedAt":{"type":"string","format":"date-time","description":"The notice transmission date/time.","example":"2022-01-01T13:15:55.89Z"},"publicationId":{"type":"string","description":"The notice publication identifier.","example":"8164123-2024"},"publicationDate":{"type":"string","format":"date","description":"The notice publication date."},"noticeType":{"type":"string","description":"The notice type.","example":"2"},"legalBasis":{"type":"string","description":"The notice legal basis code.","example":"32014L0025"},"languages":{"type":"string","description":"The notice languages.","example":["ENG","DEU"]},"noticeAuthor":{"type":"string","description":"The email is used to identify the person responsible for the notice, i.e. the Contracting Authority.","example":"minimal@email.eu"},"expectedPublicationDate":{"type":"string","format":"date","description":"The notice expected publication date"}}},"NoticeStatus":{"type":"string","enum":["DRAFT","SUBMITTED","STOPPED","PUBLISHED","PUBLISHING","DELETED","NOT_PUBLISHED","ARCHIVED","VALIDATION_FAILED","IMPORTED_PUBLISHED"]},"ExceptionBody":{"type":"object","description":"The information related to the Exception that occurred.","properties":{"code":{"type":"string","description":"The exception code.","example":"notice.NOTICE_NOT_FOUND"},"message":{"type":"string","description":"The exception message.","example":"No notice found"}}},"Metadata":{"type":"object","description":"The metadata that is used to identify the original author of the notice.","properties":{"noticeAuthorEmail":{"type":"string","description":"The email is used to identify the person responsible for the notice, i.e. the Contracting Authority.","example":"john@doe.com"},"noticeAuthorLocale":{"type":"string","description":"The EU official language in which the Contracting Authority wishes to be notified by the Publications Office.","example":"en"}},"required":["noticeAuthorEmail","noticeAuthorLocale"]},"MetadataAndNotice":{"type":"object","description":"The metadata that is used during the submission of the notice.","properties":{"metadata":{"$ref":"#/components/schemas/Metadata","description":"The metadata that is used to identify the original author of the notice."},"notice":{"type":"string","format":"binary","description":"The notice XML content."}},"required":["metadata","notice"]},"CVSReport":{"type":"object","description":"The CVS report details after the notice xml submission.","properties":{"validationReportUrl":{"type":"string","description":"The url to use to retrieve the CVS validation report"},"success":{"type":"boolean","description":"The status of the submission. True if success, otherwise false."}}},"SearchNotice":{"type":"object","description":"The information used in a notice search.","properties":{"id":{"type":"string","format":"uuid","description":"The notice identifier (without the version).","example":"3fa85f64-5717-4562-b3fc-2c963f66afa6"},"versionId":{"type":"string","description":"The version identifier.","example":"01"},"createdAfter":{"type":"string","format":"date-time","description":"The minimum date/time value used to find notices created after this point.","example":"2022-01-01T13:15:55.890Z"},"createdBefore":{"type":"string","format":"date-time","description":"The maximum date/time value used to find notices created before this point.","example":"2022-12-01T23:00:00.000Z"},"submittedAfter":{"type":"string","format":"date-time","description":"The minimum date/time value used to find notices submitted after this point.","example":"2022-01-01T13:15:55.890Z"},"submittedBefore":{"type":"string","format":"date-time","description":"The maximum date/time value used to find notices submitted before this point.","example":"2022-12-01T23:00:00.000Z"},"publishedAfter":{"type":"string","format":"date-time","description":"The minimum date/time value used to find notices published after this point.","example":"2022-01-01T13:15:55.890Z"},"publishedBefore":{"type":"string","format":"date-time","description":"The maximum date/time value used to find notices published before this point.","example":"2022-12-01T23:00:00.000Z"},"transmittedAfter":{"type":"string","format":"date-time","description":"The minimum date/time value used to find notices transmitted after this point.","example":"2022-01-01T13:15:55.890Z"},"transmittedBefore":{"type":"string","format":"date-time","description":"The maximum date/time value used to find notices transmitted before this point.","example":"2022-12-01T23:00:00.000Z"},"statuses":{"type":"array","description":"The list of status to include in the search: \n * DRAFT - The notice is being drafted. \n * SUBMITTED - The notice is successfully received, validated and sent to OP (received by TED-Monitor-2022). \n * STOPPED - Publication of the notice was stopped by the buyer/ eSender before publication and the request was accepted. \n * PUBLISHED - The notice is published online on TED. \n * PUBLISHING - Publication process in progress, i.e. the notice has been added to the daily export for TED. \n * DELETED - The notice has been deleted by front-end user. \n * NOT_PUBLISHED - The notice was received but not published on TED. \n * ARCHIVED - The notice has been archived by front-end user. \n * IMPORTED_PUBLISHED - The notice has been imported from TED.","items":{"type":"string","enum":["DRAFT","SUBMITTED","STOPPED","PUBLISHED","PUBLISHING","DELETED","NOT_PUBLISHED","ARCHIVED","VALIDATION_FAILED","IMPORTED_PUBLISHED"]}},"noticeAuthor":{"type":"string","description":"The email is used to identify the person responsible for the notice, i.e. the Contracting Authority.","example":"minimal@email.eu"}}},"SearchNoticeResult":{"type":"object","description":"The information returned after a notice search.","properties":{"totalSize":{"type":"integer","format":"int64","description":"The total size of entities found.","example":99},"content":{"type":"array","description":"The content of entities found.","items":{"$ref":"#/components/schemas/Notice"}}}}},"securitySchemes":{"esenders-token":{"type":"http","name":"esenders-token","description":"API Key generated using TED API","scheme":"bearer","bearerFormat":"JWT"}}},"security":[{"esenders-token":[]}]}