mcpField
A
api-response-mocker

api-response-mocker

github.com/dkyazzentwatwaTesting & quality12458 installsUpdated 29w ago
Repository

About api-response-mocker

api-response-mocker generates mock API data from user-defined schemas using Faker. It is intended for development and testing, with support for nested structures, arrays, relationships, reproducible output, and JSON or XML.

Key features

  1. 01Schema-based response generation
  2. 02Faker-generated data
  3. 03Nested objects and arrays
  4. 04References between mock data
  5. 05JSON and XML output
  6. 06Seeded reproducible generation

Use cases

  1. 01Create sample API responses for testing
  2. 02Generate lists of mock users or products
  3. 03Produce repeatable data from a schema
  4. 04Create nested JSON or XML fixtures

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill api-response-mocker

After installing, type/api-response-mockerin Claude Code to confirm it loaded.

Bundled filesscripts/api_mocker.pyscripts/requirements.txt

Details

From the project README

API Response Mocker

Generate realistic mock API responses with fake data using Faker.

Features

  • Schema-Based Generation: Define response structure
  • Faker Integration: Realistic fake data
  • Nested Objects: Complex nested structures
  • Arrays: Generate lists of objects
  • Relationships: Reference other mock data
  • Multiple Formats: JSON, XML output

Quick Start

from api_mocker import APIMocker

mocker = APIMocker()

# Generate user response
user = mocker.generate({
    "id": "uuid",
    "name": "name",
    "email": "email",
    "created_at": "datetime"
})

# Generate list of users
users = mocker.generate_list({
    "id": "uuid",
    "name": "name",
    "email": "email"
}, count=10)

CLI Usage

# Generate from schema file
python api_mocker.py --schema user_schema.json --output user.json

# Generate list
python api_mocker.py --schema product.json --count 50 --output products.json

# Generate with seed (reproducible)
python api_mocker.py --schema order.json --seed 42 --output order.json

# Preview without saving
python api_mocker.py --schema customer.json --preview

Schema Format

Define fields using Faker provider names:

{
    "id": "uuid",
    "first_name": "first_name",
    "last_name": "last_name",
    "email": "email",
    "phone": "phone_number",
    "company": "company",
    "address": {
        "street": "street_address",
        "city": "city",
        "state": "state",
        "zip": "zipcode",
        "country": "country"
    },
    "created_at": "date_time_this_year",
    "is_active": "boolean"
}

Available Data Types

Personal
  • name, first_name, last_name
  • email, safe_email
  • phone_number
  • ssn
Address
  • address, street_address
  • city, state, state_abbr
  • zipcode, postcode
  • country, country_code
  • latitude, longitude
Internet
  • url, domain_name
  • ipv4, ipv6
  • user_name, password
  • uuid, uuid4
  • mac_address
Business
  • company, company_suffix
  • job, job_title
  • bs, catch_phrase
Financial
  • credit_card_number
  • iban, bban
  • currency_code
  • price (custom: returns float)
Date/Time
  • date, time
  • date_time, date_time_this_year
  • date_of_birth
  • iso8601
Text
  • text, sentence, paragraph
  • word, words
  • slug
Numeric
  • random_int, random_number
  • random_float (use {"type": "float", "min": 0, "max": 100})
  • boolean

Advanced Schemas

Arrays
{
    "id": "uuid",
    "name": "name",
    "tags": {
        "_array": true,
        "_count": 3,
        "_item": "word"
    },
    "orders": {
        "_array": true,
        "_count": 5,
        "_item": {
            "order_id": "uuid",
            "amount": "random_int",
            "date": "date"
        }
    }
}
Custom Values
{
    "id": "uuid",
    "status": {
        "_choice": ["pending", "active", "completed"]
    },
    "priority": {
        "_range": [1, 5]
    },
    "score": {
        "_float": {"min": 0.0, "max": 100.0, "decimals": 2}
    }
}
Nested Objects
{
    "user": {
        "id": "uuid",
        "profile": {
            "bio": "paragraph",
            "avatar_url": "image_url",
            "social": {
                "twitter": "user_name",
                "linkedin": "url"
            }
        }
    }
}

API Reference

APIMocker Class
class APIMocker:
    def __init__(self, locale: str = "en_US", seed: int = None)

    # Generation
    def generate(self, schema: dict) -> dict
    def generate_list(self, schema: dict, count: int = 10) -> list

    # File operations
    def from_schema_file(self, filepath: str) -> dict
    def save(self, data: any, filepath: str, format: str = "json")

    # Utilities
    def set_seed(self, seed: int)
    def get_faker(self) -> Faker

Example Schemas

User Response
{
    "id": "uuid",
    "username": "user_name",
    "email": "email",
    "profile": {
        "first_name": "first_name",
        "last_name": "last_name",
        "avatar": "image_url",
        "bio": "sentence"
    },
    "created_at": "iso8601",
    "last_login": "date_time_this_month"
}
E-commerce Product
{
    "sku": "uuid",
    "name": "catch_phrase",
    "description": "paragraph",
    "price": {"_float": {"min": 9.99, "max": 999.99}},
    "currency": "currency_code",
    "category": {"_choice": ["Electronics", "Clothing", "Home", "Sports"]},
    "in_stock": "boolean",
    "rating": {"_float": {"min": 1, "max": 5, "decimals": 1}},
    "reviews_count": {"_range": [0, 500]}
}
API Error Response
{
    "error": {
        "code": {"_choice": ["NOT_FOUND", "UNAUTHORIZED", "BAD_REQUEST"]},
        "message": "sentence",
        "request_id": "uuid",
        "timestamp": "iso8601"
    }
}

Dependencies

  • faker>=22.0.0

Comments

Markdown supported