--- openapi: 3.0.1 info: title: Trefle API v1 version: 2.7.0 description: |- A REST API over a global plants database: taxonomy, botanical traits, distribution zones and images. Every endpoint but `GET /api/v1` requires a token, passed either as a `token` query parameter or as `Authorization: Bearer `. Claim one with `POST /api/auth/claim`. Trefle compiles data from external sources; each record lists the sources it was built from, with their own licence. Attribution is required — see https://trefle.io/citation. license: name: CC-BY-4.0 url: https://creativecommons.org/licenses/by/4.0/ paths: "/api/v1": get: summary: API status tags: - Root description: Public database counters. This is the only endpoint that does not require a token. operationId: getApiStatus security: [] responses: '200': description: Success content: application/json: schema: "$ref": "#/components/schemas/api_status" "/api/v1/me": get: summary: Retrieve the token owner tags: - Root description: The profile of the account the token belongs to. `name`, `email` and `created_at` are null when authenticating with a JWT. operationId: getMe security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: "$ref": "#/components/schemas/user_profile" '401': description: Invalid credentials "/api/v1/kingdoms": get: summary: Searches kingdoms tags: - Kingdoms description: List kingdoms operationId: listKingdoms security: - token: [] - bearerAuth: [] parameters: - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/kingdom" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/kingdoms/{id}": get: summary: Retrieve a kingdom tags: - Kingdoms description: Get a kingdom operationId: getKingdom parameters: - name: id required: true in: path description: The id or the slug of the requested kingdom schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/kingdom" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/subkingdoms": get: summary: Searches subkingdoms tags: - Subkingdoms description: List subkingdoms operationId: listSubkingdoms security: - token: [] - bearerAuth: [] parameters: - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/subkingdom" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/subkingdoms/{id}": get: summary: Retrieve a subkingdom tags: - Subkingdoms description: Get a subkingdom operationId: getSubkingdom parameters: - name: id required: true in: path description: The id or the slug of the requested sub-kingdom schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/subkingdom" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/divisions": get: summary: Searches divisions tags: - Divisions description: List divisions operationId: listDivisions security: - token: [] - bearerAuth: [] parameters: - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/division" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/divisions/{id}": get: summary: Retrieve a division tags: - Divisions description: Get a division operationId: getDivision parameters: - name: id required: true in: path description: The id or the slug of the requested division schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/division" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/division_classes": get: summary: Searches division classes tags: - DivisionClasses description: List division classes operationId: listDivisionClasses security: - token: [] - bearerAuth: [] parameters: - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/division_class" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/division_classes/{id}": get: summary: Retrieve a division class tags: - DivisionClasses description: Get a division class operationId: getDivisionClass parameters: - name: id required: true in: path description: The id or the slug of the requested division class schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/division_class" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/division_orders": get: summary: Searches division orders tags: - DivisionOrders description: List division orders operationId: listDivisionOrders security: - token: [] - bearerAuth: [] parameters: - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/division_order" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/division_orders/{id}": get: summary: Retrieve a division order tags: - DivisionOrders description: Get a division order operationId: getDivisionOrder parameters: - name: id required: true in: path description: The id or the slug of the requested division order schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/division_order" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/families": get: summary: Searches families tags: - Families description: List families operationId: listFamilies security: - token: [] - bearerAuth: [] parameters: - name: page in: query required: false description: The page to fetch schema: type: number - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_families" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_families" responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/family" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/families/{id}": get: summary: Retrieve a family tags: - Families description: Get a family operationId: getFamily parameters: - name: id required: true in: path description: The id or the slug of the requested family schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/family" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/families/{family_id}/genus": get: summary: List genus of a family tags: - Families description: List the genus of the requested family operationId: listGenusFamily security: - token: [] - bearerAuth: [] parameters: - name: family_id required: true in: path description: The family id or slug schema: type: string - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_genus" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_genus" - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/genus" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/families/{family_id}/genus/{id}": get: summary: Retrieve a genus of a family tags: - Families description: Get one genus of the requested family operationId: getGenusFamily security: - token: [] - bearerAuth: [] parameters: - name: family_id required: true in: path description: The family id or slug schema: type: string - name: id required: true in: path description: The id or the slug of the requested record schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/genus" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/genus": get: summary: Searches genus tags: - Genus description: List genus operationId: listGenus parameters: - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_genus" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_genus" - name: page in: query required: false description: The page to fetch schema: type: number security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/genus" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/genus/{id}": get: summary: Retrieve a genus tags: - Genus description: Get a genus operationId: getGenus parameters: - name: id required: true in: path description: The id or the slug of the requested genus schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/genus" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/genus/{genus_id}/species": get: summary: List species of a genus tags: - Genus description: List the species of the requested genus operationId: listSpeciesGenus security: - token: [] - bearerAuth: [] parameters: - name: genus_id required: true in: path description: The genus id or slug schema: type: string - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_species" - name: filter_not in: query required: false description: Exclude results matching null values schema: "$ref": "#/components/schemas/filters_not_species" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_species" - name: range in: query required: false description: Range on values schema: "$ref": "#/components/schemas/ranges_species" - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/species_light" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/genus/{genus_id}/species/{id}": get: summary: Retrieve a species of a genus tags: - Genus description: Get one species of the requested genus operationId: getSpeciesGenus security: - token: [] - bearerAuth: [] parameters: - name: genus_id required: true in: path description: The genus id or slug schema: type: string - name: id required: true in: path description: The id or the slug of the requested record schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/species" meta: type: object properties: last_modified: type: string images_count: type: integer sources_count: type: integer synonyms_count: type: integer '401': description: Invalid credentials "/api/v1/plants": get: summary: List plants tags: - Plants description: List plants operationId: listPlants security: - token: [] - bearerAuth: [] parameters: - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_species" - name: filter_not in: query required: false description: Exclude results matching null values schema: "$ref": "#/components/schemas/filters_not_species" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_species" - name: range in: query required: false description: Range on values schema: "$ref": "#/components/schemas/ranges_species" - name: page in: query required: false description: The page to fetch. Capped at 2500 -- deeper pages return a 400 (#367) schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/species_light" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/plants/{id}": get: summary: Retrieve a plant tags: - Plants description: Get a plant operationId: getPlant parameters: - name: id required: true in: path description: The id or the slug of the requested plant schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/plant" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/plants/search": get: summary: Search for a plant tags: - Plants description: Search for a plant with the given scientific name, common name, synonym name etc. operationId: searchPlants parameters: - name: q required: true in: query description: The string to search schema: type: string - name: page in: query required: false description: The page to fetch schema: type: number - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_plants" - name: filter_not in: query required: false description: Exclude results matching null values schema: "$ref": "#/components/schemas/filters_not_species" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_plants" - name: range in: query required: false description: Range on values schema: "$ref": "#/components/schemas/ranges_plants" security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/species_light" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/plants/{id}/report": post: summary: Report an error tags: - Plants description: A short API call to report an error regarding a plant entry operationId: reportPlants parameters: - name: id required: true in: path description: The id or the slug of the requested species schema: type: string security: - token: [] - bearerAuth: [] responses: '201': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/correction" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials requestBody: content: application/json: schema: type: object properties: notes: type: string example: The flower color is red description: An optional note about the incorrect data description: An optional note about the incorrect data "/api/v1/distributions/{zone_id}/plants": get: summary: List plants in a distribution zone tags: - Plants description: List all the plants in the requested zone. operationId: listPlantsZone security: - token: [] - bearerAuth: [] parameters: - name: zone_id required: true in: path description: The zone id or twdg code schema: type: string - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_species" - name: filter_not in: query required: false description: Exclude results matching null values schema: "$ref": "#/components/schemas/filters_not_species" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_species" - name: range in: query required: false description: Range on values schema: "$ref": "#/components/schemas/ranges_species" - name: page in: query required: false description: The page to fetch. Capped at 2500 -- deeper pages return a 400 (#367) schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/species_light" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/genus/{genus_id}/plants": get: summary: List plants of a genus tags: - Plants description: List plants of the requested genus operationId: listPlantsGenus security: - token: [] - bearerAuth: [] parameters: - name: genus_id required: true in: path description: The genus id or slug schema: type: string - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_species" - name: filter_not in: query required: false description: Exclude results matching null values schema: "$ref": "#/components/schemas/filters_not_species" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_species" - name: range in: query required: false description: Range on values schema: "$ref": "#/components/schemas/ranges_species" - name: page in: query required: false description: The page to fetch. Capped at 2500 -- deeper pages return a 400 (#367) schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/species_light" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/plants/{plant_id}/species": get: summary: List species of a plant tags: - Plants description: List the species attached to the requested plant operationId: listSpeciesPlant security: - token: [] - bearerAuth: [] parameters: - name: plant_id required: true in: path description: The plant id or slug schema: type: string - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_species" - name: filter_not in: query required: false description: Exclude results matching null values schema: "$ref": "#/components/schemas/filters_not_species" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_species" - name: range in: query required: false description: Range on values schema: "$ref": "#/components/schemas/ranges_species" - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/species_light" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/plants/{plant_id}/species/{id}": get: summary: Retrieve a species of a plant tags: - Plants description: Get one species attached to the requested plant operationId: getSpeciesPlant security: - token: [] - bearerAuth: [] parameters: - name: plant_id required: true in: path description: The plant id or slug schema: type: string - name: id required: true in: path description: The id or the slug of the requested record schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/species" meta: type: object properties: last_modified: type: string images_count: type: integer sources_count: type: integer synonyms_count: type: integer '401': description: Invalid credentials "/api/v1/genus/{genus_id}/plants/{id}": get: summary: Retrieve a plant of a genus tags: - Plants description: Get one plant of the requested genus operationId: getPlantGenus security: - token: [] - bearerAuth: [] parameters: - name: genus_id required: true in: path description: The genus id or slug schema: type: string - name: id required: true in: path description: The id or the slug of the requested record schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/plant" meta: type: object properties: last_modified: type: string images_count: type: integer sources_count: type: integer synonyms_count: type: integer '401': description: Invalid credentials "/api/v1/species": get: summary: List species tags: - Species description: List species operationId: listSpecies security: - token: [] - bearerAuth: [] parameters: - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_species" - name: filter_not in: query required: false description: Exclude results matching null values schema: "$ref": "#/components/schemas/filters_not_species" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_species" - name: range in: query required: false description: Range on values schema: "$ref": "#/components/schemas/ranges_species" - name: page in: query required: false description: The page to fetch. Capped at 2500 -- deeper pages return a 400 (#367) schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/species_light" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/species/{id}": get: summary: Retrieve a species tags: - Species description: Get a species operationId: getSpecies parameters: - name: id required: true in: path description: The id or the slug of the requested species schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/species" meta: type: object properties: last_modified: type: string images_count: type: integer sources_count: type: integer synonyms_count: type: integer '401': description: Invalid credentials "/api/v1/species/search": get: summary: Search for a species tags: - Species description: Search for a species with the given scientific name, common name, synonym name etc. operationId: searchSpecies parameters: - name: q required: true in: query description: The string to search schema: type: string - name: page in: query required: false description: The page to fetch schema: type: number - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_species" - name: filter_not in: query required: false description: Exclude results matching null values schema: "$ref": "#/components/schemas/filters_not_species" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_species" - name: range in: query required: false description: Range on values schema: "$ref": "#/components/schemas/ranges_species" security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/species_light" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/species/{id}/report": post: summary: Report an error tags: - Species description: A short API call to report an error regarding a species entry operationId: reportSpecies parameters: - name: id required: true in: path description: The id or the slug of the requested species schema: type: string security: - token: [] - bearerAuth: [] responses: '201': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/correction" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials requestBody: content: application/json: schema: type: object properties: notes: type: string example: The flower color is red description: An optional note about the incorrect data description: An optional note about the incorrect data "/api/v1/species/{id}/facts": get: summary: List the provenance facts of a species tags: - Species description: Every sourced claim about this species' trait values, including superseded and rejected ones. The species trait columns are a projection of the strongest active fact per attribute; this endpoint is the trail behind them. operationId: listSpeciesFacts security: - token: [] - bearerAuth: [] parameters: - name: id required: true in: path description: The id or the slug of the requested species schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/species_fact" meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/species/{species_id}/corrections": get: summary: List the corrections submitted on a species tags: - Species description: The community corrections submitted on this species, whatever their status operationId: listSpeciesCorrections security: - token: [] - bearerAuth: [] parameters: - name: species_id required: true in: path description: The id or the slug of the species schema: type: string - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/correction" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/distributions": get: summary: List distributions zones tags: - Distributions description: | List distributions zones. Zones are following the WGSRPD convention. WGSRPD provides an agreed system of geographical units at approximately "country" level and upwards for use in recording plant distributions. It allows adopting organizations to compare and exchange data with each other without loss of information due to incompatible geographical boundaries. [Read more on the TDWG website](https://www.tdwg.org/standards/wgsrpd/). operationId: listDistributions security: - token: [] - bearerAuth: [] parameters: - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/zone" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/distributions/{id}": get: summary: Retrieve a distribution zone tags: - Distributions description: Get a zone operationId: getZone parameters: - name: id required: true in: path description: The id or the slug of the requested zone schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/zone" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/distributions/{zone_id}/species": get: summary: List species of a distribution zone tags: - Distributions description: List the species present in the requested zone operationId: listSpeciesZone security: - token: [] - bearerAuth: [] parameters: - name: zone_id required: true in: path description: The zone id or slug schema: type: string - name: filter in: query required: false description: Filter on values schema: "$ref": "#/components/schemas/filters_species" - name: filter_not in: query required: false description: Exclude results matching null values schema: "$ref": "#/components/schemas/filters_not_species" - name: order in: query required: false description: Sort on values schema: "$ref": "#/components/schemas/sorts_species" - name: range in: query required: false description: Range on values schema: "$ref": "#/components/schemas/ranges_species" - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/species_light" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/distributions/{zone_id}/species/{id}": get: summary: Retrieve a species of a distribution zone tags: - Distributions description: Get one species present in the requested zone operationId: getSpeciesZone security: - token: [] - bearerAuth: [] parameters: - name: zone_id required: true in: path description: The zone id or slug schema: type: string - name: id required: true in: path description: The id or the slug of the requested record schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/species" meta: type: object properties: last_modified: type: string images_count: type: integer sources_count: type: integer synonyms_count: type: integer '401': description: Invalid credentials "/api/v1/distributions/{zone_id}/plants/{id}": get: summary: Retrieve a plant of a distribution zone tags: - Distributions description: Get one plant present in the requested zone operationId: getPlantZone security: - token: [] - bearerAuth: [] parameters: - name: zone_id required: true in: path description: The zone id or slug schema: type: string - name: id required: true in: path description: The id or the slug of the requested record schema: type: string responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/plant" meta: type: object properties: last_modified: type: string images_count: type: integer sources_count: type: integer synonyms_count: type: integer '401': description: Invalid credentials "/api/auth/claim": post: summary: Request a client-side token tags: - Auth description: 'If you need to perform client-side requests, you will have to request a client-side token from you backend, and get a JWT token from this API call in return. This token will be usable on the client side. This call need your secret access token, the url of the website the client side requests will come from and optionally the client IP address. ' operationId: claimClientSideToken security: - token: [] - bearerAuth: [] parameters: [] responses: '200': description: Success content: application/json: schema: type: object properties: expiration: type: string example: 07-13-2020 13:41 description: The expiration time of the token. After this time, you'll have to request a token again token: type: string example: eyJhbGciOiJIUzI1NaJ9.eyJ1c2VyX2lkIjoxMDYsIe9yaWdpbiI6Imh0dHA6Ly9wb2NhbGhvc3Q6MzIzMyIsImlwIjoiOjoxIiwiZXhwIjoxNTk0NjQwNTEzfQ.TyqKyKxwsnn7TZsLAfS8OTmTUPk87CSXlk6a2wQU9co description: The client-side access token, that you'll use instead of your access token in the `token` parameter '401': description: Invalid credentials content: application/json: schema: "$ref": "#/components/schemas/error" '422': description: Missing parameters content: application/json: schema: "$ref": "#/components/schemas/error" requestBody: content: application/json: schema: type: object properties: origin: type: string example: https://example.com description: The website url the API requests will come from ip: type: string nullable: true example: 12.23.34.45 description: The client IP required: - origin required: true "/api/v1/corrections": get: summary: Searches corrections tags: - Corrections description: List corrections operationId: listCorrections security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/correction" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials "/api/v1/corrections/{id}": get: summary: Retrieve a correction tags: - Corrections description: Get a correction operationId: getCorrection parameters: - name: id required: true in: path description: The id of the requested correction schema: type: string security: - token: [] - bearerAuth: [] responses: '200': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/correction" meta: type: object properties: last_modified: type: string '401': description: Invalid credentials "/api/v1/corrections/{record_type}/{record_id}": post: summary: Submit a correction tags: - Corrections description: Submit a new correction for the given record, that will be reviewed and merged into the database. See [Complete our data](/docs/advanced/complete-data) to get started. operationId: createCorrection parameters: - name: record_type required: true in: path schema: type: string enum: - species - plant - plants description: The type of record being corrected - name: record_id required: true in: path description: The id or the slug of the record being corrected schema: type: string security: - token: [] - bearerAuth: [] responses: '201': description: Success content: application/json: schema: type: object properties: data: "$ref": "#/components/schemas/correction" meta: type: object properties: last_modified: type: string '422': description: Invalid parameters '401': description: Invalid credentials requestBody: content: application/json: schema: "$ref": "#/components/schemas/request_body_correction" "/api/v1/corrections/mine": get: summary: List your own corrections tags: - Corrections description: The corrections submitted by the account the token belongs to operationId: listMyCorrections security: - token: [] - bearerAuth: [] parameters: - name: page in: query required: false description: The page to fetch schema: type: number responses: '200': description: Success content: application/json: schema: type: object properties: data: type: array items: "$ref": "#/components/schemas/correction" links: type: object properties: self: type: string description: A link to the current page of the collection first: type: string description: A link to the first page of the collection next: type: string description: A link to the next page of the collection prev: type: string description: A link to the previous page of the collection last: type: string description: A link to the last page of the collection required: - self meta: type: object properties: total: type: integer '401': description: Invalid credentials components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT token: type: apiKey name: token in: query schemas: kingdom: type: object properties: id: type: integer name: type: string slug: type: string links: type: object properties: self: type: string required: - self required: - id - name - slug - links subkingdom: type: object properties: id: type: integer name: type: string slug: type: string kingdom: "$ref": "#/components/schemas/kingdom" links: type: object properties: self: type: string kingdom: type: string required: - self - kingdom required: - id - name - slug - links - kingdom division: type: object properties: id: type: integer name: type: string slug: type: string subkingdom: "$ref": "#/components/schemas/subkingdom" links: type: object properties: self: type: string subkingdom: type: string required: - self - subkingdom required: - id - name - slug - links - subkingdom division_class: type: object properties: id: type: integer name: type: string slug: type: string division: "$ref": "#/components/schemas/division" links: type: object properties: self: type: string division: type: string required: - self required: - id - name - slug - links division_order: type: object properties: id: type: integer name: type: string slug: type: string division_class: "$ref": "#/components/schemas/division_class" links: type: object properties: self: type: string division_class: type: string required: - self required: - id - name - slug - links family: type: object properties: id: type: integer name: type: string common_name: type: string nullable: true slug: type: string division_order: "$ref": "#/components/schemas/division_order" links: type: object properties: self: type: string division_order: type: string required: - self required: - id - name - slug - links genus: type: object properties: id: type: integer name: type: string slug: type: string family: "$ref": "#/components/schemas/family" links: type: object properties: self: type: string family: type: string required: - self required: - id - name - slug - links plant: type: object properties: id: type: integer common_name: type: string nullable: true slug: type: string scientific_name: type: string year: type: integer nullable: true bibliography: type: string nullable: true author: type: string nullable: true family_common_name: type: string nullable: true genus_id: type: integer main_species_id: type: integer nullable: true vegetable: type: boolean nullable: true observations: type: string nullable: true main_species: "$ref": "#/components/schemas/species" sources: type: array items: "$ref": "#/components/schemas/source" links: type: object properties: self: type: string genus: type: string species: type: string required: - self - genus - species required: - id - scientific_name - slug - links plant_light: type: object properties: id: type: integer common_name: type: string nullable: true slug: type: string scientific_name: type: string year: type: integer nullable: true bibliography: type: string nullable: true author: type: string nullable: true family_common_name: type: string nullable: true genus_id: type: integer main_species_id: type: integer nullable: true vegetable: type: boolean nullable: true observations: type: string nullable: true links: type: object properties: self: type: string genus: type: string species: type: string required: - self - genus - species required: - id - scientific_name - slug - links species: type: object properties: id: type: integer description: An unique identifier common_name: type: string nullable: true description: The usual common name, in english, of the species (if any). slug: type: string description: An unique human-readable identifier (if you can, prefer to use this over id) scientific_name: type: string description: The scientific name follows the [Binomial nomenclature](https://en.wikipedia.org/wiki/Binomial_nomenclature), and represents its genus and its species within the genus, resulting in a single worldwide name for each organism. The scientific name of an infraspecific taxons (ranks below species, such as subspecies, forms, varieties...) is a combination of the name of a species and an infraspecific epithet. A connecting term is used to denote the rank. [See IAPT recommendation](https://www.iapt-taxon.org/nomen/pages/main/art_24.html) year: type: integer nullable: true description: The first publication year of a valid name of this species. [See author citation](https://en.wikipedia.org/wiki/Author_citation_(botany)) bibliography: type: string nullable: true description: The first publication of a valid name of this species. [See author citation](https://en.wikipedia.org/wiki/Author_citation_(botany)) author: type: string nullable: true description: The author(s) of the first publication of a valid name of this species. [See author citation](https://en.wikipedia.org/wiki/Author_citation_(botany)) status: type: string enum: - accepted - unknown description: The acceptance status of this species by IPNI rank: type: string enum: - species - ssp - var - form - hybrid - subvar description: The [taxonomic rank](https://en.wikipedia.org/wiki/Taxonomic_rank) of the species family_common_name: type: string nullable: true description: The common name (in english) of the species family family: type: string description: The scientific name of the species family genus_id: type: integer description: The id of the species genus genus: type: string description: The scientific name of the species genus image_url: type: string nullable: true description: A main image url of the species completion_ratio: type: integer nullable: true description: The percentage (0-100) of trait fields filled for this species. Useful for finding species that would benefit from a contribution. complete_data: type: boolean nullable: true description: Whether this species is considered to have complete data (currently, a completion_ratio above 50%) links: type: object properties: self: type: string description: API endpoint to the species itself genus: type: string description: API endpoint to the species genus plant: type: string description: API endpoint to the species plant required: - self - genus - plant description: API endpoints to related resources duration: type: array nullable: true items: type: string nullable: true enum: - annual - biennial - perennial - description: | The plant duration(s), which can be: - Annual: plants that live, reproduce, and die in one growing season. - Biennial: plants that need two growing seasons to complete their life cycle, normally completing vegetative growth the first year and flowering the second year. - Perennial: plants that live for more than two years, with the shoot system dying back to soil level each year. description: | The plant duration(s), which can be: - Annual: plants that live, reproduce, and die in one growing season. - Biennial: plants that need two growing seasons to complete their life cycle, normally completing vegetative growth the first year and flowering the second year. - Perennial: plants that live for more than two years, with the shoot system dying back to soil level each year. edible_part: type: array nullable: true items: type: string nullable: true enum: - roots - stem - leaves - flowers - fruits - seeds - tubers - description: The plant edible part(s), if any. description: The plant edible part(s), if any. edible: type: boolean nullable: true description: Is the species edible? vegetable: type: boolean nullable: true description: Is the species a vegetable? observations: type: string nullable: true description: Some habit observations on the species images: type: object properties: flower: type: array items: type: object properties: id: type: integer description: An unique identifier image_url: type: string description: The url of the image copyright: type: string nullable: true description: A copyright (if any) for the image. Don't forget to properly credit the author if you're using them description: Image(s) of the species flower leaf: type: array items: type: object properties: id: type: integer description: An unique identifier image_url: type: string description: The url of the image copyright: type: string nullable: true description: A copyright (if any) for the image. Don't forget to properly credit the author if you're using them description: Image(s) of the species leaf habit: type: array items: type: object properties: id: type: integer description: An unique identifier image_url: type: string description: The url of the image copyright: type: string nullable: true description: A copyright (if any) for the image. Don't forget to properly credit the author if you're using them description: Image(s) of the species habit fruit: type: array items: type: object properties: id: type: integer description: An unique identifier image_url: type: string description: The url of the image copyright: type: string nullable: true description: A copyright (if any) for the image. Don't forget to properly credit the author if you're using them description: Image(s) of the species fruit bark: type: array items: type: object properties: id: type: integer description: An unique identifier image_url: type: string description: The url of the image copyright: type: string nullable: true description: A copyright (if any) for the image. Don't forget to properly credit the author if you're using them description: Image(s) of the species bark other: type: array items: type: object properties: id: type: integer description: An unique identifier image_url: type: string description: The url of the image copyright: type: string nullable: true description: A copyright (if any) for the image. Don't forget to properly credit the author if you're using them description: 'Image(s) of the species other ' unknown: type: array items: type: object properties: id: type: integer description: An unique identifier image_url: type: string description: The url of the image copyright: type: string nullable: true description: A copyright (if any) for the image. Don't forget to properly credit the author if you're using them description: Image(s) with no identified part common_names: type: object additionalProperties: type: array items: type: string nullable: true description: TODO description: Common names of the species per language distribution: type: object deprecated: true additionalProperties: type: array items: type: string nullable: true description: TODO description: "(Deprecated) Distribution of the species per establishment" distributions: type: object properties: native: type: array items: type: object properties: id: type: integer description: An unique identifier name: type: string description: The zone name slug: type: string description: An unique, human readable, identifier tdwg_code: type: string description: The TDWG zone unique code tdwg_level: type: integer description: The TDWG zone level species_count: type: integer description: The number of species in this zone links: type: object properties: self: type: string description: API endpoint to the zone itself species: type: string description: API endpoint to the species in this zone plants: type: string description: API endpoint to the plants in this zone description: Zones the species is native from introduced: type: array items: type: object properties: id: type: integer description: An unique identifier name: type: string description: The zone name slug: type: string description: An unique, human readable, identifier tdwg_code: type: string description: The TDWG zone unique code tdwg_level: type: integer description: The TDWG zone level species_count: type: integer description: The number of species in this zone links: type: object properties: self: type: string description: API endpoint to the zone itself species: type: string description: API endpoint to the species in this zone plants: type: string description: API endpoint to the plants in this zone description: Zones the species has been introduced doubtful: type: array items: type: object properties: id: type: integer description: An unique identifier name: type: string description: The zone name slug: type: string description: An unique, human readable, identifier tdwg_code: type: string description: The TDWG zone unique code tdwg_level: type: integer description: The TDWG zone level species_count: type: integer description: The number of species in this zone links: type: object properties: self: type: string description: API endpoint to the zone itself species: type: string description: API endpoint to the species in this zone plants: type: string description: API endpoint to the plants in this zone description: Zones the species presence is doubtful absent: type: array items: type: object properties: id: type: integer description: An unique identifier name: type: string description: The zone name slug: type: string description: An unique, human readable, identifier tdwg_code: type: string description: The TDWG zone unique code tdwg_level: type: integer description: The TDWG zone level species_count: type: integer description: The number of species in this zone links: type: object properties: self: type: string description: API endpoint to the zone itself species: type: string description: API endpoint to the species in this zone plants: type: string description: API endpoint to the plants in this zone description: Zones the species is absent and has been wrongly recorded extinct: type: array items: type: object properties: id: type: integer description: An unique identifier name: type: string description: The zone name slug: type: string description: An unique, human readable, identifier tdwg_code: type: string description: The TDWG zone unique code tdwg_level: type: integer description: The TDWG zone level species_count: type: integer description: The number of species in this zone links: type: object properties: self: type: string description: API endpoint to the zone itself species: type: string description: API endpoint to the species in this zone plants: type: string description: API endpoint to the plants in this zone description: Zones the species is extinct description: Distribution of the species per establishment flower: type: object properties: color: type: array nullable: true items: type: string nullable: true enum: - white - red - brown - orange - yellow - lime - green - cyan - blue - purple - magenta - grey - black - description: The flower color(s) description: The flower color(s) conspicuous: type: boolean nullable: true description: Is the flower visible? description: Flower related fields (the reproductive structure found in flowering plants) foliage: type: object properties: texture: type: string nullable: true enum: - fine - medium - coarse - description: The general texture of the plant’s foliage color: type: array nullable: true items: type: string nullable: true enum: - white - red - brown - orange - yellow - lime - green - cyan - blue - purple - magenta - grey - black - description: The leaves color(s) description: The leaves color(s) leaf_retention: type: boolean nullable: true description: Does the leaves stay all year long? description: Foliage (or leaves) related fields fruit_or_seed: type: object properties: conspicuous: type: boolean nullable: true description: Is the fruit visible? color: type: array nullable: true items: type: string nullable: true enum: - white - red - brown - orange - yellow - lime - green - cyan - blue - purple - magenta - grey - black - description: The fruit color(s) description: The fruit color(s) shape: type: string nullable: true description: Fruit shape seed_persistence: type: boolean nullable: true description: Are the fruit or seed generally recognized as being persistent on the plant? description: Fruit or seed related fields specifications: type: object properties: ligneous_type: type: string nullable: true enum: - liana - subshrub - shrub - tree - parasite - description: The ligneous type of the woody plant growth_form: type: string nullable: true description: The primary growth form on the landscape in relation to soil stabilization on slopes and streamsides? Each plant species is assigned the single growth form that most enhances its ability to stabilize soil growth_habit: type: string nullable: true description: The general appearance, growth form, or architecture of the plant growth_rate: type: string nullable: true description: The relative growth speed of the plant average_height: type: object properties: cm: type: integer nullable: true description: The average height of the species, in centimeters description: The average height of the species, in centimeters maximum_height: type: object properties: cm: type: integer nullable: true description: The maximum height of the species, in centimeters description: The maximum height of the species, in centimeters nitrogen_fixation: type: string nullable: true description: Capability to fix nitrogen in monoculture shape_and_orientation: type: string nullable: true description: The predominant shape of the species toxicity: type: string nullable: true enum: - none - low - medium - high - description: Relative toxicity of the species for humans or animals description: Species's main characteristics growth: type: object properties: days_to_harvest: type: number nullable: true description: The average numbers of days required to from planting to harvest description: type: string nullable: true description: A description on how the plant usually grows sowing: type: string nullable: true description: A description on how to sow the plant ph_maximum: type: number nullable: true description: The maximum acceptable soil pH (of the top 30 centimeters of soil) for the plant ph_minimum: type: number nullable: true description: The minimum acceptable soil pH (of the top 30 centimeters of soil) for the plant light: type: integer nullable: true description: Required amount of light, on a scale from 0 (no light, <= 10 lux) to 10 (very intensive insolation, >= 100 000 lux) atmospheric_humidity: type: integer nullable: true description: Required relative humidity in the air, on a scale from 0 (<=10%) to 10 (>= 90%) growth_months: type: array nullable: true items: type: string nullable: true enum: - jan - feb - mar - apr - may - jun - jul - aug - sep - oct - nov - dec - description: The most active growth months of the species (usually all year round for perennial plants) description: The most active growth months of the species (usually all year round for perennial plants) bloom_months: type: array nullable: true items: type: string nullable: true enum: - jan - feb - mar - apr - may - jun - jul - aug - sep - oct - nov - dec - description: The months the species usually blooms description: The months the species usually blooms fruit_months: type: array nullable: true items: type: string nullable: true enum: - jan - feb - mar - apr - may - jun - jul - aug - sep - oct - nov - dec - description: The months the species usually produces fruits description: The months the species usually produces fruits row_spacing: type: object properties: cm: type: number nullable: true description: The minimum spacing between each rows of plants, in centimeters description: The minimum spacing between each rows of plants, in centimeters spread: type: object properties: cm: type: number nullable: true description: The average spreading of the plant, in centimeters description: The average spreading of the plant, in centimeters minimum_precipitation: type: object properties: mm: type: number nullable: true description: Minimum precipitation per year, in milimeters per year description: Minimum precipitation per year, in milimeters per year maximum_precipitation: type: object properties: mm: type: number nullable: true description: Maximum precipitation per year, in milimeters per year description: Maximum precipitation per year, in milimeters per year minimum_root_depth: type: object properties: cm: type: number nullable: true description: Minimum depth of soil required for the species, in centimeters. Plants that do not have roots such as rootless aquatic plants have 0 description: Minimum depth of soil required for the species, in centimeters. Plants that do not have roots such as rootless aquatic plants have 0 minimum_temperature: type: object properties: deg_f: type: number nullable: true description: The minimum tolerable temperature for the species. In fahrenheit degrees deg_c: type: number nullable: true description: The minimum tolerable temperature for the species. In celsius degrees description: The minimum tolerable temperature for the species. In celsius or fahrenheit degrees maximum_temperature: type: object properties: deg_f: type: number nullable: true description: The maximum tolerable temperature for the species. In fahrenheit degrees deg_c: type: number nullable: true description: The maximum tolerable temperature for the species. In celsius degrees description: The maximum tolerable temperature for the species. In celsius or fahrenheit degrees soil_nutriments: type: integer nullable: true description: Required quantity of nutriments in the soil, on a scale from 0 (oligotrophic) to 10 (hypereutrophic) soil_salinity: type: integer nullable: true description: Tolerance to salinity, on a scale from 0 (untolerant) to 10 (hyperhaline) soil_texture: type: integer nullable: true description: Required texture of the soil, on a scale from 0 (clay) to 10 (rock) soil_humidity: type: integer nullable: true description: Required humidity of the soil, on a scale from 0 (xerophile) to 10 (subaquatic) description: Growing of farming related fields synonyms: type: array items: type: object properties: id: type: integer description: An unique identifier name: type: string description: The scientific name of the symonym author: type: string nullable: true description: The author of the symonym sources: type: array items: "$ref": "#/components/schemas/source" description: The sources this synonym was built from description: The symonyms scientific names and authors sources: type: array items: type: object properties: id: type: string description: An unique identifier from the source name: type: string description: The name of the source citation: type: string nullable: true description: How to cite the source url: type: string nullable: true description: The link on the source website, or the publication reference last_update: type: string description: The last time the source was checked licence: type: string nullable: true description: The SPDX identifier of the licence this source publishes its data under, when known licence_url: type: string nullable: true description: A link to the full text of the licence description: The symonyms scientific names and authors extras: description: '' required: - id - scientific_name - slug species_light: type: object properties: id: type: integer description: An unique identifier common_name: type: string nullable: true description: The usual common name, in english, of the species (if any). slug: type: string description: An unique human-readable identifier (if you can, prefer to use this over id) scientific_name: type: string description: The scientific name follows the [Binomial nomenclature](https://en.wikipedia.org/wiki/Binomial_nomenclature), and represents its genus and its species within the genus, resulting in a single worldwide name for each organism. The scientific name of an infraspecific taxons (ranks below species, such as subspecies, forms, varieties...) is a combination of the name of a species and an infraspecific epithet. A connecting term is used to denote the rank. [See IAPT recommendation](https://www.iapt-taxon.org/nomen/pages/main/art_24.html) year: type: integer nullable: true description: The first publication year of a valid name of this species. [See author citation](https://en.wikipedia.org/wiki/Author_citation_(botany)) bibliography: type: string nullable: true description: The first publication of a valid name of this species. [See author citation](https://en.wikipedia.org/wiki/Author_citation_(botany)) author: type: string nullable: true description: The author(s) of the first publication of a valid name of this species. [See author citation](https://en.wikipedia.org/wiki/Author_citation_(botany)) status: type: string enum: - accepted - unknown description: The acceptance status of this species by IPNI rank: type: string enum: - species - ssp - var - form - hybrid - subvar description: The [taxonomic rank](https://en.wikipedia.org/wiki/Taxonomic_rank) of the species family_common_name: type: string nullable: true description: The common name (in english) of the species family family: type: string description: The scientific name of the species family genus_id: type: integer description: The id of the species genus genus: type: string description: The scientific name of the species genus image_url: type: string nullable: true description: A main image url of the species completion_ratio: type: integer nullable: true description: The percentage (0-100) of trait fields filled for this species. Useful for finding species that would benefit from a contribution. complete_data: type: boolean nullable: true description: Whether this species is considered to have complete data (currently, a completion_ratio above 50%) links: type: object properties: self: type: string description: API endpoint to the species itself genus: type: string description: API endpoint to the species genus plant: type: string description: API endpoint to the species plant required: - self - genus - plant description: API endpoints to related resources synonyms: type: array items: type: string nullable: true description: TODO description: The symonyms scientific names required: - id - rank - family - genus - genus_id - scientific_name - slug - status - links description: The symonyms scientific names source: type: object properties: id: type: string nullable: true name: type: string url: type: string nullable: true last_update: type: string citation: type: string nullable: true licence: type: string nullable: true description: The SPDX identifier of the licence this source publishes its data under, when known licence_url: type: string nullable: true description: A link to the full text of the licence required: - name - last_update correction: type: object properties: id: type: integer accepted_by: type: string nullable: true change_notes: type: string nullable: true change_status: type: string change_type: type: string correction: type: object nullable: true created_at: type: string notes: type: string nullable: true record_id: type: integer nullable: true record_type: type: string updated_at: type: string user_id: type: integer warning_type: type: string nullable: true required: - id - user_id - record_type - updated_at - created_at - change_type - change_status species_fact: type: object properties: attribute_name: type: string description: 'The species attribute this claim is about (ex: `average_height_cm`)' source: type: string description: 'The source making the claim (ex: `powo`, `try`, `gbif`)' value: type: string nullable: true description: The claimed value, as a string unit: type: string nullable: true description: The unit of the value, when the attribute carries one evidence_type: type: string enum: - reported - measured - derived - inferred description: 'How the claim is backed. `reported`: asserted by an external database. `measured`: backed by referenced measurements. `derived`: computed by us from primary data. `inferred`: imputed, ex: from congeneric species.' status: type: string enum: - active - superseded - rejected description: "`active`: the current claim from this source. `superseded`: replaced by a newer claim from the same source. `rejected`: failed plausibility validation and was never applied." notes: type: string nullable: true source_record_id: type: string nullable: true description: The identifier of the record at the source source_url: type: string nullable: true description: A link to the record at the source n_observations: type: integer nullable: true description: Number of underlying observations, for measured facts observed_at: type: string nullable: true updated_at: type: string nullable: true required: - attribute_name - source - evidence_type - status user_profile: type: object properties: name: type: string nullable: true description: Null when authenticating with a JWT rather than a personal token email: type: string nullable: true description: Null when authenticating with a JWT rather than a personal token image_url: type: string nullable: true description: The Gravatar URL for the account organization_name: type: string nullable: true organization_url: type: string nullable: true account_type: type: string nullable: true created_at: type: string nullable: true description: Null when authenticating with a JWT rather than a personal token api_status: type: object properties: plants_count: type: integer description: Total number of plants in the database detailled_plants_count: type: integer description: Number of plants carrying detailed trait data required: - plants_count - detailled_plants_count zone: type: object properties: id: type: integer name: type: string slug: type: string tdwg_code: type: string tdwg_level: type: integer species_count: type: integer links: type: object properties: self: type: string plants: type: string species: type: string required: - self - plants - species parent: type: object properties: id: type: integer name: type: string slug: type: string tdwg_code: type: string tdwg_level: type: integer species_count: type: integer links: type: object properties: self: type: string plants: type: string species: type: string required: - self - plants - species nullable: true children: type: array items: type: object properties: id: type: integer name: type: string slug: type: string tdwg_code: type: string tdwg_level: type: integer species_count: type: integer links: type: object properties: self: type: string plants: type: string species: type: string required: - self - plants - species required: - id - name - slug - links - tdwg_code - tdwg_level - species_count error: type: object properties: error: type: boolean example: true code: type: string description: A machine-readable error code, stable across releases example: not_found message: type: string description: A human-readable description of the error messages: type: string description: Deprecated alias of `message`, kept for backward compatibility details: type: object nullable: true description: Optional structured context about the error required: - error - code - message request_body_correction: type: object properties: notes: type: string nullable: true description: Some optional notes you can add. They will be visible to everybody source_type: type: string enum: - external - observation - report - nullable: true description: Where does this data come from ? If "external", you'll need to provide the "source_reference" field with the url or the name of the source, such as a wikipedia article, a publication, etc... source_reference: type: string nullable: true description: The url of the name of an article or a publication for theses changes correction: type: object properties: scientific_name: type: string example: Abelmoschus nonexistus rank: type: string enum: - species - ssp - var - form - hybrid - subvar - nullable: true example: species genus: type: string nullable: true example: Abies year: type: integer nullable: true example: author: type: string nullable: true example: Moench bibliography: type: string nullable: true example: common_name: type: string nullable: true description: The species common name(s) in english. Several values can be separated with "|" example: Okra|Bonnie Green Okra observations: type: string nullable: true example: Vegetal flavour, Medium-yellow flowers planting_description: type: string nullable: true description: A description on how the plant usually grows planting_sowing_description: type: string nullable: true example: A description on how to sow the plant duration: anyOf: - type: array items: type: string enum: - annual - biennial - perennial - nullable: true description: The duration(s) of the species. Several values can be separated with "|" - type: string enum: - annual - biennial - perennial - nullable: true description: The duration(s) of the species. Several values can be separated with "|" example: annual - type: string pattern: "^(annual|biennial|perennial)(\\|(annual|biennial|perennial))*$" nullable: true description: The duration(s) of the species. Several values can be separated with "|" flower_color: anyOf: - type: array items: type: string enum: - white - red - brown - orange - yellow - lime - green - cyan - blue - purple - magenta - grey - black - nullable: true description: The species flower color(s). Several values can be separated with "|" - type: string enum: - white - red - brown - orange - yellow - lime - green - cyan - blue - purple - magenta - grey - black - nullable: true description: The species flower color(s). Several values can be separated with "|" example: yellow - type: string pattern: "^(white|red|brown|orange|yellow|lime|green|cyan|blue|purple|magenta|grey|black)(\\|(white|red|brown|orange|yellow|lime|green|cyan|blue|purple|magenta|grey|black))*$" nullable: true description: The species flower color(s). Several values can be separated with "|" flower_conspicuous: type: boolean nullable: true example: true foliage_color: anyOf: - type: array items: type: string enum: - white - red - brown - orange - yellow - lime - green - cyan - blue - purple - magenta - grey - black - nullable: true description: The species foliage color(s). Several values can be separated with "|" - type: string enum: - white - red - brown - orange - yellow - lime - green - cyan - blue - purple - magenta - grey - black - nullable: true description: The species foliage color(s). Several values can be separated with "|" - type: string pattern: "^(white|red|brown|orange|yellow|lime|green|cyan|blue|purple|magenta|grey|black)(\\|(white|red|brown|orange|yellow|lime|green|cyan|blue|purple|magenta|grey|black))*$" nullable: true description: The species foliage color(s). Several values can be separated with "|" example: green|blue foliage_texture: type: string enum: - fine - medium - coarse - nullable: true example: leaf_retention: type: boolean nullable: true example: false fruit_color: anyOf: - type: array items: type: string enum: - white - red - brown - orange - yellow - lime - green - cyan - blue - purple - magenta - grey - black - nullable: true description: The species fruit color(s). Several values can be separated with "|" - type: string enum: - white - red - brown - orange - yellow - lime - green - cyan - blue - purple - magenta - grey - black - nullable: true description: The species fruit color(s). Several values can be separated with "|" example: white - type: string pattern: "^(white|red|brown|orange|yellow|lime|green|cyan|blue|purple|magenta|grey|black)(\\|(white|red|brown|orange|yellow|lime|green|cyan|blue|purple|magenta|grey|black))*$" nullable: true description: The species fruit color(s). Several values can be separated with "|" fruit_conspicuous: type: boolean nullable: true example: false fruit_seed_persistence: type: boolean nullable: true example: false fruit_months: anyOf: - type: array items: type: string enum: - jan - feb - mar - apr - may - jun - jul - aug - sep - oct - nov - dec - nullable: true description: The months when his species have fruits. Several values can be separated by "|" - type: string enum: - jan - feb - mar - apr - may - jun - jul - aug - sep - oct - nov - dec - nullable: true description: The months when his species have fruits. Several values can be separated by "|" - type: string pattern: "^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(\\|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))*$" nullable: true description: The months when his species have fruits. Several values can be separated by "|" example: jan|feb|mar bloom_months: anyOf: - type: array items: type: string enum: - jan - feb - mar - apr - may - jun - jul - aug - sep - oct - nov - dec - nullable: true description: The months when this species blooms. Several values can be separated by "|" - type: string enum: - jan - feb - mar - apr - may - jun - jul - aug - sep - oct - nov - dec - nullable: true description: The months when this species blooms. Several values can be separated by "|" example: - type: string pattern: "^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(\\|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))*$" nullable: true description: The months when this species blooms. Several values can be separated by "|" ground_humidity: type: integer nullable: true description: Required humidity of the soil, on a scale from 0 (xerophile) to 10 (subaquatic) example: growth_form: type: string nullable: true example: growth_habit: type: string nullable: true example: growth_months: anyOf: - type: array items: type: string enum: - jan - feb - mar - apr - may - jun - jul - aug - sep - oct - nov - dec - nullable: true description: The months when this species grows. Several values can be separated by "|" - type: string enum: - jan - feb - mar - apr - may - jun - jul - aug - sep - oct - nov - dec - nullable: true description: The months when this species grows. Several values can be separated by "|" example: - type: string pattern: "^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(\\|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))*$" nullable: true description: The months when this species grows. Several values can be separated by "|" growth_rate: type: string nullable: true example: edible_part: anyOf: - type: array items: type: string enum: - roots - stem - leaves - flowers - fruits - seeds - tubers - nullable: true description: The edible part of the species (if any). Several values can be separated by "|" - type: string enum: - roots - stem - leaves - flowers - fruits - seeds - tubers - nullable: true description: The edible part of the species (if any). Several values can be separated by "|" example: flowers - type: string pattern: "^(roots|stem|leaves|flowers|fruits|seeds|tubers)(\\|(roots|stem|leaves|flowers|fruits|seeds|tubers))*$" nullable: true description: The edible part of the species (if any). Several values can be separated by "|" vegetable: type: boolean nullable: true example: false light: type: integer nullable: true description: Required amount of light, on a scale from 0 (no light, <= 10 lux) to 10 (very intensive insolation, >= 100 000 lux) example: 8 atmospheric_humidity: type: integer nullable: true description: Required relative humidity in the air, on a scale from 0 (<=10%) to 10 (>= 90%) example: 3 adapted_to_coarse_textured_soils: type: string nullable: true example: adapted_to_fine_textured_soils: type: string nullable: true example: adapted_to_medium_textured_soils: type: string nullable: true example: anaerobic_tolerance: type: string nullable: true example: average_height_unit: type: string enum: - in - ft - cm - m nullable: true example: cm average_height_value: type: number nullable: true example: 250 maximum_height_unit: type: string enum: - in - ft - cm - m nullable: true example: cm maximum_height_value: type: number nullable: true example: 280 planting_row_spacing_unit: type: string enum: - in - ft - cm - m nullable: true example: cm planting_row_spacing_value: type: number nullable: true example: 80 description: The minimum spacing between each rows of plants planting_spread_unit: type: string enum: - in - ft - cm - m nullable: true example: cm planting_spread_value: type: number nullable: true example: 100 description: The average spreading of the plant planting_days_to_harvest: type: integer nullable: true example: 120 maximum_precipitation_unit: type: string enum: - in - ft - mm - cm - m nullable: true example: mm maximum_precipitation_value: type: number nullable: true example: 2230 minimum_precipitation_unit: type: string enum: - in - ft - mm - cm - m nullable: true example: mm minimum_precipitation_value: type: number nullable: true example: 1300 minimum_root_depth_unit: type: string enum: - in - ft - cm - m nullable: true example: cm minimum_root_depth_value: type: number nullable: true example: 30 ph_maximum: type: number nullable: true example: ph_minimum: type: number nullable: true example: soil_nutriments: type: integer nullable: true description: Required quantity of nutriments in the soil, on a scale from 0 (oligotrophic) to 10 (hypereutrophic) soil_salinity: type: integer nullable: true description: Tolerance to salinity, on a scale from 0 (untolerant) to 10 (hyperhaline) minimum_temperature_deg_c: type: number nullable: true example: 5 description: The minimum required temperature in celcius degrees maximum_temperature_deg_c: type: number nullable: true example: 20 description: The maximum required temperature in celcius degrees soil_texture: type: integer description: Required texture of the soil, on a scale from 0 (clay) to 10 (rock) nullable: true example: ligneous_type: type: string enum: - liana - subshrub - shrub - tree - parasite - nullable: true example: toxicity: type: string enum: - none - low - medium - high - nullable: true example: required: - scientific_name description: The fields to correct filters_families: type: object properties: name: type: string slug: type: string filters_genus: type: object properties: name: type: string slug: type: string family_id: type: string filters_plants: type: object properties: author: type: string bloom_months: type: string common_name: type: string complete_data: type: string completion_ratio: type: string duration: type: string establishment: type: string edible: type: string edible_part: type: string family_common_name: type: string family_name: type: string flower_color: type: string flower_conspicuous: type: string foliage_color: type: string foliage_texture: type: string fruit_color: type: string fruit_conspicuous: type: string fruit_months: type: string fruit_seed_persistence: type: string genus_name: type: string growth_form: type: string growth_habit: type: string growth_months: type: string growth_rate: type: string leaf_retention: type: string ligneous_type: type: string rank: type: string scientific_name: type: string status: type: string vegetable: type: string filters_species: type: object properties: author: type: string bloom_months: type: string common_name: type: string complete_data: type: string completion_ratio: type: string duration: type: string establishment: type: string edible: type: string edible_part: type: string family_common_name: type: string family_name: type: string flower_color: type: string flower_conspicuous: type: string foliage_color: type: string foliage_texture: type: string fruit_color: type: string fruit_conspicuous: type: string fruit_months: type: string fruit_seed_persistence: type: string genus_name: type: string growth_form: type: string growth_habit: type: string growth_months: type: string growth_rate: type: string leaf_retention: type: string ligneous_type: type: string rank: type: string scientific_name: type: string status: type: string vegetable: type: string filters_not_species: type: object properties: author: type: string average_height_cm: type: string bibliography: type: string common_name: type: string complete_data: type: string completion_ratio: type: string edible_part: type: string family_common_name: type: string family_name: type: string flower_color: type: string flower_conspicuous: type: string foliage_color: type: string foliage_texture: type: string frost_free_days_minimum: type: string fruit_color: type: string fruit_conspicuous: type: string fruit_seed_persistence: type: string genus_name: type: string ground_humidity: type: string growth_form: type: string growth_habit: type: string growth_rate: type: string image_url: type: string images_count: type: string leaf_retention: type: string light: type: string ligneous_type: type: string maximum_height_cm: type: string maximum_precipitation_mm: type: string maximum_temperature_deg_c: type: string maximum_temperature_deg_f: type: string minimum_precipitation_mm: type: string minimum_root_depth_cm: type: string minimum_temperature_deg_c: type: string minimum_temperature_deg_f: type: string ph_maximum: type: string ph_minimum: type: string planting_days_to_harvest: type: string planting_row_spacing_cm: type: string planting_spread_cm: type: string rank: type: string scientific_name: type: string soil_nutriments: type: string soil_salinity: type: string soil_texture: type: string sources_count: type: string status: type: string synonyms_count: type: string toxicity: type: string vegetable: type: string year: type: string sorts_families: type: object properties: name: type: string slug: type: string sorts_genus: type: object properties: name: type: string slug: type: string family_id: type: string sorts_plants: type: object properties: atmospheric_humidity: type: string author: type: string average_height_cm: type: string bibliography: type: string common_name: type: string complete_data: type: string completion_ratio: type: string duration: type: string edible: type: string family_common_name: type: string family_name: type: string flower_color: type: string flower_conspicuous: type: string foliage_color: type: string foliage_texture: type: string frost_free_days_minimum: type: string fruit_color: type: string fruit_conspicuous: type: string fruit_seed_persistence: type: string ground_humidity: type: string growth_form: type: string growth_habit: type: string growth_rate: type: string images_count: type: string leaf_retention: type: string light: type: string ligneous_type: type: string maximum_height_cm: type: string maximum_precipitation_mm: type: string maximum_temperature_deg_c: type: string maximum_temperature_deg_f: type: string minimum_precipitation_mm: type: string minimum_root_depth_cm: type: string minimum_temperature_deg_c: type: string minimum_temperature_deg_f: type: string ph_maximum: type: string ph_minimum: type: string planting_days_to_harvest: type: string planting_row_spacing_cm: type: string planting_spread_cm: type: string rank: type: string scientific_name: type: string soil_nutriments: type: string soil_salinity: type: string soil_texture: type: string sources_count: type: string status: type: string synonyms_count: type: string toxicity: type: string updated_at: type: string vegetable: type: string year: type: string sorts_species: type: object properties: atmospheric_humidity: type: string author: type: string average_height_cm: type: string bibliography: type: string common_name: type: string complete_data: type: string completion_ratio: type: string duration: type: string edible: type: string family_common_name: type: string family_name: type: string flower_color: type: string flower_conspicuous: type: string foliage_color: type: string foliage_texture: type: string frost_free_days_minimum: type: string fruit_color: type: string fruit_conspicuous: type: string fruit_seed_persistence: type: string ground_humidity: type: string growth_form: type: string growth_habit: type: string growth_rate: type: string images_count: type: string leaf_retention: type: string light: type: string ligneous_type: type: string maximum_height_cm: type: string maximum_precipitation_mm: type: string maximum_temperature_deg_c: type: string maximum_temperature_deg_f: type: string minimum_precipitation_mm: type: string minimum_root_depth_cm: type: string minimum_temperature_deg_c: type: string minimum_temperature_deg_f: type: string ph_maximum: type: string ph_minimum: type: string planting_days_to_harvest: type: string planting_row_spacing_cm: type: string planting_spread_cm: type: string rank: type: string scientific_name: type: string soil_nutriments: type: string soil_salinity: type: string soil_texture: type: string sources_count: type: string status: type: string synonyms_count: type: string toxicity: type: string updated_at: type: string vegetable: type: string year: type: string ranges_plants: type: object properties: atmospheric_humidity: type: string average_height_cm: type: string completion_ratio: type: string frost_free_days_minimum: type: string ground_humidity: type: string images_count: type: string light: type: string maximum_height_cm: type: string maximum_precipitation_mm: type: string maximum_temperature_deg_c: type: string maximum_temperature_deg_f: type: string minimum_precipitation_mm: type: string minimum_root_depth_cm: type: string minimum_temperature_deg_c: type: string minimum_temperature_deg_f: type: string ph_maximum: type: string ph_minimum: type: string planting_days_to_harvest: type: string planting_row_spacing_cm: type: string planting_spread_cm: type: string soil_nutriments: type: string soil_salinity: type: string soil_texture: type: string sources_count: type: string synonyms_count: type: string toxicity: type: string year: type: string ranges_species: type: object properties: atmospheric_humidity: type: string average_height_cm: type: string completion_ratio: type: string frost_free_days_minimum: type: string ground_humidity: type: string images_count: type: string light: type: string maximum_height_cm: type: string maximum_precipitation_mm: type: string maximum_temperature_deg_c: type: string maximum_temperature_deg_f: type: string minimum_precipitation_mm: type: string minimum_root_depth_cm: type: string minimum_temperature_deg_c: type: string minimum_temperature_deg_f: type: string ph_maximum: type: string ph_minimum: type: string planting_days_to_harvest: type: string planting_row_spacing_cm: type: string planting_spread_cm: type: string soil_nutriments: type: string soil_salinity: type: string soil_texture: type: string sources_count: type: string synonyms_count: type: string toxicity: type: string year: type: string servers: - url: http://{defaultHost} variables: defaultHost: default: trefle.io