{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/chromia-seeder-module-config/latest.json",
  "title": "Chromia Seeder Module Schema",
  "x-lintel": {
    "source": "https://gitlab.com/chromaway/core-tools/rell-toolbox/-/raw/dev/seeder/src/main/resources/chromia-seeder-module-schema.json",
    "sourceSha256": "2ea11197cbe6dcfb2a7e33d866a917e8c0b3c49cb8189f0fb7c78e590ef455d9",
    "fileMatch": [
      "**/.chromia/seeder/**/modules/**/*.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "module": {
      "type": "string",
      "description": "The module name"
    }
  },
  "required": [
    "module"
  ],
  "additionalProperties": {
    "type": "object",
    "properties": {
      "count": {
        "type": "integer",
        "minimum": 1,
        "description": "The number of records to generate"
      },
      "attributes": {
        "type": "object",
        "additionalProperties": {
          "properties": {
            "generator": {
              "type": "string",
              "enum": [
                "text",
                "byte_array",
                "range",
                "predefined",
                "first_name",
                "last_name",
                "name",
                "male_first_name",
                "female_first_name",
                "neutral_first_name",
                "name_with_middle",
                "email",
                "internet.domain",
                "internet.private_ipv4_addr",
                "internet.public_ipv4_addr",
                "internet.ipv4_addr",
                "internet.ipv6_addr",
                "internet.mac_addr",
                "internet.safe_email",
                "internet.slug",
                "internet.domain_suffix",
                "internet.user_agent",
                "internet.bot_user_agent",
                "company.name",
                "company.department",
                "company.industry",
                "company.profession",
                "company.type",
                "company.sic_code",
                "address.full",
                "address.city",
                "address.country",
                "address.country_code",
                "address.street",
                "address.country_code_long",
                "address.building_number",
                "address.community",
                "address.secondary_address",
                "address.postcode",
                "address.state",
                "address.state_abbr",
                "address.time_zone",
                "address.city_with_state",
                "address.street_name",
                "address.mailbox",
                "phone_number",
                "phone_number.area_code",
                "phone_number.exchange_code",
                "phone_number.country_code",
                "random.integer",
                "random.boolean",
                "random.decimal",
                "random.enum",
                "random.uuid",
                "random.text",
                "random.json",
                "bank.name",
                "bank.swift_bic",
                "bank.iban_details",
                "color.name",
                "commerce.department",
                "commerce.product_name",
                "commerce.promotion_code",
                "commerce.brand",
                "commerce.vendor",
                "crypto.md5",
                "crypto.sha1",
                "crypto.sha224",
                "crypto.sha256",
                "crypto.sha384",
                "crypto.sha512",
                "currency.code",
                "currency.name",
                "currency.symbol",
                "file.extension",
                "file.mimetype_application",
                "file.mimetype_audio",
                "file.mimetype_image",
                "file.mimetype_message",
                "file.mimetype_model",
                "file.mimetype_multipart",
                "file.mimetype_text",
                "file.mimetype_video",
                "gender.types",
                "gender.binary_type",
                "gender.short_binary_type",
                "measurement.height",
                "measurement.weight",
                "measurement.volume",
                "measurement.length",
                "measurement.metric_height",
                "measurement.metric_weight",
                "measurement.metric_volume",
                "measurement.metric_length",
                "money.amount",
                "educator.school_name",
                "educator.secondary",
                "educator.primary",
                "educator.secondary_school",
                "educator.primary_school",
                "educator.campus",
                "educator.subject",
                "educator.university_type",
                "educator.degree_type",
                "educator.course_number",
                "job.field",
                "job.seniority",
                "job.position",
                "job.key_skills",
                "job.employment_type",
                "job.education_level",
                "job.title",
                "science.element",
                "science.element_symbol",
                "science.element_state",
                "science.element_subcategory",
                "science.modifier",
                "science.scientist",
                "science.tool",
                "university.prefix",
                "university.suffix",
                "university.name",
                "adjective.positive",
                "adjective.negative",
                "emotion.adjective",
                "emotion.noun",
                "hipster.words",
                "lorem.words",
                "lorem.supplemental",
                "lorem.punctuation",
                "markdown.headers",
                "markdown.emphasis",
                "nato.alphabet",
                "slack_emoji.people",
                "slack_emoji.nature",
                "slack_emoji.food_and_drink",
                "slack_emoji.celebration",
                "slack_emoji.activity",
                "slack_emoji.travel_and_places",
                "slack_emoji.objects_and_symbols",
                "slack_emoji.custom",
                "slack_emoji.emoji",
                "quote.famous_last_words",
                "quote.matz",
                "quote.most_interesting_man_in_the_world",
                "quote.robin",
                "quote.singular_siegler",
                "quote.yoda",
                "quote.fortune_cookie",
                "verbs.base",
                "verbs.past",
                "verbs.past_participle",
                "verbs.ing_form",
                "verbs.simple_present",
                "artist.names",
                "blood.type",
                "blood.rh_factor",
                "blood.group",
                "demographic.race",
                "demographic.sex",
                "demographic.demonym",
                "demographic.educational_attainment",
                "demographic.marital_status",
                "driving_license.license",
                "greek_philosophers.names",
                "greek_philosophers.quotes",
                "hobby.activity",
                "military.army_rank",
                "military.marines_rank",
                "military.navy_rank",
                "military.coast_guard_rank",
                "military.air_force_rank",
                "military.space_force_rank",
                "military.dod_paygrade",
                "basketball.teams",
                "basketball.players",
                "basketball.coaches",
                "basketball.positions",
                "chess.players",
                "chess.tournaments",
                "chess.openings",
                "chess.titles",
                "crossfit.competitions",
                "crossfit.male_athletes",
                "crossfit.female_athletes",
                "crossfit.movements",
                "crossfit.girl_workouts",
                "crossfit.hero_workouts",
                "esport.players",
                "esport.teams",
                "esport.events",
                "esport.leagues",
                "esport.games",
                "football.teams",
                "football.players",
                "football.coaches",
                "football.competitions",
                "football.positions",
                "mountaineering.mountaineer",
                "sport.summer_olympics",
                "sport.winter_olympics",
                "sport.summer_paralympics",
                "sport.winter_paralympics",
                "sport.ancient_olympics",
                "sport.unusual",
                "team.name",
                "team.sport",
                "team.mascot",
                "volleyball.team",
                "volleyball.player",
                "volleyball.coach",
                "volleyball.position",
                "volleyball.formation",
                "world_cup.teams",
                "world_cup.stadiums",
                "world_cup.cities",
                "app.name",
                "app.version",
                "app.author",
                "appliance.brand",
                "appliance.equipment",
                "camera.brand",
                "camera.model",
                "camera.brand_with_model",
                "computer.type",
                "computer.platform",
                "computer.os.linux",
                "computer.os.openbsd",
                "computer.os.templeos",
                "computer.os.plan9",
                "computer.os.macos",
                "computer.os.windows",
                "crypto_coin.coin",
                "device.platform",
                "device.model_name",
                "device.manufacturer",
                "device.serial",
                "programming_language.name",
                "programming_language.creator",
                "airport.usa.large",
                "airport.usa.medium",
                "airport.usa.small",
                "airport.usa.iata.large",
                "airport.usa.iata.medium",
                "airport.usa.iata.small",
                "airport.eu.large",
                "airport.eu.medium",
                "airport.eu.iata.large",
                "airport.eu.iata.medium",
                "australia.locations",
                "australia.animals",
                "australia.states",
                "mountain.name",
                "mountain.range",
                "nation.nationality",
                "nation.capital_city",
                "nation.language",
                "train_station.uk.metro",
                "train_station.uk.railway",
                "train_station.spain.metro",
                "train_station.spain.railway",
                "train_station.germany.metro",
                "train_station.germany.railway",
                "train_station.usa.metro",
                "train_station.usa.railway",
                "beer.name",
                "beer.style",
                "beer.hop",
                "beer.yeast",
                "beer.malts",
                "beer.brand",
                "credit_card.number",
                "credit_card.type",
                "finance.vat_number",
                "finance.ticker",
                "coffee.blend_name",
                "coffee.country",
                "coffee.notes",
                "coffee.variety",
                "coffee.region",
                "ancient.god",
                "ancient.primordial",
                "ancient.titan",
                "ancient.hero",
                "animal.name",
                "bird.geo",
                "bird.anatomy",
                "bird.colors",
                "bird.plausible_name",
                "bird.family_name",
                "cat.name",
                "cat.breed",
                "cat.registry",
                "dog.name",
                "dog.breed",
                "dog.sound",
                "dog.meme_phrase",
                "dog.coat_length",
                "dog.size",
                "dog.age",
                "horse.name",
                "horse.breed",
                "dessert.flavor",
                "dessert.topping",
                "dessert.variety",
                "dessert",
                "food.allergens",
                "food.dish",
                "food.description",
                "food.ingredients",
                "food.fruits",
                "food.vegetables",
                "food.spices",
                "food.measurement_sizes",
                "food.measurements",
                "food.metric_measurements",
                "food.sushi",
                "food.ethnic_category",
                "house.furniture",
                "house.rooms",
                "industry",
                "industry.super_sector",
                "industry.sector",
                "industry.sub_sector",
                "restaurant.name",
                "restaurant.type",
                "restaurant.description",
                "restaurant.review",
                "stripe.valid_card",
                "stripe.valid_token",
                "stripe.invalid_card",
                "subscription.plan",
                "subscription.status",
                "subscription.payment_method",
                "subscription.term",
                "subscription.payment_term",
                "tea.type",
                "tea.variety.black",
                "tea.variety.green",
                "tea.variety.white",
                "tea.variety.oolong",
                "tea.variety.herbal",
                "barcode.ean8",
                "barcode.ean13",
                "barcode.upca",
                "barcode.upce",
                "barcode.composite_symbol",
                "barcode.isbn",
                "barcode.ismn",
                "barcode.issn"
              ]
            }
          },
          "if": {
            "properties": {
              "generator": {
                "const": "text"
              }
            }
          },
          "then": {
            "properties": {
              "min": {
                "type": "integer",
                "minimum": 1
              },
              "max": {
                "type": "integer",
                "minimum": 1
              }
            }
          },
          "else": {
            "if": {
              "properties": {
                "generator": {
                  "const": "range"
                }
              }
            },
            "then": {
              "properties": {
                "min": {
                  "type": "number",
                  "multipleOf": 1
                },
                "max": {
                  "type": "number",
                  "multipleOf": 1
                }
              },
              "required": [
                "min",
                "max"
              ],
              "type": "object"
            },
            "else": {
              "if": {
                "properties": {
                  "generator": {
                    "const": "predefined"
                  }
                }
              },
              "then": {
                "properties": {
                  "values": {
                    "type": "array",
                    "items": {
                      "anyOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        },
                        {
                          "type": "boolean"
                        },
                        {
                          "type": "object"
                        },
                        {
                          "type": "array"
                        }
                      ]
                    }
                  }
                },
                "required": [
                  "values"
                ],
                "type": "object"
              },
              "else": {
                "if": {
                  "properties": {
                    "generator": {
                      "const": "byte_array"
                    }
                  }
                },
                "then": {
                  "properties": {
                    "size": {
                      "type": "integer",
                      "minimum": 1
                    }
                  }
                }
              }
            }
          },
          "type": "object"
        }
      }
    }
  }
}
