Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Overview updates


Info
titleNotice

This Admin API design document is in draft status and evolving as informed by the Ed-Fi community.  Please use the Comments section below for any feedback into the design of Admin API.

...

Implementers of Ed-Fi technology have signaled the need for an administrative API (Admin API) to automate functions such as key/secret management, application management and other key important functions.  Automated deployments are becoming more of a trend throughout Ed-Fi technology stack deployments, which can allow for faster and more consistent deployments.  An Admin API would enable implementers to automate functions that require manual efforts today.  , which are known to be blockers to adoption at-scale.

Ed-Fi 's has provided the Admin App, which is an application that provides a user-interface (UI) to some of these functions and will be a basis for Admin API initial functionalityEd-Fi management functions.  Admin App provides business logic and a user-interface to necessary functions such as credentials, application, vendor and claim set management.  The Admin API will leverage the pre-existing and reviewed business logic created in Admin App as a basis of an initial release, however the Admin API would be expected to grow in functionality as requirements are identified by the Ed-Fi community.

...

Below are suggested API endpoints to implement the primary use cases as mentioned above. All endpoints will include a version prefix.

API EndpointSupported OperationsFunctionRequest PayloadResponse Content
/identity/oauth/tokenPOSTLogin to retrieve a token for authorized Admin API usage.{
    "client_id": "string",
    "client_secret": "string",
    "grant_type": "client_credentials",
    "scope": "string"
}
POST:  201 (Created)
{
    "access_token": "string",
    "expires_in": 3600,
    "token_type": "Bearer",
    "scope": "string"
}
ALL: 401 (Unauthorized), 500 (System Error)
/identity/clientPOSTCreate a new identity for Admin API usage.
POST:  201 (Created)
ALL: 401 (Unauthorized), 500 (System Error)
/admin/vendorsGETRetrieve listing of existing vendorsN/A

GET:  200 (OK)
ALL: 401 (Unauthorized), 500 (System Error)

POSTAdd a new vendor.{
    "company": "string",
    "namespacePrefixes": "string",
    "contactName": "string",
    "contactEmailAddress": "string"
}
POST:  201 (Created)
{
    "vendorId": 0
    "company": "string",
    "namespacePrefixes": "string",
    "contactName": "string",
    "contactEmailAddress": "string"
}
Header:
Location attribute: address to retrieve the created object
/admin/vendors/{id}GETRetrieve detail information for an existing vendorN/A

GET:  204 (OK)
ALL: 401 (Unauthorized), 500 (System Error)

PUTUpdate vendor information{
    "company": "string",
    "namespacePrefixes": "string",
    "contactName": "string",
    "contactEmailAddress": "string"
}
PUT:  204 (No Content / Updated), 404 (Not Found)
DELETEDelete a vendorN/ADELETE: 200 (OK), 404 (Not Found)
/admin/claimsetsGETReturns list of valid claimsets available in the system (needed for defining applications)N/AGET:  200 (OK)
/admin/applicationsGETRetrieve listing of existing applicationsN/AGET:  200 (OK)
ALL: 401 (Unauthorized), 500 (System Error)
POSTCreate a new application.{
    "applicationName": "string",
    "vendorId": 0,
    "claimSetName": "string",
    "profileId": 0,
    "educationOrganizationIds": [0,]
}
POST:  201 (Created)
{
    "applicationId": 0,
    "applicationName": "string",
    "vendorId": 0,
    "claimSetName": "string",
    "profileId": 0,
    "educationOrganizationIds": [0,]
}
Header:
Location attribute: address to retrieve the created object
/admin/applications/{id}GET Retrieve detail information for an existing application.N/A

GET:  200 (OK)
ALL: 401 (Unauthorized), 500 (System Error)

PUTUpdate application information. {
    "applicationName": "string",
    "vendorId": 0,
    "claimSetName": "string",
    "profileId": 0,
    "educationOrganizationIds": [0,]
}
PUT:  204 (No Content / Updated), 404 (Not Found)
DELETEDelete an existing application.N/ADELETE: 200 (OK), 404 (Not Found)
/admin/applications/{id}/reset-credentialPUTReset application credentialN/A200 OK (Application ID, Key, Secret, API Url)

Multi-Instance Routes

When administrating a District- or Year- Specific multi-instance ODS, each instance-specific route will be prefixed by instance ID. For example. /admin/applications/{id}  becomes /admin/instances/{instance-id}/applications/{id} . "Global" settings such as vendors/  and claimsets/ remain unchanged. In addition, endpoints will be available to register and update ODS/API instances:

API EndpointSupported OperationsFunctionRequest PayloadResponse Content
/admin/instancesGETList registered instancesN/A
POSTRegister a new instance

/admin/instances/{id}GETDetails of an individual instanceN/A
PUTUpdate info for an existing instance

DELETERemove an existing instanceN/ADELETE: 200 (OK), 404 (Not Found)


Response Structure

( To be determined as part of active design discussions )

...

The following API responses are common between endpoints and will utilize a standard response structure around the content that varies.

Response CodeValid VerbsDescriptionStructure
400 Bad RequestPOST, PUT, DELETEProblem with request body (validation issue or incorrect use)
401 UnauthorizedAllBearer token is missing or invalid
500 Internal Server ErrorAllUnexpected error has occurred

Technical Requirements

Below are technical requirements for the Admin API:

...