{"openapi":"3.1.0","info":{"title":"RuralCheck","version":"0.1.0"},"paths":{"/api/v1/checks":{"get":{"tags":["API v1"],"summary":"Checks","description":"Every check a report can make: its name, what it holds, what it has to run\nalongside it (`runs`) and roughly how long that takes.","operationId":"checks_api_v1_checks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Checks Api V1 Checks Get"}}}}}}},"/api/v1/coverage":{"get":{"tags":["API v1"],"summary":"Coverage At","description":"Whether reports are made for this point.","operationId":"coverage_at_api_v1_coverage_get","parameters":[{"name":"lat","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Lat"}},{"name":"lon","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Lon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Coverage At Api V1 Coverage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search":{"get":{"tags":["API v1"],"summary":"Search","description":"Find a settlement by name, or read coordinates or a Google Maps or\nOpenStreetMap link. Places only: street addresses are not searchable.","operationId":"search_api_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","maxLength":2000,"title":"Q"}},{"name":"lat","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"}},{"name":"lon","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Search Api V1 Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/sample":{"get":{"tags":["API v1"],"summary":"Sample Report","description":"The sample report: a complete full report for one fixed plot.","operationId":"sample_report_api_v1_sample_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/reports":{"post":{"tags":["API v1"],"summary":"Create Report","description":"Ask for a report on a point, for all checks or the ones named.\n\n202 with an id to fetch, or 200 with the finished report if it was ready within\n`wait` seconds.","operationId":"create_report_api_v1_reports_post","parameters":[{"name":"wait","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":0,"description":"Seconds to hold the request open for the result.","default":0,"title":"Wait"},"description":"Seconds to hold the request open for the result."},{"name":"drawing","in":"query","required":false,"schema":{"type":"boolean","description":"false leaves out what only a map draws: outlines, pictures and the horizon.","default":true,"title":"Drawing"},"description":"false leaves out what only a map draws: outlines, pictures and the horizon."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/reports/{job_id}":{"get":{"tags":["API v1"],"summary":"Get Report","description":"A report asked for with this account's keys: its progress, or the result.\n\nAnswers already worked out are in `modules` while the rest run. `wait` holds the\nrequest open until the report is finished, so nothing has to poll in a loop.\nFinished reports are kept for a day.","operationId":"get_report_api_v1_reports__job_id__get","parameters":[{"name":"job_id","in":"path","required":true,"schema":{"type":"string","title":"Job Id"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":0,"default":0,"title":"Wait"}},{"name":"drawing","in":"query","required":false,"schema":{"type":"boolean","description":"false leaves out what only a map draws: outlines, pictures and the horizon.","default":true,"title":"Drawing"},"description":"false leaves out what only a map draws: outlines, pictures and the horizon."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/listings":{"get":{"tags":["API v1"],"summary":"List Listings","description":"This account's listing uploads, newest first, with how far each has got.","operationId":"list_listings_api_v1_listings_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Listings Api V1 Listings Get"}}}}}},"post":{"tags":["API v1"],"summary":"Create Listings","description":"Send listings to run, each as a full report with a saved plot and a client\nlink. Up to 2,000 are read and 100 run; every listing that is not run comes\nback with the reason. One upload at a time per account.","operationId":"create_listings_api_v1_listings_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListingsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/listings/{upload_id}":{"get":{"tags":["API v1"],"summary":"Get Listings","description":"One upload: every listing, and for each its status, its client link or the\nreason it was not run.","operationId":"get_listings_api_v1_listings__upload_id__get","parameters":[{"name":"upload_id","in":"path","required":true,"schema":{"type":"string","title":"Upload Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Listings Api V1 Listings  Upload Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/plots":{"get":{"tags":["API v1"],"summary":"List Plots","description":"The plots this account keeps, newest first, with the key figure of each check.\n\nPlots in the Trash are listed only with `in_trash=true`.","operationId":"list_plots_api_v1_plots_get","parameters":[{"name":"folder_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Only the plots in this folder.","title":"Folder Id"},"description":"Only the plots in this folder."},{"name":"in_trash","in":"query","required":false,"schema":{"type":"boolean","description":"true lists the Trash instead.","default":false,"title":"In Trash"},"description":"true lists the Trash instead."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Plots Api V1 Plots Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["API v1"],"summary":"Keep Plot","description":"Keep a finished report in Saved plots, optionally in a folder.\n\nOnly a report asked for with every check can be kept. Keeping the same point\nagain replaces its report and keeps its name and note, and takes it out of the\nTrash if it was there.","operationId":"keep_plot_api_v1_plots_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeepRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Keep Plot Api V1 Plots Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/plots/{plot_id}":{"get":{"tags":["API v1"],"summary":"Get Plot","description":"One kept plot, with its report as it was when it was kept.","operationId":"get_plot_api_v1_plots__plot_id__get","parameters":[{"name":"plot_id","in":"path","required":true,"schema":{"type":"integer","title":"Plot Id"}},{"name":"drawing","in":"query","required":false,"schema":{"type":"boolean","description":"false leaves out what only a map draws: outlines, pictures and the horizon.","default":true,"title":"Drawing"},"description":"false leaves out what only a map draws: outlines, pictures and the horizon."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Plot Api V1 Plots  Plot Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["API v1"],"summary":"Edit Plot","description":"Rename a plot, change its note, or move it to a folder (null for none).","operationId":"edit_plot_api_v1_plots__plot_id__patch","parameters":[{"name":"plot_id","in":"path","required":true,"schema":{"type":"integer","title":"Plot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlotEdit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Edit Plot Api V1 Plots  Plot Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["API v1"],"summary":"Trash Plot","description":"Move a plot to the Trash. It can be restored until `deleted_after`, and is\nthen removed for good. Nothing through the API deletes a plot at once.","operationId":"trash_plot_api_v1_plots__plot_id__delete","parameters":[{"name":"plot_id","in":"path","required":true,"schema":{"type":"integer","title":"Plot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Trash Plot Api V1 Plots  Plot Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/plots/{plot_id}/restore":{"post":{"tags":["API v1"],"summary":"Restore Plot","description":"Take a plot out of the Trash, back into its folder if that still exists.","operationId":"restore_plot_api_v1_plots__plot_id__restore_post","parameters":[{"name":"plot_id","in":"path","required":true,"schema":{"type":"integer","title":"Plot Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Restore Plot Api V1 Plots  Plot Id  Restore Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/folders":{"get":{"tags":["API v1"],"summary":"List Folders","description":"This account's folders, each with how many plots are in it.","operationId":"list_folders_api_v1_folders_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Folders Api V1 Folders Get"}}}}}},"post":{"tags":["API v1"],"summary":"Create Folder","description":"Make a folder. Names are unique on an account, whatever the case.","operationId":"create_folder_api_v1_folders_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderName"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Folder Api V1 Folders Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/folders/{folder_id}":{"patch":{"tags":["API v1"],"summary":"Rename Folder","operationId":"rename_folder_api_v1_folders__folder_id__patch","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FolderName"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Rename Folder Api V1 Folders  Folder Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["API v1"],"summary":"Delete Folder","description":"Delete a folder. Its plots stay in Saved plots, in no folder.","operationId":"delete_folder_api_v1_folders__folder_id__delete","parameters":[{"name":"folder_id","in":"path","required":true,"schema":{"type":"integer","title":"Folder Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Folder Api V1 Folders  Folder Id  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccountChange":{"properties":{"email":{"type":"string","maxLength":320,"title":"Email"},"plan":{"type":"string","title":"Plan"},"role":{"type":"string","title":"Role"}},"type":"object","required":["email","plan","role"],"title":"AccountChange"},"AnalyseRequest":{"properties":{"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lon":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lon"},"supersedes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Supersedes"},"tier":{"type":"string","pattern":"^(quick|full)$","title":"Tier","default":"quick"}},"type":"object","required":["lat","lon"],"title":"AnalyseRequest"},"Body_account_brand_account_brand_post":{"properties":{"name":{"type":"string","title":"Name","default":""},"contact":{"type":"string","title":"Contact","default":""}},"type":"object","title":"Body_account_brand_account_brand_post"},"Body_account_brand_logo_account_brand_logo_post":{"properties":{"logo":{"type":"string","contentMediaType":"application/octet-stream","title":"Logo"}},"type":"object","required":["logo"],"title":"Body_account_brand_logo_account_brand_logo_post"},"Body_account_business_account_business_post":{"properties":{"name":{"type":"string","title":"Name","default":""},"address":{"type":"string","title":"Address","default":""},"country":{"type":"string","title":"Country","default":""},"vat_id":{"type":"string","title":"Vat Id","default":""},"declare":{"type":"string","title":"Declare","default":""}},"type":"object","title":"Body_account_business_account_business_post"},"Body_account_display_account_display_post":{"properties":{"units":{"type":"string","title":"Units","default":"metric"},"currency":{"type":"string","title":"Currency","default":""}},"type":"object","title":"Body_account_display_account_display_post"},"Body_account_make_key_account_keys_post":{"properties":{"name":{"type":"string","title":"Name","default":""}},"type":"object","title":"Body_account_make_key_account_keys_post"},"Body_cancel_plan_account_cancel_post":{"properties":{"how":{"type":"string","title":"How","default":"end_of_period"},"reason":{"type":"string","title":"Reason","default":""},"name":{"type":"string","title":"Name","default":""}},"type":"object","title":"Body_cancel_plan_account_cancel_post"},"Body_cancel_public_post_cancel_post":{"properties":{"email":{"type":"string","title":"Email","default":""},"name":{"type":"string","title":"Name","default":""},"contract":{"type":"string","title":"Contract","default":""},"how":{"type":"string","title":"How","default":"end_of_period"},"reason":{"type":"string","title":"Reason","default":""},"cx_site":{"type":"string","title":"Cx Site","default":""},"cx_t":{"type":"string","title":"Cx T","default":""}},"type":"object","title":"Body_cancel_public_post_cancel_post"},"Body_checkout_order_checkout_post":{"properties":{"plan":{"type":"string","title":"Plan","default":""},"period":{"type":"string","title":"Period","default":""},"country":{"type":"string","title":"Country","default":""},"consent":{"type":"string","title":"Consent","default":""},"name":{"type":"string","title":"Name","default":""},"address":{"type":"string","title":"Address","default":""}},"type":"object","title":"Body_checkout_order_checkout_post"},"Body_confirm_again_confirm_again_post":{"properties":{"email":{"type":"string","title":"Email"},"cx_site":{"type":"string","title":"Cx Site","default":""},"cx_t":{"type":"string","title":"Cx T","default":""}},"type":"object","required":["email"],"title":"Body_confirm_again_confirm_again_post"},"Body_confirm_confirm_post":{"properties":{"token":{"type":"string","title":"Token","default":""},"type":{"type":"string","title":"Type","default":"signup"}},"type":"object","title":"Body_confirm_confirm_post"},"Body_forgot_forgot_post":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"Body_forgot_forgot_post"},"Body_listings_upload_api_listings_post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"folder":{"type":"string","title":"Folder","default":""},"folder_name":{"type":"string","title":"Folder Name","default":""}},"type":"object","required":["file"],"title":"Body_listings_upload_api_listings_post"},"Body_login_login_post":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"next":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next"}},"type":"object","required":["email","password"],"title":"Body_login_login_post"},"Body_mollie_webhook_api_mollie_webhook_post":{"properties":{"id":{"type":"string","title":"Id","default":""}},"type":"object","title":"Body_mollie_webhook_api_mollie_webhook_post"},"Body_reset_reset_post":{"properties":{"token":{"type":"string","title":"Token"},"type":{"type":"string","title":"Type","default":"recovery"},"password":{"type":"string","title":"Password"}},"type":"object","required":["token","password"],"title":"Body_reset_reset_post"},"Body_signup_signup_post":{"properties":{"email":{"type":"string","title":"Email"},"password":{"type":"string","title":"Password"},"next":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next"},"cx_site":{"type":"string","title":"Cx Site","default":""},"cx_t":{"type":"string","title":"Cx T","default":""}},"type":"object","required":["email","password"],"title":"Body_signup_signup_post"},"Body_withdraw_public_post_withdraw_post":{"properties":{"email":{"type":"string","title":"Email","default":""},"name":{"type":"string","title":"Name","default":""},"contract":{"type":"string","title":"Contract","default":""},"cx_site":{"type":"string","title":"Cx Site","default":""},"cx_t":{"type":"string","title":"Cx T","default":""}},"type":"object","title":"Body_withdraw_public_post_withdraw_post"},"DisplayRequest":{"properties":{"units":{"type":"string","pattern":"^(metric|imperial)$","title":"Units","default":"metric"},"currency":{"anyOf":[{"type":"string","maxLength":3},{"type":"null"}],"title":"Currency"}},"type":"object","title":"DisplayRequest"},"EditPlotRequest":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Name"},"note":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Note"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"}},"type":"object","title":"EditPlotRequest"},"FeedbackRequest":{"properties":{"message":{"type":"string","maxLength":4000,"minLength":1,"title":"Message"},"check":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Check"},"figure":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Figure"},"report":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Report"},"lat":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Lat"},"lon":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Lon"}},"type":"object","required":["message"],"title":"FeedbackRequest"},"FindRequest":{"properties":{"criteria":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Criteria"},"bbox":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"},"w":{"type":"integer","title":"W","default":768},"h":{"type":"integer","title":"H","default":768}},"type":"object","title":"FindRequest"},"FolderName":{"properties":{"name":{"type":"string","maxLength":60,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"FolderName"},"FolderRequest":{"properties":{"name":{"type":"string","maxLength":60,"minLength":1,"title":"Name"}},"type":"object","required":["name"],"title":"FolderRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InviteRequest":{"properties":{"email":{"type":"string","maxLength":320,"title":"Email"},"plan":{"type":"string","title":"Plan","default":"free"},"again":{"type":"boolean","title":"Again","default":false}},"type":"object","required":["email"],"title":"InviteRequest"},"KeepRequest":{"properties":{"report_id":{"type":"string","maxLength":32,"minLength":1,"title":"Report Id"},"name":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Name"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"}},"type":"object","required":["report_id"],"title":"KeepRequest"},"LinkSwitch":{"properties":{"on":{"type":"boolean","title":"On"}},"type":"object","required":["on"],"title":"LinkSwitch"},"ListingIn":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name","default":""},"lat":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lat"},"lon":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Lon"},"reference":{"type":"string","maxLength":255,"title":"Reference","default":""}},"type":"object","title":"ListingIn"},"ListingsRequest":{"properties":{"name":{"type":"string","maxLength":200,"title":"Name","default":""},"listings":{"items":{"$ref":"#/components/schemas/ListingIn"},"type":"array","title":"Listings"}},"type":"object","title":"ListingsRequest"},"PlotEdit":{"properties":{"name":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Name"},"note":{"anyOf":[{"type":"string","maxLength":4000},{"type":"null"}],"title":"Note"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"}},"type":"object","title":"PlotEdit"},"ReportRequest":{"properties":{"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lon":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lon"},"checks":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":64},{"type":"null"}],"title":"Checks"}},"type":"object","required":["lat","lon"],"title":"ReportRequest"},"SavePlotRequest":{"properties":{"lat":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Lat"},"lon":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Lon"},"job_id":{"anyOf":[{"type":"string","maxLength":32},{"type":"null"}],"title":"Job Id"},"name":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Name"},"folder_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Folder Id"}},"type":"object","required":["lat","lon"],"title":"SavePlotRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}