Webhooks
Webhooks are an essential part of Beeple.
Webhooks can be either installed by marketplace extensions or manually configured by the end user.
For each type (collaborators, SMS communications, etc.) one can configure one or more URLs but one URL might receive different actions (create, update, delete) as different HTTP verbs. If you subscribe to one type, all the verbs should be accepted (but can be a no-op implementation).
Idempotency
All described URLs should be idempotent. Meaning that if for some reason, the Beeple system sends a request multiple times, and the request was already received nothing should change in the receiving system.
In case of network failures or other invalid responses, Beeple will retry the same request multiple times over a period of time.
Authentication
All requests are also signed with a private token so the authenticity of the sender and receiver can be validated.
Each request will contain 3 headers:
-
Authentication-Reference: (string) - A reference, this will be unique per request. The format is unspecified
-
Authentication-Epoch: (number) - A UNIX epoch timestamp.
-
Authentication-Signature: (string) - The signed combination of reference and epoch.
Beeple currently implements a timeout of 5 seconds, make sure your webhooks reply correctly in this time period. Beeple will retry multiple times after a timeout resending the webhook anyway.
To validate a request the following steps need to happen:
-
Authentication-Epoch should not be longer ago than 5 minutes.
-
Authentication-Reference should not be reused. In principle References can be recycled after 5 minutes, so there is no hard requirement to store the references for much longer than 5 minutes.
-
A string is created with the concatenation of
Authentication-Reference
andAuthentication-Epoch
-
This string is hashed according with the SHA512 digest
-
The digest is HMAC encoded with a private token as key (known by both sender and receiver)
-
The hex value of this hash is taken, and should match the Authentication-Signature.
In pseudo code this looks like
epoch = Header[Authenticaion-Epoch]
if age(epoch) > 5 minutes
ignore message
else
digest = Sha512Digest(private_key)
reference = Header[Authenticaion-Reference] + Header[Authenticaion-Epoch]
hmac = hmac_hexdigest(SHA512, private_key, reference)
if hexdigest equals Header[Authentication-Signature]
accept message
else
ignore message
end
end
Collaborators ¶
Collaborator ¶
This webhook is sent every time a collaborator is created/deleted/updated within Beeple
Create a collaboratorPOST/collaborators
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"collaborator": {
"first_name": "John",
"last_name": "Doe",
"prefix": "De",
"beeple_id": 2403,
"birth_date": "1995-05-07",
"birth_city": "Antwerpen",
"birth_country": "BE",
"gender": "male",
"language": "en",
"nationality": "BE",
"national_registration_numbers": [
{
"country": "BE",
"number": "YY.MM.DD-997.47"
}
],
"social_statute": "Arbeider",
"social_statute_code": "career_pause",
"home_address": {
"name": "Some Name",
"street1": "Dorpstraat 1",
"street2": "Bus 1",
"zip": "2018",
"city": "Antwerpen",
"administrative_area_level_1": "Hello, world!",
"administrative_area_level_2": "Hello, world!",
"administrative_area_level_3": "Hello, world!",
"administrative_area_level_4": "Hello, world!",
"administrative_area_level_5": "Hello, world!",
"country": "BE",
"applies_to_all_departments": true,
"departments": [
{
"id": "101",
"name": "Acme Corp",
"description": "The department for Acme Corp"
}
]
},
"bank_account": {
"iban": "BE68539007547034",
"bic": "HBKABE22"
},
"contact": {
"email": "john.doe@example.org",
"mobile": "+32498525251"
},
"email_confirmed": true,
"profile_application_accepted": true,
"blocked": false,
"blocked_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"blocked_at": "2017-04-01T10:00:00.000+02:00",
"unblocked_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"unblocked_at": "2017-04-01T10:00:00.000+02:00",
"archived": false,
"profile_properties": [
{
"group": "Legal information",
"profile_property_id": 1888,
"name": "Marital status",
"description": "Here you can enter your official marital status",
"type": "boolean",
"numeric_unit": "km",
"value_boolean": true,
"value_string": "Married",
"value_list_multi": [
"english"
],
"value_date": "2017-05-08",
"value_time": "17:00:00.000+02:00",
"value_datetime": "2017-05-08T17:00:00.000+02:00",
"value_numeric": 23.5,
"value_upload_url": "https://planning.tenant.be/api/v1/uploads/volunteers/volunteers_profile_property/upload_collaborator/5916/uploaded_file.docx",
"comment": "Since 15/5/1995",
"expiration_date": "2017-05-08",
"piece_of_evidence": "https://planning.tenant.be/api/v1/uploads/volunteers/volunteers_profile_property/documented_proof_verified/43413/piece_of_evidence_file.docx"
}
]
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"collaborator": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"prefix": {
"type": "string",
"description": "Last name prefix, this is what appears on the screen of the web application as \"infix\"; for example John De Doe"
},
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"birth_date": {
"type": "string",
"description": "Birth date according RFC 3339"
},
"birth_city": {
"type": "string",
"description": "Birth city"
},
"birth_country": {
"type": "string",
"description": "Birth country according to ISO 3166-1 alpha-2"
},
"gender": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Gender"
},
"language": {
"type": "string",
"description": "Language in which to communicate with the collaborator according to ISO 639-1"
},
"nationality": {
"type": "string",
"description": "According to ISO 3166-1 alpha-2"
},
"national_registration_numbers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Country for which the number is valid according to ISO 3166-1 alpha-2"
},
"number": {
"type": "string",
"description": "unique number format specified per person per country"
}
}
}
},
"social_statute": {
"type": "string",
"description": "The social statute"
},
"social_statute_code": {
"type": "string",
"enum": [
"career_pause",
"disabled_entrepreneur",
"early_retired",
"entrepreneur",
"flexijobs",
"functionary",
"incapacitated",
"living_wager",
"retired",
"student",
"unemployed",
"unemployed_waiting_period",
"unknown",
"working_class",
"working_class_blue_collar",
"work_student"
],
"description": "The social statute"
},
"home_address": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The human name of the address"
},
"street1": {
"type": "string",
"description": "Street + house number"
},
"street2": {
"type": "string",
"description": "Extension of street1"
},
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"administrative_area_level_1": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_2": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_3": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_4": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_5": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"country": {
"type": "string",
"description": "According to ISO 3166-1 alpha-2"
},
"applies_to_all_departments": {
"type": "boolean",
"description": "If tenant uses department management, this property indicates whether address belongs to all departments of the tenant"
},
"departments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the client"
},
"name": {
"type": "string",
"description": "The name of the department"
},
"description": {
"type": "string",
"description": "A description of the department"
}
}
},
"description": "If tenant uses department management, this object lists departments of the address"
}
}
},
"bank_account": {
"type": "object",
"properties": {
"iban": {
"type": "string"
},
"bic": {
"type": "string"
}
}
},
"contact": {
"type": "object",
"properties": {
"email": {
"type": "string"
},
"mobile": {
"type": "string"
}
},
"required": [
"email"
]
},
"email_confirmed": {
"type": "boolean",
"description": "If the collaborator confirmed their account"
},
"profile_application_accepted": {
"type": "boolean",
"description": "If the collaborator was accepted by an admin after registration. Only applicable when setting registration = sollication is true"
},
"blocked": {
"type": "boolean",
"description": "If the user was blocked"
},
"blocked_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who blocked the collaboraotr"
},
"blocked_at": {
"type": "string",
"description": "When the collaborator was blocked if he/she was unblocked"
},
"unblocked_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who unblocked the collaboraotr"
},
"unblocked_at": {
"type": "string",
"description": "When the collaborator was unblocked if he/she was unblocked"
},
"archived": {
"type": "boolean",
"description": "If the user got archived"
},
"profile_properties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"group": {
"type": "string",
"description": "Group of profile properties"
},
"profile_property_id": {
"type": "number",
"description": "Id of the profile property"
},
"name": {
"type": "string",
"description": "Name of the profile property"
},
"description": {
"type": "string",
"description": "Description of the profile property"
},
"type": {
"type": "string",
"enum": [
"boolean",
"numeric",
"freetext",
"freetext_multiline",
"list_single_option",
"list_multi_option",
"date",
"time",
"datetime",
"upload"
],
"description": "Type of content of the profile property"
},
"numeric_unit": {
"type": "string",
"description": "Unit in which a profile property of type numeric is expressed"
},
"value_boolean": {
"type": "boolean",
"description": "Value of the profile property. Filled for type = boolean"
},
"value_string": {
"type": "string",
"description": "Value of the profile property. Filled for type = freetext, freetext_multiline or list_single_option"
},
"value_list_multi": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filled for type = list_multi_option"
},
"value_date": {
"type": "string",
"description": "Value of the profile property. Filled for type = date according to RFC 3339"
},
"value_time": {
"type": "string",
"description": "Value of the profile property. Filled for type = time according to RFC 3339"
},
"value_datetime": {
"type": "string",
"description": "Value of the profile property. Filled for type = datetime according to RFC 3339"
},
"value_numeric": {
"type": "number",
"description": "Value of the profile property. Filled for type = numeric"
},
"value_upload_url": {
"type": "string",
"description": "Value (URL) of the profile property. Filled for type = upload"
},
"comment": {
"type": "string",
"description": "Comment concerning the value of the profile property"
},
"expiration_date": {
"type": "string",
"description": "Date the value of the profile property expires according to RFC 3339"
},
"piece_of_evidence": {
"type": "string",
"description": "Piece of evidence (URL) for the value of the profile property"
}
}
}
}
},
"required": [
"first_name",
"last_name",
"prefix",
"beeple_id",
"language"
]
}
}
}
200
Delete a collaboratorDELETE/collaborators
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"collaborator": {
"first_name": "John",
"last_name": "Doe",
"prefix": "De",
"beeple_id": 2403,
"birth_date": "1995-05-07",
"birth_city": "Antwerpen",
"birth_country": "BE",
"gender": "male",
"language": "en",
"nationality": "BE",
"national_registration_numbers": [
{
"country": "BE",
"number": "YY.MM.DD-997.47"
}
],
"social_statute": "Arbeider",
"social_statute_code": "career_pause",
"home_address": {
"name": "Some Name",
"street1": "Dorpstraat 1",
"street2": "Bus 1",
"zip": "2018",
"city": "Antwerpen",
"administrative_area_level_1": "Hello, world!",
"administrative_area_level_2": "Hello, world!",
"administrative_area_level_3": "Hello, world!",
"administrative_area_level_4": "Hello, world!",
"administrative_area_level_5": "Hello, world!",
"country": "BE",
"applies_to_all_departments": true,
"departments": [
{
"id": "101",
"name": "Acme Corp",
"description": "The department for Acme Corp"
}
]
},
"bank_account": {
"iban": "BE68539007547034",
"bic": "HBKABE22"
},
"contact": {
"email": "john.doe@example.org",
"mobile": "+32498525251"
},
"email_confirmed": true,
"profile_application_accepted": true,
"blocked": false,
"blocked_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"blocked_at": "2017-04-01T10:00:00.000+02:00",
"unblocked_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"unblocked_at": "2017-04-01T10:00:00.000+02:00",
"archived": false,
"profile_properties": [
{
"group": "Legal information",
"profile_property_id": 1888,
"name": "Marital status",
"description": "Here you can enter your official marital status",
"type": "boolean",
"numeric_unit": "km",
"value_boolean": true,
"value_string": "Married",
"value_list_multi": [
"english"
],
"value_date": "2017-05-08",
"value_time": "17:00:00.000+02:00",
"value_datetime": "2017-05-08T17:00:00.000+02:00",
"value_numeric": 23.5,
"value_upload_url": "https://planning.tenant.be/api/v1/uploads/volunteers/volunteers_profile_property/upload_collaborator/5916/uploaded_file.docx",
"comment": "Since 15/5/1995",
"expiration_date": "2017-05-08",
"piece_of_evidence": "https://planning.tenant.be/api/v1/uploads/volunteers/volunteers_profile_property/documented_proof_verified/43413/piece_of_evidence_file.docx"
}
]
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"collaborator": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"prefix": {
"type": "string",
"description": "Last name prefix, this is what appears on the screen of the web application as \"infix\"; for example John De Doe"
},
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"birth_date": {
"type": "string",
"description": "Birth date according RFC 3339"
},
"birth_city": {
"type": "string",
"description": "Birth city"
},
"birth_country": {
"type": "string",
"description": "Birth country according to ISO 3166-1 alpha-2"
},
"gender": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Gender"
},
"language": {
"type": "string",
"description": "Language in which to communicate with the collaborator according to ISO 639-1"
},
"nationality": {
"type": "string",
"description": "According to ISO 3166-1 alpha-2"
},
"national_registration_numbers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Country for which the number is valid according to ISO 3166-1 alpha-2"
},
"number": {
"type": "string",
"description": "unique number format specified per person per country"
}
}
}
},
"social_statute": {
"type": "string",
"description": "The social statute"
},
"social_statute_code": {
"type": "string",
"enum": [
"career_pause",
"disabled_entrepreneur",
"early_retired",
"entrepreneur",
"flexijobs",
"functionary",
"incapacitated",
"living_wager",
"retired",
"student",
"unemployed",
"unemployed_waiting_period",
"unknown",
"working_class",
"working_class_blue_collar",
"work_student"
],
"description": "The social statute"
},
"home_address": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The human name of the address"
},
"street1": {
"type": "string",
"description": "Street + house number"
},
"street2": {
"type": "string",
"description": "Extension of street1"
},
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"administrative_area_level_1": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_2": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_3": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_4": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_5": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"country": {
"type": "string",
"description": "According to ISO 3166-1 alpha-2"
},
"applies_to_all_departments": {
"type": "boolean",
"description": "If tenant uses department management, this property indicates whether address belongs to all departments of the tenant"
},
"departments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the client"
},
"name": {
"type": "string",
"description": "The name of the department"
},
"description": {
"type": "string",
"description": "A description of the department"
}
}
},
"description": "If tenant uses department management, this object lists departments of the address"
}
}
},
"bank_account": {
"type": "object",
"properties": {
"iban": {
"type": "string"
},
"bic": {
"type": "string"
}
}
},
"contact": {
"type": "object",
"properties": {
"email": {
"type": "string"
},
"mobile": {
"type": "string"
}
},
"required": [
"email"
]
},
"email_confirmed": {
"type": "boolean",
"description": "If the collaborator confirmed their account"
},
"profile_application_accepted": {
"type": "boolean",
"description": "If the collaborator was accepted by an admin after registration. Only applicable when setting registration = sollication is true"
},
"blocked": {
"type": "boolean",
"description": "If the user was blocked"
},
"blocked_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who blocked the collaboraotr"
},
"blocked_at": {
"type": "string",
"description": "When the collaborator was blocked if he/she was unblocked"
},
"unblocked_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who unblocked the collaboraotr"
},
"unblocked_at": {
"type": "string",
"description": "When the collaborator was unblocked if he/she was unblocked"
},
"archived": {
"type": "boolean",
"description": "If the user got archived"
},
"profile_properties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"group": {
"type": "string",
"description": "Group of profile properties"
},
"profile_property_id": {
"type": "number",
"description": "Id of the profile property"
},
"name": {
"type": "string",
"description": "Name of the profile property"
},
"description": {
"type": "string",
"description": "Description of the profile property"
},
"type": {
"type": "string",
"enum": [
"boolean",
"numeric",
"freetext",
"freetext_multiline",
"list_single_option",
"list_multi_option",
"date",
"time",
"datetime",
"upload"
],
"description": "Type of content of the profile property"
},
"numeric_unit": {
"type": "string",
"description": "Unit in which a profile property of type numeric is expressed"
},
"value_boolean": {
"type": "boolean",
"description": "Value of the profile property. Filled for type = boolean"
},
"value_string": {
"type": "string",
"description": "Value of the profile property. Filled for type = freetext, freetext_multiline or list_single_option"
},
"value_list_multi": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filled for type = list_multi_option"
},
"value_date": {
"type": "string",
"description": "Value of the profile property. Filled for type = date according to RFC 3339"
},
"value_time": {
"type": "string",
"description": "Value of the profile property. Filled for type = time according to RFC 3339"
},
"value_datetime": {
"type": "string",
"description": "Value of the profile property. Filled for type = datetime according to RFC 3339"
},
"value_numeric": {
"type": "number",
"description": "Value of the profile property. Filled for type = numeric"
},
"value_upload_url": {
"type": "string",
"description": "Value (URL) of the profile property. Filled for type = upload"
},
"comment": {
"type": "string",
"description": "Comment concerning the value of the profile property"
},
"expiration_date": {
"type": "string",
"description": "Date the value of the profile property expires according to RFC 3339"
},
"piece_of_evidence": {
"type": "string",
"description": "Piece of evidence (URL) for the value of the profile property"
}
}
}
}
},
"required": [
"first_name",
"last_name",
"prefix",
"beeple_id",
"language"
]
}
}
}
200
Modify a collaboratorPATCH/collaborators
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"collaborator": {
"first_name": "John",
"last_name": "Doe",
"prefix": "De",
"beeple_id": 2403,
"birth_date": "1995-05-07",
"birth_city": "Antwerpen",
"birth_country": "BE",
"gender": "male",
"language": "en",
"nationality": "BE",
"national_registration_numbers": [
{
"country": "BE",
"number": "YY.MM.DD-997.47"
}
],
"social_statute": "Arbeider",
"social_statute_code": "career_pause",
"home_address": {
"name": "Some Name",
"street1": "Dorpstraat 1",
"street2": "Bus 1",
"zip": "2018",
"city": "Antwerpen",
"administrative_area_level_1": "Hello, world!",
"administrative_area_level_2": "Hello, world!",
"administrative_area_level_3": "Hello, world!",
"administrative_area_level_4": "Hello, world!",
"administrative_area_level_5": "Hello, world!",
"country": "BE",
"applies_to_all_departments": true,
"departments": [
{
"id": "101",
"name": "Acme Corp",
"description": "The department for Acme Corp"
}
]
},
"bank_account": {
"iban": "BE68539007547034",
"bic": "HBKABE22"
},
"contact": {
"email": "john.doe@example.org",
"mobile": "+32498525251"
},
"email_confirmed": true,
"profile_application_accepted": true,
"blocked": false,
"blocked_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"blocked_at": "2017-04-01T10:00:00.000+02:00",
"unblocked_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"unblocked_at": "2017-04-01T10:00:00.000+02:00",
"archived": false,
"profile_properties": [
{
"group": "Legal information",
"profile_property_id": 1888,
"name": "Marital status",
"description": "Here you can enter your official marital status",
"type": "boolean",
"numeric_unit": "km",
"value_boolean": true,
"value_string": "Married",
"value_list_multi": [
"english"
],
"value_date": "2017-05-08",
"value_time": "17:00:00.000+02:00",
"value_datetime": "2017-05-08T17:00:00.000+02:00",
"value_numeric": 23.5,
"value_upload_url": "https://planning.tenant.be/api/v1/uploads/volunteers/volunteers_profile_property/upload_collaborator/5916/uploaded_file.docx",
"comment": "Since 15/5/1995",
"expiration_date": "2017-05-08",
"piece_of_evidence": "https://planning.tenant.be/api/v1/uploads/volunteers/volunteers_profile_property/documented_proof_verified/43413/piece_of_evidence_file.docx"
}
]
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"collaborator": {
"type": "object",
"properties": {
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"prefix": {
"type": "string",
"description": "Last name prefix, this is what appears on the screen of the web application as \"infix\"; for example John De Doe"
},
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"birth_date": {
"type": "string",
"description": "Birth date according RFC 3339"
},
"birth_city": {
"type": "string",
"description": "Birth city"
},
"birth_country": {
"type": "string",
"description": "Birth country according to ISO 3166-1 alpha-2"
},
"gender": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Gender"
},
"language": {
"type": "string",
"description": "Language in which to communicate with the collaborator according to ISO 639-1"
},
"nationality": {
"type": "string",
"description": "According to ISO 3166-1 alpha-2"
},
"national_registration_numbers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"country": {
"type": "string",
"description": "Country for which the number is valid according to ISO 3166-1 alpha-2"
},
"number": {
"type": "string",
"description": "unique number format specified per person per country"
}
}
}
},
"social_statute": {
"type": "string",
"description": "The social statute"
},
"social_statute_code": {
"type": "string",
"enum": [
"career_pause",
"disabled_entrepreneur",
"early_retired",
"entrepreneur",
"flexijobs",
"functionary",
"incapacitated",
"living_wager",
"retired",
"student",
"unemployed",
"unemployed_waiting_period",
"unknown",
"working_class",
"working_class_blue_collar",
"work_student"
],
"description": "The social statute"
},
"home_address": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The human name of the address"
},
"street1": {
"type": "string",
"description": "Street + house number"
},
"street2": {
"type": "string",
"description": "Extension of street1"
},
"zip": {
"type": "string"
},
"city": {
"type": "string"
},
"administrative_area_level_1": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_2": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_3": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_4": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"administrative_area_level_5": {
"type": "string",
"description": "An extra administrative level, depends per country / tenant what this means"
},
"country": {
"type": "string",
"description": "According to ISO 3166-1 alpha-2"
},
"applies_to_all_departments": {
"type": "boolean",
"description": "If tenant uses department management, this property indicates whether address belongs to all departments of the tenant"
},
"departments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the client"
},
"name": {
"type": "string",
"description": "The name of the department"
},
"description": {
"type": "string",
"description": "A description of the department"
}
}
},
"description": "If tenant uses department management, this object lists departments of the address"
}
}
},
"bank_account": {
"type": "object",
"properties": {
"iban": {
"type": "string"
},
"bic": {
"type": "string"
}
}
},
"contact": {
"type": "object",
"properties": {
"email": {
"type": "string"
},
"mobile": {
"type": "string"
}
},
"required": [
"email"
]
},
"email_confirmed": {
"type": "boolean",
"description": "If the collaborator confirmed their account"
},
"profile_application_accepted": {
"type": "boolean",
"description": "If the collaborator was accepted by an admin after registration. Only applicable when setting registration = sollication is true"
},
"blocked": {
"type": "boolean",
"description": "If the user was blocked"
},
"blocked_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who blocked the collaboraotr"
},
"blocked_at": {
"type": "string",
"description": "When the collaborator was blocked if he/she was unblocked"
},
"unblocked_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who unblocked the collaboraotr"
},
"unblocked_at": {
"type": "string",
"description": "When the collaborator was unblocked if he/she was unblocked"
},
"archived": {
"type": "boolean",
"description": "If the user got archived"
},
"profile_properties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"group": {
"type": "string",
"description": "Group of profile properties"
},
"profile_property_id": {
"type": "number",
"description": "Id of the profile property"
},
"name": {
"type": "string",
"description": "Name of the profile property"
},
"description": {
"type": "string",
"description": "Description of the profile property"
},
"type": {
"type": "string",
"enum": [
"boolean",
"numeric",
"freetext",
"freetext_multiline",
"list_single_option",
"list_multi_option",
"date",
"time",
"datetime",
"upload"
],
"description": "Type of content of the profile property"
},
"numeric_unit": {
"type": "string",
"description": "Unit in which a profile property of type numeric is expressed"
},
"value_boolean": {
"type": "boolean",
"description": "Value of the profile property. Filled for type = boolean"
},
"value_string": {
"type": "string",
"description": "Value of the profile property. Filled for type = freetext, freetext_multiline or list_single_option"
},
"value_list_multi": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filled for type = list_multi_option"
},
"value_date": {
"type": "string",
"description": "Value of the profile property. Filled for type = date according to RFC 3339"
},
"value_time": {
"type": "string",
"description": "Value of the profile property. Filled for type = time according to RFC 3339"
},
"value_datetime": {
"type": "string",
"description": "Value of the profile property. Filled for type = datetime according to RFC 3339"
},
"value_numeric": {
"type": "number",
"description": "Value of the profile property. Filled for type = numeric"
},
"value_upload_url": {
"type": "string",
"description": "Value (URL) of the profile property. Filled for type = upload"
},
"comment": {
"type": "string",
"description": "Comment concerning the value of the profile property"
},
"expiration_date": {
"type": "string",
"description": "Date the value of the profile property expires according to RFC 3339"
},
"piece_of_evidence": {
"type": "string",
"description": "Piece of evidence (URL) for the value of the profile property"
}
}
}
}
},
"required": [
"first_name",
"last_name",
"prefix",
"beeple_id",
"language"
]
}
}
}
200
SMS Messages ¶
SMS Messages ¶
This webhook is sent every time an SMS is to be sent within Beeple.
This can be used for 2 use cases.
The main use case is to actually deliver the SMS. In this case the webhook needs to be
installed by a marketplace extension of type communication-channel::sms
. After sending
the SMS the extension should return a unique ID of the
SMS which later can be reused to query or set the delivery status of the SMS.
The other use case is to register the request to send an SMS within Beeple. In this case
no information needs to be returned.
Sending a messagePOST/communication/sms
Example URI
Headers
Content-Type: application/json
Body
{
"tenant_id": "237a3384-227b-4437-8585-39f4f4f7dfd4",
"collaborator_id": "7454",
"msisdn": "32498123456",
"message": "Hello, world!"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"tenant_id": {
"type": "string",
"description": "The identifier of the tenant"
},
"collaborator_id": {
"type": "string",
"description": "The collaborator ID in beeple."
},
"msisdn": {
"type": "string",
"description": "The mobile phone number of the recipient"
},
"message": {
"type": "string",
"description": "The body of the SMS. This will be sent as normal UTF-8,\n\n it is up to the implementation to make sure the message is\n correctly sent to the users"
}
}
}
200
Headers
Content-Type: application/json
Body
{
"message_id": "dfdasgcvdfgfg",
"cost": 2
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"message_id": {
"type": "string",
"description": "A unique ID to track status of delivery"
},
"cost": {
"type": "number",
"description": "The cost of the message in credits"
}
}
}
200
Headers
Content-Type: application/json
SMS Message statuses ¶
Technically this is not a webhook from Beeple. This describes a call from the 3rd party marketplace extension to Beeple.
This message can be sent to update the status. It is up to the implementation to decide to implement this callback and for which statuses.
Updating status of a messagePATCH/api/v1/incoming/communications/{message_id}
Example URI
- message_id
string
(required) Example: dfdasgcvdfgfgThe ID of the message. This is the same ID as was sent by the 3rd party market place extension after sending the SMS.
Headers
Content-Type: application/json
Body
{
"status": "sent"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"sent",
"failed",
"delivered",
"opened"
],
"description": "The new status of the message"
}
}
}
200
Headers
Content-Type: application/json
Projects ¶
Project ¶
This webhook is sent every time a Project is created/deleted/updated within Beeple
Beeple servers send a webhook when event happens to the specified integration url. Admins has ability to configure the specified integration url in the Admin Settings -> Modules -> Integrations section by adding an integration with a selected type and url so that Beeple could send HTTP request to the URL they specify.
Project is createdPOST/specified-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"project": {
"id": "2244",
"name": "Example Project",
"description": "Description of example project",
"start_date": "2017-08-15",
"end_date": "2017-09-15",
"published": true,
"practical_info": "Some practical info",
"subprojects_enabled": true,
"customer_id": "5",
"department_id": "5",
"custom_fields": [
{
"property_id": "2244",
"text_value": "A house in the middle of a street",
"numeric_value": 32212
}
],
"created_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"created": "2022-06-21T13:59:27Z",
"updated_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"project": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the project"
},
"name": {
"type": "string",
"description": "The name of the project (max 255 characters)"
},
"description": {
"type": "string",
"description": "A description of the project"
},
"start_date": {
"type": "string",
"description": "Start date of the project in YYYY-MM-DD"
},
"end_date": {
"type": "string",
"description": "End date of the project in YYYY-MM-DD"
},
"published": {
"type": "boolean",
"description": "Indication whether the project is published"
},
"practical_info": {
"type": "string",
"description": "Text to describe some practical info"
},
"subprojects_enabled": {
"type": "boolean",
"description": "This allows the project to have subprojects"
},
"customer_id": {
"type": "string",
"description": "The ID of the customer of the Beeple tenant. If Beeple is configured to not use customers this will be unnecessary information and ignored"
},
"department_id": {
"type": "string",
"description": "The ID of the department of the Beeple tenant that executes the project. If Beeple is configured to not use departments this will be unnecessary information and ignored"
},
"custom_fields": {
"type": "array",
"description": "A list of extra custom planning fields."
},
"created_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who created the project"
},
"created": {
"type": "string",
"description": "Time of when project was created in ISO 8601 format"
},
"updated_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who updated the project"
},
"updated": {
"type": "string",
"description": "Time of when project was updated in ISO 8601 format"
}
},
"required": [
"id",
"name",
"description",
"start_date",
"end_date",
"published",
"subprojects_enabled",
"created",
"updated"
],
"description": "Details of the project"
}
}
}
200
Project is updatedPATCH/specified-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"project": {
"id": "2244",
"name": "Example Project",
"description": "Description of example project",
"start_date": "2017-08-15",
"end_date": "2017-09-15",
"published": true,
"practical_info": "Some practical info",
"subprojects_enabled": true,
"customer_id": "5",
"department_id": "5",
"custom_fields": [
{
"property_id": "2244",
"text_value": "A house in the middle of a street",
"numeric_value": 32212
}
],
"created_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"created": "2022-06-21T13:59:27Z",
"updated_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"project": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the project"
},
"name": {
"type": "string",
"description": "The name of the project (max 255 characters)"
},
"description": {
"type": "string",
"description": "A description of the project"
},
"start_date": {
"type": "string",
"description": "Start date of the project in YYYY-MM-DD"
},
"end_date": {
"type": "string",
"description": "End date of the project in YYYY-MM-DD"
},
"published": {
"type": "boolean",
"description": "Indication whether the project is published"
},
"practical_info": {
"type": "string",
"description": "Text to describe some practical info"
},
"subprojects_enabled": {
"type": "boolean",
"description": "This allows the project to have subprojects"
},
"customer_id": {
"type": "string",
"description": "The ID of the customer of the Beeple tenant. If Beeple is configured to not use customers this will be unnecessary information and ignored"
},
"department_id": {
"type": "string",
"description": "The ID of the department of the Beeple tenant that executes the project. If Beeple is configured to not use departments this will be unnecessary information and ignored"
},
"custom_fields": {
"type": "array",
"description": "A list of extra custom planning fields."
},
"created_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who created the project"
},
"created": {
"type": "string",
"description": "Time of when project was created in ISO 8601 format"
},
"updated_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who updated the project"
},
"updated": {
"type": "string",
"description": "Time of when project was updated in ISO 8601 format"
}
},
"required": [
"id",
"name",
"description",
"start_date",
"end_date",
"published",
"subprojects_enabled",
"created",
"updated"
],
"description": "Details of the project"
}
}
}
200
Project is deletedDELETE/specified-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"id": "2244",
"updated": "2019-04-01T00:23:59.000+00:00"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the project that was removed"
},
"updated": {
"type": "string",
"description": "Date and time when the project was removed"
}
},
"required": [
"id",
"updated"
]
}
200
Enrolments ¶
Enrolments ¶
This webhook is sent every time an enrolment is created/cancelled/updated within Beeple.
Create an enrolmentPOST/enrolments
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"enrolment": {
"beeple_id": 3,
"collaborator": {
"beeple_id": 3,
"first_name": "John",
"last_name": "Doe",
"prefix": "Mr",
"email": "John-doe@example.com"
},
"project": {
"beeple_id": 3,
"name": "test"
},
"subproject": {
"beeple_id": 3,
"name": "test"
},
"team": {
"beeple_id": 3,
"name": "test"
},
"department": {
"beeple_id": "3",
"name": "test"
},
"planned_shifts": [
{
"beeple_id": "5545",
"start_datetime": "2017-07-05T15:30Z",
"end_datetime": "2017-07-05T21:30Z",
"break_duration": "00:30"
}
],
"work_station_address": {
"beeple_id": "3",
"name": "test",
"street1": "stationstraat",
"street2": "1",
"zip": 2000,
"city": "Antwerpen",
"country": "BE",
"addition": 2000,
"latlon_lat": 41.2321,
"latlon_lon": 23.1234
},
"function": {
"beeple_id": 3,
"name": "test"
},
"contract_type": "interim",
"wages": {
"per_hour": 10,
"per_day": 80,
"per_team": 10
},
"wage_scale": "Per age",
"invitation": {
"beeple_id": "1a9b10c0-3eac-43f2-9f5a-a4e24b7d1aae",
"status": "accepted",
"sent_at": "2017-09-07T11:06:56.300Z",
"expires_at": "2017-09-07T11:06:56.300Z"
},
"commute_distance_in_km": 1,
"enrolled_by_beeple_id": 422,
"draft_mode": true,
"confirmed": true,
"cancelled": true,
"created_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"created": "2017-09-07T11:06:56.300Z",
"updated": "2017-09-07T11:06:56.300Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"enrolment": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "ID Of the enrolment"
},
"collaborator": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Collaborator ID"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"prefix": {
"type": "string",
"description": "Prefix"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"beeple_id",
"first_name",
"last_name",
"prefix"
]
},
"project": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Project ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"subproject": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Subproject ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"team": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Team ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"department": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "Department ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"planned_shifts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "ID of the shift"
},
"start_datetime": {
"type": "string",
"description": "When the shift starts according RFC 3339."
},
"end_datetime": {
"type": "string",
"description": "When the shift stops according RFC 3339."
},
"break_duration": {
"type": "string",
"description": "Total planned break duration in HH:MM."
}
}
}
},
"work_station_address": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "Address ID"
},
"name": {
"type": "string",
"description": "Name of the address"
},
"street1": {
"type": "string",
"description": "Street + house number"
},
"street2": {
"type": "string",
"description": "Extension of street1"
},
"zip": {
"type": "number"
},
"city": {
"type": "string"
},
"country": {
"type": "string",
"description": "According to ISO 3166-1 alpha-2"
},
"addition": {
"type": "number",
"description": "Additional information about the work station"
},
"latlon_lat": {
"type": "number",
"description": "Geo Coordinates latitude of address."
},
"latlon_lon": {
"type": "number",
"description": "Geo Coordinates longitude of address."
}
},
"required": [
"beeple_id",
"street1",
"street2",
"zip",
"city",
"country",
"addition"
]
},
"function": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Function ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"contract_type": {
"type": "string",
"description": "Contract type"
},
"wages": {
"type": "object",
"properties": {
"per_hour": {
"type": "number",
"description": "Compensation per hour"
},
"per_day": {
"type": "number",
"description": "Compensation per day"
},
"per_team": {
"type": "number",
"description": "Compensation per team"
}
}
},
"wage_scale": {
"type": "string",
"description": "Wage scale code"
},
"invitation": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "UUID of the invitation"
},
"status": {
"type": "string",
"description": "Status of the invitation"
},
"sent_at": {
"type": "string",
"description": "Invitation sent timestamp"
},
"expires_at": {
"type": "string",
"description": "Invitation expiration timestamp"
}
}
},
"commute_distance_in_km": {
"type": "number",
"description": "Commute distance in km"
},
"enrolled_by_beeple_id": {
"type": "number",
"description": "ID of the collaborator that made the enrolment (can be empty)"
},
"draft_mode": {
"type": "boolean",
"description": "Indicates if enrolment is in draft mode"
},
"confirmed": {
"type": "boolean",
"description": "whether enrolment was confirmed"
},
"cancelled": {
"type": "boolean",
"description": "whether enrolment was cancelled"
},
"created_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The collaborator who created enrolment"
},
"created": {
"type": "string",
"description": "Created at timestamp according RFC 3339"
},
"updated": {
"type": "string",
"description": "Updated at timestamp according RFC 3339"
}
},
"required": [
"beeple_id",
"contract_type"
]
}
}
}
200
Remove an enrolmentDELETE/enrolments
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"enrolment": {
"beeple_id": 3,
"collaborator": {
"beeple_id": 3,
"first_name": "John",
"last_name": "Doe",
"prefix": "Mr",
"email": "John-doe@example.com"
},
"project": {
"beeple_id": 3,
"name": "test"
},
"subproject": {
"beeple_id": 3,
"name": "test"
},
"team": {
"beeple_id": 3,
"name": "test"
},
"department": {
"beeple_id": "3",
"name": "test"
},
"planned_shifts": [
{
"beeple_id": "5545",
"start_datetime": "2017-07-05T15:30Z",
"end_datetime": "2017-07-05T21:30Z",
"break_duration": "00:30"
}
],
"work_station_address": {
"beeple_id": "3",
"name": "test",
"street1": "stationstraat",
"street2": "1",
"zip": 2000,
"city": "Antwerpen",
"country": "BE",
"addition": 2000,
"latlon_lat": 41.2321,
"latlon_lon": 23.1234
},
"function": {
"beeple_id": 3,
"name": "test"
},
"contract_type": "interim",
"wages": {
"per_hour": 10,
"per_day": 80,
"per_team": 10
},
"wage_scale": "Per age",
"invitation": {
"beeple_id": "1a9b10c0-3eac-43f2-9f5a-a4e24b7d1aae",
"status": "accepted",
"sent_at": "2017-09-07T11:06:56.300Z",
"expires_at": "2017-09-07T11:06:56.300Z"
},
"commute_distance_in_km": 1,
"enrolled_by_beeple_id": 422,
"draft_mode": true,
"confirmed": true,
"cancelled": true,
"created_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"created": "2017-09-07T11:06:56.300Z",
"updated": "2017-09-07T11:06:56.300Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"enrolment": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "ID Of the enrolment"
},
"collaborator": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Collaborator ID"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"prefix": {
"type": "string",
"description": "Prefix"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"beeple_id",
"first_name",
"last_name",
"prefix"
]
},
"project": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Project ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"subproject": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Subproject ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"team": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Team ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"department": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "Department ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"planned_shifts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "ID of the shift"
},
"start_datetime": {
"type": "string",
"description": "When the shift starts according RFC 3339."
},
"end_datetime": {
"type": "string",
"description": "When the shift stops according RFC 3339."
},
"break_duration": {
"type": "string",
"description": "Total planned break duration in HH:MM."
}
}
}
},
"work_station_address": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "Address ID"
},
"name": {
"type": "string",
"description": "Name of the address"
},
"street1": {
"type": "string",
"description": "Street + house number"
},
"street2": {
"type": "string",
"description": "Extension of street1"
},
"zip": {
"type": "number"
},
"city": {
"type": "string"
},
"country": {
"type": "string",
"description": "According to ISO 3166-1 alpha-2"
},
"addition": {
"type": "number",
"description": "Additional information about the work station"
},
"latlon_lat": {
"type": "number",
"description": "Geo Coordinates latitude of address."
},
"latlon_lon": {
"type": "number",
"description": "Geo Coordinates longitude of address."
}
},
"required": [
"beeple_id",
"street1",
"street2",
"zip",
"city",
"country",
"addition"
]
},
"function": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Function ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"contract_type": {
"type": "string",
"description": "Contract type"
},
"wages": {
"type": "object",
"properties": {
"per_hour": {
"type": "number",
"description": "Compensation per hour"
},
"per_day": {
"type": "number",
"description": "Compensation per day"
},
"per_team": {
"type": "number",
"description": "Compensation per team"
}
}
},
"wage_scale": {
"type": "string",
"description": "Wage scale code"
},
"invitation": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "UUID of the invitation"
},
"status": {
"type": "string",
"description": "Status of the invitation"
},
"sent_at": {
"type": "string",
"description": "Invitation sent timestamp"
},
"expires_at": {
"type": "string",
"description": "Invitation expiration timestamp"
}
}
},
"commute_distance_in_km": {
"type": "number",
"description": "Commute distance in km"
},
"enrolled_by_beeple_id": {
"type": "number",
"description": "ID of the collaborator that made the enrolment (can be empty)"
},
"draft_mode": {
"type": "boolean",
"description": "Indicates if enrolment is in draft mode"
},
"confirmed": {
"type": "boolean",
"description": "whether enrolment was confirmed"
},
"cancelled": {
"type": "boolean",
"description": "whether enrolment was cancelled"
},
"created_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The collaborator who created enrolment"
},
"created": {
"type": "string",
"description": "Created at timestamp according RFC 3339"
},
"updated": {
"type": "string",
"description": "Updated at timestamp according RFC 3339"
}
},
"required": [
"beeple_id",
"contract_type"
]
}
}
}
200
Modify an enrolmentPATCH/enrolments
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"enrolment": {
"beeple_id": 3,
"collaborator": {
"beeple_id": 3,
"first_name": "John",
"last_name": "Doe",
"prefix": "Mr",
"email": "John-doe@example.com"
},
"project": {
"beeple_id": 3,
"name": "test"
},
"subproject": {
"beeple_id": 3,
"name": "test"
},
"team": {
"beeple_id": 3,
"name": "test"
},
"department": {
"beeple_id": "3",
"name": "test"
},
"planned_shifts": [
{
"beeple_id": "5545",
"start_datetime": "2017-07-05T15:30Z",
"end_datetime": "2017-07-05T21:30Z",
"break_duration": "00:30"
}
],
"work_station_address": {
"beeple_id": "3",
"name": "test",
"street1": "stationstraat",
"street2": "1",
"zip": 2000,
"city": "Antwerpen",
"country": "BE",
"addition": 2000,
"latlon_lat": 41.2321,
"latlon_lon": 23.1234
},
"function": {
"beeple_id": 3,
"name": "test"
},
"contract_type": "interim",
"wages": {
"per_hour": 10,
"per_day": 80,
"per_team": 10
},
"wage_scale": "Per age",
"invitation": {
"beeple_id": "1a9b10c0-3eac-43f2-9f5a-a4e24b7d1aae",
"status": "accepted",
"sent_at": "2017-09-07T11:06:56.300Z",
"expires_at": "2017-09-07T11:06:56.300Z"
},
"commute_distance_in_km": 1,
"enrolled_by_beeple_id": 422,
"draft_mode": true,
"confirmed": true,
"cancelled": true,
"created_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"created": "2017-09-07T11:06:56.300Z",
"updated": "2017-09-07T11:06:56.300Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"enrolment": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "ID Of the enrolment"
},
"collaborator": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Collaborator ID"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"prefix": {
"type": "string",
"description": "Prefix"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"beeple_id",
"first_name",
"last_name",
"prefix"
]
},
"project": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Project ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"subproject": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Subproject ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"team": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Team ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"department": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "Department ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"planned_shifts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "ID of the shift"
},
"start_datetime": {
"type": "string",
"description": "When the shift starts according RFC 3339."
},
"end_datetime": {
"type": "string",
"description": "When the shift stops according RFC 3339."
},
"break_duration": {
"type": "string",
"description": "Total planned break duration in HH:MM."
}
}
}
},
"work_station_address": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "Address ID"
},
"name": {
"type": "string",
"description": "Name of the address"
},
"street1": {
"type": "string",
"description": "Street + house number"
},
"street2": {
"type": "string",
"description": "Extension of street1"
},
"zip": {
"type": "number"
},
"city": {
"type": "string"
},
"country": {
"type": "string",
"description": "According to ISO 3166-1 alpha-2"
},
"addition": {
"type": "number",
"description": "Additional information about the work station"
},
"latlon_lat": {
"type": "number",
"description": "Geo Coordinates latitude of address."
},
"latlon_lon": {
"type": "number",
"description": "Geo Coordinates longitude of address."
}
},
"required": [
"beeple_id",
"street1",
"street2",
"zip",
"city",
"country",
"addition"
]
},
"function": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Function ID"
},
"name": {
"type": "string",
"description": "Name"
}
},
"required": [
"beeple_id"
]
},
"contract_type": {
"type": "string",
"description": "Contract type"
},
"wages": {
"type": "object",
"properties": {
"per_hour": {
"type": "number",
"description": "Compensation per hour"
},
"per_day": {
"type": "number",
"description": "Compensation per day"
},
"per_team": {
"type": "number",
"description": "Compensation per team"
}
}
},
"wage_scale": {
"type": "string",
"description": "Wage scale code"
},
"invitation": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "UUID of the invitation"
},
"status": {
"type": "string",
"description": "Status of the invitation"
},
"sent_at": {
"type": "string",
"description": "Invitation sent timestamp"
},
"expires_at": {
"type": "string",
"description": "Invitation expiration timestamp"
}
}
},
"commute_distance_in_km": {
"type": "number",
"description": "Commute distance in km"
},
"enrolled_by_beeple_id": {
"type": "number",
"description": "ID of the collaborator that made the enrolment (can be empty)"
},
"draft_mode": {
"type": "boolean",
"description": "Indicates if enrolment is in draft mode"
},
"confirmed": {
"type": "boolean",
"description": "whether enrolment was confirmed"
},
"cancelled": {
"type": "boolean",
"description": "whether enrolment was cancelled"
},
"created_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The collaborator who created enrolment"
},
"created": {
"type": "string",
"description": "Created at timestamp according RFC 3339"
},
"updated": {
"type": "string",
"description": "Updated at timestamp according RFC 3339"
}
},
"required": [
"beeple_id",
"contract_type"
]
}
}
}
200
Worked Hours ¶
Hour registration ¶
This webhook is sent every time an hour registration is approved within Beeple.
Register hoursPATCH/worked_hours
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91",
"enterprise_number": "0101010101",
"payroll_service_id": "5"
},
"contract": {
"beeple_id": 87643,
"collaborator": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"project": {
"beeple_id": 31324,
"name": "Example Project",
"description": "Description of example project",
"start_date": "2017-08-15",
"end_date": "2017-09-15",
"published": true
},
"subproject": {
"beeple_id": 12412,
"name": "Example subproject"
},
"team": {
"beeple_id": 34513,
"name": "Example Team"
},
"shift": {
"beeple_id": 39512,
"start_datetime": "2022-07-01T10:00:00Z",
"end_datetime": "2022-07-01T15:00:00Z",
"break_duration": "01:00"
}
},
"worked_hours": {
"beeple_id": 87643,
"code": "other",
"start": "2017-04-01T10:10:00.000+02:00",
"end": "2017-04-01T19:05:00.000+02:00",
"duration": "08:55",
"break_duration": "00:30",
"work_duration": "08:25",
"remark": "Reviewed by Adam and approved by Betsy",
"absent": false,
"absence_reason": {
"description": "Illness",
"code": "ABC1"
},
"confirmed_at": "2017-04-01T10:10:00.000+02:00",
"confirmed_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"payments": [
{
"beeple_id": "42",
"reference": "aa-bb",
"amount": 400.5,
"date_of_event": "2022-12-05",
"source_type": "compensation-day",
"status": "01-to-be-sent"
}
]
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
},
"enterprise_number": {
"type": "string",
"description": "Enterprise number of this company"
},
"payroll_service_id": {
"type": "string",
"description": "A payroll service ID."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"contract": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"collaborator": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "Collaborator of the contract"
},
"project": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the project (max 255 characters)"
},
"description": {
"type": "string",
"description": "A description of the project"
},
"start_date": {
"type": "string",
"description": "Start date of the project in YYYY-MM-DD"
},
"end_date": {
"type": "string",
"description": "End date of the project in YYYY-MM-DD"
},
"published": {
"type": "boolean",
"description": "Indication whether the project is published"
}
},
"required": [
"beeple_id",
"name",
"description",
"start_date",
"end_date",
"published"
],
"description": "project info"
},
"subproject": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the subproject"
}
},
"required": [
"beeple_id",
"name"
],
"description": "subproject info"
},
"team": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the team"
}
},
"required": [
"beeple_id",
"name"
],
"description": "team info"
},
"shift": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"start_datetime": {
"type": "string",
"description": "A start time of the shift in ISO 8601 format"
},
"end_datetime": {
"type": "string",
"description": "An end time of the shift in ISO 8601 format"
},
"break_duration": {
"type": "string",
"description": "Duration of shift's break"
}
},
"required": [
"beeple_id",
"start_datetime",
"end_datetime",
"break_duration"
],
"description": "shift info"
}
},
"required": [
"beeple_id"
],
"description": "Contract for which worked hours are reported"
}
},
"oneOf": [
{
"properties": {
"worked_hours": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"code": {
"type": "string",
"enum": [
"other",
"collaborator",
"planned"
],
"description": "Which hours are approved."
},
"start": {
"type": "string",
"description": "When the collaborator started working for the reported shift according RFC 3339."
},
"end": {
"type": "string",
"description": "When the collaborator stopped working for the reported shift according RFC 3339."
},
"duration": {
"type": "string",
"description": "How long the collaborator was present in the reported shift according RFC 3339."
},
"break_duration": {
"type": "string",
"description": "How long the collaborator didn't to work in the reported shift according RFC 3339. Can be 00:00."
},
"work_duration": {
"type": "string",
"description": "How long the collaborator worked in the reported shift according RFC 3339. Can be 00:00."
},
"remark": {
"type": "string",
"description": "Any remarks saved with the worked hour"
},
"absent": {
"type": "boolean",
"description": "true if the collaborator was absent, false otherwise"
},
"confirmed_at": {
"type": "string",
"description": "When the worked hour was confirmed according RFC 3339."
},
"confirmed_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The collaborator who confirmed worked hour"
},
"payments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "The ID of the transaction"
},
"reference": {
"type": "string",
"description": "A referece. Not guaranteed to be unique"
},
"amount": {
"type": "number",
"description": "The amount of the transaction"
},
"date_of_event": {
"type": "string",
"description": "The ISO date of the transaction"
},
"source_type": {
"type": "string",
"description": "The origin of the compensation"
},
"status": {
"type": "string",
"description": "A status indication"
}
},
"required": [
"beeple_id",
"reference",
"amount",
"date_of_event",
"source_type",
"status"
]
},
"description": "List of payments for this worked hour"
},
"absence_reason": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "The absence reason description"
},
"code": {
"type": "string",
"description": "The code assigned for the absence reason for this payroll integration"
}
},
"description": "Only sent if collaborator was absent"
}
},
"required": [
"beeple_id",
"start",
"end",
"duration",
"break_duration"
],
"description": "Sent regardless of the collaborator being absent"
}
}
}
]
}
200
Hour unapproved ¶
This webhook is sent every time an hour registration is unapproved within Beeple.
Unapprove hourPOST/worked_hours_unapproved
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91",
"enterprise_number": "0101010101",
"payroll_service_id": "5"
},
"contract": {
"beeple_id": 87643,
"collaborator": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"project": {
"beeple_id": 31324,
"name": "Example Project",
"description": "Description of example project",
"start_date": "2017-08-15",
"end_date": "2017-09-15",
"published": true
},
"subproject": {
"beeple_id": 12412,
"name": "Example subproject"
},
"team": {
"beeple_id": 34513,
"name": "Example Team"
},
"shift": {
"beeple_id": 39512,
"start_datetime": "2022-07-01T10:00:00Z",
"end_datetime": "2022-07-01T15:00:00Z",
"break_duration": "01:00"
}
},
"worked_hours": {
"beeple_id": 87643,
"code": "other",
"start": "2017-04-01T10:10:00.000+02:00",
"end": "2017-04-01T19:05:00.000+02:00",
"duration": "08:55",
"break_duration": "00:30",
"work_duration": "08:25",
"remark": "Reviewed by Adam and approved by Betsy",
"absent": false,
"absence_reason": {
"description": "Illness",
"code": "ABC1"
},
"confirmed_at": "2017-04-01T10:10:00.000+02:00",
"confirmed_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"payments": [
{
"beeple_id": "42",
"reference": "aa-bb",
"amount": 400.5,
"date_of_event": "2022-12-05",
"source_type": "compensation-day",
"status": "01-to-be-sent"
}
]
},
"unapproved_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"unapproved_at": "2017-04-01T10:10:00.000+02:00"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
},
"enterprise_number": {
"type": "string",
"description": "Enterprise number of this company"
},
"payroll_service_id": {
"type": "string",
"description": "A payroll service ID."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"contract": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"collaborator": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "Collaborator of the contract"
},
"project": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the project (max 255 characters)"
},
"description": {
"type": "string",
"description": "A description of the project"
},
"start_date": {
"type": "string",
"description": "Start date of the project in YYYY-MM-DD"
},
"end_date": {
"type": "string",
"description": "End date of the project in YYYY-MM-DD"
},
"published": {
"type": "boolean",
"description": "Indication whether the project is published"
}
},
"required": [
"beeple_id",
"name",
"description",
"start_date",
"end_date",
"published"
],
"description": "project info"
},
"subproject": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the subproject"
}
},
"required": [
"beeple_id",
"name"
],
"description": "subproject info"
},
"team": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the team"
}
},
"required": [
"beeple_id",
"name"
],
"description": "team info"
},
"shift": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"start_datetime": {
"type": "string",
"description": "A start time of the shift in ISO 8601 format"
},
"end_datetime": {
"type": "string",
"description": "An end time of the shift in ISO 8601 format"
},
"break_duration": {
"type": "string",
"description": "Duration of shift's break"
}
},
"required": [
"beeple_id",
"start_datetime",
"end_datetime",
"break_duration"
],
"description": "shift info"
}
},
"required": [
"beeple_id"
],
"description": "Contract for which worked hours are reported"
},
"unapproved_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "Admin info who unapproved worked hour"
},
"unapproved_at": {
"type": "string",
"description": "When worked hour was unapproved"
}
},
"oneOf": [
{
"properties": {
"worked_hours": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"code": {
"type": "string",
"enum": [
"other",
"collaborator",
"planned"
],
"description": "Which hours are approved."
},
"start": {
"type": "string",
"description": "When the collaborator started working for the reported shift according RFC 3339."
},
"end": {
"type": "string",
"description": "When the collaborator stopped working for the reported shift according RFC 3339."
},
"duration": {
"type": "string",
"description": "How long the collaborator was present in the reported shift according RFC 3339."
},
"break_duration": {
"type": "string",
"description": "How long the collaborator didn't to work in the reported shift according RFC 3339. Can be 00:00."
},
"work_duration": {
"type": "string",
"description": "How long the collaborator worked in the reported shift according RFC 3339. Can be 00:00."
},
"remark": {
"type": "string",
"description": "Any remarks saved with the worked hour"
},
"absent": {
"type": "boolean",
"description": "true if the collaborator was absent, false otherwise"
},
"confirmed_at": {
"type": "string",
"description": "When the worked hour was confirmed according RFC 3339."
},
"confirmed_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The collaborator who confirmed worked hour"
},
"payments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"beeple_id": {
"type": "string",
"description": "The ID of the transaction"
},
"reference": {
"type": "string",
"description": "A referece. Not guaranteed to be unique"
},
"amount": {
"type": "number",
"description": "The amount of the transaction"
},
"date_of_event": {
"type": "string",
"description": "The ISO date of the transaction"
},
"source_type": {
"type": "string",
"description": "The origin of the compensation"
},
"status": {
"type": "string",
"description": "A status indication"
}
},
"required": [
"beeple_id",
"reference",
"amount",
"date_of_event",
"source_type",
"status"
]
},
"description": "List of payments for this worked hour"
},
"absence_reason": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "The absence reason description"
},
"code": {
"type": "string",
"description": "The code assigned for the absence reason for this payroll integration"
}
},
"description": "Only sent if collaborator was absent"
}
},
"required": [
"beeple_id",
"start",
"end",
"duration",
"break_duration"
],
"description": "Sent regardless of the collaborator being absent"
}
}
}
]
}
200
Costs ¶
Cost approved ¶
This webhook is sent every time an cost (allocated premium) is approved within Beeple.
Cost approvedPOST/cost-webhook-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"contract": {
"beeple_id": 87643,
"collaborator": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"project": {
"beeple_id": 31324,
"name": "Example Project",
"description": "Description of example project",
"start_date": "2017-08-15",
"end_date": "2017-09-15",
"published": true
},
"subproject": {
"beeple_id": 12412,
"name": "Example subproject"
},
"team": {
"beeple_id": 34513,
"name": "Example Team"
},
"shift": {
"beeple_id": 39512,
"start_datetime": "2022-07-01T10:00:00Z",
"end_datetime": "2022-07-01T15:00:00Z",
"break_duration": "01:00"
}
},
"cost": {
"beeple_id": 87643,
"premium": {
"id": "454",
"premium_type": "expense",
"unit": "day",
"default_calculation_type": "currency",
"default_value premium.default_value": 45,
"proof_mandatory premium.proof_mandatory": "Hello, world!",
"name": "An example",
"description": "Example description",
"public": false,
"volunteer_can_add": false
},
"name": "name",
"description": "description",
"code": "other",
"amount": 1.4,
"total": 2.5,
"units": 1.3,
"approved": "2017-04-01T10:10:00.000+02:00",
"confirmed_at": "2017-04-01T10:10:00.000+02:00",
"confirmed_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
}
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"contract": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"collaborator": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "Collaborator of the contract"
},
"project": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the project (max 255 characters)"
},
"description": {
"type": "string",
"description": "A description of the project"
},
"start_date": {
"type": "string",
"description": "Start date of the project in YYYY-MM-DD"
},
"end_date": {
"type": "string",
"description": "End date of the project in YYYY-MM-DD"
},
"published": {
"type": "boolean",
"description": "Indication whether the project is published"
}
},
"required": [
"beeple_id",
"name",
"description",
"start_date",
"end_date",
"published"
],
"description": "project info"
},
"subproject": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the subproject"
}
},
"required": [
"beeple_id",
"name"
],
"description": "subproject info"
},
"team": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the team"
}
},
"required": [
"beeple_id",
"name"
],
"description": "team info"
},
"shift": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"start_datetime": {
"type": "string",
"description": "A start time of the shift in ISO 8601 format"
},
"end_datetime": {
"type": "string",
"description": "An end time of the shift in ISO 8601 format"
},
"break_duration": {
"type": "string",
"description": "Duration of shift's break"
}
},
"required": [
"beeple_id",
"start_datetime",
"end_datetime",
"break_duration"
],
"description": "shift info"
}
},
"required": [
"beeple_id"
],
"description": "Contract for which worked hours are reported"
},
"cost": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"premium": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID of the premium"
},
"premium_type": {
"type": "string",
"enum": [
"expense",
"premium"
],
"description": "The type of premium (either expense, or premium)"
},
"unit": {
"type": "string",
"enum": [
"day",
"hour",
"km",
"unit"
],
"description": "How the premium is allocated"
},
"default_calculation_type": {
"type": "string",
"enum": [
"currency"
],
"description": "How the premium is calculated"
},
"default_value premium.default_value": {
"type": "number",
"description": "The default allocated value"
},
"proof_mandatory premium.proof_mandatory": {
"type": "string"
},
"name": {
"type": "string",
"description": "The name"
},
"description": {
"type": "string",
"description": "The description"
},
"public": {
"type": "boolean",
"description": "If the premium is visible to the collaborator"
},
"volunteer_can_add": {
"type": "boolean",
"description": "If the cost/premium can be reported by the collaborator as unforeseen"
}
},
"required": [
"id",
"premium_type",
"unit",
"default_calculation_type",
"name",
"description",
"public"
],
"description": "cost parameters."
},
"name": {
"type": "string",
"description": "cost name"
},
"description": {
"type": "string",
"description": "cost description"
},
"code": {
"type": "string",
"enum": [
"other",
"collaborator"
],
"description": "Which cost is approved."
},
"amount": {
"type": "number",
"description": "amount"
},
"total": {
"type": "number",
"description": "Total amount"
},
"units": {
"type": "number",
"description": "Measurement unit"
},
"approved": {
"type": "string",
"description": "When the cost was confirmed according RFC 3339."
},
"confirmed_at": {
"type": "string",
"description": "When the cost was confirmed according RFC 3339."
},
"confirmed_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "Info about user who confirmed the cost"
}
},
"required": [
"beeple_id"
],
"description": "Sent regardless of the collaborator being absent"
}
}
}
200
Cost unapproved ¶
This webhook is sent every time an cost (allocated premium) is unapproved within Beeple.
Cost unapprovedPOST/cost-unapproved-webhook-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"contract": {
"beeple_id": 87643,
"collaborator": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"project": {
"beeple_id": 31324,
"name": "Example Project",
"description": "Description of example project",
"start_date": "2017-08-15",
"end_date": "2017-09-15",
"published": true
},
"subproject": {
"beeple_id": 12412,
"name": "Example subproject"
},
"team": {
"beeple_id": 34513,
"name": "Example Team"
},
"shift": {
"beeple_id": 39512,
"start_datetime": "2022-07-01T10:00:00Z",
"end_datetime": "2022-07-01T15:00:00Z",
"break_duration": "01:00"
}
},
"cost": {
"beeple_id": 87643,
"premium": {
"id": "454",
"premium_type": "expense",
"unit": "day",
"default_calculation_type": "currency",
"default_value premium.default_value": 45,
"proof_mandatory premium.proof_mandatory": "Hello, world!",
"name": "An example",
"description": "Example description",
"public": false,
"volunteer_can_add": false
},
"name": "name",
"description": "description",
"code": "other",
"amount": 1.4,
"total": 2.5,
"units": 1.3,
"approved": "2017-04-01T10:10:00.000+02:00",
"confirmed_at": "2017-04-01T10:10:00.000+02:00",
"confirmed_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
}
},
"unapproved_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"unapproved_at": "2017-04-01T10:10:00.000+02:00"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"contract": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"collaborator": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "Collaborator of the contract"
},
"project": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the project (max 255 characters)"
},
"description": {
"type": "string",
"description": "A description of the project"
},
"start_date": {
"type": "string",
"description": "Start date of the project in YYYY-MM-DD"
},
"end_date": {
"type": "string",
"description": "End date of the project in YYYY-MM-DD"
},
"published": {
"type": "boolean",
"description": "Indication whether the project is published"
}
},
"required": [
"beeple_id",
"name",
"description",
"start_date",
"end_date",
"published"
],
"description": "project info"
},
"subproject": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the subproject"
}
},
"required": [
"beeple_id",
"name"
],
"description": "subproject info"
},
"team": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the team"
}
},
"required": [
"beeple_id",
"name"
],
"description": "team info"
},
"shift": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"start_datetime": {
"type": "string",
"description": "A start time of the shift in ISO 8601 format"
},
"end_datetime": {
"type": "string",
"description": "An end time of the shift in ISO 8601 format"
},
"break_duration": {
"type": "string",
"description": "Duration of shift's break"
}
},
"required": [
"beeple_id",
"start_datetime",
"end_datetime",
"break_duration"
],
"description": "shift info"
}
},
"required": [
"beeple_id"
],
"description": "Contract for which worked hours are reported"
},
"cost": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"premium": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "ID of the premium"
},
"premium_type": {
"type": "string",
"enum": [
"expense",
"premium"
],
"description": "The type of premium (either expense, or premium)"
},
"unit": {
"type": "string",
"enum": [
"day",
"hour",
"km",
"unit"
],
"description": "How the premium is allocated"
},
"default_calculation_type": {
"type": "string",
"enum": [
"currency"
],
"description": "How the premium is calculated"
},
"default_value premium.default_value": {
"type": "number",
"description": "The default allocated value"
},
"proof_mandatory premium.proof_mandatory": {
"type": "string"
},
"name": {
"type": "string",
"description": "The name"
},
"description": {
"type": "string",
"description": "The description"
},
"public": {
"type": "boolean",
"description": "If the premium is visible to the collaborator"
},
"volunteer_can_add": {
"type": "boolean",
"description": "If the cost/premium can be reported by the collaborator as unforeseen"
}
},
"required": [
"id",
"premium_type",
"unit",
"default_calculation_type",
"name",
"description",
"public"
],
"description": "cost parameters."
},
"name": {
"type": "string",
"description": "cost name"
},
"description": {
"type": "string",
"description": "cost description"
},
"code": {
"type": "string",
"enum": [
"other",
"collaborator"
],
"description": "Which cost is approved."
},
"amount": {
"type": "number",
"description": "amount"
},
"total": {
"type": "number",
"description": "Total amount"
},
"units": {
"type": "number",
"description": "Measurement unit"
},
"approved": {
"type": "string",
"description": "When the cost was confirmed according RFC 3339."
},
"confirmed_at": {
"type": "string",
"description": "When the cost was confirmed according RFC 3339."
},
"confirmed_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "Info about user who confirmed the cost"
}
},
"required": [
"beeple_id"
],
"description": "Sent regardless of the collaborator being absent"
},
"unapproved_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "Admin info who unapproved worked hour"
},
"unapproved_at": {
"type": "string",
"description": "When worked hour was unapproved"
}
}
}
200
Unplanned Cost approved ¶
This webhook is sent every time an unplanned cost (unplanned allocated premium) is approved within Beeple.
Unplanned Cost approvedPOST/unplanned_costs
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"unplanned_cost": {
"collaborator_id": 123,
"premium_id": 123,
"value": 1,
"units": 1,
"confirmed": true
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"unplanned_cost": {
"type": "object",
"properties": {
"collaborator_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"premium_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"value": {
"type": "number",
"description": "Total amount"
},
"units": {
"type": "number",
"description": "Measurement unit"
},
"confirmed": {
"type": "boolean",
"description": "set to true when the unplanned cost is approved. False when rejected."
}
},
"required": [
"collaborator_id",
"premium_id"
],
"description": "Sent regardless of the collaborator being absent"
}
}
}
200
Unplanned Cost unapproved ¶
This webhook is sent every time an unplanned cost (unplanned allocated premium) is unapproved within Beeple.
Unplanned Cost unapprovedPOST/unplanned-cost-unapproved-webhook-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"unplanned_cost": {
"collaborator_id": 123,
"premium_id": 123,
"value": 1,
"units": 1,
"confirmed": true
},
"unapproved_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"unapproved_at": "2017-04-01T10:10:00.000+02:00"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"unplanned_cost": {
"type": "object",
"properties": {
"collaborator_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"premium_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"value": {
"type": "number",
"description": "Total amount"
},
"units": {
"type": "number",
"description": "Measurement unit"
},
"confirmed": {
"type": "boolean",
"description": "set to true when the unplanned cost is approved. False when rejected."
}
},
"required": [
"collaborator_id",
"premium_id"
],
"description": "Sent regardless of the collaborator being absent"
},
"unapproved_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "Admin info who unapproved worked hour"
},
"unapproved_at": {
"type": "string",
"description": "When worked hour was unapproved"
}
}
}
200
Availabilities ¶
Availability ¶
This webhook is sent every time a availability is created/deleted/updated within Beeple
Create a availabilityPOST/availabilities
Example URI
Headers
Content-Type: application/json
Body
{
"id": "1",
"beeple_id": "1025",
"day_part_id": "1",
"availability_type_id": "1",
"start": "2017-04-01T06:00:00",
"end": "2017-04-01T14:00:00",
"start_time": "06:00",
"end_time": "14:00",
"available": true,
"id_availability_type": "5",
"name": "Holiday",
"description": "Holiday",
"remark": "Comment",
"requested_at": "2017-01-01T14:35:25",
"requested_by": "1625",
"confirmed_at": "2017-01-01T18:35:25",
"status": "approved",
"approved_by": "1665",
"beeple_approval_status": "approved",
"payroll_approval_status": "approved",
"pieces_of_evidence": [
{
"id": "546",
"filename": "Maternity_leave.pdf",
"url": "https://my.beeple.eu/evidences/87234",
"uploaded_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"uploaded_at": "2020-04-01T19:05:00.000+02:00"
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the collaborator availability"
},
"beeple_id": {
"type": "string",
"description": "Collaborator ID of the person (un)available"
},
"day_part_id": {
"type": "string",
"description": "The id of a Day Part"
},
"availability_type_id": {
"type": "string",
"description": "The id of the Availability Type associated with this collaborator availability"
},
"start": {
"type": "string",
"description": "The start time"
},
"end": {
"type": "string",
"description": "The end time"
},
"start_time": {
"type": "string",
"description": "Time of availability start in HH:MM 24 hour format"
},
"end_time": {
"type": "string",
"description": "Time of availability end in HH:MM 24 hour format"
},
"available": {
"type": "boolean",
"description": "If the availability indicates available or unavailable"
},
"id_availability_type": {
"type": "string",
"description": "The type of Availability ID"
},
"name": {
"type": "string",
"description": "The name of the availability"
},
"description": {
"type": "string",
"description": "The description of the availability"
},
"remark": {
"type": "string",
"description": "A comment/remark given"
},
"requested_at": {
"type": "string",
"description": "The time of the creation"
},
"requested_by": {
"type": "string",
"description": "Collaborator ID of the requestor"
},
"confirmed_at": {
"type": "string",
"description": "The time of the confirmation"
},
"status": {
"type": "string",
"description": "The status"
},
"approved_by": {
"type": "string",
"description": "Collaborator ID of the approver"
},
"beeple_approval_status": {
"type": "string",
"description": "The status for the in-beeple approval"
},
"payroll_approval_status": {
"type": "string",
"description": "The status for the payroll approval"
},
"pieces_of_evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the evidence file"
},
"filename": {
"type": "string",
"description": "The name of the file"
},
"url": {
"type": "string",
"description": "an url where an API client my download a copy of the file. Note that this URL is only temporary valid"
},
"uploaded_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who created the piece of evidence"
},
"uploaded_at": {
"type": "string",
"description": "the time stamp when the counter event was recorded according RFC 3339."
}
},
"required": [
"uploaded_at"
]
}
}
},
"required": [
"id",
"start_time",
"end_time"
]
}
200
Delete a availabilityDELETE/availabilities
Example URI
Headers
Content-Type: application/json
Body
{
"id": "1234"
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "the ID of the availability"
}
}
}
200
Modify a availabilityPATCH/availabilities
Example URI
Headers
Content-Type: application/json
Body
{
"id": "1",
"beeple_id": "1025",
"day_part_id": "1",
"availability_type_id": "1",
"start": "2017-04-01T06:00:00",
"end": "2017-04-01T14:00:00",
"start_time": "06:00",
"end_time": "14:00",
"available": true,
"id_availability_type": "5",
"name": "Holiday",
"description": "Holiday",
"remark": "Comment",
"requested_at": "2017-01-01T14:35:25",
"requested_by": "1625",
"confirmed_at": "2017-01-01T18:35:25",
"status": "approved",
"approved_by": "1665",
"beeple_approval_status": "approved",
"payroll_approval_status": "approved",
"pieces_of_evidence": [
{
"id": "546",
"filename": "Maternity_leave.pdf",
"url": "https://my.beeple.eu/evidences/87234",
"uploaded_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"uploaded_at": "2020-04-01T19:05:00.000+02:00"
}
]
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the collaborator availability"
},
"beeple_id": {
"type": "string",
"description": "Collaborator ID of the person (un)available"
},
"day_part_id": {
"type": "string",
"description": "The id of a Day Part"
},
"availability_type_id": {
"type": "string",
"description": "The id of the Availability Type associated with this collaborator availability"
},
"start": {
"type": "string",
"description": "The start time"
},
"end": {
"type": "string",
"description": "The end time"
},
"start_time": {
"type": "string",
"description": "Time of availability start in HH:MM 24 hour format"
},
"end_time": {
"type": "string",
"description": "Time of availability end in HH:MM 24 hour format"
},
"available": {
"type": "boolean",
"description": "If the availability indicates available or unavailable"
},
"id_availability_type": {
"type": "string",
"description": "The type of Availability ID"
},
"name": {
"type": "string",
"description": "The name of the availability"
},
"description": {
"type": "string",
"description": "The description of the availability"
},
"remark": {
"type": "string",
"description": "A comment/remark given"
},
"requested_at": {
"type": "string",
"description": "The time of the creation"
},
"requested_by": {
"type": "string",
"description": "Collaborator ID of the requestor"
},
"confirmed_at": {
"type": "string",
"description": "The time of the confirmation"
},
"status": {
"type": "string",
"description": "The status"
},
"approved_by": {
"type": "string",
"description": "Collaborator ID of the approver"
},
"beeple_approval_status": {
"type": "string",
"description": "The status for the in-beeple approval"
},
"payroll_approval_status": {
"type": "string",
"description": "The status for the payroll approval"
},
"pieces_of_evidence": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the evidence file"
},
"filename": {
"type": "string",
"description": "The name of the file"
},
"url": {
"type": "string",
"description": "an url where an API client my download a copy of the file. Note that this URL is only temporary valid"
},
"uploaded_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who created the piece of evidence"
},
"uploaded_at": {
"type": "string",
"description": "the time stamp when the counter event was recorded according RFC 3339."
}
},
"required": [
"uploaded_at"
]
}
}
},
"required": [
"id",
"start_time",
"end_time"
]
}
200
Teams ¶
Team ¶
This webhook is sent every time a team is created/deleted/updated within Beeple
Beeple servers send a webhook when event happens to the specified integration url. Admins has ability to configure the specified integration url in the Admin Settings -> Modules -> Integrations section by adding an integration with a selected type and url so that Beeple could send HTTP request to the URL they specify.
Team is createdPOST/teams-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"team": {
"id": "2244",
"name": "Example Team",
"project": {
"beeple_id": 31324,
"name": "Example Project",
"description": "Description of example project",
"start_date": "2017-08-15",
"end_date": "2017-09-15",
"published": true
},
"volunteers_needed": "1",
"work_location_id": "volunteer",
"client_id": "volunteer",
"department_id": "volunteer",
"contract_type": "volunteer",
"function": {
"beeple_id": 39512,
"name": "Example function",
"description": "Some function description"
},
"shifts": [
{
"beeple_id": 39512,
"start_datetime": "2022-07-01T10:00:00Z",
"end_datetime": "2022-07-01T15:00:00Z",
"break_duration": "01:00"
}
],
"created_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"created": "2022-06-21T13:59:27Z",
"updated_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the team"
},
"name": {
"type": "string",
"description": "The name of the team"
},
"project": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the project (max 255 characters)"
},
"description": {
"type": "string",
"description": "A description of the project"
},
"start_date": {
"type": "string",
"description": "Start date of the project in YYYY-MM-DD"
},
"end_date": {
"type": "string",
"description": "End date of the project in YYYY-MM-DD"
},
"published": {
"type": "boolean",
"description": "Indication whether the project is published"
}
},
"required": [
"beeple_id",
"name",
"description",
"start_date",
"end_date",
"published"
]
},
"volunteers_needed": {
"type": "string",
"description": "Amount of collaborators needed"
},
"work_location_id": {
"type": "string",
"description": "Workstation id"
},
"client_id": {
"type": "string",
"description": "Customer id (customer module)"
},
"department_id": {
"type": "string",
"description": "Department id (of the project)"
},
"contract_type": {
"type": "string",
"description": "Contract type of the team"
},
"function": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the function"
},
"description": {
"type": "string",
"description": "The description of the function"
}
},
"required": [
"beeple_id",
"name",
"description"
]
},
"shifts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"start_datetime": {
"type": "string",
"description": "A start time of the shift in ISO 8601 format"
},
"end_datetime": {
"type": "string",
"description": "An end time of the shift in ISO 8601 format"
},
"break_duration": {
"type": "string",
"description": "Duration of shift's break"
}
},
"required": [
"beeple_id",
"start_datetime",
"end_datetime",
"break_duration"
]
},
"description": "Team shifts"
},
"created_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who created the team"
},
"created": {
"type": "string",
"description": "Time of when team was created in ISO 8601 format"
},
"updated_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who updated the team"
},
"updated": {
"type": "string",
"description": "Time of when team was updated in ISO 8601 format"
}
},
"required": [
"id",
"name",
"volunteers_needed",
"work_location_id",
"client_id",
"department_id",
"contract_type",
"created",
"updated"
],
"description": "Details of the team"
}
}
}
200
Team is deletedDELETE/teams-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"team": {
"id": "2244",
"updated": "2022-06-21T13:59:27Z",
"project": {
"beeple_id": 31324,
"name": "Example Project",
"description": "Description of example project",
"start_date": "2017-08-15",
"end_date": "2017-09-15",
"published": true
},
"subproject": {
"beeple_id": 12412,
"name": "Example subproject"
},
"shifts": [
{
"beeple_id": 39512,
"start_datetime": "2022-07-01T10:00:00Z",
"end_datetime": "2022-07-01T15:00:00Z",
"break_duration": "01:00"
}
]
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the team"
},
"updated": {
"type": "string",
"description": "Time of when team was deleted in ISO 8601 format"
},
"project": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the project (max 255 characters)"
},
"description": {
"type": "string",
"description": "A description of the project"
},
"start_date": {
"type": "string",
"description": "Start date of the project in YYYY-MM-DD"
},
"end_date": {
"type": "string",
"description": "End date of the project in YYYY-MM-DD"
},
"published": {
"type": "boolean",
"description": "Indication whether the project is published"
}
},
"required": [
"beeple_id",
"name",
"description",
"start_date",
"end_date",
"published"
]
},
"subproject": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the subproject"
}
},
"required": [
"beeple_id",
"name"
]
},
"shifts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"start_datetime": {
"type": "string",
"description": "A start time of the shift in ISO 8601 format"
},
"end_datetime": {
"type": "string",
"description": "An end time of the shift in ISO 8601 format"
},
"break_duration": {
"type": "string",
"description": "Duration of shift's break"
}
},
"required": [
"beeple_id",
"start_datetime",
"end_datetime",
"break_duration"
]
},
"description": "Team shifts"
}
},
"required": [
"id",
"updated"
]
}
}
}
200
Team is updatedPATCH/teams-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"team": {
"id": "2244",
"name": "Example Team",
"project": {
"beeple_id": 31324,
"name": "Example Project",
"description": "Description of example project",
"start_date": "2017-08-15",
"end_date": "2017-09-15",
"published": true
},
"volunteers_needed": "1",
"work_location_id": "volunteer",
"client_id": "volunteer",
"department_id": "volunteer",
"contract_type": "volunteer",
"function": {
"beeple_id": 39512,
"name": "Example function",
"description": "Some function description"
},
"shifts": [
{
"beeple_id": 39512,
"start_datetime": "2022-07-01T10:00:00Z",
"end_datetime": "2022-07-01T15:00:00Z",
"break_duration": "01:00"
}
],
"created_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"created": "2022-06-21T13:59:27Z",
"updated_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the team"
},
"name": {
"type": "string",
"description": "The name of the team"
},
"project": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the project (max 255 characters)"
},
"description": {
"type": "string",
"description": "A description of the project"
},
"start_date": {
"type": "string",
"description": "Start date of the project in YYYY-MM-DD"
},
"end_date": {
"type": "string",
"description": "End date of the project in YYYY-MM-DD"
},
"published": {
"type": "boolean",
"description": "Indication whether the project is published"
}
},
"required": [
"beeple_id",
"name",
"description",
"start_date",
"end_date",
"published"
]
},
"volunteers_needed": {
"type": "string",
"description": "Amount of collaborators needed"
},
"work_location_id": {
"type": "string",
"description": "Workstation id"
},
"client_id": {
"type": "string",
"description": "Customer id (customer module)"
},
"department_id": {
"type": "string",
"description": "Department id (of the project)"
},
"contract_type": {
"type": "string",
"description": "Contract type of the team"
},
"function": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"name": {
"type": "string",
"description": "The name of the function"
},
"description": {
"type": "string",
"description": "The description of the function"
}
},
"required": [
"beeple_id",
"name",
"description"
]
},
"shifts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"beeple_id": {
"type": "number",
"description": "Identification number within Beeple"
},
"start_datetime": {
"type": "string",
"description": "A start time of the shift in ISO 8601 format"
},
"end_datetime": {
"type": "string",
"description": "An end time of the shift in ISO 8601 format"
},
"break_duration": {
"type": "string",
"description": "Duration of shift's break"
}
},
"required": [
"beeple_id",
"start_datetime",
"end_datetime",
"break_duration"
]
},
"description": "Team shifts"
},
"created_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who created the team"
},
"created": {
"type": "string",
"description": "Time of when team was created in ISO 8601 format"
},
"updated_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who updated the team"
},
"updated": {
"type": "string",
"description": "Time of when team was updated in ISO 8601 format"
}
},
"required": [
"id",
"name",
"volunteers_needed",
"work_location_id",
"client_id",
"department_id",
"contract_type",
"created",
"updated"
],
"description": "Details of the team"
}
}
}
200
Team Invitations ¶
Beeple servers send a webhook when event happens to the specified integration url. Admins has ability to configure the specified integration url in the Admin Settings -> Modules -> Integrations section by adding an integration with a selected type and url so that Beeple could send HTTP request to the URL they specify.
Team invitation created ¶
This webhook is sent every time a team invitation is created within Beeple
Team invitation is createdPOST/team-invitations-created-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"team_invitation": {
"id": "123",
"collaborator": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"team_id": "123",
"accepted": false,
"sent_at": "2025-04-10",
"expires_at": "2025-04-10"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"team_invitation": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the team invitation"
},
"collaborator": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The collaborator receiving the team invitation"
},
"team_id": {
"type": "string",
"description": "The ID of the team the invitation is for"
},
"accepted": {
"type": "boolean",
"description": "Indicates if the invitation has been accepted or not"
},
"sent_at": {
"type": "string",
"description": "Date when the invitation was sent to the collaborator"
},
"expires_at": {
"type": "string",
"description": "Expiration date of the invitation"
}
},
"required": [
"id",
"team_id",
"sent_at",
"expires_at"
],
"description": "Details of the team invitation."
}
}
}
200
Team invitation resent ¶
This webhook is sent every time a team invitation is resent within Beeple
Team invitation is resentPOST/team-invitations-resent-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"team_invitation": {
"id": "123",
"collaborator": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"team_id": "123",
"accepted": false,
"sent_at": "2025-04-10",
"expires_at": "2025-04-10"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"team_invitation": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the team invitation"
},
"collaborator": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The collaborator receiving the team invitation"
},
"team_id": {
"type": "string",
"description": "The ID of the team the invitation is for"
},
"accepted": {
"type": "boolean",
"description": "Indicates if the invitation has been accepted or not"
},
"sent_at": {
"type": "string",
"description": "Date when the invitation was sent to the collaborator"
},
"expires_at": {
"type": "string",
"description": "Expiration date of the invitation"
}
},
"required": [
"id",
"team_id",
"sent_at",
"expires_at"
],
"description": "Details of the team invitation."
}
}
}
200
Subprojects ¶
Subproject ¶
This webhook is sent every time a subproject is created/deleted/updated within Beeple
Beeple servers send a webhook when event happens to the specified integration url. Admins has ability to configure the specified integration url in the Admin Settings -> Modules -> Integrations section by adding an integration with a selected type and url so that Beeple could send HTTP request to the URL they specify.
Subproject is createdPOST/subprojects-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"subproject": {
"id": "2244",
"name": "Example subproject",
"project": {
"id": "2244",
"name": "Example project",
"description": "Description of example project"
},
"start_date": "2005-10-21",
"end_date": "2100-10-27",
"teams_are_published_by_default": false,
"default_number_of_collaborators": "1",
"registrations_count": "0",
"volunteers_needed": "2",
"created_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"created": "2022-06-21T13:59:27Z",
"updated_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"subproject": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the subproject"
},
"name": {
"type": "string",
"description": "The name of the subproject"
},
"project": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the project"
},
"name": {
"type": "string",
"description": "A name of the project"
},
"description": {
"type": "string",
"description": "A description of the project"
}
},
"required": [
"id",
"name",
"description"
]
},
"start_date": {
"type": "string",
"description": "Start date of the subproject"
},
"end_date": {
"type": "string",
"description": "End date of the subproject"
},
"teams_are_published_by_default": {
"type": "boolean",
"description": "Indicates whether teams are published by default or not"
},
"default_number_of_collaborators": {
"type": "string",
"description": "Numbers of collaborators set by default"
},
"registrations_count": {
"type": "string",
"description": "Number of registrations"
},
"volunteers_needed": {
"type": "string",
"description": "Number of needed volunteers"
},
"created_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who created the subproject"
},
"created": {
"type": "string",
"description": "Time of when subproject was created in ISO 8601 format"
},
"updated_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who updated the subproject"
},
"updated": {
"type": "string",
"description": "Time of when subproject was updated in ISO 8601 format"
}
},
"required": [
"id",
"name",
"start_date",
"end_date",
"teams_are_published_by_default",
"registrations_count",
"volunteers_needed",
"created",
"updated"
],
"description": "Details of the subproject"
}
}
}
200
Subproject is deletedDELETE/subprojects-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"subproject": {
"id": "2244",
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"subproject": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the subproject"
},
"updated": {
"type": "string",
"description": "Time of when subproject was deleted in ISO 8601 format"
}
},
"required": [
"id",
"updated"
]
}
}
}
200
Subproject is updatedPATCH/subprojects-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"subproject": {
"id": "2244",
"name": "Example subproject",
"project": {
"id": "2244",
"name": "Example project",
"description": "Description of example project"
},
"start_date": "2005-10-21",
"end_date": "2100-10-27",
"teams_are_published_by_default": false,
"default_number_of_collaborators": "1",
"registrations_count": "0",
"volunteers_needed": "2",
"created_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"created": "2022-06-21T13:59:27Z",
"updated_by": {
"id": 2403,
"first_name": "John",
"last_name": "Doe",
"email": "John-doe@example.com"
},
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"subproject": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the subproject"
},
"name": {
"type": "string",
"description": "The name of the subproject"
},
"project": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the project"
},
"name": {
"type": "string",
"description": "A name of the project"
},
"description": {
"type": "string",
"description": "A description of the project"
}
},
"required": [
"id",
"name",
"description"
]
},
"start_date": {
"type": "string",
"description": "Start date of the subproject"
},
"end_date": {
"type": "string",
"description": "End date of the subproject"
},
"teams_are_published_by_default": {
"type": "boolean",
"description": "Indicates whether teams are published by default or not"
},
"default_number_of_collaborators": {
"type": "string",
"description": "Numbers of collaborators set by default"
},
"registrations_count": {
"type": "string",
"description": "Number of registrations"
},
"volunteers_needed": {
"type": "string",
"description": "Number of needed volunteers"
},
"created_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who created the subproject"
},
"created": {
"type": "string",
"description": "Time of when subproject was created in ISO 8601 format"
},
"updated_by": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Identification number within Beeple"
},
"first_name": {
"type": "string",
"description": "First name"
},
"last_name": {
"type": "string",
"description": "Last name"
},
"email": {
"type": "string",
"description": "Email"
}
},
"required": [
"id",
"first_name",
"last_name"
],
"description": "The user who updated the subproject"
},
"updated": {
"type": "string",
"description": "Time of when subproject was updated in ISO 8601 format"
}
},
"required": [
"id",
"name",
"start_date",
"end_date",
"teams_are_published_by_default",
"registrations_count",
"volunteers_needed",
"created",
"updated"
],
"description": "Details of the subproject"
}
}
}
200
Candidacies ¶
Candidacy ¶
This webhook is sent every time a candidacy is:
-
created
-
accepted
-
rejected
-
deleted
Beeple servers send a webhook when event happens to the specified integration url. Admins has ability to configure the specified integration url in the Admin Settings -> Modules -> Integrations section by adding an integration with a selected type and url so that Beeple could send HTTP request to the URL they specify.
Candidacy is createdPOST/candidacies-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"candidacy": {
"id": "2244",
"status": "waiting",
"comment": "Test comment",
"contract_type": "interim",
"team": {
"id": "2244",
"name": "Example team"
},
"collaborator": {
"id": "2244",
"name": "John Doe"
},
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"candidacy": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the candidacy"
},
"status": {
"type": "string",
"enum": [
"waiting",
"standby",
"accepted",
"rejected",
"cancelled"
],
"description": "The type of the current status of the candidacy"
},
"comment": {
"type": "string",
"description": "The comment subbmited by volunteer with the candidacy"
},
"contract_type": {
"type": "string",
"enum": [
"interim",
"freelancer",
"intern",
"contractual",
"volunteer"
],
"description": "The type of contract"
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the team"
},
"name": {
"type": "string",
"description": "A name of the team"
}
},
"required": [
"id",
"name"
]
},
"collaborator": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the collaborator"
},
"name": {
"type": "string",
"description": "Collaborator's name"
}
},
"required": [
"id",
"name"
]
},
"updated": {
"type": "string",
"description": "Time of when subproject was updated in ISO 8601 format"
}
},
"required": [
"id",
"status",
"updated"
],
"description": "Details of the candidacy"
}
}
}
200
Candidacy is updated (accepted or rejected)PATCH/candidacies-integration-url
Example URI
candidacy is accepted
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"candidacy": {
"id": "2244",
"status": "waiting",
"comment": "Test comment",
"contract_type": "interim",
"team": {
"id": "2244",
"name": "Example team"
},
"collaborator": {
"id": "2244",
"name": "John Doe"
},
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"candidacy": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the candidacy"
},
"status": {
"type": "string",
"enum": [
"waiting",
"standby",
"accepted",
"rejected",
"cancelled"
],
"description": "The type of the current status of the candidacy"
},
"comment": {
"type": "string",
"description": "The comment subbmited by volunteer with the candidacy"
},
"contract_type": {
"type": "string",
"enum": [
"interim",
"freelancer",
"intern",
"contractual",
"volunteer"
],
"description": "The type of contract"
},
"team": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the team"
},
"name": {
"type": "string",
"description": "A name of the team"
}
},
"required": [
"id",
"name"
]
},
"collaborator": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the collaborator"
},
"name": {
"type": "string",
"description": "Collaborator's name"
}
},
"required": [
"id",
"name"
]
},
"updated": {
"type": "string",
"description": "Time of when subproject was updated in ISO 8601 format"
}
},
"required": [
"id",
"status",
"updated"
],
"description": "Details of the candidacy"
}
}
}
200
candidacy is rejected
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"candidacy": {
"id": "2244",
"status": "rejected",
"reject_reason": "Test reason",
"reject_remark": "Test remark",
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"candidacy": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the candidacy"
},
"status": {
"type": "string",
"description": "The type of the current status of the candidacy"
},
"reject_reason": {
"type": "string",
"description": "Field contains a reason from admin why it was rejected"
},
"reject_remark": {
"type": "string",
"description": "Field contains admin remark submitted during rejection"
},
"updated": {
"type": "string",
"description": "Time of when subproject was updated in ISO 8601 format"
}
},
"required": [
"id",
"status",
"updated"
],
"description": "Details of the candidacy which was rejected"
}
}
}
200
Candidacy is cancelledDELETE/candidacies-integration-url
Example URI
Headers
Content-Type: application/json
Body
{
"company": {
"name": "My company",
"beeple_id": "273e949a-bb41-4f36-9526-d1d0a8043c91"
},
"candidacy": {
"id": "2244",
"status": "cancelled",
"updated": "2022-06-21T13:59:27Z"
}
}
Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"company": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the company (tenant). Can change and is mainly for displaying purposes"
},
"beeple_id": {
"type": "string",
"description": "The ID of the Beeple Tenant (a UUID). Will never change for a given tenant."
}
},
"required": [
"name",
"beeple_id"
],
"description": "Company that is sending this information."
},
"candidacy": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The ID of the candidacy"
},
"status": {
"type": "string",
"description": "The type of the current status of the candidacy"
},
"updated": {
"type": "string",
"description": "Time of when subproject was updated in ISO 8601 format"
}
},
"required": [
"id",
"status",
"updated"
],
"description": "Details of the candidacy which was cancelled"
}
}
}
200