{"id":15022401,"url":"https://github.com/contentful/contentful-management.php","last_synced_at":"2026-01-18T09:43:13.669Z","repository":{"id":44913870,"uuid":"87568564","full_name":"contentful/contentful-management.php","owner":"contentful","description":"Official PHP SDK for the Content Management API","archived":false,"fork":false,"pushed_at":"2025-08-04T22:55:23.000Z","size":4281,"stargazers_count":8,"open_issues_count":9,"forks_count":21,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-11-16T09:17:06.050Z","etag":null,"topics":["contentful","php","sdk"],"latest_commit_sha":null,"homepage":"","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/contentful.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":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-04-07T17:03:32.000Z","updated_at":"2025-07-28T19:31:42.000Z","dependencies_parsed_at":"2022-08-24T20:21:06.556Z","dependency_job_id":"4278cb40-f1d6-48a5-a8fe-ad49ba7795f6","html_url":"https://github.com/contentful/contentful-management.php","commit_stats":{"total_commits":263,"total_committers":9,"mean_commits":29.22222222222222,"dds":0.4448669201520913,"last_synced_commit":"7573426b65bd624b384054ac2ceae7d9ccaaad98"},"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/contentful/contentful-management.php","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contentful%2Fcontentful-management.php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contentful%2Fcontentful-management.php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contentful%2Fcontentful-management.php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contentful%2Fcontentful-management.php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/contentful","download_url":"https://codeload.github.com/contentful/contentful-management.php/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/contentful%2Fcontentful-management.php/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28534172,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["contentful","php","sdk"],"created_at":"2024-09-24T19:57:54.239Z","updated_at":"2026-01-18T09:43:08.651Z","avatar_url":"https://github.com/contentful.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# contentful-management.php\n\n[![Packagist](https://img.shields.io/packagist/v/contentful/contentful-management.svg?style=for-the-badge)](https://packagist.org/packages/contentful/contentful-management)\n[![PHP version](https://img.shields.io/packagist/php-v/contentful/contentful-management.svg?style=for-the-badge)](https://packagist.org/packages/contentful/contentful-management)\n[![Packagist](https://img.shields.io/github/license/contentful/contentful-management.php.svg?style=for-the-badge)](https://packagist.org/packages/contentful/contentful-management.php)\n[![CircleCI](https://circleci.com/gh/contentful/contentful-management.php.svg?style=shield)](https://circleci.com/gh/contentful/contentful-management.php)\n\n\u003e PHP SDK for [Contentful's](https://www.contentful.com) Content Management API. The SDK requires at least PHP 7.2 or PHP 8.0 and up.\n\n## Setup\n\nAdd this package to your application by using [Composer](https://getcomposer.org/) and executing the following command:\n\n``` bash\ncomposer require contentful/contentful-management\n```\n\nThen, if you haven't already, include the Composer autoloader:\n\n``` php\nrequire_once 'vendor/autoload.php';\n```\n\n## Basic concepts\n\nThe first thing that needs to be done is initiating an instance of `Contentful\\Management\\Client` by giving it an access token. All actions performed using this instance of the `Client` will be performed with the privileges of the user this token belongs to.\n\n``` php\n$client = new \\Contentful\\Management\\Client('access-token');\n```\n\nWhen working with space-scoped or environment-scoped resources, you can use proxies. They are lazy-references to a space or an environment, and they allow you to avoid repeating the space and environment ID when making API calls:\n\n``` php\n// Without space proxy\n$deliveryApiKeys = $client-\u003egetDeliveryApiKeys($spaceId);\n$roles = $client-\u003egetRoles($spaceId);\n// With space proxy\n$spaceProxy = $client-\u003egetSpaceProxy($spaceId);\n$deliveryApiKeys = $spaceProxy-\u003egetDeliveryApiKeys();\n$roles = $spaceProxy-\u003egetRoles();\n\n// Without environment proxy\n$assets = $client-\u003egetAssets($spaceId, $environmentId);\n$entries = $client-\u003egetEntries($spaceId, $environmentId);\n// With environment proxy\n$environmentProxy = $client-\u003egetEnvironmentProxy($spaceId, $environmentId);\n$assets = $environmentProxy-\u003egetAssets();\n$entries = $environmentProxy-\u003egetEntries();\n```\n\n## Usage\n\n* [Api Keys](#api-keys)\n* [Assets](#assets)\n* [Content types and content type snapshots](#content-types-and-content-type-snapshots)\n* [Editor interfaces](#editor-interfaces)\n* [Entries and entry snapshots](#entries-and-entry-snapshots)\n* [Environments](#environments)\n* [Locales](#locales)\n* [Organizations](#organizations)\n* [Personal access tokens](#personal-access-tokens)\n* [Roles](#roles)\n* [Spaces](#spaces)\n* [Space memberships](#space-memberships)\n* [Uploads](#uploads)\n* [UI extensions](#ui-extensions)\n* [User](#users)\n* [Webhooks](#webhooks)\n* [Rate limits and retrying](#rate-limits-and-retrying)\n\n### Api Keys\n\nFetching:\n\n``` php\n$deliveryApiKeys = $spaceProxy-\u003egetDeliveryApiKeys();\n$deliveryApiKey = $spaceProxy-\u003egetDeliveryApiKey($deliveryApiKeyId);\n\necho $deliveryApiKey-\u003egetSystemProperties()-\u003egetId();\necho $deliveryApiKey-\u003egetName();\necho $deliveryApiKey-\u003egetAccessToken();\n$previewApiKeyLink = $deliveryApiKey-\u003egetPreviewApiKey();\n\n$previewApiKey = $spaceProxy-\u003eresolveLink($previewApiKeyLink);\necho $previewApiKey-\u003egetAccessToken();\n```\n\nCreating and modifying:\n\n``` php\n$deliveryApiKey = new \\Contentful\\Management\\Resource\\DeliveryApiKey('Mobile');\n\n$spaceProxy-\u003ecreate($deliveryApiKey);\necho $deliveryApiKey-\u003egetSystemProperties()-\u003egetId();\necho $deliveryApiKey-\u003egetAccessToken();\n\n$deliveryApiKey-\u003edelete();\n```\n\n### Assets\n\nFetching:\n\n``` php\n$assets = $environmentProxy-\u003egetAssets();\n// Optionally, pass a query object\n$query = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$assets = $environmentProxy-\u003egetAssets($query);\n\n$asset = $environmentProxy-\u003egetAsset($assetId);\n\necho $asset-\u003egetSystemProperties()-\u003egetId();\necho $asset-\u003egetTitle('en-US');\n```\n\nCreating and modifying:\n\n``` php\n$asset = new \\Contentful\\Management\\Resource\\Asset();\n$file = new \\Contentful\\Core\\File\\RemoteUploadFile('Contentful.svg', 'image/svg+xml', $url);\n$asset-\u003esetTitle('en-US', 'My asset')\n    -\u003esetDescription('en-US', 'My description')\n    -\u003esetFile('en-US', $file);\n\n$environmentProxy-\u003ecreate($asset);\n\n// Omit the locale to process the files for all locales\n$asset-\u003eprocess('en-US');\n\n$asset-\u003esetDescription('en-US', 'An even better description');\n$asset-\u003eupdate();\n\n$asset-\u003earchive();\n$asset-\u003eunarchive();\n\n$asset-\u003epublish();\n$asset-\u003eunpublish();\n\n$asset-\u003edelete();\n```\n\n### Content types and content type snapshots\n\nFetching:\n\n``` php\n$contentTypes = $environmentProxy-\u003egetContentTypes();\n// Optionally, pass a query object\n$query = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$contentTypes = $environmentProxy-\u003egetContentTypes($query);\n\n$contentType = $environmentProxy-\u003egetContentType($contentTypeId);\n\necho $contentType-\u003egetSystemProperties()-\u003egetId();\necho $contentType-\u003egetName();\n\n// Fetch the published version of content types\n$contentTypes = $environmentProxy-\u003egetPublishedContentTypes($query);\n$contentType = $environmentProxy-\u003egetPublishedContentType($contentTypeId);\n\n// Fetch snapshots from a content type, or from an environment proxy\n$snapshots = $contentType-\u003egetSnapshots();\n$snapshot = $contentTy-\u003egetSnapshot($snapshotId);\n\n$snapshots = $environmentProxy-\u003egetContentTypeSnapshots($contentTypeId);\n$snapshot = $environmentProxy-\u003egetContentTypeSnapshot($contentTypeId, $snapshotId);\n```\n\nCreating and modifying:\n\n``` php\n$contentType = new \\Contentful\\Management\\Resource\\ContentType('Blog Post');\n$contentType-\u003esetDescription('My description');\n$contentType-\u003eaddNewField('Symbol', 'title', 'Title');\n$contentType-\u003eaddNewField('Text', 'body', 'Body');\n\n$customContentTypeId = 'blogPost';\n$environmentProxy-\u003ecreate($contentType, $customContentTypeId);\n\n$contentType-\u003eaddNewField('Date', 'publishedAt', 'Published At');\n$contentType-\u003eupdate();\n\n$contentType-\u003epublish();\n$contentType-\u003eunpublish();\n\n$contentType-\u003edelete();\n```\n\n### Editor interfaces\n\nFetching and updating\n\n``` php\n$editorInterface = $environmentProxy-\u003egetEditorInterface($contentTypeId);\n\n$control = $editorInterface-\u003egetControl('website');\n$control-\u003esetWidgetId('urlEditor');\n\n$editorInterface-\u003eupdate();\n```\n\n### Entries and entry snapshots\n\nFetching:\n\n``` php\n$entries = $environmentProxy-\u003egetEntries();\n// Optionally, pass a query object\n$query = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$entries = $environmentProxy-\u003egetEntries($query);\n\n$entry = $environmentProxy-\u003egetEntry($entryId);\n\necho $entry-\u003egetSystemProperties()-\u003egetId();\necho $entry-\u003egetField('title', 'en-US');\n\n// Fetch snapshots from an entry, or from an environment proxy\n$snapshots = $entry-\u003egetSnapshots();\n$snapshot = $entry-\u003egetSnapshot($snapshotId);\n\n$snapshots = $environmentProxy-\u003egetEntrySnapshots($contentTypeId);\n$snapshot = $environmentProxy-\u003egetEntrySnapshot($entryId, $snapshotId);\n```\n\nCreating and modifying:\n\n``` php\n$entry = new \\Contentful\\Management\\Resource\\Entry($contentTypeId);\n$entry-\u003esetField('title', 'en-US', 'My awesome blog post');\n$entry-\u003esetField('body', 'en-US', 'Something something...');\n\n//Add existing assets\n$images = [\n    new \\Contentful\\Core\\Api\\Link('Example-existing-asset-id', 'Asset'),\n    new \\Contentful\\Core\\Api\\Link('Example-existing-asset-id-2', 'Asset'),\n];\n$entry-\u003esetField('productImages', 'en-US', $images);\n\n$environmentProxy-\u003ecreate($entry);\n\n$entry-\u003esetField('body', 'en-US', 'Updated body');\n$entry-\u003eupdate();\n\n$entry-\u003earchive();\n$entry-\u003eunarchive();\n\n$entry-\u003epublish();\n$entry-\u003eunpublish();\n\n$entry-\u003edelete();\n```\n\n### Environments\n\nFetching:\n\n``` php\n$environments = $spaceProxy-\u003egetEnvironments();\n// Optionally, pass a query object\n$query = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$environments = $spaceProxy-\u003egetEnvironments($query);\n\n$environment = $spaceProxy-\u003egetEnvironment($environmentId);\n\necho $environment-\u003egetSystemProperties()-\u003egetId();\necho $environment-\u003egetName();\n```\n\nCreating and modifying:\n\n``` php\n$environment = new \\Contentful\\Management\\Resource\\Environment('QA');\n$spaceProxy-\u003ecreate($environment);\n\n$environmentId = $environment-\u003egetSystemProperties()-\u003egetId();\n\n// An environment might take a while to create,\n// depending on the size of the master environment,\n// so it might be a good idea to poll it until it's ready.\ndo {\n    $environment = $spaceProxy-\u003egetEnvironment($environmentId);\n    $status = $environment-\u003egetSystemProperties()-\u003egetStatus()-\u003egetId();\n} while ($status !== 'ready');\n\n$environment-\u003edelete();\n```\n\nCreating an environment with a different source:\n\n``` php\n$environment = new \\Contentful\\Management\\Resource\\Environment('QA','source-env-id');\n$spaceProxy-\u003ecreate($environment);\n\n// An environment might take a while to create,\n// depending on the size of the master environment,\n// so it might be a good idea to poll it until it's ready.\ndo {\n    $environment = $spaceProxy-\u003egetEnvironment($environmentId);\n    $status = $environment-\u003egetSystemProperties()-\u003egetStatus()-\u003egetId();\n} while ($status !== 'ready');\n\n$environment-\u003edelete();\n```\n\n### Locales\n\nFetching:\n\n``` php\n$locales = $environmentProxy-\u003egetLocales();\n// Optionally, pass a query object\n$query = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$locales = $environmentProxy-\u003egetLocales($query);\n\n$locale = $environmentProxy-\u003egetLocale($localeId);\n\necho $locale-\u003egetSystemProperties()-\u003egetId();\necho $locale-\u003egetName();\necho $locale-\u003egetCode();\n```\n\nCreating and modifying:\n\n``` php\n$locale = new \\Contentful\\Management\\Resource\\Locale('English (United States)', 'en-US');\n$environmentProxy-\u003ecreate($locale);\n\n$locale-\u003edelete();\n```\n\n### Organizations\n\nFetching:\n\n``` php\n$organizations = $client-\u003egetOrganizations();\n$organization = $organizations[0];\n\necho $organization-\u003egetSystemProperties()-\u003egetId();\necho $organization-\u003egetName();\n```\n\n### Personal access tokens\n\nFetching:\n\n``` php\n$personalAccessTokens = $client-\u003egetPersonalAccessTokens();\n// Optionally, pass a query object\n$personalAccessTokens = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$personalAccessTokens = $client-\u003egetPersonalAccessTokens($query);\n\n$personalAccessToken = $client-\u003egetPersonalAccessToken($personalAccessTokenId);\n\necho $personalAccessToken-\u003egetSystemProperties()-\u003egetId();\necho $personalAccessToken-\u003egetName();\n```\n\nCreating and modifying:\n\n``` php\n$readOnly = false;\n$personalAccessToken = new \\Contentful\\Management\\Resource\\PersonalAccessToken('Development access token', $readOnly);\n$client-\u003ecreate($personalAccessToken);\n\n// For security reasons, the actual token will only be available after creation.\necho $personalAccessToken-\u003egetToken();\n\n$personalAccessToken-\u003erevoke();\n```\n\n### Roles\n\nFetching:\n\n``` php\n$roles = $spaceProxy-\u003egetRoles();\n// Optionally, pass a query object\n$query = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$roles = $spaceProxy-\u003egetRoles($query);\n\n$role = $spaceProxy-\u003egetRole($roleId);\n\necho $role-\u003egetSystemProperties()-\u003egetId();\necho $role-\u003egetName();\n```\n\nCreating and modifying:\n\n``` php\n$role = new \\Contentful\\Management\\Resource\\Role('Publisher');\n\n$policy = new \\Contentful\\Management\\Resource\\Policy('allow', 'publish');\n$role-\u003eaddPolicy($policy);\n\n$constraint = new \\Contentful\\Management\\Resource\\Role\\Constraint\\AndConstraint([\n    new \\Contentful\\Management\\Resource\\Role\\Constraint\\EqualityConstraint('sys.type', 'Entry'),\n    new \\Contentful\\Management\\Resource\\Role\\Constraint\\EqualityConstraint('sys.type', 'Asset'),\n]);\n$policy-\u003esetConstraint($constraint);\n\n$spaceProxy-\u003ecreate($role);\n\n$policy-\u003edelete();\n```\n\n### Spaces\n\nFetching:\n\n``` php\n$spaces = $client-\u003egetSpaces();\n// Optionally, pass a query object\n$query = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$spaces = $client-\u003egetSpaces($query);\n\n$space = $client-\u003egetSpace($spaceId);\n\necho $space-\u003egetSystemProperties()-\u003egetId();\necho $space-\u003egetName();\n```\n\nCreating and modifying:\n\n``` php\n$space = new \\Contentful\\Management\\Resource\\Space('Website', $organizationId, $defaultLocaleCode);\n$client-\u003ecreate($space);\n\n$space-\u003edelete();\n```\n\n### Space memberships\n\nFetching:\n\n``` php\n$spaceMemberships = $spaceProxy-\u003egetSpaceMemberships();\n// Optionally, pass a query object\n$query = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$spaceMemberships = $spaceProxy-\u003egetSpaceMemberships($query);\n\n$spaceMembership = $spaceProxy-\u003egetSpaceMembership($spaceMembershipId);\n\necho $spaceMembership-\u003egetSystemProperties()-\u003egetId();\necho $spaceMembership-\u003egetUser()-\u003egetId();\n```\n\nCreating and modifying:\n\n``` php\n$spaceMembership = new \\Contentful\\Management\\Resource\\SpaceMembership();\n$spaceMembership-\u003esetEmail($userEmail)\n    -\u003esetAdmin(false)\n    -\u003eaddRoleLink($roleId);\n$spaceProxy-\u003ecreate($spaceMembership);\n\n$spaceMembership-\u003edelete();\n```\n\n### Uploads\n\nFetching:\n\n``` php\n$upload = $spaceProxy-\u003egetUpload($uploadId);\n\necho $upload-\u003egetSystemProperties()-\u003egetId();\n```\n\nCreating and modifying:\n\n``` php\n// You can pass as argument an fopen resource, an actual string, or a PSR-7 compatible stream\n$upload = new \\Contentful\\Management\\Resource\\Upload(\\fopen($myFile, 'r'));\n$spaceProxy-\u003ecreate($upload);\n\n$asset = new \\Contentful\\Management\\Resource\\Asset();\n// To use the upload as an asset, you need to supply an asset name and a mime type\n$asset-\u003esetFile('en-US', $upload-\u003easAssetFile('my-asset-name.png', 'image/png'));\n\n$environmentProxy-\u003ecreate($asset);\n\n$asset-\u003eprocess();\n\n$upload-\u003edelete();\n```\n\n### UI extensions\n\nFetching:\n\n``` php\n$extensions = $environmentProxy-\u003egetExtensions();\n// Optionally, pass a query object\n$query = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$extensions = $environmentProxy-\u003egetExtensions($query);\n\n$extension = $environmentProxy-\u003egetExtension($extensionId);\n\necho $extension-\u003egetSystemProperties()-\u003egetId();\necho $extension-\u003egetName();\n```\n\nCreating and modifying:\n\n``` php\n$extension = new \\Contentful\\Management\\Resource\\Extension('My awesome extension');\n$extension-\u003esetSource('https://www.example.com/extension-source')\n    -\u003eaddNewFieldType('Symbol');\n\n$environmentProxy-\u003ecreate($extension);\n\n$extension-\u003eaddNewFieldType('Link', ['Entry']);\n$extension-\u003eupdate();\n\n$extension-\u003edelete();\n```\n\n### Users\n\nFetching:\n\n``` php\n$user = $client-\u003egetUserMe();\n\necho $user-\u003egetSystemProperties()-\u003egetId();\necho $user-\u003egetEmail();\n```\n\n### Webhooks\n\nFetching:\n\n``` php\n$webhooks = $spaceProxy-\u003egetWebhooks();\n// Optionally, pass a query object\n$query = (new \\Contentful\\Management\\Query())\n    -\u003esetLimit(5);\n$webhooks = $spaceProxy-\u003egetWebhooks($query);\n\n$webhook = $spaceProxy-\u003egetWebhook($webhookId);\n\necho $webhook-\u003egetSystemProperties()-\u003egetId();\necho $webhook-\u003egetName();\n\n// You can get calls and health from a webhook or from a space proxy\n$calls = $webhook-\u003egetCalls();\n$call = $webhook-\u003egetCall($callId);\n$health = $webhook-\u003egetHealth();\n\n$calls = $spaceProxy-\u003egetWebhookCalls($webhookId);\n$call = $spaceProxy-\u003egetWebhookCall($webhookId, $callId);\n$health = $spaceProxy-\u003egetWebhookHealth($webhookId);\n\necho $call-\u003egetStatusCode();\necho $call-\u003egetUrl();\necho $call-\u003egetEventType();\n\necho $health-\u003egetTotal();\necho $health-\u003egetHealthy();\n```\n\nCreating and modifying:\n\n``` php\n$webhook = new \\Contentful\\Management\\Resource\\Webhook('Publish webhook', $url, ['Entry.publish']);\n$spaceProxy-\u003ecreate($webhook);\n\n$webhook-\u003eaddTopic('Asset.publish');\n$webhook-\u003eupdate();\n\n$webhook-\u003edelete();\n```\n\n### Rate limits and retrying\n\nSome API calls are subject to rate limiting as described [here](https://www.contentful.com/developers/docs/technical-limits/). The SDK can be instructed to retry a call for a number of times via the max_rate_limit_retries option:\n\n``` php\n$client = new \\Contentful\\Management\\Client('KEY',['max_rate_limit_retries' =\u003e 2]);\n$proxy = $client-\u003egetSpaceProxy('SPACE_ID');\n$envName = uniqid();\n$env = new \\Contentful\\Management\\Resource\\Environment($envName);\n$proxy-\u003ecreate($env); //this call will retry two times (so three calls couting the original one), before throwing an exception\n```\n\nIf the retry should happen in more than 60 seconds (as defined by the X-Contentful-RateLimit-Second-Remaining header [here](https://www.contentful.com/developers/docs/references/content-management-api/#/introduction/api-rate-limits) ), the call will throw a RateWaitTooLongException exception. This was implemented so that your scripts do not run for too long.\n\n## Contributinng\n\nPRs are welcome! If you want to develop locally, however, you will need to install with `--ignore-platform-reqs`, as one of the libraries used for testing does currently not officially support PHP8.\n\n\n## About Contentful\n\n[Contentful](https://www.contentful.com) is a content management platform for web applications, mobile apps and connected devices. It allows you to create, edit \u0026 manage content in the cloud and publish it anywhere via powerful API. Contentful offers tools for managing editorial teams and enabling cooperation between organizations.\n\n## License\n\nCopyright (c) 2015-2019 Contentful GmbH. Code released under the MIT license. See [LICENSE](LICENSE) for further details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontentful%2Fcontentful-management.php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontentful%2Fcontentful-management.php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontentful%2Fcontentful-management.php/lists"}