{"id":401893,"date":"2026-11-12T03:41:51","date_gmt":"2026-11-12T03:41:51","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/portalweave-sso\/"},"modified":"2026-11-12T06:46:47","modified_gmt":"2026-11-12T06:46:47","slug":"portalweave-sso","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/portalweave-sso\/","author":23602391,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.0","stable_tag":"1.4.0","tested":"7.1.4","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"PortalWeave SSO","header_author":"RobotHanzo","header_description":"Multi-provider OAuth\/OIDC sign-in, provisioning, access control and audit tools.","last_updated":"2026-11-12 06:46:47","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/RobotHanzo\/PortalWeaveSSO","header_author_uri":"https:\/\/github.com\/RobotHanzo","rating":0,"author_block_rating":0,"active_installs":0,"downloads":59,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.3.2":{"tag":"1.3.2","author":"robothanzo","date":"2026-11-12 03:41:25","revision":3797445},"1.4.0":{"tag":"1.4.0","author":"robothanzo","date":"2026-11-12 06:46:47","revision":3797622}},"upgrade_notice":{"1.4.0":"<p>Adds seven partial interface translations and GitHub bug reporting links. Choose your WordPress site or profile language to use them. Custom wording and existing settings are retained; untranslated technical text uses English.<\/p>","1.3.2":"<p>Replace [sso_oauth_login] placements with [portalweave_sso_login]. Custom button CSS is no longer rendered; move needed styles into WordPress&#039;s built-in editor. Existing private-media files retain their recorded recovery paths.<\/p>","1.3.1":"<p>Security update for REST content restrictions, Application Password account policies and login auditing. Existing settings and credentials are retained.<\/p>","1.3.0":"<p>Choose whether to sign out of this site alone or also the named identity provider. Providers without a configured end-session endpoint show site-only sign-out and Go back. Existing confirmation preferences are retained.<\/p>","1.2.1":"<p>Adds trusted-proxy IP resolution. Configure trusted proxy addresses and the forwarding header in wp-config.php when the web server has not already restored REMOTE_ADDR. IP collection remains off by default.<\/p>","1.2.0":"<p>Adds visual mapping editors, an unsaved-settings reminder, organized integration panels, audit pagination and media-library logos. Existing configuration and credentials are retained. Find PortalWeave SSO directly in the admin sidebar.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3797445,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3797445,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3797445,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3797445,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.3.2","1.4.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[602,2061,43290,191844,2469],"plugin_category":[38],"plugin_contributors":[292123],"plugin_business_model":[],"class_list":["post-401893","plugin","type-plugin","status-publish","hentry","plugin_tags-login","plugin_tags-oauth","plugin_tags-openid-connect","plugin_tags-scim","plugin_tags-sso","plugin_category-authentication","plugin_contributors-robothanzo","plugin_committers-robothanzo"],"banners":{"banner":"https:\/\/ps.w.org\/portalweave-sso\/assets\/banner-772x250.png?rev=3797445","banner_2x":"https:\/\/ps.w.org\/portalweave-sso\/assets\/banner-1544x500.png?rev=3797445","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/portalweave-sso\/assets\/icon-128x128.png?rev=3797445","icon_2x":"https:\/\/ps.w.org\/portalweave-sso\/assets\/icon-256x256.png?rev=3797445","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>PortalWeave SSO connects a site to administrator-configured OAuth 2.0 and OpenID Connect identity providers. Authorization Code with S256 PKCE is the default. Public clients can use PKCE without a client secret.<\/p>\n\n<ul>\n<li>Configure multiple providers, attribute mappings and group\/email-domain role policies with visual editors or advanced JSON.<\/li>\n<li>Register users at first login or allow only existing accounts. Account linking requires explicit configuration and a verified, unique email.<\/li>\n<li>Keep administrator SSO disabled by default; enable it per provider with a verified account claim.<\/li>\n<li>Display login buttons using the login widget, [portalweave_sso_login] shortcode, WordPress login screen or WooCommerce login form.<\/li>\n<li>Preview custom WordPress sign-in button styles and provider\/custom icons independently of website buttons.<\/li>\n<li>Restrict posts, pages, categories and media using login, role or group rules.<\/li>\n<li>Visualize retained authentication activity over 7, 30 or 90 days, page through retained audit logs and export CSV reports. Debug logging, client IP collection and optional modules are administrator controlled.<\/li>\n<li>Enable SCIM Users\/Groups, JWT sign-in, temporary guest accounts, moderation, mapped pictures, attribute redirects or a short shared-subdomain handoff.<\/li>\n<li>Use site\/network settings, WP-CLI and eight optional administrator-only WordPress abilities.<\/li>\n<\/ul>\n\n<p>All bundled functionality is available without a developer account, license key, paid upgrade or trial expiry. Optional module switches are configuration controls. Guest-account expiry is a site access policy, not a limit on plugin functionality. Identity providers may impose their own account, subscription or usage requirements.<\/p>\n\n<p>SSO requires HTTPS and PHP OpenSSL. Client credentials and tokens are encrypted using this installation's WordPress salts; keep those salts stable. Native abilities require WordPress 6.9+. External MCP clients also require the separately installed WordPress MCP Adapter. This plugin does not call an AI model service.<\/p>\n\n<p>This is an independent plugin. Provider names describe integrations and do not imply endorsement or affiliation.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The plugin has no developer-hosted authentication, tracking, licensing or update service. It sends no telemetry to its author and downloads no remote executable code. All plugin JavaScript and CSS are distributed locally.<\/p>\n\n<p>Report a bug opens the <a href=\"https:\/\/github.com\/RobotHanzo\/PortalWeaveSSO\/issues\">GitHub issue tracker<\/a> only when selected. No configuration or logs are attached automatically. GitHub receives the browser request and any information you submit. <a href=\"https:\/\/docs.github.com\/en\/site-policy\/privacy-policies\/github-general-privacy-statement\">Privacy<\/a>, <a href=\"https:\/\/docs.github.com\/en\/site-policy\/github-terms\/github-terms-of-service\">terms<\/a>.<\/p>\n\n<p>Each service below is an optional identity provider used to sign users in and obtain the configured profile\/group claims for local account and access decisions. No provider is contacted until an administrator configures it and its authentication flow runs. Preset setup and bundled logos work locally.<\/p>\n\n<p>For every configured identity service below, sign-in sends the browser to its authorization endpoint with the client identifier, scopes, callback URL, random state\/nonce and PKCE challenge. WordPress sends the returned authorization code, PKCE verifier and configured client authentication to that service's token endpoint; it sends an access token when requesting profile or group data. Public signing-key requests send no user token. Explicit refresh sends the refresh token and client authentication. Configured logout sends the browser to that service with client ID, callback, state and an ID-token hint when available. An explicitly enabled legacy Password grant sends the entered username\/password to that provider over HTTPS without retaining the password; the legacy Implicit grant returns tokens through the browser callback. These transfers happen only for the configured login, validation, refresh or logout operation. Tokens are never included in audit or support exports.<\/p>\n\n<p>Preset service policy references:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/learn.microsoft.com\/entra\/identity\/\">Microsoft Entra ID \/ Azure AD, Azure AD B2C and Office 365<\/a>: Microsoft hosts the configured tenant's sign-in\/token\/key endpoints; Microsoft Graph can supply profile\/group data. The identity transfers above apply to the selected tenant and B2C policy. <a href=\"https:\/\/www.microsoft.com\/en-us\/privacy\/privacystatement\">Privacy<\/a>, <a href=\"https:\/\/www.microsoft.com\/licensing\/terms\/\">product terms<\/a>.<\/li>\n<li><a href=\"https:\/\/aws.amazon.com\/cognito\/\">Amazon Cognito<\/a>: AWS hosts the configured regional user pool and authorization domain. The identity transfers above go to that pool's endpoints, including any configured custom domain. <a href=\"https:\/\/aws.amazon.com\/privacy\/\">Privacy<\/a>, <a href=\"https:\/\/aws.amazon.com\/agreement\/\">customer agreement<\/a>, <a href=\"https:\/\/aws.amazon.com\/service-terms\/\">service terms<\/a>.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/identity\">Google identity services<\/a>: <a href=\"https:\/\/policies.google.com\/privacy\">privacy<\/a>, <a href=\"https:\/\/developers.google.com\/terms\">API terms<\/a>, <a href=\"https:\/\/developers.google.com\/terms\/api-services-user-data-policy\">user data policy<\/a>.<\/li>\n<li><a href=\"https:\/\/www.okta.com\/\">Okta<\/a>: <a href=\"https:\/\/www.okta.com\/legal\/privacy-policy\/\">privacy<\/a>, <a href=\"https:\/\/www.okta.com\/legal\/\">agreements<\/a>.<\/li>\n<li><a href=\"https:\/\/auth0.com\/\">Auth0<\/a>: <a href=\"https:\/\/www.okta.com\/legal\/privacy-policy\/\">privacy<\/a>, <a href=\"https:\/\/auth0.com\/legal\">legal resources<\/a>.<\/li>\n<li><a href=\"https:\/\/www.salesforce.com\/\">Salesforce<\/a>: <a href=\"https:\/\/www.salesforce.com\/company\/legal\/privacy\/\">privacy<\/a>, <a href=\"https:\/\/www.salesforce.com\/company\/legal\/customer-agreements\/\">customer agreements<\/a>.<\/li>\n<li><a href=\"https:\/\/www.onelogin.com\/\">OneLogin<\/a>: <a href=\"https:\/\/www.oneidentity.com\/legal\/privacy.aspx\">privacy<\/a>, <a href=\"https:\/\/www.oneidentity.com\/legal\/\">legal resources<\/a>.<\/li>\n<li><a href=\"https:\/\/discord.com\/developers\/docs\/topics\/oauth2\">Discord<\/a>: <a href=\"https:\/\/discord.com\/privacy\">privacy<\/a>, <a href=\"https:\/\/support-dev.discord.com\/hc\/en-us\/articles\/8562894815383-Discord-Developer-Terms-of-Service\">developer terms<\/a>.<\/li>\n<li><a href=\"https:\/\/www.classlink.com\/\">ClassLink<\/a>: <a href=\"https:\/\/www.classlink.com\/company\/privacy\">privacy<\/a>, <a href=\"https:\/\/www.classlink.com\/contact\">contact<\/a>. Obtain the applicable school\/organization license and service agreement from ClassLink.<\/li>\n<li>Keycloak, authentik and custom providers: the administrator chooses the deployment, endpoint and applicable operator terms\/privacy policy. Selecting a self-hosted preset does not contact the software project's developer.<\/li>\n<\/ul>\n\n<p>Optional mapped pictures and custom provider or WordPress sign-in icons are browser requests to the selected image hosts when displayed, including login pages and administrator previews. Hosts receive the visitor's IP address and ordinary browser request information; sign-in icons use a no-referrer policy. Uploaded icons use the site's media delivery service. Support email sends the administrator's message through the site's mail service to the chosen recipient only on explicit submission (or an explicit support-ability send request); redacted configuration is attached only when requested. Booking, forum and demo links open only when selected. The site operator must disclose these actual image, mail, support and link destinations and their policies.<\/p>\n\n<p>Optional SCIM accepts incoming authenticated provisioning requests from the administrator's chosen client and returns account\/group data; it does not select or contact a vendor. Optional shared-subdomain SSO sends selected identity claims in a signed, unencrypted one-minute cookie to explicitly trusted sites, without OAuth tokens. Optional abilities return authorized configuration, diagnostics and audit data through the separately installed MCP Adapter to the chosen client; this plugin does not call an AI service. Disclose the actual provisioning, trusted-site and MCP\/client operators' terms and privacy policies before enabling them.<\/p>\n\n<p>The external-services document is included in the ZIP. Its maintained source is <a href=\"https:\/\/github.com\/RobotHanzo\/PortalWeaveSSO\/blob\/main\/docs\/external-services.md\">available here<\/a>. Site operators must publish the policies applicable to their configured providers. One Identity policy pages may restrict automated retrieval; confirm the applicable OneLogin agreement with your account contact. ClassLink's privacy notice refers to school\/organization license and service-level agreements supplied by ClassLink, rather than a universal public service contract.<\/p>\n\n<h3>Privacy and data retention<\/h3>\n\n<p>The plugin stores local identity links, mapped profile fields, group memberships and encrypted tokens. Authentication auditing can be disabled. When enabled, it retains username, email, provider, status, time and navigation path for the configured retention period (90 days by default). IP recording is a separate opt-in and defaults off. Debug records expire after seven days; local support drafts expire after one day. Scheduled cleanup requires working WordPress cron.<\/p>\n\n<p>Login\/logout state cookies last up to ten minutes. Optional JWT sign-in uses a five-minute challenge cookie; optional shared-subdomain sign-in uses a signed one-minute cookie containing selected identity attributes, not OAuth tokens. WordPress manages its normal login cookies.<\/p>\n\n<p>Suggested privacy-policy text is available in the WordPress privacy tools. Personal-data exports include audit and linked profile information but exclude credentials. Erasure anonymizes audit data, removes local provider links\/tokens\/groups and known plugin-mapped custom fields, and revokes sessions. It preserves the WordPress account, roles, content, moderation\/provisioning blocks and private files. Other multisite sites and external providers manage their own retained data. Later sign-in\/provisioning may supply profile data again.<\/p>\n\n<p>Deactivation preserves data. Uninstall preserves settings unless the administrator enables data removal. Even with removal enabled, WordPress accounts, content, public mapped profile values, private-media files and their recovery metadata are retained. Review docs\/privacy.md and include the private vault in server backups. The plugin does not claim to provide or guarantee legal compliance.<\/p>\n\n<!--section=installation-->\n<p>Upgrades from PortalWeave SSO 1.0.1 retain existing configuration. Replacing an installation that uses the earlier technical namespace requires the controlled procedure in docs\/provider-setup.md; there are no earlier-name aliases or automatic conversion of that stored data. Restrict access externally during that replacement, including settings, identity links, access rules, provider URLs and private-media metadata.<\/p>\n\n<ol>\n<li>Upload portalweave-sso-1.4.0.zip or copy the portalweave-sso directory into wp-content\/plugins.<\/li>\n<li>Activate PortalWeave SSO and open PortalWeave SSO in the WordPress admin sidebar.<\/li>\n<li>Add a provider, register the displayed callback URL and enter its details. Use Test connection on the final review step before saving the provider.<\/li>\n<li>Saved providers also offer Test SSO Config to inspect returned attributes. Configure mappings and test an ordinary user before enforcing login.<\/li>\n<li>Add [portalweave_sso_login], the PortalWeave SSO login widget or use the WordPress\/WooCommerce login form integration.<\/li>\n<li>Optionally customize the WordPress sign-in buttons and icons under Appearance &gt; WordPress sign-in. Existing styling is inherited until customization is enabled.<\/li>\n<\/ol>\n\n<p>Optional features start disabled. Use the distributed user guides for provider, SCIM, media and MCP setup. Development source and build tools are <a href=\"https:\/\/github.com\/RobotHanzo\/PortalWeaveSSO\">publicly maintained<\/a>.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"which%20languages%20are%20included%3F\"><h3>Which languages are included?<\/h3><\/dt>\n<dd><p>Bundled translations cover common interface text and sign-in\/sign-out screens in Spanish, French, German, Brazilian Portuguese, Simplified Chinese, Traditional Chinese and Japanese. Choose your Site Language in WordPress Settings &gt; General, or your personal administration language in Users &gt; Profile. Technical text without a translation uses English. Custom provider names, button text and messages stay as entered.<\/p><\/dd>\n<dt id=\"where%20can%20i%20report%20a%20bug%3F\"><h3>Where can I report a bug?<\/h3><\/dt>\n<dd><p>Use the <a href=\"https:\/\/github.com\/RobotHanzo\/PortalWeaveSSO\/issues\/new\/choose\">GitHub bug tracker<\/a>. Include reproduction steps and your WordPress, PHP and plugin versions. Keep credentials, tokens and personal data out of public issues.<\/p><\/dd>\n<dt id=\"can%20media%20be%20private%3F\"><h3>Can media be private?<\/h3><\/dt>\n<dd><p>Yes. Selected originals and registered sizes move to a writable directory outside the document root, and use authenticated delivery. Purge existing CDN copies and include the vault in backups. Review custom image\/storage integrations before rollout.<\/p><\/dd>\n<dt id=\"does%20this%20require%20a%20developer-hosted%20service%20or%20paid%20plugin%20upgrade%3F\"><h3>Does this require a developer-hosted service or paid plugin upgrade?<\/h3><\/dt>\n<dd><p>No. Authentication uses the provider selected by the administrator. All bundled modules are included; provider service requirements are separate.<\/p><\/dd>\n<dt id=\"which%20grants%20and%20logout%20methods%20are%20supported%3F\"><h3>Which grants and logout methods are supported?<\/h3><\/dt>\n<dd><p>Authorization Code with PKCE and refresh tokens are supported. Legacy Password and signed OIDC Implicit flows require explicit per-provider opt-in. Implicit requires a signed ID token with an access-token hash; unsolicited URL bearer-token login is rejected. OIDC RP-initiated and signed back-channel logout are supported; iframe front-channel logout is not implemented.<\/p><\/dd>\n<dt id=\"does%20shared%20sign-in%20revoke%20every%20participating%20site%27s%20session%3F\"><h3>Does shared sign-in revoke every participating site's session?<\/h3><\/dt>\n<dd><p>No. It is a one-minute handoff between explicitly trusted HTTPS subdomains and creates independent WordPress sessions. Normal IdP sign-in remains available after that handoff expires.<\/p><\/dd>\n<dt id=\"how%20do%20i%20recover%20local%20login%3F\"><h3>How do I recover local login?<\/h3><\/dt>\n<dd><p>Run wp portalweave-sso recover (or --network), or temporarily define PORTALWEAVE_SSO_ALLOW_LOCAL_LOGIN in wp-config.php.<\/p><\/dd>\n<dt id=\"are%20credentials%20in%20configuration%20exports%3F\"><h3>Are credentials in configuration exports?<\/h3><\/dt>\n<dd><p>No. Re-enter credentials on a new installation. Same-site restores retain existing credentials.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Add GitHub bug reporting links to site\/network plugin lists and Tools &amp; support.<\/li>\n<li>Bundle Spanish, French, German, Brazilian Portuguese, Simplified Chinese, Traditional Chinese and Japanese catalogs, with 333 translated interface messages and common errors per locale; remaining text uses English.<\/li>\n<li>Translate the built-in login button and signed-in message when displayed, preserving custom wording and saved settings.<\/li>\n<li>Add catalog compilation and validation tooling, locale-switching regression coverage and language documentation.<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li>Remove custom CSS input and rendering; use structured appearance controls and WordPress's own CSS editor.<\/li>\n<li>Register only the prefixed [portalweave_sso_login] shortcode; replace earlier unprefixed placements.<\/li>\n<li>Keep private-media directory identifiers independent of authentication salts and preserve existing file recovery paths.<\/li>\n<li>Scope media errors to media screens and expand service disclosures with a maintained documentation link.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Enforce content restrictions for mixed-case WordPress REST routes.<\/li>\n<li>Deny native Application Password authentication for deactivated, moderated and expired accounts while preserving multisite isolation.<\/li>\n<li>Prevent request parameters from suppressing local-login audit events and avoid duplicate SSO login events.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Redesign sign-out with a named identity-provider action, site-only sign-out and Go back.<\/li>\n<li>Show provider sign-out only when the linked provider has a valid HTTPS end-session endpoint.<\/li>\n<li>Keep cancellation and confirmation links read-only, and preserve browser-bound logout state for provider returns.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Resolve visitor IPs behind explicitly trusted Nginx and Cloudflare proxies for opted-in audit logging.<\/li>\n<li>Validate IPv4\/IPv6 forwarding chains, ignore spoofed headers from untrusted peers, and support Cloudflare Pseudo IPv4's original IPv6 address.<\/li>\n<li>Document server-only proxy trust and header configuration without changing collection or retention preferences.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Add PortalWeave SSO directly to the WordPress admin sidebar.<\/li>\n<li>Configure mappings in visual editors, with advanced JSON editing available for those fields.<\/li>\n<li>Show an animated floating reminder for unsaved settings, with Save changes and Revert changes actions and reduced-motion support.<\/li>\n<li>Group integrations into focused panels with related configuration and provider settings links.<\/li>\n<li>Paginate retained audit events with event counts, stable page navigation and a refresh action.<\/li>\n<li>Upload or select custom provider button logos from the WordPress media library alongside manual image URLs.<\/li>\n<li>Refresh affected feature screenshots and administration documentation.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Test a new provider connection before saving, using the current setup details in a separate tab without changing the administrator session.<\/li>\n<li>Customize WordPress sign-in button text, colors, sizing and icons with a live preview, presets and media-library selection.<\/li>\n<li>Organize provider configuration into focused tabs while preserving edits across sections.<\/li>\n<li>Add Activity overview charts for 7, 30 or 90 days, with a separate audit-log tab.<\/li>\n<li>Add clear clipboard and form-action feedback, keyboard navigation and responsive layouts.<\/li>\n<li>Expand the visual feature guide and update provider, privacy and administration documentation.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Replace the technical namespace with PortalWeave SSO identifiers. Earlier installations require the documented controlled replacement procedure.<\/li>\n<li>Add provider-specific guided setup, credential instructions and bundled provider logos.<\/li>\n<li>Sort provider choices alphabetically and remove logo borders.<\/li>\n<li>Address Plugin Check advisories and enforce complete strict checks in CI.<\/li>\n<li>Add Bash helper entrypoints, verified ZIP packaging and resilient CI image downloads.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<p>Initial multi-provider OAuth\/OIDC, access policy, provisioning and operations release.\nIncludes private-media recovery, privacy-policy guidance, data export\/erasure and administrator-controlled retention.<\/p>","raw_excerpt":"OAuth and OpenID Connect sign-in with account mapping, access controls, SCIM provisioning and local audit reports.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/401893","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=401893"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/robothanzo"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=401893"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=401893"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=401893"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=401893"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=401893"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=401893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}