getBaseUrl(); $collectionPath = $config->get('postman_collection'); echo "Base URL: $baseUrl\n"; echo "Collection: $collectionPath\n\n"; // Create TestRunner to handle authentication $testRunner = new TestRunner($collectionPath, [ 'baseUrl' => $baseUrl, 'timeout' => 60 ]); // Manual API call to lookupdomains endpoint echo "Step 1: Getting OAuth token...\n"; // Access the OAuth handler through TestRunner $reflection = new ReflectionClass($testRunner); $property = $reflection->getProperty('oauth2Handler'); $property->setAccessible(true); $oauth2Handler = $property->getValue($testRunner); if (!$oauth2Handler) { die("ERROR: Could not get OAuth handler\n"); } try { $accessToken = $oauth2Handler->getAccessToken(); echo "✓ Token obtained\n\n"; } catch (Exception $e) { die("ERROR: Failed to get access token: " . $e->getMessage() . "\n"); } // First, list all available lookup domains echo "Step 2: Listing all available lookup domains...\n"; $url = $baseUrl . '/v6/lookupdomains'; $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . $accessToken, 'Content-Type: application/json' ], CURLOPT_TIMEOUT => 60 ]); $response = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = curl_error($ch); curl_close($ch); if ($error) { die("ERROR: cURL error: $error\n"); } if ($httpCode !== 200) { die("ERROR: HTTP $httpCode - Response: " . substr($response, 0, 500) . "\n"); } echo "✓ Response received (HTTP $httpCode)\n\n"; // Save raw response first (without parsing to save memory) $jsonFile = 'DAM_LOOKUPDOMAINS_RAW.json'; file_put_contents($jsonFile, $response); echo "✓ Raw JSON saved to: $jsonFile (" . strlen($response) . " bytes)\n\n"; // Parse response $data = json_decode($response, true); if (!$data) { die("ERROR: Failed to parse JSON response\n"); } // Generate Markdown documentation echo "Step 3: Generating Markdown documentation...\n"; $md = "# DAM Lookup Domains - All Available Fields\n\n"; $md .= "**Generated:** " . date('Y-m-d H:i:s') . "\n"; $md .= "**Endpoint:** `GET /v6/lookupdomains`\n"; $md .= "**Base URL:** $baseUrl\n\n"; $md .= "---\n\n"; // Check structure and create summary only if (isset($data['lookup_domains_resource']['lookup_domains'])) { $lookups = $data['lookup_domains_resource']['lookup_domains']; $md .= "## Overview\n\n"; $md .= "Total lookup domains: " . count($lookups) . "\n\n"; $md .= "---\n\n"; $md .= "## Lookup Domains Summary\n\n"; $md .= "| Domain ID | Datatype | Values Count | Example Value |\n"; $md .= "|-----------|----------|--------------|---------------|\n"; foreach ($lookups as $lookup) { $domainId = $lookup['domainId'] ?? 'N/A'; $datatype = $lookup['datatype'] ?? 'N/A'; $domainValues = $lookup['domainValues'] ?? []; $valueCount = count($domainValues); // Get first value as example $exampleValue = 'N/A'; if ($valueCount > 0 && isset($domainValues[0]['field_value']['value'])) { $exampleValue = $domainValues[0]['field_value']['value']; if (strlen($exampleValue) > 30) { $exampleValue = substr($exampleValue, 0, 27) . '...'; } } $md .= "| `$domainId` | $datatype | $valueCount | `$exampleValue` |\n"; } $md .= "\n"; $md .= "> **Note:** Full details and all allowed values are available in `DAM_LOOKUPDOMAINS_RAW.json`\n\n"; $md .= "---\n\n"; } else { $md .= "## No lookup domains found\n\n"; $md .= "See `DAM_LOOKUPDOMAINS_RAW.json` for raw response.\n\n"; } $md .= "---\n\n"; $md .= "## Usage in Asset Upload\n\n"; $md .= "These lookup domains define the allowed values for metadata fields in the ECOMMERCE model.\n\n"; $md .= "When uploading an asset, you must use field IDs and values from these domains.\n\n"; $md .= "### Example Usage\n\n"; $md .= "```json\n"; $md .= "{\n"; $md .= ' "id": "FERRERO.FIELD.MKTG.ASSET TYPE",\n'; $md .= ' "value": {\n'; $md .= ' "domain_value": true,\n'; $md .= ' "value": {\n'; $md .= ' "type": "string",\n'; $md .= ' "value": "heroimage" // Must be from allowed values\n'; $md .= " }\n"; $md .= " }\n"; $md .= "}\n"; $md .= "```\n\n"; $mdFile = 'ECOMMERCE_ALLOWED_FIELDS.md'; file_put_contents($mdFile, $md); echo "✓ Markdown documentation saved to: $mdFile\n\n"; // Summary echo "=== SUMMARY ===\n"; echo "✓ Successfully fetched ECOMMERCE lookupdomains\n"; echo "✓ Files created:\n"; echo " - $jsonFile (raw JSON data)\n"; echo " - $mdFile (formatted documentation)\n"; echo "\nDone!\n";