{"openapi":"3.1.0","info":{"description":"Coordinates optimisation jobs for the Rota service","license":{"name":"MIT","url":"https://opensource.org/licenses/MIT"},"title":"Rota Optimiser API","version":"v0.0.1"},"externalDocs":{"description":"README","url":"https://github.com/hmcts/rota-optimiser"},"servers":[{"url":"http://localhost","description":"Generated server url"}],"paths":{"/":{"get":{"operationId":"welcome","responses":{"200":{"content":{"*/*":{"schema":{"type":"string"}}},"description":"OK"}},"tags":["root-controller"]}},"/ServiceManager/optimise/v1/jobs/nextjob/{workerId}/{workerType}":{"get":{"operationId":"nextJob","parameters":[{"in":"path","name":"workerId","required":true,"schema":{"type":"string"}},{"in":"path","name":"workerType","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/xml":{"schema":{"$ref":"#/components/schemas/LegacyNextJobDetailsResponse"}}},"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/jobs/updatescore/{jobNo}/{hardScore}/{mediumScore}/{softScore}":{"put":{"operationId":"updateScore","parameters":[{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"path","name":"hardScore","required":true,"schema":{"type":"string"}},{"in":"path","name":"mediumScore","required":true,"schema":{"type":"string"}},{"in":"path","name":"softScore","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Optimiser-Lease-Token","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/jobs/{context}":{"post":{"operationId":"schedule","parameters":[{"in":"path","name":"context","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/xml":{"schema":{"$ref":"#/components/schemas/LegacyScheduleJobRequest"}}},"required":true},"responses":{"200":{"content":{"application/xml":{"schema":{"$ref":"#/components/schemas/LegacyJobNumberResponse"}}},"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/jobs/{context}/{jobNo}":{"get":{"operationId":"details","parameters":[{"in":"path","name":"context","required":true,"schema":{"type":"string"}},{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/xml":{"schema":{"$ref":"#/components/schemas/LegacyJobDetailsResponse"}}},"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/jobs/{context}/{jobNo}/brokenrules":{"get":{"operationId":"brokenRules","parameters":[{"in":"path","name":"context","required":true,"schema":{"type":"string"}},{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/xml":{"schema":{"type":"object"}}},"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/jobs/{context}/{jobNo}/delete":{"post":{"operationId":"delete_1","parameters":[{"in":"path","name":"context","required":true,"schema":{"type":"string"}},{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/jobs/{context}/{jobNo}/solution":{"get":{"operationId":"solution","parameters":[{"in":"path","name":"context","required":true,"schema":{"type":"string"}},{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/xml":{"schema":{"type":"string"}}},"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/jobs/{context}/{jobNo}/status":{"get":{"operationId":"status","parameters":[{"in":"path","name":"context","required":true,"schema":{"type":"string"}},{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/xml":{"schema":{"$ref":"#/components/schemas/LegacyJobStatusResponse"}}},"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/jobs/{jobNo}/completed":{"put":{"operationId":"completed","parameters":[{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"header","name":"X-Optimiser-Lease-Token","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/xml":{"schema":{"$ref":"#/components/schemas/LegacyJobCompletionRequest"}}},"required":true},"responses":{"200":{"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/jobs/{jobNo}/failed":{"put":{"operationId":"failed","parameters":[{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"header","name":"X-Optimiser-Lease-Token","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"text/plain":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/jobs/{jobNo}/heartbeat/{workerId}":{"put":{"operationId":"heartbeat","parameters":[{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"path","name":"workerId","required":true,"schema":{"type":"string"}},{"in":"header","name":"X-Optimiser-Lease-Token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}},"tags":["optimiser-controller"]}},"/ServiceManager/optimise/v1/workers/{workerId}/started":{"post":{"operationId":"workerStarted","parameters":[{"in":"path","name":"workerId","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"text/plain":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"content":{"application/xml":{"schema":{"type":"string"}}},"description":"OK"}},"tags":["optimiser-controller"]}},"/Transform/persist/v1/data":{"post":{"operationId":"saveProblem","requestBody":{"content":{"application/xml":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"content":{"application/xml":{"schema":{"$ref":"#/components/schemas/LegacyTicketNumberResponse"}}},"description":"OK"}},"tags":["persistence-controller"]}},"/Transform/persist/v1/data/{context}/{jobNo}/problemdata":{"get":{"operationId":"problemData","parameters":[{"in":"path","name":"context","required":true,"schema":{"type":"string"}},{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"query","name":"ticketId","required":true,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"200":{"content":{"application/xml":{"schema":{"type":"string"}}},"description":"OK"}},"tags":["persistence-controller"]}},"/Transform/persist/v1/data/{jobNo}/brokenrules":{"post":{"operationId":"saveBrokenRules","parameters":[{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/xml":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"content":{"application/xml":{"schema":{"type":"integer","format":"int64"}}},"description":"OK"}},"tags":["persistence-controller"]}},"/Transform/persist/v1/data/{jobNo}/solution":{"post":{"operationId":"saveSolution","parameters":[{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/xml":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"content":{"application/xml":{"schema":{"type":"integer","format":"int64"}}},"description":"OK"}},"tags":["persistence-controller"]}},"/Transform/persist/v1/data/{jobNo}/{ticketId}/delete":{"post":{"operationId":"delete","parameters":[{"in":"path","name":"jobNo","required":true,"schema":{"type":"integer","format":"int64"}},{"in":"path","name":"ticketId","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}},"tags":["persistence-controller"]}},"/Transform/persist/v1/data/{ticket}":{"get":{"operationId":"problem","parameters":[{"in":"path","name":"ticket","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"content":{"application/xml":{"schema":{"type":"string"}}},"description":"OK"}},"tags":["persistence-controller"]}}},"components":{"schemas":{"LegacyBrokenRulesResponse":{"properties":{"brokenRule":{"type":"array","items":{"$ref":"#/components/schemas/LegacyBrokenRule"}}}},"LegacyCallbackEndpoint":{"type":"object","description":"Completion callback URI template","properties":{"value":{"type":"string"}}},"LegacyCallbackEndpoints":{"type":"object","properties":{"endpoint":{"type":"array","items":{"$ref":"#/components/schemas/LegacyCallbackEndpoint"}}}},"LegacyConfigurationParameters":{"type":"object","properties":{"var":{"type":"array","items":{"$ref":"#/components/schemas/LegacyParameter"}}}},"LegacyErrorResponse":{"properties":{"errorCode":{"type":"integer","format":"int32"},"internalMessage":{"type":"string"},"moreInfo":{"type":"string"},"userMessage":{"type":"string"}}},"LegacyJobCompletionRequest":{"properties":{"brokenRulesId":{"type":"integer","format":"int64"},"hardScore":{"type":"string"},"mediumScore":{"type":"string"},"softScore":{"type":"string"},"solutionId":{"type":"integer","format":"int64"}}},"LegacyJobData":{"type":"object","description":"Problem-data tickets or locations used by a job","properties":{"location":{"type":"array","items":{"$ref":"#/components/schemas/LegacyParameter"}},"ticket":{"type":"array","items":{"$ref":"#/components/schemas/LegacyParameter"}}}},"LegacyJobDetailsResponse":{"properties":{"context":{"type":"string"},"job":{"$ref":"#/components/schemas/LegacyJobParameters"},"jobNo":{"type":"integer","format":"int64"},"status":{"type":"string","enum":["NOT_STARTED","IN_PROGRESS","COMPLETED","FAILED","NOT_STARTED","IN_PROGRESS","COMPLETED","FAILED"]},"version":{"type":"integer","format":"int32"}}},"LegacyJobNumberResponse":{"properties":{"jobNo":{"type":"integer","format":"int64"}}},"LegacyJobParameters":{"type":"object","properties":{"param":{"type":"array","items":{"$ref":"#/components/schemas/LegacyParameter"}}}},"LegacyJobStatusResponse":{"properties":{"description":{"type":"string"},"maxTime":{"type":"integer","format":"int64"},"score":{"$ref":"#/components/schemas/LegacyScore"},"scoreTime":{"type":"string","format":"date-time"},"startTime":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["NOT_STARTED","IN_PROGRESS","COMPLETED","FAILED","NOT_STARTED","IN_PROGRESS","COMPLETED","FAILED"]},"statusTime":{"type":"string","format":"date-time"}}},"LegacyNextJobDetailsResponse":{"properties":{"context":{"type":"string"},"data":{"$ref":"#/components/schemas/LegacyTicketData"},"jobNo":{"type":"integer","format":"int64"}}},"LegacyParameter":{"type":"object","description":"Named value used throughout the legacy XML contract","properties":{"name":{"type":"string"},"value":{"type":"string"}}},"LegacyProblemDataListResponse":{"properties":{"problemData":{"type":"array","items":{"$ref":"#/components/schemas/LegacyParameter"}}}},"LegacyScheduleJobRequest":{"description":"Legacy schedule-job XML payload","properties":{"config":{"$ref":"#/components/schemas/LegacyConfigurationParameters"},"data":{"$ref":"#/components/schemas/LegacyJobData"},"job":{"$ref":"#/components/schemas/LegacyJobParameters"},"notifyEndpoints":{"$ref":"#/components/schemas/LegacyCallbackEndpoints"}}},"LegacyScore":{"type":"object","properties":{"part":{"type":"array","items":{"$ref":"#/components/schemas/LegacyParameter"}}}},"LegacyTicketData":{"type":"object","properties":{"ticket":{"type":"array","items":{"$ref":"#/components/schemas/LegacyParameter"}}}},"LegacyTicketNumberResponse":{"properties":{"ticketNo":{"type":"integer","format":"int64"}}}}}}
