Sample code for 30+ languages & platforms
SQL Server

Yousign - Setup email notifications

See more Yousign Examples

Demonstrates how to setup email notifications based on events. An event is triggered when a user (or our API) make an action or when a status has changed.

Chilkat SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    -- This example assumes the Chilkat API to have been previously unlocked.
    -- See Global Unlock Sample for sample code.

    DECLARE @http int
    EXEC @hr = sp_OACreate 'Chilkat.Http', @http OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- Implements the following CURL command:

    -- curl --location --request POST 'https://staging-api.yousign.com/procedures' \
    -- --header 'Authorization: Bearer YOUR_API_KEY' \
    -- --header 'Content-Type: application/json' \
    -- --data-raw '{
    --     "name": "My first procedure with emails",
    --     "description": "Powerful! Here is the description of my first procedure with emails",
    --     "members": [
    --         {
    --             "firstname": "John",
    --             "lastname": "Doe",
    --             "email": "john.doe@yousign.fr",
    --             "phone": "+33612345678",
    --             "fileObjects": [
    --                 {
    --                     "file": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    --                     "page": 2,
    --                     "position": "230,499,464,589",
    --                     "mention": "Read and approved",
    --                     "mention2": "Signed by John Doe"
    --                 }
    --             ]
    --         }
    --     ],
    --     "config": {
    --         "email": {
    --             "member.started": [
    --                 {
    --                     "subject": "Hey! You are invited to sign!",
    --                     "message": "Hello <tag data-tag-type=\"string\" data-tag-name=\"recipient.firstname\"></tag> <tag data-tag-type=\"string\" data-tag-name=\"recipient.lastname\"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type=\"button\" data-tag-name=\"url\" data-tag-title=\"Access to documents\">Access to documents</tag>",
    --                     "to": ["@member"]
    --                 }
    --             ],
    --             "procedure.started": [
    --                 {
    --                     "subject": "John, created a procedure your API have.",
    --                     "message": "The content of this email is totally awesome.",
    --                     "to": ["@creator", "@members", "billing@yousign.fr"]
    --                 }
    --             ]
    --         }
    --     }
    -- }'

    -- Use the following online tool to generate HTTP code from a CURL command
    -- Convert a cURL Command to HTTP Source Code

    -- Use this online tool to generate code from sample JSON:
    -- Generate Code to Create JSON

    -- The following JSON is sent in the request body.

    -- {
    --   "name": "My first procedure with emails",
    --   "description": "Powerful! Here is the description of my first procedure with emails",
    --   "members": [
    --     {
    --       "firstname": "John",
    --       "lastname": "Doe",
    --       "email": "john.doe@yousign.fr",
    --       "phone": "+33612345678",
    --       "fileObjects": [
    --         {
    --           "file": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    --           "page": 2,
    --           "position": "230,499,464,589",
    --           "mention": "Read and approved",
    --           "mention2": "Signed by John Doe"
    --         }
    --       ]
    --     }
    --   ],
    --   "config": {
    --     "email": {
    --       "member.started": [
    --         {
    --           "subject": "Hey! You are invited to sign!",
    --           "message": "Hello <tag data-tag-type=",
    --           " data-tag-name=": <tag,
    --           "button": [
    --             "@member"
    --           ]
    --         }
    --       ],
    --       "procedure.started": [
    --         {
    --           "subject": "John, created a procedure your API have.",
    --           "message": "The content of this email is totally awesome.",
    --           "to": [
    --             "@creator",
    --             "@members",
    --             "billing@yousign.fr"
    --           ]
    --         }
    --       ]
    --     }
    --   }
    -- }

    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @json OUT

    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'name', 'My first procedure with emails'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'description', 'Powerful! Here is the description of my first procedure with emails'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'members[0].firstname', 'John'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'members[0].lastname', 'Doe'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'members[0].email', 'john.doe@yousign.fr'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'members[0].phone', '+33612345678'
    -- Use the actual file ID here...
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'members[0].fileObjects[0].file', '/files/23686fbe-3ae1-4de9-9e01-58bbf29b2b18'
    EXEC sp_OAMethod @json, 'UpdateInt', @success OUT, 'members[0].fileObjects[0].page', 2
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'members[0].fileObjects[0].position', '230,499,464,589'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'members[0].fileObjects[0].mention', 'Read and approved'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'members[0].fileObjects[0].mention2', 'Signed by John Doe'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'config.email."member.started"[0].subject', 'Hey! You are invited to sign!'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'config.email."member.started"[0].message', 'Hello <tag data-tag-type="string" data-tag-name="recipient.firstname"></tag> <tag data-tag-type="string" data-tag-name="recipient.lastname"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type="button" data-tag-name="url" data-tag-title="Access to documents">Access to documents</tag>'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'config.email."member.started"[0].to[0]', '@member'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'config.email."procedure.started"[0].subject', 'John, created a procedure your API have.'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'config.email."procedure.started"[0].message', 'The content of this email is totally awesome.'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'config.email."procedure.started"[0].to[0]', '@creator'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'config.email."procedure.started"[0].to[1]', '@members'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'config.email."procedure.started"[0].to[2]', 'billing@yousign.fr'

    -- Adds the "Authorization: Bearer YOUR_API_KEY" header.
    EXEC sp_OASetProperty @http, 'AuthToken', 'YOUR_API_KEY'

    DECLARE @resp int
    EXEC @hr = sp_OACreate 'Chilkat.HttpResponse', @resp OUT

    EXEC sp_OAMethod @http, 'HttpJson', @success OUT, 'POST', 'https://staging-api.yousign.com/procedures', @json, 'application/json', @resp
    IF @success = 0
      BEGIN
        EXEC sp_OAGetProperty @http, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @resp
        RETURN
      END

    DECLARE @sbResponseBody int
    EXEC @hr = sp_OACreate 'Chilkat.StringBuilder', @sbResponseBody OUT

    EXEC sp_OAMethod @resp, 'GetBodySb', @success OUT, @sbResponseBody
    DECLARE @jResp int
    EXEC @hr = sp_OACreate 'Chilkat.JsonObject', @jResp OUT

    EXEC sp_OAMethod @jResp, 'LoadSb', @success OUT, @sbResponseBody
    EXEC sp_OASetProperty @jResp, 'EmitCompact', 0


    PRINT 'Response Body:'
    EXEC sp_OAMethod @jResp, 'Emit', @sTmp0 OUT
    PRINT @sTmp0

    DECLARE @respStatusCode int
    EXEC sp_OAGetProperty @resp, 'StatusCode', @respStatusCode OUT

    PRINT 'Response Status Code = ' + @respStatusCode
    IF @respStatusCode >= 400
      BEGIN

        PRINT 'Response Header:'
        EXEC sp_OAGetProperty @resp, 'Header', @sTmp0 OUT
        PRINT @sTmp0

        PRINT 'Failed.'
        EXEC @hr = sp_OADestroy @http
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @resp
        EXEC @hr = sp_OADestroy @sbResponseBody
        EXEC @hr = sp_OADestroy @jResp
        RETURN
      END

    -- Sample JSON response:
    -- (Sample code for parsing the JSON response is shown below)

    -- {
    --   "id": "/procedures/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    --   "name": "My first procedure with emails",
    --   "description": "Powerful! Here is the description of my first procedure with emails",
    --   "createdAt": "2018-12-05T06:53:34+01:00",
    --   "updatedAt": "2018-12-05T06:53:34+01:00",
    --   "finishedAt": null,
    --   "expiresAt": null,
    --   "status": "active",
    --   "creator": null,
    --   "creatorFirstName": null,
    --   "creatorLastName": null,
    --   "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    --   "template": false,
    --   "ordered": false,
    --   "parent": null,
    --   "metadata": [
    --   ],
    --   "config": {
    --     "email": {
    --       "procedure.started": [
    --         {
    --           "subject": "John, created a procedure your API have.",
    --           "message": "The content of this email is totally awesome.",
    --           "to": [
    --             "@creator",
    --             "@members",
    --             "billing@yousign.fr"
    --           ]
    --         }
    --       ],
    --       "member.started": [
    --         {
    --           "subject": "Hey! You are invited to sign!",
    --           "message": "Hello <tag data-tag-type=\"string\" data-tag-name=\"recipient.firstname\"></tag> <tag data-tag-type=\"string\" data-tag-name=\"recipient.lastname\"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type=\"button\" data-tag-name=\"url\" data-tag-title=\"Access to documents\">Access to documents</tag>",
    --           "to": [
    --             "@member"
    --           ]
    --         }
    --       ]
    --     }
    --   },
    --   "members": [
    --     {
    --       "id": "/members/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    --       "user": null,
    --       "type": "signer",
    --       "firstname": "John",
    --       "lastname": "Doe",
    --       "email": "john.doe@yousign.fr",
    --       "phone": "+33612345678",
    --       "position": 1,
    --       "createdAt": "2018-12-05T06:53:34+01:00",
    --       "updatedAt": "2018-12-05T06:53:34+01:00",
    --       "finishedAt": null,
    --       "status": "pending",
    --       "fileObjects": [
    --         {
    --           "id": "/file_objects/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    --           "file": {
    --             "id": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    --             "name": "The best name for my file.pdf",
    --             "type": "signable",
    --             "contentType": "application/pdf",
    --             "description": null,
    --             "createdAt": "2018-12-05T06:52:54+01:00",
    --             "updatedAt": "2018-12-05T06:53:34+01:00",
    --             "sha256": "bb57ae2b2ca6ad0133a699350d1a6f6c8cdfde3cf872cf526585d306e4675cc2",
    --             "metadata": [
    --             ],
    --             "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    --             "creator": null,
    --             "protected": false,
    --             "position": 0,
    --             "parent": null
    --           },
    --           "page": 2,
    --           "position": "230,499,464,589",
    --           "fieldName": null,
    --           "mention": "Read and approved",
    --           "mention2": "Signed by John Doe",
    --           "createdAt": "2018-12-05T06:53:34+01:00",
    --           "updatedAt": "2018-12-05T06:53:34+01:00",
    --           "parent": null,
    --           "reason": "Signed by Yousign"
    --         }
    --       ],
    --       "comment": null,
    --       "notificationsEmail": [
    --       ],
    --       "operationLevel": "custom",
    --       "operationCustomModes": [
    --         "sms"
    --       ],
    --       "operationModeSmsConfig": null,
    --       "parent": null
    --     }
    --   ],
    --   "subscribers": [
    --   ],
    --   "files": [
    --     {
    --       "id": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    --       "name": "The best name for my file.pdf",
    --       "type": "signable",
    --       "contentType": "application/pdf",
    --       "description": null,
    --       "createdAt": "2018-12-05T06:52:54+01:00",
    --       "updatedAt": "2018-12-05T06:53:34+01:00",
    --       "sha256": "bb57ae2b2ca6ad0133a699350d1a6f6c8cdfde3cf872cf526585d306e4675cc2",
    --       "metadata": [
    --       ],
    --       "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    --       "creator": null,
    --       "protected": false,
    --       "position": 0,
    --       "parent": null
    --     }
    --   ],
    --   "relatedFilesEnable": false,
    --   "archive": false,
    --   "archiveMetadata": [
    --   ],
    --   "fields": [
    --   ],
    --   "permissions": [
    --   ]
    -- }

    -- Sample code for parsing the JSON response...
    -- Use the following online tool to generate parsing code from sample JSON:
    -- Generate Parsing Code from JSON

    DECLARE @subject nvarchar(4000)

    DECLARE @message nvarchar(4000)

    DECLARE @j int

    DECLARE @count_j int

    DECLARE @strVal nvarchar(4000)

    DECLARE @user nvarchar(4000)

    DECLARE @v_type nvarchar(4000)

    DECLARE @firstname nvarchar(4000)

    DECLARE @lastname nvarchar(4000)

    DECLARE @email nvarchar(4000)

    DECLARE @phone nvarchar(4000)

    DECLARE @position int

    DECLARE @comment nvarchar(4000)

    DECLARE @operationLevel nvarchar(4000)

    DECLARE @operationModeSmsConfig nvarchar(4000)

    DECLARE @fileId nvarchar(4000)

    DECLARE @fileName nvarchar(4000)

    DECLARE @fileType nvarchar(4000)

    DECLARE @fileContentType nvarchar(4000)

    DECLARE @fileDescription nvarchar(4000)

    DECLARE @fileCreatedAt nvarchar(4000)

    DECLARE @fileUpdatedAt nvarchar(4000)

    DECLARE @fileSha256 nvarchar(4000)

    DECLARE @fileWorkspace nvarchar(4000)

    DECLARE @fileCreator nvarchar(4000)

    DECLARE @fileProtected int

    DECLARE @filePosition int

    DECLARE @fileParent nvarchar(4000)

    DECLARE @page int

    DECLARE @position_str nvarchar(4000)

    DECLARE @fieldName nvarchar(4000)

    DECLARE @mention nvarchar(4000)

    DECLARE @mention2 nvarchar(4000)

    DECLARE @reason nvarchar(4000)

    DECLARE @k int

    DECLARE @count_k int

    DECLARE @contentType nvarchar(4000)

    DECLARE @sha256 nvarchar(4000)

    DECLARE @v_protected int

    DECLARE @id nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @id OUT, 'id'
    DECLARE @name nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @name OUT, 'name'
    DECLARE @description nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @description OUT, 'description'
    DECLARE @createdAt nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @createdAt OUT, 'createdAt'
    DECLARE @updatedAt nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @updatedAt OUT, 'updatedAt'
    DECLARE @finishedAt nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @finishedAt OUT, 'finishedAt'
    DECLARE @expiresAt nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @expiresAt OUT, 'expiresAt'
    DECLARE @status nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @status OUT, 'status'
    DECLARE @creator nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @creator OUT, 'creator'
    DECLARE @creatorFirstName nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @creatorFirstName OUT, 'creatorFirstName'
    DECLARE @creatorLastName nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @creatorLastName OUT, 'creatorLastName'
    DECLARE @workspace nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @workspace OUT, 'workspace'
    DECLARE @template int
    EXEC sp_OAMethod @jResp, 'BoolOf', @template OUT, 'template'
    DECLARE @ordered int
    EXEC sp_OAMethod @jResp, 'BoolOf', @ordered OUT, 'ordered'
    DECLARE @parent nvarchar(4000)
    EXEC sp_OAMethod @jResp, 'StringOf', @parent OUT, 'parent'
    DECLARE @relatedFilesEnable int
    EXEC sp_OAMethod @jResp, 'BoolOf', @relatedFilesEnable OUT, 'relatedFilesEnable'
    DECLARE @archive int
    EXEC sp_OAMethod @jResp, 'BoolOf', @archive OUT, 'archive'
    DECLARE @i int
    SELECT @i = 0
    DECLARE @count_i int
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'metadata'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        SELECT @i = @i + 1
      END
    SELECT @i = 0
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'config.email."procedure.started"'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        EXEC sp_OAMethod @jResp, 'StringOf', @subject OUT, 'config.email."procedure.started"[i].subject'
        EXEC sp_OAMethod @jResp, 'StringOf', @message OUT, 'config.email."procedure.started"[i].message'
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'config.email."procedure.started"[i].to'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @strVal OUT, 'config.email."procedure.started"[i].to[j]'
            SELECT @j = @j + 1
          END
        SELECT @i = @i + 1
      END
    SELECT @i = 0
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'config.email."member.started"'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        EXEC sp_OAMethod @jResp, 'StringOf', @subject OUT, 'config.email."member.started"[i].subject'
        EXEC sp_OAMethod @jResp, 'StringOf', @message OUT, 'config.email."member.started"[i].message'
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'config.email."member.started"[i].to'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @strVal OUT, 'config.email."member.started"[i].to[j]'
            SELECT @j = @j + 1
          END
        SELECT @i = @i + 1
      END
    SELECT @i = 0
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'members'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        EXEC sp_OAMethod @jResp, 'StringOf', @id OUT, 'members[i].id'
        EXEC sp_OAMethod @jResp, 'StringOf', @user OUT, 'members[i].user'
        EXEC sp_OAMethod @jResp, 'StringOf', @v_type OUT, 'members[i].type'
        EXEC sp_OAMethod @jResp, 'StringOf', @firstname OUT, 'members[i].firstname'
        EXEC sp_OAMethod @jResp, 'StringOf', @lastname OUT, 'members[i].lastname'
        EXEC sp_OAMethod @jResp, 'StringOf', @email OUT, 'members[i].email'
        EXEC sp_OAMethod @jResp, 'StringOf', @phone OUT, 'members[i].phone'
        EXEC sp_OAMethod @jResp, 'IntOf', @position OUT, 'members[i].position'
        EXEC sp_OAMethod @jResp, 'StringOf', @createdAt OUT, 'members[i].createdAt'
        EXEC sp_OAMethod @jResp, 'StringOf', @updatedAt OUT, 'members[i].updatedAt'
        EXEC sp_OAMethod @jResp, 'StringOf', @finishedAt OUT, 'members[i].finishedAt'
        EXEC sp_OAMethod @jResp, 'StringOf', @status OUT, 'members[i].status'
        EXEC sp_OAMethod @jResp, 'StringOf', @comment OUT, 'members[i].comment'
        EXEC sp_OAMethod @jResp, 'StringOf', @operationLevel OUT, 'members[i].operationLevel'
        EXEC sp_OAMethod @jResp, 'StringOf', @operationModeSmsConfig OUT, 'members[i].operationModeSmsConfig'
        EXEC sp_OAMethod @jResp, 'StringOf', @parent OUT, 'members[i].parent'
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'members[i].fileObjects'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @id OUT, 'members[i].fileObjects[j].id'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileId OUT, 'members[i].fileObjects[j].file.id'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileName OUT, 'members[i].fileObjects[j].file.name'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileType OUT, 'members[i].fileObjects[j].file.type'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileContentType OUT, 'members[i].fileObjects[j].file.contentType'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileDescription OUT, 'members[i].fileObjects[j].file.description'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileCreatedAt OUT, 'members[i].fileObjects[j].file.createdAt'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileUpdatedAt OUT, 'members[i].fileObjects[j].file.updatedAt'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileSha256 OUT, 'members[i].fileObjects[j].file.sha256'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileWorkspace OUT, 'members[i].fileObjects[j].file.workspace'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileCreator OUT, 'members[i].fileObjects[j].file.creator'
            EXEC sp_OAMethod @jResp, 'BoolOf', @fileProtected OUT, 'members[i].fileObjects[j].file.protected'
            EXEC sp_OAMethod @jResp, 'IntOf', @filePosition OUT, 'members[i].fileObjects[j].file.position'
            EXEC sp_OAMethod @jResp, 'StringOf', @fileParent OUT, 'members[i].fileObjects[j].file.parent'
            EXEC sp_OAMethod @jResp, 'IntOf', @page OUT, 'members[i].fileObjects[j].page'
            EXEC sp_OAMethod @jResp, 'StringOf', @position_str OUT, 'members[i].fileObjects[j].position'
            EXEC sp_OAMethod @jResp, 'StringOf', @fieldName OUT, 'members[i].fileObjects[j].fieldName'
            EXEC sp_OAMethod @jResp, 'StringOf', @mention OUT, 'members[i].fileObjects[j].mention'
            EXEC sp_OAMethod @jResp, 'StringOf', @mention2 OUT, 'members[i].fileObjects[j].mention2'
            EXEC sp_OAMethod @jResp, 'StringOf', @createdAt OUT, 'members[i].fileObjects[j].createdAt'
            EXEC sp_OAMethod @jResp, 'StringOf', @updatedAt OUT, 'members[i].fileObjects[j].updatedAt'
            EXEC sp_OAMethod @jResp, 'StringOf', @parent OUT, 'members[i].fileObjects[j].parent'
            EXEC sp_OAMethod @jResp, 'StringOf', @reason OUT, 'members[i].fileObjects[j].reason'
            SELECT @k = 0
            EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_k OUT, 'members[i].fileObjects[j].file.metadata'
            WHILE @k < @count_k
              BEGIN
                EXEC sp_OASetProperty @jResp, 'K', @k
                SELECT @k = @k + 1
              END
            SELECT @j = @j + 1
          END
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'members[i].notificationsEmail'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            SELECT @j = @j + 1
          END
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'members[i].operationCustomModes'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            EXEC sp_OAMethod @jResp, 'StringOf', @strVal OUT, 'members[i].operationCustomModes[j]'
            SELECT @j = @j + 1
          END
        SELECT @i = @i + 1
      END
    SELECT @i = 0
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'subscribers'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        SELECT @i = @i + 1
      END
    SELECT @i = 0
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'files'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        EXEC sp_OAMethod @jResp, 'StringOf', @id OUT, 'files[i].id'
        EXEC sp_OAMethod @jResp, 'StringOf', @name OUT, 'files[i].name'
        EXEC sp_OAMethod @jResp, 'StringOf', @v_type OUT, 'files[i].type'
        EXEC sp_OAMethod @jResp, 'StringOf', @contentType OUT, 'files[i].contentType'
        EXEC sp_OAMethod @jResp, 'StringOf', @description OUT, 'files[i].description'
        EXEC sp_OAMethod @jResp, 'StringOf', @createdAt OUT, 'files[i].createdAt'
        EXEC sp_OAMethod @jResp, 'StringOf', @updatedAt OUT, 'files[i].updatedAt'
        EXEC sp_OAMethod @jResp, 'StringOf', @sha256 OUT, 'files[i].sha256'
        EXEC sp_OAMethod @jResp, 'StringOf', @workspace OUT, 'files[i].workspace'
        EXEC sp_OAMethod @jResp, 'StringOf', @creator OUT, 'files[i].creator'
        EXEC sp_OAMethod @jResp, 'BoolOf', @v_protected OUT, 'files[i].protected'
        EXEC sp_OAMethod @jResp, 'IntOf', @position OUT, 'files[i].position'
        EXEC sp_OAMethod @jResp, 'StringOf', @parent OUT, 'files[i].parent'
        SELECT @j = 0
        EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_j OUT, 'files[i].metadata'
        WHILE @j < @count_j
          BEGIN
            EXEC sp_OASetProperty @jResp, 'J', @j
            SELECT @j = @j + 1
          END
        SELECT @i = @i + 1
      END
    SELECT @i = 0
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'archiveMetadata'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        SELECT @i = @i + 1
      END
    SELECT @i = 0
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'fields'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        SELECT @i = @i + 1
      END
    SELECT @i = 0
    EXEC sp_OAMethod @jResp, 'SizeOfArray', @count_i OUT, 'permissions'
    WHILE @i < @count_i
      BEGIN
        EXEC sp_OASetProperty @jResp, 'I', @i
        SELECT @i = @i + 1
      END

    EXEC @hr = sp_OADestroy @http
    EXEC @hr = sp_OADestroy @json
    EXEC @hr = sp_OADestroy @resp
    EXEC @hr = sp_OADestroy @sbResponseBody
    EXEC @hr = sp_OADestroy @jResp


END
GO