# Ruby 3+; standard library only. require 'net/http' require 'uri' base = ENV.fetch('PETROSUPPORT_BASE_URL').sub(%r{/$}, '') uri = URI("#{base}/incidents") request = Net::HTTP::Post.new(uri) request['Authorization'] = "Bearer #{ENV.fetch('PETROSUPPORT_TOKEN')}" request['Content-Type'] = 'application/json' request['Idempotency-Key'] = ENV.fetch('PETROSUPPORT_IDEMPOTENCY_KEY') request.body = '{"title":"Fleet roadside incident","priority":"high","requested_by":"11111111-1111-4111-a111-111111111111","latitude":-1.292100000000000026290081223123706877231597900390625,"longitude":36.821899999999999408828443847596645355224609375,"services":["recovery"],"external_reference":"FLEET-INC-001"}' http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = uri.scheme == 'https' http.open_timeout = 5 http.read_timeout = 20 response = http.request(request) raise "HTTP #{response.code}: #{response.body}" unless response.is_a?(Net::HTTPSuccess) puts response.body