openapi: 3.1.0 info: title: Box Search API description: Needs a description. paths: /search: get: operationId: get_search summary: Box Search for content tags: - Search x-box-tag: search x-box-enable-explorer: true description: |- Searches for files, folders, web links, and shared files across the users content or across the entire enterprise. parameters: - name: query description: >- 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 words `Blue` and `Box` consecutively, in the order specified. * `AND` - returns items that contain both the search terms. For example, a search for `marketing AND BoxWorks` returns items that have both `marketing` and `BoxWorks` within its text in any order. It does not return a result that only has `BoxWorks` in its text. * `OR` - returns items that contain either of the search terms. For example, a search for `marketing OR BoxWorks` returns a result that has either `marketing` or `BoxWorks` within its text. Using this operator is not necessary as we implicitly interpret multi-word queries as `OR` unless another supported boolean term is used. * `NOT` - returns items that do not contain the search term provided. For example, a search for `marketing AND NOT BoxWorks` returns a result that has only `marketing` within its text. Results containing `BoxWorks` are omitted. We do not support lower case (that is, `and`, `or`, and `not`) or mixed case (that is, `And`, `Or`, and `Not`) operators. This field is required unless the `mdfilters` parameter is defined. in: query required: false example: sales schema: type: string - name: scope description: |- 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. The `enterprise_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. in: query required: false schema: type: string enum: - user_content - enterprise_content default: user_content example: user_content - name: file_extensions description: >- 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. example: - pdf - png - gif in: query required: false explode: false schema: type: array items: type: string - name: created_at_range description: |- 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. example: - '2014-05-15T13:35:01-07:00' - '2014-05-17T13:35:01-07:00' in: query required: false explode: false schema: type: array items: type: string - name: updated_at_range description: |- 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. example: - '2014-05-15T13:35:01-07:00' - '2014-05-17T13:35:01-07:00' in: query required: false explode: false schema: type: array items: type: string - name: size_range description: |- 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. example: - 1000000 - 5000000 in: query required: false explode: false schema: type: array items: type: integer - name: owner_user_ids description: >- 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. example: - '123422' - '23532' - '3241212' in: query required: false explode: false schema: type: array items: type: string - name: recent_updater_user_ids description: >- 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. example: - '123422' - '23532' - '3241212' in: query required: false explode: false schema: type: array items: type: string - name: ancestor_folder_ids description: >- 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 the `enterprise_content` scope parameter which can be requested with our support team. explode: false example: - '4535234' - '234123235' - '2654345' in: query required: false schema: type: array items: type: string - name: content_types description: >- 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 its `name` field. * `description` - The description of the item, as defined by its `description` 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 its `tags` field. in: query example: - name - description explode: false required: false schema: type: array items: type: string enum: - name - description - file_content - comments - tag - name: type description: |- 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 example: file in: query required: false schema: type: string enum: - file - folder - web_link - name: trash_content description: |- 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. in: query required: false example: non_trashed_only schema: type: string default: non_trashed_only enum: - non_trashed_only - trashed_only - all_items - name: mdfilters description: >- Limits the search results to any items for which the metadata matches the provided filter. This parameter contains a list of 1 metadata template to filter the search results by. This list can currently only contain one entry, though this might be expanded in the future. This parameter is required unless the `query` parameter is provided. in: query example: - scope: enterprise templateKey: contract filters: category: online x-example: - scope: enterprise templateKey: contract filters: category: online contractValue: 1000000 required: false schema: type: array minItems: 1 maxItems: 1 items: $ref: '#/components/schemas/MetadataFilter' description: |- A list of metadata templates to filter the search results by. Required unless `query` parameter is defined. - name: sort description: >- 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. in: query required: false schema: type: string default: relevance enum: - modified_at - relevance example: modified_at - name: direction description: >- 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 by `relevance` the ordering is locked to returning items in descending order of relevance, and this parameter is ignored. in: query required: false schema: type: string default: DESC enum: - DESC - ASC example: ASC - name: limit description: |- Defines the maximum number of items to return as part of a page of results. in: query required: false example: 100 schema: type: integer format: int64 default: 30 maximum: 200 - name: include_recent_shared_links description: |- 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](r://search_results_with_shared_links) in: query required: false example: true schema: type: boolean default: false - name: fields description: |- 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. in: query example: - id - type - name required: false explode: false schema: type: array items: type: string - name: offset description: |- 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. in: query required: false example: 1000 schema: type: integer format: int64 default: 0 - name: deleted_user_ids description: |- 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 to `trashed_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. example: - '123422' - '23532' - '3241212' in: query required: false schema: type: array items: type: string - name: deleted_at_range description: |- 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. The `trash_content` parameter needs to be set to `trashed_only`. If searching in trash is not performed, then an empty result is returned. Data available from 2023-02-01 onwards. example: - '2014-05-15T13:35:01-07:00' - '2014-05-17T13:35:01-07:00' in: query required: false schema: type: array items: type: string responses: '200': description: |- Returns a collection of search results. If there are no matching search results, the `entries` array will be empty. content: application/json: schema: oneOf: - $ref: '#/components/schemas/SearchResults' - $ref: '#/components/schemas/SearchResultsWithSharedLinks' '400': description: >- Returns an error when the request was not valid. This can have multiple reasons and the `context_info` object will provide you with more details. * `missing_parameter` - Please provide at least the `query` or `mdfilters` query parameter in a search. * `invalid_parameter` - Any of the fields might not be in the right format. This could for example mean that one of the RFC3339 dates is incorrect, or a string is provided where an integer is expected. content: application/json: schema: $ref: '#/components/schemas/ClientError' '403': description: |- Returns an error when the user does not have the permission to make this API call. * The developer provided a `scope` of `enterprise_content` but did not request this scope to be enabled for the user through our support channels. content: application/json: schema: $ref: '#/components/schemas/ClientError' '404': description: |- Returns an error when the user does not have access to an item mentioned in the request. * The developer provided a folder ID in `ancestor_folder_ids` that either does not exist or the user does not have access to. content: application/json: schema: $ref: '#/components/schemas/ClientError' default: description: An unexpected client error. content: application/json: schema: $ref: '#/components/schemas/ClientError' components: schemas: ClientError: title: Client error type: object x-box-resource-id: client_error description: A generic error properties: type: description: error example: error type: string enum: - error nullable: false status: description: The HTTP status of the response. example: 400 type: integer format: int32 nullable: false code: description: A Box-specific error code example: item_name_invalid type: string enum: - created - accepted - no_content - redirect - not_modified - bad_request - unauthorized - forbidden - not_found - method_not_allowed - conflict - precondition_failed - too_many_requests - internal_server_error - unavailable - item_name_invalid - insufficient_scope message: description: A short message describing the error. example: Method Not Allowed type: string nullable: false context_info: description: |- A free-form object that contains additional context about the error. The possible fields are defined on a per-endpoint basis. `message` is only one example. type: object nullable: true properties: message: type: string description: More details on the error. example: Something went wrong. help_url: description: A URL that links to more information about why this error occurred. example: >- https://developer.box.com/guides/api-calls/permissions-and-errors/common-errors/ type: string nullable: false request_id: description: |- A unique identifier for this response, which can be used when contacting Box support. type: string example: abcdef123456 nullable: false tags: - name: Search