# Softwium

> Free dummy data for testing and prototyping from Softwium's Fake API: programming books, world currencies, 1,000 made-up people and Pokémon, each searchable and pageable. No account or API key required.

App · 8 actions. Web page: https://docs.lodol.com/docs/integrations/softwium

## Actions

### Get book

Get one of Softwium's dummy programming books by its id: its title, ISBN, page count and authors. No API key required.

**Inputs**

- Book id (`book_id`, number, required): The book's Softwium id, 1 to 80. At least 1.

**Outputs**

- `book` (object): A dummy programming book.

**Example output**

```json
{
  "book": {
    "authors": [
      "Christian Bauer",
      "Gavin King"
    ],
    "authors_text": "Christian Bauer, Gavin King",
    "id": 23,
    "isbn": "1932394885",
    "page_count": 880,
    "title": "Java Persistence with Hibernate"
  }
}
```

### Get currency

Look up one world currency by its three-letter code, such as USD, or by its Softwium id, and get its name. No API key required.

**Inputs**

- Currency (`currency`, text, required): The currency's three-letter code, such as USD or EUR, or its Softwium id.

**Outputs**

- `currency` (object): A world currency.

**Example output**

```json
{
  "currency": {
    "code": "USD",
    "id": 151,
    "name": "United States Dollar"
  }
}
```

### Get person

Get one made-up person by their id: first name, last name and age. No API key required.

**Inputs**

- Person id (`person_id`, number, required): The person's Softwium id, 1 to 1,000. At least 1.

**Outputs**

- `person` (object): A made-up person.

**Example output**

```json
{
  "person": {
    "age": 37,
    "first_name": "Bill",
    "full_name": "Bill Afton",
    "id": 11,
    "last_name": "Afton"
  }
}
```

### Get Pokémon

Look up one Pokémon by its name or National Pokédex number, and get its types, height, weight and evolution family. No API key required.

**Inputs**

- Pokémon (`pokemon`, text, required): The Pokémon's name, such as Pikachu, or its National Pokédex number, 1 to 386.

**Outputs**

- `pokemon` (object): A Pokémon.

**Example output**

```json
{
  "pokemon": {
    "family": "Pikachu",
    "height_m": 0.4,
    "name": "Pikachu",
    "number": 25,
    "types": [
      "Electric"
    ],
    "weight_kg": 6.0
  }
}
```

### List books

List Softwium's 80 dummy programming books, with title, ISBN, page count and authors, optionally searched by title, author or ISBN. Handy as test data for a catalogue or a spreadsheet. No API key required.

**Inputs**

- Search (`search`, text): Only include records whose title, author or ISBN contains this text. Leave empty for all of them.
- Number of results (`limit`, number): How many records to return, 1 to 1000. Defaults to 25. From 1 to 1000.
- Skip (`offset`, number): How many matching records to skip before this page starts. Use the `next_offset` from a previous run to get the next page. At least 0.

**Outputs**

- `books` (list): The books in this page.
- `count` (number): How many records are in this page.
- `has_more` (true/false): True when more matching records follow this page.
- `next_offset` (number): The Skip value for the next page, or null on the last one.
- `offset` (number): How many matching records were skipped before this page.
- `search` (text): The search text used, or null when none was given.
- `total_matched` (number): How many records matched in all, across every page.

**Example output**

```json
{
  "books": [
    {
      "authors": [
        "Anthony Briggs"
      ],
      "authors_text": "Anthony Briggs",
      "id": 35,
      "isbn": "1935182080",
      "page_count": 350,
      "title": "Hello! Python"
    }
  ],
  "count": 1,
  "has_more": false,
  "next_offset": null,
  "offset": 0,
  "search": "python",
  "total_matched": 1
}
```

### List currencies

List 170 world currencies with their three-letter codes and names, optionally searched by code or name, such as every kind of dollar. No API key required.

**Inputs**

- Search (`search`, text): Only include records whose code or name contains this text. Leave empty for all of them.
- Number of results (`limit`, number): How many records to return, 1 to 1000. Defaults to 25. From 1 to 1000.
- Skip (`offset`, number): How many matching records to skip before this page starts. Use the `next_offset` from a previous run to get the next page. At least 0.

**Outputs**

- `count` (number): How many records are in this page.
- `currencies` (list): The currencies in this page.
- `has_more` (true/false): True when more matching records follow this page.
- `next_offset` (number): The Skip value for the next page, or null on the last one.
- `offset` (number): How many matching records were skipped before this page.
- `search` (text): The search text used, or null when none was given.
- `total_matched` (number): How many records matched in all, across every page.

**Example output**

```json
{
  "count": 1,
  "currencies": [
    {
      "code": "USD",
      "id": 151,
      "name": "United States Dollar"
    }
  ],
  "has_more": false,
  "next_offset": null,
  "offset": 0,
  "search": "united",
  "total_matched": 1
}
```

### List people

List made-up people with first name, last name and age, optionally narrowed by name and an age range. 1,000 people in all: handy test data for a contacts list or a sign-up form. No API key required.

**Inputs**

- Name contains (`name`, text): Only include people whose full name contains this text. Leave empty for everyone.
- Minimum age (`min_age`, number): Only include people this age or older. At least 0.
- Maximum age (`max_age`, number): Only include people this age or younger. At least 0.
- Number of results (`limit`, number): How many records to return, 1 to 1000. Defaults to 25. From 1 to 1000.
- Skip (`offset`, number): How many matching records to skip before this page starts. Use the `next_offset` from a previous run to get the next page. At least 0.

**Outputs**

- `count` (number): How many records are in this page.
- `has_more` (true/false): True when more matching records follow this page.
- `max_age` (number): The maximum age used, or null.
- `min_age` (number): The minimum age used, or null.
- `name` (text): The name text used, or null when none was given.
- `next_offset` (number): The Skip value for the next page, or null on the last one.
- `offset` (number): How many matching records were skipped before this page.
- `people` (list): The people in this page.
- `total_matched` (number): How many records matched in all, across every page.

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "max_age": 40,
  "min_age": 30,
  "name": "Bill",
  "next_offset": null,
  "offset": 0,
  "people": [
    {
      "age": 37,
      "first_name": "Bill",
      "full_name": "Bill Afton",
      "id": 11,
      "last_name": "Afton"
    }
  ],
  "total_matched": 1
}
```

### List Pokémon

List Pokémon from the first three generations with their types, height, weight and evolution family, optionally narrowed by name or type. No API key required.

**Inputs**

- Name contains (`name`, text): Only include Pokémon whose name contains this text. Leave empty for all of them.
- Type (`pokemon_type`, text): Only include Pokémon of this type. Leave empty for every type. One of: `Bug`, `Dark`, `Dragon`, `Electric`, `Fairy`, `Fighting`, `Fire`, `Flying`, `Ghost`, `Grass`, and 8 more.
- Number of results (`limit`, number): How many records to return, 1 to 1000. Defaults to 25. From 1 to 1000.
- Skip (`offset`, number): How many matching records to skip before this page starts. Use the `next_offset` from a previous run to get the next page. At least 0.

**Outputs**

- `count` (number): How many records are in this page.
- `has_more` (true/false): True when more matching records follow this page.
- `name` (text): The name text used, or null when none was given.
- `next_offset` (number): The Skip value for the next page, or null on the last one.
- `offset` (number): How many matching records were skipped before this page.
- `pokemon` (list): The Pokémon in this page, in Pokédex order.
- `pokemon_type` (text): The type used, or null when none was given.
- `total_matched` (number): How many records matched in all, across every page.

**Example output**

```json
{
  "count": 1,
  "has_more": false,
  "name": "pika",
  "next_offset": null,
  "offset": 0,
  "pokemon": [
    {
      "family": "Pikachu",
      "height_m": 0.4,
      "name": "Pikachu",
      "number": 25,
      "types": [
        "Electric"
      ],
      "weight_kg": 6.0
    }
  ],
  "pokemon_type": "Electric",
  "total_matched": 1
}
```
