QutBioacoustics/baw-server

View on GitHub
swagger/v2/swagger.yaml

Summary

Maintainability
Test Coverage
---
openapi: 3.0.1
info:
  title: Acoustic Workbench API
  version: v2
produces:
- application/json
consumes:
- application/json
paths:
  "/cms/{child_path}":
    get:
      summary: Retrieves the a child blob (rendered HTML)
      tags:
      - CMS
      parameters:
      - name: child_path
        in: path
        required: true
        schema:
          type: string
      security: 
      responses:
        '200':
          description: blob retrieved
          content:
            application/json:
              example:
                id: 2
                site_id: 1
                layout_id: 1
                parent_id: 1
                target_page_id: 
                label: Credits
                slug: credits
                full_path: "/credits"
                position: 0
                children_count: 0
                is_published: true
                created_at: '2020-01-02T03:04:05.677Z'
                updated_at: '2020-01-02T03:04:05.677Z'
                content: |-
                  <link href='/cms/cms-css/1/default/1577934245.css' media='screen' rel='stylesheet' type='text/css' />

                  <h1>Credits</h1>
                  <p>The development of this web application was an initiative of the
                  <a href="https://www.qut.edu.au/">Queensland University of Technology’s</a>
                  <a href="http://research.ecosounds.org/">Ecoacoustics Research Group</a>.
                  This website makes use of a range of other technologies and libraries.</p>

                  <p>More information can be found on the
                  <a href="https://github.com/QutEcoacoustics">QutEcoacoustics</a> Github project page.</p>

                  <h2 id="programs-and-libraries">Programs and libraries</h2>

                  <ul>
                    <li><a href="http://rubyonrails.org/">Ruby on Rails</a> (with a number of additional gems)</li>
                    <li><a href="https://github.com/resque/resque">Resque</a></li>
                    <li><a href="http://redis.io">Redis</a></li>
                    <li>Command line audio tools:</li>
                    <li><a href="http://www.ffmpeg.org/">ffmpeg</a> (for audio conversion and gathering audio file information)</li>
                    <li><a href="http://sox.sourceforge.net/">SoX</a> (to create spectrograms and resample audio)</li>
                    <li><a href="http://www.wavpack.com/">WavPack</a> (to expand compressed .wv files)</li>
                    <li><a href="http://mp3splt.sourceforge.net/mp3splt_page/home.php">mp3split</a> (for quickly segmenting large .mp3 files)</li>
                    <li><a href="https://angularjs.org/">AngularJS</a></li>
                    <li><a href="https://d3js.org/">D3.js</a></li>
                  </ul>

                  <h2 id="platforms-and-services">Platforms and services</h2>

                  <ul>
                    <li><a href="https://github.com">Github</a></li>
                    <li><a href="https://www.qriscloud.org.au/">QRISCloud</a></li>
                    <li><a href="https://https://nectar.org.au/">nectar</a></li>
                  </ul>


                  <script src='/cms/cms-js/1/default/1577934245.js' type='text/javascript'></script>
                children: []
              schema:
                "$ref": "#/components/schemas/cms_blob"
  "/cms":
    get:
      summary: Retrieves the index blob (rendered HTML)
      tags:
      - cms
      security: 
      parameters: []
      responses:
        '200':
          description: blob retrieved
          content:
            application/json:
              example:
                id: 11
                site_id: 3
                layout_id: 3
                parent_id: 
                target_page_id: 
                label: Home
                slug: index
                full_path: "/"
                position: 0
                children_count: 4
                is_published: true
                created_at: '2020-01-02T03:04:05.677Z'
                updated_at: '2020-01-02T03:04:05.677Z'
                content: |-
                  <link href='/cms/cms-css/3/default/1577934245.css' media='screen' rel='stylesheet' type='text/css' />

                  <h1></h1>
                  <p>Welcome! This is an Acoustic Workbench website. It is a repository of
                  environmental audio recordings.</p>


                  <script src='/cms/cms-js/3/default/1577934245.js' type='text/javascript'></script>
                children:
                - label: Credits
                  full_path: "/credits"
                - label: Data Upload
                  full_path: "/data_upload"
                - label: Ethics
                  full_path: "/ethics"
                - label: Privacy
                  full_path: "/privacy"
              schema:
                "$ref": "#/components/schemas/cms_blob"
  "/projects/{id}":
    patch:
      summary: update project
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - projects
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  capabilities:
                    update_allow_audio_upload:
                      can: true
                      details: 
                    create_harvest:
                      can: false
                      details: This project does not allow uploading audio. Contact
                        the site administrator to request permission to upload audio.
                data:
                  id: 1
                  name: gen_project2
                  description: project description 2
                  creator_id: 3
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  notes: note number 2
                  allow_original_download: 
                  allow_audio_upload: false
                  site_ids:
                  - 1
                  region_ids:
                  - 1
                  owner_ids:
                  - 3
                  image_urls:
                  - size: extralarge
                    url: "/images/project/project_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/project/project_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/project/project_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/project/project_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/project/project_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>project description 2</p>\n"
                  description_html_tagline: project description 2
                  access_level: owner
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/project"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/project"
    get:
      summary: show project
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - projects
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  capabilities:
                    update_allow_audio_upload:
                      can: true
                      details: 
                    create_harvest:
                      can: true
                      details: 
                data:
                  id: 2
                  name: gen_project3
                  description: project description 3
                  creator_id: 8
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  notes: note number 3
                  allow_original_download: 
                  allow_audio_upload: true
                  site_ids:
                  - 2
                  region_ids:
                  - 2
                  owner_ids:
                  - 8
                  image_urls:
                  - size: extralarge
                    url: "/images/project/project_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/project/project_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/project/project_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/project/project_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/project/project_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>project description 3</p>\n"
                  description_html_tagline: project description 3
                  access_level: owner
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/project"
    delete:
      summary: delete project
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - projects
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
    put:
      summary: update project
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - projects
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  capabilities:
                    update_allow_audio_upload:
                      can: true
                      details: 
                    create_harvest:
                      can: false
                      details: This project does not allow uploading audio. Contact
                        the site administrator to request permission to upload audio.
                data:
                  id: 4
                  name: gen_project6
                  description: project description 6
                  creator_id: 16
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  notes: note number 6
                  allow_original_download: 
                  allow_audio_upload: false
                  site_ids:
                  - 4
                  region_ids:
                  - 4
                  owner_ids:
                  - 16
                  image_urls:
                  - size: extralarge
                    url: "/images/project/project_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/project/project_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/project/project_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/project/project_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/project/project_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>project description 6</p>\n"
                  description_html_tagline: project description 6
                  access_level: owner
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/project"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/project"
  "/projects/filter":
    post:
      summary: filter project
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - projects
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/projects/filter?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                  capabilities:
                    update_allow_audio_upload:
                      can: 
                      details: 
                    create_harvest:
                      can: 
                      details: This project does not allow uploading audio. Contact
                        the site administrator to request permission to upload audio.
                data:
                - id: 5
                  name: gen_project7
                  description: project description 7
                  creator_id: 21
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  notes: note number 7
                  allow_original_download: 
                  allow_audio_upload: true
                  site_ids:
                  - 5
                  region_ids:
                  - 5
                  owner_ids:
                  - 21
                  image_urls:
                  - size: extralarge
                    url: "/images/project/project_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/project/project_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/project/project_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/project/project_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/project/project_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>project description 7</p>\n"
                  description_html_tagline: project description 7
                  access_level: owner
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/project"
  "/projects":
    get:
      summary: list projects
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - projects
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/projects?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                  capabilities:
                    update_allow_audio_upload:
                      can: 
                      details: 
                    create_harvest:
                      can: 
                      details: This project does not allow uploading audio. Contact
                        the site administrator to request permission to upload audio.
                data:
                - id: 6
                  name: gen_project8
                  description: project description 8
                  creator_id: 25
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  notes: note number 8
                  allow_original_download: 
                  allow_audio_upload: true
                  site_ids:
                  - 6
                  region_ids:
                  - 6
                  owner_ids:
                  - 25
                  image_urls:
                  - size: extralarge
                    url: "/images/project/project_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/project/project_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/project/project_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/project/project_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/project/project_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>project description 8</p>\n"
                  description_html_tagline: project description 8
                  access_level: owner
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/project"
    post:
      summary: create project
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - projects
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                  capabilities:
                    update_allow_audio_upload:
                      can: true
                      details: 
                    create_harvest:
                      can: false
                      details: This project does not allow uploading audio. Contact
                        the site administrator to request permission to upload audio.
                data:
                  id: 8
                  name: gen_project10
                  description: project description 10
                  creator_id: 1
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  notes: note number 10
                  allow_original_download: 
                  allow_audio_upload: false
                  site_ids: []
                  region_ids: []
                  owner_ids:
                  - 1
                  image_urls:
                  - size: extralarge
                    url: "/images/project/project_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/project/project_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/project/project_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/project/project_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/project/project_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>project description 10</p>\n"
                  description_html_tagline: project description 10
                  access_level: owner
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/project"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/project"
  "/projects/new":
    get:
      summary: new project
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - projects
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  name: 
                  description: 
                  allow_original_download: 
                  notes: 
  "/projects/{project_id}/permissions":
    get:
      summary: list permissions
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - permissions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 3
                    max_page: 1
                    current: http://localhost:3000/projects/10/permissions?direction=desc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 26
                  project_id: 10
                  user_id: 38
                  level: owner
                  allow_anonymous: false
                  allow_logged_in: false
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                - id: 27
                  project_id: 10
                  user_id: 39
                  level: writer
                  allow_anonymous: false
                  allow_logged_in: false
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 38
                - id: 28
                  project_id: 10
                  user_id: 40
                  level: reader
                  allow_anonymous: false
                  allow_logged_in: false
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 38
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/permission"
    post:
      summary: create permission
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - permissions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 33
                  project_id: 11
                  user_id: 46
                  level: reader
                  allow_anonymous: false
                  allow_logged_in: false
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/permission"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/permission"
  "/projects/{project_id}/permissions/new":
    get:
      summary: new permission
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - permissions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  project_id: 
                  user_id: 
                  level: 
                  allow_anonymous: false
                  allow_logged_in: false
  "/projects/{project_id}/permissions/{id}":
    get:
      summary: show permission
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - permissions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 39
                  project_id: 14
                  user_id: 55
                  level: reader
                  allow_anonymous: false
                  allow_logged_in: false
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 53
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/permission"
    put:
      summary: update permission
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - permissions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 42
                  project_id: 16
                  user_id: 61
                  level: reader
                  allow_anonymous: false
                  allow_logged_in: false
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 57
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/permission"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/permission"
    patch:
      summary: update permission
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - permissions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 46
                  project_id: 18
                  user_id: 68
                  level: reader
                  allow_anonymous: false
                  allow_logged_in: false
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 64
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/permission"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/permission"
    delete:
      summary: delete permission
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - permissions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
  "/projects/{project_id}/permissions/filter":
    post:
      summary: filter permission
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - permissions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 3
                    max_page: 1
                    current: http://localhost:3000/projects/20/permissions/filter?direction=desc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 51
                  project_id: 20
                  user_id: 75
                  level: owner
                  allow_anonymous: false
                  allow_logged_in: false
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                - id: 52
                  project_id: 20
                  user_id: 76
                  level: writer
                  allow_anonymous: false
                  allow_logged_in: false
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 75
                - id: 53
                  project_id: 20
                  user_id: 77
                  level: reader
                  allow_anonymous: false
                  allow_logged_in: false
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 75
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/permission"
  "/scripts":
    get:
      summary: list scripts
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - scripts
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/scripts?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 17
                  group_id: 17
                  name: script name 17
                  description: script description 17
                  analysis_identifier: script machine identifier 17
                  executable_settings: executable settings 17
                  executable_settings_media_type: text/plain
                  version: 0.17
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  analysis_action_params:
                    file_executable: "./AnalysisPrograms/AnalysisPrograms.exe"
                    copy_paths:
                    - "./programs/AnalysisPrograms/Logs/log.txt"
                    sub_folders: []
                    custom_setting: 17
                  is_last_version: true
                  is_first_version: true
                  description_html: "<p>script description 17</p>\n"
                  description_html_tagline: script description 17
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/script"
  "/scripts/{id}":
    get:
      summary: show script
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - scripts
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 18
                  group_id: 18
                  name: script name 18
                  description: script description 18
                  analysis_identifier: script machine identifier 18
                  executable_settings: executable settings 18
                  executable_settings_media_type: text/plain
                  version: 0.18
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  analysis_action_params:
                    file_executable: "./AnalysisPrograms/AnalysisPrograms.exe"
                    copy_paths:
                    - "./programs/AnalysisPrograms/Logs/log.txt"
                    sub_folders: []
                    custom_setting: 18
                  is_last_version: true
                  is_first_version: true
                  description_html: "<p>script description 18</p>\n"
                  description_html_tagline: script description 18
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/script"
  "/scripts/filter":
    post:
      summary: filter script
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - scripts
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/scripts/filter?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 19
                  group_id: 19
                  name: script name 19
                  description: script description 19
                  analysis_identifier: script machine identifier 19
                  executable_settings: executable settings 19
                  executable_settings_media_type: text/plain
                  version: 0.19
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  analysis_action_params:
                    file_executable: "./AnalysisPrograms/AnalysisPrograms.exe"
                    copy_paths:
                    - "./programs/AnalysisPrograms/Logs/log.txt"
                    sub_folders: []
                    custom_setting: 19
                  is_last_version: true
                  is_first_version: true
                  description_html: "<p>script description 19</p>\n"
                  description_html_tagline: script description 19
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/script"
  "/audio_recordings/{id}/original":
    get:
      summary: Downloads an original audio file
      tags:
      - media
      - audio_recordings
      - audio_recordings
      - audio_recordings
      parameters:
      - name: id
        in: path
        description: ID of the audio recording
        required: true
        schema:
          type: string
      security:
      - auth_token_header: []
      description: |2

        Users that can invoke this route: `Admin`, `Harvester`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions

        Users that can invoke this route: `Admin`, `Harvester`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions

        Users that can invoke this route: `Admin`, `Harvester`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '404':
          description: not found
        '401':
          description: unauthorized
        '200':
          description: original audio file
    head:
      summary: Gets HTTP headers for an original audio file
      tags:
      - media
      - audio_recordings
      - audio_recordings
      - audio_recordings
      parameters:
      - name: id
        in: path
        description: ID of the audio recording
        required: true
        schema:
          type: string
      security:
      - auth_token_header: []
      description: |2

        Users that can invoke this route: `Admin`, `Harvester`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions

        Users that can invoke this route: `Admin`, `Harvester`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions

        Users that can invoke this route: `Admin`, `Harvester`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: original audio file
        '404':
          description: not found
        '401':
          description: unauthorized
  "/audio_recordings/downloader":
    post:
      summary: Gets a templated script which can download original audio files. Accepts
        an audio recordings filter object
      tags:
      - downloader
      - audio_recordings
      consumes: 
      security:
      - auth_token_header: []
      parameters: []
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: templated script
          content:
            text/plain:
              example: |
                #!/usr/bin/env pwsh

                # Requires -Version 7
                <#

                .DESCRIPTION

                  Downloads a set of recordings from an acoustic workbench.
                  Will work on Windows, Linux, or MacOSX with PowerShell Core.
                  See https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.1
                  for installation instructions.

                  Version 9.1.1 from http://localhost:3000.

                .EXAMPLE

                On Windows:

                PS> ./download_audio_files.ps1

                .EXAMPLE

                On Linux/MacOSX:

                $ chmod +x download_audio_files.ps1
                $ ./download_audio_files.ps1

                #>

                param(
                  # Where to download the recordings. Defaults to the present working directory if not specified.
                  $target = $null,
                    # The auth token to use to login to the workbench. You only need to supply an auth token if you want to log in without a password.
                  $auth_token = $null,
                  # The username to use to login to the workbench. This value's default value is templated when the script is generated. This is not needed if you use an auth_token.
                  $user_name = $null,
                  # The poassword to use to login to the workbench. This is not needed if you use an auth_token.
                  $password = $null,

                  # The filter to use to select audio recordings to download. This value's default value is templated when the script is generated.
                  # See https://github.com/QutEcoacoustics/baw-server/wiki/API:-Filtering for details on valid filters. This argument
                  # should be a valid JSON encoded string.
                  $filter = $null,
                  # The acoustic workbench instance to use. This value's default value is templated when the script is generated.
                  $workbench_url = $null
                )

                $InformationPreference = 'Continue'
                $ErrorActionPreference = 'Stop'
                # https://github.com/PowerShell/PowerShell/issues/14348
                $ProgressPreference = 'SilentlyContinue'

                Write-Information "Acoustic Workbench downloader script version 9.1.1"

                if ($null -eq $target) {
                  $target = $pwd
                }

                # templated values from script generation
                if ($null -eq $auth_token) {
                  if ($null -eq $user_name) {
                    $user_name = "Admin"
                    if (-not $user_name) {
                      Write-Error "user_name is required"
                      exit 1
                    }
                  }
                  Write-Information "User name: $user_name"
                }
                else {
                  Write-Information "Using supplied auth token $auth_token"
                }

                if ($null -eq $filter) {
                  $filter = @'
                {"sorting":{"order_by":"recorded_date","direction":"desc"},"paging":{"items":25},"projection":{"include":["id","recorded_date","sites.name","site_id","canonical_file_name"]}}
                '@
                }
                Write-Information "Filter: $filter"

                if ($null -eq $workbench_url) {
                  $workbench_url = "http://localhost:3000"
                }
                Write-Information "Workbench URL: $workbench_url"

                # end templated values


                # log in
                $headers = @{}

                if ($null -eq $auth_token) {
                  if ($user_name -and $password) {
                    $User = $user_name
                    $PWord = ConvertTo-SecureString -String $password -AsPlainText -Force
                    $credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
                  }
                  else {
                    $credentials = Get-Credential -Message "Provide credentials for logging into $workbench_url" -UserName $user_name
                  }


                  $json_credentials = $credentials.GetNetworkCredential() | ForEach-Object{
                      if ($_.UserName -like '*@*') {
                        @{"email"=$_.UserName;"password"=$_.Password}
                      }
                      else {
                        @{"login"=$_.UserName;"password"=$_.Password}
                      }
                  }

                  Write-Information "Logging in to workbench $workbench"


                    $auth_reponse = Invoke-WebRequest -Uri "$workbench_url/security" -Method POST -Body $json_credentials -Headers $headers -SkipHttpErrorCheck
                    if ($auth_reponse.BaseResponse.IsSuccessStatusCode) {
                      $auth_token = ($auth_reponse.Content | ConvertFrom-Json).data.auth_token
                    }
                    else {
                      Write-Error ("Login attempt failed ($($auth_reponse.StatusCode)) " + $auth_reponse.Content)
                      exit 1
                    }

                }
                else {
                  # we have auth token, nothing else to do?
                }
                $headers["Authorization"] = "Token token=`"$auth_token`""

                $json_headers = $headers.Clone()
                $json_headers["Content-Type"] = "application/json"
                $json_headers["Accept"] = "application/json"

                Write-Information "Downloading recordings"

                # start paging through results!
                $script:current_page = 0
                $script:max_page = $null
                function Get-NextPage() {
                  $script:current_page += 1
                  if (($null -ne $script:max_page) -and ($script:current_page -gt $script:max_page)) {
                    Write-Information "Reached end of pages"
                    return $null
                  }

                  Write-Information "Getting page $script:current_page"

                  $response = Invoke-RestMethod -Uri "$workbench_url/audio_recordings/filter?page=$script:current_page" `
                    -Method POST -Body $filter -Headers $json_headers -SkipHttpErrorCheck -StatusCodeVariable "status_code"

                  if ($status_code -ne 200) {
                    Write-Error ("Failed to get recordings ($status_code): ")
                    $response | Format-List | out-string | Write-Error
                    exit 1
                  }

                  $script:max_page = $response.meta.paging.max_page

                  Write-Information "Got page $script:current_page of $script:max_page, $($response.data.Count) recordings in this page."

                  return $response.data
                }

                $sites = @{}
                function Get-SiteName($raw_name) {
                  if ($sites.ContainsKey($raw_name)) {
                    return $sites[$raw_name]
                  }

                  # Safe folder names
                  $name = $raw_name -replace '[^-_A-Za-z0-9]',''
                  $sites[$raw_name] = $name
                  return $name
                }

                # make output directory
                New-Item -ItemType Directory -Path $target -Force | Out-Null

                while ($null -ne ($recordings = Get-NextPage )) {
                  foreach($recording in $recordings) {
                    Write-Information "Downloading recording $($recording.id)"
                    $recording | write-output

                    $audio_recording_id = $recording.id
                    $site_id = $recording.site_id
                    $name = $recording.canonical_file_name

                    $safe_site_name = Get-SiteName $recording.'sites.name'

                    $sub_folder = Join-Path $target "${site_id}_$safe_site_name"
                    New-Item -ItemType Directory -Path $sub_folder -Force | Out-Null

                    $path = Join-Path $sub_folder $name

                    Invoke-RestMethod -Uri "$workbench_url/audio_recordings/$audio_recording_id/original" `
                      -Method GET -Headers $headers -StatusCodeVariable "download_status_code" -OutFile $path

                    Write-Information "Downloaded recording $audio_recording_id to $path"
                  }
                }

                Write-Information "Done!"
    get:
      summary: Gets a templated script which can download original audio files
      tags:
      - downloader
      - audio_recordings
      security:
      - auth_token_header: []
      parameters: []
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: templated script
          content:
            text/plain:
              example: |
                #!/usr/bin/env pwsh

                # Requires -Version 7
                <#

                .DESCRIPTION

                  Downloads a set of recordings from an acoustic workbench.
                  Will work on Windows, Linux, or MacOSX with PowerShell Core.
                  See https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-7.1
                  for installation instructions.

                  Version 9.1.1 from http://localhost:3000.

                .EXAMPLE

                On Windows:

                PS> ./download_audio_files.ps1

                .EXAMPLE

                On Linux/MacOSX:

                $ chmod +x download_audio_files.ps1
                $ ./download_audio_files.ps1

                #>

                param(
                  # Where to download the recordings. Defaults to the present working directory if not specified.
                  $target = $null,
                    # The auth token to use to login to the workbench. You only need to supply an auth token if you want to log in without a password.
                  $auth_token = $null,
                  # The username to use to login to the workbench. This value's default value is templated when the script is generated. This is not needed if you use an auth_token.
                  $user_name = $null,
                  # The poassword to use to login to the workbench. This is not needed if you use an auth_token.
                  $password = $null,

                  # The filter to use to select audio recordings to download. This value's default value is templated when the script is generated.
                  # See https://github.com/QutEcoacoustics/baw-server/wiki/API:-Filtering for details on valid filters. This argument
                  # should be a valid JSON encoded string.
                  $filter = $null,
                  # The acoustic workbench instance to use. This value's default value is templated when the script is generated.
                  $workbench_url = $null
                )

                $InformationPreference = 'Continue'
                $ErrorActionPreference = 'Stop'
                # https://github.com/PowerShell/PowerShell/issues/14348
                $ProgressPreference = 'SilentlyContinue'

                Write-Information "Acoustic Workbench downloader script version 9.1.1"

                if ($null -eq $target) {
                  $target = $pwd
                }

                # templated values from script generation
                if ($null -eq $auth_token) {
                  if ($null -eq $user_name) {
                    $user_name = "Admin"
                    if (-not $user_name) {
                      Write-Error "user_name is required"
                      exit 1
                    }
                  }
                  Write-Information "User name: $user_name"
                }
                else {
                  Write-Information "Using supplied auth token $auth_token"
                }

                if ($null -eq $filter) {
                  $filter = @'
                {"sorting":{"order_by":"recorded_date","direction":"desc"},"paging":{"items":25},"projection":{"include":["id","recorded_date","sites.name","site_id","canonical_file_name"]}}
                '@
                }
                Write-Information "Filter: $filter"

                if ($null -eq $workbench_url) {
                  $workbench_url = "http://localhost:3000"
                }
                Write-Information "Workbench URL: $workbench_url"

                # end templated values


                # log in
                $headers = @{}

                if ($null -eq $auth_token) {
                  if ($user_name -and $password) {
                    $User = $user_name
                    $PWord = ConvertTo-SecureString -String $password -AsPlainText -Force
                    $credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $PWord
                  }
                  else {
                    $credentials = Get-Credential -Message "Provide credentials for logging into $workbench_url" -UserName $user_name
                  }


                  $json_credentials = $credentials.GetNetworkCredential() | ForEach-Object{
                      if ($_.UserName -like '*@*') {
                        @{"email"=$_.UserName;"password"=$_.Password}
                      }
                      else {
                        @{"login"=$_.UserName;"password"=$_.Password}
                      }
                  }

                  Write-Information "Logging in to workbench $workbench"


                    $auth_reponse = Invoke-WebRequest -Uri "$workbench_url/security" -Method POST -Body $json_credentials -Headers $headers -SkipHttpErrorCheck
                    if ($auth_reponse.BaseResponse.IsSuccessStatusCode) {
                      $auth_token = ($auth_reponse.Content | ConvertFrom-Json).data.auth_token
                    }
                    else {
                      Write-Error ("Login attempt failed ($($auth_reponse.StatusCode)) " + $auth_reponse.Content)
                      exit 1
                    }

                }
                else {
                  # we have auth token, nothing else to do?
                }
                $headers["Authorization"] = "Token token=`"$auth_token`""

                $json_headers = $headers.Clone()
                $json_headers["Content-Type"] = "application/json"
                $json_headers["Accept"] = "application/json"

                Write-Information "Downloading recordings"

                # start paging through results!
                $script:current_page = 0
                $script:max_page = $null
                function Get-NextPage() {
                  $script:current_page += 1
                  if (($null -ne $script:max_page) -and ($script:current_page -gt $script:max_page)) {
                    Write-Information "Reached end of pages"
                    return $null
                  }

                  Write-Information "Getting page $script:current_page"

                  $response = Invoke-RestMethod -Uri "$workbench_url/audio_recordings/filter?page=$script:current_page" `
                    -Method POST -Body $filter -Headers $json_headers -SkipHttpErrorCheck -StatusCodeVariable "status_code"

                  if ($status_code -ne 200) {
                    Write-Error ("Failed to get recordings ($status_code): ")
                    $response | Format-List | out-string | Write-Error
                    exit 1
                  }

                  $script:max_page = $response.meta.paging.max_page

                  Write-Information "Got page $script:current_page of $script:max_page, $($response.data.Count) recordings in this page."

                  return $response.data
                }

                $sites = @{}
                function Get-SiteName($raw_name) {
                  if ($sites.ContainsKey($raw_name)) {
                    return $sites[$raw_name]
                  }

                  # Safe folder names
                  $name = $raw_name -replace '[^-_A-Za-z0-9]',''
                  $sites[$raw_name] = $name
                  return $name
                }

                # make output directory
                New-Item -ItemType Directory -Path $target -Force | Out-Null

                while ($null -ne ($recordings = Get-NextPage )) {
                  foreach($recording in $recordings) {
                    Write-Information "Downloading recording $($recording.id)"
                    $recording | write-output

                    $audio_recording_id = $recording.id
                    $site_id = $recording.site_id
                    $name = $recording.canonical_file_name

                    $safe_site_name = Get-SiteName $recording.'sites.name'

                    $sub_folder = Join-Path $target "${site_id}_$safe_site_name"
                    New-Item -ItemType Directory -Path $sub_folder -Force | Out-Null

                    $path = Join-Path $sub_folder $name

                    Invoke-RestMethod -Uri "$workbench_url/audio_recordings/$audio_recording_id/original" `
                      -Method GET -Headers $headers -StatusCodeVariable "download_status_code" -OutFile $path

                    Write-Information "Downloaded recording $audio_recording_id to $path"
                  }
                }

                Write-Information "Done!"
  "/audio_recordings":
    get:
      summary: list audio recordings
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - audio_recordings
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: recorded_date
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/audio_recordings?direction=desc&items=25&order_by=recorded_date&page=1
                    previous: 
                    next: 
                  capabilities:
                    original_download:
                      can: 
                      details: You do not have permission to download the original
                        audio recording. Check your access level or the original download
                        settings for this project
                data:
                - id: 28
                  uuid: b1a02f5b-a229-4cb9-b1cd-b95d6ffb2a1e
                  recorded_date: '2000-04-23T07:06:59.000Z'
                  site_id: 28
                  duration_seconds: 60000.0
                  sample_rate_hertz: 44100
                  channels: 2
                  bit_rate_bps: 64000
                  media_type: audio/mpeg
                  data_length_bytes: 3800
                  status: ready
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 124
                  deleted_at: 
                  deleter_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  notes:
                    test: note number 28
                  file_hash: SHA256::283zlcasjnofvtli4p0czpopdnomgtgx6sxgx5cbm767y12azcp39kzadhvb1uz3
                  uploader_id: 124
                  original_file_name: original name 28.mp3
                  canonical_file_name: 20000423T070659Z_site-name-28_28.mp3
                  recorded_date_timezone: 
                  recorded_utc_offset: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/audio_recording"
  "/audio_recordings/{id}":
    patch:
      summary: update audio recordings
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - audio_recordings
      description: |2

        Users that can invoke this route: `Admin`, `Harvester`.<br />
        Users that can't: `owner user`, `writer`, `reader`, `no_access`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  capabilities:
                    original_download:
                      can: true
                      details: 
                data:
                  id: 29
                  uuid: 83ac0fe5-4165-41ac-ac03-2ebb9c93cfcb
                  recorded_date: '2000-04-24T07:06:59.000Z'
                  site_id: 29
                  duration_seconds: 66.0
                  sample_rate_hertz: 44100
                  channels: 2
                  bit_rate_bps: 64000
                  media_type: audio/mpeg
                  data_length_bytes: 3800
                  status: ready
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 128
                  deleted_at: 
                  deleter_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  notes:
                    test: note number 29
                  file_hash: SHA256::29dw2kbuxzu6b5i7jgtn6xb8m27skx1ipi19lhbrlqmr633rskzfzfy2cn4zmsqt
                  uploader_id: 128
                  original_file_name: original name 29.mp3
                  canonical_file_name: 20000424T070659Z_site-name-29_29.mp3
                  recorded_date_timezone: 
                  recorded_utc_offset: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/audio_recording"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/audio_recording"
    get:
      summary: show audio recordings
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - audio_recordings
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  capabilities:
                    original_download:
                      can: true
                      details: 
                data:
                  id: 30
                  uuid: ae29fb9c-6110-4131-b880-4ac6e4c34cc5
                  recorded_date: '2000-04-25T07:06:59.000Z'
                  site_id: 30
                  duration_seconds: 60000.0
                  sample_rate_hertz: 44100
                  channels: 2
                  bit_rate_bps: 64000
                  media_type: audio/mpeg
                  data_length_bytes: 3800
                  status: ready
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 132
                  deleted_at: 
                  deleter_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  notes:
                    test: note number 30
                  file_hash: SHA256::30x4c02hy3yui3iptsk1pjhqxu1b81m2c8uuq07shlpanph5m3wmcovyezpqpgup
                  uploader_id: 132
                  original_file_name: original name 30.mp3
                  canonical_file_name: 20000425T070659Z_site-name-30_30.mp3
                  recorded_date_timezone: 
                  recorded_utc_offset: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/audio_recording"
    put:
      summary: update audio recordings
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - audio_recordings
      description: |2

        Users that can invoke this route: `Admin`, `Harvester`.<br />
        Users that can't: `owner user`, `writer`, `reader`, `no_access`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  capabilities:
                    original_download:
                      can: true
                      details: 
                data:
                  id: 31
                  uuid: cfb2fbc6-7595-468d-8fc5-a6fd8165a427
                  recorded_date: '2000-04-26T07:06:59.000Z'
                  site_id: 31
                  duration_seconds: 66.0
                  sample_rate_hertz: 44100
                  channels: 2
                  bit_rate_bps: 64000
                  media_type: audio/mpeg
                  data_length_bytes: 3800
                  status: ready
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 136
                  deleted_at: 
                  deleter_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  notes:
                    test: note number 31
                  file_hash: SHA256::313zacwbn39j1wwm7mioyylciu2e1ve2uhrmbn7k0w3nu2oir3x6y8eyhmug9bp7
                  uploader_id: 136
                  original_file_name: original name 31.mp3
                  canonical_file_name: 20000426T070659Z_site-name-31_31.mp3
                  recorded_date_timezone: 
                  recorded_utc_offset: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/audio_recording"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/audio_recording"
  "/audio_recordings/new":
    get:
      summary: new audio recordings
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - audio_recordings
      description: |2

        Users that can invoke this route: `Admin`, `Harvester`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: .

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  site_id: 
                  uploader_id: 
                  sample_rate_hertz: 
                  media_type: 
                  recorded_date: 
                  bit_rate_bps: 
                  data_length_bytes: 
                  channels: 
                  duration_seconds: 
                  file_hash: 
                  original_file_name: 
  "/audio_recordings/filter":
    post:
      summary: filter audio recording
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - audio_recordings
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: recorded_date
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/audio_recordings/filter?direction=desc&items=25&order_by=recorded_date&page=1
                    previous: 
                    next: 
                  capabilities:
                    original_download:
                      can: 
                      details: You do not have permission to download the original
                        audio recording. Check your access level or the original download
                        settings for this project
                data:
                - id: 33
                  uuid: 191deeb0-aeb8-4ff5-8984-cb920da8e9a5
                  recorded_date: '2000-04-28T07:06:59.000Z'
                  site_id: 33
                  duration_seconds: 60000.0
                  sample_rate_hertz: 44100
                  channels: 2
                  bit_rate_bps: 64000
                  media_type: audio/mpeg
                  data_length_bytes: 3800
                  status: ready
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 144
                  deleted_at: 
                  deleter_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  notes:
                    test: note number 33
                  file_hash: SHA256::337rg8v0o44mgu9okmxnw273ifvtapv9yl3e7sjjskjy2yai2twpzruhufceganv
                  uploader_id: 144
                  original_file_name: original name 33.mp3
                  canonical_file_name: 20000428T070659Z_site-name-33_33.mp3
                  recorded_date_timezone: 
                  recorded_utc_offset: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/audio_recording"
  "/harvests/{harvest_id}/items/filter":
    post:
      summary: filter harvest items
      security:
      - auth_token_header: []
      parameters:
      - name: harvest_id
        in: path
        description: harvest_id
        required: true
        schema:
          type: integer
      tags:
      - harvest_items
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: path
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/harvests/26/items/filter?direction=asc&items=25&order_by=path&page=1
                    previous: 
                    next: 
                data:
                - id: 1
                  deleted: false
                  path: some/relative/path.mp3
                  status: new
                  created_at: '2020-01-02T03:04:05.677Z'
                  harvest_id: 26
                  updated_at: '2020-01-02T03:04:05.677Z'
                  audio_recording_id: 35
                  uploader_id: 153
                  validations: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/harvest_item"
  "/projects/{project_id}/harvests/{harvest_id}/items/a/b":
    get:
      summary: list harvest items by path
      security:
      - auth_token_header: []
      parameters:
      - name: harvest_id
        in: path
        description: harvest_id
        required: true
        schema:
          type: integer
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - harvest_items
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: path
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/projects/39/harvests/27/items/a/b?direction=asc&items=25&order_by=path&page=1
                    previous: 
                    next: 
                data:
                - id: 2
                  deleted: false
                  path: a/b/c.wav
                  status: new
                  created_at: '2020-01-02T03:04:05.677Z'
                  harvest_id: 27
                  updated_at: '2020-01-02T03:04:05.677Z'
                  audio_recording_id: 37
                  uploader_id: 160
                  report:
                    items_total: 1
                    items_size_bytes: 
                    items_duration_seconds: 
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    items_new: 1
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                  validations: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/harvest_item"
  "/projects/{project_id}/regions/new":
    get:
      summary: new region
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  name: 
                  description: 
                  notes: 
                  project_id: 
  "/projects/{project_id}/regions":
    post:
      summary: create region
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 38
                  name: region name 38
                  description: site **description** 38
                  notes:
                    region_note_38: 38
                  creator_id: 1
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 41
                  site_ids: []
                  description_html: "<p>site <strong>description</strong> 38</p>\n"
                  description_html_tagline: site <strong>description</strong> 38
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/region"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/region"
    get:
      summary: list regions
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/projects/43/regions?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 39
                  name: region name 39
                  description: site **description** 39
                  notes:
                    region_note_39: 39
                  creator_id: 171
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 43
                  site_ids:
                  - 40
                  description_html: "<p>site <strong>description</strong> 39</p>\n"
                  description_html_tagline: site <strong>description</strong> 39
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/region"
  "/projects/{project_id}/regions/{id}":
    delete:
      summary: delete region
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
    get:
      summary: show region
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 41
                  name: region name 41
                  description: site **description** 41
                  notes:
                    region_note_41: 41
                  creator_id: 179
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 45
                  site_ids:
                  - 42
                  description_html: "<p>site <strong>description</strong> 41</p>\n"
                  description_html_tagline: site <strong>description</strong> 41
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/region"
    put:
      summary: update region
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 42
                  name: region name 43
                  description: site **description** 43
                  notes:
                    region_note_43: 43
                  creator_id: 183
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 47
                  site_ids:
                  - 43
                  description_html: "<p>site <strong>description</strong> 43</p>\n"
                  description_html_tagline: site <strong>description</strong> 43
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/region"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/region"
    patch:
      summary: update region
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 43
                  name: region name 45
                  description: site **description** 45
                  notes:
                    region_note_45: 45
                  creator_id: 189
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 49
                  site_ids:
                  - 44
                  description_html: "<p>site <strong>description</strong> 45</p>\n"
                  description_html_tagline: site <strong>description</strong> 45
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/region"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/region"
  "/projects/{project_id}/regions/filter":
    post:
      summary: filter region
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/projects/50/regions/filter?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 44
                  name: region name 46
                  description: site **description** 46
                  notes:
                    region_note_46: 46
                  creator_id: 195
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 50
                  site_ids:
                  - 45
                  description_html: "<p>site <strong>description</strong> 46</p>\n"
                  description_html_tagline: site <strong>description</strong> 46
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/region"
  "/projects/{project_id}/harvests/{harvest_id}/items/filter":
    post:
      summary: filter harvest items
      security:
      - auth_token_header: []
      parameters:
      - name: harvest_id
        in: path
        description: harvest_id
        required: true
        schema:
          type: integer
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - harvest_items
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: path
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/projects/51/harvests/36/items/filter?direction=asc&items=25&order_by=path&page=1
                    previous: 
                    next: 
                data:
                - id: 3
                  deleted: false
                  path: some/relative/path.mp3
                  status: new
                  created_at: '2020-01-02T03:04:05.677Z'
                  harvest_id: 36
                  updated_at: '2020-01-02T03:04:05.677Z'
                  audio_recording_id: 47
                  uploader_id: 205
                  validations: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/harvest_item"
  "/stats":
    get:
      summary: Gets stats
      tags:
      - stats
      security: 
      parameters: []
      responses:
        '200':
          description: stats retrieved
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  summary:
                    users_online: 0
                    users_total: 2
                    online_window_start: '2020-01-02T01:04:05.677Z'
                    projects_total: 0
                    regions_total: 0
                    sites_total: 0
                    annotations_total: 0
                    annotations_total_duration: 0
                    annotations_recent: 0
                    audio_recordings_total: 0
                    audio_recordings_recent: 0
                    audio_recordings_total_duration: 0
                    audio_recordings_total_size: 0
                    tags_total: 0
                    tags_applied_total: 0
                    tags_applied_unique_total: 0
                  recent:
                    audio_recording_ids: []
                    audio_event_ids: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/stats"
  "/sites/{id}":
    put:
      summary: update site
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 48
                  name: site name 49
                  description: site description 49
                  notes: note number 49
                  creator_id: 206
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 
                  custom_latitude: 68.652129
                  custom_longitude: 159.475673
                  location_obfuscated: false
                  project_ids:
                  - 52
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 49</p>\n"
                  description_html_tagline: site description 49
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/site"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/site"
    delete:
      summary: delete site
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
    get:
      summary: show site
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 50
                  name: site name 51
                  description: site description 51
                  notes: note number 51
                  creator_id: 215
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 48
                  custom_latitude: 89.544734
                  custom_longitude: 99.034349
                  location_obfuscated: false
                  project_ids:
                  - 54
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 51</p>\n"
                  description_html_tagline: site description 51
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/site"
    patch:
      summary: update site
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 51
                  name: site name 53
                  description: site description 53
                  notes: note number 53
                  creator_id: 219
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 
                  custom_latitude: 55.077931
                  custom_longitude: -80.205557
                  location_obfuscated: false
                  project_ids:
                  - 55
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 53</p>\n"
                  description_html_tagline: site description 53
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/site"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/site"
  "/sites/new":
    get:
      summary: new site
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  longitude: 
                  latitude: 
                  notes: 
                  image: 
                  tzinfo_tz: 
                  rails_tz: 
  "/sites":
    post:
      summary: create site
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 54
                  name: site name 56
                  description: site description 56
                  notes: note number 56
                  creator_id: 1
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 
                  custom_latitude: 
                  custom_longitude: 
                  location_obfuscated: true
                  project_ids: []
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 56</p>\n"
                  description_html_tagline: site description 56
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/site"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/site"
    get:
      summary: list sites
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/sites?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 55
                  name: site name 57
                  description: site description 57
                  notes: note number 57
                  creator_id: 233
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 52
                  custom_latitude: 59.030912
                  custom_longitude: -175.048448
                  location_obfuscated: false
                  project_ids:
                  - 58
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 57</p>\n"
                  description_html_tagline: site description 57
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/site"
  "/sites/filter":
    post:
      summary: filter site
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/sites/filter?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 56
                  name: site name 58
                  description: site description 58
                  notes: note number 58
                  creator_id: 237
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 53
                  custom_latitude: 72.534795
                  custom_longitude: 145.289808
                  location_obfuscated: false
                  project_ids:
                  - 59
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 58</p>\n"
                  description_html_tagline: site description 58
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/site"
  "/projects/{project_id}/harvests/filter":
    post:
      summary: filter harvest
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/projects/60/harvests/filter?direction=desc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 45
                  creator_id: 241
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: false
                  status: new_harvest
                  project_id: 60
                  name: January 2nd Upload
                  upload_user: 
                  upload_password: 
                  upload_url: sftp://upload.test:2022
                  mappings: []
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: 
                  last_metadata_review_at: 
                  last_mappings_change_at: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/harvest"
  "/projects/{project_id}/harvests":
    post:
      summary: create harvest
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 47
                  creator_id: 1
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: true
                  status: uploading
                  project_id: 61
                  name: January 2nd Upload
                  upload_user: Admin_47
                  upload_password: JfP9F2BWtxodssSphXFjtr1e
                  upload_url: sftp://upload.test:2022
                  mappings:
                  - path: '58'
                    site_id: 58
                    utc_offset: 
                    recursive: true
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: '2020-01-02T03:04:05.677Z'
                  last_metadata_review_at: 
                  last_mappings_change_at: '2020-01-02T03:04:05.677Z'
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/harvest"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/harvest"
    get:
      summary: list harvests
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/projects/62/harvests?direction=desc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 48
                  creator_id: 249
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: false
                  status: new_harvest
                  project_id: 62
                  name: January 2nd Upload
                  upload_user: 
                  upload_password: 
                  upload_url: sftp://upload.test:2022
                  mappings: []
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: 
                  last_metadata_review_at: 
                  last_mappings_change_at: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/harvest"
  "/projects/{project_id}/harvests/new":
    get:
      summary: new harvest
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  project_id: true
                  streaming: false
  "/projects/{project_id}/harvests/{id}":
    get:
      summary: show harvest
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 50
                  creator_id: 257
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: false
                  status: new_harvest
                  project_id: 64
                  name: January 2nd Upload
                  upload_user: 
                  upload_password: 
                  upload_url: sftp://upload.test:2022
                  mappings: []
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: 
                  last_metadata_review_at: 
                  last_mappings_change_at: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/harvest"
    delete:
      summary: delete harvest
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
    patch:
      summary: update harvest
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 52
                  creator_id: 265
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: false
                  status: new_harvest
                  project_id: 66
                  name: January 2nd Upload
                  upload_user: 
                  upload_password: 
                  upload_url: sftp://upload.test:2022
                  mappings: []
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: 
                  last_metadata_review_at: 
                  last_mappings_change_at: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/harvest"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/harvest"
    put:
      summary: update harvest
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 53
                  creator_id: 269
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: false
                  status: new_harvest
                  project_id: 67
                  name: January 2nd Upload
                  upload_user: 
                  upload_password: 
                  upload_url: sftp://upload.test:2022
                  mappings: []
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: 
                  last_metadata_review_at: 
                  last_mappings_change_at: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/harvest"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/harvest"
  "/projects/{project_id}/sites/{site_id}/audio_recordings/new":
    get:
      summary: new audio recordings
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: site_id
        in: path
        description: site_id
        required: true
        schema:
          type: integer
      tags:
      - audio_recordings
      description: |2

        Users that can invoke this route: `Admin`, `Harvester`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: .

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  site_id: 
                  uploader_id: 
                  sample_rate_hertz: 
                  media_type: 
                  recorded_date: 
                  bit_rate_bps: 
                  data_length_bytes: 
                  channels: 
                  duration_seconds: 
                  file_hash: 
                  original_file_name: 
  "/projects/{project_id}/sites/{site_id}/audio_recordings":
    post:
      summary: create audio recordings
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: site_id
        in: path
        description: site_id
        required: true
        schema:
          type: integer
      tags:
      - audio_recordings
      description: |2

        Users that can invoke this route: `Admin`, `Harvester`.<br />
        Users that can't: `owner user`, `writer`, `reader`, `no_access`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                  capabilities:
                    original_download:
                      can: true
                      details: 
                data:
                  id: 66
                  uuid: 18103b10-7995-4aae-91cb-e82f6694644f
                  recorded_date: '2000-05-31T07:06:59.000Z'
                  site_id: 66
                  duration_seconds: 60000.0
                  sample_rate_hertz: 22050
                  channels: 2
                  bit_rate_bps: 64000
                  media_type: audio/mpeg
                  data_length_bytes: 3800
                  status: new
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  deleted_at: 
                  deleter_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  notes:
                    test: note number 66
                  file_hash: SHA256::66c10a8iy16dbhk2bqzrl8gycf6ouhnc7ok8n1j7pcnki6nb9ekq26o6d85grz2l
                  uploader_id: 1
                  original_file_name: original name 66.mp3
                  canonical_file_name: 20000531T070659Z_site-name-68_66.mp3
                  recorded_utc_offset: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/audio_recording"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/audio_recording"
  "/status":
    get:
      summary: Gets status
      tags:
      - stats
      security: 
      parameters: []
      responses:
        '200':
          description: stats retrieved
          content:
            application/json:
              example:
                status: good
                timed_out: false
                database: true
                redis: PONG
                storage: 1 audio recording storage directory available.
                upload: Alive
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - good
                    - bad
                  timed_out:
                    type: boolean
                  database:
                    type: boolean
                  redis:
                    type: string
                  storage:
                    type: string
                  upload:
                    type: string
  "/harvests/{harvest_id}/items/a/b":
    get:
      summary: list harvest items by path
      security:
      - auth_token_header: []
      parameters:
      - name: harvest_id
        in: path
        description: harvest_id
        required: true
        schema:
          type: integer
      tags:
      - harvest_items
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: path
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/harvests/56/items/a/b?direction=asc&items=25&order_by=path&page=1
                    previous: 
                    next: 
                data:
                - id: 4
                  deleted: false
                  path: a/b/c.wav
                  status: new
                  created_at: '2020-01-02T03:04:05.677Z'
                  harvest_id: 56
                  updated_at: '2020-01-02T03:04:05.677Z'
                  audio_recording_id: 68
                  uploader_id: 289
                  report:
                    items_total: 1
                    items_size_bytes: 
                    items_duration_seconds: 
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    items_new: 1
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                  validations: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/harvest_item"
  "/bookmarks":
    post:
      summary: create bookmark
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - bookmarks
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 45
                  audio_recording_id: 70
                  name: name 45
                  category: category 45
                  description: description 45
                  offset_seconds: 4.0
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  description_html: "<p>description 45</p>\n"
                  description_html_tagline: description 45
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/bookmark"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/bookmark"
    get:
      summary: list bookmarks
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - bookmarks
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/bookmarks?direction=desc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 46
                  audio_recording_id: 71
                  name: name 46
                  category: category 46
                  description: description 46
                  offset_seconds: 4.0
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  description_html: "<p>description 46</p>\n"
                  description_html_tagline: description 46
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/bookmark"
  "/bookmarks/new":
    get:
      summary: new bookmark
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - bookmarks
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  name: 
                  category: 
                  description: 
                  offset_seconds: 
  "/bookmarks/filter":
    post:
      summary: filter bookmark
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - bookmarks
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/bookmarks/filter?direction=desc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 48
                  audio_recording_id: 73
                  name: name 48
                  category: category 48
                  description: description 48
                  offset_seconds: 4.0
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  description_html: "<p>description 48</p>\n"
                  description_html_tagline: description 48
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/bookmark"
  "/bookmarks/{id}":
    put:
      summary: update bookmark
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - bookmarks
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 49
                  audio_recording_id: 75
                  name: name 50
                  category: category 50
                  description: description 50
                  offset_seconds: 4.0
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  description_html: "<p>description 50</p>\n"
                  description_html_tagline: description 50
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/bookmark"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/bookmark"
    patch:
      summary: update bookmark
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - bookmarks
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 50
                  audio_recording_id: 77
                  name: name 52
                  category: category 52
                  description: description 52
                  offset_seconds: 4.0
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  description_html: "<p>description 52</p>\n"
                  description_html_tagline: description 52
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/bookmark"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/bookmark"
    delete:
      summary: delete bookmark
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - bookmarks
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
    get:
      summary: show bookmark
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - bookmarks
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 52
                  audio_recording_id: 79
                  name: name 54
                  category: category 54
                  description: description 54
                  offset_seconds: 4.0
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  description_html: "<p>description 54</p>\n"
                  description_html_tagline: description 54
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/bookmark"
  "/sites/orphans/filter":
    post:
      summary: filter site
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`.<br />
        Users that can't: `Harvester`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/sites/orphans?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 82
                  name: site name 84
                  description: site description 84
                  notes: note number 84
                  creator_id: 335
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 
                  custom_latitude: 
                  custom_longitude: 
                  location_obfuscated: true
                  project_ids: []
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 84</p>\n"
                  description_html_tagline: site description 84
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/site"
  "/sites/orphans":
    get:
      summary: list sites
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`.<br />
        Users that can't: `Harvester`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/sites/orphans?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 84
                  name: site name 86
                  description: site description 86
                  notes: note number 86
                  creator_id: 340
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 
                  custom_latitude: 
                  custom_longitude: 
                  location_obfuscated: true
                  project_ids: []
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 86</p>\n"
                  description_html_tagline: site description 86
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/site"
  "/saved_searches/new":
    get:
      summary: new saved_search
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - saved_searches
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data: {}
  "/saved_searches/filter":
    post:
      summary: filter saved_search
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - saved_searches
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/saved_searches/filter?direction=desc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 55
                  name: saved search name 55
                  description: saved search description 55
                  stored_query:
                    uuid:
                      eq: blah blah
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 346
                  deleter_id: 
                  deleted_at: 
                  project_ids:
                  - 82
                  analysis_job_ids:
                  - 55
                  description_html: "<p>saved search description 55</p>\n"
                  description_html_tagline: saved search description 55
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/saved_search"
  "/saved_searches/{id}":
    put:
      summary: can't update saved_search
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - saved_searches
      description: |2

        Users that can invoke this route: `Admin`.<br />
        Users that can't: `Harvester`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '404':
          description: not found
          content:
            application/json:
              example:
                meta:
                  status: 404
                  message: Not Found
                  error:
                    details: Could not find the requested page.
                    info:
                      original_route: saved_searches/56
                      original_http_method: PUT
                data: 
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/saved_search"
    delete:
      summary: delete saved_search
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - saved_searches
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
    patch:
      summary: can't update saved_search
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - saved_searches
      description: |2

        Users that can invoke this route: `Admin`.<br />
        Users that can't: `Harvester`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '404':
          description: not found
          content:
            application/json:
              example:
                meta:
                  status: 404
                  message: Not Found
                  error:
                    details: Could not find the requested page.
                    info:
                      original_route: saved_searches/58
                      original_http_method: PATCH
                data: 
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/saved_search"
    get:
      summary: show saved_search
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - saved_searches
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 59
                  name: saved search name 61
                  description: saved search description 61
                  stored_query:
                    uuid:
                      eq: blah blah
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 364
                  deleter_id: 
                  deleted_at: 
                  project_ids:
                  - 86
                  analysis_job_ids:
                  - 59
                  description_html: "<p>saved search description 61</p>\n"
                  description_html_tagline: saved search description 61
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/saved_search"
  "/saved_searches":
    get:
      summary: list saved_searches
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - saved_searches
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/saved_searches?direction=desc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 60
                  name: saved search name 62
                  description: saved search description 62
                  stored_query:
                    uuid:
                      eq: blah blah
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 368
                  deleter_id: 
                  deleted_at: 
                  project_ids:
                  - 87
                  analysis_job_ids:
                  - 60
                  description_html: "<p>saved search description 62</p>\n"
                  description_html_tagline: saved search description 62
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/saved_search"
    post:
      summary: create saved_search
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - saved_searches
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 62
                  name: saved search name 64
                  description: saved search description 64
                  stored_query:
                    uuid:
                      eq: blah blah
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  deleter_id: 
                  deleted_at: 
                  project_ids: []
                  analysis_job_ids: []
                  description_html: "<p>saved search description 64</p>\n"
                  description_html_tagline: saved search description 64
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/saved_search"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/saved_search"
  "/audio_event_imports/new":
    get:
      summary: new audio_event_import
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - audio_event_imports
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  name: 
                  description: 
                  file_name: 
  "/audio_event_imports/filter":
    post:
      summary: filter audio_event_import
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - audio_event_imports
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/audio_event_imports/filter?direction=asc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 2
                  name: region name 2
                  description: site **description** 2
                  files: []
                  imported_events: []
                  creator_id: 386
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 387
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  description_html_tagline: site <strong>description</strong> 2
                  description_html: "<p>site <strong>description</strong> 2</p>\n"
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/audio_event_import"
  "/audio_event_imports/{id}":
    delete:
      summary: delete audio_event_import
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - audio_event_imports
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
    patch:
      summary: update audio_event_import
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - audio_event_imports
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 4
                  name: region name 5
                  description: site **description** 5
                  files: []
                  imported_events: []
                  creator_id: 398
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  description_html_tagline: site <strong>description</strong> 5
                  description_html: "<p>site <strong>description</strong> 5</p>\n"
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/audio_event_import"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/audio_event_import"
    put:
      summary: update audio_event_import
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - audio_event_imports
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 5
                  name: region name 7
                  description: site **description** 7
                  files: []
                  imported_events: []
                  creator_id: 406
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  description_html_tagline: site <strong>description</strong> 7
                  description_html: "<p>site <strong>description</strong> 7</p>\n"
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/audio_event_import"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/audio_event_import"
    get:
      summary: show audio_event_import
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - audio_event_imports
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 6
                  name: region name 8
                  description: site **description** 8
                  files: []
                  imported_events: []
                  creator_id: 414
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 415
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  description_html_tagline: site <strong>description</strong> 8
                  description_html: "<p>site <strong>description</strong> 8</p>\n"
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/audio_event_import"
  "/audio_event_imports":
    post:
      summary: create audio_event_import
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - audio_event_imports
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 8
                  name: region name 10
                  description: site **description** 10
                  files: []
                  imported_events: []
                  creator_id: 1
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  description_html_tagline: site <strong>description</strong> 10
                  description_html: "<p>site <strong>description</strong> 10</p>\n"
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/audio_event_import"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/audio_event_import"
    get:
      summary: list audio_event_imports
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - audio_event_imports
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/audio_event_imports?direction=asc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 9
                  name: region name 11
                  description: site **description** 11
                  files: []
                  imported_events: []
                  creator_id: 428
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 429
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  description_html_tagline: site <strong>description</strong> 11
                  description_html: "<p>site <strong>description</strong> 11</p>\n"
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/audio_event_import"
  "/harvests/new":
    get:
      summary: new harvest
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  project_id: true
                  streaming: false
  "/harvests/{id}":
    get:
      summary: show harvest
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 84
                  creator_id: 434
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: false
                  status: new_harvest
                  project_id: 98
                  name: January 2nd Upload
                  upload_user: 
                  upload_password: 
                  upload_url: sftp://upload.test:2022
                  mappings: []
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: 
                  last_metadata_review_at: 
                  last_mappings_change_at: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/harvest"
    delete:
      summary: delete harvest
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
    put:
      summary: update harvest
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 86
                  creator_id: 442
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: false
                  status: new_harvest
                  project_id: 100
                  name: January 2nd Upload
                  upload_user: 
                  upload_password: 
                  upload_url: sftp://upload.test:2022
                  mappings: []
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: 
                  last_metadata_review_at: 
                  last_mappings_change_at: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/harvest"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/harvest"
    patch:
      summary: update harvest
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 87
                  creator_id: 446
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: false
                  status: new_harvest
                  project_id: 101
                  name: January 2nd Upload
                  upload_user: 
                  upload_password: 
                  upload_url: sftp://upload.test:2022
                  mappings: []
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: 
                  last_metadata_review_at: 
                  last_mappings_change_at: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/harvest"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/harvest"
  "/harvests/filter":
    post:
      summary: filter harvest
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/harvests/filter?direction=desc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 88
                  creator_id: 450
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: false
                  status: new_harvest
                  project_id: 102
                  name: January 2nd Upload
                  upload_user: 
                  upload_password: 
                  upload_url: sftp://upload.test:2022
                  mappings: []
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: 
                  last_metadata_review_at: 
                  last_mappings_change_at: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/harvest"
  "/harvests":
    get:
      summary: list harvests
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: created_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/harvests?direction=desc&items=25&order_by=created_at&page=1
                    previous: 
                    next: 
                data:
                - id: 89
                  creator_id: 454
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: false
                  status: new_harvest
                  project_id: 103
                  name: January 2nd Upload
                  upload_user: 
                  upload_password: 
                  upload_url: sftp://upload.test:2022
                  mappings: []
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: 
                  last_metadata_review_at: 
                  last_mappings_change_at: 
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/harvest"
    post:
      summary: create harvest
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - harvests
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 91
                  creator_id: 1
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  streaming: true
                  status: uploading
                  project_id: 104
                  name: January 2nd Upload
                  upload_user: Admin_91
                  upload_password: B7Mx2RJE4maGyAvYsBn9Vmha
                  upload_url: sftp://upload.test:2022
                  mappings:
                  - path: '108'
                    site_id: 108
                    utc_offset: 
                    recursive: true
                  report:
                    items_total: 0
                    items_size_bytes: 0
                    items_duration_seconds: 0.0
                    items_new: 0
                    items_metadata_gathered: 0
                    items_failed: 0
                    items_completed: 0
                    items_errored: 0
                    items_invalid_fixable: 0
                    items_invalid_not_fixable: 0
                    latest_activity_at: 
                    run_time_seconds: 
                  last_upload_at: '2020-01-02T03:04:05.677Z'
                  last_metadata_review_at: 
                  last_mappings_change_at: '2020-01-02T03:04:05.677Z'
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/harvest"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/harvest"
  "/regions":
    post:
      summary: create region
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 100
                  name: region name 102
                  description: site **description** 102
                  notes:
                    region_note_102: 102
                  creator_id: 1
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 106
                  site_ids: []
                  description_html: "<p>site <strong>description</strong> 102</p>\n"
                  description_html_tagline: site <strong>description</strong> 102
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/region"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/region"
    get:
      summary: list regions
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/regions?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 101
                  name: region name 103
                  description: site **description** 103
                  notes:
                    region_note_103: 103
                  creator_id: 468
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 107
                  site_ids:
                  - 110
                  description_html: "<p>site <strong>description</strong> 103</p>\n"
                  description_html_tagline: site <strong>description</strong> 103
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/region"
  "/regions/filter":
    post:
      summary: filter region
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/regions/filter?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 102
                  name: region name 104
                  description: site **description** 104
                  notes:
                    region_note_104: 104
                  creator_id: 472
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 108
                  site_ids:
                  - 111
                  description_html: "<p>site <strong>description</strong> 104</p>\n"
                  description_html_tagline: site <strong>description</strong> 104
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/region"
  "/regions/{id}":
    put:
      summary: update region
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 103
                  name: region name 106
                  description: site **description** 106
                  notes:
                    region_note_106: 106
                  creator_id: 476
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 110
                  site_ids:
                  - 112
                  description_html: "<p>site <strong>description</strong> 106</p>\n"
                  description_html_tagline: site <strong>description</strong> 106
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/region"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/region"
    get:
      summary: show region
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 104
                  name: region name 107
                  description: site **description** 107
                  notes:
                    region_note_107: 107
                  creator_id: 482
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 111
                  site_ids:
                  - 113
                  description_html: "<p>site <strong>description</strong> 107</p>\n"
                  description_html_tagline: site <strong>description</strong> 107
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/region"
    patch:
      summary: update region
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 105
                  name: region name 109
                  description: site **description** 109
                  notes:
                    region_note_109: 109
                  creator_id: 486
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  project_id: 113
                  site_ids:
                  - 114
                  description_html: "<p>site <strong>description</strong> 109</p>\n"
                  description_html_tagline: site <strong>description</strong> 109
                  image_urls: []
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/region"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/region"
    delete:
      summary: delete region
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
  "/regions/new":
    get:
      summary: new region
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - regions
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  name: 
                  description: 
                  notes: 
                  project_id: 
  "/analysis_jobs":
    get:
      summary: list analysis_jobs
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - analysis_jobs
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: updated_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/analysis_jobs?direction=desc&items=25&order_by=updated_at&page=1
                    previous: 
                    next: 
                data:
                - id: 78
                  name: job name 78
                  description: job description 78
                  annotation_name: 
                  custom_settings: custom settings 78
                  creator_id: 501
                  updater_id: 
                  deleter_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleted_at: 
                  script_id: 78
                  saved_search_id: 79
                  started_at: '2020-01-02T03:04:05.677Z'
                  overall_status: new
                  overall_status_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_progress:
                    new: 0
                    queued: 0
                    working: 0
                    successful: 0
                    failed: 0
                    timed_out: 0
                    cancelling: 0
                    cancelled: 0
                    total: 0
                  overall_progress_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_count: 0
                  overall_duration_seconds: 0.0
                  overall_data_length_bytes: 0
                  description_html: "<p>job description 78</p>\n"
                  description_html_tagline: job description 78
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/analysis_job"
    post:
      summary: create analysis_job
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - analysis_jobs
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 80
                  name: job name 80
                  description: job description 80
                  annotation_name: 
                  custom_settings: custom settings 80
                  creator_id: 1
                  updater_id: 1
                  deleter_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleted_at: 
                  script_id: 80
                  saved_search_id: 81
                  started_at: '2020-01-02T03:04:05.677Z'
                  overall_status: completed
                  overall_status_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_progress:
                    new: 0
                    queued: 0
                    working: 0
                    successful: 0
                    failed: 0
                    timed_out: 0
                    cancelling: 0
                    cancelled: 0
                    total: 0
                  overall_progress_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_count: 0
                  overall_duration_seconds: 0.0
                  overall_data_length_bytes: 0
                  description_html: "<p>job description 80</p>\n"
                  description_html_tagline: job description 80
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/analysis_job"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/analysis_job"
  "/analysis_jobs/{id}":
    delete:
      summary: delete analysis_job
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - analysis_jobs
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
    get:
      summary: show analysis_job
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - analysis_jobs
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 82
                  name: job name 82
                  description: job description 82
                  annotation_name: 
                  custom_settings: custom settings 82
                  creator_id: 516
                  updater_id: 
                  deleter_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleted_at: 
                  script_id: 82
                  saved_search_id: 83
                  started_at: '2020-01-02T03:04:05.677Z'
                  overall_status: completed
                  overall_status_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_progress:
                    new: 0
                    queued: 0
                    working: 0
                    successful: 0
                    failed: 0
                    timed_out: 0
                    cancelling: 0
                    cancelled: 0
                    total: 0
                  overall_progress_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_count: 0
                  overall_duration_seconds: 0.0
                  overall_data_length_bytes: 0
                  description_html: "<p>job description 82</p>\n"
                  description_html_tagline: job description 82
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/analysis_job"
    patch:
      summary: update analysis_job
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - analysis_jobs
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 83
                  name: job name 84
                  description: job description 84
                  annotation_name: 
                  custom_settings: custom settings 83
                  creator_id: 520
                  updater_id: 1
                  deleter_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleted_at: 
                  script_id: 83
                  saved_search_id: 84
                  started_at: '2020-01-02T03:04:05.677Z'
                  overall_status: completed
                  overall_status_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_progress:
                    new: 0
                    queued: 0
                    working: 0
                    successful: 0
                    failed: 0
                    timed_out: 0
                    cancelling: 0
                    cancelled: 0
                    total: 0
                  overall_progress_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_count: 0
                  overall_duration_seconds: 0.0
                  overall_data_length_bytes: 0
                  description_html: "<p>job description 84</p>\n"
                  description_html_tagline: job description 84
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/analysis_job"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/analysis_job"
    put:
      summary: update analysis_job
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - analysis_jobs
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 84
                  name: job name 86
                  description: job description 86
                  annotation_name: 
                  custom_settings: custom settings 85
                  creator_id: 527
                  updater_id: 1
                  deleter_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleted_at: 
                  script_id: 85
                  saved_search_id: 86
                  started_at: '2020-01-02T03:04:05.677Z'
                  overall_status: completed
                  overall_status_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_progress:
                    new: 0
                    queued: 0
                    working: 0
                    successful: 0
                    failed: 0
                    timed_out: 0
                    cancelling: 0
                    cancelled: 0
                    total: 0
                  overall_progress_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_count: 0
                  overall_duration_seconds: 0.0
                  overall_data_length_bytes: 0
                  description_html: "<p>job description 86</p>\n"
                  description_html_tagline: job description 86
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/analysis_job"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/analysis_job"
  "/analysis_jobs/new":
    get:
      summary: new analysis_job
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - analysis_jobs
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  annotation_name: 
                  custom_settings: 
  "/analysis_jobs/filter":
    post:
      summary: filter analysis_job
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - analysis_jobs
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: updated_at
                    direction: desc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/analysis_jobs/filter?direction=desc&items=25&order_by=updated_at&page=1
                    previous: 
                    next: 
                data:
                - id: 86
                  name: job name 88
                  description: job description 88
                  annotation_name: 
                  custom_settings: custom settings 88
                  creator_id: 538
                  updater_id: 
                  deleter_id: 
                  created_at: '2020-01-02T03:04:05.677Z'
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleted_at: 
                  script_id: 88
                  saved_search_id: 89
                  started_at: '2020-01-02T03:04:05.677Z'
                  overall_status: new
                  overall_status_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_progress:
                    new: 0
                    queued: 0
                    working: 0
                    successful: 0
                    failed: 0
                    timed_out: 0
                    cancelling: 0
                    cancelled: 0
                    total: 0
                  overall_progress_modified_at: '2020-01-02T03:04:05.677Z'
                  overall_count: 0
                  overall_duration_seconds: 0.0
                  overall_data_length_bytes: 0
                  description_html: "<p>job description 88</p>\n"
                  description_html_tagline: job description 88
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/analysis_job"
  "/datasets":
    get:
      summary: list datasets
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - datasets
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/datasets?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 87
                  name: gen_dataset_name86
                  description: dataset description 86
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 541
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  description_html: "<p>dataset description 86</p>\n"
                  description_html_tagline: dataset description 86
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/dataset"
    post:
      summary: create dataset
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - datasets
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`.<br />
        Users that can't: `Harvester`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 89
                  name: gen_dataset_name88
                  description: dataset description 88
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  description_html: "<p>dataset description 88</p>\n"
                  description_html_tagline: dataset description 88
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/dataset"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/dataset"
  "/datasets/{id}":
    get:
      summary: show dataset
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - datasets
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 90
                  name: gen_dataset_name89
                  description: dataset description 89
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 550
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  description_html: "<p>dataset description 89</p>\n"
                  description_html_tagline: dataset description 89
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/dataset"
    patch:
      summary: update dataset
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - datasets
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 91
                  name: gen_dataset_name91
                  description: dataset description 91
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 554
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  description_html: "<p>dataset description 91</p>\n"
                  description_html_tagline: dataset description 91
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/dataset"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/dataset"
    put:
      summary: update dataset
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - datasets
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 92
                  name: gen_dataset_name93
                  description: dataset description 93
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 559
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  description_html: "<p>dataset description 93</p>\n"
                  description_html_tagline: dataset description 93
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/dataset"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/dataset"
    delete:
      summary: can't delete a dataset
      security:
      - auth_token_header: []
      parameters:
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - datasets
      description: |2

        Users that can invoke this route: `Admin`.<br />
        Users that can't: `Harvester`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '404':
          description: not found
          content:
            application/json:
              example:
                meta:
                  status: 404
                  message: Not Found
                  error:
                    details: Could not find the requested page.
                    info:
                      original_route: datasets/93
                      original_http_method: DELETE
                data: 
  "/datasets/new":
    get:
      summary: new dataset
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - datasets
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  name: 
                  description: 
  "/datasets/filter":
    post:
      summary: filter dataset
      security:
      - auth_token_header: []
      parameters: []
      tags:
      - datasets
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/datasets/filter?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 95
                  name: gen_dataset_name96
                  description: dataset description 96
                  created_at: '2020-01-02T03:04:05.677Z'
                  creator_id: 572
                  updated_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  description_html: "<p>dataset description 96</p>\n"
                  description_html_tagline: dataset description 96
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/dataset"
  "/projects/{project_id}/sites/filter":
    post:
      summary: filter site
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/projects/132/sites/filter?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 133
                  name: site name 135
                  description: site description 135
                  notes: note number 135
                  creator_id: 576
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 124
                  custom_latitude: -24.04628
                  custom_longitude: 171.790013
                  location_obfuscated: false
                  project_ids:
                  - 132
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 135</p>\n"
                  description_html_tagline: site description 135
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/site"
  "/projects/{project_id}/sites/new":
    get:
      summary: new site
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  longitude: 
                  latitude: 
                  notes: 
                  image: 
                  tzinfo_tz: 
                  rails_tz: 
  "/projects/{project_id}/sites/{id}":
    put:
      summary: update site
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 135
                  name: site name 138
                  description: site description 138
                  notes: note number 138
                  creator_id: 584
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 
                  custom_latitude: -15.990541
                  custom_longitude: -51.99147
                  location_obfuscated: false
                  project_ids:
                  - 134
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 138</p>\n"
                  description_html_tagline: site description 138
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/site"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/site"
    get:
      summary: show site
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 136
                  name: site name 139
                  description: site description 139
                  notes: note number 139
                  creator_id: 589
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 127
                  custom_latitude: 70.214108
                  custom_longitude: 110.073699
                  location_obfuscated: false
                  project_ids:
                  - 135
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 139</p>\n"
                  description_html_tagline: site description 139
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/site"
    patch:
      summary: update site
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                data:
                  id: 137
                  name: site name 141
                  description: site description 141
                  notes: note number 141
                  creator_id: 593
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 1
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 
                  custom_latitude: -23.627877
                  custom_longitude: 114.318721
                  location_obfuscated: false
                  project_ids:
                  - 136
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 141</p>\n"
                  description_html_tagline: site description 141
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/site"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/site"
    delete:
      summary: delete site
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      - name: id
        in: path
        description: id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '204':
          description: successful
  "/projects/{project_id}/sites":
    post:
      summary: create site
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '201':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 201
                  message: Created
                data:
                  id: 140
                  name: site name 144
                  description: site description 144
                  notes: note number 144
                  creator_id: 1
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 
                  custom_latitude: 
                  custom_longitude: 
                  location_obfuscated: false
                  project_ids:
                  - 138
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 144</p>\n"
                  description_html_tagline: site description 144
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      "$ref": "#/components/schemas/site"
      requestBody:
        content:
          application/json:
            schema:
              "$ref": "#/components/schemas/site"
    get:
      summary: list sites
      security:
      - auth_token_header: []
      parameters:
      - name: project_id
        in: path
        description: project_id
        required: true
        schema:
          type: integer
      tags:
      - sites
      description: |2

        Users that can invoke this route: `Admin`, `owner user`, `writer`, `reader`, `no_access`, `anyone`.<br />
        Users that can't: `Harvester`.

        Note: accessing a list/index/filter endpoint may return no results due to project permissions
      responses:
        '200':
          description: successful
          content:
            application/json:
              example:
                meta:
                  status: 200
                  message: OK
                  sorting:
                    order_by: name
                    direction: asc
                  paging:
                    page: 1
                    items: 25
                    total: 1
                    max_page: 1
                    current: http://localhost:3000/projects/139/sites?direction=asc&items=25&order_by=name&page=1
                    previous: 
                    next: 
                data:
                - id: 141
                  name: site name 145
                  description: site description 145
                  notes: note number 145
                  creator_id: 607
                  created_at: '2020-01-02T03:04:05.677Z'
                  updater_id: 
                  updated_at: '2020-01-02T03:04:05.677Z'
                  deleter_id: 
                  deleted_at: 
                  region_id: 131
                  custom_latitude: -28.745405
                  custom_longitude: -4.076742
                  location_obfuscated: false
                  project_ids:
                  - 139
                  timezone_information: 
                  image_urls:
                  - size: extralarge
                    url: "/images/site/site_span4.png"
                    width: 300
                    height: 300
                  - size: large
                    url: "/images/site/site_span3.png"
                    width: 220
                    height: 220
                  - size: medium
                    url: "/images/site/site_span2.png"
                    width: 140
                    height: 140
                  - size: small
                    url: "/images/site/site_span1.png"
                    width: 60
                    height: 60
                  - size: tiny
                    url: "/images/site/site_spanhalf.png"
                    width: 30
                    height: 30
                  description_html: "<p>site description 145</p>\n"
                  description_html_tagline: site description 145
              schema:
                allOf:
                - "$ref": "#/components/schemas/standard_response"
                - type: object
                  properties:
                    data:
                      type: array
                      items:
                        "$ref": "#/components/schemas/site"
servers:
- url: "{protocol}://{authority}"
  variables:
    authority:
      default: localhost:3000
    protocol:
      enum:
      - http
      - https
      default: http
components:
  securitySchemes:
    auth_token_header:
      type: apiKey
      description: |
        The api auth_token placed in the 'Authorization' header.
        Example:

        ```
        Token token="xxxxxxxxxx"
        ```

        Where the your auth_token is substituted into the placeholder.
      in: header
      name: Authorization
      scheme: Token
    auth_token_query_string:
      type: apiKey
      name: user_token
      in: query_string
  schemas:
    id:
      type: integer
      minimum: 0
      readOnly: true
    nullableId:
      type:
      - integer
      - 'null'
      minimum: 0
      readOnly: true
    timezone_information:
      anyOf:
      - type: object
        properties:
          identifier_alt:
            type:
            - string
            - 'null'
          identifier:
            type: string
          friendly_identifier:
            type: string
          utc_offset:
            type: string
          utc_total_offset:
            type: integer
      - type: 'null'
    image_urls:
      type: array
      items:
        type: object
        properties:
          size:
            type: string
          url:
            type: string
            format: URI
          width:
            type: integer
            nullable: true
          height:
            type: integer
            nullable: true
    permission_levels:
      type: string
      nullable: true
      enum:
      - owner
      - writer
      - reader
      - 
    meta:
      properties:
        capabilities:
          type: object
          items:
            type: object
            properties:
              can:
                type:
                - 'null'
                - boolean
              details:
                type: string
            required:
            - can
      type: object
    meta_error:
      type: object
      properties:
        error:
          type: object
        required:
        - error
    standard_response:
      type: object
      additionalProperties: false
      properties:
        meta:
          "$ref": "#/components/schemas/meta"
        data:
          oneOf:
          - type: array
          - type: object
      required:
      - meta
      - data
    error_response:
      type: object
      additionalProperties: false
      properties:
        meta:
          allOf:
          - "$ref": "#/components/schemas/meta"
          - "$ref": "#/components/schemas/meta_error"
        data:
          type: 'null'
      required:
      - meta
      - data
    cms_blob:
      type: object
      required:
      - id
      - site_id
      - layout_id
      - parent_id
      - target_page_id
      - label
      - slug
      - full_path
      - content
      - position
      - children_count
      - is_published
      - created_at
      - updated_at
      - children
      properties:
        id:
          "$ref": "#/components/schemas/id"
        site_id:
          "$ref": "#/components/schemas/id"
        layout_id:
          "$ref": "#/components/schemas/id"
        parent_id:
          "$ref": "#/components/schemas/nullableId"
        target_page_id:
          "$ref": "#/components/schemas/nullableId"
        label:
          type: string
        slug:
          type: string
        full_path:
          type: string
          format: uri-reference
        content:
          type: string
          format: html
        position:
          type: integer
        children_count:
          type: integer
        is_published:
          type: boolean
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        children:
          type: array
          additionalItems: true
          items:
            type: object
            properties:
              label:
                type: string
              full_path:
                type: string
                format: uri-reference
            additionalProperties: false
      additionalProperties: false
    stats:
      type: object
      required:
      - summary
      - recent
      properties:
        summary:
          type: object
          properties:
            users_online:
              type: integer
            users_total:
              type: integer
            online_window_start:
              type: string
              format: date-time
              readOnly: true
            projects_total:
              type: integer
            regions_total:
              type: integer
            sites_total:
              type: integer
            annotations_total:
              type: integer
            annotations_total_duration:
              type: number
            annotations_recent:
              type: integer
            audio_recordings_total:
              type: integer
            audio_recordings_recent:
              type: integer
            audio_recordings_total_duration:
              type: number
            audio_recordings_total_size:
              type: integer
            tags_total:
              type: integer
            tags_applied_total:
              type: integer
            tags_applied_unique_total:
              type: integer
        recent:
          type: object
          properties:
            audio_recording_ids:
              type: array
              items:
                "$ref": "#/components/schemas/id"
            audio_event_ids:
              type: array
              items:
                "$ref": "#/components/schemas/id"
      additionalProperties: false
    project:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        description_html:
          type:
          - string
          - 'null'
          readOnly: true
        description_html_tagline:
          type:
          - string
          - 'null'
          readOnly: true
        notes:
          type: string
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updater_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        deleter_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        deleted_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        site_ids:
          type: array
          items:
            "$ref": "#/components/schemas/id"
            readOnly: true
          readOnly: false
        region_ids:
          type: array
          items:
            "$ref": "#/components/schemas/id"
            readOnly: true
          readOnly: true
        owner_ids:
          type: array
          items:
            "$ref": "#/components/schemas/id"
            readOnly: true
          readOnly: true
        image_urls:
          "$ref": "#/components/schemas/image_urls"
        access_level:
          "$ref": "#/components/schemas/permission_levels"
        allow_original_download:
          "$ref": "#/components/schemas/permission_levels"
        allow_audio_upload:
          type: boolean
      required:
      - id
      - name
      - description
      - description_html
      - description_html_tagline
      - notes
      - creator_id
      - created_at
      - updater_id
      - updated_at
      - deleter_id
      - deleted_at
      - owner_ids
      - site_ids
      - region_ids
      - image_urls
      - allow_original_download
    analysis_job:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        name:
          type: string
        annotation_name:
          type:
          - string
          - 'null'
        description:
          type:
          - string
          - 'null'
        description_html:
          type:
          - string
          - 'null'
          readOnly: true
        description_html_tagline:
          type:
          - string
          - 'null'
          readOnly: true
        custom_settings:
          type: string
        script_id:
          "$ref": "#/components/schemas/id"
        saved_search_id:
          "$ref": "#/components/schemas/id"
        started_at:
          type:
          - 'null'
          - date
          readOnly: true
        overall_status:
          type: string
          enum:
          - before_save
          - new
          - preparing
          - processing
          - completed
          - suspended
          readOnly: true
        overall_status_modified_at:
          type:
          - 'null'
          - date
          readOnly: true
        overall_progress:
          type: object
          readOnly: true
        overall_progress_modified_at:
          type:
          - 'null'
          - date
          readOnly: true
        overall_count:
          type: integer
          readOnly: true
        overall_duration_seconds:
          type: number
          readOnly: true
        overall_data_length_bytes:
          type: integer
          readOnly: true
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updater_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        deleter_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        deleted_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
      required:
      - id
      - name
      - description
      - description_html
      - description_html_tagline
      - custom_settings
      - script_id
      - saved_search_id
      - started_at
      - overall_status
      - overall_status_modified_at
      - overall_progress
      - overall_progress_modified_at
      - overall_count
      - overall_duration_seconds
      - overall_data_length_bytes
    bookmark:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        audio_recording_id:
          "$ref": "#/components/schemas/id"
        name:
          type: string
        category:
          type: string
        offset_seconds:
          type: number
        description:
          type:
          - string
          - 'null'
        description_html:
          type:
          - string
          - 'null'
          readOnly: true
        description_html_tagline:
          type:
          - string
          - 'null'
          readOnly: true
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updater_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
      required:
      - id
      - audio_recording_id
      - name
      - category
      - offset_seconds
      - description
      - description_html
      - description_html_tagline
      - creator_id
      - created_at
      - updater_id
      - updated_at
    dataset:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        description_html:
          type:
          - string
          - 'null'
          readOnly: true
        description_html_tagline:
          type:
          - string
          - 'null'
          readOnly: true
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updater_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
      required:
      - id
      - name
      - description
      - created_at
      - creator_id
      - updated_at
      - updater_id
    saved_search:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        analysis_job_ids:
          type: array
          items:
            "$ref": "#/components/schemas/id"
        project_ids:
          type: array
          items:
            "$ref": "#/components/schemas/id"
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        description_html:
          type:
          - string
          - 'null'
          readOnly: true
        description_html_tagline:
          type:
          - string
          - 'null'
          readOnly: true
        stored_query:
          type: object
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        deleter_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        deleted_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
      required:
      - id
      - name
      - description
      - description_html
      - description_html_tagline
      - stored_query
      - creator_id
      - created_at
      - deleter_id
      - deleted_at
    script:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        group_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        description_html:
          type:
          - string
          - 'null'
          readOnly: true
        description_html_tagline:
          type:
          - string
          - 'null'
          readOnly: true
        analysis_identifier:
          type: string
        executable_settings:
          type: string
        executable_settings_media_type:
          type: string
        version:
          type: number
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        is_last_version:
          type: boolean
          readOnly: true
        is_first_version:
          type: boolean
          readOnly: true
        analysis_action_params:
          type: object
      required:
      - id
      - group_id
      - name
      - description
      - analysis_identifier
      - executable_settings_media_type
      - version
      - created_at
      - creator_id
      - is_last_version
      - is_first_version
      - analysis_action_params
    site:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        description_html:
          type:
          - string
          - 'null'
          readOnly: true
        description_html_tagline:
          type:
          - string
          - 'null'
          readOnly: true
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updater_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        deleter_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        deleted_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        notes:
          type: string
        project_ids:
          type: array
          items:
            "$ref": "#/components/schemas/id"
        location_obfuscated:
          type: boolean
        custom_latitude:
          type:
          - number
          - 'null'
          minimum: -90
          maximum: 90
        custom_longitude:
          type:
          - number
          - 'null'
          minimum: -180
          maximum: 180
        timezone_information:
          "$ref": "#/components/schemas/timezone_information"
          readOnly: false
        image_urls:
          "$ref": "#/components/schemas/image_urls"
        region_id:
          "$ref": "#/components/schemas/nullableId"
      required:
      - id
      - name
      - description
      - description_html
      - description_html_tagline
      - creator_id
      - created_at
      - updater_id
      - updated_at
      - deleter_id
      - deleted_at
      - notes
      - project_ids
      - location_obfuscated
      - custom_latitude
      - custom_longitude
      - timezone_information
      - image_urls
      - region_id
    region:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        description_html:
          type:
          - string
          - 'null'
          readOnly: true
        description_html_tagline:
          type:
          - string
          - 'null'
          readOnly: true
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updater_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        deleter_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        deleted_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        notes:
          type: object
        project_id:
          "$ref": "#/components/schemas/id"
        site_ids:
          type: array
          items:
            "$ref": "#/components/schemas/id"
          readOnly: true
        image_urls:
          "$ref": "#/components/schemas/image_urls"
        image:
          type: string
          format: binary
          writeOnly: true
          nullable: true
      required:
      - id
      - name
      - notes
      - project_id
      - description
      - description_html
      - description_html_tagline
      - creator_id
      - created_at
      - updater_id
      - updated_at
      - deleter_id
      - deleted_at
      - site_ids
      - image_urls
    audio_recording:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        uuid:
          type: string
          format: uuid
          readOnly: true
        site_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        duration_seconds:
          type: number
        sample_rate_hertz:
          type: number
        channels:
          type: number
        bit_rate_bps:
          type: number
        media_type:
          type: string
        data_length_bytes:
          type: number
        status:
          type: string
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updater_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        deleter_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        deleted_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        recorded_date:
          type: string
          format: date-time
          readOnly: false
        file_hash:
          type: string
        notes:
          type: object
        recorded_date_timezone:
          type:
          - 'null'
          - string
        uploader_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: false
        original_file_name:
          type: string
        canonical_file_name:
          type: string
          readOnly: true
        recorded_utc_offset:
          type:
          - 'null'
          - string
          readOnly: true
      required:
      - id
      - uuid
      - site_id
      - duration_seconds
      - sample_rate_hertz
      - channels
      - bit_rate_bps
      - media_type
      - data_length_bytes
      - status
      - creator_id
      - created_at
      - updater_id
      - updated_at
      - deleter_id
      - deleted_at
      - recorded_date
      - file_hash
      - notes
      - uploader_id
      - original_file_name
      - canonical_file_name
      - recorded_utc_offset
    permission:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updater_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        project_id:
          "$ref": "#/components/schemas/id"
          readOnly: false
        level:
          "$ref": "#/components/schemas/permission_levels"
        user_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: false
        allow_logged_in:
          type: boolean
        allow_anonymous:
          type: boolean
      required:
      - id
      - project_id
      - creator_id
      - created_at
      - updater_id
      - updated_at
      - level
      - user_id
      - allow_anonymous
      - allow_logged_in
    harvest:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        name:
          type:
          - 'null'
          - string
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updater_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        project_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        streaming:
          type: boolean
        status:
          type: string
          enum:
          - new_harvest
          - uploading
          - scanning
          - metadata_extraction
          - metadata_review
          - processing
          - complete
        last_upload_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        last_metadata_review_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        last_mappings_change_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        upload_user:
          type:
          - 'null'
          - string
          readOnly: true
        upload_password:
          type:
          - 'null'
          - string
          readOnly: true
        upload_url:
          type:
          - 'null'
          - string
          format: url
          readOnly: true
        mappings:
          type:
          - array
          - 'null'
          items:
            type: object
            properties:
              path:
                type: string
              site_id:
                type:
                  "$ref": "#/components/schemas/nullableId"
                  readOnly: true
        report:
          type: object
          readOnly: true
          properties:
            items_total:
              type: integer
            items_size_bytes:
              type: integer
            items_duration_seconds:
              type: number
            items_invalid_fixable:
              type: integer
            items_invalid_not_fixable:
              type: integer
            items_new:
              type: integer
            items_metadata_gathered:
              type: integer
            items_failed:
              type: integer
            items_completed:
              type: integer
            items_errored:
              type: integer
            latest_activity_at:
              type:
              - 'null'
              - string
              format: date-time
            run_time_seconds:
              type:
              - 'null'
              - number
      required:
      - id
      - creator_id
      - created_at
      - updater_id
      - updated_at
      - project_id
      - status
      - streaming
      - upload_user
      - upload_password
      - upload_url
      - mappings
      - report
    harvest_item:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        deleted:
          type: boolean
          readOnly: true
        path:
          type: string
          readOnly: true
        status:
          type: string
          enum:
          - new
          - metadata_gathered
          - failed
          - completed
          - errored
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        audio_recording_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        uploader_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        harvest_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        validations:
          type: array
          readOnly: true
          items:
            type: object
            additionalProperties: false
            properties:
              status:
                type: string
                readOnly: true
                enum:
                - fixable
                - not_fixable
              message:
                type: string
                readOnly: true
              name:
                type: string
                readOnly: true
        report:
          type: object
          readOnly: true
          properties:
            items_total:
              type: integer
            items_size_bytes:
              type:
              - 'null'
              - integer
            items_duration_seconds:
              type:
              - 'null'
              - integer
            items_invalid_fixable:
              type: integer
            items_invalid_not_fixable:
              type: integer
            items_new:
              type: integer
            items_metadata_gathered:
              type: integer
            items_failed:
              type: integer
            items_completed:
              type: integer
            items_errored:
              type: integer
    audio_event_import:
      type: object
      additionalProperties: false
      properties:
        id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        name:
          type: string
        description:
          type:
          - string
          - 'null'
        description_html:
          type:
          - string
          - 'null'
          readOnly: true
        description_html_tagline:
          type:
          - string
          - 'null'
          readOnly: true
        creator_id:
          "$ref": "#/components/schemas/id"
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updater_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        updated_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        deleter_id:
          "$ref": "#/components/schemas/nullableId"
          readOnly: true
        deleted_at:
          type:
          - 'null'
          - string
          format: date-time
          readOnly: true
        files:
          type: array
          readOnly: true
          items:
            type: object
            additionalProperties: false
            properties:
              name:
                type: string
              additional_tags:
                type: array
                items:
                  "$ref": "#/components/schemas/id"
                  readOnly: true
                readOnly: true
              imported_at:
                type: string
                format: date-time
                readOnly: true
            readOnly: true
        imported_events:
          type: array
          readOnly: true
          items:
            properties:
              errors:
                type: array
                readOnly: true
            readOnly: true
      required:
      - id
      - name
      - files
      - imported_events
      - description
      - description_html
      - description_html_tagline
      - creator_id
      - created_at
      - updater_id
      - updated_at
      - deleter_id
      - deleted_at