JIRA - Java API or REST API - jira

i am actually analyzing JIRA for my company regarding the functionalities and the different APIs. At the Atlassian Homepage i found two official provided APIs (JAVA API or JIRA REST API).
My further intentions are to program an interface between my stand-alone application and JIRA. The idea is for instance to control the user-management (add, delete, modify user, etc.), project-management (create project, delete, etc.) and other things from this application. Therefore i need a way to interact with JIRA.
Normally i would avoid the REST API and prefer the JAVA API, because other interfaces are even managed by the JAVA API, but i can't find any examples for connecting, adding or modifying workItems in JIRA. I have just found the java api documentation.
 https://developer.atlassian.com/jiradev/jira-apis/java-api-policy-for-jira
Would you suggest only the JAVA REST API or are there any good examples for the JAVA API?
Thanks a lot!

It really depends on what you are trying to achieve. The Java API is mostly used to build Jira plugins, while the REST API is used when you want to integrate external applications.
In your case the normal choice would be the REST API.

Related

Is it possible to develop a Jira plugin with RESTful capabilities for creating issues programatically?

I have developed a Django app which hosts a bunch of forms that collect information about issues and I want to use this data to create Jira issues programmatically.
I have a conceptual idea of how that can be achieved but my problem is that I am a complete software development newbie and also have never used Jira to this date, hence googling stuff is quite hard as I have an almost non-existent vocabulary in these regards and things get quite overwhelming really fast. I want to know if what I have in mind even makes sense before I delve deeper into documentations and figuring out how to implement stuff.
So I'm going to send POST requests from my Django app containing the issue information in JSON format. These POST requests would then be handled by some Java service which in turn uses the JRJC to create issues on Jira. In my head this implies that I have to develop a whole server (or use some kind of framework for that matter) for django to send its requests to and handle them. Would it be possible to write a plugin for JIRA that bypasses the need for such a server so I could just write the service for handling the requests and expose it on some URL based on the domain of my Jira instance?
I apologize if my question appears vague or ill-structured. Any attempts to shine light on my incompetence or pointing fingers in some direction will be greatly appreciated!
I assume that you're talking about Jira Server (hosted by you) rather than Jira Cloud (hosted by Atlassian).
A Jira plugin can expose a REST endpoint, so yes, you can write such a plugin and POST to an endpoint you define, which then uses the Jira Java API to create issues.
See https://developer.atlassian.com/server/framework/atlassian-sdk/rest-plugin-module/ for information on putting REST endpoints in your plugin.

SharePoint REST API vs. Microsoft Graph API; which is recommended approach?

SharePoint Online can be accessed either using SharePoint's own native REST API, or, using Microsoft Graph API. I have briefly explored both of the APIs and see differences in terms of the capability, for example, SharePoint API has function type method calls (GetByTitle()), whereas the Graph API seems to support identity based access, or, 'site path'. My opinion is that SharePoint makes it easy to access resources through the use of 'function' in URL, however, i am not sure if it is RESTful. It would be helpful to have your views on this aspect.
Given the two options (SharePoint & Graph) which is the recommended way forward, considering below criteria's:
Future proof - in terms of enhancement, support from Microsoft
Performance
Functionality coverage - considering current version of Graph API
Also, I couldn't find any Microsoft recommendations on this, if there is one kindly share the link.
Thanks.
I recommend Microsoft Graph API. I know it is a proxy to actual Sharepoint, OneNote, Planner, and etc API, but the way they are improving graph api day by day makes me think it is going to last for a good time. Let's say if you are writing an app that wants to connect with many Microsoft apps endpoints, having one class that handles all the graph api requests is enough instead of looking for specific apps endpoints.
Performance: I have been using Microsoft graph api for most of SharePoint related work and it works good and fast. I use Graph explorer to check out the graph if it actually works before implementing it in the app.
Functionality Coverage: Obviously graph is a proxy of a real api so it won't cover all the processes you need to do in SharePoint. For example, I had to create a Sharepoint Group which I could not find a way via graph api. But I assume as more people vote on those requests, the graph api is bringing those new possible proxy endpoints too. But again if your app is only working with Sharepoint then I believe I would stick to SharePoint API. In favor of Graph API, they also have something called delta query and subscription notification to see changes in the files and documents.
I was under the impression that the Graph API was meant to centralize things, make one endpoint to connect to all Sharepoint services via API. With that in mind, I wonder if we shouldn't be asking which is the better option but rather we should be asking when the so-called native option will be end of lifed. Graph is more future proof in the sense that this is the direction MS is taking. I can't speak to performance personally. As far as functionality, I can't imagine that Graph is functionally worse than previous iterations of SP. It might be functionally different. But it should expand API functionality.

Box.com Service Account access

All box.com's api's read to require OAuth 2.0 using only Authorization Token grant types. I have a back end system that needs to upload a file to a box.com system. However, I do not understand how a back end system is suppose to integrate, when the authorization flow requires user "approval" to get a token.
Anyone ever done this? I am attempting to integrate a java mule app. I attempted to use the components, but they plain do not work at all, they break the entire anypoint studio. Now I am trying to utilize the http component to make the call but I am losing my patience with it.
please help, I am pretty much ready to drop kick this laptop and live in the woods.
Integration with public online API requires a little study, a little coding, and a little testing. I'm not saying it's easy. Take a look here at a Mule component I've recently created that communicates with Toggl, an online timekeeping service.
https://github.com/ciwise/toggl-api-connector
Your question requires a lot of discussion but it's best answered with example. If Box does not provide a Mule component, you can create one yourself.
The HTTP connector is not going to authenticate or perform any operations at Box for you. The HTTP connector provides the HTTP endpoint (URL entry and browser return). To authenticate your application with Box and call API operations, you'll need to do some work.
This is the high-level recipe for my solution with Toggl service (example)
Update your Anypoint Studio with Mule Connector DevKit software
Create an Anypoint Connector project in Anypoint Studio (Eclipse)
My connector provides multiple methods to process and these are used with different instances of the component (connector) in my use flow.
My TogglDataAPIHandler.java makes various checks to see if the application (Mule) is authenticated before making calls to the Application Programming Interface (API). The API is provided by Box so that developers (people writing code) can communicate with the service outside of the web browser. There's no simple answer here. You will have to do some coding. My component/connector is only an example of one way to do this (communicate programmatically with the API).
Build and install the connector(component) locally so that we can see it in the Mule Design Palette.
Drag as many of our new component (Anypoint connector) as needed into our flow canvas.
Test the flow.
I hope that helps. Take a look at my Github repo and Mule Connector. There's a wealth of information in anyone's code. But, integration with an API requires code. You can also search the Exchange for a Box connector. If you find one, then your life is simpler. You still need to read this thoroughly:
https://docs.box.com/docs

Add release condition on module via desire2learn valence web services

I am trying to add modules using Desire2Learn's valence API, which also involves setting up a release condition. I am specifically looking for adding this condition Classlist->Group Enrollment on the module. Could not find an API that would add a release condition on a module.
http://docs.valence.desire2learn.com/res/content.html
Has anyone come across with this? What API shall be used for adding a release condition via valence web services?
Unfortunately, the Valence Learning Framework APIs do not expose the ability to view or edit release conditions. So while you can create the content modules via Valence, you will have to use the Web UI to manage release conditions.
This sounds like a good candidate for a feature request. Clients of D2L can search and post feature requests to the Product Ideas Exchange. You're welcome to share the link to the PIE post via the forums to promote it to fellow developers in the Developer Community of Practice: https://community.brightspace.com/devcop.

Alternate TFS Web Interface

I know TFS has a web server that gets installed with it, and that's great. I know it integrates very tightly, and very well with Sharepoint, and that's also great.
What I'd like to know though, is since the WSDL's for TFS are public, essentially making the API to send and receive data from it public as well; are there any alternate, non-Microsoft interfaces to TFS that provide most or all of the functionality, with consumer-driven enhancements, such as charting, or reporting solutions not found out of the box?
I've searched the almighty Google and Bing, and they are proving very difficult to find answers from.
You can create your own solution using SharePoint Enterprise edition and a combination of Excel Services reports and SQL Server Reporting Services reports; A SharePoint solution is the closest you'll find to something.
You can use the TFS SDK and object model to create your own application, but most people don't go very deep because Microsoft's Web Access tool is a capable client tool for most teams. There were also major improvements just released in the new TFS 2012. In fact Web Access started out as a 3rd party tool and there are some ways you can extend it.
There is one app I know of off the top of my head that has a web interface to TFS that is very simple; it can be found at http://techdayskanban.codeplex.com
There is also an example of extending the TFS Web Access at http://tfstimesheet.codeplex.com
Codeplex is a good place to check around because it is open source.
A commercial example of a product that extends Web Access can be found at http://urbanturtle.com though It seems you are looking for something more stand-alone.

Resources