Rex Software MCP by usefulapi
Read contacts, listings, tenancies and tasks; create a person contact, note or reminder.
使うべきか
品質と安全性
検出事項(2)
- HIGH
- MEDIUMrex_list_accessible_accounts 内
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"rex-software": {
"url": "https://rex-software.usefulapi.io/mcp"
}
}
}リモートエンドポイント
https://rex-software.usefulapi.io/mcpstreamable-httpできること
ツール一覧
ツール(33)
🟢rex_get_user_profile
The Rex user this server is signed in as: user id, name, email, whether they own the account, position and default office. Good first call. POST /v1/rex/UserProfile/read.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_list_accessible_accounts
The Rex agency accounts (account_id and name) this user can sign in to. A user with several accounts picks one with the Account id field when connecting. POST /v1/rex/UserProfile/getAccessibleAccounts.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_describe_search_fields(service, match, include_order_by)
The field names a search on the given service accepts in criteria, each with its label, type and (for enums) the value list. Call this before building criteria on a field you are not sure of. Sorting (order_by) uses a separate list of sortable fields whose names can differ (for example name_last, not contact.name_last): set include_order_by to get it. POST /v1/rex/<Service>/describeSearchFields (and <Service>/describeModel for include_order_by).
入力スキーマ
{
"type": "object",
"properties": {
"service": {
"type": "string",
"enum": [
"Contacts",
"Listings",
"Properties",
"Leads",
"Appraisals",
"Tenancies",
"Reminders",
"Appointments",
"Notes",
"Deals",
"Activities",
"ListingEvents",
"AccountUsers",
"Campaigns"
],
"description": "The Rex service, for example Contacts or Listings."
},
"match": {
"description": "Only fields whose name or label contains this text (case-insensitive). The big services have hundreds of fields, so filter.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"include_order_by": {
"description": "Also return the service's model description, which lists the fields order_by accepts (they can differ from the search field names).",
"type": "boolean"
}
},
"required": [
"service"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_list_value_lists
The names of Rex's value lists (the allowed ids for fields such as note types, reminder types, lead sources and property categories). Use a name with rex_get_value_list. POST /v1/rex/SystemValues/getValueCategories.
入力スキーマ
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_get_value_list(list_name)
The allowed values (id and label) of one value list, for example property_category. The ids are what writes and criteria expect. POST /v1/rex/SystemValues/getCategoryValues.
入力スキーマ
{
"type": "object",
"properties": {
"list_name": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,100}$",
"description": "The list name from rex_list_value_lists."
}
},
"required": [
"list_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_autocomplete_contacts(search_string, limit)
Quick lookup of contacts by (part of) a name: returns the best matches with id, name, email and phone. Use the id with rex_get_contact. POST /v1/rex/Contacts/autocomplete.
入力スキーマ
{
"type": "object",
"properties": {
"search_string": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Part of the contact's or company's name."
},
"limit": {
"description": "Matches to return, 1-50 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"search_string"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_autocomplete_listings(search_string, listing_states, limit)
Quick lookup of listings by (part of) an address: returns the best matches with listing id and address. Use the id with rex_get_listing. POST /v1/rex/Listings/autocomplete.
入力スキーマ
{
"type": "object",
"properties": {
"search_string": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "Part of the property address, for example '12 Smith St' or 'Subiaco'."
},
"listing_states": {
"description": "Only listings in these states, for example [\"current\"] (see rex_get_value_list listing_system_state).",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-z_]{1,40}$"
}
},
"limit": {
"description": "Matches to return, 1-50 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"search_string"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_contacts(criteria, order_by, offset, limit, search_state)
Search contacts (people and companies). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: contact.name_full, contact.name_first, contact.name_last, contact.email_address, contact.phone_number, contact.type, contact.tags, contact.interest_level, contact.last_contacted_date, system_modtime. To find someone by name, rex_autocomplete_contacts is simpler. POST /v1/rex/Contacts/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_listings(criteria, order_by, offset, limit, search_state)
Search listings (properties for sale or rent). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: listing.system_listing_state (for example "current"), listing.system_publication_status, listing.price_match, listing.listing_agent_id, listing.listing_category_id, property.adr_suburb_or_town, property.adr_postcode, property.adr_street_name, property.attr_bedrooms. To find a listing by address, rex_autocomplete_listings is simpler. POST /v1/rex/Listings/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_properties(criteria, order_by, offset, limit, search_state)
Search properties (the physical addresses behind listings, appraisals and tenancies). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: property.system_search_key, property.adr_suburb_or_town, property.adr_postcode, property.adr_street_name, property.attr_bedrooms, property.attr_bathrooms. POST /v1/rex/Properties/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_leads(criteria, order_by, offset, limit, search_state)
Search leads (enquiries from portals, the website and email). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: lead.contact_id, lead.listing_id, lead.property_id, lead.assignee_id, lead.lead_source_id, lead.lead_status_id, lead.system_completed_time, system_ctime. POST /v1/rex/Leads/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_appraisals(criteria, order_by, offset, limit, search_state)
Search appraisals (listing presentations / market appraisals). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: appraisal_date, appraisal_state, appraisal_type_id, agent_id, property_id, listing_id, pipeline_stage_id, expected_close_date, price_asking. POST /v1/rex/Appraisals/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_tenancies(criteria, order_by, offset, limit, search_state)
Search tenancies (property management leases). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: id, property_id, system_record_state, lease_current_expiry, crt.contact_id. POST /v1/rex/Tenancies/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_reminders(criteria, order_by, offset, limit, search_state)
Search reminders (follow-up tasks) linked to contacts, properties and listings. Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: reminder_date, system_completed_time, remindee_user_id, contact_id, property_id, listing_id, reminder_type_id, priority_id. Open reminders have no system_completed_time (type is, value Null). POST /v1/rex/Reminders/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_appointments(criteria, order_by, offset, limit, search_state)
Search appointments (calendar items such as inspections and meetings). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). The searchable fields follow Reminders (reminder_date, remindee_user_id, contact_id, property_id, listing_id). Call rex_describe_search_fields with service Appointments for the full list. POST /v1/rex/Appointments/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_notes(criteria, order_by, offset, limit, search_state)
Search notes recorded against contacts and properties. Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: system_ctime, system_created_user_id, id. Call rex_describe_search_fields with service Notes for related contact and property fields. POST /v1/rex/Notes/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_deals(criteria, order_by, offset, limit, search_state)
Search deals (the sales pipeline). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: deal.deal_state, deal.expected_close_date, deal.archive_date, deal.tags, deal.description. POST /v1/rex/Deals/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_activities(criteria, order_by, offset, limit, search_state)
Search activities (the log of calls, emails and other actions on records). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: parent_object_type, parent_object_id, type_id, system_ctime, system_created_user_id. POST /v1/rex/Activities/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_listing_events(criteria, order_by, offset, limit, search_state)
Search listing events (open homes and inspections). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Call rex_describe_search_fields with service ListingEvents for the searchable fields. POST /v1/rex/ListingEvents/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_users(criteria, order_by, offset, limit, search_state)
Search the users (staff) of the agency account. Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Useful fields: first_name, last_name, email, status, user_group_id. User ids are used elsewhere as agent, assignee and remindee ids. POST /v1/rex/AccountUsers/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_search_campaigns(criteria, order_by, offset, limit, search_state)
Search campaigns (nurture and marketing campaigns with their members). Filters (criteria) combine with AND; results are paged with offset/limit (next_offset says where to continue). Call rex_describe_search_fields with service Campaigns for the searchable fields. POST /v1/rex/Campaigns/search.
入力スキーマ
{
"type": "object",
"properties": {
"criteria": {
"description": "Filters, combined with AND: [{ name, type?, value }]. Only the in type gives an OR. Field names come from rex_describe_search_fields.",
"maxItems": 30,
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"pattern": "^[A-Za-z0-9_.]+$",
"description": "Search field name, as listed by rex_describe_search_fields (for example contact.email_address, listing.system_listing_state)."
},
"type": {
"description": "Comparison; default \"=\". between takes [min, max]; in takes a list; is/isnot take \"Null\".",
"type": "string",
"enum": [
"=",
">",
">=",
"<",
"<=",
"is",
"isnot",
"between",
"in",
"intersect_any",
"intersect_all",
"intersect_all_right",
"intersect_none"
]
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"maxItems": 200,
"type": "array",
"items": {
"type": [
"string",
"number"
]
}
}
],
"description": "The value to compare with (a list for in, between and intersect_*)."
}
},
"required": [
"name",
"value"
]
}
},
"order_by": {
"description": "Sort, sortable field name to direction, for example { \"system_modtime\": \"DESC\" }. Sortable names can differ from search field names (rex_describe_search_fields with include_order_by lists them).",
"type": "object",
"propertyNames": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,200}$"
},
"additionalProperties": {
"type": "string",
"enum": [
"ASC",
"DESC",
"asc",
"desc"
]
}
},
"offset": {
"description": "Rows to skip (default 0). Use next_offset from the previous reply.",
"type": "integer",
"minimum": 0,
"maximum": 1000000
},
"limit": {
"description": "Rows to return, 1-100 (default 20).",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"search_state": {
"description": "Which records to search: active (default), archive or trash.",
"type": "string",
"enum": [
"active",
"archive",
"trash"
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_get_contact(id, fields)
One contact by id (names, emails, phones, addresses, tags, relationships and the related properties and listings). The id comes from a search or autocomplete. POST /v1/rex/Contacts/read.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The contact id."
},
"fields": {
"description": "Limit the reply to these parts of the record (\"core\" is always included; related data is \"related.<name>\"). Omit for the whole record, which is large.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,100}$"
}
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_get_listing(id, fields)
One listing by id (state, price, agents, the property with its attributes, images, related contacts and events). The id comes from a search or autocomplete. POST /v1/rex/Listings/read.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The listing id."
},
"fields": {
"description": "Limit the reply to these parts of the record (\"core\" is always included; related data is \"related.<name>\"). Omit for the whole record, which is large.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,100}$"
}
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_get_property(id, fields)
One property by id (address, attributes (bedrooms, land area and so on), features, owners and the property's history). The id comes from a search or autocomplete. POST /v1/rex/Properties/read.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The property id."
},
"fields": {
"description": "Limit the reply to these parts of the record (\"core\" is always included; related data is \"related.<name>\"). Omit for the whole record, which is large.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Za-z0-9_.]{1,100}$"
}
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_get_lead(id)
One lead by id (contact, source, status, assignee and the original enquiry). The id comes from a search or autocomplete. POST /v1/rex/Leads/read.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The lead id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_get_appraisal(id)
One appraisal by id (date, state, agents, property, price expectations and commission estimate). The id comes from a search or autocomplete. POST /v1/rex/Appraisals/read.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The appraisal id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_get_tenancy(id)
One tenancy by id (property, tenants, lease dates and rent). The id comes from a search or autocomplete. POST /v1/rex/Tenancies/read.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The tenancy id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_get_note(id)
One note by id (text, type and the contacts and properties it is linked to). The id comes from a search or autocomplete. POST /v1/rex/Notes/read.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The note id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_get_deal(id)
One deal by id (state, value, parties and expected close date). The id comes from a search or autocomplete. POST /v1/rex/Deals/read.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The deal id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢rex_get_reminder(id)
One reminder by id (description, date, remindee, completion state and linked records). The id comes from a search or autocomplete. POST /v1/rex/Reminders/read.
入力スキーマ
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The reminder id."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rex_create_contact(first_name, last_name, email, phone, phone_type)
WRITE: create a new person contact in Rex with a name and optionally one email and one phone. Search first (rex_autocomplete_contacts) to avoid duplicates. Not retried. Returns the new contact id. POST /v1/rex/Contacts/create.
入力スキーマ
{
"type": "object",
"properties": {
"first_name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "First name."
},
"last_name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Last name."
},
"email": {
"description": "Primary email address.",
"type": "string",
"maxLength": 254,
"pattern": "^[^\\s@<>\",;]+@[^\\s@<>\",;]+\\.[^\\s@<>\",;]+$"
},
"phone": {
"description": "Primary phone number.",
"type": "string",
"minLength": 3,
"maxLength": 40
},
"phone_type": {
"description": "Phone type id from the value list (for example mobile, home or work); omit to let Rex choose.",
"type": "string",
"pattern": "^[a-z_]{1,30}$"
}
},
"required": [
"first_name",
"last_name"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rex_create_note(note, note_type, contact_ids, property_ids, update_last_contacted)
WRITE: add a note to one or more contacts and/or properties (for example after a call or an open home). Not retried. Returns the new note id. POST /v1/rex/Notes/create.
入力スキーマ
{
"type": "object",
"properties": {
"note": {
"type": "string",
"minLength": 1,
"maxLength": 20000,
"description": "The note text."
},
"note_type": {
"description": "Note type id from the value list (for example phonecall); omit to use Rex's default.",
"type": "string",
"pattern": "^[a-z_]{1,40}$"
},
"contact_ids": {
"description": "Contacts the note is about.",
"maxItems": 20,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "A contact id."
}
},
"property_ids": {
"description": "Properties the note is about.",
"maxItems": 20,
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "A property id."
}
},
"update_last_contacted": {
"description": "Also set the contacts' last-contacted date to today.",
"type": "boolean"
}
},
"required": [
"note"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴rex_create_reminder(description, date, reminder_type, priority, contact_id, ...)
WRITE: create a follow-up reminder (task) due on a date, optionally linked to a contact, property or listing and assigned to a user (default: Rex's default remindee). Not retried. Returns the new reminder id. POST /v1/rex/Reminders/create.
入力スキーマ
{
"type": "object",
"properties": {
"description": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "What to do, for example 'Call Will about the appraisal'."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Due date, yyyy-mm-dd."
},
"reminder_type": {
"description": "Reminder type id from the value list (for example email); omit to use Rex's default.",
"type": "string",
"pattern": "^[a-z_]{1,40}$"
},
"priority": {
"description": "Priority id from the value list (for example high).",
"type": "string",
"pattern": "^[a-z_]{1,40}$"
},
"contact_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Contact id to link."
},
"property_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Property id to link."
},
"listing_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "Listing id to link."
},
"remindee_user_id": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "The Rex user id to remind (from rex_search_users); omit for the default."
}
},
"required": [
"description",
"date"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}コミュニティ
エビデンス