SQL Server HMRC Create Test User: HMRC Create Test User that is an Organization

Back to Index

This resource creates and returns a test user which is an organisation. The caller can specify the required service enrolments in the request body. If no request body is supplied, the test user is created with no service enrolments.

Documentation: https://developer.service.hmrc.gov.uk/api-documentation/docs/api/service/api-platform-test-user/1.0#_create-a-test-user-which-is-an-organisation_post_accordion

CURL Command

curl -X POST  https://test-api.service.hmrc.gov.uk/create-test-user/organisations \
-H 'Authorization: Bearer HMRC_SERVER_TOKEN' \
-H 'Accept: application/vnd.hmrc.1.0+json' \
-H 'Content-Type: application/json' \
-d '{
  "serviceNames": [
    "corporation-tax",
    "paye-for-employers",
    "submit-vat-returns",
    "national-insurance",
    "self-assessment",
    "mtd-income-tax",
    "mtd-vat",
    "lisa",
    "secure-electronic-transfer",
    "relief-at-source",
    "customs-services"
  ]
}'

SQL Server Example

CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    DECLARE @iTmp0 int
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @rest int
    EXEC @hr = sp_OACreate 'Chilkat_9_5_0.Rest', @rest OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    DECLARE @success int

    --  URL: https://test-api.service.hmrc.gov.uk/create-test-user/organisations
    DECLARE @bTls int
    SELECT @bTls = 1
    DECLARE @port int
    SELECT @port = 443
    DECLARE @bAutoReconnect int
    SELECT @bAutoReconnect = 1
    EXEC sp_OAMethod @rest, 'Connect', @success OUT, 'test-api.service.hmrc.gov.uk', @port, @bTls, @bAutoReconnect
    IF @success <> 1
      BEGIN

        EXEC sp_OAGetProperty @rest, 'ConnectFailReason', @iTmp0 OUT
        PRINT 'ConnectFailReason: ' + @iTmp0
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        RETURN
      END

    --  See the Online Tool for Generating JSON Creation Code
    DECLARE @json int
    EXEC @hr = sp_OACreate 'Chilkat_9_5_0.JsonObject', @json OUT

    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[0]', 'corporation-tax'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[1]', 'paye-for-employers'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[2]', 'submit-vat-returns'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[3]', 'national-insurance'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[4]', 'self-assessment'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[5]', 'mtd-income-tax'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[6]', 'mtd-vat'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[7]', 'lisa'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[8]', 'secure-electronic-transfer'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[9]', 'relief-at-source'
    EXEC sp_OAMethod @json, 'UpdateString', @success OUT, 'serviceNames[10]', 'customs-services'

    EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Content-Type', 'application/json'
    EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Authorization', 'Bearer HMRC_SERVER_TOKEN'
    EXEC sp_OAMethod @rest, 'AddHeader', @success OUT, 'Accept', 'application/vnd.hmrc.1.0+json'

    DECLARE @sbRequestBody int
    EXEC @hr = sp_OACreate 'Chilkat_9_5_0.StringBuilder', @sbRequestBody OUT

    EXEC sp_OAMethod @json, 'EmitSb', @success OUT, @sbRequestBody
    DECLARE @sbResponseBody int
    EXEC @hr = sp_OACreate 'Chilkat_9_5_0.StringBuilder', @sbResponseBody OUT

    EXEC sp_OAMethod @rest, 'FullRequestSb', @success OUT, 'POST', '/create-test-user/organisations', @sbRequestBody, @sbResponseBody
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @rest, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @sbRequestBody
        EXEC @hr = sp_OADestroy @sbResponseBody
        RETURN
      END
    DECLARE @respStatusCode int
    EXEC sp_OAGetProperty @rest, 'ResponseStatusCode', @respStatusCode OUT
    IF @respStatusCode >= 400
      BEGIN

        PRINT 'Response Status Code = ' + @respStatusCode

        PRINT 'Response Header:'
        EXEC sp_OAGetProperty @rest, 'ResponseHeader', @sTmp0 OUT
        PRINT @sTmp0

        PRINT 'Response Body:'
        EXEC sp_OAMethod @sbResponseBody, 'GetAsString', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @rest
        EXEC @hr = sp_OADestroy @json
        EXEC @hr = sp_OADestroy @sbRequestBody
        EXEC @hr = sp_OADestroy @sbResponseBody
        RETURN
      END

    DECLARE @jsonResponse int
    EXEC @hr = sp_OACreate 'Chilkat_9_5_0.JsonObject', @jsonResponse OUT

    EXEC sp_OAMethod @jsonResponse, 'LoadSb', @success OUT, @sbResponseBody

    --  See the Online Tool for Generating JSON Parse Code
    DECLARE @userId nvarchar(4000)

    DECLARE @password nvarchar(4000)

    DECLARE @userFullName nvarchar(4000)

    DECLARE @emailAddress nvarchar(4000)

    DECLARE @organisationDetailsName nvarchar(4000)

    DECLARE @organisationDetailsAddressLine1 nvarchar(4000)

    DECLARE @organisationDetailsAddressLine2 nvarchar(4000)

    DECLARE @organisationDetailsAddressPostcode nvarchar(4000)

    DECLARE @saUtr nvarchar(4000)

    DECLARE @nino nvarchar(4000)

    DECLARE @mtdItId nvarchar(4000)

    DECLARE @empRef nvarchar(4000)

    DECLARE @ctUtr nvarchar(4000)

    DECLARE @vrn nvarchar(4000)

    DECLARE @vatRegistrationDate nvarchar(4000)

    DECLARE @lisaManagerReferenceNumber nvarchar(4000)

    DECLARE @secureElectronicTransferReferenceNumber nvarchar(4000)

    DECLARE @pensionSchemeAdministratorIdentifier nvarchar(4000)

    DECLARE @eoriNumber nvarchar(4000)

    EXEC sp_OAMethod @jsonResponse, 'StringOf', @userId OUT, 'userId'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @password OUT, 'password'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @userFullName OUT, 'userFullName'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @emailAddress OUT, 'emailAddress'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @organisationDetailsName OUT, 'organisationDetails.name'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @organisationDetailsAddressLine1 OUT, 'organisationDetails.address.line1'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @organisationDetailsAddressLine2 OUT, 'organisationDetails.address.line2'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @organisationDetailsAddressPostcode OUT, 'organisationDetails.address.postcode'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @saUtr OUT, 'saUtr'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @nino OUT, 'nino'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @mtdItId OUT, 'mtdItId'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @empRef OUT, 'empRef'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @ctUtr OUT, 'ctUtr'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @vrn OUT, 'vrn'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @vatRegistrationDate OUT, 'vatRegistrationDate'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @lisaManagerReferenceNumber OUT, 'lisaManagerReferenceNumber'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @secureElectronicTransferReferenceNumber OUT, 'secureElectronicTransferReferenceNumber'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @pensionSchemeAdministratorIdentifier OUT, 'pensionSchemeAdministratorIdentifier'
    EXEC sp_OAMethod @jsonResponse, 'StringOf', @eoriNumber OUT, 'eoriNumber'

    EXEC @hr = sp_OADestroy @rest
    EXEC @hr = sp_OADestroy @json
    EXEC @hr = sp_OADestroy @sbRequestBody
    EXEC @hr = sp_OADestroy @sbResponseBody
    EXEC @hr = sp_OADestroy @jsonResponse


END
GO

Sample JSON Response Body

{
  "userId": "331803185953",
  "password": "arjfogpD7Yst",
  "userFullName": "Gabi Upton",
  "emailAddress": "gabi.upton@example.com",
  "organisationDetails": {
    "name": "Company KPUEH0",
    "address": {
      "line1": "13 Mortimer Square",
      "line2": "Fleet",
      "postcode": "TS3 1PA"
    }
  },
  "saUtr": "7000022933",
  "nino": "OC929674D",
  "mtdItId": "XYIT00000840710",
  "empRef": "886/MPCHETZIAC",
  "ctUtr": "8000061338",
  "vrn": "990724297",
  "vatRegistrationDate": "1999-02-18",
  "lisaManagerReferenceNumber": "Z3182",
  "secureElectronicTransferReferenceNumber": "309105308354",
  "pensionSchemeAdministratorIdentifier": "a0174585",
  "eoriNumber": "GB5052299822"
}