[{"data":1,"prerenderedAt":864},["ShallowReactive",2],{"page-\u002Fformat\u002Fguides\u002Fbuilding-on-well":3,"navigation":487},{"collection":4,"page":5},"docs_en",{"id":6,"title":7,"body":8,"description":478,"extension":479,"meta":480,"navigation":481,"path":482,"rawbody":483,"seo":484,"stem":485,"__hash__":486},"docs_en\u002Fformat\u002F3.guides\u002F5.building-on-well.md","Building an editor or database on .well",{"type":9,"value":10,"toc":465},"minimark",[11,15,20,97,101,166,170,203,207,215,300,307,311,338,342,349,352,389,393,406,410,446,450],[12,13,14],"p",{},"This guide is for developers building a second editor, a well registry, a database import or a data pipeline on the format. It lists the decisions that are easy to get wrong and the spec rules that settle them.",[16,17,19],"h2",{"id":18},"reading","Reading",[21,22,23,58,73,83],"ul",{},[24,25,26,30,31,35,36,39,40,43,44,49,50,53,54,57],"li",{},[27,28,29],"strong",{},"Accept every version you can."," Read ",[32,33,34],"code",{},"1",", ",[32,37,38],{},"2"," and ",[32,41,42],{},"\"2.x\"","; upgrade v1 on read; reject malformed and unknown major versions with a clear message (",[45,46,48],"a",{"href":47},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#parser-version-handling","parser version handling","). ",[32,51,52],{},"parseWell"," in ",[32,55,56],{},"@welldot\u002Fcore"," does all of this.",[24,59,60,63,64,67,68,72],{},[27,61,62],{},"Do not assume order."," Events, samples and log entries may appear in any order. Sort by instant (as absolute UTC time) and use ",[32,65,66],{},"sequence"," to break ties (",[45,69,71],{"href":70},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#ordering-and-ties","ordering and ties",").",[24,74,75,78,79,72],{},[27,76,77],{},"Treat absent as unknown."," A missing static level is not zero; a missing status means the status is unknown (",[45,80,82],{"href":81},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#absent-values-since-v24","absent values",[24,84,85,88,89,92,93,72],{},[27,86,87],{},"Show unknown vocabulary values as they are."," Do not map ",[32,90,91],{},"x-jetting"," to \"other\" (",[45,94,96],{"href":95},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#recommended-vocabularies","recommended vocabularies",[16,98,100],{"id":99},"writing","Writing",[21,102,103,118,138,146,156],{},[24,104,105,108,109,112,113,117],{},[27,106,107],{},"Round-trip everything."," Preserve ",[32,110,111],{},"x-"," members and any member you do not know, at every level (",[45,114,116],{"href":115},"\u002Fformat\u002Fspec\u002Fv2\u002Foverview#design-principles","design principles",", \"Preserve unknown members\"). The safest pattern is to parse into an object, change the fields you edit, and serialize the same object.",[24,119,120,123,124,127,128,130,131,133,134,137],{},[27,121,122],{},"Write the current version."," New files are ",[32,125,126],{},"\"2.4\"",". Upgrading ",[32,129,38],{}," to ",[32,132,126],{}," is safe; ",[32,135,136],{},"serializeWell"," writes it.",[24,139,140,143,144,72],{},[27,141,142],{},"Omit, do not null."," Remove optional fields that have no value (",[45,145,82],{"href":81},[24,147,148,151,152,72],{},[27,149,150],{},"Store SI, display anything."," Convert to the user's units on screen and back on input. The file never changes unit (",[45,153,155],{"href":154},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#units","Units",[24,157,158,161,162,165],{},[27,159,160],{},"Store keys, not labels."," Write ",[32,163,164],{},"stainless_steel",", show \"Stainless steel\" or \"Aço inox\".",[16,167,169],{"id":168},"ids-and-references","Ids and references",[21,171,172,182,189,196],{},[24,173,174,175,72],{},"Ids are strings, unique per block; generate UUID v4 for new records (",[45,176,178,181],{"href":177},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#id-field-convention",[32,179,180],{},"id"," field convention",[24,183,184,185,72],{},"References resolve only within the same file (",[45,186,188],{"href":187},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#cross-array-references","cross-array references",[24,190,191,192,72],{},"A dangling reference is a warning; never delete it silently on import or export (",[45,193,195],{"href":194},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#dangling-references","dangling references",[24,197,198,199,72],{},"Duplicate ids are malformed. An interactive editor asks the user to merge, rename or abort; a batch importer rejects the file. Never rename automatically (",[45,200,202],{"href":201},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#duplicate-ids-within-a-scope","duplicate ids",[16,204,206],{"id":205},"editing-history-correctly","Editing history correctly",[12,208,209,210,214],{},"Each top-level list is one of three kinds, and the kind decides how a correction is recorded (",[45,211,213],{"href":212},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#block-kinds-since-v23","block kinds","):",[216,217,218,234],"table",{},[219,220,221],"thead",{},[222,223,224,228,231],"tr",{},[225,226,227],"th",{},"Kind",[225,229,230],{},"Blocks",[225,232,233],{},"How to correct",[235,236,237,261,284],"tbody",{},[222,238,239,243,254],{},[240,241,242],"td",{},"Ledger",[240,244,245,35,248,35,251],{},[32,246,247],{},"hydrodynamic_events",[32,249,250],{},"production",[32,252,253],{},"water_samples",[240,255,256,257,260],{},"Append a new entry with ",[32,258,259],{},"corrects",". Editing in place is allowed but not recommended after export.",[222,262,263,266,277],{},[240,264,265],{},"Mutable record",[240,267,268,35,271,35,274],{},[32,269,270],{},"history_logs",[32,272,273],{},"permits",[32,275,276],{},"operating_regime",[240,278,279,280,283],{},"Edit in place and update ",[32,281,282],{},"updated_at",".",[222,285,286,289,297],{},[240,287,288],{},"Installation",[240,290,291,35,294],{},[32,292,293],{},"pump_installations",[32,295,296],{},"meters",[240,298,299],{},"Edit in place; a reinstalled unit is a new entry with the same serial.",[12,301,302,303,306],{},"Construction and geology are edited in place. An ",[32,304,305],{},"aquifer_analysis"," is an interpretation: a new interpretation is a new entry, and earlier ones stay.",[16,308,310],{"id":309},"derived-values","Derived values",[12,312,313,314,316,317,323,324,39,328,332,333,337],{},"Never store what can be computed: drawdown, specific capacity from readings, production volumes, permit status, condition deadlines, exceedances (",[45,315,116],{"href":115},"). Compute them when you display or query. ",[45,318,320],{"href":319},"\u002Futils",[32,321,322],{},"@welldot\u002Futils"," implements the spec's derivations, including the normative ones for ",[45,325,327],{"href":326},"\u002Fformat\u002Fspec\u002Fv2\u002Fobject-schemas#volume-derivation-normative","volumes",[45,329,331],{"href":330},"\u002Fformat\u002Fspec\u002Fv2\u002Fobject-schemas#deadline-generation-normative","permit deadlines",", and ",[45,334,336],{"href":335},"\u002Fformat\u002Fspec\u002Fv2\u002Fobject-schemas#querying-current-state","Querying current state"," describes how to answer \"what is the well's status now\".",[16,339,341],{"id":340},"databases","Databases",[12,343,344,345,348],{},"A ",[32,346,347],{},".well"," file is a document, and the simplest durable storage is the document itself: a JSON column, a document store or files in object storage. Index what you query (identifiers, location, depth, status) in separate columns, derived from the document on write.",[12,350,351],{},"When you normalize into tables:",[21,353,354,370,376,382],{},[24,355,356,357,360,361,364,365,72],{},"Key a well by its ",[32,358,359],{},"well_id"," entries (authority plus id), not by ",[32,362,363],{},"name","; the pair is unique within a file (",[45,366,368],{"href":367},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#well_id",[32,369,359],{},[24,371,372,373,375],{},"Key child records by the well plus their ",[32,374,180],{},"; ids are only unique within one block of one file.",[24,377,378,379,381],{},"Keep the original document, or at least its ",[32,380,111],{}," members and unknown fields, so you can export a faithful file again.",[24,383,384,385,72],{},"Collective permits and campaign blanks are repeated in each well's file with the same id; you may merge them by id (",[45,386,388],{"href":387},"\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#repeated-records-since-v24","repeated records",[16,390,392],{"id":391},"sharing-and-privacy","Sharing and privacy",[12,394,395,396,53,399,401,402,72],{},"To publish a well without its owner data, permits or location, remove those parts rather than blanking them, so the result is still valid. ",[32,397,398],{},"redactWell",[32,400,56],{}," does this by section (",[45,403,405],{"href":404},"\u002Fcore\u002Fguides\u002Fserializing-and-sharing","Serializing and sharing",[16,407,409],{"id":408},"interoperability","Interoperability",[21,411,412,422,432],{},[24,413,414,415,417,418,72],{},"GroundWater ML 2 (GWML2) is the OGC standard for groundwater data; the spec maps ",[32,416,347],{}," objects to its classes (",[45,419,421],{"href":420},"\u002Fformat\u002Fspec\u002Fv2\u002Finteroperability#relationship-to-gwml2","relationship to GWML2",[24,423,424,427,428,72],{},[32,425,426],{},"@context"," is reserved for a JSON-LD context; it is optional and readers must accept it (",[45,429,431],{"href":430},"\u002Fformat\u002Fspec\u002Fv2\u002Finteroperability#json-ld-context-reserved","JSON-LD context",[24,433,434,435,438,439,441,442,72],{},"The MIME type is ",[32,436,437],{},"application\u002Fvnd.well+json"," and the extension ",[32,440,347],{}," (",[45,443,445],{"href":444},"\u002Fformat\u002Fspec\u002Fv2\u002Foverview","overview",[16,447,449],{"id":448},"testing-your-implementation","Testing your implementation",[12,451,452,453,457,458,39,461,464],{},"Run your reader and writer against all 19 ",[45,454,456],{"href":455},"\u002Fformat\u002Freference\u002Fexamples","example wells",": every one must parse, and writing it back must keep every member. Include the ",[45,459,460],{"href":455},"inconsistent data",[45,462,463],{"href":455},"incomplete record"," examples, which are valid on purpose.",{"title":466,"searchDepth":467,"depth":467,"links":468},"",2,[469,470,471,472,473,474,475,476,477],{"id":18,"depth":467,"text":19},{"id":99,"depth":467,"text":100},{"id":168,"depth":467,"text":169},{"id":205,"depth":467,"text":206},{"id":309,"depth":467,"text":310},{"id":340,"depth":467,"text":341},{"id":391,"depth":467,"text":392},{"id":408,"depth":467,"text":409},{"id":448,"depth":467,"text":449},"Design decisions for software that reads and writes .well files at scale, such as editors, registries, databases and data pipelines, with links to the rules behind each.","md",{},true,"\u002Fformat\u002Fguides\u002Fbuilding-on-well","---\ntitle: Building an editor or database on .well\ndescription: Design decisions for software that reads and writes .well files at scale, such as editors, registries, databases and data pipelines, with links to the rules behind each.\n---\n\nThis guide is for developers building a second editor, a well registry, a database import or a data pipeline on the format. It lists the decisions that are easy to get wrong and the spec rules that settle them.\n\n## Reading\n\n- **Accept every version you can.** Read `1`, `2` and `\"2.x\"`; upgrade v1 on read; reject malformed and unknown major versions with a clear message ([parser version handling](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#parser-version-handling)). `parseWell` in `@welldot\u002Fcore` does all of this.\n- **Do not assume order.** Events, samples and log entries may appear in any order. Sort by instant (as absolute UTC time) and use `sequence` to break ties ([ordering and ties](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#ordering-and-ties)).\n- **Treat absent as unknown.** A missing static level is not zero; a missing status means the status is unknown ([absent values](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#absent-values-since-v24)).\n- **Show unknown vocabulary values as they are.** Do not map `x-jetting` to \"other\" ([recommended vocabularies](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#recommended-vocabularies)).\n\n## Writing\n\n- **Round-trip everything.** Preserve `x-` members and any member you do not know, at every level ([design principles](\u002Fformat\u002Fspec\u002Fv2\u002Foverview#design-principles), \"Preserve unknown members\"). The safest pattern is to parse into an object, change the fields you edit, and serialize the same object.\n- **Write the current version.** New files are `\"2.4\"`. Upgrading `2` to `\"2.4\"` is safe; `serializeWell` writes it.\n- **Omit, do not null.** Remove optional fields that have no value ([absent values](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#absent-values-since-v24)).\n- **Store SI, display anything.** Convert to the user's units on screen and back on input. The file never changes unit ([Units](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#units)).\n- **Store keys, not labels.** Write `stainless_steel`, show \"Stainless steel\" or \"Aço inox\".\n\n## Ids and references\n\n- Ids are strings, unique per block; generate UUID v4 for new records ([`id` field convention](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#id-field-convention)).\n- References resolve only within the same file ([cross-array references](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#cross-array-references)).\n- A dangling reference is a warning; never delete it silently on import or export ([dangling references](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#dangling-references)).\n- Duplicate ids are malformed. An interactive editor asks the user to merge, rename or abort; a batch importer rejects the file. Never rename automatically ([duplicate ids](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#duplicate-ids-within-a-scope)).\n\n## Editing history correctly\n\nEach top-level list is one of three kinds, and the kind decides how a correction is recorded ([block kinds](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#block-kinds-since-v23)):\n\n| Kind           | Blocks                                               | How to correct                                                                                    |\n| -------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Ledger         | `hydrodynamic_events`, `production`, `water_samples` | Append a new entry with `corrects`. Editing in place is allowed but not recommended after export. |\n| Mutable record | `history_logs`, `permits`, `operating_regime`        | Edit in place and update `updated_at`.                                                            |\n| Installation   | `pump_installations`, `meters`                       | Edit in place; a reinstalled unit is a new entry with the same serial.                            |\n\nConstruction and geology are edited in place. An `aquifer_analysis` is an interpretation: a new interpretation is a new entry, and earlier ones stay.\n\n## Derived values\n\nNever store what can be computed: drawdown, specific capacity from readings, production volumes, permit status, condition deadlines, exceedances ([design principles](\u002Fformat\u002Fspec\u002Fv2\u002Foverview#design-principles)). Compute them when you display or query. [`@welldot\u002Futils`](\u002Futils) implements the spec's derivations, including the normative ones for [volumes](\u002Fformat\u002Fspec\u002Fv2\u002Fobject-schemas#volume-derivation-normative) and [permit deadlines](\u002Fformat\u002Fspec\u002Fv2\u002Fobject-schemas#deadline-generation-normative), and [Querying current state](\u002Fformat\u002Fspec\u002Fv2\u002Fobject-schemas#querying-current-state) describes how to answer \"what is the well's status now\".\n\n## Databases\n\nA `.well` file is a document, and the simplest durable storage is the document itself: a JSON column, a document store or files in object storage. Index what you query (identifiers, location, depth, status) in separate columns, derived from the document on write.\n\nWhen you normalize into tables:\n\n- Key a well by its `well_id` entries (authority plus id), not by `name`; the pair is unique within a file ([`well_id`](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#well_id)).\n- Key child records by the well plus their `id`; ids are only unique within one block of one file.\n- Keep the original document, or at least its `x-` members and unknown fields, so you can export a faithful file again.\n- Collective permits and campaign blanks are repeated in each well's file with the same id; you may merge them by id ([repeated records](\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference#repeated-records-since-v24)).\n\n## Sharing and privacy\n\nTo publish a well without its owner data, permits or location, remove those parts rather than blanking them, so the result is still valid. `redactWell` in `@welldot\u002Fcore` does this by section ([Serializing and sharing](\u002Fcore\u002Fguides\u002Fserializing-and-sharing)).\n\n## Interoperability\n\n- GroundWater ML 2 (GWML2) is the OGC standard for groundwater data; the spec maps `.well` objects to its classes ([relationship to GWML2](\u002Fformat\u002Fspec\u002Fv2\u002Finteroperability#relationship-to-gwml2)).\n- `@context` is reserved for a JSON-LD context; it is optional and readers must accept it ([JSON-LD context](\u002Fformat\u002Fspec\u002Fv2\u002Finteroperability#json-ld-context-reserved)).\n- The MIME type is `application\u002Fvnd.well+json` and the extension `.well` ([overview](\u002Fformat\u002Fspec\u002Fv2\u002Foverview)).\n\n## Testing your implementation\n\nRun your reader and writer against all 19 [example wells](\u002Fformat\u002Freference\u002Fexamples): every one must parse, and writing it back must keep every member. Include the [inconsistent data](\u002Fformat\u002Freference\u002Fexamples) and [incomplete record](\u002Fformat\u002Freference\u002Fexamples) examples, which are valid on purpose.\n",{"title":7,"description":478},"format\u002F3.guides\u002F5.building-on-well","2_i_dFzxtn_fHIOf1bnLKS2UdjPo_e2zcvOrj852l3A",{"docs_en":488,"spec":798,"changelogs":847},[489,509,528,581,687,741],{"title":490,"path":491,"stem":492,"children":493},"Ai","\u002Fai","ai",[494,497,501,505],{"title":495,"path":491,"stem":496},"Introduction","ai\u002Findex",{"title":498,"path":499,"stem":500},"Converting reports with an assistant","\u002Fai\u002Fconversion-skill","ai\u002Fconversion-skill",{"title":502,"path":503,"stem":504},"llms.txt and Markdown pages","\u002Fai\u002Fllms","ai\u002Fllms",{"title":506,"path":507,"stem":508},"MCP server","\u002Fai\u002Fmcp","ai\u002Fmcp",{"title":510,"path":511,"stem":512,"children":513},"Contributing","\u002Fcontributing","contributing",[514,516,520,524],{"title":495,"path":511,"stem":515},"contributing\u002Findex",{"title":517,"path":518,"stem":519},"Writing docs","\u002Fcontributing\u002Fwriting-docs","contributing\u002F1.writing-docs",{"title":521,"path":522,"stem":523},"Update rules","\u002Fcontributing\u002Fupdate-rules","contributing\u002F2.update-rules",{"title":525,"path":526,"stem":527},"Content components","\u002Fcontributing\u002Fcomponents","contributing\u002Fcomponents",{"title":529,"path":530,"stem":531,"children":532},"Core","\u002Fcore","core",[533,535,548,575],{"title":495,"path":530,"stem":534},"core\u002Findex",{"title":536,"path":537,"stem":538,"children":539,"page":547},"Getting Started","\u002Fcore\u002Fgetting-started","core\u002F1.getting-started",[540,543],{"title":288,"path":541,"stem":542},"\u002Fcore\u002Fgetting-started\u002Finstallation","core\u002F1.getting-started\u002F1.installation",{"title":544,"path":545,"stem":546},"First use","\u002Fcore\u002Fgetting-started\u002Ffirst-use","core\u002F1.getting-started\u002F2.first-use",false,{"title":549,"path":550,"stem":551,"children":552,"page":547},"Guides","\u002Fcore\u002Fguides","core\u002F2.guides",[553,557,559,563,567,571],{"title":554,"path":555,"stem":556},"Parsing and validating","\u002Fcore\u002Fguides\u002Fparsing-and-validating","core\u002F2.guides\u002F1.parsing-and-validating",{"title":405,"path":404,"stem":558},"core\u002F2.guides\u002F2.serializing-and-sharing",{"title":560,"path":561,"stem":562},"Unit conversion","\u002Fcore\u002Fguides\u002Funit-conversion","core\u002F2.guides\u002F3.unit-conversion",{"title":564,"path":565,"stem":566},"Vocabularies and textures","\u002Fcore\u002Fguides\u002Fvocabularies-and-textures","core\u002F2.guides\u002F4.vocabularies-and-textures",{"title":568,"path":569,"stem":570},"Water quality vocabulary","\u002Fcore\u002Fguides\u002Fwater-quality-vocabulary","core\u002F2.guides\u002F5.water-quality-vocabulary",{"title":572,"path":573,"stem":574},"Versions and time zones","\u002Fcore\u002Fguides\u002Fversions-and-time-zones","core\u002F2.guides\u002F6.versions-and-time-zones",{"title":576,"path":577,"stem":578,"children":579},"API reference","\u002Fcore\u002Fapi","core\u002Fapi\u002Findex",[580],{"title":576,"path":577,"stem":578},{"title":582,"path":583,"stem":584,"children":585},"Format","\u002Fformat","format",[586,588,608,637,658,677,683],{"title":495,"path":583,"stem":587},"format\u002Findex",{"title":536,"path":589,"stem":590,"children":591,"page":547},"\u002Fformat\u002Fgetting-started","format\u002F1.getting-started",[592,596,600,604],{"title":593,"path":594,"stem":595},"What is .well?","\u002Fformat\u002Fgetting-started\u002Fwhat-is-well","format\u002F1.getting-started\u002F1.what-is-well",{"title":597,"path":598,"stem":599},"For geologists","\u002Fformat\u002Fgetting-started\u002Ffor-geologists","format\u002F1.getting-started\u002F2.for-geologists",{"title":601,"path":602,"stem":603},"For developers","\u002Fformat\u002Fgetting-started\u002Ffor-developers","format\u002F1.getting-started\u002F3.for-developers",{"title":605,"path":606,"stem":607},"Your first .well file","\u002Fformat\u002Fgetting-started\u002Ffirst-well-file","format\u002F1.getting-started\u002F4.first-well-file",{"title":609,"path":610,"stem":611,"children":612,"page":547},"Concepts","\u002Fformat\u002Fconcepts","format\u002F2.concepts",[613,617,621,625,629,633],{"title":614,"path":615,"stem":616},"Depths and intervals","\u002Fformat\u002Fconcepts\u002Fdepths-and-intervals","format\u002F2.concepts\u002F1.depths-and-intervals",{"title":618,"path":619,"stem":620},"Units and precision","\u002Fformat\u002Fconcepts\u002Funits-and-precision","format\u002F2.concepts\u002F2.units-and-precision",{"title":622,"path":623,"stem":624},"Vocabularies","\u002Fformat\u002Fconcepts\u002Fvocabularies","format\u002F2.concepts\u002F3.vocabularies",{"title":626,"path":627,"stem":628},"Profiles","\u002Fformat\u002Fconcepts\u002Fprofiles","format\u002F2.concepts\u002F4.profiles",{"title":630,"path":631,"stem":632},"Versions and deprecation","\u002Fformat\u002Fconcepts\u002Fversions-and-deprecation","format\u002F2.concepts\u002F5.versions-and-deprecation",{"title":634,"path":635,"stem":636},"Extensibility","\u002Fformat\u002Fconcepts\u002Fextensibility","format\u002F2.concepts\u002F6.extensibility",{"title":549,"path":638,"stem":639,"children":640,"page":547},"\u002Fformat\u002Fguides","format\u002F3.guides",[641,645,649,653,657],{"title":642,"path":643,"stem":644},"Writing a .well by hand","\u002Fformat\u002Fguides\u002Fwriting-by-hand","format\u002F3.guides\u002F1.writing-by-hand",{"title":646,"path":647,"stem":648},"Converting a report","\u002Fformat\u002Fguides\u002Fconverting-a-report","format\u002F3.guides\u002F2.converting-a-report",{"title":650,"path":651,"stem":652},"Validating","\u002Fformat\u002Fguides\u002Fvalidating","format\u002F3.guides\u002F3.validating",{"title":654,"path":655,"stem":656},"Extending for your own needs","\u002Fformat\u002Fguides\u002Fextending","format\u002F3.guides\u002F4.extending",{"title":7,"path":482,"stem":485},{"title":659,"path":660,"stem":661,"children":662},"Overview","\u002Fformat\u002Freference","format\u002F4.reference\u002Findex",[663,664,668,671],{"title":659,"path":660,"stem":661},{"title":665,"path":666,"stem":667},"JSON Schema","\u002Fformat\u002Freference\u002Fjson-schema","format\u002F4.reference\u002F1.json-schema",{"title":669,"path":455,"stem":670},"Example wells","format\u002F4.reference\u002F2.examples",{"title":672,"path":673,"stem":674,"children":675},"Object reference","\u002Fformat\u002Freference\u002Fobjects","format\u002Freference\u002Fobjects\u002Findex",[676],{"title":672,"path":673,"stem":674},{"title":678,"path":679,"stem":680,"children":681},"About the spec","\u002Fformat\u002Fspec","format\u002F5.spec\u002Findex",[682],{"title":678,"path":679,"stem":680},{"title":684,"path":685,"stem":686},"Changelog","\u002Fformat\u002Fchangelog","format\u002F6.changelog",{"title":688,"path":689,"stem":690,"children":691},"Render","\u002Frender","render",[692,694,704,736],{"title":495,"path":689,"stem":693},"render\u002Findex",{"title":536,"path":695,"stem":696,"children":697,"page":547},"\u002Frender\u002Fgetting-started","render\u002F1.getting-started",[698,701],{"title":288,"path":699,"stem":700},"\u002Frender\u002Fgetting-started\u002Finstallation","render\u002F1.getting-started\u002F1.installation",{"title":544,"path":702,"stem":703},"\u002Frender\u002Fgetting-started\u002Ffirst-use","render\u002F1.getting-started\u002F2.first-use",{"title":549,"path":705,"stem":706,"children":707,"page":547},"\u002Frender\u002Fguides","render\u002F2.guides",[708,712,716,720,724,728,732],{"title":709,"path":710,"stem":711},"Panels and layout","\u002Frender\u002Fguides\u002Fpanels-and-layout","render\u002F2.guides\u002F1.panels-and-layout",{"title":713,"path":714,"stem":715},"Layers and labels","\u002Frender\u002Fguides\u002Flayers-and-labels","render\u002F2.guides\u002F2.layers-and-labels",{"title":717,"path":718,"stem":719},"Theming","\u002Frender\u002Fguides\u002Ftheming","render\u002F2.guides\u002F3.theming",{"title":721,"path":722,"stem":723},"Locale and units","\u002Frender\u002Fguides\u002Flocale-and-units","render\u002F2.guides\u002F4.locale-and-units",{"title":725,"path":726,"stem":727},"Legends","\u002Frender\u002Fguides\u002Flegends","render\u002F2.guides\u002F5.legends",{"title":729,"path":730,"stem":731},"Zoom, pan and highlights","\u002Frender\u002Fguides\u002Finteraction","render\u002F2.guides\u002F6.interaction",{"title":733,"path":734,"stem":735},"Using it in a framework","\u002Frender\u002Fguides\u002Fframeworks","render\u002F2.guides\u002F7.frameworks",{"title":576,"path":737,"stem":738,"children":739},"\u002Frender\u002Fapi","render\u002Fapi\u002Findex",[740],{"title":576,"path":737,"stem":738},{"title":742,"path":319,"stem":743,"children":744},"Utils","utils",[745,747,757,793],{"title":495,"path":319,"stem":746},"utils\u002Findex",{"title":536,"path":748,"stem":749,"children":750,"page":547},"\u002Futils\u002Fgetting-started","utils\u002F1.getting-started",[751,754],{"title":288,"path":752,"stem":753},"\u002Futils\u002Fgetting-started\u002Finstallation","utils\u002F1.getting-started\u002F1.installation",{"title":544,"path":755,"stem":756},"\u002Futils\u002Fgetting-started\u002Ffirst-use","utils\u002F1.getting-started\u002F2.first-use",{"title":549,"path":758,"stem":759,"children":760,"page":547},"\u002Futils\u002Fguides","utils\u002F2.guides",[761,765,769,773,777,781,785,789],{"title":762,"path":763,"stem":764},"Geometry and volumes","\u002Futils\u002Fguides\u002Fgeometry-and-volumes","utils\u002F2.guides\u002F1.geometry-and-volumes",{"title":766,"path":767,"stem":768},"Water levels and pumping tests","\u002Futils\u002Fguides\u002Fpumping-tests","utils\u002F2.guides\u002F2.pumping-tests",{"title":770,"path":771,"stem":772},"Permits","\u002Futils\u002Fguides\u002Fpermits","utils\u002F2.guides\u002F3.permits",{"title":774,"path":775,"stem":776},"Operation and production","\u002Futils\u002Fguides\u002Foperation","utils\u002F2.guides\u002F4.operation",{"title":778,"path":779,"stem":780},"Water quality","\u002Futils\u002Fguides\u002Fwater-quality","utils\u002F2.guides\u002F5.water-quality",{"title":782,"path":783,"stem":784},"Logger import","\u002Futils\u002Fguides\u002Flogger-import","utils\u002F2.guides\u002F6.logger-import",{"title":786,"path":787,"stem":788},"SIAGAS import","\u002Futils\u002Fguides\u002Fsiagas-import","utils\u002F2.guides\u002F7.siagas-import",{"title":790,"path":791,"stem":792},"Formatting","\u002Futils\u002Fguides\u002Fformatting","utils\u002F2.guides\u002F8.formatting",{"title":576,"path":794,"stem":795,"children":796},"\u002Futils\u002Fapi","utils\u002Fapi\u002Findex",[797],{"title":576,"path":794,"stem":795},[799],{"title":582,"path":583,"stem":584,"children":800,"page":547},[801],{"title":802,"path":679,"stem":803,"children":804,"page":547},"Spec","format\u002Fspec",[805,814,823],{"title":806,"path":807,"stem":808,"children":809,"page":547},"Reference","\u002Fformat\u002Fspec\u002Freference","format\u002Fspec\u002Freference",[810],{"title":811,"path":812,"stem":813},"FGDC Texture Patterns Reference","\u002Fformat\u002Fspec\u002Freference\u002Ffgdc-textures","format\u002Fspec\u002Freference\u002Ffgdc-textures",{"title":815,"path":816,"stem":817,"children":818,"page":547},"V1","\u002Fformat\u002Fspec\u002Fv1","format\u002Fspec\u002Fv1",[819],{"title":820,"path":821,"stem":822},".well File Format Specification","\u002Fformat\u002Fspec\u002Fv1\u002Fwell-format","format\u002Fspec\u002Fv1\u002Fwell-format",{"title":824,"path":825,"stem":826,"children":827,"page":547},"V2","\u002Fformat\u002Fspec\u002Fv2","format\u002Fspec\u002Fv2",[828,832,836,840,843],{"title":829,"path":830,"stem":831},".well File Format Specification — Version 2.4: Format Reference","\u002Fformat\u002Fspec\u002Fv2\u002Fformat-reference","format\u002Fspec\u002Fv2\u002Fformat-reference",{"title":833,"path":834,"stem":835},".well File Format Specification — Version 2.4: Interoperability","\u002Fformat\u002Fspec\u002Fv2\u002Finteroperability","format\u002Fspec\u002Fv2\u002Finteroperability",{"title":837,"path":838,"stem":839},".well File Format Specification — Version 2.4: Object Schemas","\u002Fformat\u002Fspec\u002Fv2\u002Fobject-schemas","format\u002Fspec\u002Fv2\u002Fobject-schemas",{"title":841,"path":444,"stem":842},".well File Format Specification — Version 2.4: Overview","format\u002Fspec\u002Fv2\u002Foverview",{"title":844,"path":845,"stem":846},".well File Format Specification — Version 2.4: Water Quality","\u002Fformat\u002Fspec\u002Fv2\u002Fwater-quality","format\u002Fspec\u002Fv2\u002Fwater-quality",[848,853,859],{"title":529,"path":530,"stem":531,"children":849,"page":547},[850],{"title":56,"path":851,"stem":852},"\u002Fcore\u002Fchangelog","core\u002FCHANGELOG",{"title":688,"path":689,"stem":690,"children":854,"page":547},[855],{"title":856,"path":857,"stem":858},"@welldot\u002Frender","\u002Frender\u002Fchangelog","render\u002FCHANGELOG",{"title":742,"path":319,"stem":743,"children":860,"page":547},[861],{"title":322,"path":862,"stem":863},"\u002Futils\u002Fchangelog","utils\u002FCHANGELOG",1793050496006]