Collection Schema - DRAFT (0.1.0)

Download OpenAPI specification:

Collection API Schema

Collecting Event

Get collecting event

By passing in query string, user can get available collecting events authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add collecting event

Adds a collecting event

Request Body schema: application/vnd.api+json

CollectingEvent to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find collecting event by ID

Returns a single collecting event

path Parameters
Id
required
string <uuid>

ID of collecting event to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update collecting event

update a collecting event

path Parameters
Id
required
string <uuid>

collecting event id to patch

Request Body schema: application/vnd.api+json

collecting event to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete collecting event

delete a collecting event

path Parameters
Id
required
string <uuid>

collecting event id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Collection

Get collection

By passing in query string, user can get available collections authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add collection

Adds a collection

Request Body schema: application/vnd.api+json

Collection to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find collection by ID

Returns a single collection

path Parameters
Id
required
string <uuid>

ID of collection to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update collection

update a collection

path Parameters
Id
required
string <uuid>

collection id to patch

Request Body schema: application/vnd.api+json

collection to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete collection

delete a collection

path Parameters
Id
required
string <uuid>

collection id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Collection Sequence Generator

Generate reserved IDs for collection

Generates a set of reserved ids to use when naming a Material Sample that is using a collection. The result will provide the lowest and highest ID reserved, so all the IDs between these two values have been reserved if you are generating more than one using the amount attribute.

Request Body schema: application/vnd.api+json

Settings when generating sequences.

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Expedition

Get expedition

By passing in query string, user can get available expeditions authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add expedition

Adds a expedition

Request Body schema: application/vnd.api+json

Expedition to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find expedition by ID

Returns a single expedition

path Parameters
Id
required
string <uuid>

ID of expedition to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update expedition

update an expedition

path Parameters
Id
required
string <uuid>

expedition id to patch

Request Body schema: application/vnd.api+json

expedition to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete expedition

delete a expedition

path Parameters
Id
required
string <uuid>

expedition id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Collection Managed Attribute

Get collection managed attribute

By passing in query string, user can get available collection managed attributes authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add collection managed attribute

Adds a collection managed attribute

Request Body schema: application/vnd.api+json

CollectionManagedAttribute to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find collection managed attribute by ID

Returns a single collection managed attribute

path Parameters
Id
required
string <uuid>

ID of collection managed attribute to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update collection managed attribute

update a collection managed attribute

path Parameters
Id
required
string <uuid>

collection managed attribute id to patch

Request Body schema: application/vnd.api+json

collection managed attribute to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete collection managed attribute

delete a collection managed attribute

path Parameters
Id
required
string <uuid>

collection managed attribute id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Material Sample

Get material sample

By passing in query string, user can get available material samples authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add material sample

Adds a material sample

Request Body schema: application/vnd.api+json

MaterialSample to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find material sample by ID

Returns a single material sample

path Parameters
Id
required
string <uuid>

ID of material sample to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update material sample

update a material sample

path Parameters
Id
required
string <uuid>

material sample id to patch

Request Body schema: application/vnd.api+json

material sample to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete material sample

delete a material sample

path Parameters
Id
required
string <uuid>

material sample id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Preparation Type

Get preparation type

By passing in query string, user can get available preparation types authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add preparation type

Adds a preparation type

Request Body schema: application/vnd.api+json

PreparationType to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Find preparation type by ID

Returns a single preparation type

path Parameters
Id
required
string <uuid>

ID of preparation type to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update preparation type

update a preparation type

path Parameters
Id
required
string <uuid>

preparation type id to patch

Request Body schema: application/vnd.api+json

preparation type to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete preparation type

delete a preparation type

path Parameters
Id
required
string <uuid>

preparation type id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Preparation Method

Get preparation method

By passing in query string, user can get available preparation methods authorized

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add preparation method

Adds a preparation method

Request Body schema: application/vnd.api+json

PreparationMethod to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find preparation method by ID

Returns a single preparation method

path Parameters
Id
required
string <uuid>

ID of preparation method to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update preparation method

update a preparation method

path Parameters
Id
required
string <uuid>

preparation method id to patch

Request Body schema: application/vnd.api+json

preparation method to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete preparation method

delete a preparation method

path Parameters
Id
required
string <uuid>

preparation method id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Institution

Get institution

By passing in query string, user can get available institutions authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add institution

Adds a institution

Request Body schema: application/vnd.api+json

Institution to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find institution by ID

Returns a single institution

path Parameters
Id
required
string <uuid>

ID of institution to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update institution

update a institution

path Parameters
Id
required
string <uuid>

institution id to patch

Request Body schema: application/vnd.api+json

institution to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete institution

delete a institution

path Parameters
Id
required
string <uuid>

institution id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Storage Unit Type

Get storage unit type

By passing in query string, user can get available storage unit types authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add storage unit type

Adds a storage unit type

Request Body schema: application/vnd.api+json

StorageUnitType to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find storage unit type by ID

Returns a single storage unit type

path Parameters
Id
required
string <uuid>

ID of storage unit type to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update storage unit type

update a storage unit type

path Parameters
Id
required
string <uuid>

storage unit type id to patch

Request Body schema: application/vnd.api+json

storage unit type to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete storage unit type

delete a storage unit type

path Parameters
Id
required
string <uuid>

storage unit type id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Project

Get project

By passing in query string, user can get available projects authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add project

Adds a project

Request Body schema: application/vnd.api+json

Project to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find project by ID

Returns a single project

path Parameters
Id
required
string <uuid>

ID of project to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update project

update a project

path Parameters
Id
required
string <uuid>

project id to patch

Request Body schema: application/vnd.api+json

project to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete project

delete a project

path Parameters
Id
required
string <uuid>

project id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Assemblage

Get assemblage

By passing in query string, user can get available assemblages authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add assemblage

Adds an assemblage

Request Body schema: application/vnd.api+json

Assemblage to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find assemblage by ID

Returns a single assemblage

path Parameters
Id
required
string <uuid>

ID of assemblage to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update assemblage

Update an assemblage

path Parameters
Id
required
string <uuid>

Assemblage id to patch

Request Body schema: application/vnd.api+json

Assemblage to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete assemblage

delete an assemblage

path Parameters
Id
required
string <uuid>

Assemblage id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Form Template

Get Form Template

By passing in query string, user can get Form Template authorized

query Parameters
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

AddForm Template

Adds a Form Template

Request Body schema: application/vnd.api+json

Form Template to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find Form Template by ID

Returns a single Form Template

path Parameters
Id
required
string <uuid>

ID of the Form Template to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update Form Template

Update a Form Template

path Parameters
Id
required
string <uuid>

Form Template id to patch

Request Body schema: application/vnd.api+json

Form Template to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete Form Template

delete a Form Template

path Parameters
Id
required
string <uuid>

Form Template id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Organism

Get organism

By passing in query string, user can get available organisms authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add organism

Adds a organism

Request Body schema: application/vnd.api+json

Organism to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find organism by ID

Returns a single organism

path Parameters
Id
required
string <uuid>

ID of organism to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update organism

update a organism

path Parameters
Id
required
string <uuid>

organism id to patch

Request Body schema: application/vnd.api+json

organism to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete organism

delete a organism

path Parameters
Id
required
string <uuid>

organism id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Protocol

Get protocol

By passing in query string, user can get available protocol types authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add protocol

Adds a protocol

Request Body schema: application/vnd.api+json

Protocol to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find protocol by ID

Returns a single protocol

path Parameters
Id
required
string <uuid>

ID of protocol to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update protocol

update a protocol

path Parameters
Id
required
string <uuid>

protocol id to patch

Request Body schema: application/vnd.api+json

protocol to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete protocol

delete a protocol

path Parameters
Id
required
string <uuid>

protocol id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Storage Unit

Get storage unit

By passing in query string, user can get available storage unit authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add storage unit

Adds a storage unit

Request Body schema: application/vnd.api+json

StorageUnit to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Find storage unit by ID

Returns a single storage unit

path Parameters
Id
required
string <uuid>

ID of storage unit to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update storage unit

update a storage unit

path Parameters
Id
required
string <uuid>

storage unit id to patch

Request Body schema: application/vnd.api+json

storage unit to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete storage unit

delete a storage unit

path Parameters
Id
required
string <uuid>

storage unit id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}

Storage Unit Usage

Get storage unit usage

By passing in query string, user can get available storage unit usage authorised

query Parameters
fiql
string

FIQL (Feed Item Query Language) filter for querying resources.

FIQL provides a URI-friendly syntax for expressing filters. This parameter is supported across most DINA collection APIs for consistent querying. FIQL cannot be applied to nested fields.

FIQL Syntax
fiql=filterExpression
Comparison Operators
Operator Syntax Description Example
Equal == Exact match catalogNumber==ABC123
Not Equal != Does not match status!=archived
Greater Than =gt= Numeric/date comparison year=gt=2020
Greater or Equal =ge= Inclusive comparison count=ge=10
Less Than =lt= Numeric/date comparison year=lt=2025
Less or Equal =le= Inclusive comparison count=le=100
In =in=() Value in list status=in=(active,pending)
Logical Operators
Operator Syntax Description Example
AND ; Both conditions must be true name==John;age=gt=25
OR , Either condition can be true status==active,status==pending
Grouping () Group conditions (field1==a,field1==b);field2==c
Wildcards

Use wildcards within string values for pattern matching:

  • * - Matches zero or more characters

Examples:

  • name==John* - Starts with "John"
  • name==*Smith - Ends with "Smith"
  • name==*John* - Contains "John"

Use \ to escape special characters within string values, e.g., name==John\;Doe to match "John;Doe".

Query Examples

Simple Queries

catalogNumber==ABC123
scientificName==Quercus robur
collectionYear==2023

Wildcard Searches

scientificName==*Quercus*
commonName==*oak*
locality==*Canada*

Numeric Comparisons

collectionYear=gt=2020
specimenCount=ge=10
latitude=lt=45.5

Date Ranges

collectedDate=ge=2020-01-01;collectedDate=le=2024-12-31
modifiedDate=gt=2024-01-01

Multiple Values

status=in=(active,pending,review)
collectionCode=in=(BOTANY,ZOOLOGY,GEOLOGY)
preparationType=out=(deleted,archived)

Combined Conditions (AND)

scientificName==*Quercus*;collectionYear=gt=2020
status==active;preparationType==mounted;collectionYear=ge=2023

Combined Conditions (OR)

status==active,status==pending
scientificName==*Quercus robur*,scientificName==*Quercus petraea*

Complex Queries with Grouping

(scientificName==*Quercus*,commonName==*oak*);collectionYear=gt=2020
(status==active,status==pending);preparationType!=digital;collectionYear=ge=2023

URL-Encoded Example

# Before encoding:
fiql=key==test%%%%

# After encoding:
fiql=key%3D%3D*test%25%25%25%25
Important Notes
  1. URL Encoding: Special characters must be URL-encoded in actual requests

    • Space: %20
    • ; (AND): %3B
    • , (OR): %2C
  2. Case Sensitivity:

    • Field names are case-sensitive
    • String values are typically case-insensitive (implementation-dependent)
  3. Performance: Leading wildcards (*term) may impact query performance

  4. Field Support: Not all fields support all operators. See endpoint-specific documentation.

  5. Nested Fields: FIQL cannot be applied to nested/related fields. Use the filter parameter for those cases.

  6. Wildcards: use * for wildcards in string values.

  7. Use \ to escape special characters within string values, e.g., name==John\;Doe to match John;Doe.

filter
any

Simple search filter using key-value pairs with nested properties.

Filter results by specifying field paths and comparison operators.

Filter Syntax
filter[fieldName][OPERATOR]=value
Supported Operators
Operator Description Example
NEQ Not equal to filter[status][NEQ]=archived
EQ Equal to filter[status][EQ]=active
GT Greater than filter[age][GT]=18
LT Less than filter[age][LT]=65
IN In list (comma-separated) filter[status][IN]=active,pending
LIKE Pattern match (use % or _ for wildcard) filter[name][LIKE]=%oak%
ILIKE Case-insensitive pattern match (use % or _ for wildcard) filter[locality][ILIKE]=%canada%
Wildcards

Use wildcards within string values along with the LIKE or ILIKE operators for pattern matching:

  • % - Matches zero or more characters
  • _ - Matches exactly one character

Examples:

filter[scientificName][LIKE]=%Quercus // matches any name ending with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name starting with "Quercus"
filter[scientificName][LIKE]=Quercus% // matches any name containing "Quercus"

filter[scientificName][LIKE]=_uercus // matches any name with any single character followed by "uercus"
filter[scientificName][LIKE]=Querc_s // matches any name starting with "Querc" followed by any single character and "s"

Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.

Examples

Simple Equality

filter[catalogNumber][EQ]=ABC123
filter[status][EQ]=active

Nested Properties

filter[storageUnitType.uuid][EQ]=0193bc05-5d49-7b99-89ea-7c97d2dcd7bd
filter[collection.code][EQ]=BOTANY
filter[determination.scientificName][LIKE]=%Quercus%

Numeric Comparisons

filter[collectionYear][GTE]=2020
filter[specimenCount][LT]=100
filter[latitude][GT]=45.5

Multiple Values (IN operator)

filter[status][IN]=active,pending,review
filter[collectionCode][IN]=BOTANY,ZOOLOGY

Multiple Filters (AND logic)

filter[status][EQ]=active&filter[collectionYear][GTE]=2020
filter[storageUnitType.uuid][EQ]=abc123&filter[preparationType][EQ]=mounted

OR Logic within a Single Filter

filter[status][IN]=active,pending
filter[scientificName][LIKE]=%Quercus%,%Pinus%

URL-Encoded Example

# Before encoding:
filter[scientificName][LIKE]=%Quercus%

# After encoding:
filter%5BscientificName%5D%5BLIKE%5D%3D%25Quercus%25
Nested Property Paths

Use dot notation to filter on nested/related objects:

filter[relationship.property][OPERATOR]=value
filter[parent.child][OPERATOR]=value
filter[parent.child.grandchild][OPERATOR]=value
Important Notes
  1. Multiple Filters: Use & to combine multiple filters (AND logic) and use , for OR logic in the same filter Note: OR logic cannot be applied across multiple filter parameters
  2. URL Encoding: Special characters must be URL-encoded
    • Space: %20
    • % wildcard: %25 (for LIKE patterns)
  3. Case Sensitivity: Field names are case-sensitive
  4. Operator Format: Operators must be in UPPERCASE
  5. Wildcards: Use %and _ for wildcards in LIKE/ILIKE patterns
  6. Use \ to escape special characters within string values, e.g., John\;Doe to match John;Doe.
sort
string

optional sort order string, such as descending, denoted by "-"

page[offset]
integer <int32>

number of records to skip when paging

page[limit]
integer <int32> [ 0 .. 50 ]

maximum number of records to return when paging

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": [
    ],
  • "meta": {
    }
}

Add storage unit usage

Adds a storage unit usage

Request Body schema: application/vnd.api+json

StorageUnitUsage to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "links": {
    },
  • "meta": {
    }
}

Find storage unit by ID

Returns a single storage unit usage

path Parameters
Id
required
string <uuid>

ID of storage unit usage to return

Responses

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Update storage unit usage

update a storage unit usage

path Parameters
Id
required
string <uuid>

storage unit usage id to patch

Request Body schema: application/vnd.api+json

storage unit usage to add

required
object

Responses

Request samples

Content type
application/vnd.api+json
{
  • "data": {
    }
}

Response samples

Content type
application/vnd.api+json
{
  • "data": {
    },
  • "meta": {
    }
}

Delete storage unit usage

delete a storage unit usage

path Parameters
Id
required
string <uuid>

storage unit usage id to delete

Responses

Response samples

Content type
application/vnd.api+json
{
  • "errors": [
    ]
}