Skip to content

iangetz/akamai-api-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Akamai API Tools

Library to facilitate using Akamai {OPEN} APIs


Prerequisites:

Local .edgerc file with valid Akamai client API credentials (Authenticate with EdgeGrid)


Functions

getDatesRelative(endDateOffset = 0, daysPrior = 1, returnEndDateObj = false)

 

Returns formatted start/end timestamps for a range of days

Input

Parameter Type Description
endDateOffset Int Days prior to today for end date (e.g. 0 = through midnight today UTC)
daysPrior Int Number of days prior to endDate to include in report (e.g. 1 day, 5 days, etc.)
returnDateObj Boolean Include endDate Date object in response array

 

Output (array)

Type Description
String Formatted timestamp for start of period
String Formatted timestamp for end of period
Date object Date object equivalent for end period

 

getDatesToFriday(weeksBack = 0, weeks = 1, returnEndDateObj = false)

 

Custom use case: Report is run each week between Monday - Thursday morning for the prior week ending last Friday (a buffer since data for prior two days is not final)

Input

Parameter Type Description
weeksBack Int Weeks prior to last week (0 = last week ending Friday)
weeks Int Number of weeks prior to endDate to include in report
returnDateObj Boolean Include endDate Date object in response array

 

Output (array)

Type Description
String Formatted timestamp for start of period
String Formatted timestamp for end of period
Date object Date object equivalent for end period

 

async getTopCpcodes(accountSwitchKey, startDateFormatted, endDateFormatted, count=10, measurement='hits', level='edge', products=[])

 

Returns the top CP codes by hits or bytes for a given time period

Input

Parameter Type Description
accountSwitchKey String Send empty '' value if not known which default to own account
startDateFormatted String Formatted Akamai API timestamp for start of reporting period
endDateFormatted String Formatted Akamai API timestamp for end of reporting period
count Int number of CP codes to return in array
measurement String 'hits' or 'bytes'
level String 'edge' or 'origin'
products Array Limit reporting data to specific products e.g. ['Ion Standard']

 

Output (array)

Type Description
Object Log details from API request
Array Array of top CP code IDs

 

async getReportData(reqObj)

 

Get content from an Akamai {OPEN} API

Input (object)

Object key Type Description
path String API endpoint path
method String GET or POST
accountSwitchKey String Ignore if not known (for Akamai employees)
body Object Varies by API, may be an empty but is required — see Tech Docs for details
dataProperty String JSON key within response to return (E.g. 'data')
params String Optional: List of additional URL parameters unique to a specific API
startDate String Required if needed by API -- see Tech Docs for details
endDate String Required if needed by API -- see Tech Docs for details
interval String Required if needed by API -- see Tech Docs for details
groupId String Required if needed by API -- see Tech Docs for details
contractId String Required if needed by API -- see Tech Docs for details
headers String Optional: Additional headers which can change response (E.g. 'PAPI-Use-Prefixes': false)
arrayToObject Boolean Optional: Return object instead of array
objectKey String Required if arrayToObject is true, specifies what value in each array to use as object key

 

Output (array)

Type Description
Object Log details from API request
Array or Object API response, limited to the object property identified in 'dataProperty' request object

 

Sample request for account CP codes (response: object)

const cpcodeDetails = await apiTools.getReportData({
	path: '/cprg/v1/cpcodes',
	method: 'GET',
	accountSwitchKey: '',
	body: {},
	dataProperty: 'cpcodes',
	arrayToObject: true,
	objectKey: 'cpcodeId'
});

Sample request for property (response: array)

const propertyHostnames = await apiTools.getReportData({
	path: `/papi/v1/properties/${property.propertyId}/versions/${propertyVersion}/hostnames`,
	method: 'GET',
	headers: {'PAPI-Use-Prefixes': false},
	accountSwitchKey: '',
	groupId: property.groupId,
	contractId: property.contractId,
	body: {},
	dataProperty: 'hostnames.items'
});

 

getProductName(productId)

 

Convert Property Mananger API (PAPI) product ID to a human-friendly product name

Input

Parameter Type Description
productId String PAPI product ID (E.g. 'Fresca')

 

Output (array)

Type Description
String Human-friendly product name (E.g. 'Ion Standard')

 

getLength(input)

 

Standard method to get length of variable which can be an string, array, or object

Input

Parameter Type Description
input String, Array, or Object Variable to determine length

 

Output (array)

Type Description
Int Legnth of string, number of array elements, or number of object keys

 

About

Library to facilitate using Akamai {OPEN} APIs.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published