Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Updates in "Source Code and Deployment" and Deliverables


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.

...

The Admin API will be called programmatically within automated deployment environments.  A knowledgeable person or team of people with IT administrative functions will be responsible for the configuration, usage and security of the Admin API.  The Admin API will automate functions currently done today via custom scripting and/or human intervention via a user-interface, such as the  the Admin App or other management interfaces.  The Admin API may be driven by automation scripts, such as PowerShe

Functional Requirements

Below are functional requirements for an Admin API to automate and manage an Ed-Fi Technology Stack.

...

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)

...

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)

...

Admin API will be documented using a combination of general documentation here in Tech Docs, as well as endpoint-specific automated Swagger API Platform documentation available at runtime, including specific request and response models, expected response codes, and descriptive details.

Source Code and Deployment

The Admin API will be released as Apache 2.0 source code, as with Ed-Fi's ODS/API Platform and Admin App.   

Initially, the Admin API may be a standalone application within Admin App.  This means, to use the Admin API, you will have to deploy Admin App.  It is not required to use Admin App for Admin API functionality.

Deliverables

Below is a listing of deliverable details, such as planned roadmap dates, summary of release functionality and links to releases in TechDocs.  Release links will expand with tickets and information as design and development of the project continues.

VersionRoadmap DateSummary of FunctionalityRelease Link
Admin App 1.0

 

  • Establish initial standalone Admin API project reuse existing logic from Admin App
  • Functionality to manage via Admin API:
    • Applications
    • Vendors
    • Credentials (keys and secrets)
https://tracker.ed-fi.org/projects/AA/versions/14714
Admin App 1.1

 

  • Ability to add claim sets via API (may be parent-level only for 1.1)
https://tracker.ed-fi.org/projects/AA/versions/14802
Admin App 1.2+TBDTBD based on additional field requirements as identified


Open Questions

Below are open questions as related to the design of the Admin API from the development team and Ed-Fi community.  If you have additional needs, questions or other items not addressed in this document, please comment below add it to the list.

...