@managed-api/tempo-cloud-v4-core
v2.3.0
Published
Adaptavist Managed API for Tempo Cloud v4
Keywords
Readme
Managed API for Tempo Cloud
Managed API for Tempo Cloud is an API Client for Tempo Cloud by Adaptavist primarily designed for the use in ScriptRunner Connect. You can read more about Managed APIs here.
This is a runtime agnostic version of the Managed API (with core suffix) that makes it easy to port it to any runtime you may want to use this Managed API on.
Platform specific ports
Supported API calls
- fetch
- Account
- Customer
- GenericResource
- Plan
- Work
- Worklog
Porting to other runtimes
While the primary reason for creating Managed APIs was to use them in ScriptRunner Connect runtime, then you can easily port them to any runtime of your choosing.
You can do so by extending the *Core Managed API class where you'll be asked to provide implementation for getPlatformImplementation function. In this implementation you have to specify how to perform buffer encoding/decoding operations and how to perform HTTP calls:
{
buffer: {
encode(input: string): ArrayBuffer;
decode(input: ArrayBuffer): string;
},
performHttpCall(request: Request): Promise<Response>
}Here is an example how to create a Node port of the Managed API:
import { TempoCloudApiCore } from "@managed-api/tempo-cloud-v4-core";
import { PlatformImplementation, Request, Response, Headers } from "@managed-api/commons-core";
import fetch from "node-fetch";
export class TempoCloudApi extends TempoCloudApiCore {
constructor(private baseUrl: string, private authToken: string) {
super();
}
protected getPlatformImplementation(): PlatformImplementation {
return {
buffer: {
encode: (input) => Buffer.from(input, 'utf-8'),
decode: (input) => Buffer.from(input).toString('utf-8')
},
performHttpCall: (request) => this.performHttpCall(request)
};
}
private async performHttpCall(request: Request): Promise<Response> {
const requestUrl = `${this.baseUrl}${request.url}`; // Substitute base URL
request.headers.set('Authorization', `Basic ${this.authToken}`); // Substitute auth token
const response = await fetch(requestUrl, {
method: request.method,
headers: request.headers as any,
body: request.method.toLowerCase() !== 'get' ? Buffer.from((await request.arrayBuffer()) ?? new ArrayBuffer(0)) : undefined
});
const apiHeaders = new Headers();
response.headers.forEach((value, key) => apiHeaders.append(key, value));
const body = await response.arrayBuffer();
return super.buildResponse(response.url, response.status, response.statusText, apiHeaders, body);
}
}Please note that the authentication handling details may not be accurate and serve as an example. If you wish to use these Managed APIs without having to concern yourself how to deal with and secure authentication details when working with APIs, then feel free to evaluate ScriptRunner Connect platform.
Contact
At this time Managed APIs are unlicensed and close sourced, but feel free to drop an email to [email protected] for ideas, suggestions and improvements.
Changelog
2.3.0
Updated the following methods:
Plan.getPlans: AddissueIdsandprojectIdsto request.Plan.searchPlans: AddissueIdsandprojectIdsto request.Plan.createPlan: AddeffortPeristenceTypeandplannedSecondsto request.Plan.updatePlan: AddeffortPeristenceTypeandplannedSecondsto request.Worklog.createWorklog: AddbypassPeriodClosuresAndApprovalsto request.Worklog.deleteWorklog: AddbypassPeriodClosuresAndApprovalsto request.Worklog.Search.searchWorklogs: AddorderByto request.Work.Attribute.createAttribute: AddclientSecretandexternalUrlto request.Work.Attribute.updateAttribute: AddclientSecretandexternalUrlto request.
2.1.0
- Removed non-empty body from HEAD requests.
2.0.0
Breaking change: URL and query string parameters are now URL encoded, meaning if you encoded them explicitly before you have to remove your own encoding, otherwise they will get double encoded.
0.16.0
Changes
Updated OpenApi Specification
Field
issueIdwas removed fromWorklog.updateWorklog.Changed the previous
Plan.getPlansmethod toPlan.searchPlans.
Added support for the following Plan method:
- Retrieve Plans that can be used as
Plan.getPlansorAll.getPlans.
Added support for the following Worklog.Work method:
- Search Work Attribute values that can be used as
Worklog.Work.searchAttributeValuesorAll.searchWorkAttributeValuesForWorklogs.
0.12.0
Changed response type for the following Account methods:
- Retrieve Accounts that can be used as
Account.getAccountsorAll.getAccounts.
0.11.0
Added support for the following Account methods:
- Retrieve Account links that can be used as
Account.getLinksorAll.getLinks.
Added support for the following Account.Category methods:
- Retrieve Category / Retrieve all Categories that can be used as
Account.Category.getAllCategoriesOrCategoryByIdorAll.getAllCategoriesOrCategoryById. - Create Category that can be used as
Account.Category.createCategoryorAll.createCategory. - Delete Category that can be used as
Account.Category.deleteCategoryorAll.deleteCategory. - Retrieve Category that can be used as
Account.Category.getCategoryByKeyorAll.getCategoryByKey. - Update Category that can be used as
Account.Category.updateCategoryorAll.updateCategory.
Added support for the following Account.Category.Type methods:
- Retrieve Category Types that can be used as
Account.Category.Type.getTypesorAll.getCategoryTypes.
Added support for the following Account.Link methods:
- Create Account Link that can be used as
Account.Link.createLinkorAll.createAccountLink. - Retrieve Account Link by Project that can be used as
Account.Link.getLinkByProjectorAll.getAccountLinkByProject. - Delete Account Link that can be used as
Account.Link.deleteLinkorAll.deleteAccountLink. - Retrieve Account Link that can be used as
Account.Link.getLinkByIdorAll.getAccountLinkById.
Added support for the following Customer methods:
- Retrieve all Customers that can be used as
Customer.getCustomersorAll.getCustomers. - Create Customer that can be used as
Customer.createCustomerorAll.createCustomer. - Retrieve Customer that can be used as
Customer.getCustomerorAll.getCustomer. - Retrieve Accounts associated with the Customer that can be used as
Customer.getAccountsByCustomerorAll.getAccountsByCustomer. - Delete Customer that can be used as
Customer.deleteCustomerorAll.deleteCustomer. - Update Customer that can be used as
Customer.updateCustomerorAll.updateCustomer.
0.10.0
Changed response type for the following Work.Attribute methods:
- Retrieve Attributes that can be used as
Work.Attribute.getAttributesorAll.getWorkAttributes.
0.9.0
Added support for the following Account methods:
- Create Account that can be used as
Account.createAccountorAll.createAccount. - Delete Account that can be used as
Account.deleteAccountorAll.deleteAccount. - Update Account that can be used as
Account.updateAccountorAll.updateAccount.
Added support for the following Work.Attribute methods:
- Retrieve Attributes that can be used as
Work.Attribute.getAttributesorAll.getWorkAttributes. - Create Attribute that can be used as
Work.Attribute.createAttributeorAll.createWorkAttribute. - Delete Attribute that can be used as
Work.Attribute.deleteAttributeorAll.deleteWorkAttribute. - Retrieve Attribute that can be used as
Work.Attribute.getAttributeorAll.getWorkAttribute. - Update Attribute that can be used as
Work.Attribute.updateAttributeorAll.updateWorkAttribute.
0.8.0
Added support for the following Account methods:
- Retrieve Accounts that can be used as
Account.getAccountsorAll.getAccounts. - Search Accounts that can be used as
Account.searchAccountsorAll.searchAccounts. - Retrieve Account that can be used as
Account.getAccountByIdorAll.getAccountById.
Added support for the following GenericResource methods:
- Search Generic Resources that can be used as
GenericResource.searchGenericResourcesorAll.searchGenericResources. - Retrieve Generic Resources that can be used as
GenericResource.getGenericResourceorAll.getGenericResource.
Added support for the following Plan methods:
- Create Plan that can be used as
Plan.createPlanorAll.createPlan. - Retrieve Plans for Generic Resource that can be used as
Plan.getPlansForGenericResourceorAll.getPlansForGenericResource. - Search Plans that can be used as
Plan.getPlansorAll.getPlans. - Retrieve Plans for User that can be used as
Plan.getPlansForUserorAll.getPlansForUser. - Delete Plan that can be used as
Plan.deletePlanByIdorAll.deletePlanById. - Retrieve Plan that can be used as
Plan.getPlanByIdorAll.getPlanById. - Update Plan that can be used as
Plan.updatePlanorAll.updatePlan.
0.3.0
Removed support for the following methods:
Worklog.Search.getWorklogsByFilterIdorAll.getWorklogsByFilterId.Worklog.getJiraWorklogorAll.getJiraWorklog.
Added support for the following Worklog.Search method:
- Retrieve Jira Worklog Ids by Tempo Worklog Ids that can be used as
Worklog.Search.getJiraWorklogIdsByTempoWorklogIdsorAll.getJiraWorklogIdsByTempoWorklogIds.
Fixed following methods:
- Search Worklogs associated to Issue Id that can be used as
Worklog.Search.getWorklogsByIssueIdorAll.getWorklogsByIssueId. - Retrieve Worklogs associated to project Id that can be used as
Worklog.Search.getWorklogsByProjectIdorAll.getWorklogsByProjectId.
0.1.0
Added support for the following Worklog methods:
- Retrieve Worklogs that can be used as
Worklog.getWorklogsorAll.getWorklogs. - Create Worklog that can be used as
Worklog.createWorklogorAll.createWorklog. - Retrieve Worklog for Jira Worklog ID that can be used as
Worklog.getJiraWorklogorAll.getJiraWorklog. - Delete Worklog that can be used as
Worklog.deleteWorklogorAll.deleteWorklog. - Retrieve Worklog that can be used as
Worklog.getWorklogorAll.getWorklog. - Update Worklog that can be used as
Worklog.updateWorklogorAll.updateWorklog.
Added support for the following Worklog.Search methods:
- Search Worklogs associated to Account that can be used as
Worklog.Search.getWorklogsByAccountorAll.getWorklogsByAccount. - Search Worklogs associated to Issue that can be used as
Worklog.Search.getWorklogsByJiraIssueIdOrKeyorAll.getWorklogsByJiraIssueIdOrKey. - Search Worklogs associated to Jira filter ID that can be used as
Worklog.Search.getWorklogsByFilterIdorAll.getWorklogsByFilterId. - Search Worklogs associated to Project that can be used as
Worklog.Search.getWorklogsByProjectorAll.getWorklogsByProject. - Search Worklogs that can be used as
Worklog.Search.searchWorklogsorAll.searchWorklogs. - Search Worklogs associated to Team that can be used as
Worklog.Search.getWorklogsByTeamorAll.getWorklogsByTeam. - Search Worklogs associated to User that can be used as
Worklog.Search.getWorklogsByUserorAll.getWorklogsByUser.
Added support for the following Worklog.Work methods:
- Bulk create Work Attribute values for Worklogs that can be used as
Worklog.Work.createAttributeValuesorAll.createWorkAttributeValuesForWorklogs. - Retrieve Work Attribute values for Worklog that can be used as
Worklog.Work.getAttributeValuesorAll.getWorkAttributeValuesForWorklog. - Retrieve Work Attribute value for Worklog that can be used as
Worklog.Work.getAttributeValueorAll.getWorkAttributeValueForWorklog.
Copyright Adaptavist 2025 (c) All rights reserved
