For integration details please see the main document here.
Here's an implementation for Visual Basic
Imports System.Net.Http Imports System.Security.Cryptography Imports System.Text Imports Newtonsoft.Json Imports Jose Module ShipXGraphQLJWTExample Sub Main() ' 1. Prepare GraphQL payload Dim query As String = "query { me { id name } }" Dim variables As Object = New With {} Dim payload As String = JsonConvert.SerializeObject(New With {Key .query = query, Key .variables = variables}) ' 2. Generate payloadHash (SHA256) Dim sha256 As SHA256 = SHA256.Create() Dim hashBytes As Byte() = sha256.ComputeHash(Encoding.UTF8.GetBytes(payload)) Dim payloadHash As String = BitConverter.ToString(hashBytes).Replace("-", "").ToLower() ' 3. Prepare JWT payload Dim iat As Integer = CInt(DateTimeOffset.UtcNow.ToUnixTimeSeconds()) Dim exp As Integer = iat + 600 ' 10 minutes Dim jwtPayload As New Dictionary(Of String, Object) From { {"iat", iat}, {"exp", exp}, {"portalCompanyUuid", "your-portal-company-uuid"}, {"baseCompanyUuid", "your-base-company-uuid"}, {"payloadHash", payloadHash} } ' 4. Sign JWT (using a shared secret for HMAC SHA256) Dim secret As String = "your-secret-key" Dim token As String = JWT.Encode(jwtPayload, Encoding.UTF8.GetBytes(secret), JwsAlgorithm.HS256) ' 5. Send HTTP request with Authorization header Dim client As New HttpClient() client.DefaultRequestHeaders.Add("Authorization", "Bearer " & token) Dim content As New StringContent(payload, Encoding.UTF8, "application/json") Dim response = client.PostAsync("https://shipx.cc/graphql", content).Result Dim responseBody As String = response.Content.ReadAsStringAsync().Result Console.WriteLine("Status: " & response.StatusCode) Console.WriteLine("Response: " & responseBody) End Sub End Module
Notes:
- You need the Jose.JWT and Newtonsoft.Json packages.
- Replace "your-portal-company-uuid", "your-base-company-uuid", and "your-secret-key" with your actual values.
- The JWT iat and exp are set as required.
- The JWT is included in the Authorization header as Bearer <token>.
- The GraphQL payload is sent as JSON in the request body.