CainOpenApi

Camunda-BPM 7.13.0 is shipped with a REST-API considering the OpenAPI specification 3.0.2. so the specs can be interpreted during compile time.

Installation

If available in Hex, the package can be installed by adding cain_oa to your list of dependencies in mix.exs:

def deps do
  [
    {:cain_oa, "~> 0.1.0"}
  ]
end

Using

Download the current open api spec following the instructions on the official Camunda docs web-page (https://docs.camunda.org/manual/latest/reference/rest/openapi/).

Define a module which is using CainOpenApi.

defmodule MyApp.Endpoint do
  use CainOpenApi
end

After compilation the REST-Endpoints are accessible like Endpoint.Deployment and returning a four elmented tuple including all relevant information method, path, body and query for your HTTP-Client.

Endpoint.Deployment.get_deployments()
#  {:get, "/deployment", %{}, []}

An Endpoint.Module is equiped with all possible functions and parameters.

iex(1)> Endpoint.Deployment.get_deployment
get_deployment/1                  get_deployment_resource/2         
get_deployment_resource_data/2    get_deployment_resources/1        
get_deployments/0                 get_deployments/1                 
get_deployments_count/0           get_deployments_count/1   

Just call IEx.Helpers.h for the offical REST-docs of a function.

Additionaly, every compiled module is equiped with an .__queries__/1 or .__request_body__/1 function to ask for usable params by simply invoking them using a function name as an atom.

iex(1)> Endpoint.Deployment.__queries__(:get_deployments)
[
  id: :string,
  name: :string,
  name_like: :string,
  source: :string,
  without_source: :boolean,
  tenant_id_in: :string,
  without_tenant_id: :boolean,
  include_deployments_without_tenant_id: :boolean,
  after: :string,
  before: :string,
  sort_by: :string,
  sort_order: :string,
  first_result: :integer,
  max_results: :integer
]