I am writing an SWQL statement in JSON format and passing it via curl to the API. I can run three or four different query combinations inside SWQL Studio but when running it through the API it fails. I can create other queries that do not involve custom attributes and they all work fine through the API. It only happens when querying against the custom attributes.
Is there a trick to querying custom fields in the API?
Examples of queries.
Query One (using join on IPAM.IPNodeAttr directly)
{"query":"SELECT A.SubnetId as subnetid, A.IPAddress as address, A.SubnetAddress as subnet, B.SSLURL FROM IPAM.IPInfo A LEFT JOIN IPAM.IPNodeAttr B ON A.IPNodeId = B.IPNodeId WHERE A.IPAddress = 'X.X.X.X'"}
returns this error:
{"Message":"Entity IPAM.IPNodeAttr does not contain requested property SSLURL","ExceptionType":"SolarWinds.Data.Query.ParserException","FullException":"SolarWinds.Data.Query.ParserException: Entity IPAM.IPNodeAttr does not contain requested property SSLURL\u000d\u000a at SolarWinds.Data.Query.Processor.SemanticChecker.HandleQualifiedPropertyName(EntityExpression entityExpression)\u000d\u000a at SolarWinds.Data.Query.Swql.ParseTreeDuplicator.Visit(ColumnExpression column)\u000d\u000a at SolarWinds.Data.Query.Processor.SemanticChecker.Visit(ColumnExpression column)\u000d\u000a at SolarWinds.Data.Query.Swql.ParseTreeDuplicatorNoState.Visit(SelectClause select)\u000d\u000a at SolarWinds.Data.Query.Processor.SemanticChecker.Visit(SelectStatement statement)\u000d\u000a at SolarWinds.Data.Query.Processor.SemanticChecker.Process(SelectStatement statement, PreProcessorState state, String replaceStatementTagWith)\u000d\u000a at SolarWinds.Data.Query.Processor.SemanticChecker.Process(SelectStatement statement, PreProcessorState state)\u000d\u000a at SolarWinds.Data.Query.Processor.PreProcessor.Process(SelectStatement selectStatement, PreProcessorState& preProcessorState)\u000d\u000a at SolarWinds.Data.Query.Engine.QueryProcessor.ProcessInternal(String query, IQueryExecutionContext context)\u000d\u000a at SolarWinds.InformationService.Core.QueryPlanCache.GetQueryPlan(String query, String username, Boolean federationEnabled, Func`1 buildQueryPlan)\u000d\u000a at SolarWinds.InformationService.Core.InformationService.RunQuery(String query, IDictionary`2 parameters, IDataSerializer serializer)"}
Same Query with SWQL works just fine

Query Two (using join on IPAM.IPNode)
{"query":"SELECT A.SubnetId as subnetid, A.IPAddress as address, A.SubnetAddress as subnet, B.Custom.SSLURL FROM IPAM.IPInfo A LEFT JOIN IPAM.IPNode B ON A.IPNodeId = B.IPNodeId WHERE A.IPAddress = 'X.X.X.X'"}
returns this error:
{"Message":"Entity IPAM.IPNodeAttr does not contain requested property SSLURL of navigation property B.Custom","ExceptionType":"SolarWinds.Data.Query.ParserException","FullException":"SolarWinds.Data.Query.ParserException: Entity IPAM.IPNodeAttr does not contain requested property SSLURL of navigation property B.Custom\u000d\u000a at SolarWinds.Data.Query.Processor.SemanticChecker.HandleNavigationProperty(EntityExpression entityExpression, String srcEntityName, String[] navigationPropertyNames)\u000d\u000a at SolarWinds.Data.Query.Swql.ParseTreeDuplicator.Visit(ColumnExpression column)\u000d\u000a at SolarWinds.Data.Query.Processor.SemanticChecker.Visit(ColumnExpression column)\u000d\u000a at SolarWinds.Data.Query.Swql.ParseTreeDuplicatorNoState.Visit(SelectClause select)\u000d\u000a at SolarWinds.Data.Query.Processor.SemanticChecker.Visit(SelectStatement statement)\u000d\u000a at SolarWinds.Data.Query.Processor.SemanticChecker.Process(SelectStatement statement, PreProcessorState state, String replaceStatementTagWith)\u000d\u000a at SolarWinds.Data.Query.Processor.SemanticChecker.Process(SelectStatement statement, PreProcessorState state)\u000d\u000a at SolarWinds.Data.Query.Processor.PreProcessor.Process(SelectStatement selectStatement, PreProcessorState& preProcessorState)\u000d\u000a at SolarWinds.Data.Query.Engine.QueryProcessor.ProcessInternal(String query, IQueryExecutionContext context)\u000d\u000a at SolarWinds.InformationService.Core.QueryPlanCache.GetQueryPlan(String query, String username, Boolean federationEnabled, Func`1 buildQueryPlan)\u000d\u000a at SolarWinds.InformationService.Core.InformationService.RunQuery(String query, IDictionary`2 parameters, IDataSerializer serializer)"}
Same Query with SWQL works just fine
