-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopenapi-v1.json
More file actions
1 lines (1 loc) · 79.3 KB
/
Copy pathopenapi-v1.json
File metadata and controls
1 lines (1 loc) · 79.3 KB
1
{"openapi":"3.1.0","info":{"title":"Reprompt Place Enrichment API","description":"\n## Batch Processing Guide\n\nThe `/place_enrichment/batches` endpoint allows you to submit multiple places in a single batch for attribute enrichment. \nThe batch will be processed asynchronously, and you can track its status using the returned batch ID.\n\n\n#### Typical workflow:\n1. Prepare your batch payload with:\n - A unique batch name for identification\n - List of places with their IDs and input data\n - Optional attribute set specification\n2. Submit the batch using the POST `/place_enrichment/batches` endpoint\n3. Use the returned batch ID to:\n - Check batch status at GET `/place_enrichment/batches/{batch_id}`\n - Retrieve results at GET `/place_enrichment/jobs?batchId={batch_id}`\n\n\n#### Submitting a Batch:\n\nUse POST `/place_enrichment/batches` to submit a batch.\n\n**Example Batch Payload:**\n```json\n{\n \"batch_name\": \"NYC Restaurants March 2024\",\n \"attributes\": [\"websites\", \"phoneNumbers\", \"socialHandles\", \"openingHours\", \"categories\", \"closed_permanently\"], \n \"jobs\": [\n {\n \"place_id\": \"place_nyc_123\",\n \"inputs\": {\n \"name\": \"Joe's Pizza\",\n \"latitude\": 40.7359,\n \"longitude\": -73.9911,\n \"full_address\": \"7 Carmine St, New York, NY 10014\",\n \"street\": \"Carmine St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10014\",\n \"house\": \"7\",\n \"country\": \"United States\",\n \"country_code\": \"US\",\n \"type\": \"restaurant\",\n \"website\": \"http://www.joespizzanyc.com\",\n \"phone\": \"+12122555803\"\n }\n }\n ]\n}\n```\n**Place Input Parameters:**\nFor more details on the place input parameters, see the ```UniversalPlace``` schema in the schemas section below.\n\n**Attributes:**\n\nThe `attributes` parameter in your request specifies which attributes will be enriched. You can specify individual attributes like:\n\n- `[\"websites\", \"phoneNumbers\"]` - Only enrich website and phone information\n- `[\"closed_permanently\"]` - Only check if the business is permanently closed\n- `[\"websites\", \"phoneNumbers\", \"socialHandles\", \"openingHours\", \"categories\", \"closed_permanently\"]` - Core business attributes\n- `[\"websites\", \"phoneNumbers\", \"socialHandles\", \"openingHours\", \"categories\", \"closed_permanently\", \"cuisine\", \"price_tier\", \"menu_url\"]` - Comprehensive enrichment\n\nFor a full list of available attributes, see the enrichment schema documentation below.\n\n**`attribute_set`:** Deprecated preset for common enrichment requests. Prefer an explicit `attributes` list. `open_closed` checks whether a place is open or permanently closed, while `core` and `all` both request `closed_permanently`, `websites`, `phoneNumbers`, `openingHours`, `names`, `address`, and `categories`.\n\n#### Tracking Batch Status:\n\nUse GET `/place_enrichment/batches/{batch_id}` to monitor the progress of your batch. The response includes:\n\n```json\n{\n \"id\": \"batch_2024_03_15_123456\",\n \"batch_name\": \"NYC Restaurants March 2024\",\n \"status\": \"in_progress\",\n \"jobs\": {\n \"pending\": [\"place_id_2\", \"place_id_3\"],\n \"in_progress\": [\"place_id_1\"],\n \"completed\": [\"place_id_4\", \"place_id_5\"],\n \"failed\": []\n },\n \"created_at\": \"2024-03-15T10:30:00Z\",\n \"updated_at\": \"2024-03-15T10:35:00Z\"\n}\n```\n\nThe status field will be one of:\n- `pending`: Batch is queued but not yet started\n- `in_progress`: Batch is currently being processed\n- `completed`: All jobs in the batch are finished\n- `failed`: Batch encountered critical errors\n\n#### Retrieving Job Results:\n\nOnce jobs are completed, use GET `/place_enrichment/jobs?batchId={batch_id}` to get the enrichment results. The response includes:\n\n```json\n{\n \"jobs\": [\n {\n \"place_id\": \"place_nyc_123\",\n \"status\": \"completed\",\n \"outputs\": {\n \"website\": \"https://www.joespizzanyc.com\",\n \"phone\": \"+12122555803\",\n \"social_profiles\": {\n \"instagram\": \"joespizzanyc\",\n \"facebook\": \"joespizzanyc\"\n },\n \"open_closed_status\": \"Open\",\n \"price_tier\": \"$$\",\n \"last_enriched\": \"2024-03-15T10:35:00Z\"\n },\n \"job_metadata\": {\n \"created_at\": \"2024-03-15T10:30:00Z\",\n \"completed_at\": \"2024-03-15T10:35:00Z\",\n \"processing_time_seconds\": 300\n }\n }\n ],\n \"total_count\": 1,\n \"completed_count\": 1\n}\n```\n\nEach job result includes:\n- Original place ID for tracking\n- Enrichment outputs based on the requested attribute set\n- Job metadata including timing information\n- Processing status and any error details if failed\n\n**Attribute Statuses:**\n\nAttributes like name, address, phone number, and website include an `attribute_status` field indicating the verification state:\n\n| Status | Description |\n|--------|-------------|\n| NOT_RUN | The attribute was not processed |\n| RUN_CONDITION_FAILED | The attribute was processed but failed the run condition |\n| RUN | The attribute was processed |\n| ERROR | The attribute processing failed |\n\nExample response with attribute statuses:\n```json\n{\n \"outputs\": {\n \"website\": \"https://www.joespizzanyc.com\",\n \"phone\": \"+12122555803\"\n },\n \"job_metadata\": {\n \"attribute_status\": {\n \"website\": \"RUN\",\n \"phone\": \"RUN\",\n \"address\": \"RUN\",\n \"name\": \"RUN\"\n }\n }\n}\n```\n","version":"1.0"},"paths":{"/place_enrichment/enrich":{"post":{"summary":"Enrich a single place synchronously","operationId":"submit_enrichment__org_slug__place_enrichment_enrich_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceJob"}}}},"responses":{"200":{"description":"Successfully enriched place data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceJobResult"},"example":{"place_id":"place_nyc_123","status":"completed","inputs":{"name":"Joe's Pizza","latitude":40.7359,"longitude":-73.9911,"full_address":"7 Carmine St, New York, NY 10014"},"outputs":{"website":"https://www.joespizzanyc.com","phone":"+12122555803","social_profiles":{"instagram":"joespizzanyc","facebook":"joespizzanyc"},"open_closed_status":"Open","price_tier":"$$","last_enriched":"2024-03-15T10:35:00Z"},"job_metadata":{"last_enriched":"2024-03-15T10:35:00Z","attribute_status":{"website":"RUN","phone":"RUN","address":"RUN","name":"RUN"}}}}}},"400":{"description":"Invalid input format"},"401":{"description":"Invalid API credentials"},"404":{"description":"Enrichment not found"},"429":{"description":"Rate limit exceeded"}}}},"/place_enrichment/jobs":{"post":{"tags":["jobs"],"summary":"Submit a single enrichment job","description":"Submit a place for asynchronous enrichment processing.","operationId":"submit_job__org_slug__place_enrichment_jobs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceJob"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Submit Job Org Slug Place Enrichment Jobs Post"}}}},"202":{"description":"Job successfully submitted for processing","content":{"application/json":{"example":{"place_id":"place_nyc_123","inputs":{"name":"Joe's Pizza","latitude":40.7359,"longitude":-73.9911,"full_address":"7 Carmine St, New York, NY 10014"},"status":"pending"}}}},"400":{"description":"Invalid input format"},"401":{"description":"Invalid API credentials"}}},"get":{"tags":["jobs"],"summary":"Get enrichment jobs","description":"Returns a `JobListResponse` by default. With `groupBy=day` returns a `PaginatedBatchesResponse` of one synthetic batch per UTC day.","operationId":"retrieve_jobs_endpoint__org_slug__place_enrichment_jobs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batchId","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batchid"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10000,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}},{"name":"excludeBatches","in":"query","required":false,"schema":{"type":"boolean","description":"If true, only return jobs with `batchId IS NULL` (i.e. submitted via the single-job API endpoint).","default":false,"title":"Excludebatches"},"description":"If true, only return jobs with `batchId IS NULL` (i.e. submitted via the single-job API endpoint)."},{"name":"groupBy","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"If set to `day`, returns a paginated list of daily summaries (same shape as `/batches`) instead of individual jobs. Each row represents one UTC calendar day.","title":"Groupby"},"description":"If set to `day`, returns a paginated list of daily summaries (same shape as `/batches`) instead of individual jobs. Each row represents one UTC calendar day."},{"name":"day","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UTC date (YYYY-MM-DD). When set, restricts results to jobs created on that day.","title":"Day"},"description":"UTC date (YYYY-MM-DD). When set, restricts results to jobs created on that day."},{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/JobListResponse"},{"$ref":"#/components/schemas/PaginatedBatchesResponse"}],"title":"Response Retrieve Jobs Endpoint Org Slug Place Enrichment Jobs Get"}}}}}}},"/place_enrichment/jobs/{place_id}":{"get":{"tags":["jobs"],"summary":"Get a single enrichment job","operationId":"get_job_by_id__org_slug__place_enrichment_jobs__place_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"place_id","in":"path","required":true,"schema":{"type":"string","title":"Place Id"}},{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceJobResult"}}}}}},"delete":{"tags":["jobs"],"summary":"Delete a job","operationId":"delete_job_endpoint__org_slug__place_enrichment_jobs__place_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"place_id","in":"path","required":true,"schema":{"type":"string","title":"Place Id"}},{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/place_enrichment/jobs/reprocess":{"post":{"tags":["jobs"],"summary":"Reprocess Jobs","operationId":"reprocess_jobs__org_slug__place_enrichment_jobs_reprocess_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReprocessJobRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/place_enrichment/batches":{"post":{"tags":["batches"],"summary":"Submit a batch of places for enrichment","description":"Submit a batch of places for enrichment\n```","operationId":"submit_batch__org_slug__place_enrichment_batches_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceBatchPayload"},"examples":{"basic_batch":{"summary":"Basic batch without prefilled data","value":{"batch_id":"d98e206f-ff1d-4b5a-b0d8-18fff0757fef","batch_name":"NYC Restaurants March 2024","jobs":[{"place_id":"place_nyc_123","inputs":{"name":"Joe's Pizza","latitude":40.7359,"longitude":-73.9911,"full_address":"7 Carmine St, New York, NY 10014"}}],"attributes":["websites","phoneNumbers","socialHandles","openingHours","categories","closed_permanently"],"kick_off_jobs_now":true}},"upload_only_batch":{"summary":"Upload-only batch (no immediate processing)","value":{"batch_id":"d98e206f-ff1d-4b5a-b0d8-18fff0757fef","batch_name":"NYC Restaurants Upload Only","jobs":[{"place_id":"place_nyc_999","inputs":{"name":"Upload Only Test Place","latitude":40.7128,"longitude":-74.006,"full_address":"1 City Hall Park, New York, NY 10007"}}],"kick_off_jobs_now":false}}}}}},"responses":{"200":{"description":"Successfully submitted batch for processing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmittedPlaceBatchResponse"},"example":{"id":"batch_2024_03_15_123456","batch_name":"NYC Restaurants March 2024","status":"pending","jobs":{"pending":["place_nyc_123","place_nyc_456"],"in_progress":[],"completed":[],"failed":[]}}}}},"400":{"description":"Batch size exceeds maximum limit of 50,000 records or invalid input format"},"401":{"description":"Invalid API credentials"}}},"get":{"tags":["batches"],"summary":"List batches","description":"Retrieve batches for an organization with pagination and optional search by name.\n\nReturns a paginated list of batch jobs with their metadata including batch ID,\ncreation timestamp, and job counts. If 'query' is provided, only batches whose name matches (case-insensitive, substring) will be returned.","operationId":"list_all_batches_endpoint__org_slug__place_enrichment_batches_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Number of batches to return per page","default":10,"title":"Limit"},"description":"Number of batches to return per page"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of batches to skip","default":0,"title":"Offset"},"description":"Number of batches to skip"},{"name":"query","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional search string to filter batches by name (case-insensitive)","title":"Query"},"description":"Optional search string to filter batches by name (case-insensitive)"},{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"responses":{"200":{"description":"List of all batches for the organization with pagination","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedBatchesResponse"},"example":{"batches":[{"id":"batch_2025_03_10_123456","name":"NYC Restaurants March 2025","created_at":"2025-03-10T15:30:00Z","organization_id":"org-abc123","job_count":150,"completed_count":142,"failed_count":3,"pending_count":0,"in_progress_count":5}],"total":42,"limit":10,"offset":0}}}}}}},"/place_enrichment/batches/{batch_id}":{"get":{"tags":["batches"],"summary":"Get batch status","operationId":"get_batch_status_endpoint__org_slug__place_enrichment_batches__batch_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"enrichments","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Comma-separated list of enrichment names to get status for","title":"Enrichments"},"description":"Comma-separated list of enrichment names to get status for"},{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmittedPlaceBatchResponse"}}}}}},"delete":{"tags":["batches"],"summary":"Delete a batch","operationId":"delete_batch_endpoint__org_slug__place_enrichment_batches__batch_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"put":{"tags":["batches"],"summary":"Rename or update a batch","description":"Update batch name and/or refresh flag; omitted fields keep their current value.","operationId":"update_batch_endpoint__org_slug__place_enrichment_batches__batch_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBatchRequest"}}}},"responses":{"200":{"description":"Batch updated successfully","content":{"application/json":{"schema":{}}}},"401":{"description":"Invalid API credentials"},"403":{"description":"Forbidden"},"404":{"description":"Batch not found"}}}},"/place_enrichment/batches/{batch_id}/reprocess":{"post":{"tags":["batches"],"summary":"Reprocess a batch","description":"Reprocess jobs in a specific batch.\n\nYou can specify which attributes to process by providing:\n- 'attributes': A list of specific attributes to enrich (e.g., [\"websites\", \"phoneNumbers\", \"categories\"])\n\nIf not provided, \"core\" attributes will be processed: websites, phoneNumbers, openingHours, names, address, categories, closed_permanently\n\nOptions:\n- failed_only: When true, only reprocess jobs with 'failed' status. When false, reprocess all jobs in the batch.\n- incomplete_only: When true, only reprocess jobs with 'pending' or 'in_progress' status. When false, reprocess all jobs in the batch (unless failed_only is true).","operationId":"reprocess_batch_endpoint__org_slug__place_enrichment_batches__batch_id__reprocess_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}},{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReprocessBatchRequest","properties":{"failed_only":{"type":"boolean","description":"When true, only reprocess jobs with 'failed' status. When false, reprocess all jobs in the batch.","default":true},"incomplete_only":{"type":"boolean","description":"When true, only reprocess jobs with 'pending' or 'in_progress' status. When false, reprocess all jobs in the batch (unless failed_only is true).","default":false},"refresh":{"type":"boolean","description":"When true, force fresh enrichment ignoring cached data.","default":false},"attributes":{"type":"array","items":{"type":"string"},"description":"List of specific attributes to enrich (e.g. 'websites', 'phoneNumbers')."}}},"example":{"failed_only":true,"incomplete_only":false,"refresh":false,"attributes":["websites","phoneNumbers","categories"]}}}},"responses":{"200":{"description":"Successfully initiated batch reprocessing","content":{"application/json":{"schema":{},"example":{"status":"success","message":"Started reprocessing 42 FAILED jobs from batch batch_2024_04_01_123456","job_count":42,"batch_id":"batch_2024_04_01_123456","excluded_deferred_count":5}}}},"404":{"description":"Batch not found"},"400":{"description":"No jobs found in batch"},"401":{"description":"Invalid API credentials"}}}},"/place_enrichment/batches/refresh":{"post":{"tags":["batches"],"summary":"Mark batches for refresh","description":"Mark a list of batch IDs for refresh.\n\nSets the `refresh` flag on PlaceEnrichmentBatchJob for the provided batch IDs.\nOnly batches belonging to the organization tied to the API key are updated.\nThe response includes which batch IDs were updated and which were missing.\n\nWhat refresh does: https://docs.repromptai.com/guides/monthly-refresh\nRefreshes re-run enrichment for places you've marked to detect changes over time.\nRuns execute on the 9th of every month, and by default re-run only the attributes\nthat were already enriched for that place.\n\nPass refresh=true to turn refresh on, or refresh=false to turn it off.","operationId":"mark_batches_refresh_endpoint__org_slug__place_enrichment_batches_refresh_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkRefreshBatchRequest"},"example":{"batch_ids":["batch_2024_03_15_123456","batch_2024_03_16_123456"],"refresh":true}}}},"responses":{"200":{"description":"Batch refresh flags updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkRefreshBatchResponse"}}}},"400":{"description":"Invalid input format"},"401":{"description":"Invalid API credentials"},"403":{"description":"API key does not match organization slug"}}}},"/place_enrichment/attributes":{"get":{"tags":["attributes"],"summary":"Get all available attributes","description":"Get metadata for all available enrichment attributes","operationId":"get_enrichment_attributes__org_slug__place_enrichment_attributes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"apiKey","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apikey"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/V1AttributesResponse"}}}}}}}},"components":{"schemas":{"AddressDetails":{"properties":{"full_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Address","description":"Full formatted address string"},"unit_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit Number","description":"An apartment, unit, office, lot, or other secondary unit designator"},"floor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor","description":"Expressions indicating a floor number e.g. '3rd Floor', 'Ground Floor', etc."},"building":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building","description":"Building name e.g. 'Sun Hung Kai Centre', 'The Center', 'Empire State Building'"},"block":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Block","description":"Block number, used in Singapore (SG) e.g., 'Block 329', Malaysia (MY) e.g., 'Blok A', and Indonesia (ID) e.g., 'Blok G5 No. 17'"},"km":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Km","description":"Kilometer marker, commonly used in Malaysia (MY) e.g., 'KM 12, Jalan Cheras' and Indonesia (ID) e.g., 'KM 53, Jl. Tol Jakarta‑Cikampek'. Rarely used in Singapore. Should be parsed as a number (e.g., 'KM 75' should be parsed as '75')."},"house":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"House"},"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street"},"neighborhood":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Neighborhood"},"suburb":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suburb"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postalcode"}},"type":"object","title":"AddressDetails"},"AttributeSet":{"type":"string","enum":["open_closed","core","all"],"title":"AttributeSet","description":"Predefined attribute group presets exposed by the API."},"AttributeStatusDistribution":{"properties":{"RUN":{"$ref":"#/components/schemas/AttributeStatusGroup"},"ERROR":{"$ref":"#/components/schemas/AttributeStatusGroup"},"NOT_RUN":{"$ref":"#/components/schemas/AttributeStatusGroup"},"RUN_CONDITION_FAILED":{"$ref":"#/components/schemas/AttributeStatusGroup"}},"type":"object","required":["RUN","ERROR","NOT_RUN","RUN_CONDITION_FAILED"],"title":"AttributeStatusDistribution","description":"Distribution of statuses for a single attribute."},"AttributeStatusEnum":{"type":"string","enum":["NOT FOUND","ADDED","VERIFIED","CORRECTED","NOT VERIFIED","NOT ENRICHED","RUN","RUN_CONDITION_FAILED","ERROR","NOT_RUN"],"title":"AttributeStatusEnum"},"AttributeStatusGroup":{"properties":{"total":{"type":"integer","title":"Total","description":"Total count of places with this status"},"ids":{"items":{"type":"string"},"type":"array","title":"Ids","description":"List of all place IDs with this status"}},"type":"object","required":["total","ids"],"title":"AttributeStatusGroup","description":"Status group with counts and all IDs."},"BatchJob":{"properties":{"id":{"type":"string","title":"Id"},"batch_name":{"type":"string","title":"Batch Name"},"status_counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Status Counts"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"status":{"$ref":"#/components/schemas/BatchJobStatus"},"metadata":{"anyOf":[{"type":"null"}]},"refresh":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Refresh"}},"type":"object","required":["id","batch_name","status_counts","created_at","status"],"title":"BatchJob"},"BatchJobStatus":{"type":"string","enum":["pending","queued","in_progress","completed","failed"],"title":"BatchJobStatus"},"ConfidenceScore":{"type":"string","enum":["VERY_HIGH","HIGH","MEDIUM","LOW","NONE"],"title":"ConfidenceScore"},"DayOfWeek":{"type":"string","enum":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"title":"DayOfWeek","description":"Days of week in three-letter format."},"DaysGroupedByHoursFormat":{"properties":{"days":{"items":{"$ref":"#/components/schemas/DayOfWeek"},"type":"array","title":"Days"},"opens":{"type":"string","title":"Opens"},"closes":{"type":"string","title":"Closes"}},"type":"object","required":["days","opens","closes"],"title":"DaysGroupedByHoursFormat","description":"Represents opening hours for a group of days.\n\nExample:\n {\n \"days\": [\"Mon\", \"Tue\", \"Wed\"],\n \"opens\": \"09:00\", # 24h format\n \"closes\": \"17:00\" # 24h format\n }"},"GenericJobOutputs":{"properties":{"reprompt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reprompt Id"},"coordinates":{"anyOf":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"type":"null"}],"title":"Coordinates","description":"Enriched coordinates as [latitude, longitude]."},"coordinates_distance":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Coordinates Distance","description":"Distance in meters between input coordinates and enriched coordinates. Returns 0 if coordinates were not enriched."},"open_closed_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Open Closed Status"},"date_closed":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Closed"},"date_opened":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Opened"},"chain_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain Id"},"chain_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain Name"},"chain_domains":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Chain Domains"},"alternative_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Alternative Names"},"chain_wikipedia_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain Wikipedia Url"},"number_of_locations":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Number Of Locations"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"facebook_followers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Facebook Followers"},"facebook_likes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Facebook Likes"},"facebook_page_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facebook Page Id"},"facebook_bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facebook Bio"},"instagram_followers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Instagram Followers"},"instagram_media_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Instagram Media Count"},"instagram_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram Username"},"instagram_profile_pic_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram Profile Pic Url"},"instagram_bio":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram Bio"},"approximate_review_count":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approximate Review Count","description":"Approximate review count in buckets (e.g., '<10', '10-50', '50-100', etc.)"},"approximate_average_rating":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Approximate Average Rating","description":"Approximate average rating out of 5 from web search"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"multilingual_names":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"null"}]},"type":"object","title":"Multilingual Names"},"alt_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alt Name"},"official_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Official Name"},"brand_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Brand Name"},"common_names":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Common Names"},"storefront_images":{"anyOf":[{"items":{"$ref":"#/components/schemas/StorefrontImage"},"type":"array"},{"type":"null"}],"title":"Storefront Images"},"available_services":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Available Services"},"has_delivery":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Delivery"},"has_takeout":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Takeout"},"has_dining":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Dining"},"has_pickup":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Pickup"},"address":{"anyOf":[{"$ref":"#/components/schemas/AddressDetails"},{"type":"null"}],"description":"International normalized version of the address"},"address_localized":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/IndonesiaAddress"},{"$ref":"#/components/schemas/JapaneseAddress"},{"$ref":"#/components/schemas/SingaporeAddress"},{"$ref":"#/components/schemas/MalaysiaAddress"},{"$ref":"#/components/schemas/HongKongAddressDetails"},{"$ref":"#/components/schemas/UAEAddress"}],"discriminator":{"propertyName":"country_code","mapping":{"AE":"#/components/schemas/UAEAddress","HK":"#/components/schemas/HongKongAddressDetails","ID":"#/components/schemas/IndonesiaAddress","JP":"#/components/schemas/JapaneseAddress","MY":"#/components/schemas/MalaysiaAddress","SG":"#/components/schemas/SingaporeAddress"}}},{"type":"null"}],"title":"Address Localized"},"categories":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Categories"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"phone_additional":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Phone Additional"},"naics_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics Code"},"naics_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Naics Description"},"merchant_category_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merchant Category Code"},"mcc_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mcc Description"},"merchant_category_group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merchant Category Group"},"merchant_super_industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merchant Super Industry"},"located_within":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Located Within"},"instagram":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram"},"facebook":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facebook"},"tiktok":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tiktok"},"opening_hours":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Opening Hours"},"opening_hours_grouped_by_hours":{"anyOf":[{"items":{"$ref":"#/components/schemas/DaysGroupedByHoursFormat"},"type":"array"},{"type":"null"}],"title":"Opening Hours Grouped By Hours"},"is_open_24h":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Open 24H"},"menu_urls":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Menu Urls"},"menu_url_official":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Menu Url Official","description":"The official menu URL from the business's own website"},"menu_content":{"anyOf":[{"items":{"$ref":"#/components/schemas/Menu"},"type":"array"},{"type":"null"}],"title":"Menu Content","description":"Structured menu content parsed from the official menu URL"},"menu_images":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Menu Images","description":"List of image URLs for menu images found through image search"},"price_tier":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Price Tier"},"average_price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Average Price","description":"Average price in local currency (from price_tier enrichment)"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency","description":"3-letter ISO currency code for average_price (from price_tier enrichment)"},"cuisines":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Cuisines"},"review_count":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}],"title":"Review Count","description":"Total number of reviews (integer for exact count, string bucket for approximate count)"},"average_rating":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Average Rating","description":"Average rating out of 5"},"wilson_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Wilson Score","description":"Wilson score lower bound (confidence=0.95) for positive ratings"},"popularity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Popularity","description":"Popularity score from 0 to 1 based on average rating and review count"},"review_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Review Summary","description":"One-line summary of reviews"},"summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Summary","description":"One-line summary of reviews (schema-expected field name)"},"recent_review_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recent Review Count"},"instagram_profile":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Instagram Profile"},"building_footprint":{"anyOf":[{},{"type":"null"}],"title":"Building Footprint"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"digital_footprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Digital Footprint"},"place_definition":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Place Definition"},"place_reality":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Place Reality"},"parking_spaces_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parking Spaces Total","description":"Total number of parking spaces available for customers"},"parking_spaces_street":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parking Spaces Street","description":"Number of street parking spaces available"},"parking_spaces_shared":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parking Spaces Shared","description":"Number of shared parking spaces available"},"parking_spaces_dedicated":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parking Spaces Dedicated","description":"Number of dedicated parking spaces available"},"parking_spaces_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parking Spaces Image Url","description":"URL of the satellite/aerial image used for analysis"},"traffic_control":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Traffic Control","description":"Whether traffic control manages traffic ingress/egress to the location"},"one_line_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"One Line Summary","description":"A brief, descriptive phrase capturing the essence and atmosphere of the place"},"site_quality_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Quality Score","description":"Overall site quality assessment (excellent, good, fair, poor, unknown)"},"accessibility_rating":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accessibility Rating","description":"How accessible the site is from major roads (excellent, good, fair, poor, unknown)"},"accessibility_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Accessibility Summary","description":"Summary of route accessibility from cardinal directions"},"primary_turns_required":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Primary Turns Required","description":"Number of turns required from primary access route"},"min_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Turns","description":"The minimum number of turns required to reach the destination from the primary access route"},"primary_turns":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Primary Turns","description":"The number of turns required from the primary access route"},"primary_turns_route_matrix_visualization":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Primary Turns Route Matrix Visualization","description":"Route matrix visualization data for map rendering"},"visibility_rating":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Visibility Rating","description":"How visible the business is from the street (high, medium, low, none, unknown)"},"signage_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signage Summary","description":"Summary of available signage (pylon, monument)"},"has_brand_signage":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Has Brand Signage","description":"Whether the business has identifiable brand signage"},"pylon_sign_exists":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pylon Sign Exists","description":"Whether a pylon sign exists at the location"},"pylon_coordinates":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Pylon Coordinates","description":"Pylon sign coordinates as [latitude, longitude]"},"pylon_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pylon Latitude","description":"Latitude of the pylon sign"},"pylon_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pylon Longitude","description":"Longitude of the pylon sign"},"pylon_number_of_brands":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pylon Number Of Brands","description":"Number of brands on pylon sign (single, multiple, uncertain, none)"},"pylon_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pylon Reasoning","description":"Reasoning for pylon sign analysis"},"pylon_includes_brand_sign":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pylon Includes Brand Sign","description":"Whether pylon sign includes the target brand"},"monument_sign_exists":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Monument Sign Exists","description":"Whether a monument sign exists at the location"},"monument_coordinates":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Monument Coordinates","description":"Monument sign coordinates as [latitude, longitude]"},"monument_latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monument Latitude","description":"Latitude of the monument sign"},"monument_longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monument Longitude","description":"Longitude of the monument sign"},"monument_number_of_brands":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Monument Number Of Brands","description":"Number of brands on monument sign (single, multiple, uncertain, none)"},"monument_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Monument Reasoning","description":"Reasoning for monument sign analysis"},"monument_includes_brand_sign":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Monument Includes Brand Sign","description":"Whether monument sign includes the target brand"},"sign_locations":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Sign Locations","description":"List of all detected sign locations with coordinates and details"},"location_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Type","description":"Type of location (shopping_center, standalone_building, mixed_use_building, unknown)"},"building_condition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building Condition","description":"Detailed description of building condition and maintenance"},"building_condition_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building Condition Score","description":"Building condition quality score (above_average, average, below_average, none)"},"shopping_center_condition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shopping Center Condition","description":"Condition of shopping center if applicable, null otherwise"},"shopping_center_condition_score":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shopping Center Condition Score","description":"Shopping center condition quality score (above_average, average, below_average, none)"},"location_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Location Category","description":"Type of location (shopping_center, standalone_building, mixed_use_building, unknown)"},"building_condition_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building Condition Summary","description":"Summary of building and property condition"},"building_condition_rating":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building Condition Rating","description":"Building condition score (excellent, good, fair, poor)"},"key_strengths":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Key Strengths","description":"Key strengths of the location"},"potential_concerns":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Potential Concerns","description":"Potential concerns or weaknesses"},"route_matrix_visualization":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Route Matrix Visualization","description":"Consolidated route matrix data for map visualization including routes, candidate points, and center coordinates"},"prominence":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prominence","description":"Overall prominence level (excellent, average, not visible)"},"entrance_views":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Entrance Views","description":"Street view images showing entrance visibility"},"reprompt_core_attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Reprompt Core Attributes"},"apple_business_attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Apple Business Attributes"}},"additionalProperties":false,"type":"object","title":"GenericJobOutputs"},"HongKongAddressDetails":{"properties":{"full_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Address","description":"Full formatted address string"},"unit_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit Number","description":"An apartment, unit, office, lot, or other secondary unit designator"},"floor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor","description":"Expressions indicating a floor number e.g. '3rd Floor', 'Ground Floor', etc."},"building":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building","description":"Building name e.g. 'Sun Hung Kai Centre', 'The Center', 'Empire State Building'"},"block":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Block","description":"Block number, used in Singapore (SG) e.g., 'Block 329', Malaysia (MY) e.g., 'Blok A', and Indonesia (ID) e.g., 'Blok G5 No. 17'"},"km":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Km","description":"Kilometer marker, commonly used in Malaysia (MY) e.g., 'KM 12, Jalan Cheras' and Indonesia (ID) e.g., 'KM 53, Jl. Tol Jakarta‑Cikampek'. Rarely used in Singapore. Should be parsed as a number (e.g., 'KM 75' should be parsed as '75')."},"house":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"House"},"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street"},"neighborhood":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Neighborhood"},"suburb":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suburb"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"country":{"type":"string","title":"Country","description":"Country name","default":"Hong Kong"},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postalcode"},"country_code":{"type":"string","const":"HK","title":"Country Code","description":"Country code for Hong Kong","default":"HK"},"district":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"District","description":"District (e.g., 'Wan Chai', 'Tsim Sha Tsui', 'Central')"},"area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Area","description":"Area ('Hong Kong', 'Kowloon', 'New Territories')"}},"type":"object","title":"HongKongAddressDetails","description":"Extended schema for Hong Kong addresses that inherits from the standard AddressDetails class.\nAdds district and area fields which are specific to Hong Kong's addressing system."},"IndonesiaAddress":{"properties":{"country":{"type":"string","title":"Country","description":"Country name","default":"Indonesia"},"country_code":{"type":"string","const":"ID","title":"Country Code","description":"ISO 3166-2 country code for Indonesia","default":"ID"},"administrative_area_level1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level1","description":"Province (resolvable), e.g., Daerah Khusus Ibukota Jakarta"},"administrative_area_level2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level2","description":"Regency/City (resolvable), e.g., Kota Jakarta Selatan"},"administrative_area_level3":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level3","description":"District (resolvable), e.g., Setiabudi"},"administrative_area_level4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level4","description":"Village/Sub-District (resolvable), e.g., Karet Kuningan"},"rt_rw":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rt Rw","description":"RT/RW (neighborhood division), e.g., RT.10/RW.7"},"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street","description":"Street name, e.g., Jl. Setia Budi Selatan Raya"},"gang":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Gang","description":"Gang/Alley, e.g., Gg. Jati"},"building":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building","description":"Building's name, e.g., Ruko Bekasi Town Square"},"km":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Km","description":"Kilometer, means the distance between the location and one of the endpoints of a road, e.g., KM.31"},"block":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Block","description":"Block, contains multiple house numbers, e.g., Blok B7-8"},"house_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"House No","description":"House number, e.g., No.2"},"kav":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kav","description":"Kav, e.g., Kav 53"},"postcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postcode","description":"Postal code, e.g., 35365"},"floor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor","description":"Floor, e.g., 2nd Floor"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit","description":"Unit number inside a building, e.g., Unit 216"}},"type":"object","title":"IndonesiaAddress","description":"Schema for Indonesian addresses. It covers common components like country, administrative areas, and detailed address parts.","example":{"administrative_area_level1":"Daerah Khusus Ibukota Jakarta","administrative_area_level2":"Kota Jakarta Selatan","administrative_area_level3":"Setiabudi","administrative_area_level4":"Karet Kuningan","building":"Ruko Bekasi Town Square","country":"Indonesia","gang":"Gg. Jati","postcode":"35365","rt_rw":"RT.10/RW.7","street":"Jl. Setia Budi Selatan Raya"}},"JapaneseAddress":{"properties":{"country":{"type":"string","title":"Country","description":"Country name","default":"日本"},"country_code":{"type":"string","const":"JP","title":"Country Code","description":"Country code for Japan","default":"JP"},"postal_code":{"anyOf":[{"type":"string","pattern":"^(?:〒)?(?:\\d{3}-\\d{4}|\\d{7})$"},{"type":"null"}],"title":"Postal Code","description":"7-digit postal code in the format '〒123-4567', '123-4567' or '1234567'"},"prefecture":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prefecture","description":"Prefecture name, e.g., 熊本県 (Kumamoto Prefecture)"},"municipality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Municipality","description":"City, ward, town, or district name, e.g., 阿蘇市 (Aso City)"},"town_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Town Area","description":"Town or area within the municipality, e.g., 内牧 (Uchimaki)"},"street_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street Address","description":"Street address including block and house number, e.g., 252−6"}},"type":"object","title":"JapaneseAddress","description":"Schema for Japanese addresses. It covers common components like postal codes, prefectures, municipalities, and detailed address parts.","example":{"country":"日本","municipality":"阿蘇市","postal_code":"869-2301","prefecture":"熊本県","street_address":"252−6","town_area":"内牧"}},"JobConfidenceScores":{"properties":{"open_closed_status":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}],"description":"Confidence score for the open/closed status of a place. VERY_HIGH (95% accuracy) indicates extremely reliable open/closed status. HIGH (90% accuracy) indicates very reliable status. MEDIUM (80% accuracy) indicates reasonably reliable status. LOW (70% accuracy) indicates limited online evidence but likely correct status.NONE indicates insufficient evidence to determine status. This happens when a place has no internet presence at all."},"phone":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"website":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"address":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"categories":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"coordinates":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"opening_hours":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"entity_type":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"name":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"parking_spaces":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"parking_spaces_total":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"parking_spaces_street":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"parking_spaces_shared":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"parking_spaces_dedicated":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"chain":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"reprompt_core":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"located_within":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"price_tier":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"approximate_user_reviews":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]},"menu":{"anyOf":[{"$ref":"#/components/schemas/ConfidenceScore"},{"type":"null"}]}},"type":"object","title":"JobConfidenceScores"},"JobListResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/PlaceJobResult"},"type":"array","title":"Jobs"},"total":{"type":"integer","title":"Total","description":"Total number of jobs available"},"limit":{"type":"integer","title":"Limit","description":"Number of jobs per page"},"offset":{"type":"integer","title":"Offset","description":"Starting position of the current page"}},"type":"object","required":["jobs","total","limit","offset"],"title":"JobListResponse"},"JobMetadata":{"properties":{"last_enriched":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Enriched","description":"Timestamp of the last enrichment"},"enrichment_metadata":{"anyOf":[{"additionalProperties":{"additionalProperties":true,"type":"object"},"type":"object"},{"type":"null"}],"title":"Enrichment Metadata"},"attribute_status":{"additionalProperties":{"$ref":"#/components/schemas/AttributeStatusEnum"},"type":"object","title":"Attribute Status"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"}},"type":"object","required":["attribute_status"],"title":"JobMetadata"},"JobReasoning":{"properties":{"open_closed_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Open Closed Status"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"categories":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Categories"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone"},"facebook":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Facebook"},"instagram":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instagram"},"tiktok":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tiktok"},"opening_hours":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opening Hours"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"coordinates":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coordinates"},"price_tier":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Tier"},"menu":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Menu"},"cuisine":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cuisine"},"approximate_user_reviews":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Approximate User Reviews"},"chain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chain"},"entity_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"},"digital_footprint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Digital Footprint"},"place_definition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place Definition"},"place_reality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Place Reality"},"merchant":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Merchant"},"located_within":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Located Within"},"parking_spaces":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parking Spaces"},"parking_spaces_total":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parking Spaces Total"},"parking_spaces_street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parking Spaces Street"},"parking_spaces_shared":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parking Spaces Shared"},"parking_spaces_dedicated":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parking Spaces Dedicated"},"one_line_summary":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"One Line Summary"},"signage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signage"},"building_condition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building Condition"},"entrances":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entrances"},"primary_turns":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Primary Turns"},"traffic_control":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Traffic Control"},"reprompt_core_attributes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reprompt Core Attributes"},"apple_business_attributes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apple Business Attributes"},"storefront_images":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Storefront Images"},"available_services":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Available Services"},"reprompt_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reprompt Id"}},"type":"object","title":"JobReasoning"},"MalaysiaAddress":{"properties":{"full_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Address","description":"Full formatted address string"},"unit_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit Number","description":"An apartment, unit, office, lot, or other secondary unit designator"},"floor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor","description":"Expressions indicating a floor number e.g. '3rd Floor', 'Ground Floor', etc."},"building":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building","description":"Building name e.g. 'Sun Hung Kai Centre', 'The Center', 'Empire State Building'"},"block":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Block","description":"Block number, used in Singapore (SG) e.g., 'Block 329', Malaysia (MY) e.g., 'Blok A', and Indonesia (ID) e.g., 'Blok G5 No. 17'"},"km":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Km","description":"Kilometer marker, commonly used in Malaysia (MY) e.g., 'KM 12, Jalan Cheras' and Indonesia (ID) e.g., 'KM 53, Jl. Tol Jakarta‑Cikampek'. Rarely used in Singapore. Should be parsed as a number (e.g., 'KM 75' should be parsed as '75')."},"house":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"House"},"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street"},"neighborhood":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Neighborhood"},"suburb":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suburb"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postalcode"},"country_code":{"type":"string","const":"MY","title":"Country Code","description":"ISO 3166-2 country code for Malaysia","default":"MY"},"administrative_area_level1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level1","description":"Province (resolvable), e.g., Wilayah Persekutuan Kuala Lumpur"},"administrative_area_level2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level2","description":"State (resolvable), e.g., Wilayah Persekutuan Kuala Lumpur"},"administrative_area_level3":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level3","description":"District (resolvable), e.g., Kuala Lumpur"},"administrative_area_level4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level4","description":"Sub-District (resolvable), e.g., Kuala Lumpur"},"nearby_street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nearby Street","description":"Nearby street name, e.g., Jln Ampang"},"lot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lot","description":"Lot number, e.g., 123"},"sub_lot":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Lot","description":"Sub-lot number, e.g., 123"}},"type":"object","title":"MalaysiaAddress","description":"Schema for Malaysian addresses. It covers common components like country, administrative areas, and detailed address parts."},"Menu":{"properties":{"name":{"type":"string","title":"Name","default":"Menu"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"footnote":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Footnote"},"currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Currency"},"sections":{"items":{"$ref":"#/components/schemas/MenuSection"},"type":"array","title":"Sections"}},"type":"object","required":["sections"],"title":"Menu"},"MenuChoice":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"prices":{"anyOf":[{"$ref":"#/components/schemas/PriceInfo"},{"type":"null"}]}},"type":"object","title":"MenuChoice"},"MenuItem":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"data":{"anyOf":[{"$ref":"#/components/schemas/MenuItemData"},{"type":"null"}]}},"type":"object","required":["name"],"title":"MenuItem"},"MenuItemData":{"properties":{"choices":{"anyOf":[{"items":{"$ref":"#/components/schemas/MenuChoice"},"type":"array"},{"type":"null"}],"title":"Choices"}},"type":"object","title":"MenuItemData"},"MenuSection":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"items":{"items":{"$ref":"#/components/schemas/MenuItem"},"type":"array","title":"Items"}},"type":"object","required":["name","items"],"title":"MenuSection"},"PaginatedBatchesResponse":{"properties":{"batches":{"items":{"$ref":"#/components/schemas/BatchJob"},"type":"array","title":"Batches"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["batches","total","limit","offset"],"title":"PaginatedBatchesResponse"},"PlaceBatchPayload":{"properties":{"batch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch Id","description":"Optional unique identifier for the batch. If not provided, a new UUID will be generated. If an existing batch ID is provided, new jobs will be added to that batch."},"batch_name":{"type":"string","title":"Batch Name","description":"The name of the batch. Only for display purposes. Recommended to use a descriptive human readable name."},"jobs":{"items":{"$ref":"#/components/schemas/PlaceJob"},"type":"array","title":"Jobs","description":"List of jobs to process. Maximum of 50,000 jobs per batch."},"attribute_set":{"anyOf":[{"$ref":"#/components/schemas/AttributeSet"},{"type":"null"}],"description":"Deprecated preset applied to every job. Prefer an explicit `attributes` list. `open_closed` checks whether a place is open or permanently closed, while `core` and `all` both request `closed_permanently`, `websites`, `phoneNumbers`, `openingHours`, `names`, `address`, and `categories`. Merged with any explicit `attributes`."},"attributes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Attributes","description":"Batch-level attribute keys applied to every job (copied onto each `PlaceJob`; same merge rules as a single job: combined with `attribute_set`)."},"kick_off_jobs_now":{"type":"boolean","title":"Kick Off Jobs Now","description":"When true, jobs are enqueued for immediate processing and either attributes or attribute_set must be provided. When false, the batch is created without starting processing (upload only); attributes and attribute_set are optional.","default":true},"owner_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Id","include_in_schema":false}},"type":"object","required":["batch_name","jobs"],"title":"PlaceBatchPayload"},"PlaceJob":{"properties":{"place_id":{"type":"string","title":"Place Id","description":"The customer-identifier for the place and retained as external_customer_id in the database. When not set, will automatically generate a UUID.","example":"place_nyc_123"},"inputs":{"$ref":"#/components/schemas/UniversalPlace","description":"The place to enrich","example":{"country_code":"US","full_address":"7 Carmine St, New York, NY 10014","latitude":40.7359,"longitude":-73.9911,"name":"Joe's Pizza"}},"attributes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Attributes","description":"List of attribute keys to enrich. See `GET /{org_slug}/place_enrichment/attributes_internal` for available keys and their required inputs. If both attribute_set and attributes are provided, both are merged (explicit attributes are added to the set from attribute_set).","example":["websites","categories","closed_permanently"]},"attribute_set":{"anyOf":[{"$ref":"#/components/schemas/AttributeSet"},{"type":"null"}],"description":"Deprecated preset for common enrichment requests. Prefer an explicit `attributes` list. `open_closed` checks whether a place is open or permanently closed, while `core` and `all` both request `closed_permanently`, `websites`, `phoneNumbers`, `openingHours`, `names`, `address`, and `categories`."},"attributes_enrichments":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Attributes Enrichments"},"refresh":{"type":"boolean","title":"Refresh","description":"If true, will force a refresh of the place even if it has already been enriched.","default":false}},"type":"object","required":["place_id","inputs"],"title":"PlaceJob"},"PlaceJobResult":{"properties":{"place_id":{"type":"string","title":"Place Id"},"status":{"type":"string","title":"Status"},"job_metadata":{"$ref":"#/components/schemas/JobMetadata"},"inputs":{"oneOf":[{"$ref":"#/components/schemas/UniversalPlace"}],"title":"Inputs","discriminator":{"propertyName":"input_type","mapping":{"place":"#/components/schemas/UniversalPlace","query":"#/components/schemas/InputQuery"}}},"outputs":{"title":"Outputs","$ref":"#/components/schemas/GenericJobOutputs"},"reasoning":{"title":"Reasoning","$ref":"#/components/schemas/JobReasoning"},"confidence_scores":{"$ref":"#/components/schemas/JobConfidenceScores","description":"Confidence scores for various attributes"}},"type":"object","required":["place_id","status","job_metadata","inputs","outputs","reasoning"],"title":"PlaceJobResult"},"PriceInfo":{"properties":{"min":{"type":"string","title":"Min"},"max":{"type":"string","title":"Max","default":""}},"type":"object","required":["min"],"title":"PriceInfo"},"ReprocessBatchRequest":{"properties":{"failed_only":{"type":"boolean","title":"Failed Only","description":"When true, only reprocess jobs with 'failed' status. When false, reprocess all jobs in the batch.","default":true},"incomplete_only":{"type":"boolean","title":"Incomplete Only","description":"When true, only reprocess jobs with 'pending', 'queued' or 'in_progress' status. When false, reprocess all jobs in the batch (unless failed_only is true).","default":false},"refresh":{"type":"boolean","title":"Refresh","description":"When true, force fresh enrichment ignoring cached data.","default":false},"attributes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Attributes","description":"List of specific attributes to enrich (e.g. 'websites', 'phoneNumbers'). Merged with attribute_set when both are provided."},"attribute_set":{"anyOf":[{"$ref":"#/components/schemas/AttributeSet"},{"type":"null"}],"description":"Deprecated preset for common enrichment requests. Prefer an explicit `attributes` list. `open_closed` checks whether a place is open or permanently closed, while `core` and `all` both request `closed_permanently`, `websites`, `phoneNumbers`, `openingHours`, `names`, `address`, and `categories`."},"use_previous_invocation_params":{"type":"boolean","title":"Use Previous Invocation Params","description":"When true, reuse each job's last-invocation parameters (attributes are inferred per place_id). Request-level attributes/attribute_set are only used as a fallback for place_ids that have no prior invocation.","default":false}},"type":"object","title":"ReprocessBatchRequest"},"ReprocessJobRequest":{"properties":{"place_ids":{"items":{"type":"string"},"type":"array","title":"Place Ids"},"attributes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Attributes"},"attribute_set":{"anyOf":[{"$ref":"#/components/schemas/AttributeSet"},{"type":"null"}],"description":"Deprecated preset for common enrichment requests. Prefer an explicit `attributes` list. `open_closed` checks whether a place is open or permanently closed, while `core` and `all` both request `closed_permanently`, `websites`, `phoneNumbers`, `openingHours`, `names`, `address`, and `categories`."},"refresh":{"type":"boolean","title":"Refresh","default":false},"use_previous_invocation_params":{"type":"boolean","title":"Use Previous Invocation Params","description":"When true, reuse each job's last-invocation parameters (attributes are inferred per place_id). When set, the `attributes`/`attribute_set` fields become optional and are only used as a fallback for place_ids that have no prior invocation.","default":false}},"type":"object","required":["place_ids"],"title":"ReprocessJobRequest"},"SingaporeAddress":{"properties":{"country":{"type":"string","title":"Country","description":"Country name","default":"Singapore"},"country_code":{"type":"string","const":"SG","title":"Country Code","description":"Country code for Singapore","default":"SG"},"full_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Address","description":"Full formatted address string from input"},"postcode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postcode","description":"Postal code, e.g., 018936"},"administrative_area_level1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level1","description":"District (resolvable), e.g., Central Region"},"administrative_area_level2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level2","description":"Sub-District (resolvable), e.g., Downtown Core"},"administrative_area_level3":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Administrative Area Level3","description":"Area (resolvable), e.g., Central Subzone"},"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street","description":"Street name, e.g., Straits View"},"house":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"House","description":"House number/Block number, e.g., 9"},"building":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building","description":"Building's name (if needed), e.g., Marina One"},"floor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Floor","description":"Floor (if needed), e.g., B1"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit","description":"Unit number inside a building, floor included, e.g., #81-32"},"block":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Block","description":"Block, e.g., Block A"}},"type":"object","title":"SingaporeAddress","description":"Model for Singapore addresses"},"StorefrontImage":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"StorefrontImage","description":"A storefront image with its URL."},"SubmittedPlaceBatchResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Unique identifier for tracking the batch","example":"batch_2024_03_15_123456"},"batch_name":{"type":"string","title":"Batch Name","description":"User-provided name to identify the batch","example":"NYC Restaurants March 2024"},"status":{"$ref":"#/components/schemas/BatchJobStatus","description":"Current processing status of the batch. Initially PENDING, changes to IN_PROGRESS when processing starts","default":"pending","example":"pending"},"jobs":{"type":"object"},"metadata":{"anyOf":[{"type":"null"}],"description":"Batch statistics and metadata. Basic stats available to all organizations, detailed stats only for Reprompt."},"attribute_statuses":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/AttributeStatusDistribution"},"type":"object"},{"type":"null"}],"title":"Attribute Statuses","description":"Status distribution per attribute (only populated when enrichments query param is provided)"}},"type":"object","required":["id","batch_name","jobs"],"title":"SubmittedPlaceBatchResponse","description":"Represents the response when submitting a new batch of places for enrichment","example":{"batch_name":"NYC Restaurants March 2024","id":"batch_2024_03_15_123456","jobs":{"completed":[],"failed":[],"in_progress":[],"pending":["place_nyc_123","place_nyc_456","place_nyc_789"]},"status":"pending"}},"UAEAddress":{"properties":{"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"Country name matching input language (English: 'United Arab Emirates', Arabic: 'الإمارات العربية المتحدة')"},"country_code":{"type":"string","const":"AE","title":"Country Code","description":"ISO 3166-1 alpha-2 country code for UAE","default":"AE"},"full_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Address","description":"Full formatted address string"},"emirate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Emirate","description":"Emirate (e.g., 'Dubai' or 'دبي', 'Abu Dhabi' or 'أبو ظبي')"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name (e.g., 'Dubai' or 'دبي')"},"district":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"District","description":"District/neighborhood (e.g., 'Palm Jumeirah' or 'نخلة جميرا')"},"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street","description":"Street name (e.g., 'Palm Jumeirah Rd' or 'شارع النخلة')"},"house":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"House","description":"House/building number (e.g., '127', '45A')"},"building":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Building","description":"Building name"},"unit_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit Number","description":"Unit/shop/gate number"}},"type":"object","title":"UAEAddress","description":"Schema for UAE addresses. Language matches the input address (English or Arabic)."},"UniversalPlace":{"properties":{"name":{"type":"string","title":"Name","description":"Required. The business name, most important parameter for researching correct website and profiles. Assumed to be in the local language."},"full_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Address","description":"Optional but HIGHLY IMPORTANT. Next to the name and coordinates will significantly boost accuracy of outputs if provided. This is the full address like you would see it on a letterhead."},"country_code":{"anyOf":[{"type":"string","pattern":"^[A-Z]{2}$"},{"type":"null"}],"title":"Country Code","description":"Two-letter country code (ISO 3166-1 alpha-2 or special codes like XK). If not provided, will be inferred from coordinates"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category","description":"Optional. A string describing the primary category of the place. Very important for disambiguating, for example, hotels with hotel bars. Reprompt will be able to correct wrong types."},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website","description":"Optional. If provided will be validated and corrected and prefered as source. Even if wrong still better to provide the website if available."},"phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone","description":"Optional. Phone in international format. If no international format is provided, based on the latitude/longitude the country pre-fix will be assumed"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional identifier for tracking the place"},"input_type":{"type":"string","const":"place","title":"Input Type","default":"place"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude","description":"Optional. The latitude coordinate of the place. Must be between -90 and 90 if provided"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude","description":"Optional. The longitude coordinate of the place. Must be between -180 and 180 if provided"},"wkt_geometry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wkt Geometry","description":"Optional. Instead of latitude and longitude put in a WKT geometry string. This will be converted into latitude and longitude. WKT uses (longitude latitude) coordinate order."},"street":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Street","description":"Street name component of the address"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name"},"house":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"House","description":"Building number or house identifier"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State","description":"State or region"},"postalCode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postalcode","description":"Postal or ZIP code"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"Full country name"},"opening_hours":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Opening Hours","description":"Opening hours in a structured format"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Data source this place came from (e.g., 'reprompt', 'overture', 'foursquare')"}},"additionalProperties":true,"type":"object","required":["name","full_address","latitude","longitude","country_code"],"title":"UniversalPlace"},"UpdateBatchRequest":{"properties":{"batch_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch Name","description":"New name for the batch"},"refresh":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Refresh","description":"Whether the batch should be marked for refresh"}},"type":"object","title":"UpdateBatchRequest","example":{"batch_name":"Q2 2024 store locations"}},"V1AttributesResponse":{"properties":{"core":{"items":{"type":"string"},"type":"array","title":"Core","description":"Core enrichment attributes available for the organization."},"custom":{"items":{"type":"string"},"type":"array","title":"Custom","description":"Legacy placeholder for custom attributes in v1. Currently returned as an empty list for backward compatibility."},"all":{"items":{"type":"string"},"type":"array","title":"All","description":"All enrichment attributes available for the organization."}},"type":"object","required":["core","custom","all"],"title":"V1AttributesResponse","example":{"all":["names","address","phoneNumbers","websites","openingHours","closed_permanently","categories"],"core":["names","address","phoneNumbers","websites","openingHours"],"custom":[]}}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}},"servers":[{"url":"https://api.repromptai.com/v1/{org}","variables":{"org":{"default":"reprompt","description":"The organization slug to use for the API"}}}]}