Identification
Are you responding as a...
(Choice)
- Vendor who accesses Ed-Fi API instances?
- Host who manages Ed-Fi API instances?
- Education Agency who relies on an Ed-Fi API?
Feature Usage
Which of these ODS/API features do you use?
(Likert scale with options: not used, some usage, critical usage)
- Profiles - for restricting data access
- Both read and write
- Profiles - for performance benefit
- There are fewer attributes in the GET request
- Extensions
- Change Queries
link
in the HTTP response- PUT requests - instead of
DELETE
&POST
- Some organizations choose to
DELETE
and then re-POST
modified records, instead of usingPUT
. Commonly this is to avoid extra coding logic around disallowed natural key updates (e.g. no updating aStudentUniqueId
).
- Some organizations choose to
- ETags and
If-Match
header - Data model information list at /api
- XSD endpoint
- Dependencies endpoint
- Enrollment Composite
- Identity Pass-through
- Location header - storing the ID
Strictness
How important are the following to you as requirements for an Ed-Fi API?
(Likert scale with options: must not, could, should, must)
- Strict JSON payload validation
- e.g. reject extra properties
- Why? Someone might have a typo on an optional property and never realize because it was accepted but thrown away
- e.g. reject extra properties
- Require a DateTime to include time
- Most validators require the time component, though some systems will infer it as midnight
- Store time in UTC
- Otherwise, whose timezone is it?
- Case sensitive resources names / attributes
- {{ /ed-fi/classPeriods}} is different from
/ed-fi/ClAsPeriODs
?schoolId=1234
is a valid query but?sCHOoLid=1234
is not- Should not be (or not only) dependent on database technology
- {{ /ed-fi/classPeriods}} is different from
- Case sensitive string values
?firstName=John
and?firstName=JOHN
return different results- This is the default in PostgreSQL, but not in SQL Server
- Modifying the database setting is harder than one would think
Proposals
How important are the following to you as requirements for an Ed-Fi API?
(Likert scale with options: must not, could, should, must)
- Declare case sensitivity in metadata
- New idea for future releases
- New idea for future releases
- Delete by natural key
- e.g. instead of
DELETE .. /ed-fi/students/abcd1234xyz
thenDELETE ../ed-fi/students/studentUniqueId=1234
- Particularly useful for organizations who are not storing the Ed-Fi unique identifier (
abcd1234xyz
in the example above).
- e.g. instead of