diff --git a/.github/workflows/CI_cypress.yml b/.github/workflows/CI_cypress.yml
index b212611b..f775b596 100644
--- a/.github/workflows/CI_cypress.yml
+++ b/.github/workflows/CI_cypress.yml
@@ -4,37 +4,31 @@ on:
pull_request:
jobs:
- install:
+ integration-tests:
runs-on: ubuntu-24.04
- steps:
- - name: Checkout
- uses: actions/checkout@v4
-
- - name: Cypress install
- uses: cypress-io/github-action@v6
- with:
- # Disable running of tests within install job
- runTests: false
- build: npm run build
- env:
- VITE_BASE_URL: http://localhost:4173
- VITE_OCOTILLO_API_URL: http://127.0.0.1:4010
- - name: Save build folder
- uses: actions/upload-artifact@v4
- with:
- name: build
- if-no-files-found: error
- path: dist
+ env:
+ NODE_ENV: test
+ OCOTILLO_API_URL: http://localhost:8000
+ VITE_OCOTILLO_API_URL: http://localhost:8000
+ POSTGRES_USER: ${{ secrets.PG_TEST_USER }}
+ POSTGRES_PASSWORD: ${{ secrets.PG_TEST_PW }}
+ POSTGRES_DB: ${{ secrets.PG_TEST_DB }}
+ MODE: development
+ AUTHENTIK_DISABLE_AUTHENTICATION: ${{ secrets.AUTHENTIK_TEST }}
- cypress-run:
- runs-on: ubuntu-24.04
- needs: install
steps:
- - name: Checkout
+ - name: Checkout frontend
uses: actions/checkout@v4
- - name: Setup Node.js
+ - name: Checkout FastAPI backend (NMSampleLocations staging)
+ uses: actions/checkout@v4
+ with:
+ repository: DataIntegrationGroup/NMSampleLocations
+ ref: staging
+ path: api-repo
+
+ - name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '22.x'
@@ -43,21 +37,41 @@ jobs:
- name: Install dependencies
run: npm ci
- - name: Download the build folder
- uses: actions/download-artifact@v4
- with:
- name: build
- path: dist
-
- - name: Start mock server
+ - name: Start FastAPI backend (Docker Compose)
+ working-directory: ./api-repo
+ env:
+ INSTALL_DEV: true
run: |
- # Start mock server in background
- npm run mock:server:cypress &
- # Wait for server to start
- sleep 10
-
- - name: Cypress run
+ docker compose build --build-arg INSTALL_DEV=$INSTALL_DEV app
+ docker compose up -d
+ echo "Waiting for FastAPI to be ready..."
+ timeout 180 bash -c 'until curl -f http://localhost:8000/docs; do sleep 3; done'
+ echo "FastAPI is up and healthy"
+
+ - name: Seed database
+ working-directory: ./api-repo
+ run: docker compose exec -T app python -m transfers.seed
+
+ - name: Build frontend
+ run: npm run build
+ env:
+ VITE_BASE_URL: http://localhost:4173
+ VITE_OCOTILLO_API_URL: http://localhost:8000
+
+ - name: Run Cypress e2e tests
uses: cypress-io/github-action@v6
with:
start: npm start
- browser: chrome
\ No newline at end of file
+ browser: chrome
+ spec: |
+ cypress/e2e/test-api-connectivity.cy.ts
+ cypress/e2e/ocotillo/**/*.cy.ts
+ env:
+ DEBUG: cypress:network:*,cypress:server:request
+ VITE_OCOTILLO_API_URL: http://localhost:8000
+
+ - name: Stop API containers
+ if: always()
+ working-directory: ./api-repo
+ run: docker compose down
+
diff --git a/cypress.config.ts b/cypress.config.ts
index 4cac7711..3b4c5aee 100644
--- a/cypress.config.ts
+++ b/cypress.config.ts
@@ -9,7 +9,9 @@ export default defineConfig({
},
e2e: {
- baseUrl: 'http://localhost:4173',
+ baseUrl: process.env.CI
+ ? "http://localhost:4173"
+ : "http://localhost:5173",
setupNodeEvents(on, config) {
process.env.NODE_ENV = 'test'
},
diff --git a/cypress/e2e/ocotillo/location_create.cy.ts b/cypress/e2e/ocotillo/location_create.cy.ts
index 696e34e3..6a57d8d3 100644
--- a/cypress/e2e/ocotillo/location_create.cy.ts
+++ b/cypress/e2e/ocotillo/location_create.cy.ts
@@ -1,130 +1,231 @@
///
-import { zCreateLocation } from '../../../src/generated/zod.gen';
+import { zCreateLocation } from '../../../src/generated/zod.gen'
describe('Location Create Page', () => {
beforeEach(() => {
// Interceptor for the create location api call
cy.intercept('POST', '**/location**', (req) => {
- const validationResult = zCreateLocation.safeParse(req.body);
+ const validationResult = zCreateLocation.safeParse(req.body)
if (!validationResult.success) {
- console.error('Validation failed:', validationResult.error);
- throw new Error(`Invalid payload: ${JSON.stringify(validationResult.error.issues)}`);
+ console.error('Validation failed:', validationResult.error)
+ throw new Error(
+ `Invalid payload: ${JSON.stringify(validationResult.error.issues)}`
+ )
}
// Create location response
req.reply({
statusCode: 201,
- body: { id: 1, ...validationResult.data }
- });
- }).as('createLocation');
+ body: { id: 1, ...validationResult.data },
+ })
+ }).as('createLocation')
- cy.login();
- cy.visit('/ocotillo/location/create');
- });
+ cy.login()
+ cy.visit('/ocotillo/location/create')
+ })
it('should render all required UI elements', () => {
- cy.contains(/create location/i).should('exist');
-
+ cy.contains(/create location/i).should('exist')
+
// Check coordinate system toggle
- cy.contains('label', 'Toggle between using Northing/Easting or Latitude/Longitude').should('exist');
-
+ cy.contains(
+ 'label',
+ 'Toggle between using Northing/Easting or Latitude/Longitude'
+ ).should('exist')
+
// Check coordinate input fields
- cy.contains('label', 'Latitude (decimal degrees)').should('exist');
- cy.contains('label', 'Longitude (decimal degrees)').should('exist');
- cy.contains('label', 'Coordinate Accuracy (ft)').should('exist');
- cy.contains('label', 'Coordinate Method').should('exist');
-
+ cy.contains('label', 'Latitude (decimal degrees)').should('exist')
+ cy.contains('label', 'Longitude (decimal degrees)').should('exist')
+ cy.contains('label', 'Coordinate Accuracy (ft)').should('exist')
+ cy.contains('label', 'Coordinate Method').should('exist')
+
// Check elevation fields
- cy.contains('label', 'Auto-generate elevation from USGS DEM').should('exist');
- cy.contains('label', 'Elevation (ft)').should('exist');
- cy.contains('label', 'Elevation Accuracy (ft)').should('exist');
- cy.contains('label', 'Elevation Method').should('exist');
-
+ cy.contains('label', 'Auto-generate elevation from USGS DEM')
+ .parent()
+ .find('input[type="checkbox"]')
+ .click()
+
+ cy.contains('label', 'Elevation (ft)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('5000')
+ cy.contains('label', 'Elevation Accuracy (ft)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('1.5')
+ cy.contains('label', 'Elevation Method').should('exist')
+
// Check other fields
- cy.contains('label', 'Release Status').should('exist');
- cy.contains('label', 'Notes').should('exist');
- cy.contains('label', 'WKT Point (Auto-generated)').should('exist');
-
+ cy.contains('label', 'Release Status').should('exist')
+ cy.contains('label', 'Notes').should('exist')
+ cy.contains('label', 'WKT Point (Auto-generated)').should('exist')
+
// Come back to testing the map
-
- cy.get('button').contains(/save/i).should('exist');
- });
+
+ cy.get('button').contains(/save/i).should('exist')
+ })
it('should allow user to fill out only required fields and submit location', () => {
-
- cy.contains('label', 'Latitude (decimal degrees)').parent().find('input').type('34.068279');
- cy.contains('label', 'Longitude (decimal degrees)').parent().find('input').type('-106.904192');
+ cy.contains('label', 'Latitude (decimal degrees)')
+ .parent()
+ .find('input')
+ .type('34.068279')
+ cy.contains('label', 'Longitude (decimal degrees)')
+ .parent()
+ .find('input')
+ .type('-106.904192')
+
+ // Turn off auto-generate elevation to manually set elevation
+ cy.contains('label', 'Auto-generate elevation from USGS DEM')
+ .parent()
+ .find('input[type="checkbox"]')
+ .click()
+ cy.contains('label', 'Elevation (ft)').parent().find('input').type('5000')
+ cy.contains('label', 'Elevation Accuracy (ft)')
+ .parent()
+ .find('input')
+ .type('1.74')
- cy.wait(3000); // wait for elevation DEM to load
+ cy.wait(3000) // wait for elevation DEM to load
- cy.get('button').contains(/save/i).click();
+ cy.get('button').contains(/save/i).click()
// intercept
cy.wait('@createLocation').then((interception) => {
- expect(interception.response?.statusCode).to.eq(201);
- });
+ expect(interception.response?.statusCode).to.eq(201)
+ })
- cy.contains(/success|created|saved|submitted successfully/i, { timeout: 10000 }).should('exist');
- });
+ cy.contains(/success|created|saved|submitted successfully/i, {
+ timeout: 10000,
+ }).should('exist')
+ })
it('should allow user to fill out all fields and submit location', () => {
-
- cy.contains('label', 'Latitude (decimal degrees)').parent().find('input').type('34.068279');
- cy.contains('label', 'Longitude (decimal degrees)').parent().find('input').type('-106.904192');
-
+ cy.contains('label', 'Latitude (decimal degrees)')
+ .parent()
+ .find('input')
+ .type('34.068279')
+ cy.contains('label', 'Longitude (decimal degrees)')
+ .parent()
+ .find('input')
+ .type('-106.904192')
+
// coordinate fields
- cy.contains('label', 'Coordinate Accuracy (ft)').parent().find('input').type('10');
- cy.contains('label', 'Coordinate Method').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
+ cy.contains('label', 'Coordinate Accuracy (ft)')
+ .parent()
+ .find('input')
+ .type('10')
+ cy.contains('label', 'Coordinate Method')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
// Turn off auto-generate elevation to manually set elevation
- cy.contains('label', 'Auto-generate elevation from USGS DEM').parent().find('input[type="checkbox"]').click();
- cy.contains('label', 'Elevation (ft)').parent().find('input').type('5000');
- cy.contains('label', 'Elevation Accuracy (ft)').parent().find('input').type('1.74');
- cy.contains('label', 'Elevation Method').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
- cy.contains('label', 'Release Status').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
+ cy.contains('label', 'Auto-generate elevation from USGS DEM')
+ .parent()
+ .find('input[type="checkbox"]')
+ .click()
+ cy.contains('label', 'Elevation (ft)').parent().find('input').type('5000')
+ cy.contains('label', 'Elevation Accuracy (ft)')
+ .parent()
+ .find('input')
+ .type('1.74')
+ cy.contains('label', 'Elevation Method')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
+ cy.contains('label', 'Release Status')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
// notes field
- cy.contains('label', 'Notes').parent().find('textarea').first().type('Test location for automated testing');
+ cy.contains('label', 'Notes')
+ .parent()
+ .find('textarea')
+ .first()
+ .type('Test location for automated testing')
- cy.get('button').contains(/save/i).click();
+ cy.get('button').contains(/save/i).click()
// intercept
cy.wait('@createLocation').then((interception) => {
- expect(interception.response?.statusCode).to.eq(201);
- });
+ expect(interception.response?.statusCode).to.eq(201)
+ })
- cy.contains(/success|created|saved|submitted successfully/i, { timeout: 10000 }).should('exist');
- });
+ cy.contains(/success|created|saved|submitted successfully/i, {
+ timeout: 10000,
+ }).should('exist')
+ })
it('should allow user to use UTM coordinates instead of lat/long', () => {
// toggle to UTM mode
- cy.contains('label', 'Toggle between using Northing/Easting or Latitude/Longitude').parent().find('input[type="checkbox"]').click();
-
+ cy.contains(
+ 'label',
+ 'Toggle between using Northing/Easting or Latitude/Longitude'
+ )
+ .parent()
+ .find('input[type="checkbox"]')
+ .click()
+
+ // Turn off auto-generate elevation to manually set elevation
+ cy.contains('label', 'Auto-generate elevation from USGS DEM')
+ .parent()
+ .find('input[type="checkbox"]')
+ .click()
+ cy.contains('label', 'Elevation (ft)').parent().find('input').type('5000')
+ cy.contains('label', 'Elevation Accuracy (ft)')
+ .parent()
+ .find('input')
+ .type('1.74')
+
// keep utm zone default for now
- cy.contains('label', 'Easting (UTM X)').parent().find('input').type('350000');
- cy.contains('label', 'Northing (UTM Y)').parent().find('input').type('3870000');
-
- cy.contains('label', 'Coordinate Accuracy (ft)').parent().find('input').type('10');
- cy.contains('label', 'Coordinate Method').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
- cy.contains('label', 'Elevation Method').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
- cy.contains('label', 'Release Status').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
- cy.get('button').contains(/save/i).click();
+ cy.contains('label', 'Easting (UTM X)')
+ .parent()
+ .find('input')
+ .type('350000')
+ cy.contains('label', 'Northing (UTM Y)')
+ .parent()
+ .find('input')
+ .type('3870000')
+
+ cy.contains('label', 'Coordinate Accuracy (ft)')
+ .parent()
+ .find('input')
+ .type('10')
+ cy.contains('label', 'Coordinate Method')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
+ cy.contains('label', 'Elevation Method')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
+ cy.contains('label', 'Release Status')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
+ cy.get('button').contains(/save/i).click()
// intercept
cy.wait('@createLocation').then((interception) => {
- expect(interception.response?.statusCode).to.eq(201);
- });
-
- cy.contains(/success|created|saved|submitted successfully/i, { timeout: 10000 }).should('exist');
- });
-});
\ No newline at end of file
+ expect(interception.response?.statusCode).to.eq(201)
+ })
+
+ cy.contains(/success|created|saved|submitted successfully/i, {
+ timeout: 10000,
+ }).should('exist')
+ })
+})
diff --git a/cypress/e2e/ocotillo/location_edit.cy.ts b/cypress/e2e/ocotillo/location_edit.cy.ts
index 01bfee87..15022629 100644
--- a/cypress/e2e/ocotillo/location_edit.cy.ts
+++ b/cypress/e2e/ocotillo/location_edit.cy.ts
@@ -1,152 +1,287 @@
///
-import { zUpdateLocation } from '../../../src/generated/zod.gen';
+import { zUpdateLocation } from '../../../src/generated/zod.gen'
describe('Location Edit Page', () => {
beforeEach(() => {
-
cy.fixture('location.json').then((locationData) => {
- cy.intercept('GET', '**/location/1**', {
- statusCode: 200,
- body: locationData
- }).as('getLocation');
- });
+ cy.intercept('GET', '**/location/1**', {
+ statusCode: 200,
+ body: locationData,
+ }).as('getLocation')
+ })
// Interceptor for the update location api call
cy.intercept('PATCH', '**/location/1**', (req) => {
- const validationResult = zUpdateLocation.safeParse(req.body);
+ const validationResult = zUpdateLocation.safeParse(req.body)
if (!validationResult.success) {
- console.error('Validation failed:', validationResult.error);
- throw new Error(`Invalid payload: ${JSON.stringify(validationResult.error.issues)}`);
+ console.error('Validation failed:', validationResult.error)
+ throw new Error(
+ `Invalid payload: ${JSON.stringify(validationResult.error.issues)}`
+ )
}
// Update location response
req.reply({
statusCode: 200,
- body: { id: 1, ...validationResult.data }
- });
- }).as('updateLocation');
+ body: { id: 1, ...validationResult.data },
+ })
+ }).as('updateLocation')
- cy.login();
- cy.visit('/ocotillo/location/edit/1');
- });
+ cy.login()
+ cy.visit('/ocotillo/location/edit/1')
+ })
it('should render all required UI elements', () => {
- cy.contains(/edit location/i).should('exist');
-
+ cy.contains(/edit location/i).should('exist')
+
// Check coordinate system toggle
- cy.contains('label', 'Toggle between using Northing/Easting or Latitude/Longitude').should('exist');
-
+ cy.contains(
+ 'label',
+ 'Toggle between using Northing/Easting or Latitude/Longitude'
+ ).should('exist')
+
// Check coordinate input fields
- cy.contains('label', 'Latitude (decimal degrees)').should('exist');
- cy.contains('label', 'Longitude (decimal degrees)').should('exist');
- cy.contains('label', 'Coordinate Accuracy (ft)').should('exist');
- cy.contains('label', 'Coordinate Method').should('exist');
-
+ cy.contains('label', 'Latitude (decimal degrees)').should('exist')
+ cy.contains('label', 'Longitude (decimal degrees)').should('exist')
+ cy.contains('label', 'Coordinate Accuracy (ft)').should('exist')
+ cy.contains('label', 'Coordinate Method').should('exist')
+
// Check elevation fields
- cy.contains('label', 'Auto-generate elevation from USGS DEM').should('exist');
- cy.contains('label', 'Elevation (ft)').should('exist');
- cy.contains('label', 'Elevation Accuracy (ft)').should('exist');
- cy.contains('label', 'Elevation Method').should('exist');
-
+ cy.contains('label', 'Auto-generate elevation from USGS DEM').should(
+ 'exist'
+ )
+ cy.contains('label', 'Elevation (ft)').should('exist')
+ cy.contains('label', 'Elevation Accuracy (ft)').should('exist')
+ cy.contains('label', 'Elevation Method').should('exist')
+
// Check other fields
- cy.contains('label', 'Release Status').should('exist');
- cy.contains('label', 'Notes').should('exist');
- cy.contains('label', 'WKT Point (Auto-generated)').should('exist');
-
- cy.get('button').contains(/save/i).should('exist');
- });
+ cy.contains('label', 'Release Status').should('exist')
+ cy.contains('label', 'Notes').should('exist')
+ cy.contains('label', 'WKT Point (Auto-generated)').should('exist')
+
+ cy.get('button').contains(/save/i).should('exist')
+ })
it('should load existing location data', () => {
// Check that existing data is loaded
- cy.contains('label', 'Latitude (decimal degrees)').parent().find('input').should('have.value', '34.068279');
- cy.contains('label', 'Longitude (decimal degrees)').parent().find('input').should('have.value', '-106.904192');
- cy.contains('label', 'Elevation (ft)').parent().find('input').should('have.value', '5000');
- cy.contains('label', 'Elevation Accuracy (ft)').parent().find('input').should('have.value', '1.74');
- cy.contains('label', 'Notes').parent().find('textarea').first().should('have.value', 'Existing test location');
- });
+ cy.contains('label', 'Latitude (decimal degrees)')
+ .parent()
+ .find('input')
+ .should('have.value', '34.068279')
+ cy.contains('label', 'Longitude (decimal degrees)')
+ .parent()
+ .find('input')
+ .should('have.value', '-106.904192')
+ cy.contains('label', 'Elevation (ft)')
+ .parent()
+ .find('input')
+ .should('have.value', '5000')
+ cy.contains('label', 'Elevation Accuracy (ft)')
+ .parent()
+ .find('input')
+ .should('have.value', '1.74')
+ cy.contains('label', 'Notes')
+ .parent()
+ .find('textarea')
+ .first()
+ .should('have.value', 'Existing test location')
+ })
it('should allow user to update only required fields and submit location', () => {
- cy.wait('@getLocation');
+ cy.wait('@getLocation')
// Clear and update coordinates
- cy.contains('label', 'Latitude (decimal degrees)').parent().find('input').clear().type('34.100000');
- cy.contains('label', 'Longitude (decimal degrees)').parent().find('input').clear().type('-106.900000');
+ cy.contains('label', 'Latitude (decimal degrees)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('34.100000')
+ cy.contains('label', 'Longitude (decimal degrees)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('-106.900000')
+
+ cy.contains('label', 'Coordinate Method')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
+ // Turn off auto-generate elevation to manually set elevation
+ cy.contains('label', 'Auto-generate elevation from USGS DEM')
+ .parent()
+ .find('input[type="checkbox"]')
+ .click()
+ cy.contains('label', 'Elevation (ft)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('5100')
+
+ cy.contains('label', 'Elevation Accuracy (ft)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('2.5')
+
+ cy.contains('label', 'Elevation Method')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
- cy.wait(3000); // wait for elevation DEM to load
+ cy.contains('label', 'Release Status')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
- cy.get('button').contains(/save/i).click();
+ cy.wait(3000) // wait for elevation DEM to load
+
+ cy.get('button').contains(/save/i).click()
// intercept
cy.wait('@updateLocation').then((interception) => {
- expect(interception.response?.statusCode).to.eq(200);
- });
+ expect(interception.response?.statusCode).to.eq(200)
+ })
- cy.contains(/success|updated|saved|submitted successfully/i, { timeout: 10000 }).should('exist');
- });
+ cy.contains(/success|updated|saved|submitted successfully/i, {
+ timeout: 10000,
+ }).should('exist')
+ })
it('should allow user to update all fields and submit location', () => {
- cy.wait('@getLocation');
+ cy.wait('@getLocation')
// Update coordinates
- cy.contains('label', 'Latitude (decimal degrees)').parent().find('input').clear().type('34.100000');
- cy.contains('label', 'Longitude (decimal degrees)').parent().find('input').clear().type('-106.900000');
-
+ cy.contains('label', 'Latitude (decimal degrees)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('34.100000')
+ cy.contains('label', 'Longitude (decimal degrees)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('-106.900000')
+
// coordinate fields
- cy.contains('label', 'Coordinate Accuracy (ft)').parent().find('input').clear().type('15');
- cy.contains('label', 'Coordinate Method').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
+ cy.contains('label', 'Coordinate Accuracy (ft)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('15')
+ cy.contains('label', 'Coordinate Method')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
// Turn off auto-generate elevation to manually set elevation
- cy.contains('label', 'Auto-generate elevation from USGS DEM').parent().find('input[type="checkbox"]').click();
- cy.contains('label', 'Elevation (ft)').parent().find('input').clear().type('5100');
- cy.contains('label', 'Elevation Accuracy (ft)').parent().find('input').clear().type('2.5');
- cy.contains('label', 'Elevation Method').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
- cy.contains('label', 'Release Status').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
+ cy.contains('label', 'Auto-generate elevation from USGS DEM')
+ .parent()
+ .find('input[type="checkbox"]')
+ .click()
+ cy.contains('label', 'Elevation (ft)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('5100')
+ cy.contains('label', 'Elevation Accuracy (ft)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('2.5')
+
+ cy.contains('label', 'Elevation Method')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
+ cy.contains('label', 'Release Status')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
// notes field
- cy.contains('label', 'Notes').parent().find('textarea').first().clear().type('Updated test location for automated testing');
+ cy.contains('label', 'Notes')
+ .parent()
+ .find('textarea')
+ .first()
+ .clear()
+ .type('Updated test location for automated testing')
- cy.get('button').contains(/save/i).click();
+ cy.get('button').contains(/save/i).click()
// intercept
cy.wait('@updateLocation').then((interception) => {
- expect(interception.response?.statusCode).to.eq(200);
- });
+ expect(interception.response?.statusCode).to.eq(200)
+ })
- cy.contains(/success|updated|saved|submitted successfully/i, { timeout: 10000 }).should('exist');
- });
+ cy.contains(/success|updated|saved|submitted successfully/i, {
+ timeout: 10000,
+ }).should('exist')
+ })
it('should allow user to use UTM coordinates instead of lat/long', () => {
- cy.wait('@getLocation');
+ cy.wait('@getLocation')
// toggle to UTM mode
- cy.contains('label', 'Toggle between using Northing/Easting or Latitude/Longitude').parent().find('input[type="checkbox"]').click();
-
+ cy.contains(
+ 'label',
+ 'Toggle between using Northing/Easting or Latitude/Longitude'
+ )
+ .parent()
+ .find('input[type="checkbox"]')
+ .click()
+
// keep utm zone default for now
- cy.contains('label', 'Easting (UTM X)').parent().find('input').clear().type('350100');
- cy.contains('label', 'Northing (UTM Y)').parent().find('input').clear().type('3870100');
-
- cy.contains('label', 'Coordinate Accuracy (ft)').parent().find('input').clear().type('15');
- cy.contains('label', 'Coordinate Method').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
- cy.contains('label', 'Elevation Method').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
- cy.contains('label', 'Release Status').parent().find('[role="combobox"]').click();
- cy.get('[role="listbox"] li').first().click();
-
- cy.get('button').contains(/save/i).click();
+ cy.contains('label', 'Easting (UTM X)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('350100')
+ cy.contains('label', 'Northing (UTM Y)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('3870100')
+
+ cy.contains('label', 'Coordinate Accuracy (ft)')
+ .parent()
+ .find('input')
+ .clear()
+ .type('15')
+ cy.contains('label', 'Coordinate Method')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
+ cy.contains('label', 'Elevation Method')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
+ cy.contains('label', 'Release Status')
+ .parent()
+ .find('[role="combobox"]')
+ .click()
+ cy.get('[role="listbox"] li').first().click()
+
+ cy.get('button').contains(/save/i).click()
// intercept
cy.wait('@updateLocation').then((interception) => {
- expect(interception.response?.statusCode).to.eq(200);
- });
-
- cy.contains(/success|updated|saved|submitted successfully/i, { timeout: 10000 }).should('exist');
- });
-});
+ expect(interception.response?.statusCode).to.eq(200)
+ })
+ cy.contains(/success|updated|saved|submitted successfully/i, {
+ timeout: 10000,
+ }).should('exist')
+ })
+})
diff --git a/cypress/e2e/ocotillo/well-show.cy.ts b/cypress/e2e/ocotillo/well-show.cy.ts
index fd37d69c..a25c46d7 100644
--- a/cypress/e2e/ocotillo/well-show.cy.ts
+++ b/cypress/e2e/ocotillo/well-show.cy.ts
@@ -5,7 +5,7 @@ describe('Thing Well Show Page', () => {
cy.login()
cy.intercept('GET', '**/thing/**').as('getWell')
- cy.visit('/ocotillo/well/show/107')
+ cy.visit('/ocotillo/well/show/1')
cy.wait('@getWell')
})
diff --git a/cypress/e2e/test-api-connectivity.cy.ts b/cypress/e2e/test-api-connectivity.cy.ts
new file mode 100644
index 00000000..8e3f526c
--- /dev/null
+++ b/cypress/e2e/test-api-connectivity.cy.ts
@@ -0,0 +1,22 @@
+describe('API Connectivity Test', () => {
+ it('should be able to reach API from browser', () => {
+ cy.request({
+ method: 'GET',
+ url: 'http://localhost:8000/docs',
+ failOnStatusCode: false,
+ }).then((response) => {
+ cy.log(`API Response Status: ${response.status}`)
+ expect(response.status).to.be.oneOf([200, 401]) // 401 is fine, means API is reachable
+ })
+
+ cy.request({
+ method: 'GET',
+ url: 'http://localhost:8000/thing',
+ failOnStatusCode: false,
+ }).then((response) => {
+ cy.log(`Thing endpoint Status: ${response.status}`)
+ // Should get 401 (needs auth) or 200, not network error
+ expect(response.status).to.not.eq(0)
+ })
+ })
+ })
\ No newline at end of file
diff --git a/openapi-auth.json b/openapi-auth.json
index 77e95fb1..dabe586a 100644
--- a/openapi-auth.json
+++ b/openapi-auth.json
@@ -1 +1 @@
-{"openapi":"3.1.0","info":{"title":"Ocotillo API (Full)","description":"Full API schema (authorized users)","version":"0.0.1"},"paths":{"/asset/upload":{"post":{"tags":["asset"],"summary":"Upload Asset","operationId":"upload_asset_asset_upload_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"client","in":"query","required":false,"schema":{"title":"Client"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_asset_asset_upload_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Asset Asset Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/asset":{"post":{"tags":["asset"],"summary":"Add Asset","operationId":"add_asset_asset_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAsset"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["asset"],"summary":"List Assets","description":"List all assets or assets associated with a specific thing.","operationId":"list_assets_asset_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"type":"integer","title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_AssetResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/asset/{asset_id}":{"get":{"tags":["asset"],"summary":"Get Asset","description":"Retrieve an asset by its ID.","operationId":"get_asset_asset__asset_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"integer","title":"Asset Id"}},{"name":"client","in":"query","required":false,"schema":{"title":"Client"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["asset"],"summary":"Update Asset","description":"Update an existing asset.","operationId":"update_asset_asset__asset_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"integer","title":"Asset Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAsset"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["asset"],"summary":"Delete Asset","operationId":"delete_asset_asset__asset_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"integer","title":"Asset Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/asset/{asset_id}/remove":{"delete":{"tags":["asset"],"summary":"Remove Asset","operationId":"remove_asset_asset__asset_id__remove_delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"integer","title":"Asset Id"}},{"name":"client","in":"query","required":false,"schema":{"title":"Client"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/author/{author_id}/publications":{"get":{"tags":["author"],"summary":"Get Author Publications","description":"Retrieve all publications for a specific author.","operationId":"get_author_publications_author__author_id__publications_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"author_id","in":"path","required":true,"schema":{"type":"integer","title":"Author Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PublicationResponse"},"title":"Response Get Author Publications Author Author Id Publications Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact":{"post":{"tags":["contact"],"summary":"Create a new contact","operationId":"create_contact_contact_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContact"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get contacts","description":"Retrieve all contacts from the database.\n:param session:\n:return:","operationId":"get_contacts_contact_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ContactResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/address":{"post":{"tags":["contact"],"summary":"Add an address to a contact","description":"Add a new address to an existing contact in the database.\n:param contact_id: ID of the contact to add the address to\n:param address_data: Data for the new address\n:param session: Database session\n:return: Response containing the added address","operationId":"create_address_contact_address_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAddress"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get all addresses","description":"Retrieve all addresses from the database.\n:param session:\n:return:","operationId":"get_addresses_contact_address_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_AddressResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/email":{"post":{"tags":["contact"],"summary":"Add an email to a contact","operationId":"create_email_contact_email_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEmail"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get all emails","description":"Retrieve all emails from the database.\n:param session:\n:return:","operationId":"get_emails_contact_email_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_EmailResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/phone":{"post":{"tags":["contact"],"summary":"Add a phone number to a contact","operationId":"create_phone_contact_phone_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePhone"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get all phones","description":"Retrieve all phone numbers from the database.\n:param session:\n:return:","operationId":"get_phones_contact_phone_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_PhoneResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/email/{email_id}":{"patch":{"tags":["contact"],"summary":"Update Contact Email","description":"Update an existing contact's email in the database.","operationId":"update_contact_email_contact_email__email_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"integer","title":"Email Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEmail"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get email by ID","description":"Retrieve an email by ID from the database.","operationId":"get_email_by_id_contact_email__email_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"integer","title":"Email Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["contact"],"summary":"Delete contact email","description":"Delete a contact email by ID from the database.","operationId":"delete_contact_email_contact_email__email_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"integer","title":"Email Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/phone/{phone_id}":{"patch":{"tags":["contact"],"summary":"Update Contact Phone","description":"Update an existing contact's phone number in the database.\n:param contact_id: ID of the contact to update\n:param phone_type: Type of the phone to update\n:param phone_number: New phone number\n:param session: Database session\n:return: Updated contact response","operationId":"update_contact_phone_contact_phone__phone_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"phone_id","in":"path","required":true,"schema":{"type":"integer","title":"Phone Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePhone"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get phone by ID","description":"Retrieve a phone by ID from the database.","operationId":"get_phone_by_id_contact_phone__phone_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"phone_id","in":"path","required":true,"schema":{"type":"integer","title":"Phone Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["contact"],"summary":"Delete contact phone","description":"Delete a contact phone by ID from the database.","operationId":"delete_contact_phone_contact_phone__phone_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"phone_id","in":"path","required":true,"schema":{"type":"integer","title":"Phone Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/address/{address_id}":{"patch":{"tags":["contact"],"summary":"Update Contact Address","description":"Update an existing contact's address in the database.\n\n:param address_id:\n:param address_data:\n:param session:\n:return:","operationId":"update_contact_address_contact_address__address_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"integer","title":"Address Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAddress"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get address by ID","description":"Retrieve an address by ID from the database.","operationId":"get_address_by_id_contact_address__address_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"integer","title":"Address Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["contact"],"summary":"Delete contact address","description":"Delete a contact address by ID from the database.","operationId":"delete_contact_address_contact_address__address_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"integer","title":"Address Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/{contact_id}":{"patch":{"tags":["contact"],"summary":"Update contact","description":"Update an existing contact in the database.\n:param contact_id: ID of the contact to update\n:param contact_data: Data to update the contact with\n:param session: Database session\n:return: Updated contact response","operationId":"update_contact_contact__contact_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContact"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get contact by ID","description":"Retrieve a contact by ID from the database.","operationId":"get_contact_by_id_contact__contact_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["contact"],"summary":"Delete contact","description":"Delete a contact by ID from the database.","operationId":"delete_contact_contact__contact_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/{contact_id}/email":{"get":{"tags":["contact"],"summary":"Get contact emails","description":"Retrieve all emails associated with a contact.","operationId":"get_contact_emails_contact__contact_id__email_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_EmailResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/{contact_id}/phone":{"get":{"tags":["contact"],"summary":"Get contact phones","description":"Retrieve all phone numbers associated with a contact.","operationId":"get_contact_phones_contact__contact_id__phone_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_PhoneResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/{contact_id}/address":{"get":{"tags":["contact"],"summary":"Get contact addresses","description":"Retrieve all addresses associated with a contact.","operationId":"get_contact_addresses_contact__contact_id__address_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_AddressResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/geospatial":{"get":{"tags":["geospatial"],"summary":"Get Geospatial","description":"Endpoint to retrieve a GeoJSON FeatureCollection or a shapefile.\nIf the request is for a shapefile, it will return a zip file containing the shapefile.\nOtherwise, it returns a GeoJSON FeatureCollection.","operationId":"get_geospatial_geospatial_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_type","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"title":"thing_type"}},{"name":"group","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"integer"}],"title":"group"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(geojson|shapefile)$","title":"format","description":"Format of the response. 'geojson' for GeoJSON FeatureCollection, 'shapefile' for a shapefile.","default":"geojson"},"description":"Format of the response. 'geojson' for GeoJSON FeatureCollection, 'shapefile' for a shapefile."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/geospatial/project-area/{group_id}":{"get":{"tags":["geospatial"],"summary":"Get project area for group","operationId":"get_project_area_geospatial_project_area__group_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureCollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/group":{"post":{"tags":["group"],"summary":"Create a new group","description":"Create a new group in the database.","operationId":"create_group_group_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroup"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["group"],"summary":"Get groups","description":"Retrieve all groups from the database.","operationId":"get_groups_group_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_GroupResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/group/{group_id}":{"get":{"tags":["group"],"summary":"Get group by ID","description":"Retrieve a group by ID from the database.","operationId":"get_group_by_id_group__group_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["group"],"summary":"Update a group by ID","description":"Update a group by ID in the database.","operationId":"update_group_group__group_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGroup"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["group"],"summary":"Delete a group by ID","operationId":"delete_group_group__group_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/category":{"post":{"tags":["lexicon"],"summary":"Add Category","description":"Endpoint to add a category to the lexicon.","operationId":"add_category_lexicon_category_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLexiconCategory"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconCategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get Lexicon Categories","description":"Endpoint to retrieve lexicon categories.","operationId":"get_lexicon_categories_lexicon_category_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"name","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","default":"asc","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_LexiconCategoryResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/term":{"post":{"tags":["lexicon"],"summary":"Add term","description":"Endpoint to add a term to the lexicon.","operationId":"add_term_lexicon_term_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLexiconTerm"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTermResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get lexicon terms","description":"Endpoint to retrieve lexicon terms.","operationId":"get_lexicon_terms_lexicon_term_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"term","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Term"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_LexiconTermResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/triple":{"post":{"tags":["lexicon"],"summary":"Add triple","operationId":"add_triple_lexicon_triple_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLexiconTriple"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTripleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get lexicon triples","description":"Endpoint to retrieve lexicon triples.","operationId":"get_lexicon_triples_lexicon_triple_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"subject","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","default":"asc","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_LexiconTripleResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/term/{term_id}":{"patch":{"tags":["lexicon"],"summary":"Update Lexicon Term","operationId":"update_lexicon_term_lexicon_term__term_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"integer","title":"Term Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLexiconTerm"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTermResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get Lexicon Term","operationId":"get_lexicon_term_lexicon_term__term_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"integer","title":"Term Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTermResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["lexicon"],"summary":"Delete a lexicon term by ID","operationId":"delete_lexicon_term_lexicon_term__term_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"integer","title":"Term Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/category/{category_id}":{"patch":{"tags":["lexicon"],"summary":"Update Lexicon Category","operationId":"update_lexicon_category_lexicon_category__category_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLexiconCategory"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconCategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get Lexicon Category","operationId":"get_lexicon_category_lexicon_category__category_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconCategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["lexicon"],"summary":"Delete a lexicon category by ID","operationId":"delete_lexicon_category_lexicon_category__category_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/triple/{triple_id}":{"patch":{"tags":["lexicon"],"summary":"Update Lexicon Triple","operationId":"update_lexicon_triple_lexicon_triple__triple_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"triple_id","in":"path","required":true,"schema":{"type":"integer","title":"Triple Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLexiconTriple"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTripleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get Lexicon Triple","operationId":"get_lexicon_triple_lexicon_triple__triple_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"triple_id","in":"path","required":true,"schema":{"type":"integer","title":"Triple Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTripleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["lexicon"],"summary":"Delete a lexicon triple by ID","operationId":"delete_lexicon_triple_lexicon_triple__triple_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"triple_id","in":"path","required":true,"schema":{"type":"integer","title":"Triple Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/location":{"post":{"tags":["location"],"summary":"Create a new sample location","description":"Create a new sample location in the database.","operationId":"create_location_location_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLocation"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["location"],"summary":"Get all locations","description":"Retrieve all wells from the database.","operationId":"get_location_location_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"nearby_point","in":"query","required":false,"schema":{"type":"string","title":"Nearby Point"}},{"name":"nearby_distance_km","in":"query","required":false,"schema":{"type":"number","default":1,"title":"Nearby Distance Km"}},{"name":"within","in":"query","required":false,"schema":{"type":"string","title":"Within"}},{"name":"query","in":"query","required":false,"schema":{"type":"string","title":"Query"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_LocationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/location/{location_id}":{"patch":{"tags":["location"],"summary":"Update a location","description":"Update a sample location in the database.","operationId":"update_location_location__location_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLocation"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["location"],"summary":"Get location by ID","description":"Retrieve a sample location by ID from the database.","operationId":"get_location_by_id_location__location_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["location"],"summary":"Delete location by ID","description":"Delete a sample location by ID from the database.","operationId":"delete_location_location__location_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/groundwater-level":{"post":{"tags":["observation"],"summary":"Add Groundwater Level Observation","description":"Add a new groundwater observation to the database.","operationId":"add_groundwater_level_observation_observation_groundwater_level_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroundwaterLevelObservation"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroundwaterLevelObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["observation"],"summary":"Get groundwater level observations","description":"Retrieve all groundwater level observations from the database.","operationId":"get_groundwater_level_observations_observation_groundwater_level_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"sensor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"}},{"name":"sample_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_GroundwaterLevelObservationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/water-chemistry":{"post":{"tags":["observation"],"summary":"Add Water Chemistry Observation","description":"Add a new water chemistry observation to the database.\nThis endpoint is currently a placeholder and does not implement any functionality.","operationId":"add_water_chemistry_observation_observation_water_chemistry_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWaterChemistryObservation"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaterChemistryObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["observation"],"summary":"Get water chemistry observations","description":"Retrieve all water chemistry observations from the database.","operationId":"get_water_chemistry_observations_observation_water_chemistry_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"sensor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"}},{"name":"sample_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_WaterChemistryObservationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/groundwater-level/{observation_id}":{"patch":{"tags":["observation"],"summary":"Update Groundwater Level Observation","description":"Update an existing groundwater level observation in the database.","operationId":"update_groundwater_level_observation_observation_groundwater_level__observation_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGroundwaterLevelObservation"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroundwaterLevelObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["observation"],"summary":"Get groundwater level observation by ID","operationId":"get_groundwater_level_observation_by_id_observation_groundwater_level__observation_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroundwaterLevelObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/water-chemistry/{observation_id}":{"patch":{"tags":["observation"],"summary":"Update Water Chemistry Observation","description":"Update an existing water chemistry observation in the database.","operationId":"update_water_chemistry_observation_observation_water_chemistry__observation_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWaterChemistryObservation"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaterChemistryObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["observation"],"summary":"Get water chemistry observation by ID","operationId":"get_water_chemistry_observation_by_id_observation_water_chemistry__observation_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaterChemistryObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation":{"get":{"tags":["observation"],"summary":"Get all observations","operationId":"get_all_observations_observation_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"sensor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"}},{"name":"sample_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ObservationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/{observation_id}":{"get":{"tags":["observation"],"summary":"Get an observation by its ID","operationId":"get_observation_by_id_observation__observation_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["observation"],"summary":"Delete an observation","operationId":"delete_observation_observation__observation_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/publication/add":{"post":{"tags":["publication"],"summary":"Post Publication","description":"Add a new publication.","operationId":"post_publication_publication_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePublication"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]}]}},"/sample":{"post":{"tags":["sample"],"summary":"Add Sample","description":"Endpoint to add a sample.","operationId":"add_sample_sample_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSample"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SampleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sample"],"summary":"Get Samples","description":"Endpoint to retrieve samples.","operationId":"get_samples_sample_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_SampleResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sample/{sample_id}":{"patch":{"tags":["sample"],"summary":"Update Sample","description":"Endpoint to update a sample.","operationId":"update_sample_sample__sample_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSample"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SampleResponse"},{"$ref":"#/components/schemas/ResourceNotFoundResponse"}],"title":"Response Update Sample Sample Sample Id Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sample"],"summary":"Get Sample by ID","description":"Endpoint to retrieve a sample by its ID.","operationId":"get_sample_by_id_sample__sample_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SampleResponse"},{"$ref":"#/components/schemas/ResourceNotFoundResponse"}],"title":"Response Get Sample By Id Sample Sample Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["sample"],"summary":"Delete Sample by ID","operationId":"delete_sample_by_id_sample__sample_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sensor":{"post":{"tags":["sensor"],"summary":"Add Sensor","description":"Add a sensor to the system.","operationId":"add_sensor_sensor_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSensor"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sensor"],"summary":"Get Sensors","description":"Retrieve all sensors from the system.\nThis endpoint is a placeholder and should be implemented with actual logic.","operationId":"get_sensors_sensor_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"type":"integer","title":"Thing Id"}},{"name":"observed_property","in":"query","required":false,"schema":{"type":"string","title":"Observed Property"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_SensorResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sensor/{sensor_id}":{"patch":{"tags":["sensor"],"summary":"Update Sensor","description":"Update a sensor in the system.","operationId":"update_sensor_sensor__sensor_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sensor_id","in":"path","required":true,"schema":{"type":"integer","title":"Sensor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSensor"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["sensor"],"summary":"Delete Sensor","description":"Delete a sensor in the system","operationId":"delete_sensor_sensor__sensor_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sensor_id","in":"path","required":true,"schema":{"type":"integer","title":"Sensor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sensor"],"summary":"Get Sensor","description":"Retrieve a sensor by its ID.","operationId":"get_sensor_sensor__sensor_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sensor_id","in":"path","required":true,"schema":{"type":"integer","title":"Sensor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search":{"get":{"tags":["search"],"summary":"Search Api","description":"Search endpoint for the collaborative network.","operationId":"search_api_search_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/water-well":{"get":{"tags":["thing"],"summary":"Get all water wells","description":"Retrieve all wells from the database.","operationId":"get_water_wells_thing_water_well_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"query","in":"query","required":false,"schema":{"type":"string","title":"Query"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_WellResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["thing"],"summary":"Create a water well","description":"Create a new water well in the database.","operationId":"create_well_thing_water_well_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWell"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/water-well/{thing_id}":{"get":{"tags":["thing"],"summary":"Get water well by ID","description":"Retrieve a water well by ID from the database.","operationId":"get_well_by_id_thing_water_well__thing_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["thing"],"summary":"Update well by parent thing ID","description":"Update an existing well by ID.","operationId":"update_water_well_thing_water_well__thing_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWell"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/water-well/{thing_id}/well-screen":{"get":{"tags":["thing"],"summary":"Get well screens by water well ID","description":"Retrieve all well screens for a specific water well by its ID.","operationId":"get_well_screens_by_well_id_thing_water_well__thing_id__well_screen_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_WellScreenResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/well-screen":{"get":{"tags":["thing"],"summary":"Get well screens","description":"Retrieve all well screens from the database.","operationId":"get_well_screens_thing_well_screen_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"type":"integer","title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_WellScreenResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["thing"],"summary":"Create a new well screen","description":"Create a new well screen in the database.","operationId":"create_wellscreen_thing_well_screen_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWellScreen"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/well-screen/{wellscreen_id}":{"get":{"tags":["thing"],"summary":"Get well screen by ID","description":"Retrieve a well screen by ID from the database.","operationId":"get_well_screen_by_id_thing_well_screen__wellscreen_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"wellscreen_id","in":"path","required":true,"schema":{"type":"integer","title":"Wellscreen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/spring":{"get":{"tags":["thing"],"summary":"Get all springs","description":"Retrieve all springs from the database.","operationId":"get_springs_thing_spring_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"query","in":"query","required":false,"schema":{"type":"string","title":"Query"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_SpringResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["thing"],"summary":"Create a new spring","description":"Create a new well in the database.","operationId":"create_spring_thing_spring_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSpring"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpringResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/spring/{thing_id}":{"get":{"tags":["thing"],"summary":"Get spring by ID","description":"Retrieve a spring by ID from the database.","operationId":"get_spring_by_id_thing_spring__thing_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpringResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["thing"],"summary":"Update spring by parent thing ID","description":"Update an existing spring by ID.","operationId":"update_spring_thing_spring__thing_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSpring"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpringResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/id-link":{"get":{"tags":["thing"],"summary":"Get all thing links","description":"Retrieve all thing links, optionally filtered and sorted.","operationId":"get_thing_id_links_thing_id_link_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ThingIdLinkResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["thing"],"summary":"Create a new thing link","description":"Create a new link between a thing and an alternate ID.","operationId":"create_thing_id_link_thing_id_link_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateThingIdLink"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingIdLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/id-link/{link_id}":{"get":{"tags":["thing"],"summary":"Get thing links by link ID","description":"Retrieve all links for a specific thing by its ID.","operationId":"get_thing_id_links_thing_id_link__link_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingIdLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["thing"],"summary":"Update thing link by ID","operationId":"update_thing_id_link_thing_id_link__link_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateThingIdLink"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingIdLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["thing"],"summary":"Delete thing link by ID","description":"Delete a thing link by ID.","operationId":"delete_thing_id_link_thing_id_link__link_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing":{"get":{"tags":["thing"],"summary":"Get all things","description":"Retrieve all things or filter by type.","operationId":"get_things_thing_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"within","in":"query","required":false,"schema":{"type":"string","title":"Within"}},{"name":"query","in":"query","required":false,"schema":{"type":"string","title":"Query"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ThingResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/{thing_id}":{"get":{"tags":["thing"],"summary":"Get thing by ID","description":"Retrieve a thing by ID from the database.","operationId":"get_thing_by_id_thing__thing_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["thing"],"summary":"Delete thing by ID","description":"Delete a thing by ID.","operationId":"delete_thing_thing__thing_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/{thing_id}/id-link":{"get":{"tags":["thing"],"summary":"Get thing links by thing ID","description":"Retrieve all links for a specific thing by its ID.","operationId":"get_thing_id_links_thing__thing_id__id_link_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ThingIdLinkResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/well-screen/{well_screen_id}":{"patch":{"tags":["thing"],"summary":"Update Well Screen by ID","operationId":"update_well_screen_thing_well_screen__well_screen_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"well_screen_id","in":"path","required":true,"schema":{"type":"integer","title":"Well Screen Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWellScreen"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["thing"],"summary":"Delete well screen by ID","description":"Delete a well screen by ID.","operationId":"delete_well_screen_thing_well_screen__well_screen_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"well_screen_id","in":"path","required":true,"schema":{"type":"integer","title":"Well Screen Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AddressResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"contact_id":{"type":"integer","title":"Contact Id"},"address_line_1":{"type":"string","title":"Address Line 1"},"address_line_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line 2"},"city":{"type":"string","title":"City"},"state":{"type":"string","title":"State"},"postal_code":{"type":"string","title":"Postal Code"},"country":{"type":"string","title":"Country"},"address_type":{"type":"string","title":"Address Type"}},"type":"object","required":["id","created_at","release_status","contact_id","address_line_1","city","state","postal_code","country","address_type"],"title":"AddressResponse","description":"Response schema for address details."},"AssetResponse":{"properties":{"name":{"type":"string","title":"Name"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"storage_path":{"type":"string","title":"Storage Path"},"mime_type":{"type":"string","title":"Mime Type"},"size":{"type":"integer","title":"Size"},"uri":{"type":"string","title":"Uri"},"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"storage_service":{"type":"string","title":"Storage Service"},"signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Url"}},"type":"object","required":["name","storage_path","mime_type","size","uri","id","created_at","release_status","storage_service"],"title":"AssetResponse"},"AuthorResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"affiliation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Affiliation"}},"type":"object","required":["id","name"],"title":"AuthorResponse","description":"Schema for the response of an author."},"Body_upload_asset_asset_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_asset_asset_upload_post"},"ContactResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"role":{"type":"string","title":"Role"},"contact_type":{"type":"string","title":"Contact Type"},"emails":{"items":{"$ref":"#/components/schemas/EmailResponse"},"type":"array","title":"Emails","default":[]},"phones":{"items":{"$ref":"#/components/schemas/PhoneResponse"},"type":"array","title":"Phones","default":[]},"addresses":{"items":{"$ref":"#/components/schemas/AddressResponse"},"type":"array","title":"Addresses","default":[]},"things":{"items":{"$ref":"#/components/schemas/ThingResponse"},"type":"array","title":"Things","default":[]}},"type":"object","required":["id","created_at","release_status","name","organization","role","contact_type"],"title":"ContactResponse","description":"Response schema for contact details."},"CreateAddress":{"properties":{"release_status":{"type":"string","title":"Release Status"},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"address_line_1":{"type":"string","title":"Address Line 1"},"address_line_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line 2"},"city":{"type":"string","title":"City"},"state":{"type":"string","title":"State","default":"NM"},"postal_code":{"type":"string","title":"Postal Code"},"country":{"type":"string","title":"Country","default":"United States"},"address_type":{"type":"string","title":"Address Type","default":"Primary"}},"type":"object","required":["release_status","address_line_1","city","postal_code"],"title":"CreateAddress","description":"Schema for creating an address."},"CreateAsset":{"properties":{"name":{"type":"string","title":"Name"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"storage_path":{"type":"string","title":"Storage Path"},"mime_type":{"type":"string","title":"Mime Type"},"size":{"type":"integer","title":"Size"},"uri":{"type":"string","title":"Uri"},"release_status":{"type":"string","title":"Release Status"},"thing_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},"type":"object","required":["name","storage_path","mime_type","size","uri","release_status"],"title":"CreateAsset"},"CreateContact":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"release_status":{"type":"string","title":"Release Status"},"thing_id":{"type":"integer","title":"Thing Id"},"role":{"type":"string","title":"Role"},"contact_type":{"type":"string","title":"Contact Type","default":"Primary"},"emails":{"anyOf":[{"items":{"$ref":"#/components/schemas/CreateEmail"},"type":"array"},{"type":"null"}],"title":"Emails"},"phones":{"anyOf":[{"items":{"$ref":"#/components/schemas/CreatePhone"},"type":"array"},{"type":"null"}],"title":"Phones"},"addresses":{"anyOf":[{"items":{"$ref":"#/components/schemas/CreateAddress"},"type":"array"},{"type":"null"}],"title":"Addresses"}},"type":"object","required":["release_status","thing_id","role"],"title":"CreateContact","description":"Schema for creating a contact."},"CreateEmail":{"properties":{"email":{"type":"string","title":"Email"},"release_status":{"type":"string","title":"Release Status"},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"email_type":{"type":"string","title":"Email Type","default":"Primary"}},"type":"object","required":["email","release_status"],"title":"CreateEmail","description":"Schema for creating an email."},"CreateGroundwaterLevelObservation":{"properties":{"parameter_id":{"type":"integer","title":"Parameter Id"},"observation_datetime":{"type":"string","format":"date-time","title":"Observation Datetime"},"release_status":{"type":"string","title":"Release Status"},"sample_id":{"type":"integer","title":"Sample Id"},"sensor_id":{"type":"integer","title":"Sensor Id"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"measuring_point_height":{"type":"number","title":"Measuring Point Height"},"groundwater_level_reason":{"type":"string","title":"Groundwater Level Reason"}},"type":"object","required":["parameter_id","observation_datetime","release_status","sample_id","sensor_id","value","unit","measuring_point_height","groundwater_level_reason"],"title":"CreateGroundwaterLevelObservation"},"CreateGroup":{"properties":{"project_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Area"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"parent_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Group Id"},"release_status":{"type":"string","title":"Release Status"},"name":{"type":"string","title":"Name"}},"type":"object","required":["release_status","name"],"title":"CreateGroup","description":"Schema for creating a group."},"CreateLexiconCategory":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"CreateLexiconCategory","description":"Pydantic model for creating a lexicon category.\nThis model can be extended to include additional fields as needed."},"CreateLexiconTerm":{"properties":{"term":{"type":"string","title":"Term"},"definition":{"type":"string","title":"Definition"},"categories":{"items":{"type":"string"},"type":"array","title":"Categories"}},"type":"object","required":["term","definition","categories"],"title":"CreateLexiconTerm","description":"Pydantic model for creating a lexicon term.\nThis model can be extended to include additional fields as needed."},"CreateLexiconTriple":{"properties":{"subject":{"$ref":"#/components/schemas/CreateLexiconTerm"},"predicate":{"type":"string","title":"Predicate"},"object_":{"$ref":"#/components/schemas/CreateLexiconTerm"}},"type":"object","required":["subject","predicate","object_"],"title":"CreateLexiconTriple","description":"Pydantic model for creating a triple.\nThis model can be extended to include additional fields as needed."},"CreateLocation":{"properties":{"point":{"type":"string","title":"Point"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status","default":"draft"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"elevation":{"type":"number","title":"Elevation"},"elevation_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elevation Accuracy"},"elevation_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Elevation Method"},"coordinate_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coordinate Accuracy"},"coordinate_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coordinate Method"}},"type":"object","required":["point","elevation"],"title":"CreateLocation","description":"Schema for creating a sample location."},"CreatePhone":{"properties":{"phone_number":{"type":"string","title":"Phone Number"},"release_status":{"type":"string","title":"Release Status"},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"phone_type":{"type":"string","title":"Phone Type","default":"Primary"}},"type":"object","required":["phone_number","release_status"],"title":"CreatePhone","description":"Schema for creating a phone number."},"CreatePublication":{"properties":{"title":{"type":"string","title":"Title"},"authors":{"items":{"type":"string"},"type":"array","title":"Authors"},"year":{"type":"integer","title":"Year"},"doi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doi"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"publication_type":{"type":"string","title":"Publication Type"}},"type":"object","required":["title","authors","year","publication_type"],"title":"CreatePublication","description":"Schema for creating a new publication."},"CreateSample":{"properties":{"sample_date":{"type":"string","format":"date-time","title":"Sample Date"},"depth_top":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Top"},"depth_bottom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Bottom"},"release_status":{"type":"string","title":"Release Status"},"field_activity_id":{"type":"integer","title":"Field Activity Id"},"field_event_participant_id":{"type":"integer","title":"Field Event Participant Id"},"sample_name":{"type":"string","title":"Sample Name"},"sample_matrix":{"type":"string","title":"Sample Matrix"},"sample_method":{"type":"string","title":"Sample Method"},"qc_type":{"type":"string","title":"Qc Type"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["sample_date","release_status","field_activity_id","field_event_participant_id","sample_name","sample_matrix","sample_method","qc_type"],"title":"CreateSample"},"CreateSensor":{"properties":{"datetime_installed":{"type":"string","format":"date-time","title":"Datetime Installed"},"datetime_removed":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Datetime Removed"},"release_status":{"type":"string","title":"Release Status"},"name":{"type":"string","title":"Name"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"serial_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serial No"},"recording_interval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recording Interval"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["datetime_installed","release_status","name"],"title":"CreateSensor","description":"Schema for creating a new sensor."},"CreateSpring":{"properties":{"release_status":{"type":"string","title":"Release Status"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Group Id"},"name":{"type":"string","title":"Name"},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"spring_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spring Type"}},"type":"object","required":["release_status","location_id","name"],"title":"CreateSpring","description":"Schema for creating a spring."},"CreateThingIdLink":{"properties":{"thing_id":{"type":"integer","title":"Thing Id"},"relation":{"type":"string","title":"Relation"},"alternate_id":{"type":"string","title":"Alternate Id"},"alternate_organization":{"type":"string","title":"Alternate Organization"}},"type":"object","required":["thing_id","relation","alternate_id","alternate_organization"],"title":"CreateThingIdLink","description":"Schema for creating a link between a thing and its ID."},"CreateWaterChemistryObservation":{"properties":{"parameter_id":{"type":"integer","title":"Parameter Id"},"observation_datetime":{"type":"string","format":"date-time","title":"Observation Datetime"},"release_status":{"type":"string","title":"Release Status"},"sample_id":{"type":"integer","title":"Sample Id"},"sensor_id":{"type":"integer","title":"Sensor Id"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"}},"type":"object","required":["parameter_id","observation_datetime","release_status","sample_id","sensor_id","value","unit"],"title":"CreateWaterChemistryObservation"},"CreateWell":{"properties":{"well_depth":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Well Depth","description":"Well depth in feet"},"hole_depth":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Hole Depth","description":"Hole depth in feet"},"well_casing_depth":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Well Casing Depth","description":"Well casing depth in feet"},"release_status":{"type":"string","title":"Release Status"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Group Id"},"name":{"type":"string","title":"Name"},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"well_purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Purpose"},"well_construction_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Construction Notes"},"well_casing_diameter":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Well Casing Diameter","description":"Well casing diameter in inches"},"well_casing_material":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Casing Material"}},"type":"object","required":["release_status","location_id","name"],"title":"CreateWell","description":"Schema for creating a well."},"CreateWellScreen":{"properties":{"release_status":{"type":"string","title":"Release Status"},"thing_id":{"type":"integer","title":"Thing Id"},"screen_depth_bottom":{"type":"number","exclusiveMinimum":0.0,"title":"Screen Depth Bottom","description":"Screen depth bottom in feet"},"screen_depth_top":{"type":"number","exclusiveMinimum":0.0,"title":"Screen Depth Top","description":"Screen depth top in feet"},"screen_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Type"},"screen_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Description"}},"type":"object","required":["release_status","thing_id","screen_depth_bottom","screen_depth_top"],"title":"CreateWellScreen","description":"Schema for creating a well screen."},"EmailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"contact_id":{"type":"integer","title":"Contact Id"},"email":{"type":"string","title":"Email"},"email_type":{"type":"string","title":"Email Type"}},"type":"object","required":["id","created_at","release_status","contact_id","email","email_type"],"title":"EmailResponse","description":"Response schema for email details."},"Feature":{"properties":{"type":{"type":"string","title":"Type","default":"Feature"},"geometry":{"$ref":"#/components/schemas/GeoJSONGeometry"},"properties":{"additionalProperties":true,"type":"object","title":"Properties","default":{}}},"type":"object","required":["geometry"],"title":"Feature","description":"Feature schema for GeoJSON response."},"FeatureCollectionResponse":{"properties":{"type":{"type":"string","title":"Type","default":"FeatureCollection"},"features":{"items":{"$ref":"#/components/schemas/Feature"},"type":"array","title":"Features","default":[]}},"type":"object","title":"FeatureCollectionResponse","description":"Response schema for GeoJSON FeatureCollection."},"FieldActivityResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"field_event_id":{"type":"integer","title":"Field Event Id"},"activity_type":{"type":"string","title":"Activity Type"}},"type":"object","required":["id","created_at","release_status","field_event_id","activity_type"],"title":"FieldActivityResponse"},"FieldEventResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"thing_id":{"type":"integer","title":"Thing Id"},"event_date":{"type":"string","format":"date-time","title":"Event Date"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","created_at","release_status","thing_id","event_date","notes"],"title":"FieldEventResponse"},"GeoJSONGeometry":{"properties":{"type":{"type":"string","title":"Type"},"coordinates":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"items":{"items":{"type":"number"},"type":"array"},"type":"array"},{"items":{"items":{"items":{"type":"number"},"type":"array"},"type":"array"},"type":"array"},{"items":{"items":{"items":{"items":{"type":"number"},"type":"array"},"type":"array"},"type":"array"},"type":"array"}],"title":"Coordinates"}},"type":"object","required":["type","coordinates"],"title":"GeoJSONGeometry","description":"Geometry schema for GeoJSON response."},"GroundwaterLevelObservationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"sample_id":{"type":"integer","title":"Sample Id"},"sensor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"},"observation_datetime":{"type":"string","format":"date-time","title":"Observation Datetime"},"parameter":{"$ref":"#/components/schemas/ParameterResponse"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"type":"string","title":"Unit"},"depth_to_water_bgs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth To Water Bgs"},"measuring_point_height":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Measuring Point Height"},"groundwater_level_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Groundwater Level Reason"}},"type":"object","required":["id","created_at","release_status","sample_id","sensor_id","observation_datetime","parameter","value","unit","depth_to_water_bgs","measuring_point_height","groundwater_level_reason"],"title":"GroundwaterLevelObservationResponse"},"GroupResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"name":{"type":"string","title":"Name"},"project_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Area"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"parent_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Group Id"}},"type":"object","required":["id","created_at","release_status","name","project_area","description","parent_group_id"],"title":"GroupResponse","description":"Pydantic model for the response of a group.\nThis model can be extended to include additional fields as needed."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LexiconCategoryResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","created_at","name"],"title":"LexiconCategoryResponse","description":"Pydantic model for the response of a lexicon category.\nThis model can be extended to include additional fields as needed."},"LexiconTermResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"term":{"type":"string","title":"Term"},"definition":{"type":"string","title":"Definition"},"categories":{"items":{"$ref":"#/components/schemas/LexiconCategoryResponse"},"type":"array","title":"Categories","default":[]}},"type":"object","required":["id","created_at","term","definition"],"title":"LexiconTermResponse","description":"Pydantic model for the response of a lexicon term.\nThis model can be extended to include additional fields as needed."},"LexiconTripleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"subject":{"type":"string","title":"Subject"},"predicate":{"type":"string","title":"Predicate"},"object_":{"type":"string","title":"Object"}},"type":"object","required":["id","created_at","subject","predicate","object_"],"title":"LexiconTripleResponse"},"LocationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"point":{"type":"string","title":"Point"},"elevation":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elevation"},"horizontal_datum":{"type":"string","title":"Horizontal Datum","default":"WGS84"},"vertical_daum":{"type":"string","title":"Vertical Daum","default":"NAVD88"},"elevation_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elevation Accuracy"},"elevation_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Elevation Method"},"coordinate_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coordinate Accuracy"},"coordinate_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coordinate Method"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"county":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"},"quad_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quad Name"}},"type":"object","required":["id","created_at","release_status","notes","point","elevation","elevation_accuracy","elevation_method","coordinate_accuracy","coordinate_method","state","county","quad_name"],"title":"LocationResponse","description":"Response schema for sample location details."},"ObservationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"sample_id":{"type":"integer","title":"Sample Id"},"sensor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"},"observation_datetime":{"type":"string","format":"date-time","title":"Observation Datetime"},"parameter":{"$ref":"#/components/schemas/ParameterResponse"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"type":"string","title":"Unit"},"depth_to_water_bgs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth To Water Bgs"},"measuring_point_height":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Measuring Point Height"},"groundwater_level_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Groundwater Level Reason"}},"type":"object","required":["id","created_at","release_status","sample_id","sensor_id","observation_datetime","parameter","value","unit","depth_to_water_bgs","measuring_point_height","groundwater_level_reason"],"title":"ObservationResponse","description":"Response model for observations.\nCombines groundwater level and geothermal observation responses."},"Page_AddressResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AddressResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[AddressResponse]"},"Page_AssetResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AssetResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[AssetResponse]"},"Page_ContactResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ContactResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[ContactResponse]"},"Page_EmailResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EmailResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[EmailResponse]"},"Page_GroundwaterLevelObservationResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GroundwaterLevelObservationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[GroundwaterLevelObservationResponse]"},"Page_GroupResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GroupResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[GroupResponse]"},"Page_LexiconCategoryResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LexiconCategoryResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[LexiconCategoryResponse]"},"Page_LexiconTermResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LexiconTermResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[LexiconTermResponse]"},"Page_LexiconTripleResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LexiconTripleResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[LexiconTripleResponse]"},"Page_LocationResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LocationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[LocationResponse]"},"Page_ObservationResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ObservationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[ObservationResponse]"},"Page_PhoneResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PhoneResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[PhoneResponse]"},"Page_SampleResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SampleResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[SampleResponse]"},"Page_SensorResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SensorResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[SensorResponse]"},"Page_SpringResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SpringResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[SpringResponse]"},"Page_ThingIdLinkResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ThingIdLinkResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[ThingIdLinkResponse]"},"Page_ThingResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ThingResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[ThingResponse]"},"Page_WaterChemistryObservationResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WaterChemistryObservationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[WaterChemistryObservationResponse]"},"Page_WellResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WellResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[WellResponse]"},"Page_WellScreenResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WellScreenResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[WellScreenResponse]"},"Page_dict_":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[dict]"},"ParameterResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"parameter_name":{"type":"string","title":"Parameter Name"},"matrix":{"type":"string","title":"Matrix"},"parameter_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parameter Type"},"cas_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cas Number"},"default_unit":{"type":"string","title":"Default Unit"}},"type":"object","required":["id","created_at","release_status","parameter_name","matrix","parameter_type","cas_number","default_unit"],"title":"ParameterResponse","description":"Pydantic model for the response of a parameter.\nThis model can be extended to include additional fields as needed."},"PhoneResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"contact_id":{"type":"integer","title":"Contact Id"},"phone_number":{"type":"string","title":"Phone Number"},"phone_type":{"type":"string","title":"Phone Type"}},"type":"object","required":["id","created_at","release_status","contact_id","phone_number","phone_type"],"title":"PhoneResponse","description":"Response schema for phone details."},"PublicationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"authors":{"items":{"$ref":"#/components/schemas/AuthorResponse"},"type":"array","title":"Authors"},"year":{"type":"integer","title":"Year"},"doi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doi"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"publication_type":{"type":"string","title":"Publication Type"}},"type":"object","required":["id","title","authors","year","publication_type"],"title":"PublicationResponse","description":"Schema for the response of a publication."},"ResourceNotFoundResponse":{"properties":{"detail":{"type":"string","title":"Detail"}},"type":"object","required":["detail"],"title":"ResourceNotFoundResponse"},"SampleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"thing":{"$ref":"#/components/schemas/ThingResponse"},"field_event":{"$ref":"#/components/schemas/FieldEventResponse"},"field_activity":{"$ref":"#/components/schemas/FieldActivityResponse"},"contact":{"$ref":"#/components/schemas/ContactResponse"},"sample_date":{"type":"string","format":"date-time","title":"Sample Date"},"sample_name":{"type":"string","title":"Sample Name"},"sample_matrix":{"type":"string","title":"Sample Matrix"},"sample_method":{"type":"string","title":"Sample Method"},"qc_type":{"type":"string","title":"Qc Type"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"depth_top":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Top"},"depth_bottom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Bottom"}},"type":"object","required":["id","created_at","release_status","thing","field_event","field_activity","contact","sample_date","sample_name","sample_matrix","sample_method","qc_type","notes","depth_top","depth_bottom"],"title":"SampleResponse","description":"Developer's note\n\nThe frontend uses multiple fields for a thing, field_even, and field_activity,\nwhich is why full ThingResponse, FieldEventResponse, and FieldActivityResponse\nare returned. If the response becomes too large and slow, we can use\n.model_dump() and exlude fields to reduce the size."},"SensorResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"name":{"type":"string","title":"Name"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"serial_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serial No"},"datetime_installed":{"type":"string","format":"date-time","title":"Datetime Installed"},"datetime_removed":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Datetime Removed"},"recording_interval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recording Interval"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","created_at","release_status","name","model","serial_no","datetime_installed","datetime_removed","recording_interval","notes"],"title":"SensorResponse"},"SpringResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"name":{"type":"string","title":"Name"},"thing_type":{"type":"string","title":"Thing Type"},"current_location":{"anyOf":[{"$ref":"#/components/schemas/LocationResponse"},{"type":"null"}]},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"spring_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spring Type"}},"type":"object","required":["id","created_at","release_status","name","thing_type","current_location","first_visit_date"],"title":"SpringResponse","description":"Response schema for spring details."},"ThingIdLinkResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"thing_id":{"type":"integer","title":"Thing Id"},"thing":{"$ref":"#/components/schemas/ThingResponse"},"relation":{"type":"string","title":"Relation"},"alternate_id":{"type":"string","title":"Alternate Id"},"alternate_organization":{"type":"string","title":"Alternate Organization"}},"type":"object","required":["id","created_at","release_status","thing_id","thing","relation","alternate_id","alternate_organization"],"title":"ThingIdLinkResponse"},"ThingResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"name":{"type":"string","title":"Name"},"thing_type":{"type":"string","title":"Thing Type"},"current_location":{"anyOf":[{"$ref":"#/components/schemas/LocationResponse"},{"type":"null"}]},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"spring_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spring Type"},"well_purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Purpose"},"well_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Depth"},"well_depth_unit":{"type":"string","title":"Well Depth Unit","default":"ft"},"hole_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Depth"},"hole_depth_unit":{"type":"string","title":"Hole Depth Unit","default":"ft"},"well_casing_diameter":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Diameter"},"well_casing_diameter_unit":{"type":"string","title":"Well Casing Diameter Unit","default":"in"},"well_casing_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Depth"},"well_casing_depth_unit":{"type":"string","title":"Well Casing Depth Unit","default":"ft"},"well_casing_material":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Casing Material"},"well_construction_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Construction Notes"}},"type":"object","required":["id","created_at","release_status","name","thing_type","current_location","first_visit_date"],"title":"ThingResponse"},"UpdateAddress":{"properties":{"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"address_line_1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line 1"},"address_line_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line 2"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"address_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Type"}},"type":"object","title":"UpdateAddress","description":"Schema for updating address information."},"UpdateAsset":{"properties":{"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","title":"UpdateAsset"},"UpdateContact":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"contact_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Contact Type"},"thing_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},"type":"object","title":"UpdateContact","description":"Schema for updating contact information."},"UpdateEmail":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"email_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email Type"}},"type":"object","title":"UpdateEmail","description":"Schema for updating email information."},"UpdateGroundwaterLevelObservation":{"properties":{"parameter_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parameter Id"},"observation_datetime":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Observation Datetime"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"sample_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"},"sensor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"},"measuring_point_height":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Measuring Point Height"},"groundwater_level_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Groundwater Level Reason"}},"type":"object","title":"UpdateGroundwaterLevelObservation"},"UpdateGroup":{"properties":{"project_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Area"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"parent_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Group Id"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","title":"UpdateGroup","description":"Pydantic model for updating a group.\nThis model can be extended to include additional fields as needed."},"UpdateLexiconCategory":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"UpdateLexiconCategory"},"UpdateLexiconTerm":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Term"},"definition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition"}},"type":"object","title":"UpdateLexiconTerm"},"UpdateLexiconTriple":{"properties":{"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"predicate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Predicate"},"object_":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object"}},"type":"object","title":"UpdateLexiconTriple"},"UpdateLocation":{"properties":{"point":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Point"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"elevation":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elevation"},"elevation_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elevation Accuracy"},"elevation_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Elevation Method"},"coordinate_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coordinate Accuracy"},"coordinate_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Coordinate Method"}},"type":"object","title":"UpdateLocation","description":"Schema for updating a location."},"UpdatePhone":{"properties":{"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"phone_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Type"}},"type":"object","title":"UpdatePhone","description":"Schema for updating phone information."},"UpdateSample":{"properties":{"sample_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sample Date"},"depth_top":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Top"},"depth_bottom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Bottom"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"field_activity_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Field Activity Id"},"field_event_participant_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Field Event Participant Id"},"sample_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sample Name"},"sample_matrix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sample Matrix"},"sample_method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sample Method"},"qc_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qc Type"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"UpdateSample"},"UpdateSensor":{"properties":{"datetime_installed":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Datetime Installed"},"datetime_removed":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Datetime Removed"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"serial_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serial No"},"recording_interval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recording Interval"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"UpdateSensor"},"UpdateSpring":{"properties":{"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"spring_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spring Type"}},"type":"object","title":"UpdateSpring"},"UpdateThingIdLink":{"properties":{"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"alternate_organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alternate Organization"},"alternate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alternate Id"},"relation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relation"}},"type":"object","title":"UpdateThingIdLink"},"UpdateWaterChemistryObservation":{"properties":{"parameter_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parameter Id"},"observation_datetime":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Observation Datetime"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"sample_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"},"sensor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unit"}},"type":"object","title":"UpdateWaterChemistryObservation"},"UpdateWell":{"properties":{"well_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Depth"},"hole_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Depth"},"well_casing_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Depth"},"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"well_purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Purpose"},"well_construction_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Construction Notes"},"well_casing_diameter":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Diameter"},"well_casing_material":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Casing Material"}},"type":"object","title":"UpdateWell"},"UpdateWellScreen":{"properties":{"release_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Release Status"},"screen_depth_bottom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Screen Depth Bottom"},"screen_depth_top":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Screen Depth Top"},"screen_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Description"},"screen_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Type"}},"type":"object","title":"UpdateWellScreen"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WaterChemistryObservationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"sample_id":{"type":"integer","title":"Sample Id"},"sensor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"},"observation_datetime":{"type":"string","format":"date-time","title":"Observation Datetime"},"parameter":{"$ref":"#/components/schemas/ParameterResponse"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"type":"string","title":"Unit"}},"type":"object","required":["id","created_at","release_status","sample_id","sensor_id","observation_datetime","parameter","value","unit"],"title":"WaterChemistryObservationResponse"},"WellResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"name":{"type":"string","title":"Name"},"thing_type":{"type":"string","title":"Thing Type"},"current_location":{"anyOf":[{"$ref":"#/components/schemas/LocationResponse"},{"type":"null"}]},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"well_purpose":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Purpose"},"well_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Depth"},"well_depth_unit":{"type":"string","title":"Well Depth Unit","default":"ft"},"hole_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Depth"},"hole_depth_unit":{"type":"string","title":"Hole Depth Unit","default":"ft"},"well_casing_diameter":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Diameter"},"well_casing_diameter_unit":{"type":"string","title":"Well Casing Diameter Unit","default":"in"},"well_casing_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Depth"},"well_casing_depth_unit":{"type":"string","title":"Well Casing Depth Unit","default":"ft"},"well_casing_material":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Casing Material"},"well_construction_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Construction Notes"}},"type":"object","required":["id","created_at","release_status","name","thing_type","current_location","first_visit_date"],"title":"WellResponse","description":"Response schema for well details."},"WellScreenResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"release_status":{"type":"string","title":"Release Status"},"thing_id":{"type":"integer","title":"Thing Id"},"thing":{"$ref":"#/components/schemas/WellResponse"},"screen_depth_bottom":{"type":"number","title":"Screen Depth Bottom"},"screen_depth_bottom_unit":{"type":"string","title":"Screen Depth Bottom Unit","default":"ft"},"screen_depth_top":{"type":"number","title":"Screen Depth Top"},"screen_depth_top_unit":{"type":"string","title":"Screen Depth Top Unit","default":"ft"},"screen_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Type"},"screen_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Description"}},"type":"object","required":["id","created_at","release_status","thing_id","thing","screen_depth_bottom","screen_depth_top"],"title":"WellScreenResponse","description":"Response schema for well screen details."}},"securitySchemes":{"OAuth2AuthorizationCodeBearer":{"type":"oauth2","flows":{"authorizationCode":{"scopes":{"openid":"openid","offline_access":"offline_access"},"authorizationUrl":"https://authentik.newmexicowaterdata.org/application/o/authorize/","tokenUrl":"https://authentik.newmexicowaterdata.org/application/o/token/"}}}}}}
\ No newline at end of file
+{"openapi":"3.1.0","info":{"title":"Ocotillo API (Full)","description":"Full API schema (authorized users)","version":"0.0.1"},"paths":{"/asset/upload":{"post":{"tags":["asset"],"summary":"Upload Asset","operationId":"upload_asset_asset_upload_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"client","in":"query","required":false,"schema":{"title":"Client"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_upload_asset_asset_upload_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upload Asset Asset Upload Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/asset":{"post":{"tags":["asset"],"summary":"Add Asset","operationId":"add_asset_asset_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAsset"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["asset"],"summary":"List Assets","description":"List all assets or assets associated with a specific thing.","operationId":"list_assets_asset_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"type":"integer","title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_AssetResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/asset/{asset_id}":{"get":{"tags":["asset"],"summary":"Get Asset","description":"Retrieve an asset by its ID.","operationId":"get_asset_asset__asset_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"integer","title":"Asset Id"}},{"name":"client","in":"query","required":false,"schema":{"title":"Client"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["asset"],"summary":"Update Asset","description":"Update an existing asset.","operationId":"update_asset_asset__asset_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"integer","title":"Asset Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAsset"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["asset"],"summary":"Delete Asset","operationId":"delete_asset_asset__asset_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"integer","title":"Asset Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/asset/{asset_id}/remove":{"delete":{"tags":["asset"],"summary":"Remove Asset","operationId":"remove_asset_asset__asset_id__remove_delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"asset_id","in":"path","required":true,"schema":{"type":"integer","title":"Asset Id"}},{"name":"client","in":"query","required":false,"schema":{"title":"Client"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/author/{author_id}/publications":{"get":{"tags":["author"],"summary":"Get Author Publications","description":"Retrieve all publications for a specific author.","operationId":"get_author_publications_author__author_id__publications_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"author_id","in":"path","required":true,"schema":{"type":"integer","title":"Author Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PublicationResponse"},"title":"Response Get Author Publications Author Author Id Publications Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact":{"post":{"tags":["contact"],"summary":"Create a new contact","operationId":"create_contact_contact_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContact"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get contacts","description":"Retrieve all contacts from the database.\n:param session:\n:return:","operationId":"get_contacts_contact_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ContactResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/address":{"post":{"tags":["contact"],"summary":"Add an address to a contact","description":"Add a new address to an existing contact in the database.\n:param contact_id: ID of the contact to add the address to\n:param address_data: Data for the new address\n:param session: Database session\n:return: Response containing the added address","operationId":"create_address_contact_address_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAddress"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get all addresses","description":"Retrieve all addresses from the database.\n:param session:\n:return:","operationId":"get_addresses_contact_address_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_AddressResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/email":{"post":{"tags":["contact"],"summary":"Add an email to a contact","operationId":"create_email_contact_email_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEmail"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get all emails","description":"Retrieve all emails from the database.\n:param session:\n:return:","operationId":"get_emails_contact_email_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_EmailResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/phone":{"post":{"tags":["contact"],"summary":"Add a phone number to a contact","operationId":"create_phone_contact_phone_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePhone"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get all phones","description":"Retrieve all phone numbers from the database.\n:param session:\n:return:","operationId":"get_phones_contact_phone_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_PhoneResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/email/{email_id}":{"patch":{"tags":["contact"],"summary":"Update Contact Email","description":"Update an existing contact's email in the database.","operationId":"update_contact_email_contact_email__email_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"integer","title":"Email Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEmail"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get email by ID","description":"Retrieve an email by ID from the database.","operationId":"get_email_by_id_contact_email__email_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"integer","title":"Email Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["contact"],"summary":"Delete contact email","description":"Delete a contact email by ID from the database.","operationId":"delete_contact_email_contact_email__email_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"email_id","in":"path","required":true,"schema":{"type":"integer","title":"Email Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/phone/{phone_id}":{"patch":{"tags":["contact"],"summary":"Update Contact Phone","description":"Update an existing contact's phone number in the database.\n:param contact_id: ID of the contact to update\n:param phone_type: Type of the phone to update\n:param phone_number: New phone number\n:param session: Database session\n:return: Updated contact response","operationId":"update_contact_phone_contact_phone__phone_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"phone_id","in":"path","required":true,"schema":{"type":"integer","title":"Phone Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePhone"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get phone by ID","description":"Retrieve a phone by ID from the database.","operationId":"get_phone_by_id_contact_phone__phone_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"phone_id","in":"path","required":true,"schema":{"type":"integer","title":"Phone Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["contact"],"summary":"Delete contact phone","description":"Delete a contact phone by ID from the database.","operationId":"delete_contact_phone_contact_phone__phone_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"phone_id","in":"path","required":true,"schema":{"type":"integer","title":"Phone Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/address/{address_id}":{"patch":{"tags":["contact"],"summary":"Update Contact Address","description":"Update an existing contact's address in the database.\n\n:param address_id:\n:param address_data:\n:param session:\n:return:","operationId":"update_contact_address_contact_address__address_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"integer","title":"Address Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAddress"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get address by ID","description":"Retrieve an address by ID from the database.","operationId":"get_address_by_id_contact_address__address_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"integer","title":"Address Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["contact"],"summary":"Delete contact address","description":"Delete a contact address by ID from the database.","operationId":"delete_contact_address_contact_address__address_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"address_id","in":"path","required":true,"schema":{"type":"integer","title":"Address Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/{contact_id}":{"patch":{"tags":["contact"],"summary":"Update contact","description":"Update an existing contact in the database.\n:param contact_id: ID of the contact to update\n:param contact_data: Data to update the contact with\n:param session: Database session\n:return: Updated contact response","operationId":"update_contact_contact__contact_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContact"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["contact"],"summary":"Get contact by ID","description":"Retrieve a contact by ID from the database.","operationId":"get_contact_by_id_contact__contact_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["contact"],"summary":"Delete contact","description":"Delete a contact by ID from the database.","operationId":"delete_contact_contact__contact_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/{contact_id}/email":{"get":{"tags":["contact"],"summary":"Get contact emails","description":"Retrieve all emails associated with a contact.","operationId":"get_contact_emails_contact__contact_id__email_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_EmailResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/{contact_id}/phone":{"get":{"tags":["contact"],"summary":"Get contact phones","description":"Retrieve all phone numbers associated with a contact.","operationId":"get_contact_phones_contact__contact_id__phone_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_PhoneResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/contact/{contact_id}/address":{"get":{"tags":["contact"],"summary":"Get contact addresses","description":"Retrieve all addresses associated with a contact.","operationId":"get_contact_addresses_contact__contact_id__address_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"contact_id","in":"path","required":true,"schema":{"type":"integer","title":"Contact Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_AddressResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/geospatial":{"get":{"tags":["geospatial"],"summary":"Get Geospatial","description":"Endpoint to retrieve a GeoJSON FeatureCollection or a shapefile.\nIf the request is for a shapefile, it will return a zip file containing the shapefile.\nOtherwise, it returns a GeoJSON FeatureCollection.","operationId":"get_geospatial_geospatial_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_type","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"},"title":"thing_type"}},{"name":"group","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"integer"}],"title":"group"}},{"name":"format","in":"query","required":false,"schema":{"type":"string","pattern":"^(geojson|shapefile)$","title":"format","description":"Format of the response. 'geojson' for GeoJSON FeatureCollection, 'shapefile' for a shapefile.","default":"geojson"},"description":"Format of the response. 'geojson' for GeoJSON FeatureCollection, 'shapefile' for a shapefile."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/geospatial/project-area/{group_id}":{"get":{"tags":["geospatial"],"summary":"Get project area for group","operationId":"get_project_area_geospatial_project_area__group_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeatureCollectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/group":{"post":{"tags":["group"],"summary":"Create a new group","description":"Create a new group in the database.","operationId":"create_group_group_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroup"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["group"],"summary":"Get groups","description":"Retrieve all groups from the database.","operationId":"get_groups_group_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_GroupResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/group/{group_id}":{"get":{"tags":["group"],"summary":"Get group by ID","description":"Retrieve a group by ID from the database.","operationId":"get_group_by_id_group__group_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["group"],"summary":"Update a group by ID","description":"Update a group by ID in the database.","operationId":"update_group_group__group_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGroup"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["group"],"summary":"Delete a group by ID","operationId":"delete_group_group__group_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"group_id","in":"path","required":true,"schema":{"type":"integer","title":"Group Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/category":{"post":{"tags":["lexicon"],"summary":"Add Category","description":"Endpoint to add a category to the lexicon.","operationId":"add_category_lexicon_category_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLexiconCategory"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconCategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get Lexicon Categories","description":"Endpoint to retrieve lexicon categories.","operationId":"get_lexicon_categories_lexicon_category_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"name","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","default":"asc","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_LexiconCategoryResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/term":{"post":{"tags":["lexicon"],"summary":"Add term","description":"Endpoint to add a term to the lexicon.","operationId":"add_term_lexicon_term_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLexiconTerm"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTermResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get lexicon terms","description":"Endpoint to retrieve lexicon terms.","operationId":"get_lexicon_terms_lexicon_term_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}},{"name":"term","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Term"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_LexiconTermResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/triple":{"post":{"tags":["lexicon"],"summary":"Add triple","operationId":"add_triple_lexicon_triple_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLexiconTriple"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTripleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get lexicon triples","description":"Endpoint to retrieve lexicon triples.","operationId":"get_lexicon_triples_lexicon_triple_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","default":"subject","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","default":"asc","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_LexiconTripleResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/term/{term_id}":{"patch":{"tags":["lexicon"],"summary":"Update Lexicon Term","operationId":"update_lexicon_term_lexicon_term__term_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"integer","title":"Term Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLexiconTerm"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTermResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get Lexicon Term","operationId":"get_lexicon_term_lexicon_term__term_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"integer","title":"Term Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTermResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["lexicon"],"summary":"Delete a lexicon term by ID","operationId":"delete_lexicon_term_lexicon_term__term_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"term_id","in":"path","required":true,"schema":{"type":"integer","title":"Term Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/category/{category_id}":{"patch":{"tags":["lexicon"],"summary":"Update Lexicon Category","operationId":"update_lexicon_category_lexicon_category__category_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLexiconCategory"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconCategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get Lexicon Category","operationId":"get_lexicon_category_lexicon_category__category_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconCategoryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["lexicon"],"summary":"Delete a lexicon category by ID","operationId":"delete_lexicon_category_lexicon_category__category_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"category_id","in":"path","required":true,"schema":{"type":"integer","title":"Category Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/lexicon/triple/{triple_id}":{"patch":{"tags":["lexicon"],"summary":"Update Lexicon Triple","operationId":"update_lexicon_triple_lexicon_triple__triple_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"triple_id","in":"path","required":true,"schema":{"type":"integer","title":"Triple Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLexiconTriple"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTripleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["lexicon"],"summary":"Get Lexicon Triple","operationId":"get_lexicon_triple_lexicon_triple__triple_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"triple_id","in":"path","required":true,"schema":{"type":"integer","title":"Triple Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LexiconTripleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["lexicon"],"summary":"Delete a lexicon triple by ID","operationId":"delete_lexicon_triple_lexicon_triple__triple_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"triple_id","in":"path","required":true,"schema":{"type":"integer","title":"Triple Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/location":{"post":{"tags":["location"],"summary":"Create a new sample location","description":"Create a new sample location in the database.","operationId":"create_location_location_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLocation"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["location"],"summary":"Get all locations","description":"Retrieve all wells from the database.","operationId":"get_location_location_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"nearby_point","in":"query","required":false,"schema":{"type":"string","title":"Nearby Point"}},{"name":"nearby_distance_km","in":"query","required":false,"schema":{"type":"number","default":1,"title":"Nearby Distance Km"}},{"name":"within","in":"query","required":false,"schema":{"type":"string","title":"Within"}},{"name":"query","in":"query","required":false,"schema":{"type":"string","title":"Query"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_LocationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/location/{location_id}":{"patch":{"tags":["location"],"summary":"Update a location","description":"Update a sample location in the database.","operationId":"update_location_location__location_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLocation"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["location"],"summary":"Get location by ID","description":"Retrieve a sample location by ID from the database.","operationId":"get_location_by_id_location__location_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["location"],"summary":"Delete location by ID","description":"Delete a sample location by ID from the database.","operationId":"delete_location_location__location_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"location_id","in":"path","required":true,"schema":{"type":"integer","title":"Location Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/groundwater-level":{"post":{"tags":["observation"],"summary":"Add Groundwater Level Observation","description":"Add a new groundwater observation to the database.","operationId":"add_groundwater_level_observation_observation_groundwater_level_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGroundwaterLevelObservation"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroundwaterLevelObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["observation"],"summary":"Get groundwater level observations","description":"Retrieve all groundwater level observations from the database.","operationId":"get_groundwater_level_observations_observation_groundwater_level_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"sensor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"}},{"name":"sample_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_GroundwaterLevelObservationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/water-chemistry":{"post":{"tags":["observation"],"summary":"Add Water Chemistry Observation","description":"Add a new water chemistry observation to the database.\nThis endpoint is currently a placeholder and does not implement any functionality.","operationId":"add_water_chemistry_observation_observation_water_chemistry_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWaterChemistryObservation"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaterChemistryObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["observation"],"summary":"Get water chemistry observations","description":"Retrieve all water chemistry observations from the database.","operationId":"get_water_chemistry_observations_observation_water_chemistry_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"sensor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"}},{"name":"sample_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_WaterChemistryObservationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/groundwater-level/{observation_id}":{"patch":{"tags":["observation"],"summary":"Update Groundwater Level Observation","description":"Update an existing groundwater level observation in the database.","operationId":"update_groundwater_level_observation_observation_groundwater_level__observation_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGroundwaterLevelObservation"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroundwaterLevelObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["observation"],"summary":"Get groundwater level observation by ID","operationId":"get_groundwater_level_observation_by_id_observation_groundwater_level__observation_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroundwaterLevelObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/water-chemistry/{observation_id}":{"patch":{"tags":["observation"],"summary":"Update Water Chemistry Observation","description":"Update an existing water chemistry observation in the database.","operationId":"update_water_chemistry_observation_observation_water_chemistry__observation_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWaterChemistryObservation"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaterChemistryObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["observation"],"summary":"Get water chemistry observation by ID","operationId":"get_water_chemistry_observation_by_id_observation_water_chemistry__observation_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaterChemistryObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/transducer-groundwater-level":{"get":{"tags":["observation"],"summary":"Get transducer groundwater level observations","operationId":"get_transducer_groundwater_level_observations_observation_transducer_groundwater_level_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"parameter_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parameter Id"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_TransducerObservationWithBlockResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation":{"get":{"tags":["observation"],"summary":"Get all observations","operationId":"get_all_observations_observation_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"sensor_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"}},{"name":"sample_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"}},{"name":"start_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time"}},{"name":"end_time","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ObservationResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/observation/{observation_id}":{"get":{"tags":["observation"],"summary":"Get an observation by its ID","operationId":"get_observation_by_id_observation__observation_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObservationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["observation"],"summary":"Delete an observation","operationId":"delete_observation_observation__observation_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"observation_id","in":"path","required":true,"schema":{"type":"integer","title":"Observation Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/publication/add":{"post":{"tags":["publication"],"summary":"Post Publication","description":"Add a new publication.","operationId":"post_publication_publication_add_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePublication"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicationResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"OAuth2AuthorizationCodeBearer":[]}]}},"/sample":{"post":{"tags":["sample"],"summary":"Add Sample","description":"Endpoint to add a sample.","operationId":"add_sample_sample_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSample"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SampleResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sample"],"summary":"Get Samples","description":"Endpoint to retrieve samples.","operationId":"get_samples_sample_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_SampleResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sample/{sample_id}":{"patch":{"tags":["sample"],"summary":"Update Sample","description":"Endpoint to update a sample.","operationId":"update_sample_sample__sample_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSample"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SampleResponse"},{"$ref":"#/components/schemas/ResourceNotFoundResponse"}],"title":"Response Update Sample Sample Sample Id Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sample"],"summary":"Get Sample by ID","description":"Endpoint to retrieve a sample by its ID.","operationId":"get_sample_by_id_sample__sample_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/SampleResponse"},{"$ref":"#/components/schemas/ResourceNotFoundResponse"}],"title":"Response Get Sample By Id Sample Sample Id Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["sample"],"summary":"Delete Sample by ID","operationId":"delete_sample_by_id_sample__sample_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sample_id","in":"path","required":true,"schema":{"type":"integer","title":"Sample Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sensor":{"post":{"tags":["sensor"],"summary":"Add Sensor","description":"Add a sensor to the system.","operationId":"add_sensor_sensor_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSensor"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sensor"],"summary":"Get Sensors","description":"Retrieve all sensors from the system.\nThis endpoint is a placeholder and should be implemented with actual logic.","operationId":"get_sensors_sensor_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"type":"integer","title":"Thing Id"}},{"name":"parameter_id","in":"query","required":false,"schema":{"type":"integer","title":"Parameter Id"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_SensorResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/sensor/{sensor_id}":{"patch":{"tags":["sensor"],"summary":"Update Sensor","description":"Update a sensor in the system.","operationId":"update_sensor_sensor__sensor_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sensor_id","in":"path","required":true,"schema":{"type":"integer","title":"Sensor Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSensor"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["sensor"],"summary":"Delete Sensor","description":"Delete a sensor in the system","operationId":"delete_sensor_sensor__sensor_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sensor_id","in":"path","required":true,"schema":{"type":"integer","title":"Sensor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["sensor"],"summary":"Get Sensor","description":"Retrieve a sensor by its ID.","operationId":"get_sensor_sensor__sensor_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sensor_id","in":"path","required":true,"schema":{"type":"integer","title":"Sensor Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/search":{"get":{"tags":["search"],"summary":"Search Api","description":"Search endpoint for the collaborative network.","operationId":"search_api_search_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":25,"title":"Limit"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_dict_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/water-well":{"get":{"tags":["thing"],"summary":"Get all water wells","description":"Retrieve all wells from the database.","operationId":"get_water_wells_thing_water_well_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"query","in":"query","required":false,"schema":{"type":"string","title":"Query"}},{"name":"name","in":"query","required":false,"schema":{"type":"string","title":"Name"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_WellResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["thing"],"summary":"Create a water well","description":"Create a new water well in the database.","operationId":"create_well_thing_water_well_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWell"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/water-well/{thing_id}":{"get":{"tags":["thing"],"summary":"Get water well by ID","description":"Retrieve a water well by ID from the database.","operationId":"get_well_by_id_thing_water_well__thing_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["thing"],"summary":"Update well by parent thing ID","description":"Update an existing well by ID.","operationId":"update_water_well_thing_water_well__thing_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWell"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/water-well/{thing_id}/well-screen":{"get":{"tags":["thing"],"summary":"Get well screens by water well ID","description":"Retrieve all well screens for a specific water well by its ID.","operationId":"get_well_screens_by_well_id_thing_water_well__thing_id__well_screen_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_WellScreenResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/well-screen":{"get":{"tags":["thing"],"summary":"Get well screens","description":"Retrieve all well screens from the database.","operationId":"get_well_screens_thing_well_screen_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"query","required":false,"schema":{"type":"integer","title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_WellScreenResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["thing"],"summary":"Create a new well screen","description":"Create a new well screen in the database.","operationId":"create_wellscreen_thing_well_screen_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWellScreen"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/well-screen/{wellscreen_id}":{"get":{"tags":["thing"],"summary":"Get well screen by ID","description":"Retrieve a well screen by ID from the database.","operationId":"get_well_screen_by_id_thing_well_screen__wellscreen_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"wellscreen_id","in":"path","required":true,"schema":{"type":"integer","title":"Wellscreen Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/spring":{"get":{"tags":["thing"],"summary":"Get all springs","description":"Retrieve all springs from the database.","operationId":"get_springs_thing_spring_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"query","in":"query","required":false,"schema":{"type":"string","title":"Query"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_SpringResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["thing"],"summary":"Create a new spring","description":"Create a new well in the database.","operationId":"create_spring_thing_spring_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSpring"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpringResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/spring/{thing_id}":{"get":{"tags":["thing"],"summary":"Get spring by ID","description":"Retrieve a spring by ID from the database.","operationId":"get_spring_by_id_thing_spring__thing_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpringResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["thing"],"summary":"Update spring by parent thing ID","description":"Update an existing spring by ID.","operationId":"update_spring_thing_spring__thing_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSpring"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpringResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/id-link":{"get":{"tags":["thing"],"summary":"Get all thing links","description":"Retrieve all thing links, optionally filtered and sorted.","operationId":"get_thing_id_links_thing_id_link_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ThingIdLinkResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["thing"],"summary":"Create a new thing link","description":"Create a new link between a thing and an alternate ID.","operationId":"create_thing_id_link_thing_id_link_post","security":[{"OAuth2AuthorizationCodeBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateThingIdLink"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingIdLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/id-link/{link_id}":{"get":{"tags":["thing"],"summary":"Get thing links by link ID","description":"Retrieve all links for a specific thing by its ID.","operationId":"get_thing_id_links_thing_id_link__link_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingIdLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["thing"],"summary":"Update thing link by ID","operationId":"update_thing_id_link_thing_id_link__link_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateThingIdLink"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingIdLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["thing"],"summary":"Delete thing link by ID","description":"Delete a thing link by ID.","operationId":"delete_thing_id_link_thing_id_link__link_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"link_id","in":"path","required":true,"schema":{"type":"integer","title":"Link Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing":{"get":{"tags":["thing"],"summary":"Get all things","description":"Retrieve all things or filter by type.","operationId":"get_things_thing_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"within","in":"query","required":false,"schema":{"type":"string","title":"Within"}},{"name":"query","in":"query","required":false,"schema":{"type":"string","title":"Query"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","title":"Sort"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","title":"Order"}},{"name":"filter","in":"query","required":false,"schema":{"type":"string","title":"Filter"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ThingResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/{thing_id}":{"get":{"tags":["thing"],"summary":"Get thing by ID","description":"Retrieve a thing by ID from the database.","operationId":"get_thing_by_id_thing__thing_id__get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThingResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["thing"],"summary":"Delete thing by ID","description":"Delete a thing by ID.","operationId":"delete_thing_thing__thing_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/{thing_id}/id-link":{"get":{"tags":["thing"],"summary":"Get thing links by thing ID","description":"Retrieve all links for a specific thing by its ID.","operationId":"get_thing_id_links_thing__thing_id__id_link_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_ThingIdLinkResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/{thing_id}/deployment":{"get":{"tags":["thing"],"summary":"Get deployments by thing ID","description":"Retrieve all deployments for a specific thing by its ID.","operationId":"get_thing_deployments_thing__thing_id__deployment_get","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"thing_id","in":"path","required":true,"schema":{"type":"integer","title":"Thing Id"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number","default":1,"title":"Page"},"description":"Page number"},{"name":"size","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":25,"title":"Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Page_DeploymentResponse_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/thing/well-screen/{well_screen_id}":{"patch":{"tags":["thing"],"summary":"Update Well Screen by ID","operationId":"update_well_screen_thing_well_screen__well_screen_id__patch","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"well_screen_id","in":"path","required":true,"schema":{"type":"integer","title":"Well Screen Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWellScreen"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WellScreenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["thing"],"summary":"Delete well screen by ID","description":"Delete a well screen by ID.","operationId":"delete_well_screen_thing_well_screen__well_screen_id__delete","security":[{"OAuth2AuthorizationCodeBearer":[]}],"parameters":[{"name":"well_screen_id","in":"path","required":true,"schema":{"type":"integer","title":"Well Screen Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AddressResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"contact_id":{"type":"integer","title":"Contact Id"},"address_line_1":{"type":"string","title":"Address Line 1"},"address_line_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line 2"},"city":{"type":"string","title":"City"},"state":{"type":"string","title":"State"},"postal_code":{"type":"string","title":"Postal Code"},"country":{"type":"string","title":"Country"},"address_type":{"$ref":"#/components/schemas/address_type"}},"type":"object","required":["id","created_at","release_status","contact_id","address_line_1","city","state","postal_code","country","address_type"],"title":"AddressResponse","description":"Response schema for address details."},"AssetResponse":{"properties":{"name":{"type":"string","title":"Name"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"storage_path":{"type":"string","title":"Storage Path"},"mime_type":{"type":"string","title":"Mime Type"},"size":{"type":"integer","title":"Size"},"uri":{"type":"string","title":"Uri"},"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"storage_service":{"type":"string","title":"Storage Service"},"signed_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signed Url"}},"type":"object","required":["name","storage_path","mime_type","size","uri","id","created_at","release_status","storage_service"],"title":"AssetResponse"},"AuthorResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"affiliation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Affiliation"}},"type":"object","required":["id","name"],"title":"AuthorResponse","description":"Schema for the response of an author."},"Body_upload_asset_asset_upload_post":{"properties":{"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["file"],"title":"Body_upload_asset_asset_upload_post"},"ContactResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"role":{"$ref":"#/components/schemas/role"},"contact_type":{"$ref":"#/components/schemas/contact_type"},"emails":{"items":{"$ref":"#/components/schemas/EmailResponse"},"type":"array","title":"Emails","default":[]},"phones":{"items":{"$ref":"#/components/schemas/PhoneResponse"},"type":"array","title":"Phones","default":[]},"addresses":{"items":{"$ref":"#/components/schemas/AddressResponse"},"type":"array","title":"Addresses","default":[]},"things":{"items":{"$ref":"#/components/schemas/ThingResponse"},"type":"array","title":"Things","default":[]}},"type":"object","required":["id","created_at","release_status","name","organization","role","contact_type"],"title":"ContactResponse","description":"Response schema for contact details."},"CreateAddress":{"properties":{"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"address_line_1":{"type":"string","title":"Address Line 1"},"address_line_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line 2"},"city":{"type":"string","title":"City"},"state":{"type":"string","title":"State","default":"NM"},"postal_code":{"type":"string","title":"Postal Code"},"country":{"type":"string","title":"Country","default":"United States"},"address_type":{"$ref":"#/components/schemas/address_type","default":"Primary"}},"type":"object","required":["address_line_1","city","postal_code"],"title":"CreateAddress","description":"Schema for creating an address."},"CreateAsset":{"properties":{"name":{"type":"string","title":"Name"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"},"storage_path":{"type":"string","title":"Storage Path"},"mime_type":{"type":"string","title":"Mime Type"},"size":{"type":"integer","title":"Size"},"uri":{"type":"string","title":"Uri"},"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"thing_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},"type":"object","required":["name","storage_path","mime_type","size","uri"],"title":"CreateAsset"},"CreateContact":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"thing_id":{"type":"integer","title":"Thing Id"},"role":{"$ref":"#/components/schemas/role"},"contact_type":{"$ref":"#/components/schemas/contact_type","default":"Primary"},"emails":{"anyOf":[{"items":{"$ref":"#/components/schemas/CreateEmail"},"type":"array"},{"type":"null"}],"title":"Emails"},"phones":{"anyOf":[{"items":{"$ref":"#/components/schemas/CreatePhone"},"type":"array"},{"type":"null"}],"title":"Phones"},"addresses":{"anyOf":[{"items":{"$ref":"#/components/schemas/CreateAddress"},"type":"array"},{"type":"null"}],"title":"Addresses"}},"type":"object","required":["thing_id","role"],"title":"CreateContact","description":"Schema for creating a contact."},"CreateEmail":{"properties":{"email":{"type":"string","title":"Email"},"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"email_type":{"$ref":"#/components/schemas/email_type","default":"Primary"}},"type":"object","required":["email"],"title":"CreateEmail","description":"Schema for creating an email."},"CreateGroundwaterLevelObservation":{"properties":{"parameter_id":{"type":"integer","title":"Parameter Id"},"observation_datetime":{"type":"string","format":"date-time","title":"Observation Datetime"},"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"sample_id":{"type":"integer","title":"Sample Id"},"sensor_id":{"type":"integer","title":"Sensor Id"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"$ref":"#/components/schemas/unit"},{"type":"null"}]},"measuring_point_height":{"type":"number","title":"Measuring Point Height"},"groundwater_level_reason":{"type":"string","title":"Groundwater Level Reason"}},"type":"object","required":["parameter_id","observation_datetime","sample_id","sensor_id","value","unit","measuring_point_height","groundwater_level_reason"],"title":"CreateGroundwaterLevelObservation"},"CreateGroup":{"properties":{"project_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Area"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"parent_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Group Id"},"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"CreateGroup","description":"Schema for creating a group."},"CreateLexiconCategory":{"properties":{"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["name"],"title":"CreateLexiconCategory","description":"Pydantic model for creating a lexicon category.\nThis model can be extended to include additional fields as needed."},"CreateLexiconTerm":{"properties":{"term":{"type":"string","title":"Term"},"definition":{"type":"string","title":"Definition"},"categories":{"items":{"type":"string"},"type":"array","title":"Categories"}},"type":"object","required":["term","definition","categories"],"title":"CreateLexiconTerm","description":"Pydantic model for creating a lexicon term.\nThis model can be extended to include additional fields as needed."},"CreateLexiconTriple":{"properties":{"subject":{"$ref":"#/components/schemas/CreateLexiconTerm"},"predicate":{"type":"string","title":"Predicate"},"object_":{"$ref":"#/components/schemas/CreateLexiconTerm"}},"type":"object","required":["subject","predicate","object_"],"title":"CreateLexiconTriple","description":"Pydantic model for creating a triple.\nThis model can be extended to include additional fields as needed."},"CreateLocation":{"properties":{"point":{"type":"string","title":"Point"},"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"elevation":{"type":"number","title":"Elevation"},"elevation_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elevation Accuracy"},"elevation_method":{"anyOf":[{"$ref":"#/components/schemas/elevation_method"},{"type":"null"}]},"coordinate_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coordinate Accuracy"},"coordinate_method":{"anyOf":[{"$ref":"#/components/schemas/coordinate_method"},{"type":"null"}]}},"type":"object","required":["point","elevation"],"title":"CreateLocation","description":"Schema for creating a sample location."},"CreatePhone":{"properties":{"phone_number":{"type":"string","title":"Phone Number"},"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"phone_type":{"$ref":"#/components/schemas/phone_type","default":"Primary"},"nma_phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nma Phone Number"}},"type":"object","required":["phone_number"],"title":"CreatePhone","description":"Schema for creating a phone number."},"CreatePublication":{"properties":{"title":{"type":"string","title":"Title"},"authors":{"items":{"type":"string"},"type":"array","title":"Authors"},"year":{"type":"integer","title":"Year"},"doi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doi"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"publication_type":{"$ref":"#/components/schemas/publication_type"}},"type":"object","required":["title","authors","year","publication_type"],"title":"CreatePublication","description":"Schema for creating a new publication."},"CreateSample":{"properties":{"sample_date":{"type":"string","format":"date-time","title":"Sample Date"},"depth_top":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Top"},"depth_bottom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Bottom"},"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"field_activity_id":{"type":"integer","title":"Field Activity Id"},"field_event_participant_id":{"type":"integer","title":"Field Event Participant Id"},"sample_name":{"type":"string","title":"Sample Name"},"sample_matrix":{"$ref":"#/components/schemas/sample_matrix"},"sample_method":{"$ref":"#/components/schemas/sample_method"},"qc_type":{"$ref":"#/components/schemas/qc_type"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["sample_date","field_activity_id","field_event_participant_id","sample_name","sample_matrix","sample_method","qc_type"],"title":"CreateSample"},"CreateSensor":{"properties":{"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"name":{"type":"string","title":"Name"},"sensor_type":{"$ref":"#/components/schemas/sensor_type"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"serial_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serial No"},"pcn_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pcn Number"},"owner_agency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Agency"},"sensor_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sensor Status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["name","sensor_type"],"title":"CreateSensor","description":"Schema for creating a new sensor."},"CreateSpring":{"properties":{"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Group Id"},"name":{"type":"string","title":"Name"},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"spring_type":{"anyOf":[{"$ref":"#/components/schemas/spring_type"},{"type":"null"}]}},"type":"object","required":["location_id","name"],"title":"CreateSpring","description":"Schema for creating a spring."},"CreateThingIdLink":{"properties":{"thing_id":{"type":"integer","title":"Thing Id"},"relation":{"type":"string","title":"Relation"},"alternate_id":{"type":"string","title":"Alternate Id"},"alternate_organization":{"type":"string","title":"Alternate Organization"}},"type":"object","required":["thing_id","relation","alternate_id","alternate_organization"],"title":"CreateThingIdLink","description":"Schema for creating a link between a thing and its ID."},"CreateWaterChemistryObservation":{"properties":{"parameter_id":{"type":"integer","title":"Parameter Id"},"observation_datetime":{"type":"string","format":"date-time","title":"Observation Datetime"},"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"sample_id":{"type":"integer","title":"Sample Id"},"sensor_id":{"type":"integer","title":"Sensor Id"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"$ref":"#/components/schemas/unit"},{"type":"null"}]}},"type":"object","required":["parameter_id","observation_datetime","sample_id","sensor_id","value","unit"],"title":"CreateWaterChemistryObservation"},"CreateWell":{"properties":{"well_depth":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Well Depth","description":"Well depth in feet"},"hole_depth":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Hole Depth","description":"Hole depth in feet"},"well_casing_depth":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Well Casing Depth","description":"Well casing depth in feet"},"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"location_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Location Id"},"group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Group Id"},"name":{"type":"string","title":"Name"},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"well_purposes":{"anyOf":[{"items":{"$ref":"#/components/schemas/well_purpose"},"type":"array"},{"type":"null"}],"title":"Well Purposes"},"well_construction_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Construction Notes"},"well_casing_diameter":{"anyOf":[{"type":"number","exclusiveMinimum":0.0},{"type":"null"}],"title":"Well Casing Diameter","description":"Well casing diameter in inches"},"well_casing_materials":{"anyOf":[{"items":{"$ref":"#/components/schemas/casing_material"},"type":"array"},{"type":"null"}],"title":"Well Casing Materials"}},"type":"object","required":["location_id","name"],"title":"CreateWell","description":"Schema for creating a well."},"CreateWellScreen":{"properties":{"release_status":{"$ref":"#/components/schemas/release_status","default":"draft"},"thing_id":{"type":"integer","title":"Thing Id"},"screen_depth_bottom":{"type":"number","exclusiveMinimum":0.0,"title":"Screen Depth Bottom","description":"Screen depth bottom in feet"},"screen_depth_top":{"type":"number","exclusiveMinimum":0.0,"title":"Screen Depth Top","description":"Screen depth top in feet"},"screen_type":{"anyOf":[{"$ref":"#/components/schemas/screen_type"},{"type":"null"}]},"screen_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Description"}},"type":"object","required":["thing_id","screen_depth_bottom","screen_depth_top"],"title":"CreateWellScreen","description":"Schema for creating a well screen."},"DeploymentResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"thing_id":{"type":"integer","title":"Thing Id"},"sensor":{"$ref":"#/components/schemas/SensorResponse"},"installation_date":{"type":"string","format":"date","title":"Installation Date"},"removal_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Removal Date"},"recording_interval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recording Interval"},"recording_interval_units":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Recording Interval Units"},"hanging_cable_length":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hanging Cable Length"},"hanging_point_height":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hanging Point Height"},"hanging_point_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hanging Point Description"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","created_at","release_status","thing_id","sensor","installation_date","removal_date","recording_interval","recording_interval_units","hanging_cable_length","hanging_point_height","hanging_point_description","notes"],"title":"DeploymentResponse"},"EmailResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"contact_id":{"type":"integer","title":"Contact Id"},"email":{"type":"string","title":"Email"},"email_type":{"$ref":"#/components/schemas/email_type"}},"type":"object","required":["id","created_at","release_status","contact_id","email","email_type"],"title":"EmailResponse","description":"Response schema for email details."},"Feature":{"properties":{"type":{"type":"string","title":"Type","default":"Feature"},"geometry":{"$ref":"#/components/schemas/GeoJSONGeometry"},"properties":{"additionalProperties":true,"type":"object","title":"Properties","default":{}}},"type":"object","required":["geometry"],"title":"Feature","description":"Feature schema for GeoJSON response."},"FeatureCollectionResponse":{"properties":{"type":{"type":"string","title":"Type","default":"FeatureCollection"},"features":{"items":{"$ref":"#/components/schemas/Feature"},"type":"array","title":"Features","default":[]}},"type":"object","title":"FeatureCollectionResponse","description":"Response schema for GeoJSON FeatureCollection."},"FieldActivityResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"field_event_id":{"type":"integer","title":"Field Event Id"},"activity_type":{"$ref":"#/components/schemas/activity_type"}},"type":"object","required":["id","created_at","release_status","field_event_id","activity_type"],"title":"FieldActivityResponse"},"FieldEventResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"thing_id":{"type":"integer","title":"Thing Id"},"event_date":{"type":"string","format":"date-time","title":"Event Date"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","created_at","release_status","thing_id","event_date","notes"],"title":"FieldEventResponse"},"GeoJSONGeometry":{"properties":{"type":{"type":"string","title":"Type"},"coordinates":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"items":{"items":{"type":"number"},"type":"array"},"type":"array"},{"items":{"items":{"items":{"type":"number"},"type":"array"},"type":"array"},"type":"array"},{"items":{"items":{"items":{"items":{"type":"number"},"type":"array"},"type":"array"},"type":"array"},"type":"array"}],"title":"Coordinates"}},"type":"object","required":["type","coordinates"],"title":"GeoJSONGeometry","description":"Geometry schema for GeoJSON response."},"GroundwaterLevelObservationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"sample_id":{"type":"integer","title":"Sample Id"},"sensor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"},"observation_datetime":{"type":"string","title":"Observation Datetime"},"parameter":{"$ref":"#/components/schemas/ParameterResponse"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"$ref":"#/components/schemas/unit"},"depth_to_water_bgs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth To Water Bgs"},"measuring_point_height":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Measuring Point Height"},"groundwater_level_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Groundwater Level Reason"}},"type":"object","required":["id","created_at","release_status","sample_id","sensor_id","observation_datetime","parameter","value","unit","depth_to_water_bgs","measuring_point_height","groundwater_level_reason"],"title":"GroundwaterLevelObservationResponse"},"GroupResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"name":{"type":"string","title":"Name"},"project_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Area"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"parent_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Group Id"}},"type":"object","required":["id","created_at","release_status","name","project_area","description","parent_group_id"],"title":"GroupResponse","description":"Pydantic model for the response of a group.\nThis model can be extended to include additional fields as needed."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LexiconCategoryResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["id","created_at","name"],"title":"LexiconCategoryResponse","description":"Pydantic model for the response of a lexicon category.\nThis model can be extended to include additional fields as needed."},"LexiconTermResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"term":{"type":"string","title":"Term"},"definition":{"type":"string","title":"Definition"},"categories":{"items":{"$ref":"#/components/schemas/LexiconCategoryResponse"},"type":"array","title":"Categories","default":[]}},"type":"object","required":["id","created_at","term","definition"],"title":"LexiconTermResponse","description":"Pydantic model for the response of a lexicon term.\nThis model can be extended to include additional fields as needed."},"LexiconTripleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"subject":{"type":"string","title":"Subject"},"predicate":{"type":"string","title":"Predicate"},"object_":{"type":"string","title":"Object"}},"type":"object","required":["id","created_at","subject","predicate","object_"],"title":"LexiconTripleResponse"},"LocationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"point":{"type":"string","title":"Point"},"elevation":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elevation"},"horizontal_datum":{"type":"string","title":"Horizontal Datum","default":"WGS84"},"vertical_datum":{"type":"string","title":"Vertical Datum","default":"NAVD88"},"elevation_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elevation Accuracy"},"elevation_method":{"anyOf":[{"$ref":"#/components/schemas/elevation_method"},{"type":"null"}]},"coordinate_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coordinate Accuracy"},"coordinate_method":{"anyOf":[{"$ref":"#/components/schemas/coordinate_method"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"county":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"County"},"quad_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quad Name"}},"type":"object","required":["id","created_at","release_status","notes","point","elevation","elevation_accuracy","elevation_method","coordinate_accuracy","coordinate_method","state","county","quad_name"],"title":"LocationResponse","description":"Response schema for sample location details."},"ObservationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"sample_id":{"type":"integer","title":"Sample Id"},"sensor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"},"observation_datetime":{"type":"string","title":"Observation Datetime"},"parameter":{"$ref":"#/components/schemas/ParameterResponse"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"$ref":"#/components/schemas/unit"},"depth_to_water_bgs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth To Water Bgs"},"measuring_point_height":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Measuring Point Height"},"groundwater_level_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Groundwater Level Reason"}},"type":"object","required":["id","created_at","release_status","sample_id","sensor_id","observation_datetime","parameter","value","unit","depth_to_water_bgs","measuring_point_height","groundwater_level_reason"],"title":"ObservationResponse","description":"Response model for observations.\nCombines groundwater level and geothermal observation responses."},"Page_AddressResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AddressResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[AddressResponse]"},"Page_AssetResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AssetResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[AssetResponse]"},"Page_ContactResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ContactResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[ContactResponse]"},"Page_DeploymentResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/DeploymentResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[DeploymentResponse]"},"Page_EmailResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/EmailResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[EmailResponse]"},"Page_GroundwaterLevelObservationResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GroundwaterLevelObservationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[GroundwaterLevelObservationResponse]"},"Page_GroupResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/GroupResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[GroupResponse]"},"Page_LexiconCategoryResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LexiconCategoryResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[LexiconCategoryResponse]"},"Page_LexiconTermResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LexiconTermResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[LexiconTermResponse]"},"Page_LexiconTripleResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LexiconTripleResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[LexiconTripleResponse]"},"Page_LocationResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/LocationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[LocationResponse]"},"Page_ObservationResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ObservationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[ObservationResponse]"},"Page_PhoneResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PhoneResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[PhoneResponse]"},"Page_SampleResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SampleResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[SampleResponse]"},"Page_SensorResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SensorResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[SensorResponse]"},"Page_SpringResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SpringResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[SpringResponse]"},"Page_ThingIdLinkResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ThingIdLinkResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[ThingIdLinkResponse]"},"Page_ThingResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ThingResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[ThingResponse]"},"Page_TransducerObservationWithBlockResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TransducerObservationWithBlockResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[TransducerObservationWithBlockResponse]"},"Page_WaterChemistryObservationResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WaterChemistryObservationResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[WaterChemistryObservationResponse]"},"Page_WellResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WellResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[WellResponse]"},"Page_WellScreenResponse_":{"properties":{"items":{"items":{"$ref":"#/components/schemas/WellScreenResponse"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[WellScreenResponse]"},"Page_dict_":{"properties":{"items":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Items"},"total":{"type":"integer","minimum":0.0,"title":"Total"},"page":{"type":"integer","minimum":1.0,"title":"Page"},"size":{"type":"integer","minimum":1.0,"title":"Size"},"pages":{"type":"integer","minimum":0.0,"title":"Pages"}},"type":"object","required":["items","total","page","size","pages"],"title":"Page[dict]"},"ParameterResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"parameter_name":{"$ref":"#/components/schemas/parameter_name"},"matrix":{"type":"string","title":"Matrix"},"parameter_type":{"anyOf":[{"$ref":"#/components/schemas/parameter_type"},{"type":"null"}]},"cas_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cas Number"},"default_unit":{"anyOf":[{"$ref":"#/components/schemas/unit"},{"type":"null"}]}},"type":"object","required":["id","created_at","release_status","parameter_name","matrix","parameter_type","cas_number","default_unit"],"title":"ParameterResponse","description":"Pydantic model for the response of a parameter.\nThis model can be extended to include additional fields as needed."},"PhoneResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"contact_id":{"type":"integer","title":"Contact Id"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"phone_type":{"type":"string","title":"Phone Type"},"nma_phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nma Phone Number"}},"type":"object","required":["id","created_at","release_status","contact_id","phone_type"],"title":"PhoneResponse","description":"Response schema for phone details."},"PublicationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"authors":{"items":{"$ref":"#/components/schemas/AuthorResponse"},"type":"array","title":"Authors"},"year":{"type":"integer","title":"Year"},"doi":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Doi"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"publication_type":{"$ref":"#/components/schemas/publication_type"}},"type":"object","required":["id","title","authors","year","publication_type"],"title":"PublicationResponse","description":"Schema for the response of a publication."},"ResourceNotFoundResponse":{"properties":{"detail":{"type":"string","title":"Detail"}},"type":"object","required":["detail"],"title":"ResourceNotFoundResponse"},"SampleResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"thing":{"$ref":"#/components/schemas/ThingResponse"},"field_event":{"$ref":"#/components/schemas/FieldEventResponse"},"field_activity":{"$ref":"#/components/schemas/FieldActivityResponse"},"contact":{"$ref":"#/components/schemas/ContactResponse"},"sample_date":{"type":"string","title":"Sample Date"},"sample_name":{"type":"string","title":"Sample Name"},"sample_matrix":{"$ref":"#/components/schemas/sample_matrix"},"sample_method":{"$ref":"#/components/schemas/sample_method"},"qc_type":{"$ref":"#/components/schemas/qc_type"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"depth_top":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Top"},"depth_bottom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Bottom"}},"type":"object","required":["id","created_at","release_status","thing","field_event","field_activity","contact","sample_date","sample_name","sample_matrix","sample_method","qc_type","notes","depth_top","depth_bottom"],"title":"SampleResponse","description":"Developer's note\n\nThe frontend uses multiple fields for a thing, field_even, and field_activity,\nwhich is why full ThingResponse, FieldEventResponse, and FieldActivityResponse\nare returned. If the response becomes too large and slow, we can use\n.model_dump() and exlude fields to reduce the size."},"SensorResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"name":{"type":"string","title":"Name"},"sensor_type":{"$ref":"#/components/schemas/sensor_type"},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"serial_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serial No"},"pcn_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pcn Number"},"owner_agency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Agency"},"sensor_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sensor Status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","required":["id","created_at","release_status","name","sensor_type","model","serial_no","pcn_number","owner_agency","sensor_status","notes"],"title":"SensorResponse"},"SpringResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"name":{"type":"string","title":"Name"},"thing_type":{"type":"string","title":"Thing Type"},"current_location":{"anyOf":[{"$ref":"#/components/schemas/LocationResponse"},{"type":"null"}]},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"spring_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spring Type"}},"type":"object","required":["id","created_at","release_status","name","thing_type","current_location","first_visit_date"],"title":"SpringResponse","description":"Response schema for spring details."},"ThingIdLinkResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"thing_id":{"type":"integer","title":"Thing Id"},"thing":{"$ref":"#/components/schemas/ThingResponse"},"relation":{"type":"string","title":"Relation"},"alternate_id":{"type":"string","title":"Alternate Id"},"alternate_organization":{"type":"string","title":"Alternate Organization"}},"type":"object","required":["id","created_at","release_status","thing_id","thing","relation","alternate_id","alternate_organization"],"title":"ThingIdLinkResponse"},"ThingResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"name":{"type":"string","title":"Name"},"thing_type":{"type":"string","title":"Thing Type"},"current_location":{"anyOf":[{"$ref":"#/components/schemas/LocationResponse"},{"type":"null"}]},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"spring_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spring Type"},"well_purposes":{"items":{"$ref":"#/components/schemas/well_purpose"},"type":"array","title":"Well Purposes","default":[]},"well_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Depth"},"well_depth_unit":{"type":"string","title":"Well Depth Unit","default":"ft"},"hole_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Depth"},"hole_depth_unit":{"type":"string","title":"Hole Depth Unit","default":"ft"},"well_casing_diameter":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Diameter"},"well_casing_diameter_unit":{"type":"string","title":"Well Casing Diameter Unit","default":"in"},"well_casing_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Depth"},"well_casing_depth_unit":{"type":"string","title":"Well Casing Depth Unit","default":"ft"},"well_casing_materials":{"items":{"$ref":"#/components/schemas/casing_material"},"type":"array","title":"Well Casing Materials","default":[]},"well_construction_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Construction Notes"}},"type":"object","required":["id","created_at","release_status","name","thing_type","current_location","first_visit_date"],"title":"ThingResponse"},"TransducerObservationBlockResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"review_status":{"$ref":"#/components/schemas/review_status"},"start_datetime":{"type":"string","format":"date-time","title":"Start Datetime"},"end_datetime":{"type":"string","format":"date-time","title":"End Datetime"},"parameter_id":{"type":"integer","title":"Parameter Id"}},"type":"object","required":["id","created_at","release_status","review_status","start_datetime","end_datetime","parameter_id"],"title":"TransducerObservationBlockResponse"},"TransducerObservationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"value":{"type":"number","title":"Value"},"observation_datetime":{"type":"string","format":"date-time","title":"Observation Datetime"},"parameter_id":{"type":"integer","title":"Parameter Id"},"deployment_id":{"type":"integer","title":"Deployment Id"}},"type":"object","required":["id","created_at","release_status","value","observation_datetime","parameter_id","deployment_id"],"title":"TransducerObservationResponse"},"TransducerObservationWithBlockResponse":{"properties":{"observation":{"$ref":"#/components/schemas/TransducerObservationResponse"},"block":{"$ref":"#/components/schemas/TransducerObservationBlockResponse"}},"type":"object","required":["observation","block"],"title":"TransducerObservationWithBlockResponse"},"UpdateAddress":{"properties":{"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"address_line_1":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line 1"},"address_line_2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address Line 2"},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City"},"state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"},"postal_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Postal Code"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"address_type":{"anyOf":[{"$ref":"#/components/schemas/address_type"},{"type":"null"}]}},"type":"object","title":"UpdateAddress","description":"Schema for updating address information."},"UpdateAsset":{"properties":{"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label"}},"type":"object","title":"UpdateAsset"},"UpdateContact":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"role":{"anyOf":[{"$ref":"#/components/schemas/role"},{"type":"null"}]},"contact_type":{"anyOf":[{"$ref":"#/components/schemas/contact_type"},{"type":"null"}]},"thing_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Thing Id"}},"type":"object","title":"UpdateContact","description":"Schema for updating contact information."},"UpdateEmail":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"email_type":{"anyOf":[{"$ref":"#/components/schemas/email_type"},{"type":"null"}]}},"type":"object","title":"UpdateEmail","description":"Schema for updating email information."},"UpdateGroundwaterLevelObservation":{"properties":{"parameter_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parameter Id"},"observation_datetime":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Observation Datetime"},"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"sample_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"},"sensor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"$ref":"#/components/schemas/unit"},{"type":"null"}]},"measuring_point_height":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Measuring Point Height"},"groundwater_level_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Groundwater Level Reason"}},"type":"object","title":"UpdateGroundwaterLevelObservation"},"UpdateGroup":{"properties":{"project_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Area"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"parent_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parent Group Id"},"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","title":"UpdateGroup","description":"Pydantic model for updating a group.\nThis model can be extended to include additional fields as needed."},"UpdateLexiconCategory":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","title":"UpdateLexiconCategory"},"UpdateLexiconTerm":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Term"},"definition":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Definition"}},"type":"object","title":"UpdateLexiconTerm"},"UpdateLexiconTriple":{"properties":{"subject":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subject"},"predicate":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Predicate"},"object_":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object"}},"type":"object","title":"UpdateLexiconTriple"},"UpdateLocation":{"properties":{"point":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Point"},"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"},"elevation":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elevation"},"elevation_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elevation Accuracy"},"elevation_method":{"anyOf":[{"$ref":"#/components/schemas/elevation_method"},{"type":"null"}]},"coordinate_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coordinate Accuracy"},"coordinate_method":{"anyOf":[{"$ref":"#/components/schemas/coordinate_method"},{"type":"null"}]}},"type":"object","title":"UpdateLocation","description":"Schema for updating a location."},"UpdatePhone":{"properties":{"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number"},"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Contact Id"},"phone_type":{"anyOf":[{"$ref":"#/components/schemas/phone_type"},{"type":"null"}]}},"type":"object","title":"UpdatePhone","description":"Schema for updating phone information."},"UpdateSample":{"properties":{"sample_date":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Sample Date"},"depth_top":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Top"},"depth_bottom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Depth Bottom"},"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"field_activity_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Field Activity Id"},"field_event_participant_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Field Event Participant Id"},"sample_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sample Name"},"sample_matrix":{"anyOf":[{"$ref":"#/components/schemas/sample_matrix"},{"type":"null"}]},"sample_method":{"anyOf":[{"$ref":"#/components/schemas/sample_method"},{"type":"null"}]},"qc_type":{"anyOf":[{"$ref":"#/components/schemas/qc_type"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"UpdateSample"},"UpdateSensor":{"properties":{"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"sensor_type":{"anyOf":[{"$ref":"#/components/schemas/sensor_type"},{"type":"null"}]},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"},"serial_no":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Serial No"},"pcn_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pcn Number"},"owner_agency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Owner Agency"},"sensor_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sensor Status"},"notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Notes"}},"type":"object","title":"UpdateSensor"},"UpdateSpring":{"properties":{"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"spring_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Spring Type"}},"type":"object","title":"UpdateSpring"},"UpdateThingIdLink":{"properties":{"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"alternate_organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alternate Organization"},"alternate_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alternate Id"},"relation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Relation"}},"type":"object","title":"UpdateThingIdLink"},"UpdateWaterChemistryObservation":{"properties":{"parameter_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Parameter Id"},"observation_datetime":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Observation Datetime"},"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"sample_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sample Id"},"sensor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"anyOf":[{"$ref":"#/components/schemas/unit"},{"type":"null"}]}},"type":"object","title":"UpdateWaterChemistryObservation"},"UpdateWell":{"properties":{"well_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Depth"},"hole_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Depth"},"well_casing_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Depth"},"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"well_purposes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Well Purposes"},"well_construction_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Construction Notes"},"well_casing_diameter":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Diameter"},"well_casing_materials":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Well Casing Materials"}},"type":"object","title":"UpdateWell"},"UpdateWellScreen":{"properties":{"release_status":{"anyOf":[{"$ref":"#/components/schemas/release_status"},{"type":"null"}]},"screen_depth_bottom":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Screen Depth Bottom"},"screen_depth_top":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Screen Depth Top"},"screen_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Description"},"screen_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Type"}},"type":"object","title":"UpdateWellScreen"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WaterChemistryObservationResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"sample_id":{"type":"integer","title":"Sample Id"},"sensor_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sensor Id"},"observation_datetime":{"type":"string","title":"Observation Datetime"},"parameter":{"$ref":"#/components/schemas/ParameterResponse"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"unit":{"$ref":"#/components/schemas/unit"}},"type":"object","required":["id","created_at","release_status","sample_id","sensor_id","observation_datetime","parameter","value","unit"],"title":"WaterChemistryObservationResponse"},"WellResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"name":{"type":"string","title":"Name"},"thing_type":{"type":"string","title":"Thing Type"},"current_location":{"anyOf":[{"$ref":"#/components/schemas/LocationResponse"},{"type":"null"}]},"first_visit_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"First Visit Date"},"well_purposes":{"items":{"$ref":"#/components/schemas/well_purpose"},"type":"array","title":"Well Purposes","default":[]},"well_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Depth"},"well_depth_unit":{"type":"string","title":"Well Depth Unit","default":"ft"},"hole_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hole Depth"},"hole_depth_unit":{"type":"string","title":"Hole Depth Unit","default":"ft"},"well_casing_diameter":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Diameter"},"well_casing_diameter_unit":{"type":"string","title":"Well Casing Diameter Unit","default":"in"},"well_casing_depth":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Well Casing Depth"},"well_casing_depth_unit":{"type":"string","title":"Well Casing Depth Unit","default":"ft"},"well_casing_materials":{"items":{"$ref":"#/components/schemas/casing_material"},"type":"array","title":"Well Casing Materials","default":[]},"well_construction_notes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Well Construction Notes"}},"type":"object","required":["id","created_at","release_status","name","thing_type","current_location","first_visit_date"],"title":"WellResponse","description":"Response schema for well details."},"WellScreenResponse":{"properties":{"id":{"type":"integer","title":"Id"},"created_at":{"type":"string","title":"Created At"},"release_status":{"$ref":"#/components/schemas/release_status"},"thing_id":{"type":"integer","title":"Thing Id"},"thing":{"$ref":"#/components/schemas/WellResponse"},"screen_depth_bottom":{"type":"number","title":"Screen Depth Bottom"},"screen_depth_bottom_unit":{"type":"string","title":"Screen Depth Bottom Unit","default":"ft"},"screen_depth_top":{"type":"number","title":"Screen Depth Top"},"screen_depth_top_unit":{"type":"string","title":"Screen Depth Top Unit","default":"ft"},"screen_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Type"},"screen_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Screen Description"}},"type":"object","required":["id","created_at","release_status","thing_id","thing","screen_depth_bottom","screen_depth_top"],"title":"WellScreenResponse","description":"Response schema for well screen details."},"activity_type":{"type":"string","enum":["groundwater level","water chemistry"],"title":"activity_type"},"address_type":{"type":"string","enum":["Primary","Work","Personal","Mailing","Physical"],"title":"address_type"},"casing_material":{"type":"string","enum":["PVC","Steel","Concrete"],"title":"casing_material"},"contact_type":{"type":"string","enum":["Primary","Secondary","Field Event Participant"],"title":"contact_type"},"coordinate_method":{"type":"string","enum":["Unknown","Differentially corrected GPS","Survey-grade global positioning system (SGPS)","GPS, uncorrected","Interpolated from map","Interpolated from DEM","Reported","Transit, theodolite, or other survey method"],"title":"coordinate_method"},"elevation_method":{"type":"string","enum":["Altimeter","Differentially corrected GPS","Survey-grade GPS","Global positioning system (GPS)","LiDAR DEM","Level or other survey method","Interpolated from topographic map","Interpolated from digital elevation model (DEM)","Reported","Survey-grade Global Navigation Satellite Sys, Lvl1","USGS National Elevation Dataset (NED)","Unknown"],"title":"elevation_method"},"email_type":{"type":"string","enum":["Primary","Work","Personal"],"title":"email_type"},"parameter_name":{"type":"string","enum":["groundwater level","temperature","pH","Alkalinity, Total","Alkalinity as CaCO3","Alkalinity as OH-","Calcium","Calcium, total, unfiltered","Chloride","Carbonate","Conductivity, laboratory","Bicarbonate","Hardness (CaCO3)","Ion Balance","Potassium","Potassium, total, unfiltered","Magnesium","Magnesium, total, unfiltered","Sodium","Sodium, total, unfiltered","Sodium and Potassium combined","Sulfate","Total Anions","Total Cations","Total Dissolved Solids","Tritium","Age of Water using dissolved gases","Silver","Silver, total, unfiltered","Aluminum","Aluminum, total, unfiltered","Arsenic","Arsenic, total, unfiltered","Boron","Boron, total, unfiltered","Barium","Barium, total, unfiltered","Beryllium","Beryllium, total, unfiltered","Bromide","13C:12C ratio","14C content, pmc","Uncorrected C14 age","Cadmium","Cadmium, total, unfiltered","Chlorofluorocarbon-11 avg age","Chlorofluorocarbon-113 avg age","Chlorofluorocarbon-113/12 avg RATIO age","Chlorofluorocarbon-12 avg age","Cobalt","Cobalt, total, unfiltered","Chromium","Chromium, total, unfiltered","Copper","Copper, total, unfiltered","delta O18 sulfate","Sulfate 34 isotope ratio","Fluoride","Iron","Iron, total, unfiltered","Deuterium:Hydrogen ratio","Mercury","Mercury, total, unfiltered","Lithium","Lithium, total, unfiltered","Manganese","Manganese, total, unfiltered","Molybdenum","Molybdenum, total, unfiltered","Nickel","Nickel, total, unfiltered","Nitrite (as NO2)","Nitrite (as N)","Nitrate (as NO3)","Nitrate (as N)","18O:16O ratio","Lead","Lead, total, unfiltered","Phosphate","Antimony","Antimony, total, unfiltered","Selenium","Selenium, total, unfiltered","Sulfur hexafluoride","Silicon","Silicon, total, unfiltered","Silica","Tin","Tin, total, unfiltered","Strontium","Strontium, total, unfiltered","Strontium 87:86 ratio","Thorium","Thorium, total, unfiltered","Titanium","Titanium, total, unfiltered","Thallium","Thallium, total, unfiltered","Uranium (total, by ICP-MS)","Uranium, total, unfiltered","Vanadium","Vanadium, total, unfiltered","Zinc","Zinc, total, unfiltered","Corrected C14 in years","Arsenite (arsenic species)","Arsenate (arsenic species)","Cyanide","Estimated recharge temperature","Hydrogen sulfide","Ammonia","Ammonium","Total nitrogen","Total Kjeldahl nitrogen","Dissolved organic carbon","Total organic carbon","delta C13 of dissolved inorganic carbon"],"title":"parameter_name"},"parameter_type":{"type":"string","enum":["Field Parameter","Metal","Radionuclide","Major Element","Minor Element","Physical property"],"title":"parameter_type"},"phone_type":{"type":"string","enum":["Primary","Work","Home","Mobile"],"title":"phone_type"},"publication_type":{"type":"string","enum":["Map","Report","Dataset","Model","Software","Paper","Thesis","Book","Conference","Webpage"],"title":"publication_type"},"qc_type":{"type":"string","enum":["Normal","Duplicate","Split","Field Blank","Trip Blank","Equipment Blank"],"title":"qc_type"},"release_status":{"type":"string","enum":["draft","provisional","final","published","archived","public","private"],"title":"release_status"},"review_status":{"type":"string","enum":["approved","not reviewed"],"title":"review_status"},"role":{"type":"string","enum":["Unknown","Owner","Manager","Operator","Driller","Geologist","Hydrologist","Hydrogeologist","Engineer","Organization","Specialist","Technician","Research Assistant","Research Scientist","Graduate Student","Biologist","Lab Manager","Publications Manager","Software Developer"],"title":"role"},"sample_matrix":{"type":"string","enum":["water","groundwater","soil"],"title":"sample_matrix"},"sample_method":{"type":"string","enum":["Unknown","Airline measurement","Analog or graphic recorder","Calibrated airline measurement","Differential GPS; especially applicable to surface expression of ground water","Estimated","Transducer","Pressure-gage measurement","Calibrated pressure-gage measurement","Interpreted from geophysical logs","Manometer","Non-recording gage","Observed (required for F, N, and W water level status)","Sonic water level meter (acoustic pulse)","Reported, method not known","Steel-tape measurement","Electric tape measurement (E-probe)","Unknown (for legacy data only; not for new data entry)","Calibrated electric tape; accuracy of equipment has been checked","Calibrated electric cable","Uncalibrated electric cable","Continuous acoustic sounder","Measurement not attempted","null placeholder","bailer","faucet at well head","faucet or outlet at house","grab sample","pump","thief sampler"],"title":"sample_method"},"screen_type":{"type":"string","enum":["PVC","Steel","Concrete"],"title":"screen_type"},"sensor_type":{"type":"string","enum":["Pressure Transducer","Data Logger","Barometer","Acoustic Sounder","Precip Collector","Camera","Soil Moisture Sensor","Tipping Bucket"],"title":"sensor_type"},"spring_type":{"type":"string","enum":["Artesian","Ephemeral","Perennial","Thermal","Mineral"],"title":"spring_type"},"unit":{"type":"string","enum":["dimensionless","ft","ftbgs","F","mg/L","mW/m²","W/m²","W/m·K","m²/s","deg C","deg second","deg minute","second","minute","hour"],"title":"unit"},"well_purpose":{"type":"string","enum":["Unknown","Open, unequipped well","Commercial","Domestic","Power generation","Irrigation","Livestock","Mining","Industrial","Observation","Public supply","Shared domestic","Institutional","Unused","Exploration","Monitoring","Production","Injection"],"title":"well_purpose"}},"securitySchemes":{"OAuth2AuthorizationCodeBearer":{"type":"oauth2","flows":{"authorizationCode":{"scopes":{"openid":"openid","offline_access":"offline_access"},"authorizationUrl":"https://authentik.newmexicowaterdata.org/application/o/authorize/","tokenUrl":"https://authentik.newmexicowaterdata.org/application/o/token/"}}}}}}
\ No newline at end of file
diff --git a/src/generated/types.gen.ts b/src/generated/types.gen.ts
index 87bf76ba..10bba985 100644
--- a/src/generated/types.gen.ts
+++ b/src/generated/types.gen.ts
@@ -149,6 +149,10 @@ export type ContactResponse = {
organization: string | null;
role: Role;
contact_type: ContactType;
+ /**
+ * Incomplete Nma Phones
+ */
+ incomplete_nma_phones?: Array;
/**
* Emails
*/
@@ -445,10 +449,6 @@ export type CreatePhone = {
*/
contact_id?: number | null;
phone_type?: PhoneType;
- /**
- * Nma Phone Number
- */
- nma_phone_number?: string | null;
};
/**
@@ -706,10 +706,7 @@ export type CreateWellScreen = {
* Screen depth top in feet
*/
screen_depth_top: number;
- /**
- * Screen Type
- */
- screen_type?: unknown | null;
+ screen_type?: ScreenType | null;
/**
* Screen Description
*/
@@ -1813,10 +1810,6 @@ export type PhoneResponse = {
* Phone Type
*/
phone_type: string;
- /**
- * Nma Phone Number
- */
- nma_phone_number?: string | null;
};
/**
@@ -2107,10 +2100,7 @@ export type TransducerObservationBlockResponse = {
*/
created_at: string;
release_status: ReleaseStatus;
- /**
- * review_status
- */
- review_status: unknown;
+ review_status: ReviewStatus;
/**
* Start Datetime
*/
@@ -2849,6 +2839,11 @@ export type QcType = 'Normal' | 'Duplicate' | 'Split' | 'Field Blank' | 'Trip Bl
*/
export type ReleaseStatus = 'draft' | 'provisional' | 'final' | 'published' | 'archived' | 'public' | 'private';
+/**
+ * review_status
+ */
+export type ReviewStatus = 'approved' | 'not reviewed';
+
/**
* role
*/
@@ -2864,6 +2859,11 @@ export type SampleMatrix = 'water' | 'groundwater' | 'soil';
*/
export type SampleMethod = 'Unknown' | 'Airline measurement' | 'Analog or graphic recorder' | 'Calibrated airline measurement' | 'Differential GPS; especially applicable to surface expression of ground water' | 'Estimated' | 'Transducer' | 'Pressure-gage measurement' | 'Calibrated pressure-gage measurement' | 'Interpreted from geophysical logs' | 'Manometer' | 'Non-recording gage' | 'Observed (required for F, N, and W water level status)' | 'Sonic water level meter (acoustic pulse)' | 'Reported, method not known' | 'Steel-tape measurement' | 'Electric tape measurement (E-probe)' | 'Unknown (for legacy data only; not for new data entry)' | 'Calibrated electric tape; accuracy of equipment has been checked' | 'Calibrated electric cable' | 'Uncalibrated electric cable' | 'Continuous acoustic sounder' | 'Measurement not attempted' | 'null placeholder' | 'bailer' | 'faucet at well head' | 'faucet or outlet at house' | 'grab sample' | 'pump' | 'thief sampler';
+/**
+ * screen_type
+ */
+export type ScreenType = 'PVC' | 'Steel' | 'Concrete';
+
/**
* sensor_type
*/
diff --git a/src/generated/zod.gen.ts b/src/generated/zod.gen.ts
index 43b69e3d..bf20bdc6 100644
--- a/src/generated/zod.gen.ts
+++ b/src/generated/zod.gen.ts
@@ -163,11 +163,7 @@ export const zPhoneResponse = z.object({
z.string(),
z.null()
])),
- phone_type: z.string(),
- nma_phone_number: z.optional(z.union([
- z.string(),
- z.null()
- ]))
+ phone_type: z.string()
});
/**
@@ -351,6 +347,7 @@ export const zContactResponse = z.object({
]),
role: zRole,
contact_type: zContactType,
+ incomplete_nma_phones: z.optional(z.array(z.string())).default([]),
emails: z.optional(z.array(zEmailResponse)).default([]),
phones: z.optional(z.array(zPhoneResponse)).default([]),
addresses: z.optional(z.array(zAddressResponse)).default([]),
@@ -434,11 +431,7 @@ export const zCreatePhone = z.object({
z.int(),
z.null()
])),
- phone_type: z.optional(zPhoneType),
- nma_phone_number: z.optional(z.union([
- z.string(),
- z.null()
- ]))
+ phone_type: z.optional(zPhoneType)
});
/**
@@ -887,6 +880,15 @@ export const zCreateWell = z.object({
]))
});
+/**
+ * screen_type
+ */
+export const zScreenType = z.enum([
+ 'PVC',
+ 'Steel',
+ 'Concrete'
+]);
+
/**
* CreateWellScreen
* Schema for creating a well screen.
@@ -897,7 +899,7 @@ export const zCreateWellScreen = z.object({
screen_depth_bottom: z.number().gt(0),
screen_depth_top: z.number().gt(0),
screen_type: z.optional(z.union([
- z.unknown(),
+ zScreenType,
z.null()
])),
screen_description: z.optional(z.union([
@@ -1647,6 +1649,14 @@ export const zTransducerObservationResponse = z.object({
deployment_id: z.int()
});
+/**
+ * review_status
+ */
+export const zReviewStatus = z.enum([
+ 'approved',
+ 'not reviewed'
+]);
+
/**
* TransducerObservationBlockResponse
*/
@@ -1654,7 +1664,7 @@ export const zTransducerObservationBlockResponse = z.object({
id: z.int(),
created_at: z.string(),
release_status: zReleaseStatus,
- review_status: z.unknown(),
+ review_status: zReviewStatus,
start_datetime: z.iso.datetime({
offset: true
}),
diff --git a/src/providers/ocotillo-data-provider.ts b/src/providers/ocotillo-data-provider.ts
index 0a4eca3c..57463e7f 100644
--- a/src/providers/ocotillo-data-provider.ts
+++ b/src/providers/ocotillo-data-provider.ts
@@ -1,9 +1,7 @@
import type { DataProvider } from '@refinedev/core'
import { settings } from '@/settings'
-const API_URL = process.env.NODE_ENV === 'test'
- ? 'http://127.0.0.1:4010' // Mock server for tests
- : `${settings.ocotillo_api_url}`
+const API_URL = settings.ocotillo_api_url
import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'
import createAuthRefreshInterceptor from 'axios-auth-refresh'
diff --git a/src/settings.tsx b/src/settings.tsx
index 6a1790e4..ed3388ae 100644
--- a/src/settings.tsx
+++ b/src/settings.tsx
@@ -1,4 +1,17 @@
-import { cypressCheck } from './utils/CypressCheck';
+import { cypressCheck } from './utils/CypressCheck'
+
+const getNodeEnv = (key: string) => {
+ if (typeof process !== 'undefined' && process.env) return process.env[key]
+ return undefined
+}
+
+const isCypress = cypressCheck()
+const isVitest =
+ getNodeEnv('VITEST') === 'true' || import.meta.env.VITEST === 'true'
+const isTest =
+ getNodeEnv('NODE_ENV') === 'test' ||
+ import.meta.env.MODE === 'test' ||
+ import.meta.env.NODE_ENV === 'test'
export const settings = {
rowHeight: 27,
@@ -9,9 +22,11 @@ export const settings = {
import.meta.env.VITE_NMBGMR_AMP_API_URL || 'http://localhost:8009',
ocotillo_api_url:
- cypressCheck() || process.env.NODE_ENV === 'test'
- ? 'http://127.0.0.1:4010'
- : import.meta.env.VITE_OCOTILLO_API_URL || 'http://localhost:8000',
+ isVitest || (isTest && !isCypress)
+ ? 'http://127.0.0.1:4010' // mock server for Vitest
+ : isCypress
+ ? 'http://localhost:8000' // real CI local FastAPI backend for Cypress
+ : import.meta.env.VITE_OCOTILLO_API_URL || 'http://localhost:8000',
st2_url: 'https://st2.newmexicowaterdata.org/FROST-Server/v1.1',
nmbgmr_geothermal_api_url:
diff --git a/src/test/ocotillo/integration/api/thing-well-screen.conract.test.ts b/src/test/ocotillo/integration/api/thing-well-screen.conract.test.ts
index c564dd2c..fcae18d3 100644
--- a/src/test/ocotillo/integration/api/thing-well-screen.conract.test.ts
+++ b/src/test/ocotillo/integration/api/thing-well-screen.conract.test.ts
@@ -3,20 +3,19 @@ import { ocotilloDataProvider } from '@/providers/ocotillo-data-provider'
import {
zWellScreenResponse,
zCreateWellScreen,
- zUpdateWellScreen
+ zUpdateWellScreen,
} from '@/generated/zod.gen'
import {
WellScreenResponse,
CreateWellScreen,
- UpdateWellScreen
+ UpdateWellScreen,
} from '@/generated/types.gen'
describe('Ocotillo Integration Tests: Well Screen', () => {
-
it('should fetch well screens using data provider', async () => {
const result = await ocotilloDataProvider.getList({
resource: 'thing/well-screen',
- pagination: { current: 1, pageSize: 10 }
+ pagination: { current: 1, pageSize: 10 },
})
expect(result).toHaveProperty('data')
@@ -33,7 +32,9 @@ describe('Ocotillo Integration Tests: Well Screen', () => {
} catch (error) {
console.error('Schema validation failed:', error.message)
console.error('WellScreen data:', JSON.stringify(wellScreen, null, 2))
- throw new Error(`API response doesn't match IWellScreen interface: ${error.message}`)
+ throw new Error(
+ `API response doesn't match IWellScreen interface: ${error.message}`
+ )
}
}
})
@@ -42,7 +43,7 @@ describe('Ocotillo Integration Tests: Well Screen', () => {
const result = await ocotilloDataProvider.getOne({
resource: 'thing/well-screen',
id: 1,
- meta: {}
+ meta: {},
})
expect(result).toHaveProperty('data')
@@ -56,7 +57,9 @@ describe('Ocotillo Integration Tests: Well Screen', () => {
} catch (error) {
console.error('Schema validation failed:', error.message)
console.error('WellScreen data:', JSON.stringify(wellScreen, null, 2))
- throw new Error(`API response doesn't match IWellScreen interface: ${error.message}`)
+ throw new Error(
+ `API response doesn't match IWellScreen interface: ${error.message}`
+ )
}
})
@@ -66,13 +69,13 @@ describe('Ocotillo Integration Tests: Well Screen', () => {
release_status: 'public',
screen_depth_bottom: 100,
screen_depth_top: 200,
- screen_type: 'Test Type',
- screen_description: 'Test Description'
+ screen_type: 'Steel',
+ screen_description: 'Test Description',
})
const result = await ocotilloDataProvider.create({
resource: 'thing/well-screen',
- variables: createData
+ variables: createData,
})
expect(result).toHaveProperty('data')
@@ -86,7 +89,9 @@ describe('Ocotillo Integration Tests: Well Screen', () => {
} catch (error) {
console.error('Schema validation failed:', error.message)
console.error('WellScreen data:', JSON.stringify(wellScreen, null, 2))
- throw new Error(`API response doesn't match IWellScreen interface: ${error.message}`)
+ throw new Error(
+ `API response doesn't match IWellScreen interface: ${error.message}`
+ )
}
})
@@ -95,14 +100,14 @@ describe('Ocotillo Integration Tests: Well Screen', () => {
release_status: 'public',
screen_depth_bottom: 80,
screen_depth_top: 180,
- screen_type: 'Updated Test Type',
- screen_description: 'Updated Test Description'
+ screen_type: 'Steel',
+ screen_description: 'Updated Test Description',
})
const result = await ocotilloDataProvider.update({
resource: 'thing/well-screen',
id: 1,
- variables: updateData
+ variables: updateData,
})
expect(result).toHaveProperty('data')
@@ -116,7 +121,9 @@ describe('Ocotillo Integration Tests: Well Screen', () => {
} catch (error) {
console.error('Schema validation failed:', error.message)
console.error('WellScreen data:', JSON.stringify(wellScreen, null, 2))
- throw new Error(`API response doesn't match IWellScreen interface: ${error.message}`)
+ throw new Error(
+ `API response doesn't match IWellScreen interface: ${error.message}`
+ )
}
})
-})
\ No newline at end of file
+})