Create a search using SQL-like syntax to return items that match specific metadata.
By default, this endpoint returns only the most basic info about the items for
which the query matches. To get additional fields for each item, including any
of the metadata, use the fields
attribute in the query.
This operation is performed by calling function search_by_metadata_query
.
See the endpoint docs at API Reference.
client.search.search_by_metadata_query(
search_from,
"0",
query="name = :name AND age < :age AND birthDate >= :birthDate AND countryCode = :countryCode AND sports = :sports",
query_params={
"name": "John",
"age": 50,
"birthDate": "2001-01-01T02:20:10.120Z",
"countryCode": "US",
"sports": ["basketball", "tennis"],
},
)
- from_
str
- Specifies the template used in the query. Must be in the form
scope.templateKey
. Not all templates can be used in this field, most notably the built-in, Box-provided classification templates can not be used in a query.
- Specifies the template used in the query. Must be in the form
- query
Optional[str]
- The query to perform. A query is a logical expression that is very similar to a SQL
SELECT
statement. Values in the search query can be turned into parameters specified in thequery_param
arguments list to prevent having to manually insert search values into the query string. For example, a value of:amount
would represent theamount
value inquery_params
object.
- The query to perform. A query is a logical expression that is very similar to a SQL
- query_params
Optional[Dict]
- Set of arguments corresponding to the parameters specified in the
query
. The type of each parameter used in thequery_params
must match the type of the corresponding metadata template field.
- Set of arguments corresponding to the parameters specified in the
- ancestor_folder_id
str
- The ID of the folder that you are restricting the query to. A value of zero will return results from all folders you have access to. A non-zero value will only return results found in the folder corresponding to the ID or in any of its subfolders.
- order_by
Optional[List[SearchByMetadataQueryOrderBy]]
- A list of template fields and directions to sort the metadata query results by. The ordering
direction
must be the same for each item in the array.
- A list of template fields and directions to sort the metadata query results by. The ordering
- limit
Optional[int]
- A value between 0 and 100 that indicates the maximum number of results to return for a single request. This only specifies a maximum boundary and will not guarantee the minimum number of results returned.
- marker
Optional[str]
- Marker to use for requesting the next page.
- fields
Optional[List[str]]
- By default, this endpoint returns only the most basic info about the items for which the query matches. This attribute can be used to specify a list of additional attributes to return for any item, including its metadata. This attribute takes a list of item fields, metadata template identifiers, or metadata template field identifiers. For example: _
created_by
will add the details of the user who created the item to the response. _metadata.<scope>.<templateKey>
will return the mini-representation of the metadata instance identified by thescope
andtemplateKey
. *metadata.<scope>.<templateKey>.<field>
will return all the mini-representation of the metadata instance identified by thescope
andtemplateKey
plus the field specified by thefield
name. Multiple fields for the samescope
andtemplateKey
can be defined.
- By default, this endpoint returns only the most basic info about the items for which the query matches. This attribute can be used to specify a list of additional attributes to return for any item, including its metadata. This attribute takes a list of item fields, metadata template identifiers, or metadata template field identifiers. For example: _
- extra_headers
Optional[Dict[str, Optional[str]]]
- Extra headers that will be included in the HTTP request.
This function returns a value of type MetadataQueryResults
.
Returns a list of files and folders that match this metadata query.
Searches for files, folders, web links, and shared files across the users content or across the entire enterprise.
This operation is performed by calling function search_for_content
.
See the endpoint docs at API Reference.
client.search.search_for_content(
ancestor_folder_ids=["0"],
mdfilters=[
MetadataFilter(
filters={
"stringField": "stringValue",
"dateField": MetadataFieldFilterDateRange(
lt=date_time_from_string("2035-01-01T00:00:00Z"),
gt=date_time_from_string("2035-01-03T00:00:00Z"),
),
"floatField": MetadataFieldFilterFloatRange(lt=9.5, gt=10.5),
"enumField": "enumValue2",
"multiSelectField": ["multiSelectValue1", "multiSelectValue2"],
},
scope=MetadataFilterScopeField.ENTERPRISE,
template_key=template_key,
)
],
)
- query
Optional[str]
- The string to search for. This query is matched against item names, descriptions, text content of files, and various other fields of the different item types. This parameter supports a variety of operators to further refine the results returns. _
""
- by wrapping a query in double quotes only exact matches are returned by the API. Exact searches do not return search matches based on specific character sequences. Instead, they return matches based on phrases, that is, word sequences. For example: A search for"Blue-Box"
may return search results including the sequence"blue.box"
,"Blue Box"
, and"Blue-Box"
; any item containing the wordsBlue
andBox
consecutively, in the order specified. _AND
- returns items that contain both the search terms. For example, a search formarketing AND BoxWorks
returns items that have bothmarketing
andBoxWorks
within its text in any order. It does not return a result that only hasBoxWorks
in its text. _OR
- returns items that contain either of the search terms. For example, a search formarketing OR BoxWorks
returns a result that has eithermarketing
orBoxWorks
within its text. Using this operator is not necessary as we implicitly interpret multi-word queries asOR
unless another supported boolean term is used. _NOT
- returns items that do not contain the search term provided. For example, a search formarketing AND NOT BoxWorks
returns a result that has onlymarketing
within its text. Results containingBoxWorks
are omitted. We do not support lower case (that is,and
,or
, andnot
) or mixed case (that is,And
,Or
, andNot
) operators. This field is required unless themdfilters
parameter is defined.
- The string to search for. This query is matched against item names, descriptions, text content of files, and various other fields of the different item types. This parameter supports a variety of operators to further refine the results returns. _
- scope
Optional[SearchForContentScope]
- Limits the search results to either the files that the user has access to, or to files available to the entire enterprise. The scope defaults to
user_content
, which limits the search results to content that is available to the currently authenticated user. Theenterprise_content
can be requested by an admin through our support channels. Once this scope has been enabled for a user, it will allow that use to query for content across the entire enterprise and not only the content that they have access to.
- Limits the search results to either the files that the user has access to, or to files available to the entire enterprise. The scope defaults to
- file_extensions
Optional[List[str]]
- Limits the search results to any files that match any of the provided file extensions. This list is a comma-separated list of file extensions without the dots.
- created_at_range
Optional[List[str]]
- Limits the search results to any items created within a given date range. Date ranges are defined as comma separated RFC3339 timestamps. If the the start date is omitted (
,2014-05-17T13:35:01-07:00
) anything created before the end date will be returned. If the end date is omitted (2014-05-15T13:35:01-07:00,
) the current date will be used as the end date instead.
- Limits the search results to any items created within a given date range. Date ranges are defined as comma separated RFC3339 timestamps. If the the start date is omitted (
- updated_at_range
Optional[List[str]]
- Limits the search results to any items updated within a given date range. Date ranges are defined as comma separated RFC3339 timestamps. If the start date is omitted (
,2014-05-17T13:35:01-07:00
) anything updated before the end date will be returned. If the end date is omitted (2014-05-15T13:35:01-07:00,
) the current date will be used as the end date instead.
- Limits the search results to any items updated within a given date range. Date ranges are defined as comma separated RFC3339 timestamps. If the start date is omitted (
- size_range
Optional[List[int]]
- Limits the search results to any items with a size within a given file size range. This applied to files and folders. Size ranges are defined as comma separated list of a lower and upper byte size limit (inclusive). The upper and lower bound can be omitted to create open ranges.
- owner_user_ids
Optional[List[str]]
- Limits the search results to any items that are owned by the given list of owners, defined as a list of comma separated user IDs. The items still need to be owned or shared with the currently authenticated user for them to show up in the search results. If the user does not have access to any files owned by any of the users an empty result set will be returned. To search across an entire enterprise, we recommend using the
enterprise_content
scope parameter which can be requested with our support team.
- Limits the search results to any items that are owned by the given list of owners, defined as a list of comma separated user IDs. The items still need to be owned or shared with the currently authenticated user for them to show up in the search results. If the user does not have access to any files owned by any of the users an empty result set will be returned. To search across an entire enterprise, we recommend using the
- recent_updater_user_ids
Optional[List[str]]
- Limits the search results to any items that have been updated by the given list of users, defined as a list of comma separated user IDs. The items still need to be owned or shared with the currently authenticated user for them to show up in the search results. If the user does not have access to any files owned by any of the users an empty result set will be returned. This feature only searches back to the last 10 versions of an item.
- ancestor_folder_ids
Optional[List[str]]
- Limits the search results to items within the given list of folders, defined as a comma separated lists of folder IDs. Search results will also include items within any subfolders of those ancestor folders. The folders still need to be owned or shared with the currently authenticated user. If the folder is not accessible by this user, or it does not exist, a
HTTP 404
error code will be returned instead. To search across an entire enterprise, we recommend using theenterprise_content
scope parameter which can be requested with our support team.
- Limits the search results to items within the given list of folders, defined as a comma separated lists of folder IDs. Search results will also include items within any subfolders of those ancestor folders. The folders still need to be owned or shared with the currently authenticated user. If the folder is not accessible by this user, or it does not exist, a
- content_types
Optional[List[SearchForContentContentTypes]]
- Limits the search results to any items that match the search query for a specific part of the file, for example the file description. Content types are defined as a comma separated lists of Box recognized content types. The allowed content types are as follows. _
name
- The name of the item, as defined by itsname
field. _description
- The description of the item, as defined by itsdescription
field. _file_content
- The actual content of the file. _comments
- The content of any of the comments on a file or folder. *tags
- Any tags that are applied to an item, as defined by itstags
field.
- Limits the search results to any items that match the search query for a specific part of the file, for example the file description. Content types are defined as a comma separated lists of Box recognized content types. The allowed content types are as follows. _
- type
Optional[SearchForContentType]
- Limits the search results to any items of this type. This parameter only takes one value. By default the API returns items that match any of these types. _
file
- Limits the search results to files _folder
- Limits the search results to folders *web_link
- Limits the search results to web links, also known as bookmarks
- Limits the search results to any items of this type. This parameter only takes one value. By default the API returns items that match any of these types. _
- trash_content
Optional[SearchForContentTrashContent]
- Determines if the search should look in the trash for items. By default, this API only returns search results for items not currently in the trash (
non_trashed_only
). _trashed_only
- Only searches for items currently in the trash _non_trashed_only
- Only searches for items currently not in the trash *all_items
- Searches for both trashed and non-trashed items.
- Determines if the search should look in the trash for items. By default, this API only returns search results for items not currently in the trash (
- mdfilters
Optional[List[MetadataFilter]]
- Limits the search results to any items for which the metadata matches the provided filter. This parameter is a list that specifies exactly one metadata template used to filter the search results. The parameter is required unless the
query
parameter is provided.
- Limits the search results to any items for which the metadata matches the provided filter. This parameter is a list that specifies exactly one metadata template used to filter the search results. The parameter is required unless the
- sort
Optional[SearchForContentSort]
- Defines the order in which search results are returned. This API defaults to returning items by relevance unless this parameter is explicitly specified. _
relevance
(default) returns the results sorted by relevance to the query search term. The relevance is based on the occurrence of the search term in the items name, description, content, and additional properties. _modified_at
returns the results ordered in descending order by date at which the item was last modified.
- Defines the order in which search results are returned. This API defaults to returning items by relevance unless this parameter is explicitly specified. _
- direction
Optional[SearchForContentDirection]
- Defines the direction in which search results are ordered. This API defaults to returning items in descending (
DESC
) order unless this parameter is explicitly specified. When results are sorted byrelevance
the ordering is locked to returning items in descending order of relevance, and this parameter is ignored.
- Defines the direction in which search results are ordered. This API defaults to returning items in descending (
- limit
Optional[int]
- Defines the maximum number of items to return as part of a page of results.
- include_recent_shared_links
Optional[bool]
- Defines whether the search results should include any items that the user recently accessed through a shared link. When this parameter has been set to true, the format of the response of this API changes to return a list of Search Results with Shared Links
- fields
Optional[List[str]]
- A comma-separated list of attributes to include in the response. This can be used to request fields that are not normally returned in a standard response. Be aware that specifying this parameter will have the effect that none of the standard fields are returned in the response unless explicitly specified, instead only fields for the mini representation are returned, additional to the fields requested.
- offset
Optional[int]
- The offset of the item at which to begin the response. Queries with offset parameter value exceeding 10000 will be rejected with a 400 response.
- deleted_user_ids
Optional[List[str]]
- Limits the search results to items that were deleted by the given list of users, defined as a list of comma separated user IDs. The
trash_content
parameter needs to be set totrashed_only
. If searching in trash is not performed, an empty result set is returned. The items need to be owned or shared with the currently authenticated user for them to show up in the search results. If the user does not have access to any files owned by any of the users, an empty result set is returned. Data available from 2023-02-01 onwards.
- Limits the search results to items that were deleted by the given list of users, defined as a list of comma separated user IDs. The
- deleted_at_range
Optional[List[str]]
- Limits the search results to any items deleted within a given date range. Date ranges are defined as comma separated RFC3339 timestamps. If the the start date is omitted (
2014-05-17T13:35:01-07:00
), anything deleted before the end date will be returned. If the end date is omitted (2014-05-15T13:35:01-07:00
), the current date will be used as the end date instead. Thetrash_content
parameter needs to be set totrashed_only
. If searching in trash is not performed, then an empty result is returned. Data available from 2023-02-01 onwards.
- Limits the search results to any items deleted within a given date range. Date ranges are defined as comma separated RFC3339 timestamps. If the the start date is omitted (
- extra_headers
Optional[Dict[str, Optional[str]]]
- Extra headers that will be included in the HTTP request.
This function returns a value of type Union[SearchResults, SearchResultsWithSharedLinks]
.
Returns a collection of search results. If there are no matching
search results, the entries
array will be empty.