diff --git a/packages/cli/register/src/ai-example-enhancer/enhanceExamplesWithAI.ts b/packages/cli/register/src/ai-example-enhancer/enhanceExamplesWithAI.ts index 65c6d341f079..c28784846282 100644 --- a/packages/cli/register/src/ai-example-enhancer/enhanceExamplesWithAI.ts +++ b/packages/cli/register/src/ai-example-enhancer/enhanceExamplesWithAI.ts @@ -413,6 +413,13 @@ function collectWorkItems( for (const endpoint of pkg.endpoints) { const endpointV3 = endpoint as unknown as EndpointV3; + // Check if endpoint already has human-specified examples in v2Examples + const hasHumanExamples = hasUserSpecifiedV2Examples(endpointV3); + if (hasHumanExamples) { + // Skip this endpoint - it already has human examples that shouldn't be overridden + continue; + } + for (const example of endpointV3.examples) { const endpointKey = `${endpointV3.method.toLowerCase()}:${example.path}`; @@ -737,6 +744,47 @@ function hasGenericValues(obj: unknown): boolean { return false; } +/** + * Check if an endpoint has user-specified examples in v2Examples structure. + * This prevents AI enhancement from overriding human-provided OpenAPI examples. + */ +function hasUserSpecifiedV2Examples(endpointV3: EndpointV3): boolean { + try { + // Cast to any to access v2Examples properties that aren't in the type definition + // biome-ignore lint/suspicious/noExplicitAny: accessing v2Examples properties not in type definition + const endpoint = endpointV3 as any; + + // Check if endpoint has v2Examples structure with user-specified examples + if ( + endpoint.v2Examples?.userSpecifiedExamples && + typeof endpoint.v2Examples.userSpecifiedExamples === "object" + ) { + const userExamples = endpoint.v2Examples.userSpecifiedExamples; + return Object.keys(userExamples).length > 0; + } + + // Also check v2Responses for user-specified examples (response-specific examples) + if (endpoint.v2Responses?.responses) { + for (const response of endpoint.v2Responses.responses) { + if ( + response.body?.v2Examples?.userSpecifiedExamples && + typeof response.body.v2Examples.userSpecifiedExamples === "object" + ) { + const responseUserExamples = response.body.v2Examples.userSpecifiedExamples; + if (Object.keys(responseUserExamples).length > 0) { + return true; + } + } + } + } + + return false; + } catch (error) { + // If there's any error checking the structure, default to false (allow AI enhancement) + return false; + } +} + function extractExampleValue(bodyV3: BodyV3 | undefined): unknown { if (!bodyV3) { return undefined; diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/ai-examples-issue-fdr.snap b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/ai-examples-issue-fdr.snap new file mode 100644 index 000000000000..2ec9e7ecc898 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/ai-examples-issue-fdr.snap @@ -0,0 +1,589 @@ +{ + "auth": undefined, + "authSchemes": {}, + "globalHeaders": [], + "navigation": undefined, + "rootPackage": { + "endpoints": [ + { + "auth": false, + "authV2": undefined, + "availability": undefined, + "defaultEnvironment": undefined, + "description": undefined, + "environments": undefined, + "errors": undefined, + "errorsV2": [], + "examples": [ + { + "codeSamples": undefined, + "description": "", + "headers": {}, + "name": undefined, + "path": "/plant", + "pathParameters": {}, + "queryParameters": {}, + "requestBody": { + "name": "Fiddle Leaf Fig", + "status": "available", + }, + "requestBodyV3": { + "type": "json", + "value": { + "name": "Fiddle Leaf Fig", + "status": "available", + }, + }, + "responseBody": { + "category": "Indoor", + "id": "550e8400-e29b-41d4-a716-446655440002", + "inventory": 50, + "name": "Kenny", + "price": 24.99, + "responseType": "detailed", + "status": "available", + "tags": [ + "normal_delivery", + ], + }, + "responseBodyV3": { + "type": "json", + "value": { + "category": "Indoor", + "id": "550e8400-e29b-41d4-a716-446655440002", + "inventory": 50, + "name": "Kenny", + "price": 24.99, + "responseType": "detailed", + "status": "available", + "tags": [ + "normal_delivery", + ], + }, + }, + "responseStatusCode": 200, + }, + ], + "headers": [], + "id": "addPlant", + "includeInApiExplorer": undefined, + "method": "POST", + "multiAuth": undefined, + "name": "Add Plant", + "originalEndpointId": "endpoint_.addPlant", + "path": { + "parts": [ + { + "type": "literal", + "value": "", + }, + { + "type": "literal", + "value": "/plant", + }, + ], + "pathParameters": [], + }, + "protocol": { + "type": "rest", + }, + "queryParameters": [], + "request": { + "description": undefined, + "type": { + "contentType": "application/json", + "description": undefined, + "shape": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "Plant", + }, + }, + "type": "json", + }, + }, + "requestsV2": { + "requests": [ + { + "description": undefined, + "type": { + "contentType": "application/json", + "description": undefined, + "shape": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "Plant", + }, + }, + "type": "json", + }, + }, + ], + }, + "response": { + "description": "Plant successfully added", + "isWildcard": undefined, + "statusCode": 200, + "type": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "PlantResponse", + }, + }, + }, + "responsesV2": { + "responses": [ + { + "description": "Plant successfully added", + "isWildcard": undefined, + "statusCode": 200, + "type": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "PlantResponse", + }, + }, + }, + ], + }, + "slug": undefined, + }, + ], + "pointsTo": undefined, + "subpackages": [], + "types": [ + "Plant", + "PlantResponse", + ], + "webhooks": [], + "websockets": [], + }, + "snippetsConfiguration": { + "csharpSdk": undefined, + "goSdk": undefined, + "javaSdk": undefined, + "phpSdk": undefined, + "pythonSdk": undefined, + "rubySdk": undefined, + "rustSdk": undefined, + "swiftSdk": undefined, + "typescriptSdk": undefined, + }, + "subpackages": {}, + "types": { + "Plant": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "Plant", + "shape": { + "extends": [], + "extraProperties": undefined, + "properties": [ + { + "availability": undefined, + "description": undefined, + "key": "name", + "propertyAccess": undefined, + "valueType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "category", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "tags", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "list", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "status", + "propertyAccess": undefined, + "valueType": { + "default": undefined, + "type": "id", + "value": "PlantStatus", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "price", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "maximum": undefined, + "minimum": undefined, + "type": "double", + }, + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "description", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + ], + "type": "object", + }, + }, + "PlantResponse": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "PlantResponse", + "shape": { + "extends": [], + "extraProperties": undefined, + "properties": [ + { + "availability": undefined, + "description": undefined, + "key": "responseType", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "default": undefined, + "type": "id", + "value": "PlantResponseResponseType", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "id", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "name", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "status", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "default": undefined, + "type": "id", + "value": "PlantResponseStatus", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "tags", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "list", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "category", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "price", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "maximum": undefined, + "minimum": undefined, + "type": "double", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "inventory", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "maximum": undefined, + "minimum": undefined, + "type": "integer", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "description", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + ], + "type": "object", + }, + }, + "PlantResponseResponseType": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "PlantResponseResponseType", + "shape": { + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "description": undefined, + "value": "basic", + }, + { + "availability": undefined, + "description": undefined, + "value": "detailed", + }, + ], + }, + }, + "PlantResponseStatus": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "PlantResponseStatus", + "shape": { + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "description": undefined, + "value": "available", + }, + { + "availability": undefined, + "description": undefined, + "value": "pending", + }, + { + "availability": undefined, + "description": undefined, + "value": "sold", + }, + ], + }, + }, + "PlantStatus": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "PlantStatus", + "shape": { + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "description": undefined, + "value": "available", + }, + { + "availability": undefined, + "description": undefined, + "value": "pending", + }, + { + "availability": undefined, + "description": undefined, + "value": "sold", + }, + ], + }, + }, + }, +} \ No newline at end of file diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/ai-examples-issue-ir.snap b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/ai-examples-issue-ir.snap new file mode 100644 index 000000000000..a2aaf6f01c4a --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/ai-examples-issue-ir.snap @@ -0,0 +1,3776 @@ +{ + "apiDisplayName": undefined, + "apiDocs": undefined, + "apiName": { + "camelCase": { + "safeName": "", + "unsafeName": "", + }, + "originalName": "", + "pascalCase": { + "safeName": "", + "unsafeName": "", + }, + "screamingSnakeCase": { + "safeName": "", + "unsafeName": "", + }, + "snakeCase": { + "safeName": "", + "unsafeName": "", + }, + }, + "apiPlayground": undefined, + "apiVersion": undefined, + "audiences": undefined, + "auth": { + "docs": undefined, + "requirement": "ALL", + "schemes": [], + }, + "basePath": undefined, + "constants": { + "errorInstanceIdKey": { + "name": { + "camelCase": { + "safeName": "errorInstanceId", + "unsafeName": "errorInstanceId", + }, + "originalName": "errorInstanceId", + "pascalCase": { + "safeName": "ErrorInstanceId", + "unsafeName": "ErrorInstanceId", + }, + "screamingSnakeCase": { + "safeName": "ERROR_INSTANCE_ID", + "unsafeName": "ERROR_INSTANCE_ID", + }, + "snakeCase": { + "safeName": "error_instance_id", + "unsafeName": "error_instance_id", + }, + }, + "wireValue": "errorInstanceId", + }, + }, + "dynamic": undefined, + "environments": undefined, + "errorDiscriminationStrategy": { + "_visit": [Function], + "type": "statusCode", + }, + "errors": {}, + "fdrApiDefinitionId": undefined, + "generationMetadata": undefined, + "headers": [], + "idempotencyHeaders": [], + "pathParameters": [], + "publishConfig": undefined, + "readmeConfig": undefined, + "rootPackage": { + "docs": undefined, + "errors": [], + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "hasEndpointsInTree": false, + "navigationConfig": undefined, + "service": "service_", + "subpackages": [], + "types": [ + "Plant", + "PlantResponse", + ], + "webhooks": undefined, + "websocket": undefined, + }, + "sdkConfig": { + "hasFileDownloadEndpoints": false, + "hasPaginatedEndpoints": false, + "hasStreamingEndpoints": false, + "isAuthMandatory": true, + "platformHeaders": { + "language": "", + "sdkName": "", + "sdkVersion": "", + "userAgent": undefined, + }, + }, + "selfHosted": false, + "serviceTypeReferenceInfo": { + "sharedTypes": [], + "typesReferencedOnlyByService": {}, + }, + "services": { + "service_": { + "audiences": undefined, + "availability": undefined, + "basePath": { + "head": "", + "parts": [], + }, + "displayName": undefined, + "encoding": undefined, + "endpoints": [ + { + "allPathParameters": [], + "apiPlayground": undefined, + "audiences": [], + "auth": false, + "autogeneratedExamples": [ + { + "example": { + "docs": undefined, + "endpointHeaders": [], + "endpointPathParameters": [], + "id": "94ec67aa", + "name": undefined, + "queryParameters": [], + "request": { + "_visit": [Function], + "jsonExample": { + "category": undefined, + "description": undefined, + "name": "name", + "price": undefined, + "status": "available", + "tags": undefined, + }, + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "extraProperties": undefined, + "properties": [ + { + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "name", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "name", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "category", + "unsafeName": "category", + }, + "originalName": "category", + "pascalCase": { + "safeName": "Category", + "unsafeName": "Category", + }, + "screamingSnakeCase": { + "safeName": "CATEGORY", + "unsafeName": "CATEGORY", + }, + "snakeCase": { + "safeName": "category", + "unsafeName": "category", + }, + }, + "wireValue": "category", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": undefined, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": undefined, + "type": "optional", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "tags", + "unsafeName": "tags", + }, + "originalName": "tags", + "pascalCase": { + "safeName": "Tags", + "unsafeName": "Tags", + }, + "screamingSnakeCase": { + "safeName": "TAGS", + "unsafeName": "TAGS", + }, + "snakeCase": { + "safeName": "tags", + "unsafeName": "tags", + }, + }, + "wireValue": "tags", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": undefined, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": undefined, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "list": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "list", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "status", + "unsafeName": "status", + }, + "originalName": "status", + "pascalCase": { + "safeName": "Status", + "unsafeName": "Status", + }, + "screamingSnakeCase": { + "safeName": "STATUS", + "unsafeName": "STATUS", + }, + "snakeCase": { + "safeName": "status", + "unsafeName": "status", + }, + }, + "wireValue": "status", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "available", + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "type": "enum", + "value": { + "name": { + "camelCase": { + "safeName": "available", + "unsafeName": "available", + }, + "originalName": "available", + "pascalCase": { + "safeName": "Available", + "unsafeName": "Available", + }, + "screamingSnakeCase": { + "safeName": "AVAILABLE", + "unsafeName": "AVAILABLE", + }, + "snakeCase": { + "safeName": "available", + "unsafeName": "available", + }, + }, + "wireValue": "available", + }, + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantStatus", + "unsafeName": "plantStatus", + }, + "originalName": "PlantStatus", + "pascalCase": { + "safeName": "PlantStatus", + "unsafeName": "PlantStatus", + }, + "screamingSnakeCase": { + "safeName": "PLANT_STATUS", + "unsafeName": "PLANT_STATUS", + }, + "snakeCase": { + "safeName": "plant_status", + "unsafeName": "plant_status", + }, + }, + "typeId": "PlantStatus", + }, + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "price", + "unsafeName": "price", + }, + "originalName": "price", + "pascalCase": { + "safeName": "Price", + "unsafeName": "Price", + }, + "screamingSnakeCase": { + "safeName": "PRICE", + "unsafeName": "PRICE", + }, + "snakeCase": { + "safeName": "price", + "unsafeName": "price", + }, + }, + "wireValue": "price", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": undefined, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": undefined, + "type": "optional", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "FLOAT", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "float", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": undefined, + "multipleOf": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "description", + "unsafeName": "description", + }, + "originalName": "description", + "pascalCase": { + "safeName": "Description", + "unsafeName": "Description", + }, + "screamingSnakeCase": { + "safeName": "DESCRIPTION", + "unsafeName": "DESCRIPTION", + }, + "snakeCase": { + "safeName": "description", + "unsafeName": "description", + }, + }, + "wireValue": "description", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": undefined, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": undefined, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + ], + "type": "object", + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + }, + "type": "reference", + }, + "response": { + "_visit": [Function], + "type": "ok", + "value": { + "_visit": [Function], + "type": "body", + "value": { + "jsonExample": { + "category": "category", + "description": "description", + "id": "id", + "inventory": 1, + "name": "name", + "price": 1.1, + "responseType": "basic", + "status": "available", + "tags": [ + "tags", + "tags", + ], + }, + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "extraProperties": undefined, + "properties": [ + { + "name": { + "name": { + "camelCase": { + "safeName": "responseType", + "unsafeName": "responseType", + }, + "originalName": "responseType", + "pascalCase": { + "safeName": "ResponseType", + "unsafeName": "ResponseType", + }, + "screamingSnakeCase": { + "safeName": "RESPONSE_TYPE", + "unsafeName": "RESPONSE_TYPE", + }, + "snakeCase": { + "safeName": "response_type", + "unsafeName": "response_type", + }, + }, + "wireValue": "responseType", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "basic", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "basic", + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "type": "enum", + "value": { + "name": { + "camelCase": { + "safeName": "basic", + "unsafeName": "basic", + }, + "originalName": "basic", + "pascalCase": { + "safeName": "Basic", + "unsafeName": "Basic", + }, + "screamingSnakeCase": { + "safeName": "BASIC", + "unsafeName": "BASIC", + }, + "snakeCase": { + "safeName": "basic", + "unsafeName": "basic", + }, + }, + "wireValue": "basic", + }, + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponseResponseType", + "unsafeName": "plantResponseResponseType", + }, + "originalName": "PlantResponseResponseType", + "pascalCase": { + "safeName": "PlantResponseResponseType", + "unsafeName": "PlantResponseResponseType", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE_RESPONSE_TYPE", + "unsafeName": "PLANT_RESPONSE_RESPONSE_TYPE", + }, + "snakeCase": { + "safeName": "plant_response_response_type", + "unsafeName": "plant_response_response_type", + }, + }, + "typeId": "PlantResponseResponseType", + }, + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plantResponseResponseType", + "unsafeName": "plantResponseResponseType", + }, + "originalName": "PlantResponseResponseType", + "pascalCase": { + "safeName": "PlantResponseResponseType", + "unsafeName": "PlantResponseResponseType", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE_RESPONSE_TYPE", + "unsafeName": "PLANT_RESPONSE_RESPONSE_TYPE", + }, + "snakeCase": { + "safeName": "plant_response_response_type", + "unsafeName": "plant_response_response_type", + }, + }, + "type": "named", + "typeId": "PlantResponseResponseType", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "id", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "id", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "id", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "name", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "name", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "name", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "status", + "unsafeName": "status", + }, + "originalName": "status", + "pascalCase": { + "safeName": "Status", + "unsafeName": "Status", + }, + "screamingSnakeCase": { + "safeName": "STATUS", + "unsafeName": "STATUS", + }, + "snakeCase": { + "safeName": "status", + "unsafeName": "status", + }, + }, + "wireValue": "status", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "available", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "available", + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "type": "enum", + "value": { + "name": { + "camelCase": { + "safeName": "available", + "unsafeName": "available", + }, + "originalName": "available", + "pascalCase": { + "safeName": "Available", + "unsafeName": "Available", + }, + "screamingSnakeCase": { + "safeName": "AVAILABLE", + "unsafeName": "AVAILABLE", + }, + "snakeCase": { + "safeName": "available", + "unsafeName": "available", + }, + }, + "wireValue": "available", + }, + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponseStatus", + "unsafeName": "plantResponseStatus", + }, + "originalName": "PlantResponseStatus", + "pascalCase": { + "safeName": "PlantResponseStatus", + "unsafeName": "PlantResponseStatus", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE_STATUS", + "unsafeName": "PLANT_RESPONSE_STATUS", + }, + "snakeCase": { + "safeName": "plant_response_status", + "unsafeName": "plant_response_status", + }, + }, + "typeId": "PlantResponseStatus", + }, + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plantResponseStatus", + "unsafeName": "plantResponseStatus", + }, + "originalName": "PlantResponseStatus", + "pascalCase": { + "safeName": "PlantResponseStatus", + "unsafeName": "PlantResponseStatus", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE_STATUS", + "unsafeName": "PLANT_RESPONSE_STATUS", + }, + "snakeCase": { + "safeName": "plant_response_status", + "unsafeName": "plant_response_status", + }, + }, + "type": "named", + "typeId": "PlantResponseStatus", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "tags", + "unsafeName": "tags", + }, + "originalName": "tags", + "pascalCase": { + "safeName": "Tags", + "unsafeName": "Tags", + }, + "screamingSnakeCase": { + "safeName": "TAGS", + "unsafeName": "TAGS", + }, + "snakeCase": { + "safeName": "tags", + "unsafeName": "tags", + }, + }, + "wireValue": "tags", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": [ + "tags", + "tags", + ], + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": [ + "tags", + "tags", + ], + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "itemType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "list": [ + { + "jsonExample": "tags", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "tags", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + { + "jsonExample": "tags", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "tags", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + ], + "type": "list", + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "list": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "list", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "category", + "unsafeName": "category", + }, + "originalName": "category", + "pascalCase": { + "safeName": "Category", + "unsafeName": "Category", + }, + "screamingSnakeCase": { + "safeName": "CATEGORY", + "unsafeName": "CATEGORY", + }, + "snakeCase": { + "safeName": "category", + "unsafeName": "category", + }, + }, + "wireValue": "category", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "category", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "category", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": "category", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "category", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "price", + "unsafeName": "price", + }, + "originalName": "price", + "pascalCase": { + "safeName": "Price", + "unsafeName": "Price", + }, + "screamingSnakeCase": { + "safeName": "PRICE", + "unsafeName": "PRICE", + }, + "snakeCase": { + "safeName": "price", + "unsafeName": "price", + }, + }, + "wireValue": "price", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": 1.1, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": 1.1, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": 1.1, + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "float": 1.1, + "type": "float", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "FLOAT", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "float", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": undefined, + "multipleOf": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "FLOAT", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "float", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": undefined, + "multipleOf": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "inventory", + "unsafeName": "inventory", + }, + "originalName": "inventory", + "pascalCase": { + "safeName": "Inventory", + "unsafeName": "Inventory", + }, + "screamingSnakeCase": { + "safeName": "INVENTORY", + "unsafeName": "INVENTORY", + }, + "snakeCase": { + "safeName": "inventory", + "unsafeName": "inventory", + }, + }, + "wireValue": "inventory", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": 1, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": 1, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": 1, + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "integer": 1, + "type": "integer", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "INTEGER", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "integer", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": undefined, + "multipleOf": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "INTEGER", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "integer", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": undefined, + "multipleOf": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "description", + "unsafeName": "description", + }, + "originalName": "description", + "pascalCase": { + "safeName": "Description", + "unsafeName": "Description", + }, + "screamingSnakeCase": { + "safeName": "DESCRIPTION", + "unsafeName": "DESCRIPTION", + }, + "snakeCase": { + "safeName": "description", + "unsafeName": "description", + }, + }, + "wireValue": "description", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "description", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "description", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": "description", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "description", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + ], + "type": "object", + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + }, + }, + }, + }, + "rootPathParameters": [], + "serviceHeaders": [], + "servicePathParameters": [], + "url": "/plant", + }, + }, + ], + "availability": undefined, + "basePath": undefined, + "baseUrl": undefined, + "displayName": undefined, + "docs": undefined, + "errors": [], + "fullPath": { + "head": "/plant", + "parts": [], + }, + "headers": [], + "id": "endpoint_.addPlant", + "idempotent": false, + "method": "POST", + "name": { + "camelCase": { + "safeName": "addPlant", + "unsafeName": "addPlant", + }, + "originalName": "addPlant", + "pascalCase": { + "safeName": "AddPlant", + "unsafeName": "AddPlant", + }, + "screamingSnakeCase": { + "safeName": "ADD_PLANT", + "unsafeName": "ADD_PLANT", + }, + "snakeCase": { + "safeName": "add_plant", + "unsafeName": "add_plant", + }, + }, + "pagination": undefined, + "path": { + "head": "/plant", + "parts": [], + }, + "pathParameters": [], + "queryParameters": [], + "requestBody": { + "_visit": [Function], + "contentType": "application/json", + "docs": undefined, + "requestBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "type": "named", + "typeId": "Plant", + }, + "type": "reference", + "v2Examples": { + "autogeneratedExamples": { + "addPlantExample": { + "name": "Fiddle Leaf Fig", + "status": "available", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + "response": { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "_visit": [Function], + "docs": "Plant successfully added", + "responseBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "type": "named", + "typeId": "PlantResponse", + }, + "type": "response", + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "Successfully created plant": { + "category": "Indoor", + "id": "550e8400-e29b-41d4-a716-446655440002", + "inventory": 50, + "name": "Kenny", + "price": 24.99, + "responseType": "detailed", + "status": "available", + "tags": [ + "normal_delivery", + ], + }, + }, + }, + }, + }, + "isWildcardStatusCode": undefined, + "statusCode": 200, + }, + "retries": undefined, + "sdkRequest": undefined, + "security": undefined, + "source": { + "_visit": [Function], + "type": "openapi", + }, + "transport": undefined, + "userSpecifiedExamples": [], + "v2BaseUrls": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "addPlantExample_Successfully created plant_200": { + "codeSamples": undefined, + "displayName": "Successfully created plant", + "request": { + "auth": undefined, + "baseUrl": undefined, + "docs": undefined, + "endpoint": { + "method": "POST", + "path": "/plant", + }, + "environment": undefined, + "headers": {}, + "pathParameters": {}, + "queryParameters": {}, + "requestBody": { + "name": "Fiddle Leaf Fig", + "status": "available", + }, + }, + "response": { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "category": "Indoor", + "id": "550e8400-e29b-41d4-a716-446655440002", + "inventory": 50, + "name": "Kenny", + "price": 24.99, + "responseType": "detailed", + "status": "available", + "tags": [ + "normal_delivery", + ], + }, + }, + "docs": undefined, + "statusCode": 200, + }, + }, + }, + }, + "v2RequestBodies": { + "requestBodies": [ + { + "_visit": [Function], + "contentType": "application/json", + "docs": undefined, + "requestBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "type": "named", + "typeId": "Plant", + }, + "type": "reference", + "v2Examples": { + "autogeneratedExamples": { + "addPlantExample": { + "name": "Fiddle Leaf Fig", + "status": "available", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + ], + }, + "v2Responses": { + "responses": [ + { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "_visit": [Function], + "docs": "Plant successfully added", + "responseBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "type": "named", + "typeId": "PlantResponse", + }, + "type": "response", + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "Successfully created plant": { + "category": "Indoor", + "id": "550e8400-e29b-41d4-a716-446655440002", + "inventory": 50, + "name": "Kenny", + "price": 24.99, + "responseType": "detailed", + "status": "available", + "tags": [ + "normal_delivery", + ], + }, + }, + }, + }, + }, + "isWildcardStatusCode": undefined, + "statusCode": 200, + }, + ], + }, + }, + ], + "headers": [], + "name": { + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + }, + "pathParameters": [], + "transport": undefined, + }, + }, + "sourceConfig": undefined, + "subpackages": {}, + "types": { + "Plant": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "referencedTypes": Set { + "PlantStatus", + }, + "shape": { + "_visit": [Function], + "extendedProperties": [], + "extends": [], + "extraProperties": false, + "properties": [ + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantName_example_0": "Fiddle Leaf Fig", + }, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "category", + "unsafeName": "category", + }, + "originalName": "category", + "pascalCase": { + "safeName": "Category", + "unsafeName": "Category", + }, + "screamingSnakeCase": { + "safeName": "CATEGORY", + "unsafeName": "CATEGORY", + }, + "snakeCase": { + "safeName": "category", + "unsafeName": "category", + }, + }, + "wireValue": "category", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantCategory_example_0": "Indoor Plants", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "tags", + "unsafeName": "tags", + }, + "originalName": "tags", + "pascalCase": { + "safeName": "Tags", + "unsafeName": "Tags", + }, + "screamingSnakeCase": { + "safeName": "TAGS", + "unsafeName": "TAGS", + }, + "snakeCase": { + "safeName": "tags", + "unsafeName": "tags", + }, + }, + "wireValue": "tags", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantTags_example_0": [ + "leafy", + "green", + ], + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "list": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "list", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "status", + "unsafeName": "status", + }, + "originalName": "status", + "pascalCase": { + "safeName": "Status", + "unsafeName": "Status", + }, + "screamingSnakeCase": { + "safeName": "STATUS", + "unsafeName": "STATUS", + }, + "snakeCase": { + "safeName": "status", + "unsafeName": "status", + }, + }, + "wireValue": "status", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": { + "PlantStatus_example_autogenerated": "available", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plantStatus", + "unsafeName": "plantStatus", + }, + "originalName": "PlantStatus", + "pascalCase": { + "safeName": "PlantStatus", + "unsafeName": "PlantStatus", + }, + "screamingSnakeCase": { + "safeName": "PLANT_STATUS", + "unsafeName": "PLANT_STATUS", + }, + "snakeCase": { + "safeName": "plant_status", + "unsafeName": "plant_status", + }, + }, + "type": "named", + "typeId": "PlantStatus", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "price", + "unsafeName": "price", + }, + "originalName": "price", + "pascalCase": { + "safeName": "Price", + "unsafeName": "Price", + }, + "screamingSnakeCase": { + "safeName": "PRICE", + "unsafeName": "PRICE", + }, + "snakeCase": { + "safeName": "price", + "unsafeName": "price", + }, + }, + "wireValue": "price", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantPrice_example_0": 29.99, + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "primitive": { + "v1": "FLOAT", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "float", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": undefined, + "multipleOf": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "description", + "unsafeName": "description", + }, + "originalName": "description", + "pascalCase": { + "safeName": "Description", + "unsafeName": "Description", + }, + "screamingSnakeCase": { + "safeName": "DESCRIPTION", + "unsafeName": "DESCRIPTION", + }, + "snakeCase": { + "safeName": "description", + "unsafeName": "description", + }, + }, + "wireValue": "description", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantDescription_example_0": "A beautiful indoor plant", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + ], + "type": "object", + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "Plant_example_autogenerated": { + "name": "Fiddle Leaf Fig", + "status": "available", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + "PlantResponse": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponse", + "unsafeName": "plantResponse", + }, + "originalName": "PlantResponse", + "pascalCase": { + "safeName": "PlantResponse", + "unsafeName": "PlantResponse", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE", + "unsafeName": "PLANT_RESPONSE", + }, + "snakeCase": { + "safeName": "plant_response", + "unsafeName": "plant_response", + }, + }, + "typeId": "PlantResponse", + }, + "referencedTypes": Set { + "PlantResponseResponseType", + "PlantResponseStatus", + }, + "shape": { + "_visit": [Function], + "extendedProperties": [], + "extends": [], + "extraProperties": false, + "properties": [ + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "responseType", + "unsafeName": "responseType", + }, + "originalName": "responseType", + "pascalCase": { + "safeName": "ResponseType", + "unsafeName": "ResponseType", + }, + "screamingSnakeCase": { + "safeName": "RESPONSE_TYPE", + "unsafeName": "RESPONSE_TYPE", + }, + "snakeCase": { + "safeName": "response_type", + "unsafeName": "response_type", + }, + }, + "wireValue": "responseType", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": { + "PlantResponseResponseType_example_autogenerated": "basic", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plantResponseResponseType", + "unsafeName": "plantResponseResponseType", + }, + "originalName": "PlantResponseResponseType", + "pascalCase": { + "safeName": "PlantResponseResponseType", + "unsafeName": "PlantResponseResponseType", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE_RESPONSE_TYPE", + "unsafeName": "PLANT_RESPONSE_RESPONSE_TYPE", + }, + "snakeCase": { + "safeName": "plant_response_response_type", + "unsafeName": "plant_response_response_type", + }, + }, + "type": "named", + "typeId": "PlantResponseResponseType", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantResponseId_example_0": "550e8400-e29b-41d4-a716-446655440000", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantResponseName_example_0": "Fiddle Leaf Fig", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "status", + "unsafeName": "status", + }, + "originalName": "status", + "pascalCase": { + "safeName": "Status", + "unsafeName": "Status", + }, + "screamingSnakeCase": { + "safeName": "STATUS", + "unsafeName": "STATUS", + }, + "snakeCase": { + "safeName": "status", + "unsafeName": "status", + }, + }, + "wireValue": "status", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": { + "PlantResponseStatus_example_autogenerated": "available", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plantResponseStatus", + "unsafeName": "plantResponseStatus", + }, + "originalName": "PlantResponseStatus", + "pascalCase": { + "safeName": "PlantResponseStatus", + "unsafeName": "PlantResponseStatus", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE_STATUS", + "unsafeName": "PLANT_RESPONSE_STATUS", + }, + "snakeCase": { + "safeName": "plant_response_status", + "unsafeName": "plant_response_status", + }, + }, + "type": "named", + "typeId": "PlantResponseStatus", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "tags", + "unsafeName": "tags", + }, + "originalName": "tags", + "pascalCase": { + "safeName": "Tags", + "unsafeName": "Tags", + }, + "screamingSnakeCase": { + "safeName": "TAGS", + "unsafeName": "TAGS", + }, + "snakeCase": { + "safeName": "tags", + "unsafeName": "tags", + }, + }, + "wireValue": "tags", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": { + "PlantResponseTags_example_autogenerated": [ + "string", + ], + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "list": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "list", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "category", + "unsafeName": "category", + }, + "originalName": "category", + "pascalCase": { + "safeName": "Category", + "unsafeName": "Category", + }, + "screamingSnakeCase": { + "safeName": "CATEGORY", + "unsafeName": "CATEGORY", + }, + "snakeCase": { + "safeName": "category", + "unsafeName": "category", + }, + }, + "wireValue": "category", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": { + "PlantResponseCategory_example_autogenerated": "string", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "price", + "unsafeName": "price", + }, + "originalName": "price", + "pascalCase": { + "safeName": "Price", + "unsafeName": "Price", + }, + "screamingSnakeCase": { + "safeName": "PRICE", + "unsafeName": "PRICE", + }, + "snakeCase": { + "safeName": "price", + "unsafeName": "price", + }, + }, + "wireValue": "price", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": { + "PlantResponsePrice_example_autogenerated": 1.1, + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "FLOAT", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "float", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": undefined, + "multipleOf": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "inventory", + "unsafeName": "inventory", + }, + "originalName": "inventory", + "pascalCase": { + "safeName": "Inventory", + "unsafeName": "Inventory", + }, + "screamingSnakeCase": { + "safeName": "INVENTORY", + "unsafeName": "INVENTORY", + }, + "snakeCase": { + "safeName": "inventory", + "unsafeName": "inventory", + }, + }, + "wireValue": "inventory", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": { + "PlantResponseInventory_example_autogenerated": 1, + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "INTEGER", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "integer", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": undefined, + "multipleOf": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "description", + "unsafeName": "description", + }, + "originalName": "description", + "pascalCase": { + "safeName": "Description", + "unsafeName": "Description", + }, + "screamingSnakeCase": { + "safeName": "DESCRIPTION", + "unsafeName": "DESCRIPTION", + }, + "snakeCase": { + "safeName": "description", + "unsafeName": "description", + }, + }, + "wireValue": "description", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": { + "PlantResponseDescription_example_autogenerated": "string", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + ], + "type": "object", + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "PlantResponse_example_autogenerated": {}, + }, + "userSpecifiedExamples": {}, + }, + }, + "PlantResponseResponseType": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponseResponseType", + "unsafeName": "plantResponseResponseType", + }, + "originalName": "PlantResponseResponseType", + "pascalCase": { + "safeName": "PlantResponseResponseType", + "unsafeName": "PlantResponseResponseType", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE_RESPONSE_TYPE", + "unsafeName": "PLANT_RESPONSE_RESPONSE_TYPE", + }, + "snakeCase": { + "safeName": "plant_response_response_type", + "unsafeName": "plant_response_response_type", + }, + }, + "typeId": "PlantResponseResponseType", + }, + "referencedTypes": Set {}, + "shape": { + "_visit": [Function], + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "basic", + "unsafeName": "basic", + }, + "originalName": "basic", + "pascalCase": { + "safeName": "Basic", + "unsafeName": "Basic", + }, + "screamingSnakeCase": { + "safeName": "BASIC", + "unsafeName": "BASIC", + }, + "snakeCase": { + "safeName": "basic", + "unsafeName": "basic", + }, + }, + "wireValue": "basic", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "detailed", + "unsafeName": "detailed", + }, + "originalName": "detailed", + "pascalCase": { + "safeName": "Detailed", + "unsafeName": "Detailed", + }, + "screamingSnakeCase": { + "safeName": "DETAILED", + "unsafeName": "DETAILED", + }, + "snakeCase": { + "safeName": "detailed", + "unsafeName": "detailed", + }, + }, + "wireValue": "detailed", + }, + }, + ], + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "PlantResponseResponseType_example_autogenerated": "basic", + }, + "userSpecifiedExamples": {}, + }, + }, + "PlantResponseStatus": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantResponseStatus", + "unsafeName": "plantResponseStatus", + }, + "originalName": "PlantResponseStatus", + "pascalCase": { + "safeName": "PlantResponseStatus", + "unsafeName": "PlantResponseStatus", + }, + "screamingSnakeCase": { + "safeName": "PLANT_RESPONSE_STATUS", + "unsafeName": "PLANT_RESPONSE_STATUS", + }, + "snakeCase": { + "safeName": "plant_response_status", + "unsafeName": "plant_response_status", + }, + }, + "typeId": "PlantResponseStatus", + }, + "referencedTypes": Set {}, + "shape": { + "_visit": [Function], + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "available", + "unsafeName": "available", + }, + "originalName": "available", + "pascalCase": { + "safeName": "Available", + "unsafeName": "Available", + }, + "screamingSnakeCase": { + "safeName": "AVAILABLE", + "unsafeName": "AVAILABLE", + }, + "snakeCase": { + "safeName": "available", + "unsafeName": "available", + }, + }, + "wireValue": "available", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "pending", + "unsafeName": "pending", + }, + "originalName": "pending", + "pascalCase": { + "safeName": "Pending", + "unsafeName": "Pending", + }, + "screamingSnakeCase": { + "safeName": "PENDING", + "unsafeName": "PENDING", + }, + "snakeCase": { + "safeName": "pending", + "unsafeName": "pending", + }, + }, + "wireValue": "pending", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "sold", + "unsafeName": "sold", + }, + "originalName": "sold", + "pascalCase": { + "safeName": "Sold", + "unsafeName": "Sold", + }, + "screamingSnakeCase": { + "safeName": "SOLD", + "unsafeName": "SOLD", + }, + "snakeCase": { + "safeName": "sold", + "unsafeName": "sold", + }, + }, + "wireValue": "sold", + }, + }, + ], + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "PlantResponseStatus_example_autogenerated": "available", + }, + "userSpecifiedExamples": {}, + }, + }, + "PlantStatus": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantStatus", + "unsafeName": "plantStatus", + }, + "originalName": "PlantStatus", + "pascalCase": { + "safeName": "PlantStatus", + "unsafeName": "PlantStatus", + }, + "screamingSnakeCase": { + "safeName": "PLANT_STATUS", + "unsafeName": "PLANT_STATUS", + }, + "snakeCase": { + "safeName": "plant_status", + "unsafeName": "plant_status", + }, + }, + "typeId": "PlantStatus", + }, + "referencedTypes": Set {}, + "shape": { + "_visit": [Function], + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "available", + "unsafeName": "available", + }, + "originalName": "available", + "pascalCase": { + "safeName": "Available", + "unsafeName": "Available", + }, + "screamingSnakeCase": { + "safeName": "AVAILABLE", + "unsafeName": "AVAILABLE", + }, + "snakeCase": { + "safeName": "available", + "unsafeName": "available", + }, + }, + "wireValue": "available", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "pending", + "unsafeName": "pending", + }, + "originalName": "pending", + "pascalCase": { + "safeName": "Pending", + "unsafeName": "Pending", + }, + "screamingSnakeCase": { + "safeName": "PENDING", + "unsafeName": "PENDING", + }, + "snakeCase": { + "safeName": "pending", + "unsafeName": "pending", + }, + }, + "wireValue": "pending", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "sold", + "unsafeName": "sold", + }, + "originalName": "sold", + "pascalCase": { + "safeName": "Sold", + "unsafeName": "Sold", + }, + "screamingSnakeCase": { + "safeName": "SOLD", + "unsafeName": "SOLD", + }, + "snakeCase": { + "safeName": "sold", + "unsafeName": "sold", + }, + }, + "wireValue": "sold", + }, + }, + ], + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "PlantStatus_example_autogenerated": "available", + }, + "userSpecifiedExamples": {}, + }, + }, + }, + "variables": [], + "webhookGroups": {}, + "websocketChannels": undefined, +} \ No newline at end of file diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/autogen-examples-test-fdr.snap b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/autogen-examples-test-fdr.snap new file mode 100644 index 000000000000..cd450f1a81da --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/autogen-examples-test-fdr.snap @@ -0,0 +1,573 @@ +{ + "auth": undefined, + "authSchemes": {}, + "globalHeaders": [], + "navigation": undefined, + "rootPackage": { + "endpoints": [ + { + "auth": false, + "authV2": undefined, + "availability": undefined, + "defaultEnvironment": undefined, + "description": undefined, + "environments": undefined, + "errors": undefined, + "errorsV2": [], + "examples": [ + { + "codeSamples": undefined, + "description": "", + "headers": {}, + "name": undefined, + "path": "/plant/plantId", + "pathParameters": { + "plantId": "plantId", + }, + "queryParameters": {}, + "requestBody": undefined, + "requestBodyV3": undefined, + "responseBody": { + "description": "A beautiful flower", + "id": "plant-123", + "location": "Garden bed 1", + "name": "Rose", + "status": "healthy", + }, + "responseBodyV3": { + "type": "json", + "value": { + "description": "A beautiful flower", + "id": "plant-123", + "location": "Garden bed 1", + "name": "Rose", + "status": "healthy", + }, + }, + "responseStatusCode": 200, + }, + ], + "headers": [], + "id": "getPlant", + "includeInApiExplorer": undefined, + "method": "GET", + "multiAuth": undefined, + "name": "Get Plant", + "originalEndpointId": "endpoint_.getPlant", + "path": { + "parts": [ + { + "type": "literal", + "value": "", + }, + { + "type": "literal", + "value": "/plant/", + }, + { + "type": "pathParameter", + "value": "plantId", + }, + { + "type": "literal", + "value": "", + }, + ], + "pathParameters": [ + { + "availability": undefined, + "description": undefined, + "explode": undefined, + "key": "plantId", + "type": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + }, + ], + }, + "protocol": { + "type": "rest", + }, + "queryParameters": [], + "request": undefined, + "requestsV2": { + "requests": undefined, + }, + "response": { + "description": "Plant retrieved successfully", + "isWildcard": undefined, + "statusCode": 200, + "type": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "Plant", + }, + }, + }, + "responsesV2": { + "responses": [ + { + "description": "Plant retrieved successfully", + "isWildcard": undefined, + "statusCode": 200, + "type": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "Plant", + }, + }, + }, + ], + }, + "slug": undefined, + }, + { + "auth": false, + "authV2": undefined, + "availability": undefined, + "defaultEnvironment": undefined, + "description": undefined, + "environments": undefined, + "errors": undefined, + "errorsV2": [], + "examples": [ + { + "codeSamples": undefined, + "description": "", + "headers": {}, + "name": undefined, + "path": "/garden", + "pathParameters": {}, + "queryParameters": {}, + "requestBody": { + "name": "Main Garden", + "size": "small", + }, + "requestBodyV3": { + "type": "json", + "value": { + "name": "Main Garden", + "size": "small", + }, + }, + "responseBody": { + "established": "2023-01-01", + "id": "garden-456", + "name": "Main Garden", + "plants": [ + "plant-1", + "plant-2", + ], + "size": "small", + }, + "responseBodyV3": { + "type": "json", + "value": { + "established": "2023-01-01", + "id": "garden-456", + "name": "Main Garden", + "plants": [ + "plant-1", + "plant-2", + ], + "size": "small", + }, + }, + "responseStatusCode": 201, + }, + ], + "headers": [], + "id": "createGarden", + "includeInApiExplorer": undefined, + "method": "POST", + "multiAuth": undefined, + "name": "Create Garden", + "originalEndpointId": "endpoint_.createGarden", + "path": { + "parts": [ + { + "type": "literal", + "value": "", + }, + { + "type": "literal", + "value": "/garden", + }, + ], + "pathParameters": [], + }, + "protocol": { + "type": "rest", + }, + "queryParameters": [], + "request": { + "description": undefined, + "type": { + "contentType": "application/json", + "description": undefined, + "shape": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "Garden", + }, + }, + "type": "json", + }, + }, + "requestsV2": { + "requests": [ + { + "description": undefined, + "type": { + "contentType": "application/json", + "description": undefined, + "shape": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "Garden", + }, + }, + "type": "json", + }, + }, + ], + }, + "response": { + "description": "Garden created", + "isWildcard": undefined, + "statusCode": 201, + "type": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "Garden", + }, + }, + }, + "responsesV2": { + "responses": [ + { + "description": "Garden created", + "isWildcard": undefined, + "statusCode": 201, + "type": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "Garden", + }, + }, + }, + ], + }, + "slug": undefined, + }, + ], + "pointsTo": undefined, + "subpackages": [], + "types": [ + "Plant", + "Garden", + ], + "webhooks": [], + "websockets": [], + }, + "snippetsConfiguration": { + "csharpSdk": undefined, + "goSdk": undefined, + "javaSdk": undefined, + "phpSdk": undefined, + "pythonSdk": undefined, + "rubySdk": undefined, + "rustSdk": undefined, + "swiftSdk": undefined, + "typescriptSdk": undefined, + }, + "subpackages": {}, + "types": { + "Garden": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "Garden", + "shape": { + "extends": [], + "extraProperties": undefined, + "properties": [ + { + "availability": undefined, + "description": undefined, + "key": "id", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "name", + "propertyAccess": undefined, + "valueType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "size", + "propertyAccess": undefined, + "valueType": { + "default": undefined, + "type": "id", + "value": "GardenSize", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "plants", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "list", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "established", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "type": "date", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + ], + "type": "object", + }, + }, + "GardenSize": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "GardenSize", + "shape": { + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "description": undefined, + "value": "small", + }, + { + "availability": undefined, + "description": undefined, + "value": "medium", + }, + { + "availability": undefined, + "description": undefined, + "value": "large", + }, + ], + }, + }, + "Plant": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "Plant", + "shape": { + "extends": [], + "extraProperties": undefined, + "properties": [ + { + "availability": undefined, + "description": undefined, + "key": "id", + "propertyAccess": undefined, + "valueType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "name", + "propertyAccess": undefined, + "valueType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "status", + "propertyAccess": undefined, + "valueType": { + "default": undefined, + "type": "id", + "value": "PlantStatus", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "description", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "location", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + ], + "type": "object", + }, + }, + "PlantStatus": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "PlantStatus", + "shape": { + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "description": undefined, + "value": "healthy", + }, + { + "availability": undefined, + "description": undefined, + "value": "wilting", + }, + { + "availability": undefined, + "description": undefined, + "value": "flowering", + }, + ], + }, + }, + }, +} \ No newline at end of file diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/autogen-examples-test-ir.snap b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/autogen-examples-test-ir.snap new file mode 100644 index 000000000000..35c08cb3ad52 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/autogen-examples-test-ir.snap @@ -0,0 +1,3508 @@ +{ + "apiDisplayName": undefined, + "apiDocs": undefined, + "apiName": { + "camelCase": { + "safeName": "", + "unsafeName": "", + }, + "originalName": "", + "pascalCase": { + "safeName": "", + "unsafeName": "", + }, + "screamingSnakeCase": { + "safeName": "", + "unsafeName": "", + }, + "snakeCase": { + "safeName": "", + "unsafeName": "", + }, + }, + "apiPlayground": undefined, + "apiVersion": undefined, + "audiences": undefined, + "auth": { + "docs": undefined, + "requirement": "ALL", + "schemes": [], + }, + "basePath": undefined, + "constants": { + "errorInstanceIdKey": { + "name": { + "camelCase": { + "safeName": "errorInstanceId", + "unsafeName": "errorInstanceId", + }, + "originalName": "errorInstanceId", + "pascalCase": { + "safeName": "ErrorInstanceId", + "unsafeName": "ErrorInstanceId", + }, + "screamingSnakeCase": { + "safeName": "ERROR_INSTANCE_ID", + "unsafeName": "ERROR_INSTANCE_ID", + }, + "snakeCase": { + "safeName": "error_instance_id", + "unsafeName": "error_instance_id", + }, + }, + "wireValue": "errorInstanceId", + }, + }, + "dynamic": undefined, + "environments": undefined, + "errorDiscriminationStrategy": { + "_visit": [Function], + "type": "statusCode", + }, + "errors": {}, + "fdrApiDefinitionId": undefined, + "generationMetadata": undefined, + "headers": [], + "idempotencyHeaders": [], + "pathParameters": [], + "publishConfig": undefined, + "readmeConfig": undefined, + "rootPackage": { + "docs": undefined, + "errors": [], + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "hasEndpointsInTree": false, + "navigationConfig": undefined, + "service": "service_", + "subpackages": [], + "types": [ + "Plant", + "Garden", + ], + "webhooks": undefined, + "websocket": undefined, + }, + "sdkConfig": { + "hasFileDownloadEndpoints": false, + "hasPaginatedEndpoints": false, + "hasStreamingEndpoints": false, + "isAuthMandatory": true, + "platformHeaders": { + "language": "", + "sdkName": "", + "sdkVersion": "", + "userAgent": undefined, + }, + }, + "selfHosted": false, + "serviceTypeReferenceInfo": { + "sharedTypes": [], + "typesReferencedOnlyByService": {}, + }, + "services": { + "service_": { + "audiences": undefined, + "availability": undefined, + "basePath": { + "head": "", + "parts": [], + }, + "displayName": undefined, + "encoding": undefined, + "endpoints": [ + { + "allPathParameters": [ + { + "docs": undefined, + "location": "ENDPOINT", + "name": { + "camelCase": { + "safeName": "plantId", + "unsafeName": "plantId", + }, + "originalName": "plantId", + "pascalCase": { + "safeName": "PlantId", + "unsafeName": "PlantId", + }, + "screamingSnakeCase": { + "safeName": "PLANT_ID", + "unsafeName": "PLANT_ID", + }, + "snakeCase": { + "safeName": "plant_id", + "unsafeName": "plant_id", + }, + }, + "v2Examples": { + "autogeneratedExamples": { + "plantId_example": "plantId", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "variable": undefined, + }, + ], + "apiPlayground": undefined, + "audiences": [], + "auth": false, + "autogeneratedExamples": [ + { + "example": { + "docs": undefined, + "endpointHeaders": [], + "endpointPathParameters": [ + { + "name": { + "camelCase": { + "safeName": "plantId", + "unsafeName": "plantId", + }, + "originalName": "plantId", + "pascalCase": { + "safeName": "PlantId", + "unsafeName": "PlantId", + }, + "screamingSnakeCase": { + "safeName": "PLANT_ID", + "unsafeName": "PLANT_ID", + }, + "snakeCase": { + "safeName": "plant_id", + "unsafeName": "plant_id", + }, + }, + "value": { + "jsonExample": "plantId", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "plantId", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + ], + "id": "7b7cff8b", + "name": undefined, + "queryParameters": [], + "request": undefined, + "response": { + "_visit": [Function], + "type": "ok", + "value": { + "_visit": [Function], + "type": "body", + "value": { + "jsonExample": { + "description": "description", + "id": "id", + "location": "location", + "name": "name", + "status": "healthy", + }, + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "extraProperties": undefined, + "properties": [ + { + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "id", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "id", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "name", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "name", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "status", + "unsafeName": "status", + }, + "originalName": "status", + "pascalCase": { + "safeName": "Status", + "unsafeName": "Status", + }, + "screamingSnakeCase": { + "safeName": "STATUS", + "unsafeName": "STATUS", + }, + "snakeCase": { + "safeName": "status", + "unsafeName": "status", + }, + }, + "wireValue": "status", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "healthy", + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "type": "enum", + "value": { + "name": { + "camelCase": { + "safeName": "healthy", + "unsafeName": "healthy", + }, + "originalName": "healthy", + "pascalCase": { + "safeName": "Healthy", + "unsafeName": "Healthy", + }, + "screamingSnakeCase": { + "safeName": "HEALTHY", + "unsafeName": "HEALTHY", + }, + "snakeCase": { + "safeName": "healthy", + "unsafeName": "healthy", + }, + }, + "wireValue": "healthy", + }, + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantStatus", + "unsafeName": "plantStatus", + }, + "originalName": "PlantStatus", + "pascalCase": { + "safeName": "PlantStatus", + "unsafeName": "PlantStatus", + }, + "screamingSnakeCase": { + "safeName": "PLANT_STATUS", + "unsafeName": "PLANT_STATUS", + }, + "snakeCase": { + "safeName": "plant_status", + "unsafeName": "plant_status", + }, + }, + "typeId": "PlantStatus", + }, + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "description", + "unsafeName": "description", + }, + "originalName": "description", + "pascalCase": { + "safeName": "Description", + "unsafeName": "Description", + }, + "screamingSnakeCase": { + "safeName": "DESCRIPTION", + "unsafeName": "DESCRIPTION", + }, + "snakeCase": { + "safeName": "description", + "unsafeName": "description", + }, + }, + "wireValue": "description", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "description", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "description", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": "description", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "description", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "location", + "unsafeName": "location", + }, + "originalName": "location", + "pascalCase": { + "safeName": "Location", + "unsafeName": "Location", + }, + "screamingSnakeCase": { + "safeName": "LOCATION", + "unsafeName": "LOCATION", + }, + "snakeCase": { + "safeName": "location", + "unsafeName": "location", + }, + }, + "wireValue": "location", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "location", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "location", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": "location", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "location", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + ], + "type": "object", + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + }, + }, + }, + }, + "rootPathParameters": [], + "serviceHeaders": [], + "servicePathParameters": [], + "url": "/plant/plantId", + }, + }, + ], + "availability": undefined, + "basePath": undefined, + "baseUrl": undefined, + "displayName": undefined, + "docs": undefined, + "errors": [], + "fullPath": { + "head": "/plant/", + "parts": [ + { + "pathParameter": "plantId", + "tail": "", + }, + ], + }, + "headers": [], + "id": "endpoint_.getPlant", + "idempotent": false, + "method": "GET", + "name": { + "camelCase": { + "safeName": "getPlant", + "unsafeName": "getPlant", + }, + "originalName": "getPlant", + "pascalCase": { + "safeName": "GetPlant", + "unsafeName": "GetPlant", + }, + "screamingSnakeCase": { + "safeName": "GET_PLANT", + "unsafeName": "GET_PLANT", + }, + "snakeCase": { + "safeName": "get_plant", + "unsafeName": "get_plant", + }, + }, + "pagination": undefined, + "path": { + "head": "/plant/", + "parts": [ + { + "pathParameter": "plantId", + "tail": "", + }, + ], + }, + "pathParameters": [ + { + "docs": undefined, + "location": "ENDPOINT", + "name": { + "camelCase": { + "safeName": "plantId", + "unsafeName": "plantId", + }, + "originalName": "plantId", + "pascalCase": { + "safeName": "PlantId", + "unsafeName": "PlantId", + }, + "screamingSnakeCase": { + "safeName": "PLANT_ID", + "unsafeName": "PLANT_ID", + }, + "snakeCase": { + "safeName": "plant_id", + "unsafeName": "plant_id", + }, + }, + "v2Examples": { + "autogeneratedExamples": { + "plantId_example": "plantId", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "variable": undefined, + }, + ], + "queryParameters": [], + "requestBody": undefined, + "response": { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "_visit": [Function], + "docs": "Plant retrieved successfully", + "responseBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "type": "named", + "typeId": "Plant", + }, + "type": "response", + "v2Examples": { + "autogeneratedExamples": { + "getPlantExample": { + "description": "A beautiful flower", + "id": "plant-123", + "location": "Garden bed 1", + "name": "Rose", + "status": "healthy", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + }, + "isWildcardStatusCode": undefined, + "statusCode": 200, + }, + "retries": undefined, + "sdkRequest": undefined, + "security": undefined, + "source": { + "_visit": [Function], + "type": "openapi", + }, + "transport": undefined, + "userSpecifiedExamples": [], + "v2BaseUrls": undefined, + "v2Examples": { + "autogeneratedExamples": { + "base_getPlantExample_200": { + "codeSamples": undefined, + "displayName": "getPlantExample", + "request": { + "auth": undefined, + "baseUrl": undefined, + "docs": undefined, + "endpoint": { + "method": "GET", + "path": "/plant/plantId", + }, + "environment": undefined, + "headers": {}, + "pathParameters": { + "plantId": "plantId", + }, + "queryParameters": {}, + "requestBody": undefined, + }, + "response": { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "description": "A beautiful flower", + "id": "plant-123", + "location": "Garden bed 1", + "name": "Rose", + "status": "healthy", + }, + }, + "docs": undefined, + "statusCode": 200, + }, + }, + }, + "userSpecifiedExamples": {}, + }, + "v2RequestBodies": { + "requestBodies": undefined, + }, + "v2Responses": { + "responses": [ + { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "_visit": [Function], + "docs": "Plant retrieved successfully", + "responseBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "type": "named", + "typeId": "Plant", + }, + "type": "response", + "v2Examples": { + "autogeneratedExamples": { + "getPlantExample": { + "description": "A beautiful flower", + "id": "plant-123", + "location": "Garden bed 1", + "name": "Rose", + "status": "healthy", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + }, + "isWildcardStatusCode": undefined, + "statusCode": 200, + }, + ], + }, + }, + { + "allPathParameters": [], + "apiPlayground": undefined, + "audiences": [], + "auth": false, + "autogeneratedExamples": [ + { + "example": { + "docs": undefined, + "endpointHeaders": [], + "endpointPathParameters": [], + "id": "955ed4d9", + "name": undefined, + "queryParameters": [], + "request": { + "_visit": [Function], + "jsonExample": { + "established": undefined, + "id": undefined, + "name": "name", + "plants": undefined, + "size": "small", + }, + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "extraProperties": undefined, + "properties": [ + { + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": undefined, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": undefined, + "type": "optional", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "name", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "name", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "size", + "unsafeName": "size", + }, + "originalName": "size", + "pascalCase": { + "safeName": "Size", + "unsafeName": "Size", + }, + "screamingSnakeCase": { + "safeName": "SIZE", + "unsafeName": "SIZE", + }, + "snakeCase": { + "safeName": "size", + "unsafeName": "size", + }, + }, + "wireValue": "size", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "small", + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "type": "enum", + "value": { + "name": { + "camelCase": { + "safeName": "small", + "unsafeName": "small", + }, + "originalName": "small", + "pascalCase": { + "safeName": "Small", + "unsafeName": "Small", + }, + "screamingSnakeCase": { + "safeName": "SMALL", + "unsafeName": "SMALL", + }, + "snakeCase": { + "safeName": "small", + "unsafeName": "small", + }, + }, + "wireValue": "small", + }, + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "gardenSize", + "unsafeName": "gardenSize", + }, + "originalName": "GardenSize", + "pascalCase": { + "safeName": "GardenSize", + "unsafeName": "GardenSize", + }, + "screamingSnakeCase": { + "safeName": "GARDEN_SIZE", + "unsafeName": "GARDEN_SIZE", + }, + "snakeCase": { + "safeName": "garden_size", + "unsafeName": "garden_size", + }, + }, + "typeId": "GardenSize", + }, + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "plants", + "unsafeName": "plants", + }, + "originalName": "plants", + "pascalCase": { + "safeName": "Plants", + "unsafeName": "Plants", + }, + "screamingSnakeCase": { + "safeName": "PLANTS", + "unsafeName": "PLANTS", + }, + "snakeCase": { + "safeName": "plants", + "unsafeName": "plants", + }, + }, + "wireValue": "plants", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": undefined, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": undefined, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "list": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "list", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "established", + "unsafeName": "established", + }, + "originalName": "established", + "pascalCase": { + "safeName": "Established", + "unsafeName": "Established", + }, + "screamingSnakeCase": { + "safeName": "ESTABLISHED", + "unsafeName": "ESTABLISHED", + }, + "snakeCase": { + "safeName": "established", + "unsafeName": "established", + }, + }, + "wireValue": "established", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": undefined, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": undefined, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "DATE", + "v2": { + "_visit": [Function], + "type": "date", + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + ], + "type": "object", + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + }, + "type": "reference", + }, + "response": { + "_visit": [Function], + "type": "ok", + "value": { + "_visit": [Function], + "type": "body", + "value": { + "jsonExample": { + "established": "2023-01-15", + "id": "id", + "name": "name", + "plants": [ + "plants", + "plants", + ], + "size": "small", + }, + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "extraProperties": undefined, + "properties": [ + { + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "id", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "id", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "id", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "name", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "name", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "size", + "unsafeName": "size", + }, + "originalName": "size", + "pascalCase": { + "safeName": "Size", + "unsafeName": "Size", + }, + "screamingSnakeCase": { + "safeName": "SIZE", + "unsafeName": "SIZE", + }, + "snakeCase": { + "safeName": "size", + "unsafeName": "size", + }, + }, + "wireValue": "size", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "small", + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "type": "enum", + "value": { + "name": { + "camelCase": { + "safeName": "small", + "unsafeName": "small", + }, + "originalName": "small", + "pascalCase": { + "safeName": "Small", + "unsafeName": "Small", + }, + "screamingSnakeCase": { + "safeName": "SMALL", + "unsafeName": "SMALL", + }, + "snakeCase": { + "safeName": "small", + "unsafeName": "small", + }, + }, + "wireValue": "small", + }, + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "gardenSize", + "unsafeName": "gardenSize", + }, + "originalName": "GardenSize", + "pascalCase": { + "safeName": "GardenSize", + "unsafeName": "GardenSize", + }, + "screamingSnakeCase": { + "safeName": "GARDEN_SIZE", + "unsafeName": "GARDEN_SIZE", + }, + "snakeCase": { + "safeName": "garden_size", + "unsafeName": "garden_size", + }, + }, + "typeId": "GardenSize", + }, + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "plants", + "unsafeName": "plants", + }, + "originalName": "plants", + "pascalCase": { + "safeName": "Plants", + "unsafeName": "Plants", + }, + "screamingSnakeCase": { + "safeName": "PLANTS", + "unsafeName": "PLANTS", + }, + "snakeCase": { + "safeName": "plants", + "unsafeName": "plants", + }, + }, + "wireValue": "plants", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": [ + "plants", + "plants", + ], + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": [ + "plants", + "plants", + ], + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "itemType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "list": [ + { + "jsonExample": "plants", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "plants", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + { + "jsonExample": "plants", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "plants", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + ], + "type": "list", + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "list": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "list", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "established", + "unsafeName": "established", + }, + "originalName": "established", + "pascalCase": { + "safeName": "Established", + "unsafeName": "Established", + }, + "screamingSnakeCase": { + "safeName": "ESTABLISHED", + "unsafeName": "ESTABLISHED", + }, + "snakeCase": { + "safeName": "established", + "unsafeName": "established", + }, + }, + "wireValue": "established", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "2023-01-15", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "2023-01-15", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": "2023-01-15", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "date": "2023-01-15", + "type": "date", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "DATE", + "v2": { + "_visit": [Function], + "type": "date", + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "DATE", + "v2": { + "_visit": [Function], + "type": "date", + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + ], + "type": "object", + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + }, + }, + }, + }, + "rootPathParameters": [], + "serviceHeaders": [], + "servicePathParameters": [], + "url": "/garden", + }, + }, + ], + "availability": undefined, + "basePath": undefined, + "baseUrl": undefined, + "displayName": undefined, + "docs": undefined, + "errors": [], + "fullPath": { + "head": "/garden", + "parts": [], + }, + "headers": [], + "id": "endpoint_.createGarden", + "idempotent": false, + "method": "POST", + "name": { + "camelCase": { + "safeName": "createGarden", + "unsafeName": "createGarden", + }, + "originalName": "createGarden", + "pascalCase": { + "safeName": "CreateGarden", + "unsafeName": "CreateGarden", + }, + "screamingSnakeCase": { + "safeName": "CREATE_GARDEN", + "unsafeName": "CREATE_GARDEN", + }, + "snakeCase": { + "safeName": "create_garden", + "unsafeName": "create_garden", + }, + }, + "pagination": undefined, + "path": { + "head": "/garden", + "parts": [], + }, + "pathParameters": [], + "queryParameters": [], + "requestBody": { + "_visit": [Function], + "contentType": "application/json", + "docs": undefined, + "requestBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "type": "named", + "typeId": "Garden", + }, + "type": "reference", + "v2Examples": { + "autogeneratedExamples": { + "createGardenExample": { + "name": "Main Garden", + "size": "small", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + "response": { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "_visit": [Function], + "docs": "Garden created", + "responseBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "type": "named", + "typeId": "Garden", + }, + "type": "response", + "v2Examples": { + "autogeneratedExamples": { + "createGardenExample": { + "established": "2023-01-01", + "id": "garden-456", + "name": "Main Garden", + "plants": [ + "plant-1", + "plant-2", + ], + "size": "small", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + }, + "isWildcardStatusCode": undefined, + "statusCode": 201, + }, + "retries": undefined, + "sdkRequest": undefined, + "security": undefined, + "source": { + "_visit": [Function], + "type": "openapi", + }, + "transport": undefined, + "userSpecifiedExamples": [], + "v2BaseUrls": undefined, + "v2Examples": { + "autogeneratedExamples": { + "createGardenExample_201": { + "codeSamples": undefined, + "displayName": "createGardenExample", + "request": { + "auth": undefined, + "baseUrl": undefined, + "docs": undefined, + "endpoint": { + "method": "POST", + "path": "/garden", + }, + "environment": undefined, + "headers": {}, + "pathParameters": {}, + "queryParameters": {}, + "requestBody": { + "name": "Main Garden", + "size": "small", + }, + }, + "response": { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "established": "2023-01-01", + "id": "garden-456", + "name": "Main Garden", + "plants": [ + "plant-1", + "plant-2", + ], + "size": "small", + }, + }, + "docs": undefined, + "statusCode": 201, + }, + }, + }, + "userSpecifiedExamples": {}, + }, + "v2RequestBodies": { + "requestBodies": [ + { + "_visit": [Function], + "contentType": "application/json", + "docs": undefined, + "requestBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "type": "named", + "typeId": "Garden", + }, + "type": "reference", + "v2Examples": { + "autogeneratedExamples": { + "createGardenExample": { + "name": "Main Garden", + "size": "small", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + ], + }, + "v2Responses": { + "responses": [ + { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "_visit": [Function], + "docs": "Garden created", + "responseBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "type": "named", + "typeId": "Garden", + }, + "type": "response", + "v2Examples": { + "autogeneratedExamples": { + "createGardenExample": { + "established": "2023-01-01", + "id": "garden-456", + "name": "Main Garden", + "plants": [ + "plant-1", + "plant-2", + ], + "size": "small", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + }, + "isWildcardStatusCode": undefined, + "statusCode": 201, + }, + ], + }, + }, + ], + "headers": [], + "name": { + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + }, + "pathParameters": [], + "transport": undefined, + }, + }, + "sourceConfig": undefined, + "subpackages": {}, + "types": { + "Garden": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + "originalName": "Garden", + "pascalCase": { + "safeName": "Garden", + "unsafeName": "Garden", + }, + "screamingSnakeCase": { + "safeName": "GARDEN", + "unsafeName": "GARDEN", + }, + "snakeCase": { + "safeName": "garden", + "unsafeName": "garden", + }, + }, + "typeId": "Garden", + }, + "referencedTypes": Set { + "GardenSize", + }, + "shape": { + "_visit": [Function], + "extendedProperties": [], + "extends": [], + "extraProperties": false, + "properties": [ + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "GardenId_example_0": "garden-456", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "GardenName_example_0": "Main Garden", + }, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "size", + "unsafeName": "size", + }, + "originalName": "size", + "pascalCase": { + "safeName": "Size", + "unsafeName": "Size", + }, + "screamingSnakeCase": { + "safeName": "SIZE", + "unsafeName": "SIZE", + }, + "snakeCase": { + "safeName": "size", + "unsafeName": "size", + }, + }, + "wireValue": "size", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": { + "GardenSize_example_autogenerated": "small", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "gardenSize", + "unsafeName": "gardenSize", + }, + "originalName": "GardenSize", + "pascalCase": { + "safeName": "GardenSize", + "unsafeName": "GardenSize", + }, + "screamingSnakeCase": { + "safeName": "GARDEN_SIZE", + "unsafeName": "GARDEN_SIZE", + }, + "snakeCase": { + "safeName": "garden_size", + "unsafeName": "garden_size", + }, + }, + "type": "named", + "typeId": "GardenSize", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "plants", + "unsafeName": "plants", + }, + "originalName": "plants", + "pascalCase": { + "safeName": "Plants", + "unsafeName": "Plants", + }, + "screamingSnakeCase": { + "safeName": "PLANTS", + "unsafeName": "PLANTS", + }, + "snakeCase": { + "safeName": "plants", + "unsafeName": "plants", + }, + }, + "wireValue": "plants", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "GardenPlants_example_0": [ + "plant-1", + "plant-2", + ], + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "list": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "list", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "established", + "unsafeName": "established", + }, + "originalName": "established", + "pascalCase": { + "safeName": "Established", + "unsafeName": "Established", + }, + "screamingSnakeCase": { + "safeName": "ESTABLISHED", + "unsafeName": "ESTABLISHED", + }, + "snakeCase": { + "safeName": "established", + "unsafeName": "established", + }, + }, + "wireValue": "established", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "GardenEstablished_example_0": "2023-01-01", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "DATE", + "v2": { + "_visit": [Function], + "type": "date", + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + ], + "type": "object", + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "Garden_example_autogenerated": { + "name": "Main Garden", + "size": "small", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + "GardenSize": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "gardenSize", + "unsafeName": "gardenSize", + }, + "originalName": "GardenSize", + "pascalCase": { + "safeName": "GardenSize", + "unsafeName": "GardenSize", + }, + "screamingSnakeCase": { + "safeName": "GARDEN_SIZE", + "unsafeName": "GARDEN_SIZE", + }, + "snakeCase": { + "safeName": "garden_size", + "unsafeName": "garden_size", + }, + }, + "typeId": "GardenSize", + }, + "referencedTypes": Set {}, + "shape": { + "_visit": [Function], + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "small", + "unsafeName": "small", + }, + "originalName": "small", + "pascalCase": { + "safeName": "Small", + "unsafeName": "Small", + }, + "screamingSnakeCase": { + "safeName": "SMALL", + "unsafeName": "SMALL", + }, + "snakeCase": { + "safeName": "small", + "unsafeName": "small", + }, + }, + "wireValue": "small", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "medium", + "unsafeName": "medium", + }, + "originalName": "medium", + "pascalCase": { + "safeName": "Medium", + "unsafeName": "Medium", + }, + "screamingSnakeCase": { + "safeName": "MEDIUM", + "unsafeName": "MEDIUM", + }, + "snakeCase": { + "safeName": "medium", + "unsafeName": "medium", + }, + }, + "wireValue": "medium", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "large", + "unsafeName": "large", + }, + "originalName": "large", + "pascalCase": { + "safeName": "Large", + "unsafeName": "Large", + }, + "screamingSnakeCase": { + "safeName": "LARGE", + "unsafeName": "LARGE", + }, + "snakeCase": { + "safeName": "large", + "unsafeName": "large", + }, + }, + "wireValue": "large", + }, + }, + ], + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "GardenSize_example_autogenerated": "small", + }, + "userSpecifiedExamples": {}, + }, + }, + "Plant": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + "originalName": "Plant", + "pascalCase": { + "safeName": "Plant", + "unsafeName": "Plant", + }, + "screamingSnakeCase": { + "safeName": "PLANT", + "unsafeName": "PLANT", + }, + "snakeCase": { + "safeName": "plant", + "unsafeName": "plant", + }, + }, + "typeId": "Plant", + }, + "referencedTypes": Set { + "PlantStatus", + }, + "shape": { + "_visit": [Function], + "extendedProperties": [], + "extends": [], + "extraProperties": false, + "properties": [ + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantId_example_0": "plant-123", + }, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantName_example_0": "Rose", + }, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "status", + "unsafeName": "status", + }, + "originalName": "status", + "pascalCase": { + "safeName": "Status", + "unsafeName": "Status", + }, + "screamingSnakeCase": { + "safeName": "STATUS", + "unsafeName": "STATUS", + }, + "snakeCase": { + "safeName": "status", + "unsafeName": "status", + }, + }, + "wireValue": "status", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": { + "PlantStatus_example_autogenerated": "healthy", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "plantStatus", + "unsafeName": "plantStatus", + }, + "originalName": "PlantStatus", + "pascalCase": { + "safeName": "PlantStatus", + "unsafeName": "PlantStatus", + }, + "screamingSnakeCase": { + "safeName": "PLANT_STATUS", + "unsafeName": "PLANT_STATUS", + }, + "snakeCase": { + "safeName": "plant_status", + "unsafeName": "plant_status", + }, + }, + "type": "named", + "typeId": "PlantStatus", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "description", + "unsafeName": "description", + }, + "originalName": "description", + "pascalCase": { + "safeName": "Description", + "unsafeName": "Description", + }, + "screamingSnakeCase": { + "safeName": "DESCRIPTION", + "unsafeName": "DESCRIPTION", + }, + "snakeCase": { + "safeName": "description", + "unsafeName": "description", + }, + }, + "wireValue": "description", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantDescription_example_0": "A beautiful flower", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "location", + "unsafeName": "location", + }, + "originalName": "location", + "pascalCase": { + "safeName": "Location", + "unsafeName": "Location", + }, + "screamingSnakeCase": { + "safeName": "LOCATION", + "unsafeName": "LOCATION", + }, + "snakeCase": { + "safeName": "location", + "unsafeName": "location", + }, + }, + "wireValue": "location", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "PlantLocation_example_0": "Garden bed 1", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + ], + "type": "object", + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "Plant_example_autogenerated": { + "id": "plant-123", + "name": "Rose", + "status": "healthy", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + "PlantStatus": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "plantStatus", + "unsafeName": "plantStatus", + }, + "originalName": "PlantStatus", + "pascalCase": { + "safeName": "PlantStatus", + "unsafeName": "PlantStatus", + }, + "screamingSnakeCase": { + "safeName": "PLANT_STATUS", + "unsafeName": "PLANT_STATUS", + }, + "snakeCase": { + "safeName": "plant_status", + "unsafeName": "plant_status", + }, + }, + "typeId": "PlantStatus", + }, + "referencedTypes": Set {}, + "shape": { + "_visit": [Function], + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "healthy", + "unsafeName": "healthy", + }, + "originalName": "healthy", + "pascalCase": { + "safeName": "Healthy", + "unsafeName": "Healthy", + }, + "screamingSnakeCase": { + "safeName": "HEALTHY", + "unsafeName": "HEALTHY", + }, + "snakeCase": { + "safeName": "healthy", + "unsafeName": "healthy", + }, + }, + "wireValue": "healthy", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "wilting", + "unsafeName": "wilting", + }, + "originalName": "wilting", + "pascalCase": { + "safeName": "Wilting", + "unsafeName": "Wilting", + }, + "screamingSnakeCase": { + "safeName": "WILTING", + "unsafeName": "WILTING", + }, + "snakeCase": { + "safeName": "wilting", + "unsafeName": "wilting", + }, + }, + "wireValue": "wilting", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "flowering", + "unsafeName": "flowering", + }, + "originalName": "flowering", + "pascalCase": { + "safeName": "Flowering", + "unsafeName": "Flowering", + }, + "screamingSnakeCase": { + "safeName": "FLOWERING", + "unsafeName": "FLOWERING", + }, + "snakeCase": { + "safeName": "flowering", + "unsafeName": "flowering", + }, + }, + "wireValue": "flowering", + }, + }, + ], + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "PlantStatus_example_autogenerated": "healthy", + }, + "userSpecifiedExamples": {}, + }, + }, + }, + "variables": [], + "webhookGroups": {}, + "websocketChannels": undefined, +} \ No newline at end of file diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/mixed-examples-test-fdr.snap b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/mixed-examples-test-fdr.snap new file mode 100644 index 000000000000..4bb3f23c3c6d --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/mixed-examples-test-fdr.snap @@ -0,0 +1,565 @@ +{ + "auth": undefined, + "authSchemes": {}, + "globalHeaders": [], + "navigation": undefined, + "rootPackage": { + "endpoints": [ + { + "auth": false, + "authV2": undefined, + "availability": undefined, + "defaultEnvironment": undefined, + "description": undefined, + "environments": undefined, + "errors": undefined, + "errorsV2": [], + "examples": [ + { + "codeSamples": undefined, + "description": "", + "headers": {}, + "name": undefined, + "path": "/user", + "pathParameters": {}, + "queryParameters": {}, + "requestBody": { + "email": "user@example.com", + "name": "John Doe", + "role": "user", + }, + "requestBodyV3": { + "type": "json", + "value": { + "email": "user@example.com", + "name": "John Doe", + "role": "user", + }, + }, + "responseBody": { + "email": "alice@example.com", + "id": "user-42", + "name": "Alice Johnson", + "role": "admin", + }, + "responseBodyV3": { + "type": "json", + "value": { + "email": "alice@example.com", + "id": "user-42", + "name": "Alice Johnson", + "role": "admin", + }, + }, + "responseStatusCode": 201, + }, + ], + "headers": [], + "id": "createUser", + "includeInApiExplorer": undefined, + "method": "POST", + "multiAuth": undefined, + "name": "Create User", + "originalEndpointId": "endpoint_.createUser", + "path": { + "parts": [ + { + "type": "literal", + "value": "", + }, + { + "type": "literal", + "value": "/user", + }, + ], + "pathParameters": [], + }, + "protocol": { + "type": "rest", + }, + "queryParameters": [], + "request": { + "description": undefined, + "type": { + "contentType": "application/json", + "description": undefined, + "shape": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "User", + }, + }, + "type": "json", + }, + }, + "requestsV2": { + "requests": [ + { + "description": undefined, + "type": { + "contentType": "application/json", + "description": undefined, + "shape": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "User", + }, + }, + "type": "json", + }, + }, + ], + }, + "response": { + "description": "User created successfully", + "isWildcard": undefined, + "statusCode": 201, + "type": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "User", + }, + }, + }, + "responsesV2": { + "responses": [ + { + "description": "User created successfully", + "isWildcard": undefined, + "statusCode": 201, + "type": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "User", + }, + }, + }, + ], + }, + "slug": undefined, + }, + { + "auth": false, + "authV2": undefined, + "availability": undefined, + "defaultEnvironment": undefined, + "description": undefined, + "environments": undefined, + "errors": undefined, + "errorsV2": [], + "examples": [ + { + "codeSamples": undefined, + "description": "", + "headers": {}, + "name": undefined, + "path": "/product/productId", + "pathParameters": { + "productId": "productId", + }, + "queryParameters": {}, + "requestBody": undefined, + "requestBodyV3": undefined, + "responseBody": { + "category": "Electronics", + "description": "A useful widget", + "id": "prod-456", + "name": "Widget", + "price": 29.99, + }, + "responseBodyV3": { + "type": "json", + "value": { + "category": "Electronics", + "description": "A useful widget", + "id": "prod-456", + "name": "Widget", + "price": 29.99, + }, + }, + "responseStatusCode": 200, + }, + ], + "headers": [], + "id": "getProduct", + "includeInApiExplorer": undefined, + "method": "GET", + "multiAuth": undefined, + "name": "Get Product", + "originalEndpointId": "endpoint_.getProduct", + "path": { + "parts": [ + { + "type": "literal", + "value": "", + }, + { + "type": "literal", + "value": "/product/", + }, + { + "type": "pathParameter", + "value": "productId", + }, + { + "type": "literal", + "value": "", + }, + ], + "pathParameters": [ + { + "availability": undefined, + "description": undefined, + "explode": undefined, + "key": "productId", + "type": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + }, + ], + }, + "protocol": { + "type": "rest", + }, + "queryParameters": [], + "request": undefined, + "requestsV2": { + "requests": undefined, + }, + "response": { + "description": "Product retrieved", + "isWildcard": undefined, + "statusCode": 200, + "type": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "Product", + }, + }, + }, + "responsesV2": { + "responses": [ + { + "description": "Product retrieved", + "isWildcard": undefined, + "statusCode": 200, + "type": { + "type": "reference", + "value": { + "default": undefined, + "type": "id", + "value": "Product", + }, + }, + }, + ], + }, + "slug": undefined, + }, + ], + "pointsTo": undefined, + "subpackages": [], + "types": [ + "User", + "Product", + ], + "webhooks": [], + "websockets": [], + }, + "snippetsConfiguration": { + "csharpSdk": undefined, + "goSdk": undefined, + "javaSdk": undefined, + "phpSdk": undefined, + "pythonSdk": undefined, + "rubySdk": undefined, + "rustSdk": undefined, + "swiftSdk": undefined, + "typescriptSdk": undefined, + }, + "subpackages": {}, + "types": { + "Product": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "Product", + "shape": { + "extends": [], + "extraProperties": undefined, + "properties": [ + { + "availability": undefined, + "description": undefined, + "key": "id", + "propertyAccess": undefined, + "valueType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "name", + "propertyAccess": undefined, + "valueType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "price", + "propertyAccess": undefined, + "valueType": { + "type": "primitive", + "value": { + "default": undefined, + "maximum": undefined, + "minimum": undefined, + "type": "double", + }, + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "description", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "category", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + ], + "type": "object", + }, + }, + "User": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "User", + "shape": { + "extends": [], + "extraProperties": undefined, + "properties": [ + { + "availability": undefined, + "description": undefined, + "key": "id", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "email", + "propertyAccess": undefined, + "valueType": { + "type": "primitive", + "value": { + "default": undefined, + "format": "email", + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "name", + "propertyAccess": undefined, + "valueType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "role", + "propertyAccess": undefined, + "valueType": { + "default": undefined, + "type": "id", + "value": "UserRole", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "bio", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + { + "availability": undefined, + "description": undefined, + "key": "avatar", + "propertyAccess": undefined, + "valueType": { + "defaultValue": undefined, + "itemType": { + "itemType": { + "type": "primitive", + "value": { + "default": undefined, + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "regex": undefined, + "type": "string", + }, + }, + "type": "nullable", + }, + "type": "optional", + }, + }, + ], + "type": "object", + }, + }, + "UserRole": { + "availability": undefined, + "description": undefined, + "displayName": undefined, + "name": "UserRole", + "shape": { + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "description": undefined, + "value": "user", + }, + { + "availability": undefined, + "description": undefined, + "value": "admin", + }, + { + "availability": undefined, + "description": undefined, + "value": "moderator", + }, + ], + }, + }, + }, +} \ No newline at end of file diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/mixed-examples-test-ir.snap b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/mixed-examples-test-ir.snap new file mode 100644 index 000000000000..4d24fbb55808 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/mixed-examples-test-ir.snap @@ -0,0 +1,3493 @@ +{ + "apiDisplayName": undefined, + "apiDocs": undefined, + "apiName": { + "camelCase": { + "safeName": "", + "unsafeName": "", + }, + "originalName": "", + "pascalCase": { + "safeName": "", + "unsafeName": "", + }, + "screamingSnakeCase": { + "safeName": "", + "unsafeName": "", + }, + "snakeCase": { + "safeName": "", + "unsafeName": "", + }, + }, + "apiPlayground": undefined, + "apiVersion": undefined, + "audiences": undefined, + "auth": { + "docs": undefined, + "requirement": "ALL", + "schemes": [], + }, + "basePath": undefined, + "constants": { + "errorInstanceIdKey": { + "name": { + "camelCase": { + "safeName": "errorInstanceId", + "unsafeName": "errorInstanceId", + }, + "originalName": "errorInstanceId", + "pascalCase": { + "safeName": "ErrorInstanceId", + "unsafeName": "ErrorInstanceId", + }, + "screamingSnakeCase": { + "safeName": "ERROR_INSTANCE_ID", + "unsafeName": "ERROR_INSTANCE_ID", + }, + "snakeCase": { + "safeName": "error_instance_id", + "unsafeName": "error_instance_id", + }, + }, + "wireValue": "errorInstanceId", + }, + }, + "dynamic": undefined, + "environments": undefined, + "errorDiscriminationStrategy": { + "_visit": [Function], + "type": "statusCode", + }, + "errors": {}, + "fdrApiDefinitionId": undefined, + "generationMetadata": undefined, + "headers": [], + "idempotencyHeaders": [], + "pathParameters": [], + "publishConfig": undefined, + "readmeConfig": undefined, + "rootPackage": { + "docs": undefined, + "errors": [], + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "hasEndpointsInTree": false, + "navigationConfig": undefined, + "service": "service_", + "subpackages": [], + "types": [ + "User", + "Product", + ], + "webhooks": undefined, + "websocket": undefined, + }, + "sdkConfig": { + "hasFileDownloadEndpoints": false, + "hasPaginatedEndpoints": false, + "hasStreamingEndpoints": false, + "isAuthMandatory": true, + "platformHeaders": { + "language": "", + "sdkName": "", + "sdkVersion": "", + "userAgent": undefined, + }, + }, + "selfHosted": false, + "serviceTypeReferenceInfo": { + "sharedTypes": [], + "typesReferencedOnlyByService": {}, + }, + "services": { + "service_": { + "audiences": undefined, + "availability": undefined, + "basePath": { + "head": "", + "parts": [], + }, + "displayName": undefined, + "encoding": undefined, + "endpoints": [ + { + "allPathParameters": [], + "apiPlayground": undefined, + "audiences": [], + "auth": false, + "autogeneratedExamples": [ + { + "example": { + "docs": undefined, + "endpointHeaders": [], + "endpointPathParameters": [], + "id": "2bcdf0c7", + "name": undefined, + "queryParameters": [], + "request": { + "_visit": [Function], + "jsonExample": { + "avatar": undefined, + "bio": undefined, + "email": "email", + "id": undefined, + "name": "name", + "role": "user", + }, + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "extraProperties": undefined, + "properties": [ + { + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": undefined, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": undefined, + "type": "optional", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "email", + "unsafeName": "email", + }, + "originalName": "email", + "pascalCase": { + "safeName": "Email", + "unsafeName": "Email", + }, + "screamingSnakeCase": { + "safeName": "EMAIL", + "unsafeName": "EMAIL", + }, + "snakeCase": { + "safeName": "email", + "unsafeName": "email", + }, + }, + "wireValue": "email", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "email", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "email", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "name", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "name", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "role", + "unsafeName": "role", + }, + "originalName": "role", + "pascalCase": { + "safeName": "Role", + "unsafeName": "Role", + }, + "screamingSnakeCase": { + "safeName": "ROLE", + "unsafeName": "ROLE", + }, + "snakeCase": { + "safeName": "role", + "unsafeName": "role", + }, + }, + "wireValue": "role", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "user", + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "type": "enum", + "value": { + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "user", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "wireValue": "user", + }, + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "userRole", + "unsafeName": "userRole", + }, + "originalName": "UserRole", + "pascalCase": { + "safeName": "UserRole", + "unsafeName": "UserRole", + }, + "screamingSnakeCase": { + "safeName": "USER_ROLE", + "unsafeName": "USER_ROLE", + }, + "snakeCase": { + "safeName": "user_role", + "unsafeName": "user_role", + }, + }, + "typeId": "UserRole", + }, + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "bio", + "unsafeName": "bio", + }, + "originalName": "bio", + "pascalCase": { + "safeName": "Bio", + "unsafeName": "Bio", + }, + "screamingSnakeCase": { + "safeName": "BIO", + "unsafeName": "BIO", + }, + "snakeCase": { + "safeName": "bio", + "unsafeName": "bio", + }, + }, + "wireValue": "bio", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": undefined, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": undefined, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "avatar", + "unsafeName": "avatar", + }, + "originalName": "avatar", + "pascalCase": { + "safeName": "Avatar", + "unsafeName": "Avatar", + }, + "screamingSnakeCase": { + "safeName": "AVATAR", + "unsafeName": "AVATAR", + }, + "snakeCase": { + "safeName": "avatar", + "unsafeName": "avatar", + }, + }, + "wireValue": "avatar", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": undefined, + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": undefined, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + ], + "type": "object", + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + }, + "type": "reference", + }, + "response": { + "_visit": [Function], + "type": "ok", + "value": { + "_visit": [Function], + "type": "body", + "value": { + "jsonExample": { + "avatar": "avatar", + "bio": "bio", + "email": "email", + "id": "id", + "name": "name", + "role": "user", + }, + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "extraProperties": undefined, + "properties": [ + { + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "id", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "id", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "id", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "email", + "unsafeName": "email", + }, + "originalName": "email", + "pascalCase": { + "safeName": "Email", + "unsafeName": "Email", + }, + "screamingSnakeCase": { + "safeName": "EMAIL", + "unsafeName": "EMAIL", + }, + "snakeCase": { + "safeName": "email", + "unsafeName": "email", + }, + }, + "wireValue": "email", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "email", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "email", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "name", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "name", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "role", + "unsafeName": "role", + }, + "originalName": "role", + "pascalCase": { + "safeName": "Role", + "unsafeName": "Role", + }, + "screamingSnakeCase": { + "safeName": "ROLE", + "unsafeName": "ROLE", + }, + "snakeCase": { + "safeName": "role", + "unsafeName": "role", + }, + }, + "wireValue": "role", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "user", + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "type": "enum", + "value": { + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "user", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "wireValue": "user", + }, + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "userRole", + "unsafeName": "userRole", + }, + "originalName": "UserRole", + "pascalCase": { + "safeName": "UserRole", + "unsafeName": "UserRole", + }, + "screamingSnakeCase": { + "safeName": "USER_ROLE", + "unsafeName": "USER_ROLE", + }, + "snakeCase": { + "safeName": "user_role", + "unsafeName": "user_role", + }, + }, + "typeId": "UserRole", + }, + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "bio", + "unsafeName": "bio", + }, + "originalName": "bio", + "pascalCase": { + "safeName": "Bio", + "unsafeName": "Bio", + }, + "screamingSnakeCase": { + "safeName": "BIO", + "unsafeName": "BIO", + }, + "snakeCase": { + "safeName": "bio", + "unsafeName": "bio", + }, + }, + "wireValue": "bio", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "bio", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "bio", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": "bio", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "bio", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "avatar", + "unsafeName": "avatar", + }, + "originalName": "avatar", + "pascalCase": { + "safeName": "Avatar", + "unsafeName": "Avatar", + }, + "screamingSnakeCase": { + "safeName": "AVATAR", + "unsafeName": "AVATAR", + }, + "snakeCase": { + "safeName": "avatar", + "unsafeName": "avatar", + }, + }, + "wireValue": "avatar", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "avatar", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "avatar", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": "avatar", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "avatar", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + ], + "type": "object", + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + }, + }, + }, + }, + "rootPathParameters": [], + "serviceHeaders": [], + "servicePathParameters": [], + "url": "/user", + }, + }, + ], + "availability": undefined, + "basePath": undefined, + "baseUrl": undefined, + "displayName": undefined, + "docs": undefined, + "errors": [], + "fullPath": { + "head": "/user", + "parts": [], + }, + "headers": [], + "id": "endpoint_.createUser", + "idempotent": false, + "method": "POST", + "name": { + "camelCase": { + "safeName": "createUser", + "unsafeName": "createUser", + }, + "originalName": "createUser", + "pascalCase": { + "safeName": "CreateUser", + "unsafeName": "CreateUser", + }, + "screamingSnakeCase": { + "safeName": "CREATE_USER", + "unsafeName": "CREATE_USER", + }, + "snakeCase": { + "safeName": "create_user", + "unsafeName": "create_user", + }, + }, + "pagination": undefined, + "path": { + "head": "/user", + "parts": [], + }, + "pathParameters": [], + "queryParameters": [], + "requestBody": { + "_visit": [Function], + "contentType": "application/json", + "docs": undefined, + "requestBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "type": "named", + "typeId": "User", + }, + "type": "reference", + "v2Examples": { + "autogeneratedExamples": { + "createUserExample": { + "email": "user@example.com", + "name": "John Doe", + "role": "user", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + "response": { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "_visit": [Function], + "docs": "User created successfully", + "responseBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "type": "named", + "typeId": "User", + }, + "type": "response", + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "Successfully created user": { + "email": "alice@example.com", + "id": "user-42", + "name": "Alice Johnson", + "role": "admin", + }, + }, + }, + }, + }, + "isWildcardStatusCode": undefined, + "statusCode": 201, + }, + "retries": undefined, + "sdkRequest": undefined, + "security": undefined, + "source": { + "_visit": [Function], + "type": "openapi", + }, + "transport": undefined, + "userSpecifiedExamples": [], + "v2BaseUrls": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "createUserExample_Successfully created user_201": { + "codeSamples": undefined, + "displayName": "Successfully created user", + "request": { + "auth": undefined, + "baseUrl": undefined, + "docs": undefined, + "endpoint": { + "method": "POST", + "path": "/user", + }, + "environment": undefined, + "headers": {}, + "pathParameters": {}, + "queryParameters": {}, + "requestBody": { + "email": "user@example.com", + "name": "John Doe", + "role": "user", + }, + }, + "response": { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "email": "alice@example.com", + "id": "user-42", + "name": "Alice Johnson", + "role": "admin", + }, + }, + "docs": undefined, + "statusCode": 201, + }, + }, + }, + }, + "v2RequestBodies": { + "requestBodies": [ + { + "_visit": [Function], + "contentType": "application/json", + "docs": undefined, + "requestBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "type": "named", + "typeId": "User", + }, + "type": "reference", + "v2Examples": { + "autogeneratedExamples": { + "createUserExample": { + "email": "user@example.com", + "name": "John Doe", + "role": "user", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + ], + }, + "v2Responses": { + "responses": [ + { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "_visit": [Function], + "docs": "User created successfully", + "responseBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "type": "named", + "typeId": "User", + }, + "type": "response", + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "Successfully created user": { + "email": "alice@example.com", + "id": "user-42", + "name": "Alice Johnson", + "role": "admin", + }, + }, + }, + }, + }, + "isWildcardStatusCode": undefined, + "statusCode": 201, + }, + ], + }, + }, + { + "allPathParameters": [ + { + "docs": undefined, + "location": "ENDPOINT", + "name": { + "camelCase": { + "safeName": "productId", + "unsafeName": "productId", + }, + "originalName": "productId", + "pascalCase": { + "safeName": "ProductId", + "unsafeName": "ProductId", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT_ID", + "unsafeName": "PRODUCT_ID", + }, + "snakeCase": { + "safeName": "product_id", + "unsafeName": "product_id", + }, + }, + "v2Examples": { + "autogeneratedExamples": { + "productId_example": "productId", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "variable": undefined, + }, + ], + "apiPlayground": undefined, + "audiences": [], + "auth": false, + "autogeneratedExamples": [ + { + "example": { + "docs": undefined, + "endpointHeaders": [], + "endpointPathParameters": [ + { + "name": { + "camelCase": { + "safeName": "productId", + "unsafeName": "productId", + }, + "originalName": "productId", + "pascalCase": { + "safeName": "ProductId", + "unsafeName": "ProductId", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT_ID", + "unsafeName": "PRODUCT_ID", + }, + "snakeCase": { + "safeName": "product_id", + "unsafeName": "product_id", + }, + }, + "value": { + "jsonExample": "productId", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "productId", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + ], + "id": "5aa2d649", + "name": undefined, + "queryParameters": [], + "request": undefined, + "response": { + "_visit": [Function], + "type": "ok", + "value": { + "_visit": [Function], + "type": "body", + "value": { + "jsonExample": { + "category": "category", + "description": "description", + "id": "id", + "name": "name", + "price": 1.1, + }, + "shape": { + "_visit": [Function], + "shape": { + "_visit": [Function], + "extraProperties": undefined, + "properties": [ + { + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "product", + "unsafeName": "product", + }, + "originalName": "Product", + "pascalCase": { + "safeName": "Product", + "unsafeName": "Product", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT", + "unsafeName": "PRODUCT", + }, + "snakeCase": { + "safeName": "product", + "unsafeName": "product", + }, + }, + "typeId": "Product", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "id", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "id", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "product", + "unsafeName": "product", + }, + "originalName": "Product", + "pascalCase": { + "safeName": "Product", + "unsafeName": "Product", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT", + "unsafeName": "PRODUCT", + }, + "snakeCase": { + "safeName": "product", + "unsafeName": "product", + }, + }, + "typeId": "Product", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "name", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "name", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "price", + "unsafeName": "price", + }, + "originalName": "price", + "pascalCase": { + "safeName": "Price", + "unsafeName": "Price", + }, + "screamingSnakeCase": { + "safeName": "PRICE", + "unsafeName": "PRICE", + }, + "snakeCase": { + "safeName": "price", + "unsafeName": "price", + }, + }, + "wireValue": "price", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "product", + "unsafeName": "product", + }, + "originalName": "Product", + "pascalCase": { + "safeName": "Product", + "unsafeName": "Product", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT", + "unsafeName": "PRODUCT", + }, + "snakeCase": { + "safeName": "product", + "unsafeName": "product", + }, + }, + "typeId": "Product", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": 1.1, + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "float": 1.1, + "type": "float", + }, + "type": "primitive", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "description", + "unsafeName": "description", + }, + "originalName": "description", + "pascalCase": { + "safeName": "Description", + "unsafeName": "Description", + }, + "screamingSnakeCase": { + "safeName": "DESCRIPTION", + "unsafeName": "DESCRIPTION", + }, + "snakeCase": { + "safeName": "description", + "unsafeName": "description", + }, + }, + "wireValue": "description", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "product", + "unsafeName": "product", + }, + "originalName": "Product", + "pascalCase": { + "safeName": "Product", + "unsafeName": "Product", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT", + "unsafeName": "PRODUCT", + }, + "snakeCase": { + "safeName": "product", + "unsafeName": "product", + }, + }, + "typeId": "Product", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "description", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "description", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": "description", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "description", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + { + "name": { + "name": { + "camelCase": { + "safeName": "category", + "unsafeName": "category", + }, + "originalName": "category", + "pascalCase": { + "safeName": "Category", + "unsafeName": "Category", + }, + "screamingSnakeCase": { + "safeName": "CATEGORY", + "unsafeName": "CATEGORY", + }, + "snakeCase": { + "safeName": "category", + "unsafeName": "category", + }, + }, + "wireValue": "category", + }, + "originalTypeDeclaration": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "product", + "unsafeName": "product", + }, + "originalName": "Product", + "pascalCase": { + "safeName": "Product", + "unsafeName": "Product", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT", + "unsafeName": "PRODUCT", + }, + "snakeCase": { + "safeName": "product", + "unsafeName": "product", + }, + }, + "typeId": "Product", + }, + "propertyAccess": undefined, + "value": { + "jsonExample": "category", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "jsonExample": "category", + "shape": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "jsonExample": "category", + "shape": { + "_visit": [Function], + "primitive": { + "_visit": [Function], + "string": { + "original": "category", + }, + "type": "string", + }, + "type": "primitive", + }, + }, + "type": "nullable", + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + "type": "container", + }, + }, + "type": "optional", + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + }, + "type": "container", + }, + }, + }, + ], + "type": "object", + }, + "type": "named", + "typeName": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "product", + "unsafeName": "product", + }, + "originalName": "Product", + "pascalCase": { + "safeName": "Product", + "unsafeName": "Product", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT", + "unsafeName": "PRODUCT", + }, + "snakeCase": { + "safeName": "product", + "unsafeName": "product", + }, + }, + "typeId": "Product", + }, + }, + }, + }, + }, + "rootPathParameters": [], + "serviceHeaders": [], + "servicePathParameters": [], + "url": "/product/productId", + }, + }, + ], + "availability": undefined, + "basePath": undefined, + "baseUrl": undefined, + "displayName": undefined, + "docs": undefined, + "errors": [], + "fullPath": { + "head": "/product/", + "parts": [ + { + "pathParameter": "productId", + "tail": "", + }, + ], + }, + "headers": [], + "id": "endpoint_.getProduct", + "idempotent": false, + "method": "GET", + "name": { + "camelCase": { + "safeName": "getProduct", + "unsafeName": "getProduct", + }, + "originalName": "getProduct", + "pascalCase": { + "safeName": "GetProduct", + "unsafeName": "GetProduct", + }, + "screamingSnakeCase": { + "safeName": "GET_PRODUCT", + "unsafeName": "GET_PRODUCT", + }, + "snakeCase": { + "safeName": "get_product", + "unsafeName": "get_product", + }, + }, + "pagination": undefined, + "path": { + "head": "/product/", + "parts": [ + { + "pathParameter": "productId", + "tail": "", + }, + ], + }, + "pathParameters": [ + { + "docs": undefined, + "location": "ENDPOINT", + "name": { + "camelCase": { + "safeName": "productId", + "unsafeName": "productId", + }, + "originalName": "productId", + "pascalCase": { + "safeName": "ProductId", + "unsafeName": "ProductId", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT_ID", + "unsafeName": "PRODUCT_ID", + }, + "snakeCase": { + "safeName": "product_id", + "unsafeName": "product_id", + }, + }, + "v2Examples": { + "autogeneratedExamples": { + "productId_example": "productId", + }, + "userSpecifiedExamples": {}, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "variable": undefined, + }, + ], + "queryParameters": [], + "requestBody": undefined, + "response": { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "_visit": [Function], + "docs": "Product retrieved", + "responseBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "product", + "unsafeName": "product", + }, + "originalName": "Product", + "pascalCase": { + "safeName": "Product", + "unsafeName": "Product", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT", + "unsafeName": "PRODUCT", + }, + "snakeCase": { + "safeName": "product", + "unsafeName": "product", + }, + }, + "type": "named", + "typeId": "Product", + }, + "type": "response", + "v2Examples": { + "autogeneratedExamples": { + "getProductExample": { + "category": "Electronics", + "description": "A useful widget", + "id": "prod-456", + "name": "Widget", + "price": 29.99, + }, + }, + "userSpecifiedExamples": {}, + }, + }, + }, + "isWildcardStatusCode": undefined, + "statusCode": 200, + }, + "retries": undefined, + "sdkRequest": undefined, + "security": undefined, + "source": { + "_visit": [Function], + "type": "openapi", + }, + "transport": undefined, + "userSpecifiedExamples": [], + "v2BaseUrls": undefined, + "v2Examples": { + "autogeneratedExamples": { + "base_getProductExample_200": { + "codeSamples": undefined, + "displayName": "getProductExample", + "request": { + "auth": undefined, + "baseUrl": undefined, + "docs": undefined, + "endpoint": { + "method": "GET", + "path": "/product/productId", + }, + "environment": undefined, + "headers": {}, + "pathParameters": { + "productId": "productId", + }, + "queryParameters": {}, + "requestBody": undefined, + }, + "response": { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "category": "Electronics", + "description": "A useful widget", + "id": "prod-456", + "name": "Widget", + "price": 29.99, + }, + }, + "docs": undefined, + "statusCode": 200, + }, + }, + }, + "userSpecifiedExamples": {}, + }, + "v2RequestBodies": { + "requestBodies": undefined, + }, + "v2Responses": { + "responses": [ + { + "body": { + "_visit": [Function], + "type": "json", + "value": { + "_visit": [Function], + "docs": "Product retrieved", + "responseBodyType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "product", + "unsafeName": "product", + }, + "originalName": "Product", + "pascalCase": { + "safeName": "Product", + "unsafeName": "Product", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT", + "unsafeName": "PRODUCT", + }, + "snakeCase": { + "safeName": "product", + "unsafeName": "product", + }, + }, + "type": "named", + "typeId": "Product", + }, + "type": "response", + "v2Examples": { + "autogeneratedExamples": { + "getProductExample": { + "category": "Electronics", + "description": "A useful widget", + "id": "prod-456", + "name": "Widget", + "price": 29.99, + }, + }, + "userSpecifiedExamples": {}, + }, + }, + }, + "isWildcardStatusCode": undefined, + "statusCode": 200, + }, + ], + }, + }, + ], + "headers": [], + "name": { + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + }, + "pathParameters": [], + "transport": undefined, + }, + }, + "sourceConfig": undefined, + "subpackages": {}, + "types": { + "Product": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "product", + "unsafeName": "product", + }, + "originalName": "Product", + "pascalCase": { + "safeName": "Product", + "unsafeName": "Product", + }, + "screamingSnakeCase": { + "safeName": "PRODUCT", + "unsafeName": "PRODUCT", + }, + "snakeCase": { + "safeName": "product", + "unsafeName": "product", + }, + }, + "typeId": "Product", + }, + "referencedTypes": Set {}, + "shape": { + "_visit": [Function], + "extendedProperties": [], + "extends": [], + "extraProperties": false, + "properties": [ + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "ProductId_example_0": "prod-456", + }, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "ProductName_example_0": "Widget", + }, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "price", + "unsafeName": "price", + }, + "originalName": "price", + "pascalCase": { + "safeName": "Price", + "unsafeName": "Price", + }, + "screamingSnakeCase": { + "safeName": "PRICE", + "unsafeName": "PRICE", + }, + "snakeCase": { + "safeName": "price", + "unsafeName": "price", + }, + }, + "wireValue": "price", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "ProductPrice_example_0": 29.99, + }, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "FLOAT", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "float", + "validation": { + "exclusiveMax": undefined, + "exclusiveMin": undefined, + "max": undefined, + "min": undefined, + "multipleOf": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "description", + "unsafeName": "description", + }, + "originalName": "description", + "pascalCase": { + "safeName": "Description", + "unsafeName": "Description", + }, + "screamingSnakeCase": { + "safeName": "DESCRIPTION", + "unsafeName": "DESCRIPTION", + }, + "snakeCase": { + "safeName": "description", + "unsafeName": "description", + }, + }, + "wireValue": "description", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "ProductDescription_example_0": "A useful widget", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "category", + "unsafeName": "category", + }, + "originalName": "category", + "pascalCase": { + "safeName": "Category", + "unsafeName": "Category", + }, + "screamingSnakeCase": { + "safeName": "CATEGORY", + "unsafeName": "CATEGORY", + }, + "snakeCase": { + "safeName": "category", + "unsafeName": "category", + }, + }, + "wireValue": "category", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "ProductCategory_example_0": "Electronics", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + ], + "type": "object", + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "Product_example_autogenerated": { + "id": "prod-456", + "name": "Widget", + "price": 29.99, + }, + }, + "userSpecifiedExamples": {}, + }, + }, + "User": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "User", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "typeId": "User", + }, + "referencedTypes": Set { + "UserRole", + }, + "shape": { + "_visit": [Function], + "extendedProperties": [], + "extends": [], + "extraProperties": false, + "properties": [ + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "id", + "unsafeName": "id", + }, + "originalName": "id", + "pascalCase": { + "safeName": "Id", + "unsafeName": "Id", + }, + "screamingSnakeCase": { + "safeName": "ID", + "unsafeName": "ID", + }, + "snakeCase": { + "safeName": "id", + "unsafeName": "id", + }, + }, + "wireValue": "id", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "UserId_example_0": "user-123", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "email", + "unsafeName": "email", + }, + "originalName": "email", + "pascalCase": { + "safeName": "Email", + "unsafeName": "Email", + }, + "screamingSnakeCase": { + "safeName": "EMAIL", + "unsafeName": "EMAIL", + }, + "snakeCase": { + "safeName": "email", + "unsafeName": "email", + }, + }, + "wireValue": "email", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "UserEmail_example_0": "user@example.com", + }, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": "email", + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "name", + "unsafeName": "name", + }, + "originalName": "name", + "pascalCase": { + "safeName": "Name", + "unsafeName": "Name", + }, + "screamingSnakeCase": { + "safeName": "NAME", + "unsafeName": "NAME", + }, + "snakeCase": { + "safeName": "name", + "unsafeName": "name", + }, + }, + "wireValue": "name", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "UserName_example_0": "John Doe", + }, + }, + "valueType": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "role", + "unsafeName": "role", + }, + "originalName": "role", + "pascalCase": { + "safeName": "Role", + "unsafeName": "Role", + }, + "screamingSnakeCase": { + "safeName": "ROLE", + "unsafeName": "ROLE", + }, + "snakeCase": { + "safeName": "role", + "unsafeName": "role", + }, + }, + "wireValue": "role", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "UserRole_example_0": "user", + }, + }, + "valueType": { + "_visit": [Function], + "default": undefined, + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "inline": false, + "name": { + "camelCase": { + "safeName": "userRole", + "unsafeName": "userRole", + }, + "originalName": "UserRole", + "pascalCase": { + "safeName": "UserRole", + "unsafeName": "UserRole", + }, + "screamingSnakeCase": { + "safeName": "USER_ROLE", + "unsafeName": "USER_ROLE", + }, + "snakeCase": { + "safeName": "user_role", + "unsafeName": "user_role", + }, + }, + "type": "named", + "typeId": "UserRole", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "bio", + "unsafeName": "bio", + }, + "originalName": "bio", + "pascalCase": { + "safeName": "Bio", + "unsafeName": "Bio", + }, + "screamingSnakeCase": { + "safeName": "BIO", + "unsafeName": "BIO", + }, + "snakeCase": { + "safeName": "bio", + "unsafeName": "bio", + }, + }, + "wireValue": "bio", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "UserBio_example_0": "Software engineer passionate about APIs", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + { + "availability": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "avatar", + "unsafeName": "avatar", + }, + "originalName": "avatar", + "pascalCase": { + "safeName": "Avatar", + "unsafeName": "Avatar", + }, + "screamingSnakeCase": { + "safeName": "AVATAR", + "unsafeName": "AVATAR", + }, + "snakeCase": { + "safeName": "avatar", + "unsafeName": "avatar", + }, + }, + "wireValue": "avatar", + }, + "propertyAccess": undefined, + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "UserAvatar_example_0": "https://example.com/avatar.jpg", + }, + }, + "valueType": { + "_visit": [Function], + "container": { + "_visit": [Function], + "optional": { + "_visit": [Function], + "container": { + "_visit": [Function], + "nullable": { + "_visit": [Function], + "primitive": { + "v1": "STRING", + "v2": { + "_visit": [Function], + "default": undefined, + "type": "string", + "validation": { + "format": undefined, + "maxLength": undefined, + "minLength": undefined, + "pattern": undefined, + }, + }, + }, + "type": "primitive", + }, + "type": "nullable", + }, + "type": "container", + }, + "type": "optional", + }, + "type": "container", + }, + }, + ], + "type": "object", + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": { + "User_example_autogenerated": { + "email": "user@example.com", + "name": "John Doe", + "role": "user", + }, + }, + "userSpecifiedExamples": {}, + }, + }, + "UserRole": { + "autogeneratedExamples": [], + "availability": undefined, + "docs": undefined, + "encoding": undefined, + "inline": false, + "name": { + "displayName": undefined, + "fernFilepath": { + "allParts": [], + "file": undefined, + "packagePath": [], + }, + "name": { + "camelCase": { + "safeName": "userRole", + "unsafeName": "userRole", + }, + "originalName": "UserRole", + "pascalCase": { + "safeName": "UserRole", + "unsafeName": "UserRole", + }, + "screamingSnakeCase": { + "safeName": "USER_ROLE", + "unsafeName": "USER_ROLE", + }, + "snakeCase": { + "safeName": "user_role", + "unsafeName": "user_role", + }, + }, + "typeId": "UserRole", + }, + "referencedTypes": Set {}, + "shape": { + "_visit": [Function], + "default": undefined, + "type": "enum", + "values": [ + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "user", + "unsafeName": "user", + }, + "originalName": "user", + "pascalCase": { + "safeName": "User", + "unsafeName": "User", + }, + "screamingSnakeCase": { + "safeName": "USER", + "unsafeName": "USER", + }, + "snakeCase": { + "safeName": "user", + "unsafeName": "user", + }, + }, + "wireValue": "user", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "admin", + "unsafeName": "admin", + }, + "originalName": "admin", + "pascalCase": { + "safeName": "Admin", + "unsafeName": "Admin", + }, + "screamingSnakeCase": { + "safeName": "ADMIN", + "unsafeName": "ADMIN", + }, + "snakeCase": { + "safeName": "admin", + "unsafeName": "admin", + }, + }, + "wireValue": "admin", + }, + }, + { + "availability": undefined, + "casing": undefined, + "docs": undefined, + "name": { + "name": { + "camelCase": { + "safeName": "moderator", + "unsafeName": "moderator", + }, + "originalName": "moderator", + "pascalCase": { + "safeName": "Moderator", + "unsafeName": "Moderator", + }, + "screamingSnakeCase": { + "safeName": "MODERATOR", + "unsafeName": "MODERATOR", + }, + "snakeCase": { + "safeName": "moderator", + "unsafeName": "moderator", + }, + }, + "wireValue": "moderator", + }, + }, + ], + }, + "source": undefined, + "userProvidedExamples": [], + "v2Examples": { + "autogeneratedExamples": {}, + "userSpecifiedExamples": { + "UserRole_example_0": "user", + }, + }, + }, + }, + "variables": [], + "webhookGroups": {}, + "websocketChannels": undefined, +} \ No newline at end of file diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/ai-examples-issue/generators.yml b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/ai-examples-issue/generators.yml new file mode 100644 index 000000000000..bc9a333a3500 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/ai-examples-issue/generators.yml @@ -0,0 +1,3 @@ +api: + specs: + - openapi: openapi.yml diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/ai-examples-issue/openapi.yml b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/ai-examples-issue/openapi.yml new file mode 100644 index 000000000000..063b6261f88b --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/ai-examples-issue/openapi.yml @@ -0,0 +1,96 @@ +openapi: 3.1.0 +info: + title: AI Examples Issue Test + version: 1.0.0 +paths: + /plant: + post: + operationId: addPlant + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/Plant" + responses: + "200": + description: Plant successfully added + content: + application/json: + schema: + $ref: "#/components/schemas/PlantResponse" + examples: + plantCreated: + summary: Successfully created plant + value: + responseType: "detailed" + id: "550e8400-e29b-41d4-a716-446655440002" + name: "Kenny" + status: "available" + tags: ["normal_delivery"] + category: "Indoor" + price: 24.99 + inventory: 50 + # Note: nullable properties like description omitted +components: + schemas: + Plant: + type: object + required: + - name + - status + properties: + name: + type: string + example: "Fiddle Leaf Fig" + category: + type: string + example: "Indoor Plants" + tags: + type: array + items: + type: string + example: ["leafy", "green"] + status: + type: string + enum: [available, pending, sold] + price: + type: number + format: float + example: 29.99 + description: + type: string + nullable: true + example: "A beautiful indoor plant" + PlantResponse: + type: object + properties: + responseType: + type: string + enum: [basic, detailed] + id: + type: string + example: "550e8400-e29b-41d4-a716-446655440000" + name: + type: string + example: "Fiddle Leaf Fig" + status: + type: string + enum: [available, pending, sold] + tags: + type: array + items: + type: string + category: + type: string + nullable: true + price: + type: number + format: float + nullable: true + inventory: + type: integer + nullable: true + description: + type: string + nullable: true diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/autogen-examples-test/ai_examples_override.yml b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/autogen-examples-test/ai_examples_override.yml new file mode 100644 index 000000000000..03b54744c296 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/autogen-examples-test/ai_examples_override.yml @@ -0,0 +1,36 @@ +# This file simulates what the AI enhancement system would generate +# when it processes endpoints with only autogenerated examples +paths: + "/garden": + post: + x-fern-examples: + createGarden: + name: "Creating a beautiful garden" + description: "Example showing how to create a garden with AI-enhanced details" + request: + name: "Herb Garden" + size: "medium" + response: + status-code: 201 + body: + id: "garden-herb-001" + name: "Herb Garden" + size: "medium" + plants: ["basil-001", "rosemary-002", "thyme-003"] + established: "2024-03-15" + "/plant/{plantId}": + get: + x-fern-examples: + getPlant: + name: "Retrieving plant information" + description: "Example showing how to get detailed plant information" + path-parameters: + plantId: "rose-garden-001" + response: + status-code: 200 + body: + id: "rose-garden-001" + name: "Climbing Rose" + status: "flowering" + description: "A beautiful red climbing rose in full bloom" + location: "South Garden Wall" diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/autogen-examples-test/generators.yml b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/autogen-examples-test/generators.yml new file mode 100644 index 000000000000..bc9a333a3500 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/autogen-examples-test/generators.yml @@ -0,0 +1,3 @@ +api: + specs: + - openapi: openapi.yml diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/autogen-examples-test/openapi.yml b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/autogen-examples-test/openapi.yml new file mode 100644 index 000000000000..f3f63fee777a --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/autogen-examples-test/openapi.yml @@ -0,0 +1,90 @@ +openapi: 3.1.0 +info: + title: Autogenerated Examples Test + version: 1.0.0 +paths: + /plant/{plantId}: + get: + operationId: getPlant + parameters: + - name: plantId + in: path + required: true + schema: + type: string + responses: + "200": + description: Plant retrieved successfully + content: + application/json: + schema: + $ref: "#/components/schemas/Plant" + # No examples - this will get autogenerated examples + /garden: + post: + operationId: createGarden + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/Garden" + responses: + "201": + description: Garden created + content: + application/json: + schema: + $ref: "#/components/schemas/Garden" + # No examples - this will get autogenerated examples +components: + schemas: + Plant: + type: object + required: + - id + - name + - status + properties: + id: + type: string + example: "plant-123" + name: + type: string + example: "Rose" + status: + type: string + enum: [healthy, wilting, flowering] + description: + type: string + nullable: true + example: "A beautiful flower" + location: + type: string + nullable: true + example: "Garden bed 1" + Garden: + type: object + required: + - name + - size + properties: + id: + type: string + example: "garden-456" + name: + type: string + example: "Main Garden" + size: + type: string + enum: [small, medium, large] + plants: + type: array + items: + type: string + example: ["plant-1", "plant-2"] + established: + type: string + format: date + nullable: true + example: "2023-01-01" diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/invalid-human-example-test/generators.yml b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/invalid-human-example-test/generators.yml new file mode 100644 index 000000000000..bc9a333a3500 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/invalid-human-example-test/generators.yml @@ -0,0 +1,3 @@ +api: + specs: + - openapi: openapi.yml diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/invalid-human-example-test/openapi.yml b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/invalid-human-example-test/openapi.yml new file mode 100644 index 000000000000..c4a7d33676f4 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/invalid-human-example-test/openapi.yml @@ -0,0 +1,54 @@ +openapi: 3.1.0 +info: + title: Invalid Human Example Test + version: 1.0.0 +paths: + /user: + post: + operationId: createUser + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/User" + responses: + "201": + description: User created + content: + application/json: + schema: + $ref: "#/components/schemas/User" + examples: + invalidUserExample: + summary: "Human example with invalid properties" + value: + id: "user-123" + email: "test@example.com" + name: "John Doe" + role: "admin" + # These properties DO NOT EXIST in the schema - testing if validation catches them + invalidProperty: "this should not be here" + anotherBadField: 12345 + # Missing required property: age (if it was required) +components: + schemas: + User: + type: object + required: + - id + - email + - name + - role + properties: + id: + type: string + email: + type: string + format: email + name: + type: string + role: + type: string + enum: [user, admin] + # Note: No invalidProperty or anotherBadField defined diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/mixed-examples-test/ai_examples_override.yml b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/mixed-examples-test/ai_examples_override.yml new file mode 100644 index 000000000000..15091ca6dad4 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/mixed-examples-test/ai_examples_override.yml @@ -0,0 +1,44 @@ +# This file contains AI overrides for BOTH endpoints: +# 1. POST /user - which ALSO has human examples in the OpenAPI spec +# 2. GET /product/{productId} - which only has autogenerated examples +# +# This tests the conflict resolution between AI overrides and human examples + +paths: + "/user": + post: + x-fern-examples: + createUserAI: + name: "AI Enhanced User Creation" + description: "Example generated by AI enhancement system" + request: + email: "bot@example.com" + name: "AI Bot User" + role: "user" + bio: "This user was created through AI enhancement" + response: + status-code: 201 + body: + id: "ai-user-001" + email: "bot@example.com" + name: "AI Bot User" + role: "user" + bio: "This user was created through AI enhancement" + avatar: "https://ai-avatars.com/bot-001.jpg" + + "/product/{productId}": + get: + x-fern-examples: + getProductAI: + name: "AI Enhanced Product Retrieval" + description: "Example showing how to get product information with AI-generated data" + path-parameters: + productId: "premium-laptop-001" + response: + status-code: 200 + body: + id: "premium-laptop-001" + name: "MacBook Pro 16-inch" + price: 2399.99 + description: "High-performance laptop for professional developers and creators" + category: "Computers" diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/mixed-examples-test/generators.yml b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/mixed-examples-test/generators.yml new file mode 100644 index 000000000000..bc9a333a3500 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/mixed-examples-test/generators.yml @@ -0,0 +1,3 @@ +api: + specs: + - openapi: openapi.yml diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/mixed-examples-test/openapi.yml b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/mixed-examples-test/openapi.yml new file mode 100644 index 000000000000..73823accc785 --- /dev/null +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/fixtures/mixed-examples-test/openapi.yml @@ -0,0 +1,105 @@ +openapi: 3.1.0 +info: + title: Mixed Examples Test - AI Overrides vs Human Examples + version: 1.0.0 +paths: + /user: + post: + operationId: createUser + requestBody: + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/User" + responses: + "201": + description: User created successfully + content: + application/json: + schema: + $ref: "#/components/schemas/User" + examples: + userCreated: + summary: Successfully created user + description: Example showing a real user creation + value: + id: "user-42" + email: "alice@example.com" + name: "Alice Johnson" + role: "admin" + # Note: nullable fields like 'bio' omitted - this should NOT trigger AI enhancement + /product/{productId}: + get: + operationId: getProduct + parameters: + - name: productId + in: path + required: true + schema: + type: string + responses: + "200": + description: Product retrieved + content: + application/json: + schema: + $ref: "#/components/schemas/Product" + # No examples here - this endpoint will get autogenerated examples + # BUT we'll have AI overrides for it too +components: + schemas: + User: + type: object + required: + - email + - name + - role + properties: + id: + type: string + example: "user-123" + email: + type: string + format: email + example: "user@example.com" + name: + type: string + example: "John Doe" + role: + type: string + enum: [user, admin, moderator] + example: "user" + bio: + type: string + nullable: true + example: "Software engineer passionate about APIs" + avatar: + type: string + nullable: true + example: "https://example.com/avatar.jpg" + Product: + type: object + required: + - id + - name + - price + properties: + id: + type: string + example: "prod-456" + name: + type: string + example: "Widget" + price: + type: number + format: float + example: 29.99 + description: + type: string + nullable: true + example: "A useful widget" + category: + type: string + nullable: true + example: "Electronics" diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/openapi-from-flag.test.ts b/packages/cli/register/src/ir-to-fdr-converter/__test__/openapi-from-flag.test.ts index 7c52c5b1725a..a2a73d93de11 100644 --- a/packages/cli/register/src/ir-to-fdr-converter/__test__/openapi-from-flag.test.ts +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/openapi-from-flag.test.ts @@ -1360,6 +1360,540 @@ describe("OpenAPI v3 Parser Pipeline (--from-openapi flag)", () => { await expect(intermediateRepresentation).toMatchFileSnapshot("__snapshots__/anyOf-titled-ir.snap"); }); + it("should distinguish human vs AI-generated examples - detect OpenAPI examples with nullable properties", async () => { + // Test case reproducing the issue where OpenAPI examples with omitted nullable properties + // get identified as AI-generated because Fern fills in missing nullable properties with placeholder values + const context = createMockTaskContext(); + const workspace = await loadAPIWorkspace({ + absolutePathToWorkspace: join( + AbsoluteFilePath.of(__dirname), + RelativeFilePath.of("fixtures/ai-examples-issue") + ), + context, + cliVersion: "0.0.0", + workspaceName: "ai-examples-issue" + }); + + expect(workspace.didSucceed).toBe(true); + assert(workspace.didSucceed); + + if (!(workspace.workspace instanceof OSSWorkspace)) { + throw new Error( + `Expected OSSWorkspace for OpenAPI processing, got ${workspace.workspace.constructor.name}` + ); + } + + const intermediateRepresentation = await workspace.workspace.getIntermediateRepresentation({ + context, + audiences: { type: "all" }, + enableUniqueErrorsPerEndpoint: true, + generateV1Examples: true, // Enable v1 examples to see if examples are generated + logWarnings: true + }); + + // Convert to FDR format (complete pipeline) + const fdrApiDefinition = await convertIrToFdrApi({ + ir: intermediateRepresentation, + snippetsConfig: { + typescriptSdk: undefined, + pythonSdk: undefined, + javaSdk: undefined, + rubySdk: undefined, + goSdk: undefined, + csharpSdk: undefined, + phpSdk: undefined, + swiftSdk: undefined, + rustSdk: undefined + }, + playgroundConfig: { + oauth: true + }, + context + }); + + // Validate that the OpenAPI example was parsed + expect(intermediateRepresentation.services).toBeDefined(); + const services = Object.values(intermediateRepresentation.services); + expect(services.length).toBeGreaterThan(0); + + const service = services[0]; + expect(service).toBeDefined(); + if (service && typeof service === "object" && "endpoints" in service) { + const serviceWithEndpoints = service as { + endpoints?: Array<{ + userSpecifiedExamples?: Array<{ example?: { name?: string; description?: string } }>; + autogeneratedExamples?: Array; + }>; + }; + expect(serviceWithEndpoints.endpoints).toBeDefined(); + expect(serviceWithEndpoints.endpoints?.length).toBe(1); + + const addPlantEndpoint = serviceWithEndpoints.endpoints?.[0]; + expect(addPlantEndpoint).toBeDefined(); + + // CRITICAL: Check if the human-provided OpenAPI example is properly classified + // The example has meaningful values (id: "550e8400-e29b-41d4-a716-446655440002", price: 24.99) + // but omits nullable properties like 'description' + + console.log("=== DEBUGGING EXAMPLE CLASSIFICATION ==="); + // biome-ignore lint/suspicious/noExplicitAny: test code accessing dynamic IR properties + const endpointAny = addPlantEndpoint as any; + console.log( + "Endpoint structure:", + JSON.stringify( + { + id: endpointAny?.id, + name: endpointAny?.name, + method: endpointAny?.method, + examples: endpointAny?.examples?.length || 0, + userSpecifiedExamples: endpointAny?.userSpecifiedExamples?.length || 0, + autogeneratedExamples: endpointAny?.autogeneratedExamples?.length || 0, + v2Examples: endpointAny?.v2Examples + }, + null, + 2 + ) + ); + console.log("User specified examples:", JSON.stringify(endpointAny?.userSpecifiedExamples, null, 2)); + console.log("Autogenerated examples:", JSON.stringify(endpointAny?.autogeneratedExamples, null, 2)); + console.log("=== END DEBUG ==="); + + // FINDING: The examples are actually in v2Responses, not in the top-level endpoint + // This reveals that the OpenAPI example parsing works correctly and classifies human examples properly + + // CRITICAL FINDING: The system creates BOTH human examples AND autogenerated examples + // This is the root cause of the AI examples override issue + + // 1. Human examples are correctly classified in v2Examples + const hasV2HumanExamples = + endpointAny?.v2Examples?.userSpecifiedExamples && + Object.keys(endpointAny.v2Examples.userSpecifiedExamples).length > 0; + + console.log("✓ v2Examples contains human example:", hasV2HumanExamples); + + if (hasV2HumanExamples && endpointAny.v2Examples?.userSpecifiedExamples) { + const humanExampleKeys = Object.keys(endpointAny.v2Examples.userSpecifiedExamples); + const humanExampleKey = humanExampleKeys[0]; + const humanExample = humanExampleKey + ? endpointAny.v2Examples.userSpecifiedExamples[humanExampleKey] + : undefined; + + expect(humanExample.response?.body?.value?.id).toBe("550e8400-e29b-41d4-a716-446655440002"); + expect(humanExample.response?.body?.value?.price).toBe(24.99); + console.log("✓ Human example has correct specific values"); + } + + // 2. BUT the system also creates autogenerated examples at the endpoint level + const hasAutogenerated = (endpointAny?.autogeneratedExamples?.length || 0) > 0; + console.log("⚠️ System ALSO creates autogenerated examples:", hasAutogenerated); + + if (hasAutogenerated) { + // This is problematic - the autogenerated example contains generic values + // that could trigger the AI enhancement system + const autogenExample = endpointAny?.autogeneratedExamples?.[0]; + console.log("⚠️ Autogenerated example request body:", autogenExample?.example?.request?.jsonExample); + + // Expect the autogenerated example to have generic values (like "name": "name") + expect(autogenExample?.example?.request?.jsonExample?.name).toBe("name"); + } + + // 3. This dual-example situation is the root cause of the AI override issue + // + // ✅ EXPECTED: Our fix should prevent AI enhancement when human examples exist + } + + // Validate FDR structure preserves the human example correctly + expect(fdrApiDefinition.rootPackage).toBeDefined(); + expect(fdrApiDefinition.rootPackage.endpoints).toBeDefined(); + expect(fdrApiDefinition.rootPackage.endpoints.length).toBe(1); + + const fdrEndpoint = fdrApiDefinition.rootPackage.endpoints[0]; + expect(fdrEndpoint).toBeDefined(); + + // The FDR structure will contain both human and autogenerated examples + // This is expected behavior that demonstrates the issue + + // Snapshot the complete output for regression testing + await expect(fdrApiDefinition).toMatchFileSnapshot("__snapshots__/ai-examples-issue-fdr.snap"); + await expect(intermediateRepresentation).toMatchFileSnapshot("__snapshots__/ai-examples-issue-ir.snap"); + }); + + it("should handle autogenerated examples without human examples - demonstrate AI enhancement candidates", async () => { + // Test case for endpoints that have ONLY autogenerated examples + // These should be eligible for AI enhancement processing + const context = createMockTaskContext(); + const workspace = await loadAPIWorkspace({ + absolutePathToWorkspace: join( + AbsoluteFilePath.of(__dirname), + RelativeFilePath.of("fixtures/autogen-examples-test") + ), + context, + cliVersion: "0.0.0", + workspaceName: "autogen-examples-test" + }); + + expect(workspace.didSucceed).toBe(true); + assert(workspace.didSucceed); + + if (!(workspace.workspace instanceof OSSWorkspace)) { + throw new Error( + `Expected OSSWorkspace for OpenAPI processing, got ${workspace.workspace.constructor.name}` + ); + } + + const intermediateRepresentation = await workspace.workspace.getIntermediateRepresentation({ + context, + audiences: { type: "all" }, + enableUniqueErrorsPerEndpoint: true, + generateV1Examples: true, + logWarnings: false + }); + + // Convert to FDR format (complete pipeline) + const fdrApiDefinition = await convertIrToFdrApi({ + ir: intermediateRepresentation, + snippetsConfig: { + typescriptSdk: undefined, + pythonSdk: undefined, + javaSdk: undefined, + rubySdk: undefined, + goSdk: undefined, + csharpSdk: undefined, + phpSdk: undefined, + swiftSdk: undefined, + rustSdk: undefined + }, + playgroundConfig: { + oauth: true + }, + context + }); + + // Validate the autogenerated examples structure + const services = Object.values(intermediateRepresentation.services); + expect(services.length).toBeGreaterThan(0); + + const service = services[0]; + expect(service).toBeDefined(); + + if (service && typeof service === "object" && "endpoints" in service) { + // biome-ignore lint/suspicious/noExplicitAny: test code accessing dynamic IR properties + const serviceWithEndpoints = service as { endpoints?: Array }; + expect(serviceWithEndpoints.endpoints).toBeDefined(); + expect(serviceWithEndpoints.endpoints?.length).toBe(2); // GET /plant/{plantId} and POST /garden + + console.log("=== AUTOGENERATED EXAMPLES ANALYSIS ==="); + + serviceWithEndpoints.endpoints?.forEach((endpoint, index) => { + // biome-ignore lint/suspicious/noExplicitAny: test code accessing dynamic IR properties + const endpointAny = endpoint as any; + console.log( + `\nEndpoint ${index + 1}: ${endpointAny?.method} ${endpointAny?.fullPath?.head || endpointAny?.path}` + ); + + // Check for autogenerated examples + const hasAutogenerated = (endpointAny?.autogeneratedExamples?.length || 0) > 0; + console.log( + ` Autogenerated examples: ${hasAutogenerated ? endpointAny.autogeneratedExamples.length : 0}` + ); + + // Check for human examples (should be none since no examples in OpenAPI spec) + const hasV2HumanExamples = + endpointAny?.v2Examples?.userSpecifiedExamples && + Object.keys(endpointAny.v2Examples.userSpecifiedExamples).length > 0; + console.log( + ` Human examples (v2): ${hasV2HumanExamples ? Object.keys(endpointAny.v2Examples.userSpecifiedExamples).length : 0}` + ); + + // This endpoint should be eligible for AI enhancement + const shouldBeProcessedByAI = hasAutogenerated && !hasV2HumanExamples; + console.log(` ✅ Should be AI enhanced: ${shouldBeProcessedByAI}`); + + // Show autogenerated example structure to see generic values + if (hasAutogenerated) { + const firstAutogenExample = endpointAny.autogeneratedExamples[0]; + const requestExample = firstAutogenExample?.example?.request?.jsonExample; + const responseExample = firstAutogenExample?.example?.response?.value?.jsonExample; + + console.log(` Request example:`, JSON.stringify(requestExample, null, 4)); + console.log(` Response example:`, JSON.stringify(responseExample, null, 4)); + + // Verify these have generic values that would trigger AI enhancement + if (requestExample) { + // Look for generic string values like "name" or "string" + const hasGenericStrings = + JSON.stringify(requestExample).includes('"name"') || + JSON.stringify(requestExample).includes('"string"'); + console.log(` Contains generic values: ${hasGenericStrings}`); + } + } + + expect(shouldBeProcessedByAI).toBe(true); + }); + + console.log("=== END AUTOGENERATED ANALYSIS ==="); + } + + // Validate FDR structure contains autogenerated examples + expect(fdrApiDefinition.rootPackage).toBeDefined(); + expect(fdrApiDefinition.rootPackage.endpoints).toBeDefined(); + expect(fdrApiDefinition.rootPackage.endpoints.length).toBe(2); + + // Snapshot the complete output for regression testing + await expect(fdrApiDefinition).toMatchFileSnapshot("__snapshots__/autogen-examples-test-fdr.snap"); + await expect(intermediateRepresentation).toMatchFileSnapshot("__snapshots__/autogen-examples-test-ir.snap"); + }); + + it("should handle conflict between AI overrides and human examples - precedence and merging behavior", async () => { + // Test case for the critical edge case: what happens when there are BOTH + // AI examples override AND human examples in the same API? + // This tests our precedence and conflict resolution logic + const context = createMockTaskContext(); + const workspace = await loadAPIWorkspace({ + absolutePathToWorkspace: join( + AbsoluteFilePath.of(__dirname), + RelativeFilePath.of("fixtures/mixed-examples-test") + ), + context, + cliVersion: "0.0.0", + workspaceName: "mixed-examples-test" + }); + + expect(workspace.didSucceed).toBe(true); + assert(workspace.didSucceed); + + if (!(workspace.workspace instanceof OSSWorkspace)) { + throw new Error( + `Expected OSSWorkspace for OpenAPI processing, got ${workspace.workspace.constructor.name}` + ); + } + + const intermediateRepresentation = await workspace.workspace.getIntermediateRepresentation({ + context, + audiences: { type: "all" }, + enableUniqueErrorsPerEndpoint: true, + generateV1Examples: true, + logWarnings: false + }); + + // Convert to FDR format (complete pipeline) + const fdrApiDefinition = await convertIrToFdrApi({ + ir: intermediateRepresentation, + snippetsConfig: { + typescriptSdk: undefined, + pythonSdk: undefined, + javaSdk: undefined, + rubySdk: undefined, + goSdk: undefined, + csharpSdk: undefined, + phpSdk: undefined, + swiftSdk: undefined, + rustSdk: undefined + }, + playgroundConfig: { + oauth: true + }, + context + }); + + // Validate the mixed examples structure + const services = Object.values(intermediateRepresentation.services); + expect(services.length).toBeGreaterThan(0); + + const service = services[0]; + expect(service).toBeDefined(); + + if (service && typeof service === "object" && "endpoints" in service) { + // biome-ignore lint/suspicious/noExplicitAny: test code accessing dynamic IR properties + const serviceWithEndpoints = service as { endpoints?: Array }; + expect(serviceWithEndpoints.endpoints).toBeDefined(); + expect(serviceWithEndpoints.endpoints?.length).toBe(2); // POST /user and GET /product/{productId} + + console.log("=== MIXED EXAMPLES CONFLICT ANALYSIS ==="); + + serviceWithEndpoints.endpoints?.forEach((endpoint, index) => { + // biome-ignore lint/suspicious/noExplicitAny: test code accessing dynamic IR properties + const endpointAny = endpoint as any; + const method = endpointAny?.method; + const path = endpointAny?.fullPath?.head || endpointAny?.path; + + console.log(`\nEndpoint ${index + 1}: ${method} ${path}`); + + // Check for human examples (from OpenAPI spec) + const hasV2HumanExamples = + endpointAny?.v2Examples?.userSpecifiedExamples && + Object.keys(endpointAny.v2Examples.userSpecifiedExamples).length > 0; + + // Check for autogenerated examples + const hasAutogenerated = (endpointAny?.autogeneratedExamples?.length || 0) > 0; + + console.log( + ` Human examples (from OpenAPI): ${hasV2HumanExamples ? Object.keys(endpointAny.v2Examples.userSpecifiedExamples).length : 0}` + ); + console.log( + ` Autogenerated examples: ${hasAutogenerated ? endpointAny.autogeneratedExamples.length : 0}` + ); + + if (method === "POST" && path.includes("/user")) { + // POST /user endpoint - has BOTH human examples AND AI overrides + console.log(" 📝 CONFLICT SCENARIO: Human examples + AI overrides present"); + + expect(hasV2HumanExamples).toBe(true); + + if (hasV2HumanExamples) { + const humanExampleKeys = Object.keys(endpointAny.v2Examples.userSpecifiedExamples); + console.log(` Human example keys: ${humanExampleKeys.join(", ")}`); + + // Check if human example has our expected values + const firstKey = humanExampleKeys[0]; + const humanExample = firstKey + ? endpointAny.v2Examples.userSpecifiedExamples[firstKey] + : undefined; + if (humanExample?.response?.body?.value?.email === "alice@example.com") { + console.log(" ✅ Original human example preserved: alice@example.com"); + } + + // Check if AI override example is also present or if it overwrote the human example + const hasAIOverrideExample = humanExampleKeys.some( + (key) => + endpointAny.v2Examples.userSpecifiedExamples[key]?.response?.body?.value?.email === + "bot@example.com" + ); + + if (hasAIOverrideExample) { + console.log(" ⚠️ AI override example ALSO present: bot@example.com"); + console.log(" → Multiple examples coexist"); + } else { + console.log(" ✅ AI override was ignored - human example takes precedence"); + } + + console.log(` Total examples after conflict resolution: ${humanExampleKeys.length}`); + } + + // Our fix should prevent this endpoint from being processed for AI enhancement + const shouldBeProcessedByAI = hasAutogenerated && !hasV2HumanExamples; + console.log(` 🛡️ Should be AI enhanced (our fix): ${shouldBeProcessedByAI}`); + expect(shouldBeProcessedByAI).toBe(false); // Should be FALSE due to our fix + } else if (method === "GET" && path.includes("/product")) { + // GET /product/{productId} endpoint - only autogenerated + AI overrides (no human examples) + console.log(" 🤖 NORMAL SCENARIO: Only autogenerated + AI overrides"); + + expect(hasV2HumanExamples).toBe(false); + expect(hasAutogenerated).toBe(true); + + // This endpoint should be eligible for AI enhancement + const shouldBeProcessedByAI = hasAutogenerated && !hasV2HumanExamples; + console.log(` ✅ Should be AI enhanced: ${shouldBeProcessedByAI}`); + expect(shouldBeProcessedByAI).toBe(true); + + // Check if AI override examples are present + if (hasAutogenerated) { + const firstExample = endpointAny.autogeneratedExamples[0]; + const responseExample = firstExample?.example?.response?.value?.jsonExample; + console.log(` Response example:`, JSON.stringify(responseExample, null, 4)); + } + } + }); + + console.log("=== END MIXED EXAMPLES ANALYSIS ==="); + } + + // Validate FDR structure handles conflicts appropriately + expect(fdrApiDefinition.rootPackage).toBeDefined(); + expect(fdrApiDefinition.rootPackage.endpoints).toBeDefined(); + expect(fdrApiDefinition.rootPackage.endpoints.length).toBe(2); + + // Snapshot the complete output for regression testing + await expect(fdrApiDefinition).toMatchFileSnapshot("__snapshots__/mixed-examples-test-fdr.snap"); + await expect(intermediateRepresentation).toMatchFileSnapshot("__snapshots__/mixed-examples-test-ir.snap"); + }); + + it("should test whether human examples are validated against current schema", async () => { + // Quick test to see if Fern validates human OpenAPI examples against schemas + // This OpenAPI spec has a human example with properties that don't exist in the schema + const context = createMockTaskContext(); + + try { + const workspace = await loadAPIWorkspace({ + absolutePathToWorkspace: join( + AbsoluteFilePath.of(__dirname), + RelativeFilePath.of("fixtures/invalid-human-example-test") + ), + context, + cliVersion: "0.0.0", + workspaceName: "invalid-human-example-test" + }); + + expect(workspace.didSucceed).toBe(true); + assert(workspace.didSucceed); + + if (!(workspace.workspace instanceof OSSWorkspace)) { + throw new Error( + `Expected OSSWorkspace for OpenAPI processing, got ${workspace.workspace.constructor.name}` + ); + } + + const intermediateRepresentation = await workspace.workspace.getIntermediateRepresentation({ + context, + audiences: { type: "all" }, + enableUniqueErrorsPerEndpoint: true, + generateV1Examples: true, + logWarnings: true + }); + + console.log("=== HUMAN EXAMPLE VALIDATION TEST ==="); + + const services = Object.values(intermediateRepresentation.services); + const service = services[0]; + + if (service && typeof service === "object" && "endpoints" in service) { + // biome-ignore lint/suspicious/noExplicitAny: test code accessing dynamic IR properties + const serviceWithEndpoints = service as { endpoints?: Array }; + const endpoint = serviceWithEndpoints.endpoints?.[0]; + // biome-ignore lint/suspicious/noExplicitAny: test code accessing dynamic IR properties + const endpointAny = endpoint as any; + + // Check if the invalid human example made it through + const hasV2HumanExamples = + endpointAny?.v2Examples?.userSpecifiedExamples && + Object.keys(endpointAny.v2Examples.userSpecifiedExamples).length > 0; + + console.log(`Human examples present: ${hasV2HumanExamples}`); + + if (hasV2HumanExamples) { + // biome-ignore lint/suspicious/noExplicitAny: test code accessing dynamic IR properties + const humanExample = Object.values(endpointAny.v2Examples.userSpecifiedExamples)[0] as any; + const responseBody = humanExample?.response?.body?.value; + + console.log("Human example response body:", JSON.stringify(responseBody, null, 2)); + + // Check if invalid properties were preserved or filtered out + const hasInvalidProperties = + responseBody?.invalidProperty !== undefined || responseBody?.anotherBadField !== undefined; + + console.log(`Invalid properties preserved: ${hasInvalidProperties}`); + + if (hasInvalidProperties) { + console.log("🚨 Fern does NOT validate human examples against schema!"); + console.log(" Invalid properties are preserved in the IR"); + } else { + console.log("✅ Fern validates and filters human examples against schema"); + } + } else { + console.log("❓ No human examples found - may have been filtered entirely"); + } + } + + console.log("=== END VALIDATION TEST ==="); + } catch (error) { + console.log("🚨 Loading failed - validation may have caught invalid examples:"); + console.log(error); + + // If loading failed, it might be due to validation + expect(error).toBeDefined(); + } + }); + it("should handle OpenAPI with webhook responses", async () => { const context = createMockTaskContext(); const workspace = await loadAPIWorkspace({