\n
\n
\n
As you can see - in the request I've setup - the query parm's name is 'attribute' - I woudl like some way to parameterize this so I can say do a GET and return a record then do a property transfer grabbing the json node name rather than just the node value and populate the query parameter's NAME as well as the VALUE.
\n\n
If I can't parameterize this - it means a lot of hardcoding requests in the projects section - and that seems an awfully inefficient way of doing things.
\n\n
I hope Ive explained what I mean clearly!
\n\n
I'm totally stumped and don't know if ReadyAPI! actually does include a facility for what I need.
\n\n
thanks to all!
\n\n
richie
","body@stringLength":"2237","rawBody":"Hey,
\n\n
I have a number of GET requests with a number of query parameters that emulate an SQL query filter.
\n\n
Essentially I have 4 namespaces (databases) with multiple datasets (tables) and my GET request retrieves this info - but there are a number of additional query parameter functionality available to allow the user to filter the GET accordingly.
\n\n
the following is an example of one of the possible requests:
\n\n
GET --> /api/1/{namespace}/{dataset}?attributename=value\n
\n
The above query would equate to the following in SQL
\n\n
select * from database.table where attributename = value;\n
Now this 'attributename' can be ANY field in the table - I want to be able to parameterize this 'attributename' - but I've only ever parameterized query parm values in SoapUI - not the actual parm names.
\n\n
Please see the image to provide a bit more clarity
\n\n
\n
\n
As you can see - in the request I've setup - the query parm's name is 'attribute' - I woudl like some way to parameterize this so I can say do a GET and return a record then do a property transfer grabbing the json node name rather than just the node value and populate the query parameter's NAME as well as the VALUE.
\n\n
If I can't parameterize this - it means a lot of hardcoding requests in the projects section - and that seems an awfully inefficient way of doing things.
\n\n
I hope Ive explained what I mean clearly!
\n\n
I'm totally stumped and don't know if ReadyAPI! actually does include a facility for what I need.
\n\n
thanks to all!
\n\n
richie
","kudosSumWeight":0,"postTime":"2018-12-13T12:57:02.839-08:00","images":{"__typename":"AssociatedImageConnection","edges":[{"__typename":"AssociatedImageEdge","cursor":"MjUuMnwyLjF8b3wyNXxfTlZffDE","node":{"__ref":"AssociatedImage:{\"url\":\"https://community.smartbear.com/t5/s/nwkab66374/images/bS0xNzU1MzUtNjIzM2lFRkRGOTdCREU0QUZCMDFE?revision=1\"}"}}],"totalCount":1,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"attachments":{"__typename":"AttachmentConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"tags":{"__typename":"TagConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"timeToRead":1,"currentRevision":{"__ref":"Revision:revision:175535_1"},"latestVersion":null,"metrics":{"__typename":"MessageMetrics","views":3224},"visibilityScope":"PUBLIC","canonicalUrl":null,"seoTitle":null,"seoDescription":null,"isEscalated":null,"placeholder":false,"originalMessageForPlaceholder":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}},"archivalData":null,"searchSnippet":"Hey, \n \n I have a number of GET requests with a number of query parameters that emulate an SQL query filter. \n \n Essentially I have 4 namespaces (databases) with multiple datasets (tabl...","replies":{"__typename":"MessageConnection","edges":[{"__typename":"MessageEdge","cursor":"MjUuMnwyLjF8b3wxMHwxNDowLDM5OjF8MQ","node":{"__ref":"ForumReplyMessage:message:175550"}}],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"customFields":[]},"Conversation:conversation:175535":{"__typename":"Conversation","id":"conversation:175535","solved":true,"topic":{"__ref":"ForumTopicMessage:message:175535"},"lastPostingActivityTime":"2019-01-14T13:41:45.898-08:00","lastPostTime":"2019-01-14T13:41:45.898-08:00","unreadReplyCount":9,"isSubscribed":false},"ModerationData:moderation_data:175535":{"__typename":"ModerationData","id":"moderation_data:175535","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"AssociatedImage:{\"url\":\"https://community.smartbear.com/t5/s/nwkab66374/images/bS0xNzU1MzUtNjIzM2lFRkRGOTdCREU0QUZCMDFE?revision=1\"}":{"__typename":"AssociatedImage","url":"https://community.smartbear.com/t5/s/nwkab66374/images/bS0xNzU1MzUtNjIzM2lFRkRGOTdCREU0QUZCMDFE?revision=1","title":"PARMNAME.PNG","associationType":"BODY","width":988,"height":428,"altText":null},"Revision:revision:175535_1":{"__typename":"Revision","id":"revision:175535_1","lastEditTime":"2018-12-13T12:57:02.839-08:00"},"CachedAsset:theme:customTheme1-1742462838917":{"__typename":"CachedAsset","id":"theme:customTheme1-1742462838917","value":{"id":"customTheme1","animation":{"fast":"150ms","normal":"250ms","slow":"500ms","slowest":"750ms","function":"cubic-bezier(0.07, 0.91, 0.51, 1)","__typename":"AnimationThemeSettings"},"avatar":{"borderRadius":"50%","collections":["default"],"__typename":"AvatarThemeSettings"},"basics":{"browserIcon":{"imageAssetName":"Favicon-1702330027750.png","imageLastModified":"1702330030805","__typename":"ThemeAsset"},"customerLogo":{"imageAssetName":"SmartBear_Community_1-1740580807109.png","imageLastModified":"1740580811989","__typename":"ThemeAsset"},"maximumWidthOfPageContent":"1200px","oneColumnNarrowWidth":"800px","gridGutterWidthMd":"30px","gridGutterWidthXs":"10px","pageWidthStyle":"WIDTH_OF_BROWSER","__typename":"BasicsThemeSettings"},"buttons":{"borderRadiusSm":"4px","borderRadius":"4px","borderRadiusLg":"5px","paddingY":"5px","paddingYLg":"7px","paddingYHero":"var(--lia-bs-btn-padding-y-lg)","paddingX":"12px","paddingXLg":"16px","paddingXHero":"60px","fontStyle":"NORMAL","fontWeight":"400","textTransform":"NONE","disabledOpacity":0.5,"primaryTextColor":"var(--lia-bs-white)","primaryTextHoverColor":"var(--lia-bs-white)","primaryTextActiveColor":"var(--lia-bs-white)","primaryBgColor":"var(--lia-bs-primary)","primaryBgHoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.85))","primaryBgActiveColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.7))","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","primaryBorderActive":"1px solid transparent","primaryBorderFocus":"1px solid var(--lia-bs-white)","primaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","secondaryTextColor":"var(--lia-bs-body-color)","secondaryTextHoverColor":"hsl(var(--lia-bs-body-color-h), var(--lia-bs-body-color-s), calc(var(--lia-bs-body-color-l) * 0.95))","secondaryTextActiveColor":"hsl(var(--lia-bs-body-color-h), var(--lia-bs-body-color-s), calc(var(--lia-bs-body-color-l) * 0.9))","secondaryBgColor":"var(--lia-bs-gray-200)","secondaryBgHoverColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96))","secondaryBgActiveColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92))","secondaryBorder":"1px solid transparent","secondaryBorderHover":"1px solid transparent","secondaryBorderActive":"1px solid transparent","secondaryBorderFocus":"1px solid transparent","secondaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","tertiaryTextColor":"var(--lia-bs-primary)","tertiaryTextHoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.95))","tertiaryTextActiveColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) * 0.9))","tertiaryBgColor":"transparent","tertiaryBgHoverColor":"transparent","tertiaryBgActiveColor":"hsla(var(--lia-bs-body-bg-h), var(--lia-bs-body-bg-s), var(--lia-bs-body-bg-l), 0.04)","tertiaryBorder":"1px solid transparent","tertiaryBorderHover":"1px solid hsla(var(--lia-bs-body-bg-h), var(--lia-bs-body-bg-s), var(--lia-bs-body-bg-l), 0.08)","tertiaryBorderActive":"1px solid transparent","tertiaryBorderFocus":"1px solid transparent","tertiaryBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","destructiveTextColor":"var(--lia-bs-danger)","destructiveTextHoverColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.95))","destructiveTextActiveColor":"hsl(var(--lia-bs-danger-h), var(--lia-bs-danger-s), calc(var(--lia-bs-danger-l) * 0.9))","destructiveBgColor":"var(--lia-bs-gray-200)","destructiveBgHoverColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.96))","destructiveBgActiveColor":"hsl(var(--lia-bs-gray-200-h), var(--lia-bs-gray-200-s), calc(var(--lia-bs-gray-200-l) * 0.92))","destructiveBorder":"1px solid transparent","destructiveBorderHover":"1px solid transparent","destructiveBorderActive":"1px solid transparent","destructiveBorderFocus":"1px solid transparent","destructiveBoxShadowFocus":"0 0 0 1px var(--lia-bs-primary), 0 0 0 4px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","__typename":"ButtonsThemeSettings"},"border":{"color":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","mainContent":"LIGHT","sideContent":"LIGHT","radiusSm":"3px","radius":"5px","radiusLg":"9px","radius50":"100vw","__typename":"BorderThemeSettings"},"boxShadow":{"xs":"0 0 0 1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.08), 0 3px 0 -1px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.08)","sm":"0 2px 4px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.06)","md":"0 5px 15px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.15)","lg":"0 10px 30px hsla(var(--lia-bs-gray-900-h), var(--lia-bs-gray-900-s), var(--lia-bs-gray-900-l), 0.15)","__typename":"BoxShadowThemeSettings"},"cards":{"bgColor":"var(--lia-panel-bg-color)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":"var(--lia-box-shadow-xs)","__typename":"CardsThemeSettings"},"chip":{"maxWidth":"300px","height":"30px","__typename":"ChipThemeSettings"},"coreTypes":{"defaultMessageLinkColor":"var(--lia-bs-link-color)","defaultMessageLinkDecoration":"none","defaultMessageLinkFontStyle":"NORMAL","defaultMessageLinkFontWeight":"600","defaultMessageFontStyle":"NORMAL","defaultMessageFontWeight":"400","forumColor":"#28B1FD","forumFontFamily":"var(--lia-bs-font-family-base)","forumFontWeight":"var(--lia-default-message-font-weight)","forumLineHeight":"var(--lia-bs-line-height-base)","forumFontStyle":"var(--lia-default-message-font-style)","forumMessageLinkColor":"var(--lia-default-message-link-color)","forumMessageLinkDecoration":"var(--lia-default-message-link-decoration)","forumMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","forumMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","forumSolvedColor":"#08B130","blogColor":"#000000","blogFontFamily":"var(--lia-bs-font-family-base)","blogFontWeight":"var(--lia-default-message-font-weight)","blogLineHeight":"1.75","blogFontStyle":"var(--lia-default-message-font-style)","blogMessageLinkColor":"var(--lia-default-message-link-color)","blogMessageLinkDecoration":"var(--lia-default-message-link-decoration)","blogMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","blogMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","tkbColor":"#00537C","tkbFontFamily":"var(--lia-bs-font-family-base)","tkbFontWeight":"var(--lia-default-message-font-weight)","tkbLineHeight":"1.75","tkbFontStyle":"var(--lia-default-message-font-style)","tkbMessageLinkColor":"var(--lia-default-message-link-color)","tkbMessageLinkDecoration":"var(--lia-default-message-link-decoration)","tkbMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","tkbMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaColor":"#4099E2","qandaFontFamily":"var(--lia-bs-font-family-base)","qandaFontWeight":"var(--lia-default-message-font-weight)","qandaLineHeight":"var(--lia-bs-line-height-base)","qandaFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkColor":"var(--lia-default-message-link-color)","qandaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","qandaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","qandaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","qandaSolvedColor":"#3FA023","ideaColor":"#FF8000","ideaFontFamily":"var(--lia-bs-font-family-base)","ideaFontWeight":"var(--lia-default-message-font-weight)","ideaLineHeight":"var(--lia-bs-line-height-base)","ideaFontStyle":"var(--lia-default-message-font-style)","ideaMessageLinkColor":"var(--lia-default-message-link-color)","ideaMessageLinkDecoration":"var(--lia-default-message-link-decoration)","ideaMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","ideaMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","contestColor":"#FCC845","contestFontFamily":"var(--lia-bs-font-family-base)","contestFontWeight":"var(--lia-default-message-font-weight)","contestLineHeight":"var(--lia-bs-line-height-base)","contestFontStyle":"var(--lia-default-message-link-font-style)","contestMessageLinkColor":"var(--lia-default-message-link-color)","contestMessageLinkDecoration":"var(--lia-default-message-link-decoration)","contestMessageLinkFontStyle":"ITALIC","contestMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","occasionColor":"#D13A1F","occasionFontFamily":"var(--lia-bs-font-family-base)","occasionFontWeight":"var(--lia-default-message-font-weight)","occasionLineHeight":"var(--lia-bs-line-height-base)","occasionFontStyle":"var(--lia-default-message-font-style)","occasionMessageLinkColor":"var(--lia-default-message-link-color)","occasionMessageLinkDecoration":"var(--lia-default-message-link-decoration)","occasionMessageLinkFontStyle":"var(--lia-default-message-link-font-style)","occasionMessageLinkFontWeight":"var(--lia-default-message-link-font-weight)","grouphubColor":"#173647","categoryColor":"#949494","communityColor":"#FFFFFF","productColor":"#949494","__typename":"CoreTypesThemeSettings"},"colors":{"black":"#000000","white":"#FFFFFF","gray100":"#F7F7F7","gray200":"#F7F7F7","gray300":"#E8E8E8","gray400":"#D9D9D9","gray500":"#CCCCCC","gray600":"#949494","gray700":"#707070","gray800":"#545454","gray900":"#333333","dark":"#545454","light":"#F7F7F7","primary":"#097EB2","secondary":"#333333","bodyText":"#212429","bodyBg":"#F8FAFB","info":"#097EB2","success":"#08B130","warning":"#FCC844","danger":"#D13A1F","alertSystem":"#FF6600","textMuted":"#707070","highlight":"#FFFCAD","outline":"var(--lia-bs-primary)","custom":["#F8FAFB","#F0F3F5","#E4EAF1","#D8DDE4","#28B1FD","#00537C","#173647","#FF730B"],"__typename":"ColorsThemeSettings"},"divider":{"size":"3px","marginLeft":"4px","marginRight":"4px","borderRadius":"50%","bgColor":"var(--lia-bs-gray-600)","bgColorActive":"var(--lia-bs-gray-600)","__typename":"DividerThemeSettings"},"dropdown":{"fontSize":"var(--lia-bs-font-size-sm)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius-sm)","dividerBg":"var(--lia-bs-gray-300)","itemPaddingY":"5px","itemPaddingX":"20px","headerColor":"var(--lia-bs-gray-700)","__typename":"DropdownThemeSettings"},"email":{"link":{"color":"#0069D4","hoverColor":"#0061c2","decoration":"none","hoverDecoration":"underline","__typename":"EmailLinkSettings"},"border":{"color":"#e4e4e4","__typename":"EmailBorderSettings"},"buttons":{"borderRadiusLg":"5px","paddingXLg":"16px","paddingYLg":"7px","fontWeight":"700","primaryTextColor":"#ffffff","primaryTextHoverColor":"#ffffff","primaryBgColor":"#0069D4","primaryBgHoverColor":"#005cb8","primaryBorder":"1px solid transparent","primaryBorderHover":"1px solid transparent","__typename":"EmailButtonsSettings"},"panel":{"borderRadius":"5px","borderColor":"#e4e4e4","__typename":"EmailPanelSettings"},"__typename":"EmailThemeSettings"},"emoji":{"skinToneDefault":"#ffcd43","skinToneLight":"#fae3c5","skinToneMediumLight":"#e2cfa5","skinToneMedium":"#daa478","skinToneMediumDark":"#a78058","skinToneDark":"#5e4d43","__typename":"EmojiThemeSettings"},"heading":{"color":"var(--lia-bs-body-color)","fontFamily":"Roboto","fontStyle":"NORMAL","fontWeight":"400","h1FontSize":"38px","h2FontSize":"32px","h3FontSize":"28px","h4FontSize":"24px","h5FontSize":"20px","h6FontSize":"16px","lineHeight":"1.3","subHeaderFontSize":"13px","subHeaderFontWeight":"500","h1LetterSpacing":"normal","h2LetterSpacing":"normal","h3LetterSpacing":"normal","h4LetterSpacing":"normal","h5LetterSpacing":"normal","h6LetterSpacing":"normal","subHeaderLetterSpacing":"2px","h1FontWeight":"var(--lia-bs-headings-font-weight)","h2FontWeight":"var(--lia-bs-headings-font-weight)","h3FontWeight":"var(--lia-bs-headings-font-weight)","h4FontWeight":"var(--lia-bs-headings-font-weight)","h5FontWeight":"var(--lia-bs-headings-font-weight)","h6FontWeight":"var(--lia-bs-headings-font-weight)","__typename":"HeadingThemeSettings"},"icons":{"size10":"10px","size12":"12px","size14":"14px","size16":"16px","size20":"20px","size24":"24px","size30":"30px","size40":"40px","size50":"50px","size60":"60px","size80":"80px","size120":"120px","size160":"160px","__typename":"IconsThemeSettings"},"imagePreview":{"bgColor":"var(--lia-bs-gray-900)","titleColor":"var(--lia-bs-white)","controlColor":"var(--lia-bs-white)","controlBgColor":"var(--lia-bs-gray-800)","__typename":"ImagePreviewThemeSettings"},"input":{"borderColor":"var(--lia-bs-gray-600)","disabledColor":"var(--lia-bs-gray-600)","focusBorderColor":"var(--lia-bs-primary)","labelMarginBottom":"10px","btnFontSize":"var(--lia-bs-font-size-sm)","focusBoxShadow":"0 0 0 3px hsla(var(--lia-bs-primary-h), var(--lia-bs-primary-s), var(--lia-bs-primary-l), 0.2)","checkLabelMarginBottom":"2px","checkboxBorderRadius":"3px","borderRadiusSm":"var(--lia-bs-border-radius-sm)","borderRadius":"var(--lia-bs-border-radius)","borderRadiusLg":"var(--lia-bs-border-radius-lg)","formTextMarginTop":"4px","textAreaBorderRadius":"var(--lia-bs-border-radius)","activeFillColor":"var(--lia-bs-primary)","__typename":"InputThemeSettings"},"loading":{"dotDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.2)","dotLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.5)","barDarkColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.06)","barLightColor":"hsla(var(--lia-bs-white-h), var(--lia-bs-white-s), var(--lia-bs-white-l), 0.4)","__typename":"LoadingThemeSettings"},"link":{"color":"var(--lia-bs-primary)","hoverColor":"hsl(var(--lia-bs-primary-h), var(--lia-bs-primary-s), calc(var(--lia-bs-primary-l) - 10%))","decoration":"none","hoverDecoration":"underline","__typename":"LinkThemeSettings"},"listGroup":{"itemPaddingY":"15px","itemPaddingX":"15px","borderColor":"var(--lia-bs-gray-300)","__typename":"ListGroupThemeSettings"},"modal":{"contentTextColor":"var(--lia-bs-body-color)","contentBg":"var(--lia-bs-white)","backgroundBg":"var(--lia-bs-black)","smSize":"440px","mdSize":"760px","lgSize":"1080px","backdropOpacity":0.3,"contentBoxShadowXs":"var(--lia-bs-box-shadow-sm)","contentBoxShadow":"var(--lia-bs-box-shadow)","headerFontWeight":"700","__typename":"ModalThemeSettings"},"navbar":{"position":"FIXED","background":{"attachment":null,"clip":null,"color":"var(--lia-bs-white)","imageAssetName":null,"imageLastModified":"0","origin":null,"position":"CENTER_CENTER","repeat":"NO_REPEAT","size":"COVER","__typename":"BackgroundProps"},"backgroundOpacity":0.8,"paddingTop":"15px","paddingBottom":"15px","borderBottom":"1px solid var(--lia-bs-border-color)","boxShadow":"var(--lia-bs-box-shadow-sm)","brandMarginRight":"30px","brandMarginRightSm":"10px","brandLogoHeight":"30px","linkGap":"10px","linkJustifyContent":"flex-start","linkPaddingY":"5px","linkPaddingX":"10px","linkDropdownPaddingY":"9px","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkColor":"var(--lia-bs-body-color)","linkHoverColor":"var(--lia-bs-primary)","linkFontSize":"var(--lia-bs-font-size-sm)","linkFontStyle":"NORMAL","linkFontWeight":"400","linkTextTransform":"NONE","linkLetterSpacing":"normal","linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkBgColor":"transparent","linkBgHoverColor":"transparent","linkBorder":"none","linkBorderHover":"none","linkBoxShadow":"none","linkBoxShadowHover":"none","linkTextBorderBottom":"none","linkTextBorderBottomHover":"none","dropdownPaddingTop":"10px","dropdownPaddingBottom":"15px","dropdownPaddingX":"10px","dropdownMenuOffset":"2px","dropdownDividerMarginTop":"10px","dropdownDividerMarginBottom":"10px","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","controllerIconColor":"var(--lia-bs-body-color)","controllerIconHoverColor":"var(--lia-bs-body-color)","controllerTextColor":"var(--lia-nav-controller-icon-color)","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","controllerHighlightColor":"hsla(30, 100%, 50%)","controllerHighlightTextColor":"var(--lia-yiq-light)","controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerColor":"var(--lia-nav-controller-icon-color)","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","hamburgerBgColor":"transparent","hamburgerBgHoverColor":"transparent","hamburgerBorder":"none","hamburgerBorderHover":"none","collapseMenuMarginLeft":"20px","collapseMenuDividerBg":"var(--lia-nav-link-color)","collapseMenuDividerOpacity":0.16,"__typename":"NavbarThemeSettings"},"pager":{"textColor":"var(--lia-bs-link-color)","textFontWeight":"var(--lia-font-weight-md)","textFontSize":"var(--lia-bs-font-size-sm)","__typename":"PagerThemeSettings"},"panel":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-bs-border-radius)","borderColor":"var(--lia-bs-border-color)","boxShadow":"none","__typename":"PanelThemeSettings"},"popover":{"arrowHeight":"8px","arrowWidth":"16px","maxWidth":"300px","minWidth":"100px","headerBg":"var(--lia-bs-white)","borderColor":"var(--lia-bs-border-color)","borderRadius":"var(--lia-bs-border-radius)","boxShadow":"0 0.5rem 1rem hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.15)","__typename":"PopoverThemeSettings"},"prism":{"color":"#000000","bgColor":"#f5f2f0","fontFamily":"var(--font-family-monospace)","fontSize":"var(--lia-bs-font-size-base)","fontWeightBold":"var(--lia-bs-font-weight-bold)","fontStyleItalic":"italic","tabSize":2,"highlightColor":"#b3d4fc","commentColor":"#62707e","punctuationColor":"#6f6f6f","namespaceOpacity":"0.7","propColor":"#990055","selectorColor":"#517a00","operatorColor":"#906736","operatorBgColor":"hsla(0, 0%, 100%, 0.5)","keywordColor":"#0076a9","functionColor":"#d3284b","variableColor":"#c14700","__typename":"PrismThemeSettings"},"rte":{"bgColor":"var(--lia-bs-white)","borderRadius":"var(--lia-panel-border-radius)","boxShadow":" var(--lia-panel-box-shadow)","customColor1":"#bfedd2","customColor2":"#fbeeb8","customColor3":"#f8cac6","customColor4":"#eccafa","customColor5":"#c2e0f4","customColor6":"#2dc26b","customColor7":"#f1c40f","customColor8":"#e03e2d","customColor9":"#b96ad9","customColor10":"#3598db","customColor11":"#169179","customColor12":"#e67e23","customColor13":"#ba372a","customColor14":"#843fa1","customColor15":"#236fa1","customColor16":"#ecf0f1","customColor17":"#ced4d9","customColor18":"#95a5a6","customColor19":"#7e8c8d","customColor20":"#34495e","customColor21":"#000000","customColor22":"#ffffff","defaultMessageHeaderMarginTop":"40px","defaultMessageHeaderMarginBottom":"20px","defaultMessageItemMarginTop":"0","defaultMessageItemMarginBottom":"25px","diffAddedColor":"hsla(170, 53%, 51%, 0.4)","diffChangedColor":"hsla(43, 97%, 63%, 0.4)","diffNoneColor":"hsla(0, 0%, 80%, 0.4)","diffRemovedColor":"hsla(9, 74%, 47%, 0.4)","specialMessageHeaderMarginTop":"40px","specialMessageHeaderMarginBottom":"20px","specialMessageItemMarginTop":"0","specialMessageItemMarginBottom":"25px","__typename":"RteThemeSettings"},"tags":{"bgColor":"var(--lia-bs-gray-200)","bgHoverColor":"var(--lia-bs-gray-400)","borderRadius":"var(--lia-bs-border-radius-sm)","color":"var(--lia-bs-body-color)","hoverColor":"var(--lia-bs-body-color)","fontWeight":"var(--lia-font-weight-md)","fontSize":"var(--lia-font-size-xxs)","textTransform":"UPPERCASE","letterSpacing":"0.5px","__typename":"TagsThemeSettings"},"toasts":{"borderRadius":"var(--lia-bs-border-radius)","paddingX":"12px","__typename":"ToastsThemeSettings"},"typography":{"fontFamilyBase":"Open Sans","fontStyleBase":"NORMAL","fontWeightBase":"400","fontWeightLight":"300","fontWeightNormal":"400","fontWeightMd":"500","fontWeightBold":"700","letterSpacingSm":"normal","letterSpacingXs":"normal","lineHeightBase":"1.4","fontSizeBase":"16px","fontSizeXxs":"11px","fontSizeXs":"12px","fontSizeSm":"14px","fontSizeLg":"20px","fontSizeXl":"24px","smallFontSize":"14px","customFonts":[],"__typename":"TypographyThemeSettings"},"unstyledListItem":{"marginBottomSm":"5px","marginBottomMd":"10px","marginBottomLg":"15px","marginBottomXl":"20px","marginBottomXxl":"25px","__typename":"UnstyledListItemThemeSettings"},"yiq":{"light":"#ffffff","dark":"#000000","__typename":"YiqThemeSettings"},"colorLightness":{"primaryDark":0.36,"primaryLight":0.74,"primaryLighter":0.89,"primaryLightest":0.95,"infoDark":0.39,"infoLight":0.72,"infoLighter":0.85,"infoLightest":0.93,"successDark":0.24,"successLight":0.62,"successLighter":0.8,"successLightest":0.91,"warningDark":0.39,"warningLight":0.68,"warningLighter":0.84,"warningLightest":0.93,"dangerDark":0.41,"dangerLight":0.72,"dangerLighter":0.89,"dangerLightest":0.95,"__typename":"ColorLightnessThemeSettings"},"localOverride":false,"__typename":"Theme"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Loading/LoadingDot-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Loading/LoadingDot-1741125846000","value":{"title":"Loading..."},"localOverride":false},"CachedAsset:quilt:smartbear.prod:pages/forums/ForumMessagePage:board:readyapi-questions-1742846901662":{"__typename":"CachedAsset","id":"quilt:smartbear.prod:pages/forums/ForumMessagePage:board:readyapi-questions-1742846901662","value":{"id":"ForumMessagePage","container":{"id":"Common","headerProps":{"backgroundImageProps":null,"backgroundColor":null,"addComponents":null,"removeComponents":["community.widget.bannerWidget"],"componentOrder":null,"__typename":"QuiltContainerSectionProps"},"headerComponentProps":{"community.widget.breadcrumbWidget":{"disableLastCrumbForDesktop":false}},"footerProps":null,"footerComponentProps":null,"items":[{"id":"message-list","layout":"MAIN_SIDE","bgColor":null,"showTitle":null,"showDescription":null,"textPosition":null,"textColor":null,"sectionEditLevel":null,"bgImage":null,"disableSpacing":null,"edgeToEdgeDisplay":null,"fullHeight":null,"showBorder":null,"__typename":"MainSideQuiltSection","columnMap":{"main":[{"id":"messages.widget.topicWithThreadedReplyListWidget","className":"lia-topic-with-replies","props":{"editLevel":"CONFIGURE"},"__typename":"QuiltComponent"}],"side":[{"id":"messages.widget.messageListForNodeByRecentActivityWidget","className":null,"props":{"hideIfEmpty":true,"pageSize":3,"pagerVariant":{"type":"loadMore"},"viewVariant":{"type":"inline","props":{"useRepliesCount":true,"useMedia":true,"useAuthorRank":false,"useNode":false,"truncateBodyLength":200,"useNodeLink":true,"usePreviewMedia":true,"timeStampType":"postTime","useTextBody":true,"useSolvedBadge":true,"renderPostTimeBeforeAuthor":false,"useAvatar":false,"useTimeToRead":true,"useSpoilerFreeBody":true,"useKudosCount":true,"useViewCount":true,"useBody":true,"useTags":true,"clampSubjectLines":2,"useBoardIcon":false,"useMessageTimeLink":true,"clampBodyLines":3,"useAuthorLogin":true,"useUnreadCount":true,"useNodeHoverCard":true,"useSearchSnippet":false}},"lazyLoad":false,"pagerOption":true,"listVariant":{"type":"unstyled","props":{"listItemSpacing":"xxl"}},"useTitle":true,"addTags":false,"instanceId":"1740141671777","titleContextVariant":"other","showTabs":false,"style":"compact","panelType":"standard","sorts":{"postTime":{"direction":"DESC"}},"pagerOptionCard":false},"__typename":"QuiltComponent"},{"id":"messages.widget.relatedContentWidget","className":null,"props":{"hideIfEmpty":true,"enablePagination":false,"useTitle":true,"listVariant":{"type":"unstyled","props":{"listItemSpacing":"xxl"}},"instanceId":"1740141641356","pageSize":3,"style":"compact","pagerVariant":{"type":"none"},"viewVariant":{"type":"inline","props":{"useRepliesCount":false,"useMedia":false,"useAuthorRank":false,"useNode":false,"useCompactSpacing":true,"boardIconSize":"24","useTimeToRead":false,"useSpoilerFreeBody":true,"useKudosCount":false,"useNodeLink":true,"useViewCount":false,"usePreviewMedia":true,"useBody":false,"timeStampType":"postTime","useTags":false,"clampSubjectLines":2,"useBoardIcon":false,"useMessageTimeLink":true,"useTextBody":true,"useSolvedBadge":false,"renderPostTimeBeforeAuthor":true,"useAvatar":false,"useAuthorLogin":true,"useVideoPreview":false}},"lazyLoad":false,"panelType":"standard"},"__typename":"QuiltComponent"}],"__typename":"MainSideSectionColumns"}}],"__typename":"QuiltContainer"},"__typename":"Quilt","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-components/common/EmailVerification-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/common/EmailVerification-1741125846000","value":{"email.verification.title":"Email Verification Required","email.verification.message.update.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. To change your email, visit My Settings.","email.verification.message.resend.email":"To participate in the community, you must first verify your email address. The verification email was sent to {email}. Resend email."},"localOverride":false},"CachedAsset:text:en_US-pages/forums/ForumMessagePage-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-pages/forums/ForumMessagePage-1741125846000","value":{"title":"{contextMessageSubject} | {communityTitle}","errorMissing":"This message cannot be found","name":"Forum Message Page","section.message-list.title":"Forum Discussion","archivedMessageTitle":"This Content Has Been Archived"},"localOverride":false},"CachedAsset:quiltWrapper:smartbear.prod:Common:1742462762897":{"__typename":"CachedAsset","id":"quiltWrapper:smartbear.prod:Common:1742462762897","value":{"id":"Common","header":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"transparent","items":[{"id":"community.widget.navbarWidget","props":{"showUserName":true,"showRegisterLink":true,"useIconLanguagePicker":true,"useLabelLanguagePicker":true,"style":{"boxShadow":"var(--lia-bs-box-shadow-sm)","linkFontWeight":"400","controllerHighlightColor":"hsla(30, 100%, 50%)","dropdownDividerMarginBottom":"10px","hamburgerBorderHover":"none","linkFontSize":"14px","linkBoxShadowHover":"none","backgroundOpacity":0.8,"controllerBorderRadius":"var(--lia-border-radius-50)","hamburgerBgColor":"transparent","linkTextBorderBottom":"none","hamburgerColor":"var(--lia-nav-controller-icon-color)","brandLogoHeight":"48px","linkLetterSpacing":"normal","linkBgHoverColor":"transparent","collapseMenuDividerOpacity":0.16,"paddingBottom":"15px","dropdownPaddingBottom":"15px","dropdownMenuOffset":"2px","hamburgerBgHoverColor":"transparent","borderBottom":"1px solid var(--lia-bs-border-color)","hamburgerBorder":"none","dropdownPaddingX":"10px","brandMarginRightSm":"10px","linkBoxShadow":"none","linkJustifyContent":"flex-start","linkColor":"var(--lia-bs-body-color)","collapseMenuDividerBg":"var(--lia-nav-link-color)","dropdownPaddingTop":"10px","controllerHighlightTextColor":"var(--lia-yiq-dark)","controllerTextColor":"var(--lia-nav-controller-icon-color)","background":{"imageAssetName":"","color":"var(--lia-bs-white)","size":"COVER","repeat":"NO_REPEAT","position":"CENTER_CENTER","imageLastModified":""},"linkBorderRadius":"var(--lia-bs-border-radius-sm)","linkHoverColor":"var(--lia-bs-primary)","position":"FIXED","linkBorder":"none","linkTextBorderBottomHover":"0","brandMarginRight":"30px","hamburgerHoverColor":"var(--lia-nav-controller-icon-color)","linkBorderHover":"none","collapseMenuMarginLeft":"20px","linkFontStyle":"NORMAL","linkPaddingX":"10px","controllerTextHoverColor":"var(--lia-nav-controller-icon-hover-color)","paddingTop":"15px","linkPaddingY":"5px","linkTextTransform":"NONE","dropdownBorderColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.08)","controllerBgHoverColor":"hsla(var(--lia-bs-black-h), var(--lia-bs-black-s), var(--lia-bs-black-l), 0.1)","linkDropdownPaddingX":"var(--lia-nav-link-px)","linkBgColor":"transparent","linkDropdownPaddingY":"9px","controllerIconColor":"var(--lia-bs-body-color)","dropdownDividerMarginTop":"10px","linkGap":"10px","controllerIconHoverColor":"var(--lia-bs-body-color)"},"className":"QuiltComponent_lia-component-edit-mode__0nCcm","links":{"sideLinks":[],"mainLinks":[]},"showSearchIcon":true,"languagePickerStyle":"iconAndLabel"},"__typename":"QuiltComponent"},{"id":"community.widget.breadcrumbWidget","props":null,"__typename":"QuiltComponent"},{"id":"community.widget.bannerWidget","props":null,"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"footer":{"backgroundImageProps":{"assetName":null,"backgroundSize":"COVER","backgroundRepeat":"NO_REPEAT","backgroundPosition":"CENTER_CENTER","lastModified":null,"__typename":"BackgroundImageProps"},"backgroundColor":"var(--lia-bs-gray-800)","items":[{"id":"custom.widget.Footer_Links","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"},{"id":"custom.widget.Custom_Style_Helper","props":{"widgetVisibility":"signedInOrAnonymous","useTitle":true,"useBackground":false,"title":"","lazyLoad":false},"__typename":"QuiltComponent"}],"__typename":"QuiltWrapperSection"},"__typename":"QuiltWrapper","localOverride":false},"localOverride":false},"CachedAsset:text:en_US-components/common/ActionFeedback-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/common/ActionFeedback-1741125846000","value":{"joinedGroupHub.title":"Welcome","joinedGroupHub.message":"You are now a member of this group and are subscribed to updates.","groupHubInviteNotFound.title":"Invitation Not Found","groupHubInviteNotFound.message":"Sorry, we could not find your invitation to the group. The owner may have canceled the invite.","groupHubNotFound.title":"Group Not Found","groupHubNotFound.message":"The grouphub you tried to join does not exist. It may have been deleted.","existingGroupHubMember.title":"Already Joined","existingGroupHubMember.message":"You are already a member of this group.","accountLocked.title":"Account Locked","accountLocked.message":"Your account has been locked due to multiple failed attempts. Try again in {lockoutTime} minutes.","editedGroupHub.title":"Changes Saved","editedGroupHub.message":"Your group has been updated.","leftGroupHub.title":"Goodbye","leftGroupHub.message":"You are no longer a member of this group and will not receive future updates.","deletedGroupHub.title":"Deleted","deletedGroupHub.message":"The group has been deleted.","groupHubCreated.title":"Group Created","groupHubCreated.message":"{groupHubName} is ready to use","accountClosed.title":"Account Closed","accountClosed.message":"The account has been closed and you will now be redirected to the homepage","resetTokenExpired.title":"Reset Password Link has Expired","resetTokenExpired.message":"Try resetting your password again","invalidUrl.title":"Invalid URL","invalidUrl.message":"The URL you're using is not recognized. Verify your URL and try again.","accountClosedForUser.title":"Account Closed","accountClosedForUser.message":"{userName}'s account is closed","inviteTokenInvalid.title":"Invitation Invalid","inviteTokenInvalid.message":"Your invitation to the community has been canceled or expired.","inviteTokenError.title":"Invitation Verification Failed","inviteTokenError.message":"The url you are utilizing is not recognized. Verify your URL and try again","pageNotFound.title":"Access Denied","pageNotFound.message":"You do not have access to this area of the community or it doesn't exist","eventAttending.title":"Responded as Attending","eventAttending.message":"You'll be notified when there's new activity and reminded as the event approaches","eventInterested.title":"Responded as Interested","eventInterested.message":"You'll be notified when there's new activity and reminded as the event approaches","eventNotFound.title":"Event Not Found","eventNotFound.message":"The event you tried to respond to does not exist.","redirectToRelatedPage.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.title":"Showing Related Content","redirectToRelatedPageForBaseUsers.message":"The content you are trying to access is archived","redirectToRelatedPage.message":"The content you are trying to access is archived","relatedUrl.archivalLink.flyoutMessage":"The content you are trying to access is archived View Archived Content"},"localOverride":false},"CachedAsset:component:custom.widget.Footer_Links-en-1744211059216":{"__typename":"CachedAsset","id":"component:custom.widget.Footer_Links-en-1744211059216","value":{"component":{"id":"custom.widget.Footer_Links","template":{"id":"Footer_Links","markupLanguage":"HANDLEBARS","style":null,"texts":null,"defaults":{"config":{"applicablePages":[],"description":"Footer Links","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Footer_Links","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"Footer Links","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:component:custom.widget.Custom_Style_Helper-en-1744211059216":{"__typename":"CachedAsset","id":"component:custom.widget.Custom_Style_Helper-en-1744211059216","value":{"component":{"id":"custom.widget.Custom_Style_Helper","template":{"id":"Custom_Style_Helper","markupLanguage":"HANDLEBARS","style":null,"texts":null,"defaults":{"config":{"applicablePages":[],"description":"Helper widget to inject SmartBear Styles","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"components":[{"id":"custom.widget.Custom_Style_Helper","form":null,"config":null,"props":[],"__typename":"Component"}],"grouping":"CUSTOM","__typename":"ComponentTemplate"},"properties":{"config":{"applicablePages":[],"description":"Helper widget to inject SmartBear Styles","fetchedContent":null,"__typename":"ComponentConfiguration"},"props":[],"__typename":"ComponentProperties"},"form":null,"__typename":"Component","localOverride":false},"globalCss":null,"form":null},"localOverride":false},"CachedAsset:text:en_US-components/community/Navbar-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/community/Navbar-1741125846000","value":{"community":"Community Home","inbox":"Inbox","manageContent":"Manage Content","tos":"Terms of Service","forgotPassword":"Forgot Password","themeEditor":"Theme Editor","edit":"Edit Navigation Bar","skipContent":"Skip to content"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarHamburgerDropdown-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarHamburgerDropdown-1741125846000","value":{"hamburgerLabel":"Side Menu"},"localOverride":false},"CachedAsset:text:en_US-components/community/BrandLogo-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/community/BrandLogo-1741125846000","value":{"logoAlt":"Khoros","themeLogoAlt":"Brand Logo"},"localOverride":false},"CachedAsset:text:en_US-components/community/NavbarTextLinks-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/community/NavbarTextLinks-1741125846000","value":{"more":"More"},"localOverride":false},"CachedAsset:text:en_US-components/search/SpotlightSearchIcon-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/search/SpotlightSearchIcon-1741125846000","value":{"search":"Search"},"localOverride":false},"CachedAsset:text:en_US-components/authentication/AuthenticationLink-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/authentication/AuthenticationLink-1741125846000","value":{"title.login":"Sign In","title.registration":"Register","title.forgotPassword":"Forgot Password","title.multiAuthLogin":"Sign In"},"localOverride":false},"CachedAsset:text:en_US-components/community/Breadcrumb-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/community/Breadcrumb-1741125846000","value":{"navLabel":"Breadcrumbs","dropdown":"Additional parent page navigation"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBanner-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBanner-1741125846000","value":{"messageMarkedAsSpam":"This post has been marked as spam","messageMarkedAsSpam@board:TKB":"This article has been marked as spam","messageMarkedAsSpam@board:BLOG":"This post has been marked as spam","messageMarkedAsSpam@board:FORUM":"This discussion has been marked as spam","messageMarkedAsSpam@board:OCCASION":"This event has been marked as spam","messageMarkedAsSpam@board:IDEA":"This idea has been marked as spam","manageSpam":"Manage Spam","messageMarkedAsAbuse":"This post has been marked as abuse","messageMarkedAsAbuse@board:TKB":"This article has been marked as abuse","messageMarkedAsAbuse@board:BLOG":"This post has been marked as abuse","messageMarkedAsAbuse@board:FORUM":"This discussion has been marked as abuse","messageMarkedAsAbuse@board:OCCASION":"This event has been marked as abuse","messageMarkedAsAbuse@board:IDEA":"This idea has been marked as abuse","preModCommentAuthorText":"This comment will be published as soon as it is approved","preModCommentModeratorText":"This comment is awaiting moderation","messageMarkedAsOther":"This post has been rejected due to other reasons","messageMarkedAsOther@board:TKB":"This article has been rejected due to other reasons","messageMarkedAsOther@board:BLOG":"This post has been rejected due to other reasons","messageMarkedAsOther@board:FORUM":"This discussion has been rejected due to other reasons","messageMarkedAsOther@board:OCCASION":"This event has been rejected due to other reasons","messageMarkedAsOther@board:IDEA":"This idea has been rejected due to other reasons","messageArchived":"This post was archived on {date}","relatedUrl":"View Related Content","relatedContentText":"Showing related content","archivedContentLink":"View Archived Content"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageListForNodeByRecentActivityWidget-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageListForNodeByRecentActivityWidget-1741125846000","value":{"title@userScope:other":"Recent Content","title@userScope:self":"Contributions","title@board:FORUM@userScope:other":"Recent Discussions","title@board:BLOG@userScope:other":"Recent Blogs","emptyDescription":"No content to show","MessageListForNodeByRecentActivityWidgetEditor.nodeScope.label":"Scope","title@instance:1703254420736":"Latest Posts","title@instance:1698433901422":"Latest Posts","title@instance:1740667137564":"Community Feed","title@instance:1740667273045":"Community Feed"},"localOverride":false},"CachedAsset:text:en_US-components/messages/RelatedContentWidget-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/RelatedContentWidget-1741125846000","value":{"title":"Related Content","emptyDescription":"No content to show"},"localOverride":false},"Conversation:conversation:275575":{"__typename":"Conversation","id":"conversation:275575","topic":{"__typename":"ForumTopicMessage","uid":275575},"lastPostingActivityTime":"2025-04-10T07:39:22.772-07:00","solved":false},"User:user:129778":{"__typename":"User","uid":129778,"login":"rik123","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"id":"user:129778"},"ForumTopicMessage:message:275575":{"__typename":"ForumTopicMessage","subject":"Vulnerable jetty files","conversation":{"__ref":"Conversation:conversation:275575"},"id":"message:275575","revisionNum":1,"uid":275575,"depth":0,"board":{"__ref":"Forum:board:readyapi-questions"},"author":{"__ref":"User:user:129778"},"metrics":{"__typename":"MessageMetrics","views":22},"postTime":"2025-04-07T04:32:48.671-07:00","lastPublishTime":"2025-04-07T04:32:48.671-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":200})":" The latest versions of ReadyAPI contain vulnerable \"jetty...jar\" files, in the lib folder. When will all these jetty files be updated? ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":200})@stringLength":"136","kudosSumWeight":1,"repliesCount":1,"readOnly":false,"tags":{"__typename":"TagConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"timeToRead":1,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:275455":{"__typename":"Conversation","id":"conversation:275455","topic":{"__typename":"ForumTopicMessage","uid":275455},"lastPostingActivityTime":"2025-03-28T04:40:32.078-07:00","solved":false},"User:user:128011":{"__typename":"User","uid":128011,"login":"Musketeer","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"id":"user:128011"},"ForumTopicMessage:message:275455":{"__typename":"ForumTopicMessage","subject":"RunTestCase input and return proeprties of the same name","conversation":{"__ref":"Conversation:conversation:275455"},"id":"message:275455","revisionNum":1,"uid":275455,"depth":0,"board":{"__ref":"Forum:board:readyapi-questions"},"author":{"__ref":"User:user:128011"},"metrics":{"__typename":"MessageMetrics","views":38},"postTime":"2025-03-28T04:40:32.078-07:00","lastPublishTime":"2025-03-28T04:40:32.078-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":200})":" Hello! I have a test case module that loads a set of around 100 properties from multiple databases, performs some logic with the data and then outputs the whole set into the testcase properties. I...","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":200})@stringLength":"208","kudosSumWeight":0,"repliesCount":0,"readOnly":false,"tags":{"__typename":"TagConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[{"__typename":"TagEdge","node":{"__typename":"Tag","id":"tag:Data-Driven Testing","text":"Data-Driven Testing","time":"2015-08-13T09:09:53.532-07:00","lastActivityTime":null,"messagesCount":null,"followersCount":null}}]},"timeToRead":1,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Conversation:conversation:275439":{"__typename":"Conversation","id":"conversation:275439","topic":{"__typename":"ForumTopicMessage","uid":275439},"lastPostingActivityTime":"2025-03-28T12:03:25.639-07:00","solved":false},"User:user:129255":{"__typename":"User","uid":129255,"login":"Rak19","registrationData":{"__typename":"RegistrationData","status":null},"deleted":false,"id":"user:129255"},"ForumTopicMessage:message:275439":{"__typename":"ForumTopicMessage","subject":"Import API Definition in Ready API","conversation":{"__ref":"Conversation:conversation:275439"},"id":"message:275439","revisionNum":1,"uid":275439,"depth":0,"board":{"__ref":"Forum:board:readyapi-questions"},"author":{"__ref":"User:user:129255"},"metrics":{"__typename":"MessageMetrics","views":34},"postTime":"2025-03-27T03:56:00.610-07:00","lastPublishTime":"2025-03-27T03:56:00.610-07:00","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":200})":" In Ready API, while import definition using the .JSON as a sample file, I am facing an error given in the attachment . Whether it won't support to import a .JSON collection. Any idea ? ","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":200})@stringLength":"186","kudosSumWeight":0,"repliesCount":1,"readOnly":false,"tags":{"__typename":"TagConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"timeToRead":1,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}}},"Rank:rank:14":{"__typename":"Rank","id":"rank:14","position":20,"name":"Occasional Contributor","color":"00537C","icon":null,"rankStyle":"OUTLINE"},"User:user:109701":{"__typename":"User","id":"user:109701","uid":109701,"login":"mu123","biography":null,"registrationData":{"__typename":"RegistrationData","status":null,"registrationTime":"2022-06-30T12:41:45.258-07:00","confirmEmailStatus":null,"registrationAccessLevel":null,"ssoRegistrationFields":[]},"deleted":false,"email":"","avatar":{"__typename":"UserAvatar","url":"https://community.smartbear.com/t5/s/nwkab66374/m_assets/avatars/default/avatar-11.svg?time=0"},"rank":{"__ref":"Rank:rank:14"},"messagesCount":17,"kudosGivenCount":0,"kudosReceivedCount":0,"kudosWeight":1,"ssoId":null,"followersCount":null,"solutionsCount":0,"entityType":"USER","eventPath":"community:nwkab66374/user:109701"},"ForumTopicMessage:message:235712":{"__typename":"ForumTopicMessage","uid":235712,"subject":"Iterating through Data source values and verifying the matched value","id":"message:235712","revisionNum":1,"repliesCount":10,"author":{"__ref":"User:user:109701"},"depth":0,"hasGivenKudo":false,"board":{"__ref":"Forum:board:readyapi-questions"},"conversation":{"__ref":"Conversation:conversation:235712"},"moderationData":{"__ref":"ModerationData:moderation_data:235712"},"postTime":"2022-06-30T12:52:38.974-07:00","lastPublishTime":"2022-06-30T12:52:38.974-07:00","readOnly":false,"metrics":{"__typename":"MessageMetrics","views":4737},"placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"entityType":"FORUM_TOPIC","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:235712"},"Conversation:conversation:235712":{"__typename":"Conversation","id":"conversation:235712","solved":true,"topic":{"__ref":"ForumTopicMessage:message:235712"},"lastPostingActivityTime":"2022-12-11T19:05:05.940-08:00","lastPostTime":"2022-12-11T19:05:05.940-08:00"},"ModerationData:moderation_data:235712":{"__typename":"ModerationData","id":"moderation_data:235712","status":"APPROVED","rejectReason":null},"RelatedContentMessage:RelatedContentMessage:235712":{"__typename":"RelatedContentMessage","id":"RelatedContentMessage:235712","relatedMessage":{"__ref":"ForumTopicMessage:message:235712"}},"User:user:105255":{"__typename":"User","id":"user:105255","uid":105255,"login":"lydeeea","biography":null,"registrationData":{"__typename":"RegistrationData","status":null,"registrationTime":"2022-02-01T11:08:09.899-08:00","confirmEmailStatus":null,"registrationAccessLevel":null,"ssoRegistrationFields":[]},"deleted":false,"email":"","avatar":{"__typename":"UserAvatar","url":"https://community.smartbear.com/t5/s/nwkab66374/m_assets/avatars/default/avatar-4.svg?time=0"},"rank":{"__ref":"Rank:rank:14"},"messagesCount":7,"kudosGivenCount":1,"kudosReceivedCount":1,"kudosWeight":1,"ssoId":null,"followersCount":null,"solutionsCount":0,"entityType":"USER","eventPath":"community:nwkab66374/user:105255"},"ForumTopicMessage:message:229507":{"__typename":"ForumTopicMessage","uid":229507,"subject":"Expected value: [null]; Actual value: []","id":"message:229507","revisionNum":1,"repliesCount":1,"author":{"__ref":"User:user:105255"},"depth":0,"hasGivenKudo":false,"board":{"__ref":"Forum:board:readyapi-questions"},"conversation":{"__ref":"Conversation:conversation:229507"},"moderationData":{"__ref":"ModerationData:moderation_data:229507"},"postTime":"2022-02-03T09:59:25.657-08:00","lastPublishTime":"2022-02-03T09:59:25.657-08:00","readOnly":false,"metrics":{"__typename":"MessageMetrics","views":1295},"placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"entityType":"FORUM_TOPIC","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:229507"},"Conversation:conversation:229507":{"__typename":"Conversation","id":"conversation:229507","solved":true,"topic":{"__ref":"ForumTopicMessage:message:229507"},"lastPostingActivityTime":"2022-02-03T11:32:32.267-08:00","lastPostTime":"2022-02-03T11:32:32.267-08:00"},"ModerationData:moderation_data:229507":{"__typename":"ModerationData","id":"moderation_data:229507","status":"APPROVED","rejectReason":null},"RelatedContentMessage:RelatedContentMessage:229507":{"__typename":"RelatedContentMessage","id":"RelatedContentMessage:229507","relatedMessage":{"__ref":"ForumTopicMessage:message:229507"}},"Rank:rank:18":{"__typename":"Rank","id":"rank:18","position":24,"name":"Member","color":"00537C","icon":null,"rankStyle":"OUTLINE"},"User:user:86105":{"__typename":"User","id":"user:86105","uid":86105,"login":"radekoziol","biography":null,"registrationData":{"__typename":"RegistrationData","status":null,"registrationTime":"2019-10-15T23:16:01.105-07:00","confirmEmailStatus":null,"registrationAccessLevel":null,"ssoRegistrationFields":[]},"deleted":false,"email":"","avatar":{"__typename":"UserAvatar","url":"https://community.smartbear.com/t5/s/nwkab66374/m_assets/avatars/default/avatar-6.svg?time=0"},"rank":{"__ref":"Rank:rank:18"},"messagesCount":1,"kudosGivenCount":0,"kudosReceivedCount":0,"kudosWeight":1,"ssoId":null,"followersCount":null,"solutionsCount":0,"entityType":"USER","eventPath":"community:nwkab66374/user:86105"},"Category:category:swagger-os-community":{"__typename":"Category","id":"category:swagger-os-community","entityType":"CATEGORY","displayId":"swagger-os-community","nodeType":"category","depth":1,"title":"Swagger Open Source Tools","shortTitle":"Swagger Open Source Tools"},"AssociatedImage:{\"url\":\"https://community.smartbear.com/t5/s/nwkab66374/images/bi0xODktZXFDVU5I?image-coordinates=0%2C0%2C209%2C209\"}":{"__typename":"AssociatedImage","url":"https://community.smartbear.com/t5/s/nwkab66374/images/bi0xODktZXFDVU5I?image-coordinates=0%2C0%2C209%2C209","mimeType":"image/png"},"Forum:board:SwaggerOSTools":{"__typename":"Forum","id":"board:SwaggerOSTools","entityType":"FORUM","displayId":"SwaggerOSTools","nodeType":"board","depth":2,"conversationStyle":"FORUM","title":"Swagger Open Source Tools Questions","shortTitle":"Swagger Open Source Tools Questions","parent":{"__ref":"Category:category:swagger-os-community"},"userContext":{"__typename":"NodeUserContext","canAddAttachments":true,"canUpdateNode":false,"canPostMessages":false,"isSubscribed":false},"avatar":{"__ref":"AssociatedImage:{\"url\":\"https://community.smartbear.com/t5/s/nwkab66374/images/bi0xODktZXFDVU5I?image-coordinates=0%2C0%2C209%2C209\"}"},"description":"","eventPath":"category:swagger-os-community/community:nwkab66374board:SwaggerOSTools/"},"ForumTopicMessage:message:192153":{"__typename":"ForumTopicMessage","uid":192153,"subject":"Array null values","id":"message:192153","revisionNum":1,"repliesCount":1,"author":{"__ref":"User:user:86105"},"depth":0,"hasGivenKudo":false,"board":{"__ref":"Forum:board:SwaggerOSTools"},"conversation":{"__ref":"Conversation:conversation:192153"},"moderationData":{"__ref":"ModerationData:moderation_data:192153"},"postTime":"2019-10-15T23:23:09.950-07:00","lastPublishTime":"2019-10-15T23:23:09.950-07:00","readOnly":false,"metrics":{"__typename":"MessageMetrics","views":7421},"placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"entityType":"FORUM_TOPIC","eventPath":"category:swagger-os-community/community:nwkab66374board:SwaggerOSTools/message:192153"},"Conversation:conversation:192153":{"__typename":"Conversation","id":"conversation:192153","solved":true,"topic":{"__ref":"ForumTopicMessage:message:192153"},"lastPostingActivityTime":"2019-11-26T04:59:41.934-08:00","lastPostTime":"2019-11-26T04:59:41.934-08:00"},"ModerationData:moderation_data:192153":{"__typename":"ModerationData","id":"moderation_data:192153","status":"APPROVED","rejectReason":null},"RelatedContentMessage:RelatedContentMessage:192153":{"__typename":"RelatedContentMessage","id":"RelatedContentMessage:192153","relatedMessage":{"__ref":"ForumTopicMessage:message:192153"}},"QueryVariables:TopicReplyList:message:175535:1":{"__typename":"QueryVariables","id":"TopicReplyList:message:175535:1","value":{"id":"message:175535","first":10,"sorts":{"kudosSumWeight":{"direction":"DESC","order":0},"postTime":{"direction":"ASC","order":1}},"repliesFirst":3,"repliesFirstDepthThree":1,"repliesSorts":{"kudosSumWeight":{"direction":"DESC","order":0},"postTime":{"direction":"ASC","order":1}},"useAvatar":true,"useAuthorLogin":true,"useAuthorRank":true,"useBody":true,"useKudosCount":true,"useTimeToRead":false,"useMedia":false,"useReadOnlyIcon":false,"useRepliesCount":true,"useSearchSnippet":false,"useAcceptedSolutionButton":true,"useSolvedBadge":false,"useAttachments":false,"attachmentsFirst":5,"useTags":true,"useNodeAncestors":false,"useUserHoverCard":false,"useNodeHoverCard":false,"useModerationStatus":true,"usePreviewSubjectModal":false,"useMessageStatus":true}},"ROOT_MUTATION":{"__typename":"Mutation"},"CachedAsset:text:en_US-components/nodes/NodeLink-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeLink-1741125846000","value":{"place":"Place {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewStandard-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewStandard-1741125846000","value":{"anonymous":"Anonymous","author":"{messageAuthorLogin}","authorBy":"{messageAuthorLogin}","board":"{messageBoardTitle}","replyToUser":" to {parentAuthor}","showMoreReplies":"Show More","replyText":"Reply","repliesText":"Replies","markedAsSolved":"Marked as Solved","movedMessagePlaceholder.BLOG":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.TKB":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.FORUM":"{count, plural, =0 {This reply has been} other {These replies have been} }","movedMessagePlaceholder.IDEA":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholder.OCCASION":"{count, plural, =0 {This comment has been} other {These comments have been} }","movedMessagePlaceholderUrlText":"moved.","messageStatus":"Status: ","statusChanged":"Status changed: {previousStatus} to {currentStatus}","statusAdded":"Status added: {status}","statusRemoved":"Status removed: {status}","labelExpand":"expand replies","labelCollapse":"collapse replies","unhelpfulReason.reason1":"Content is outdated","unhelpfulReason.reason2":"Article is missing information","unhelpfulReason.reason3":"Content is for a different Product","unhelpfulReason.reason4":"Doesn't match what I was searching for"},"localOverride":false},"CachedAsset:text:en_US-components/messages/ThreadedReplyList-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/ThreadedReplyList-1741125846000","value":{"title":"{count, plural, one{# Reply} other{# Replies}}","title@board:BLOG":"{count, plural, one{# Comment} other{# Comments}}","title@board:TKB":"{count, plural, one{# Comment} other{# Comments}}","title@board:IDEA":"{count, plural, one{# Comment} other{# Comments}}","title@board:OCCASION":"{count, plural, one{# Comment} other{# Comments}}","noRepliesTitle":"No Replies","noRepliesTitle@board:BLOG":"No Comments","noRepliesTitle@board:TKB":"No Comments","noRepliesTitle@board:IDEA":"No Comments","noRepliesTitle@board:OCCASION":"No Comments","noRepliesDescription":"Be the first to reply","noRepliesDescription@board:BLOG":"Be the first to comment","noRepliesDescription@board:TKB":"Be the first to comment","noRepliesDescription@board:IDEA":"Be the first to comment","noRepliesDescription@board:OCCASION":"Be the first to comment","messageReadOnlyAlert:BLOG":"Comments have been turned off for this post","messageReadOnlyAlert:TKB":"Comments have been turned off for this article","messageReadOnlyAlert:IDEA":"Comments have been turned off for this idea","messageReadOnlyAlert:FORUM":"Replies have been turned off for this discussion","messageReadOnlyAlert:OCCASION":"Comments have been turned off for this event"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyCallToAction-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyCallToAction-1741125846000","value":{"leaveReply":"Leave a reply...","leaveReply@board:BLOG@message:root":"Leave a comment...","leaveReply@board:TKB@message:root":"Leave a comment...","leaveReply@board:IDEA@message:root":"Leave a comment...","leaveReply@board:OCCASION@message:root":"Leave a comment...","repliesTurnedOff.FORUM":"Replies are turned off for this topic","repliesTurnedOff.BLOG":"Comments are turned off for this topic","repliesTurnedOff.TKB":"Comments are turned off for this topic","repliesTurnedOff.IDEA":"Comments are turned off for this topic","repliesTurnedOff.OCCASION":"Comments are turned off for this topic","infoText":"Stop poking me!"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/QueryHandler-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/QueryHandler-1741125846000","value":{"title":"Query Handler"},"localOverride":false},"Rank:rank:12":{"__typename":"Rank","id":"rank:12","position":18,"name":"Frequent Contributor","color":"00537C","icon":null,"rankStyle":"OUTLINE"},"User:user:80258":{"__typename":"User","id":"user:80258","uid":80258,"login":"aaronpliu","biography":null,"registrationData":{"__typename":"RegistrationData","status":null,"registrationTime":"2018-07-23T00:12:51.773-07:00"},"deleted":false,"email":"","avatar":{"__typename":"UserAvatar","url":"https://community.smartbear.com/t5/s/nwkab66374/m_assets/avatars/default/avatar-7.svg?time=0"},"rank":{"__ref":"Rank:rank:12"},"entityType":"USER","eventPath":"community:nwkab66374/user:80258"},"ModerationData:moderation_data:175550":{"__typename":"ModerationData","id":"moderation_data:175550","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"ForumReplyMessage:message:175550":{"__typename":"ForumReplyMessage","uid":175550,"id":"message:175550","revisionNum":1,"author":{"__ref":"User:user:80258"},"readOnly":false,"repliesCount":8,"depth":1,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:readyapi-questions"},"parent":{"__ref":"ForumTopicMessage:message:175535"},"conversation":{"__ref":"Conversation:conversation:175535"},"subject":"Re: Paramaterize the REST query parm NAME value rather than just the PARM value?","moderationData":{"__ref":"ModerationData:moderation_data:175550"},"body":"Assumed that you have a lot of key-value pair as request parameter.
\n//Example
\ntestRunner.testCase.testSteps[StepName].testRequest.setPropertyValue(ParamName, ParamValue)\n
\n
Step 1: Load properties(key-value) or setup in script
\nStep 2: Send your query request with parameter
\nStep 3: Loop if need (remove previous parameter name if need)
\n//remove property\ntestCase.getPropertyList().each{\n testRunner.testCase.removeProperty(it.name)\n}\n
\n
\n
Thanks,
\n/Aaron
","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"208","kudosSumWeight":1,"postTime":"2018-12-14T00:41:04.019-08:00","lastPublishTime":"2018-12-14T00:41:04.019-08:00","metrics":{"__typename":"MessageMetrics","views":3099},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:175535/message:175550","replies":{"__typename":"MessageConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[{"__typename":"MessageEdge","cursor":"MjUuMnwyLjF8b3wzfDE0OjAsMzk6MXwx","node":{"__ref":"ForumReplyMessage:message:175560"}}]},"customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"editFrozen":false,"body@stringLength":"561","rawBody":"Assumed that you have a lot of key-value pair as request parameter.
\n//Example
\ntestRunner.testCase.testSteps[StepName].testRequest.setPropertyValue(ParamName, ParamValue)\n
\n
Step 1: Load properties(key-value) or setup in script
\nStep 2: Send your query request with parameter
\nStep 3: Loop if need (remove previous parameter name if need)
\n//remove property\ntestCase.getPropertyList().each{\n testRunner.testCase.removeProperty(it.name)\n}\n
\n
\n
Thanks,
\n/Aaron
","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":1,"currentRevision":{"__ref":"Revision:revision:175550_1"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"ModerationData:moderation_data:175560":{"__typename":"ModerationData","id":"moderation_data:175560","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"ForumReplyMessage:message:175560":{"__typename":"ForumReplyMessage","uid":175560,"id":"message:175560","revisionNum":1,"author":{"__ref":"User:user:39914"},"readOnly":false,"repliesCount":7,"depth":2,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:readyapi-questions"},"parent":{"__ref":"ForumReplyMessage:message:175550"},"conversation":{"__ref":"Conversation:conversation:175535"},"subject":"Re: Paramaterize the REST query parm NAME value rather than just the PARM value?","moderationData":{"__ref":"ModerationData:moderation_data:175560"},"body":"Hi aaronpliu
\n\n
I dont know whether I'm being an idiot - but I'm missing something essential (my groovy code skillset comes from code snippets you guys provide - and thats not an excuse - I try - but I my groovy sucks - just need to make that clear!).
\n\n
you are correct - I do have lots of different table's attributes and SQL operations I need to specify as the query parms on my rest requests
\n\n
You specify the following:
\n\n
testRunner.testCase.testSteps[StepName].testRequest.setPropertyValue(ParamName, ParamValue)\n
QUESTION 1: so above line sets properties for a particlar request's step - right?
\n\n
Your next instructions say as follows:
\n\n
Step 1: Load properties(key-value) or setup in script
\nStep 2: Send your query request with parameter
\nStep 3: Loop if need (remove previous parameter name if need)
\n//remove property\ntestCase.getPropertyList().each{\n testRunner.testCase.removeProperty(it.name)\n}\n
\n
OK - I'm lost at the initial code snippet where you are setting ParmName, ParmValue on the test step.
\nQUESTION2: Why are you setting the property values on the test step - if step1 is loading in a lists of parmnames, values via a script etc? shouldn't i be getting them rather than setting them?
\n\n
QUESTION3: I'm a bit confused on the test step hierarchy you envision - would it be something like the following?
\n\n
Step1 - 'Properties 1' step (name=value pairing of the various parms and values)
\nStep2 - 'Groovy' step as follows:
\ntestRunner.testCase.testSteps[StepName].testRequest.getPropertyValue(ParamName, ParamValue)\n
Step3 - 'REST Request' step with usual template parms set as usual
\nStep4 - 'Groovy' step as follows:
\n//remove property\ntestCase.getPropertyList().each{\n testRunner.testCase.removeProperty(it.name)\n}\n
\n
QUESTION 4: How would I tell ReadyAPI! that the parameters specified in the properties are actually query parameters and values rather than any other REST API parameter type?
\n\n
I hope I've been clear in my request.
\n\n
\n
Thank you!
\n\n
richie
","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"223","kudosSumWeight":0,"postTime":"2018-12-14T03:04:31.076-08:00","lastPublishTime":"2018-12-14T03:04:31.076-08:00","metrics":{"__typename":"MessageMetrics","views":3092},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:175535/message:175560","replies":{"__typename":"MessageConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[{"__typename":"MessageEdge","cursor":"MjUuMnwyLjF8b3wxfDE0OjAsMzk6MXwx","node":{"__ref":"ForumReplyMessage:message:175627"}}]},"customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"editFrozen":false,"body@stringLength":"2701","rawBody":"Hi
\n
I dont know whether I'm being an idiot - but I'm missing something essential (my groovy code skillset comes from code snippets you guys provide - and thats not an excuse - I try - but I my groovy sucks - just need to make that clear!).
\n\n
you are correct - I do have lots of different table's attributes and SQL operations I need to specify as the query parms on my rest requests
\n\n
You specify the following:
\n\n
testRunner.testCase.testSteps[StepName].testRequest.setPropertyValue(ParamName, ParamValue)\n
QUESTION 1: so above line sets properties for a particlar request's step - right?
\n\n
Your next instructions say as follows:
\n\n
Step 1: Load properties(key-value) or setup in script
\nStep 2: Send your query request with parameter
\nStep 3: Loop if need (remove previous parameter name if need)
\n//remove property\ntestCase.getPropertyList().each{\n testRunner.testCase.removeProperty(it.name)\n}\n
\n
OK - I'm lost at the initial code snippet where you are setting ParmName, ParmValue on the test step.
\nQUESTION2: Why are you setting the property values on the test step - if step1 is loading in a lists of parmnames, values via a script etc? shouldn't i be getting them rather than setting them?
\n\n
QUESTION3: I'm a bit confused on the test step hierarchy you envision - would it be something like the following?
\n\n
Step1 - 'Properties 1' step (name=value pairing of the various parms and values)
\nStep2 - 'Groovy' step as follows:
\ntestRunner.testCase.testSteps[StepName].testRequest.getPropertyValue(ParamName, ParamValue)\n
Step3 - 'REST Request' step with usual template parms set as usual
\nStep4 - 'Groovy' step as follows:
\n//remove property\ntestCase.getPropertyList().each{\n testRunner.testCase.removeProperty(it.name)\n}\n
\n
QUESTION 4: How would I tell ReadyAPI! that the parameters specified in the properties are actually query parameters and values rather than any other REST API parameter type?
\n\n
I hope I've been clear in my request.
\n\n
\n
Thank you!
\n\n
richie
","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":2,"currentRevision":{"__ref":"Revision:revision:175560_1"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"ModerationData:moderation_data:175627":{"__typename":"ModerationData","id":"moderation_data:175627","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"ForumReplyMessage:message:175627":{"__typename":"ForumReplyMessage","author":{"__ref":"User:user:80258"},"id":"message:175627","revisionNum":1,"uid":175627,"depth":3,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:readyapi-questions"},"parent":{"__ref":"ForumReplyMessage:message:175560"},"conversation":{"__ref":"Conversation:conversation:175535"},"subject":"Re: Paramaterize the REST query parm NAME value rather than just the PARM value?","moderationData":{"__ref":"ModerationData:moderation_data:175627"},"body":"Hi richie,
\nPlease see my comments for your questions.
\nQUESTION 1: so above line sets properties for a particlar request's step - right?
\n>>Right. that code snippets would be treated as a separate \"Groovy\" step or put it into \"Setup Script\" of certain REST step. If you need to dynamically setup a parameter in step request, then applied it. the precodition is that the \"parameter\" name is available for your request. Usually, all of request paramters should be loaded when you import your REST / SOAP which defined in source file, right?
\nQUESTION2: Why are you setting the property values on the test step - if step1 is loading in a lists of parmnames, values via a script etc? shouldn't i be getting them rather than setting them?
\n>>This is based on your screenshot attached. assumed that you have a REST request with some parameters, and then you would like to dynamically set a parameter name once, you may need to \"get\" one of them and \"set\" it in your request, right? so in .setPropertyValue(paramName, paramValue), \"paramName\" is your parameter name, you should get it first.
\nQUESTION3: I'm a bit confused on the test step hierarchy you envision - would it be something like the following?
\n>>It depends on your requirement. if you want to run your REST request step with different parameter name / value
\n(Example)
\nTestCase Setup Script:
\n// initialize a property \"index\" for loop\ntestCase.setPropertyValue(\"index\", \"0\")\n
Step 1: \"Properties\" step (it would load all key-value from external file or you added manually)
\n\n
Step 2: \"Groovy\" step
\n//setup size of properties in order to loop run\ndef propsList = testRunner.testCase.testSteps[\"Properties\"].getPropertyList()\ndef index = context.expand('${#TestCase#index}').toInteger()\ntestRunner.testCase.setPropertyValue(\"CountOfProps\", propsList.size().toString())\n// setup parameter for REST step\ntestRunner.testCase.testSteps[\"RestStepName\"].testRequst.setPropertyValue(propsList[index].name, propsList[index].value)\n
Step 3: \"REST\" step
\n\n
Step 4: \"Groovy\" step
\ndef index = context.expand('${#TestCase#index}').toInteger()\ndef max = context.expand('${#TestCase#CountOfProps}').toInteger()\n\nif (index + 1 < max) {\n // go to run step 2, here 'Groovy' name is step 2 name\n testRunner.testCase.setPropertyValue(\"index\", (++index).toString())\n testRunner.gotoStepByName(\"Groovy\")\n}\n
// note that your \"REST\" step will be added more parameters, if you just want to run \"REST\" step with one parameter, then you need to \"remove\" others or setup empty\n
QUESTION 4: How would I tell ReadyAPI! that the parameters specified in the properties are actually query parameters and values rather than any other REST API parameter type
\n\n
>> if you added parameter, it's \"query\" by default. if you added as header, then you need to use:
\n(Example)\ndef stringMap = new com.eviware.soapui.support.types.StringToStringMap\ndef stringMap = new StringToStringMap()\nstringMap.put('Cookie', 'xxxxxxxxxxx')\ntestRunner.testCase.testSteps[YourStepName].testRequest.setRequestHeaders(stringMap)\n\n
another parameter is in \"path\", it should be defined in source as a part of available endpoint.
\n\n
Any enquires, please post your questions here, the community will notice it and more people to figure it out with different solutions.
\n\n
\n
\n
Thanks,
\n/Aaron
","body@stripHtml({\"removeProcessingText\":false,\"removeSpoilerMarkup\":false,\"removeTocMarkup\":false,\"truncateLength\":200})@stringLength":"209","kudosSumWeight":1,"repliesCount":6,"postTime":"2018-12-16T18:18:53.738-08:00","lastPublishTime":"2018-12-16T18:18:53.738-08:00","metrics":{"__typename":"MessageMetrics","views":3077},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"isEscalated":null,"solution":false,"entityType":"FORUM_REPLY","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:175535/message:175627","customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"readOnly":false,"editFrozen":false,"body@stringLength":"5075","rawBody":"Hi richie,
\nPlease see my comments for your questions.
\nQUESTION 1: so above line sets properties for a particlar request's step - right?
\n>>Right. that code snippets would be treated as a separate \"Groovy\" step or put it into \"Setup Script\" of certain REST step. If you need to dynamically setup a parameter in step request, then applied it. the precodition is that the \"parameter\" name is available for your request. Usually, all of request paramters should be loaded when you import your REST / SOAP which defined in source file, right?
\nQUESTION2: Why are you setting the property values on the test step - if step1 is loading in a lists of parmnames, values via a script etc? shouldn't i be getting them rather than setting them?
\n>>This is based on your screenshot attached. assumed that you have a REST request with some parameters, and then you would like to dynamically set a parameter name once, you may need to \"get\" one of them and \"set\" it in your request, right? so in .setPropertyValue(paramName, paramValue), \"paramName\" is your parameter name, you should get it first.
\nQUESTION3: I'm a bit confused on the test step hierarchy you envision - would it be something like the following?
\n>>It depends on your requirement. if you want to run your REST request step with different parameter name / value
\n(Example)
\nTestCase Setup Script:
\n// initialize a property \"index\" for loop\ntestCase.setPropertyValue(\"index\", \"0\")\n
Step 1: \"Properties\" step (it would load all key-value from external file or you added manually)
\n\n
Step 2: \"Groovy\" step
\n//setup size of properties in order to loop run\ndef propsList = testRunner.testCase.testSteps[\"Properties\"].getPropertyList()\ndef index = context.expand('${#TestCase#index}').toInteger()\ntestRunner.testCase.setPropertyValue(\"CountOfProps\", propsList.size().toString())\n// setup parameter for REST step\ntestRunner.testCase.testSteps[\"RestStepName\"].testRequst.setPropertyValue(propsList[index].name, propsList[index].value)\n
Step 3: \"REST\" step
\n\n
Step 4: \"Groovy\" step
\ndef index = context.expand('${#TestCase#index}').toInteger()\ndef max = context.expand('${#TestCase#CountOfProps}').toInteger()\n\nif (index + 1 < max) {\n // go to run step 2, here 'Groovy' name is step 2 name\n testRunner.testCase.setPropertyValue(\"index\", (++index).toString())\n testRunner.gotoStepByName(\"Groovy\")\n}\n
// note that your \"REST\" step will be added more parameters, if you just want to run \"REST\" step with one parameter, then you need to \"remove\" others or setup empty\n
QUESTION 4: How would I tell ReadyAPI! that the parameters specified in the properties are actually query parameters and values rather than any other REST API parameter type
\n\n
>> if you added parameter, it's \"query\" by default. if you added as header, then you need to use:
\n(Example)\ndef stringMap = new com.eviware.soapui.support.types.StringToStringMap\ndef stringMap = new StringToStringMap()\nstringMap.put('Cookie', 'xxxxxxxxxxx')\ntestRunner.testCase.testSteps[YourStepName].testRequest.setRequestHeaders(stringMap)\n\n
another parameter is in \"path\", it should be defined in source as a part of available endpoint.
\n\n
Any enquires, please post your questions here, the community will notice it and more people to figure it out with different solutions.
\n\n
\n
\n
Thanks,
\n/Aaron
","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":3,"currentRevision":{"__ref":"Revision:revision:175627_1"},"latestVersion":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"QueryVariables:MessageSolutions":{"__typename":"QueryVariables","id":"MessageSolutions","value":{"first":10,"constraints":{"topicId":{"eq":"message:175535"},"solution":{"eq":true}},"sorts":{"postTime":{"direction":"ASC"}},"useAvatar":true,"useAuthorLogin":true,"useAuthorRank":false,"useBody":true,"useKudosCount":false,"useTimeToRead":false,"useMedia":true,"useRepliesCount":false,"useSearchSnippet":false,"useAcceptedSolutionButton":true,"useSolvedBadge":false,"useAttachments":true,"useTags":false,"useUserHoverCard":false,"useNodeHoverCard":false,"usePreviewSubjectModal":false,"useMessageStatus":false}},"CachedAsset:text:en_US-components/messages/EscalatedMessageBanner-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/EscalatedMessageBanner-1741125846000","value":{"escalationMessage":"Escalated to Salesforce by {username} on {date}","viewDetails":"View Details","modalTitle":"Case Details","escalatedBy":"Escalated by: ","escalatedOn":"Escalated on: ","caseNumber":"Case Number: ","status":"Status: ","lastUpdateDate":"Last Update: ","automaticEscalation":"automatic escalation","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-components/users/UserLink-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/users/UserLink-1741125846000","value":{"authorName":"View Profile: {author}","anonymous":"Anonymous"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/users/UserRank-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserRank-1741125846000","value":{"rankName":"{rankName}","userRank":"Author rank {rankName}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageTime-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageTime-1741125846000","value":{"postTime":"Published: {time}","lastPublishTime":"Last Update: {time}","conversation.lastPostingActivityTime":"Last posting activity time: {time}","conversation.lastPostTime":"Last post time: {time}","moderationData.rejectTime":"Rejected time: {time}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSolvedBadge-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSolvedBadge-1741125846000","value":{"solved":"Solved"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSubject-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSubject-1741125846000","value":{"noSubject":"(no subject)"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageBody-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageBody-1741125846000","value":{"showMessageBody":"Show More","mentionsErrorTitle":"{mentionsType, select, board {Board} user {User} message {Message} other {}} No Longer Available","mentionsErrorMessage":"The {mentionsType} you are trying to view has been removed from the community.","videoProcessing":"Video is being processed. Please try again in a few minutes.","bannerTitle":"Video provider requires cookies to play the video. Accept to continue or {url} it directly on the provider's site.","buttonTitle":"Accept","urlText":"watch"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageCustomFields-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageCustomFields-1741125846000","value":{"CustomField.default.label":"Value of {name}"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageReplyButton-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageReplyButton-1741125846000","value":{"repliesCount":"{count}","title":"Reply","title@board:BLOG@message:root":"Comment","title@board:TKB@message:root":"Comment","title@board:IDEA@message:root":"Comment","title@board:OCCASION@message:root":"Comment"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageSolutionList-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageSolutionList-1741125846000","value":{"emptyDescription":"No has been message solutions yet"},"localOverride":false},"CachedAsset:text:en_US-components/messages/AcceptedSolutionButton-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/AcceptedSolutionButton-1741125846000","value":{"accept":"Mark as Solution","accepted":"Marked as Solution","errorHeader":"Error!","errorAdd":"There was an error marking as solution.","errorRemove":"There was an error unmarking as solution.","solved":"Solved","topicAlreadySolvedErrorTitle":"Solution Already Exists","topicAlreadySolvedErrorDesc":"Refresh the browser to view the existing solution"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/common/Pager/PagerLoadMore-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/common/Pager/PagerLoadMore-1741125846000","value":{"loadMore":"Show More"},"localOverride":false},"CachedAsset:text:en_US-components/messages/MessageView/MessageViewInline-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/MessageView/MessageViewInline-1741125846000","value":{"bylineAuthor":"{bylineAuthor}","bylineBoard":"{bylineBoard}","anonymous":"Anonymous","place":"Place {bylineBoard}","gotoParent":"Go to parent {name}"},"localOverride":false},"Revision:revision:175560_1":{"__typename":"Revision","id":"revision:175560_1","lastEditTime":"2018-12-14T03:04:31.076-08:00"},"Revision:revision:175550_1":{"__typename":"Revision","id":"revision:175550_1","lastEditTime":"2018-12-14T00:41:04.019-08:00"},"Revision:revision:175627_1":{"__typename":"Revision","id":"revision:175627_1","lastEditTime":"2018-12-16T18:18:53.738-08:00"},"ForumReplyMessage:message:176942":{"__typename":"ForumReplyMessage","uid":176942,"id":"message:176942","revisionNum":1,"author":{"__ref":"User:user:39914"},"readOnly":false},"ModerationData:moderation_data:176952":{"__typename":"ModerationData","id":"moderation_data:176952","status":"APPROVED","rejectReason":null,"isReportedAbuse":false,"rejectUser":null,"rejectTime":null,"rejectActorType":null},"AcceptedSolutionMessage:message:176952":{"__typename":"AcceptedSolutionMessage","author":{"__ref":"User:user:80258"},"id":"message:176952","revisionNum":2,"uid":176952,"depth":6,"hasGivenKudo":false,"subscribed":false,"board":{"__ref":"Forum:board:readyapi-questions"},"parent":{"__ref":"ForumReplyMessage:message:176942"},"conversation":{"__ref":"Conversation:conversation:175535"},"subject":"Re: Paramaterize the REST query parm NAME value rather than just the PARM value?","moderationData":{"__ref":"ModerationData:moderation_data:176952"},"body":"Hi richie,
\n\n
You may take a look at following solution if you're interested in it
\n// Step 1: create 4 folders with your properties file.\n // 4 folders named with your database name\n // each properties file named with your table name under current database\n ./namespace1/table1.properties\n ./namespace1/table2.properties\n ...\n ./namepsace4/table16.properties\n\n// Step 2: create a config file to construct relationship of database and table\n // assume that namespace1 / table1 is name of database / table\n // (Example: the config file named with config.groovy)\n database {\n namespace1 = [\"table1\", \"table2\", \"table3\", \"table4\", \"table5\"]\n namespace2 = [\"table6\", \"table7\", \"table8\", \"table9\", \"table10\"]\n namespace3 = [\"table11\", \"table12\", \"table13\", \"table14\", \"table15\"]\n namespace4 = [\"table16\", \"table117\", \"table18\", \"table19\", \"table20\"]\n }\n\n// Step 3: set global property (in test case level)\n testRunner.testCase.setPropertyValue(\"namespace_index\", \"0\")\n testRunner.testCase.setPropertyValue(\"table_index\", \"0\")\n\n// Step 4: Groovy step to load config file and set property\n def index = context.expand('${#TestCase#namespace_index}').toInteger()\n def config = new groovy.util.ConfigSlurper().parse(new File('./config.groovy').toURI().toURL())\n def _map = config.database\n Map.metaClass.takeAt = {int num ->\n def keys = _map.keySet() as String[]\n def key = keys[num]\n [\"$key\": _map.get(key)]\n } //add a extension method to get a sub map\n def map = config.database.takeAt(index) // return a submap\n def namespace = map.keySet() as String[]\n testRunner.testCase.setPropertyValue(\"namespace\", namespace[0]) //namespace name\n testRunner.testCase.setPropertyValue(\"namespaceMap\", groovy.json.JsonOutput.toJson(map))\n testRunner.testCase.setPropertyValue(\"namespaceCount\", config.database.size().toString())\n \n\n// Step 5: Groovy step to set property of table\n def map = new groovy.json.JsonSlurper().parseText(context.expand('${#TestCase#namespaceMap}'))\n def key = map.keySet()[0]\n testRunner.testCase.setPropertyValue(\"tableCount\", map.get(key).size().toString())\n\n// Step 6: Groovy step to load properties file\n def props = new Properties()\n def map = new groovy.json.JsonSlurper().parseText(context.expand('${#TestCase#namespaceMap}'))\n def index = context.expand('${#TestCase#table_index}').toInteger()\n def tableName = map.entrySet()[0].value[index]\n testRunner.testCase.setPropertyValue(\"dataset\", tableName)\n new File(\"./${tableName}.properties\").withInputStream {\n props.load(it)\n }\n\n //remove property\n def teststep = testRunner.testCase.testSteps[\"Step7\"]\n teststep.getPropertyList().each{\n if (! it.name.equalsIgnoreCase(\"namespace\") || ! it.name.equalsIgnoreCase(\"dataset\"))\n teststep.testRequest.removeProperty(it.name)\n }\n\n //add property\n for (p in props) { //set all properties into REST step\n testRunner.testCase.testSteps[\"Step7\"].testRequest.setPropertyValue(p.key, p.value)\n }\n\n// Step 7: REST step to query\n // parameterize \"namespace\" and \"dataset\"\n namespace = ${#TestCase#namespace}\n dataset = ${#TestCase#dataset}\n\n// Step 8: Groovy step to control table loop\n def table_index = context.expand('${#TestCase#table_index}').toInteger()\n def tableCount = context.expand('${#TestCase#tableCount}').toInteger()\n def namespace = context.expand('${#TestCase#namespace}')\n\n if (table_index + 1 < tableCount) {\n testRunner.testCase.setPropertyValue(\"table_index\", (++table_index).toString())\n testRunner.gotoStepByName(\"Step6\")\n } else {\n log.info(\"Query all tables with parameters under $namespace\")\n }\n\n// Step 9: Groovy step to control namespace loop\n def namespace_index = context.expand('${#TestCase#namesapce_index}').toInteger()\n def namespaceCount = context.expand('${#TestCase#namespaceCount}').toInteger()\n\n if (namespace_index + 1 < namespaceCount) {\n testRunner.testCase.setPropertyValue(\"namespace_index\", (++namespace_index).toString())\n testRunner.gotoStepByName(\"Step4\")\n } else {\n log.info(\"Query all namespace done\")\n }\n
\n
Thanks,
\n/Aaron
","body@stripHtml({\"removeProcessingText\":true,\"removeSpoilerMarkup\":true,\"removeTocMarkup\":true,\"truncateLength\":200})@stringLength":"213","postTime":"2019-01-13T03:18:39.456-08:00","lastPublishTime":"2019-01-13T03:23:57.173-08:00","images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"attachments":{"__typename":"AttachmentConnection","pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null},"edges":[]},"solution":true,"metrics":{"__typename":"MessageMetrics","views":3012},"placeholder":false,"originalMessageForPlaceholder":null,"videos":{"__typename":"VideoConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"isEscalated":null,"entityType":"FORUM_REPLY","eventPath":"category:ready_api_forums/community:nwkab66374board:readyapi-questions/message:175535/message:176952","customFields":[],"readOnly":false,"editFrozen":false,"body@stringLength":"4518","rawBody":"Hi
\n
You may take a look at following solution if you're interested in it
\n// Step 1: create 4 folders with your properties file.\n // 4 folders named with your database name\n // each properties file named with your table name under current database\n ./namespace1/table1.properties\n ./namespace1/table2.properties\n ...\n ./namepsace4/table16.properties\n\n// Step 2: create a config file to construct relationship of database and table\n // assume that namespace1 / table1 is name of database / table\n // (Example: the config file named with config.groovy)\n database {\n namespace1 = [\"table1\", \"table2\", \"table3\", \"table4\", \"table5\"]\n namespace2 = [\"table6\", \"table7\", \"table8\", \"table9\", \"table10\"]\n namespace3 = [\"table11\", \"table12\", \"table13\", \"table14\", \"table15\"]\n namespace4 = [\"table16\", \"table117\", \"table18\", \"table19\", \"table20\"]\n }\n\n// Step 3: set global property (in test case level)\n testRunner.testCase.setPropertyValue(\"namespace_index\", \"0\")\n testRunner.testCase.setPropertyValue(\"table_index\", \"0\")\n\n// Step 4: Groovy step to load config file and set property\n def index = context.expand('${#TestCase#namespace_index}').toInteger()\n def config = new groovy.util.ConfigSlurper().parse(new File('./config.groovy').toURI().toURL())\n def _map = config.database\n Map.metaClass.takeAt = {int num ->\n def keys = _map.keySet() as String[]\n def key = keys[num]\n [\"$key\": _map.get(key)]\n } //add a extension method to get a sub map\n def map = config.database.takeAt(index) // return a submap\n def namespace = map.keySet() as String[]\n testRunner.testCase.setPropertyValue(\"namespace\", namespace[0]) //namespace name\n testRunner.testCase.setPropertyValue(\"namespaceMap\", groovy.json.JsonOutput.toJson(map))\n testRunner.testCase.setPropertyValue(\"namespaceCount\", config.database.size().toString())\n \n\n// Step 5: Groovy step to set property of table\n def map = new groovy.json.JsonSlurper().parseText(context.expand('${#TestCase#namespaceMap}'))\n def key = map.keySet()[0]\n testRunner.testCase.setPropertyValue(\"tableCount\", map.get(key).size().toString())\n\n// Step 6: Groovy step to load properties file\n def props = new Properties()\n def map = new groovy.json.JsonSlurper().parseText(context.expand('${#TestCase#namespaceMap}'))\n def index = context.expand('${#TestCase#table_index}').toInteger()\n def tableName = map.entrySet()[0].value[index]\n testRunner.testCase.setPropertyValue(\"dataset\", tableName)\n new File(\"./${tableName}.properties\").withInputStream {\n props.load(it)\n }\n\n //remove property\n def teststep = testRunner.testCase.testSteps[\"Step7\"]\n teststep.getPropertyList().each{\n if (! it.name.equalsIgnoreCase(\"namespace\") || ! it.name.equalsIgnoreCase(\"dataset\"))\n teststep.testRequest.removeProperty(it.name)\n }\n\n //add property\n for (p in props) { //set all properties into REST step\n testRunner.testCase.testSteps[\"Step7\"].testRequest.setPropertyValue(p.key, p.value)\n }\n\n// Step 7: REST step to query\n // parameterize \"namespace\" and \"dataset\"\n namespace = ${#TestCase#namespace}\n dataset = ${#TestCase#dataset}\n\n// Step 8: Groovy step to control table loop\n def table_index = context.expand('${#TestCase#table_index}').toInteger()\n def tableCount = context.expand('${#TestCase#tableCount}').toInteger()\n def namespace = context.expand('${#TestCase#namespace}')\n\n if (table_index + 1 < tableCount) {\n testRunner.testCase.setPropertyValue(\"table_index\", (++table_index).toString())\n testRunner.gotoStepByName(\"Step6\")\n } else {\n log.info(\"Query all tables with parameters under $namespace\")\n }\n\n// Step 9: Groovy step to control namespace loop\n def namespace_index = context.expand('${#TestCase#namesapce_index}').toInteger()\n def namespaceCount = context.expand('${#TestCase#namespaceCount}').toInteger()\n\n if (namespace_index + 1 < namespaceCount) {\n testRunner.testCase.setPropertyValue(\"namespace_index\", (++namespace_index).toString())\n testRunner.gotoStepByName(\"Step4\")\n } else {\n log.info(\"Query all namespace done\")\n }\n
\n
Thanks,
\n/Aaron
","kudosSumWeight":1,"repliesCount":3,"timeToRead":3,"currentRevision":{"__ref":"Revision:revision:176952_2"},"latestVersion":null,"visibilityScope":"PUBLIC","messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1741125846000","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1741125846000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/ranks/UserRankLabel-1741125846000","value":{"altTitle":"Icon for {rankName} rank"},"localOverride":false},"Revision:revision:176952_2":{"__typename":"Revision","id":"revision:176952_2","lastEditTime":"2019-01-13T03:23:57.173-08:00"}}}},"page":"/forums/ForumMessagePage/ForumMessagePage","query":{"boardId":"readyapi-questions","messageSubject":"paramaterize-the-rest-query-parm-name-value-rather-than-just-the-parm-value","messageId":"175535"},"buildId":"q_bLpq2mflH0BeZigxpj6","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","openTelemetryClientEnabled":false,"openTelemetryConfigName":"smartbear","openTelemetryServiceVersion":"25.2.0","openTelemetryUniverse":"prod","openTelemetryCollector":"http://localhost:4318","openTelemetryRouteChangeAllowedTime":"5000","apolloDevToolsEnabled":false,"inboxMuteWipFeatureEnabled":false},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["./components/seo/QAPageSchema/QAPageSchema.tsx","./components/community/Navbar/NavbarWidget.tsx","./components/community/Breadcrumb/BreadcrumbWidget.tsx","./components/messages/TopicWithThreadedReplyListWidget/TopicWithThreadedReplyListWidget.tsx","./components/messages/MessageListForNodeByRecentActivityWidget/MessageListForNodeByRecentActivityWidget.tsx","./components/messages/RelatedContentWidget/RelatedContentWidget.tsx","./components/customComponent/CustomComponent/CustomComponent.tsx","./components/messages/MessageView/MessageViewStandard/MessageViewStandard.tsx","./components/messages/ThreadedReplyList/ThreadedReplyList.tsx","../shared/client/components/common/List/UnstyledList/UnstyledList.tsx","./components/messages/MessageView/MessageView.tsx","../shared/client/components/common/Pager/PagerLoadMore/PagerLoadMore.tsx","./components/messages/MessageView/MessageViewInline/MessageViewInline.tsx","./components/customComponent/CustomComponentContent/TemplateContent.tsx"],"appGip":true,"scriptLoader":[]}