Fortytools Web API for Skyline and Skippr API Reference

API for https://www.skyline-web.de and https://www.skippr.com (use skippr.fortytools.com instead of skyline.fortytools.com)

API Endpoint
https://skyline.fortytools.com/api/v2
Terms of Service: https://skyline-web.de/nutzungsbedingungen
Contact: support@fortytools.com
Request Content-Types: application/json
Response Content-Types: application/json
Schemes: https
Version: 0.0.2

Authentication

app

key of an app

type
apiKey
in
query
name
app

user

api_key of a client_user

type
apiKey
in
query
name
user

validuntil

unix time when the generated signature will expire

type
apiKey
in
query
name
validuntil

signature

the signature is used to verify both the client_user and the app that are consuming the api.

the signature is computed as follows:

sha2($client_user_api_token + ':' + $app_token + ':' + $validuntil)

type
apiKey
in
query
name
signature

Account

Accounts as in Accounting, 'Fibu-Konto'

GET /accounts

Gets Account objects

200 OK

Sends list of accounts

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "number": "integer",
    "name": "string",
    "vat": "integer"
  }
]

POST /accounts

Create a new Account

The account JSON you want to post

Request Example
{
  "id": "integer",
  "number": "integer",
  "name": "string",
  "vat": "integer"
}
201 Created

Account was created successfully

422 Unprocessable Entity

Account creation failed

GET /accounts/{account_id}

Display data of an Account

account_id: integer
in path

ID of the account

200 OK

Sends the account

PATCH /accounts/{account_id}

Update an Account

The account JSON you want to post

account_id: integer
in path

ID of the account

Request Example
{
  "id": "integer",
  "number": "integer",
  "name": "string",
  "vat": "integer"
}
204 No Content

Account was updated successfully

422 Unprocessable Entity

Account update failed

DELETE /accounts/{account_id}

Delete an Account

account_id: integer
in path

ID of the account

200 OK

Account was destroyed successfully

405 Method Not Allowed

Account could not be deleted, for example because it was still associated with a ServiceType

Attachment

Dokument

POST /attachments

Create a new Attachment

The Attachment JSON you want to post. Must contain an upload attribute containing the key of a previous Upload

Request Example
{
  "id": "integer",
  "filename": "string",
  "attachable_type": "string",
  "attachable_id": "integer",
  "attachment_type_id": "integer",
  "upload": "string"
}
201 Created

Attachment was created successfully

422 Unprocessable Entity

Attachment creation failed

GET /attachments/{attachment_id}

Display data of an Attachment

attachment_id: integer
in path

ID of the Attachment

200 OK

Sends the Attachment

AttachmentType

Dokumentart

GET /attachment_types

Gets AttachmentType objects

Sends list of AttachmentTypes

Response Example (200 OK)
[
  {
    "id": "integer",
    "name": "string"
  }
]

POST /attachment_types

Create a new AttachmentType

The AttachmentType JSON you want to post

Request Example
{
  "id": "integer",
  "name": "string"
}
201 Created

AttachmentType was created successfully

422 Unprocessable Entity

AttachmentType creation failed

GET /attachment_types/{attachment_type_id}

Display data of an AttachmentType

attachment_type_id: integer
in path

ID of the AttachmentType

200 OK

Sends the AttachmentType

Customer

Kunde

GET /customers

Gets Customer objects

200 OK

Sends list of customers

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "number": "integer",
    "shortname": "string",
    "name": "string",
    "street": "string",
    "zip": "string",
    "city": "string",
    "shortinfo": "string",
    "tag_list": [
      "string"
    ],
    "customer_state_id": "integer",
    "project_id": "integer"
  }
]

POST /customers

Create a new Customer

The customer JSON you want to post

Request Example
{
  "id": "integer",
  "number": "integer",
  "shortname": "string",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "shortinfo": "string",
  "tag_list": [
    "string"
  ],
  "customer_state_id": "integer",
  "project_id": "integer"
}
201 Created

Customer was created successfully

422 Unprocessable Entity

Customer creation failed

GET /customers/{customer_id}

Display data of an Customer

customer_id: integer
in path

ID of the customer

200 OK

Sends the customer

PATCH /customers/{customer_id}

Update a Customer

The customer JSON you want to post

customer_id: integer
in path

ID of the customer

Request Example
{
  "id": "integer",
  "number": "integer",
  "shortname": "string",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "shortinfo": "string",
  "tag_list": [
    "string"
  ],
  "customer_state_id": "integer",
  "project_id": "integer"
}
204 No Content

Customer was updated successfully

422 Unprocessable Entity

Customer update failed

DELETE /customers/{customer_id}

Delete a Customer

customer_id: integer
in path

ID of the customer

200 OK

Customer was destroyed successfully

405 Method Not Allowed

Customer could not be deleted

CustomerState

Kundenstatus

GET /customer_states

Gets CustomerState objects

200 OK

Sends list of customer_states

Response Example (200 OK)
[
  {
    "id": "integer",
    "name": "string"
  }
]

POST /customer_states

Create a new CustomerState

The customer_state JSON you want to post

Request Example
{
  "id": "integer",
  "name": "string"
}
201 Created

CustomerState was created successfully

422 Unprocessable Entity

CustomerState creation failed

GET /customer_states/{customer_state_id}

Display data of an CustomerState

customer_state_id: integer
in path

ID of the customer_state

200 OK

Sends the customer_state

PATCH /customer_states/{customer_state_id}

Update a CustomerState

The customer_state JSON you want to post

customer_state_id: integer
in path

ID of the customer_state

Request Example
{
  "id": "integer",
  "name": "string"
}
204 No Content

CustomerState was updated successfully

422 Unprocessable Entity

CustomerState update failed

DELETE /customer_states/{customer_state_id}

Delete a CustomerState

customer_state_id: integer
in path

ID of the customer_state

200 OK

CustomerState was destroyed successfully

405 Method Not Allowed

CustomerState could not be deleted

Event

Notiz

GET /events

Gets Event objects

200 OK

Sends list of Events

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "title": "string",
    "body": "integer",
    "date": "string (date)",
    "eventable_type": "string",
    "eventable_id": "integer",
    "client_user_id": "integer",
    "employee_id": "integer"
  }
]

POST /events

Create a new Event

The Event JSON you want to post

Request Example
{
  "id": "integer",
  "title": "string",
  "body": "integer",
  "date": "string (date)",
  "eventable_type": "string",
  "eventable_id": "integer",
  "client_user_id": "integer",
  "employee_id": "integer"
}
201 Created

Event was created successfully

422 Unprocessable Entity

Event creation failed

GET /events/{event_id}

Display data of an Event

event_id: integer
in path

ID of the Event

200 OK

Sends the Event

PATCH /events/{event_id}

Update a Event

The Event JSON you want to post

event_id: integer
in path

ID of the Event

Request Example
{
  "id": "integer",
  "title": "string",
  "body": "integer",
  "date": "string (date)",
  "eventable_type": "string",
  "eventable_id": "integer",
  "client_user_id": "integer",
  "employee_id": "integer"
}
204 No Content

Event was updated successfully

422 Unprocessable Entity

Event update failed

DELETE /events/{event_id}

Delete a Event

event_id: integer
in path

ID of the Event

200 OK

Event was deleted successfully

405 Method Not Allowed

Event could not be deleted

Facility

Objekt

GET /customers/{customer_id}/facilities

Gets Facility objects for a customer

customer_id: integer
in path

ID of the customer

200 OK

Sends list of a customer's facilities

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "name": "string",
    "street": "string",
    "zip": "string",
    "city": "string",
    "bunchofkeys": "string",
    "customer_id": "integer",
    "project_id": "integer"
  }
]

POST /customers/{customer_id}/facilities

Create a new Facility

The facility JSON you want to post

customer_id: integer
in path

ID of the customer

Request Example
{
  "id": "integer",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "bunchofkeys": "string",
  "customer_id": "integer",
  "project_id": "integer"
}
201 Created

Facility was created successfully

422 Unprocessable Entity

Facility creation failed

GET /customers/{customer_id}/facilities/{facility_id}

Display data of an Facility

customer_id: integer
in path

ID of the customer

facility_id: integer
in path

ID of the facility

200 OK

Sends the facility

PATCH /customers/{customer_id}/facilities/{facility_id}

Update a Facility

The facility JSON you want to post

customer_id: integer
in path

ID of the customer

facility_id: integer
in path

ID of the facility

Request Example
{
  "id": "integer",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "bunchofkeys": "string",
  "customer_id": "integer",
  "project_id": "integer"
}
204 No Content

Facility was updated successfully

422 Unprocessable Entity

Facility update failed

DELETE /customers/{customer_id}/facilities/{facility_id}

Delete a Facility

customer_id: integer
in path

ID of the customer

facility_id: integer
in path

ID of the facility

200 OK

Facility was destroyed successfully

405 Method Not Allowed

Facility could not be deleted

Invoice

Rechnung

GET /invoices

Gets Invoice objects

200 OK

Sends list of Invoice

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "number": "integer",
    "date": "integer (date)",
    "state": "integer",
    "customer_id": "integer",
    "name": "string",
    "street": "string",
    "zip": "string",
    "city": "string",
    "city_additional": "string",
    "text_before_line_items": "string",
    "line_items": {
      "id": "integer",
      "number": "integer",
      "title": "string",
      "details": "string",
      "service_period_start": "string (date)",
      "service_period_end": "string (date)",
      "incomplete": "boolean",
      "price": "number",
      "vat": "number",
      "quantity": "number",
      "unit_id": "integer",
      "service_type_id": "integer",
      "item_id": "integer"
    },
    "text_after_line_items": "string",
    "paid": "boolean",
    "notepaper_id": "integer"
  }
]

POST /invoices

Create a new Invoice

The Invoice JSON you want to post

Request Example
{
  "id": "integer",
  "date": "integer (date)",
  "customer_id": "integer",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "city_additional": "string",
  "text_before_line_items": "string",
  "line_items": {
    "id": "integer",
    "number": "integer",
    "title": "string",
    "details": "string",
    "service_period_start": "string (date)",
    "service_period_end": "string (date)",
    "incomplete": "boolean",
    "price": "number",
    "quantity": "number",
    "unit_id": "integer",
    "service_type_id": "integer",
    "item_id": "integer"
  },
  "text_after_line_items": "string",
  "paid": "boolean",
  "notepaper_id": "integer"
}
201 Created

Invoice was created successfully

422 Unprocessable Entity

Invoice creation failed

GET /invoices/{invoice_id}

Display data of an Invoice

invoice_id: integer
in path

ID of the Invoice

200 OK

Sends the Invoice

PATCH /invoices/{invoice_id}

Update an Invoice

The Invoice JSON you want to post

invoice_id: integer
in path

ID of the Invoice

Request Example
{
  "id": "integer",
  "date": "integer (date)",
  "customer_id": "integer",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "city_additional": "string",
  "text_before_line_items": "string",
  "line_items": {
    "id": "integer",
    "number": "integer",
    "title": "string",
    "details": "string",
    "service_period_start": "string (date)",
    "service_period_end": "string (date)",
    "incomplete": "boolean",
    "price": "number",
    "quantity": "number",
    "unit_id": "integer",
    "service_type_id": "integer",
    "item_id": "integer"
  },
  "text_after_line_items": "string",
  "paid": "boolean",
  "notepaper_id": "integer"
}
204 No Content

Invoice was updated successfully

422 Unprocessable Entity

Invoice update failed

DELETE /invoices/{invoice_id}

Delete a Invoice

invoice_id: integer
in path

ID of the Invoice

200 OK

Invoice was deleted successfully

405 Method Not Allowed

Invoice could not be deleted

POST /invoices/{invoice_id}/cancel

Canel an Invoice (meaning that an invoice correction is generated which will annulate the Invoice)

invoice_id: integer
in path

ID of the Invoice you want to cancel

200 OK

Invoice was canceled

PUT /invoices/{invoice_id}/print

Print an Invoice (meaning that it leaves the draft state, a number is automatically assigned and the final invoice pdf is generated)

invoice_id: integer
in path

ID of the Invoice you want to print

200 OK

Invoice was printed

422 Unprocessable Entity

Invoice could not be printed

ItemOrder

Lieferschein

GET /item_orders

Gets ItemOrder objects

200 OK

Sends list of ItemOrders

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "number": "integer",
    "date": "integer (date)",
    "item_orderable_id": "integer",
    "item_orderable_type": "string",
    "name": "string",
    "street": "string",
    "zip": "string",
    "city": "string",
    "city_additional": "string",
    "text_before_line_items": "string",
    "line_items": {
      "id": "integer",
      "number": "integer",
      "title": "string",
      "details": "string",
      "quantity": "number",
      "item_id": "integer"
    },
    "text_after_line_items": "string",
    "delivered": "boolean",
    "notepaper_id": "integer"
  }
]

POST /item_orders

Create a new ItemOrder

The ItemOrder JSON you want to post

Request Example
{
  "id": "integer",
  "date": "integer (date)",
  "item_orderable_id": "integer",
  "item_orderable_type": "string",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "city_additional": "string",
  "text_before_line_items": "string",
  "line_items": {
    "id": "integer",
    "number": "integer",
    "title": "string",
    "details": "string",
    "quantity": "number",
    "item_id": "integer"
  },
  "text_after_line_items": "string",
  "notepaper_id": "integer"
}
201 Created

ItemOrder was created successfully

422 Unprocessable Entity

ItemOrder creation failed

GET /item_orders/{item_order_id}

Display data of an ItemOrder

item_order_id: integer
in path

ID of the ItemOrder

200 OK

Sends the ItemOrder

PATCH /item_orders/{item_order_id}

Update an ItemOrder

The ItemOrder JSON you want to post

item_order_id: integer
in path

ID of the ItemOrder

Request Example
{
  "id": "integer",
  "date": "integer (date)",
  "item_orderable_id": "integer",
  "item_orderable_type": "string",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "city_additional": "string",
  "text_before_line_items": "string",
  "line_items": {
    "id": "integer",
    "number": "integer",
    "title": "string",
    "details": "string",
    "quantity": "number",
    "item_id": "integer"
  },
  "text_after_line_items": "string",
  "notepaper_id": "integer"
}
204 No Content

ItemOrder was updated successfully

422 Unprocessable Entity

ItemOrder update failed

DELETE /item_orders/{item_order_id}

Delete a ItemOrder

item_order_id: integer
in path

ID of the ItemOrder

200 OK

ItemOrder was deleted successfully

405 Method Not Allowed

ItemOrder could not be deleted

PUT /item_orders/{item_order_id}/print

Print an ItemOrder (meaning that a number is automatically assigned and the final invoice pdf is generated)

item_order_id: integer
in path

ID of the ItemOrder you want to print

200 OK

ItemOrder was printed

422 Unprocessable Entity

ItemOrder could not be printed

Item

Artikel

GET /items

Gets Item objects

200 OK

Sends list of Item

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "number": "integer",
    "name": "string",
    "description": "string",
    "sales_price": "number",
    "item_category_id": "integer",
    "note": "string",
    "active": "boolean",
    "stock": "integer",
    "stock_warn_level": "integer",
    "external_image_url": "string"
  }
]

POST /items

Create a new Item

The Item JSON you want to post

Request Example
{
  "id": "integer",
  "number": "integer",
  "name": "string",
  "description": "string",
  "sales_price": "number",
  "item_category_id": "integer",
  "note": "string",
  "active": "boolean",
  "stock": "integer",
  "stock_warn_level": "integer",
  "external_image_url": "string"
}
201 Created

Item was created successfully

422 Unprocessable Entity

Item creation failed

GET /items/{item_id}

Display data of an Item

item_id: integer
in path

ID of the Item

200 OK

Sends the Item

PATCH /items/{item_id}

Update a Item

The Item JSON you want to post

item_id: integer
in path

ID of the Item

Request Example
{
  "id": "integer",
  "number": "integer",
  "name": "string",
  "description": "string",
  "sales_price": "number",
  "item_category_id": "integer",
  "note": "string",
  "active": "boolean",
  "stock": "integer",
  "stock_warn_level": "integer",
  "external_image_url": "string"
}
204 No Content

Item was updated successfully

422 Unprocessable Entity

Item update failed

DELETE /items/{item_id}

Delete a Item

item_id: integer
in path

ID of the Item

200 OK

Item was deleted successfully

405 Method Not Allowed

Item could not be deleted

ItemCategory

Artikelkategorie

GET /item_categories

Gets ItemCategory objects

200 OK

Sends list of ItemCategory

Response Example (200 OK)
[
  {
    "id": "integer",
    "name": "string",
    "billed_with_service_type_id": "integer"
  }
]

POST /item_categories

Create a new ItemCategory

The ItemCategory JSON you want to post

Request Example
{
  "id": "integer",
  "name": "string",
  "billed_with_service_type_id": "integer"
}
201 Created

ItemCategory was created successfully

422 Unprocessable Entity

ItemCategory creation failed

GET /item_categories/{item_category_id}

Display data of an ItemCategory

item_category_id: integer
in path

ID of the ItemCategory

200 OK

Sends the ItemCategory

PATCH /item_categories/{item_category_id}

Update a ItemCategory

The ItemCategory JSON you want to post

item_category_id: integer
in path

ID of the ItemCategory

Request Example
{
  "id": "integer",
  "name": "string",
  "billed_with_service_type_id": "integer"
}
204 No Content

ItemCategory was updated successfully

422 Unprocessable Entity

ItemCategory update failed

DELETE /item_categories/{item_category_id}

Delete a ItemCategory

item_category_id: integer
in path

ID of the ItemCategory

200 OK

ItemCategory was destroyed successfully

405 Method Not Allowed

ItemCategory could not be deleted

Offer

Quote, 'Angebot'

GET /offers

Gets Offer objects

200 OK

Sends list of Offer

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "number": "integer",
    "date": "integer (date)",
    "state": "integer",
    "offerable_type": "string",
    "offerable_id": "integer",
    "name": "string",
    "street": "string",
    "zip": "string",
    "city": "string",
    "city_additional": "string",
    "text_before_line_items": "string",
    "line_items": {
      "id": "integer",
      "number": "integer",
      "title": "string",
      "details": "string",
      "service_period_start": "string (date)",
      "service_period_end": "string (date)",
      "incomplete": "boolean",
      "price": "number",
      "vat": "number",
      "quantity": "number",
      "unit_id": "integer",
      "service_type_id": "integer",
      "item_id": "integer"
    },
    "text_after_line_items": "string",
    "parent_number": "boolean",
    "notepaper_id": "integer"
  }
]

POST /offers

Create a new Offer

The ItemOrder JSON you want to post

Request Example
{
  "id": "integer",
  "date": "integer (date)",
  "state": "integer",
  "offerable_type": "string",
  "offerable_id": "integer",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "city_additional": "string",
  "text_before_line_items": "string",
  "line_items": {
    "id": "integer",
    "number": "integer",
    "title": "string",
    "details": "string",
    "service_period_start": "string (date)",
    "service_period_end": "string (date)",
    "incomplete": "boolean",
    "price": "number",
    "quantity": "number",
    "unit_id": "integer",
    "service_type_id": "integer",
    "item_id": "integer"
  },
  "text_after_line_items": "string",
  "parent_number": "boolean",
  "notepaper_id": "integer"
}
201 Created

Offer was created successfully

422 Unprocessable Entity

Offer creation failed

GET /offers/{offer_id}

Display data of an Offer

offer_id: integer
in path

ID of the Offer

200 OK

Sends the Offer

PATCH /offers/{offer_id}

Update an Offer

The Offer JSON you want to post

offer_id: integer
in path

ID of the Offer

Request Example
{
  "id": "integer",
  "date": "integer (date)",
  "state": "integer",
  "offerable_type": "string",
  "offerable_id": "integer",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "city_additional": "string",
  "text_before_line_items": "string",
  "line_items": {
    "id": "integer",
    "number": "integer",
    "title": "string",
    "details": "string",
    "service_period_start": "string (date)",
    "service_period_end": "string (date)",
    "incomplete": "boolean",
    "price": "number",
    "quantity": "number",
    "unit_id": "integer",
    "service_type_id": "integer",
    "item_id": "integer"
  },
  "text_after_line_items": "string",
  "parent_number": "boolean",
  "notepaper_id": "integer"
}
204 No Content

Offer was updated successfully

422 Unprocessable Entity

Offer update failed

DELETE /offers/{offer_id}

Delete a Offer

offer_id: integer
in path

ID of the Offer

200 OK

Offer was deleted successfully

405 Method Not Allowed

Offer could not be deleted

PUT /offers/{offer_id}/print

Print an Offer (meaning that a number is automatically assigned and the final invoice pdf is generated)

offer_id: integer
in path

ID of the Offer you want to print

200 OK

Offer was printed

422 Unprocessable Entity

Offer could not be printed

ServiceType

Leistungsart

GET /service_types

Gets ServiceType objects

200 OK

Sends list of ServiceTypes

Response Example (200 OK)
[
  {
    "id": "integer",
    "name": "string",
    "account_id": "integer",
    "account_tax_rate": "integer",
    "tax_privileged_percentage": "integer"
  }
]

POST /service_types

Create a new ServiceType

The ServiceType JSON you want to post

Request Example
{
  "id": "integer",
  "name": "string",
  "account_id": "integer",
  "tax_privileged_percentage": "integer"
}
201 Created

ServiceType was created successfully

422 Unprocessable Entity

ServiceType creation failed

GET /service_types/{service_type_id}

Display data of a ServiceType

service_type_id: integer
in path

ID of the ServiceType

200 OK

Sends the ServiceType

PATCH /service_types/{service_type_id}

Update an ServiceType

The ServiceType JSON you want to patch

service_type_id: integer
in path

ID of the ServiceType

Request Example
{
  "id": "integer",
  "name": "string",
  "account_id": "integer",
  "tax_privileged_percentage": "integer"
}
204 No Content

ServiceType was deleted successfully

422 Unprocessable Entity

ServiceType update failed

DELETE /service_types/{service_type_id}

Delete a ServiceType

service_type_id: integer
in path

ID of the ServicType

200 OK

ServiceType was deleted successfully

405 Method Not Allowed

ServiceType could not be deleted

StaffMember

Mitarbeiter

GET /staff_members

Gets StaffMember objects

200 OK

Sends list of StaffMembers

Response Example (200 OK)
[
  {
    "id": "integer",
    "number": "integer",
    "first_name": "string",
    "last_name": "string",
    "email": "string",
    "phone": "string",
    "mobile": "string"
  }
]

GET /staff_members/{staff_member_id}

Display data of a StaffMember

staff_member_id: integer
in path

ID of the staff member

200 OK

Sends the staff member

Supplier

Lieferant

GET /suppliers

Gets Supplier objects

200 OK

Sends list of suppliers

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "number": "integer",
    "shortname": "string",
    "name": "string",
    "street": "string",
    "zip": "string",
    "city": "string",
    "shortinfo": "string",
    "webpage": "string",
    "phone": "string",
    "fax": "string",
    "email": "string"
  }
]

POST /suppliers

Create a new Supplier

The supplier JSON you want to post

Request Example
{
  "id": "integer",
  "number": "integer",
  "shortname": "string",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "shortinfo": "string",
  "webpage": "string",
  "phone": "string",
  "fax": "string",
  "email": "string"
}
201 Created

Supplier was created successfully

422 Unprocessable Entity

Supplier creation failed

GET /suppliers/{supplier_id}

Display data of an Supplier

supplier_id: integer
in path

ID of the supplier

200 OK

Sends the supplier

PATCH /suppliers/{supplier_id}

Update a Supplier

The supplier JSON you want to post

supplier_id: integer
in path

ID of the supplier

Request Example
{
  "id": "integer",
  "number": "integer",
  "shortname": "string",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "shortinfo": "string",
  "webpage": "string",
  "phone": "string",
  "fax": "string",
  "email": "string"
}
204 No Content

Supplier was updated successfully

422 Unprocessable Entity

Supplier update failed

DELETE /suppliers/{supplier_id}

Delete a Supplier

supplier_id: integer
in path

ID of the supplier

200 OK

Supplier was deleted successfully

405 Method Not Allowed

Supplier could not be deleted

Task

Aufgabe

GET /tasks

Gets Task objects

200 OK

Sends list of Task

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "text": "string",
    "due_at": "string (date)",
    "completed_at": "string (date)",
    "taskable_type": "string",
    "taskable_id": "integer",
    "client_user_id": "integer",
    "employee_id": "integer",
    "event_id": "integer"
  }
]

POST /tasks

Create a new Task

The Task JSON you want to post

Request Example
{
  "id": "integer",
  "text": "string",
  "due_at": "string (date)",
  "completed_at": "string (date)",
  "taskable_type": "string",
  "taskable_id": "integer",
  "client_user_id": "integer",
  "employee_id": "integer",
  "event_id": "integer"
}
201 Created

Task was created successfully

422 Unprocessable Entity

Task creation failed

GET /tasks/{task_id}

Display data of an Task

task_id: integer
in path

ID of the Task

200 OK

Sends the Task

PATCH /tasks/{task_id}

Update a Task

The Task JSON you want to post

task_id: integer
in path

ID of the Task

Request Example
{
  "id": "integer",
  "text": "string",
  "due_at": "string (date)",
  "completed_at": "string (date)",
  "taskable_type": "string",
  "taskable_id": "integer",
  "client_user_id": "integer",
  "employee_id": "integer",
  "event_id": "integer"
}
204 No Content

Task was updated successfully

422 Unprocessable Entity

Task update failed

DELETE /tasks/{task_id}

Delete a Task

task_id: integer
in path

ID of the Task

200 OK

Task was deleted successfully

405 Method Not Allowed

Task could not be deleted

Unit

Einheit

GET /units

Gets Unit objects

200 OK

Sends list of Units

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "name": "string",
    "is_flatrate": "boolean"
  }
]

POST /units

Create a new Unit

The Unit JSON you want to post

Request Example
{
  "id": "integer",
  "name": "string",
  "is_flatrate": "boolean"
}
201 Created

Unit was created successfully

422 Unprocessable Entity

Unit creation failed

GET /units/{unit_id}

Display data of an Unit

unit_id: integer
in path

ID of the Unit

200 OK

Sends the Unit

PATCH /units/{unit_id}

Update an Unit

The unit JSON you want to patch

unit_id: integer
in path

ID of the unit

Request Example
{
  "id": "integer",
  "name": "string",
  "is_flatrate": "boolean"
}
204 No Content

Unit was updated successfully

422 Unprocessable Entity

Unit update failed

DELETE /units/{unit_id}

Delete a Unit

unit_id: integer
in path

ID of the unit

200 OK

Unit was deleted successfully

405 Method Not Allowed

Unit could not be deleted

WebHook

WebHook methods

GET /web_hooks

Gets WebHook objects

200 OK

Sends list of web_hooks

type
Response Example (200 OK)
[
  {
    "id": "integer",
    "model": "string",
    "operation": "string",
    "uri": "string"
  }
]

POST /web_hooks

Create a new WebHook

The web_hook JSON you want to post

Request Example
{
  "id": "integer",
  "model": "string",
  "operation": "string",
  "uri": "string"
}
201 Created

WebHook was created successfully

422 Unprocessable Entity

WebHook creation failed

GET /web_hooks/{web_hook_id}

Display data of an WebHook

web_hook_id: integer
in path

ID of the web_hook

200 OK

Sends the web_hook

PATCH /web_hooks/{web_hook_id}

Update a WebHook

The web_hook JSON you want to post

web_hook_id: integer
in path

ID of the web_hook

Request Example
{
  "id": "integer",
  "model": "string",
  "operation": "string",
  "uri": "string"
}
204 No Content

WebHook was updated successfully

422 Unprocessable Entity

WebHook update failed

DELETE /web_hooks/{web_hook_id}

Delete a WebHook

web_hook_id: integer
in path

ID of the web_hook

200 OK

WebHook was destroyed successfully

405 Method Not Allowed

WebHook could not be deleted

Upload

POST /uploads

Send binary data for Attachments

201 Created

Saves the upload in the server storage. Returns the upload key to be referenced when creating an Attachment

422 Unprocessable Entity

Upload failed, probably because no upload file was supplied correctly

Schema Definitions

Account: object

id: integer
number: integer
name: string
vat: integer
Example
{
  "id": "integer",
  "number": "integer",
  "name": "string",
  "vat": "integer"
}

Attachment: object

id: integer
filename: string
attachable_type: string
attachable_id: integer
attachment_type_id: integer
upload: string
Example
{
  "id": "integer",
  "filename": "string",
  "attachable_type": "string",
  "attachable_id": "integer",
  "attachment_type_id": "integer",
  "upload": "string"
}

AttachmentType: object

id: integer
name: string
Example
{
  "id": "integer",
  "name": "string"
}

Customer: object

id: integer
number: integer
shortname: string
name: string
street: string
zip: string
city: string
shortinfo: string
tag_list: string[]
string
customer_state_id: integer
project_id: integer
Example
{
  "id": "integer",
  "number": "integer",
  "shortname": "string",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "shortinfo": "string",
  "tag_list": [
    "string"
  ],
  "customer_state_id": "integer",
  "project_id": "integer"
}

CustomerState: object

id: integer
name: string
Example
{
  "id": "integer",
  "name": "string"
}

Event: object

id: integer
title: string
body: integer
date: string (date)
eventable_type: string
eventable_id: integer
client_user_id: integer
employee_id: integer
Example
{
  "id": "integer",
  "title": "string",
  "body": "integer",
  "date": "string (date)",
  "eventable_type": "string",
  "eventable_id": "integer",
  "client_user_id": "integer",
  "employee_id": "integer"
}

Facility: object

id: integer
name: string
street: string
zip: string
city: string
bunchofkeys: string
customer_id: integer
project_id: integer
Example
{
  "id": "integer",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "bunchofkeys": "string",
  "customer_id": "integer",
  "project_id": "integer"
}

Invoice: object

id: integer
number: integer
date: integer (date)
state: integer

state of the invoice where 4 is a draft, 1 is a printed invoice and 0 is an accounted invoice

customer_id: integer
name: string
street: string
zip: string
city: string
city_additional: string
text_before_line_items: string
line_items: InvoiceLineItem
text_after_line_items: string
paid: boolean
notepaper_id: integer

Id of the notepaper to be used as background

Example
{
  "id": "integer",
  "number": "integer",
  "date": "integer (date)",
  "state": "integer",
  "customer_id": "integer",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "city_additional": "string",
  "text_before_line_items": "string",
  "line_items": {
    "id": "integer",
    "number": "integer",
    "title": "string",
    "details": "string",
    "service_period_start": "string (date)",
    "service_period_end": "string (date)",
    "incomplete": "boolean",
    "price": "number",
    "vat": "number",
    "quantity": "number",
    "unit_id": "integer",
    "service_type_id": "integer",
    "item_id": "integer"
  },
  "text_after_line_items": "string",
  "paid": "boolean",
  "notepaper_id": "integer"
}

InvoiceLineItem: object

id: integer
number: integer
title: string
details: string
service_period_start: string (date)
service_period_end: string (date)
incomplete: boolean
price: number
vat: number
quantity: number
unit_id: integer
service_type_id: integer
item_id: integer
Example
{
  "id": "integer",
  "number": "integer",
  "title": "string",
  "details": "string",
  "service_period_start": "string (date)",
  "service_period_end": "string (date)",
  "incomplete": "boolean",
  "price": "number",
  "vat": "number",
  "quantity": "number",
  "unit_id": "integer",
  "service_type_id": "integer",
  "item_id": "integer"
}

ItemOrder: object

id: integer
number: integer
date: integer (date)
item_orderable_id: integer
item_orderable_type: string
name: string
street: string
zip: string
city: string
city_additional: string
text_before_line_items: string
line_items: ItemOrderLineItem
text_after_line_items: string
delivered: boolean
notepaper_id: integer

Id of the notepaper to be used as background

Example
{
  "id": "integer",
  "number": "integer",
  "date": "integer (date)",
  "item_orderable_id": "integer",
  "item_orderable_type": "string",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "city_additional": "string",
  "text_before_line_items": "string",
  "line_items": {
    "id": "integer",
    "number": "integer",
    "title": "string",
    "details": "string",
    "quantity": "number",
    "item_id": "integer"
  },
  "text_after_line_items": "string",
  "delivered": "boolean",
  "notepaper_id": "integer"
}

ItemOrderLineItem: object

id: integer
number: integer
title: string
details: string
quantity: number
item_id: integer
Example
{
  "id": "integer",
  "number": "integer",
  "title": "string",
  "details": "string",
  "quantity": "number",
  "item_id": "integer"
}

Offer: object

id: integer
number: integer
date: integer (date)
state: integer

state of the invoice where 5 is a draft, 4 is an open (unanswered) offer, 3 is changed, 2 is denied and 1 is accepted

offerable_type: string
offerable_id: integer
name: string
street: string
zip: string
city: string
city_additional: string
text_before_line_items: string
line_items: InvoiceLineItem
text_after_line_items: string
parent_number: boolean

Number (not id!) of an offer that was changed with this offer

notepaper_id: integer

Id of the notepaper to be used as background

Example
{
  "id": "integer",
  "number": "integer",
  "date": "integer (date)",
  "state": "integer",
  "offerable_type": "string",
  "offerable_id": "integer",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "city_additional": "string",
  "text_before_line_items": "string",
  "line_items": {
    "id": "integer",
    "number": "integer",
    "title": "string",
    "details": "string",
    "service_period_start": "string (date)",
    "service_period_end": "string (date)",
    "incomplete": "boolean",
    "price": "number",
    "vat": "number",
    "quantity": "number",
    "unit_id": "integer",
    "service_type_id": "integer",
    "item_id": "integer"
  },
  "text_after_line_items": "string",
  "parent_number": "boolean",
  "notepaper_id": "integer"
}

OfferLineItem: object

id: integer
number: integer
title: string
details: string
incomplete: boolean
price: number
vat: number
quantity: number
unit_id: integer
service_type_id: integer
item_id: integer
is_alternative: boolean

line item's total price is not added to the total price of the offer

Example
{
  "id": "integer",
  "number": "integer",
  "title": "string",
  "details": "string",
  "incomplete": "boolean",
  "price": "number",
  "vat": "number",
  "quantity": "number",
  "unit_id": "integer",
  "service_type_id": "integer",
  "item_id": "integer",
  "is_alternative": "boolean"
}

ItemCategory: object

id: integer
name: string
billed_with_service_type_id: integer
Example
{
  "id": "integer",
  "name": "string",
  "billed_with_service_type_id": "integer"
}

Item: object

id: integer
number: integer
name: string
description: string
sales_price: number
item_category_id: integer
note: string
active: boolean
stock: integer
stock_warn_level: integer
external_image_url: string
Example
{
  "id": "integer",
  "number": "integer",
  "name": "string",
  "description": "string",
  "sales_price": "number",
  "item_category_id": "integer",
  "note": "string",
  "active": "boolean",
  "stock": "integer",
  "stock_warn_level": "integer",
  "external_image_url": "string"
}

ServiceType: object

Leistungsart in German

id: integer
name: string
account_id: integer
account_tax_rate: integer
tax_privileged_percentage: integer
Example
{
  "id": "integer",
  "name": "string",
  "account_id": "integer",
  "account_tax_rate": "integer",
  "tax_privileged_percentage": "integer"
}

StaffMember: object

id: integer
number: integer
first_name: string
last_name: string
email: string
phone: string
mobile: string
Example
{
  "id": "integer",
  "number": "integer",
  "first_name": "string",
  "last_name": "string",
  "email": "string",
  "phone": "string",
  "mobile": "string"
}

Supplier: object

id: integer
number: integer
shortname: string
name: string
street: string
zip: string
city: string
shortinfo: string
webpage: string
phone: string
fax: string
email: string
Example
{
  "id": "integer",
  "number": "integer",
  "shortname": "string",
  "name": "string",
  "street": "string",
  "zip": "string",
  "city": "string",
  "shortinfo": "string",
  "webpage": "string",
  "phone": "string",
  "fax": "string",
  "email": "string"
}

Task: object

id: integer
text: string
due_at: string (date)
completed_at: string (date)
taskable_type: string
taskable_id: integer
client_user_id: integer
employee_id: integer
event_id: integer
Example
{
  "id": "integer",
  "text": "string",
  "due_at": "string (date)",
  "completed_at": "string (date)",
  "taskable_type": "string",
  "taskable_id": "integer",
  "client_user_id": "integer",
  "employee_id": "integer",
  "event_id": "integer"
}

Unit: object

id: integer
name: string
is_flatrate: boolean

Unit declares a flatrate - when the unit is used in an invoice line item, the count value can not be changed but defaults to 1.

Example
{
  "id": "integer",
  "name": "string",
  "is_flatrate": "boolean"
}

WebHook: object

id: integer
model: string

class of the objects you want to receive WebHooks for, e.g. 'Customer', 'Invoice', 'Facility'

operation: string

operations for which you want to receive WebHooks. possible operations are 'create', 'update', 'save' and 'destroy' where 'save' is a combination of 'create' and 'update'

uri: string

uri where the WebHook should be sent

Example
{
  "id": "integer",
  "model": "string",
  "operation": "string",
  "uri": "string"
}