{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"d1520ec0-1004-4d7f-9d93-21a358249856","name":"Packt API Documentation (v2)","description":"# Overview\n\nWelcome to the documentation for Packt API v2, designed to provide partners with access to the Packt library of products, which includes eBooks, Print books, Video, Audio, Courses and more. For a comprehensive introduction, the Packt partnership team would be the ideal point of contact for our partners. The API v2 offers partners the capability to retrieve product information, metadata, contributor details, chapter information, available formats, and content (files) for each product. These files consist of ebooks (in PDF format), videos (in ZIP, MP4 and SCORM formats), code bundles (in ZIP format), and other related files. Moreover, API v2 allows partners to place orders for eBooks and print books, although this feature has limited access. Detailed explanations of all endpoints can be found in the API reference menu.\n\nTo ensure secure communication, API v2 operates exclusively over HTTPS, with all traffic encrypted through SSL. Any HTTP requests are automatically redirected to their HTTPS equivalents. It is important to note that support for SSL 3.0 has been disabled, and we strongly recommend utilizing TLS 1.2 or higher. All API access is facilitated through the base URL [https://api.packt.com/](https://api.packt.com/), and data is transmitted and received in JSON format.\n\nPlease be aware that the API Gateway is not intended for partners seeking to build serverless applications. Instead, it is expected that partners will retrieve content from our API and implement their own caching mechanisms.\n\nIf you have any further questions or require additional assistance, please feel free to reach out to [partners@packt.com](https://mailto:partners@packt.com)\n\n# Getting Started\n\nTo gain access to API v2, it is necessary to register as a channel partner. This process involves establishing a commercial services agreement with Packt, which will be completed once all required details are finalized. Upon successful registration, you and your team will be added as channel partners within our internal system. Subsequently, you will be granted access to the API v2 dashboard, enabling you to generate tokens and utilize the available APIs. In the following section, we will provide comprehensive information on authentication procedures and token management.\n\nTo initiate the channel partner registration process, kindly send an email to: [partners@packt.com](https://mailto:partners@packt.com)\n\n# Authentication\n\nPackt API v2 implements token-based authentication, requiring the inclusion of an access token in all requests made to the API. These access tokens are commonly referred to as \"bearer tokens.\" You have the flexibility to pass the token either through the header or as a query parameter in your API requests.\n\nTo obtain an access token, you will need to create one using the token manager available at [this link](https://api.packt.com/v2/token-manager). We strongly advise generating separate tokens for each application you develop. This practice allows you to easily revoke a token if necessary, minimizing any potential impact.\n\nBy default, an access token has a validity period of two years. However, you have the ability to customize the expiry duration based on your specific requirements. To ensure you remain informed, the Packt API will send email notifications at intervals of 60 days, 30 days, and 7 days prior to the token's expiration. These alerts will prompt you to take the necessary actions to ensure uninterrupted API access.\n\nThere are two methods to include the access token when making requests to the Packt API: via the HTTP header or as a query parameter.\n\n**Token in Header:**\n\nOne approach is to include the API token in the request's HTTP header. To do this, you need to add an \"Authorization\" header with a value of \"Bearer\" followed by the API token.\n\nFor example, using the curl command-line tool:\n\n``` bash\n$ curl -H \"Authorization: Bearer <api token>\" https://api.packt.com/api/v2/test\n\n ```\n\nIn this example, the API token is sent in the \"Authorization\" header.\n\n**Token as a Query Parameter:**\n\nAlternatively, you can pass the API token as a query parameter in the request URL. In this case, you need to include the token using the parameter key \"token\".\n\nFor example, using the curl command-line tool:\n\n``` bash\n$ curl \"https://api.packt.com/api/v2/test?token=<api token>\"\n\n ```\n\nIn this example, the API token is appended to the URL as the value for the \"token\" query parameter.\n\nBoth methods serve the purpose of authenticating your request and ensuring that you have the necessary authorization to access the Packt API.\n\n**Sandbox Tokens (Only for Orders API)**\n\nFor your development, testing, or staging environments, you have the option to designate a token as a sandbox token. This is specifically applicable to partners who utilize the Orders endpoints.\n\nBy assigning a token as a sandbox token, you can effectively test the Order feature without actually executing a real transaction. This allows you to simulate and verify the functionality of the Orders API in a controlled environment.\n\nUsing sandbox tokens enables you to ensure the robustness and accuracy of your integration with the Packt API before deploying it to a production environment.  \nFor channel partners who do not utilize the Orders endpoint, there is no need to enable or disable the Sandbox checkbox when creating a token. This setting is specific to the functionality provided by the Orders API and does not have any impact on partners who are not utilizing this particular endpoint.\n\n# Access Permissions\n\nAccess permissions are enforced for all our APIs to ensure secure and controlled access. These permissions are granted to Channel Partners through our internal systems. Permissions are assigned at the group level, and any user added to a specific group inherits the associated access permissions. API tokens created under these users will also inherit the corresponding permissions.\n\nTo verify your current access permissions, you can make use of the Test endpoint.\n\nPlease note that not all users have automatic access to our APIs. To gain access to the Packt APIs, you will need to submit a support request to our Partners team. Kindly reach out to [partners@packt.com](https://mailto:partners@packt.com) in order to initiate the process of accessing the Packt API.\n\nThe table below displays the different access permissions available and their corresponding code and rights:\n\n| Access Permission | Code | Rights |\n| --- | --- | --- |\n| API Access | API Access | Default access granted to tokens for API interaction |\n| Product API | Product API | Access to our catalogue and product information |\n| Download Content | Download Content | Ability to retrieve our titles through the API in ePub, PDF, Video etc formats. Allocation of titles is required, please refer to the entitlement endpoint in the content section. |\n| Partner Portal | Partner Portal | Special access provided to Channel Partners without a dedicated development team. Partners Portal offers a less technical, self-serve interface to access the APIs. |\n| ORDER | ORDER | Ability to transact through the API, including placing orders and retrieving order status. |\n\nThese permissions are tailored based on your specific requirements. If you need access to any of these permissions, please contact our support team by visiting our [contact page](https:///api-docs#section/Overview/Contact).\n\n# Rate Limit\n\nRate limiting is a mechanism used to control the number of requests made per unit of time. This practice is implemented to ensure the availability of our API for all users without experiencing downtime.\n\nOur API rate limiting is applied on a per-user basis, determined by the user's token. By default, the rate limit is set at `600 requests per minute`. Should you require an increase in this limit, please reach out to our partner team for assistance.\n\nIn the event that you exceed the rate limit, our system will respond with an HTTP 429 Too Many Requests status code along with the following payload:\n\n``` json\n{ \"errorMessage\": \"Rate Limit Exceeded.\" }\n\n ```\n\nAdditionally, our response headers will include the following rate limit information:\n\n```\nX-RateLimit-Limit: 600\nX-RateLimit-Remaining: 599\n\n ```\n\nWe urge users to adhere to the rate limits to ensure fair usage of our API. Any attempt to bypass or circumvent rate limiting measures will result in the suspension of your account token from our API platform. If your account token is suspended due to rate limit violations, you will be notified via email.\n\nIf you have any inquiries or require further clarification on rate limiting or any other API-related matters, please do not hesitate to contact us.\n\n# Frequently Asked Questions\n\n**What is the Packt API?**\n\nThe Packt API facilitates data exchange between systems, enabling novel ways to consume and interact with Packt systems and data in real-time. Our APIs consolidate data from various Packt systems for centralized access and utilization.\n\nDevelopers are encouraged to cache data received from our APIs to optimize performance and reduce unnecessary requests.\n\nThe REST API adheres to JSON standards for data formatting, ensuring simplicity and ease of use for developers and machines alike. JSON's structured format streamlines the process of writing, reading, and parsing API queries.\n\n**Is there a way to integrate with Packt without using the API?**\n\nWhile we currently provide tailored data feeds to select partners, our long-term strategy involves transitioning to a standardized API approach for integration.\n\nOur API is designed with a user-centric philosophy to facilitate seamless integration and collaboration.\n\nFor specific integration requirements, feel free to reach out to our partner team for personalized support and guidance.\n\n**Are there any limits on using the API?**\n\nWe enforce limits on API calls to manage usage effectively. Refer to our Rate Limit documentation for detailed information. If you require a higher call limit, our partner team is available to assist with your request.\n\nUsage of data is subject to the terms and conditions outlined in our Terms of Use.\n\n**I'm using a third-party service or wrapper, and it is not working. Can you help?**\n\nRegrettably, we do not provide support for third-party services or tools. For assistance, please contact the service provider directly.\n\nExercise caution when sharing your Packt API token key(s) with third-party platforms to mitigate security risks.\n\n**Despite making no changes, I'm suddenly receiving errors. What happened?**\n\nWhile we strive to minimize disruptions, periodic updates to the API may occur. We aim to implement non-breaking changes or introduce new API versions for significant updates.\n\nShould you encounter unexpected errors, kindly report them via the support form for prompt investigation and resolution.\n\n**Am I able to perform specific actions with the API?**\n\nIf a desired functionality is not documented, it may not be currently available. To propose new features, submit suggestions through the [partners@packt.com](https://mailto:partners@packt.com) form for evaluation by our team.\n\n**How should I report an issue with the API?**\n\nIf you suspect a system issue rather than an implementation error, provide your code and any relevant output via our support portal for thorough investigation and resolution.\n\nClear and detailed information aids in reproducing and resolving reported issues effectively.\n\n**Can you assist with coding tasks?**\n\nWhile we offer guidance and sample code, extensive coding support may require engagement with our partner team to address specific needs beyond standard onboarding procedures.\n\n**Can anyone utilize the API?**\n\nAccess to our APIs are limited to Channel Partners only, to register as a Channel Partners please check the [Getting Started guide](https:///api-docs#section/Overview/Getting-Started)\n\n**What are the available distribution types and file formats for downloading various content materials?**\n\n| Distribution Type | Description |\n| --- | --- |\n| print_cover_pdf | Print Cover in PDF format |\n| cover_image | Cover of the title |\n| cover_image_large | High Resolution Cover of the title |\n| cover_image_small | Low Resolution Cover of the title |\n| cover_image_660x336 | Cover with dimensions 660x336 |\n| epub | EPUB file |\n| print | Printer file in PDF format |\n| ebook | Ebook |\n| video | Individual video in MP4 format |\n| video_zip | All video MP4s in a single folder with ZIP format |\n| scorm | SCORM File |\n| scorm_2004_3e | SCORM 2004 3rd edition file |\n| scorm_2004_4e | SCORM 2004 4th edition file |\n| code_bundle | Code Files if available |\n| onix21-ebook | Ebook ONIX 2.1 |\n| onix21-print | Print Onix 2.1 |\n| onix21-video | Video Onix 2.1 |\n| onix21-audiobook | Audiobook Onix 2.1 |\n| onix21-course | Course Onix 2.1 (Course is a title format) |\n| onix3-ebook | Ebook ONIX 3.0 |\n| onix3-print | Print Onix 3.0 |\n| onix3-video | Video Onix 3.0 |\n| onix3-audiobook | Audiobook Onix 3.0 |\n| onix3-course | Course Onix 3.0 (Course is a title format) |\n| video_xml | Video Details in XML format |\n| caption_file_srt | Transcripts in SRT format |\n| caption_file_dfxp | Transcripts in DFXP format |\n| audiobook_mp3 | Individual Audio Files in MP3 format |\n| audiobook_zip | All audio MP3s in a single folder with ZIP format |\n| caption_zip | Transcripts in ZIP format |\n| spanish_transcript_zip | Spanish transcripts in ZIP format |\n| korean_transcript_zip | Korean transcripts in ZIP format |\n| simplified_chinese_transcript_zip | Chinese transcripts in ZIP format |\n| japanese_transcript_zip | Japanese transcripts in ZIP format |\n| audiobook_retail_sample | Audiobook retail sample in MP3 format |\n| audiobook_opening_credits_and_preface | Audiobook opening credits and preface in MP3 format |\n| audiobook_closing_credits | Audiobook closing credits in MP3 format |\n| audiobook_book_cover | Audiobook cover |\n| audiobook_supplementary_guide | Audiobook supplementary guide in PDF format |\n| audiobook_content_chapter | Individual Audiobook Chapters in MP3 format |\n| contributors | Audiobook Contributor MP3s |\n| appendix | Audiobook Appendix MP3s |\n| assessments | Audiobook Assessments |\n| discord | Audiobook Discord MP3s |\n| mobi | Mobi format (not available for all book products) |\n\n**Can I get examples of API implementation and code samples?**  \nYes, you can definitely fetch examples of APIs and code samples from our documentation. Please find the Postman collection link in the Getting Started section or Search for `Postman` keyword.\n\n## API Terms of Service\n\nIn order to use the Packt API, users are required to adhere to the following terms and conditions:\n\n1. **Compliance with Terms and Conditions**: Users must abide by the general [Terms and Conditions](https://www.packtpub.com/terms-conditions) of use in addition to the specific terms outlined for API usage.\n    \n2. **Rate Limiting**: Users must not attempt to bypass the rate limiting mechanisms put in place by Packt. All requests made by Channel Partners are monitored and tracked.\n    \n3. **Protection of API Key**: Users are prohibited from sharing or publicly posting their API key with individuals outside their organization.\n    \n4. **Display of Packt Branding**: Users must prominently display the Packt name or logo wherever Packt data is utilized. For example, when displaying a Packt product, it should be clearly attributed as \"by Packt Publishing\".\n    \n5. **Data Harvesting**: Users are not allowed to use the API for the purpose of harvesting or indexing Packt data without explicit written consent from Packt.\n    \n6. **Data Storage and Refresh**: While users are permitted to store information obtained through the Packt API, they must ensure that this data is regularly refreshed (at least once a week). This is to allow Packt the flexibility to modify, remove, and update the data as necessary.\n    \n7. **Sublicensing and Redistribution**: Users must not sublicense or redistribute Packt data to any third parties without explicit written consent from Packt.\n    \n8. **Data Modification**: Users are prohibited from modifying or altering Packt data in any manner. Data may be truncated for display purposes, but substantial changes are not permitted.\n    \n9. **Commercial Usage**: Users must obtain explicit written consent from Packt before incorporating Packt API data into any commercial products. For inquiries regarding commercial usage, users are advised to contact Packt.\n    \n10. **App Naming**: Users are not allowed to name their application \"Packt\" or use \"Packt\" as the main name within their application. While the Packt logo can be used to acknowledge the association with Packt, it should not be the primary logo for or within the application.\n    \n11. **Account Suspension**: Users acknowledge that their developer account can be suspended in case of any violation of the terms and conditions.\n    \n12. **Updates to Terms**: Users acknowledge that the terms and conditions may be updated or amended at any time without prior notice. Continued usage of the API implies acceptance of the revised terms.\n    \n\nBy adhering to these terms and conditions, users can ensure a compliant and mutually beneficial relationship with Packt when utilizing the Packt API.\n\n# Contact\n\nIf you have any further questions or require additional assistance, please feel free to reach out to [partners@packt.com](https://mailto:partners@packt.com)","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"22782544","team":118772,"collectionId":"d1520ec0-1004-4d7f-9d93-21a358249856","publishedId":"2sA2xh1CEK","public":true,"publicUrl":"https://docs.api.packt.com","privateUrl":"https://go.postman.co/documentation/22782544-d1520ec0-1004-4d7f-9d93-21a358249856","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":"Packt API Documentation (v2)"},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/7ec4fd5e-0519-4743-a20b-e34005369986/UEFDS1QgTkVXIDIuUE5H","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":"https://content.pstmn.io/7ec4fd5e-0519-4743-a20b-e34005369986/UEFDS1QgTkVXIDIuUE5H","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.11.4","publishDate":"2024-03-15T12:24:29.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":"Packt API Documentation (v2)"},"logos":{"logoLight":"https://content.pstmn.io/7ec4fd5e-0519-4743-a20b-e34005369986/UEFDS1QgTkVXIDIuUE5H","logoDark":"https://content.pstmn.io/7ec4fd5e-0519-4743-a20b-e34005369986/UEFDS1QgTkVXIDIuUE5H"}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/777add96999f50204d326fb474d45c2e1509b80c58be94bb4dce571ff0ae5560","favicon":"https://packt.com/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://docs.api.packt.com/view/metadata/2sA2xh1CEK"}