simple validator for request body
A fast and easy to use JSON Schema validator
Validate identifier/keywords name
Another JSON Schema Validator
Validate plugin/preset options
Additional JSON-Schema keywords for Ajv JSON validator
Validate request properties against an OpenAPI spec.
Plugin for validating API schemas from API documentation
The ajv-8 based validator for @rjsf/core
Default linter plugin for oas-validator
Simplest way to make http get requests. Supports HTTPS, redirects, gzip/deflate, streams in < 100 lines.
Decorator-based property validation for classes.
Another JSON Schema Validator
String validation and sanitization
An unopinionated OpenAPI framework for express
Provides a fast, pretty robust e-mail validator. Only checks form, not function.
Automatically validate API requests and responses with OpenAPI 3.
Cypress's fork of a simplified HTTP request client.
Ajv class for JSON Schema draft-04
Express middleware for the validator module.
Simple library to validate JWT tokens
Object schema validation
A simple react form validator inspired by Laravel validation.
Simple easy contact form for Rails with I18n, validations, attachments and request information.
Validates parameters of requests using a schema defined with a simple DSL
RubyBHL is a simple but flexible request/response wrapper for the Biodiversity Heritage Libary API. It includes (some) validation for request formatting. It has excellent unit-test coverage.
This simple gem allows you to make GraphQL requests and parses the response into a simple structure with helper methods to validate if it's a successful response or not
A simple, localizable ActiveModel::EachValidator for URL fields. Supports format validation as well as optional network reachability checks via HEAD (or any other HTTP verb) requests.
The purpose of the builder object is to create a layer of abstraction between the controller and models in a Rails application. The builder is particularly useful for receiving complex post and put requests with multiple parameters, but is lightweight enough to use for simple writes when some filtering or parameter combination validation might be useful before writing to the database. Since it wraps the entire write action to mulitple models in a single transaction, any failure in the builder will result in the entire request being rolled back.
AdaptiveConfiguration is an elegant, lightweight and simple, yet powerful Ruby gem that allows you to define a DSL (Domain-Specific Language) for structured and hierarchical configurations. It is ideal for defining complex configurations for various use cases, such as API clients, application settings, or any scenario where structured configuration is needed. In addition AdaptiveConfiguration can be more generally used to transform and validate JSON data from any source such as from a network request or API reponse.
# Mod10 A simple gem to generate mod_10 check digits and check if integers are mod10 valid. ## Installation Add this line to your application's Gemfile: ```ruby gem 'mod_10' ``` And then execute: $ bundle Or install it yourself as: $ gem install mod_10 ## Usage Include the Mod10 module to make the following two methods available - generate_check_digit(value) Which returns an integer value for the mod10 check digit of a string or integer. Note: If the value is 0, then the argument was already mod10 valid. - is_mod10?(value) Returns true or false for the tested value is it is or isn't mod10 valid. ## Contributing 1. Fork it ( https://github.com/[my-github-username]/mod_10/fork ) 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create a new Pull Request
rack-deadline is a simple rack middleware that automatically clears sessions that have been open too long (by default, 1 day). This is designed for use with cookie stores to mitigate the risk of session fixation, since it is impossible to invalidate older sessions with a pure cookie-based approach. It is impossible to enforce a deadline with the standard rack cookie session API. The expire_after setting is not part of the session itself (it's part of the cookie, and not cryptographically signed), and an attacker who has access to a previous cookie can just omit it when making a request. This stores a deadline inside the crytographically signed session, and once the deadline is passed, the session will no longer be valid.
REST API for electronic invoicing in France: Factur-X (CII), UBL 2.1, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Invoice Generation - **Formats**: CII XML, UBL 2.1 XML, or Factur-X PDF/A-3 - **Profiles** (CII/PDF): MINIMUM, BASIC, EN16931, EXTENDED - **UBL**: Always EN16931 compliant - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT), UBL 2.1 (OASIS) - **Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \ -H "Content-Type: application/json" \ -d '{ "username": "your_email@example.com", "password": "your_password" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \ -H "Content-Type: application/json" \ -d '{ "username": "your_email@example.com", "password": "your_password", "client_uid": "550e8400-e29b-41d4-a716-446655440000" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { "access": "eyJ0eXAiOiJKV1QiLCJhbGc...", // Access token (validity: 30 min) "refresh": "eyJ0eXAiOiJKV1QiLCJhbGc..." // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the "Generate Test Token" or "Generate Production Token" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
Simple REST api for anime.akinyele.ca
CORTO - your url shortner gem ----------------------------- - Yet another url shortner? corto is a ruby gem that shorten a URL for you and store the result in a SQLite3 database. Why the world needs another url shortener? Well, true to be told I don't know the answer and I'm pretty sure this code is far away from being revolutionary. However... corto is funniest! - Usage Using corto as standalone utility is straightforward. In case you want to shorten an url you just launch the program with the url as parameter. % bin/corto http://www.armoredcode.com % corto: http://www.armoredcode.com shrunk as ji5jnu Please note that you've to supply a valid URL, since internally it's parsed and rejected anything but HTTP and HTTPS verbs. % bin/corto funnystatementhere % corto: it seems funnystatementhere is not a valid url to shrink If you want to deflate a shrunk url, you have just to specify the '-d' flag this way. % bin/corto -d ji5jnu % corto: ji5jnu deflated is http://www.armoredcode.com Super easy, isn't it? Now, go ahead and shrink the web! - API A simple corto shortening session start with class initialization, optionally telling which SQLite3 database to use and then mastering the parameter. require 'corto' ... corto = Corto.new # we're now saying the gem we want to use it's internal database stored in db/corto.db s = corto.shrink('http://www.armoredcode.com') # s now stores the shrinked url that is already added to database if not present. # If you'll pass an invalid url to shrink(), nil will be returned instead Deflating a URL is super easy as well # The deflate process is quite straightforward as well d = corto.deflate(s) # d has now the deflated url or nil if that url was not found You can also count how many urls contained into db # If you want to know how many urls you have in your database, just call the count() method. puts 'Hey, I have stored ' + corto.count() + ' urls' And finally you can purge your db # Tired of your database and time for a massive clean has come? Let's purge the db. corto.purge # corto.count == 0 now - Note on Patches/Pull Requests * Fork the project. * Make your feature addition or bug fix. * Add tests for it. This is important so I don’t break it in a future version unintentionally. * Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull) * Send me a pull request. Bonus points for topic branches. - Copyright Copyright © 2011 Paolo Perego. See LICENSE for details.