import {z} from 'zod' export type GetApiAssembliesDDidWvmWvmidEEidFeaturespecsArgs = {did: string, wvm: string, wvmid: string, eid: string}; export type GetApiAssembliesDDidWvmWvmidEEidFeaturespecsOptions = {baseUrl?: string | undefined, OAuth2?: string | undefined, BasicAuth?: {username: string, password: string} | undefined, fetch?: typeof fetch | undefined}; export const gBTParameterLibraryRelationType = z.enum(["DEFAULT", "IGNORE_LIBRARY_VALUES", "UNKNOWN"]); export const bTMParameter1 = z.object({btType: z.string().optional(), importMicroversion: z.string().optional(), libraryRelationType: gBTParameterLibraryRelationType.optional(), nodeId: z.string().optional(), parameterId: z.string().optional(), parameterName: z.string().optional(), valueString: z.string().optional()}); export const gBTQuantityType = z.enum(["UNKNOWN", "INTEGER", "REAL", "LENGTH", "ANGLE", "MASS", "TIME", "TEMPERATURE", "CURRENT", "ANYTHING", "ANYTHING_WITH_UNITS", "FORCE", "PRESSURE", "MOMENT", "ACCELERATION", "ANGULAR_VELOCITY", "ENERGY", "AREA", "VOLUME", "BOOLEAN", "STRING", "DENSITY", "FREQUENCY"]); export const gBTUIHint = z.enum(["OPPOSITE_DIRECTION", "ALWAYS_HIDDEN", "SHOW_CREATE_SELECTION", "CONTROL_VISIBILITY", "NO_PREVIEW_PROVIDED", "REMEMBER_PREVIOUS_VALUE", "DISPLAY_SHORT", "ALLOW_FEATURE_SELECTION", "MATE_CONNECTOR_AXIS_TYPE", "PRIMARY_AXIS", "SHOW_EXPRESSION", "OPPOSITE_DIRECTION_CIRCULAR", "SHOW_LABEL", "HORIZONTAL_ENUM", "UNCONFIGURABLE", "MATCH_LAST_ARRAY_ITEM", "COLLAPSE_ARRAY_ITEMS", "INITIAL_FOCUS_ON_EDIT", "INITIAL_FOCUS", "DISPLAY_CURRENT_VALUE_ONLY", "READ_ONLY", "PREVENT_CREATING_NEW_MATE_CONNECTORS", "FIRST_IN_ROW", "ALLOW_QUERY_ORDER", "PREVENT_ARRAY_REORDER", "VARIABLE_NAME", "FOCUS_INNER_QUERY", "SHOW_TOLERANCE", "ALLOW_ARRAY_FOCUS", "SHOW_INLINE_CONFIG_INPUTS", "FOCUS_ON_VISIBLE", "CAN_BE_TOLERANT", "CAN_BE_TOLERANT_DIAMETER", "PLUS_MINUS", "ALWAYS_USE_DEPENDENCIES", "NO_QUERY_VARIABLE", "ALLOW_FLAT_SKETCH_SELECTION", "QUERY_VARIABLE_NAME", "HIDE_LABEL", "UNKNOWN"]); export const bTParameterVisibilityCondition177 = z.object({alwaysShown: z.boolean().optional(), btType: z.string().optional(), selfOrChildAlwaysVisible: z.boolean().optional()}); export const bTParameterSpec6 = z.object({additionalLocalizedStrings: z.number().int().optional(), btType: z.string().optional(), columnName: z.string().optional(), defaultValue: bTMParameter1.optional(), enumOptions: z.array(z.string()).optional(), iconUri: z.string().optional(), localizableName: z.string().optional(), localizedName: z.string().optional(), parameterDescription: z.string().optional(), parameterId: z.string().optional(), parameterName: z.string().optional(), quantityType: gBTQuantityType.optional(), stringsToLocalize: z.array(z.string()).optional(), uiHint: z.string().optional(), uiHints: z.array(gBTUIHint).optional(), visibilityCondition: bTParameterVisibilityCondition177.optional()}); export const bTEditingLogic2350 = z.object({btType: z.string().optional(), functionName: z.string().optional(), wantsClickedButton: z.boolean().optional(), wantsHiddenBodies: z.boolean().optional(), wantsIsCreating: z.boolean().optional(), wantsLibraryInfo: z.boolean().optional(), wantsSpecifiedParameters: z.boolean().optional()}); export const bTParameterGroupSpec3469 = z.object({additionalLocalizedStrings: z.number().int().optional(), btType: z.string().optional(), collapsedByDefault: z.boolean().optional(), drivingParameterId: z.string().optional(), groupId: z.string().optional(), groupName: z.string().optional(), groupOrParameterIds: z.array(z.string()).optional(), localizableName: z.string().optional(), localizedName: z.string().optional(), stringsToLocalize: z.array(z.string()).optional()}); export const gBTPDefinitionType = z.enum(["FUNCTION", "PREDICATE", "CONSTANT", "ENUM", "USER_TYPE", "FEATURE_DEFINITION", "FILE_HEADER", "UNDOCUMENTABLE", "CONST_LAMBDA", "OPERATOR", "UNKNOWN"]); export const bTPSpace10 = z.object({btType: z.string().optional(), lines: z.array(z.string()).optional(), nodeId: z.string().optional(), text: z.string().optional()}); export const bTPNode7 = z.object({atomic: z.boolean().optional(), btType: z.string().optional(), documentationType: gBTPDefinitionType.optional(), endSourceLocation: z.number().int().optional(), nodeId: z.string().optional(), shortDescriptor: z.string().optional(), spaceAfter: bTPSpace10.optional(), spaceBefore: bTPSpace10.optional(), spaceDefault: z.boolean().optional(), startSourceLocation: z.number().int().optional()}); export const bTDocumentVersionElementIds1897 = z.object({btType: z.string().optional(), documentId: z.string().optional(), elementId: z.string().optional(), versionId: z.string().optional()}); export const bTObjectId = z.object({empty: z.boolean().optional()}); export const bTLocationInfo226: z.ZodType = z.object({btType: z.string().optional(), character: z.number().int().optional(), column: z.number().int().optional(), document: z.string().optional(), elementMicroversion: z.string().optional(), endCharacter: z.number().int().optional(), endColumn: z.number().int().optional(), endLine: z.number().int().optional(), fromNode: bTPNode7.optional(), fromTemplate: z.lazy(() => bTLocationInfo226.optional()), languageVersion: z.number().int().optional(), line: z.number().int().optional(), moduleIds: bTDocumentVersionElementIds1897.optional(), nodeId: z.string().optional(), parseNodeId: z.string().optional(), parseNodeIdRaw: bTObjectId.optional(), topLevel: z.string().optional(), version: z.string().optional()}); export const bTFeatureSpec129 = z.object({additionalLocalizedStrings: z.number().int().optional(), allParameters: z.array(bTParameterSpec6).optional(), btType: z.string().optional(), computedPartPropertySpec: z.boolean().optional(), descriptionImageUri: z.string().optional(), editingLogic: bTEditingLogic2350.optional(), featureNameTemplate: z.string().optional(), featureType: z.string().optional(), featureTypeDescription: z.string().optional(), featureTypeName: z.string().optional(), filterSelectors: z.array(z.string()).optional(), fullFeatureType: z.string().optional(), groups: z.array(bTParameterGroupSpec3469).optional(), iconUri: z.string().optional(), languageVersion: z.number().int().optional(), linkedLocationName: z.string().optional(), localizableName: z.string().optional(), localizedName: z.string().optional(), locationInfos: z.array(bTLocationInfo226).optional(), manipulatorChangeFunction: z.string().optional(), namespace: z.string().optional(), namespaceIncludingEnums: z.string().optional(), namespaceTheSource: z.boolean().optional(), parameterIdToSpec: z.record(z.string(), bTParameterSpec6).optional(), parameterLibraryDefinitionIds: z.array(z.string()).optional(), parameters: z.array(bTParameterSpec6).optional(), signature: z.string().optional(), sourceLocation: bTLocationInfo226.optional(), sourceMicroversionId: z.string().optional(), stringsToLocalize: z.array(z.string()).optional(), tableSpec: z.boolean().optional(), toleranceSpec: z.boolean().optional(), tooltipTemplate: z.string().optional(), uiHints: z.array(gBTUIHint).optional(), variableStudioReferenceSpec: z.boolean().optional()}); export const bTFeatureSpecsResponse664 = z.object({btType: z.string().optional(), featureSpecs: z.array(bTFeatureSpec129).optional(), libraryVersion: z.number().int().optional(), microversionSkew: z.boolean().optional(), rejectMicroversionSkew: z.boolean().optional(), serializationVersion: z.string().optional(), sourceMicroversion: z.string().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get the feature spec definitions for an assembly. * * GET /assemblies/d/{did}/{wvm}/{wvmid}/e/{eid}/featurespecs */ export const getApiAssembliesDDidWvmWvmidEEidFeaturespecs = async (args: GetApiAssembliesDDidWvmWvmidEEidFeaturespecsArgs, options?: GetApiAssembliesDDidWvmWvmidEEidFeaturespecsOptions) => { const {baseUrl = "https://api.onshape.com/api/v17", fetch: fetchFn = fetch, OAuth2, BasicAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json;charset=UTF-8; qs=0.09") if (OAuth2 !== undefined) headers.set('authorization', `Bearer ${OAuth2}`) if (BasicAuth !== undefined) headers.set('authorization', `Basic ${btoa(`${BasicAuth.username}:${BasicAuth.password}`)}`) const url = `${baseUrl.replace(/\/+$/, '')}/assemblies/d/${encodeURIComponent(String(args.did))}/${encodeURIComponent(String(args.wvm))}/${encodeURIComponent(String(args.wvmid))}/e/${encodeURIComponent(String(args.eid))}/featurespecs${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(bTFeatureSpecsResponse664, await res.json()) };