{
  "getStatus": {
    "endpoint": "/status"
  },
  "getIndex": {
    "endpoint": "/"
  },
  "getBatch": {
    "endpoint": "/batch",
    "params": [
      "pages"
    ]
  },
  "getToken": {
    "endpoint": "/token"
  },
  "deleteToken": {
    "endpoint": "/token",
    "verb": "DELETE",
    "expectedStatus": 204
  },
  "refreshToken": {
    "endpoint": "/token/refresh",
    "verb": "POST",
    "expectedStatus": 204
  },
  "getCompany": {
    "endpoint": "/company"
  },
  "patchCompany": {
    "endpoint": "/company",
    "verb": "PATCH",
    "expectedStatus": 200
  },
  "postCompanyUpdate": {
    "endpoint": "/company/update",
    "verb": "POST",
    "expectedStatus": 200
  },
  "deleteCompanyReset": {
    "endpoint": "/company/reset",
    "verb": "DELETE",
    "expectedStatus": 204
  },
  "getSubcompanies": {
    "endpoint": "/subcompanies"
  },
  "postSubcompanies": {
    "endpoint": "/subcompanies",
    "verb": "POST",
    "body": [
      "user",
      "name",
      "hydraters"
    ]
  },
  "getSubcompaniesById": {
    "endpoint": "/subcompanies/{id}",
    "requireId": true,
    "subFunctions": {
      "deleteReset": {
        "endpoint": "/reset",
        "verb": "DELETE",
        "expectedStatus": 204
      }
    }
  },
  "patchSubcompaniesById": {
    "endpoint": "/subcompanies/{id}",
    "requireId": true,
    "verb": "PATCH",
    "body": [
      "name",
      "hydraters",
      "documents_per_update"
    ]
  },
  "deleteSubcompaniesById": {
    "endpoint": "/subcompanies/{id}",
    "verb": "DELETE",
    "requireId": true,
    "params": [
      "force"
    ],
    "expectedStatus": 204
  },
  "getDocuments": {
    "endpoint": "/documents",
    "noCheckParams": true,
    "params": [
      "id",
      "search",
      "before",
      "after",
      "document_type",
      "token",
      "_meta",
      "has_meta",
      "snippet_size",
      "start",
      "sort",
      "limit",
      "strict"
    ]
  },
  "postDocuments": {
    "endpoint": "/documents",
    "verb": "POST",
    "body": [
      "identifier",
      "creation_date",
      "modification_date",
      "document_type",
      "actions",
      "data",
      "metadata",
      "related",
      "user_access"
    ]
  },
  "getDocumentsById": {
    "endpoint": "/documents/{id}",
    "requireId": true,
    "noCheckParams": true,
    "params": [
      "search",
      "snippet_size"
    ],
    "subFunctions": {
      "getSimilar": {
        "endpoint": "/similar"
      },
      "getRelated": {
        "endpoint": "/related"
      },
      "getRaw": {
        "endpoint": "/raw"
      },
      "getFile": {
        "endpoint": "/file"
      }
    }
  },
  "patchDocumentsById": {
    "endpoint": "/documents/{id}",
    "verb": "PATCH",
    "requireId": true,
    "body": [
      "identifier",
      "document_type",
      "actions",
      "data",
      "metadata",
      "related",
      "user_access"
    ],
    "expectedStatus": 204
  },
  "deleteDocumentsById": {
    "endpoint": "/documents/{id}",
    "verb": "DELETE",
    "requireId": true,
    "expectedStatus": 204
  },
  "getDocumentsByIdentifier": {
    "endpoint": "/documents/identifier/{identifier}",
    "requireIdentifier": true,
    "noCheckParams": true,
    "params": [
      "search",
      "snippet_size"
    ],
    "subFunctions": {
      "getSimilar": {
        "endpoint": "/similar"
      },
      "getRelated": {
        "endpoint": "/related"
      },
      "getRaw": {
        "endpoint": "/raw"
      },
      "getFile": {
        "endpoint": "/file"
      }
    }
  },
  "deleteDocumentsByIdentifier": {
    "endpoint": "/documents/identifier/{identifier}",
    "verb": "DELETE",
    "requireIdentifier": true,
    "expectedStatus": 204
  },
  "getUser": {
    "endpoint": "/user"
  },
  "patchUser": {
    "endpoint": "/user",
    "verb": "PATCH",
    "expectedStatus": 200,
    "body": [
      "email",
      "name",
      "password",
      "is_admin"
    ]
  },
  "postUserUpdate": {
    "endpoint": "/user/update",
    "verb": "POST",
    "expectedStatus": 200
  },
  "deleteUserReset": {
    "endpoint": "/user/reset",
    "verb": "DELETE",
    "expectedStatus": 204
  },
  "getUsers": {
    "endpoint": "/users"
  },
  "postUsers": {
    "endpoint": "/users",
    "verb": "POST",
    "body": [
      "email",
      "name",
      "password",
      "is_admin"
    ]
  },
  "getUsersById": {
    "endpoint": "/users/{id}",
    "requireId": true,
    "subFunctions": {
      "deleteReset": {
        "endpoint": "/reset",
        "verb": "DELETE",
        "expectedStatus": 204
      }
    }
  },
  "patchUsersById": {
    "endpoint": "/users/{id}",
    "verb": "PATCH",
    "requireId": true,
    "body": [
      "email",
      "name",
      "password",
      "is_admin"
    ]
  },
  "deleteUsersById": {
    "endpoint": "/users/{id}",
    "verb": "DELETE",
    "requireId": true,
    "expectedStatus": 204
  },
  "getDocumentTypes": {
    "endpoint": "/document_types"
  },
  "getProviders": {
    "endpoint": "/providers"
  },
  "getProvidersById": {
    "endpoint": "/providers/{id}",
    "requireId": true,
    "subFunctions": {
      "deleteReset": {
        "endpoint": "/reset",
        "verb": "DELETE",
        "expectedStatus": 204
      }
    }
  },
  "deleteProvidersById": {
    "endpoint": "/providers/{id}",
    "verb": "DELETE",
    "requireId": true,
    "expectedStatus": 204
  },
  "getHydraters": {
    "endpoint": "/hydraters"
  },
  "postHydraters": {
    "endpoint": "/hydraters",
    "verb": "POST",
    "body": [
      "url",
      "description",
      "short_name",
      "filters",
      "company",
      "required_data"
    ]
  },
  "getHydratersById": {
    "endpoint": "/hydraters/{id}",
    "requireId": true
  },
  "deleteHydratersById": {
    "endpoint": "/hydraters/{id}",
    "verb": "DELETE",
    "requireId": true,
    "expectedStatus": 204
  },
  "trackProviderUpdate": {
    "endpoint": "/track/provider-updated",
    "verb": "POST",
    "body": [
      "is_first",
      "time_spent_on_queue",
      "time_spent_on_tasks",
      "total_time_spent"
    ],
    "expectedStatus": 204
  }
}
