A newer version of the Ed-Fi ODS / API is now available. See the Ed-Fi Technology Version Index for a link to the latest version.

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Current »

The API surface of an Ed-Fi ODS / API is platform neutral, meaning that client systems can be written in a variety of languages.

This documentation primarily covers examples using Java and C# libraries. However, scripting languages such as Ruby or PHP can also be used. The following code snippet provides a simple example in PHP showing authentication followed by a GET to populate a simple list of Student entities.

PHP Script Example
 <html>
	<head>
 		<title>PHP Test</title>
 	</head>
 <body>
 
 <?php 
 
 // TODO: Replace URL, Client ID, and Client Secret with your values
 $edfiBaseUrl = "https://api.ed-fi.org/api"; // NOTE: No trailing slash!
 $edfiClientId = "RvcohKz9zHI4";
 $edfiClientSecret = "E1iEFusaNf81xzCxwHfbolkC";
 
 function getAuthCode($edfiBaseUrl, $edfiClientId){
  
 	$edfiApiCodeUrl = "$edfiBaseUrl/oauth/authorize"; 
 	$data = "Client_id=$edfiClientId&Response_type=code";
 	$urlWithData = "$edfiApiCodeUrl?$data";
 
 	$curl = curl_init();
  
 	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 	curl_setopt($curl, CURLOPT_URL, $edfiApiCodeUrl);
 	curl_setopt($curl, CURLOPT_POST, 1);
 	curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
 
	// Receive server response.
 	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
   
 	$result = curl_exec($curl);
 
 	$jsonResult = json_decode($result);
 
 	curl_close($curl);
 
 	return $jsonResult->code;
 } 
 
 function getAuthToken($edfiBaseUrl,$edfiClientId,$edfiClientSecret,$authCode){
  
 	$edfiApiTokenUrl = "$edfiBaseUrl/oauth/token";
 	$paramsToPost = "Client_id=$edfiClientId&Client_secret=$edfiClientSecret&Code=$authCode&Grant_type=authorization_code";
  
 	$curl = curl_init();
  
 	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 	curl_setopt($curl, CURLOPT_URL, "$edfiApiTokenUrl");
 	curl_setopt($curl, CURLOPT_POST, 1);
 	curl_setopt($curl, CURLOPT_POSTFIELDS, $paramsToPost);
 
 	// Receive server response
 	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
   
 	$result = curl_exec($curl);
 
 	$jsonResult = json_decode($result);
 
 	curl_close($curl);
 
 	return $jsonResult->access_token;
 }
 
 function edfiApiAuthenticate($edfiBaseUrl,$edfiClientId,$edfiClientSecret,$authCode){
 	$authCode = getAuthCode($edfiBaseUrl, $edfiClientId);
 	$accessToken = getAuthToken($edfiBaseUrl,$edfiClientId,$edfiClientSecret,$authCode);
 	return $accessToken;
 }
 
 function edfiApiGet($token,$edfiResourceUrl,$data){
  
 	$authorization = "Authorization: Bearer $token";
 
 	$curl = curl_init();
  
 	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 	curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
 	curl_setopt($curl, CURLOPT_URL, "$edfiResourceUrl?$data");
 	
	// Receive server response
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
   
 	$result = curl_exec($curl);
 
 	$jsonResult = json_decode($result);
 
 	curl_close($curl);
 
 	return $jsonResult;
 }
 ?> 
 
 <?php 
 $accessToken = edfiApiAuthenticate($edfiBaseUrl,$edfiClientId,$edfiClientSecret,$authCode);
 echo "<p>token: $accessToken</p>";
 
 //$jsonStudents = edfiApiGet($accessToken,"https://api.ed-fi.org/api/api/v2.0/2017/students","");
 $jsonStudents = edfiApiGet($accessToken,"https://api.ed-fi.org/api/api/v2.0/2017/students","limit=10");
 ?>
 
 <table>
 	<thead>
    	<tr>
      		<th>FirstName</th>
      		<th>Middle</th>
      		<th>Last</th>
    	</tr>
  	</thead>
  	<tbody>
	<?php 
 	foreach ($jsonStudents as $student => $s) {
            // Output a row
            $row = "<tr>";
   			$row .= "<td>$s->firstName</td>";
   			$row .= "<td>$s->middleName</td>";
   			$row .= "<td>$s->lastSurname</td>";
   			$row .= "</tr>";
   			echo $row;
        	}?>
  	</tbody>
</table>
<hr>
<?php echo json_encode($jsonStudents); ?>


  • No labels