{"id":15044587,"url":"https://github.com/elastic/site-search-php","last_synced_at":"2025-10-19T21:30:26.717Z","repository":{"id":35034495,"uuid":"198581063","full_name":"elastic/site-search-php","owner":"elastic","description":"Elastic Site Search Official PHP Client","archived":false,"fork":false,"pushed_at":"2024-08-08T15:59:43.000Z","size":151,"stargazers_count":5,"open_issues_count":2,"forks_count":13,"subscribers_count":23,"default_branch":"master","last_synced_at":"2024-09-27T15:42:29.589Z","etag":null,"topics":["api-client","elastic","elastic-site-search","php","search","swiftype"],"latest_commit_sha":null,"homepage":"https://www.elastic.co/products/site-search","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elastic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-24T07:22:42.000Z","updated_at":"2023-09-28T21:52:12.000Z","dependencies_parsed_at":"2024-09-25T01:54:06.198Z","dependency_job_id":"6ccf8363-b7d5-4406-8760-b4b56ecfe9aa","html_url":"https://github.com/elastic/site-search-php","commit_stats":{"total_commits":83,"total_committers":6,"mean_commits":"13.833333333333334","dds":0.09638554216867468,"last_synced_commit":"b1ac149f24a6de8ac8ecfd4c0a77e1c4fef326dd"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fsite-search-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fsite-search-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fsite-search-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elastic%2Fsite-search-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elastic","download_url":"https://codeload.github.com/elastic/site-search-php/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":219869272,"owners_count":16555575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-client","elastic","elastic-site-search","php","search","swiftype"],"created_at":"2024-09-24T20:50:46.155Z","updated_at":"2025-10-19T21:30:26.366Z","avatar_url":"https://github.com/elastic.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/elastic/site-search-php/blob/master/logo-site-search.png?raw=true\" alt=\"Elastic Site Search Logo\"\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/packagist/l/elastic/site-search\" /\u003e\n  \u003ca href=\"https://github.com/elastic/site-search-php/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/release/elastic/site-search-php/all.svg?style=flat-square\" alt=\"GitHub release\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://circleci.com/gh/elastic/site-search-php\"\u003e\u003cimg src=\"https://img.shields.io/circleci/build/github/elastic/site-search-php/master\" alt=\"CircleCI build\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/librariesio/github/elastic/site-search-php\" alt=\"Dependencies status\"/\u003e\n\u003c/p\u003e\n\n\u003e A first-party PHP client for the [Elastic Site Search API](https://swiftype.com/documentation/site-search/overview).\n\n## Contents\n\n- [Getting started](#getting-started-)\n- [Usage](#usage)\n- [Development](#development)\n- [FAQ](#faq-)\n- [Contribute](#contribute-)\n- [License](#license-)\n\n***\n\n## Getting started 🐣\n\nUsing this client assumes that you have already created a Site Search account on https://www.elastic.co/products/site-search.\n\nYou can install the client in your project by using composer:\n\n```bash\ncomposer require elastic/site-search\n```\n\n## Usage\n\n### Configuring the client\n\n#### Basic client instantiation\n\nTo instantiate a new client you can use `\\Elastic\\SiteSearch\\Client\\ClientBuilder`:\n\n```php\n  $apiKey        = 'XXXXXXXXXXXX';\n  $clientBuilder = \\Elastic\\SiteSearch\\Client\\ClientBuilder::create($apiKey);\n\n  $client = $clientBuilder-\u003ebuild();\n```\n\n**Notes:**\n\n- The resulting client will be of type `\\Elastic\\SiteSearch\\Client\\Client`\n\n- You can find the API endpoint and your API key URL in your Site Search account: https://app.swiftype.com/settings/account.\n\n- The Site Search PHP client does not support authentication through Engine Key as described in the [documentation](https://swiftype.com/documentation/site-search/overview#authentication).\n\n### Basic usage\n\n#### Retrieve or create an engine\n\nMost methods of the API require that you have access to an Engine.\n\nTo check if an Engine exists and retrieve its configuration, you can use the `Client::getEngine` method :\n\n```php\n  $engine = $client-\u003egetEngine('my-engine');\n```\n\nIf the Engine does not exists yet, you can create it by using the `Client::createEngine` method :\n\n```php\n  $engine = $client-\u003ecreateEngine('my-engine', 'en');\n```\n\nThe second parameter (`$language`) is optional or can be set to null. Then the Engine will be created using the `universal` language.\nThe list of supported language is available here : https://swiftype.com/documentation/site-search/overview#language-optimization\n\n#### Document types\n\nWhen using Site Search every document has an associated DocumentType.\n\nYou can list available document types in an engine by using the `Client::listDocumentTypes` method:\n\n```php\n  $documentTypes = $client-\u003elistDocumentTypes('my-engine');\n```\n\nIn order to index documents you need to create at least one DocumentType in your engine. This can be done by using the Client::createDocumentType` method:\n\n```\n  $documentType = $client-\u003ecreateDocumentType('my-engine', 'my-document-type');\n```\n\n#### Index some documents\n\nIn order to index some documents in the Engine you can use the `Client::createOrUpdateDocuments` method:\n\n```php\n    $documents = [\n      [\n        'external_id' =\u003e 'first-document',\n        'fields'      =\u003e [\n          ['name' =\u003e 'title', 'value' =\u003e 'First document title', 'type' =\u003e 'string'],\n          ['name' =\u003e 'content', 'value' =\u003e 'Text for the first document.', 'type' =\u003e 'string'],\n        ]\n      ],\n      [\n        'external_id' =\u003e 'other-document',\n        'fields'      =\u003e [\n          ['name' =\u003e 'title', 'value' =\u003e 'Other document title', 'type' =\u003e 'string'],\n          ['name' =\u003e 'content', 'value' =\u003e 'Text for the other document.', 'type' =\u003e 'string'],\n        ]\n      ],\n    ];\n\n    $indexingResults = $client-\u003ecreateOrUpdateDocuments('my-engine', 'my-document-type', $documents);\n```\n\n**Notes:**\n\n- The `$indexingResults` array will contains the result of the indexation of each documents. You should always check the content of the result.\n\n- A full list of available field types and associated use cases is available here: https://swiftype.com/documentation/site-search/overview#fieldtype\n\n- Full documentation for the endpoint and other method available to index documents is available here: https://swiftype.com/documentation/site-search/indexing.\n\n#### Search\n\nIn order to search in your Engine you can use the `Client::search` method :\n\n```php\n    $searchResponse = $client-\u003esearch('my-engine', 'fulltext search query');\n```\n\nAn optional `$searchRequestParams` can be used to pass additional parameters to the Search API endpoint (pagination, filters, facets, ...):\n\n```php\n    $searchParams = ['per_page' =\u003e 10, 'page' =\u003e 2];\n    $searchResponse = $client-\u003esearch('my-engine', 'fulltext search query', $searchParams);\n```\n\nAllowed params are :\n\nParam name                        | Description                             | Documentation URL\n----------------------------------|-----------------------------------------|--------------------------------------------------------------------------\n`per_page` and `page`             | Control pagination.                     | https://swiftype.com/documentation/site-search/searching/pagination\n`document_types`                  | Searched document types.                | https://swiftype.com/documentation/site-search/searching/documenttypes\n`filters`                         | Search filters                          | https://swiftype.com/documentation/site-search/searching/filtering\n`facets`                          | Search facets.                          | https://swiftype.com/documentation/site-search/searching/faceting\n`boosts`                          | Search boosts.                          | https://swiftype.com/documentation/site-search/searching/boosting\n`fetch_fields`                    | Fields returned by the search.          | https://swiftype.com/documentation/site-search/searching/fetch-fields\n`search_fields`                   | Field (weighted) used by the search.    | https://swiftype.com/documentation/site-search/searching/field-weights\n`highlight_fields`                | Field highlighting configuration.       | https://swiftype.com/documentation/site-search/searching/highlight-fields\n`sort_field` and `sort_direction` | Result sort order configuration         | https://swiftype.com/documentation/site-search/searching/sorting\n`spelling`                        | Control over the spellchecker behavior. | https://swiftype.com/documentation/site-search/searching/spelling\n\n### Clients methods\n\nMethod      | Description | Documentation\n------------|-------------|--------------\n**`asyncCreateOrUpdateDocuments`**| Async bulk creation or update of documents in an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$documents` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#bulk_indexing)\n**`createDocument`**| Create a new document in an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$documentExternalId` (required) \u003cbr /\u003e   - `$documentFields` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#add-document)\n**`createDocumentType`**| Create a new document type in an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeName` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#add-documenttype)\n**`createDocuments`**| Bulk creation of documents in an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$documents` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#bulk_create)\n**`createEngine`**| Create a new API based engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$engineLanguage`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/engines#create)\n**`createOrUpdateDocument`**| Create or update a document in an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$documentExternalId` (required) \u003cbr /\u003e   - `$documentFields` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#add-document)\n**`createOrUpdateDocuments`**| Bulk creation or update of documents in an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$documents` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#bulk_create_or_update_verbose)\n**`deleteDocument`**| Delete a document from the engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$externalId` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#delete-external-id)\n**`deleteDocumentType`**| Delete a document type by id.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#documenttypes-delete)\n**`deleteDocuments`**| Bulk delete of documents in an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$documents` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#bulk_destroy)\n**`deleteEngine`**| Delete an engine by name.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/engines#destroy)\n**`getAutoselectsCountAnalyticsDocumentType`**| Retrieve number of autoselects (number of clicked results in the autocomplete) per day over a period for a document type.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$startDate`\u003cbr /\u003e   - `$endDate`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#autoselects)\n**`getAutoselectsCountAnalyticsEngine`**| Retrieve number of autoselects (number of clicked results in the autocomplete) per day over a period for an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$startDate`\u003cbr /\u003e   - `$endDate`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#autoselects)\n**`getClicksCountAnalyticsDocumentType`**| Retrieve number of clicks per day over a period for a document type.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$startDate`\u003cbr /\u003e   - `$endDate`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#clicks)\n**`getClicksCountAnalyticsEngine`**| Retrieve number of clicks per day over a period for an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$startDate`\u003cbr /\u003e   - `$endDate`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#clicks)\n**`getDocument`**| Retrieve a document from the engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$externalId` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#document-single)\n**`getDocumentReceipts`**| Check the status of document receipts issued by aync bulk indexing.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$receiptIds` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#bulk_create_or_update_verbose)\n**`getDocumentType`**| Get a document type by id.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#documenttypes-single)\n**`getEngine`**| Retrieves an engine by name.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/engines#one-engine)\n**`getSearchCountAnalyticsDocumentType`**| Get the number of searches per day for an document type.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$startDate`\u003cbr /\u003e   - `$endDate`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#searches)\n**`getSearchCountAnalyticsEngine`**| Get the number of searches per day for an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$startDate`\u003cbr /\u003e   - `$endDate`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#searches)\n**`getTopNoResultQueriesAnalyticsDocumentType`**| Retrieve top queries with no result and usage count over a period for a document type.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$startDate`\u003cbr /\u003e   - `$endDate`\u003cbr /\u003e   - `$currentPage`\u003cbr /\u003e   - `$pageSize`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#top_no_result_queries)\n**`getTopNoResultQueriesAnalyticsEngine`**| Retrieve top queries with no result and usage count over a period for an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$startDate`\u003cbr /\u003e   - `$endDate`\u003cbr /\u003e   - `$currentPage`\u003cbr /\u003e   - `$pageSize`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#top_no_result_queries)\n**`getTopQueriesAnalyticsDocumentType`**| Retrieve top queries and usage count over a period for a document type.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$startDate`\u003cbr /\u003e   - `$endDate`\u003cbr /\u003e   - `$currentPage`\u003cbr /\u003e   - `$pageSize`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#top_queries)\n**`getTopQueriesAnalyticsEngine`**| Retrieve top queries and usage count over a period for an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$startDate`\u003cbr /\u003e   - `$endDate`\u003cbr /\u003e   - `$currentPage`\u003cbr /\u003e   - `$pageSize`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#top_queries)\n**`listDocumentTypes`**| List all document types for an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#documenttypes-all)\n**`listDocuments`**| List all documents in an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#document-all)\n**`listEngines`**| Retrieves all engines with optional pagination support.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$currentPage`\u003cbr /\u003e   - `$pageSize`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/engines#list)\n**`logClickthrough`**| Record a clickthrough for a particular result.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$documentId` (required) \u003cbr /\u003e   - `$queryText` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/analytics#recording_clickthroughs)\n**`search`**| Run a search request accross an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$queryText` (required) \u003cbr /\u003e   - `$searchRequestParams`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/searching)\n**`suggest`**| Run an autocomplete search request accross an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$queryText` (required) \u003cbr /\u003e   - `$searchRequestParams`\u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/autocomplete)\n**`updateDocumentFields`**| Update fields of a document.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$externalId` (required) \u003cbr /\u003e   - `$fields` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#updating_fields)\n**`updateDocuments`**| Bulk update of documents in an engine.\u003cbr/\u003e \u003cbr/\u003e **Parameters :** \u003cbr /\u003e  - `$engineName` (required) \u003cbr /\u003e   - `$documentTypeId` (required) \u003cbr /\u003e   - `$documents` (required) \u003cbr/\u003e|[Endpoint Documentation](https://swiftype.com/documentation/site-search/indexing#bulk_update)\n\n## Development\n\nCode for the endpoints is generated automatically using a custom version of [OpenAPI Generator](https://github.com/openapitools/openapi-generator).\n\nTo regenerate endpoints, use the docker laucher packaged in `vendor/bin`:\n\n```bash\n./vendor/bin/elastic-openapi-codegen.sh\n```\n\nThe custom generator will be built and launched using the following Open API spec file : `resources/api/api-spec.yml`.\n\nYou can then commit and PR the modified api-spec file and your endpoints code files.\n\nThe client class and readme may be changed in some cases. Do not forget to include them in your commit!\n\n## FAQ 🔮\n\n### Where do I report issues with the client?\n\nIf something is not working as expected, please open an [issue](https://github.com/elastic/site-search-php/issues/new).\n\n### Where can I find the full API documentation ?\n\nYour best bet is to read the [documentation](https://swiftype.com/documentation/site-search).\n\n### Where else can I go to get help?\n\nYou can checkout the [Elastic community discuss forums](https://discuss.elastic.co/c/site-search).\n\n## Contribute 🚀\n\nWe welcome contributors to the project. Before you begin, a couple notes...\n\n+ Before opening a pull request, please create an issue to [discuss the scope of your proposal](https://github.com/elastic/site-search-php/issues).\n+ Please write simple code and concise documentation, when appropriate.\n\n## License 📗\n\n[Apache 2.0](https://github.com/elastic/site-search-php/blob/master/LICENSE) © [Elastic](https://github.com/elastic)\n\nThank you to all the [contributors](https://github.com/elastic/site-search-php/graphs/contributors)!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felastic%2Fsite-search-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felastic%2Fsite-search-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felastic%2Fsite-search-php/lists"}