### Example Directory Structure Path Source: https://github.com/pingidentity/pingone-openapi-specifications/blob/main/README.md This example shows the typical path structure for OpenAPI specifications within the repository, organized by OpenAPI version, subdomain, and variant. ```bash .specifications/3.1/api/combined/openapi.yaml ``` -------------------------------- ### Agent Skill Prompts for SDK Generation Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Example prompts for interacting with the `sdk-builder` agent skill. These demonstrate how to request SDK generation with various parameters. ```string # Example agent prompts for the sdk-builder skill: "Using the SDK builder, generate the go SDK using the defaults. Version v0.4.0. Output to /tmp/pingone-go-sdk" "Generate the python SDK for pingone at version v1.2.0 and output it to ./dist/python-sdk" "Build the SDK from https://example.com/openapi.yaml for language python, product identitycloud, version v3.0.0" ``` -------------------------------- ### Example Chat Prompt for Agent Skill Source: https://github.com/pingidentity/pingone-openapi-specifications/blob/main/README.md This is an example chat prompt to initiate the SDK generation process using the automated agent skill. It specifies the language, version, and output directory. ```text Using the SDK builder, generate the `go` SDK using the defaults. Version `v0.4.0`. Output to `/tmp/pingone-go-sdk` ``` -------------------------------- ### Generate SDK from Remote OpenAPI Spec Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Downloads an OpenAPI specification from a remote URL and uses it to generate an SDK. This example shows generating a Go SDK and saving it to a specified directory. ```bash # Download and generate in one pipeline REMOTE_SPEC_URL="https://raw.githubusercontent.com/pingidentity/pingone-openapi-specs/main/specification/3.1/api/sdk-generation/openapi.yaml" curl -L -o /tmp/pingone-openapi.yaml "$REMOTE_SPEC_URL" make generate-sdk \ INPUT_OAS=/tmp/pingone-openapi.yaml \ LANGUAGE=go \ PRODUCT=pingone \ VERSION=v0.8.0 \ TARGET_DIR=/tmp/pingone-go-sdk # Verify generated output ls /tmp/pingone-go-sdk/ # api/ ← Generated API client files (e.g. api_environments.go) # model/ ← Generated model structs # README.md ``` -------------------------------- ### Error Response Schema Example Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Demonstrates how to handle a 429 Too Many Requests response by checking the HTTP status code and using the `Retry-After` header to determine when to retry the request. ```bash # Example: handling a 429 Too Many Requests response RESPONSE=$(curl -s -w "\n%{http_code}" \ "https://api.pingone.com/v1/environments/$ENV_ID/flows" \ -H "Authorization: Bearer $ACCESS_TOKEN") HTTP_CODE=$(echo "$RESPONSE" | tail -1) BODY=$(echo "$RESPONSE" | head -1) if [ "$HTTP_CODE" = "429" ]; then RETRY_AFTER=$(curl -sI \ "https://api.pingone.com/v1/environments/$ENV_ID/flows" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ | grep -i "Retry-After" | awk '{print $2}') echo "Rate limited. Retry after: $RETRY_AFTER seconds" sleep "$RETRY_AFTER" fi ``` -------------------------------- ### Get Environment Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Retrieves a single environment by its ID. Supports the `expand` query parameter. ```APIDOC ## GET /environments/{environmentID} ### Description Retrieves a single environment by its ID. Supports the `expand` query parameter. ### Method GET ### Endpoint /environments/{environmentID} ### Parameters #### Path Parameters - **environmentID** (string) - Required - The unique identifier of the environment to retrieve. #### Query Parameters - **expand** (string) - Optional - Specifies related resources to include in the response. ### Request Example ```bash ENV_ID="abc123-def456-ghi789" curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID" \ -H "Authorization: Bearer $ACCESS_TOKEN" ``` ### Response #### Success Response (200) - **[Environment Object]** - The full details of the environment. #### Response Example ```json { ... } ``` #### Error Response (404) ```json { "id": "...", "code": "NOT_FOUND", "message": "The requested resource was not found." } ``` ``` -------------------------------- ### Get PingOne Environment by ID Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Retrieves a specific PingOne environment using its unique ID. Supports the `expand` query parameter for additional details. Handles 'Not Found' errors. ```bash ENV_ID="abc123-def456-ghi789" curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID" \ -H "Authorization: Bearer $ACCESS_TOKEN" | jq . ``` -------------------------------- ### Get Total Identities Metrics Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Retrieves identity count metrics for an environment. This endpoint supports SCIM filter parameters and can return data in `application/hal+json` or `application/json` format. ```APIDOC ## GET /environments/{environmentID}/totalIdentities ### Description Retrieves identity count metrics for an environment. Supports a SCIM `filter` parameter. Returns data in `application/hal+json` or `application/json`. ### Method GET ### Endpoint /environments/$ENV_ID/totalIdentities ### Parameters #### Query Parameters - **filter** (string) - Optional - SCIM filter parameter (e.g., `reportDate ge "2025-01-01"`). ### Response #### Success Response (200 OK) - **identityCounts** (array) - An array of identity count objects. - **type** (string) - The type of identity. - **count** (integer) - The number of identities of that type. - **reportDate** (string) - The date the count was reported. ### Response Example ```json { "identityCounts": [ { "type": "USER", "count": 1500, "reportDate": "2023-10-27" }, { "type": "APPLICATION", "count": 50, "reportDate": "2023-10-27" } ] } ``` ``` -------------------------------- ### Get Total Identity Counts Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Retrieves identity count metrics for an environment. Supports SCIM `filter` parameters and returns data in `application/hal+json` or `application/json`. Requires `orgmgt:read:environment` permission. ```bash # Get total identity counts for an environment curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID/totalIdentities" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Accept: application/json" \ | jq '.identityCounts[] | {type, count, reportDate}' ``` ```bash # Filter to a specific time range or identity type curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID/totalIdentities?filter=reportDate+ge+\"2025-01-01\"" \ -H "Authorization: Bearer $ACCESS_TOKEN" ``` -------------------------------- ### Filter Variables by Name Prefix Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Use the `filter` query parameter with `name sw` to retrieve variables whose names start with a specific prefix. Requires `davinci:read:constructs` permission. ```bash curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID/variables?filter=name+sw+\"user\"&limit=20" \ -H "Authorization: Bearer $ACCESS_TOKEN" ``` -------------------------------- ### Generate SDK using Makefile Source: https://github.com/pingidentity/pingone-openapi-specifications/blob/main/README.md Use this command to build a client SDK from the OpenAPI specification. Ensure you provide the correct path to the specification file, the target language, and the desired SDK version. ```bash make generate-sdk \ INPUT_OAS=specification/3.1/api/sdk-generation/openapi.yaml \ LANGUAGE=go \ VERSION=v0.6.0 ``` -------------------------------- ### Generate Go SDK with make generate-sdk Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Generates a Go SDK from a specified OpenAPI file. Requires INPUT_OAS, LANGUAGE, PRODUCT, and VERSION to be set. ```bash # Generate a Go SDK make generate-sdk \ INPUT_OAS=specification/3.1/api/sdk-generation/openapi.yaml \ LANGUAGE=go \ PRODUCT=pingone \ VERSION=v0.6.0 ``` -------------------------------- ### Serve Interactive Docs Locally with Swagger UI Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Run a Docker container to serve interactive API documentation locally using Swagger UI, mounting the combined specification file. ```bash docker run -p 8080:8080 \ -e SWAGGER_JSON=/spec/openapi.yaml \ -v $(pwd)/specification/3.1/api/combined:/spec \ swaggerapi/swagger-ui # → Open http://localhost:8080 ``` -------------------------------- ### Create Configuration Snapshot Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Creates a point-in-time export of an environment's configuration. Requires the `p1ax-1984-configuration-promotion` feature flag and `promotion:create:snapshot` permission. Returns the snapshot's ID, name, and status. ```bash curl -s -X POST \ "https://api.pingone.com/v1/environments/$ENV_ID/snapshots" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ \ "name": "Pre-release snapshot 2026-01", \ "description": "Snapshot before January release" \ }' | jq '{snapshotID, name, status}' ``` -------------------------------- ### Create Environment Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Creates a new PingOne environment within the tenant. ```APIDOC ## POST /environments ### Description Creates a new PingOne environment within the tenant. ### Method POST ### Endpoint /environments ### Parameters #### Request Body - **name** (string) - Required - The name for the new environment. - **description** (string) - Optional - A description for the new environment. - **type** (string) - Required - The type of environment (e.g., SANDBOX, PRODUCTION). - **region** (object) - Required - Specifies the region for the environment. - **id** (string) - Required - The identifier for the region (e.g., "NA"). - **billOfMaterials** (object) - Required - Defines the products included in the environment. - **products** (array) - Required - List of products. - **type** (string) - Required - The type of product (e.g., "PING_ONE_BASE"). ### Request Example ```bash curl -s -X POST \ "https://api.pingone.com/v1/environments" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d { "name": "My New Sandbox", "description": "Development environment for new feature", "type": "SANDBOX", "region": { "id": "NA" }, "billOfMaterials": { "products": [{ "type": "PING_ONE_BASE" }] } } ``` ### Response #### Success Response (201 Created) - **id** (string) - The unique identifier for the newly created environment. - **name** (string) - The name of the environment. - **type** (string) - The type of the environment. - **createdAt** (string) - The timestamp when the environment was created. #### Response Example ```json { "id": "xyz789", "name": "My New Sandbox", "type": "SANDBOX", "createdAt": "..." } ``` ``` -------------------------------- ### SDK Builder Skill Internal Workflow - Execute Generation Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Shows Step 6 of the SDK builder skill: executing the SDK generation using `make generate-sdk` with parameters determined during the workflow. ```bash # Step 6: Execute generation make generate-sdk \ INPUT_OAS="/tmp/openapi-spec.yaml" \ LANGUAGE=go \ PRODUCT=pingone \ VERSION=v0.4.0 \ TARGET_DIR=/tmp/pingone-go-sdk ``` -------------------------------- ### Generate SDK for Non-Default Product Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Generates an SDK for a product other than the default, such as 'identitycloud'. Requires specifying the path to the product's OpenAPI file. ```bash # Generate for a non-default product (e.g. identitycloud) make generate-sdk \ INPUT_OAS=/tmp/identitycloud-openapi.yaml \ LANGUAGE=python \ PRODUCT=identitycloud \ VERSION=v2.0.0 ``` -------------------------------- ### Preview Combined Spec with Redocly Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Use the Redocly CLI to preview the interactive documentation for the combined OpenAPI specification. ```bash npx @redocly/cli preview-docs specification/3.1/api/combined/openapi.yaml ``` -------------------------------- ### Create PingOne Environment Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Creates a new PingOne environment within your tenant. Requires specifying name, type, and region. The response includes the new environment's ID and creation timestamp. ```bash curl -s -X POST \ "https://api.pingone.com/v1/environments" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "My New Sandbox", "description": "Development environment for new feature", "type": "SANDBOX", "region": { "id": "NA" }, "billOfMaterials": { "products": [{ "type": "PING_ONE_BASE" }] } }' | jq '{id, name, type, createdAt}' ``` -------------------------------- ### List Environments Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists all PingOne environments accessible to the authenticated client. Supports pagination via `cursor` and `limit`, and filtering/ordering via SCIM-style query parameters. ```APIDOC ## GET /environments ### Description Lists all PingOne environments accessible to the authenticated client. Supports pagination via `cursor` and `limit` (1–5000, default 1000), and filtering/ordering via SCIM-style query parameters. ### Method GET ### Endpoint /environments ### Parameters #### Query Parameters - **limit** (integer) - Optional - Maximum number of environments to return (1-5000, default 1000). - **cursor** (string) - Optional - Cursor for pagination. - **filter** (string) - Optional - SCIM-style filter for ordering and filtering environments. ### Request Example ```bash curl -s -X GET \ "https://api.pingone.com/v1/environments" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Accept: application/json" ``` ### Response #### Success Response (200) - **environments** (array) - List of environment objects. - **id** (string) - The unique identifier for the environment. - **name** (string) - The name of the environment. - **type** (string) - The type of the environment (e.g., PRODUCTION, SANDBOX). #### Response Example ```json { "environments": [ { "id": "abc123", "name": "Production", "type": "PRODUCTION" }, { "id": "def456", "name": "Staging", "type": "SANDBOX" } ] } ``` #### Error Response (401) ```json { "id": "err-uuid", "code": "INVALID_TOKEN", "message": "The access token is invalid or expired.", "details": [{ "code": "INVALID_TOKEN", "message": "...", "target": "Authorization" }] } ``` ``` -------------------------------- ### Generate Go Client SDK for DaVinci Flows Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Generate a Go client library specifically for DaVinci Admin APIs using the by-tag-group OpenAPI specification and openapi-generator-cli via Docker. ```bash # Generate SDK for DaVinci Flows only docker run --rm \ -v $(pwd):/local \ openapitools/openapi-generator-cli:v7.16.0 generate \ -i /local/specification/3.1/api/by-tag-group/davinci-admin-flows/openapi.yaml \ -g go \ -o /local/dist/go/davinci-flows \ --additional-properties=packageName=davinciflows,packageVersion=v0.1.0 ``` -------------------------------- ### List PingOne Environments Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists all accessible PingOne environments. Supports pagination and filtering via SCIM query parameters. Ensure you have a valid access token. ```bash # List all environments (default limit 1000) curl -s -X GET \ "https://api.pingone.com/v1/environments" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Accept: application/json" | jq '.environments[] | {id, name, type}' ``` ```bash # Paginate with cursor and limit curl -s \ "https://api.pingone.com/v1/environments?limit=10&cursor=CURSOR_VALUE" \ -H "Authorization: Bearer $ACCESS_TOKEN" ``` ```bash # Filter environments by name using SCIM filter syntax curl -s \ "https://api.pingone.com/v1/environments?filter=name+sw+\"Prod\"" \ -H "Authorization: Bearer $ACCESS_TOKEN" ``` -------------------------------- ### SDK Builder Skill Internal Workflow - Check Output Directory Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Illustrates Step 5 of the SDK builder skill: checking if the output directory for generated SDKs already exists and is not empty. This triggers a prompt for user confirmation. ```bash # Step 5: Check output directory for existing files if [ -d "dist/go/pingone/v0.4.0" ] && [ "$(ls -A dist/go/pingone/v0.4.0 2>/dev/null)" ]; then echo "EXISTS_AND_NOT_EMPTY" # → skill prompts user to overwrite or cancel fi ``` -------------------------------- ### Create DaVinci Application Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Creates a new DaVinci application. Requires `davinci:create:applications` permission. ```bash curl -s -X POST \ "https://api.pingone.com/v1/environments/$ENV_ID/davinciApplications" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ \ "name": "My Login App", \ "description": "Customer-facing login application", \ "enabled": true \ }' | jq '{applicationID, name}' ``` -------------------------------- ### SDK Builder Skill Internal Workflow - Download OAS Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Demonstrates Step 4 of the SDK builder skill's internal workflow: downloading a remote OpenAPI specification using `curl`. ```bash # Step 4: Download remote OAS if needed curl -L -o /tmp/openapi-spec.yaml "https://example.com/openapi.yaml" ``` -------------------------------- ### List DaVinci Applications Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists all DaVinci applications registered in an environment. Requires `davinci:read:applications` permission. ```bash curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID/davinciApplications" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ | jq '.applications[] | {applicationID, name, enabled}' ``` -------------------------------- ### Mock API with Prism CLI Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Use the Prism CLI to mock an API based on an OpenAPI specification. Specify the OpenAPI file and the port for the mock server. ```bash npx @stoplight/prism-cli mock \ specification/3.1/api/by-tag-group/environments/openapi.yaml \ --port 4010 ``` -------------------------------- ### Generate Python SDK to Custom Directory Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Generates a Python SDK and directs the output to a custom target directory. Useful for specific project structures or testing. ```bash # Generate a Python SDK to a custom directory make generate-sdk \ INPUT_OAS=specification/3.1/api/sdk-generation/openapi.yaml \ LANGUAGE=python \ PRODUCT=pingone \ VERSION=v1.0.0 \ TARGET_DIR=/tmp/pingone-python-sdk ``` -------------------------------- ### List DaVinci Connectors Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Returns a minimal list of all DaVinci connectors available in an environment. Requires `davinci:read:connectors` permission. ```bash curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID/connectors" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ | jq '.connectors[] | {connectorID, name}' ``` -------------------------------- ### Generate Python Client SDK with OpenAPI Generator Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Generate a Python client library from the SDK generation OpenAPI specification using Docker and openapi-generator-cli. Ensure the input spec path and output directory are correctly specified. ```bash # Path to the SDK generation spec INPUT_SPEC="specification/3.1/api/sdk-generation/openapi.yaml" # Generate a Python client using openapi-generator-cli directly docker run --rm \ -v $(pwd):/local \ openapitools/openapi-generator-cli:v7.16.0 generate \ -i /local/$INPUT_SPEC \ -g python \ -o /local/dist/python/pingone/v0.1.0 \ --additional-properties=packageName=pingone,packageVersion=0.1.0,projectName=pingone # Generated output structure: # dist/python/pingone/v0.1.0/ # pingone/ # api/ ← API client classes # models/ ← Request/response models # README.md # pyproject.toml ``` -------------------------------- ### Create Configuration Snapshot Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Creates a point-in-time export of an environment's configuration. This feature requires a specific feature flag and returns the snapshot's ID, name, and status. ```APIDOC ## POST /environments/{environmentID}/snapshots ### Description Creates a configuration snapshot (point-in-time export) of an environment. Requires the `p1ax-1984-configuration-promotion` feature flag. Supports an optional `expand` query parameter. ### Method POST ### Endpoint /environments/$ENV_ID/snapshots ### Request Body - **name** (string) - Required - The name of the snapshot. - **description** (string) - Optional - A description for the snapshot. ### Request Example ```json { "name": "Pre-release snapshot 2026-01", "description": "Snapshot before January release" } ``` ### Response #### Success Response (201 Created) - **snapshotID** (string) - The unique identifier of the created snapshot. - **name** (string) - The name of the snapshot. - **status** (string) - The status of the snapshot creation. ### Response Example ```json { "snapshotID": "snap-abc-123", "name": "Pre-release snapshot 2026-01", "status": "IN_PROGRESS" } ``` ``` -------------------------------- ### Run SDK Generator Container Directly Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Executes the SDK generator container directly, mirroring the functionality of `make generate-sdk`. Mounts local directories for input and output. ```bash # Run the generator container directly (equivalent to make generate-sdk) docker run --rm \ -v $(pwd)/specification/3.1/api/sdk-generation/openapi.yaml:/openapi.yaml \ -v $(pwd)/dist/go/pingone/v0.6.0:/generated \ ping-sdk-openapi-generator:dev \ /openapi.yaml go pingone v0.6.0 ``` -------------------------------- ### Build SDK Generator Docker Image Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Builds the Docker image used for generating SDKs. This is typically done automatically by `make generate-sdk`, but can be run explicitly. ```bash # Build the generator Docker image (done automatically by generate-sdk) make build-sdk-generator # Optionally with a custom image name: make build-sdk-generator IMAGE=my-org/ping-sdk-generator:latest ``` -------------------------------- ### Deploy DaVinci Flow Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Deploys a DaVinci flow, marking it as production-ready. Requires `davinci:create:dvFlows` permission. ```bash curl -s -X POST \ "https://api.pingone.com/v1/environments/$ENV_ID/flows/$FLOW_ID" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/vnd.pingidentity.flow.deploy+json" \ -d '{}' \ -o /dev/null -w "%{{http_code}}" ``` -------------------------------- ### List DaVinci Applications Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists all DaVinci applications registered in an environment. This operation requires the `davinci:read:applications` permission. ```APIDOC ## GET /environments/{environmentID}/davinciApplications ### Description Lists all DaVinci applications registered in an environment. ### Method GET ### Endpoint `/environments/{environmentID}/davinciApplications` ### Response #### Success Response (200 OK) - **applications** (array) - An array of DaVinci application objects. - **applicationID** (string) - The unique identifier for the application. - **name** (string) - The name of the application. - **enabled** (boolean) - Indicates if the application is enabled. ### Permissions - `davinci:read:applications` ``` -------------------------------- ### Use Remote OpenAPI Spec with Docker Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Generates an SDK using a remote OpenAPI specification. The spec must be downloaded first using `curl` and then mounted into the container. ```bash # Use a remote spec (download first with curl) curl -L -o /tmp/remote-openapi.yaml \ "https://raw.githubusercontent.com/pingidentity/pingone-openapi-specifications/main/specification/3.1/api/sdk-generation/openapi.yaml" docker run --rm \ -v /tmp/remote-openapi.yaml:/openapi.yaml \ -v /tmp/pingone-go-sdk:/generated \ ping-sdk-openapi-generator:dev \ /openapi.yaml go pingone v0.5.0 ``` -------------------------------- ### List DaVinci Connectors Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Returns a minimal list of all DaVinci connectors available in an environment. This operation requires the `davinci:read:connectors` permission. ```APIDOC ## GET /environments/{environmentID}/connectors ### Description Returns a minimal list of all DaVinci connectors available in an environment. ### Method GET ### Endpoint `/environments/{environmentID}/connectors` ### Response #### Success Response (200 OK) - **connectors** (array) - An array of DaVinci connector objects. - **connectorID** (string) - The unique identifier for the connector. - **name** (string) - The name of the connector. ### Permissions - `davinci:read:connectors` ``` -------------------------------- ### Enable Debug Output in SDK Generator Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Runs the SDK generator container with the DEBUG environment variable set to true for verbose logging. Useful for troubleshooting generation issues. ```bash # Enable debug output docker run --rm \ -e DEBUG=true \ -v $(pwd)/specification/3.1/api/sdk-generation/openapi.yaml:/openapi.yaml \ -v $(pwd)/dist/go/pingone/debug:/generated \ ping-sdk-openapi-generator:dev \ /openapi.yaml go pingone v0.6.0-debug ``` -------------------------------- ### Create DaVinci Application Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Creates a new DaVinci application. This operation requires the `davinci:create:applications` permission. ```APIDOC ## POST /environments/{environmentID}/davinciApplications ### Description Creates a new DaVinci application. ### Method POST ### Endpoint `/environments/{environmentID}/davinciApplications` ### Headers - `Content-Type`: `application/json` ### Request Body - **name** (string) - Required - The name of the new application. - **description** (string) - Optional - A description for the application. - **enabled** (boolean) - Optional - Whether the application should be enabled upon creation (defaults to true if not specified). ### Request Example ```json { "name": "My Login App", "description": "Customer-facing login application", "enabled": true } ``` ### Response #### Success Response (201 Created) - **applicationID** (string) - The unique identifier for the newly created application. - **name** (string) - The name of the newly created application. ### Permissions - `davinci:create:applications` ``` -------------------------------- ### Obtain OAuth 2.0 Access Token Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Acquires an OAuth 2.0 access token using the client credentials flow. Requires your environment ID, client ID, and client secret. The token is extracted using `jq`. ```bash # Obtain an OAuth 2.0 access token (client credentials flow) ACCESS_TOKEN=$(curl -s -X POST \ "https://auth.pingone.com/{environmentID}/as/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET" \ | jq -r '.access_token') echo "Token acquired: ${ACCESS_TOKEN:0:20}..." ``` -------------------------------- ### Create DaVinci Flow Policy Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Creates a new flow policy and attaches it to a DaVinci application. Requires `davinci:create:flowPolicies` permission. ```bash curl -s -X POST \ "https://api.pingone.com/v1/environments/$ENV_ID/davinciApplications/$APP_ID/flowPolicies" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ \ "name": "Default Login Policy", \ "trigger": { "type": "AUTHENTICATION" }, \ "flows": [{ "flowID": "'$FLOW_ID'", "versionID": "0" }], \ "enabled": true \ }' | jq '{flowPolicyID, name}' ``` -------------------------------- ### Bundle Split Spec Files with Redocly CLI Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Combine individual YAML files from the split OpenAPI specification into a single, bundled OpenAPI file using the Redocly CLI. ```bash npx @redocly/cli bundle specification/3.1/api/split/openapi.yaml \ --output dist/bundled.yaml ``` -------------------------------- ### Import Combined Spec into Postman Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Use the Postman CLI (newman) to import the combined OpenAPI specification file into Postman collections. ```bash npm install -g @postman/cli postman collection import specification/3.1/api/combined/openapi.yaml ``` -------------------------------- ### Deploy DaVinci Flow Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Deploys a DaVinci flow, marking it as production-ready. This operation requires the `davinci:create:dvFlows` permission. ```APIDOC ## POST /environments/{environmentID}/flows/{flowID} (Deploy Flow) ### Description Deploys a DaVinci flow, marking it as production-ready. ### Method POST ### Endpoint `/environments/{environmentID}/flows/{flowID}` ### Headers - `Content-Type`: `application/vnd.pingidentity.flow.deploy+json` ### Request Body This endpoint does not require a request body. ### Response #### Success Response (200 OK) - The HTTP status code indicates success. ### Permissions - `davinci:create:dvFlows` ``` -------------------------------- ### Retrieve Specific Configuration Snapshot Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Retrieves a specific configuration snapshot by its ID. Supports optional `expand` and `filter` query parameters. Returns snapshot details including ID, name, status, and creation timestamp. ```bash SNAPSHOT_ID="snap-abc-001" curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID/snapshots/$SNAPSHOT_ID" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ | jq '{snapshotID, name, status, createdAt}' ``` -------------------------------- ### Create DaVinci Flow Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Creates a new DaVinci flow in a given environment. Requires specifying the flow's name, description, and status. The response includes the new flow's ID. Requires `davinci:create:dvFlows` permission. ```bash curl -s -X POST \ "https://api.pingone.com/v1/environments/$ENV_ID/flows" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Login Flow", "description": "Standard username/password login", "flowStatus": "DISABLED" }' | jq '{flowId, name, flowStatus}' ``` -------------------------------- ### List DaVinci Variables Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists DaVinci variables for an environment, supporting pagination and filtering. Requires `davinci:read:variables` permission. ```bash # List first page of variables curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID/variables?limit=50" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ | jq '.variables[] | {variableID, name, type}' ``` -------------------------------- ### Update Environment Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Replaces (full update) an environment's configuration. ```APIDOC ## PUT /environments/{environmentID} ### Description Replaces (full update) an environment's configuration. ### Method PUT ### Endpoint /environments/{environmentID} ### Parameters #### Path Parameters - **environmentID** (string) - Required - The unique identifier of the environment to update. #### Request Body - **name** (string) - Optional - The updated name for the environment. - **description** (string) - Optional - The updated description for the environment. - **type** (string) - Optional - The updated type of the environment. ### Request Example ```bash curl -s -X PUT \ "https://api.pingone.com/v1/environments/$ENV_ID" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d { "name": "Updated Sandbox Name", "description": "Updated description", "type": "SANDBOX" } ``` ### Response #### Success Response (200 OK) - **id** (string) - The unique identifier of the updated environment. - **name** (string) - The updated name of the environment. - **updatedAt** (string) - The timestamp when the environment was last updated. #### Response Example ```json { "id": "...", "name": "Updated Sandbox Name", "updatedAt": "..." } ``` ``` -------------------------------- ### List DaVinci Flow Policies Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists all flow policies attached to a DaVinci application. Requires `davinci:read:flowPolicies` permission. ```bash APP_ID="app-xyz-999" curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID/davinciApplications/$APP_ID/flowPolicies" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ | jq '.flowPolicies[] | {flowPolicyID, name}' ``` -------------------------------- ### Update PingOne Environment Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Replaces the configuration of an existing PingOne environment. This is a full update, so all desired fields must be included in the request body. Requires the environment ID. ```bash curl -s -X PUT \ "https://api.pingone.com/v1/environments/$ENV_ID" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Updated Sandbox Name", "description": "Updated description", "type": "SANDBOX" }' \ | jq '{id, name, updatedAt}' ``` -------------------------------- ### Retrieve Configuration Snapshot Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Retrieves a specific configuration snapshot by its ID. Supports optional `expand` and `filter` query parameters. ```APIDOC ## GET /environments/{environmentID}/snapshots/{snapshotID} ### Description Retrieves a specific snapshot by ID, with optional `expand` and `filter` parameters. ### Method GET ### Endpoint /environments/$ENV_ID/snapshots/$SNAPSHOT_ID ### Parameters #### Path Parameters - **snapshotID** (string) - Required - The ID of the snapshot to retrieve. ### Response #### Success Response (200 OK) - **snapshotID** (string) - The unique identifier of the snapshot. - **name** (string) - The name of the snapshot. - **status** (string) - The current status of the snapshot. - **createdAt** (string) - The timestamp when the snapshot was created. ### Response Example ```json { "snapshotID": "snap-abc-001", "name": "Pre-release snapshot 2026-01", "status": "COMPLETED", "createdAt": "2026-01-15T10:00:00Z" } ``` ``` -------------------------------- ### List DaVinci Flows Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists all DaVinci orchestration flows within a specified environment. Supports the `attributes` query parameter to control returned fields. Requires `davinci:read:dvFlows` permission. ```bash curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID/flows" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ | jq '.flows[] | {flowId, name, enabled}' ``` -------------------------------- ### List DaVinci Flow Versions Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists all saved versions of a specific DaVinci flow. Requires `davinci:read:flowVersions` permission. ```bash curl -s \ "https://api.pingone.com/v1/environments/$ENV_ID/flows/$FLOW_ID/versions" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ | jq '.flowVersions[] | {versionID, createdAt, publishedAt}' ``` -------------------------------- ### Extract Default Generator Templates Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Extracts the default generator templates for a specified language. This is useful for customizing the generation process. ```bash # Extract default generator templates for a language (for customization) make sdk-generator-default-templates LANGUAGE=go ``` -------------------------------- ### Create Flow Policy Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Creates a new flow policy and attaches it to a DaVinci application. This operation requires the `davinci:create:flowPolicies` permission. ```APIDOC ## POST /environments/{environmentID}/davinciApplications/{davinciApplicationID}/flowPolicies ### Description Creates a new flow policy and attaches it to a DaVinci application. ### Method POST ### Endpoint `/environments/{environmentID}/davinciApplications/{davinciApplicationID}/flowPolicies` ### Headers - `Content-Type`: `application/json` ### Request Body - **name** (string) - Required - The name of the new flow policy. - **trigger** (object) - Required - The trigger configuration for the policy. - **type** (string) - Required - The type of trigger (e.g., `AUTHENTICATION`). - **flows** (array) - Required - An array of flows to associate with the policy. - **flowID** (string) - Required - The ID of the flow. - **versionID** (string) - Required - The version ID of the flow (use `"0"` for the latest draft). - **enabled** (boolean) - Optional - Whether the flow policy is enabled (defaults to true if not specified). ### Request Example ```json { "name": "Default Login Policy", "trigger": { "type": "AUTHENTICATION" }, "flows": [{ "flowID": "", "versionID": "0" }], "enabled": true } ``` ### Response #### Success Response (201 Created) - **flowPolicyID** (string) - The unique identifier for the newly created flow policy. - **name** (string) - The name of the newly created flow policy. ### Permissions - `davinci:create:flowPolicies` ``` -------------------------------- ### List DaVinci Variables Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists DaVinci variables for an environment. Supports pagination (`cursor`, `limit`) and SCIM-style `filter`. The `limit` parameter accepts values between 1 and 500, with a default of 10. ```APIDOC ## GET /environments/{environmentID}/variables ### Description Lists DaVinci variables for an environment. Supports pagination (`cursor`, `limit`) and SCIM-style `filter`. ### Method GET ### Endpoint `/environments/{environmentID}/variables` ### Query Parameters - **limit** (integer) - Optional - The number of variables to return per page (1-500, default 10). - **cursor** (string) - Optional - The cursor for pagination. - **filter** (string) - Optional - SCIM-style filter for variables. ### Response #### Success Response (200 OK) - **variables** (array) - An array of DaVinci variable objects. - **variableID** (string) - The unique identifier for the variable. - **name** (string) - The name of the variable. - **type** (string) - The type of the variable. ### Permissions - `davinci:read:variables` (inferred) ``` -------------------------------- ### Clean Generated SDK Output Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Removes previously generated SDK output. Use this command to ensure a clean state before regenerating SDKs. ```bash # Clean generated output make clean ``` -------------------------------- ### List Flow Policies Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists all flow policies attached to a DaVinci application. This operation requires the `davinci:read:flowPolicies` permission. ```APIDOC ## GET /environments/{environmentID}/davinciApplications/{davinciApplicationID}/flowPolicies ### Description Lists all flow policies attached to a DaVinci application. ### Method GET ### Endpoint `/environments/{environmentID}/davinciApplications/{davinciApplicationID}/flowPolicies` ### Response #### Success Response (200 OK) - **flowPolicies** (array) - An array of flow policy objects. - **flowPolicyID** (string) - The unique identifier for the flow policy. - **name** (string) - The name of the flow policy. ### Permissions - `davinci:read:flowPolicies` ``` -------------------------------- ### List Flow Versions Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Lists all saved versions of a specific DaVinci flow. This operation requires the `davinci:read:flowVersions` permission. ```APIDOC ## GET /environments/{environmentID}/flows/{flowID}/versions ### Description Lists all saved versions of a specific DaVinci flow. ### Method GET ### Endpoint `/environments/{environmentID}/flows/{flowID}/versions` ### Response #### Success Response (200 OK) - **flowVersions** (array) - An array of flow version objects. - **versionID** (string) - The ID of the flow version. - **createdAt** (string) - The timestamp when the version was created. - **publishedAt** (string) - The timestamp when the version was published. ### Permissions - `davinci:read:flowVersions` ``` -------------------------------- ### Lint a Single Path File in Split Spec Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Use the Redocly CLI to lint a specific path file within the split OpenAPI specification structure. ```bash npx @redocly/cli lint \ specification/3.1/api/split/paths/environments_{environmentID}_flows.yaml ``` -------------------------------- ### Create DaVinci Flow Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Creates a new DaVinci flow in the specified environment. ```APIDOC ## POST /environments/{environmentID}/flows ### Description Creates a new DaVinci flow in the specified environment. ### Method POST ### Endpoint /environments/{environmentID}/flows ### Parameters #### Path Parameters - **environmentID** (string) - Required - The unique identifier of the environment. #### Request Body - **name** (string) - Required - The name for the new flow. - **description** (string) - Optional - A description for the flow. - **flowStatus** (string) - Required - The initial status of the flow (e.g., ENABLED, DISABLED). ### Request Example ```bash curl -s -X POST \ "https://api.pingone.com/v1/environments/$ENV_ID/flows" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d { "name": "Login Flow", "description": "Standard username/password login", "flowStatus": "DISABLED" } ``` ### Response #### Success Response (201 Created) - **flowId** (string) - The unique identifier for the newly created flow. - **name** (string) - The name of the flow. - **flowStatus** (string) - The status of the flow. #### Response Example ```json { "flowId": "...", "name": "Login Flow", "flowStatus": "DISABLED" } ``` ### Permissions - Required permission: `davinci:create:dvFlows` ``` -------------------------------- ### Validate Combined Spec with Redocly CLI Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Validate the integrity and correctness of the combined OpenAPI specification file using the Redocly CLI. ```bash npx @redocly/cli lint specification/3.1/api/combined/openapi.yaml ``` -------------------------------- ### Clone DaVinci Flow Source: https://context7.com/pingidentity/pingone-openapi-specifications/llms.txt Clones an existing DaVinci flow into the same or a different environment. Requires `davinci:create:dvFlows` permission. ```bash curl -s -X POST \ "https://api.pingone.com/v1/environments/$ENV_ID/flows/$FLOW_ID" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/vnd.pingidentity.flow.clone+json" \ -d '{ "name": "Login Flow (Clone)", "targetEnvironmentID": "'$ENV_ID'" }' \ | jq '{flowId, name}' ```