Skip to content

Advanced Concepts

This page provides an overview of some of the more advanced features available in App Maker. These features are designed for more sophisticated use-cases and often require a deeper technical understanding in order to use them effectively.

The capabilities that we detail here are not necessary for 95% of the Apps you'll build, but may be useful for more complex or specialized use-cases.

Programmatic App Updates

You'll have noticed that the way you create and update Apps using App Maker is by using JSON objects to define different entities like UI Components, Webhook Transforms, and Data Objects/Lists.

This is a very deliberate design decision, as it makes it possible for your App's content to not just be updated manually by a human, but also by other automations or systems via API. All of the core entities in App Maker can be updated via an API that App Maker makes available on your Jira site.

  • To access the URL for these API's, navigate to the App Maker page in your Jira Settings section, and click the "API" tab.
  • You'll see a list of all the different API endpoints available to you, along with a brief description of what they do.
  • Updating entities in App Maker via the API is simple, you just make a POST request to the relevant endpoint with the same JSON object you would use when updating them via the UI as the body of the POST request.
  • You can also encode data directly inside the URL of the request by adding extra query parameters and then aiming the POST request at a Webhook Transform endpoint that has been set up to accept data in this way.

API Update URLS

URL Query Parameter Properties

  • When making API calls to App Maker API's to do things like create or update entities, you are able to pass top-level fields as query parameters in the URL of the request instead of including them as fields in the body of the request.
  • This allows you to hard-code information useful for routing or scoping certain requests directly to the entity you want to update, without having to modify the JSON object that is being sent in the body of the request.
  • This is particularly useful when working with 3rd party tools where you don't control the body of the request (like when sending webhooks), as you are able to hard-code the information you want to send in the URL itself when configuring where you want the webhook to be sent.
  • Any fields present in the URL query parameters will be added to the top-level of the request object and override any fields with the same name already present in the object.
  • Be careful to ensure that you are not accidentally overwriting important data when using this feature.

URL Query Parameter Example

  • Take a POST request made to the following Data Object Update API:
  • https://hello.atlassian-dev.net/x1/12345?path=data-object-update&action=set&resourceType=site&title=system_status
  • It would be equivalent to making a POST request with the following body:
  • Any fields present in the body of the request will also be included, with the query parameters taking precedence over the body fields.
json
{
  "action": "set",
  "resourceType": "site",
  "title": "system_status"
}