PlmRequest
Request payload for POST /services/api. Corresponds to model set version 1.0.2-20260903172027. Point a JSON Schema validator at this file to check a payload before sending it. Draft-07 for the widest cross-language validator support.
Properties
| Name | Type | Description |
|---|---|---|
| number | string | Phone number in international form. Accepted with or without a leading '+'; the server normalises to E.164 and rejects numbers libphonenumber considers invalid (a regex cannot fully replicate that che |
| commands | array | Non-empty list of commands to run. Duplicate/unknown values are rejected (400). |
| kyc_challenges | object | |
| tenure_period | integer | Tenure window in days. Required only when the `tenure_period` command is requested. |
JSON Schema
{
"$schema" : "http://json-schema.org/draft-07/schema#",
"$id" : "https://connect.plumma.it/schemas/1.0.2-20260903172027/plmrequest.schema.json",
"title" : "PlmRequest",
"description" : "Request payload for POST /services/api. Corresponds to model set version 1.0.2-20260903172027. Point a JSON Schema validator at this file to check a payload before sending it. Draft-07 for the widest cross-language validator support.",
"x-model-version" : "1.0.2-20260903172027",
"definitions" : {
"Address" : {
"type" : "object",
"properties" : {
"street" : {
"type" : "string",
"minLength" : 1,
"maxLength" : 100,
"examples" : [ "Via Corsini" ]
},
"street_no" : {
"type" : "string",
"maxLength" : 10,
"pattern" : "[A-Za-z0-9\\-/]+",
"examples" : [ "21" ]
},
"city" : {
"type" : "string",
"minLength" : 1,
"maxLength" : 50,
"examples" : [ "Fanano" ],
"$comment" : "Server enforces [\\p{L}'\\-\\s]+ ; omitted here for cross-engine portability."
},
"province" : {
"type" : "string",
"maxLength" : 50,
"examples" : [ "MO" ]
},
"postcode" : {
"type" : "string",
"pattern" : "[0-9A-Za-z]{4,10}",
"examples" : [ "41021" ]
},
"national_id" : {
"type" : "string",
"maxLength" : 50,
"pattern" : "[A-Za-z0-9\\-]+"
},
"country" : {
"type" : "string",
"pattern" : "[A-Za-z]{2,3}",
"description" : "ISO country code (2-3 letters).",
"examples" : [ "IT" ]
},
"normalize" : {
"type" : "boolean",
"default" : false
},
"house_number_extension" : {
"type" : "string"
}
},
"additionalProperties" : false,
"description" : "Structured postal address. Mutually exclusive with inline_address.",
"required" : [ "street", "street_no", "city", "postcode", "country" ]
},
"Dob" : {
"type" : "object",
"properties" : {
"day" : {
"type" : "integer",
"minimum" : 1,
"maximum" : 31,
"examples" : [ 28 ]
},
"month" : {
"type" : "integer",
"minimum" : 1,
"maximum" : 12,
"examples" : [ 2 ]
},
"year" : {
"type" : "integer",
"minimum" : 1900,
"maximum" : 2100,
"examples" : [ 1999 ]
}
},
"additionalProperties" : false,
"description" : "Date of birth. Either fully specified (day+month+year) or entirely omitted — a partial DOB is rejected.",
"dependencies" : {
"day" : [ "month", "year" ],
"month" : [ "day", "year" ],
"year" : [ "day", "month" ]
}
},
"InlineAddress" : {
"type" : "object",
"properties" : {
"address" : {
"type" : "string",
"minLength" : 1,
"examples" : [ "23 Omnia Street, London, EC1A 1BB, GB" ]
},
"normalize" : {
"type" : "boolean",
"default" : false
}
},
"additionalProperties" : false,
"description" : "Free-text address as a single string. Mutually exclusive with address.",
"required" : [ "address" ]
},
"KycChallenges" : {
"type" : "object",
"properties" : {
"dob" : {
"$ref" : "#/definitions/Dob"
},
"name" : {
"$ref" : "#/definitions/Name"
},
"address" : {
"$ref" : "#/definitions/Address"
},
"email" : {
"type" : "string",
"format" : "email",
"examples" : [ "john.smith@example.com" ]
},
"inline_address" : {
"$ref" : "#/definitions/InlineAddress"
},
"return_address" : {
"type" : "boolean",
"description" : "Ask the supplier to return the normalized address block."
},
"gender" : {
"type" : "string"
}
},
"additionalProperties" : false,
"description" : "Data to match for `kyc_match`. Must carry EXACTLY ONE address form: `address` (structured) or `inline_address` (free text) — never both, never neither.",
"oneOf" : [ {
"$comment" : "structured address present, inline absent",
"required" : [ "address" ],
"not" : {
"required" : [ "inline_address" ]
}
}, {
"$comment" : "inline address present, structured absent",
"required" : [ "inline_address" ],
"not" : {
"required" : [ "address" ]
}
} ]
},
"Name" : {
"type" : "object",
"properties" : {
"first_name" : {
"type" : "string",
"minLength" : 2,
"maxLength" : 100,
"$comment" : "Server also requires ^[\\p{L}][\\p{L}'\\-\\s]*$; \\p{L} is not portable across JSON Schema regex engines, so only length is validated here and the exact character rule stays server-side."
},
"last_name" : {
"type" : "string",
"minLength" : 2,
"maxLength" : 100
},
"middle_name" : {
"type" : "string",
"minLength" : 2,
"maxLength" : 100
},
"name_kana_hankaku" : {
"type" : "string"
},
"name_kana_zenkaku" : {
"type" : "string"
},
"family_name_at_birth" : {
"type" : "string",
"minLength" : 2,
"maxLength" : 100
}
},
"additionalProperties" : false
},
"allowedCommandValues" : {
"type" : "string",
"enum" : [ "line_classification", "current_carrier", "issuing_carrier", "porting_timestamp", "porting_logs", "network_presence", "roaming_intel", "deactivation_point", "churn_tracker", "sim_swap", "port_fraud_shield", "digital_footprint", "age_verification", "kyc_match", "divert_detector", "commercial_segment", "tenure_period" ]
}
},
"type" : "object",
"properties" : {
"number" : {
"type" : "string",
"minLength" : 1,
"pattern" : "^\\+?[1-9][0-9]{6,14}$",
"description" : "Phone number in international form. Accepted with or without a leading '+'; the server normalises to E.164 and rejects numbers libphonenumber considers invalid (a regex cannot fully replicate that check).",
"examples" : [ "+393273339145", "447808226974" ]
},
"commands" : {
"type" : "array",
"items" : {
"$ref" : "#/definitions/allowedCommandValues"
},
"minItems" : 1,
"description" : "Non-empty list of commands to run. Duplicate/unknown values are rejected (400)."
},
"kyc_challenges" : {
"$ref" : "#/definitions/KycChallenges"
},
"tenure_period" : {
"type" : "integer",
"description" : "Tenure window in days. Required only when the `tenure_period` command is requested.",
"examples" : [ 90 ]
}
},
"additionalProperties" : false,
"required" : [ "number", "commands" ],
"allOf" : [ {
"$comment" : "When kyc_match is requested, kyc_challenges is required.",
"if" : {
"properties" : {
"commands" : {
"contains" : {
"const" : "kyc_match"
}
}
},
"required" : [ "commands" ]
},
"then" : {
"required" : [ "kyc_challenges" ]
}
}, {
"$comment" : "When the tenure_period command is requested, the tenure_period value is required.",
"if" : {
"properties" : {
"commands" : {
"contains" : {
"const" : "tenure_period"
}
}
},
"required" : [ "commands" ]
},
"then" : {
"required" : [ "tenure_period" ]
}
} ]
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/plumma-plmrequest.schema"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.