diff --git a/api/openapi/swagger-spec.json b/api/openapi/swagger-spec.json index c228426a7..371795f17 100644 --- a/api/openapi/swagger-spec.json +++ b/api/openapi/swagger-spec.json @@ -1,2627 +1,2635 @@ { "openapi": "3.0.0", "paths": { - "/api/awsCognitoConfig": { - "get": { - "operationId": "AuthController_getAwsCognitoConfig", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AwsCognitoConfig" - } - } - } - } - }, - "tags": [ - "auth" - ] - } - }, - "/api/attachment": { - "post": { - "operationId": "AttachmentController_create", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - }, - "projectId": { + "/api/awsCognitoConfig": { + "get": { + "operationId": "AuthController_getAwsCognitoConfig", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AwsCognitoConfig" + } + } + } + } + }, + "tags": [ + "auth" + ] + } + }, + "/api/attachment": { + "post": { + "operationId": "AttachmentController_create", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + }, + "projectId": { + "type": "number" + }, + "attachmentTypeCode": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "201": { + "description": "" + } + }, + "tags": [ + "attachment" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "AttachmentController_find", + "parameters": [ + { + "name": "projectId", + "required": true, + "in": "query", + "schema": { "type": "number" - }, - "attachmentTypeCode": { - "type": "string" - } - } + } } - } - } - }, - "responses": { - "201": { - "description": "" - } - }, - "tags": [ - "attachment" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "get": { - "operationId": "AttachmentController_find", - "parameters": [ - { - "name": "projectId", - "required": true, - "in": "query", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AttachmentResponse" - } - } - } - } - } - }, - "tags": [ - "attachment" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/attachment/file/{id}": { - "get": { - "operationId": "AttachmentController_getFileContents", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - } - }, - "tags": [ - "attachment" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/attachment/{id}": { - "get": { - "operationId": "AttachmentController_findOne", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttachmentResponse" - } - } - } - } - }, - "tags": [ - "attachment" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "delete": { - "operationId": "AttachmentController_remove", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "attachment" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/attachment-type-code": { - "get": { - "operationId": "AttachmentTypeCodeController_findAll", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AttachmentTypeCode" - } - } - } - } - } - }, - "tags": [ - "attachment" - ] - } - }, - "/api/interaction": { - "post": { - "operationId": "InteractionController_create", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - }, - "projectId": { + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttachmentResponse" + } + } + } + } + } + }, + "tags": [ + "attachment" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/attachment/file/{id}": { + "get": { + "operationId": "AttachmentController_getFileContents", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + }, + "tags": [ + "attachment" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/attachment/{id}": { + "get": { + "operationId": "AttachmentController_findOne", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AttachmentResponse" + } + } + } + } + }, + "tags": [ + "attachment" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "AttachmentController_remove", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "tags": [ + "attachment" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/attachment-type-code": { + "get": { + "operationId": "AttachmentTypeCodeController_findAll", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AttachmentTypeCode" + } + } + } + } + } + }, + "tags": [ + "attachment" + ] + } + }, + "/api/interaction": { + "post": { + "operationId": "InteractionController_create", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + }, + "projectId": { + "type": "number" + }, + "stakeholder": { + "type": "string" + }, + "communicationDate": { + "type": "string" + }, + "communicationDetails": { + "type": "string" + }, + "filename": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "201": { + "description": "" + } + }, + "tags": [ + "interaction" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "InteractionController_find", + "parameters": [ + { + "name": "projectId", + "required": true, + "in": "query", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InteractionResponse" + } + } + } + } + } + }, + "tags": [ + "interaction" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/interaction/{id}": { + "put": { + "operationId": "InteractionController_update", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "number" - }, - "stakeholder": { + } + } + ], + "requestBody": { + "required": true, + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "file": { + "type": "string", + "format": "binary" + }, + "projectId": { + "type": "number" + }, + "stakeholder": { + "type": "string" + }, + "communicationDate": { + "type": "string" + }, + "communicationDetails": { + "type": "string" + }, + "revisionCount": { + "type": "number" + }, + "filename": { + "type": "string" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InteractionResponse" + } + } + } + } + }, + "tags": [ + "interaction" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "InteractionController_remove", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "tags": [ + "interaction" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/project/publicSummary": { + "get": { + "operationId": "ProjectController_findPublicSummary", + "parameters": [ + { + "name": "projectId", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "includeCommentOpen", + "required": false, + "in": "query", + "schema": { "type": "string" - }, - "communicationDate": { + } + }, + { + "name": "includePostCommentOpen", + "required": false, + "in": "query", + "schema": { "type": "string" - }, - "communicationDetails": { + } + }, + { + "name": "forestClientName", + "required": false, + "in": "query", + "schema": { "type": "string" - }, - "filename": { + } + }, + { + "name": "openedOnOrAfter", + "required": false, + "in": "query", + "schema": { "type": "string" - } - } + } } - } - } - }, - "responses": { - "201": { - "description": "" - } - }, - "tags": [ - "interaction" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "get": { - "operationId": "InteractionController_find", - "parameters": [ - { - "name": "projectId", - "required": true, - "in": "query", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/InteractionResponse" - } - } - } - } - } - }, - "tags": [ - "interaction" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/interaction/{id}": { - "put": { - "operationId": "InteractionController_update", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "multipart/form-data": { - "schema": { - "type": "object", - "properties": { - "file": { - "type": "string", - "format": "binary" - }, - "projectId": { + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectPublicSummaryResponse" + } + } + } + } + } + }, + "tags": [ + "project" + ] + } + }, + "/api/project/{id}": { + "get": { + "operationId": "ProjectController_findOne", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "number" - }, - "stakeholder": { + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectResponse" + } + } + } + } + }, + "tags": [ + "project" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "put": { + "operationId": "ProjectController_update", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectUpdateRequest" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectResponse" + } + } + } + } + }, + "tags": [ + "project" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "ProjectController_remove", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "tags": [ + "project" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/project/metrics/{id}": { + "get": { + "operationId": "ProjectController_findProjectMetrics", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectMetricsResponse" + } + } + } + } + }, + "tags": [ + "project" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/project": { + "get": { + "operationId": "ProjectController_find", + "parameters": [ + { + "name": "fspId", + "required": false, + "in": "query", + "schema": { "type": "string" - }, - "communicationDate": { + } + }, + { + "name": "districtId", + "required": false, + "in": "query", + "schema": { "type": "string" - }, - "communicationDetails": { + } + }, + { + "name": "workflowStateCode", + "required": false, + "in": "query", + "schema": { "type": "string" - }, - "revisionCount": { + } + }, + { + "name": "forestClientName", + "required": false, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProjectResponse" + } + } + } + } + } + }, + "tags": [ + "project" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "post": { + "operationId": "ProjectController_create", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectCreateRequest" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectResponse" + } + } + } + } + }, + "tags": [ + "project" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/project/workflowState/{id}": { + "put": { + "operationId": "ProjectController_stateChange", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { "type": "number" - }, - "filename": { + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectWorkflowStateChangeRequest" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectResponse" + } + } + } + } + }, + "tags": [ + "project" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/project/commentClassification/{id}": { + "put": { + "operationId": "ProjectController_commentClassificationMandatoryChange", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectCommentClassificationMandatoryChangeRequest" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectResponse" + } + } + } + } + }, + "tags": [ + "project" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/project/commentingClosedDate/{id}": { + "put": { + "operationId": "ProjectController_commentingClosedDateChange", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProjectCommentingClosedDateChangeRequest" + } + } + } + }, + "responses": { + "200": { + "description": "" + } + }, + "tags": [ + "project" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/public-notice": { + "get": { + "operationId": "PublicNoticeController_findListForPublicFrontEnd", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PublicNoticePublicFrontEndResponse" + } + } + } + } + } + }, + "tags": [ + "public-notice" + ] + }, + "post": { + "operationId": "PublicNoticeController_create", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicNoticeCreateRequest" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicNoticeResponse" + } + } + } + } + }, + "tags": [ + "public-notice" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/public-notice/latest/{forestClientId}": { + "get": { + "operationId": "PublicNoticeController_findLatestPublicNotice", + "parameters": [ + { + "name": "forestClientId", + "required": true, + "in": "path", + "schema": { "type": "string" - } - } + } } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/InteractionResponse" - } - } - } - } - }, - "tags": [ - "interaction" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "delete": { - "operationId": "InteractionController_remove", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "interaction" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/project/publicSummary": { - "get": { - "operationId": "ProjectController_findPublicSummary", - "parameters": [ - { - "name": "includeCommentOpen", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "includePostCommentOpen", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "forestClientName", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "openedOnOrAfter", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProjectPublicSummaryResponse" - } - } - } - } - } - }, - "tags": [ - "project" - ] - } - }, - "/api/project/{id}": { - "get": { - "operationId": "ProjectController_findOne", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectResponse" - } - } - } - } - }, - "tags": [ - "project" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "put": { - "operationId": "ProjectController_update", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectUpdateRequest" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectResponse" - } - } - } - } - }, - "tags": [ - "project" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "delete": { - "operationId": "ProjectController_remove", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "project" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/project/metrics/{id}": { - "get": { - "operationId": "ProjectController_findProjectMetrics", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectMetricsResponse" - } - } - } - } - }, - "tags": [ - "project" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/project": { - "get": { - "operationId": "ProjectController_find", - "parameters": [ - { - "name": "fspId", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "districtId", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "workflowStateCode", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - }, - { - "name": "forestClientName", - "required": false, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProjectResponse" - } - } - } - } - } - }, - "tags": [ - "project" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "post": { - "operationId": "ProjectController_create", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectCreateRequest" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectResponse" - } - } - } - } - }, - "tags": [ - "project" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/project/workflowState/{id}": { - "put": { - "operationId": "ProjectController_stateChange", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectWorkflowStateChangeRequest" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectResponse" - } - } - } - } - }, - "tags": [ - "project" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/project/commentClassification/{id}": { - "put": { - "operationId": "ProjectController_commentClassificationMandatoryChange", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectCommentClassificationMandatoryChangeRequest" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectResponse" - } - } - } - } - }, - "tags": [ - "project" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/project/commentingClosedDate/{id}": { - "put": { - "operationId": "ProjectController_commentingClosedDateChange", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProjectCommentingClosedDateChangeRequest" - } - } - } - }, - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "project" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/public-notice": { - "get": { - "operationId": "PublicNoticeController_findListForPublicFrontEnd", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PublicNoticePublicFrontEndResponse" - } - } - } - } - } - }, - "tags": [ - "public-notice" - ] - }, - "post": { - "operationId": "PublicNoticeController_create", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PublicNoticeCreateRequest" - } - } - } - }, - "responses": { - "201": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PublicNoticeResponse" - } - } - } - } - }, - "tags": [ - "public-notice" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/public-notice/latest/{forestClientId}": { - "get": { - "operationId": "PublicNoticeController_findLatestPublicNotice", - "parameters": [ - { - "name": "forestClientId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PublicNoticeResponse" - } - } - } - } - }, - "tags": [ - "public-notice" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/public-notice/{id}": { - "get": { - "operationId": "PublicNoticeController_findOne", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PublicNoticeResponse" - } - } - } - } - }, - "tags": [ - "public-notice" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "put": { - "operationId": "PublicNoticeController_update", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PublicNoticeUpdateRequest" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PublicNoticeResponse" - } - } - } - } - }, - "tags": [ - "public-notice" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "delete": { - "operationId": "PublicNoticeController_remove", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "public-notice" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/workflow-state-code": { - "get": { - "operationId": "WorkflowStateCodeController_findAll", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/WorkflowStateCode" - } - } - } - } - } - }, - "tags": [ - "project" - ] - } - }, - "/api/district": { - "get": { - "operationId": "DistrictController_findAll", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DistrictResponse" - } - } - } - } - } - }, - "tags": [ - "district" - ] - } - }, - "/api/district/{id}": { - "get": { - "operationId": "DistrictController_findOne", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/DistrictResponse" - } - } - } - } - }, - "tags": [ - "district" - ] - } - }, - "/api/forest-client": { - "get": { - "operationId": "ForestClientController_find", - "parameters": [], - "responses": { - "200": { - "description": "Returns only forest clients that the user is authorized for.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ForestClientResponse" - } - } - } - } - } - }, - "tags": [ - "forest-client" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/forest-client/{id}": { - "get": { - "operationId": "ForestClientController_findOne", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ForestClientResponse" - } - } - } - } - }, - "tags": [ - "forest-client" - ] - } - }, - "/api/public-comment": { - "post": { - "operationId": "PublicCommentController_create", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PublicCommentCreateRequest" - } - } - } - }, - "responses": { - "201": { - "description": "" - } - }, - "tags": [ - "public-comment" - ] - }, - "get": { - "operationId": "PublicCommentController_find", - "parameters": [ - { - "name": "projectId", - "required": true, - "in": "query", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PublicCommentAdminResponse" - } - } - } - } - } - }, - "tags": [ - "public-comment" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/public-comment/{id}": { - "put": { - "operationId": "PublicCommentController_update", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PublicCommentAdminUpdateRequest" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PublicCommentAdminResponse" - } - } - } - } - }, - "tags": [ - "public-comment" - ], - "security": [ - { - "bearer": [] - } - ] - }, - "get": { - "operationId": "PublicCommentController_findOne", - "parameters": [ - { - "name": "id", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PublicCommentAdminResponse" - } - } - } - } - }, - "tags": [ - "public-comment" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/comment-scope-code": { - "get": { - "operationId": "CommentScopeCodeController_findAll", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CommentScopeCode" - } - } - } - } - } - }, - "tags": [ - "public-comment" - ] - } - }, - "/api/response-code": { - "get": { - "operationId": "ResponseCodeController_findAll", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ResponseCode" - } - } - } - } - } - }, - "tags": [ - "public-comment" - ] - } - }, - "/api/submission": { - "post": { - "operationId": "SubmissionController_processSpatialSubmission", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SubmissionRequest" - } - } - } - }, - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "submission" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/submission/detail/{projectId}": { - "get": { - "operationId": "SubmissionController_findSubmissionDetailForCurrentSubmissionType", - "parameters": [ - { - "name": "projectId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SubmissionDetailResponse" - } - } - } - } - }, - "tags": [ - "submission" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/submission/{submissionId}": { - "delete": { - "operationId": "SubmissionController_removeSpatialSubmissionByType", - "parameters": [ - { - "name": "submissionId", - "required": true, - "in": "path", - "schema": { - "type": "number" - } - }, - { - "name": "spatialObjectCode", - "required": true, - "in": "query", - "schema": { - "enum": [ - "CUT_BLOCK", - "ROAD_SECTION", - "WTRA" - ], - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "tags": [ - "submission" - ], - "security": [ - { - "bearer": [] - } - ] - } - }, - "/api/submission-type-code": { - "get": { - "operationId": "SubmissionTypeCodeController_findAll", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SubmissionTypeCode" - } - } - } - } - } - }, - "tags": [ - "submission" - ] - } - }, - "/api/spatial-feature": { - "get": { - "operationId": "SpatialFeatureController_getForProject", - "parameters": [ - { - "name": "projectId", - "required": true, - "in": "query", - "schema": { - "type": "number" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SpatialFeaturePublicResponse" - } - } - } - } - } - }, - "tags": [ - "spatial-feature" - ] - } - }, - "/api/spatial-feature/bcgw-extract": { - "get": { - "operationId": "SpatialFeatureController_getBcgwExtract", - "parameters": [ - { - "name": "version", - "required": true, - "in": "query", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SpatialFeatureBcgwResponse" - } - } - } - } - } - }, - "tags": [ - "spatial-feature" - ] - } - } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicNoticeResponse" + } + } + } + } + }, + "tags": [ + "public-notice" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/public-notice/{id}": { + "get": { + "operationId": "PublicNoticeController_findOne", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicNoticeResponse" + } + } + } + } + }, + "tags": [ + "public-notice" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "put": { + "operationId": "PublicNoticeController_update", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicNoticeUpdateRequest" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicNoticeResponse" + } + } + } + } + }, + "tags": [ + "public-notice" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "PublicNoticeController_remove", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "tags": [ + "public-notice" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/workflow-state-code": { + "get": { + "operationId": "WorkflowStateCodeController_findAll", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/WorkflowStateCode" + } + } + } + } + } + }, + "tags": [ + "project" + ] + } + }, + "/api/district": { + "get": { + "operationId": "DistrictController_findAll", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DistrictResponse" + } + } + } + } + } + }, + "tags": [ + "district" + ] + } + }, + "/api/district/{id}": { + "get": { + "operationId": "DistrictController_findOne", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DistrictResponse" + } + } + } + } + }, + "tags": [ + "district" + ] + } + }, + "/api/forest-client": { + "get": { + "operationId": "ForestClientController_find", + "parameters": [], + "responses": { + "200": { + "description": "Returns only forest clients that the user is authorized for.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ForestClientResponse" + } + } + } + } + } + }, + "tags": [ + "forest-client" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/forest-client/{id}": { + "get": { + "operationId": "ForestClientController_findOne", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ForestClientResponse" + } + } + } + } + }, + "tags": [ + "forest-client" + ] + } + }, + "/api/public-comment": { + "post": { + "operationId": "PublicCommentController_create", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicCommentCreateRequest" + } + } + } + }, + "responses": { + "201": { + "description": "" + } + }, + "tags": [ + "public-comment" + ] + }, + "get": { + "operationId": "PublicCommentController_find", + "parameters": [ + { + "name": "projectId", + "required": true, + "in": "query", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PublicCommentAdminResponse" + } + } + } + } + } + }, + "tags": [ + "public-comment" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/public-comment/{id}": { + "put": { + "operationId": "PublicCommentController_update", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicCommentAdminUpdateRequest" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicCommentAdminResponse" + } + } + } + } + }, + "tags": [ + "public-comment" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "get": { + "operationId": "PublicCommentController_findOne", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublicCommentAdminResponse" + } + } + } + } + }, + "tags": [ + "public-comment" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/comment-scope-code": { + "get": { + "operationId": "CommentScopeCodeController_findAll", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CommentScopeCode" + } + } + } + } + } + }, + "tags": [ + "public-comment" + ] + } + }, + "/api/response-code": { + "get": { + "operationId": "ResponseCodeController_findAll", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ResponseCode" + } + } + } + } + } + }, + "tags": [ + "public-comment" + ] + } + }, + "/api/submission": { + "post": { + "operationId": "SubmissionController_processSpatialSubmission", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubmissionRequest" + } + } + } + }, + "responses": { + "200": { + "description": "" + } + }, + "tags": [ + "submission" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/submission/detail/{projectId}": { + "get": { + "operationId": "SubmissionController_findSubmissionDetailForCurrentSubmissionType", + "parameters": [ + { + "name": "projectId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubmissionDetailResponse" + } + } + } + } + }, + "tags": [ + "submission" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/submission/{submissionId}": { + "delete": { + "operationId": "SubmissionController_removeSpatialSubmissionByType", + "parameters": [ + { + "name": "submissionId", + "required": true, + "in": "path", + "schema": { + "type": "number" + } + }, + { + "name": "spatialObjectCode", + "required": true, + "in": "query", + "schema": { + "enum": [ + "CUT_BLOCK", + "ROAD_SECTION", + "WTRA" + ], + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "tags": [ + "submission" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/api/submission-type-code": { + "get": { + "operationId": "SubmissionTypeCodeController_findAll", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SubmissionTypeCode" + } + } + } + } + } + }, + "tags": [ + "submission" + ] + } + }, + "/api/spatial-feature": { + "get": { + "operationId": "SpatialFeatureController_getForProject", + "parameters": [ + { + "name": "projectId", + "required": true, + "in": "query", + "schema": { + "type": "number" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SpatialFeaturePublicResponse" + } + } + } + } + } + }, + "tags": [ + "spatial-feature" + ] + } + }, + "/api/spatial-feature/bcgw-extract": { + "get": { + "operationId": "SpatialFeatureController_getBcgwExtract", + "parameters": [ + { + "name": "version", + "required": true, + "in": "query", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SpatialFeatureBcgwResponse" + } + } + } + } + } + }, + "tags": [ + "spatial-feature" + ] + } + } }, "info": { - "title": "FOM API", - "description": "API for FOM backend", - "version": "1.0", - "contact": {} + "title": "FOM API", + "description": "API for FOM backend", + "version": "1.0", + "contact": {} }, "tags": [], "servers": [], "components": { - "securitySchemes": { - "bearer": { - "scheme": "bearer", - "bearerFormat": "JWT", - "type": "http" - } - }, - "schemas": { - "AwsCognitoOauthConfig": { - "type": "object", - "properties": { - "domain": { - "type": "string" - }, - "scope": { - "type": "array", - "items": { - "type": "string" - } - }, - "redirectSignIn": { - "type": "string" - }, - "redirectSignOut": { - "type": "string" - }, - "responseType": { - "type": "string" - } - }, - "required": [ - "domain", - "scope", - "redirectSignIn", - "redirectSignOut", - "responseType" - ] - }, - "AwsCognitoConfig": { - "type": "object", - "properties": { - "enabled": { - "type": "boolean" - }, - "aws_cognito_domain": { - "type": "string" - }, - "aws_cognito_region": { - "type": "string" - }, - "aws_user_pools_id": { - "type": "string" - }, - "aws_user_pools_web_client_id": { - "type": "string" - }, - "aws_mandatory_sign_in": { - "type": "string" - }, - "oauth": { - "$ref": "#/components/schemas/AwsCognitoOauthConfig" - }, - "federationTarget": { - "type": "string" - } - }, - "required": [ - "enabled", - "aws_cognito_domain", - "aws_cognito_region", - "aws_user_pools_id", - "aws_user_pools_web_client_id", - "aws_mandatory_sign_in", - "oauth", - "federationTarget" - ] - }, - "AttachmentTypeCode": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "code", - "description" - ] - }, - "AttachmentResponse": { - "type": "object", - "properties": { - "id": { - "type": "number" - }, - "projectId": { - "type": "number" - }, - "fileName": { - "type": "string" - }, - "attachmentType": { - "$ref": "#/components/schemas/AttachmentTypeCode" - }, - "createTimestamp": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "id", - "projectId", - "fileName", - "attachmentType", - "createTimestamp" - ] - }, - "InteractionResponse": { - "type": "object", - "properties": { - "projectId": { - "type": "number" - }, - "stakeholder": { - "type": "string" - }, - "communicationDate": { - "type": "string" - }, - "communicationDetails": { - "type": "string" - }, - "attachmentId": { - "type": "number" - }, - "id": { - "type": "number" - }, - "revisionCount": { - "type": "number" - }, - "createTimestamp": { - "type": "string", - "description": "ISO-formatted timestamp" - } - }, - "required": [ - "projectId", - "communicationDate", - "communicationDetails", - "id", - "revisionCount", - "createTimestamp" - ] - }, - "ProjectPublicSummaryResponse": { - "type": "object", - "properties": { - "id": { - "type": "number" - }, - "name": { - "type": "string" - }, - "geojson": { - "type": "object", - "example": " { \"type\": \"Point\", \"coordinates\": [-119.396071939, 49.813816629]}" - }, - "fspId": { - "type": "number" - }, - "forestClientName": { - "type": "string" - }, - "workflowStateName": { - "type": "string" - } - }, - "required": [ - "id", - "name", - "geojson", - "fspId", - "forestClientName", - "workflowStateName" - ] - }, - "DistrictResponse": { - "type": "object", - "properties": { - "id": { - "type": "number" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "ForestClientResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name" - ] - }, - "WorkflowStateCode": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "code", - "description" - ] - }, - "ProjectResponse": { - "type": "object", - "properties": { - "id": { - "type": "number" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "commentingOpenDate": { - "type": "string", - "description": "ISO-formatted date" - }, - "commentingClosedDate": { - "type": "string", - "description": "ISO-formatted date" - }, - "validityEndDate": { - "type": "string", - "description": "ISO-formatted date" - }, - "fspId": { - "type": "number" - }, - "district": { - "$ref": "#/components/schemas/DistrictResponse" - }, - "forestClient": { - "$ref": "#/components/schemas/ForestClientResponse" - }, - "workflowState": { - "$ref": "#/components/schemas/WorkflowStateCode" - }, - "revisionCount": { - "type": "number" - }, - "createTimestamp": { - "type": "string", - "description": "ISO-formatted timestamp" - }, - "commentClassificationMandatory": { - "type": "boolean", - "default": true - }, - "publicNoticeId": { - "type": "number" - }, - "noticePostDate": { - "type": "string" - }, - "operationStartYear": { - "type": "number" - }, - "operationEndYear": { - "type": "number" - }, - "bctsMgrName": { - "type": "string" - } - }, - "required": [ - "id", - "name", - "description", - "commentingOpenDate", - "commentingClosedDate", - "validityEndDate", - "fspId", - "district", - "forestClient", - "workflowState", - "revisionCount", - "createTimestamp", - "commentClassificationMandatory", - "publicNoticeId", - "noticePostDate", - "operationStartYear", - "operationEndYear", - "bctsMgrName" - ] - }, - "ProjectMetricsResponse": { - "type": "object", - "properties": { - "id": { - "type": "number" - }, - "totalInteractionsCount": { - "type": "number" - }, - "totalCommentsCount": { - "type": "number" - }, - "respondedToCommentsCount": { - "type": "number" - } - }, - "required": [ - "id", - "totalInteractionsCount", - "totalCommentsCount", - "respondedToCommentsCount" - ] - }, - "ProjectCreateRequest": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "commentingOpenDate": { - "type": "string", - "description": "ISO-formatted date" - }, - "commentingClosedDate": { - "type": "string", - "description": "ISO-formatted date" - }, - "forestClientNumber": { - "type": "string" - }, - "fspId": { - "type": "number" - }, - "districtId": { - "type": "number" - }, - "operationStartYear": { - "type": "number" - }, - "operationEndYear": { - "type": "number" - }, - "bctsMgrName": { - "type": "string" - } - }, - "required": [ - "name", - "description", - "commentingOpenDate", - "commentingClosedDate", - "forestClientNumber", - "fspId", - "districtId", - "operationStartYear", - "operationEndYear", - "bctsMgrName" - ] - }, - "ProjectUpdateRequest": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "commentingOpenDate": { - "type": "string", - "description": "ISO-formatted date" - }, - "commentingClosedDate": { - "type": "string", - "description": "ISO-formatted date" - }, - "fspId": { - "type": "number" - }, - "districtId": { - "type": "number" - }, - "operationStartYear": { - "type": "number" - }, - "operationEndYear": { - "type": "number" - }, - "bctsMgrName": { - "type": "string" - }, - "revisionCount": { - "type": "number" - } - }, - "required": [ - "revisionCount" - ] - }, - "WorkflowStateEnum": { - "type": "string", - "enum": [ - "INITIAL", - "PUBLISHED", - "COMMENT_OPEN", - "COMMENT_CLOSED", - "FINALIZED", - "EXPIRED" - ] - }, - "ProjectWorkflowStateChangeRequest": { - "type": "object", - "properties": { - "revisionCount": { - "type": "number" - }, - "workflowStateCode": { - "$ref": "#/components/schemas/WorkflowStateEnum" - } - }, - "required": [ - "revisionCount", - "workflowStateCode" - ] - }, - "ProjectCommentClassificationMandatoryChangeRequest": { - "type": "object", - "properties": { - "commentClassificationMandatory": { - "type": "boolean" - }, - "revisionCount": { - "type": "number" - } - }, - "required": [ - "commentClassificationMandatory", - "revisionCount" - ] - }, - "ProjectCommentingClosedDateChangeRequest": { - "type": "object", - "properties": { - "commentingClosedDate": { - "type": "string", - "description": "ISO-formatted date" - }, - "revisionCount": { - "type": "number" - } - }, - "required": [ - "commentingClosedDate", - "revisionCount" - ] - }, - "PublicNoticePublicFrontEndResponse": { - "type": "object", - "properties": { - "projectId": { - "type": "number" - }, - "reviewAddress": { - "type": "string" - }, - "reviewBusinessHours": { - "type": "string" - }, - "receiveCommentsAddress": { - "type": "string" - }, - "receiveCommentsBusinessHours": { - "type": "string" - }, - "isReceiveCommentsSameAsReview": { - "type": "boolean" - }, - "mailingAddress": { - "type": "string" - }, - "email": { - "type": "string" - }, - "postDate": { - "type": "string", - "description": "Date planed for online public notice posted." - }, - "project": { - "$ref": "#/components/schemas/ProjectResponse" - } - }, - "required": [ - "projectId", - "reviewAddress", - "reviewBusinessHours", - "receiveCommentsAddress", - "receiveCommentsBusinessHours", - "isReceiveCommentsSameAsReview", - "mailingAddress", - "email", - "postDate", - "project" - ] - }, - "PublicNoticeResponse": { - "type": "object", - "properties": { - "projectId": { - "type": "number" - }, - "reviewAddress": { - "type": "string" - }, - "reviewBusinessHours": { - "type": "string" - }, - "receiveCommentsAddress": { - "type": "string" - }, - "receiveCommentsBusinessHours": { - "type": "string" - }, - "isReceiveCommentsSameAsReview": { - "type": "boolean" - }, - "mailingAddress": { - "type": "string" - }, - "email": { - "type": "string" - }, - "postDate": { - "type": "string", - "description": "Date planed for online public notice posted." - }, - "revisionCount": { - "type": "number" - }, - "id": { - "type": "number" - } - }, - "required": [ - "projectId", - "reviewAddress", - "reviewBusinessHours", - "receiveCommentsAddress", - "receiveCommentsBusinessHours", - "isReceiveCommentsSameAsReview", - "mailingAddress", - "email", - "postDate", - "revisionCount", - "id" - ] - }, - "PublicNoticeCreateRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "number" - }, - "reviewAddress": { - "type": "string" - }, - "reviewBusinessHours": { - "type": "string" - }, - "receiveCommentsAddress": { - "type": "string" - }, - "receiveCommentsBusinessHours": { - "type": "string" - }, - "isReceiveCommentsSameAsReview": { - "type": "boolean" - }, - "mailingAddress": { - "type": "string" - }, - "email": { - "type": "string" - }, - "postDate": { - "type": "string", - "description": "Date planed for online public notice posted." - } - }, - "required": [ - "projectId", - "reviewAddress", - "reviewBusinessHours", - "receiveCommentsAddress", - "receiveCommentsBusinessHours", - "isReceiveCommentsSameAsReview", - "mailingAddress", - "email", - "postDate" - ] - }, - "PublicNoticeUpdateRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "number" - }, - "reviewAddress": { - "type": "string" - }, - "reviewBusinessHours": { - "type": "string" - }, - "receiveCommentsAddress": { - "type": "string" - }, - "receiveCommentsBusinessHours": { - "type": "string" - }, - "isReceiveCommentsSameAsReview": { - "type": "boolean" - }, - "mailingAddress": { - "type": "string" - }, - "email": { - "type": "string" - }, - "postDate": { - "type": "string", - "description": "Date planed for online public notice posted." - }, - "revisionCount": { - "type": "number" - } - }, - "required": [ - "projectId", - "reviewAddress", - "reviewBusinessHours", - "receiveCommentsAddress", - "receiveCommentsBusinessHours", - "isReceiveCommentsSameAsReview", - "mailingAddress", - "email", - "postDate", - "revisionCount" - ] - }, - "PublicCommentCreateRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "number" - }, - "commentScopeCode": { - "type": "string" - }, - "scopeCutBlockId": { - "type": "number" - }, - "scopeRoadSectionId": { - "type": "number" - }, - "feedback": { - "type": "string" - }, - "name": { - "type": "string" - }, - "location": { - "type": "string" - }, - "email": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - } - }, - "required": [ - "projectId", - "commentScopeCode", - "scopeCutBlockId", - "scopeRoadSectionId", - "feedback", - "name", - "location", - "email", - "phoneNumber" - ] - }, - "ResponseCodeEnum": { - "type": "string", - "enum": [ - "IRRELEVANT", - "CONSIDERED", - "ADDRESSED" - ] - }, - "PublicCommentAdminUpdateRequest": { - "type": "object", - "properties": { - "revisionCount": { - "type": "number" - }, - "responseCode": { - "$ref": "#/components/schemas/ResponseCodeEnum" - }, - "responseDetails": { - "type": "string" - } - }, - "required": [ - "revisionCount", - "responseCode", - "responseDetails" - ] - }, - "CommentScopeCode": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "code", - "description" - ] - }, - "ResponseCode": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "code", - "description" - ] - }, - "PublicCommentAdminResponse": { - "type": "object", - "properties": { - "projectId": { - "type": "number" - }, - "scopeCutBlockId": { - "type": "number" - }, - "scopeRoadSectionId": { - "type": "number" - }, - "feedback": { - "type": "string" - }, - "name": { - "type": "string" - }, - "location": { - "type": "string" - }, - "email": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - }, - "id": { - "type": "number" - }, - "revisionCount": { - "type": "number" - }, - "createTimestamp": { - "type": "string", - "description": "ISO-formatted timestamp" - }, - "commentScope": { - "$ref": "#/components/schemas/CommentScopeCode" - }, - "response": { - "$ref": "#/components/schemas/ResponseCode" - }, - "responseDetails": { - "type": "string" - }, - "scopeFeatureName": { - "type": "string" - } - }, - "required": [ - "projectId", - "scopeCutBlockId", - "scopeRoadSectionId", - "feedback", - "name", - "location", - "email", - "phoneNumber", - "id", - "revisionCount", - "createTimestamp", - "commentScope", - "response", - "responseDetails", - "scopeFeatureName" - ] - }, - "SubmissionTypeCodeEnum": { - "type": "string", - "enum": [ - "PROPOSED", - "FINAL" - ] - }, - "SpatialObjectCodeEnum": { - "type": "string", - "enum": [ - "CUT_BLOCK", - "ROAD_SECTION", - "WTRA" - ] - }, - "SubmissionRequest": { - "type": "object", - "properties": { - "projectId": { - "type": "number" - }, - "submissionTypeCode": { - "$ref": "#/components/schemas/SubmissionTypeCodeEnum" - }, - "spatialObjectCode": { - "$ref": "#/components/schemas/SpatialObjectCodeEnum" - }, - "jsonSpatialSubmission": { - "type": "object" - } - }, - "required": [ - "projectId", - "submissionTypeCode", - "spatialObjectCode", - "jsonSpatialSubmission" - ] - }, - "SubmissionSpatialObjectDetail": { - "type": "object", - "properties": { - "count": { - "type": "number" - }, - "dateSubmitted": { - "format": "date-time", - "type": "string" - } - }, - "required": [ - "count", - "dateSubmitted" - ] - }, - "SubmissionDetailResponse": { - "type": "object", - "properties": { - "projectId": { - "type": "number" - }, - "submissionId": { - "type": "number" - }, - "submissionTypeCode": { - "example": "PROPOSED", - "default": "PROPOSED", - "$ref": "#/components/schemas/SubmissionTypeCodeEnum" - }, - "cutblocks": { - "$ref": "#/components/schemas/SubmissionSpatialObjectDetail" - }, - "roadSections": { - "$ref": "#/components/schemas/SubmissionSpatialObjectDetail" - }, - "retentionAreas": { - "$ref": "#/components/schemas/SubmissionSpatialObjectDetail" - } - }, - "required": [ - "projectId", - "submissionId", - "submissionTypeCode", - "cutblocks", - "roadSections", - "retentionAreas" - ] - }, - "SubmissionTypeCode": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "code", - "description" - ] - }, - "FeatureTypeCode": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "description": { - "type": "string" - } - }, - "required": [ - "code", - "description" - ] - }, - "SpatialFeaturePublicResponse": { - "type": "object", - "properties": { - "featureType": { - "$ref": "#/components/schemas/FeatureTypeCode" - }, - "featureId": { - "type": "number" - }, - "name": { - "type": "string" - }, - "geometry": { - "type": "object", - "description": "Format: GeoJSON Geometry object" - }, - "centroid": { - "type": "object", - "description": "Format: GeoJSON Point" - }, - "plannedDevelopmentDate": { - "type": "string", - "description": "Format: YYYY-MM-DD" - }, - "plannedAreaHa": { - "type": "number" - }, - "plannedLengthKm": { - "type": "number" - }, - "submissionType": { - "$ref": "#/components/schemas/SubmissionTypeCode" - } - }, - "required": [ - "featureType", - "featureId", - "name", - "geometry", - "centroid", - "plannedDevelopmentDate", - "plannedAreaHa", - "plannedLengthKm", - "submissionType" - ] - }, - "SpatialFeatureBcgwResponse": { - "type": "object", - "properties": { - "fomId": { - "type": "number" - }, - "featureType": { - "type": "string", - "enum": [ - "cut_block", - "road_section", - "retention_area" - ] - }, - "featureId": { - "type": "number" - }, - "fspHolderName": { - "type": "string", - "description": "Maximum length is expected to be <= 100" - }, - "lifecycleStatus": { - "type": "string", - "enum": [ - "Proposed", - "Final" - ] - }, - "createDate": { - "type": "string", - "description": "Format: YYYY-MM-DD", - "example": "2021-03-31" - }, - "geometry": { - "type": "object", - "description": "Format: GeoJSON Geometry as per RFC 7946 https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.", - "example": "Cut Block / Retention Area Example: {\"type\":\"Polygon\",\"coordinates\":[[[-121.652853481,51.67951884],[-121.499131212,51.763467947],[-121.363845891,51.668139701],[-121.373301212,51.578595415],[-121.661722435,51.589952346],[-121.652853481,51.67951884]]]} Road Section Example: {\"type\":\"LineString\",\"coordinates\":[[-124.667049923,52.651503193],[-124.739768473,52.697146151],[-124.816364174,52.60827305]]}" - }, - "plannedDevelopmentDate": { - "type": "string", - "description": "Format: YYYY-MM-DD", - "example": "2021-03-31" - }, - "plannedAreaHa": { - "type": "number", - "example": "1.2345" - }, - "plannedLengthKm": { - "type": "number", - "example": "1.2345" - } - }, - "required": [ - "fomId", - "featureType", - "featureId", - "fspHolderName", - "lifecycleStatus", - "createDate", - "geometry", - "plannedDevelopmentDate", - "plannedAreaHa", - "plannedLengthKm" - ] - } - } + "securitySchemes": { + "bearer": { + "scheme": "bearer", + "bearerFormat": "JWT", + "type": "http" + } + }, + "schemas": { + "AwsCognitoOauthConfig": { + "type": "object", + "properties": { + "domain": { + "type": "string" + }, + "scope": { + "type": "array", + "items": { + "type": "string" + } + }, + "redirectSignIn": { + "type": "string" + }, + "redirectSignOut": { + "type": "string" + }, + "responseType": { + "type": "string" + } + }, + "required": [ + "domain", + "scope", + "redirectSignIn", + "redirectSignOut", + "responseType" + ] + }, + "AwsCognitoConfig": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "aws_cognito_domain": { + "type": "string" + }, + "aws_cognito_region": { + "type": "string" + }, + "aws_user_pools_id": { + "type": "string" + }, + "aws_user_pools_web_client_id": { + "type": "string" + }, + "aws_mandatory_sign_in": { + "type": "string" + }, + "oauth": { + "$ref": "#/components/schemas/AwsCognitoOauthConfig" + }, + "federationTarget": { + "type": "string" + } + }, + "required": [ + "enabled", + "aws_cognito_domain", + "aws_cognito_region", + "aws_user_pools_id", + "aws_user_pools_web_client_id", + "aws_mandatory_sign_in", + "oauth", + "federationTarget" + ] + }, + "AttachmentTypeCode": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "description" + ] + }, + "AttachmentResponse": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "projectId": { + "type": "number" + }, + "fileName": { + "type": "string" + }, + "attachmentType": { + "$ref": "#/components/schemas/AttachmentTypeCode" + }, + "createTimestamp": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "id", + "projectId", + "fileName", + "attachmentType", + "createTimestamp" + ] + }, + "InteractionResponse": { + "type": "object", + "properties": { + "projectId": { + "type": "number" + }, + "stakeholder": { + "type": "string" + }, + "communicationDate": { + "type": "string" + }, + "communicationDetails": { + "type": "string" + }, + "attachmentId": { + "type": "number" + }, + "id": { + "type": "number" + }, + "revisionCount": { + "type": "number" + }, + "createTimestamp": { + "type": "string", + "description": "ISO-formatted timestamp" + } + }, + "required": [ + "projectId", + "communicationDate", + "communicationDetails", + "id", + "revisionCount", + "createTimestamp" + ] + }, + "ProjectPublicSummaryResponse": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "geojson": { + "type": "object", + "example": " { \"type\": \"Point\", \"coordinates\": [-119.396071939, 49.813816629]}" + }, + "fspId": { + "type": "number" + }, + "forestClientName": { + "type": "string" + }, + "workflowStateName": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "geojson", + "fspId", + "forestClientName", + "workflowStateName" + ] + }, + "DistrictResponse": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ] + }, + "ForestClientResponse": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ] + }, + "WorkflowStateCode": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "description" + ] + }, + "ProjectResponse": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "commentingOpenDate": { + "type": "string", + "description": "ISO-formatted date" + }, + "commentingClosedDate": { + "type": "string", + "description": "ISO-formatted date" + }, + "validityEndDate": { + "type": "string", + "description": "ISO-formatted date" + }, + "fspId": { + "type": "number" + }, + "district": { + "$ref": "#/components/schemas/DistrictResponse" + }, + "forestClient": { + "$ref": "#/components/schemas/ForestClientResponse" + }, + "workflowState": { + "$ref": "#/components/schemas/WorkflowStateCode" + }, + "revisionCount": { + "type": "number" + }, + "createTimestamp": { + "type": "string", + "description": "ISO-formatted timestamp" + }, + "commentClassificationMandatory": { + "type": "boolean", + "default": true + }, + "publicNoticeId": { + "type": "number" + }, + "noticePostDate": { + "type": "string" + }, + "operationStartYear": { + "type": "number" + }, + "operationEndYear": { + "type": "number" + }, + "bctsMgrName": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "description", + "commentingOpenDate", + "commentingClosedDate", + "validityEndDate", + "fspId", + "district", + "forestClient", + "workflowState", + "revisionCount", + "createTimestamp", + "commentClassificationMandatory", + "publicNoticeId", + "noticePostDate", + "operationStartYear", + "operationEndYear", + "bctsMgrName" + ] + }, + "ProjectMetricsResponse": { + "type": "object", + "properties": { + "id": { + "type": "number" + }, + "totalInteractionsCount": { + "type": "number" + }, + "totalCommentsCount": { + "type": "number" + }, + "respondedToCommentsCount": { + "type": "number" + } + }, + "required": [ + "id", + "totalInteractionsCount", + "totalCommentsCount", + "respondedToCommentsCount" + ] + }, + "ProjectCreateRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "commentingOpenDate": { + "type": "string", + "description": "ISO-formatted date" + }, + "commentingClosedDate": { + "type": "string", + "description": "ISO-formatted date" + }, + "forestClientNumber": { + "type": "string" + }, + "fspId": { + "type": "number" + }, + "districtId": { + "type": "number" + }, + "operationStartYear": { + "type": "number" + }, + "operationEndYear": { + "type": "number" + }, + "bctsMgrName": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "commentingOpenDate", + "commentingClosedDate", + "forestClientNumber", + "fspId", + "districtId", + "operationStartYear", + "operationEndYear", + "bctsMgrName" + ] + }, + "ProjectUpdateRequest": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "commentingOpenDate": { + "type": "string", + "description": "ISO-formatted date" + }, + "commentingClosedDate": { + "type": "string", + "description": "ISO-formatted date" + }, + "fspId": { + "type": "number" + }, + "districtId": { + "type": "number" + }, + "operationStartYear": { + "type": "number" + }, + "operationEndYear": { + "type": "number" + }, + "bctsMgrName": { + "type": "string" + }, + "revisionCount": { + "type": "number" + } + }, + "required": [ + "revisionCount" + ] + }, + "WorkflowStateEnum": { + "type": "string", + "enum": [ + "INITIAL", + "PUBLISHED", + "COMMENT_OPEN", + "COMMENT_CLOSED", + "FINALIZED", + "EXPIRED" + ] + }, + "ProjectWorkflowStateChangeRequest": { + "type": "object", + "properties": { + "revisionCount": { + "type": "number" + }, + "workflowStateCode": { + "$ref": "#/components/schemas/WorkflowStateEnum" + } + }, + "required": [ + "revisionCount", + "workflowStateCode" + ] + }, + "ProjectCommentClassificationMandatoryChangeRequest": { + "type": "object", + "properties": { + "commentClassificationMandatory": { + "type": "boolean" + }, + "revisionCount": { + "type": "number" + } + }, + "required": [ + "commentClassificationMandatory", + "revisionCount" + ] + }, + "ProjectCommentingClosedDateChangeRequest": { + "type": "object", + "properties": { + "commentingClosedDate": { + "type": "string", + "description": "ISO-formatted date" + }, + "revisionCount": { + "type": "number" + } + }, + "required": [ + "commentingClosedDate", + "revisionCount" + ] + }, + "PublicNoticePublicFrontEndResponse": { + "type": "object", + "properties": { + "projectId": { + "type": "number" + }, + "reviewAddress": { + "type": "string" + }, + "reviewBusinessHours": { + "type": "string" + }, + "receiveCommentsAddress": { + "type": "string" + }, + "receiveCommentsBusinessHours": { + "type": "string" + }, + "isReceiveCommentsSameAsReview": { + "type": "boolean" + }, + "mailingAddress": { + "type": "string" + }, + "email": { + "type": "string" + }, + "postDate": { + "type": "string", + "description": "Date planed for online public notice posted." + }, + "project": { + "$ref": "#/components/schemas/ProjectResponse" + } + }, + "required": [ + "projectId", + "reviewAddress", + "reviewBusinessHours", + "receiveCommentsAddress", + "receiveCommentsBusinessHours", + "isReceiveCommentsSameAsReview", + "mailingAddress", + "email", + "postDate", + "project" + ] + }, + "PublicNoticeResponse": { + "type": "object", + "properties": { + "projectId": { + "type": "number" + }, + "reviewAddress": { + "type": "string" + }, + "reviewBusinessHours": { + "type": "string" + }, + "receiveCommentsAddress": { + "type": "string" + }, + "receiveCommentsBusinessHours": { + "type": "string" + }, + "isReceiveCommentsSameAsReview": { + "type": "boolean" + }, + "mailingAddress": { + "type": "string" + }, + "email": { + "type": "string" + }, + "postDate": { + "type": "string", + "description": "Date planed for online public notice posted." + }, + "revisionCount": { + "type": "number" + }, + "id": { + "type": "number" + } + }, + "required": [ + "projectId", + "reviewAddress", + "reviewBusinessHours", + "receiveCommentsAddress", + "receiveCommentsBusinessHours", + "isReceiveCommentsSameAsReview", + "mailingAddress", + "email", + "postDate", + "revisionCount", + "id" + ] + }, + "PublicNoticeCreateRequest": { + "type": "object", + "properties": { + "projectId": { + "type": "number" + }, + "reviewAddress": { + "type": "string" + }, + "reviewBusinessHours": { + "type": "string" + }, + "receiveCommentsAddress": { + "type": "string" + }, + "receiveCommentsBusinessHours": { + "type": "string" + }, + "isReceiveCommentsSameAsReview": { + "type": "boolean" + }, + "mailingAddress": { + "type": "string" + }, + "email": { + "type": "string" + }, + "postDate": { + "type": "string", + "description": "Date planed for online public notice posted." + } + }, + "required": [ + "projectId", + "reviewAddress", + "reviewBusinessHours", + "receiveCommentsAddress", + "receiveCommentsBusinessHours", + "isReceiveCommentsSameAsReview", + "mailingAddress", + "email", + "postDate" + ] + }, + "PublicNoticeUpdateRequest": { + "type": "object", + "properties": { + "projectId": { + "type": "number" + }, + "reviewAddress": { + "type": "string" + }, + "reviewBusinessHours": { + "type": "string" + }, + "receiveCommentsAddress": { + "type": "string" + }, + "receiveCommentsBusinessHours": { + "type": "string" + }, + "isReceiveCommentsSameAsReview": { + "type": "boolean" + }, + "mailingAddress": { + "type": "string" + }, + "email": { + "type": "string" + }, + "postDate": { + "type": "string", + "description": "Date planed for online public notice posted." + }, + "revisionCount": { + "type": "number" + } + }, + "required": [ + "projectId", + "reviewAddress", + "reviewBusinessHours", + "receiveCommentsAddress", + "receiveCommentsBusinessHours", + "isReceiveCommentsSameAsReview", + "mailingAddress", + "email", + "postDate", + "revisionCount" + ] + }, + "PublicCommentCreateRequest": { + "type": "object", + "properties": { + "projectId": { + "type": "number" + }, + "commentScopeCode": { + "type": "string" + }, + "scopeCutBlockId": { + "type": "number" + }, + "scopeRoadSectionId": { + "type": "number" + }, + "feedback": { + "type": "string" + }, + "name": { + "type": "string" + }, + "location": { + "type": "string" + }, + "email": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + } + }, + "required": [ + "projectId", + "commentScopeCode", + "scopeCutBlockId", + "scopeRoadSectionId", + "feedback", + "name", + "location", + "email", + "phoneNumber" + ] + }, + "ResponseCodeEnum": { + "type": "string", + "enum": [ + "IRRELEVANT", + "CONSIDERED", + "ADDRESSED" + ] + }, + "PublicCommentAdminUpdateRequest": { + "type": "object", + "properties": { + "revisionCount": { + "type": "number" + }, + "responseCode": { + "$ref": "#/components/schemas/ResponseCodeEnum" + }, + "responseDetails": { + "type": "string" + } + }, + "required": [ + "revisionCount", + "responseCode", + "responseDetails" + ] + }, + "CommentScopeCode": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "description" + ] + }, + "ResponseCode": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "description" + ] + }, + "PublicCommentAdminResponse": { + "type": "object", + "properties": { + "projectId": { + "type": "number" + }, + "scopeCutBlockId": { + "type": "number" + }, + "scopeRoadSectionId": { + "type": "number" + }, + "feedback": { + "type": "string" + }, + "name": { + "type": "string" + }, + "location": { + "type": "string" + }, + "email": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "id": { + "type": "number" + }, + "revisionCount": { + "type": "number" + }, + "createTimestamp": { + "type": "string", + "description": "ISO-formatted timestamp" + }, + "commentScope": { + "$ref": "#/components/schemas/CommentScopeCode" + }, + "response": { + "$ref": "#/components/schemas/ResponseCode" + }, + "responseDetails": { + "type": "string" + }, + "scopeFeatureName": { + "type": "string" + } + }, + "required": [ + "projectId", + "scopeCutBlockId", + "scopeRoadSectionId", + "feedback", + "name", + "location", + "email", + "phoneNumber", + "id", + "revisionCount", + "createTimestamp", + "commentScope", + "response", + "responseDetails", + "scopeFeatureName" + ] + }, + "SubmissionTypeCodeEnum": { + "type": "string", + "enum": [ + "PROPOSED", + "FINAL" + ] + }, + "SpatialObjectCodeEnum": { + "type": "string", + "enum": [ + "CUT_BLOCK", + "ROAD_SECTION", + "WTRA" + ] + }, + "SubmissionRequest": { + "type": "object", + "properties": { + "projectId": { + "type": "number" + }, + "submissionTypeCode": { + "$ref": "#/components/schemas/SubmissionTypeCodeEnum" + }, + "spatialObjectCode": { + "$ref": "#/components/schemas/SpatialObjectCodeEnum" + }, + "jsonSpatialSubmission": { + "type": "object" + } + }, + "required": [ + "projectId", + "submissionTypeCode", + "spatialObjectCode", + "jsonSpatialSubmission" + ] + }, + "SubmissionSpatialObjectDetail": { + "type": "object", + "properties": { + "count": { + "type": "number" + }, + "dateSubmitted": { + "format": "date-time", + "type": "string" + } + }, + "required": [ + "count", + "dateSubmitted" + ] + }, + "SubmissionDetailResponse": { + "type": "object", + "properties": { + "projectId": { + "type": "number" + }, + "submissionId": { + "type": "number" + }, + "submissionTypeCode": { + "example": "PROPOSED", + "default": "PROPOSED", + "$ref": "#/components/schemas/SubmissionTypeCodeEnum" + }, + "cutblocks": { + "$ref": "#/components/schemas/SubmissionSpatialObjectDetail" + }, + "roadSections": { + "$ref": "#/components/schemas/SubmissionSpatialObjectDetail" + }, + "retentionAreas": { + "$ref": "#/components/schemas/SubmissionSpatialObjectDetail" + } + }, + "required": [ + "projectId", + "submissionId", + "submissionTypeCode", + "cutblocks", + "roadSections", + "retentionAreas" + ] + }, + "SubmissionTypeCode": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "description" + ] + }, + "FeatureTypeCode": { + "type": "object", + "properties": { + "code": { + "type": "string" + }, + "description": { + "type": "string" + } + }, + "required": [ + "code", + "description" + ] + }, + "SpatialFeaturePublicResponse": { + "type": "object", + "properties": { + "featureType": { + "$ref": "#/components/schemas/FeatureTypeCode" + }, + "featureId": { + "type": "number" + }, + "name": { + "type": "string" + }, + "geometry": { + "type": "object", + "description": "Format: GeoJSON Geometry object" + }, + "centroid": { + "type": "object", + "description": "Format: GeoJSON Point" + }, + "plannedDevelopmentDate": { + "type": "string", + "description": "Format: YYYY-MM-DD" + }, + "plannedAreaHa": { + "type": "number" + }, + "plannedLengthKm": { + "type": "number" + }, + "submissionType": { + "$ref": "#/components/schemas/SubmissionTypeCode" + } + }, + "required": [ + "featureType", + "featureId", + "name", + "geometry", + "centroid", + "plannedDevelopmentDate", + "plannedAreaHa", + "plannedLengthKm", + "submissionType" + ] + }, + "SpatialFeatureBcgwResponse": { + "type": "object", + "properties": { + "fomId": { + "type": "number" + }, + "featureType": { + "type": "string", + "enum": [ + "cut_block", + "road_section", + "retention_area" + ] + }, + "featureId": { + "type": "number" + }, + "fspHolderName": { + "type": "string", + "description": "Maximum length is expected to be <= 100" + }, + "lifecycleStatus": { + "type": "string", + "enum": [ + "Proposed", + "Final" + ] + }, + "createDate": { + "type": "string", + "description": "Format: YYYY-MM-DD", + "example": "2021-03-31" + }, + "geometry": { + "type": "object", + "description": "Format: GeoJSON Geometry as per RFC 7946 https://datatracker.ietf.org/doc/html/rfc7946#section-3.1.", + "example": "Cut Block / Retention Area Example: {\"type\":\"Polygon\",\"coordinates\":[[[-121.652853481,51.67951884],[-121.499131212,51.763467947],[-121.363845891,51.668139701],[-121.373301212,51.578595415],[-121.661722435,51.589952346],[-121.652853481,51.67951884]]]} Road Section Example: {\"type\":\"LineString\",\"coordinates\":[[-124.667049923,52.651503193],[-124.739768473,52.697146151],[-124.816364174,52.60827305]]}" + }, + "plannedDevelopmentDate": { + "type": "string", + "description": "Format: YYYY-MM-DD", + "example": "2021-03-31" + }, + "plannedAreaHa": { + "type": "number", + "example": "1.2345" + }, + "plannedLengthKm": { + "type": "number", + "example": "1.2345" + } + }, + "required": [ + "fomId", + "featureType", + "featureId", + "fspHolderName", + "lifecycleStatus", + "createDate", + "geometry", + "plannedDevelopmentDate", + "plannedAreaHa", + "plannedLengthKm" + ] + } + } } - } \ No newline at end of file + } \ No newline at end of file diff --git a/api/src/app/modules/project/project.controller.ts b/api/src/app/modules/project/project.controller.ts index a7aa82e1f..0883a60de 100644 --- a/api/src/app/modules/project/project.controller.ts +++ b/api/src/app/modules/project/project.controller.ts @@ -22,12 +22,14 @@ export class ProjectController { // Anonymous access allowed @Get('/publicSummary') @AuthGuardMeta(GUARD_OPTIONS.PUBLIC) + @ApiQuery({ name: 'projectId', required: false}) @ApiQuery({ name: 'includeCommentOpen', required: false}) @ApiQuery({ name: 'includePostCommentOpen', required: false}) @ApiQuery({ name: 'forestClientName', required: false}) @ApiQuery({ name: 'openedOnOrAfter', required: false}) @ApiResponse({ status: HttpStatus.OK, type: [ProjectPublicSummaryResponse] }) async findPublicSummary( + @Query('projectId') projectId?: string, @Query('includeCommentOpen') includeCommentOpen: string = 'true', @Query('includePostCommentOpen') includePostCommentOpen: string = 'true', @Query('forestClientName') forestClientName?: string, @@ -36,6 +38,10 @@ export class ProjectController { const findCriteria: ProjectFindCriteria = new ProjectFindCriteria(); + if (projectId) { + findCriteria.projectId = await new ParseIntPipe().transform(projectId, null); + } + if (forestClientName) { findCriteria.likeForestClientName = forestClientName; } diff --git a/api/src/app/modules/project/project.service.ts b/api/src/app/modules/project/project.service.ts index db3b5da39..91baec1e4 100644 --- a/api/src/app/modules/project/project.service.ts +++ b/api/src/app/modules/project/project.service.ts @@ -34,8 +34,12 @@ export class ProjectFindCriteria { fspId?: number; districtId?: number; includeForestClientNumbers: string[] = []; + projectId?: number; applyFindCriteria(query: SelectQueryBuilder) { + if (this.projectId) { + query.andWhere("p.id = :projectId", {projectId: this.projectId}) + } if (this.fspId) { query.andWhere("p.fsp_id = :fspId", {fspId: `${this.fspId}`}); } diff --git a/libs/client/typescript-ng/api/project.service.ts b/libs/client/typescript-ng/api/project.service.ts index 08756a6e3..bd29376aa 100644 --- a/libs/client/typescript-ng/api/project.service.ts +++ b/libs/client/typescript-ng/api/project.service.ts @@ -455,6 +455,7 @@ export class ProjectService { } /** + * @param projectId * @param includeCommentOpen * @param includePostCommentOpen * @param forestClientName @@ -462,12 +463,16 @@ export class ProjectService { * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. * @param reportProgress flag to report request and response progress. */ - public projectControllerFindPublicSummary(includeCommentOpen?: string, includePostCommentOpen?: string, forestClientName?: string, openedOnOrAfter?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable>; - public projectControllerFindPublicSummary(includeCommentOpen?: string, includePostCommentOpen?: string, forestClientName?: string, openedOnOrAfter?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable>>; - public projectControllerFindPublicSummary(includeCommentOpen?: string, includePostCommentOpen?: string, forestClientName?: string, openedOnOrAfter?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable>>; - public projectControllerFindPublicSummary(includeCommentOpen?: string, includePostCommentOpen?: string, forestClientName?: string, openedOnOrAfter?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable { + public projectControllerFindPublicSummary(projectId?: string, includeCommentOpen?: string, includePostCommentOpen?: string, forestClientName?: string, openedOnOrAfter?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable>; + public projectControllerFindPublicSummary(projectId?: string, includeCommentOpen?: string, includePostCommentOpen?: string, forestClientName?: string, openedOnOrAfter?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable>>; + public projectControllerFindPublicSummary(projectId?: string, includeCommentOpen?: string, includePostCommentOpen?: string, forestClientName?: string, openedOnOrAfter?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable>>; + public projectControllerFindPublicSummary(projectId?: string, includeCommentOpen?: string, includePostCommentOpen?: string, forestClientName?: string, openedOnOrAfter?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable { let queryParameters = new HttpParams({encoder: this.encoder}); + if (projectId !== undefined && projectId !== null) { + queryParameters = this.addToHttpParams(queryParameters, + projectId, 'projectId'); + } if (includeCommentOpen !== undefined && includeCommentOpen !== null) { queryParameters = this.addToHttpParams(queryParameters, includeCommentOpen, 'includeCommentOpen'); diff --git a/public/src/app/applications/find-panel/find-panel.component.html b/public/src/app/applications/find-panel/find-panel.component.html index 12f168abc..c3cf3c932 100644 --- a/public/src/app/applications/find-panel/find-panel.component.html +++ b/public/src/app/applications/find-panel/find-panel.component.html @@ -5,6 +5,17 @@

Find FOM

+
+ + +
+
What is a FOM Holder Name?
-
+
\ No newline at end of file diff --git a/public/src/app/applications/find-panel/find-panel.component.ts b/public/src/app/applications/find-panel/find-panel.component.ts index 1ced99aba..7bdf30902 100644 --- a/public/src/app/applications/find-panel/find-panel.component.ts +++ b/public/src/app/applications/find-panel/find-panel.component.ts @@ -39,11 +39,13 @@ export class FindPanelComponent implements OnDestroy, OnInit { private ngUnsubscribe: Subject = new Subject(); public workflowState: _.Dictionary; private fomFilters: Map; + public fomNumberFilter = new Filter({ filter: { queryParam: 'fomNumber', value: null }}); public forestClientNameFilter = new Filter({ filter: { queryParam: 'fcName', value: null }}); public commentStatusFilters: MultiFilter; // For 'Commenting Open' or 'Commenting Closed'. public postedOnAfterFilter = new Filter({ filter: { queryParam: 'pdOnAfter', value: null } }); readonly minDate = moment('2018-03-23').toDate(); // first app created readonly maxDate = moment().toDate(); // today + readonly maxInputLength = 9; constructor(public urlSvc: UrlService, private fomFiltersSvc: FOMFiltersService) { @@ -52,6 +54,7 @@ export class FindPanelComponent implements OnDestroy, OnInit { ngOnInit(): void { this.fomFiltersSvc.filters$.pipe(takeUntil(this.ngUnsubscribe)).subscribe((filters) => { this.fomFilters = filters; + this.fomNumberFilter = this.fomFilters.get(FOM_FILTER_NAME.FOM_NUMBER) as Filter; this.forestClientNameFilter = this.fomFilters.get(FOM_FILTER_NAME.FOREST_CLIENT_NAME) as Filter; this.commentStatusFilters = this.fomFilters.get(FOM_FILTER_NAME.COMMENT_STATUS) as MultiFilter; this.postedOnAfterFilter = this.fomFilters.get(FOM_FILTER_NAME.POSTED_ON_AFTER) as Filter; @@ -67,6 +70,7 @@ export class FindPanelComponent implements OnDestroy, OnInit { */ public checkAndSetFiltersHash(): boolean { const newFilterHash = FilterUtils.hashFilters( + this.fomNumberFilter, this.forestClientNameFilter, this.commentStatusFilters, this.postedOnAfterFilter); @@ -98,6 +102,15 @@ export class FindPanelComponent implements OnDestroy, OnInit { } } + public verifyFomNumberInput(event) { + let parsed = parseInt(event.target.value.toString().replace(/^0+(?=\d)/, ''), 10); + // fomNumber search field is a positive integer excluding 0; + if (isNaN(parsed) || parsed == 0) { + parsed = null; + } + this.fomNumberFilter.filter.value = parsed; + } + /** * Emit the current selected filters to the parent, if the filters have changed since the last time emit was called. * diff --git a/public/src/app/applications/projects.component.ts b/public/src/app/applications/projects.component.ts index 44a884080..bcd00c09c 100644 --- a/public/src/app/applications/projects.component.ts +++ b/public/src/app/applications/projects.component.ts @@ -164,6 +164,7 @@ export class ProjectsComponent implements OnInit, OnDestroy { } fetchFOMs(fomFilters: Map) { + const fomNumberParam = (fomFilters.get(FOM_FILTER_NAME.FOM_NUMBER) as Filter).filter.value; const forestClientNameParam = (fomFilters.get(FOM_FILTER_NAME.FOREST_CLIENT_NAME) as Filter).filter.value; const commentStatusFilters = fomFilters.get(FOM_FILTER_NAME.COMMENT_STATUS)['filters'] as Array>; const commentOpenParam = commentStatusFilters.filter(filter => filter.queryParam == COMMENT_STATUS_FILTER_PARAMS.COMMENT_OPEN)[0].value; @@ -173,6 +174,7 @@ export class ProjectsComponent implements OnInit, OnDestroy { this.loading = true; this.projectService .projectControllerFindPublicSummary( + fomNumberParam?.toString(), commentOpenParam.toString(), commentClosedParam.toString(), forestClientNameParam, diff --git a/public/src/core/services/fomFilters.service.ts b/public/src/core/services/fomFilters.service.ts index 59a3ba788..32f112dec 100644 --- a/public/src/core/services/fomFilters.service.ts +++ b/public/src/core/services/fomFilters.service.ts @@ -4,6 +4,7 @@ import { BehaviorSubject, Observable } from 'rxjs'; import { Filter, IFilter, IMultiFilter, IMultiFilterFields, MultiFilter } from '../../app/applications/utils/filter'; export enum FOM_FILTER_NAME { + FOM_NUMBER = 'fomNumber', FOREST_CLIENT_NAME = 'fcName', POSTED_ON_AFTER = 'pdOnAfter', COMMENT_STATUS = 'cmtStatus' @@ -22,6 +23,7 @@ export const COMMENT_STATUS_FILTER_PARAMS = { (However, that inteface definition is kind of strange, may need to review/refactor later.) */ export const DEFAULT_FOM_FILTERS = { + fomNumberFilter: { filter: {queryParam: FOM_FILTER_NAME.FOM_NUMBER, value: null }}, fcNameFilter: { filter: {queryParam: FOM_FILTER_NAME.FOREST_CLIENT_NAME, value: null }}, postedOnAfterFilter: { filter: {queryParam: FOM_FILTER_NAME.POSTED_ON_AFTER, value: null }}, commentStatusFilters: { @@ -89,9 +91,11 @@ export class FOMFiltersService { _getDefaultFilters(): Map { let defaultFilters = new Map(); + const fomNumberFilter = new Filter(AppUtils.copy(DEFAULT_FOM_FILTERS.fomNumberFilter)); const forestClientNameFilter = new Filter(AppUtils.copy(DEFAULT_FOM_FILTERS.fcNameFilter)); const postedOnAfterFilter = new Filter(AppUtils.copy(DEFAULT_FOM_FILTERS.postedOnAfterFilter)); const commentStatusFilters = new MultiFilter(AppUtils.copy(DEFAULT_FOM_FILTERS.commentStatusFilters)); + defaultFilters.set(FOM_FILTER_NAME.FOM_NUMBER, fomNumberFilter); defaultFilters.set(FOM_FILTER_NAME.FOREST_CLIENT_NAME, forestClientNameFilter); defaultFilters.set(FOM_FILTER_NAME.POSTED_ON_AFTER, postedOnAfterFilter); defaultFilters.set(FOM_FILTER_NAME.COMMENT_STATUS, commentStatusFilters);