@model-match/api 3.17.0 → 3.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{index-CEo1apoH.d.mts → index-CGoyq3QT.d.mts} +220 -90
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/slim/index.d.mts +26 -10
- package/dist/slim/index.mjs +25 -9
- package/dist/{src-_-RWzjQf.mjs → src-cKUuYWMX.mjs} +24 -8
- package/openapi.json +539 -107
- package/package.json +2 -2
package/openapi.json
CHANGED
|
@@ -5382,6 +5382,35 @@
|
|
|
5382
5382
|
},
|
|
5383
5383
|
"type": "array"
|
|
5384
5384
|
},
|
|
5385
|
+
"BulkDeliveryBilling": {
|
|
5386
|
+
"description": "`credits` = billed at 1 credit per delivered row. `none` = not billed (push-target deliveries from the ModelMatch web app).",
|
|
5387
|
+
"enum": [
|
|
5388
|
+
"credits",
|
|
5389
|
+
"none"
|
|
5390
|
+
],
|
|
5391
|
+
"type": "string"
|
|
5392
|
+
},
|
|
5393
|
+
"BulkDeliveryDestination": {
|
|
5394
|
+
"description": "Where the finished delivery goes. Omit for the default — a file you download from the status endpoint. `push-target`: when the job completes, the rows are handed to the named push target, which sends them to its configured HTTPS destination using its own field mapping and signing. The target is checked at submit (it must exist, be enabled, accept this entity, and be usable by you on your plan) — a failed check rejects the submit with the push target's error `code`. `format` is ignored (the handoff is always gzipped NDJSON), and when the target's mapping reads only some fields, only those fields (plus `id`) are delivered. Row limits, entitlements, `limit`, and billing (1 credit / row) are unchanged, except that push-target deliveries submitted from the ModelMatch web app are not billed. Poll the job for `pushBatchId`; a handoff that cannot be completed fails the job with error `push_handoff_failed` and is not billed.",
|
|
5395
|
+
"properties": {
|
|
5396
|
+
"targetId": {
|
|
5397
|
+
"description": "Id of a push target configured on the active workspace (or your own member push targets).",
|
|
5398
|
+
"minLength": 1,
|
|
5399
|
+
"type": "string"
|
|
5400
|
+
},
|
|
5401
|
+
"type": {
|
|
5402
|
+
"enum": [
|
|
5403
|
+
"push-target"
|
|
5404
|
+
],
|
|
5405
|
+
"type": "string"
|
|
5406
|
+
}
|
|
5407
|
+
},
|
|
5408
|
+
"required": [
|
|
5409
|
+
"type",
|
|
5410
|
+
"targetId"
|
|
5411
|
+
],
|
|
5412
|
+
"type": "object"
|
|
5413
|
+
},
|
|
5385
5414
|
"BulkDeliveryForbidden": {
|
|
5386
5415
|
"properties": {
|
|
5387
5416
|
"entitlementKey": {
|
|
@@ -5419,7 +5448,7 @@
|
|
|
5419
5448
|
"type": "object"
|
|
5420
5449
|
},
|
|
5421
5450
|
"BulkDeliveryFormat": {
|
|
5422
|
-
"description": "Output file format for the delivered dataset. Every format contains the same rows — the entity's list/summary DTO (e.g. `LoanSummary`), one record per row. `ndjson`: gzipped newline-delimited JSON (`application/x-ndjson`, `.ndjson.gz`). `json`: a single JSON array (`application/json`, `.json`). `csv`: RFC 4180 (`text/csv`, `.csv`). `parquet`: typed columnar Apache Parquet — scalar fields keep their DTO types, nested fields are JSON-encoded strings (`application/vnd.apache.parquet`, `.parquet`).",
|
|
5451
|
+
"description": "Output file format for the delivered dataset. Every format contains the same rows — the entity's list/summary DTO (e.g. `LoanSummary`), one record per row. `ndjson`: gzipped newline-delimited JSON (`application/x-ndjson`, `.ndjson.gz`). `json`: a single JSON array (`application/json`, `.json`). `csv`: RFC 4180 (`text/csv`, `.csv`). `parquet`: typed columnar Apache Parquet — scalar fields keep their DTO types, nested fields are JSON-encoded strings (`application/vnd.apache.parquet`, `.parquet`). Required on submit unless `destination` is a push target, which always delivers gzipped NDJSON (a missing `format` on a file delivery is a 400 `format_required`).",
|
|
5423
5452
|
"enum": [
|
|
5424
5453
|
"ndjson",
|
|
5425
5454
|
"json",
|
|
@@ -5465,6 +5494,31 @@
|
|
|
5465
5494
|
],
|
|
5466
5495
|
"type": "object"
|
|
5467
5496
|
},
|
|
5497
|
+
"BulkDeliveryInsufficientScope": {
|
|
5498
|
+
"properties": {
|
|
5499
|
+
"error": {
|
|
5500
|
+
"enum": [
|
|
5501
|
+
"insufficient_scope"
|
|
5502
|
+
],
|
|
5503
|
+
"type": "string"
|
|
5504
|
+
},
|
|
5505
|
+
"message": {
|
|
5506
|
+
"type": "string"
|
|
5507
|
+
},
|
|
5508
|
+
"requiredScope": {
|
|
5509
|
+
"enum": [
|
|
5510
|
+
"push-targets:send"
|
|
5511
|
+
],
|
|
5512
|
+
"type": "string"
|
|
5513
|
+
}
|
|
5514
|
+
},
|
|
5515
|
+
"required": [
|
|
5516
|
+
"error",
|
|
5517
|
+
"requiredScope",
|
|
5518
|
+
"message"
|
|
5519
|
+
],
|
|
5520
|
+
"type": "object"
|
|
5521
|
+
},
|
|
5468
5522
|
"BulkDeliveryPreflightExceeded": {
|
|
5469
5523
|
"properties": {
|
|
5470
5524
|
"error": {
|
|
@@ -5490,8 +5544,52 @@
|
|
|
5490
5544
|
],
|
|
5491
5545
|
"type": "object"
|
|
5492
5546
|
},
|
|
5547
|
+
"BulkDeliveryPushTargetError": {
|
|
5548
|
+
"description": "The push-target destination was refused: `TARGET_NOT_FOUND` (404), `FORBIDDEN` (403), `PLAN_REQUIRED` (402), `TARGET_DISABLED` (409), `ENTITY_MISMATCH` (400).",
|
|
5549
|
+
"properties": {
|
|
5550
|
+
"code": {
|
|
5551
|
+
"enum": [
|
|
5552
|
+
"TARGET_NOT_FOUND",
|
|
5553
|
+
"FORBIDDEN",
|
|
5554
|
+
"PLAN_REQUIRED",
|
|
5555
|
+
"TARGET_DISABLED",
|
|
5556
|
+
"ENTITY_MISMATCH"
|
|
5557
|
+
],
|
|
5558
|
+
"type": "string"
|
|
5559
|
+
},
|
|
5560
|
+
"error": {
|
|
5561
|
+
"enum": [
|
|
5562
|
+
"TARGET_NOT_FOUND",
|
|
5563
|
+
"FORBIDDEN",
|
|
5564
|
+
"PLAN_REQUIRED",
|
|
5565
|
+
"TARGET_DISABLED",
|
|
5566
|
+
"ENTITY_MISMATCH"
|
|
5567
|
+
],
|
|
5568
|
+
"type": "string"
|
|
5569
|
+
},
|
|
5570
|
+
"message": {
|
|
5571
|
+
"type": "string"
|
|
5572
|
+
}
|
|
5573
|
+
},
|
|
5574
|
+
"required": [
|
|
5575
|
+
"error",
|
|
5576
|
+
"code",
|
|
5577
|
+
"message"
|
|
5578
|
+
],
|
|
5579
|
+
"type": "object"
|
|
5580
|
+
},
|
|
5493
5581
|
"BulkDeliveryStatusResponse": {
|
|
5494
5582
|
"properties": {
|
|
5583
|
+
"billing": {
|
|
5584
|
+
"$ref": "#/components/schemas/BulkDeliveryBilling"
|
|
5585
|
+
},
|
|
5586
|
+
"billingReason": {
|
|
5587
|
+
"description": "Why `billing` is `none`: `first_party_push_target` = a push-target delivery submitted from the ModelMatch web app.",
|
|
5588
|
+
"enum": [
|
|
5589
|
+
"first_party_push_target"
|
|
5590
|
+
],
|
|
5591
|
+
"type": "string"
|
|
5592
|
+
},
|
|
5495
5593
|
"bytes": {
|
|
5496
5594
|
"minimum": 0,
|
|
5497
5595
|
"type": "integer"
|
|
@@ -5513,6 +5611,9 @@
|
|
|
5513
5611
|
"minimum": 0,
|
|
5514
5612
|
"type": "number"
|
|
5515
5613
|
},
|
|
5614
|
+
"destination": {
|
|
5615
|
+
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
5616
|
+
},
|
|
5516
5617
|
"downloadUrl": {
|
|
5517
5618
|
"description": "Stable, shareable download link for the completed dataset. Forces a file download (with a friendly filename) and stays valid for 7 days after completion. Present once `status` is `completed`. This is the link to hand to a user or send by email.",
|
|
5518
5619
|
"type": "string"
|
|
@@ -5521,6 +5622,7 @@
|
|
|
5521
5622
|
"type": "string"
|
|
5522
5623
|
},
|
|
5523
5624
|
"error": {
|
|
5625
|
+
"description": "Why the job failed. `push_handoff_failed` = the rows were exported but could not be handed to the push target (not billed).",
|
|
5524
5626
|
"type": "string"
|
|
5525
5627
|
},
|
|
5526
5628
|
"estimatedTotal": {
|
|
@@ -5537,6 +5639,10 @@
|
|
|
5537
5639
|
"minimum": 0,
|
|
5538
5640
|
"type": "integer"
|
|
5539
5641
|
},
|
|
5642
|
+
"pushBatchId": {
|
|
5643
|
+
"description": "Push-target deliveries only: the batch the push target is sending, set once the completed file was handed off. Per-record send progress is tracked by the push target, not this job.",
|
|
5644
|
+
"type": "string"
|
|
5645
|
+
},
|
|
5540
5646
|
"resultsUrl": {
|
|
5541
5647
|
"description": "Direct download URL for the completed dataset. Long-lived per request but changes on each poll; prefer `downloadUrl` for a stable link to share.",
|
|
5542
5648
|
"type": "string"
|
|
@@ -5563,6 +5669,12 @@
|
|
|
5563
5669
|
},
|
|
5564
5670
|
"BulkDeliverySubmitResponse": {
|
|
5565
5671
|
"properties": {
|
|
5672
|
+
"billing": {
|
|
5673
|
+
"$ref": "#/components/schemas/BulkDeliveryBilling"
|
|
5674
|
+
},
|
|
5675
|
+
"destination": {
|
|
5676
|
+
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
5677
|
+
},
|
|
5566
5678
|
"entityType": {
|
|
5567
5679
|
"type": "string"
|
|
5568
5680
|
},
|
|
@@ -32574,9 +32686,9 @@
|
|
|
32574
32686
|
}
|
|
32575
32687
|
},
|
|
32576
32688
|
"info": {
|
|
32577
|
-
"description": "ModelMatch API — mortgage and real-estate market data.\n\n## Bulk delivery limits\n\nThe `POST /{entity}/bulk-delivery` endpoints export a full result set to\nS3 as NDJSON, JSON, CSV, or Parquet.\n\n- **Up to
|
|
32689
|
+
"description": "ModelMatch API — mortgage and real-estate market data.\n\n## Bulk delivery limits\n\nThe `POST /{entity}/bulk-delivery` endpoints export a full result set to\nS3 as NDJSON, JSON, CSV, or Parquet.\n\n- **Up to 5,000 rows per delivery: no entitlement required.** Available to\n every authenticated caller.\n- **Above 5,000 rows: requires the entity's `bulk-delivery.{entity}`\n entitlement** (e.g. `bulk-delivery.loans`). The grant's scope sets your\n row ceiling and may also restrict which rows and fields you receive.\n\nA delivery that would exceed the limit available to you is rejected with\n`403 entitlement_missing`, reporting the matched row count and the ceiling\nthat applied. To stay under the limit, pass `limit` — the job then delivers\n(and bills for) only the first `limit` rows of a broader query.\n\n**Need a higher limit?** Email support@modelmatch.com to request the\nentitlement. Limits are raised per organization and per entity.\n\nBulk delivery is billed at 1 credit per delivered row whether or not\nan entitlement is held.\n\nInstead of a download, a delivery can be sent to a push target configured\non your workspace: pass `destination: { type: \"push-target\", targetId }`.\nThe same limits and billing apply.",
|
|
32578
32690
|
"title": "ModelMatch API",
|
|
32579
|
-
"version": "3.
|
|
32691
|
+
"version": "3.64.0"
|
|
32580
32692
|
},
|
|
32581
32693
|
"openapi": "3.1.0",
|
|
32582
32694
|
"paths": {
|
|
@@ -32913,7 +33025,7 @@
|
|
|
32913
33025
|
},
|
|
32914
33026
|
"/agents/bulk-delivery": {
|
|
32915
33027
|
"post": {
|
|
32916
|
-
"description": "Queues an ECS task that dumps every matching agents document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/agents/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to
|
|
33028
|
+
"description": "Queues an ECS task that dumps every matching agents document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/agents/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.agents` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase.\n\nDelivery is billed at 1 credit per row regardless of entitlement.\n\n**Push-target destination.** Pass `destination: { type: \"push-target\", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.",
|
|
32917
33029
|
"operationId": "submitAgentsBulkDelivery",
|
|
32918
33030
|
"requestBody": {
|
|
32919
33031
|
"content": {
|
|
@@ -32926,8 +33038,11 @@
|
|
|
32926
33038
|
{
|
|
32927
33039
|
"additionalProperties": false,
|
|
32928
33040
|
"properties": {
|
|
33041
|
+
"destination": {
|
|
33042
|
+
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
33043
|
+
},
|
|
32929
33044
|
"fields": {
|
|
32930
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects.",
|
|
33045
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
32931
33046
|
"items": {
|
|
32932
33047
|
"minLength": 1,
|
|
32933
33048
|
"type": "string"
|
|
@@ -32938,16 +33053,13 @@
|
|
|
32938
33053
|
"$ref": "#/components/schemas/BulkDeliveryFormat"
|
|
32939
33054
|
},
|
|
32940
33055
|
"limit": {
|
|
32941
|
-
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies —
|
|
32942
|
-
"example":
|
|
33056
|
+
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies — 5,000 without the entity's bulk-delivery entitlement, or the entitlement's `maxRows` with it. A `limit` above the ceiling is rejected, but a `limit` at or below it lets you export a capped top-N even when the full match exceeds the ceiling — which is the intended way to run a broad query under the 5,000-row allowance.",
|
|
33057
|
+
"example": 5000,
|
|
32943
33058
|
"exclusiveMinimum": true,
|
|
32944
33059
|
"minimum": 0,
|
|
32945
33060
|
"type": "integer"
|
|
32946
33061
|
}
|
|
32947
33062
|
},
|
|
32948
|
-
"required": [
|
|
32949
|
-
"format"
|
|
32950
|
-
],
|
|
32951
33063
|
"type": "object"
|
|
32952
33064
|
}
|
|
32953
33065
|
]
|
|
@@ -32976,12 +33088,15 @@
|
|
|
32976
33088
|
},
|
|
32977
33089
|
{
|
|
32978
33090
|
"$ref": "#/components/schemas/BulkDeliveryPreflightExceeded"
|
|
33091
|
+
},
|
|
33092
|
+
{
|
|
33093
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
32979
33094
|
}
|
|
32980
33095
|
]
|
|
32981
33096
|
}
|
|
32982
33097
|
}
|
|
32983
33098
|
},
|
|
32984
|
-
"description": "Validation failure
|
|
33099
|
+
"description": "Validation failure (incl. `format_required`: a file delivery needs `format`), delivery would exceed the entitlement's maxRows, OR the push target does not accept this entity (`ENTITY_MISMATCH`)"
|
|
32985
33100
|
},
|
|
32986
33101
|
"401": {
|
|
32987
33102
|
"content": {
|
|
@@ -32997,21 +33112,58 @@
|
|
|
32997
33112
|
"content": {
|
|
32998
33113
|
"application/json": {
|
|
32999
33114
|
"schema": {
|
|
33000
|
-
"
|
|
33115
|
+
"anyOf": [
|
|
33116
|
+
{
|
|
33117
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientCredits"
|
|
33118
|
+
},
|
|
33119
|
+
{
|
|
33120
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
33121
|
+
}
|
|
33122
|
+
]
|
|
33001
33123
|
}
|
|
33002
33124
|
}
|
|
33003
33125
|
},
|
|
33004
|
-
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row)"
|
|
33126
|
+
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row), OR the plan does not include push targets (`PLAN_REQUIRED`)"
|
|
33005
33127
|
},
|
|
33006
33128
|
"403": {
|
|
33007
33129
|
"content": {
|
|
33008
33130
|
"application/json": {
|
|
33009
33131
|
"schema": {
|
|
33010
|
-
"
|
|
33132
|
+
"anyOf": [
|
|
33133
|
+
{
|
|
33134
|
+
"$ref": "#/components/schemas/BulkDeliveryForbidden"
|
|
33135
|
+
},
|
|
33136
|
+
{
|
|
33137
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
33138
|
+
},
|
|
33139
|
+
{
|
|
33140
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientScope"
|
|
33141
|
+
}
|
|
33142
|
+
]
|
|
33143
|
+
}
|
|
33144
|
+
}
|
|
33145
|
+
},
|
|
33146
|
+
"description": "Delivery exceeds the 5,000-row limit available without the `bulk-delivery.agents` entitlement (lower `limit`, narrow the filters, or contact support for a limit increase), OR you may not use the push target (`FORBIDDEN`), OR a scoped token named a push-target destination without `push-targets:send` (`insufficient_scope`)."
|
|
33147
|
+
},
|
|
33148
|
+
"404": {
|
|
33149
|
+
"content": {
|
|
33150
|
+
"application/json": {
|
|
33151
|
+
"schema": {
|
|
33152
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
33011
33153
|
}
|
|
33012
33154
|
}
|
|
33013
33155
|
},
|
|
33014
|
-
"description": "
|
|
33156
|
+
"description": "Push target not found (`TARGET_NOT_FOUND`)"
|
|
33157
|
+
},
|
|
33158
|
+
"409": {
|
|
33159
|
+
"content": {
|
|
33160
|
+
"application/json": {
|
|
33161
|
+
"schema": {
|
|
33162
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
33163
|
+
}
|
|
33164
|
+
}
|
|
33165
|
+
},
|
|
33166
|
+
"description": "Push target is disabled (`TARGET_DISABLED`)"
|
|
33015
33167
|
},
|
|
33016
33168
|
"502": {
|
|
33017
33169
|
"content": {
|
|
@@ -33021,7 +33173,7 @@
|
|
|
33021
33173
|
}
|
|
33022
33174
|
}
|
|
33023
33175
|
},
|
|
33024
|
-
"description": "Preflight / S3 / DDB / ECS launch failure"
|
|
33176
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, or the push-target check could not reach the auth server"
|
|
33025
33177
|
}
|
|
33026
33178
|
},
|
|
33027
33179
|
"summary": "Submit a bulk-delivery job for agents",
|
|
@@ -34662,7 +34814,7 @@
|
|
|
34662
34814
|
},
|
|
34663
34815
|
"/originators/bulk-delivery": {
|
|
34664
34816
|
"post": {
|
|
34665
|
-
"description": "Queues an ECS task that dumps every matching originators document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/originators/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to
|
|
34817
|
+
"description": "Queues an ECS task that dumps every matching originators document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/originators/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.originators` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase.\n\nDelivery is billed at 1 credit per row regardless of entitlement.\n\n**Push-target destination.** Pass `destination: { type: \"push-target\", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.",
|
|
34666
34818
|
"operationId": "submitOriginatorsBulkDelivery",
|
|
34667
34819
|
"requestBody": {
|
|
34668
34820
|
"content": {
|
|
@@ -34675,8 +34827,11 @@
|
|
|
34675
34827
|
{
|
|
34676
34828
|
"additionalProperties": false,
|
|
34677
34829
|
"properties": {
|
|
34830
|
+
"destination": {
|
|
34831
|
+
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
34832
|
+
},
|
|
34678
34833
|
"fields": {
|
|
34679
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects.",
|
|
34834
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
34680
34835
|
"items": {
|
|
34681
34836
|
"minLength": 1,
|
|
34682
34837
|
"type": "string"
|
|
@@ -34687,16 +34842,13 @@
|
|
|
34687
34842
|
"$ref": "#/components/schemas/BulkDeliveryFormat"
|
|
34688
34843
|
},
|
|
34689
34844
|
"limit": {
|
|
34690
|
-
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies —
|
|
34691
|
-
"example":
|
|
34845
|
+
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies — 5,000 without the entity's bulk-delivery entitlement, or the entitlement's `maxRows` with it. A `limit` above the ceiling is rejected, but a `limit` at or below it lets you export a capped top-N even when the full match exceeds the ceiling — which is the intended way to run a broad query under the 5,000-row allowance.",
|
|
34846
|
+
"example": 5000,
|
|
34692
34847
|
"exclusiveMinimum": true,
|
|
34693
34848
|
"minimum": 0,
|
|
34694
34849
|
"type": "integer"
|
|
34695
34850
|
}
|
|
34696
34851
|
},
|
|
34697
|
-
"required": [
|
|
34698
|
-
"format"
|
|
34699
|
-
],
|
|
34700
34852
|
"type": "object"
|
|
34701
34853
|
}
|
|
34702
34854
|
]
|
|
@@ -34725,12 +34877,15 @@
|
|
|
34725
34877
|
},
|
|
34726
34878
|
{
|
|
34727
34879
|
"$ref": "#/components/schemas/BulkDeliveryPreflightExceeded"
|
|
34880
|
+
},
|
|
34881
|
+
{
|
|
34882
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
34728
34883
|
}
|
|
34729
34884
|
]
|
|
34730
34885
|
}
|
|
34731
34886
|
}
|
|
34732
34887
|
},
|
|
34733
|
-
"description": "Validation failure
|
|
34888
|
+
"description": "Validation failure (incl. `format_required`: a file delivery needs `format`), delivery would exceed the entitlement's maxRows, OR the push target does not accept this entity (`ENTITY_MISMATCH`)"
|
|
34734
34889
|
},
|
|
34735
34890
|
"401": {
|
|
34736
34891
|
"content": {
|
|
@@ -34746,21 +34901,58 @@
|
|
|
34746
34901
|
"content": {
|
|
34747
34902
|
"application/json": {
|
|
34748
34903
|
"schema": {
|
|
34749
|
-
"
|
|
34904
|
+
"anyOf": [
|
|
34905
|
+
{
|
|
34906
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientCredits"
|
|
34907
|
+
},
|
|
34908
|
+
{
|
|
34909
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
34910
|
+
}
|
|
34911
|
+
]
|
|
34750
34912
|
}
|
|
34751
34913
|
}
|
|
34752
34914
|
},
|
|
34753
|
-
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row)"
|
|
34915
|
+
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row), OR the plan does not include push targets (`PLAN_REQUIRED`)"
|
|
34754
34916
|
},
|
|
34755
34917
|
"403": {
|
|
34756
34918
|
"content": {
|
|
34757
34919
|
"application/json": {
|
|
34758
34920
|
"schema": {
|
|
34759
|
-
"
|
|
34921
|
+
"anyOf": [
|
|
34922
|
+
{
|
|
34923
|
+
"$ref": "#/components/schemas/BulkDeliveryForbidden"
|
|
34924
|
+
},
|
|
34925
|
+
{
|
|
34926
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
34927
|
+
},
|
|
34928
|
+
{
|
|
34929
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientScope"
|
|
34930
|
+
}
|
|
34931
|
+
]
|
|
34932
|
+
}
|
|
34933
|
+
}
|
|
34934
|
+
},
|
|
34935
|
+
"description": "Delivery exceeds the 5,000-row limit available without the `bulk-delivery.originators` entitlement (lower `limit`, narrow the filters, or contact support for a limit increase), OR you may not use the push target (`FORBIDDEN`), OR a scoped token named a push-target destination without `push-targets:send` (`insufficient_scope`)."
|
|
34936
|
+
},
|
|
34937
|
+
"404": {
|
|
34938
|
+
"content": {
|
|
34939
|
+
"application/json": {
|
|
34940
|
+
"schema": {
|
|
34941
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
34760
34942
|
}
|
|
34761
34943
|
}
|
|
34762
34944
|
},
|
|
34763
|
-
"description": "
|
|
34945
|
+
"description": "Push target not found (`TARGET_NOT_FOUND`)"
|
|
34946
|
+
},
|
|
34947
|
+
"409": {
|
|
34948
|
+
"content": {
|
|
34949
|
+
"application/json": {
|
|
34950
|
+
"schema": {
|
|
34951
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
34952
|
+
}
|
|
34953
|
+
}
|
|
34954
|
+
},
|
|
34955
|
+
"description": "Push target is disabled (`TARGET_DISABLED`)"
|
|
34764
34956
|
},
|
|
34765
34957
|
"502": {
|
|
34766
34958
|
"content": {
|
|
@@ -34770,7 +34962,7 @@
|
|
|
34770
34962
|
}
|
|
34771
34963
|
}
|
|
34772
34964
|
},
|
|
34773
|
-
"description": "Preflight / S3 / DDB / ECS launch failure"
|
|
34965
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, or the push-target check could not reach the auth server"
|
|
34774
34966
|
}
|
|
34775
34967
|
},
|
|
34776
34968
|
"summary": "Submit a bulk-delivery job for originators",
|
|
@@ -36959,7 +37151,7 @@
|
|
|
36959
37151
|
},
|
|
36960
37152
|
"/v1/agents/bulk-delivery": {
|
|
36961
37153
|
"post": {
|
|
36962
|
-
"description": "Queues an ECS task that dumps every matching agents document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/agents/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to
|
|
37154
|
+
"description": "Queues an ECS task that dumps every matching agents document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/agents/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.agents` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase.\n\nDelivery is billed at 1 credit per row regardless of entitlement.\n\n**Push-target destination.** Pass `destination: { type: \"push-target\", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.",
|
|
36963
37155
|
"operationId": "submitAgentsBulkDelivery",
|
|
36964
37156
|
"requestBody": {
|
|
36965
37157
|
"content": {
|
|
@@ -36972,8 +37164,11 @@
|
|
|
36972
37164
|
{
|
|
36973
37165
|
"additionalProperties": false,
|
|
36974
37166
|
"properties": {
|
|
37167
|
+
"destination": {
|
|
37168
|
+
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
37169
|
+
},
|
|
36975
37170
|
"fields": {
|
|
36976
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects.",
|
|
37171
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
36977
37172
|
"items": {
|
|
36978
37173
|
"minLength": 1,
|
|
36979
37174
|
"type": "string"
|
|
@@ -36984,16 +37179,13 @@
|
|
|
36984
37179
|
"$ref": "#/components/schemas/BulkDeliveryFormat"
|
|
36985
37180
|
},
|
|
36986
37181
|
"limit": {
|
|
36987
|
-
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies —
|
|
36988
|
-
"example":
|
|
37182
|
+
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies — 5,000 without the entity's bulk-delivery entitlement, or the entitlement's `maxRows` with it. A `limit` above the ceiling is rejected, but a `limit` at or below it lets you export a capped top-N even when the full match exceeds the ceiling — which is the intended way to run a broad query under the 5,000-row allowance.",
|
|
37183
|
+
"example": 5000,
|
|
36989
37184
|
"exclusiveMinimum": true,
|
|
36990
37185
|
"minimum": 0,
|
|
36991
37186
|
"type": "integer"
|
|
36992
37187
|
}
|
|
36993
37188
|
},
|
|
36994
|
-
"required": [
|
|
36995
|
-
"format"
|
|
36996
|
-
],
|
|
36997
37189
|
"type": "object"
|
|
36998
37190
|
}
|
|
36999
37191
|
]
|
|
@@ -37022,12 +37214,15 @@
|
|
|
37022
37214
|
},
|
|
37023
37215
|
{
|
|
37024
37216
|
"$ref": "#/components/schemas/BulkDeliveryPreflightExceeded"
|
|
37217
|
+
},
|
|
37218
|
+
{
|
|
37219
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
37025
37220
|
}
|
|
37026
37221
|
]
|
|
37027
37222
|
}
|
|
37028
37223
|
}
|
|
37029
37224
|
},
|
|
37030
|
-
"description": "Validation failure
|
|
37225
|
+
"description": "Validation failure (incl. `format_required`: a file delivery needs `format`), delivery would exceed the entitlement's maxRows, OR the push target does not accept this entity (`ENTITY_MISMATCH`)"
|
|
37031
37226
|
},
|
|
37032
37227
|
"401": {
|
|
37033
37228
|
"content": {
|
|
@@ -37043,21 +37238,58 @@
|
|
|
37043
37238
|
"content": {
|
|
37044
37239
|
"application/json": {
|
|
37045
37240
|
"schema": {
|
|
37046
|
-
"
|
|
37241
|
+
"anyOf": [
|
|
37242
|
+
{
|
|
37243
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientCredits"
|
|
37244
|
+
},
|
|
37245
|
+
{
|
|
37246
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
37247
|
+
}
|
|
37248
|
+
]
|
|
37047
37249
|
}
|
|
37048
37250
|
}
|
|
37049
37251
|
},
|
|
37050
|
-
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row)"
|
|
37252
|
+
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row), OR the plan does not include push targets (`PLAN_REQUIRED`)"
|
|
37051
37253
|
},
|
|
37052
37254
|
"403": {
|
|
37053
37255
|
"content": {
|
|
37054
37256
|
"application/json": {
|
|
37055
37257
|
"schema": {
|
|
37056
|
-
"
|
|
37258
|
+
"anyOf": [
|
|
37259
|
+
{
|
|
37260
|
+
"$ref": "#/components/schemas/BulkDeliveryForbidden"
|
|
37261
|
+
},
|
|
37262
|
+
{
|
|
37263
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
37264
|
+
},
|
|
37265
|
+
{
|
|
37266
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientScope"
|
|
37267
|
+
}
|
|
37268
|
+
]
|
|
37269
|
+
}
|
|
37270
|
+
}
|
|
37271
|
+
},
|
|
37272
|
+
"description": "Delivery exceeds the 5,000-row limit available without the `bulk-delivery.agents` entitlement (lower `limit`, narrow the filters, or contact support for a limit increase), OR you may not use the push target (`FORBIDDEN`), OR a scoped token named a push-target destination without `push-targets:send` (`insufficient_scope`)."
|
|
37273
|
+
},
|
|
37274
|
+
"404": {
|
|
37275
|
+
"content": {
|
|
37276
|
+
"application/json": {
|
|
37277
|
+
"schema": {
|
|
37278
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
37057
37279
|
}
|
|
37058
37280
|
}
|
|
37059
37281
|
},
|
|
37060
|
-
"description": "
|
|
37282
|
+
"description": "Push target not found (`TARGET_NOT_FOUND`)"
|
|
37283
|
+
},
|
|
37284
|
+
"409": {
|
|
37285
|
+
"content": {
|
|
37286
|
+
"application/json": {
|
|
37287
|
+
"schema": {
|
|
37288
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
37289
|
+
}
|
|
37290
|
+
}
|
|
37291
|
+
},
|
|
37292
|
+
"description": "Push target is disabled (`TARGET_DISABLED`)"
|
|
37061
37293
|
},
|
|
37062
37294
|
"502": {
|
|
37063
37295
|
"content": {
|
|
@@ -37067,7 +37299,7 @@
|
|
|
37067
37299
|
}
|
|
37068
37300
|
}
|
|
37069
37301
|
},
|
|
37070
|
-
"description": "Preflight / S3 / DDB / ECS launch failure"
|
|
37302
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, or the push-target check could not reach the auth server"
|
|
37071
37303
|
}
|
|
37072
37304
|
},
|
|
37073
37305
|
"summary": "Submit a bulk-delivery job for agents",
|
|
@@ -40261,7 +40493,7 @@
|
|
|
40261
40493
|
},
|
|
40262
40494
|
"/v1/branches/bulk-delivery": {
|
|
40263
40495
|
"post": {
|
|
40264
|
-
"description": "Queues an ECS task that dumps every matching branches document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/branches/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to
|
|
40496
|
+
"description": "Queues an ECS task that dumps every matching branches document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/branches/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.branches` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase.\n\nDelivery is billed at 1 credit per row regardless of entitlement.\n\n**Push-target destination.** Pass `destination: { type: \"push-target\", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.",
|
|
40265
40497
|
"operationId": "submitBranchesBulkDelivery",
|
|
40266
40498
|
"requestBody": {
|
|
40267
40499
|
"content": {
|
|
@@ -40274,8 +40506,11 @@
|
|
|
40274
40506
|
{
|
|
40275
40507
|
"additionalProperties": false,
|
|
40276
40508
|
"properties": {
|
|
40509
|
+
"destination": {
|
|
40510
|
+
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
40511
|
+
},
|
|
40277
40512
|
"fields": {
|
|
40278
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects.",
|
|
40513
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
40279
40514
|
"items": {
|
|
40280
40515
|
"minLength": 1,
|
|
40281
40516
|
"type": "string"
|
|
@@ -40286,16 +40521,13 @@
|
|
|
40286
40521
|
"$ref": "#/components/schemas/BulkDeliveryFormat"
|
|
40287
40522
|
},
|
|
40288
40523
|
"limit": {
|
|
40289
|
-
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies —
|
|
40290
|
-
"example":
|
|
40524
|
+
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies — 5,000 without the entity's bulk-delivery entitlement, or the entitlement's `maxRows` with it. A `limit` above the ceiling is rejected, but a `limit` at or below it lets you export a capped top-N even when the full match exceeds the ceiling — which is the intended way to run a broad query under the 5,000-row allowance.",
|
|
40525
|
+
"example": 5000,
|
|
40291
40526
|
"exclusiveMinimum": true,
|
|
40292
40527
|
"minimum": 0,
|
|
40293
40528
|
"type": "integer"
|
|
40294
40529
|
}
|
|
40295
40530
|
},
|
|
40296
|
-
"required": [
|
|
40297
|
-
"format"
|
|
40298
|
-
],
|
|
40299
40531
|
"type": "object"
|
|
40300
40532
|
}
|
|
40301
40533
|
]
|
|
@@ -40324,12 +40556,15 @@
|
|
|
40324
40556
|
},
|
|
40325
40557
|
{
|
|
40326
40558
|
"$ref": "#/components/schemas/BulkDeliveryPreflightExceeded"
|
|
40559
|
+
},
|
|
40560
|
+
{
|
|
40561
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
40327
40562
|
}
|
|
40328
40563
|
]
|
|
40329
40564
|
}
|
|
40330
40565
|
}
|
|
40331
40566
|
},
|
|
40332
|
-
"description": "Validation failure
|
|
40567
|
+
"description": "Validation failure (incl. `format_required`: a file delivery needs `format`), delivery would exceed the entitlement's maxRows, OR the push target does not accept this entity (`ENTITY_MISMATCH`)"
|
|
40333
40568
|
},
|
|
40334
40569
|
"401": {
|
|
40335
40570
|
"content": {
|
|
@@ -40345,21 +40580,58 @@
|
|
|
40345
40580
|
"content": {
|
|
40346
40581
|
"application/json": {
|
|
40347
40582
|
"schema": {
|
|
40348
|
-
"
|
|
40583
|
+
"anyOf": [
|
|
40584
|
+
{
|
|
40585
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientCredits"
|
|
40586
|
+
},
|
|
40587
|
+
{
|
|
40588
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
40589
|
+
}
|
|
40590
|
+
]
|
|
40349
40591
|
}
|
|
40350
40592
|
}
|
|
40351
40593
|
},
|
|
40352
|
-
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row)"
|
|
40594
|
+
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row), OR the plan does not include push targets (`PLAN_REQUIRED`)"
|
|
40353
40595
|
},
|
|
40354
40596
|
"403": {
|
|
40355
40597
|
"content": {
|
|
40356
40598
|
"application/json": {
|
|
40357
40599
|
"schema": {
|
|
40358
|
-
"
|
|
40600
|
+
"anyOf": [
|
|
40601
|
+
{
|
|
40602
|
+
"$ref": "#/components/schemas/BulkDeliveryForbidden"
|
|
40603
|
+
},
|
|
40604
|
+
{
|
|
40605
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
40606
|
+
},
|
|
40607
|
+
{
|
|
40608
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientScope"
|
|
40609
|
+
}
|
|
40610
|
+
]
|
|
40611
|
+
}
|
|
40612
|
+
}
|
|
40613
|
+
},
|
|
40614
|
+
"description": "Delivery exceeds the 5,000-row limit available without the `bulk-delivery.branches` entitlement (lower `limit`, narrow the filters, or contact support for a limit increase), OR you may not use the push target (`FORBIDDEN`), OR a scoped token named a push-target destination without `push-targets:send` (`insufficient_scope`)."
|
|
40615
|
+
},
|
|
40616
|
+
"404": {
|
|
40617
|
+
"content": {
|
|
40618
|
+
"application/json": {
|
|
40619
|
+
"schema": {
|
|
40620
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
40621
|
+
}
|
|
40622
|
+
}
|
|
40623
|
+
},
|
|
40624
|
+
"description": "Push target not found (`TARGET_NOT_FOUND`)"
|
|
40625
|
+
},
|
|
40626
|
+
"409": {
|
|
40627
|
+
"content": {
|
|
40628
|
+
"application/json": {
|
|
40629
|
+
"schema": {
|
|
40630
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
40359
40631
|
}
|
|
40360
40632
|
}
|
|
40361
40633
|
},
|
|
40362
|
-
"description": "
|
|
40634
|
+
"description": "Push target is disabled (`TARGET_DISABLED`)"
|
|
40363
40635
|
},
|
|
40364
40636
|
"502": {
|
|
40365
40637
|
"content": {
|
|
@@ -40369,7 +40641,7 @@
|
|
|
40369
40641
|
}
|
|
40370
40642
|
}
|
|
40371
40643
|
},
|
|
40372
|
-
"description": "Preflight / S3 / DDB / ECS launch failure"
|
|
40644
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, or the push-target check could not reach the auth server"
|
|
40373
40645
|
}
|
|
40374
40646
|
},
|
|
40375
40647
|
"summary": "Submit a bulk-delivery job for branches",
|
|
@@ -41722,7 +41994,7 @@
|
|
|
41722
41994
|
},
|
|
41723
41995
|
"/v1/companies/bulk-delivery": {
|
|
41724
41996
|
"post": {
|
|
41725
|
-
"description": "Queues an ECS task that dumps every matching companies document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/companies/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to
|
|
41997
|
+
"description": "Queues an ECS task that dumps every matching companies document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/companies/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.companies` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase.\n\nDelivery is billed at 1 credit per row regardless of entitlement.\n\n**Push-target destination.** Pass `destination: { type: \"push-target\", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.",
|
|
41726
41998
|
"operationId": "submitCompaniesBulkDelivery",
|
|
41727
41999
|
"requestBody": {
|
|
41728
42000
|
"content": {
|
|
@@ -41735,8 +42007,11 @@
|
|
|
41735
42007
|
{
|
|
41736
42008
|
"additionalProperties": false,
|
|
41737
42009
|
"properties": {
|
|
42010
|
+
"destination": {
|
|
42011
|
+
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
42012
|
+
},
|
|
41738
42013
|
"fields": {
|
|
41739
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects.",
|
|
42014
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
41740
42015
|
"items": {
|
|
41741
42016
|
"minLength": 1,
|
|
41742
42017
|
"type": "string"
|
|
@@ -41747,16 +42022,13 @@
|
|
|
41747
42022
|
"$ref": "#/components/schemas/BulkDeliveryFormat"
|
|
41748
42023
|
},
|
|
41749
42024
|
"limit": {
|
|
41750
|
-
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies —
|
|
41751
|
-
"example":
|
|
42025
|
+
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies — 5,000 without the entity's bulk-delivery entitlement, or the entitlement's `maxRows` with it. A `limit` above the ceiling is rejected, but a `limit` at or below it lets you export a capped top-N even when the full match exceeds the ceiling — which is the intended way to run a broad query under the 5,000-row allowance.",
|
|
42026
|
+
"example": 5000,
|
|
41752
42027
|
"exclusiveMinimum": true,
|
|
41753
42028
|
"minimum": 0,
|
|
41754
42029
|
"type": "integer"
|
|
41755
42030
|
}
|
|
41756
42031
|
},
|
|
41757
|
-
"required": [
|
|
41758
|
-
"format"
|
|
41759
|
-
],
|
|
41760
42032
|
"type": "object"
|
|
41761
42033
|
}
|
|
41762
42034
|
]
|
|
@@ -41785,12 +42057,15 @@
|
|
|
41785
42057
|
},
|
|
41786
42058
|
{
|
|
41787
42059
|
"$ref": "#/components/schemas/BulkDeliveryPreflightExceeded"
|
|
42060
|
+
},
|
|
42061
|
+
{
|
|
42062
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
41788
42063
|
}
|
|
41789
42064
|
]
|
|
41790
42065
|
}
|
|
41791
42066
|
}
|
|
41792
42067
|
},
|
|
41793
|
-
"description": "Validation failure
|
|
42068
|
+
"description": "Validation failure (incl. `format_required`: a file delivery needs `format`), delivery would exceed the entitlement's maxRows, OR the push target does not accept this entity (`ENTITY_MISMATCH`)"
|
|
41794
42069
|
},
|
|
41795
42070
|
"401": {
|
|
41796
42071
|
"content": {
|
|
@@ -41806,21 +42081,58 @@
|
|
|
41806
42081
|
"content": {
|
|
41807
42082
|
"application/json": {
|
|
41808
42083
|
"schema": {
|
|
41809
|
-
"
|
|
42084
|
+
"anyOf": [
|
|
42085
|
+
{
|
|
42086
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientCredits"
|
|
42087
|
+
},
|
|
42088
|
+
{
|
|
42089
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
42090
|
+
}
|
|
42091
|
+
]
|
|
41810
42092
|
}
|
|
41811
42093
|
}
|
|
41812
42094
|
},
|
|
41813
|
-
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row)"
|
|
42095
|
+
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row), OR the plan does not include push targets (`PLAN_REQUIRED`)"
|
|
41814
42096
|
},
|
|
41815
42097
|
"403": {
|
|
41816
42098
|
"content": {
|
|
41817
42099
|
"application/json": {
|
|
41818
42100
|
"schema": {
|
|
41819
|
-
"
|
|
42101
|
+
"anyOf": [
|
|
42102
|
+
{
|
|
42103
|
+
"$ref": "#/components/schemas/BulkDeliveryForbidden"
|
|
42104
|
+
},
|
|
42105
|
+
{
|
|
42106
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
42107
|
+
},
|
|
42108
|
+
{
|
|
42109
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientScope"
|
|
42110
|
+
}
|
|
42111
|
+
]
|
|
42112
|
+
}
|
|
42113
|
+
}
|
|
42114
|
+
},
|
|
42115
|
+
"description": "Delivery exceeds the 5,000-row limit available without the `bulk-delivery.companies` entitlement (lower `limit`, narrow the filters, or contact support for a limit increase), OR you may not use the push target (`FORBIDDEN`), OR a scoped token named a push-target destination without `push-targets:send` (`insufficient_scope`)."
|
|
42116
|
+
},
|
|
42117
|
+
"404": {
|
|
42118
|
+
"content": {
|
|
42119
|
+
"application/json": {
|
|
42120
|
+
"schema": {
|
|
42121
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
42122
|
+
}
|
|
42123
|
+
}
|
|
42124
|
+
},
|
|
42125
|
+
"description": "Push target not found (`TARGET_NOT_FOUND`)"
|
|
42126
|
+
},
|
|
42127
|
+
"409": {
|
|
42128
|
+
"content": {
|
|
42129
|
+
"application/json": {
|
|
42130
|
+
"schema": {
|
|
42131
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
41820
42132
|
}
|
|
41821
42133
|
}
|
|
41822
42134
|
},
|
|
41823
|
-
"description": "
|
|
42135
|
+
"description": "Push target is disabled (`TARGET_DISABLED`)"
|
|
41824
42136
|
},
|
|
41825
42137
|
"502": {
|
|
41826
42138
|
"content": {
|
|
@@ -41830,7 +42142,7 @@
|
|
|
41830
42142
|
}
|
|
41831
42143
|
}
|
|
41832
42144
|
},
|
|
41833
|
-
"description": "Preflight / S3 / DDB / ECS launch failure"
|
|
42145
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, or the push-target check could not reach the auth server"
|
|
41834
42146
|
}
|
|
41835
42147
|
},
|
|
41836
42148
|
"summary": "Submit a bulk-delivery job for companies",
|
|
@@ -57609,7 +57921,7 @@
|
|
|
57609
57921
|
},
|
|
57610
57922
|
"/v1/loans/bulk-delivery": {
|
|
57611
57923
|
"post": {
|
|
57612
|
-
"description": "Queues an ECS task that dumps every matching loans document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/loans/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to
|
|
57924
|
+
"description": "Queues an ECS task that dumps every matching loans document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/loans/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.loans` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase.\n\nDelivery is billed at 1 credit per row regardless of entitlement.\n\n**Push-target destination.** Pass `destination: { type: \"push-target\", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.",
|
|
57613
57925
|
"operationId": "submitLoansBulkDelivery",
|
|
57614
57926
|
"requestBody": {
|
|
57615
57927
|
"content": {
|
|
@@ -57622,8 +57934,11 @@
|
|
|
57622
57934
|
{
|
|
57623
57935
|
"additionalProperties": false,
|
|
57624
57936
|
"properties": {
|
|
57937
|
+
"destination": {
|
|
57938
|
+
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
57939
|
+
},
|
|
57625
57940
|
"fields": {
|
|
57626
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects.",
|
|
57941
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
57627
57942
|
"items": {
|
|
57628
57943
|
"minLength": 1,
|
|
57629
57944
|
"type": "string"
|
|
@@ -57634,16 +57949,13 @@
|
|
|
57634
57949
|
"$ref": "#/components/schemas/BulkDeliveryFormat"
|
|
57635
57950
|
},
|
|
57636
57951
|
"limit": {
|
|
57637
|
-
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies —
|
|
57638
|
-
"example":
|
|
57952
|
+
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies — 5,000 without the entity's bulk-delivery entitlement, or the entitlement's `maxRows` with it. A `limit` above the ceiling is rejected, but a `limit` at or below it lets you export a capped top-N even when the full match exceeds the ceiling — which is the intended way to run a broad query under the 5,000-row allowance.",
|
|
57953
|
+
"example": 5000,
|
|
57639
57954
|
"exclusiveMinimum": true,
|
|
57640
57955
|
"minimum": 0,
|
|
57641
57956
|
"type": "integer"
|
|
57642
57957
|
}
|
|
57643
57958
|
},
|
|
57644
|
-
"required": [
|
|
57645
|
-
"format"
|
|
57646
|
-
],
|
|
57647
57959
|
"type": "object"
|
|
57648
57960
|
}
|
|
57649
57961
|
]
|
|
@@ -57672,12 +57984,15 @@
|
|
|
57672
57984
|
},
|
|
57673
57985
|
{
|
|
57674
57986
|
"$ref": "#/components/schemas/BulkDeliveryPreflightExceeded"
|
|
57987
|
+
},
|
|
57988
|
+
{
|
|
57989
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
57675
57990
|
}
|
|
57676
57991
|
]
|
|
57677
57992
|
}
|
|
57678
57993
|
}
|
|
57679
57994
|
},
|
|
57680
|
-
"description": "Validation failure
|
|
57995
|
+
"description": "Validation failure (incl. `format_required`: a file delivery needs `format`), delivery would exceed the entitlement's maxRows, OR the push target does not accept this entity (`ENTITY_MISMATCH`)"
|
|
57681
57996
|
},
|
|
57682
57997
|
"401": {
|
|
57683
57998
|
"content": {
|
|
@@ -57693,21 +58008,58 @@
|
|
|
57693
58008
|
"content": {
|
|
57694
58009
|
"application/json": {
|
|
57695
58010
|
"schema": {
|
|
57696
|
-
"
|
|
58011
|
+
"anyOf": [
|
|
58012
|
+
{
|
|
58013
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientCredits"
|
|
58014
|
+
},
|
|
58015
|
+
{
|
|
58016
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
58017
|
+
}
|
|
58018
|
+
]
|
|
57697
58019
|
}
|
|
57698
58020
|
}
|
|
57699
58021
|
},
|
|
57700
|
-
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row)"
|
|
58022
|
+
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row), OR the plan does not include push targets (`PLAN_REQUIRED`)"
|
|
57701
58023
|
},
|
|
57702
58024
|
"403": {
|
|
57703
58025
|
"content": {
|
|
57704
58026
|
"application/json": {
|
|
57705
58027
|
"schema": {
|
|
57706
|
-
"
|
|
58028
|
+
"anyOf": [
|
|
58029
|
+
{
|
|
58030
|
+
"$ref": "#/components/schemas/BulkDeliveryForbidden"
|
|
58031
|
+
},
|
|
58032
|
+
{
|
|
58033
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
58034
|
+
},
|
|
58035
|
+
{
|
|
58036
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientScope"
|
|
58037
|
+
}
|
|
58038
|
+
]
|
|
58039
|
+
}
|
|
58040
|
+
}
|
|
58041
|
+
},
|
|
58042
|
+
"description": "Delivery exceeds the 5,000-row limit available without the `bulk-delivery.loans` entitlement (lower `limit`, narrow the filters, or contact support for a limit increase), OR you may not use the push target (`FORBIDDEN`), OR a scoped token named a push-target destination without `push-targets:send` (`insufficient_scope`)."
|
|
58043
|
+
},
|
|
58044
|
+
"404": {
|
|
58045
|
+
"content": {
|
|
58046
|
+
"application/json": {
|
|
58047
|
+
"schema": {
|
|
58048
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
58049
|
+
}
|
|
58050
|
+
}
|
|
58051
|
+
},
|
|
58052
|
+
"description": "Push target not found (`TARGET_NOT_FOUND`)"
|
|
58053
|
+
},
|
|
58054
|
+
"409": {
|
|
58055
|
+
"content": {
|
|
58056
|
+
"application/json": {
|
|
58057
|
+
"schema": {
|
|
58058
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
57707
58059
|
}
|
|
57708
58060
|
}
|
|
57709
58061
|
},
|
|
57710
|
-
"description": "
|
|
58062
|
+
"description": "Push target is disabled (`TARGET_DISABLED`)"
|
|
57711
58063
|
},
|
|
57712
58064
|
"502": {
|
|
57713
58065
|
"content": {
|
|
@@ -57717,7 +58069,7 @@
|
|
|
57717
58069
|
}
|
|
57718
58070
|
}
|
|
57719
58071
|
},
|
|
57720
|
-
"description": "Preflight / S3 / DDB / ECS launch failure"
|
|
58072
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, or the push-target check could not reach the auth server"
|
|
57721
58073
|
}
|
|
57722
58074
|
},
|
|
57723
58075
|
"summary": "Submit a bulk-delivery job for loans",
|
|
@@ -61219,7 +61571,7 @@
|
|
|
61219
61571
|
},
|
|
61220
61572
|
"/v1/originators/bulk-delivery": {
|
|
61221
61573
|
"post": {
|
|
61222
|
-
"description": "Queues an ECS task that dumps every matching originators document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/originators/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to
|
|
61574
|
+
"description": "Queues an ECS task that dumps every matching originators document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/originators/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.originators` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase.\n\nDelivery is billed at 1 credit per row regardless of entitlement.\n\n**Push-target destination.** Pass `destination: { type: \"push-target\", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.",
|
|
61223
61575
|
"operationId": "submitOriginatorsBulkDelivery",
|
|
61224
61576
|
"requestBody": {
|
|
61225
61577
|
"content": {
|
|
@@ -61232,8 +61584,11 @@
|
|
|
61232
61584
|
{
|
|
61233
61585
|
"additionalProperties": false,
|
|
61234
61586
|
"properties": {
|
|
61587
|
+
"destination": {
|
|
61588
|
+
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
61589
|
+
},
|
|
61235
61590
|
"fields": {
|
|
61236
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects.",
|
|
61591
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
61237
61592
|
"items": {
|
|
61238
61593
|
"minLength": 1,
|
|
61239
61594
|
"type": "string"
|
|
@@ -61244,16 +61599,13 @@
|
|
|
61244
61599
|
"$ref": "#/components/schemas/BulkDeliveryFormat"
|
|
61245
61600
|
},
|
|
61246
61601
|
"limit": {
|
|
61247
|
-
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies —
|
|
61248
|
-
"example":
|
|
61602
|
+
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies — 5,000 without the entity's bulk-delivery entitlement, or the entitlement's `maxRows` with it. A `limit` above the ceiling is rejected, but a `limit` at or below it lets you export a capped top-N even when the full match exceeds the ceiling — which is the intended way to run a broad query under the 5,000-row allowance.",
|
|
61603
|
+
"example": 5000,
|
|
61249
61604
|
"exclusiveMinimum": true,
|
|
61250
61605
|
"minimum": 0,
|
|
61251
61606
|
"type": "integer"
|
|
61252
61607
|
}
|
|
61253
61608
|
},
|
|
61254
|
-
"required": [
|
|
61255
|
-
"format"
|
|
61256
|
-
],
|
|
61257
61609
|
"type": "object"
|
|
61258
61610
|
}
|
|
61259
61611
|
]
|
|
@@ -61282,12 +61634,15 @@
|
|
|
61282
61634
|
},
|
|
61283
61635
|
{
|
|
61284
61636
|
"$ref": "#/components/schemas/BulkDeliveryPreflightExceeded"
|
|
61637
|
+
},
|
|
61638
|
+
{
|
|
61639
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
61285
61640
|
}
|
|
61286
61641
|
]
|
|
61287
61642
|
}
|
|
61288
61643
|
}
|
|
61289
61644
|
},
|
|
61290
|
-
"description": "Validation failure
|
|
61645
|
+
"description": "Validation failure (incl. `format_required`: a file delivery needs `format`), delivery would exceed the entitlement's maxRows, OR the push target does not accept this entity (`ENTITY_MISMATCH`)"
|
|
61291
61646
|
},
|
|
61292
61647
|
"401": {
|
|
61293
61648
|
"content": {
|
|
@@ -61303,21 +61658,58 @@
|
|
|
61303
61658
|
"content": {
|
|
61304
61659
|
"application/json": {
|
|
61305
61660
|
"schema": {
|
|
61306
|
-
"
|
|
61661
|
+
"anyOf": [
|
|
61662
|
+
{
|
|
61663
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientCredits"
|
|
61664
|
+
},
|
|
61665
|
+
{
|
|
61666
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
61667
|
+
}
|
|
61668
|
+
]
|
|
61307
61669
|
}
|
|
61308
61670
|
}
|
|
61309
61671
|
},
|
|
61310
|
-
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row)"
|
|
61672
|
+
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row), OR the plan does not include push targets (`PLAN_REQUIRED`)"
|
|
61311
61673
|
},
|
|
61312
61674
|
"403": {
|
|
61313
61675
|
"content": {
|
|
61314
61676
|
"application/json": {
|
|
61315
61677
|
"schema": {
|
|
61316
|
-
"
|
|
61678
|
+
"anyOf": [
|
|
61679
|
+
{
|
|
61680
|
+
"$ref": "#/components/schemas/BulkDeliveryForbidden"
|
|
61681
|
+
},
|
|
61682
|
+
{
|
|
61683
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
61684
|
+
},
|
|
61685
|
+
{
|
|
61686
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientScope"
|
|
61687
|
+
}
|
|
61688
|
+
]
|
|
61689
|
+
}
|
|
61690
|
+
}
|
|
61691
|
+
},
|
|
61692
|
+
"description": "Delivery exceeds the 5,000-row limit available without the `bulk-delivery.originators` entitlement (lower `limit`, narrow the filters, or contact support for a limit increase), OR you may not use the push target (`FORBIDDEN`), OR a scoped token named a push-target destination without `push-targets:send` (`insufficient_scope`)."
|
|
61693
|
+
},
|
|
61694
|
+
"404": {
|
|
61695
|
+
"content": {
|
|
61696
|
+
"application/json": {
|
|
61697
|
+
"schema": {
|
|
61698
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
61317
61699
|
}
|
|
61318
61700
|
}
|
|
61319
61701
|
},
|
|
61320
|
-
"description": "
|
|
61702
|
+
"description": "Push target not found (`TARGET_NOT_FOUND`)"
|
|
61703
|
+
},
|
|
61704
|
+
"409": {
|
|
61705
|
+
"content": {
|
|
61706
|
+
"application/json": {
|
|
61707
|
+
"schema": {
|
|
61708
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
61709
|
+
}
|
|
61710
|
+
}
|
|
61711
|
+
},
|
|
61712
|
+
"description": "Push target is disabled (`TARGET_DISABLED`)"
|
|
61321
61713
|
},
|
|
61322
61714
|
"502": {
|
|
61323
61715
|
"content": {
|
|
@@ -61327,7 +61719,7 @@
|
|
|
61327
61719
|
}
|
|
61328
61720
|
}
|
|
61329
61721
|
},
|
|
61330
|
-
"description": "Preflight / S3 / DDB / ECS launch failure"
|
|
61722
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, or the push-target check could not reach the auth server"
|
|
61331
61723
|
}
|
|
61332
61724
|
},
|
|
61333
61725
|
"summary": "Submit a bulk-delivery job for originators",
|
|
@@ -63268,7 +63660,7 @@
|
|
|
63268
63660
|
},
|
|
63269
63661
|
"/v1/properties/bulk-delivery": {
|
|
63270
63662
|
"post": {
|
|
63271
|
-
"description": "Queues an ECS task that dumps every matching properties document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/properties/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to
|
|
63663
|
+
"description": "Queues an ECS task that dumps every matching properties document to S3 in the requested format. Returns 202 with a jobId; poll `GET /v1/properties/bulk-delivery/{jobId}` for status + the signed download URL.\n\n**Row limit.** Deliveries of up to 5,000 rows need no entitlement. Above that, the org's `bulk-delivery.properties` entitlement is required and its scope (row ceiling, row filters, allowed fields) governs the delivery; without it the request is rejected with 403 `entitlement_missing`. Pass `limit` at or below the ceiling to deliver a capped subset of a broader query. Email support@modelmatch.com to request a limit increase.\n\nDelivery is billed at 1 credit per row regardless of entitlement.\n\n**Push-target destination.** Pass `destination: { type: \"push-target\", targetId }` to have the finished rows sent to a configured push target instead of downloaded. The target is checked before anything is queued; a refusal returns the push target's status and `code` (`TARGET_NOT_FOUND` 404, `FORBIDDEN` 403, `PLAN_REQUIRED` 402, `TARGET_DISABLED` 409, `ENTITY_MISMATCH` 400). Limits and billing are the same as a file delivery, except that push-target deliveries from the ModelMatch web app are not billed.",
|
|
63272
63664
|
"operationId": "submitPropertiesBulkDelivery",
|
|
63273
63665
|
"requestBody": {
|
|
63274
63666
|
"content": {
|
|
@@ -63281,8 +63673,11 @@
|
|
|
63281
63673
|
{
|
|
63282
63674
|
"additionalProperties": false,
|
|
63283
63675
|
"properties": {
|
|
63676
|
+
"destination": {
|
|
63677
|
+
"$ref": "#/components/schemas/BulkDeliveryDestination"
|
|
63678
|
+
},
|
|
63284
63679
|
"fields": {
|
|
63285
|
-
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects.",
|
|
63680
|
+
"description": "Optional output column projection, named by the response DTO fields (the same camelCase fields the list endpoint returns, e.g. `city`, `interestRate`). Intersected with the entitlement scope's allowedFields and the entity's full column set. If empty after intersection, falls back to all columns. It also SELECTS the opt-in columns, which are not part of the list DTO and are never delivered unless named here: `communityLending` (properties, originators, companies, branches) — the Community Lending neighborhood profile, identical to the block on the entity's detail endpoint; `parties` (properties) — the mortgage parties attributed to the parcel, by attribution scope; and `marketCount` / `countyCount` / `stateCount` / `zipCount` / `lenderCount` (originators) — the market-breadth rollups you can already filter on. In `csv` and `parquet` the two block columns are JSON-encoded cells; in `json` and `ndjson` they are nested objects. Windowed production (originators, agents, companies, branches): name `<field>_<n>mo` for n in 3, 6, 12, 14, 18, 24 to get a production field for that trailing window regardless of `period` — e.g. `volume_3mo`, `units_6mo`, `purchaseVolume_24mo`. Available for originators `volume`, `units`, `avgLoanAmount`, `purchaseVolume`, `purchaseUnits`, `refinanceVolume`, `refinanceUnits`, `conventionalPct`, `fhaPct`, `vaPct`; agents `volume`, `units`, `avgSoldPrice`, `buyerVolume`, `buyerUnits`, `sellerVolume`, `sellerUnits`, `totalOriginatorsWorkedWith`, `totalCompaniesWorkedWith`, `totalLendersWorkedWith`; companies `volume`, `units`, `avgLoanAmount`, `loCount`; branches `volume`, `units`, `avgLoanAmount`, `purchasePct`, `refinancePct`, `loCount`. Numbers (null when the window has no data); an entitlement that allows a field allows every window of it.",
|
|
63286
63681
|
"items": {
|
|
63287
63682
|
"minLength": 1,
|
|
63288
63683
|
"type": "string"
|
|
@@ -63293,16 +63688,13 @@
|
|
|
63293
63688
|
"$ref": "#/components/schemas/BulkDeliveryFormat"
|
|
63294
63689
|
},
|
|
63295
63690
|
"limit": {
|
|
63296
|
-
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies —
|
|
63297
|
-
"example":
|
|
63691
|
+
"description": "Optional hard cap on the number of rows delivered — and therefore billed (1 credit / row). The job delivers the first `limit` rows in sort order (default newest-first) and bills only for those. If the query matches fewer than `limit`, all matches are delivered. Distinct from the page-size `size` field, which is ignored on this endpoint. The row ceiling still applies — 5,000 without the entity's bulk-delivery entitlement, or the entitlement's `maxRows` with it. A `limit` above the ceiling is rejected, but a `limit` at or below it lets you export a capped top-N even when the full match exceeds the ceiling — which is the intended way to run a broad query under the 5,000-row allowance.",
|
|
63692
|
+
"example": 5000,
|
|
63298
63693
|
"exclusiveMinimum": true,
|
|
63299
63694
|
"minimum": 0,
|
|
63300
63695
|
"type": "integer"
|
|
63301
63696
|
}
|
|
63302
63697
|
},
|
|
63303
|
-
"required": [
|
|
63304
|
-
"format"
|
|
63305
|
-
],
|
|
63306
63698
|
"type": "object"
|
|
63307
63699
|
}
|
|
63308
63700
|
]
|
|
@@ -63331,12 +63723,15 @@
|
|
|
63331
63723
|
},
|
|
63332
63724
|
{
|
|
63333
63725
|
"$ref": "#/components/schemas/BulkDeliveryPreflightExceeded"
|
|
63726
|
+
},
|
|
63727
|
+
{
|
|
63728
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
63334
63729
|
}
|
|
63335
63730
|
]
|
|
63336
63731
|
}
|
|
63337
63732
|
}
|
|
63338
63733
|
},
|
|
63339
|
-
"description": "Validation failure
|
|
63734
|
+
"description": "Validation failure (incl. `format_required`: a file delivery needs `format`), delivery would exceed the entitlement's maxRows, OR the push target does not accept this entity (`ENTITY_MISMATCH`)"
|
|
63340
63735
|
},
|
|
63341
63736
|
"401": {
|
|
63342
63737
|
"content": {
|
|
@@ -63352,21 +63747,58 @@
|
|
|
63352
63747
|
"content": {
|
|
63353
63748
|
"application/json": {
|
|
63354
63749
|
"schema": {
|
|
63355
|
-
"
|
|
63750
|
+
"anyOf": [
|
|
63751
|
+
{
|
|
63752
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientCredits"
|
|
63753
|
+
},
|
|
63754
|
+
{
|
|
63755
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
63756
|
+
}
|
|
63757
|
+
]
|
|
63356
63758
|
}
|
|
63357
63759
|
}
|
|
63358
63760
|
},
|
|
63359
|
-
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row)"
|
|
63761
|
+
"description": "Insufficient credits (balance < estimatedTotal, at 1 credit per row), OR the plan does not include push targets (`PLAN_REQUIRED`)"
|
|
63360
63762
|
},
|
|
63361
63763
|
"403": {
|
|
63362
63764
|
"content": {
|
|
63363
63765
|
"application/json": {
|
|
63364
63766
|
"schema": {
|
|
63365
|
-
"
|
|
63767
|
+
"anyOf": [
|
|
63768
|
+
{
|
|
63769
|
+
"$ref": "#/components/schemas/BulkDeliveryForbidden"
|
|
63770
|
+
},
|
|
63771
|
+
{
|
|
63772
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
63773
|
+
},
|
|
63774
|
+
{
|
|
63775
|
+
"$ref": "#/components/schemas/BulkDeliveryInsufficientScope"
|
|
63776
|
+
}
|
|
63777
|
+
]
|
|
63778
|
+
}
|
|
63779
|
+
}
|
|
63780
|
+
},
|
|
63781
|
+
"description": "Delivery exceeds the 5,000-row limit available without the `bulk-delivery.properties` entitlement (lower `limit`, narrow the filters, or contact support for a limit increase), OR you may not use the push target (`FORBIDDEN`), OR a scoped token named a push-target destination without `push-targets:send` (`insufficient_scope`)."
|
|
63782
|
+
},
|
|
63783
|
+
"404": {
|
|
63784
|
+
"content": {
|
|
63785
|
+
"application/json": {
|
|
63786
|
+
"schema": {
|
|
63787
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
63788
|
+
}
|
|
63789
|
+
}
|
|
63790
|
+
},
|
|
63791
|
+
"description": "Push target not found (`TARGET_NOT_FOUND`)"
|
|
63792
|
+
},
|
|
63793
|
+
"409": {
|
|
63794
|
+
"content": {
|
|
63795
|
+
"application/json": {
|
|
63796
|
+
"schema": {
|
|
63797
|
+
"$ref": "#/components/schemas/BulkDeliveryPushTargetError"
|
|
63366
63798
|
}
|
|
63367
63799
|
}
|
|
63368
63800
|
},
|
|
63369
|
-
"description": "
|
|
63801
|
+
"description": "Push target is disabled (`TARGET_DISABLED`)"
|
|
63370
63802
|
},
|
|
63371
63803
|
"502": {
|
|
63372
63804
|
"content": {
|
|
@@ -63376,7 +63808,7 @@
|
|
|
63376
63808
|
}
|
|
63377
63809
|
}
|
|
63378
63810
|
},
|
|
63379
|
-
"description": "Preflight / S3 / DDB / ECS launch failure"
|
|
63811
|
+
"description": "Preflight / S3 / DDB / ECS launch failure, or the push-target check could not reach the auth server"
|
|
63380
63812
|
}
|
|
63381
63813
|
},
|
|
63382
63814
|
"summary": "Submit a bulk-delivery job for properties",
|