{"size": 1393, "ext": "scrbl", "max_stars_repo_path": "scribblings/riposte.scrbl", "max_stars_repo_name": "jessealama/riposte", "max_stars_repo_stars_event_min_datetime": "2018-11-08T19:12:04.000Z", "max_stars_repo_stars_event_max_datetime": "2021-06-11T16:09:15.000Z", "max_issues_repo_path": "scribblings/riposte.scrbl", "max_issues_repo_name": "jessealama/riposte", "max_issues_repo_issues_event_min_datetime": "2018-10-25T08:57:28.000Z", "max_issues_repo_issues_event_max_datetime": "2021-10-12T12:38:06.000Z", "max_forks_repo_path": "scribblings/riposte.scrbl", "max_forks_repo_name": "jessealama/riposte", "max_forks_repo_forks_event_min_datetime": "2018-11-15T08:33:59.000Z", "max_forks_repo_forks_event_max_datetime": "2021-02-05T21:07:15.000Z"}
{"max_stars_count": 37, "max_issues_count": 12, "max_forks_count": 5, "avg_line_length": 48.0344827586, "max_line_length": 413, "alphanum_fraction": 0.7774587222}
#lang scribble/manual

@title[#:style 'toc]{Riposte—Scripting Language for JSON-based HTTP APIs}
@author[(author+email "Jesse Alama" "jesse@lisp.sh")]

@defmodulelang[riposte]

Riposte is a scripting language for evaluating JSON-bearing HTTP responses. The intended use case is a JSON-based HTTP API. It comes with a commandline tool, @tt{riposte}, which executes Riposte scripts. Using Riposte, one writes a sequence of commands—which amount to HTTP requests—and assertions, which require that the response meets certain conditions.

Riposte is intended to be a language for system (or integration) tests. As such, it is not intended to be a general purpose programming langauge. There is no notion of branching (“if-then-else”) in a single script. The idea is that a Riposte script consists of a series of assertions, all of which must succeed. If, during evaluation, a command or assertion fails, evaluation will be aborted. There's no fallback.

In other words, Riposte was made to help you get more serious about testing your APIs. It helped me up my testing game, and I hope it can do the same for you.

@include-section["briefly.scrbl"]

@include-section["installation.scrbl"]

@include-section["origins.scrbl"]

@include-section["use.scrbl"]

@include-section["language.scrbl"]

@include-section["limitations.scrbl"]

@include-section["misc.scrbl"]

@include-section["wishlist.scrbl"]
