{"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"developeronboarding","__idx":0},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["developerOnboarding"]}]},{"$$mdtype":"Tag","name":"ConfigOptionRequirements","attributes":{"products":["Reef","Realm"],"plans":["Pro","Enterprise","Enterprise+"]},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configure developer onboarding to enable external developers to self-register applications and manage API credentials through your developer portal."," ","This feature integrates with API gateway management systems to automate app registration and credential lifecycle management."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"when-to-use-this","__idx":1},"children":["When to use this"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use developer onboarding when you want to:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enable external developers to self-service app registration"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Automate credential management for registered applications"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Integrate your developer portal with API gateway systems like Apigee or Gravitee"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Provide developers with a streamlined experience for accessing your APIs"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"options","__idx":2},"children":["Options"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Option"},"children":["Option"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["adapters"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["[",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#adapter-object"},"children":["Adapter"]},"]"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","List of adapter configurations."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"adapter-object","__idx":3},"children":["Adapter object"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Choose the appropriate adapter object based on the type."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#apigee-adapter"},"children":["Apigee"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#gravitee-adapter"},"children":["Gravitee"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"apigee-adapter","__idx":4},"children":["Apigee adapter"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Option"},"children":["Option"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["type"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Possible values: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["APIGEE_X"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["APIGEE_EDGE"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["organizationName"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Name of the organization."," ","Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apigee-eval-10"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["auth"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#apigee-auth-object"},"children":["Apigee auth object"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Authentication object for the Apigee management API."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ignoreApiProducts"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["[string]"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["List of API products to ignore."," ","Ignored products are not displayed during app registration or credential management."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["allowApiProductsOutsideCatalog"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["boolean"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Allow developers to register apps with API products that are not in the catalog."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["stage"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mark the current Apigee instance as production or non-production to mark them in the UI."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["non-production"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["apiUrl"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["URL to send Apigee management console requests to, in case you wish to pass them through a proxy."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://apigee.googleapis.com/v1"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"callback-urls","__idx":5},"children":["Callback URLs"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For adapters with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: APIGEE_X"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["type: APIGEE_EDGE"]},", the developer portal exposes ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Callback URLs"]}," in two places."," ","They appear when developers create an application and on the application detail page (API keys tab)."," ","Developers can set or change redirect URLs without using the Apigee UI."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Redocly maps this to the Apigee developer app ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations.developers.apps#DeveloperApp"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["callbackUrl"]}]}," field on create, read, and update."," ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Apigee X"]}," supports multiple redirect URLs in that field by entering them separated with a comma."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"apigee-auth-object","__idx":6},"children":["Apigee auth object"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Choose your preferred method of authentication."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#apigee-service-account-auth-object"},"children":["Service Account"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"#apigee-oauth-proxy-auth-object"},"children":["OAuth proxy"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"apigee-service-account-auth-object","__idx":7},"children":["Apigee service account auth object"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Option"},"children":["Option"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["type"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Possible values: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SERVICE_ACCOUNT"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["serviceAccountEmail"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Email associated with the service account that interacts with the Apigee management API."," ","Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redocly@apigee-eval-10.iam.gserviceaccount.com"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["serviceAccountPrivateKey"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Private key for Apigee management API access."," ","Use an environment variable and do ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["NOT"]}," store your private key directly in the YAML configuration file."," ","Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{{ process.env.DEMO_PRIVATE_KEY }}"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"apigee-oauth-proxy-auth-object","__idx":8},"children":["Apigee OAuth proxy auth object"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This auth object requires you to have an OAuth2 proxy in front of the Apigee management API."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The auth proxy should implement ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://datatracker.ietf.org/doc/html/rfc6749#section-4.4"},"children":["OAuth2 client credentials"]}," flow."," ","The Apigee adapter uses this token as the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization"]}," bearer token to access the Apigee management API."," ","Additionally, the Apigee adapter sets the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Api-Key"]}," header to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["clientId"]}," value."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You need to implement a custom Apigee authorization proxy and configure ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiUrl"]}," to point to it."," ","This proxy should:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validate the access token received from the OAuth2 proxy."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Validate if the specific API operation is allowed by your custom authorization logic."," ","See the list of ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/config/developer-onboarding/apigee-api-operations"},"children":["Apigee API operations"]}," used by the Redocly adapter."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Authorize the request with Apigee (for example using service account)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Forward request to the Apigee management API."]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Option"},"children":["Option"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["type"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Possible values: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OAUTH2"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["clientId"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Client ID for Apigee management API access."," ","Use an environment variable and do ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["NOT"]}," store your private key directly in the YAML configuration file."," ","Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{{ process.env.DEMO_CLIENT_ID }}"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["clientSecret"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Client secret for Apigee management API access."," ","Use an environment variable and do ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["NOT"]}," store your private key directly in the YAML configuration file."," ","Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{{ process.env.DEMO_CLIENT_SECRET }}"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["tokenEndpoint"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","URL to send OAuth2 requests to."," ","Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://apigee-eval-10-demo.apigee.net/mgmt-proxy/token"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"gravitee-adapter","__idx":9},"children":["Gravitee adapter"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Gravitee adapter uses the ID token of the user to authenticate with the Gravitee API."," ","You need to configure ",{"$$mdtype":"Tag","name":"Link","attributes":{"href":"https://docs.gravitee.io/apim/3.x/apim_installguide_authentication.html"},"children":["Identity Provider in the Gravitee API Manager"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Contact team@redocly.com before using this adapter."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Option"},"children":["Option"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Type"},"children":["Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["type"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Possible values: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GRAVITEE"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["apiBaseUrl"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Base URL of the Gravitee API."," ","Example: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://apim-dev.acme-inc.com"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["env"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["REQUIRED."]}," ","Name of the environment."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["DEFAULT"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["stage"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["string"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mark the current Gravitee instance as production or non-production to mark them in the UI."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["non-production"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["allowApiProductsOutsideCatalog"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["boolean"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Allow developers to register apps with API products that are not in the catalog."," ","Default: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]},"."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"examples","__idx":10},"children":["Examples"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following is an example of a developer onboarding configuration with two gateways."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"developerOnboarding:\n  adapters:\n    - type: APIGEE_X\n      organizationName: apigee-eval-10\n      ignoreApiProducts:\n        - Infrastructure API\n      auth:\n        type: SERVICE_ACCOUNT\n        serviceAccountEmail: redocly@apigee-eval-10.iam.gserviceaccount.com\n        serviceAccountPrivateKey: '{{process.env.MAIN_PRIVATE_KEY}}'\n      # apiUrl: https://apigee.googleapis.com/v1 # optional\n    - type: APIGEE_X\n      organizationName: apigee-eval-10-demo\n      auth:\n        type: OAUTH2\n        clientId: '{{process.env.DEMO_CLIENT_ID}}'\n        clientSecret: '{{process.env.DEMO_CLIENT_SECRET}}'\n        tokenEndpoint: https://apigee-eval-10-demo.apigee.net/mgmt-proxy/token\n      apiUrl: https://apigee-eval-10-demo.apigee.net/mgmt-proxy/\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The following is an example of a developer onboarding configuration with one gateway."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"yaml","header":{"controls":{"copy":{}}},"source":"developerOnboarding:\n  adapters:\n    - type: GRAVITEE\n      apiBaseUrl: https://apim-dev.acme-inc.com\n","lang":"yaml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"resources","__idx":11},"children":["Resources"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/config/developer-onboarding/apigee-api-operations"},"children":["Apigee API operations used by Redocly"]}]}," - Complete reference of Apigee API endpoints used by the developer onboarding feature for integration and troubleshooting"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"Link","attributes":{"href":"/docs/realm/config/access/sso"},"children":["SSO configuration"]}]}," - Configure single sign-on authentication required for developer onboarding and app registration workflows"]}]}]},"frontmatter":{"products":["Reef","Realm"],"plans":["Pro","Enterprise","Enterprise+"],"description":"Configure developer onboarding to enable external developers to self-register applications and manage API credentials."},"tagList":["configOptionRequirements","table"],"title":"developerOnboarding","lastModified":"2026-10-01T23:00:57.000Z"}