@managed-api/tempo-cloud-v4-core
v2.0.0
Published
Adaptavist Managed API for Tempo Cloud v4
Downloads
48
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.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
issueId
was removed fromWorklog.updateWorklog
.Changed the previous
Plan.getPlans
method toPlan.searchPlans
.
Added support for the following Plan method:
- Retrieve Plans that can be used as
Plan.getPlans
orAll.getPlans
.
Added support for the following Worklog.Work method:
- Search Work Attribute values that can be used as
Worklog.Work.searchAttributeValues
orAll.searchWorkAttributeValuesForWorklogs
.
0.12.0
Changed response type for the following Account methods:
- Retrieve Accounts that can be used as
Account.getAccounts
orAll.getAccounts
.
0.11.0
Added support for the following Account methods:
- Retrieve Account links that can be used as
Account.getLinks
orAll.getLinks
.
Added support for the following Account.Category methods:
- Retrieve Category / Retrieve all Categories that can be used as
Account.Category.getAllCategoriesOrCategoryById
orAll.getAllCategoriesOrCategoryById
. - Create Category that can be used as
Account.Category.createCategory
orAll.createCategory
. - Delete Category that can be used as
Account.Category.deleteCategory
orAll.deleteCategory
. - Retrieve Category that can be used as
Account.Category.getCategoryByKey
orAll.getCategoryByKey
. - Update Category that can be used as
Account.Category.updateCategory
orAll.updateCategory
.
Added support for the following Account.Category.Type methods:
- Retrieve Category Types that can be used as
Account.Category.Type.getTypes
orAll.getCategoryTypes
.
Added support for the following Account.Link methods:
- Create Account Link that can be used as
Account.Link.createLink
orAll.createAccountLink
. - Retrieve Account Link by Project that can be used as
Account.Link.getLinkByProject
orAll.getAccountLinkByProject
. - Delete Account Link that can be used as
Account.Link.deleteLink
orAll.deleteAccountLink
. - Retrieve Account Link that can be used as
Account.Link.getLinkById
orAll.getAccountLinkById
.
Added support for the following Customer methods:
- Retrieve all Customers that can be used as
Customer.getCustomers
orAll.getCustomers
. - Create Customer that can be used as
Customer.createCustomer
orAll.createCustomer
. - Retrieve Customer that can be used as
Customer.getCustomer
orAll.getCustomer
. - Retrieve Accounts associated with the Customer that can be used as
Customer.getAccountsByCustomer
orAll.getAccountsByCustomer
. - Delete Customer that can be used as
Customer.deleteCustomer
orAll.deleteCustomer
. - Update Customer that can be used as
Customer.updateCustomer
orAll.updateCustomer
.
0.10.0
Changed response type for the following Work.Attribute methods:
- Retrieve Attributes that can be used as
Work.Attribute.getAttributes
orAll.getWorkAttributes
.
0.9.0
Added support for the following Account methods:
- Create Account that can be used as
Account.createAccount
orAll.createAccount
. - Delete Account that can be used as
Account.deleteAccount
orAll.deleteAccount
. - Update Account that can be used as
Account.updateAccount
orAll.updateAccount
.
Added support for the following Work.Attribute methods:
- Retrieve Attributes that can be used as
Work.Attribute.getAttributes
orAll.getWorkAttributes
. - Create Attribute that can be used as
Work.Attribute.createAttribute
orAll.createWorkAttribute
. - Delete Attribute that can be used as
Work.Attribute.deleteAttribute
orAll.deleteWorkAttribute
. - Retrieve Attribute that can be used as
Work.Attribute.getAttribute
orAll.getWorkAttribute
. - Update Attribute that can be used as
Work.Attribute.updateAttribute
orAll.updateWorkAttribute
.
0.8.0
Added support for the following Account methods:
- Retrieve Accounts that can be used as
Account.getAccounts
orAll.getAccounts
. - Search Accounts that can be used as
Account.searchAccounts
orAll.searchAccounts
. - Retrieve Account that can be used as
Account.getAccountById
orAll.getAccountById
.
Added support for the following GenericResource methods:
- Search Generic Resources that can be used as
GenericResource.searchGenericResources
orAll.searchGenericResources
. - Retrieve Generic Resources that can be used as
GenericResource.getGenericResource
orAll.getGenericResource
.
Added support for the following Plan methods:
- Create Plan that can be used as
Plan.createPlan
orAll.createPlan
. - Retrieve Plans for Generic Resource that can be used as
Plan.getPlansForGenericResource
orAll.getPlansForGenericResource
. - Search Plans that can be used as
Plan.getPlans
orAll.getPlans
. - Retrieve Plans for User that can be used as
Plan.getPlansForUser
orAll.getPlansForUser
. - Delete Plan that can be used as
Plan.deletePlanById
orAll.deletePlanById
. - Retrieve Plan that can be used as
Plan.getPlanById
orAll.getPlanById
. - Update Plan that can be used as
Plan.updatePlan
orAll.updatePlan
.
0.3.0
Removed support for the following methods:
Worklog.Search.getWorklogsByFilterId
orAll.getWorklogsByFilterId
.Worklog.getJiraWorklog
orAll.getJiraWorklog
.
Added support for the following Worklog.Search method:
- Retrieve Jira Worklog Ids by Tempo Worklog Ids that can be used as
Worklog.Search.getJiraWorklogIdsByTempoWorklogIds
orAll.getJiraWorklogIdsByTempoWorklogIds
.
Fixed following methods:
- Search Worklogs associated to Issue Id that can be used as
Worklog.Search.getWorklogsByIssueId
orAll.getWorklogsByIssueId
. - Retrieve Worklogs associated to project Id that can be used as
Worklog.Search.getWorklogsByProjectId
orAll.getWorklogsByProjectId
.
0.1.0
Added support for the following Worklog methods:
- Retrieve Worklogs that can be used as
Worklog.getWorklogs
orAll.getWorklogs
. - Create Worklog that can be used as
Worklog.createWorklog
orAll.createWorklog
. - Retrieve Worklog for Jira Worklog ID that can be used as
Worklog.getJiraWorklog
orAll.getJiraWorklog
. - Delete Worklog that can be used as
Worklog.deleteWorklog
orAll.deleteWorklog
. - Retrieve Worklog that can be used as
Worklog.getWorklog
orAll.getWorklog
. - Update Worklog that can be used as
Worklog.updateWorklog
orAll.updateWorklog
.
Added support for the following Worklog.Search methods:
- Search Worklogs associated to Account that can be used as
Worklog.Search.getWorklogsByAccount
orAll.getWorklogsByAccount
. - Search Worklogs associated to Issue that can be used as
Worklog.Search.getWorklogsByJiraIssueIdOrKey
orAll.getWorklogsByJiraIssueIdOrKey
. - Search Worklogs associated to Jira filter ID that can be used as
Worklog.Search.getWorklogsByFilterId
orAll.getWorklogsByFilterId
. - Search Worklogs associated to Project that can be used as
Worklog.Search.getWorklogsByProject
orAll.getWorklogsByProject
. - Search Worklogs that can be used as
Worklog.Search.searchWorklogs
orAll.searchWorklogs
. - Search Worklogs associated to Team that can be used as
Worklog.Search.getWorklogsByTeam
orAll.getWorklogsByTeam
. - Search Worklogs associated to User that can be used as
Worklog.Search.getWorklogsByUser
orAll.getWorklogsByUser
.
Added support for the following Worklog.Work methods:
- Bulk create Work Attribute values for Worklogs that can be used as
Worklog.Work.createAttributeValues
orAll.createWorkAttributeValuesForWorklogs
. - Retrieve Work Attribute values for Worklog that can be used as
Worklog.Work.getAttributeValues
orAll.getWorkAttributeValuesForWorklog
. - Retrieve Work Attribute value for Worklog that can be used as
Worklog.Work.getAttributeValue
orAll.getWorkAttributeValueForWorklog
.
Copyright Adaptavist 2024 (c) All rights reserved