@epilot/entity-client 3.2.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- !function(e,t){for(var i in t)e[i]=t[i];t.__esModule&&Object.defineProperty(e,"__esModule",{value:!0})}(exports,(()=>{"use strict";var e={914:function(e,t,i){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=n(i(279));t.default=a.default},279:e=>{e.exports=JSON.parse('{"openapi":"3.0.2","info":{"title":"Entity API","version":"1.0.0","description":"Flexible data layer for epilot Entities.\\n\\nUse this API configure and access your business objects like Contacts, Opportunities and Products.\\n\\n[Feature Documentation](https://docs.epilot.io/docs/entities/flexible-entities)\\n"},"tags":[{"name":"Schemas","description":"Model Entities"},{"name":"Entities","description":"CRUD Access for Entities"},{"name":"Activity","description":"Entity Events"}],"security":[{"EpilotAuth":[]},{"EpilotOrg":[]}],"paths":{"/v1/entity/schemas":{"get":{"operationId":"listSchemas","summary":"listSchemas","description":"Get the latest version of local schema","parameters":[{"in":"query","name":"unpublished","description":"Includes the unpublished version of unpublished schema","schema":{"type":"boolean","default":false}}],"tags":["Schemas"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/EntitySchemaItem"}}}}}}}}}},"/v1/entity/schemas/blueprints":{"get":{"operationId":"listSchemaBlueprints","summary":"listSchemaBlueprints","description":"List canonical versions of all available schemas","tags":["Schemas"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/EntitySchemaItem"}}}}}}}}}},"/v1/entity/schemas/{slug}/versions":{"get":{"operationId":"getSchemaVersions","summary":"getSchemaVersions","description":"Get all versions of this schema ordered by the latest versions including drafts.","tags":["Schemas"],"parameters":[{"in":"path","name":"slug","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"versions":{"type":"array","items":{"$ref":"#/components/schemas/EntitySchemaItem"}},"drafts":{"type":"array","items":{"$ref":"#/components/schemas/EntitySchemaItem"}}}}}}}}}},"/v1/entity/schemas/{slug}":{"get":{"operationId":"getSchema","summary":"getSchema","description":"By default gets the latest version of the Schema and to get the specific version of schema pass the id.","tags":["Schemas"],"parameters":[{"in":"path","name":"slug","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"query","name":"id","schema":{"$ref":"#/components/schemas/SchemaId"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchemaItem"}}}}}},"put":{"operationId":"createNewSchemaVersion","summary":"createNewSchemaVersion","description":"Create new version of the schema and default draft is false.","tags":["Schemas"],"parameters":[{"in":"path","name":"slug","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"query","name":"draft","schema":{"default":false,"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchema"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchemaItem"}}}}}},"delete":{"operationId":"deleteSchemaById","summary":"deleteSchemaById","description":"Delete schema by Id","tags":["Schemas"],"parameters":[{"in":"path","name":"slug","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"query","name":"id","required":true,"schema":{"$ref":"#/components/schemas/SchemaId"}}],"responses":{"204":{"description":"Success"}}}},"/v1/entity:search":{"post":{"operationId":"searchEntities","summary":"searchEntities","description":"Search for entities. Supports ordering and pagination. Lucene query syntax supported for complex querying.\\n\\nPassing comma-separated `x-epilot-org-id` is supported for cross-org entity search.\\n\\n## Relations\\n\\nWhen `hydrate=true`, relation attributes are replaced in-place with nested entity values.\\n\\nExample:\\n```json\\n{\\n \\"_id\\": \\"123\\",\\n \\"name\\": \\"parent\\",\\n \\"_tags\\": [\\"parent\\"],\\n \\"contacts\\": {\\n \\"$relation\\": [\\n { \\"entity_id\\": \\"456\\", \\"_tags\\": [\\"primary\\"] },\\n { \\"entity_id\\": \\"789\\", \\"_tags\\": [\\"secondary\\"] },\\n ]\\n }\\n}\\n```\\n\\nBecomes:\\n```json\\n{\\n \\"_id\\": \\"123\\",\\n \\"name\\": \\"parent\\",\\n \\"_tags\\": [\\"parent\\"],\\n \\"contacts\\": [\\n {\\n \\"$relation\\": { \\"entity_id\\": \\"456\\", \\"_tags\\": [\\"primary\\"] },\\n \\"_id\\": \\"456\\",\\n \\"name\\": \\"child 1\\",\\n \\"_tags\\": [\\"child\\"]\\n },\\n {\\n \\"$relation\\": { \\"entity_id\\": \\"789\\", \\"_tags\\": [\\"secondary\\"] },\\n \\"_id\\": \\"789\\",\\n \\"name\\": \\"child 2\\",\\n \\"_tags\\": [\\"child\\"]\\n }\\n ]\\n}\\n```\\n","tags":["Entities"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySearchParams"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySearchResults"}},"text/csv":{"schema":{"type":"string"}}}}}}},"/v1/entity/{slug}":{"post":{"operationId":"createEntity","summary":"createEntity","description":"Creates a new entity using a key.\\n\\n## Activity\\n\\nIf no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityCreated`\\n\\n## Relations\\n\\nTo create a relation, store a property object that defines a `$relation` array.\\n\\nExample:\\n\\n```json\\n{\\n \\"contacts\\": {\\n \\"$relation\\": [\\n { \\"entity_id\\": \\"3fa85f64-5717-4562-b3fc-2c963f66afa6\\" }\\n ]\\n }\\n}\\n```\\n\\nThe items in `$relation` support two properties:\\n- `entity_id` - The ID of the entity to link\\n- `_tags` - Tags or labels for the relation (optional)\\n","tags":["Entities"],"parameters":[{"in":"path","name":"slug","description":"Entity Schema","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"query","name":"activity_id","description":"Activity to include in event feed","required":false,"schema":{"$ref":"#/components/schemas/ActivityId"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"},"examples":{"contact":{"$ref":"#/components/examples/ContactEntity"},"account":{"$ref":"#/components/examples/AccountEntity"},"product":{"$ref":"#/components/examples/ProductEntity"},"price":{"$ref":"#/components/examples/PriceEntity"},"tax":{"$ref":"#/components/examples/TaxEntity"},"order":{"$ref":"#/components/examples/OrderEntity"},"opportunity":{"$ref":"#/components/examples/OpportunityEntity"},"email template":{"$ref":"#/components/examples/EmailTemplateEntity"},"file":{"$ref":"#/components/examples/FileEntity"},"workflow step":{"$ref":"#/components/examples/WorkflowStepEntity"},"submission":{"$ref":"#/components/examples/SubmissionEntity"}}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityItem"}}}}}}},"/v1/entity/{slug}:upsert":{"patch":{"operationId":"upsertEntity","summary":"upsertEntity","description":"Create or update an entity using `unique_key`\\n\\n- If no entities are matched, a new entity is created.\\n- If exactly one entity is matched, a `PATCH`-style update is applied to the existing entity.\\n- If more than one entity is matched a `409` Error is returned\\n\\n## Activity\\n\\nIf no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityCreated` or `EntityUpdated`\\n","tags":["Entities"],"parameters":[{"in":"path","name":"slug","description":"Entity Schema","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"query","name":"activity_id","description":"Activity to include in event feed","required":false,"schema":{"$ref":"#/components/schemas/ActivityId"}},{"in":"query","name":"dry_run","description":"Dry Run mode = return matched entities but don\'t update them.","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"unique_key":{"type":"array","items":{"type":"string","example":"email.0.email"},"example":["_id"]},"entity":{"$ref":"#/components/schemas/Entity"}},"required":["unique_key","entity"]}}}},"responses":{"200":{"description":"Entity was updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityItem"}}}},"201":{"description":"Entity was created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityItem"}}}},"409":{"description":"Conflict: multiple entities were matched with `unique_key`"}}}},"/v1/entity/{slug}/{id}":{"get":{"operationId":"getEntity","summary":"getEntity","description":"Gets Entity and relations by id.\\n\\n## Relations\\n\\nWhen `hydrate=true`, relation attributes are replaced in-place with nested entity values.\\n\\nExample:\\n```json\\n{\\n \\"_id\\": \\"123\\",\\n \\"name\\": \\"parent\\",\\n \\"_tags\\": [\\"parent\\"],\\n \\"contacts\\": {\\n \\"$relation\\": [\\n { \\"entity_id\\": \\"456\\", \\"_tags\\": [\\"primary\\"] },\\n { \\"entity_id\\": \\"789\\", \\"_tags\\": [\\"secondary\\"] },\\n ]\\n }\\n}\\n```\\n\\nBecomes:\\n```json\\n{\\n \\"_id\\": \\"123\\",\\n \\"name\\": \\"parent\\",\\n \\"_tags\\": [\\"parent\\"],\\n \\"contacts\\": [\\n {\\n \\"$relation\\": { \\"entity_id\\": \\"456\\", \\"_tags\\": [\\"primary\\"] },\\n \\"_id\\": \\"456\\",\\n \\"name\\": \\"child 1\\",\\n \\"_tags\\": [\\"child\\"]\\n },\\n {\\n \\"$relation\\": { \\"entity_id\\": \\"789\\", \\"_tags\\": [\\"secondary\\"] },\\n \\"_id\\": \\"789\\",\\n \\"name\\": \\"child 2\\",\\n \\"_tags\\": [\\"child\\"]\\n }\\n ]\\n}\\n```\\n","tags":["Entities"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"query","name":"hydrate","description":"When true, enables entity hydration to resolve nested $relation references in-place.","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/EntityItem"},"relations":{"type":"array","items":{"$ref":"#/components/schemas/EntityItem"}}}}}}}}},"put":{"operationId":"updateEntity","summary":"updateEntity","description":"Updates an Entity\\n\\n## Activity\\n\\nIf no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityUpdated`\\n\\n## Relations\\n\\nTo create a relation, store a property that defines a `$relation` array.\\n\\nExample:\\n\\n```json\\n{\\n \\"contacts\\": {\\n \\"$relation\\": [\\n { \\"entity_id\\": \\"3fa85f64-5717-4562-b3fc-2c963f66afa6\\" }\\n ]\\n }\\n}\\n```\\n\\nThe items in `$relation` support two properties:\\n- `entity_id` - The ID of the entity to link\\n- `_tags` - Tags or labels for the relation (optional)\\n","tags":["Entities"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"query","name":"activity_id","description":"Activity to include in event feed","required":false,"schema":{"$ref":"#/components/schemas/ActivityId"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"},"example":{}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityItem"}}}}}},"delete":{"operationId":"deleteEntity","summary":"deleteEntity","description":"Deletes an Entity\\n\\n## Activity\\n\\nIf no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityDeleted`\\n","tags":["Entities"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"query","name":"activity_id","description":"Activity to include in event feed","required":false,"schema":{"$ref":"#/components/schemas/ActivityId"}}],"responses":{"200":{"description":"Success"}}}},"/v1/entity:autocomplete":{"get":{"operationId":"autocomplete","summary":"autocomplete","description":"Autocomplete entity attributes\\n","tags":["Entities"],"parameters":[{"name":"input","in":"query","description":"Input to autocomplete","schema":{"type":"string"}},{"name":"attribute","in":"query","description":"Autocomplete attribute","schema":{"type":"string","example":"_tags"},"required":true},{"name":"slug","in":"query","description":"Limit results to entity schema","schema":{"$ref":"#/components/schemas/EntitySlug"}},{"name":"size","in":"query","description":"Maximum number of results to return","schema":{"type":"integer","default":10,"minimum":1,"maximum":250}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"hits":{"type":"number","example":1},"results":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"boolean"},{"type":"object","additionalProperties":true}]},"example":["value"]}}}}}}}}},"/v1/entity/activity":{"post":{"operationId":"createActivity","summary":"createActivity","description":"Create an activity that can be displayed in activity feeds.\\n\\n- All activites are published as events on the event bus\\n- Entity mutations are always part of an activity\\n","tags":["Activity"],"parameters":[{"in":"query","name":"entities","description":"Comma-separated list of entities which the activity primarily concerns","style":"form","explode":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityId"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Activity"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityItem"}}}}}}},"/v1/entity/activity/{id}":{"get":{"operationId":"getActivity","summary":"getActivity","description":"Get activity by id","tags":["Activity"],"parameters":[{"in":"path","name":"id","description":"Activity Id","required":true,"schema":{"$ref":"#/components/schemas/ActivityId"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityItem"}}}}}}},"/v1/entity/activity/{id}:attach":{"post":{"operationId":"attachActivity","summary":"attachActivity","description":"Attach existing activity to entity activity feeds","tags":["Activity"],"parameters":[{"in":"path","name":"id","description":"Activity Id","required":true,"schema":{"$ref":"#/components/schemas/ActivityId"}},{"in":"query","name":"entities","description":"Comma-separated list of entities which the activity primarily concerns","style":"form","explode":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityId"}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityItem"}}}}}}},"/v1/entity/{slug}/{id}/activity":{"get":{"operationId":"getEntityActivityFeed","summary":"getEntityActivityFeed","description":"Get activity feed for an entity\\n","tags":["Activity"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"query","name":"after","description":"Get activities after this timestamp","schema":{"type":"string","format":"date-time"}},{"in":"query","name":"before","description":"get activities before this timestamp","schema":{"type":"string","format":"date-time"}},{"in":"query","name":"from","description":"start from page","schema":{"type":"integer","minimum":0,"default":0}},{"in":"query","name":"size","description":"max number of results to return","schema":{"type":"integer","minimum":1,"default":25}},{"in":"query","name":"type","description":"Activity type","schema":{"type":"string","example":"SyncActivity"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"integer","example":1},"results":{"type":"array","items":{"$ref":"#/components/schemas/ActivityItem"}}}}}}}}}},"/v1/entity/{slug}/{id}/relations":{"get":{"operationId":"getRelations","summary":"getRelations","description":"It loads 1st level relations for the mentioned entity. You can control whether entire related entity is loaded or not via hydrate param.","tags":["Relations"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"query","name":"hydrate","description":"When true, expand relation items with full blown entities.","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRelationsResp"},"example":[{"attribute":"contacts","entity_id":"ed27830b-984c-4bca-9b87-2849bb5789ca","_tags":["primary","billing"]},{"attribute":"contacts","entity_id":"fadfc950-6e43-4e38-bae0-ffcf4b8b90e1"},{"_id":"9924c4de-d3ed-4752-821d-fc0b9bd57c1b","order_number":"a34234jd","customer_email":"johndoe@epilot.cloud","billing_first_name":"john","billing_last_name":"doe","billing_company_name":"ePilot Gmbh","billing_vat":"234823948,","billing_email":"johndoe@nowhere.com","billing_phone":"1234234545,","billing_address":"wallstreet, 1","billing_contact":"villy or zilly","$relation":{"attribute":"orders","entity_id":"9924c4de-d3ed-4752-821d-fc0b9bd57c1b","_tags":["solar_panel","one_time"]}}]}}}}},"post":{"operationId":"addRelations","summary":"addRelations","description":"It relates one or more entities to some parent entity, by providing meaning for relations via attribute field.","tags":["Relations"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RelationItem"}},"example":[{"attribute":"contacts","entity_id":"e8878f62-2d3d-4c86-bfe7-01a4180ff048","_tags":["billing"]},{"attribute":"contacts","entity_id":"ee8a2af9-fb36-4981-b848-4e65275851af"},{"attribute":"opportunities","entity_id":"30990430-a53d-41a2-83db-2de072dc4dd4"}]}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelationItem"}}}}}}},"/v1/entity/{slug}/{id}/relations/{attribute}/{entity_id}":{"put":{"operationId":"updateRelation","summary":"updateRelation","description":"It updates a relation between two entities.","tags":["Relations"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"path","name":"attribute","description":"The attribute that express meaning","required":true,"schema":{"type":"string"}},{"in":"path","name":"entity_id","description":"The attribute that express meaning","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"_tags":{"type":"array","items":{"type":"string"}}}},"example":{"_tags":["billing","prepaid"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelationItem"}}}}}},"delete":{"operationId":"deleteRelation","summary":"deleteRelation","description":"It deletes a relation between one entity and the other.","tags":["Relations"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"path","name":"attribute","description":"The attribute that express meaning","required":true,"schema":{"type":"string"}},{"in":"path","name":"entity_id","description":"The attribute that express meaning","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Relation deleted with success."}}}}},"components":{"securitySchemes":{"EpilotAuth":{"type":"http","scheme":"bearer","description":"Authorization header with epilot OAuth2 bearer token","bearerFormat":"JWT"},"EpilotOrg":{"description":"Overrides the target organization to allow shared tenantaccess","name":"x-epilot-org-id","in":"header","type":"apiKey"}},"schemas":{"SchemaId":{"description":"Generated uuid for schema","type":"string","format":"uuid"},"EntitySchema":{"description":"The \\"type\\" of an Entity. Describes the shape. Includes Entity Attributes, Relations and Capabilities.","type":"object","properties":{"slug":{"$ref":"#/components/schemas/EntitySlug"},"version":{"type":"integer","minimum":1},"blueprint":{"$ref":"#/components/schemas/BlueprintEntityId"},"feature_flag":{"type":"string","example":"FF_MY_FEATURE_FLAG","description":"This schema should only be active when the feature flag is enabled"},"enable_setting":{"description":"This schema should only be active when one of the organization settings is enabled","type":"array","items":{"type":"string","example":"ecommerce_preview"}},"name":{"description":"User-friendly identifier for the entity schema","type":"string","example":"Contact"},"plural":{"type":"string","example":"Contacts"},"published":{"type":"boolean","example":false},"draft":{"type":"boolean","example":false},"icon":{"type":"string","example":"person"},"title_template":{"type":"string","description":"Template for rendering the title field. Uses handlebars","example":"{{first_name}} {{last_name}}"},"ui_config":{"type":"object","properties":{"table_view":{"$ref":"#/components/schemas/EntityViewConfig"},"create_view":{"$ref":"#/components/schemas/EntityViewConfig"},"edit_view":{"$ref":"#/components/schemas/EntityViewConfig"},"list_item":{"type":"object","properties":{"summary_attributes":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/SummaryAttribute"},{"type":"string","description":"List of attributes to show in list item","example":"email"}]}}}},"sharing":{"type":"object","properties":{"show_sharing_button":{"type":"boolean","description":"Show the sharing button in entity detail view","example":true}}}}},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/EntityCapability"}},"group_settings":{"type":"array","description":"A dictionary of Group Titles and associated settings if present.","items":{"type":"object","properties":{"label":{"type":"string"},"id":{"type":"string"},"expanded":{"type":"boolean"},"render_condition":{"type":"string","example":"is_composite_price = \\"false\\""},"order":{"description":"Render order of the group","type":"integer","default":0},"feature_flag":{"type":"string","example":"FF_MY_FEATURE_FLAG","description":"This schema should only be active when the feature flag is enabled"},"info_tooltip_title":{"type":"object","properties":{"key":{"type":"string"},"default":{"type":"string"}}}},"required":["label","id"]},"example":{"Order Info":{"expanded":true},"Contact Details":{"expanded":false,"info_tooltip_title":{"key":"partner.partner_information_group_tooltip","default":"These informations are provided by the partner company and cannot be edited."}}}},"layout_settings":{"type":"object","description":"Custom grid definitions for the layout","additionalProperties":{"type":"object","properties":{"grid_gap":{"type":"string"},"grid_template_columns":{"type":"string"}}}},"dialog_config":{"type":"object","additionalProperties":true},"attributes":{"description":"An ordered list of attributes the entity contains","type":"array","items":{"$ref":"#/components/schemas/Attribute"},"example":[{"name":"email","type":"email","label":"Email","required":true},{"name":"first_name","type":"string","label":"First Name"},{"name":"last_name","type":"string","label":"Last Name"},{"name":"birthdate","type":"date","label":"Birthdate"},{"name":"salutation","type":"select","label":"Salutation","options":["Mr.","Ms. / Mrs.","Other"]},{"name":"marketing_permission","type":"boolean","label":"Marketing permission"},{"name":"image","type":"file","label":"Image"}]},"explicit_search_mappings":{"$ref":"#/components/schemas/SearchMappings"}},"required":["slug","name","plural"]},"EntitySchemaItem":{"allOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/SchemaId"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"comment":{"type":"string"},"source":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"}}}}},{"$ref":"#/components/schemas/EntitySchema"}]},"Attribute":{"anyOf":[{"$ref":"#/components/schemas/TextAttribute"},{"$ref":"#/components/schemas/LinkAttribute"},{"$ref":"#/components/schemas/DateAttribute"},{"$ref":"#/components/schemas/CountryAttribute"},{"$ref":"#/components/schemas/BooleanAttribute"},{"$ref":"#/components/schemas/SelectAttribute"},{"$ref":"#/components/schemas/StatusAttribute"},{"$ref":"#/components/schemas/RelationAttribute"},{"$ref":"#/components/schemas/UserRelationAttribute"},{"$ref":"#/components/schemas/AddressRelationAttribute"},{"$ref":"#/components/schemas/CurrencyAttribute"},{"$ref":"#/components/schemas/RepeatableAttribute"},{"$ref":"#/components/schemas/TagsAttribute"},{"$ref":"#/components/schemas/NumberAttribute"},{"$ref":"#/components/schemas/ConsentAttribute"},{"$ref":"#/components/schemas/InternalAttribute"},{"$ref":"#/components/schemas/OrderedListAttribute"},{"$ref":"#/components/schemas/FileAttribute"},{"$ref":"#/components/schemas/ComputedAttribute"},{"$ref":"#/components/schemas/PartnerStatusAttribute"},{"$ref":"#/components/schemas/InvitationEmailAttribute"},{"$ref":"#/components/schemas/AutomationAttribute"},{"$ref":"#/components/schemas/InternalUserAttribute"}]},"BaseAttribute":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"placeholder":{"type":"string"},"hidden":{"description":"Do not render attribute in entity views","type":"boolean","default":false},"show_in_table":{"description":"Render as a column in table views. When defined, overrides `hidden`","type":"boolean"},"required":{"type":"boolean","default":false},"readonly":{"type":"boolean","default":false},"deprecated":{"type":"boolean","default":false},"default_value":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"array"}]},"group":{"type":"string"},"layout":{"type":"string"},"hide_label":{"type":"boolean","description":"When set to true, will hide the label of the field."},"icon":{"type":"string","description":"Code name of the icon to used to represent this attribute.\\nThe value must be a valid @epilot/base-elements Icon name\\n"},"render_condition":{"type":"string","description":"Defines the conditional rendering expression for showing this field.\\nWhen a valid expression is parsed, their evaluation defines the visibility of this attribute.\\nNote: Empty or invalid expression have no effect on the field visibility.\\n"},"constraints":{"type":"object","description":"A set of constraints applicable to the attribute.\\nThese constraints should and will be enforced by the attribute renderer.\\n","example":{"disablePast":true}},"feature_flag":{"type":"string","example":"FF_MY_FEATURE_FLAG","description":"This attribute should only be active when the feature flag is enabled"},"value_formatter":{"type":"string"},"preview_value_formatter":{"type":"string"},"entity_builder_disable_edit":{"description":"Setting to `true` disables editing the attribute on the entity builder UI","type":"boolean","default":false},"protected":{"description":"Setting to `true` prevents the attribute from being modified / deleted","type":"boolean","default":true}},"required":["name","label"]},"TextAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Textarea or text input","properties":{"type":{"type":"string","enum":["string"]},"multiline":{"type":"boolean"}}}]},"LinkAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Link with title and href","properties":{"type":{"type":"string","enum":["link"]}}}]},"InternalAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"No UI representation","properties":{"type":{"type":"string","enum":["internal"]}}}]},"BooleanAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Yes / No Toggle","properties":{"type":{"type":"string","enum":["boolean"]}}}]},"DateAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Date or Datetime picker","properties":{"type":{"type":"string","enum":["date","datetime"]}}}]},"CountryAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Country picker","properties":{"type":{"type":"string","enum":["country"]}}}]},"SelectAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Dropdown select","properties":{"type":{"type":"string","enum":["select","radio"]},"options":{"type":"array","items":{"anyOf":[{"type":"string","nullable":true},{"type":"object","properties":{"value":{"type":"string"},"title":{"type":"string"}},"required":["value"]}]}},"allow_any":{"type":"boolean","description":"Allow arbitrary input values in addition to provided options"}}}]},"StatusAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Status select","properties":{"type":{"type":"string","enum":["status"]},"options":{"type":"array","items":{"anyOf":[{"type":"string","nullable":true},{"type":"object","properties":{"value":{"type":"string"},"title":{"type":"string"}},"required":["value"]}]}}}}]},"FileAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"File or Image Attachment","properties":{"type":{"type":"string","enum":["image","file"]},"multiple":{"type":"boolean"},"allowed_extensions":{"description":"List of file extensions (without the dot suffix)","type":"array","items":{"type":"string","example":"csv"}},"default_access_control":{"type":"string","enum":["public-read","private"]}},"required":["type"]}]},"CurrencyAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Currency input","properties":{"type":{"type":"string","enum":["currency"]},"currency_selector_only":{"type":"boolean","default":false},"currency":{"description":"An array of currency configurations with a country code (ISO-4217)","type":"array","items":{"anyOf":[{"type":"object","description":"A currency configuration","properties":{"code":{"type":"string"},"description":{"type":"string"},"symbol":{"type":"string"},"flag":{"type":"string"}},"required":["code","description","symbol"],"example":{"code":"EUR","description":"Euro","symbol":"€","flag":"🇪🇺"}}]}}},"required":["type","currency"]}]},"SummaryField":{"type":"object","description":"Summary Fields are displayed inside list view as a resume of the relation entity.","properties":{"field":{"type":"string","description":"The field from the entity attributes to display"},"display_as":{"type":"string","description":"An hint on how to display the summary field"}}},"RelationAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Entity Relationship","properties":{"type":{"type":"string","enum":["relation"]},"relation_type":{"type":"string","enum":["has_many","has_one"]},"delete_mode":{"type":"string","enum":["cascade"]},"relation_affinity_mode":{"type":"string","enum":["weak","strong"]},"enable_relation_picker":{"type":"boolean","default":true,"description":"When enable_relation_picker is set to true the user will be able to pick existing relations as values. Otherwise, the user will need to create new relation to link."},"edit_mode":{"type":"string","enum":["list-view"]},"details_view_mode_enabled":{"type":"boolean","default":false,"description":"Enables the preview, edition, and creation of relation items on a Master-Details view mode."},"actions":{"type":"array","items":{"type":"object","properties":{"action_type":{"type":"string","enum":["add_existing","create_new","create_from_existing"],"description":"The action type. Currently supported actions:\\n\\n| action | description |\\n|--------|-------------|\\n| add_existing | Enables the user to pick an existing entity to link as relation |\\n| create_new | Enables the user to create a new entity using the first/main `allowed_schemas` schema\\n| create_from_existing | Enables the user to pick an existing entity to clone from, while creating a blank new entity to link as relation |\\n"},"label":{"type":"string","description":"The action label or action translation key (i18n)"},"default":{"type":"boolean","description":"Sets the action as the default action, visible as the main action button."},"feature":{"type":"string","description":"Name of the feature flag that enables this action"},"new_entity_item":{"type":"object","allOf":[{"$ref":"#/components/schemas/EntityItem"}]}}},"example":{"value":[{"action_type":"add_existing","label":"entityrelation.add_existing","default":true},{"action_type":"create_new","label":"entityrelation.create_new"},{"action_type":"create_from_existing","label":"entityrelation.create_from_existing"}]}},"drawer_size":{"type":"string","enum":["small","medium","large"]},"icon":{"type":"string"},"summary_fields":{"type":"array","items":{"anyOf":[{"type":"string","description":"The field name from the entity attributes to display"},{"$ref":"#/components/schemas/SummaryField"}]}},"has_primary":{"type":"boolean"},"allowedSchemas":{"type":"array","items":{"$ref":"#/components/schemas/EntitySlug"}},"enable_relation_tags":{"type":"boolean","default":true,"description":"When enable_relation_tags is set to true the user will be able to set tags(labels) in each relation item."}}}]},"UserRelationAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"User Relationship","properties":{"type":{"type":"string","enum":["relation_user"]},"multiple":{"type":"boolean","default":false}}}]},"AddressRelationAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Reference to an address attribute of another entity","properties":{"type":{"type":"string","enum":["relation_address"]},"has_primary":{"type":"boolean"}}}]},"InvitationEmailAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Email address for send invitation","properties":{"type":{"type":"string","enum":["invitation_email"]}}}]},"AutomationAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Automation entity","properties":{"type":{"type":"string","enum":["automation"]}}}]},"InternalUserAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Epilot internal user info","properties":{"type":{"type":"string","enum":["internal_user"]}}}]},"RepeatableAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Repeatable (add N number of fields)","properties":{"repeatable":{"type":"boolean"},"has_primary":{"type":"boolean"},"relation_affinity_mode":{"type":"string","enum":["weak","strong"]},"type":{"type":"string","enum":["string","phone","email","address","relation","payment","price_component"]},"enable_relation_picker":{"type":"boolean","default":true,"description":"when enable_relation_picker is set to true the user will be able to pick existing relations as values. Otherwise, the user will need to create new relation to link."}}}]},"TagsAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Tags","properties":{"type":{"type":"string","enum":["tags"]},"options":{"type":"array","items":{"type":"string"}},"suggestions":{"type":"array","items":{"type":"string"}}}}]},"NumberAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Numeric input","properties":{"type":{"type":"string","enum":["number"]},"format":{"type":"string"}}}]},"ConsentAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Consent Management","properties":{"type":{"type":"string","enum":["consent"]},"topic":{"type":"string"},"identifiers":{"type":"array","items":{"type":"string"}}},"required":["type","topic"]}]},"OrderedListAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Type of attribute to render N number of ordered fields","properties":{"type":{"type":"string","enum":["ordered_list"]}}}]},"ComputedAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"An attribute that is computed from the entity data. For more details on how to use them, check the docs [here](https://e-pilot.atlassian.net/wiki/spaces/EO/pages/5642977476/How+To+Computed+Schema+Attributes)","properties":{"type":{"type":"string","enum":["computed"]}}}]},"PartnerStatusAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Partner Status","properties":{"type":{"type":"string","enum":["partner_status"]}}}]},"Attachment":{"type":"object","deprecated":true,"properties":{"key":{"type":"string"},"mime":{"type":"string"},"name":{"type":"string"},"size":{"type":"number"},"image_url":{"type":"string"},"download_url":{"type":"string"},"alt_text":{"type":"string"}},"required":["key","mime","name","size","image_url","download_url"]},"SummaryAttribute":{"description":"Represents an expanded version of an attribute to be displayed in the list item summary.\\nThis configuration can be used in the following way: \\n```js\\n{\\n \\"label\\": \\"Price components\\"\\n \\"value\\": \\"{{item.prices.length}} price components\\"\\n \\"show_as_tag\\": true\\n \\"render_condition\\": \\"is_composite_price = \\\\\\"true\\\\\\"\\"\\n}\\n```\\nThe value field supports handlebar expressions from which you can pick any field from the entity state. \\n","type":"object","properties":{"label":{"type":"string","description":"Label to be shown on the top of the value."},"value":{"type":"string","description":"A static value or an handlebar expression."},"show_as_tag":{"type":"boolean","description":"Displays the value within a tag chip."},"tag_color":{"type":"string","description":"CSS hex color or CSS color name for the tag chip."},"render_condition":{"type":"string","description":"Defines the conditional rendering expression for showing this field.\\nWhen a valid expression is parsed, their evaluation defines the visibility of this attribute.\\nNote: Empty or invalid expression have no effect on the field visibility.\\n"}},"required":["label","value"]},"EntitySlug":{"description":"URL-friendly identifier for the entity schema","type":"string","example":"contact"},"EntityCapability":{"description":"Capabilities the Entity has. Turn features on/off for entities.","type":"object","properties":{"name":{"type":"string","description":"Unique name for the capability","example":"customer_messaging"},"title":{"type":"string","description":"Human readable title of the capability","example":"Messaging"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/Attribute"}},"ui_hooks":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"hook":{"type":"string","description":"name of the hook to use","example":"EntityDetailsV2:Tab"},"render_condition":{"type":"string","example":"is_composite_price = \\"false\\""},"order":{"type":"integer","description":"render order (ascending)","example":10},"title":{"type":"string","example":"Notes"},"group_expanded":{"type":"boolean","description":"Sets the group expand/collapse default state"},"import":{"type":"string","description":"package to be imported","example":"@epilot360/notes"},"component":{"type":"string","description":"the component to be dynamically loaded","example":"PricingItems"},"route":{"type":"string","description":"route for specified capability","example":"notes"},"icon":{"type":"string","description":"Preview icon name(As in Base elements) for the capability","example":"email"},"disabled":{"type":"boolean","description":"Whether capability should be disabled"},"header":{"type":"boolean","description":"Specific to Activity pilot"},"requiredPermission":{"type":"object","description":"Require a permission to display UI hook","properties":{"action":{"type":"string","example":"note:view"},"resource":{"type":"string","example":123}},"required":["action"]}},"required":["hook"]}},"feature_flag":{"type":"string","example":"FF_MY_FEATURE_FLAG","description":"This capability should only be active when the feature flag is enabled"},"legacy":{"type":"boolean","description":"Only show capability for legacy tenants (ivy)"}},"required":["name"]},"EntityViewConfig":{"anyOf":[{"$ref":"#/components/schemas/EntityDefaultCreate"},{"$ref":"#/components/schemas/EntityDefaultEdit"},{"$ref":"#/components/schemas/EntityDefaultOverview"},{"$ref":"#/components/schemas/RedirectEntityView"},{"$ref":"#/components/schemas/EntityParcelView"},{"$ref":"#/components/schemas/EntityViewDisabled"}]},"EntityViewDisabled":{"type":"object","properties":{"view_type":{"type":"string","enum":["disabled"]}}},"EntityDefaultOverview":{"type":"object","properties":{"view_type":{"type":"string","enum":["default"]},"dropdown_items":{"type":"array","items":{"allOf":[{"type":"object","properties":{"feature_flag":{"type":"string","example":"FF_MY_FEATURE_FLAG","description":"This dropdown item should only be active when the feature flag is enabled"},"legacy":{"type":"boolean","description":"Only show item for legacy tenants (ivy)"}}},{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["entity"]},"entity":{"$ref":"#/components/schemas/EntitySlug"}}},{"type":"object","properties":{"type":{"type":"string","enum":["link"]},"title":{"type":"string","example":"Opportunities"},"uri":{"type":"string","format":"uri"}}}]}]}},"row_actions":{"type":"array","items":{"type":"string"}},"classic_view":{"type":"string","format":"uri"}}},"EntityDefaultCreate":{"type":"object","properties":{"view_type":{"type":"string","enum":["default"]}}},"EntityDefaultEdit":{"type":"object","properties":{"view_type":{"type":"string","enum":["default"]}}},"RedirectEntityView":{"type":"object","properties":{"view_type":{"type":"string","enum":["redirect"]},"route":{"type":"string","example":"/app/pricing-hub/product/:entityId"}},"example":{"type":"redirect","route":"/app/pricing-hub/product/:entityId"}},"EntityParcelView":{"type":"object","properties":{"view_type":{"type":"string","enum":["parcel"]},"import":{"type":"string","example":"@epilot360/pricing-hub-app"}},"example":{"type":"redirect","route":"/app/pricing-hub/product/:entityId"}},"EntityId":{"type":"string","format":"uuid"},"BaseEntity":{"type":"object","properties":{"_id":{"$ref":"#/components/schemas/EntityId"},"_title":{"type":"string","description":"Title of entity"},"_org":{"type":"string","description":"Organization Id the entity belongs to"},"_schema":{"$ref":"#/components/schemas/EntitySlug"},"_tags":{"type":"array","items":{"type":"string"}},"_created_at":{"type":"string","format":"date-time"},"_updated_at":{"type":"string","format":"date-time"}},"required":["_id","_title","_org","_schema","_created_at","_updated_at"],"example":{"_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","_org":"123","_schema":"contact","_tags":["example","mock"],"_created_at":"2021-02-09T12:41:43.662Z","_updated_at":"2021-02-09T12:41:43.662Z"}},"Entity":{"type":"object","properties":{},"additionalProperties":true},"HydratedEntity":{"type":"object","description":"Entity with relation data resolved into the attribute values","properties":{},"additionalProperties":true,"example":{"status":"active","customer_number":"abc123","email":[{"label":"work","email":"user@example.com"}],"phone":[{"label":"work","phone":"+49123456789"}],"first_name":"First Name","middle_name":"Middle Name","last_name":"Last Name","date_of_birth":"2019-08-24","title":"Mr.","account":[{"status":"active","name":"Company name","company_email":[{"label":"Company email","email":"company@example.com"}],"company_phone":[{"label":"Support phone","phone":"+49123456789"}],"company_website":"https://example.com","tax_id":"DE123456789","tax_exemption":"2019-08-24","contacts":{"$relation":[{"_tags":["CEO"],"entity_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}]}}]}},"EntityItem":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"$ref":"#/components/schemas/Entity"}]},"HydratedEntityItem":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"$ref":"#/components/schemas/HydratedEntity"}]},"GetRelationsResp":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/RelationItem"},{"$ref":"#/components/schemas/RelationEntity"}]}},"RelationEntity":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"type":"object","properties":{"$relation":{"$ref":"#/components/schemas/RelationItem"}}}]},"RelationItem":{"type":"object","properties":{"entity_id":{"$ref":"#/components/schemas/EntityId"},"attribute":{"type":"string"},"_tags":{"type":"array","items":{"type":"string"}}},"required":["entity_id","attribute"]},"EntitySearchParams":{"type":"object","properties":{"q":{"description":"Lucene queries supported with ElasticSearch","type":"string","example":"_schema:contact AND status:active"},"sort":{"type":"string","example":"_created_at:desc"},"from":{"type":"integer","minimum":0,"default":0},"size":{"type":"integer","minimum":1,"default":10},"hydrate":{"type":"boolean","description":"When true, enables entity hydration to resolve nested $relation references in-place.","default":false},"fields":{"type":"array","description":"List of entity fields to include in search results","items":{"type":"string"},"example":["_id","_title","first_name"]}},"required":["q"]},"EntitySearchResults":{"type":"object","properties":{"hits":{"type":"number","example":1},"results":{"type":"array","items":{"$ref":"#/components/schemas/EntityItem"}}}},"SearchMappings":{"description":"Advanced: explicit Elasticsearch index mapping definitions for entity data\\n","example":{"image":{"type":"keyword","index":false}},"type":"object","additionalProperties":{"type":"object","properties":{"index":{"type":"boolean","default":true},"type":{"type":"string","enum":["keyword","text","boolean","integer","long","float","date","flattened","nested"]},"fields":{"additionalProperties":true}}}},"ActivityId":{"type":"string","format":"ulid","description":"See https://github.com/ulid/spec","example":"01F130Q52Q6MWSNS8N2AVXV4JN"},"ActivityCallerContext":{"type":"object","additionalProperties":true,"properties":{"EpilotAuth":{"type":"object","properties":{"token":{"type":"object","properties":{"sub":{"type":"string","example":"476e9b48-42f4-4234-a2b0-4668b34626ce"},"email":{"type":"string","example":"example@epilot.cloud"},"cognito:username":{"type":"string","example":"example@epilot.cloud"},"custom:ivy_user_id":{"type":"string","example":"10006129"}},"example":{"sub":"476e9b48-42f4-4234-a2b0-4668b34626ce","cognito:groups":["Administrator"],"cognito:preferred_role":"arn:aws:iam::912468240823:role/base-administrator-role","iss":"https://cognito-idp.eu-central-1.amazonaws.com/eu-central-1_6lZSgmU6D","custom:ivy_org_id":"739224","cognito:username":"n.ahmad@epilot.cloud","custom:ivy_user_id":"10006129","cognito:roles":["arn:aws:iam::912468240823:role/base-administrator-role"],"aud":"6e0jbdnger7nmoktaaflarue1l","event_id":"cd5f5583-d90c-4db5-8e99-5f5dd29a4d75","token_use":"id","auth_time":1614333023,"exp":1614336623,"iat":1614333023,"email":"n.ahmad@epilot.cloud"}}}}}},"Activity":{"type":"object","properties":{"type":{"type":"string","example":"MyCustomActivity"},"title":{"type":"string","description":"Title for activity. Supports handlebars syntax.","example":"My custom activity"},"message":{"type":"string","description":"Message for activity. Supports handlebars syntax.","example":"{{caller}} did something with {{entity payload.entity.id}}."},"payload":{"type":"object","properties":{},"additionalProperties":true,"example":{"entity":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schema":"contact"}}}},"required":["type","title","message"]},"EntityOperation":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/EntityId"},"org":{"type":"string","example":"123"},"operation":{"type":"string","enum":["createEntity","updateEntity","deleteEntity"]},"params":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EntityId"},"slug":{"$ref":"#/components/schemas/EntitySlug"}},"example":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","slug":"contact"}},"payload":{"allOf":[{"$ref":"#/components/schemas/Entity"},{"example":{"_schema":"contact","_org":"123","status":"Inactive"}}]},"diff":{"type":"object","properties":{"added":{"$ref":"#/components/schemas/Entity"},"updated":{"$ref":"#/components/schemas/Entity"},"deleted":{"$ref":"#/components/schemas/Entity"}}}},"required":["entity","org","operation"]},"ActivityItem":{"allOf":[{"type":"object","properties":{"_id":{"$ref":"#/components/schemas/ActivityId"},"timestamp":{"type":"string","format":"date-time"}}},{"$ref":"#/components/schemas/Activity"},{"type":"object","properties":{"caller":{"$ref":"#/components/schemas/ActivityCallerContext"}}},{"type":"object","properties":{"operations":{"type":"array","items":{"$ref":"#/components/schemas/EntityOperation"}}}}]},"BlueprintEntityId":{"description":"Reference to blueprint","type":"string","format":"uuid"}},"examples":{"TaxEntity":{"description":"Example of a Tax Rate entity","value":{"active":true,"type":"VAT","region":"Germany","region_label":"All Regions","rate":19,"behavior":"Exclusive","description":"MwSt. 19%"}},"ContactEntity":{"description":"Example of a contact entity","value":{"status":"Active","customer_number":"abc123","first_name":"First","middle_name":"Middle","last_name":"Last","title":"Herr Prof. Dr.","email":[{"email":"user@example.com","_tags":["work"]}],"phone":[{"phone":"+49123456789","_tags":["personal","mobile"]}],"address":[{"country":"Germany","city":"Koln","postal_code":81475,"street":"Melatengürtel","street_number":71,"additional_info":"5. Etage","_tags":["billing","delivery"]}],"birthdate":"2019-08-24","account":{"$relation":[{"entity_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","_tags":["company"]}]},"consent_email_marketing":{"status":"OPTED_IN","events":[{"type":"OPT_IN","organization_id":"123","created_at":"2021-07-05T09:12:29.352Z","topic":"EMAIL_MARKETING","identifier":"user@example.com","source":"https://consent.sls.epilot.io/optin?token=abc123","meta":{"ip_address":"1.1.1.1","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"}},{"type":"DOUBLE_OPT_IN_REQUEST","organization_id":"123","created_at":"2021-07-05T08:12:29.352Z","topic":"EMAIL_MARKETING","identifier":"user@example.com","source":"consent-api","meta":{"token":"abc123"}},{"type":"OPT_IN","organization_id":"123","created_at":"2021-07-04T09:12:29.352Z","topic":"EMAIL_MARKETING","identifier":"user@example.com","source":"https://frontend.epilot.cloud","meta":{"ip_address":"1.1.1.1","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"}}]}}},"AccountEntity":{"description":"Example of an account entity","value":{"status":"Active","name":"Example Company","tax_id":"DE123456789","email":[{"email":"user@example.com","_tags":["work"]}],"phone":[{"phone":"+49123456789","_tags":["personal","mobile"]}],"address":[{"country":"Germany","city":"Koln","postal_code":81475,"street":"Melatengürtel","street_number":71,"additional_info":"5. Etage","_tags":["billing","delivery"]}],"website":"http://company.com","tax_exemption":"2021-02-23T09:08:57.320Z","registry_court":"Amtsgericht Köln","registry_number":"HRB 95505","company_size":"50-99","industry":["ecommerce","tech"],"annual_revenue":"5000000","contact":{"$relation":[{"entity_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","_tags":["CEO"]}]}}},"ProductEntity":{"description":"Example of a product entity","value":{"code":"SunrockSolar375","type":"Product","name":"Sunrock Solar Panel","description":"Sunrock Solar Panel, provide high capacity power generation even at night.","shippable":"true,","_files":{"type":"file","attachments":[{"key":"f001-32123-asdasd-23213","mime":"application/pdf","name":"wallbox-premium.pdf","size":6933430,"image_url":"https://s3-bucket.epilot.cloud/uid/f001-32123-asdasd-23213","download_url":"https://s3-bucket.epilot.cloud/uid/f001-32123-asdasd-23213"}]},"_images":{"type":"image","attachments":[{"key":"i001-32123-asdasd-23213","mime":"application/pdf","name":"wallbox-premium.pdf","size":6933430,"image_url":"https://s3-bucket.epilot.cloud/uid/f001-32123-asdasd-23213","download_url":"https://s3-bucket.epilot.cloud/uid/f001-32123-asdasd-23213"}]},"prices":{"$relation":[{"entity_id":"a38cca03-18a2-4e9c-8516-0918d81e7830","_tags":["price"]},{"entity_id":"3d10c912-c419-42d7-9270-02b7d05294e5","_tags":["price"]}]}}},"PriceEntity":{"description":"Example of a price entity","value":{"code":"MODEL_375KW_PREMIUM","type":"One Time","description":"Solar Panel 375 kWp Premium","billing_scheme":"per_unit","unit_amount":"€ 28500","tiers_mode":"Standard"}},"OrderEntity":{"description":"Example of a Order entity","value":{"amount_subtotal":23045,"amount_total":27424,"billing_address":[{"additional_info":"","city":"City","country":"DE","postal_code":"123","street":"Street 1","street_number":"2","_tags":[]}],"billing_company_name":"Epilot","billing_contact":{"$relation":[{"entity_id":"0691f503-5a3c-4e9e-b036-ffb21ea1d284","relationText":"Daniel Test","_schema":"contact","_tags":[]}]},"billing_email":"x@email.xyz","billing_first_name":"Paulo","billing_last_name":"Henriques","billing_phone":"00351912611099","billing_vat":"123456789","currency":"EUR","delivery_address":[{"additional_info":"","city":"City","country":"DE","postal_code":"123","street":"Street 1","street_number":"2","_tags":[]}],"footer_notes":"Footer","line_items":[{"amount_subtotal":23045,"amount_total":27424,"currency":"EUR","description":"Basic Model - No Wifi","price_id":"efe9ff76-865c-4287-8de9-422cfc741ff9","product_id":"beefa9f1-29a8-448e-94d5-ebf1963428f8","quantity":1,"taxes":[{"amount":4379,"rate":"standard"}],"unit_amount":23045,"_price":{"active":false,"billing_duration_amount":"2","billing_duration_unit":"years","billing_period":"monthly","description":"Basic Model - No Wifi","notice_time_amount":"1","notice_time_unit":"months","price_display_in_journeys":"show_price","renewal_duration_amount":"1","renewal_duration_unit":"years","sales_tax":"standard","tax_behavior":"exclusive","termination_time_amount":"1","termination_time_unit":"months","type":"recurring","unit_amount":23045,"unit_amount_currency":"EUR","unit_amount_decimal":"230.4524","_created_at":"2021-12-15T12:34:59.579Z","_id":"efe9ff76-865c-4287-8de9-422cfc741ff9","_org":"739224","_schema":"price","_tags":["basic-model","wifi"],"_title":"Basic Model - No Wifi","_updated_at":"2021-12-31T13:07:51.392Z"},"_product":{"active":true,"code":"PWB","feature":[{"_tags":[],"feature":"Pure Energon Fueled"},{"_tags":[],"feature":"Mobile App Available"}],"name":"Pinho Walls in a Box","price_options":{"$relation":[{"entity_id":"efe9ff76-865c-4287-8de9-422cfc741ff9"}]},"type":"product","_created_at":"2021-12-15T12:35:08.438Z","_id":"beefa9f1-29a8-448e-94d5-ebf1963428f8","_org":"739224","_schema":"product","_tags":["energon","eco-friendly","wallbox"],"_title":"Pinho Walls in a Box","_updated_at":"2022-01-03T17:14:41.042Z"}}],"memo":"Memo","status":"Paid","total_details":{"amount_tax":4379,"breakdown":{"recurrences":[{"amount_subtotal":23045,"amount_tax":4379,"amount_total":27424,"billing_period":"monthly","type":"recurring"}],"taxes":[{"amount":4379,"rate":"standard"}]}}}},"OpportunityEntity":{"description":"Example of an Opportunity entity","value":{"amount_subtotal":23045,"amount_total":27424,"assignees":{"$relation":[{"entity_id":"66a1a6a3-38ee-4ffe-b68d-ee90e3bb1a77","relationText":"Claudius Iohannis","_schema":"contact","_tags":[]}]},"billing_address":[{"additional_info":"","city":"City","country":"DE","postal_code":"123","street":"Street 1","street_number":"2","_tags":[]}],"billing_company_name":"Epilot","billing_contact":{"$relation":[{"entity_id":"0691f503-5a3c-4e9e-b036-ffb21ea1d284","relationText":"Daniel Test","_schema":"contact","_tags":[]}]},"billing_email":"customer@email.xyz","billing_first_name":"Customer First Name","billing_last_name":"Customer Last Name","billing_phone":"00351912611098","billing_vat":"123456789","currency":"EUR","delivery_address":[{"additional_info":"","city":"City","country":"DE","postal_code":"123","street":"Street 1","street_number":"2","_tags":[]}],"line_items":[{"amount_subtotal":23045,"amount_total":27424,"currency":"EUR","description":"Basic Model - No Wifi","price_id":"efe9ff76-865c-4287-8de9-422cfc741ff9","product_id":"beefa9f1-29a8-448e-94d5-ebf1963428f8","quantity":1,"taxes":[{"amount":4379,"rate":"standard"}],"unit_amount":23045,"_price":{"active":false,"billing_duration_amount":"2","billing_duration_unit":"years","billing_period":"monthly","description":"Basic Model - No Wifi","notice_time_amount":"1","notice_time_unit":"months","price_display_in_journeys":"show_price","renewal_duration_amount":"1","renewal_duration_unit":"years","sales_tax":"standard","tax_behavior":"exclusive","termination_time_amount":"1","termination_time_unit":"months","type":"recurring","unit_amount":23045,"unit_amount_currency":"EUR","unit_amount_decimal":"230.4524","_created_at":"2021-12-15T12:34:59.579Z","_id":"efe9ff76-865c-4287-8de9-422cfc741ff9","_org":"739224","_schema":"price","_tags":["basic-model","wifi"],"_title":"Basic Model - No Wifi","_updated_at":"2021-12-31T13:07:51.392Z"},"_product":{"active":true,"code":"PWB","feature":[{"_tags":[],"feature":"Pure Energon Fueled"},{"_tags":[],"feature":"Mobile App Available"}],"name":"Pinho Walls in a Box","price_options":{"$relation":[{"entity_id":"efe9ff76-865c-4287-8de9-422cfc741ff9"}]},"type":"product","_created_at":"2021-12-15T12:35:08.438Z","_id":"beefa9f1-29a8-448e-94d5-ebf1963428f8","_org":"739224","_schema":"product","_tags":["energon","eco-friendly","wallbox"],"_title":"Pinho Walls in a Box","_updated_at":"2022-01-03T17:14:41.042Z"}}],"opportunity_number":"20220105-768854819","participants":{"$relation":[{"entity_id":"9bbfdaa9-22b2-4100-a256-67600202e3f4","relationText":"Alex Marques","_schema":"contact","_tags":[]}]},"status":"Lead","total_details":{"amount_tax":4379,"breakdown":{"recurrences":[{"amount_subtotal":23045,"amount_tax":4379,"amount_total":27424,"billing_period":"monthly","type":"recurring"}],"taxes":[{"amount":4379,"rate":"standard"}]}}}},"EmailTemplateEntity":{"description":"Example of an email template entity","value":{"attachments":[],"body":"<p fr-original-style=\\"caret-color: rgb(65, 65, 65); color: rgb(65, 65, 65); font-family: sans-serif;\\" id=\\"isPasted\\" style=\\"caret-color: rgb(65, 65, 65); color: rgb(65, 65, 65); font-family: sans-serif; box-sizing: inherit; border-color: rgba(229, 231, 235, var(--tw-border-opacity));\\"><span fr-original-style=\\"font-weight: 700;\\" style=\\"font-weight: 700; box-sizing: inherit; border-color: rgba(229, 231, 235, var(--tw-border-opacity));\\">Variablen - Kontakt</span></p>","brand_id":7066103,"from":{"name":"Name","email":"admin@email.xyz"},"name":"PH Test","subject":"Example Subject","system_template":false,"to":[{"id":"1","name":"Contact Name","email":"Contact email"}],"_tags":["Bestellung"]}},"FileEntity":{"description":"Example of a file template entity","value":{"access_control":"private","filename":"solar_panel_ph.jpeg","s3ref":{"bucket":"epilot-staging-user-content","key":"728/temp/6d450fd1-2d63-435f-b598-c605dfb89cbc/solar_panel_ph.jpeg"}}},"WorkflowStepEntity":{"description":"Example of a workflow step template entity","value":{"name":"Name","assigned_to\\"":["10000563"],"status":"Unassigned","order":123,"tags":["tag1"]}},"SubmissionEntity":{"description":"Example of a submission step template entity","value":{"mapped_entities":{"$relation":[{"entity_id":"4ffb071c-2821-4505-86d0-09b801ffd97a","relationText":"4ffb071c-2821-4505-86d0-09b801ffd97a","_schema":"price","_tags":[]}]}}}}},"servers":[{"url":"https://entity.sls.epilot.io"}]}')}},t={};return function i(n){if(t[n])return t[n].exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,i),a.exports}(914)})());
1
+ !function(e,t){for(var i in t)e[i]=t[i];t.__esModule&&Object.defineProperty(e,"__esModule",{value:!0})}(exports,(()=>{"use strict";var e={914:function(e,t,i){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var a=n(i(279));t.default=a.default},279:e=>{e.exports=JSON.parse('{"openapi":"3.0.2","info":{"title":"Entity API","version":"1.0.0","description":"Flexible data layer for epilot Entities.\\n\\nUse this API configure and access your business objects like Contacts, Opportunities and Products.\\n\\n[Feature Documentation](https://docs.epilot.io/docs/entities/flexible-entities)\\n"},"tags":[{"name":"Schemas","description":"Model Entities"},{"name":"Entities","description":"CRUD Access for Entities"},{"name":"Activity","description":"Entity Events"}],"security":[{"EpilotAuth":[]},{"EpilotOrg":[]}],"paths":{"/v1/entity/schemas":{"get":{"operationId":"listSchemas","summary":"listSchemas","description":"Get the latest version of local schema","parameters":[{"in":"query","name":"unpublished","description":"Includes the unpublished version of unpublished schema","schema":{"type":"boolean","default":false}}],"tags":["Schemas"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/EntitySchemaItem"}}}}}}}}}},"/v1/entity/schemas/blueprints":{"get":{"operationId":"listSchemaBlueprints","summary":"listSchemaBlueprints","description":"List canonical versions of all available schemas","tags":["Schemas"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/EntitySchemaItem"}}}}}}}}}},"/v1/entity/schemas/{slug}/versions":{"get":{"operationId":"getSchemaVersions","summary":"getSchemaVersions","description":"Get all versions of this schema ordered by the latest versions including drafts.","tags":["Schemas"],"parameters":[{"in":"path","name":"slug","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"versions":{"type":"array","items":{"$ref":"#/components/schemas/EntitySchemaItem"}},"drafts":{"type":"array","items":{"$ref":"#/components/schemas/EntitySchemaItem"}}}}}}}}}},"/v1/entity/schemas/{slug}":{"get":{"operationId":"getSchema","summary":"getSchema","description":"By default gets the latest version of the Schema and to get the specific version of schema pass the id.","tags":["Schemas"],"parameters":[{"in":"path","name":"slug","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"query","name":"id","schema":{"$ref":"#/components/schemas/SchemaId"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchemaItem"}}}}}},"put":{"operationId":"createNewSchemaVersion","summary":"createNewSchemaVersion","description":"Create new version of the schema and default draft is false.","tags":["Schemas"],"parameters":[{"in":"path","name":"slug","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"query","name":"draft","schema":{"default":false,"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchema"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySchemaItem"}}}}}},"delete":{"operationId":"deleteSchemaById","summary":"deleteSchemaById","description":"Delete schema by Id","tags":["Schemas"],"parameters":[{"in":"path","name":"slug","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"query","name":"id","required":true,"schema":{"$ref":"#/components/schemas/SchemaId"}}],"responses":{"204":{"description":"Success"}}}},"/v1/entity:search":{"post":{"operationId":"searchEntities","summary":"searchEntities","description":"Search for entities. Supports ordering and pagination. Lucene query syntax supported for complex querying.\\n\\nPassing comma-separated `x-epilot-org-id` is supported for cross-org entity search.\\n\\n## Relations\\n\\nWhen `hydrate=true`, relation attributes are replaced in-place with nested entity values.\\n\\nExample:\\n```json\\n{\\n \\"_id\\": \\"123\\",\\n \\"name\\": \\"parent\\",\\n \\"_tags\\": [\\"parent\\"],\\n \\"contacts\\": {\\n \\"$relation\\": [\\n { \\"entity_id\\": \\"456\\", \\"_tags\\": [\\"primary\\"] },\\n { \\"entity_id\\": \\"789\\", \\"_tags\\": [\\"secondary\\"] },\\n ]\\n }\\n}\\n```\\n\\nBecomes:\\n```json\\n{\\n \\"_id\\": \\"123\\",\\n \\"name\\": \\"parent\\",\\n \\"_tags\\": [\\"parent\\"],\\n \\"contacts\\": [\\n {\\n \\"$relation\\": { \\"entity_id\\": \\"456\\", \\"_tags\\": [\\"primary\\"] },\\n \\"_id\\": \\"456\\",\\n \\"name\\": \\"child 1\\",\\n \\"_tags\\": [\\"child\\"]\\n },\\n {\\n \\"$relation\\": { \\"entity_id\\": \\"789\\", \\"_tags\\": [\\"secondary\\"] },\\n \\"_id\\": \\"789\\",\\n \\"name\\": \\"child 2\\",\\n \\"_tags\\": [\\"child\\"]\\n }\\n ]\\n}\\n```\\n","tags":["Entities"],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySearchParams"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntitySearchResults"}},"text/csv":{"schema":{"type":"string"}}}}}}},"/v1/entity/{slug}":{"post":{"operationId":"createEntity","summary":"createEntity","description":"Creates a new entity using a key.\\n\\n## Activity\\n\\nIf no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityCreated`\\n\\n## Relations\\n\\nTo create a relation, store a property object that defines a `$relation` array.\\n\\nExample:\\n\\n```json\\n{\\n \\"contacts\\": {\\n \\"$relation\\": [\\n { \\"entity_id\\": \\"3fa85f64-5717-4562-b3fc-2c963f66afa6\\" }\\n ]\\n }\\n}\\n```\\n\\nThe items in `$relation` support two properties:\\n- `entity_id` - The ID of the entity to link\\n- `_tags` - Tags or labels for the relation (optional)\\n","tags":["Entities"],"parameters":[{"in":"path","name":"slug","description":"Entity Schema","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"query","name":"activity_id","description":"Activity to include in event feed","required":false,"schema":{"$ref":"#/components/schemas/ActivityId"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"},"examples":{"contact":{"$ref":"#/components/examples/ContactEntity"},"account":{"$ref":"#/components/examples/AccountEntity"},"product":{"$ref":"#/components/examples/ProductEntity"},"price":{"$ref":"#/components/examples/PriceEntity"},"tax":{"$ref":"#/components/examples/TaxEntity"},"order":{"$ref":"#/components/examples/OrderEntity"},"opportunity":{"$ref":"#/components/examples/OpportunityEntity"},"email template":{"$ref":"#/components/examples/EmailTemplateEntity"},"file":{"$ref":"#/components/examples/FileEntity"},"workflow step":{"$ref":"#/components/examples/WorkflowStepEntity"},"submission":{"$ref":"#/components/examples/SubmissionEntity"}}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityItem"}}}}}}},"/v1/entity/{slug}:upsert":{"patch":{"operationId":"upsertEntity","summary":"upsertEntity","description":"Create or update an entity using `unique_key`\\n\\n- If no entities are matched, a new entity is created.\\n- If exactly one entity is matched, a `PATCH`-style update is applied to the existing entity.\\n- If more than one entity is matched a `409` Error is returned\\n\\n## Activity\\n\\nIf no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityCreated` or `EntityUpdated`\\n","tags":["Entities"],"parameters":[{"in":"path","name":"slug","description":"Entity Schema","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"query","name":"activity_id","description":"Activity to include in event feed","required":false,"schema":{"$ref":"#/components/schemas/ActivityId"}},{"in":"query","name":"dry_run","description":"Dry Run mode = return matched entities but don\'t update them.","required":false,"schema":{"type":"boolean","default":false}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"unique_key":{"type":"array","items":{"type":"string","example":"email.0.email"},"example":["_id"]},"entity":{"$ref":"#/components/schemas/Entity"}},"required":["unique_key","entity"]}}}},"responses":{"200":{"description":"Entity was updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityItem"}}}},"201":{"description":"Entity was created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityItem"}}}},"409":{"description":"Conflict: multiple entities were matched with `unique_key`"}}}},"/v1/entity/{slug}/{id}":{"get":{"operationId":"getEntity","summary":"getEntity","description":"Gets Entity and relations by id.\\n\\n## Relations\\n\\nWhen `hydrate=true`, relation attributes are replaced in-place with nested entity values.\\n\\nExample:\\n```json\\n{\\n \\"_id\\": \\"123\\",\\n \\"name\\": \\"parent\\",\\n \\"_tags\\": [\\"parent\\"],\\n \\"contacts\\": {\\n \\"$relation\\": [\\n { \\"entity_id\\": \\"456\\", \\"_tags\\": [\\"primary\\"] },\\n { \\"entity_id\\": \\"789\\", \\"_tags\\": [\\"secondary\\"] },\\n ]\\n }\\n}\\n```\\n\\nBecomes:\\n```json\\n{\\n \\"_id\\": \\"123\\",\\n \\"name\\": \\"parent\\",\\n \\"_tags\\": [\\"parent\\"],\\n \\"contacts\\": [\\n {\\n \\"$relation\\": { \\"entity_id\\": \\"456\\", \\"_tags\\": [\\"primary\\"] },\\n \\"_id\\": \\"456\\",\\n \\"name\\": \\"child 1\\",\\n \\"_tags\\": [\\"child\\"]\\n },\\n {\\n \\"$relation\\": { \\"entity_id\\": \\"789\\", \\"_tags\\": [\\"secondary\\"] },\\n \\"_id\\": \\"789\\",\\n \\"name\\": \\"child 2\\",\\n \\"_tags\\": [\\"child\\"]\\n }\\n ]\\n}\\n```\\n","tags":["Entities"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"query","name":"hydrate","description":"When true, enables entity hydration to resolve nested $relation references in-place.","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/EntityItem"},"relations":{"type":"array","items":{"$ref":"#/components/schemas/EntityItem"}}}}}}}}},"put":{"operationId":"updateEntity","summary":"updateEntity","description":"Updates an Entity\\n\\n## Activity\\n\\nIf no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityUpdated`\\n\\n## Relations\\n\\nTo create a relation, store a property that defines a `$relation` array.\\n\\nExample:\\n\\n```json\\n{\\n \\"contacts\\": {\\n \\"$relation\\": [\\n { \\"entity_id\\": \\"3fa85f64-5717-4562-b3fc-2c963f66afa6\\" }\\n ]\\n }\\n}\\n```\\n\\nThe items in `$relation` support two properties:\\n- `entity_id` - The ID of the entity to link\\n- `_tags` - Tags or labels for the relation (optional)\\n","tags":["Entities"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"query","name":"activity_id","description":"Activity to include in event feed","required":false,"schema":{"$ref":"#/components/schemas/ActivityId"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Entity"},"example":{}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntityItem"}}}}}},"delete":{"operationId":"deleteEntity","summary":"deleteEntity","description":"Deletes an Entity\\n\\n## Activity\\n\\nIf no `activity_id` query parameter is provided, implicitly creates Activity of type `EntityDeleted`\\n","tags":["Entities"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"query","name":"activity_id","description":"Activity to include in event feed","required":false,"schema":{"$ref":"#/components/schemas/ActivityId"}}],"responses":{"200":{"description":"Success"}}}},"/v1/entity:autocomplete":{"get":{"operationId":"autocomplete","summary":"autocomplete","description":"Autocomplete entity attributes\\n","tags":["Entities"],"parameters":[{"name":"input","in":"query","description":"Input to autocomplete","schema":{"type":"string"}},{"name":"attribute","in":"query","description":"Autocomplete attribute","schema":{"type":"string","example":"_tags"},"required":true},{"name":"slug","in":"query","description":"Limit results to entity schema","schema":{"$ref":"#/components/schemas/EntitySlug"}},{"name":"size","in":"query","description":"Maximum number of results to return","schema":{"type":"integer","default":10,"minimum":1,"maximum":250}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"hits":{"type":"number","example":1},"results":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"boolean"},{"type":"object","additionalProperties":true}]},"example":["value"]}}}}}}}}},"/v1/entity/activity":{"post":{"operationId":"createActivity","summary":"createActivity","description":"Create an activity that can be displayed in activity feeds.\\n\\n- All activites are published as events on the event bus\\n- Entity mutations are always part of an activity\\n","tags":["Activity"],"parameters":[{"in":"query","name":"entities","description":"Comma-separated list of entities which the activity primarily concerns","style":"form","explode":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityId"}}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Activity"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityItem"}}}}}}},"/v1/entity/activity/{id}":{"get":{"operationId":"getActivity","summary":"getActivity","description":"Get activity by id","tags":["Activity"],"parameters":[{"in":"path","name":"id","description":"Activity Id","required":true,"schema":{"$ref":"#/components/schemas/ActivityId"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityItem"}}}}}}},"/v1/entity/activity/{id}:attach":{"post":{"operationId":"attachActivity","summary":"attachActivity","description":"Attach existing activity to entity activity feeds","tags":["Activity"],"parameters":[{"in":"path","name":"id","description":"Activity Id","required":true,"schema":{"$ref":"#/components/schemas/ActivityId"}},{"in":"query","name":"entities","description":"Comma-separated list of entities which the activity primarily concerns","style":"form","explode":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/EntityId"}}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivityItem"}}}}}}},"/v1/entity/{slug}/{id}/activity":{"get":{"operationId":"getEntityActivityFeed","summary":"getEntityActivityFeed","description":"Get activity feed for an entity\\n","tags":["Activity"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"query","name":"after","description":"Get activities after this timestamp","schema":{"type":"string","format":"date-time"}},{"in":"query","name":"before","description":"get activities before this timestamp","schema":{"type":"string","format":"date-time"}},{"in":"query","name":"from","description":"start from page","schema":{"type":"integer","minimum":0,"default":0}},{"in":"query","name":"size","description":"max number of results to return","schema":{"type":"integer","minimum":1,"default":25}},{"in":"query","name":"type","description":"Activity type","schema":{"type":"string","example":"SyncActivity"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"total":{"type":"integer","example":1},"results":{"type":"array","items":{"$ref":"#/components/schemas/ActivityItem"}}}}}}}}}},"/v1/entity/{slug}/{id}/relations":{"get":{"operationId":"getRelations","summary":"getRelations","description":"It loads 1st level relations for the mentioned entity. You can control whether entire related entity is loaded or not via hydrate param.","tags":["Relations"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"query","name":"hydrate","description":"When true, expand relation items with full blown entities.","schema":{"default":false,"type":"boolean"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetRelationsResp"},"example":[{"attribute":"contacts","entity_id":"ed27830b-984c-4bca-9b87-2849bb5789ca","_tags":["primary","billing"]},{"attribute":"contacts","entity_id":"fadfc950-6e43-4e38-bae0-ffcf4b8b90e1"},{"_id":"9924c4de-d3ed-4752-821d-fc0b9bd57c1b","order_number":"a34234jd","customer_email":"johndoe@epilot.cloud","billing_first_name":"john","billing_last_name":"doe","billing_company_name":"ePilot Gmbh","billing_vat":"234823948,","billing_email":"johndoe@nowhere.com","billing_phone":"1234234545,","billing_address":"wallstreet, 1","billing_contact":"villy or zilly","$relation":{"attribute":"orders","entity_id":"9924c4de-d3ed-4752-821d-fc0b9bd57c1b","_tags":["solar_panel","one_time"]}}]}}}}},"post":{"operationId":"addRelations","summary":"addRelations","description":"It relates one or more entities to some parent entity, by providing meaning for relations via attribute field.","tags":["Relations"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RelationItem"}},"example":[{"attribute":"contacts","entity_id":"e8878f62-2d3d-4c86-bfe7-01a4180ff048","_tags":["billing"]},{"attribute":"contacts","entity_id":"ee8a2af9-fb36-4981-b848-4e65275851af"},{"attribute":"opportunities","entity_id":"30990430-a53d-41a2-83db-2de072dc4dd4"}]}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelationItem"}}}}}}},"/v1/entity/{slug}/{id}/relations/{attribute}/{entity_id}":{"put":{"operationId":"updateRelation","summary":"updateRelation","description":"It updates a relation between two entities.","tags":["Relations"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"path","name":"attribute","description":"The attribute that express meaning","required":true,"schema":{"type":"string"}},{"in":"path","name":"entity_id","description":"The attribute that express meaning","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"_tags":{"type":"array","items":{"type":"string"}}}},"example":{"_tags":["billing","prepaid"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelationItem"}}}}}},"delete":{"operationId":"deleteRelation","summary":"deleteRelation","description":"It deletes a relation between one entity and the other.","tags":["Relations"],"parameters":[{"in":"path","name":"slug","description":"Entity Type","required":true,"schema":{"$ref":"#/components/schemas/EntitySlug"}},{"in":"path","name":"id","description":"Entity id","required":true,"schema":{"$ref":"#/components/schemas/EntityId"}},{"in":"path","name":"attribute","description":"The attribute that express meaning","required":true,"schema":{"type":"string"}},{"in":"path","name":"entity_id","description":"The attribute that express meaning","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Relation deleted with success."}}}}},"components":{"securitySchemes":{"EpilotAuth":{"type":"http","scheme":"bearer","description":"Authorization header with epilot OAuth2 bearer token","bearerFormat":"JWT"},"EpilotOrg":{"description":"Overrides the target organization to allow shared tenantaccess","name":"x-epilot-org-id","in":"header","type":"apiKey"}},"schemas":{"SchemaId":{"description":"Generated uuid for schema","type":"string","format":"uuid"},"EntitySchema":{"description":"The \\"type\\" of an Entity. Describes the shape. Includes Entity Attributes, Relations and Capabilities.","type":"object","properties":{"slug":{"$ref":"#/components/schemas/EntitySlug"},"version":{"type":"integer","minimum":1},"blueprint":{"$ref":"#/components/schemas/BlueprintEntityId"},"feature_flag":{"type":"string","example":"FF_MY_FEATURE_FLAG","description":"This schema should only be active when the feature flag is enabled"},"enable_setting":{"description":"This schema should only be active when one of the organization settings is enabled","type":"array","items":{"type":"string","example":"ecommerce_preview"}},"name":{"description":"User-friendly identifier for the entity schema","type":"string","example":"Contact"},"plural":{"type":"string","example":"Contacts"},"published":{"type":"boolean","example":false},"draft":{"type":"boolean","example":false},"icon":{"type":"string","example":"person"},"title_template":{"type":"string","description":"Template for rendering the title field. Uses handlebars","example":"{{first_name}} {{last_name}}"},"ui_config":{"type":"object","properties":{"table_view":{"$ref":"#/components/schemas/EntityViewConfig"},"create_view":{"$ref":"#/components/schemas/EntityViewConfig"},"edit_view":{"$ref":"#/components/schemas/EntityViewConfig"},"list_item":{"type":"object","properties":{"summary_attributes":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/SummaryAttribute"},{"type":"string","description":"List of attributes to show in list item","example":"email"}]}}}},"sharing":{"type":"object","properties":{"show_sharing_button":{"type":"boolean","description":"Show the sharing button in entity detail view","example":true}}}}},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/EntityCapability"}},"group_settings":{"type":"array","description":"A dictionary of Group Titles and associated settings if present.","items":{"type":"object","properties":{"label":{"type":"string"},"id":{"type":"string"},"expanded":{"type":"boolean"},"render_condition":{"type":"string","example":"_is_composite_price = \\"false\\""},"order":{"description":"Render order of the group","type":"integer","default":0},"feature_flag":{"type":"string","example":"FF_MY_FEATURE_FLAG","description":"This schema should only be active when the feature flag is enabled"},"info_tooltip_title":{"type":"object","properties":{"key":{"type":"string"},"default":{"type":"string"}}}},"required":["label","id"]},"example":{"Order Info":{"expanded":true},"Contact Details":{"expanded":false,"info_tooltip_title":{"key":"partner.partner_information_group_tooltip","default":"These informations are provided by the partner company and cannot be edited."}}}},"layout_settings":{"type":"object","description":"Custom grid definitions for the layout","additionalProperties":{"type":"object","properties":{"grid_gap":{"type":"string"},"grid_template_columns":{"type":"string"}}}},"dialog_config":{"type":"object","additionalProperties":true},"attributes":{"description":"An ordered list of attributes the entity contains","type":"array","items":{"$ref":"#/components/schemas/Attribute"},"example":[{"name":"email","type":"email","label":"Email","required":true},{"name":"first_name","type":"string","label":"First Name"},{"name":"last_name","type":"string","label":"Last Name"},{"name":"birthdate","type":"date","label":"Birthdate"},{"name":"salutation","type":"select","label":"Salutation","options":["Mr.","Ms. / Mrs.","Other"]},{"name":"marketing_permission","type":"boolean","label":"Marketing permission"},{"name":"image","type":"file","label":"Image"}]},"explicit_search_mappings":{"$ref":"#/components/schemas/SearchMappings"}},"required":["slug","name","plural"]},"EntitySchemaItem":{"allOf":[{"type":"object","properties":{"id":{"$ref":"#/components/schemas/SchemaId"},"created_at":{"type":"string"},"updated_at":{"type":"string"},"comment":{"type":"string"},"source":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"}}}}},{"$ref":"#/components/schemas/EntitySchema"}]},"Attribute":{"anyOf":[{"$ref":"#/components/schemas/TextAttribute"},{"$ref":"#/components/schemas/LinkAttribute"},{"$ref":"#/components/schemas/DateAttribute"},{"$ref":"#/components/schemas/CountryAttribute"},{"$ref":"#/components/schemas/BooleanAttribute"},{"$ref":"#/components/schemas/SelectAttribute"},{"$ref":"#/components/schemas/StatusAttribute"},{"$ref":"#/components/schemas/SequenceAttribute"},{"$ref":"#/components/schemas/RelationAttribute"},{"$ref":"#/components/schemas/UserRelationAttribute"},{"$ref":"#/components/schemas/AddressRelationAttribute"},{"$ref":"#/components/schemas/CurrencyAttribute"},{"$ref":"#/components/schemas/RepeatableAttribute"},{"$ref":"#/components/schemas/TagsAttribute"},{"$ref":"#/components/schemas/NumberAttribute"},{"$ref":"#/components/schemas/ConsentAttribute"},{"$ref":"#/components/schemas/InternalAttribute"},{"$ref":"#/components/schemas/OrderedListAttribute"},{"$ref":"#/components/schemas/FileAttribute"},{"$ref":"#/components/schemas/ComputedAttribute"},{"$ref":"#/components/schemas/PartnerStatusAttribute"},{"$ref":"#/components/schemas/InvitationEmailAttribute"},{"$ref":"#/components/schemas/AutomationAttribute"},{"$ref":"#/components/schemas/InternalUserAttribute"}]},"BaseAttribute":{"type":"object","properties":{"name":{"type":"string"},"label":{"type":"string"},"placeholder":{"type":"string"},"hidden":{"description":"Do not render attribute in entity views","type":"boolean","default":false},"show_in_table":{"description":"Render as a column in table views. When defined, overrides `hidden`","type":"boolean"},"required":{"type":"boolean","default":false},"readonly":{"type":"boolean","default":false},"deprecated":{"type":"boolean","default":false},"default_value":{"oneOf":[{"type":"string"},{"type":"object","additionalProperties":true},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"array"}]},"group":{"type":"string"},"layout":{"type":"string"},"hide_label":{"type":"boolean","description":"When set to true, will hide the label of the field."},"icon":{"type":"string","description":"Code name of the icon to used to represent this attribute.\\nThe value must be a valid @epilot/base-elements Icon name\\n"},"render_condition":{"type":"string","description":"Defines the conditional rendering expression for showing this field.\\nWhen a valid expression is parsed, their evaluation defines the visibility of this attribute.\\nNote: Empty or invalid expression have no effect on the field visibility.\\n"},"constraints":{"type":"object","description":"A set of constraints applicable to the attribute.\\nThese constraints should and will be enforced by the attribute renderer.\\n","example":{"disablePast":true}},"feature_flag":{"type":"string","example":"FF_MY_FEATURE_FLAG","description":"This attribute should only be active when the feature flag is enabled"},"value_formatter":{"type":"string"},"preview_value_formatter":{"type":"string"},"entity_builder_disable_edit":{"description":"Setting to `true` disables editing the attribute on the entity builder UI","type":"boolean","default":false},"protected":{"description":"Setting to `true` prevents the attribute from being modified / deleted","type":"boolean","default":true}},"required":["name","label"]},"TextAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Textarea or text input","properties":{"type":{"type":"string","enum":["string"]},"multiline":{"type":"boolean"}}}]},"LinkAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Link with title and href","properties":{"type":{"type":"string","enum":["link"]}}}]},"InternalAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"No UI representation","properties":{"type":{"type":"string","enum":["internal"]}}}]},"BooleanAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Yes / No Toggle","properties":{"type":{"type":"string","enum":["boolean"]}}}]},"DateAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Date or Datetime picker","properties":{"type":{"type":"string","enum":["date","datetime"]}}}]},"CountryAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Country picker","properties":{"type":{"type":"string","enum":["country"]}}}]},"SelectAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Dropdown select","properties":{"type":{"type":"string","enum":["select","radio"]},"options":{"type":"array","items":{"anyOf":[{"type":"string","nullable":true},{"type":"object","properties":{"value":{"type":"string"},"title":{"type":"string"}},"required":["value"]}]}},"allow_any":{"type":"boolean","description":"Allow arbitrary input values in addition to provided options"}}}]},"StatusAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Status select","properties":{"type":{"type":"string","enum":["status"]},"options":{"type":"array","items":{"anyOf":[{"type":"string","nullable":true},{"type":"object","properties":{"value":{"type":"string"},"title":{"type":"string"}},"required":["value"]}]}}}}]},"SequenceAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Sequence of unique identifiers","properties":{"type":{"type":"string","enum":["sequence"]},"prefix":{"description":"Prefix added before the sequence number","type":"string","example":"OR-"},"start_number":{"type":"integer","minimum":0}}}]},"FileAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"File or Image Attachment","properties":{"type":{"type":"string","enum":["image","file"]},"multiple":{"type":"boolean"},"allowed_extensions":{"description":"List of file extensions (without the dot suffix)","type":"array","items":{"type":"string","example":"csv"}},"default_access_control":{"type":"string","enum":["public-read","private"]}},"required":["type"]}]},"CurrencyAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Currency input","properties":{"type":{"type":"string","enum":["currency"]},"currency_selector_only":{"type":"boolean","default":false},"currency":{"description":"An array of currency configurations with a country code (ISO-4217)","type":"array","items":{"anyOf":[{"type":"object","description":"A currency configuration","properties":{"code":{"type":"string"},"description":{"type":"string"},"symbol":{"type":"string"},"flag":{"type":"string"}},"required":["code","description","symbol"],"example":{"code":"EUR","description":"Euro","symbol":"€","flag":"🇪🇺"}}]}}},"required":["type","currency"]}]},"SummaryField":{"type":"object","description":"Summary Fields are displayed inside list view as a resume of the relation entity.","properties":{"field":{"type":"string","description":"The field from the entity attributes to display"},"display_as":{"type":"string","description":"An hint on how to display the summary field"}}},"RelationAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Entity Relationship","properties":{"type":{"type":"string","enum":["relation"]},"relation_type":{"type":"string","enum":["has_many","has_one"]},"delete_mode":{"type":"string","enum":["cascade"]},"relation_affinity_mode":{"type":"string","enum":["weak","strong"]},"enable_relation_picker":{"type":"boolean","default":true,"description":"When enable_relation_picker is set to true the user will be able to pick existing relations as values. Otherwise, the user will need to create new relation to link."},"edit_mode":{"type":"string","enum":["list-view"]},"details_view_mode_enabled":{"type":"boolean","default":false,"description":"Enables the preview, edition, and creation of relation items on a Master-Details view mode."},"actions":{"type":"array","items":{"type":"object","properties":{"action_type":{"type":"string","enum":["add_existing","create_new","create_from_existing"],"description":"The action type. Currently supported actions:\\n\\n| action | description |\\n|--------|-------------|\\n| add_existing | Enables the user to pick an existing entity to link as relation |\\n| create_new | Enables the user to create a new entity using the first/main `allowed_schemas` schema\\n| create_from_existing | Enables the user to pick an existing entity to clone from, while creating a blank new entity to link as relation |\\n"},"label":{"type":"string","description":"The action label or action translation key (i18n)"},"default":{"type":"boolean","description":"Sets the action as the default action, visible as the main action button."},"feature":{"type":"string","description":"Name of the feature flag that enables this action"},"new_entity_item":{"type":"object","allOf":[{"$ref":"#/components/schemas/EntityItem"}]}}},"example":{"value":[{"action_type":"add_existing","label":"entityrelation.add_existing","default":true},{"action_type":"create_new","label":"entityrelation.create_new"},{"action_type":"create_from_existing","label":"entityrelation.create_from_existing"}]}},"drawer_size":{"type":"string","enum":["small","medium","large"]},"icon":{"type":"string"},"summary_fields":{"type":"array","items":{"anyOf":[{"type":"string","description":"The field name from the entity attributes to display"},{"$ref":"#/components/schemas/SummaryField"}]}},"has_primary":{"type":"boolean"},"allowedSchemas":{"type":"array","items":{"$ref":"#/components/schemas/EntitySlug"}},"enable_relation_tags":{"type":"boolean","default":true,"description":"When enable_relation_tags is set to true the user will be able to set tags(labels) in each relation item."}}}]},"UserRelationAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"User Relationship","properties":{"type":{"type":"string","enum":["relation_user"]},"multiple":{"type":"boolean","default":false}}}]},"AddressRelationAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Reference to an address attribute of another entity","properties":{"type":{"type":"string","enum":["relation_address"]},"has_primary":{"type":"boolean"}}}]},"InvitationEmailAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Email address for send invitation","properties":{"type":{"type":"string","enum":["invitation_email"]}}}]},"AutomationAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Automation entity","properties":{"type":{"type":"string","enum":["automation"]}}}]},"InternalUserAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Epilot internal user info","properties":{"type":{"type":"string","enum":["internal_user"]}}}]},"RepeatableAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Repeatable (add N number of fields)","properties":{"repeatable":{"type":"boolean"},"has_primary":{"type":"boolean"},"relation_affinity_mode":{"type":"string","enum":["weak","strong"]},"type":{"type":"string","enum":["string","phone","email","address","relation","payment","price_component","date"]},"enable_relation_picker":{"type":"boolean","default":true,"description":"when enable_relation_picker is set to true the user will be able to pick existing relations as values. Otherwise, the user will need to create new relation to link."}}}]},"TagsAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Tags","properties":{"type":{"type":"string","enum":["tags"]},"options":{"type":"array","items":{"type":"string"}},"suggestions":{"type":"array","items":{"type":"string"}}}}]},"NumberAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Numeric input","properties":{"type":{"type":"string","enum":["number"]},"format":{"type":"string"}}}]},"ConsentAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Consent Management","properties":{"type":{"type":"string","enum":["consent"]},"topic":{"type":"string"},"identifiers":{"type":"array","items":{"type":"string"}}},"required":["type","topic"]}]},"OrderedListAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Type of attribute to render N number of ordered fields","properties":{"type":{"type":"string","enum":["ordered_list"]}}}]},"ComputedAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"An attribute that is computed from the entity data. For more details on how to use them, check the docs [here](https://e-pilot.atlassian.net/wiki/spaces/EO/pages/5642977476/How+To+Computed+Schema+Attributes)","properties":{"type":{"type":"string","enum":["computed"]}}}]},"PartnerStatusAttribute":{"allOf":[{"$ref":"#/components/schemas/BaseAttribute"},{"type":"object","description":"Partner Status","properties":{"type":{"type":"string","enum":["partner_status"]}}}]},"Attachment":{"type":"object","deprecated":true,"properties":{"key":{"type":"string"},"mime":{"type":"string"},"name":{"type":"string"},"size":{"type":"number"},"image_url":{"type":"string"},"download_url":{"type":"string"},"alt_text":{"type":"string"}},"required":["key","mime","name","size","image_url","download_url"]},"SummaryAttribute":{"description":"Represents an expanded version of an attribute to be displayed in the list item summary.\\nThis configuration can be used in the following way: \\n```js\\n{\\n \\"label\\": \\"Price components\\"\\n \\"value\\": \\"{{item.prices.length}} price components\\"\\n \\"show_as_tag\\": true\\n \\"render_condition\\": \\"is_composite_price = \\\\\\"true\\\\\\"\\"\\n}\\n```\\nThe value field supports handlebar expressions from which you can pick any field from the entity state.\\n","type":"object","properties":{"label":{"type":"string","description":"Label to be shown on the top of the value."},"value":{"type":"string","description":"A static value or an handlebar expression."},"show_as_tag":{"type":"boolean","description":"Displays the value within a tag chip."},"tag_color":{"type":"string","description":"CSS hex color or CSS color name for the tag chip."},"render_condition":{"type":"string","description":"Defines the conditional rendering expression for showing this field.\\nWhen a valid expression is parsed, their evaluation defines the visibility of this attribute.\\nNote: Empty or invalid expression have no effect on the field visibility.\\n"}},"required":["label","value"]},"EntitySlug":{"description":"URL-friendly identifier for the entity schema","type":"string","example":"contact"},"EntityCapability":{"description":"Capabilities the Entity has. Turn features on/off for entities.","type":"object","properties":{"name":{"type":"string","description":"Unique name for the capability","example":"customer_messaging"},"title":{"type":"string","description":"Human readable title of the capability","example":"Messaging"},"attributes":{"type":"array","items":{"$ref":"#/components/schemas/Attribute"}},"ui_hooks":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"hook":{"type":"string","description":"name of the hook to use","example":"EntityDetailsV2:Tab"},"render_condition":{"type":"string","example":"_is_composite_price = \\"false\\""},"order":{"type":"integer","description":"render order (ascending)","example":10},"title":{"type":"string","example":"Notes"},"group_expanded":{"type":"boolean","description":"Sets the group expand/collapse default state"},"import":{"type":"string","description":"package to be imported","example":"@epilot360/notes"},"component":{"type":"string","description":"the component to be dynamically loaded","example":"PricingItems"},"route":{"type":"string","description":"route for specified capability","example":"notes"},"icon":{"type":"string","description":"Preview icon name(As in Base elements) for the capability","example":"email"},"disabled":{"type":"boolean","description":"Whether capability should be disabled"},"header":{"type":"boolean","description":"Specific to Activity pilot"},"requiredPermission":{"type":"object","description":"Require a permission to display UI hook","properties":{"action":{"type":"string","example":"note:view"},"resource":{"type":"string","example":123}},"required":["action"]}},"required":["hook"]}},"feature_flag":{"type":"string","example":"FF_MY_FEATURE_FLAG","description":"This capability should only be active when the feature flag is enabled"},"legacy":{"type":"boolean","description":"Only show capability for legacy tenants (ivy)"}},"required":["name"]},"EntityViewConfig":{"anyOf":[{"$ref":"#/components/schemas/EntityDefaultCreate"},{"$ref":"#/components/schemas/EntityDefaultEdit"},{"$ref":"#/components/schemas/EntityDefaultOverview"},{"$ref":"#/components/schemas/RedirectEntityView"},{"$ref":"#/components/schemas/EntityParcelView"},{"$ref":"#/components/schemas/EntityViewDisabled"}]},"EntityViewDisabled":{"type":"object","properties":{"view_type":{"type":"string","enum":["disabled"]}}},"EntityDefaultOverview":{"type":"object","properties":{"view_type":{"type":"string","enum":["default"]},"dropdown_items":{"type":"array","items":{"allOf":[{"type":"object","properties":{"feature_flag":{"type":"string","example":"FF_MY_FEATURE_FLAG","description":"This dropdown item should only be active when the feature flag is enabled"},"legacy":{"type":"boolean","description":"Only show item for legacy tenants (ivy)"}}},{"oneOf":[{"type":"object","properties":{"type":{"type":"string","enum":["entity"]},"entity":{"$ref":"#/components/schemas/EntitySlug"}}},{"type":"object","properties":{"type":{"type":"string","enum":["link"]},"title":{"type":"string","example":"Opportunities"},"uri":{"type":"string","format":"uri"}}}]}]}},"row_actions":{"type":"array","items":{"type":"string"}},"classic_view":{"type":"string","format":"uri"}}},"EntityDefaultCreate":{"type":"object","properties":{"view_type":{"type":"string","enum":["default"]}}},"EntityDefaultEdit":{"type":"object","properties":{"view_type":{"type":"string","enum":["default"]}}},"RedirectEntityView":{"type":"object","properties":{"view_type":{"type":"string","enum":["redirect"]},"route":{"type":"string","example":"/app/pricing-hub/product/:entityId"}},"example":{"type":"redirect","route":"/app/pricing-hub/product/:entityId"}},"EntityParcelView":{"type":"object","properties":{"view_type":{"type":"string","enum":["parcel"]},"import":{"type":"string","example":"@epilot360/pricing-hub-app"}},"example":{"type":"redirect","route":"/app/pricing-hub/product/:entityId"}},"EntityId":{"type":"string","format":"uuid"},"BaseEntity":{"type":"object","properties":{"_id":{"$ref":"#/components/schemas/EntityId"},"_title":{"type":"string","description":"Title of entity"},"_org":{"type":"string","description":"Organization Id the entity belongs to"},"_schema":{"$ref":"#/components/schemas/EntitySlug"},"_tags":{"type":"array","items":{"type":"string"}},"_created_at":{"type":"string","format":"date-time"},"_updated_at":{"type":"string","format":"date-time"}},"required":["_id","_title","_org","_schema","_created_at","_updated_at"],"example":{"_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","_org":"123","_schema":"contact","_tags":["example","mock"],"_created_at":"2021-02-09T12:41:43.662Z","_updated_at":"2021-02-09T12:41:43.662Z"}},"Entity":{"type":"object","properties":{},"additionalProperties":true},"HydratedEntity":{"type":"object","description":"Entity with relation data resolved into the attribute values","properties":{},"additionalProperties":true,"example":{"status":"active","customer_number":"abc123","email":[{"label":"work","email":"user@example.com"}],"phone":[{"label":"work","phone":"+49123456789"}],"first_name":"First Name","middle_name":"Middle Name","last_name":"Last Name","date_of_birth":"2019-08-24","title":"Mr.","account":[{"status":"active","name":"Company name","company_email":[{"label":"Company email","email":"company@example.com"}],"company_phone":[{"label":"Support phone","phone":"+49123456789"}],"company_website":"https://example.com","tax_id":"DE123456789","tax_exemption":"2019-08-24","contacts":{"$relation":[{"_tags":["CEO"],"entity_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}]}}]}},"EntityItem":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"$ref":"#/components/schemas/Entity"}]},"HydratedEntityItem":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"$ref":"#/components/schemas/HydratedEntity"}]},"GetRelationsResp":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/RelationItem"},{"$ref":"#/components/schemas/RelationEntity"}]}},"RelationEntity":{"allOf":[{"$ref":"#/components/schemas/BaseEntity"},{"type":"object","properties":{"$relation":{"$ref":"#/components/schemas/RelationItem"}}}]},"RelationItem":{"type":"object","properties":{"entity_id":{"$ref":"#/components/schemas/EntityId"},"attribute":{"type":"string"},"_tags":{"type":"array","items":{"type":"string"}}},"required":["entity_id","attribute"]},"EntitySearchParams":{"type":"object","properties":{"q":{"description":"Lucene queries supported with ElasticSearch","type":"string","example":"_schema:contact AND status:active"},"sort":{"type":"string","example":"_created_at:desc"},"from":{"type":"integer","minimum":0,"default":0},"size":{"type":"integer","minimum":1,"default":10},"hydrate":{"type":"boolean","description":"When true, enables entity hydration to resolve nested $relation references in-place.","default":false},"fields":{"type":"array","description":"List of entity fields to include in search results","items":{"type":"string"},"example":["_id","_title","first_name"]}},"required":["q"]},"EntitySearchResults":{"type":"object","properties":{"hits":{"type":"number","example":1},"results":{"type":"array","items":{"$ref":"#/components/schemas/EntityItem"}}}},"SearchMappings":{"description":"Advanced: explicit Elasticsearch index mapping definitions for entity data\\n","example":{"image":{"type":"keyword","index":false}},"type":"object","additionalProperties":{"type":"object","properties":{"index":{"type":"boolean","default":true},"type":{"type":"string","enum":["keyword","text","boolean","integer","long","float","date","flattened","nested"]},"fields":{"additionalProperties":true}}}},"ActivityId":{"type":"string","format":"ulid","description":"See https://github.com/ulid/spec","example":"01F130Q52Q6MWSNS8N2AVXV4JN"},"ActivityCallerContext":{"type":"object","additionalProperties":true,"properties":{"EpilotAuth":{"type":"object","properties":{"token":{"type":"object","properties":{"sub":{"type":"string","example":"476e9b48-42f4-4234-a2b0-4668b34626ce"},"email":{"type":"string","example":"example@epilot.cloud"},"cognito:username":{"type":"string","example":"example@epilot.cloud"},"custom:ivy_user_id":{"type":"string","example":"10006129"}},"example":{"sub":"476e9b48-42f4-4234-a2b0-4668b34626ce","cognito:groups":["Administrator"],"cognito:preferred_role":"arn:aws:iam::912468240823:role/base-administrator-role","iss":"https://cognito-idp.eu-central-1.amazonaws.com/eu-central-1_6lZSgmU6D","custom:ivy_org_id":"739224","cognito:username":"n.ahmad@epilot.cloud","custom:ivy_user_id":"10006129","cognito:roles":["arn:aws:iam::912468240823:role/base-administrator-role"],"aud":"6e0jbdnger7nmoktaaflarue1l","event_id":"cd5f5583-d90c-4db5-8e99-5f5dd29a4d75","token_use":"id","auth_time":1614333023,"exp":1614336623,"iat":1614333023,"email":"n.ahmad@epilot.cloud"}}}}}},"Activity":{"type":"object","properties":{"type":{"type":"string","example":"MyCustomActivity"},"title":{"type":"string","description":"Title for activity. Supports handlebars syntax.","example":"My custom activity"},"message":{"type":"string","description":"Message for activity. Supports handlebars syntax.","example":"{{caller}} did something with {{entity payload.entity.id}}."},"payload":{"type":"object","properties":{},"additionalProperties":true,"example":{"entity":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","schema":"contact"}}}},"required":["type","title","message"]},"EntityOperation":{"type":"object","properties":{"entity":{"$ref":"#/components/schemas/EntityId"},"org":{"type":"string","example":"123"},"operation":{"type":"string","enum":["createEntity","updateEntity","deleteEntity"]},"params":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/EntityId"},"slug":{"$ref":"#/components/schemas/EntitySlug"}},"example":{"id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","slug":"contact"}},"payload":{"allOf":[{"$ref":"#/components/schemas/Entity"},{"example":{"_schema":"contact","_org":"123","status":"Inactive"}}]},"diff":{"type":"object","properties":{"added":{"$ref":"#/components/schemas/Entity"},"updated":{"$ref":"#/components/schemas/Entity"},"deleted":{"$ref":"#/components/schemas/Entity"}}}},"required":["entity","org","operation"]},"ActivityItem":{"allOf":[{"type":"object","properties":{"_id":{"$ref":"#/components/schemas/ActivityId"},"timestamp":{"type":"string","format":"date-time"}}},{"$ref":"#/components/schemas/Activity"},{"type":"object","properties":{"caller":{"$ref":"#/components/schemas/ActivityCallerContext"}}},{"type":"object","properties":{"operations":{"type":"array","items":{"$ref":"#/components/schemas/EntityOperation"}}}}]},"BlueprintEntityId":{"description":"Reference to blueprint","type":"string","format":"uuid"}},"examples":{"TaxEntity":{"description":"Example of a Tax Rate entity","value":{"active":true,"type":"VAT","region":"Germany","region_label":"All Regions","rate":19,"behavior":"Exclusive","description":"MwSt. 19%"}},"ContactEntity":{"description":"Example of a contact entity","value":{"status":"Active","customer_number":"abc123","first_name":"First","middle_name":"Middle","last_name":"Last","title":"Herr Prof. Dr.","email":[{"email":"user@example.com","_tags":["work"]}],"phone":[{"phone":"+49123456789","_tags":["personal","mobile"]}],"address":[{"country":"Germany","city":"Koln","postal_code":81475,"street":"Melatengürtel","street_number":71,"additional_info":"5. Etage","_tags":["billing","delivery"]}],"birthdate":"2019-08-24","account":{"$relation":[{"entity_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","_tags":["company"]}]},"consent_email_marketing":{"status":"OPTED_IN","events":[{"type":"OPT_IN","organization_id":"123","created_at":"2021-07-05T09:12:29.352Z","topic":"EMAIL_MARKETING","identifier":"user@example.com","source":"https://consent.sls.epilot.io/optin?token=abc123","meta":{"ip_address":"1.1.1.1","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"}},{"type":"DOUBLE_OPT_IN_REQUEST","organization_id":"123","created_at":"2021-07-05T08:12:29.352Z","topic":"EMAIL_MARKETING","identifier":"user@example.com","source":"consent-api","meta":{"token":"abc123"}},{"type":"OPT_IN","organization_id":"123","created_at":"2021-07-04T09:12:29.352Z","topic":"EMAIL_MARKETING","identifier":"user@example.com","source":"https://frontend.epilot.cloud","meta":{"ip_address":"1.1.1.1","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36"}}]}}},"AccountEntity":{"description":"Example of an account entity","value":{"status":"Active","name":"Example Company","tax_id":"DE123456789","email":[{"email":"user@example.com","_tags":["work"]}],"phone":[{"phone":"+49123456789","_tags":["personal","mobile"]}],"address":[{"country":"Germany","city":"Koln","postal_code":81475,"street":"Melatengürtel","street_number":71,"additional_info":"5. Etage","_tags":["billing","delivery"]}],"website":"http://company.com","tax_exemption":"2021-02-23T09:08:57.320Z","registry_court":"Amtsgericht Köln","registry_number":"HRB 95505","company_size":"50-99","industry":["ecommerce","tech"],"annual_revenue":"5000000","contact":{"$relation":[{"entity_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","_tags":["CEO"]}]}}},"ProductEntity":{"description":"Example of a product entity","value":{"code":"SunrockSolar375","type":"Product","name":"Sunrock Solar Panel","description":"Sunrock Solar Panel, provide high capacity power generation even at night.","shippable":"true,","_files":{"type":"file","attachments":[{"key":"f001-32123-asdasd-23213","mime":"application/pdf","name":"wallbox-premium.pdf","size":6933430,"image_url":"https://s3-bucket.epilot.cloud/uid/f001-32123-asdasd-23213","download_url":"https://s3-bucket.epilot.cloud/uid/f001-32123-asdasd-23213"}]},"_images":{"type":"image","attachments":[{"key":"i001-32123-asdasd-23213","mime":"application/pdf","name":"wallbox-premium.pdf","size":6933430,"image_url":"https://s3-bucket.epilot.cloud/uid/f001-32123-asdasd-23213","download_url":"https://s3-bucket.epilot.cloud/uid/f001-32123-asdasd-23213"}]},"prices":{"$relation":[{"entity_id":"a38cca03-18a2-4e9c-8516-0918d81e7830","_tags":["price"]},{"entity_id":"3d10c912-c419-42d7-9270-02b7d05294e5","_tags":["price"]}]}}},"PriceEntity":{"description":"Example of a price entity","value":{"code":"MODEL_375KW_PREMIUM","type":"One Time","description":"Solar Panel 375 kWp Premium","billing_scheme":"per_unit","unit_amount":"€ 28500","tiers_mode":"Standard"}},"OrderEntity":{"description":"Example of a Order entity","value":{"amount_subtotal":23045,"amount_total":27424,"billing_address":[{"additional_info":"","city":"City","country":"DE","postal_code":"123","street":"Street 1","street_number":"2","_tags":[]}],"billing_company_name":"Epilot","billing_contact":{"$relation":[{"entity_id":"0691f503-5a3c-4e9e-b036-ffb21ea1d284","relationText":"Daniel Test","_schema":"contact","_tags":[]}]},"billing_email":"x@email.xyz","billing_first_name":"Paulo","billing_last_name":"Henriques","billing_phone":"00351912611099","billing_vat":"123456789","currency":"EUR","delivery_address":[{"additional_info":"","city":"City","country":"DE","postal_code":"123","street":"Street 1","street_number":"2","_tags":[]}],"footer_notes":"Footer","line_items":[{"amount_subtotal":23045,"amount_total":27424,"currency":"EUR","description":"Basic Model - No Wifi","price_id":"efe9ff76-865c-4287-8de9-422cfc741ff9","product_id":"beefa9f1-29a8-448e-94d5-ebf1963428f8","quantity":1,"taxes":[{"amount":4379,"rate":"standard"}],"unit_amount":23045,"_price":{"active":false,"billing_duration_amount":"2","billing_duration_unit":"years","billing_period":"monthly","description":"Basic Model - No Wifi","notice_time_amount":"1","notice_time_unit":"months","price_display_in_journeys":"show_price","renewal_duration_amount":"1","renewal_duration_unit":"years","sales_tax":"standard","tax_behavior":"exclusive","termination_time_amount":"1","termination_time_unit":"months","type":"recurring","unit_amount":23045,"unit_amount_currency":"EUR","unit_amount_decimal":"230.4524","_created_at":"2021-12-15T12:34:59.579Z","_id":"efe9ff76-865c-4287-8de9-422cfc741ff9","_org":"739224","_schema":"price","_tags":["basic-model","wifi"],"_title":"Basic Model - No Wifi","_updated_at":"2021-12-31T13:07:51.392Z"},"_product":{"active":true,"code":"PWB","feature":[{"_tags":[],"feature":"Pure Energon Fueled"},{"_tags":[],"feature":"Mobile App Available"}],"name":"Pinho Walls in a Box","price_options":{"$relation":[{"entity_id":"efe9ff76-865c-4287-8de9-422cfc741ff9"}]},"type":"product","_created_at":"2021-12-15T12:35:08.438Z","_id":"beefa9f1-29a8-448e-94d5-ebf1963428f8","_org":"739224","_schema":"product","_tags":["energon","eco-friendly","wallbox"],"_title":"Pinho Walls in a Box","_updated_at":"2022-01-03T17:14:41.042Z"}}],"memo":"Memo","status":"Paid","total_details":{"amount_tax":4379,"breakdown":{"recurrences":[{"amount_subtotal":23045,"amount_tax":4379,"amount_total":27424,"billing_period":"monthly","type":"recurring"}],"taxes":[{"amount":4379,"rate":"standard"}]}}}},"OpportunityEntity":{"description":"Example of an Opportunity entity","value":{"amount_subtotal":23045,"amount_total":27424,"assignees":{"$relation":[{"entity_id":"66a1a6a3-38ee-4ffe-b68d-ee90e3bb1a77","relationText":"Claudius Iohannis","_schema":"contact","_tags":[]}]},"billing_address":[{"additional_info":"","city":"City","country":"DE","postal_code":"123","street":"Street 1","street_number":"2","_tags":[]}],"billing_company_name":"Epilot","billing_contact":{"$relation":[{"entity_id":"0691f503-5a3c-4e9e-b036-ffb21ea1d284","relationText":"Daniel Test","_schema":"contact","_tags":[]}]},"billing_email":"customer@email.xyz","billing_first_name":"Customer First Name","billing_last_name":"Customer Last Name","billing_phone":"00351912611098","billing_vat":"123456789","currency":"EUR","delivery_address":[{"additional_info":"","city":"City","country":"DE","postal_code":"123","street":"Street 1","street_number":"2","_tags":[]}],"line_items":[{"amount_subtotal":23045,"amount_total":27424,"currency":"EUR","description":"Basic Model - No Wifi","price_id":"efe9ff76-865c-4287-8de9-422cfc741ff9","product_id":"beefa9f1-29a8-448e-94d5-ebf1963428f8","quantity":1,"taxes":[{"amount":4379,"rate":"standard"}],"unit_amount":23045,"_price":{"active":false,"billing_duration_amount":"2","billing_duration_unit":"years","billing_period":"monthly","description":"Basic Model - No Wifi","notice_time_amount":"1","notice_time_unit":"months","price_display_in_journeys":"show_price","renewal_duration_amount":"1","renewal_duration_unit":"years","sales_tax":"standard","tax_behavior":"exclusive","termination_time_amount":"1","termination_time_unit":"months","type":"recurring","unit_amount":23045,"unit_amount_currency":"EUR","unit_amount_decimal":"230.4524","_created_at":"2021-12-15T12:34:59.579Z","_id":"efe9ff76-865c-4287-8de9-422cfc741ff9","_org":"739224","_schema":"price","_tags":["basic-model","wifi"],"_title":"Basic Model - No Wifi","_updated_at":"2021-12-31T13:07:51.392Z"},"_product":{"active":true,"code":"PWB","feature":[{"_tags":[],"feature":"Pure Energon Fueled"},{"_tags":[],"feature":"Mobile App Available"}],"name":"Pinho Walls in a Box","price_options":{"$relation":[{"entity_id":"efe9ff76-865c-4287-8de9-422cfc741ff9"}]},"type":"product","_created_at":"2021-12-15T12:35:08.438Z","_id":"beefa9f1-29a8-448e-94d5-ebf1963428f8","_org":"739224","_schema":"product","_tags":["energon","eco-friendly","wallbox"],"_title":"Pinho Walls in a Box","_updated_at":"2022-01-03T17:14:41.042Z"}}],"opportunity_number":"20220105-768854819","participants":{"$relation":[{"entity_id":"9bbfdaa9-22b2-4100-a256-67600202e3f4","relationText":"Alex Marques","_schema":"contact","_tags":[]}]},"status":"Lead","total_details":{"amount_tax":4379,"breakdown":{"recurrences":[{"amount_subtotal":23045,"amount_tax":4379,"amount_total":27424,"billing_period":"monthly","type":"recurring"}],"taxes":[{"amount":4379,"rate":"standard"}]}}}},"EmailTemplateEntity":{"description":"Example of an email template entity","value":{"attachments":[],"body":"<p fr-original-style=\\"caret-color: rgb(65, 65, 65); color: rgb(65, 65, 65); font-family: sans-serif;\\" id=\\"isPasted\\" style=\\"caret-color: rgb(65, 65, 65); color: rgb(65, 65, 65); font-family: sans-serif; box-sizing: inherit; border-color: rgba(229, 231, 235, var(--tw-border-opacity));\\"><span fr-original-style=\\"font-weight: 700;\\" style=\\"font-weight: 700; box-sizing: inherit; border-color: rgba(229, 231, 235, var(--tw-border-opacity));\\">Variablen - Kontakt</span></p>","brand_id":7066103,"from":{"name":"Name","email":"admin@email.xyz"},"name":"PH Test","subject":"Example Subject","system_template":false,"to":[{"id":"1","name":"Contact Name","email":"Contact email"}],"_tags":["Bestellung"]}},"FileEntity":{"description":"Example of a file template entity","value":{"access_control":"private","filename":"solar_panel_ph.jpeg","s3ref":{"bucket":"epilot-staging-user-content","key":"728/temp/6d450fd1-2d63-435f-b598-c605dfb89cbc/solar_panel_ph.jpeg"}}},"WorkflowStepEntity":{"description":"Example of a workflow step template entity","value":{"name":"Name","assigned_to\\"":["10000563"],"status":"Unassigned","order":123,"tags":["tag1"]}},"SubmissionEntity":{"description":"Example of a submission step template entity","value":{"mapped_entities":{"$relation":[{"entity_id":"4ffb071c-2821-4505-86d0-09b801ffd97a","relationText":"4ffb071c-2821-4505-86d0-09b801ffd97a","_schema":"price","_tags":[]}]}}}}},"servers":[{"url":"https://entity.sls.epilot.io"}]}')}},t={};return function i(n){if(t[n])return t[n].exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,i),a.exports}(914)})());
package/dist/openapi.d.ts CHANGED
@@ -217,7 +217,7 @@ declare namespace Components {
217
217
  download_url: string;
218
218
  alt_text?: string;
219
219
  }
220
- export type Attribute = /* Textarea or text input */ TextAttribute | /* Link with title and href */ LinkAttribute | /* Date or Datetime picker */ DateAttribute | /* Country picker */ CountryAttribute | /* Yes / No Toggle */ BooleanAttribute | /* Dropdown select */ SelectAttribute | /* Status select */ StatusAttribute | /* Entity Relationship */ RelationAttribute | /* User Relationship */ UserRelationAttribute | /* Reference to an address attribute of another entity */ AddressRelationAttribute | /* Currency input */ CurrencyAttribute | /* Repeatable (add N number of fields) */ RepeatableAttribute | /* Tags */ TagsAttribute | /* Numeric input */ NumberAttribute | /* Consent Management */ ConsentAttribute | /* No UI representation */ InternalAttribute | /* Type of attribute to render N number of ordered fields */ OrderedListAttribute | /* File or Image Attachment */ FileAttribute | /* An attribute that is computed from the entity data. For more details on how to use them, check the docs [here](https://e-pilot.atlassian.net/wiki/spaces/EO/pages/5642977476/How+To+Computed+Schema+Attributes) */ ComputedAttribute | /* Partner Status */ PartnerStatusAttribute | /* Email address for send invitation */ InvitationEmailAttribute | /* Automation entity */ AutomationAttribute | /* Epilot internal user info */ InternalUserAttribute;
220
+ export type Attribute = /* Textarea or text input */ TextAttribute | /* Link with title and href */ LinkAttribute | /* Date or Datetime picker */ DateAttribute | /* Country picker */ CountryAttribute | /* Yes / No Toggle */ BooleanAttribute | /* Dropdown select */ SelectAttribute | /* Status select */ StatusAttribute | /* Sequence of unique identifiers */ SequenceAttribute | /* Entity Relationship */ RelationAttribute | /* User Relationship */ UserRelationAttribute | /* Reference to an address attribute of another entity */ AddressRelationAttribute | /* Currency input */ CurrencyAttribute | /* Repeatable (add N number of fields) */ RepeatableAttribute | /* Tags */ TagsAttribute | /* Numeric input */ NumberAttribute | /* Consent Management */ ConsentAttribute | /* No UI representation */ InternalAttribute | /* Type of attribute to render N number of ordered fields */ OrderedListAttribute | /* File or Image Attachment */ FileAttribute | /* An attribute that is computed from the entity data. For more details on how to use them, check the docs [here](https://e-pilot.atlassian.net/wiki/spaces/EO/pages/5642977476/How+To+Computed+Schema+Attributes) */ ComputedAttribute | /* Partner Status */ PartnerStatusAttribute | /* Email address for send invitation */ InvitationEmailAttribute | /* Automation entity */ AutomationAttribute | /* Epilot internal user info */ InternalUserAttribute;
221
221
  /**
222
222
  * Automation entity
223
223
  */
@@ -854,7 +854,7 @@ declare namespace Components {
854
854
  hook: string;
855
855
  /**
856
856
  * example:
857
- * is_composite_price = "false"
857
+ * _is_composite_price = "false"
858
858
  */
859
859
  render_condition?: string;
860
860
  /**
@@ -1178,7 +1178,7 @@ declare namespace Components {
1178
1178
  expanded?: boolean;
1179
1179
  /**
1180
1180
  * example:
1181
- * is_composite_price = "false"
1181
+ * _is_composite_price = "false"
1182
1182
  */
1183
1183
  render_condition?: string;
1184
1184
  /**
@@ -1384,7 +1384,7 @@ declare namespace Components {
1384
1384
  expanded?: boolean;
1385
1385
  /**
1386
1386
  * example:
1387
- * is_composite_price = "false"
1387
+ * _is_composite_price = "false"
1388
1388
  */
1389
1389
  render_condition?: string;
1390
1390
  /**
@@ -2578,7 +2578,7 @@ declare namespace Components {
2578
2578
  repeatable?: boolean;
2579
2579
  has_primary?: boolean;
2580
2580
  relation_affinity_mode?: "weak" | "strong";
2581
- type?: "string" | "phone" | "email" | "address" | "relation" | "payment" | "price_component";
2581
+ type?: "string" | "phone" | "email" | "address" | "relation" | "payment" | "price_component" | "date";
2582
2582
  /**
2583
2583
  * when enable_relation_picker is set to true the user will be able to pick existing relations as values. Otherwise, the user will need to create new relation to link.
2584
2584
  */
@@ -2686,6 +2686,83 @@ declare namespace Components {
2686
2686
  */
2687
2687
  allow_any?: boolean;
2688
2688
  }
2689
+ /**
2690
+ * Sequence of unique identifiers
2691
+ */
2692
+ export interface SequenceAttribute {
2693
+ name: string;
2694
+ label: string;
2695
+ placeholder?: string;
2696
+ /**
2697
+ * Do not render attribute in entity views
2698
+ */
2699
+ hidden?: boolean;
2700
+ /**
2701
+ * Render as a column in table views. When defined, overrides `hidden`
2702
+ */
2703
+ show_in_table?: boolean;
2704
+ required?: boolean;
2705
+ readonly?: boolean;
2706
+ deprecated?: boolean;
2707
+ default_value?: string | {
2708
+ [name: string]: any;
2709
+ } | number | number | boolean | any[];
2710
+ group?: string;
2711
+ layout?: string;
2712
+ /**
2713
+ * When set to true, will hide the label of the field.
2714
+ */
2715
+ hide_label?: boolean;
2716
+ /**
2717
+ * Code name of the icon to used to represent this attribute.
2718
+ * The value must be a valid @epilot/base-elements Icon name
2719
+ *
2720
+ */
2721
+ icon?: string;
2722
+ /**
2723
+ * Defines the conditional rendering expression for showing this field.
2724
+ * When a valid expression is parsed, their evaluation defines the visibility of this attribute.
2725
+ * Note: Empty or invalid expression have no effect on the field visibility.
2726
+ *
2727
+ */
2728
+ render_condition?: string;
2729
+ /**
2730
+ * A set of constraints applicable to the attribute.
2731
+ * These constraints should and will be enforced by the attribute renderer.
2732
+ *
2733
+ * example:
2734
+ * {
2735
+ * "disablePast": true
2736
+ * }
2737
+ */
2738
+ constraints?: {
2739
+ [key: string]: any;
2740
+ };
2741
+ /**
2742
+ * This attribute should only be active when the feature flag is enabled
2743
+ * example:
2744
+ * FF_MY_FEATURE_FLAG
2745
+ */
2746
+ feature_flag?: string;
2747
+ value_formatter?: string;
2748
+ preview_value_formatter?: string;
2749
+ /**
2750
+ * Setting to `true` disables editing the attribute on the entity builder UI
2751
+ */
2752
+ entity_builder_disable_edit?: boolean;
2753
+ /**
2754
+ * Setting to `true` prevents the attribute from being modified / deleted
2755
+ */
2756
+ protected?: boolean;
2757
+ type?: "sequence";
2758
+ /**
2759
+ * Prefix added before the sequence number
2760
+ * example:
2761
+ * OR-
2762
+ */
2763
+ prefix?: string;
2764
+ start_number?: number;
2765
+ }
2689
2766
  /**
2690
2767
  * Status select
2691
2768
  */
package/dist/openapi.json CHANGED
@@ -1383,7 +1383,7 @@
1383
1383
  },
1384
1384
  "render_condition": {
1385
1385
  "type": "string",
1386
- "example": "is_composite_price = \"false\""
1386
+ "example": "_is_composite_price = \"false\""
1387
1387
  },
1388
1388
  "order": {
1389
1389
  "description": "Render order of the group",
@@ -1562,6 +1562,9 @@
1562
1562
  {
1563
1563
  "$ref": "#/components/schemas/StatusAttribute"
1564
1564
  },
1565
+ {
1566
+ "$ref": "#/components/schemas/SequenceAttribute"
1567
+ },
1565
1568
  {
1566
1569
  "$ref": "#/components/schemas/RelationAttribute"
1567
1570
  },
@@ -1931,6 +1934,34 @@
1931
1934
  }
1932
1935
  ]
1933
1936
  },
1937
+ "SequenceAttribute": {
1938
+ "allOf": [
1939
+ {
1940
+ "$ref": "#/components/schemas/BaseAttribute"
1941
+ },
1942
+ {
1943
+ "type": "object",
1944
+ "description": "Sequence of unique identifiers",
1945
+ "properties": {
1946
+ "type": {
1947
+ "type": "string",
1948
+ "enum": [
1949
+ "sequence"
1950
+ ]
1951
+ },
1952
+ "prefix": {
1953
+ "description": "Prefix added before the sequence number",
1954
+ "type": "string",
1955
+ "example": "OR-"
1956
+ },
1957
+ "start_number": {
1958
+ "type": "integer",
1959
+ "minimum": 0
1960
+ }
1961
+ }
1962
+ }
1963
+ ]
1964
+ },
1934
1965
  "FileAttribute": {
1935
1966
  "allOf": [
1936
1967
  {
@@ -2331,7 +2362,8 @@
2331
2362
  "address",
2332
2363
  "relation",
2333
2364
  "payment",
2334
- "price_component"
2365
+ "price_component",
2366
+ "date"
2335
2367
  ]
2336
2368
  },
2337
2369
  "enable_relation_picker": {
@@ -2521,7 +2553,7 @@
2521
2553
  ]
2522
2554
  },
2523
2555
  "SummaryAttribute": {
2524
- "description": "Represents an expanded version of an attribute to be displayed in the list item summary.\nThis configuration can be used in the following way: \n```js\n{\n \"label\": \"Price components\"\n \"value\": \"{{item.prices.length}} price components\"\n \"show_as_tag\": true\n \"render_condition\": \"is_composite_price = \\\"true\\\"\"\n}\n```\nThe value field supports handlebar expressions from which you can pick any field from the entity state. \n",
2556
+ "description": "Represents an expanded version of an attribute to be displayed in the list item summary.\nThis configuration can be used in the following way: \n```js\n{\n \"label\": \"Price components\"\n \"value\": \"{{item.prices.length}} price components\"\n \"show_as_tag\": true\n \"render_condition\": \"is_composite_price = \\\"true\\\"\"\n}\n```\nThe value field supports handlebar expressions from which you can pick any field from the entity state.\n",
2525
2557
  "type": "object",
2526
2558
  "properties": {
2527
2559
  "label": {
@@ -2588,7 +2620,7 @@
2588
2620
  },
2589
2621
  "render_condition": {
2590
2622
  "type": "string",
2591
- "example": "is_composite_price = \"false\""
2623
+ "example": "_is_composite_price = \"false\""
2592
2624
  },
2593
2625
  "order": {
2594
2626
  "type": "integer",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epilot/entity-client",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "description": "JavaScript client library for the epilot Core Entity API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -71,6 +71,5 @@
71
71
  "typescript": "^4.1.3",
72
72
  "webpack": "^5.18.0",
73
73
  "webpack-cli": "^4.4.0"
74
- },
75
- "gitHead": "f6176e92cb46cd8a48aa0f010adf17682b8d22b5"
74
+ }
76
75
  }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2022 epilot GmbH
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in
13
- all copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
- THE SOFTWARE.