diff --git a/PostFundManagement.ConsoleUI/all_endpoints.json b/PostFundManagement.ConsoleUI/all_endpoints.json index 1b2763e..a1e5c62 100644 --- a/PostFundManagement.ConsoleUI/all_endpoints.json +++ b/PostFundManagement.ConsoleUI/all_endpoints.json @@ -1,3097 +1,61 @@ [ { - "tag": "Users", - "method": "GET", - "path": "/v1/api/users/{userId}", - "opId": "getuser", - "desc": "Gets the metadata of a single user.", - "params": [ - { - "name": "userId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/User" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Users", + "tag": "Communications", "method": "POST", - "path": "/v1/api/users/{page}/{pageSize}", - "opId": "getusers", - "desc": "Paginated, searchable directory of system users. Supports filtering by ActivityStatus, searching by Email, and sorting", - "params": [ - { - "name": "page", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int32", - "default": 1 + "path": "/v1/api/communications/invites", + "opId": "sendinvite", + "desc": "Trigger an invite to an organization or candidate (specifying NotificationPlatform)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/InviteRequest" + } } }, - { - "name": "pageSize", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int32", - "default": 100 - } - } - ], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UserFilterRequest" - } + "required": true }, "responses": { "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/User" + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Invite" + } } } }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Users", - "method": "POST", - "path": "/v1/api/integration/sync", - "opId": "syncuser", - "desc": "Trigger integration and data synchronization in the background", - "params": [], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Users", - "method": "GET", - "path": "/v1/api/users/{userId}/status/{status}", - "opId": "updateuserstatus", - "desc": "Changes the Activity status of the user in the system", - "params": [ - { - "name": "userId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "status", - "in": "path", - "required": true, - "schema": { - "$ref": "#/components/schemas/ActivityStatus" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "POST", - "path": "/v1/api/projects/activities", - "opId": "createactivity", - "desc": "Add a new activity under project (M04)", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateActivityRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "POST", - "path": "/v1/api/projects/programme", - "opId": "createprogramme", - "desc": "Create programme", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateProgrammeRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "PUT", - "path": "/v1/api/projects/programme", - "opId": "updateprogramme", - "desc": "Update existing programme", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UpdateProgrammeRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "POST", - "path": "/v1/api/projects", - "opId": "createproject", - "desc": "Create a new project (M04)", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateProjectRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects", - "opId": "getprojects", - "desc": "Get a list of projects", - "params": [ - { - "name": "page", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 100 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Project" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "PUT", - "path": "/v1/api/projects", - "opId": "updateproject", - "desc": "Update project details", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UpdateProjectRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/{projectId}/activities", - "opId": "getactivities", - "desc": "Get a list of activities for a project", - "params": [ - { - "name": "projectId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Activity" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/activities/{activityId}", - "opId": "getactivity", - "desc": "Gets a specific activity by it's id", - "params": [ - { - "name": "activityId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Activity" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/milestones/{milestoneId}", - "opId": "getmilestone", - "desc": "Gets a specific milestone", - "params": [ - { - "name": "milestoneId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Milestone" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/milestones/{page}/{pageSize}", - "opId": "getmilestones", - "desc": "Get a list of all milestones", - "params": [ - { - "name": "page", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int32", - "default": 100 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Milestone" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/programme/{programmeId}", - "opId": "getprogramme", - "desc": "Get specific programme", - "params": [ - { - "name": "programmeId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Programme" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/{programmeId}/programme", - "opId": "getprogrammeprojects", - "desc": "Get a list of all projects under a programme", - "params": [ - { - "name": "programmeId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Project" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/programme/{page}/{pageSize}", - "opId": "getprogrammesprojects", - "desc": "Get a list of all programmes", - "params": [ - { - "name": "page", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int32", - "default": 100 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Programme" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/{projectId}", - "opId": "getproject", - "desc": "Get project by ID", - "params": [ - { - "name": "projectId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Project" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/indicators/project/{projectId}", - "opId": "getprojectindicators", - "desc": "Get get a detailed list of project indicators", - "params": [ - { - "name": "projectId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Indicator" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/{projectId}/milestones", - "opId": "getprojectmilestones", - "desc": "Get a list of milestones for a project", - "params": [ - { - "name": "projectId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Milestone" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "GET", - "path": "/v1/api/projects/{projectId}/risks", - "opId": "getprojectrisks", - "desc": "Get a list of risks for a project", - "params": [ - { - "name": "projectId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Risk" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "PUT", - "path": "/v1/api/projects/milestone", - "opId": "updatemilestone", - "desc": "Update project milestone details", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UpdateMilestoneRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Projects", - "method": "PUT", - "path": "/v1/api/projects/status", - "opId": "updateprojectstatus", - "desc": "Update project status (M04)", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UpdateProjectStatusRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "POST", - "path": "/v1/api/grants/awards", - "opId": "createaward", - "desc": "Register an approved funding award (M01)", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateAwardRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "GET", - "path": "/v1/api/grants/awards", - "opId": "getawards", - "desc": "Get a list of awards", - "params": [ - { - "name": "page", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 10 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Award" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "POST", - "path": "/v1/api/grants/budgets", - "opId": "createbudget", - "desc": "Create a new budget line (M05)", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateBudgetRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "GET", - "path": "/v1/api/grants/budgets", - "opId": "getbudgets", - "desc": "Get all budgets", - "params": [ - { - "name": "page", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 100 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Budget" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "POST", - "path": "/v1/api/grants/contracts", - "opId": "createcontract", - "desc": "Create a contract record from an approved award (M02)", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateContractRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "GET", - "path": "/v1/api/grants/contracts", - "opId": "getcontracts", - "desc": "Get all contracts", - "params": [ - { - "name": "page", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 100 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Contract" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "PUT", - "path": "/v1/api/grants/contracts", - "opId": "updatecontract", - "desc": "Updates a specific contract", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UpdateContractRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "POST", - "path": "/v1/api/grants/contracts/execute", - "opId": "executecontract", - "desc": "Execute the contract and lock the contractual version", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/ExecuteContractRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "GET", - "path": "/v1/api/grants/awards/{awardId}", - "opId": "getaward", - "desc": "Get award by ID", - "params": [ - { - "name": "awardId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Award" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "GET", - "path": "/v1/api/grants/budgets/{budgetId}", - "opId": "getbudget", - "desc": "Get budget by ID", - "params": [ - { - "name": "budgetId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Budget" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "GET", - "path": "/v1/api/grants/contracts/{contractId}", - "opId": "getcontract", - "desc": "Get contract by ID", - "params": [ - { - "name": "contractId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Contract" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "POST", - "path": "/v1/api/grants/contracts/{contractId}", - "opId": "uploadcontract", - "desc": "Uploads a contract file securely", - "params": [ - { - "name": "contractId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "GET", - "path": "/v1/api/grants/contracts/{contractId}/securelink", - "opId": "getcontracturl", - "desc": "Gets a secure download URL, has expiry period (default 15min)", - "params": [ - { - "name": "contractId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "string" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "POST", - "path": "/v1/api/governance/organisations", - "opId": "createorganisation", - "desc": "Create a new organization profile", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateOrganisationRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "GET", - "path": "/v1/api/governance/organisations", - "opId": "getorganisations", - "desc": "Get a paginated directory of organizations", - "params": [ - { - "name": "page", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 100 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Organisation" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "PUT", - "path": "/v1/api/governance/organisations", - "opId": "updateorganisation", - "desc": "Update an existing organization profile", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UpdateOrganisationRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "POST", - "path": "/v1/api/governance/organisations/portfolio", - "opId": "createportfolio", - "desc": "Create a new organization portfolio", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreatePortfolioRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "PUT", - "path": "/v1/api/governance/organisations/portfolio", - "opId": "updateportfolio", - "desc": "Update an existing organization portfolio", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UpdatePortfolioRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "GET", - "path": "/v1/api/governance/dashboard", - "opId": "dashboard", - "desc": "Get executive portfolio dashboard metrics and KPIs", - "params": [], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Dashboard" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "GET", - "path": "/v1/api/governance/instruments/{programmeId}", - "opId": "getinstruments", - "desc": "Get all funding instruments", - "params": [ - { - "name": "programmeId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Instrument" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "GET", - "path": "/v1/api/governance/organisations/{organisationId}", - "opId": "getorganisation", - "desc": "Get organization profile by ID", - "params": [ - { - "name": "organisationId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Organisation" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "GET", - "path": "/v1/api/governance/portfolios/{portfolioId}", - "opId": "getportfolio", - "desc": "Get a specific portfolios", - "params": [ - { - "name": "portfolioId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Portfolio" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Portfolio" + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } } } }, "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "GET", - "path": "/v1/api/governance/portfolios/{portfolioId}/programmes", - "opId": "getportfolioprogrammes", - "desc": "Get a programme's portfolios", - "params": [ - { - "name": "portfolioId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Programme" + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } } } }, "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "GET", - "path": "/v1/api/governance/organisations/{organisationId}/portfolio", - "opId": "getportfolios", - "desc": "Get all portfolios", - "params": [ - { - "name": "organisationId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Portfolio" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Governance", - "method": "GET", - "path": "/v1/api/governance/programmes/{portfolioId}", - "opId": "getprogrammes", - "desc": "Get all programmes", - "params": [ - { - "name": "portfolioId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Programme" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Execution", - "method": "POST", - "path": "/v1/api/execution/disbursements/{disbursementId}/approve", - "opId": "approvedisbursement", - "desc": "Approve disbursement and release payment (M06)", - "params": [ - { - "name": "disbursementId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Execution", - "method": "POST", - "path": "/v1/api/execution/disbursements", - "opId": "createdisbursement", - "desc": "Create a new disbursement schedule (M06)", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateDisbursementRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Execution", - "method": "GET", - "path": "/v1/api/execution/disbursements", - "opId": "getdisbursements", - "desc": "Get a list of disbursements", - "params": [ - { - "name": "page", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 10 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Disbursement" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Execution", - "method": "PUT", - "path": "/v1/api/execution/disbursements", - "opId": "updatedisbursement", - "desc": "Update the details of a specific disbursement", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UpdateDisbursementRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Execution", - "method": "POST", - "path": "/v1/api/execution/risks", - "opId": "createrisk", - "desc": "Add risk to risk register (M09)", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateRiskRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Execution", - "method": "GET", - "path": "/v1/api/execution/risks", - "opId": "getrisks", - "desc": "Get a list of all risks", - "params": [ - { - "name": "page", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "query", - "required": false, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": [ - "integer", - "string" - ], - "format": "int32", - "default": 100 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Execution", - "method": "PUT", - "path": "/v1/api/execution/risks", - "opId": "updaterisk", - "desc": "Update the details of a specific risk", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UpdateRiskRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Execution", - "method": "GET", - "path": "/v1/api/execution/disbursements/{disbursementId}", - "opId": "getdisbursement", - "desc": "Get a specific disbursement", - "params": [ - { - "name": "disbursementId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Disbursement" - } - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Execution", - "method": "GET", - "path": "/v1/api/execution/risks/{riskId}", - "opId": "getrisk", - "desc": "Get a specific risk", - "params": [ - { - "name": "riskId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Risk" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "PUT", - "path": "/v1/api/evidence/file", - "opId": "createevidence", - "desc": "Upload supporting evidence file to S3 and register metadata (M14)", - "params": [], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "POST", - "path": "/v1/api/evidence/indicators", - "opId": "createindicator", - "desc": "Define indicators and baselines/targets (M08)", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateIndicatorRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "POST", - "path": "/v1/api/evidence/milestones", - "opId": "createmilestonerequest", - "desc": "Define contractual milestones (M07)", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/CreateMilestoneRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "GET", - "path": "/v1/api/evidence/{evidenceId}", - "opId": "getevidence", - "desc": "Get a specific evidence record and assiciated file URLs", - "params": [ - { - "name": "evidenceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Evidence" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "GET", - "path": "/v1/api/evidence/files/{page}/{pageSize}", - "opId": "getevidencefiles", - "desc": "Get a list of all uploaded evidence files metadata", - "params": [ - { - "name": "page", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int32", - "default": 100 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Evidence" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Grants", - "method": "GET", - "path": "/v1/api/evidence/{evidenceId}/securelink", - "opId": "getevidenceurl", - "desc": "Gets a secure download URL of the evidence file, URL expires (default: 15min)", - "params": [ - { - "name": "evidenceId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "string" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": { - "type": "string" - } - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "GET", - "path": "/v1/api/evidence/indicators/{indicatorId}", - "opId": "getindicator", - "desc": "Get a specific indicator.", - "params": [ - { - "name": "indicatorId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Indicator" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "GET", - "path": "/v1/api/evidence/indicators/{page}/{pageSize}", - "opId": "getindicators", - "desc": "Get a list of indicators", - "params": [ - { - "name": "page", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int32", - "default": 1 - } - }, - { - "name": "pageSize", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int32", - "default": 100 - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Indicator" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "GET", - "path": "/v1/api/evidence/milestone/{milestoneId}", - "opId": "getmilestoneevidence", - "desc": "Get a list of all uploaded evidence metadata for a specific mliestone", - "params": [ - { - "name": "milestoneId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Evidence" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "GET", - "path": "/v1/api/evidence/{projectId}", - "opId": "getprojectevidence", - "desc": "Get a list of all uploaded evidence metadata for a specific project", - "params": [ - { - "name": "projectId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Evidence" - } - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "POST", - "path": "/v1/api/evidence/indicators/{indicatorId}/actuals/{actualAmount}", - "opId": "recordindicatoramount", - "desc": "Record actual values for indicators (M08)", - "params": [ - { - "name": "indicatorId", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "actualAmount", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", - "type": "number", - "format": "double" - } - } - ], - "reqBody": null, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - { - "tag": "Evidence & M&E", - "method": "PUT", - "path": "/v1/api/evidence", - "opId": "updateevidence", - "desc": "Updates a specific evidence record metadata", - "params": [], - "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/UpdateEvidenceRequest" - } - }, - "responses": { - "200": { - "desc": "OK", - "schema": null - }, - "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - }, - "401": { - "desc": "Unauthorized", - "schema": null - }, - "403": { - "desc": "Forbidden", - "schema": null - }, - "404": { - "desc": "Not Found", - "schema": null - }, - "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } + "description": "Unauthorized" } } }, { "tag": "Communications", "method": "GET", - "path": "/v1/api/communications/invites/applicant/{applicantUserId}", + "path": "/v1/api/communications/invites/applicants/{applicantUserId}", "opId": "getapplicantinvite", "desc": "Gets an applicant's invite", "params": [ @@ -3108,23 +72,29 @@ "reqBody": null, "responses": { "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Invite" + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Invite" + } + } } }, - "401": { - "desc": "Unauthorized", - "schema": null - }, "404": { - "desc": "Not Found", - "schema": null + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" }, "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } } } } @@ -3149,26 +119,32 @@ "reqBody": null, "responses": { "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Invite" + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Invite" + } + } } } }, - "401": { - "desc": "Unauthorized", - "schema": null - }, "404": { - "desc": "Not Found", - "schema": null + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" }, "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } } } } @@ -3206,61 +182,5523 @@ "reqBody": null, "responses": { "200": { - "desc": "OK", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Invite" + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Invite" + } + } } } }, "401": { - "desc": "Unauthorized", - "schema": null + "description": "Unauthorized" }, "500": { - "desc": "Internal Server Error", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } } } } }, { "tag": "Communications", - "method": "POST", - "path": "/v1/api/communications/invite", - "opId": "sendinvite", - "desc": "Trigger an invite to an organization or candidate (specifying NotificationPlatform)", + "method": "GET", + "path": "/v1/api/communications/norifications/{organisationId}", + "opId": "getnotifications", + "desc": "Retrieves the notification system report", + "params": [ + { + "name": "organisationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Evidence & M&E", + "method": "PUT", + "path": "/v1/api/evidence", + "opId": "updateevidence", + "desc": "Updates a specific evidence record metadata", "params": [], "reqBody": { - "required": true, - "contentType": "application/json; version=1", - "schema": { - "$ref": "#/components/schemas/InviteRequest" - } + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateEvidenceRequest" + } + } + }, + "required": true }, "responses": { "200": { - "desc": "OK", - "schema": { - "$ref": "#/components/schemas/Invite" - } + "description": "OK" + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" }, "400": { - "desc": "Bad Request", - "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Evidence & M&E", + "method": "PUT", + "path": "/v1/api/evidence/file", + "opId": "createevidence", + "desc": "Upload supporting evidence file to S3 and register metadata (M14)", + "params": [], + "reqBody": null, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } } }, "401": { - "desc": "Unauthorized", - "schema": null + "description": "Unauthorized" + } + } + }, + { + "tag": "Evidence & M&E", + "method": "GET", + "path": "/v1/api/evidence/files/{page}/{pageSize}", + "opId": "getevidencefiles", + "desc": "Get a list of all uploaded evidence files metadata", + "params": [ + { + "name": "page", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": "integer", + "format": "int32", + "default": 100 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Evidence" + } + } + } + } }, "500": { - "desc": "Internal Server Error", + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Evidence & M&E", + "method": "POST", + "path": "/v1/api/evidence/indicators", + "opId": "createindicator", + "desc": "Define indicators and baselines/targets (M08)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateIndicatorRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Evidence & M&E", + "method": "GET", + "path": "/v1/api/evidence/indicators/{indicatorId}", + "opId": "getindicator", + "desc": "Get a specific indicator.", + "params": [ + { + "name": "indicatorId", + "in": "path", + "required": true, "schema": { - "$ref": "#/components/schemas/ProblemDetails" + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Indicator" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Evidence & M&E", + "method": "POST", + "path": "/v1/api/evidence/indicators/{indicatorId}/actuals/{actualAmount}", + "opId": "recordindicatoramount", + "desc": "Record actual values for indicators (M08)", + "params": [ + { + "name": "indicatorId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "actualAmount", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": "number", + "format": "double" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Evidence & M&E", + "method": "GET", + "path": "/v1/api/evidence/indicators/{page}/{pageSize}", + "opId": "getindicators", + "desc": "Get a list of indicators", + "params": [ + { + "name": "page", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": "integer", + "format": "int32", + "default": 100 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Indicator" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Evidence & M&E", + "method": "GET", + "path": "/v1/api/evidence/milestone/{milestoneId}", + "opId": "getmilestoneevidence", + "desc": "Get a list of all uploaded evidence metadata for a specific mliestone", + "params": [ + { + "name": "milestoneId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Evidence" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Evidence & M&E", + "method": "POST", + "path": "/v1/api/evidence/milestones", + "opId": "createmilestonerequest", + "desc": "Define contractual milestones (M07)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateMilestoneRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Evidence & M&E", + "method": "GET", + "path": "/v1/api/evidence/{evidenceId}", + "opId": "getevidence", + "desc": "Get a specific evidence record and assiciated file URLs", + "params": [ + { + "name": "evidenceId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Evidence" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Grants", + "method": "GET", + "path": "/v1/api/evidence/{evidenceId}/securelink", + "opId": "getevidenceurl", + "desc": "Gets a secure download URL of the evidence file, URL expires (default: 15min)", + "params": [ + { + "name": "evidenceId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "string" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json; version=1": { + "schema": { + "type": "string" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Evidence & M&E", + "method": "GET", + "path": "/v1/api/evidence/{projectId}", + "opId": "getprojectevidence", + "desc": "Get a list of all uploaded evidence metadata for a specific project", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Evidence" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "POST", + "path": "/v1/api/execution/disbursements", + "opId": "createdisbursement", + "desc": "Create a new disbursement schedule (M06)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateDisbursementRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "GET", + "path": "/v1/api/execution/disbursements", + "opId": "getdisbursements", + "desc": "Get a list of disbursements", + "params": [ + { + "name": "page", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 10 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Disbursement" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "PUT", + "path": "/v1/api/execution/disbursements", + "opId": "updatedisbursement", + "desc": "Update the details of a specific disbursement", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateDisbursementRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Execution", + "method": "GET", + "path": "/v1/api/execution/disbursements/{disbursementId}", + "opId": "getdisbursement", + "desc": "Get a specific disbursement", + "params": [ + { + "name": "disbursementId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Disbursement" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "POST", + "path": "/v1/api/execution/disbursements/{disbursementId}/approve", + "opId": "approvedisbursement", + "desc": "Approve disbursement and release payment (M06)", + "params": [ + { + "name": "disbursementId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "POST", + "path": "/v1/api/execution/programmes/rules", + "opId": "getrules", + "desc": "Get a list of all programme rules", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Rule" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "POST", + "path": "/v1/api/execution/risks", + "opId": "createrisk", + "desc": "Add risk to risk register (M09)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateRiskRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "GET", + "path": "/v1/api/execution/risks", + "opId": "getrisks", + "desc": "Get a list of all risks", + "params": [ + { + "name": "page", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 100 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Risk" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "PUT", + "path": "/v1/api/execution/risks", + "opId": "updaterisk", + "desc": "Update the details of a specific risk", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateRiskRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "GET", + "path": "/v1/api/execution/risks/{riskId}", + "opId": "getrisk", + "desc": "Get a specific risk", + "params": [ + { + "name": "riskId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Risk" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "POST", + "path": "/v1/api/execution/rules", + "opId": "createrule", + "desc": "Add rule against a programme", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateRuleRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "PUT", + "path": "/v1/api/execution/rules", + "opId": "updaterule", + "desc": "Update the details of a specific programme rule (supplied version auto-increment)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateRuleRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Execution", + "method": "GET", + "path": "/v1/api/execution/rules/{ruleId}", + "opId": "getrule", + "desc": "Get a specific programme rule", + "params": [ + { + "name": "ruleId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Rule" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "POST", + "path": "/v1/api/governance/auditlog", + "opId": "getauditlogs", + "desc": "Retrieves audit logs based on pagination parameters", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AuditLog" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/dashboard", + "opId": "dashboard", + "desc": "Get executive portfolio dashboard metrics and KPIs", + "params": [], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Dashboard" + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "POST", + "path": "/v1/api/governance/instruments", + "opId": "createinstrument", + "desc": "Creates a new programme funding instrument", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateInstrumentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "PUT", + "path": "/v1/api/governance/instruments", + "opId": "updateinstrument", + "desc": "Updates a programme funding instrument", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateInstrumentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/instruments/{programmeId}", + "opId": "getinstruments", + "desc": "Get all funding instruments", + "params": [ + { + "name": "programmeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Instrument" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "POST", + "path": "/v1/api/governance/organisations", + "opId": "createorganisation", + "desc": "Create a new organization profile", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateOrganisationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/organisations", + "opId": "getorganisations", + "desc": "Get a paginated directory of organizations", + "params": [ + { + "name": "page", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 100 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Organisation" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Governance", + "method": "PUT", + "path": "/v1/api/governance/organisations", + "opId": "updateorganisation", + "desc": "Update an existing organization profile", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateOrganisationRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "POST", + "path": "/v1/api/governance/organisations/portfolio", + "opId": "createportfolio", + "desc": "Create a new organization portfolio", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreatePortfolioRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Governance", + "method": "PUT", + "path": "/v1/api/governance/organisations/portfolio", + "opId": "updateportfolio", + "desc": "Update an existing organization portfolio", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdatePortfolioRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "POST", + "path": "/v1/api/governance/organisations/portfolios", + "opId": "getportfolios", + "desc": "Get all portfolios", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Portfolio" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/organisations/{organisationId}", + "opId": "getorganisation", + "desc": "Get organization profile by ID", + "params": [ + { + "name": "organisationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Organisation" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/organisations/{organisationId}/portfolio", + "opId": "getorganisationportfolios", + "desc": "Get all portfolios belonging to a specific organisation", + "params": [ + { + "name": "organisationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Portfolio" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/portfolios/{portfolioId}", + "opId": "getportfolio", + "desc": "Get a specific portfolios", + "params": [ + { + "name": "portfolioId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Portfolio" + } + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Portfolio" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/portfolios/{portfolioId}/programmes", + "opId": "getportfolioprogrammes", + "desc": "Get a programme's portfolios", + "params": [ + { + "name": "portfolioId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Programme" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/portfolios/{portfolioId}/value", + "opId": "getporfoliovalue", + "desc": "Calculates and returns a portfolio's total project's budget value", + "params": [ + { + "name": "portfolioId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/programmes/{portfolioId}", + "opId": "getprogrammes", + "desc": "Get all programmes", + "params": [ + { + "name": "portfolioId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Programme" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/programmes/{programmeId}/value", + "opId": "getprogrammevalue", + "desc": "Calculates and returns a programme's total project budget value", + "params": [ + { + "name": "programmeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "POST", + "path": "/v1/api/governance/tenants", + "opId": "createtenant", + "desc": "Create a new tenant", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateTenantRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/tenants", + "opId": "gettenantsretrieval", + "desc": "Gets system tenants", + "params": [], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tenant" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "PUT", + "path": "/v1/api/governance/tenants", + "opId": "updatetenant", + "desc": "Updates a specific tenant", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Governance", + "method": "GET", + "path": "/v1/api/governance/tenants/{tenantId}", + "opId": "gettenants", + "desc": "Gets system tenants", + "params": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Tenant" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Grants", + "method": "POST", + "path": "/v1/api/grants/awards", + "opId": "createaward", + "desc": "Register an approved funding award (M01)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateAwardRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Grants", + "method": "GET", + "path": "/v1/api/grants/awards", + "opId": "getawards", + "desc": "Get a list of awards", + "params": [ + { + "name": "page", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 10 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Award" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Grants", + "method": "GET", + "path": "/v1/api/grants/awards/{awardId}", + "opId": "getaward", + "desc": "Get award by ID", + "params": [ + { + "name": "awardId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Award" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Grants", + "method": "POST", + "path": "/v1/api/grants/budgets", + "opId": "createbudget", + "desc": "Create a new budget line (M05)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateBudgetRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Grants", + "method": "GET", + "path": "/v1/api/grants/budgets", + "opId": "getbudgets", + "desc": "Get all budgets", + "params": [ + { + "name": "page", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 100 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Budget" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Governance", + "method": "PUT", + "path": "/v1/api/grants/budgets", + "opId": "updatebudget", + "desc": "Updates a specific budget", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateBudgetRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Grants", + "method": "GET", + "path": "/v1/api/grants/budgets/{budgetId}", + "opId": "getbudget", + "desc": "Get budget by ID", + "params": [ + { + "name": "budgetId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Budget" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Grants", + "method": "POST", + "path": "/v1/api/grants/contracts", + "opId": "createcontract", + "desc": "Create a contract record from an approved award (M02)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateContractRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Grants", + "method": "GET", + "path": "/v1/api/grants/contracts", + "opId": "getcontracts", + "desc": "Get all contracts", + "params": [ + { + "name": "page", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 100 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Contract" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Grants", + "method": "PUT", + "path": "/v1/api/grants/contracts", + "opId": "updatecontract", + "desc": "Updates a specific contract", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateContractRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Grants", + "method": "POST", + "path": "/v1/api/grants/contracts/execute", + "opId": "executecontract", + "desc": "Execute the contract and lock the contractual version", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ExecuteContractRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Grants", + "method": "GET", + "path": "/v1/api/grants/contracts/{contractId}", + "opId": "getcontract", + "desc": "Get contract by ID", + "params": [ + { + "name": "contractId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Contract" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Grants", + "method": "POST", + "path": "/v1/api/grants/contracts/{contractId}", + "opId": "uploadcontract", + "desc": "Uploads a contract file securely", + "params": [ + { + "name": "contractId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Grants", + "method": "GET", + "path": "/v1/api/grants/contracts/{contractId}/securelink", + "opId": "getcontracturl", + "desc": "Gets a secure download URL, has expiry period (default 15min)", + "params": [ + { + "name": "contractId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "string" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Users", + "method": "POST", + "path": "/v1/api/integration/sync", + "opId": "syncuser", + "desc": "Trigger integration and data synchronization in the background", + "params": [], + "reqBody": null, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "POST", + "path": "/v1/api/projects", + "opId": "createproject", + "desc": "Create a new project (M04)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateProjectRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects", + "opId": "getprojects", + "desc": "Get a list of projects", + "params": [ + { + "name": "page", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32", + "default": 100 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Project" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "PUT", + "path": "/v1/api/projects", + "opId": "updateproject", + "desc": "Update project details", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateProjectRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "POST", + "path": "/v1/api/projects/activities", + "opId": "createactivity", + "desc": "Add a new activity under project (M04)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateActivityRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/activities/{activityId}", + "opId": "getactivity", + "desc": "Gets a specific activity by it's id", + "params": [ + { + "name": "activityId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Activity" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "POST", + "path": "/v1/api/projects/beneficiaries", + "opId": "createbeneficiary", + "desc": "Add a new project beneficiary", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateBeneficiaryRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "PUT", + "path": "/v1/api/projects/beneficiaries", + "opId": "updatebeneficiary", + "desc": "Update project beneficiary", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateBeneficiaryRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/beneficiaries/{beneficiaryId}", + "opId": "getbeneficiaries", + "desc": "Gets project beneficiaries", + "params": [ + { + "name": "beneficiaryId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Beneficiary" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "POST", + "path": "/v1/api/projects/beneficiaris/outcomes", + "opId": "createoutcome", + "desc": "Add a new beneficiary outcome", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateOutcomeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "POST", + "path": "/v1/api/projects/changerequests", + "opId": "createchangerequest", + "desc": "Create a new change request against an existing project", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateChangeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "PUT", + "path": "/v1/api/projects/changerequests", + "opId": "updatechangerequest", + "desc": "Update a specific project change request", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateChangeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/changerequests/{changeRequestId}", + "opId": "getchangerequest", + "desc": "Gets a specific project change request", + "params": [ + { + "name": "changeRequestId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ChangeRequest" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "POST", + "path": "/v1/api/projects/complianceitems", + "opId": "createcomplianceitem", + "desc": "Add a new beneficiary compliance item", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateComplianceItemRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "PUT", + "path": "/v1/api/projects/complianceitems", + "opId": "updatecomplianceitem", + "desc": "Update a specific compliance item", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateComplianceItemRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/complianceitems/{complianceItemId}", + "opId": "getcomplianceitem", + "desc": "Gets a specific project compliance item", + "params": [ + { + "name": "complianceItemId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ComplianceItem" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/complianceitems/{projectId}", + "opId": "getcomplianceitems", + "desc": "Gets project compliance items", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComplianceItem" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/indicators/project/{projectId}", + "opId": "getprojectindicators", + "desc": "Get get a detailed list of project indicators", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Indicator" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "POST", + "path": "/v1/api/projects/issues", + "opId": "createissue", + "desc": "Add a new project issue", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateIssueRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "PUT", + "path": "/v1/api/projects/issues", + "opId": "updateissue", + "desc": "Update a specific project issue", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateIssueRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/issues/{issueId}", + "opId": "getissue", + "desc": "Gets a specific project issue", + "params": [ + { + "name": "issueId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Issue" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "PUT", + "path": "/v1/api/projects/milestone", + "opId": "updatemilestone", + "desc": "Update project milestone details", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateMilestoneRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/milestones/{milestoneId}", + "opId": "getmilestone", + "desc": "Gets a specific milestone", + "params": [ + { + "name": "milestoneId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Milestone" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/milestones/{page}/{pageSize}", + "opId": "getmilestones", + "desc": "Get a list of all milestones", + "params": [ + { + "name": "page", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": "integer", + "format": "int32", + "default": 100 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Milestone" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "PUT", + "path": "/v1/api/projects/outcomes", + "opId": "updateoutcome", + "desc": "Update project beneficiary outcome", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateOutcomeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/outcomes/{beneficiatyId}", + "opId": "getoutcomes", + "desc": "Gets project beneficiary outcomes", + "params": [ + { + "name": "beneficiatyId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Outcome" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/outcomes/{outcomeId}", + "opId": "getoutcome", + "desc": "Gets a specific project outcome", + "params": [ + { + "name": "outcomeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Outcome" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "POST", + "path": "/v1/api/projects/programme", + "opId": "createprogramme", + "desc": "Create programme", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateProgrammeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "PUT", + "path": "/v1/api/projects/programme", + "opId": "updateprogramme", + "desc": "Update existing programme", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateProgrammeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/programme/{page}/{pageSize}", + "opId": "getprogrammesprojects", + "desc": "Get a list of all programmes", + "params": [ + { + "name": "page", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": "integer", + "format": "int32", + "default": 100 + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Programme" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/programme/{programmeId}", + "opId": "getprogramme", + "desc": "Get specific programme", + "params": [ + { + "name": "programmeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Programme" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "POST", + "path": "/v1/api/projects/sitevisits", + "opId": "createsitevisit", + "desc": "Add a new project site visit", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateSiteVisitRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + } + }, + { + "tag": "Projects", + "method": "PUT", + "path": "/v1/api/projects/sitevisits", + "opId": "updatesitevisit", + "desc": "Update project site visit", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateSiteVisitRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/sitevisits/{siteVisitId}", + "opId": "getsitevisit", + "desc": "Gets project site visit", + "params": [ + { + "name": "siteVisitId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/SiteVisit" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "PUT", + "path": "/v1/api/projects/status", + "opId": "updateprojectstatus", + "desc": "Update project status (M04)", + "params": [], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateProjectStatusRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/{programmeId}/programme", + "opId": "getprogrammeprojects", + "desc": "Get a list of all projects under a programme", + "params": [ + { + "name": "programmeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Project" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/{projectId}", + "opId": "getproject", + "desc": "Get project by ID", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Project" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/{projectId}/activities", + "opId": "getactivities", + "desc": "Get a list of activities for a project", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Activity" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/{projectId}/beneficiaries", + "opId": "getbeneficiariesretrieval", + "desc": "Gets project beneficiaries", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Beneficiary" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/{projectId}/changerequests", + "opId": "getchangerequests", + "desc": "Gets project change requests", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChangeRequest" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/{projectId}/issues", + "opId": "getissues", + "desc": "Gets project issues", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Issue" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/{projectId}/milestones", + "opId": "getprojectmilestones", + "desc": "Get a list of milestones for a project", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Milestone" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/{projectId}/risks", + "opId": "getprojectrisks", + "desc": "Get a list of risks for a project", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Risk" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Projects", + "method": "GET", + "path": "/v1/api/projects/{projectId}/sitevisits", + "opId": "getsitevisits", + "desc": "Gets project site visits", + "params": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SiteVisit" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Users", + "method": "POST", + "path": "/v1/api/users/{page}/{pageSize}", + "opId": "getusers", + "desc": "Paginated, searchable directory of system users. Supports filtering by ActivityStatus, searching by Email, and sorting", + "params": [ + { + "name": "page", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "path", + "required": true, + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": "integer", + "format": "int32", + "default": 100 + } + } + ], + "reqBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UserFilterRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/User" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Users", + "method": "GET", + "path": "/v1/api/users/{userId}", + "opId": "getuser", + "desc": "Gets the metadata of a single user.", + "params": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/User" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + } + }, + { + "tag": "Users", + "method": "GET", + "path": "/v1/api/users/{userId}/status/{status}", + "opId": "updateuserstatus", + "desc": "Changes the Activity status of the user in the system", + "params": [ + { + "name": "userId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "status", + "in": "path", + "required": true, + "schema": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + ], + "reqBody": null, + "responses": { + "200": { + "description": "OK" + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } } } } diff --git a/PostFundManagement.ConsoleUI/openapi.json b/PostFundManagement.ConsoleUI/openapi.json index 423173e..67f9d4e 100644 --- a/PostFundManagement.ConsoleUI/openapi.json +++ b/PostFundManagement.ConsoleUI/openapi.json @@ -57,7 +57,7 @@ } }, "security": [ - { } + {} ] } }, @@ -134,7 +134,7 @@ } }, "security": [ - { } + {} ] } }, @@ -164,7 +164,7 @@ } }, "security": [ - { } + {} ] } }, @@ -226,69 +226,7 @@ } }, "security": [ - { } - ] - } - }, - "/v1/api/tools/hashid/{id64}": { - "get": { - "tags": [ - "Tools" - ], - "description": "Hashes an int64 identifier", - "operationId": "encodeid", - "parameters": [ - { - "name": "id64", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int64" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json; version=1": { - "schema": { - "type": "string" - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json; version=1": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json; version=1": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "security": [ - { } + {} ] } }, @@ -338,7 +276,452 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/beneficiaries": { + "post": { + "tags": [ + "Projects" + ], + "description": "Add a new project beneficiary", + "operationId": "createbeneficiary", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateBeneficiaryRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Projects" + ], + "description": "Update project beneficiary", + "operationId": "updatebeneficiary", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateBeneficiaryRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/changerequests": { + "post": { + "tags": [ + "Projects" + ], + "description": "Create a new change request against an existing project", + "operationId": "createchangerequest", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateChangeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Projects" + ], + "description": "Update a specific project change request", + "operationId": "updatechangerequest", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateChangeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/complianceitems": { + "post": { + "tags": [ + "Projects" + ], + "description": "Add a new beneficiary compliance item", + "operationId": "createcomplianceitem", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateComplianceItemRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Projects" + ], + "description": "Update a specific compliance item", + "operationId": "updatecomplianceitem", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateComplianceItemRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/issues": { + "post": { + "tags": [ + "Projects" + ], + "description": "Add a new project issue", + "operationId": "createissue", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateIssueRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Projects" + ], + "description": "Update a specific project issue", + "operationId": "updateissue", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateIssueRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/beneficiaris/outcomes": { + "post": { + "tags": [ + "Projects" + ], + "description": "Add a new beneficiary outcome", + "operationId": "createoutcome", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateOutcomeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + {} ] } }, @@ -384,7 +767,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -435,7 +818,7 @@ } }, "security": [ - { } + {} ] } }, @@ -488,7 +871,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -554,7 +937,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -602,7 +985,105 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/sitevisits": { + "post": { + "tags": [ + "Projects" + ], + "description": "Add a new project site visit", + "operationId": "createsitevisit", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateSiteVisitRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Projects" + ], + "description": "Update project site visit", + "operationId": "updatesitevisit", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateSiteVisitRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -655,7 +1136,7 @@ } }, "security": [ - { } + {} ] } }, @@ -708,7 +1189,443 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/{projectId}/beneficiaries": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project beneficiaries", + "operationId": "getbeneficiariesretrieval", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Beneficiary" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/beneficiaries/{beneficiaryId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project beneficiaries", + "operationId": "getbeneficiaries", + "parameters": [ + { + "name": "beneficiaryId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Beneficiary" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/changerequests/{changeRequestId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets a specific project change request", + "operationId": "getchangerequest", + "parameters": [ + { + "name": "changeRequestId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ChangeRequest" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/{projectId}/changerequests": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project change requests", + "operationId": "getchangerequests", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChangeRequest" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/complianceitems/{complianceItemId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets a specific project compliance item", + "operationId": "getcomplianceitem", + "parameters": [ + { + "name": "complianceItemId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ComplianceItem" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/complianceitems/{projectId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project compliance items", + "operationId": "getcomplianceitems", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComplianceItem" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/issues/{issueId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets a specific project issue", + "operationId": "getissue", + "parameters": [ + { + "name": "issueId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Issue" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/{projectId}/issues": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project issues", + "operationId": "getissues", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Issue" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -761,7 +1678,7 @@ } }, "security": [ - { } + {} ] } }, @@ -825,7 +1742,116 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/outcomes/{outcomeId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets a specific project outcome", + "operationId": "getoutcome", + "parameters": [ + { + "name": "outcomeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Outcome" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/outcomes/{beneficiatyId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project beneficiary outcomes", + "operationId": "getoutcomes", + "parameters": [ + { + "name": "beneficiatyId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Outcome" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -875,7 +1901,7 @@ } }, "security": [ - { } + {} ] } }, @@ -931,7 +1957,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1001,7 +2027,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1057,7 +2083,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1113,7 +2139,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1169,7 +2195,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1225,7 +2251,116 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/sitevisits/{siteVisitId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project site visit", + "operationId": "getsitevisit", + "parameters": [ + { + "name": "siteVisitId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/SiteVisit" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/{projectId}/sitevisits": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project site visits", + "operationId": "getsitevisits", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SiteVisit" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -1265,7 +2400,57 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/outcomes": { + "put": { + "tags": [ + "Projects" + ], + "description": "Update project beneficiary outcome", + "operationId": "updateoutcome", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateOutcomeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -1315,7 +2500,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1368,7 +2553,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -1434,7 +2619,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1487,7 +2672,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -1553,7 +2738,55 @@ } }, "security": [ - { } + {} + ] + }, + "put": { + "tags": [ + "Governance" + ], + "description": "Updates a specific budget", + "operationId": "updatebudget", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateBudgetRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -1603,7 +2836,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -1669,7 +2902,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -1720,7 +2953,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1770,7 +3003,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1823,7 +3056,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1876,7 +3109,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1929,7 +3162,7 @@ } }, "security": [ - { } + {} ] }, "post": { @@ -1973,7 +3206,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2026,7 +3259,105 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/governance/instruments": { + "post": { + "tags": [ + "Governance" + ], + "description": "Creates a new programme funding instrument", + "operationId": "createinstrument", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateInstrumentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Governance" + ], + "description": "Updates a programme funding instrument", + "operationId": "updateinstrument", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateInstrumentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -2076,7 +3407,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -2142,7 +3473,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -2165,8 +3496,11 @@ "200": { "description": "OK" }, - "404": { - "description": "Not Found" + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" }, "400": { "description": "Bad Request", @@ -2187,13 +3521,10 @@ } } } - }, - "401": { - "description": "Unauthorized" } }, "security": [ - { } + {} ] } }, @@ -2256,7 +3587,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -2310,7 +3641,143 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/governance/tenants": { + "post": { + "tags": [ + "Governance" + ], + "description": "Create a new tenant", + "operationId": "createtenant", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateTenantRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + }, + "get": { + "tags": [ + "Governance" + ], + "description": "Gets system tenants", + "operationId": "gettenantsretrieval", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tenant" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Governance" + ], + "description": "Updates a specific tenant", + "operationId": "updatetenant", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -2347,7 +3814,67 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/governance/auditlog": { + "post": { + "tags": [ + "Governance" + ], + "description": "Retrieves audit logs based on pagination parameters", + "operationId": "getauditlogs", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AuditLog" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -2400,7 +3927,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2453,7 +3980,125 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/governance/organisations/{organisationId}/portfolio": { + "get": { + "tags": [ + "Governance" + ], + "description": "Get all portfolios belonging to a specific organisation", + "operationId": "getorganisationportfolios", + "parameters": [ + { + "name": "organisationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Portfolio" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/governance/portfolios/{portfolioId}/value": { + "get": { + "tags": [ + "Governance" + ], + "description": "Calculates and returns a portfolio's total project's budget value", + "operationId": "getporfoliovalue", + "parameters": [ + { + "name": "portfolioId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -2519,7 +4164,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2575,27 +4220,27 @@ } }, "security": [ - { } + {} ] } }, - "/v1/api/governance/organisations/{organisationId}/portfolio": { - "get": { + "/v1/api/governance/organisations/portfolios": { + "post": { "tags": [ "Governance" ], "description": "Get all portfolios", "operationId": "getportfolios", - "parameters": [ - { - "name": "organisationId", - "in": "path", - "required": true, - "schema": { - "type": "string" + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", @@ -2628,7 +4273,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2681,7 +4326,132 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/governance/programmes/{programmeId}/value": { + "get": { + "tags": [ + "Governance" + ], + "description": "Calculates and returns a programme's total project budget value", + "operationId": "getprogrammevalue", + "parameters": [ + { + "name": "programmeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/governance/tenants/{tenantId}": { + "get": { + "tags": [ + "Governance" + ], + "description": "Gets system tenants", + "operationId": "gettenants", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Tenant" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -2734,7 +4504,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2787,7 +4557,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -2856,7 +4626,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -2904,7 +4674,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2957,7 +4727,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -2996,7 +4766,17 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Risk" + } + } + } + } }, "401": { "description": "Unauthorized" @@ -3013,7 +4793,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -3061,7 +4841,105 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/execution/rules": { + "post": { + "tags": [ + "Execution" + ], + "description": "Add rule against a programme", + "operationId": "createrule", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateRuleRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Execution" + ], + "description": "Update the details of a specific programme rule (supplied version auto-increment)", + "operationId": "updaterule", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateRuleRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -3121,7 +4999,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3171,7 +5049,107 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/execution/rules/{ruleId}": { + "get": { + "tags": [ + "Execution" + ], + "description": "Get a specific programme rule", + "operationId": "getrule", + "parameters": [ + { + "name": "ruleId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Rule" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/execution/programmes/rules": { + "post": { + "tags": [ + "Execution" + ], + "description": "Get a list of all programme rules", + "operationId": "getrules", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Rule" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -3211,7 +5189,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3264,7 +5242,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3314,7 +5292,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3367,7 +5345,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3431,7 +5409,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3491,7 +5469,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3544,7 +5522,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3608,7 +5586,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3664,7 +5642,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3720,7 +5698,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3783,7 +5761,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3839,11 +5817,11 @@ } }, "security": [ - { } + {} ] } }, - "/v1/api/communications/invites/applicant/{applicantUserId}": { + "/v1/api/communications/invites/applicants/{applicantUserId}": { "get": { "tags": [ "Communications" @@ -3890,7 +5868,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3944,7 +5922,7 @@ } }, "security": [ - { } + {} ] } }, @@ -4008,11 +5986,77 @@ } }, "security": [ - { } + {} ] } }, - "/v1/api/communications/invite": { + "/v1/api/communications/norifications/{organisationId}": { + "get": { + "tags": [ + "Communications" + ], + "description": "Retrieves the notification system report", + "operationId": "getnotifications", + "parameters": [ + { + "name": "organisationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/communications/invites": { "post": { "tags": [ "Communications" @@ -4065,7 +6109,7 @@ } }, "security": [ - { } + {} ] } } @@ -4083,6 +6127,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -4174,6 +6226,63 @@ "ApprovalStatus": { "type": "integer" }, + "AuditLog": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "null", + "integer", + "string" + ], + "format": "int64" + }, + "entityName": { + "type": [ + "null", + "string" + ] + }, + "entityId": { + "type": [ + "null", + "string" + ] + }, + "action": { + "type": [ + "null", + "string" + ] + }, + "changes": { + "type": [ + "null", + "array" + ], + "items": { + "type": "string" + } + }, + "performedBy": { + "type": "string", + "format": "uuid" + }, + "timestamp": { + "type": "string", + "format": "date-time" + } + } + }, "Award": { "type": "object", "properties": { @@ -4193,6 +6302,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "programmeId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -4252,6 +6369,81 @@ } } }, + "Beneficiary": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "userId": { + "type": "string", + "format": "uuid" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "category": { + "type": [ + "null", + "string" + ] + }, + "targetCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "reachedCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "location": { + "type": [ + "null", + "string" + ] + } + } + }, "Budget": { "type": "object", "properties": { @@ -4263,6 +6455,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -4306,6 +6506,157 @@ "string" ], "format": "double" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + } + } + }, + "ChangeRequest": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": [ + "null", + "string" + ] + }, + "justification": { + "type": [ + "null", + "string" + ] + }, + "revisedBudget": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "null", + "number", + "string" + ], + "format": "double" + }, + "revisedEndedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "approvedBy": { + "type": [ + "null", + "string" + ], + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + } + } + }, + "ComplianceItem": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": [ + "null", + "string" + ] + }, + "requirements": { + "type": [ + "null", + "string" + ] + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "verifiedBy": { + "type": [ + "null", + "string" + ], + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" } } }, @@ -4320,6 +6671,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "awardId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -4467,6 +6826,52 @@ } } }, + "CreateBeneficiaryRequest": { + "required": [ + "projectId", + "name", + "category", + "location", + "targetCount", + "reachedCount" + ], + "type": "object", + "properties": { + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "category": { + "type": "string" + }, + "location": { + "type": "string" + }, + "targetCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "reachedCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + } + } + }, "CreateBudgetRequest": { "required": [ "projectId", @@ -4496,6 +6901,68 @@ } } }, + "CreateChangeRequest": { + "required": [ + "projectId", + "title", + "justification", + "revisedBudget", + "revisionDate" + ], + "type": "object", + "properties": { + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "justification": { + "type": "string" + }, + "revisedBudget": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + }, + "revisionDate": { + "type": "string", + "format": "date-time" + } + } + }, + "CreateComplianceItemRequest": { + "required": [ + "projectId", + "title", + "requirements" + ], + "type": "object", + "properties": { + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "requirements": { + "type": "string" + } + } + }, "CreateContractRequest": { "required": [ "awardId", @@ -4608,6 +7075,67 @@ } } }, + "CreateInstrumentRequest": { + "required": [ + "programmeId", + "name", + "code", + "description" + ], + "type": "object", + "properties": { + "programmeId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "CreateIssueRequest": { + "required": [ + "projectId", + "title", + "description", + "priority", + "assignedTo" + ], + "type": "object", + "properties": { + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "$ref": "#/components/schemas/Priority" + }, + "assignedTo": { + "type": "string", + "format": "uuid" + } + } + }, "CreateMilestoneRequest": { "required": [ "projectId", @@ -4659,6 +7187,30 @@ } } }, + "CreateOutcomeRequest": { + "required": [ + "beneficiaryId", + "name", + "description" + ], + "type": "object", + "properties": { + "beneficiaryId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, "CreatePortfolioRequest": { "required": [ "name", @@ -4777,6 +7329,75 @@ } } }, + "CreateRuleRequest": { + "required": [ + "programmeId", + "userId", + "name", + "description" + ], + "type": "object", + "properties": { + "programmeId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "userId": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "CreateSiteVisitRequest": { + "required": [ + "projectId", + "inspectorName", + "findings", + "visitedAt" + ], + "type": "object", + "properties": { + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "inspectorName": { + "type": "string" + }, + "findings": { + "type": "string" + }, + "visitedAt": { + "type": "string", + "format": "date-time" + } + } + }, + "CreateTenantRequest": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, "Dashboard": { "required": [ "portfolioValue", @@ -4849,6 +7470,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -4912,6 +7541,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5026,6 +7663,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5098,6 +7743,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "programmeId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5148,6 +7801,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "organisationId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5264,6 +7925,81 @@ } } }, + "Issue": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": [ + "null", + "string" + ] + }, + "description": { + "type": [ + "null", + "string" + ] + }, + "priority": { + "$ref": "#/components/schemas/Priority" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "assignedTo": { + "type": [ + "null", + "string" + ], + "format": "uuid" + }, + "resolvedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "resolution": { + "type": [ + "null", + "string" + ] + } + } + }, "Milestone": { "type": "object", "properties": { @@ -5275,6 +8011,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5323,9 +8067,93 @@ } } }, + "Notification": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "organisationId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "recipient": { + "type": "string", + "format": "uuid" + }, + "platform": { + "$ref": "#/components/schemas/NotificationPlatform" + }, + "status": { + "$ref": "#/components/schemas/NotificationStatus" + }, + "subject": { + "type": [ + "null", + "string" + ] + }, + "message": { + "type": [ + "null", + "string" + ] + }, + "destination": { + "type": [ + "null", + "string" + ] + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "sentAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updatedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "error": { + "type": [ + "null", + "string" + ] + } + } + }, "NotificationPlatform": { "type": "integer" }, + "NotificationStatus": { + "type": "integer" + }, "Organisation": { "type": "object", "properties": { @@ -5375,6 +8203,84 @@ "type": "integer", "default": 5 }, + "Outcome": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "beneficiaryId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "description": { + "type": [ + "null", + "string" + ] + } + } + }, + "Pagination": { + "type": "object", + "properties": { + "index": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "page": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "pageSize": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + } + } + }, "Portfolio": { "type": "object", "properties": { @@ -5386,6 +8292,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "organisationId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5480,6 +8394,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "ownedBy": { "type": "string", "format": "uuid" @@ -5536,6 +8458,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "createdBy": { "type": "string", "format": "uuid" @@ -5609,6 +8539,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5651,9 +8589,334 @@ "RiskLikelihood": { "type": "integer" }, + "Rule": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "programmeId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "updatedBy": { + "type": [ + "null", + "string" + ], + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "description": { + "type": [ + "null", + "string" + ] + }, + "version": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + }, + "SiteVisit": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "visitedAt": { + "type": "string", + "format": "date-time" + }, + "inspectorName": { + "type": [ + "null", + "string" + ] + }, + "findings": { + "type": [ + "null", + "string" + ] + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "Tenant": { + "type": "object", + "properties": { + "creator": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/User" + } + ] + }, + "updator": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/User" + } + ] + }, + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "updatedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updatedBy": { + "type": [ + "null", + "string" + ], + "format": "uuid" + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + }, "UnitOfMeasure": { "type": "integer" }, + "UpdateBeneficiaryRequest": { + "required": [ + "beneficiaryId", + "name", + "category", + "location", + "targetCount", + "reachedCount" + ], + "type": "object", + "properties": { + "beneficiaryId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "category": { + "type": "string" + }, + "location": { + "type": "string" + }, + "targetCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "reachedCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + } + } + }, + "UpdateBudgetRequest": { + "required": [ + "budgetId", + "status" + ], + "type": "object", + "properties": { + "budgetId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + } + } + }, + "UpdateChangeRequest": { + "required": [ + "changeRequestId", + "title", + "justification", + "revisedBudget", + "status" + ], + "type": "object", + "properties": { + "changeRequestId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "justification": { + "type": "string" + }, + "revisedBudget": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + } + } + }, + "UpdateComplianceItemRequest": { + "required": [ + "complianceItemId", + "title", + "requirements", + "status" + ], + "type": "object", + "properties": { + "complianceItemId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "requirements": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + } + } + }, "UpdateContractRequest": { "required": [ "contractId", @@ -5742,6 +9005,87 @@ } } }, + "UpdateInstrumentRequest": { + "required": [ + "instructionId", + "name", + "code", + "description", + "status" + ], + "type": "object", + "properties": { + "instructionId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "code": { + "type": "string" + }, + "description": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + }, + "UpdateIssueRequest": { + "required": [ + "issueId", + "title", + "description", + "resolution", + "resolvedAt", + "priority", + "status", + "assignedTo" + ], + "type": "object", + "properties": { + "issueId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "resolution": { + "type": "string" + }, + "resolvedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "priority": { + "$ref": "#/components/schemas/Priority" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + }, + "assignedTo": { + "type": "string", + "format": "uuid" + } + } + }, "UpdateMilestoneRequest": { "required": [ "milestoneId", @@ -5781,7 +9125,8 @@ "name", "registrationNo", "email", - "type" + "type", + "status" ], "type": "object", "properties": { @@ -5804,6 +9149,33 @@ }, "type": { "$ref": "#/components/schemas/OrganisationType" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + }, + "UpdateOutcomeRequest": { + "required": [ + "outcomeId", + "name", + "description" + ], + "type": "object", + "properties": { + "outcomeId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" } } }, @@ -5965,6 +9337,105 @@ } } }, + "UpdateRuleRequest": { + "required": [ + "ruleId", + "userId", + "name", + "description", + "status", + "version" + ], + "type": "object", + "properties": { + "ruleId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "userId": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + }, + "version": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + } + } + }, + "UpdateSiteVisitRequest": { + "required": [ + "siteVisitId", + "inspectorName", + "findings", + "status", + "visitedAt" + ], + "type": "object", + "properties": { + "siteVisitId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "inspectorName": { + "type": "string" + }, + "findings": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + }, + "visitedAt": { + "type": "string", + "format": "date-time" + } + } + }, + "UpdateTenantRequest": { + "required": [ + "tenantId", + "name", + "status" + ], + "type": "object", + "properties": { + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + }, "User": { "type": "object", "properties": { @@ -6052,9 +9523,6 @@ { "name": "Users" }, - { - "name": "Tools" - }, { "name": "Projects" }, diff --git a/PostFundManagement.ConsoleUI/openapi_live.json b/PostFundManagement.ConsoleUI/openapi_live.json index 423173e..67f9d4e 100644 --- a/PostFundManagement.ConsoleUI/openapi_live.json +++ b/PostFundManagement.ConsoleUI/openapi_live.json @@ -57,7 +57,7 @@ } }, "security": [ - { } + {} ] } }, @@ -134,7 +134,7 @@ } }, "security": [ - { } + {} ] } }, @@ -164,7 +164,7 @@ } }, "security": [ - { } + {} ] } }, @@ -226,69 +226,7 @@ } }, "security": [ - { } - ] - } - }, - "/v1/api/tools/hashid/{id64}": { - "get": { - "tags": [ - "Tools" - ], - "description": "Hashes an int64 identifier", - "operationId": "encodeid", - "parameters": [ - { - "name": "id64", - "in": "path", - "required": true, - "schema": { - "pattern": "^-?(?:0|[1-9]\\d*)$", - "type": "integer", - "format": "int64" - } - } - ], - "responses": { - "200": { - "description": "OK", - "content": { - "application/json; version=1": { - "schema": { - "type": "string" - } - } - } - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "400": { - "description": "Bad Request", - "content": { - "application/json; version=1": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - }, - "500": { - "description": "Internal Server Error", - "content": { - "application/json; version=1": { - "schema": { - "$ref": "#/components/schemas/ProblemDetails" - } - } - } - } - }, - "security": [ - { } + {} ] } }, @@ -338,7 +276,452 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/beneficiaries": { + "post": { + "tags": [ + "Projects" + ], + "description": "Add a new project beneficiary", + "operationId": "createbeneficiary", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateBeneficiaryRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Projects" + ], + "description": "Update project beneficiary", + "operationId": "updatebeneficiary", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateBeneficiaryRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/changerequests": { + "post": { + "tags": [ + "Projects" + ], + "description": "Create a new change request against an existing project", + "operationId": "createchangerequest", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateChangeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Projects" + ], + "description": "Update a specific project change request", + "operationId": "updatechangerequest", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateChangeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/complianceitems": { + "post": { + "tags": [ + "Projects" + ], + "description": "Add a new beneficiary compliance item", + "operationId": "createcomplianceitem", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateComplianceItemRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Projects" + ], + "description": "Update a specific compliance item", + "operationId": "updatecomplianceitem", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateComplianceItemRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/issues": { + "post": { + "tags": [ + "Projects" + ], + "description": "Add a new project issue", + "operationId": "createissue", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateIssueRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Projects" + ], + "description": "Update a specific project issue", + "operationId": "updateissue", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateIssueRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/beneficiaris/outcomes": { + "post": { + "tags": [ + "Projects" + ], + "description": "Add a new beneficiary outcome", + "operationId": "createoutcome", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateOutcomeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + {} ] } }, @@ -384,7 +767,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -435,7 +818,7 @@ } }, "security": [ - { } + {} ] } }, @@ -488,7 +871,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -554,7 +937,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -602,7 +985,105 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/sitevisits": { + "post": { + "tags": [ + "Projects" + ], + "description": "Add a new project site visit", + "operationId": "createsitevisit", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateSiteVisitRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "401": { + "description": "Unauthorized" + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Projects" + ], + "description": "Update project site visit", + "operationId": "updatesitevisit", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateSiteVisitRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -655,7 +1136,7 @@ } }, "security": [ - { } + {} ] } }, @@ -708,7 +1189,443 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/{projectId}/beneficiaries": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project beneficiaries", + "operationId": "getbeneficiariesretrieval", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Beneficiary" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/beneficiaries/{beneficiaryId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project beneficiaries", + "operationId": "getbeneficiaries", + "parameters": [ + { + "name": "beneficiaryId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Beneficiary" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/changerequests/{changeRequestId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets a specific project change request", + "operationId": "getchangerequest", + "parameters": [ + { + "name": "changeRequestId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ChangeRequest" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/{projectId}/changerequests": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project change requests", + "operationId": "getchangerequests", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ChangeRequest" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/complianceitems/{complianceItemId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets a specific project compliance item", + "operationId": "getcomplianceitem", + "parameters": [ + { + "name": "complianceItemId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ComplianceItem" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/complianceitems/{projectId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project compliance items", + "operationId": "getcomplianceitems", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ComplianceItem" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/issues/{issueId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets a specific project issue", + "operationId": "getissue", + "parameters": [ + { + "name": "issueId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Issue" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/{projectId}/issues": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project issues", + "operationId": "getissues", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Issue" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -761,7 +1678,7 @@ } }, "security": [ - { } + {} ] } }, @@ -825,7 +1742,116 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/outcomes/{outcomeId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets a specific project outcome", + "operationId": "getoutcome", + "parameters": [ + { + "name": "outcomeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Outcome" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/outcomes/{beneficiatyId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project beneficiary outcomes", + "operationId": "getoutcomes", + "parameters": [ + { + "name": "beneficiatyId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Outcome" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -875,7 +1901,7 @@ } }, "security": [ - { } + {} ] } }, @@ -931,7 +1957,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1001,7 +2027,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1057,7 +2083,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1113,7 +2139,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1169,7 +2195,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1225,7 +2251,116 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/sitevisits/{siteVisitId}": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project site visit", + "operationId": "getsitevisit", + "parameters": [ + { + "name": "siteVisitId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/SiteVisit" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/projects/{projectId}/sitevisits": { + "get": { + "tags": [ + "Projects" + ], + "description": "Gets project site visits", + "operationId": "getsitevisits", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SiteVisit" + } + } + } + } + }, + "404": { + "description": "Not Found" + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -1265,7 +2400,57 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/projects/outcomes": { + "put": { + "tags": [ + "Projects" + ], + "description": "Update project beneficiary outcome", + "operationId": "updateoutcome", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateOutcomeRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -1315,7 +2500,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1368,7 +2553,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -1434,7 +2619,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1487,7 +2672,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -1553,7 +2738,55 @@ } }, "security": [ - { } + {} + ] + }, + "put": { + "tags": [ + "Governance" + ], + "description": "Updates a specific budget", + "operationId": "updatebudget", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateBudgetRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -1603,7 +2836,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -1669,7 +2902,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -1720,7 +2953,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1770,7 +3003,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1823,7 +3056,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1876,7 +3109,7 @@ } }, "security": [ - { } + {} ] } }, @@ -1929,7 +3162,7 @@ } }, "security": [ - { } + {} ] }, "post": { @@ -1973,7 +3206,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2026,7 +3259,105 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/governance/instruments": { + "post": { + "tags": [ + "Governance" + ], + "description": "Creates a new programme funding instrument", + "operationId": "createinstrument", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateInstrumentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Governance" + ], + "description": "Updates a programme funding instrument", + "operationId": "updateinstrument", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateInstrumentRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -2076,7 +3407,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -2142,7 +3473,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -2165,8 +3496,11 @@ "200": { "description": "OK" }, - "404": { - "description": "Not Found" + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" }, "400": { "description": "Bad Request", @@ -2187,13 +3521,10 @@ } } } - }, - "401": { - "description": "Unauthorized" } }, "security": [ - { } + {} ] } }, @@ -2256,7 +3587,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -2310,7 +3641,143 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/governance/tenants": { + "post": { + "tags": [ + "Governance" + ], + "description": "Create a new tenant", + "operationId": "createtenant", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateTenantRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + }, + "get": { + "tags": [ + "Governance" + ], + "description": "Gets system tenants", + "operationId": "gettenantsretrieval", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tenant" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Governance" + ], + "description": "Updates a specific tenant", + "operationId": "updatetenant", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -2347,7 +3814,67 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/governance/auditlog": { + "post": { + "tags": [ + "Governance" + ], + "description": "Retrieves audit logs based on pagination parameters", + "operationId": "getauditlogs", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AuditLog" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -2400,7 +3927,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2453,7 +3980,125 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/governance/organisations/{organisationId}/portfolio": { + "get": { + "tags": [ + "Governance" + ], + "description": "Get all portfolios belonging to a specific organisation", + "operationId": "getorganisationportfolios", + "parameters": [ + { + "name": "organisationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Portfolio" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/governance/portfolios/{portfolioId}/value": { + "get": { + "tags": [ + "Governance" + ], + "description": "Calculates and returns a portfolio's total project's budget value", + "operationId": "getporfoliovalue", + "parameters": [ + { + "name": "portfolioId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -2519,7 +4164,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2575,27 +4220,27 @@ } }, "security": [ - { } + {} ] } }, - "/v1/api/governance/organisations/{organisationId}/portfolio": { - "get": { + "/v1/api/governance/organisations/portfolios": { + "post": { "tags": [ "Governance" ], "description": "Get all portfolios", "operationId": "getportfolios", - "parameters": [ - { - "name": "organisationId", - "in": "path", - "required": true, - "schema": { - "type": "string" + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", @@ -2628,7 +4273,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2681,7 +4326,132 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/governance/programmes/{programmeId}/value": { + "get": { + "tags": [ + "Governance" + ], + "description": "Calculates and returns a programme's total project budget value", + "operationId": "getprogrammevalue", + "parameters": [ + { + "name": "programmeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/governance/tenants/{tenantId}": { + "get": { + "tags": [ + "Governance" + ], + "description": "Gets system tenants", + "operationId": "gettenants", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Tenant" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -2734,7 +4504,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2787,7 +4557,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -2856,7 +4626,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -2904,7 +4674,7 @@ } }, "security": [ - { } + {} ] } }, @@ -2957,7 +4727,7 @@ } }, "security": [ - { } + {} ] }, "get": { @@ -2996,7 +4766,17 @@ ], "responses": { "200": { - "description": "OK" + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Risk" + } + } + } + } }, "401": { "description": "Unauthorized" @@ -3013,7 +4793,7 @@ } }, "security": [ - { } + {} ] }, "put": { @@ -3061,7 +4841,105 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/execution/rules": { + "post": { + "tags": [ + "Execution" + ], + "description": "Add rule against a programme", + "operationId": "createrule", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/CreateRuleRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + }, + "put": { + "tags": [ + "Execution" + ], + "description": "Update the details of a specific programme rule (supplied version auto-increment)", + "operationId": "updaterule", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateRuleRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -3121,7 +4999,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3171,7 +5049,107 @@ } }, "security": [ - { } + {} + ] + } + }, + "/v1/api/execution/rules/{ruleId}": { + "get": { + "tags": [ + "Execution" + ], + "description": "Get a specific programme rule", + "operationId": "getrule", + "parameters": [ + { + "name": "ruleId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Rule" + } + } + } + }, + "404": { + "description": "Not Found" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/execution/programmes/rules": { + "post": { + "tags": [ + "Execution" + ], + "description": "Get a list of all programme rules", + "operationId": "getrules", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Rule" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} ] } }, @@ -3211,7 +5189,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3264,7 +5242,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3314,7 +5292,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3367,7 +5345,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3431,7 +5409,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3491,7 +5469,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3544,7 +5522,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3608,7 +5586,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3664,7 +5642,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3720,7 +5698,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3783,7 +5761,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3839,11 +5817,11 @@ } }, "security": [ - { } + {} ] } }, - "/v1/api/communications/invites/applicant/{applicantUserId}": { + "/v1/api/communications/invites/applicants/{applicantUserId}": { "get": { "tags": [ "Communications" @@ -3890,7 +5868,7 @@ } }, "security": [ - { } + {} ] } }, @@ -3944,7 +5922,7 @@ } }, "security": [ - { } + {} ] } }, @@ -4008,11 +5986,77 @@ } }, "security": [ - { } + {} ] } }, - "/v1/api/communications/invite": { + "/v1/api/communications/norifications/{organisationId}": { + "get": { + "tags": [ + "Communications" + ], + "description": "Retrieves the notification system report", + "operationId": "getnotifications", + "parameters": [ + { + "name": "organisationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "404": { + "description": "Not Found", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Notification" + } + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/communications/invites": { "post": { "tags": [ "Communications" @@ -4065,7 +6109,7 @@ } }, "security": [ - { } + {} ] } } @@ -4083,6 +6127,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -4174,6 +6226,63 @@ "ApprovalStatus": { "type": "integer" }, + "AuditLog": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "null", + "integer", + "string" + ], + "format": "int64" + }, + "entityName": { + "type": [ + "null", + "string" + ] + }, + "entityId": { + "type": [ + "null", + "string" + ] + }, + "action": { + "type": [ + "null", + "string" + ] + }, + "changes": { + "type": [ + "null", + "array" + ], + "items": { + "type": "string" + } + }, + "performedBy": { + "type": "string", + "format": "uuid" + }, + "timestamp": { + "type": "string", + "format": "date-time" + } + } + }, "Award": { "type": "object", "properties": { @@ -4193,6 +6302,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "programmeId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -4252,6 +6369,81 @@ } } }, + "Beneficiary": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "userId": { + "type": "string", + "format": "uuid" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "category": { + "type": [ + "null", + "string" + ] + }, + "targetCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "reachedCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "location": { + "type": [ + "null", + "string" + ] + } + } + }, "Budget": { "type": "object", "properties": { @@ -4263,6 +6455,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -4306,6 +6506,157 @@ "string" ], "format": "double" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + } + } + }, + "ChangeRequest": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": [ + "null", + "string" + ] + }, + "justification": { + "type": [ + "null", + "string" + ] + }, + "revisedBudget": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "null", + "number", + "string" + ], + "format": "double" + }, + "revisedEndedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "approvedBy": { + "type": [ + "null", + "string" + ], + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + } + } + }, + "ComplianceItem": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": [ + "null", + "string" + ] + }, + "requirements": { + "type": [ + "null", + "string" + ] + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "verifiedBy": { + "type": [ + "null", + "string" + ], + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" } } }, @@ -4320,6 +6671,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "awardId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -4467,6 +6826,52 @@ } } }, + "CreateBeneficiaryRequest": { + "required": [ + "projectId", + "name", + "category", + "location", + "targetCount", + "reachedCount" + ], + "type": "object", + "properties": { + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "category": { + "type": "string" + }, + "location": { + "type": "string" + }, + "targetCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "reachedCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + } + } + }, "CreateBudgetRequest": { "required": [ "projectId", @@ -4496,6 +6901,68 @@ } } }, + "CreateChangeRequest": { + "required": [ + "projectId", + "title", + "justification", + "revisedBudget", + "revisionDate" + ], + "type": "object", + "properties": { + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "justification": { + "type": "string" + }, + "revisedBudget": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + }, + "revisionDate": { + "type": "string", + "format": "date-time" + } + } + }, + "CreateComplianceItemRequest": { + "required": [ + "projectId", + "title", + "requirements" + ], + "type": "object", + "properties": { + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "requirements": { + "type": "string" + } + } + }, "CreateContractRequest": { "required": [ "awardId", @@ -4608,6 +7075,67 @@ } } }, + "CreateInstrumentRequest": { + "required": [ + "programmeId", + "name", + "code", + "description" + ], + "type": "object", + "properties": { + "programmeId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "CreateIssueRequest": { + "required": [ + "projectId", + "title", + "description", + "priority", + "assignedTo" + ], + "type": "object", + "properties": { + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "$ref": "#/components/schemas/Priority" + }, + "assignedTo": { + "type": "string", + "format": "uuid" + } + } + }, "CreateMilestoneRequest": { "required": [ "projectId", @@ -4659,6 +7187,30 @@ } } }, + "CreateOutcomeRequest": { + "required": [ + "beneficiaryId", + "name", + "description" + ], + "type": "object", + "properties": { + "beneficiaryId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, "CreatePortfolioRequest": { "required": [ "name", @@ -4777,6 +7329,75 @@ } } }, + "CreateRuleRequest": { + "required": [ + "programmeId", + "userId", + "name", + "description" + ], + "type": "object", + "properties": { + "programmeId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "userId": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + }, + "CreateSiteVisitRequest": { + "required": [ + "projectId", + "inspectorName", + "findings", + "visitedAt" + ], + "type": "object", + "properties": { + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "inspectorName": { + "type": "string" + }, + "findings": { + "type": "string" + }, + "visitedAt": { + "type": "string", + "format": "date-time" + } + } + }, + "CreateTenantRequest": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + }, "Dashboard": { "required": [ "portfolioValue", @@ -4849,6 +7470,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -4912,6 +7541,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5026,6 +7663,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5098,6 +7743,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "programmeId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5148,6 +7801,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "organisationId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5264,6 +7925,81 @@ } } }, + "Issue": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": [ + "null", + "string" + ] + }, + "description": { + "type": [ + "null", + "string" + ] + }, + "priority": { + "$ref": "#/components/schemas/Priority" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "assignedTo": { + "type": [ + "null", + "string" + ], + "format": "uuid" + }, + "resolvedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "resolution": { + "type": [ + "null", + "string" + ] + } + } + }, "Milestone": { "type": "object", "properties": { @@ -5275,6 +8011,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5323,9 +8067,93 @@ } } }, + "Notification": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "organisationId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "recipient": { + "type": "string", + "format": "uuid" + }, + "platform": { + "$ref": "#/components/schemas/NotificationPlatform" + }, + "status": { + "$ref": "#/components/schemas/NotificationStatus" + }, + "subject": { + "type": [ + "null", + "string" + ] + }, + "message": { + "type": [ + "null", + "string" + ] + }, + "destination": { + "type": [ + "null", + "string" + ] + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "sentAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updatedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "error": { + "type": [ + "null", + "string" + ] + } + } + }, "NotificationPlatform": { "type": "integer" }, + "NotificationStatus": { + "type": "integer" + }, "Organisation": { "type": "object", "properties": { @@ -5375,6 +8203,84 @@ "type": "integer", "default": 5 }, + "Outcome": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "beneficiaryId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "description": { + "type": [ + "null", + "string" + ] + } + } + }, + "Pagination": { + "type": "object", + "properties": { + "index": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "page": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "pageSize": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + } + } + }, "Portfolio": { "type": "object", "properties": { @@ -5386,6 +8292,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "organisationId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5480,6 +8394,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "ownedBy": { "type": "string", "format": "uuid" @@ -5536,6 +8458,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "createdBy": { "type": "string", "format": "uuid" @@ -5609,6 +8539,14 @@ ], "format": "int64" }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, "projectId": { "pattern": "^-?(?:0|[1-9]\\d*)$", "type": [ @@ -5651,9 +8589,334 @@ "RiskLikelihood": { "type": "integer" }, + "Rule": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "programmeId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "updatedBy": { + "type": [ + "null", + "string" + ], + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "description": { + "type": [ + "null", + "string" + ] + }, + "version": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + }, + "SiteVisit": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "projectId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "visitedAt": { + "type": "string", + "format": "date-time" + }, + "inspectorName": { + "type": [ + "null", + "string" + ] + }, + "findings": { + "type": [ + "null", + "string" + ] + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + } + }, + "Tenant": { + "type": "object", + "properties": { + "creator": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/User" + } + ] + }, + "updator": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/User" + } + ] + }, + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "createdBy": { + "type": "string", + "format": "uuid" + }, + "updatedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updatedBy": { + "type": [ + "null", + "string" + ], + "format": "uuid" + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + }, "UnitOfMeasure": { "type": "integer" }, + "UpdateBeneficiaryRequest": { + "required": [ + "beneficiaryId", + "name", + "category", + "location", + "targetCount", + "reachedCount" + ], + "type": "object", + "properties": { + "beneficiaryId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "category": { + "type": "string" + }, + "location": { + "type": "string" + }, + "targetCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + }, + "reachedCount": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + } + } + }, + "UpdateBudgetRequest": { + "required": [ + "budgetId", + "status" + ], + "type": "object", + "properties": { + "budgetId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + } + } + }, + "UpdateChangeRequest": { + "required": [ + "changeRequestId", + "title", + "justification", + "revisedBudget", + "status" + ], + "type": "object", + "properties": { + "changeRequestId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "justification": { + "type": "string" + }, + "revisedBudget": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + } + } + }, + "UpdateComplianceItemRequest": { + "required": [ + "complianceItemId", + "title", + "requirements", + "status" + ], + "type": "object", + "properties": { + "complianceItemId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "requirements": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + } + } + }, "UpdateContractRequest": { "required": [ "contractId", @@ -5742,6 +9005,87 @@ } } }, + "UpdateInstrumentRequest": { + "required": [ + "instructionId", + "name", + "code", + "description", + "status" + ], + "type": "object", + "properties": { + "instructionId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "code": { + "type": "string" + }, + "description": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + }, + "UpdateIssueRequest": { + "required": [ + "issueId", + "title", + "description", + "resolution", + "resolvedAt", + "priority", + "status", + "assignedTo" + ], + "type": "object", + "properties": { + "issueId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "resolution": { + "type": "string" + }, + "resolvedAt": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "priority": { + "$ref": "#/components/schemas/Priority" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + }, + "assignedTo": { + "type": "string", + "format": "uuid" + } + } + }, "UpdateMilestoneRequest": { "required": [ "milestoneId", @@ -5781,7 +9125,8 @@ "name", "registrationNo", "email", - "type" + "type", + "status" ], "type": "object", "properties": { @@ -5804,6 +9149,33 @@ }, "type": { "$ref": "#/components/schemas/OrganisationType" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + }, + "UpdateOutcomeRequest": { + "required": [ + "outcomeId", + "name", + "description" + ], + "type": "object", + "properties": { + "outcomeId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" } } }, @@ -5965,6 +9337,105 @@ } } }, + "UpdateRuleRequest": { + "required": [ + "ruleId", + "userId", + "name", + "description", + "status", + "version" + ], + "type": "object", + "properties": { + "ruleId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "userId": { + "type": "string", + "format": "uuid" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + }, + "version": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int32" + } + } + }, + "UpdateSiteVisitRequest": { + "required": [ + "siteVisitId", + "inspectorName", + "findings", + "status", + "visitedAt" + ], + "type": "object", + "properties": { + "siteVisitId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "inspectorName": { + "type": "string" + }, + "findings": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + }, + "visitedAt": { + "type": "string", + "format": "date-time" + } + } + }, + "UpdateTenantRequest": { + "required": [ + "tenantId", + "name", + "status" + ], + "type": "object", + "properties": { + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "name": { + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/ActivityStatus" + } + } + }, "User": { "type": "object", "properties": { @@ -6052,9 +9523,6 @@ { "name": "Users" }, - { - "name": "Tools" - }, { "name": "Projects" }, diff --git a/PostFundManagement.ConsoleUI/openapi_v1_latest.json b/PostFundManagement.ConsoleUI/openapi_v1_latest.json index 4c3c433..67f9d4e 100644 --- a/PostFundManagement.ConsoleUI/openapi_v1_latest.json +++ b/PostFundManagement.ConsoleUI/openapi_v1_latest.json @@ -1193,7 +1193,7 @@ ] } }, - "/v1/api/projects/beneficiaries/{projectId}": { + "/v1/api/projects/{projectId}/beneficiaries": { "get": { "tags": [ "Projects" @@ -1355,7 +1355,7 @@ ] } }, - "/v1/api/projects/changerequests/{projectId}": { + "/v1/api/projects/{projectId}/changerequests": { "get": { "tags": [ "Projects" @@ -1573,7 +1573,7 @@ ] } }, - "/v1/api/projects/issues/{projectId}": { + "/v1/api/projects/{projectId}/issues": { "get": { "tags": [ "Projects" @@ -2308,7 +2308,7 @@ ] } }, - "/v1/api/projects/sitevisits/{projectId}": { + "/v1/api/projects/{projectId}/sitevisits": { "get": { "tags": [ "Projects" @@ -2740,6 +2740,54 @@ "security": [ {} ] + }, + "put": { + "tags": [ + "Governance" + ], + "description": "Updates a specific budget", + "operationId": "updatebudget", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/UpdateBudgetRequest" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] } }, "/v1/api/grants/contracts": { @@ -3770,6 +3818,66 @@ ] } }, + "/v1/api/governance/auditlog": { + "post": { + "tags": [ + "Governance" + ], + "description": "Retrieves audit logs based on pagination parameters", + "operationId": "getauditlogs", + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AuditLog" + } + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, "/v1/api/governance/instruments/{programmeId}": { "get": { "tags": [ @@ -3876,6 +3984,124 @@ ] } }, + "/v1/api/governance/organisations/{organisationId}/portfolio": { + "get": { + "tags": [ + "Governance" + ], + "description": "Get all portfolios belonging to a specific organisation", + "operationId": "getorganisationportfolios", + "parameters": [ + { + "name": "organisationId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Portfolio" + } + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, + "/v1/api/governance/portfolios/{portfolioId}/value": { + "get": { + "tags": [ + "Governance" + ], + "description": "Calculates and returns a portfolio's total project's budget value", + "operationId": "getporfoliovalue", + "parameters": [ + { + "name": "portfolioId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, "/v1/api/governance/portfolios/{portfolioId}": { "get": { "tags": [ @@ -3998,23 +4224,23 @@ ] } }, - "/v1/api/governance/organisations/{organisationId}/portfolio": { - "get": { + "/v1/api/governance/organisations/portfolios": { + "post": { "tags": [ "Governance" ], "description": "Get all portfolios", "operationId": "getportfolios", - "parameters": [ - { - "name": "organisationId", - "in": "path", - "required": true, - "schema": { - "type": "string" + "requestBody": { + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/Pagination" + } } - } - ], + }, + "required": true + }, "responses": { "200": { "description": "OK", @@ -4104,6 +4330,71 @@ ] } }, + "/v1/api/governance/programmes/{programmeId}/value": { + "get": { + "tags": [ + "Governance" + ], + "description": "Calculates and returns a programme's total project budget value", + "operationId": "getprogrammevalue", + "parameters": [ + { + "name": "programmeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json; version=1": { + "schema": { + "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$", + "type": [ + "number", + "string" + ], + "format": "double" + } + } + } + }, + "403": { + "description": "Forbidden" + }, + "401": { + "description": "Unauthorized" + }, + "400": { + "description": "Bad Request", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + }, + "500": { + "description": "Internal Server Error", + "content": { + "application/json; version=1": { + "schema": { + "$ref": "#/components/schemas/ProblemDetails" + } + } + } + } + }, + "security": [ + {} + ] + } + }, "/v1/api/governance/tenants/{tenantId}": { "get": { "tags": [ @@ -5935,6 +6226,63 @@ "ApprovalStatus": { "type": "integer" }, + "AuditLog": { + "type": "object", + "properties": { + "id": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "tenantId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "null", + "integer", + "string" + ], + "format": "int64" + }, + "entityName": { + "type": [ + "null", + "string" + ] + }, + "entityId": { + "type": [ + "null", + "string" + ] + }, + "action": { + "type": [ + "null", + "string" + ] + }, + "changes": { + "type": [ + "null", + "array" + ], + "items": { + "type": "string" + } + }, + "performedBy": { + "type": "string", + "format": "uuid" + }, + "timestamp": { + "type": "string", + "format": "date-time" + } + } + }, "Award": { "type": "object", "properties": { @@ -6158,6 +6506,9 @@ "string" ], "format": "double" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" } } }, @@ -8481,6 +8832,26 @@ } } }, + "UpdateBudgetRequest": { + "required": [ + "budgetId", + "status" + ], + "type": "object", + "properties": { + "budgetId": { + "pattern": "^-?(?:0|[1-9]\\d*)$", + "type": [ + "integer", + "string" + ], + "format": "int64" + }, + "status": { + "$ref": "#/components/schemas/ApprovalStatus" + } + } + }, "UpdateChangeRequest": { "required": [ "changeRequestId", diff --git a/PostFundManagement.ConsoleUI/src/components/ui/ExportButton.tsx b/PostFundManagement.ConsoleUI/src/components/ui/ExportButton.tsx index f7cf4d5..79969f0 100644 --- a/PostFundManagement.ConsoleUI/src/components/ui/ExportButton.tsx +++ b/PostFundManagement.ConsoleUI/src/components/ui/ExportButton.tsx @@ -1,4 +1,5 @@ -import React, { useState, useRef, useEffect } from 'react'; +import React, { useState, useRef, useEffect, useCallback } from 'react'; +import { createPortal } from 'react-dom'; import { Download, FileSpreadsheet, FileText, ChevronDown } from 'lucide-react'; import { ExportColumn, exportToSpreadsheet, exportToPdf } from '../../utils/exportUtils'; import { useAuth } from '../../auth/AuthProvider'; @@ -25,24 +26,46 @@ export function ExportButton({ className = '', }: ExportButtonProps) { const [isOpen, setIsOpen] = useState(false); + const [menuPosition, setMenuPosition] = useState<{ top: number; right: number } | null>(null); const dropdownRef = useRef(null); + const menuRef = useRef(null); const { user, claims, tenantId } = useAuth(); const isDisabled = !data || data.length === 0; + const updatePosition = useCallback(() => { + if (!dropdownRef.current) return; + const rect = dropdownRef.current.getBoundingClientRect(); + setMenuPosition({ + top: rect.bottom + 8, + right: Math.max(16, window.innerWidth - rect.right), + }); + }, []); + useEffect(() => { function handleClickOutside(event: MouseEvent) { - if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { + const target = event.target as Node; + if ( + dropdownRef.current && + !dropdownRef.current.contains(target) && + (!menuRef.current || !menuRef.current.contains(target)) + ) { setIsOpen(false); } } + if (isOpen) { + updatePosition(); document.addEventListener('mousedown', handleClickOutside); + window.addEventListener('resize', updatePosition); + window.addEventListener('scroll', updatePosition, true); } return () => { document.removeEventListener('mousedown', handleClickOutside); + window.removeEventListener('resize', updatePosition); + window.removeEventListener('scroll', updatePosition, true); }; - }, [isOpen]); + }, [isOpen, updatePosition]); const handleExportSpreadsheet = () => { if (isDisabled) return; @@ -96,44 +119,56 @@ export function ExportButton({ - {isOpen && !isDisabled && ( -
-
- - Export Format ({data.length} items) - -
-
- + {isOpen && !isDisabled && menuPosition && typeof document !== 'undefined' && + createPortal( +
+
+ + Export Format ({data.length} items) + +
+
+ - -
-
- )} + +
+
, + document.body + ) + } ); } diff --git a/PostFundManagement.ConsoleUI/src/pages/BeneficiariesPage.tsx b/PostFundManagement.ConsoleUI/src/pages/BeneficiariesPage.tsx index 1b0934a..29d877a 100644 --- a/PostFundManagement.ConsoleUI/src/pages/BeneficiariesPage.tsx +++ b/PostFundManagement.ConsoleUI/src/pages/BeneficiariesPage.tsx @@ -494,31 +494,31 @@ export const BeneficiariesPage: React.FC = () => { -
+
- +
- - + + Beneficiary / Cohort - + Category - + Location - + Target Headcount - + Reached Headcount - - + + - + {loadingBens ? ( - + - - - - - + + -
Reach ProgressActionsReach ProgressActions
@@ -538,27 +538,27 @@ export const BeneficiariesPage: React.FC = () => { sortedBens.map((b) => { const prog = b.targetCount && b.targetCount > 0 ? Math.round(((b.reachedCount || 0) / b.targetCount) * 100) : 0; return ( -
+
{b.name}
+ {b.category || 'General'} +
{b.location || 'Not Specified'}
{(b.targetCount || 0).toLocaleString()}{(b.reachedCount || 0).toLocaleString()} + {(b.targetCount || 0).toLocaleString()}{(b.reachedCount || 0).toLocaleString()}
@@ -566,7 +566,7 @@ export const BeneficiariesPage: React.FC = () => { {prog}%
+