Skip to content

Apacta API

by apacta.com

API keyHTTPSCalendar
Open documentation ↗

Overview

API for a tool to craftsmen used to register working hours, material usage and quality assurance. # Endpoint The endpoint `https://app.apacta.com/api/v1` should be used to communicate with the API. API access is only allowed with SSL encrypted connection (https). # Authentication URL query authentication with an API key is used, so appending `?api_key={api_key}` to the URL where `{api_key}` is found within Apacta settings is used for authentication # Pagination If the endpoint returns a `pagination` object it means the endpoint supports pagination - currently it's only possible to change pages with `?page={page_number}` but implementing custom page sizes are on the road map. # Search/filter Is experimental but implemented in some cases - see the individual endpoints' docs for further explanation. # Ordering Is currently experimental, but on some endpoints it's implemented on URL querys so eg. to order Invoices by `invoice_number` appending `?sort=Invoices.invoice_number&direction=desc` would sort the list descending by the value of `invoice_number`. # Associations Is currently implemented on an experimental basis where you can append eg. `?include=Contacts,Projects` to the `/api/v1/invoices/` endpoint to embed `Contact` and `Project` objects directly. # Project Files Currently project files can be retrieved from two endpoints. `/projects/{project_id}/files` handles files uploaded from wall posts or forms. `/projects/{project_id}/project_files` allows uploading and showing files, not belonging to specific form or wall post. # Errors/Exceptions ## 422 (Validation) Write something about how the `errors` object contains keys with the properties that failes validation like: ``` { "success": false, "data": { "code": 422, "url": "/api/v1/contacts?api_key=5523be3b-30ef-425d-8203-04df7caaa93a", "message": "A validation error occurred", "errorCount": 1, "errors": { "contact_types": [ ## Property name that failed validation "Contacts must have at least one contact type" ## Message with further explanation ] } } } ``` ## Code examples Running examples of how to retrieve the 5 most recent forms registered and embed the details of the User that made the form, and eventual products contained in the form ### Swift ``` ``` ### Java #### OkHttp ``` OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://app.apacta.com/api/v1/forms?extended=true&sort=Forms.created&direction=DESC&include=Products%2CCreatedBy&limit=5") .get() .addHeader("x-auth-token", "{INSERT_YOUR_TOKEN}") .addHeader("accept", "application/json") .build(); Response response = client.newCall(request).execute(); ``` #### Unirest ``` HttpResponse<String> response = Unirest.get("https://app.apacta.com/api/v1/forms?extended=true&sort=Forms.created&direction=DESC&include=Products%2CCreatedBy&limit=5") .header("x-auth-token", "{INSERT_YOUR_TOKEN}") .header("accept", "application/json") .asString(); ``` ### Javascript #### Native ``` var data = null; var xhr = new XMLHttpRequest(); xhr.addEventListener("readystatechange", function () { if (this.readyState === 4) { console.log(this.responseText); } }); xhr.open("GET", "https://app.apacta.com/api/v1/forms?extended=true&sort=Forms.created&direction=DESC&include=Products%2CCreatedBy&limit=5"); xhr.setRequestHeader("x-auth-token", "{INSERT_YOUR_TOKEN}"); xhr.setRequestHeader("accept", "application/json"); xhr.send(data); ``` #### jQuery ``` var settings = { "async": true, "crossDomain": true, "url": "https://app.apacta.com/api/v1/forms?extended=true&sort=Forms.created&direction=DESC&include=Products%2CCreatedBy&limit=5", "method": "GET", "headers": { "x-auth-token": "{INSERT_YOUR_TOKEN}", "accept": "application/json", } } $.ajax(settings).done(function (response) { console.log(response); }); ``` #### NodeJS (Request) ``` var request = require("request"); var options = { method: 'GET', url: 'https://app.apacta.com/api/v1/forms', qs: { extended: 'true', sort: 'Forms.created', direction: 'DESC', include:

Apacta is a calendar API from apacta.com. Requests are authenticated with an API key. It is served over HTTPS. Its OpenAPI description documents 290 endpoints.

At a glance

Authentication
API key
HTTPS
Yes
CORS
Unknown
Category
Calendar
Base URL
https://app.apacta.com/api/v1
Version
0.0.42
Endpoints
290
Spec updated
2023-03-06

Make a first request

Replace the placeholders; the documentation says exactly where credentials go.

cURL
curl -X GET "https://app.apacta.com/api/v1/activities" \
  -H "Accept: application/json" \
  -H "X-API-Key: YOUR_API_KEY"
JavaScript
const response = await fetch("https://app.apacta.com/api/v1/activities", {
  method: "GET",
  headers: {
    "Accept": "application/json",
    "X-API-Key": "YOUR_API_KEY",
  },
});
const data = await response.json();
console.log(data);
Python
import requests

response = requests.request(
    "GET",
    "https://app.apacta.com/api/v1/activities",
    headers={
    "Accept": "application/json",
    "X-API-Key": "YOUR_API_KEY",
    },
    timeout=30,
)
print(response.json())

Endpoints

MethodPathWhat it does
GET/activitiesGet a list of activities
POST/activitiesCreate an activity
DELETE/activities/bulkDeleteBulk delete activities
PUT/activities/{activity_id}Edit an activity
DELETE/activities/{activity_id}Delete an activity
GET/citiesGet list of cities supported in Apacta
GET/cities/{city_id}Get details about one city
GET/clocking_recordsGet a list of clocking records
POST/clocking_recordsCreate clocking record for authenticated user
POST/clocking_records/checkoutCheckout active clocking record for authenticated user
GET/clocking_records/{clocking_record_id}Details of 1 clocking_record
PUT/clocking_records/{clocking_record_id}Edit a clocking record
DELETE/clocking_records/{clocking_record_id}Delete a clocking record
GET/companiesGet a list of companies
GET/companies/subscription_self_serviceURL for subscription selfservice
GET/companies/{company_id}Details of 1 company
GET/companies/{company_id}/companies_integration_feature_settingsList a company integration feature settings
POST/companies/{company_id}/companies_integration_feature_settingsAdd a company integration feature setting
GET/companies/{company_id}/companies_integration_feature_settings/{c_integration_feature_setting_id}View a company integration feature setting
PUT/companies/{company_id}/companies_integration_feature_settings/{c_integration_feature_setting_id}Edit a company integration feature setting
GET/companies/{company_id}/form_templates/Get a list of company form templates
GET/companies/{company_id}/form_templates/{form_template_id}Get a company form template
DELETE/companies/{company_id}/form_templates/{form_template_id}Delete a form template company
GET/companies/{company_id}/integration_feature_settingsGet a list of integration feature settings
GET/companies/{company_id}/integration_feature_settings/{integration_feature_setting_id}Show details of 1 integration feature setting
GET/companies/{company_id}/integration_settingsGet a list of company integration settings
POST/companies/{company_id}/integration_settingsAdd a company integration setting
GET/companies/{company_id}/integration_settings/{companies_integration_setting_id}Get a company integration setting
PUT/companies/{company_id}/integration_settings/{companies_integration_setting_id}Edit a company integration setting
DELETE/companies/{company_id}/integration_settings/{companies_integration_setting_id}Delete a company integration setting
GET/companies/{company_id}/price_margins/{price_margins_id}Get a list of company price margins
POST/companies/{company_id}/price_margins/{price_margins_id}Add a company price margin
DELETE/companies/{company_id}/price_margins/{price_margins_id}Delete a company price margin
GET/companies_vendorsGet a list of companies vendors
POST/companies_vendorsAdd a new companies vendor
DELETE/companies_vendors/bulkDeleteBulk delete companies vendors
GET/companies_vendors/{companies_vendor_id}Get a companies vendor
PUT/companies_vendors/{companies_vendor_id}Edit a companies vendor
DELETE/companies_vendors/{companies_vendor_id}Delete a companies vendor
GET/companies_vendors/{companies_vendor_id}/expense_statisticsGet companies vendor expense statistics
GET/company_settingsGet a list of company settings
GET/contact_custom_field_attributesGet a list of contact custom field attributes
GET/contact_custom_field_attributes/{contact_custom_field_attribute_id}Details of 1 contact custom field attribute
GET/contact_typesGet list of contact types supported in Apacta
GET/contact_types/{contact_type_id}Get details about one contact type
GET/contactsGet a list of contacts
POST/contactsAdd a new contact
DELETE/contacts/bulkDeleteBulk delete contacts
GET/contacts/{contact_id}Details of 1 contact
PUT/contacts/{contact_id}Edit a contact
DELETE/contacts/{contact_id}Delete a contact
GET/contacts/{contact_id}/contact_custom_field_valuesGet a list of contact custom field values
GET/contacts/{contact_id}/contact_personsGet a list of contact people
POST/contacts/{contact_id}/contact_personsAdd a new contact person to a contact
GET/contacts/{contact_id}/contact_persons/{contact_person_id}Get a contact person
PUT/contacts/{contact_id}/contact_persons/{contact_person_id}Edit a contact person
DELETE/contacts/{contact_id}/contact_persons/{contact_person_id}Delete a contact person
GET/countriesGet list of countries supported in Apacta
GET/countries/{country_id}Get details about one country
GET/currenciesGet list of currencies supported in Apacta
GET/currencies/{currency_id}Get details about one currency
GET/driving_typesList the driving types of the company
POST/driving_typesCreate driving type
DELETE/driving_types/bulkDeleteBulk delete driving types
GET/driving_types/{driving_type_id}View driving type
PUT/driving_types/{driving_type_id}Edit driving type
DELETE/driving_types/{driving_type_id}Delete driving type
GET/employee_hoursUsed to retrieve details about the logged in user's hours
GET/eventsShow list of events
POST/eventsCreate event
GET/events/is_user_freeCheck if user is available at given datetime range
GET/events/{event_id}Show event
PUT/events/{event_id}Edit event
DELETE/events/{event_id}Delete event
GET/expense_filesShow list of expense files
POST/expense_filesAdd file to expense
GET/expense_files/{expense_file_id}Show file
PUT/expense_files/{expense_file_id}Edit file
DELETE/expense_files/{expense_file_id}Delete file
GET/expense_linesShow list of expense lines
POST/expense_linesAdd line to expense
GET/expense_lines/{expense_line_id}Show expense line
PUT/expense_lines/{expense_line_id}Edit expense line
DELETE/expense_lines/{expense_line_id}Delete expense line
GET/expensesShow list of expenses
POST/expensesAdd line to expense
DELETE/expenses/bulkDeleteBulk delete expenses
GET/expenses/highest_amountShow highest Expense amount(`total_selling_price`)
DELETE/expenses/sendEmailsBulk delete expenses
GET/expenses/{expense_id}Show expense
PUT/expenses/{expense_id}Edit expense
DELETE/expenses/{expense_id}Delete expense
GET/expenses/{expense_id}/original_filesShow list of all OIOUBL files for the expense
GET/expenses/{expense_id}/original_files/{file_id}Show OIOUBL file
GET/financial_statisticsGet general statistics
GET/financial_statistics/expensesSalesPriceGet expenses sales price
GET/financial_statistics/invoicedAmountGet invoiced amount
GET/financial_statistics/marginGet margin
GET/financial_statistics/materialRentalsCostPriceGet products material rentals cost price
GET/financial_statistics/overviewGet statistics overview

Showing the first 100 of 290 endpoints; the full list is in the documentation.

Questions

Does the Apacta API need an API key?

Yes. The Apacta API uses API key authentication; the documentation explains how to get credentials.

Does the Apacta API support HTTPS?

Yes, the Apacta API is served over HTTPS.

How many endpoints does the Apacta API have?

Its OpenAPI description lists 290 endpoints in version 0.0.42. The first 100 are shown on this page.

What are alternatives to the Apacta API?

Other Calendar APIs include Google Calendar, UK Bank Holidays, Hebrew Calendar, Non-Working Days, Holidays.

Compare alternatives →

Listed from APIs.guru (CC0).