APIs & Integrations

CSwart
参加者

[Hubspot API] How do you use IN filter operator?

解決

I am trying to use an IN Filter for getting all deals from a list of deal_ids when trying this I get an invalid JSON error:

 

HTTP response body: {
"status":"error",
"message":"Invalid input JSON on line 1, column 42: Cannot deserialize instance of `java.lang.String` out of START_ARRAY token",
"correlationId":"dd4d7def-6cc8-4b7e-a48d-658e0330e8cd"
}

 


I am using the Python API as such to do the IN filter operation with a list of deal_id strings in deal_ids:

 

domain_filter = hubspot.crm.deals.models.Filter(
            property_name="id",
            operator="IN",
            value=deal_ids
        )

        filter_group = hubspot.crm.deals.models.FilterGroup(
            filters=[domain_filter]
        )

        public_object_search_request = hubspot.crm.companies.models.PublicObjectSearchRequest(
            filter_groups=[filter_group]
        )
        
        deal_results = self.hubspot_api_client.crm.companies.search_api.do_search(public_object_search_request=public_object_search_request)

 

 

This is what the dict repr of public_object_search_request looks like:

 

{'after': None,
 'filter_groups': [{'filters': [{'operator': 'IN',
                                 'property_name': 'id',
                                 'value': ['3651752129', '3741754830']}]}],
 'limit': None,
 'properties': None,
 'query': None,
 'sorts': None}

Would love to see a working IN operator example to get it working for myself.

0 いいね!
1件の承認済みベストアンサー
Teun
解決策
名誉エキスパート | Elite Partner
名誉エキスパート | Elite Partner

[Hubspot API] How do you use IN filter operator?

解決

Hi @CSwart ,

 

I checked the Deals docs, and I think you can retrieve the deals with two endpoints.

 

Batch read (inputs= should get your array of ID's):

import hubspot
from pprint import pprint
from hubspot.crm.deals import BatchReadInputSimplePublicObjectId, ApiException

client = hubspot.Client.create(api_key="YOUR_HUBSPOT_API_KEY")

batch_read_input_simple_public_object_id = BatchReadInputSimplePublicObjectId(properties="dealname", inputs=[{"id":"3651752129"},{"id":"3741754830"}])
try:
    api_response = client.crm.deals.batch_api.read(archived=False, batch_read_input_simple_public_object_id=batch_read_input_simple_public_object_id)
    pprint(api_response)
except ApiException as e:
    print("Exception when calling batch_api->read: %s\n" % e)

 

Search:

import hubspot
from pprint import pprint
from hubspot.crm.deals import PublicObjectSearchRequest, ApiException

client = hubspot.Client.create(api_key="YOUR_HUBSPOT_API_KEY")

public_object_search_request = PublicObjectSearchRequest(filter_groups={"filters":[{"value":"3741754830","propertyName":"hs_object_id","operator":"EQ"},{"value":"3651752129","propertyName":"hs_object_id","operator":"EQ"}]}, sorts="dealname", query="string", properties="dealname", limit=10, after=0)
try:
    api_response = client.crm.deals.search_api.do_search(public_object_search_request=public_object_search_request)
    pprint(api_response)
except ApiException as e:
    print("Exception when calling search_api->do_search: %s\n" % e)

OR:

import hubspot
from pprint import pprint
from hubspot.crm.deals import PublicObjectSearchRequest, ApiException

client = hubspot.Client.create(api_key="YOUR_HUBSPOT_API_KEY")

public_object_search_request = PublicObjectSearchRequest(filter_groups={"filters":[{"value":"[\"3651752129\", \"3741754830\"]","propertyName":"hs_object_id","operator":"IN"}]}, sorts="dealname", query="string", properties="dealname", limit=10, after=0)
try:
    api_response = client.crm.deals.search_api.do_search(public_object_search_request=public_object_search_request)
    pprint(api_response)
except ApiException as e:
    print("Exception when calling search_api->do_search: %s\n" % e)

 



Learn more about HubSpot by following me on LinkedIn or YouTube

Did my answer solve your issue? Help the community by marking it as the solution.


元の投稿で解決策を見る

11件の返信
SNowak6
メンバー

[Hubspot API] How do you use IN filter operator?

解決

Hi! I have a problem when trying to search products using custom property. When I use "EQ" operator I'm getting a product as a result:

{
  "filterGroups": [
    {
      "filters": [
        {
          "value""VKBA 1355",
          "propertyName""litium_productarticlenumber",
          "operator""EQ"
        }
      ]
    }
  ],
  "properties": [
    "litium_productarticlenumber"
  ]
}

But when I try to do same search (and search with more values) using "IN" operator I'm not getting anything:

{
  "filterGroups": [
    {
      "filters": [
        {
          "values""VKBA 1355""VKBA 3434" ],
          "propertyName""litium_productarticlenumber",
          "operator""IN"
        }
      ]
    }
  ],
  "properties": [
    "litium_productarticlenumber"
  ]
}
 
What am I doing wrong?

 

 

BSeslija
メンバー

[Hubspot API] How do you use IN filter operator?

解決

Hi! I am trying to filter contact data based on date created. I have added this to request body: 

{
"filters": [
{"propertyName": "createdate",
"operator": "IN",
"values": ["2022-03-01", "2022-03-31"]
}]
}

But I always get  There was a problem with the request as a response. 

What am I doing wrong?

0 いいね!
BSeslija
メンバー

[Hubspot API] How do you use IN filter operator?

解決

Hi!  I am trying to filter search results and get contacts data based on date created. I added this to request body: 

{
"filters": [
{
"propertyName": "createdate",
"operator": "IN",
"values": ["2022-03-01T00:00:29.962Z", "2022-03-31T00:00:29.962Z"]
}
]
}

But I always get There was a problem with the request in the response. 

What am I doing wrong?

0 いいね!
Petercopter
参加者

[Hubspot API] How do you use IN filter operator?

解決

Thanks for puzzling this out. Here's an example that works in Ruby. Note the VALUES key

{
  filterGroups: [
    {
      filters: [
        {
          operator: 'IN',
          propertyName: 'dealstage',
          values: ['closedlost', 'closedwon']
        }
      ]
    }
  ],
  sorts: [{ direction: 'ASCENDING', propertyName: 'dealname' }]
}

 

0 いいね!
mooney
参加者

[Hubspot API] How do you use IN filter operator?

解決

are you able to filter using any other values other than closedlost and closedwon such as custom stages?

0 いいね!
Teun
解決策
名誉エキスパート | Elite Partner
名誉エキスパート | Elite Partner

[Hubspot API] How do you use IN filter operator?

解決

Hi @CSwart ,

 

I checked the Deals docs, and I think you can retrieve the deals with two endpoints.

 

Batch read (inputs= should get your array of ID's):

import hubspot
from pprint import pprint
from hubspot.crm.deals import BatchReadInputSimplePublicObjectId, ApiException

client = hubspot.Client.create(api_key="YOUR_HUBSPOT_API_KEY")

batch_read_input_simple_public_object_id = BatchReadInputSimplePublicObjectId(properties="dealname", inputs=[{"id":"3651752129"},{"id":"3741754830"}])
try:
    api_response = client.crm.deals.batch_api.read(archived=False, batch_read_input_simple_public_object_id=batch_read_input_simple_public_object_id)
    pprint(api_response)
except ApiException as e:
    print("Exception when calling batch_api->read: %s\n" % e)

 

Search:

import hubspot
from pprint import pprint
from hubspot.crm.deals import PublicObjectSearchRequest, ApiException

client = hubspot.Client.create(api_key="YOUR_HUBSPOT_API_KEY")

public_object_search_request = PublicObjectSearchRequest(filter_groups={"filters":[{"value":"3741754830","propertyName":"hs_object_id","operator":"EQ"},{"value":"3651752129","propertyName":"hs_object_id","operator":"EQ"}]}, sorts="dealname", query="string", properties="dealname", limit=10, after=0)
try:
    api_response = client.crm.deals.search_api.do_search(public_object_search_request=public_object_search_request)
    pprint(api_response)
except ApiException as e:
    print("Exception when calling search_api->do_search: %s\n" % e)

OR:

import hubspot
from pprint import pprint
from hubspot.crm.deals import PublicObjectSearchRequest, ApiException

client = hubspot.Client.create(api_key="YOUR_HUBSPOT_API_KEY")

public_object_search_request = PublicObjectSearchRequest(filter_groups={"filters":[{"value":"[\"3651752129\", \"3741754830\"]","propertyName":"hs_object_id","operator":"IN"}]}, sorts="dealname", query="string", properties="dealname", limit=10, after=0)
try:
    api_response = client.crm.deals.search_api.do_search(public_object_search_request=public_object_search_request)
    pprint(api_response)
except ApiException as e:
    print("Exception when calling search_api->do_search: %s\n" % e)

 



Learn more about HubSpot by following me on LinkedIn or YouTube

Did my answer solve your issue? Help the community by marking it as the solution.


mooney
参加者

[Hubspot API] How do you use IN filter operator?

解決

HI @Teun 

 

Will you confirm you sucessfully got your second search option from you reply using the IN operator working outside of Postman? HubSpot api returns: "...problem: operator IN requires values." when using the following filter & operator:

 

"propertyName""dealstage""operator""IN""values": [84643078464306] }
 
We are able to get it working in Postman and would like to know if their is a bug with the following node package:
 
@hubspot/api-client v6.0.1
 
api call:
const apiResponse = await hubspotClient.crm.deals.searchApi.doSearch(publicObjectSearchRequest);
0 いいね!
tb1024
参加者

[Hubspot API] How do you use IN filter operator?

解決

Teun,

It seems that your last example doesn't work for me, I am getting this error:

 

{"status":"error","message":"Invalid input JSON on line 9, column 17: Cannot construct instance of `com.hubspot.inbounddb.publicobject.core.v3.search.Filter`, problem: operator IN requires values","correlationId":"c0f97d27-fd9c-4e21-a476-ed9ee20a2000"}

 

 

This is what I have in Postman. Any input would highly be appreciated. Thank you.

tb1024_0-1644586988118.png

 

0 いいね!
tb1024
参加者

[Hubspot API] How do you use IN filter operator?

解決

Teun,

For future reference, it looks like you have a typo in your sample. It should be "values" (plural) instead of "value".  Also, it is looking for a string[]  (see picture).

tb1024_0-1644588012904.png

 

Teun
名誉エキスパート | Elite Partner
名誉エキスパート | Elite Partner

[Hubspot API] How do you use IN filter operator?

解決

Thanks for the update!



Learn more about HubSpot by following me on LinkedIn or YouTube

Did my answer solve your issue? Help the community by marking it as the solution.


0 いいね!
CSwart
参加者

[Hubspot API] How do you use IN filter operator?

解決

Thanks for the helpful solution ideas I am going to try them out today!