{"id":25952137,"url":"https://github.com/sharpapi/sharpapi-laravel-client","last_synced_at":"2025-04-09T19:17:17.666Z","repository":{"id":209171262,"uuid":"723396699","full_name":"sharpapi/sharpapi-laravel-client","owner":"sharpapi","description":"SharpAPI - Automate with AI-powered API. Leverage AI API for workflows automation in E-Commerce, Marketing, Content Management, HR Tech, Travel, and more.","archived":false,"fork":false,"pushed_at":"2025-03-04T07:05:58.000Z","size":150,"stargazers_count":37,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-09T19:17:08.989Z","etag":null,"topics":["ai","ai-powered","api","artificial-intelligence","content-analysis","content-automation","e-commerce","e-commerce-automation","gpt-4","hospitality-automation","hrtech","hrtech-automation","laravel","marketing-automation","php","php8","sharpapi","travel-automation","workflow","workflow-automation"],"latest_commit_sha":null,"homepage":"https://sharpapi.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sharpapi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2023-11-25T14:38:02.000Z","updated_at":"2025-03-04T07:06:02.000Z","dependencies_parsed_at":"2024-11-10T08:20:40.961Z","dependency_job_id":"7aefe836-dde9-4b8f-a246-0478babcd0ca","html_url":"https://github.com/sharpapi/sharpapi-laravel-client","commit_stats":null,"previous_names":["sharpapi/laravel-client","sharpapi/sharpapi-laravel-client"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharpapi%2Fsharpapi-laravel-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharpapi%2Fsharpapi-laravel-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharpapi%2Fsharpapi-laravel-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sharpapi%2Fsharpapi-laravel-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sharpapi","download_url":"https://codeload.github.com/sharpapi/sharpapi-laravel-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248094988,"owners_count":21046770,"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":["ai","ai-powered","api","artificial-intelligence","content-analysis","content-automation","e-commerce","e-commerce-automation","gpt-4","hospitality-automation","hrtech","hrtech-automation","laravel","marketing-automation","php","php8","sharpapi","travel-automation","workflow","workflow-automation"],"created_at":"2025-03-04T14:42:55.793Z","updated_at":"2025-04-09T19:17:17.646Z","avatar_url":"https://github.com/sharpapi.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n![SharpAPI GitHub cover](https://sharpapi.com/sharpapi-github-laravel-bg.jpg \"SharpAPI Laravel Client\")\n\n# SharpAPI Laravel Client SDK\n\n### 🚀 Automate workflows with AI-powered API\n\n## Leverage AI API to streamline workflows in E-Commerce, Marketing, Content Management, HR Tech, Travel, and more.\n\n[![Latest Version on Packagist](https://img.shields.io/packagist/v/sharpapi/sharpapi-laravel-client.svg?style=flat-square)](https://packagist.org/packages/sharpapi/sharpapi-laravel-client)\n[![Total Downloads](https://img.shields.io/packagist/dt/sharpapi/sharpapi-laravel-client.svg?style=flat-square)](https://packagist.org/packages/sharpapi/sharpapi-laravel-client)\n\nSee more at [SharpAPI.com Website \u0026raquo;](https://sharpapi.com/)\n\n---\n\n## Requirements\n\n- PHP \u003e= 8.1\n- Laravel \u003e= 9.0\n\nIf you don't use Laravel then you can find\n[Generic SharpAPI PHP Client here \u0026raquo;](https://github.com/sharpapi/sharpapi-php-client)\n\n---\n\n## Installation\n\nFollow these steps to install and set up the SharpAPI Laravel Client package.\n\n1. Install the package via `composer`:\n\n```bash\ncomposer require sharpapi/sharpapi-laravel-client\n```\n\n2. Register at [SharpAPI.com](https://sharpapi.com/) and get the API key.\n\n3. Set the API key inside `.env`\n\n```bash\nSHARP_API_KEY=key\n```\n\n4. **[OPTIONAL]** Publish the configuration file `sharpapi-client.php`.\n\n\u003e **Note:** You no longer need to publish the configuration file to use this package. By default, the package will use sensible default values. You only need to publish the configuration if you wish to customize it.\n\n```bash\nphp artisan vendor:publish --tag=sharpapi-laravel-client\n```\n\n---\n\n## ⛲ What can it do for you?\n* 🛒 **E-commerce**\n    - Quickly generate engaging product introductions to attract customers.\n    - Automatically create personalized thank-you emails for enhanced customer experience.\n    - Streamline product categorization for a well-organized catalog.\n    - Sentiment Analysis: Understand and analyze sentiment in product reviews for data-driven decision-making.\n* 📝️ **Content \u0026 Marketing Automation**\n    - Easily translate text for a global audience.\n    - Paraphrase and proofread any text (including grammar check)\n    - Spam Content Detection: Identify and filter out spam content effectively.\n    - Contact Information Extraction: Extract phone numbers and email addresses from non-standard formats for streamlined communication.\n    - Generate concise summaries and unique keywords/tags for improved content consumption.\n    - Boost SEO efforts by automatically generating META tags based on content.\n* ‍💻 **HR Tech**\n  - Generate complex job descriptions effortlessly, saving time in the hiring process.\n  - Skills and Position Insights: Identify related job positions and skills to streamline recruitment.\n  - Automated Resume Parsing: Efficiently parse and extract information from resumes files for easy processing.\n* ✈️ **Travel, Tourism \u0026 Hospitality**\n    - Analyze sentiment in travel reviews to improve services.\n    - Streamline categorization for tours, activities, and hospitality products.\n\n---\n\n## Features\n\nPlease refer to the official:\n\n- [API Documentation](https://sharpapi.com/documentation)\n- **Multi-language Support**:\n  Supporting 80 languages for every content or data analysis API endpoint.\n  [Check the list here](https://botpress.com/blog/list-of-languages-supported-by-chatgpt).\n- **Easy-to-Use RESTful Format**:\n  With standardized set of endpoints - gain valuable insights through analysis endpoints, covering product categories,\n  skills, and job positions, providing relevant scores.\n- **Always the same, clean data formats**:\n  Rest assured with consistent, predictable JSON format\n  for all returned data. No need to worry about fuzzy AI data.\n- **Tech Support**:\n  Crafted by developers for developers, we provide continuous\n  assistance throughout your journey.\n\n---\n\n## Usage\n\nYou can inject `SharpApiService` class or use the facade `\\SharpApiService` singleton.\n\nWe recommend you to use Laravel queuing system to optimize dispatched jobs\nand the process of checking the results, especially if you process bigger batches of data.\n\nTypical use case require these steps:\n\n1. Dispatch one of the available AI processing methods (this will return job processing status URL)\n2. Run `fetchResults($statusUrl)` method which operates in polling mode, sending underneath\n   requests every 10 seconds for 180 seconds (these values [can be customized](#optional-custom-configuration)).\n3. `SharpApiJob` object will be returned.\n4. For a job finished with `success` return status you can obtain the results with one\n   of the methods, for example `$jobResultJson = $jobResult-\u003egetResultJson()`.\n\n**Each dispatched job usually takes somewhere between a couple of seconds to a minute.**\n\nAfter that period a returned job will usually have `success` status and it's results will\nbe available for further processing.\nEach API method returns different return format.\n[Go to List of API methods/endpoints below for details\u0026raquo;](#list-of-api-methodsendpoints)\n\nOur API guarantees to return correct format every time. AI engines that SharpAPI\nuse in rare cases have a tendency to misbehave and timeout\nor return incorrect data.\nIn those cases the returned `status` for the job will be `failed`.\nYou can rerun the exact same job request in that case.\n\nAs long as the job is still being processed by our engine it will keep\nreturning `pending` status.\n\n### Controller usage example\n\n```php\n\u003c?php\n\nnamespace App\\Http\\Controllers;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse SharpAPI\\SharpApiService\\SharpApiService;\n\nclass SharpTest extends Controller\n{\n    public function __construct(public SharpApiService $sharpApiService)\n    {\n    }\n\n    /**\n     * @throws GuzzleException\n     */\n    public function detect_phones(): void\n    {\n        $statusUrl = $this-\u003esharpApiService-\u003edetectPhones(\n            'Where to find us? Call with a sales tech advisor:\n            Call: 1800-394-7486 or our Singapore office +65 8888 8888'\n        );\n        \n        $result = $this-\u003esharpApiService-\u003efetchResults($statusUrl);\n        \n        dd($result-\u003egetResultJson());\n        /* returned:\n        [\n            {\n                \"detected_number\": \"1800-394-7486\",\n                \"parsed_number\": \"+18003947486\"\n            },\n            {\n                \"detected_number\": \"+65 8888 8888\",\n                \"parsed_number\": \"+6588888888\"\n            }\n        ]\n         */\n    }\n}\n```\n\n#### Guzzle Exceptions\nThe underlying HTTP requests are facilitated by\n[Laravel HTTP Client/Guzzle](https://laravel.com/docs/10.x/http-client),\nmaking it advisable to familiarize yourself with common\n[Guzzle Exceptions](https://docs.guzzlephp.org/en/stable/quickstart.html#exceptions).\n```php\nuse GuzzleHttp\\Exception\\ClientException;\n\n// Step 1: dispatch the job to the API with one of the methods, for example:\ntry {\n    $statusUrl = \\SharpApiService::summarizeText(\n        $text, \n        'German',   // optional language\n        500,    // optional length\n        'neutral voice tone'    // optional voice tone\n      );\n    // $statusUrl example value: 'http://sharpapi.com/api/v1/job/status/75acb6dc-a975-4969-9ef1-c62cebc511cb'\n} catch (ClientException $e) {\n     $e-\u003egetResponse()\n}\n\n// Step 2: request to check job status in polling mode and wait for the result\n$jobResult = \\SharpApiService::fetchResults($statusUrl);\n\n// Step 3: get results of dispatched API job, f.e. this returns job result as a prettied JSON\n$jobResultJson = $jobResult-\u003egetResultJson();\n// ..or PHP array:\n$jobResultArray = $jobResult-\u003egetResultArray();\n// ..or PHP stdClass:\n$jobResultObject = $jobResult-\u003egetResultObject();\n```\n\n---\n\n## OPTIONAL custom configuration\n\nSo you can overwrite these values with `.env` settings:\n\n```php\nSHARP_API_KEY=XXX_key_XXX\nSHARP_API_JOB_STATUS_POLLING_WAIT=200\nSHARP_API_JOB_STATUS_USE_POLLING_INTERVAL=true\nSHARP_API_JOB_STATUS_POLLING_INTERVAL=5\nSHARP_API_BASE_URL=MOCK_SERVER\n```\n\n---\n\n## 📋 List of API methods/endpoints\n\nEach method always returns `SharpApiJob` object, where its\n`getResultJson / getResultArray / getResultObject`\nmethods will return different data structure.\nPlease refer to the detailed examples provided\nat [SharpAPI.com](https://sharpapi.com/)\n\nFor methods that have `language` parameter you can also use\n`SharpApiLanguages` Enum values to make your code more readable.\n\n---\n\n### 🧑‍💻 HR\n\n#### ⭐ Parse Resume/CV File\n\nParses a resume (CV) file from multiple formats (PDF/DOC/DOCX/TXT/RTF) and returns an extensive object of data points.\n\nAn optional output language parameter can also be provided (`English` value is set as the default one) .\n\n```php\n$statusUrl = \\SharpApiService::parseResume('/test/resume.pdf', 'English');\n```\n\n#### ⭐ Generate Job Description\n\nBased on the list of extensive parameters this endpoint provides concise job details in the response format, including\nthe short description, job requirements, and job responsibilities.\nThe only mandatory parameter is `name`.\n\nThis functionality utilizes a specialized `DTO` class (`Data Transfer Object`) parameter\nnamed `JobDescriptionParameters` to aid in the validation of input parameters.\nOnly the `name` parameter in the constructor of this `DTO` is mandatory.\n\nYou can set your preferred writing style by providing a voice_tone parameter.\nIt can be adjectives like `funny` or `joyous`, or even the name of a famous writer.\n\nThis API method also provides an optional context parameter, which can be used \nto supply additional flexible instructions for content processing.\n\n```php\n$jobDescriptionParameters = new JobDescriptionParameters(\n    name: \"PHP Senior Engineer\",\n    company_name: \"ACME LTD\",   // optional\n    minimum_work_experience: \"5 years\",   // optional\n    minimum_education: \"Bachelor Degree\",   // optional\n    employment_type: \"full time\",   // optional\n    required_skills: ['PHP8', 'Laravel'],   // optional\n    optional_skills: ['AWS', 'Redis'],   // optional\n    country: \"United Kingdom\",   // optional\n    remote: true,   // optional\n    visa_sponsored: true,   // optional\n    voice_tone: 'Professional and Geeky',   // optional voice tone\n    context: null,   // optional context, additional AI processing instructions\n    language: null   // optional output language\n);\n\n$statusUrl = \\SharpApiService::generateJobDescription($jobDescriptionParameters);\n```\n\n#### ⭐ Related Skills\n\nGenerates a list of related skills with their weights as a float\nvalue (1.0-10.0) where 10 equals 100%, the highest relevance score.\n\nOnly first parameter (`name`) is required.\n\nYou can limit the output with the `max_quantity` parameter.\n\n```php\n$statusUrl = \\SharpApiService::relatedSkills(\n    'MySQL', \n    'English',   // optional language\n    10  // optional quantity\n  );\n```\n\n#### ⭐ Related Job Positions\n\nGenerates a list of related job positions with their weights as\nfloat value (1.0-10.0) where 10 equals 100%, the highest relevance score.\n\nOnly first parameter (`name`) is required.\n\nYou can limit the output with the `max_quantity` parameter.\n\n```php\n$statusUrl = \\SharpApiService::relatedJobPositions(\n    'Senior PHP Engineer', \n    'English',   // optional language\n    10  // optional quantity\n  );\n```\n\n---\n\n\n### 🛒 E-commerce\n\n#### ⭐ Product Review Sentiment\n\nParses the customer's product review and provides its sentiment (POSITIVE/NEGATIVE/NEUTRAL)\nwith a score between 0-100%. Great for sentiment report processing for any online store.\n\n```php\n$statusUrl = \\SharpApiService::productReviewSentiment('customer review contents');\n```\n\n#### ⭐ Product Categories\n\nGenerates a list of suitable categories for the product with relevance\nweights as a float value (1.0-10.0) where 10 equals 100%, the highest relevance score.\nProvide the product name and its parameters to get the best category matches possible.\nComes in handy with populating product catalogue data and bulk products' processing.\n\nYou can limit the output with the `max_quantity` parameter.\n\nYou can set your preferred writing style by providing a `voice_tone` parameter.\nIt can be adjectives like `funny` or `joyous`, or even the name of a famous writer.\n\nWithin an additional optional parameter context, you can provide a list of other categories \nthat will be taken into consideration during the mapping process \n(for example your current e-commerce categories).\n\n\n```php\n$statusUrl = \\SharpApiService::productCategories(\n    'Sony Playstation 5', \n    'English',   // optional language\n    5,   // optional quantity\n    'Tech-savvy',   // optional voice tone\n    'Game Console, PS5 Console'    // optional context, current categories to match\n  );\n```\n\n#### ⭐ Generate Product Intro\n\nGenerates a shorter version of the product description. Provide as many details\nand parameters of the product to get the best marketing introduction possible.\nComes in handy with populating product catalog data and bulk products processing.\n\nYou can limit the output with the `max_length` parameter. Please keep in mind that `max_length` serves as a strong \nsuggestion for the Language Model, rather than a strict requirement, to maintain the general sense of the outcome.\n\nYou can set your preferred writing style by providing a `voice_tone` parameter.\nIt can be adjectives like `funny` or `joyous`, or even the name of a famous writer.\n\n```php\n$statusUrl = \\SharpApiService::generateProductIntro(\n    'Sony Playstation 5', \n    SharpApiLanguages::ENGLISH,   // optional language\n    300,   // optional length\n    'Funny'   // optional voice tone\n  );\n```\n\n#### ⭐ Generate Thank You E-mail\n\nGenerates a personalized thank-you email to the customer after the purchase.\nThe response content does not contain the title, greeting or sender info at the end,\nso you can personalize the rest of the email easily.\n\nYou can limit the output with the max_length parameter. Please keep in mind that `max_length` serves \nas a strong suggestion for the Language Model, rather than a strict requirement, \nto maintain the general sense of the outcome.\n\nYou can set your preferred writing style by providing a `voice_tone` parameter.\nIt can be adjectives like funny or joyous, or even the name of a famous writer.\n\nThis API method also provides an optional context parameter, which can be used to supply additional\nflexible instructions for content processing.\n\n```php\n$statusUrl = \\SharpApiService::generateThankYouEmail(\n    'Sony Playstation 5', \n    SharpApiLanguages::ENGLISH,    // optional language\n    250,    // optional length\n    'Neutral',    // optional voice tone\n    'Must invite customer to visit again before Holidays'   // optional context\n   );\n```\n\n---\n\n\n### 📝️ Content\n\n#### ⭐ Translate Text\n\nTranslates provided text to selected language. 80 languages are supported.\nPlease check included `SharpApiLanguages` _Enum_ class for details.\n\nYou can set your preferred writing style by providing a `voice_tone` parameter.\nIt can be adjectives like funny or joyous, or even the name of a famous writer.\n\nAn optional `context` parameter is also available. It can be used to provide more context to the translated text,\nlike the use case example or some additional explanations.\n\n```php\n$statusUrl = \\SharpApiService::translate(\n    'turn', \n    SharpApiLanguages::FRENCH,    // optional language\n    'neutral',    // optional voice tone\n    'to turn a page'   // optional context\n    );\n\n// will result in :\n// {\"content\": \"tourner\", \"to_language\": \"French\", \"from_language\": \"English\"}\n```\n\n#### ⭐ Paraphrase / Rephrase\n\nGenerates a paraphrased version of the provided text.\nOnly the `content` parameter is required. You can define the output language,\nmaximum character length, and tone of voice. \n\nAdditional instructions on how to process the text can be provided in the context parameter.\nPlease keep in mind that `max_length` serves as a strong suggestion\nfor the Language Model, rather than a strict requirement,\nto maintain the general sense of the outcome.\n\nYou can set your preferred writing style by providing an optional `voice_tone` parameter.\nIt can be adjectives like `funny` or `joyous`, or even the name of a famous writer.\n\nThis API method also provides an optional `context` parameter,\nwhich can be used to supply additional flexible instructions for content processing.\n\n```php\n$statusUrl = \\SharpApiService::paraphrase(\n    $text, \n    SharpApiLanguages::FRENCH,   // optional language\n    500, // optional length\n    'neutral',    // optional voice tone\n    'avoid using abbreviations'   // optional context\n    );\n```\n\n#### ⭐ Proofread Text + Grammar Check \n\nProofreads (and checks grammar) a provided text.\n\n```php\n$statusUrl = \\SharpApiService::proofread($text);\n```\n\n#### ⭐ Detect Spam\n\nChecks if provided content passes a spam filtration test.\nProvides a percentage confidence score and an explanation\nfor whether it is considered spam or not.\nThis information is useful for moderators to make a final decision.\n\n```php\n$statusUrl = \\SharpApiService::detectSpam($text);\n```\n\n#### ⭐ Detect Phones Numbers\n\nParses the provided text for any phone numbers and returns the original detected\nversion and its E.164 format. Might come in handy in the case of processing\nand validating big chunks of data against phone numbers or f.e. if you want\nto detect phone numbers in places where they're not supposed to be.\n\n```php\n$statusUrl = \\SharpApiService::detectPhones($text);\n```\n\n#### ⭐ Detect Emails\n\nParses the provided text for any possible emails. Might come in handy in case\nof processing and validating big chunks of data against email addresses\nor f.e. if you want to detect emails in places where they're not supposed to be.\n\n```php\n$statusUrl = \\SharpApiService::detectEmails($text);\n```\n\n#### ⭐ Generate Keywords/Tags\n\nGenerates a list of unique keywords/tags based on the provided content.\n\nYou can limit the output with the `max_quantity` parameter.\n\nYou can set your preferred writing style by providing a `voice_tone` parameter.\n\n```php\n$statusUrl = \\SharpApiService::generateKeywords(\n    $text, \n    'English',    // optional language\n    5,  // optional length\n    'Freaky \u0026 Curious',    // optional voice tone\n    'add emojis!' // optional extra context instructions for content processing\n  );\n```\n\n#### ⭐ Summarize Text\n\nGenerates a summarized version of the provided content. Perfect for generating\nmarketing introductions of longer texts.\n\nYou can limit the output with the `max_length` parameter. \nPlease keep in mind that `max_length` serves as a strong suggestion for the Language Model, \nrather than a strict requirement, to maintain the general sense of the outcome.\n\nYou can set your preferred writing style by providing a `voice_ton`e parameter.\nIt can be adjectives like `funny` or `joyous`, or even the name of a famous writer.\n\n```php\n$statusUrl = \\SharpApiService::summarizeText(\n    $text, \n    'English',     // optional language\n    'David Attenborough',    // optional voice tone\n    'add emojis!' // optional extra context instructions for content processing\n  );\n```\n\n---\n\n\n### 🗒 SEO\n\n#### ⭐ Generate SEO Tags\n\nGenerates all most important META tags based on the content provided. Make sure to include\nlink to the website and pictures URL to get as many tags populated as possible.\n\nYou can set your preferred writing style by providing a `voice_ton`e parameter.\nIt can be adjectives like `funny` or `joyous`, or even the name of a famous writer.\n\n```php\n$statusUrl = \\SharpApiService::generateSeoTags(\n    $text, \n    'English',      // optional language\n    'David Attenborough'    // optional voice tone\n  );\n```\n\n---\n\n\n### ✈️ Travel, Tourism \u0026 Hospitality\n\n#### ⭐ Travel Review Sentiment\n\nParses the Travel/Hospitality product review and provides its sentiment\n(POSITIVE/NEGATIVE/NEUTRAL) with a score between 0-100%.\nGreat for sentiment report processing for any online store.\n\n```php\n$statusUrl = \\SharpApiService::travelReviewSentiment($text);\n```\n\n#### ⭐ Tours \u0026 Activities Product Categories\n\nGenerates a list of suitable categories for the Tours \u0026 Activities product\nwith relevance weights as float value (1.0-10.0) where 10 equals 100%,\nthe highest relevance score. Provide the product name and its parameters\nto get the best category matches possible. Comes in handy with populating\nproduct catalogue data and bulk product processing.\nOnly first parameter `productName` is required.\n\nYou can limit the output with the `max_quantity` parameter.\n\nYou can set your preferred writing style by providing a `voice_tone` parameter.\nIt can be adjectives like `funny` or `joyous`, or even the name of a famous writer.\n\nWithin an additional optional parameter `context`, you can provide a list of other categories\nthat will be taken into consideration during the mapping process\n(for example your current e-commerce categories).\n\n\n```php\n$statusUrl = \\SharpApiService::toursAndActivitiesProductCategories(\n        'Oasis of the Bay'\n        'Ha Long',     // optional city\n        'Vietnam',     // optional country\n        'English',     // optional language\n        10,     // optional quantity\n        'Adventurous',     // optional voice tone\n        'Bay Hotels, Ha Long Hotels'     // optional context, current categories to match\n    );\n```\n\n#### ⭐ Hospitality Product Categories\n\nGenerates a list of suitable categories for the Hospitality type product\nwith relevance weights as float value (1.0-10.0) where 10 equals 100%,\nthe highest relevance score. Provide the product name and its parameters\nto get the best category matches possible. Comes in handy with populating\nproducts catalogs data and bulk products' processing.\nOnly first parameter `productName` is required.\n\nYou can limit the output with the `max_quantity` parameter.\n\nYou can set your preferred writing style by providing a `voice_tone` parameter.\nIt can be adjectives like `funny` or `joyous`, or even the name of a famous writer.\n\nWithin an additional optional parameter `context`, you can provide a list of other categories\nthat will be taken into consideration during the mapping process\n(for example your current e-commerce categories).\n\n```php\n$statusUrl = \\SharpApiService::hospitalityProductCategories(\n        'Hotel Crystal 大人専用'\n        'Tokyo',     // optional city\n        'Japan',    // optional country\n        'English',     // optional language\n        10,    // optional quantity\n        'Adventurous',    // optional voice tone\n        'Tokyo Hotels, Crystal Hotels'     // optional context, current categories to match\n    );\n```\n\n---\n\n### 🤖 Technical API Endpoints\n\n#### ⭐ Subscription information / quota check\nEndpoint to check details regarding the subscription's current period\n\n```php\n$statusUrl = \\SharpApiService::quota();\n```\n\nwill result in:\n```json\n{\n    \"timestamp\": \"2024-03-19T12:49:41.445736Z\",\n    \"on_trial\": false,\n    \"trial_ends\": \"2024-03-17T07:57:46.000000Z\",\n    \"subscribed\": true,\n    \"current_subscription_start\": \"2024-03-18T12:37:39.000000Z\",\n    \"current_subscription_end\": \"2024-04-18T12:37:39.000000Z\",\n    \"subscription_words_quota\": 100000,\n    \"subscription_words_used\": 9608,\n    \"subscription_words_used_percentage\": 0.1\n}\n```\n\n`subscription_words_used_percentage` is a percentage of current monthly quota usage\nand might serve as an alert to the user of the depleted credits.\nWith a value above 80%, it's advised to subscribe to more credits\nat https://sharpapi.com/dashboard/credits to avoid service disruption.\n\nThese values are also available in the Dashboard at https://sharpapi.com/dashboard\n\n#### ⭐ Ping\n\nSimple PING endpoint to check the availability of the API and it's internal timze zone (timestamp).\n\n```php\n$statusUrl = \\SharpApiService::ping();\n```\n\nwill result in:\n```json\n{\n  \"ping\": \"pong\",\n  \"timestamp\": \"2024-03-12T08:50:11.188308Z\"\n}\n```\n\n---\n\n\n### Do you think our API is missing some obvious functionality?\n\n- [Please let us know via GitHub »](https://github.com/sharpapi/sharpapi-laravel-client/issues)\n- or [Join our Telegram Group »](https://t.me/sharpapi_community)\n\n---\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n---\n\n## Credits\n\n- [A2Z WEB LTD](https://github.com/a2zwebltd)\n- [Dawid Makowski](https://github.com/makowskid)\n- Boost your [Laravel AI](https://sharpapi.com/) capabilities!\n\n---\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n\n---\n## Social Media\n\n🚀 For the latest news, tutorials, and case studies, don't forget to follow us on:\n- [SharpAPI X (formerly Twitter)](https://x.com/SharpAPI)\n- [SharpAPI YouTube](https://www.youtube.com/@SharpAPI)\n- [SharpAPI Vimeo](https://vimeo.com/SharpAPI)\n- [SharpAPI LinkedIn](https://www.linkedin.com/products/a2z-web-ltd-sharpapicom-automate-with-aipowered-api/)\n- [SharpAPI Facebook](https://www.facebook.com/profile.php?id=61554115896974)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsharpapi%2Fsharpapi-laravel-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsharpapi%2Fsharpapi-laravel-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsharpapi%2Fsharpapi-laravel-client/lists"}