LogoLogo
  • Welcome to Rewst
  • Documentation
    • Automations
      • Workflows
        • Workflow builder: How to set up a workflow
        • Task transitions
        • Data aliases
        • Best practices for designing workflows
        • Advanced workflow operations menu
        • Data input and output: Input variables and context variables
        • Option generator workflows
        • Completion handlers and workflow wrappers
        • Boolean logic in Rewst workflows
        • Document with RoboRewsty
      • Forms
        • Build a form with Rewst's Form Builder
        • Embed a form into an iFrame
        • Clone an existing form
        • Conditional fields
        • Form organizational variables
        • Troubleshoot unpacked Crate forms
      • Templates and scripts
      • Actions
        • Core actions
        • Rewst actions
        • Transform actions
          • Add or subtract from DateTime transform action
          • All transform action
          • Any transform action
          • Append with items results transform action
          • Compare dates transform action
          • Convert list to object transform action
          • Convert DateTime to timezone transform action
          • Defang transform action
          • Diff lists transform action
          • Flatten list transform action
          • Format date time transform action
          • Generate friendly password transform action
          • Get business days between dates transform action
          • Get DateTime transform action
          • Get days between dates transform action
          • Get list length transform action
          • Get string length transform action
          • Is JSON transform action
          • Map to an attribute within a list transform action
          • Merge lists transform action
          • Parse CSV transform action
          • Parse text to JSON transform action
          • Refang transform action
          • Remove duplicates from list transform action
          • Return element transform action
          • Select attribute transform action
          • Set list field value transform action
          • Set variable transform action
          • Sort transform action
          • Split text transform action
          • Transform list objects transform action
          • Trim variable transform action
        • Workflows actions
      • Triggers
        • Trigger criteria
        • Trigger use cases and examples
          • Customize PSA ticket triggers
          • Use webhook triggers
    • App Builder
      • Get started with App Builder
      • Components
        • Accordion component
        • Button component
        • Container component
        • Chart component
        • Data table component
        • Form component
        • Grid container component
        • Grid item component
        • Header component
        • HTML container component
        • Image component
        • Link component
        • Menu component
        • Row component
        • Sidebar component
        • Text component
        • Workflow input component
      • Prebuilt Apps: Available by request
        • Forms portal
        • End user portal
        • Operational analytics reporting portal
      • Manage your apps
      • Manage your pages
      • Domains
      • Permissions
      • Authentication
      • Themes
      • Page builder
    • Crates
      • Stewart's 30 favorite Crates
      • Production Crate list
      • Migrate between Crate versions
      • Crate deprecation FAQ
      • Crate guides
        • Ad-Hoc Install/Uninstall Software via Chocolatey Crate
        • Add Client to Rewst Crate
        • Alert on Expiring App Reg Certificates Crate
        • Alert on Expiring App Reg Secrets Crate
        • Amend Mailbox Permissions Crate
        • Billing Count Report Crate
        • Bulk Create Client from PSA Crate
        • Change a User’s Password Crate
        • Configure Organizational Variables
        • ConnectWise PSA Agreement Mapping Crate
        • CWM: Technician Toolbox via Pod Crate
        • Document M365 environment Crate
        • Document M365 groups setup
        • Document M365 shared mailboxes setup
        • Document M365 users setup
        • Document Rewst Form URLs (IT Glue/Hudu) Crate
        • Document User Details V2 Crate
        • Export Intune Policies and Configurations Crate
        • Identify Users in Bypass Mode Crate
        • Just in Time Admin Access Crate
        • M365 CSP/GDAP Permission Checker Crate
        • M365: Generate Org Chart Crate
        • Manage Duo Phones Crate
        • Mass Update Org Variables via CSV Crate
        • Microsoft 365 Quarantine Email Release Crate
        • Microsoft: User Offboarding Crate
        • Microsoft: User Onboarding Crate
          • Onboarding Crate process overview
          • Onboarding Identity provider configuration and setup
          • Onboarding form inputs and workflow process
          • Expanded features and customizing the Onboarding Crate
          • Onboarding context and organizational variables reference
          • Test and troubleshoot the Onboarding crate
        • New User Onboarding Crate
          • Identity provider setup - new user add
          • Step 1: Setting up organization variables
          • Step 2: New user onboarding form
          • Step 3: New user onboarding form minimalistic
        • Notify on Conditional Access Policy Changes Crate
        • OpenAI Ticket Categorization Crate
        • OpenAI Ticket Sentiment Analysis Crate
        • Remove Malicious Email and Block Sender Crate
        • Time Savings Report Crate
        • Triage SentinelOne Threat Alerts Crate
        • User Offboarding V2 Crate
        • View Rewst integration Org Variables
    • Configuration
      • Integrations
        • Top 5 integration types : Get started with integrations in Rewst
        • Multi-instance integration
          • Multi-instance integration setup
          • Integrate multiple instances of the same integration
        • Custom integrations
          • Custom integrations: V2
          • Custom integrations: V1
        • Integration guides
          • Acronis integration
          • Addigy integration
          • Anthropic integration
          • Asana integration
          • Auvik integration
          • BambooHR integration
          • Bitdefender GravityZone integration
          • BYOD for options generators
          • Cisco Meraki integration
          • ConnectSecure integration
          • ConnectWise Automate integration
          • ConnectWise PSA integration
          • ConnectWise ScreenConnect integration
          • Cork integration
          • Cove integration
          • CrowdStrike integration
          • Database integration setup
          • Datto Autotask PSA integration
          • Datto RMM integration
          • Discord integration
          • DNSFilter integration
          • Duo integration setup
          • Freshdesk integration
          • GitHub integration
          • GoDaddy integration
          • Google admin
            • Google Enterprise License Manager integration setup
            • Google Workspace Admin integration setup
          • HaloPSA integration
          • HubSpot integration
          • Hudu integration
          • Huntress integration
          • ImmyBot integration
          • Ingram Micro integration setup
          • IT Glue integration
          • ITPortal integration
          • Jira integration
          • JumpCloud integration
          • Kaseya BMS integration
          • Kaseya VSA integration
          • Kaseya VSA X integration
          • Liongard integration
          • Mailgun integration setup
          • Microsoft Cloud integration bundle
            • Prerequisites and best practices for Microsoft integrations
            • Owned app registration
            • Migrate legacy Microsoft integrations
            • Microsoft Azure
              • Microsoft Azure integration setup
              • Azure actions
            • Microsoft Graph
              • Microsoft Graph integration setup
              • Graph actions
              • Graph subscriptions
              • Send mail as an impersonated user using Microsoft Graph API
            • Microsoft CSP
              • Microsoft CSP integration setup
              • Rewst user setup and GDAP relationship guidance
              • Add a new client via Microsoft Cloud Solution Provider
            • Microsoft Exchange Online
              • Microsoft Exchange Online
              • Exchange Online and multi-property values
            • Microsoft Cloud permissions
            • Common issues with the Microsoft Cloud integration bundle
              • Embracing the Microsoft Minute
              • Troubleshooting installation issues
              • Graph error when using Sendmail as impersonated user
              • Navigating the Microsoft-led transition to GDAP (2023)
          • N-able N-central integration
          • N-able N-sight integration
          • Nerdio integration
          • NinjaOne integration
          • Nodeware integration
          • Notion integration
          • Okta integration setup
          • OpenAI
            • OpenAI integration
            • Azure OpenAI integration setup
          • Pax8 integration
          • Proofpoint integration
          • QuickBooks Online integration
          • SaaS Alerts integration
          • SentinelOne integration
          • ServiceNow integration
          • Sherweb integration
          • Shortcut integration
          • Slack integration
          • Slide integration
          • SonicWall NSM integration
          • Sophos integration
          • Stripe integration
          • SuperOps integration
          • SyncMonkey integration
          • Synnex Australia integration
          • TD Synnex Stellr integration
          • TD Synnex StreamOne Ion integration
          • Traceless integration
          • Twilio integration
          • Webroot integration
          • Xero integration
      • Organizations and organization variables
    • Rewst Tools
      • The Live Editor
      • PowerShell interpreter
    • Settings
      • Users
      • Organizations
      • Permissions and roles
      • Tags
    • Jinja
      • Intro to Jinja
      • Jinja essentials
      • Data types
      • List of Jinja filters
      • Jinja filter examples
      • Common Jinja examples
        • Conditional statements and logical operators
        • Jinja macros
        • Date-time comparisons
        • Block scope
        • Try/catch blocks
        • Generate CSVs dynamically with Jinja
        • Split strings, replace characters, and combine strings
        • Dictionary unpacking
        • Loops in Jinja
        • Mimick switch statements in Jinja
      • Jinja use cases and best practices
        • Work with Jinja lists
        • Combine Jinja lists
        • Jinja reserved keywords
        • Collect CTX variables dynamically using Jinja
        • Efficiently extract nested data
      • Internal Rewst Jinja examples
    • Agent Smith
      • Agent Smith configuration overview
      • Deploy Agent Smith with ImmyBot
      • Deploy Agent Smith with Microsoft Intune
  • Security
    • Incoming and outgoing domains and IPs
  • Terms and Definitions
    • Glossary of terms
  • Updates
    • Rewst Open Mic
      • Sign up to present at any Open Mic
      • Rewst Open Mics: North America
        • 2025 Rewst Open Mics: North America
          • May 16, 2025: Secure Your Help Desk with Face Match Automation
          • May 9, 2025: No Webhook? No Problem - Automating Microsoft Bookings with Emails
          • May 2, 2025: How One Trick Tamed This Workflow Builder's Chaos
          • April 25, 2025: From Guesswork to Gold – Automating Client Profitability with Precision
          • April 11, 2025:
          • April 4, 2025: Powershell in Rewst Preview
          • March 28, 2025: How Little Changes and Small Updates Bring BIG Value
          • March 21, 2025: Showing the First Workflow We Ever Made
          • March 14, 2025: An M365 Special! Workflows that Focus on Microsoft 365!
          • March 7, 2025: Microsoft Now Auditing P1 Licenses Usage
          • February 28, 2025: Cleanup Your Stale Devices with This Automation
          • February 21, 2025: Live from Right of Boom 2025, It's the Weekly ROC Open Mic!
          • February 14, 2025: Valentine's Day Edition
          • February 7, 2025: It's Official! Rewst Now Supports Agent Smith!
          • January 31, 2025: Aharon has some big news about platform improvments
          • January 24, 2025: Migration & compliance workflows... What's the cluck about powershell?
          • January 17, 2025: Cloudflare, Compliance, and Pro Tips
          • January 10, 2025: Simple Automation Demos, Device Lookups, and Payment Notificaitons
          • January 3, 2025: Pax8 OAuth, Connecting Multiple Products, GitHub Challenges
        • 2024 Rewst Open Mics: North America
          • December 27, 2024: Aharon Intro Quiz, Workflow Hacks, GraphQL Insights
          • December 20, 2024: MFA Updates, Onboarding, Vehicle Status & Bookings
          • December 13, 2024: JIT Crates, Faster Debugging, and API Wins
          • December 6, 2024: Mastering Patch Management, Budget Alerts, and Ticket Assignments
          • November 28, 2024 - How Listening to Your Workflows Can Improve Your Automations
          • November 22, 2024 - Efficiency Boosts, Password Insights, and D&D
          • November 15, 2024 - Mark Your Calendars for June 24 - June 26, 2025
          • November 8, 2024 - Live from ITNation 2024, it's the Open Mic!
          • November 1, 2024 - Free Remote Control by Automating RustDesk
          • October 25, 2024 - Oh? See What Just Hatched!
          • October 18, 2024 - The Teams Bot That Does Literally Everything
          • October 11, 2024 - Unlock Hidden Azure AD Data with this GENIUS Workflow Trick
          • October 4, 2024 - When This Integration Tells Rewst To Do Things For It
          • September 27, 2024 - 3 Examples of Automations that Help with Ticket Management
          • September 20, 2024 - How to Help The ROC Help You
          • September 13, 2024 - See How to Seamless Sync Calendly Events and Tickets with Rewst
          • September 6, 2024 - See This Custom Cloud Backup Integration Implemented in Rewst
          • August 30, 2024 - The Automation Rewst Uses to Introduce New Employees
          • August 23, 2024 - Build Workflows With Your Friends With This Upcoming Feature
          • August 16, 2024 - The Behind the Scenes of CyberDrain's CTF
          • August 9, 2024 - Aharon Makes a Huge Announcement
          • August 2, 2024 - Provision the Entire Microsoft Teams Bot Framework with a Single Form
          • July 26, 2024 - Transform Your ConnectWise Experience with App Platform
          • July 19, 2024 - What Everyday Life Can Teach Us About Automation
          • July 12, 2024 - We've Been Trying to Reach You Regarding Your Device's Extended Warranty
          • July 5, 2024 - Freedom to Innovate Day!
          • June 28, 2024 - Still Wondering About the Token from FLOW?
          • June 21, 2024 - Post FLOW Glow
          • June 14, 2024 - The One Trick That Boosts Your Screen Share Experience in Teams by 10X
          • June 7, 2024 - Discover the Lessons Your Workflows are Trying to Teach You
          • May 31, 2024 - Simplify Organization Variables by 10X With This 1 Trick
          • May 24, 2024 - ImmyBot + Rewst = Better Together
          • May 17, 2024 - Solve All Your Meal Prep Problems With This Automation
          • May 10, 2024 - The Most Requested Integration has Finally Been Added to Rewst
          • May 3, 2024 - The Flow Announcement that Made Our Marketing Team Nervous
          • April 26, 2024 - Come See What Pizza's Cooked Up
          • April 19, 2024 - Bring Back Negative Time Savings or Implement Folders?
          • April 12, 2024 - Hey Siri, Make a Ticket! Alexa, Close My Ticket
          • April 5, 2024 - The Microsoft Bundle You Can't Miss Out On
          • March 22, 2024 - App Platform Maddness
          • March 15, 2024 - What to Automate First When Getting Started with Rewst?
          • March 8, 2024 - Live from Right of Boom, it's the ROC Open Mic
          • March 1, 2024 - Early Bird Specials for Flow in the Kewp
          • February 23, 2024 - Pardon My Jinja
          • February 16, 2024 - Pizza's Cooking in the Oven
          • February 9, 2024 - Becoming a Jinja Ninja with the New Live Editor
          • February 2, 2024 - Inside the Eye of the Brainstrom
          • January 26, 2024 - New Feature On the Horizon + App Platform Demos
          • January 19, 2024 - Beta Features, Webhooks, and a Journey through Workflow Creation
          • January 12, 2024 - Alpha App Platform Demos
          • January 5, 2024 - Happy New Year! Azure Tables and GDAP Troubleshooting
        • 2023 Rewst Open Mics: North America
          • January 6, 2023 - Capacity Alert - Your Inbox is at 99%
          • January 13, 2023 - Form Management, Asset Management and Tag Management
          • January 20, 2023 - Backend Re-Architecture Episode II - Attack of the Clones
          • January 27, 2023 - Rewst User Creation Inception and Automating Package Deliveries
          • February 3, 2023 - AI generated diagnostics!
          • February 10, 2023 - Todays Description Brought to You by ChatGPT
          • February 17, 2023 - Trigger Review and QA
          • February 24, 2023 - NC20 and R0C2 Show Off Auvik Integration and Workflows
          • March 3, 2023 - New Webhooks, Tracking Steam Deals, and Templates? Oh my!
          • March 10, 2023 - Get those workflows in line
          • March 17, 2023 - Email tracking, workflow listening and URL parametering
          • March 24, 2023 - The Truly Open Mic - Coming back from the Onsite
          • March 31, 2023 - All Hail King Brandon (from eTop)
          • April 7, 2023 - Tech Talk - GitHub, Azure OpenAI, and Improving User Experience
          • April 14, 2023 - Introducing Cluck U!
          • April 21, 2023 - [Redacted] and Custom Integrations
          • April 28, 2023 - Tools and Techniques for Streamlining Workflows and Building Relationships
          • May 5, 2023 - New Integrations, Epic Workflows, and Exciting things to come!
          • May 12, 2023 - The Legend of Rewst - Unsupported Custom Integrations (and more!)
          • May 19, 2023 - Custom Integrations are live and Custom Workflows from Customers and Partner Service
          • May 26, 2023 - Automation and Terrifying Space Chickens
          • June 2, 2023 - New Beginnings and Saving time with Rewst
          • June 9, 2023 - Automation Doesn't Have To Be Like Pulling Teeth
          • June 23, 2023 - Will The Real Aharon Chernin Please Stand Up?
          • June 16, 2023 - The Toasted Kelvin and Brandon Brandwich
          • June 30, 2023 - No Brandwich But It's Still Chowtime
          • July 7, 2023 - Fowl Play with OpenAI and Azure OpenAI
          • July 14, 2023 - Go Hug Your IT Person
          • July 21, 2023 - Transform(er)s – Jinja in Disguise
          • July 28, 2023 - Who's that Docu-mon? It's GitBook!
          • August 4, 2023 - Aharon on a Plane
          • August 11, 2023 - If You Smell What the ROC is Cooking
          • August 18, 2023 - Info Nuggets and Jinja Burgers
          • August 25, 2023 - Looks like Brandwich's Back On the Menu
          • September 1, 2023 - Applying Cube Rules of Food to Automations
          • September 8, 2023 - Special Guest Automation from Down Under
          • September 15, 2023 - If You Smell What The ROC Is Cooking Pt.2
          • September 22, 2023 - Efficient Onboarding, Custom Integrations, and SQL Magic
          • September 29, 2023 - No Microtransactions with These New Crates
          • October 6, 2023 - MFA Buffet
          • October 13, 2023 - Mail Tracking, Error Handling, and Onsite Requests
          • October 20, 2023 - Sophos Firmware Updates, CSP Connectors, and GDAP Documentation Workflows
          • October 27, 2023 - Rewst API w/ Webhooks, Email Signatures, Content Filters, and Secret Santa
          • November 3, 2023 - Huge Rewst Announcements You Can’t Miss Out On
          • November 17, 2023 - Domo Arigato, Rewsty Roboto
          • December 1, 2023 - App Platform, Ticket Generation, and Custom Integrations
          • December 8, 2023 - Never Send a Human to Do a Machine's Job
          • December 15, 2023 - Compromised Users, Automated Documentation, and Troubleshooting Errors
          • December 22, 2023 - Simply Having a Wonderful Rewsty Time
          • December 29, 2023 - Last Open Mic of 2023!
          • July 14, 2023 - Go Hug Your IT Person
          • November 24, 2023 - Thanksgiving Edition, Canadian Takeover
        • 2022 Rewst Open Mics: North America
          • May 27, 2022 - Graph API
          • June 3, 2022 - Connectwise Pods
          • June 10, 2022 - Interactive Teams Messages
          • June 24, 2022 - The Rewst Crate Marketplace
          • June 17, 2022 - How to use Jinja in Rewst
          • July 1, 2022 - Leaping and Looping through your data
          • July 8, 2022 - New ways to deal with data and client example workflows!
          • July 15, 2022 - The Rewst platform and how to use DateTime comparisons in Jinja
          • July 22, 2022 - How can you utilise webhooks in Rewst?
          • July 29, 2022 - How do you know that the person on the phone is who they say?
          • August 5, 2022 - SUPER AWESOME NEW FEATURE!
          • August 12, 2022 - New Results Page
          • August 19, 2022 - Friendly Password Generator & ROC Assistance
          • August 26, 2022 - Data retention & Cron Jobs
          • September 2, 2022 - Debugging Workflows
          • September 9, 2022 - Microsoft 365 Delegation
          • September 16, 2022 - Immybot & Parse ticket data
          • September 23, 2022 - Context Switching
          • October 7, 2022 - ConnectWise Manage Agreement Sync
          • October 14, 2022 - QOL Changes & With Items Walkthrough
          • October 21, 2022 - Bring! Your! Own! Database!
          • October 28, 2022 - ImmyBot & User Offboarding
          • November 4, 2022 - Your Workflows are Listening 👀
          • November 18, 2022 - Jinja Conditions in Templates / Scripts
          • December 2, 2022 - Using custom HTTP requests (HaveIBeenPwned) with your existing integrations
          • December 9, 2022 - Jinja expansion. Plus, Mendy & Jared!
          • December 16, 2022 - Tackle tough ticket triage troubles and flatten funkily formatted lists
      • Rewst Open Mics: Europe
        • 2025 Rewst Open Mics: Europe
          • May 1, 2025: Auto-Document Everything with This Brilliant IT Glue Automation!
          • April 3, 2025: The Very First EU Open Mic!
      • ROC Open Mics: Oceania
        • 2025 Rewst Open Mics: Oceania
          • May 2, 2025: Smarter Microsoft Integrations & Workflows – Tips from the Rewst Open Mic
          • April 4, 2025: The Very First ANZ Open Mic!
    • Development updates
      • 2025 Dev updates
        • May 23, 2025 - Dev update
        • May 16, 2025 - Dev update
        • May 9, 2025 - Dev update
        • May 2, 2025 - Dev update
        • April 25, 2025 - Dev update
        • April 18, 2025 - Dev update
        • April 11, 2025 - Dev update
        • April 4, 2025 - Dev update
        • March 28, 2025 - Dev update
        • March 21, 2025 - Dev update
        • March 14, 2025 - Dev update
        • February 28, 2025 - Dev update
        • February 21, 2025 - Dev update
        • February 14, 2025 - Dev update
        • February 7, 2025 - Dev update
        • January 24, 2025 - Dev update
        • January 17, 2025 - Dev update
        • January 10, 2025 - Dev update
      • 2024 Dev updates
        • December 27, 2024 - Dev update
        • December 20, 2024 - Dev update
        • December 13, 2024 - Dev update
        • December 6, 2024 - Dev update
        • November 29, 2024 - Dev update
        • November 8, 2024 - Dev Update
        • October 25, 2024 - Dev Update
        • October 18, 2024 - Dev Update
        • October 11, 2024 - Dev Update
        • October 4, 2024 - Dev Update
        • September 27, 2024 - Dev Update
        • September 13, 2024 - Dev Update
        • September 6, 2024 - Dev Update
        • August 30, 2024 - Dev Update
        • August 23, 2024 - Dev Update
        • August 16, 2024 - Dev Update
        • August 9, 2024 - Dev Update
          • August 2, 2024 - Dev Update
        • July 26, 2024 - Dev Update
        • July 19, 2024 - Dev Update
        • July 12, 2024 - Dev Update
        • July 5, 2024 - Dev Update
        • June 28, 2024 - Dev Update
        • June 14, 2024 - Dev Update
        • June 7, 2024 - Dev Update
        • May 31, 2024 - Dev Update
        • May 24, 2024 - Dev Update
        • May 17, 2024 - Dev Update
        • May 10, 2024 - Dev Update
        • May 3, 2024 - Dev Update
        • April 26, 2024 - Dev Update
        • April 19, 2024 - Dev Update
        • April 12, 2024 - Dev Update
        • April 5, 2024 - Dev Update
        • March 22, 2024 - Dev Update
        • March 8, 2024 - Dev Update
        • March 1, 2024 - Dev Update
        • February 23, 2024 - Dev Update
        • February 16, 2024 - Dev Update
        • February 9, 2024 - Dev Update
        • February 2, 2024 - Dev Update
        • January 19, 2024 - Dev Update
        • January 12, 2024 - Dev Update
        • January 5, 2024 - Dev Update
      • 2023 Dev updates
        • December 29, 2023 - Dev Update
        • December 22, 2023 - Dev Update
        • December 15, 2023 - Dev Update
        • December 8, 2023 - Dev Update
        • December 1, 2023 - Dev Update
        • November 17, 2023 - Dev Update
        • November 3, 2023 - Dev Update
        • October 27, 2023 - Dev Update
        • October 20, 2023 - Dev Update
        • October 13, 2023 - Dev Update
        • October 6, 2023 - Dev Update
        • September 29, 2023 - Dev Update
        • September 22, 2023 - Dev Update
        • September 8, 2023 - Dev Update
        • September 1, 2023 - Dev Update
        • August 25, 2023 - Dev Update
        • August 18, 2023 - Dev Update
        • August 11, 2023 - Dev Update
        • August 4, 2023 - Dev Update
        • July 28, 2023 - Dev Update
        • July 21, 2023 - Dev Update
        • July 14, 2023 - Dev Update
        • July 7, 2023 - Dev Update
        • June 30, 2023 - Dev Update
        • June 23, 2023 - Dev Update
        • June 16, 2023 - Dev Update
        • June 9, 2023 - Dev Update
        • June 2, 2023 - Dev Update
        • May 26, 2023 - Dev Update
        • May 19, 2023 - Dev Update
        • May 12, 2023 - Dev Update
        • May 5, 2023 - Dev Update
        • April 28, 2023 - Dev Update
        • April 21, 2023 - Dev Update
        • April 14, 2023 - Dev Update
        • March 31, 2023 - Dev Update
        • March 17, 2023 - Dev Update
        • March 10, 2023 - Dev Update
        • March 3, 2023 - Dev Update
        • February 24, 2023 - Dev Update
        • February 17, 2023 - Dev Update
        • February 10, 2023 - Dev Update
        • February 3, 2023 - Dev Update
        • January 27, 2023 - Dev Update
        • January 20, 2023 - Dev Update
        • January 13, 2023 - Dev Update
        • January 6, 2023 - Dev Update
      • 2022 Dev updates
        • December 16, 2022 - Dev Update
        • December 9, 2022 - Dev Update
        • December 2, 2022 - Dev Update
        • November 18, 2022 - Dev Update
        • November 4, 2022 - Dev Update
        • October 28, 2022 - Dev Update
    • Training updates
      • 2025 Training updates
        • May 23, 2025 - Training update
        • May 16, 2025 - Training update
        • May 9, 2025 - Training update
        • May 2, 2025 - Training update
        • April 25, 2025 - Training update
        • April 11, 2025 - Training update
        • April 4, 2025 - Training update
        • March 28, 2025 - Training update
        • March 21, 2025 - Training update
        • March 14, 2025 - Training update
        • March 7, 2025 - Training update
        • February 28, 2025 - Training update
        • February 21, 2025 - Training update
        • February 14, 2025 - Training update
        • February 7, 2025 - Training update
        • January 31, 2025 - Training update
        • January 17, 2025 - Training update
        • January 10, 2025 - Training update
        • January 3, 2025 - Training update
      • 2024 Training updates
        • December 20, 2024 - Training Update
        • December 13, 2024 - Training Update
        • December 6, 2024 - Training Update
        • November 22, 2024 - Training Update
        • November 15, 2024 - Training Update
        • November 8, 2024 - Training Update
        • November 1, 2024 - Training Update
        • October 25, 2024 - Training Update
        • October 18, 2024 - Training Update
        • October 11, 2024 - Training Update
        • October 4, 2024 - Training Update
        • September 27, 2024 - Training Update
        • September 20, 2024 - Training Update
        • September 13, 2024 - Training Update
        • September 6, 2024 - Training Update
        • August 30, 2024 - Training Update
        • August 23, 2024 - Training Update
        • August 16, 2024 - Training Update
        • August 9, 2024 - Training Update
        • August 2, 2024 - Training Update
        • July 26, 2024 - Training Update
        • July 19, 2024 - Training Update
        • July 12, 2024 - Training Update
        • June 28, 2024 - Training Update
        • June 14, 2024 - Training Update
        • June 7, 2024 - Training Update
        • May 31, 2024 - Training Update
        • May 24, 2024 - Training Update
        • May 17, 2024 - Training Update
        • May 10, 2024 - Training Update
        • May 3, 2024 - Training Update
        • April 26, 2024 - Training Update
        • April 19, 2024 - Training Update
        • April 12, 2024 - Training Update
        • April 5, 2024 - Training Update
        • March 22, 2024 - Training Update
        • March 15, 2024 - Training Update
        • March 8, 2024 - Training Update
        • March 1, 2024 - Training Update
        • February 23, 2024 - Training Update
        • February 16, 2024 - Training Update
        • February 9, 2024 - Training Update
        • February 2, 2024 - Training Update
        • January 19, 2024 - Training Update
        • January 12, 2024 - Training Update
        • January 5, 2024 - Training Update
      • 2023 Training updates
        • December 15, 2023 - Training Update
        • December 8, 2023 - Training Update
        • December 1, 2023 - Training Update
        • November 24, 2023 - Training Update
        • November 17, 2023 - Training Update
        • November 3, 2023 - Training Update
        • October 27, 2023 - Training Update
        • October 20, 2023 - Training Update
        • October 13, 2023 - Training Update
        • October 6, 2023 - Training Update
        • September 29, 2023 - Training Update
        • September 22, 2023 - Training Update
        • September 15, 2023 - Training Update
        • September 8, 2023 - Training Update
        • September 1, 2023 - Training Update
        • August 25, 2023 - Training Update
        • August 18, 2023 - Training Update
        • August 11, 2023 - Training Update
        • August 4, 2023 - Training Update
        • July 21, 2023 - Training Update
        • July 14, 2023 - Training Update
        • July 7, 2023 - Training Update
        • June 30, 2023 - Training Update
        • June 23, 2023 - Training Update
        • June 16, 2023 - Training Update
        • June 9, 2023 - Training Update
        • June 2, 2023 - Training Update
        • May 26, 2023 - Training Update
        • May 19, 2023 - Training Update
        • May 12, 2023 - Training Update
        • May 5, 2023 - Training Update
        • April 28, 2023 - Training Update
        • March 17, 2023 - Training Update
        • March 10, 2023 - Training Update
        • January 27, 2023 - Training Update
        • January 13, 2023 - Training Update
        • January 6, 2023 - Training Update
        • July 28, 2023 - Training Update
      • 2022 Training updates
        • December 16, 2022 - Training Update
        • December 2, 2022 - Training Update
        • November 18, 2022 - Training Update
        • November 4, 2022 - Training Update
        • October 28, 2022 - Training Update
        • November 4, 2022 - Training Update
        • October 28, 2022 - Training Update
    • Crate Marketplace updates
      • 2025 Crate Marketplace updates
        • May 23rd, 2025 - Marketplace Update
        • May 16th, 2025 - Marketplace Update
        • May 9th, 2025 - Marketplace Update
        • May 2nd, 2025 - Marketplace Update
        • April 25th, 2025 - Marketplace Update
        • April 11th, 2025 - Marketplace Update
        • April 4th, 2025 - Marketplace Update
        • March 28th, 2025 - Marketplace Update
        • March 14th, 2025 - Marketplace Update
        • February 28th, 2025 - Marketplace Update
        • February 21st, 2025 - Marketplace Update
        • February 14th, 2025 - Marketplace Update
        • February 7th, 2025 - Marketplace Update
        • January 31st, 2025 - Marketplace Update
        • January 17th, 2025 - Marketplace Update
        • January 10th, 2025 - Marketplace Update
        • January 3rd, 2025 - Marketplace Update
      • 2024 Crate Marketplace updates
        • December 20th, 2024 - Marketplace Update
        • December 13th, 2024 - Marketplace Update
        • December 6th, 2024 - Marketplace Update
        • November 29th, 2024 - Marketplace Update
        • November 22nd, 2024 - Marketplace Update
        • November 15th, 2024 - Marketplace Update
        • November 8th, 2024 - Marketplace Update
        • November 1st, 2024 - Marketplace Update
        • October 25th, 2024 - Marketplace Update
        • October 18th, 2024 - Marketplace Update
        • October 11th, 2024 - Marketplace Update
        • October 4th, 2024 - Marketplace Update
        • September 27th, 2024 - Marketplace Update
        • September 20th, 2024 - Marketplace Update
        • September 13th, 2024 - Marketplace Update
        • September 6th, 2024 - Marketplace Update
        • August 30th, 2024 - Marketplace Update
        • August 23rd, 2024 - Marketplace Update
        • August 16th, 2024 - Marketplace Update
        • August 2nd, 2024 - Marketplace Update
        • July 26th, 2024 - Marketplace Update
        • July 19th, 2024 - Marketplace Update
        • July 12th, 2024 - Marketplace Update
        • July 5th, 2024 - Marketplace Update
        • June 28th, 2024 - Marketplace Update
        • June 21st, 2024 - Marketplace Update
        • June 14th, 2024 - Marketplace Update
        • June 7th, 2024 - Marketplace Update
        • May 31st 2024 - Marketplace Update
    • App Builder AMAs
      • 2025 App Builder AMAs
        • Mar 5, 2025: A New Project Manager Has Appeared
        • Feb 19, 2025: A Custom Customer Portal and Making Rewst inside of Rewst
        • Feb 5, 2025: Rewst App Builder updates + live demo of new options filter
        • Jan 8, 2025: Portals, Features, Design Updates, and Future Plans
      • 2024 App Builder AMAs
        • Nov 27, 2024: Workflow management in App Builder, plus permissions and role-based access
        • Nov 13, 2024: Cloning, app Crates, syncing custom components, and app list page enhancements
        • Oct 30, 2024: App Builder team progress, meet Sarah, and import and export features
        • Oct 16, 2024: Client portal use cases
        • Oct 2, 2024: New client onboarding, high ticket listing
        • Sept 18, 2024: Our first App Builder AMA
    • Alerts
  • Support and Community
    • Rewst support
      • Support priorities
      • Scope of support
      • Discord join and verification
      • Create a ticket via Discord
      • Collecting diagnostics with browser developer tools
      • Find your Rewst instance region
      • Rewst support: Allow write access
    • Cluck University
  • Contact resources
Powered by GitBook

Follow

  • 🤖 GitHub

Get support

  • 👾 Discord

Request a feature

  • 💡 Canny

© 2025 Rewst

On this page

Was this helpful?

Edit on GitHub
  1. Documentation
  2. Jinja

List of Jinja filters

PreviousData typesNextJinja filter examples

Last updated 19 days ago

Was this helpful?

Jinja filters are used to modify the value of a variable. You use them with the pipe (|) symbol. In any Jinja editor in the Rewst platform, see what's available by using | character within {{ }} .

Function
Description

abs

Return the absolute value of the argument.

all

Return :py:data:True if none of the elements of the (async) iterable are false.

any

Return :py:data:False if none of the elements of the (async) iterable are true.

as_timezone

Return a string representation of a datetime in a particular format. dt: The inputted datetime object. If a string is passed, it will be parsed into a datetime timezone: The timezone to convert the datetime to. This can be a timezone name from the IANA db (e.g. 'America/New_York') There is a corresponding action in the 'transforms' pack that uses this filter - convert_datetime_to_timezone filter_objective: Convert a datetime object to a different timezone.

attr

Get an attribute of an object. foo

base64

Encode a string in base64. urlsafe: Whether to return a URL-safe base64 format. '-' is used instead of '+', and '_' instead of '/'.

basename

A filter to get the last name of a windows style file path.

batch

A filter that batches items. It works pretty much like slice but the other way round. It returns a list of lists with the given number of items. If you provide a second parameter this is used to fill up missing items.

capitalize

Capitalize a value. The first character will be uppercase, all others lowercase.

center

Centers the value in a field of a given width.

combine

{{ {'a':1, 'b':2} | combine({'b':3}) }} The resulting hash would be: {'a':1, 'b': 3}

Parameters:

  • recursive:

    • False: Only the top level keys are merged (default)

    • True: Recursively merge dictionaries including nested dictionaries

  • list_merge:

    • replace: Replace lists with the new value by overwriting (default)

    • append: Append the new value to the older one

    • append_rp: Append newer values to the older one, but overwrite duplicates

    • keep: Keep the older value, discard the new value

    • prepend: Add new values in front of the older one

    • prepend_rp: Add newer values in front of the older one, but discard duplicates

Other examples:

{{ {'a':1, 'b': {'c':2} } | combine({'b': {'d': 3} }, recursive=False) }}The resulting hash would be: {'a': 1, 'b': {'d':3}}

{{ {'a':1, 'b':2} | combine({'b':3} list_merge='keep') }}The resulting hash would be: {'a':1, 'b':2}

convert_from_epoch

Convert an epoch timestamp to a datetime object convert_from_epoch(1549892280) datetime.datetime(2019, 2, 11, 13, 38)

count

Return the number of items in a container.

csv

Dump a list of rows (as dicts, or lists) to CSV format fieldnames: Controls which keys in each dict to include in CSV output. If rows are expressed as lists of strings instead of dicts, fieldnames will be emitted as the first row (i.e. column headers). writeheader: Whether to write the fieldnames as the first row in the CSV file delimiter: Delimiter separating values in the CSV file quotechar: Character used to enclose values in the CSV file escapechar: Character used to escape embedded quotechars within values doublequote: If True, two consecutive quotes are interpreted as one skipinitialspace: Whether to ignore whitespace immediately following delimiters, or to treat them as part of the value lineterminator: The character sequence which terminates rows quoting: Controls when quotes should be generated

d

If the value is undefined it will return the passed default value, otherwise the value of the variable. This will output the value of my_variable if the variable was defined, otherwise 'my_variable is not defined'. If you want to use default with variables that evaluate to false you have to set the second parameter to true. versionchanged:: 2.11 It's now possible to configure the :class:~jinja2.Environment with :class:~jinja2.ChainableUndefined to make the default filter work on nested elements and attributes that may contain undefined values in the chain without getting an :exc:~jinja2.UndefinedError.

datedelta

Add or subtract a number of years, months, weeks, or days from a datetime value: The inputted datetime object. If a string is passed, it will be parsed into a datetime years: Number of years to add or subtract from the datetime months: Number of months to add or subtract from the datetime weeks: Number of weeks to add or subtract from the datetime days: Number of days to add or subtract from the datetime hours: Number of hours to add or subtract from the datetime minutes: Number of minutes to add or subtract from the datetime seconds: Number of seconds to add or subtract from the datetime microseconds: Number of microseconds to add or subtract from the datetime day: The day of the month to set the datetime to. If the day is not valid for the month, the last day of the month is used. weekday: The day of the week to return. The value can be an integer (0-6) or a string (e.g. 'monday', 'tuesday', etc.) If the input string is not all lowercase, it will be converted to lowercase. When used in conjuctgin with the day parameter, the day parameter will be used to determine the week of the month. For example, if day=1 and weekday='monday', the first monday of the month will be returned. The math logic is a bit odd and can be reviewed in the tests. All 1st days of the week are in the 1-7 range, 2nd days of the week are in the 8-14 range, 3rd days of the week are in the 15-21 range, 4th days of the week are in the 22-28 range, 5th days of the week are in the 29-31 range. See doctests for more examples. datedelta('2020-01-01', days=1) datetime.datetime(2020, 1, 2, 0, 0)

default

If the value is undefined it will return the passed default value, otherwise the value of the variable. This will output the value of my_variable if the variable was defined, otherwise 'my_variable is not defined'. If you want to use default with variables that evaluate to false you have to set the second parameter to true. versionchanged:: 2.11 It's now possible to configure the :class:~jinja2.Environment with :class:~jinja2.ChainableUndefined to make the default filter work on nested elements and attributes that may contain undefined values in the chain without getting an :exc:~jinja2.UndefinedError.

dict

This filter transforms lists into dictionaries.

dictsort

Sort a dict and yield (key, value) pairs. Python dicts may not be in the order you want to display them in, so sort them first.

dirname

To get the directory from a path.

e

Replace the characters &, <, >, ', and " in the string with HTML-safe sequences. Use this if you need to display text that might contain such characters in HTML. If the object has an html method, it is called and the return value is assumed to already be safe for HTML. s: An object to be converted to a string and escaped. :return: A :class:Markup string with the escaped text.

enumerate

An async iterator of running count and element in an (async) iterable The count begins at start for the first element of iterable, and is incremented by 1 for each further element. The iterable may be a regular or async iterable.

escape

Replace the characters &, <, >, ', and " in the string with HTML-safe sequences. Use this if you need to display text that might contain such characters in HTML. If the object has an html method, it is called and the return value is assumed to already be safe for HTML. s: An object to be converted to a string and escaped. :return: A :class:Markup string with the escaped text.

filesizeformat

Format the value like a 'human-readable' file size (i.e. 13 kB, 4.1 MB, 102 Bytes, etc). Per default decimal prefixes are used (Mega, Giga, etc.), if the second parameter is set to True the binary prefixes are used (Mebi, Gibi).

first

Return the first item of a sequence.

flatten

Flatten a list of lists. lst: The inputted list to flatten. If the input is not a list, it will raise an error.

float

Convert the value into a floating point number. If the conversion doesn't work it will return 0.0. You can override this default using the first parameter.

forceescape

Enforce HTML escaping. This will probably double escape variables.

format

format_datetime

Return a string representation of a datetime in a particular format. output_format: The strftime datetime format specification to output datetime string in.

from_json_string

Deserialize from a JSON-serialized string

from_yaml_string

Deserialize from a YAML-serialized string

groupby

Group a sequence of objects by an attribute using Python's :func:itertools.groupby. The attribute can use dot notation for nested access, like "address.city". Unlike Python's groupby, the values are sorted first so only one group is returned for each unique value. For example, a list of User objects with a city attribute can be rendered in groups. In this example, grouper refers to the city value of the group. groupby yields namedtuples of (grouper, list), which can be used instead of the tuple unpacking above. grouper is the value of the attribute, and list is the items with that value. You can specify a default value to use if an object in the list does not have the given attribute. Like the :func:~jinja-filters.sort filter, sorting and grouping is case-insensitive by default. The key for each group will have the case of the first item in that group of values. For example, if a list of users has cities ["CA", "NY", "ca"], the "CA" group will have two values. This can be disabled by passing case_sensitive=True. versionchanged:: 3.1 Added the case_sensitive parameter. Sorting and grouping is case-insensitive by default, matching other filters that do comparisons. versionchanged:: 3.0 Added the default parameter. versionchanged:: 2.6 The attribute supports dot notation for nested access.

hmac

Return the bytes digest of the HMAC.

Usage:

or

returns

algorithm: one of the following supported hashing algorithms.

  • md5

  • sha1

  • shake_128

  • blake2s

  • sha3_256

  • sha512

  • sha3_512

  • shake_256

  • sha256

  • sha3_224

  • blake2b

  • sha224

  • sha384

  • sha3_384

key: The shared secret used to calculate the HMAC digest and authenticate the message. The security and strength of the HMAC depend on the secrecy and complexity of the key.

hex

Returns hex representations of bytes objects and UTF-8 strings. Usage: {{ 'my_msg' | hex }} returns 6d795f6d7367

indent

Return a copy of the string with each line indented by 4 spaces. The first line and blank lines are not indented by default. width: Number of spaces, or a string, to indent by. first: Don't skip indenting the first line. blank: Don't skip indenting empty lines. versionchanged:: 3.0 width can be a string. versionchanged:: 2.10 Blank lines are not indented by default.

int

Convert the value into an integer. If the conversion doesn't work it will return 0. You can override this default using the first parameter. You can also override the default base (10) in the second parameter, which handles input with prefixes such as 0b, 0o and 0x for bases 2, 8 and 16 respectively. The base is ignored for decimal numbers and non-string values.

is_json

Determines whether or not a string can be converted to a JSON object.

is_type

Checks the type of the object the filter is being applied to, parameter supplied is for the type to check for. This returns a boolean value. Example: {{ {}|is_type("dict") }} Available options are:

  • str

  • string

  • int

  • integer

  • float

  • number

  • list

  • dict

  • dictionary

  • set

  • tuple

  • bool

  • boolean

items

Return an iterator over the (key, value) items of a mapping.

join

Return a string which is the concatenation of the strings in the sequence. The separator between elements is an empty string per default, you can define it with the optional parameter. It is also possible to join certain attributes of an object. versionadded:: 2.6 The attribute parameter was added.

json

Parse a JSON-serialized string

json_dump

Serialize value to JSON

json_escape

Add escape sequences to problematic characters in the string This filter simply passes the value to json.dumps as a convenient way of escaping characters in it, then strips the enclosing double-quotes.

json_parse

Deserialize from a JSON-serialized string

json_stringify

Serialize value to JSON

jsonpath_query

last

Return the last item of a sequence. Note: Does not work with generators. You may want to explicitly convert it to a list.

length

Return the number of items in a container.

list

Create a :py:class:list from an (async) iterable. This is equivalent to [element async for element in iterable].

load_datetime

Parse a datetime string with a known format specification. date_format: The strftime datetime format specification to use in parsing. If not specified, datetime string is assumed to be in Python-flavored ISO8601 format.

lower

Convert a value to lowercase.

map

Applies a filter on a sequence of objects or looks up an attribute. This is useful when dealing with lists of objects but you are really only interested in a certain value of it. The basic usage is mapping on an attribute. Imagine you have a list of users but you are only interested in a list of usernames: You can specify a default value to use if an object in the list does not have the given attribute. Alternatively you can let it invoke a filter by passing the name of the filter and the arguments afterwards. A good example would be applying a text conversion filter on a sequence: Similar to a generator comprehension such as: versionchanged:: 2.11.0 added the default parameter. versionadded:: 2.7

max

Return the largest item from an (async) iterable or from two or more values :raises ValueError: if iterable is empty and default is not set The key argument specifies a one-argument ordering function like that used for :py:meth:list.sort. It may be a regular or async callable and defaults to the identity function. The default argument specifies an object to return if the provided iterable is empty. If the iterable is empty and default is not provided, a :py:exc:ValueError is raised.

min

Return the smallest item from an (async) iterable or from two or more values :raises ValueError: if iterable is empty and default is not set The key argument specifies a one-argument ordering function like that used for :py:meth:list.sort. It may be a regular or async callable and defaults to the identity function. The default argument specifies an object to return if the provided iterable is empty. If the iterable is empty and default is not provided, a :py:exc:ValueError is raised.

parse_csv

Parse a CSV string into a list of dicts, with column headers as keys A list of list of strings (i.e. a collection of rows, each row containing column values) may be passed instead of a CSV. fieldnames: Names of each column to be used as keys in each row dict. If the first row of the CSV file is not the header, this parameter may be used to specify column names. restkey: If a row is missing values for columns, the list of missing column names will be placed under this key in the row dict. restval: If a row has more values than declared columns, the extra values will be placed under this key in the row dict. delimiter: Delimiter separating values in the CSV file quotechar: Character used to enclose values in the CSV file escapechar: Character used to escape embedded quotechars within values doublequote: If True, two consecutive quotes are interpreted as one skipinitialspace: Whether to ignore whitespace immediately following delimiters, or to treat them as part of the value lineterminator: The character sequence which terminates rows

parse_datetime

Parse a datetime string without knowing its format specification. This method of parsing is more lenient than load_datetime dayfirst: Whether to interpret the first value in an ambiguous 3-integer date (e.g. 01/05/09) as the day (True) or month (False). If yearfirst is set to True, this distinguishes between YDM and YMD. If set to None, this value is retrieved from the current :class:parserinfo object (which itself defaults to False). yearfirst: Whether to interpret the first value in an ambiguous 3-integer date (e.g. 01/05/09) as the year. If True, the first number is taken to be the year, otherwise the last number is taken to be the year. If this is set to None, the value is retrieved from the current :class:parserinfo object (which itself defaults to False). fuzzy: Whether to allow fuzzy parsing, allowing for string like "Today is January 1, 2047 at 8:21:00AM". ignoretz: If set True, time zones in parsed strings are ignored and a naive :class:datetime object is returned.

pprint

Pretty print a variable. Useful for debugging.

random

Return a random item from the sequence.

reduce

Reduce an (async) iterable by cumulative application of an (async) function. :raises TypeError: if iterable is empty and initial is not given Applies the function from the beginning of iterable, as if executing await function(current, anext(iterable)) until iterable is exhausted. Note that the output of function should be valid as its first input. The optional initial is prepended to all items of iterable when applying function. If the combination of initial and iterable contains exactly one item, it is returned without calling function.

regex_findall

To occurrences of regex matches in a string, use the regex_findall filter.

regex_match

This function is used to determine if a string matches a particular pattern. It takes three parameters: * value: This is the string to be matched. * pattern: This is the regular expression pattern to match against. * ignorecase: This is a boolean value to decide whether to ignore the case of the characters while matching. It first checks whether value is a string or not. If it's not, it converts value to a string. Then it uses the _get_regex_flags function (which is not defined in the provided code) to set the regular expression flags based on the ignorecase parameter. The function re.match() is then used to check if the pattern matches the beginning of the value. The result is converted to a boolean and returned.

regex_replace

To replace text in a string with regex, use the regex_replace filter.

regex_search

To search in a string with a regular expression and detect matches within a string, use the regex_search filter. It will return a boolean (true/false) if the defined regex exists within the string.

regex_substring

This function is used to find all the substrings in a string that match a particular pattern and return the substring at a specific index. It takes four parameters: * value: This is the string to be searched. * pattern: This is the regular expression pattern to match against. * result_index: This is the index of the substring to return after all the matches are found. * ignorecase: This is a boolean value to decide whether to ignore the case of the characters while matching. Similar to the regex_match function, it checks whether value is a string or not. If it's not, it converts value to a string. Then it uses the _get_regex_flags function to set the regular expression flags based on the ignorecase parameter. The function re.findall() is then used to find all the substrings in value that match the pattern. The substring at the result_index position is then returned. Note that if result_index is out of range (larger than the number of matches), the function will throw an IndexError.

reject

Filters a sequence of objects by applying a test to each object, and rejecting the objects with the test succeeding. If no test is specified, each object will be evaluated as a boolean. versionadded:: 2.7

rejectattr

Filters a sequence of objects by applying a test to the specified attribute of each object, and rejecting the objects with the test succeeding. If no test is specified, the attribute's value will be evaluated as a boolean. Similar to a generator comprehension such as: versionadded:: 2.7

replace

Return a copy of the value with all occurrences of a substring replaced with a new one. The first argument is the substring that should be replaced, the second is the replacement string. If the optional third argument count is given, only the first count occurrences are replaced.

reverse

Reverse the object or return an iterator that iterates over it the other way round.

round

Round the number to a given precision. The first parameter specifies the precision (default is 0), the second the rounding method: * 'common' rounds either up or down * 'ceil' always rounds up * 'floor' always rounds down If you don't specify a method 'common' is used. Note that even if rounded to 0 precision, a float is returned. If you need a real integer, pipe it through int.

safe

Mark the value as safe which means that in an environment with automatic escaping enabled this variable will not be escaped.

select

Filters a sequence of objects by applying a test to each object, and only selecting the objects with the test succeeding. If no test is specified, each object will be evaluated as a boolean. Similar to a generator comprehension such as: versionadded:: 2.7

selectattr

Filters a sequence of objects by applying a test to the specified attribute of each object, and only selecting the objects with the test succeeding. If no test is specified, the attribute's value will be evaluated as a boolean. Similar to a generator comprehension such as: versionadded:: 2.7

set

Create a :py:class:set from an (async) iterable This is equivalent to {element async for element in iterable}.

slice

Slice an iterator and return a list of lists containing those items. Useful if you want to create a div containing three ul tags that represent columns: .. sourcecode:: html+jinja If you pass it a second argument it's used to fill missing values on the last iteration.

sort

Sort an iterable using Python's :func:sorted.:param reverse: Sort descending instead of ascending. :param case_sensitive: When sorting strings, sort upper and lower case separately. :param attribute: When sorting objects or dicts, an attribute or key to sort by. Can use dot notation like "address.city". Can be a list of attributes like "age,name". The sort is stable, it does not change the relative order of elements that compare equal. This makes it is possible to chain sorts on different attributes and ordering. <div data-gb-custom-block data-tag="for" data-0=')

string

Convert an object to a string if it isn't already. This preserves a :class:Markup string rather than converting it back to a basic string, so it will still be marked as safe and won't be escaped again. value = escape("<User 1>") value Markup('<User 1>') escape(str(value)) Markup('&lt;User 1&gt;') escape(soft_str(value)) Markup('<User 1>')

striptags

Strip SGML/XML tags and replace adjacent whitespace by one space.

sum

Returns the sum of a sequence of numbers plus the value of parameter 'start' (which defaults to 0). When the sequence is empty it returns start. It is also possible to sum up only certain attributes: .. versionchanged:: 2.6 The attribute parameter was added to allow summing up over attributes. Also the start parameter was moved on to the right.

time_delta

Add a duration of time to a datetime Use negative values to subtract durations of time instead.

title

Return a titlecased version of the value. I.e. words will start with uppercase letters, all remaining characters are lowercase.

to_ascii

Transliterate a Unicode object into an ASCII string errors specifies what to do with characters that have not been found in replacement tables. The default is 'ignore' which ignores the character. 'strict' raises an UnidecodeError. 'replace' substitutes the character with replace_str (default is '?'). 'preserve' keeps the original character. Note that if 'preserve' is used the returned string might not be ASCII!

to_human_time_from_seconds

Given a time value in seconds, this function returns a fuzzy version like 3m5s. :param seconds: Time specified in seconds. :type seconds: int or long or float :rtype: str

to_json_string

Serialize value to JSON

to_yaml_string

Serialize to YAML :param indent: Number of spaces to use for indentation :param sort_keys: Whether to sort mapping keys, or leave as-is

tojson

Serialize an object to a string of JSON, and mark it safe to render in HTML. This filter is only for use in HTML documents. The returned string is safe to render in HTML documents and <script> tags. The exception is in HTML attributes that are double-quoted. Use single quotes.

trim

Strip leading and trailing characters, by default whitespace.

truncate

Return a truncated copy of the string. The length is specified with the first parameter which defaults to 255. If the second parameter is true the filter will cut the text at length. Otherwise it will discard the last word. If the text was in fact truncated it will append an ellipsis sign ("..."). If you want a different ellipsis sign than "..." you can specify it using the third parameter. Strings that only exceed the length by the tolerance margin given in the fourth parameter will not be truncated. The default leeway on newer Jinja versions is 5 and was 0 before but can be reconfigured globally.

tuple

Create a :py:class:tuple from an (async) iterable

unidecode

Transliterate a Unicode object into an ASCII string errors specifies what to do with characters that have not been found in replacement tables. The default is 'ignore' which ignores the character. 'strict' raises an UnidecodeError. 'replace' substitutes the character with replace_str (default is '?'). 'preserve' keeps the original character. Note that if 'preserve' is used the returned string might not be ASCII!

unique

Returns a list of unique items from the given iterable. The unique items are yielded in the same order as their first occurrence in the iterable passed to the filter. :param case_sensitive: Treat upper and lower case strings as distinct. :param attribute: Filter objects with unique values for this attribute.

upper

Convert a value to uppercase.

urlencode

Quote data for use in a URL path or query using UTF-8. Basic wrapper around :func:urllib.parse.quote when given a string, or :func:urllib.parse.urlencode for a dict or iterable. :param value: Data to quote. A string will be quoted directly. A dict or iterable of (key, value) pairs will be joined as a query string. When given a string, "/" is not quoted. HTTP servers treat "/" and "%2F" equivalently in paths.

urlize

Convert URLs in text into clickable links. This may not recognize links in some situations. Usually, a more comprehensive formatter, such as a Markdown library, is a better choice. Works on http://, https://, www., mailto:, and email addresses. Links with trailing punctuation (periods, commas, closing parentheses) and leading punctuation (opening parentheses) are recognized excluding the punctuation. Email addresses that include header fields are not recognized (for example, mailto:address@example.com?cc=copy@example.com). :param value: Original text containing URLs to link. :param trim_url_limit: Shorten displayed URL values to this length. :param nofollow: Add the rel=nofollow attribute to links. :param target: Add the target attribute to links. :param rel: Add the rel attribute to links. :param extra_schemes: Recognize URLs that start with these schemes in addition to the default behavior. Defaults to env.policies["urlize.extra_schemes"], which defaults to no extra schemes. .. versionchanged:: 3.0 The extra_schemes parameter was added. .. versionchanged:: 3.0 Generate https:// links for URLs without a scheme. .. versionchanged:: 3.0 The parsing rules were updated. Recognize email addresses with or without the mailto: scheme. Validate IP addresses. Ignore parentheses and brackets in more cases. .. versionchanged:: 2.8 The target parameter was added.

use_none

Convert a None value to a magic string preserving the None value when passed to actions

version_bump_major

This function increments the major version component of a version number (value) following semantic versioning rules. It returns the updated version number.

version_bump_minor

This function increments the minor version component of a version number (value) following semantic versioning rules. It returns the updated version number.

version_bump_patch

This function increments the patch version component of a version number (value) following semantic versioning rules. It returns the updated version number.

version_compare

This function compares two version numbers (value and pattern) using the semantic versioning rules provided by the semver library. It returns an integer value indicating the result of the comparison: * Returns 0 if value and pattern are equal. * Returns 1 if value is greater than pattern. * Returns -1 if value is less than pattern.

version_equal

This function compares two version numbers (value and pattern) and returns a boolean value indicating whether value is equal to pattern. It uses the version_compare function internally and checks if the comparison result is 0.

version_less_than

This function compares two version numbers (value and pattern) and returns a boolean value indicating whether value is less than pattern. It uses the version_compare function internally and checks if the comparison result is -1.

version_match

This function checks if a version number (value) matches a version range (pattern) using the semantic versioning rules provided by the semver library. It returns a boolean value indicating whether the version number matches the range.

version_more_than

This function compares two version numbers (value and pattern) and returns a boolean value indicating whether value is greater than pattern. It uses the version_compare function internally and checks if the comparison result is 1.

version_strip_patch

This function removes the patch version component from a version number (value). It returns a string representing the version number without the patch component.

wordcount

Count the words in that string.

wordwrap

Wrap a string to the given width. Existing newlines are treated as paragraphs to be wrapped separately. :param s: Original text to wrap. :param width: Maximum length of wrapped lines. :param break_long_words: If a word is longer than width, break it across lines. :param break_on_hyphens: If a word contains hyphens, it may be split across lines. :param wrapstring: String to join each wrapped line. Defaults to :attr:Environment.newline_sequence. .. versionchanged:: 2.11 Existing newlines are treated as paragraphs wrapped separately. .. versionchanged:: 2.11 Added the break_on_hyphens parameter. .. version changed:: 2.7 Added the wrapstring parameter.

wrap_text

Take a text string and wrap it to a specified width. The resulting string will be the original text except with newlines inserted so that no line is wider than the specified width. The default width is 70 characters. Raises: TypeError: If text is not a string TypeError: If width is not an integer wrap_text('Vero aliquam debitis. Reiciendis commodi dol', width=20) 'Vero aliquam\ndebitis. Reiciendis\ncommodi dol'

xmlattr

Create an SGML/XML attribute string based on the items in a dict. All values that are neither none nor undefined are automatically escaped: .. sourcecode:: html+jinja Results in something like this: .. sourcecode:: html As you can see it automatically prepends a space in front of the item if the filter returned something unless the second parameter is false.

yaml_dump

Serialize to YAML :param indent: Number of spaces to use for indentation :param sort_keys: Whether to sort mapping keys, or leave as-is

yaml_parse

Deserialize from a YAML-serialized string

zip

Return a list of tuples where the i-th element comes from the i-th list arg. If a list is exhausted before the others, the value of pad will be used in the tuple.

Based on the , this filter allows hashes to be merged. For example, the following would override keys in one hash:

Apply the given values to a printf-style_ format string, like string % values. In most cases, it should be more convenient and efficient to use the % operator or :meth:str.format. _printf-style:

Extracts data from an object value using a JSONPath query.

{{ 'my_msg' | hmac('sha256', 'my key') }}
{{ 'my_msg' | hmac.sha256('my key') }}
b'g\x98r\t\xff\x9c\xe3\x1b\x06\x00\xa8\xd4\\\x9aK4\xda\xf1\xe1n\xcc\xe4\x8f\x7f\x0bZJ4\xf1G\xfd\x89'
Ansible combine filter
https://docs.python.org/library/stdtypes.html
🔗
https://github.com/h2non/jsonpath-ng