From cebd2e3f5f9a4e5b3fc108c689c6f963ed3bfd04 Mon Sep 17 00:00:00 2001
From: Zdravko Iliev <zdravko.iliev@vereign.com>
Date: Tue, 5 Dec 2023 15:45:09 +0000
Subject: [PATCH] feat: add invitation get by id endpoint

---
 agent-swagger.json                           | 18 ++++++++++++++++++
 libs/askar/src/askar-rest/rest.controller.ts |  5 +++++
 libs/askar/src/askar/agent.service.ts        | 12 ++++++++++++
 3 files changed, 35 insertions(+)

diff --git a/agent-swagger.json b/agent-swagger.json
index 0f7708e8..36a7939c 100644
--- a/agent-swagger.json
+++ b/agent-swagger.json
@@ -82,6 +82,24 @@
       }
     },
     "/api/v1/invitations/{id}": {
+      "get": {
+        "operationId": "RestController_getInvitationById",
+        "parameters": [
+          {
+            "name": "id",
+            "required": true,
+            "in": "path",
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": ""
+          }
+        }
+      },
       "delete": {
         "operationId": "RestController_deleteInvitationById",
         "parameters": [
diff --git a/libs/askar/src/askar-rest/rest.controller.ts b/libs/askar/src/askar-rest/rest.controller.ts
index cf4f1dd1..a2fc06e3 100644
--- a/libs/askar/src/askar-rest/rest.controller.ts
+++ b/libs/askar/src/askar-rest/rest.controller.ts
@@ -46,6 +46,11 @@ export class RestController {
     return this.agentService.createInvitation(createInvitationRequestDto);
   }
 
+  @Get("/invitations/:id")
+  getInvitationById(@Param("id") id: string) {
+    return this.agentService.getInvitationById(id);
+  }
+
   @Delete("/invitations/:id")
   deleteInvitationById(@Param("id") id: string) {
     return this.agentService.deleteInvitationById(id);
diff --git a/libs/askar/src/askar/agent.service.ts b/libs/askar/src/askar/agent.service.ts
index f648dccf..0dd9a78f 100644
--- a/libs/askar/src/askar/agent.service.ts
+++ b/libs/askar/src/askar/agent.service.ts
@@ -135,6 +135,18 @@ export class AgentService {
     return invitationsResponse;
   };
 
+  getInvitationById = async (oobId: string) => {
+    const invitation = await this.askar.agent.oob.getById(oobId);
+
+    const response = new CreateInvitationResponseDto();
+    response.outOfBandId = invitation.id;
+    response.createdAt = invitation.createdAt;
+    response.updatedAt = invitation.updatedAt;
+    response.role = invitation.role;
+    response.state = invitation.state;
+    return response;
+  };
+
   async fetchConnections(): Promise<ConnectionRecordDto[]> {
     const agentResponse = await this.askar.agent.connections.getAll();
 
-- 
GitLab