openapi: 3.0.2 x-json-schema-faker: maxItems: 2 info: description: | # Overview Noona provides a powerful REST(y) API that focuses on simplicity and clarity. - All API requests must be made over HTTPS. Calls made over plain HTTP will be redirected to HTTPS. **Base Path** ``` https://api.noona.is ``` The HQ API controls individual companies. A developer writing a plugin for individual hair salons would do so using the HQ API. Example user: **A hair saloon**. title: Noona HQ API version: '0.0.3082' x-logo: url: https://api.noona.is/docs/img/logo_black.svg servers: - url: https://api.noona.is x-tagGroups: - name: Enterprises tags: - Enterprise - Settlement Accounts - Payments - Settlements - Voucher Templates - Vouchers - name: Companies tags: - Companies - Rule Sets - Rule Set Templates - Event Types - Event Type Groups - Event Type Category Groups - Event Type Categories - Employees - Resources - Resource Groups - Events - Event Statuses - Time Slots - Holidays - Customers - Customer Groups - Blocked Times - Products - Product Groups - Payment Methods - Terminals - Notifications - Custom Properties - Apps - Messaging - Waitlists - Memos - name: Webhooks tags: - Webhooks - Webhook Invocations - name: Subscriptions tags: - Subscriptions - name: Point of sale tags: - Sales - Transactions - Line Items - Subtransactions - Issuers - Claims - name: Users tags: - User - Tokens - User Terminals - Google Calendar - name: Metrics tags: - Metrics - name: Activities tags: - Activities - name: OAuth tags: - OAuth - Applications - name: Integrations tags: - Saltpay - Fiscalization - Adyen - Mozrest tags: - name: Hidden description: Hidden endpoints. Still invokable, but not documented. Very useful for backwards compatibility but keeping our docs clean. - name: User description: User management. - name: Tokens description: API Tokens can be used to authenticate requests to the API. - name: Products description: Products describe goods you offer to your customers. - name: Product Groups description: | Product Groups are used to group products into categories. A shampoo might, for example, belong to a product group titled "Hair Products". Products can reside in multiple product groups simultaneously. - name: Marketplace Companies x-displayName: Companies description: | Companies are individual service providers such as **Hair salons**, **Chiropractors** and **Veterinarians**. - name: Event Types description: | Event Types describe the different services a company offers. - name: Event Type Groups description: | Event Type Groups are used to group event types into categories. A haircut might, for example, belong to an event type group titled "Haircuts". Event types can reside in multiple event type groups simultaneously. - name: Events description: | Events are the center point of our whole system. A haircut that an HQ user performs on some marketplace user at a specified time is an event. - name: Blocked times description: Blocked times are a multi-purpose feature to block certain times from being bookable in the calendar. - name: Enterprises description: An enterprise is an umbrella entity which purpose is maintaining a relation between multiple companies. - name: Sales description: | Sales are used to group related transactions, for example product and service sales with different invoice issuers for the same customer or original invoice and a refund. Customer info for transactions is stored on the sale as well as reference to events that were paid in this sale. - name: Transactions description: Transactions are made up of service and products that can be paid in subtransactions - name: Subtransactions description: | Subtransactions make up the individual payment methods used in a single transaction. A transaction of $20 might be split into subtransactions of $5 in cash and $15 by card. - name: Payment Methods description: | The various payment methods available in the Noona ecosystem. - name: Terminals description: | Terminals are used to charge credit cards for services. - name: User Terminals x-displayName: Terminals description: | Terminals are used to charge credit cards for services. - name: Customers description: | Customers are individuals that have booked an event with a company. - name: Customer Groups description: | Customer Groups are used to group customers into categories. A customer might, for example, belong to a customer group titled "Regulars". - name: Voucher Templates description: | Voucher templates are predefined templates that enable a fast creation of vouchers. - name: Vouchers x-displayName: Vouchers description: | Vouchers are purchased through the marketplace and can be used to pay for a service at an enterprise. - name: Settlement Accounts description: | Settlement accounts are used by an enterprise to take payments. - name: Payments description: | Payments are created by the marketplace when a customer pays for an event, voucher or product. Payments are bulked and sent to an enterprise as a settlement. - name: Settlements description: | Settlements are the sum of multiple payments that the company has received via different sales channels. Settlements are transferred to the enterprise's settlement account on a weekly basis. - name: Custom Properties description: Custom properties enable the possibility of extending resources with custom data. - name: Webhooks description: | Webhooks are used to receive notifications about events that occur in the Noona ecosystem. Multiple events can be tied to a single callback URL. A callback payload for **creation** and **update** reflects the current state of the resource. A callback payload for **deletion** reflects the state of the resource before deletion. - name: Subscriptions description: Subscriptions are the container for plans which can include several powerups. They are used to charge and manage the features used by companies. - name: Webhook Invocations description: | Webhook Invocations are the actual HTTP requests that are sent to a webhook's callback URL. Webhook invocations are logged and can be inspected via the API. - name: Notifications description: | Notifications inform users about various things such as new events, cancelled events and more. - name: Saltpay description: | The Saltpay integration enables connecting and sending payments to a Saltpay terminal. - name: Adyen description: | The Adyen integration enables activating various payment services. - name: Fiscalization description: | Fiscalization is the process of sending data to an external system for the purpose of tax reporting. - name: Time Slots description: | Time Slots are points in time when a company can provide a specified service. - name: Activities description: | Activities are used to track changes to resources in the Noona ecosystem. - name: Resources description: | Resources that might be required for a service. For example, a massage parlor might have a resource called "Massage Room 1". An Event Type might then require a resource and an employee to be available in order to be bookable at a certain time. - name: Resource Groups description: | Resource Groups are used to group resources together. - name: Employees description: | Employees are the individuals that work at a company and provide services to customers. An employee is a HQ user in the context of a company. A HQ user can be an employee at multiple companies. The employee resource describes that company specific data for the HQ user. - name: OAuth description: | OAuth is used to authenticate users and applications to the Noona API. - name: Applications description: | Applications are created by third party developers to gain scoped access to the Noona API on behalf of users. - name: Apps description: | Apps are 3rd party applications that can be installed by companies to extend the functionality of Noona. - name: Event Statuses description: | Event statuses are used to describe the current state of an event. Noona has a set of default statuses: - **showedUp** - **cancelled** - **noshow** - **checkedOut** - and the implicit *empty* status. Custom statuses can be created to extend the default set. - name: Event Type Category Groups description: | Event Type Category Groups are top level grouping of event type categoires. An example of event type category group is *Barbering* and event type categories in that group could be *Men's haircut* and *Beard Trimming*. - name: Event Type Categories description: | Event Type Categories are used to group event types into categories. An example of an event type category is *Men's haircut* which is in the event type category group *Barbering*. - name: Rule Sets description: | Rule sets are used to define the behavior of the system. Multiple rules of the same type can be active at the same time within a single rule set, but but can not overlap. Multiple rule sets can be active at the same time, in that case the rules take priority according to the overlapping rules chapter below. **List of rules** - `availability` Specifies when company is open or closed for business. By default a business is closed. - `online_bookings` Specifies when company accepts online bookings. Can be tied to specific entities. - `max_total_pax` Specifies the maximum number of people that can be booked at the same time. **Overlapping rules** If 2 or more rule sets are active during the same period, the comparison is done in the following order: 1. The rule set with fewer instances (according to the RRule, or the lack of one) takes priority. 2. If the rule sets have the same number of instances, the rule set with the shorter time period takes priority. (The time period is defined by the starts_at and ends_at of the rule set.) 3. If the rule sets have the same number of instances and the same time period, the rule set that was most recently updated takes priority. The `priority` attribute can be used to override the default priority. Rules with a priority set will always take precedence over rules without a priority set. Lower priority values take precedence over higher priority values. **Associated Entities** Rules can be divided into two categories: 1. General rules 2. Rules tied to certain entities Entities: - Event Types - Resources - Employees When a rule is tied to entities, it will only affect the entities it is tied to. This is achieved through the following attributes, using resources as an example: - `resources` - A list of resource IDs. - `association` - The association type. Can be either `include` or `exclude`. **Examples** --- ```json { resources: ["id-1", "id-2"], association: "includes", } ``` This rule is only applicable to resources with the IDs `id-1` and `id-2`. --- ```json { resources: ["id-1", "id-2"], association: "excludes", } ``` This rule is applicable to all resources except those with the IDs `id-1` and `id-2`. --- ```json { resources: [], association: "excludes", } ``` This rule is applicable to all resources. --- **Interval** The interval of a rule set is defined by the `starts_at` and `ends_at` attributes. By default, rules in a set are active in that interval but each rule can overwrite the starts_at and ends_at attributes to define a custom interval. A rule can however not extend beyond the interval of the rule set. - name: Rule Set Templates description: | Rule Set Templates offer a quick way to create rule sets with predefined rules. - name: Mozrest description: | The Mozrest integration allows companies to appear on various external booking platforms. Tripadvisor etc. paths: /v1/hq/enterpise: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: Retrieve enterprise description: Retrieve the enterprise entity of the current company. responses: "200": content: application/json: schema: $ref: "#/components/schemas/Enterprise" description: Enterprise "404": $ref: "#/components/responses/NotFoundError" operationId: GetEnterprise tags: - Enterprise patch: security: - BearerTokenAuth: [] summary: Update enterprise description: Updates the enterprise containing the users active company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Enterprise" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Enterprise" description: Updated enterprise "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateEnterprise tags: - Enterprise /v1/hq/enterprise/{enterprise_id}/companies: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: List enterprise companies description: Lists all companies for an enterprise parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Companies" description: Enterprise companies "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" operationId: ListEnterpriseCompanies tags: - Enterprise /v1/hq/enterprise/{enterprise_id}/settlement_accounts: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: List settlement accounts description: Lists the settlement accounts of an enterprise. parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/SettlementAccounts" description: Settlement accounts "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListEnterpriseSettlementAccounts tags: - Settlement Accounts /v1/hq/enterprise/{enterprise_id}/settlement_accounts/{settlement_account_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: Get settlement account description: Retrieves settlement account of an enterprise with ID. parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string - name: settlement_account_id description: Settlement Account ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/SettlementAccount" description: Settlement account "401": $ref: "#/components/responses/UnauthorizedError" operationId: GetEnterpriseSettlementAccount tags: - Settlement Accounts delete: security: - BearerTokenAuth: [] summary: Delete settlement account description: Deletes a settlement account for an enterprise. parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string - name: settlement_account_id description: Settlement Account ID in: path required: true schema: type: string responses: "200": description: Settlement account deleted operationId: DeleteEnterpriseSettlementAccount tags: - Settlement Accounts /v1/hq/enterprise/{enterprise_id}/voucher_templates: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - voucher_templates:read summary: List voucher templates description: Lists the voucher templates of an enterprise. parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/VoucherTemplateFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/VoucherTemplatesResponse" description: VoucherTemplates "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListVoucherTemplatesLegacy tags: - Voucher Templates post: security: - BearerTokenAuth: [] - oAuth 2.0: - voucher_templates:write summary: Create voucher template description: Creates a voucher template at enterprise tied to company. parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/VoucherTemplateCreate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/VoucherTemplateResponse" description: Created Voucher "401": $ref: "#/components/responses/UnauthorizedError" operationId: CreateVoucherTemplateLegacy tags: - Voucher Templates /v1/hq/companies/{company_id}/voucher_templates: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - voucher_templates:read summary: List voucher templates description: Lists the voucher templates for a company. parameters: - name: company_id description: Company ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/VoucherTemplateFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/VoucherTemplatesResponse" description: VoucherTemplates "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListVoucherTemplates tags: - Voucher Templates /v1/hq/voucher_templates: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - voucher_templates:write summary: Create voucher template description: Creates a voucher template for company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/VoucherTemplateCreate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/VoucherTemplateResponse" description: Created Voucher "401": $ref: "#/components/responses/UnauthorizedError" operationId: CreateVoucherTemplate tags: - Voucher Templates /v1/hq/voucher_templates/{voucher_template_id}: parameters: - $ref: "#/components/parameters/select" post: security: - BearerTokenAuth: [] - oAuth 2.0: - voucher_templates:write summary: Update voucher template description: Updates a voucher template at enterprise. parameters: - name: voucher_template_id description: Voucher Template ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/VoucherTemplateUpdate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/VoucherTemplateResponse" description: Updated Voucher Template "401": $ref: "#/components/responses/UnauthorizedError" operationId: UpdateVoucherTemplate tags: - Voucher Templates delete: security: - BearerTokenAuth: [] - oAuth 2.0: - voucher_templates:write summary: Delete voucher template description: | Deletes a voucher template at enterprise. It is only possible to delete voucher templates that have not been used to create vouchers. parameters: - name: voucher_template_id description: Voucher Template ID in: path required: true schema: type: string responses: "200": description: Voucher template deleted "401": $ref: "#/components/responses/UnauthorizedError" operationId: DeleteVoucherTemplate tags: - Voucher Templates /v1/hq/enterprise/{enterprise_id}/vouchers: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - vouchers:read summary: List vouchers description: Lists the vouchers of an enterprise. parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/VoucherFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Vouchers" description: Vouchers "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListVouchersLegacy tags: - Vouchers /v1/hq/companies/{company_id}/vouchers: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - vouchers:read summary: List vouchers description: Lists the vouchers for a company. parameters: - name: company_id description: Company ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/VoucherFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Vouchers" description: Vouchers "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListVouchers tags: - Vouchers /v1/hq/enterprise/{enterprise_id}/vouchers/{voucher_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - vouchers:read summary: Get voucher description: Retrieves voucher with ID from enterprise. parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string - name: voucher_id description: Voucher ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Voucher" description: Voucher "401": $ref: "#/components/responses/UnauthorizedError" operationId: GetVoucherLegacy tags: - Vouchers post: security: - BearerTokenAuth: [] - oAuth 2.0: - vouchers:write summary: Update voucher description: Updates a voucher with ID at enterprise. parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string - name: voucher_id description: Voucher ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Voucher" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Voucher" description: Updated Voucher "401": $ref: "#/components/responses/UnauthorizedError" operationId: UpdateVoucherLegacy tags: - Vouchers /v1/hq/vouchers/{voucher_id}: parameters: - $ref: "#/components/parameters/select" get: security: - BearerTokenAuth: [] - oAuth 2.0: - vouchers:read summary: Get voucher description: Retrieves voucher with ID from enterprise. parameters: - name: voucher_id description: Voucher ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Voucher" description: Voucher "401": $ref: "#/components/responses/UnauthorizedError" operationId: GetVoucher tags: - Vouchers post: security: - BearerTokenAuth: [] - oAuth 2.0: - vouchers:write summary: Update voucher description: Updates a voucher with ID at enterprise. parameters: - name: voucher_id description: Voucher ID in: path required: true schema: type: string - in: query name: unset schema: $ref: "#/components/schemas/VoucherFields" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Voucher" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Voucher" description: Updated Voucher "401": $ref: "#/components/responses/UnauthorizedError" operationId: UpdateVoucher tags: - Vouchers delete: security: - BearerTokenAuth: [] - oAuth 2.0: - vouchers:write summary: Delete voucher description: Deletes a voucher with ID parameters: - name: voucher_id description: Voucher ID in: path required: true schema: type: string responses: "200": description: Voucher deleted "401": $ref: "#/components/responses/UnauthorizedError" operationId: DeleteVoucher tags: - Vouchers /v1/hq/vouchers/{voucher_id}/notification: parameters: - $ref: "#/components/parameters/select" post: security: - BearerTokenAuth: [] - oAuth 2.0: - vouchers:write summary: Send a voucher notification description: | Sends a voucher notification to the specified recipient. parameters: - name: voucher_id description: Voucher ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/VoucherNotification" responses: "200": description: Voucher "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" operationId: CreateVoucherNotification tags: - Vouchers /v1/hq/enterprise/{enterprise_id}/settlements: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - settlements:read summary: List settlements description: Lists the settlements of an enterprise. parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/SettlementFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Settlements" description: Settlements "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListSettlementsLegacy tags: - Settlements /v1/hq/companies/{company_id}/settlements: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - settlements:read summary: List settlements description: Lists the settlements for a company. parameters: - name: company_id description: Company ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/SettlementFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Settlements" description: Settlements "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListSettlements tags: - Settlements /v1/hq/enterprise/{enterprise_id}/payments: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - payments:read summary: List payments description: Lists the payments of an enterprise. parameters: - name: enterprise_id description: Enterprise ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/PaymentFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" - $ref: "#/components/parameters/search" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Payments" description: Payments "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListPaymentsLegacy tags: - Payments /v1/hq/companies/{company_id}/payments: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - payments:read summary: List payments description: Lists the payments for a company. parameters: - name: company_id description: Company ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/PaymentFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" - $ref: "#/components/parameters/search" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Payments" description: Payments "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListPayments tags: - Payments /v1/hq/payments/{payment_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - payments:read summary: Get payment description: Get a payment. parameters: - name: payment_id description: Payment ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Payment" description: Payments "401": $ref: "#/components/responses/UnauthorizedError" operationId: GetPayment tags: - Payments post: security: - BearerTokenAuth: [] - oAuth 2.0: - payments:write summary: Update payment description: Update a payment. parameters: - name: payment_id description: Payment ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Payment" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Payment" description: Payments "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: UpdatePayment tags: - Payments /v1/hq/payments/{payment_id}/receipt: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - payments:write summary: Send payment receipt description: Sends a payment receipt to the specified email address. parameters: - name: payment_id description: Payment ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/PaymentReceiptRecipient" responses: "200": description: Success "401": $ref: "#/components/responses/UnauthorizedError" operationId: SendPaymentReceipt tags: - Payments get: security: - BearerTokenAuth: [] - oAuth 2.0: - payments:read summary: Download payment receipt description: Downloads a payment receipt. parameters: - name: payment_id description: Payment ID in: path required: true schema: type: string responses: "200": content: application/pdf: schema: type: string format: binary description: Payment Receipt PDF "401": $ref: "#/components/responses/UnauthorizedError" operationId: DownloadPaymentReceipt tags: - Payments /v1/hq/companies/{company_id}/customer_groups: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - customer_groups:read summary: List all customer groups description: Lists all customer groups of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/CustomerGroups" description: CustomerGroups operationId: ListCustomerGroups tags: - Customer Groups /v1/hq/customer_groups/{customer_group_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - name: customer_group_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Customer ID get: security: - BearerTokenAuth: [] - oAuth 2.0: - customer_groups:read summary: Retrieve a customer group description: Retrieves information about an existing customer group. responses: "200": content: application/json: schema: $ref: "#/components/schemas/CustomerGroup" description: CustomerGroup "404": $ref: "#/components/responses/NotFoundError" operationId: GetCustomerGroup tags: - Customer Groups post: security: - BearerTokenAuth: [] - oAuth 2.0: - customer_groups:write summary: Update a customer group description: Updates a customer group at a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CustomerGroup" responses: "200": content: application/json: schema: $ref: "#/components/schemas/CustomerGroup" description: Updated Customer Group operationId: UpdateCustomerGroup tags: - Customer Groups delete: security: - BearerTokenAuth: [] - oAuth 2.0: - customer_groups:write summary: Delete customer group description: Deletes a customer group at company. responses: "200": description: Customer Group deleted operationId: DeleteCustomerGroup tags: - Customer Groups /v1/hq/customer_groups: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - customer_groups:write summary: Create a customer group description: | Creates a new customer group at company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CustomerGroup" responses: "200": content: application/json: schema: $ref: "#/components/schemas/CustomerGroup" description: Customer Group "400": $ref: "#/components/responses/BadRequestError" operationId: CreateCustomerGroup tags: - Customer Groups /v1/hq/companies/{company_id}/customers: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - customers:read summary: List all customers description: Lists all customers of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/CustomerFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" - $ref: "#/components/parameters/search" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Customers" description: Customers operationId: ListCustomers tags: - Customers /v1/hq/customers/{customer_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - customers:read summary: Retrieve a customer description: Retrieves information about an existing customer. parameters: - name: customer_id description: Customer ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Customer" description: Customer "404": $ref: "#/components/responses/NotFoundError" operationId: GetCustomer tags: - Customers post: security: - BearerTokenAuth: [] - oAuth 2.0: - customers:write summary: Update a customer description: Updates a customer at a company. parameters: - name: customer_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Customer ID requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Customer" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Customer" description: Updated Customer operationId: UpdateCustomer tags: - Customers delete: security: - BearerTokenAuth: [] - oAuth 2.0: - customers:write summary: Delete customer description: Deletes a customer at company. parameters: - name: customer_id description: Customer ID in: path required: true schema: type: string responses: "200": description: Customer deleted operationId: DeleteCustomer tags: - Customers /v1/hq/customers: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - customers:write summary: Create a customer description: | Creates a new customer at company. requestBody: required: true content: application/json: schema: required: - name - company_id allOf: - $ref: "#/components/schemas/Customer" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Customer" description: Customer "400": $ref: "#/components/responses/BadRequestError" operationId: CreateCustomer tags: - Customers /v1/hq/companies/{company_id}/terminals: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - terminals:read summary: List all terminals description: | Lists all terminals connected to a company. The list includes terminals connected to the company directly and terminals connected to the company through a user. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/TerminalsFilter" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Terminals" description: Terminals operationId: ListTerminals tags: - Terminals /v1/hq/terminals/{terminal_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - terminals:read summary: Get terminal description: Retrieves terminal with ID. parameters: - name: terminal_id description: Terminal ID in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Terminal" description: Terminal operationId: GetTerminal tags: - Terminals post: security: - BearerTokenAuth: [] - oAuth 2.0: - terminals:write summary: Update a terminal description: Updates a terminal connected to a company. parameters: - name: terminal_id in: path required: true schema: type: string example: "dwawd8awudawd" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Terminal" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Terminal" description: Updated terminal operationId: UpdateTerminal tags: - Terminals delete: security: - BearerTokenAuth: [] - oAuth 2.0: - terminals:write summary: Delete a terminal description: Deletes a terminal connected to a company. parameters: - name: terminal_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Terminal deleted operationId: DeleteTerminal tags: - Terminals /v1/hq/user/terminals: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - terminals:read summary: List all user terminals description: Lists all terminals connected to user. responses: "200": content: application/json: schema: $ref: "#/components/schemas/Terminals" description: Terminals operationId: ListUserTerminals tags: - User Terminals /v1/hq/user/terminals/{terminal_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - terminals:read summary: Get user terminal description: Retrieves user terminal with ID. parameters: - name: terminal_id description: Terminal ID in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Terminal" description: Terminal operationId: GetUserTerminal tags: - User Terminals delete: security: - BearerTokenAuth: [] - oAuth 2.0: - terminals:write summary: Delete a user terminal description: Deletes a terminal connected to user. parameters: - name: terminal_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Terminal deleted operationId: DeleteUserTerminal tags: - User Terminals /v1/hq/user/settlement_accounts: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: List settlement accounts description: Lists the settlement accounts of a user. responses: "200": content: application/json: schema: $ref: "#/components/schemas/SettlementAccounts" description: Settlement accounts "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListUserSettlementAccounts tags: - Settlement Accounts /v1/hq/notifications: post: security: - BearerTokenAuth: [] - oAuth 2.0: - notifications:write summary: Create a notification description: | Creates a notification at company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/NotificationCreate" responses: "200": description: Notification Created operationId: CreateNotification tags: - Notifications /v1/hq/companies/{company_id}/notifications: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - notifications:read summary: List all notifications description: Lists all notifications at a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Notifications" description: Notifications operationId: ListNotifications tags: - Notifications delete: security: - BearerTokenAuth: [] - oAuth 2.0: - notifications:write summary: Delete all notifications description: Deletes all notifications that user has access to at a company, including user specific notifications. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/DeletionResult" description: Notifications were deleted operationId: DeleteNotifications tags: - Notifications /v1/hq/stream/companies/{company_id}/notifications: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - notifications:read summary: Stream notifications description: Streams all notifications at a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Notifications stream operationId: StreamNotifications tags: - Notifications /v1/hq/notifications/{notification_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - notifications:read summary: Retrieve a notification description: Retrieves a notification at a users company. parameters: - name: notification_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Notification" description: Notification "404": $ref: "#/components/responses/NotFoundError" operationId: GetNotification tags: - Notifications delete: security: - BearerTokenAuth: [] - oAuth 2.0: - notifications:write summary: Delete a notification description: Deletes a notification at a users company. parameters: - name: notification_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Notification was deleted "400": $ref: "#/components/responses/BadRequestError" operationId: DeleteNotification tags: - Notifications /v1/hq/companies: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - companies:read summary: List all companies description: Lists all companies user has access to. parameters: - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Companies" description: Companies operationId: GetCompanies tags: - Companies post: security: - BearerTokenAuth: [] summary: Create a company description: Creates a new company within the current enterprise. The new company will inherit every needed property not required by the request body definition, from the current active company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Company" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Company" description: Company "400": $ref: "#/components/responses/BadRequestError" operationId: CreateCompany tags: - Companies /v1/hq/companies/{company_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] summary: Update a company description: Updates a company by ID. parameters: - name: company_id description: Company ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Company" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Company" description: Company "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateCompany tags: - Companies get: security: - BearerTokenAuth: [] - oAuth 2.0: - companies:read summary: Get company description: Retrieves company with ID. parameters: - name: company_id description: Company ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Company" description: Company "401": $ref: "#/components/responses/UnauthorizedError" operationId: GetCompany tags: - Companies /v1/hq/pricing: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: summary: List pricing description: Retrieve pricing information for all supported countries. responses: "200": content: application/json: schema: $ref: "#/components/schemas/AllPricing" description: Pricing operationId: ListPricing tags: - Hidden /v1/hq/pricing/{country_code}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: summary: Get pricing for country description: Retrieve pricing information for a specified country or default pricing if country is not supported. Default prices do not return a country_code. parameters: - name: country_code description: Country code in Alpha-2. in: path required: true schema: maxLength: 2 minLength: 2 type: string - name: product description: Can optionally be passed to get single product only. in: query required: false schema: type: string enum: [ sms_announcements, sms_reminders, users, pos, checkin, sms_custom, base_fee, spaces, marketplace, noshow, ] responses: "200": content: application/json: schema: $ref: "#/components/schemas/Pricing" description: Pricing for country "404": $ref: "#/components/responses/NotFoundError" operationId: GetPricingByCountryCode tags: - Hidden /v1/hq/pricing/calculator: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: summary: Calculate pricing description: Calculate pricing based on country and resource requirements. parameters: - name: country_code description: Country code in Alpha-2. in: query required: true schema: maxLength: 2 minLength: 2 type: string - name: staff description: Number of staff. in: query required: true schema: type: number format: double - name: resources description: Number of resources. in: query required: true schema: type: number format: double responses: "200": content: application/json: schema: $ref: "#/components/schemas/PricingCalculation" description: Pricing calculation "404": $ref: "#/components/responses/NotFoundError" operationId: CalculatePricing tags: - Hidden /v1/hq/user: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - user:read summary: Get user description: | Gets current user information, inferred from token. This endpoint is subject to extreme change in the near future and offers no promise of backwards compatability. responses: "200": content: application/json: schema: $ref: "#/components/schemas/User" description: User "401": $ref: "#/components/responses/UnauthorizedError" operationId: GetUser tags: - User /v1/hq/user/oauth: get: security: - BearerTokenAuth: [] summary: OAuth description: Starts an OAuth flow for a user. parameters: - name: provider in: query required: true schema: type: string enum: [google, saltpay] - name: redirect_uri in: query schema: type: string description: The URI to redirect to after the OAuth flow is complete. responses: "302": description: OAuth redirect "401": $ref: "#/components/responses/UnauthorizedError" operationId: UserOAuth tags: - User /v1/hq/tokens: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - Email/Password: [] summary: Create token description: Creates a Noona checkin token that is required for API interaction. responses: "200": content: application/json: schema: $ref: "#/components/schemas/CheckinToken" description: Token "401": $ref: "#/components/responses/UnauthorizedBasicError" operationId: CreateToken tags: - Hidden /v1/hq/user/tokens: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - Email/Password: [] summary: Create token description: Creates a personal API token that can be used for API interaction. requestBody: content: application/json: schema: $ref: "#/components/schemas/Token" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Token" description: Token "401": $ref: "#/components/responses/UnauthorizedBasicError" operationId: CreateUserToken tags: - Tokens get: security: - BearerTokenAuth: [] summary: List tokens description: Lists existing tokens tied to user. responses: "200": content: application/json: schema: $ref: "#/components/schemas/Tokens" description: Token "401": $ref: "#/components/responses/UnauthorizedError" operationId: ListUserTokens tags: - Tokens /v1/hq/user/tokens/{token_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: Get token description: Gets a token tied to user. parameters: - name: token_id description: Token ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Token" description: Token "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: GetUserToken tags: - Tokens delete: security: - Email/Password: [] summary: Delete a token description: Deletes a token. parameters: - name: token_id description: Token ID in: path required: true schema: type: string responses: "200": description: Token was deleted "401": $ref: "#/components/responses/UnauthorizedBasicError" "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteUserToken tags: - Tokens /v1/hq/products: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - products:read summary: List all products description: Lists all products tied to company. parameters: - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/ProductFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" - name: barcode in: query deprecated: true description: "Use filter instead." required: false schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Products" description: Products operationId: ListProducts tags: - Products post: security: - BearerTokenAuth: [] - oAuth 2.0: - products:write summary: Create a product description: Creates a new product at company. requestBody: required: true content: application/json: schema: required: - title allOf: - $ref: "#/components/schemas/Product" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Product" description: Product "400": $ref: "#/components/responses/BadRequestError" operationId: CreateProduct tags: - Products /v1/hq/products/{id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - products:read summary: Retrieve a product description: Retrieves information about an existing product. parameters: - name: id description: Product ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Product" description: Product "404": $ref: "#/components/responses/NotFoundError" operationId: GetProduct tags: - Products delete: security: - BearerTokenAuth: [] - oAuth 2.0: - products:write summary: Delete a product description: Deletes a product. parameters: - name: id description: Product ID in: path required: true schema: type: string responses: "200": description: Product was deleted "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteProduct tags: - Products post: security: - BearerTokenAuth: [] - oAuth 2.0: - products:write summary: Update a product description: Updates product by ID by setting the values of the parameters passed. Any parameters not provided will be left unchanged. parameters: - name: id description: Product ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Product" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Product" description: Updated product "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateProduct tags: - Products /v1/hq/stream/companies/{company_id}/products: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - products:read summary: Stream products description: Streams products for a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Products stream operationId: StreamProducts tags: - Products /v1/hq/product_groups: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - product_groups:read summary: List all product groups description: Returns a list of all product groups tied to company. parameters: - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/ProductGroups" description: Product groups operationId: ListProductGroups tags: - Product Groups post: security: - BearerTokenAuth: [] - oAuth 2.0: - product_groups:write summary: Create a product group description: Creates a new product group for users company. requestBody: required: true content: application/json: schema: required: - title allOf: - $ref: "#/components/schemas/ProductGroup" responses: "200": content: application/json: schema: $ref: "#/components/schemas/ProductGroup" description: Product group "400": $ref: "#/components/responses/BadRequestError" operationId: CreateProductGroup tags: - Product Groups /v1/hq/product_groups/{id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - product_groups:read summary: Retrieve a product group description: Retrieve information about an existing product group. parameters: - name: id description: Product Group ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/ProductGroup" description: Product group "404": $ref: "#/components/responses/NotFoundError" operationId: GetProductGroup tags: - Product Groups delete: security: - BearerTokenAuth: [] - oAuth 2.0: - product_groups:write summary: Delete a product group description: Deletes product group tied to users comapny. parameters: - name: id description: Product Group ID in: path required: true schema: type: string responses: "200": description: Product group deleted "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteProductGroup tags: - Product Groups post: security: - BearerTokenAuth: [] - oAuth 2.0: - product_groups:write summary: Update a product group description: Updates a product group with ID by setting the values of the parameters passed. Any parameters not provided will be left unchanged. parameters: - name: id description: Product Group ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ProductGroup" responses: "200": content: application/json: schema: $ref: "#/components/schemas/ProductGroup" description: Updated product group "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateProductGroup tags: - Product Groups /v1/hq/product_groups/expanded: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - product_groups:read summary: List product groups expanded description: | Retrieve all product groups and products in an ordered manner with respect to hierarchy. responses: "200": content: application/json: schema: $ref: "#/components/schemas/ProductGroupsExpanded" description: Product groups and products operationId: ListGroupsAndProducts tags: - Product Groups /v1/hq/product_groups/order: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - product_groups:write summary: Update product groups order description: | Updates order of multiple product groups. This also applies to the 'root' product groups that have no parent. All groups in the request array must share the same parent. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ProductGroupsOrder" responses: "200": content: application/json: schema: $ref: "#/components/schemas/ProductGroupsOrder" description: Product groups order "400": $ref: "#/components/responses/BadRequestError" operationId: UpdateProductGroupsOrder tags: - Product Groups /v1/hq/stream/companies/{company_id}/product_groups: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - product_groups:read summary: Stream product groups description: Streams product groups for a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Product Groups stream operationId: StreamProductGroups tags: - Product Groups /v1/hq/sales/{sale_id}/transactions/{transaction_id}/send_receipt: post: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Sends receipt for transaction description: Sends a receipt to the specified user for the transaction with transaction_id parameters: - name: sale_id description: Sale ID in: path required: true schema: type: string - name: transaction_id description: Transaction ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: email: type: string example: example@example.com phone: type: object properties: phone_number: type: string example: 8578844 phone_country_code: type: string example: 354 responses: "200": description: Message sent succesfully "400": $ref: "#/components/responses/BadRequestError" operationId: SendTransactionReceipt tags: - Transactions /v1/hq/transactions/{transaction_id}/subtransactions: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:read summary: List all subtransactions description: Lists all subtransactions that belong to a transaction. parameters: - name: transaction_id description: Transaction ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Subtransactions" description: Subtransaction "404": $ref: "#/components/responses/NotFoundError" operationId: ListSubtransactions tags: - Subtransactions /v1/hq/sales/{sale_id}/transactions/{transaction_id}/subtransactions: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: deprecated: true security: - BearerTokenAuth: [] - oAuth 2.0: - sales:read summary: List all subtransactions description: | Lists all subtransactions that belong to a transaction. Deprecated: Use /v1/hq/transactions/{transaction_id}/subtransactions instead. parameters: - name: sale_id description: Sale ID in: path required: true schema: type: string - name: transaction_id description: Transaction ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Subtransactions" description: Subtransaction "404": $ref: "#/components/responses/NotFoundError" operationId: DeprecatedListSubtransactions tags: - Hidden /v1/hq/subtransactions: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Create a subtransaction description: | Creates a new subtransaction for a transaction or sale. **Cash** and **Other** payment methods are settled immedietly. The **Card** payment method gets created in the *unprocessed* state, wakes up the companies terminal and will be updated to *successful* once a payment has been made. parameters: - in: query name: behavior content: application/json: schema: $ref: "#/components/schemas/SubtransactionCreationBehavior" requestBody: required: true content: application/json: schema: required: - payment_method_id - transaction_id - amount - currency allOf: - $ref: "#/components/schemas/Subtransaction" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Subtransaction" description: Subtransaction "400": $ref: "#/components/responses/BadRequestError" operationId: CreateSubtransaction tags: - Subtransactions /v1/hq/subtransactions/{subtransaction_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:read summary: Retrieve a subtransaction description: Retrieves information about an existing subtransaction. parameters: - name: subtransaction_id description: Subtransaction ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Subtransaction" description: Subtransaction "404": $ref: "#/components/responses/NotFoundError" operationId: GetSubtransaction tags: - Subtransactions delete: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Delete a subtransaction description: Deletes a subtransaction. parameters: - name: subtransaction_id description: Subtransaction ID in: path required: true schema: type: string responses: "200": description: Subtransaction was deleted "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteSubtransaction tags: - Subtransactions /v1/hq/sales/{sale_id}/transactions/{transaction_id}/subtransactions/{id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: deprecated: true security: - BearerTokenAuth: [] - oAuth 2.0: - sales:read summary: Retrieve a subtransaction description: | Retrieves information about an existing subtransaction. Deprecated: Use /v1/hq/subtransactions/{subtransaction_id} instead. parameters: - name: sale_id description: Sale ID in: path required: true schema: type: string - name: transaction_id description: Transaction ID in: path required: true schema: type: string - name: id description: Subtransaction ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Subtransaction" description: Subtransaction "404": $ref: "#/components/responses/NotFoundError" operationId: DeprecatedGetSubtransaction tags: - Hidden /v1/hq/companies/{company_id}/sales: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:read summary: List all sales description: | Lists all sales for a company Customer is [point in time property](#section/Point-in-time-properties) and is always expanded. parameters: - name: company_id description: Company ID in: path required: true schema: type: string - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Sales" description: Sales "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: ListSales tags: - Sales /v1/hq/sales/{sale_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:read summary: Retrieve a sale description: | Retrieves information about an existing sale. Customer is [point in time property](#section/Point-in-time-properties) and is always expanded. parameters: - name: sale_id description: Sale ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Sale" description: Sale "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: GetSale tags: - Sales post: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Update a sale description: Allows for a partial update of a sale. parameters: - name: sale_id description: Sale ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Sale" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Sale" description: Sale "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateSale tags: - Sales delete: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Delete a sale description: Deletes a sale if allowed parameters: - name: sale_id description: Sale ID in: path required: true schema: type: string responses: "200": description: Sale "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteSale tags: - Sales /v1/hq/sales/{sale_id}/refund: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Refund a marketplace sale description: | Marketplace sales originate from online bookings that include payments (represented as subtransactions in transactions under the sale). This endpoint allows for a refund of the payments associated with the sale. A refund is not possible if: - The underlying payment of a subtransaction has been settled to the merchant. - A subtransaction has been processed through HQ since the sale was created. The possible error scenarios are explained in the 400 description below. The refund, when successful, is different in these scenarios: - **Completed Invoice**: All subtransactions are refunded and a credit invoice is created. - **Draft Invoice**: All subtransactions are refunded and the invoice is deleted. parameters: - name: sale_id description: Sale ID in: path required: true schema: type: string responses: "200": description: Sale refunded "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/RefundMarketplaceSaleError" operationId: RefundMarketplaceSale tags: - Sales /v1/hq/sales: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Create a sale description: Creates a sale requestBody: required: true content: application/json: schema: required: - company allOf: - $ref: "#/components/schemas/Sale" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Sale" description: Sale "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: CreateSale tags: - Sales /v1/hq/companies/{company_id}/transactions: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:read summary: List all transactions description: Lists all transactions for a company parameters: - name: company_id description: Company ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/TransactionsFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Transactions" description: Transactions "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: ListTransactions tags: - Transactions /v1/hq/transactions/{transaction_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:read summary: Retreive a single transaction description: Retreive a single transaction parameters: - name: transaction_id description: Transaction ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Transaction" description: Transaction "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: GetTransaction tags: - Transactions post: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Update a transaction description: Update a transaction parameters: - name: transaction_id description: Transaction ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Transaction" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Transaction" description: Transaction "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateTransaction tags: - Transactions delete: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Delete a transaction description: Delete a transaction parameters: - name: transaction_id description: Transaction ID in: path required: true schema: type: string responses: "200": description: Transaction "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteTransaction tags: - Transactions /v1/hq/transactions: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Create a transaction description: Create a transaction parameters: - in: query name: behavior content: application/json: schema: $ref: "#/components/schemas/TransactionCreationBehavior" requestBody: required: true content: application/json: schema: required: - sale allOf: - $ref: "#/components/schemas/Transaction" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Transaction" description: Transaction "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: CreateTransaction tags: - Transactions /v1/hq/transactions/{transaction_id}/line_items: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:read summary: List line items description: | List line items on a transaction Product, event type and voucher are [point in time properties](#section/Point-in-time-properties) parameters: - name: transaction_id description: Transaction ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/LineItems" description: LineItems "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: ListLineItems tags: - Line Items /v1/hq/line_items/{line_item_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:read summary: Retrieve line item description: | Retrieve a single line item Product, event type and voucher are [point in time properties](#section/Point-in-time-properties) parameters: - name: line_item_id description: Line Item ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/LineItem" description: LineItem "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: GetLineItem tags: - Line Items post: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Update a line item description: Update a line item if allowed parameters: - name: line_item_id description: Line Item ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/LineItem" responses: "200": content: application/json: schema: $ref: "#/components/schemas/LineItem" description: LineItem "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateLineItem tags: - Line Items delete: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Delete a line item description: Deletes a line item if allowed parameters: - name: line_item_id description: Line Item ID in: path required: true schema: type: string responses: "200": description: Line item deleted "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteLineItem tags: - Line Items /v1/hq/line_items: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - sales:write summary: Create a line item description: Create a line item requestBody: required: true content: application/json: schema: required: - transaction - title - unit_price allOf: - $ref: "#/components/schemas/LineItem" responses: "200": content: application/json: schema: $ref: "#/components/schemas/LineItem" description: LineItem "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: CreateLineItem tags: - Line Items /v1/hq/companies/{company_id}/issuers: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - issuers:read summary: List available invoice issuers description: | Lists all available invoice issuers for a company. This includes the company and all employees that issue their own invoices. Disabled employees are not included. parameters: - name: company_id description: Company ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/IssuersFilter" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Issuers" description: Issuers "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: ListIssuers tags: - Issuers /v1/hq/payment_methods: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - payment_methods:read summary: List all payment methods description: Lists all possible payment methods in the noona ecosystem. responses: "200": content: application/json: schema: $ref: "#/components/schemas/PaymentMethods" description: PaymentMethods operationId: ListPaymentMethods tags: - Payment Methods /v1/hq/companies/{company_id}/claims: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - claims:read summary: List all claims description: Lists all claims for a company parameters: - name: company_id description: Company ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/ClaimsFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Claims" description: Claims "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: ListClaims tags: - Claims /v1/hq/companies/{company_id}/event_types: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - event_types:read summary: List event types description: Retrieves all event types for a company. parameters: - name: company_id description: Company ID in: path required: true schema: type: string - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventTypes" description: Event types "400": $ref: "#/components/responses/BadRequestError" operationId: ListEventTypes tags: - Event Types /v1/hq/event_types/{event_type_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - event_types:read summary: Get event type description: Retrieves event type by ID parameters: - name: event_type_id description: Event Type ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventType" description: Event type "400": $ref: "#/components/responses/BadRequestError" operationId: GetEventType tags: - Event Types post: security: - BearerTokenAuth: [] - oAuth 2.0: - event_types:write summary: Update event type description: Updates event type by ID parameters: - name: event_type_id description: Event Type ID in: path required: true schema: type: string - in: query name: unset schema: $ref: "#/components/schemas/EventTypeFields" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/EventType" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventType" description: Event type "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" operationId: UpdateEventType tags: - Event Types delete: security: - BearerTokenAuth: [] - oAuth 2.0: - event_types:write summary: Delete event type description: Deletes event type by ID parameters: - name: event_type_id description: Event Type ID in: path required: true schema: type: string responses: "200": description: Event type deleted successfully "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" operationId: DeleteEventType tags: - Event Types /v1/hq/event_types: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - event_types:write summary: Create event type description: Creates an event type requestBody: required: true content: application/json: schema: required: - company_id - vat - title - duration allOf: - $ref: "#/components/schemas/EventType" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventType" description: Event type "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" operationId: CreateEventType tags: - Event Types /v1/hq/stream/companies/{company_id}/event_types: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - event_types:read summary: Stream event types description: Streams event types for a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Event Types stream operationId: StreamEventTypes tags: - Event Types /v1/hq/companies/{company_id}/event_type_groups: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - event_type_groups:read summary: List event type groups description: Retrieves all event type groups for a company. parameters: - name: company_id description: Company ID in: path required: true schema: type: string - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventTypeGroups" description: Event type groups "400": $ref: "#/components/responses/BadRequestError" operationId: ListEventTypeGroups tags: - Event Type Groups /v1/hq/event_type_groups/{event_type_group_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - event_type_groups:read summary: Get event type group description: Retrieves event type group by ID parameters: - name: event_type_group_id description: Event Type Group ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventTypeGroup" description: Event type group "400": $ref: "#/components/responses/BadRequestError" operationId: GetEventTypeGroup tags: - Event Type Groups /v1/hq/stream/companies/{company_id}/event_type_groups: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - event_type_groups:read summary: Stream event type groups description: Streams event type groups for a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Event Type Groups stream operationId: StreamEventTypeGroups tags: - Event Type Groups /v1/hq/companies/{company_id}/events: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - events:read summary: List events description: | Lists events for a company with provided filters. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: from in: query required: false deprecated: true schema: type: string format: date-time example: "2022-09-12T00:00:00Z" description: "Use filter instead" - name: to in: query required: false deprecated: true schema: type: string format: date-time example: "2022-09-19T00:00:00Z" description: "Use filter instead" - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/EventFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" - name: phone_number in: query deprecated: true schema: type: string example: "8576251" description: "Phone number of customer. Deprecated, use filter instead." - name: phone_country_code in: query deprecated: true schema: type: string example: "354" description: "Phone country code of customer. Deprecated, use filter instead." responses: "200": content: application/json: schema: $ref: "#/components/schemas/Events" description: Events "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" operationId: ListEvents tags: - Events /v1/hq/events: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - events:write summary: Create an event description: Create event for company parameters: - in: query name: behavior content: application/json: schema: $ref: "#/components/schemas/EventCreationBehavior" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Event" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Event" description: Event "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" operationId: CreateEvent tags: - Events /v1/hq/events/{event_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - events:read summary: Retrieve an event description: Get a single event by ID. parameters: - name: event_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Event" description: Events "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" operationId: GetEvent tags: - Events post: security: - BearerTokenAuth: [] - oAuth 2.0: - events:write summary: Update an event description: Updates an event at a company. parameters: - name: event_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: behavior content: application/json: schema: $ref: "#/components/schemas/EventUpdateBehavior" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Event" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Event" description: Updated event "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" operationId: UpdateEvent tags: - Events delete: security: - BearerTokenAuth: [] - oAuth 2.0: - events:write summary: Delete an event description: Delete event for a company parameters: - name: event_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: behavior content: application/json: schema: $ref: "#/components/schemas/EventDeletionBehavior" responses: "200": description: Event was deleted "403": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteEvent tags: - Events /v1/hq/stream/companies/{company_id}/events: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - events:read summary: Stream events description: Streams events for a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/EventFilter" responses: "200": description: Event stream operationId: StreamEvents tags: - Events /v1/hq/events/{event_id}/checkout: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - in: query name: behavior content: application/json: schema: $ref: "#/components/schemas/CheckoutBehavior" post: security: - BearerTokenAuth: [] - oAuth 2.0: - events:write summary: Checkout an event description: | Scaffolds checkout resources for an event. - Sale - Transaction - Line Items - Subtransaction in the case of a pre payment If the event has already been checked out, this will return the existing checkout. parameters: - name: event_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Sale" description: Created sale "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" operationId: CreateCheckoutForEvent tags: - Events /v1/hq/companies/{company_id}/blocked_times: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - blocked_times:read summary: List blocked times description: | Lists blocked times for a company with provided filters. The maximum queryable range is 31 days as repeating blocked times could be expanded infinitely. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: from in: query required: true schema: type: string format: date-time example: "2022-09-12T00:00:00Z" description: "Include blocked times starting on this date" - name: to in: query required: true schema: type: string format: date-time example: "2022-09-19T00:00:00Z" description: "Include blocked times ending before this date" - name: filter in: query content: application/json: schema: $ref: "#/components/schemas/CalendarSlotFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/BlockedTimesResponse" description: Blocked Times "400": $ref: "#/components/responses/BadRequestError" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" operationId: ListBlockedTimes tags: - Blocked Times /v1/hq/blocked_times: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - blocked_times:write summary: Create a blocked time description: | Creates a blocked time for a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/BlockedTimeCreate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/BlockedTimeResponse" description: Created Blocked Time "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/Error" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: CreateBlockedTime tags: - Blocked Times /v1/hq/blocked_times/{blocked_time_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - blocked_times:read summary: Retrieve a blocked time description: Retrieve blocked time for a company parameters: - name: blocked_time_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/BlockedTimeResponse" description: Blocked time "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/Error" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: GetBlockedTime tags: - Blocked Times post: security: - BearerTokenAuth: [] - oAuth 2.0: - blocked_times:write summary: Update a blocked time description: Updates a blocked time at a company. parameters: - name: blocked_time_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Blocked Time ID - in: query name: behavior content: application/json: schema: $ref: "#/components/schemas/BlockedTimeUpdateBehavior" - in: query name: date required: true schema: type: string example: "2024-04-01" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/BlockedTimeUpdate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/BlockedTimeResponse" description: Updated Blocked Time "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/Error" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateBlockedTime tags: - Blocked Times delete: security: - BearerTokenAuth: [] - oAuth 2.0: - blocked_times:write summary: Delete a blocked time description: Delete blocked time for a company parameters: - name: blocked_time_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: behavior content: application/json: schema: $ref: "#/components/schemas/BlockedTimeDeletionBehavior" - in: query name: date required: true schema: type: string example: "2024-04-01" responses: "200": description: Blocked time was deleted "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/Error" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteBlockedTime tags: - Blocked Times /v1/hq/stream/companies/{company_id}/blocked_times: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - blocked_times:read summary: Stream blocked times description: Streams blocked times for a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/BlockedTimeFilter" responses: "200": description: Blocked times stream operationId: StreamBlockedTimes tags: - Blocked Times /v1/hq/companies/{company_id}/time_slots: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - time_slots:read summary: List time slots description: | Gets all available tima slots for company based on filter. Either **event_type_ids** or **event_id** must be provided. Capacity is the number of customers in booking. parameters: - name: company_id in: path required: true schema: type: string example: "aw7da9wd8ua28a821" description: "Company ID" - name: employee_id in: query required: false schema: type: string example: "8a1da9wd8ua28aa9d" - name: resource_id in: query required: false schema: type: string example: "ea7da9wd8ua28a134" - name: event_type_ids in: query required: false schema: type: array example: ["te7da9wd8ua28a1ab", "xa7da9wd8ua01a134"] items: type: string - name: event_id in: query required: false schema: type: string example: "xa7da9wd8ua01a134" - name: start_date in: query required: true schema: type: string example: "2021-01-01" - name: end_date in: query required: true schema: type: string example: "2021-01-31" - name: capacity in: query required: false schema: type: integer format: int32 example: 5 default: 1 - name: duration in: query required: false description: Duration is by default inferred from event type(s) but can be overwritten with this parameter. schema: type: integer format: int32 example: 30 responses: "200": content: application/json: schema: $ref: "#/components/schemas/TimeSlots" description: Time slots operationId: ListTimeSlots tags: - Time Slots /v1/hq/companies/{company_id}/pax_statuses: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - time_slots:read summary: List pax status description: | Lists pax statuses for date range. The pax status is based on: - Rules in effect - Existing events parameters: - name: company_id in: path required: true schema: type: string example: "aw7da9wd8ua28a821" description: "Company ID" - name: filter in: query content: application/json: schema: $ref: "#/components/schemas/PaxStatusFilter" responses: "200": content: application/json: schema: $ref: "#/components/schemas/PaxStatuses" description: Pax Statuses operationId: ListPaxStatuses tags: - Time Slots /v1/hq/companies/{company_id}/events/{id}/checkin: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - events:write summary: Check in a customer description: | Checks a customer into event. Also triggers a terminal payment if the company has a terminal connected to checkin. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: id in: path required: true schema: type: string example: "aw7da9wd8ua28a821" description: "Event ID" - name: terminal_id in: query schema: type: string example: "aw7da9wd8ua28a821" description: "ID of the terminal to use for payment during checkin" - name: voucher_id in: query schema: type: string example: "aw7da9wd8ua28a821" description: "ID of the voucher to use for payment during checkin" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventCheckinResult" description: Checkin result "404": $ref: "#/components/responses/NotFoundError" operationId: CheckinWithPayment tags: - Events /v1/hq/companies/{company_id}/properties: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - properties:read summary: List custom properties description: Lists custom properties for a company parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/CustomProperties" description: CustomProperties "403": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: ListCustomProperties tags: - Custom Properties /v1/hq/properties: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - properties:write summary: Create custom property description: Create custom property for a company requestBody: required: true content: application/json: schema: required: - name - scope - type allOf: - $ref: "#/components/schemas/CustomProperty" responses: "200": content: application/json: schema: $ref: "#/components/schemas/CustomProperty" description: CustomProperty "403": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: CreateCustomProperty tags: - Custom Properties /v1/hq/properties/{property_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - properties:write summary: Update custom property description: Update custom property for a company parameters: - name: property_id in: path required: true schema: type: string example: "dwawd8awudawd" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CustomProperty" responses: "200": content: application/json: schema: $ref: "#/components/schemas/CustomProperty" description: CustomProperty "403": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateCustomProperty tags: - Custom Properties delete: security: - BearerTokenAuth: [] - oAuth 2.0: - properties:write summary: Delete custom property description: Delete custom property for a company parameters: - name: property_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Custom property was deleted "403": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteCustomProperty tags: - Custom Properties /v1/hq/companies/{company_id}/webhooks: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - none summary: List all webhooks description: Lists all webhooks of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Webhooks" description: Webhooks operationId: ListWebhooks tags: - Webhooks /v1/hq/webhooks: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - none summary: Create a webhook description: | Creates a webhook for a company. The webhook will be triggered when any of the defined events occur. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Webhook" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Webhook" description: Created Webhook callbacks: event: callback_url: post: requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/CallbackData" responses: "200": description: Your server returns this code if it accepts the callback operationId: CreateWebhook tags: - Webhooks /v1/hq/webhooks/{webhook_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - none summary: Retrieve a webhook description: Retrieves information about an existing webhook. parameters: - name: webhook_id description: Webhook ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Webhook" description: Webhook "404": $ref: "#/components/responses/NotFoundError" operationId: GetWebhook tags: - Webhooks post: security: - BearerTokenAuth: [] - oAuth 2.0: - none summary: Update a webhook description: Updates a webhook at a company. parameters: - name: webhook_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Webhook ID requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Webhook" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Webhook" description: Updated Webhook operationId: UpdateWebhook tags: - Webhooks delete: security: - BearerTokenAuth: [] - oAuth 2.0: - none summary: Delete webhook description: Deletes a webhook at company. parameters: - name: webhook_id description: Webhook ID in: path required: true schema: type: string responses: "200": description: Webhook deleted operationId: DeleteWebhook tags: - Webhooks /v1/hq/webhooks/events: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: List all webhook events description: Lists all events that can be used to trigger a webhook. responses: "200": content: application/json: schema: $ref: "#/components/schemas/WebhookEvents" description: Webhook Events operationId: ListWebhookEvents tags: - Webhooks /v1/hq/companies/{company_id}/subscriptions/payment_intent: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] summary: Create a payment intent description: Create a payment intent to be used for the 3DSecure payment flow parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Company ID responses: "200": content: application/json: schema: $ref: "#/components/schemas/PaymentIntent" description: Created payment intent "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: CreatePaymentIntent tags: - Subscriptions /v1/hq/companies/{company_id}/subscriptions/billing_info: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: Retrieve billing info for company description: Retrieves billing information for company parameters: - name: company_id description: Company id in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/BillingCustomer" description: Billing information for company "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: GetSubscriptionBillingInfo tags: - Subscriptions post: security: - BearerTokenAuth: [] summary: Create or update billing info for customer description: Creates or updates the billing information for this customer parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Company ID requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/BillingCustomer" responses: "200": content: application/json: schema: $ref: "#/components/schemas/BillingCustomer" description: Billing information of company "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateBillingInfo tags: - Subscriptions /v1/hq/subscriptions/invoices/{invoice_id}: get: security: - BearerTokenAuth: [] summary: Download billing invoice PDF description: Download billing invoice PDF parameters: - name: invoice_id description: Invoice id in: path required: true schema: type: string responses: "200": content: application/pdf: schema: type: string format: binary description: Billing invoice by ID "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: GetBillingInvoice tags: - Subscriptions /v1/hq/companies/{company_id}/subscriptions/invoices: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: Retrieve billing invoices for company description: Retrieves billing invoices for company parameters: - name: company_id description: Company id in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/InvoicesFilter" responses: "200": content: application/json: schema: $ref: "#/components/schemas/BillingInvoices" description: Billing invoices for company "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: ListBillingInvoices tags: - Subscriptions /v1/hq/companies/{company_id}/subscriptions: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] summary: Create a subscription for company description: Creates the subscription for the company and updates the relevant database fields. parameters: - name: company_id description: Company id in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/PowerupPostBody" responses: "200": content: application/json: schema: $ref: "#/components/schemas/PowerupSubscription" description: Subscription for specified product and company "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: CreateSubscription tags: - Subscriptions /v1/hq/subscriptions/{subscription_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: Retrieve subscription for company description: Retrieves subscription information for the company parameters: - name: subscription_id description: Subscription id in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/PowerupSubscription" description: Billing information for company "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: GetSubscription tags: - Subscriptions delete: security: - HQ-Authenticatoin: [] summary: End subscription description: Ends a subscription and deletes the associated fields in the database parameters: - name: subscription_id description: Subscription id in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/PowerupSubscription" description: Successfully cancelled subscription "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteSubscription tags: - Subscriptions /v1/hq/companies/{company_id}/webhook_invocations: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" get: security: - BearerTokenAuth: [] summary: List all webhooks invocations description: Lists all webhook invocations of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/WebhookInvocations" description: Webhook Invocations operationId: ListWebhookInvocations tags: - Webhook Invocations /v1/hq/webhook_invocations/{webhook_invocation_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: Get webhooks invocation description: Gets webhook invocation with id. parameters: - name: webhook_invocation_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/WebhookInvocation" description: Webhook Invocation operationId: GetWebhookInvocation tags: - Webhook Invocations post: security: - BearerTokenAuth: [] summary: Update a webhook invocation description: Updates a webhook invocation. parameters: - name: webhook_invocation_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Webhook Invocation ID requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/WebhookInvocation" responses: "200": content: application/json: schema: $ref: "#/components/schemas/WebhookInvocation" description: Updated Webhook Invocation operationId: UpdateWebhookInvocation tags: - Webhook Invocations /v1/hq/integrations/saltpay/companies: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: List all Saltpay companies description: Lists all Saltpay companies. responses: "200": content: application/json: schema: $ref: "#/components/schemas/SaltpayCompanies" description: Saltpay companies operationId: ListSaltpayCompanies tags: - Saltpay /v1/hq/integrations/saltpay/companies/{company_id}/stores: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - name: company_id description: Saltpay Company ID in: path required: true schema: type: string get: security: - BearerTokenAuth: [] summary: List all Saltpay stores at company description: Lists all Saltpay stores at company. responses: "200": content: application/json: schema: $ref: "#/components/schemas/SaltpayStores" description: Saltpay stores operationId: ListSaltpayStoresAtCompany tags: - Saltpay /v1/hq/integrations/saltpay/companies/{company_id}/bank_accounts/{bank_account_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - name: company_id description: Saltpay Company ID in: path required: true schema: type: string - name: bank_account_id description: Saltpay Bank Account ID in: path required: true schema: type: string post: security: - BearerTokenAuth: [] summary: Link Saltpay bank account description: | Links a Saltpay bank account as a settlement account for the provided entity. The entities that can be linked to a Saltpay bank account are: - Company Payments made to that company through the Noona marketplace will be settled to the linked Saltpay bank account. - User If a user is linked to a Saltpay bank account, and the company allows it, the user can receive payments through the Noona marketplace to the linked Saltpay bank account. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/SaltpayBankAccount" responses: "200": content: application/json: schema: $ref: "#/components/schemas/SettlementAccount" description: The created settlement account operationId: LinkSaltpayBankAccount tags: - Saltpay /v1/hq/integrations/saltpay/stores: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: List all Saltpay stores description: Lists all Saltpay stores. responses: "200": content: application/json: schema: $ref: "#/components/schemas/SaltpayStores" description: Saltpay stores operationId: ListSaltpayStores tags: - Saltpay /v1/hq/integrations/saltpay/stores/{store_id}/terminals: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - name: store_id description: Store id in: path required: true schema: type: string get: security: - BearerTokenAuth: [] summary: List all Saltpay terminals at a store description: Lists all Saltpay terminals at a store. responses: "200": content: application/json: schema: $ref: "#/components/schemas/SaltpayTerminals" description: Saltpay terminals operationId: ListSaltpayTerminals tags: - Saltpay /v1/hq/integrations/saltpay/stores/{store_id}/terminals/{terminal_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - name: store_id description: Store id in: path required: true schema: type: string - name: terminal_id description: Terminal id in: path required: true schema: type: string post: security: - BearerTokenAuth: [] summary: Update Saltpay terminal description: Updates a Saltpay terminal. Used to control whether and how a terminal is connected to an issuer. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/SaltpayTerminal" responses: "200": content: application/json: schema: $ref: "#/components/schemas/SaltpayTerminal" description: Updated Saltpay terminal operationId: UpdateSaltpayTerminal tags: - Saltpay /v1/hq/integrations/adyen/companies/{company_id}/onboarding: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - name: company_id description: Company ID in: path required: true schema: type: string get: security: - BearerTokenAuth: [] summary: Adyen company onboarding status description: | Gets the status of the Adyen KYC process for a company. The onboarding process is a series of steps that must be completed before a company can receive payments through Adyen. responses: "200": content: application/json: schema: $ref: "#/components/schemas/AdyenOnboardingInfo" description: Adyen onboarding info operationId: AdyenCompanyOnboardingStatus tags: - Adyen post: security: - BearerTokenAuth: [] summary: Adyen company onboarding description: | Initiates or resumes the Adyen KYC process for a company. The onboarding process is a series of steps that must be completed before a company can receive payments through Adyen. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AdyenOnboardingRequest" responses: "200": content: application/json: schema: $ref: "#/components/schemas/AdyenOnboardingInfo" description: Adyen onboarding info operationId: AdyenCompanyOnboarding tags: - Adyen /v1/hq/integrations/adyen/users/{user_id}/onboarding: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - name: user_id description: User ID in: path required: true schema: type: string get: security: - BearerTokenAuth: [] summary: Adyen user onboarding status description: | Gets the status of the Adyen KYC process for a user. This is only applicable for users that issue their own invoices. The onboarding process is a series of steps that must be completed before a user can receive payments through Adyen. responses: "200": content: application/json: schema: $ref: "#/components/schemas/AdyenOnboardingInfo" description: Adyen onboarding info operationId: AdyenUserOnboardingStatus tags: - Adyen post: security: - BearerTokenAuth: [] summary: Adyen user onboarding description: | Initiates or resumes the Adyen KYC process for a user. This is only applicable for users that issue their own invoices. The onboarding process is a series of steps that must be completed before a user can receive payments through Adyen. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/AdyenOnboardingRequest" responses: "200": content: application/json: schema: $ref: "#/components/schemas/AdyenOnboardingInfo" description: Adyen onboarding info operationId: AdyenUserOnboarding tags: - Adyen /v1/hq/integrations/mozrest/companies/{company_id}/booking_channels: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - name: company_id description: Company ID in: path required: true schema: type: string get: security: - BearerTokenAuth: [] summary: List booking channels description: Lists all Mozrest booking channels in the context of a specific company. responses: "200": content: application/json: schema: $ref: "#/components/schemas/MozrestBookingChannelsResponse" description: Mozrest Booking Channels operationId: ListMozrestBookingChannels tags: - Mozrest /v1/hq/integrations/mozrest/companies/{company_id}/booking_channels/{booking_channel_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - name: company_id description: Company ID in: path required: true schema: type: string - name: booking_channel_id description: Booking Channel ID in: path required: true schema: type: string post: security: - BearerTokenAuth: [] summary: Update booking channel description: Updates a Mozrest booking channel in the context of a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/MozrestBookingChannelUpdate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/MozrestBookingChannelResponse" description: Updated Mozrest Booking Channel operationId: UpdateMozrestBookingChannel tags: - Mozrest /v1/hq/companies/{company_id}/time_slot_reservations: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - time_slots:read summary: List time slot reservations description: | Lists time slot reservation at company. Time slot reservations are created when a customer is going through the booking process and selects a time slot on the marketplace. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/TimeSlotReservationFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/TimeSlotReservations" description: Reservation operationId: ListTimeSlotReservations tags: - Time Slots /v1/hq/time_slot_reservations/{time_slot_reservation_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - time_slots:read summary: Get time slot reservation description: | Get a time slot reservation at company. Time slot reservations are created when a customer is going through the booking process and selects a time slot on the marketplace. parameters: - name: time_slot_reservation_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/TimeSlotReservation" description: Reservation operationId: GetTimeSlotReservation tags: - Time Slots /v1/hq/stream/companies/{company_id}/time_slot_reservations: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - time_slots:read summary: Stream time slot reservations description: Streams time slot reservations for a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/TimeSlotReservationFilter" responses: "200": description: Time Slot Reservations stream operationId: StreamTimeSlotReservations tags: - Time Slots /v1/hq/companies/{company_id}/holidays: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: List Holidays description: | List holidays according to the company's country. The language of the holiday names is can be controlled by including a Accept-Language header. If the header is not included, the language is the company's default language. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: filter required: true content: application/json: schema: $ref: "#/components/schemas/HolidaysFilter" - in: header name: Accept-Language schema: type: string description: | The language of the holiday names. If not included, the language is the company's default language. example: "is" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Holidays" description: Holidays operationId: ListHolidays tags: - Holidays /v1/hq/fiscalizations/transactions/{transaction_id}: parameters: - $ref: "#/components/parameters/select" post: security: - BearerTokenAuth: [] summary: Fiscalize transaction description: | If the transaction is not fiscalized, it will be fiscalized. If the transaction is already fiscalized, the fiscalization record will be returned. parameters: - name: transaction_id in: path required: true schema: type: string example: "dwawd8awudawd" requestBody: required: true content: application/json: schema: type: object properties: customer_tax_id: type: string example: "dwawd8awudawd" description: | The customer's identification number in the tax authority's system. Different between markets but an example is NIF in Portugal. country_code: type: string example: "PT" description: | The customer's country code in the tax authority's system. Different between markets but an example is PT in Portugal. responses: "200": content: application/json: schema: $ref: "#/components/schemas/FiscalizationRecord" description: Fiscalization "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/FiscalizeTransactionError" operationId: FiscalizeTransaction tags: - Fiscalization /v1/hq/fiscalizations/transactions/{transaction_id}/refund: parameters: - $ref: "#/components/parameters/select" post: security: - BearerTokenAuth: [] summary: Refund fiscalized transaction description: | Creates a credit invoice for a fiscalized transaction in the Noona system, along with a fiscalization record for the credit invoice in the tax authority's system. If the transaction is not fiscalized, an error will be returned. parameters: - name: transaction_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Transaction" description: Credit Transaction operationId: RefundFiscalizedTransaction tags: - Fiscalization /v1/hq/fiscalizations/transactions/{transaction_id}/pdf: get: security: - BearerTokenAuth: [] summary: Download fiscalized transaction PDF description: Download fiscalized transaction PDF parameters: - name: transaction_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/pdf: schema: type: string format: binary description: Transaction PDF "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: GetFiscalizedTransactionPDF tags: - Fiscalization /v1/hq/fiscalizations/transactions/{transaction_id}/email: post: security: - BearerTokenAuth: [] summary: Send fiscalized transaction PDF description: Sends fiscalized transaction PDF to an email address parameters: - name: transaction_id in: path required: true schema: type: string example: "dwawd8awudawd" requestBody: required: true content: application/json: schema: type: object properties: email: type: string example: "dwawd8awudawd" description: | The email address to send the PDF to. responses: "200": description: Success "401": $ref: "#/components/responses/UnauthorizedError" "404": $ref: "#/components/responses/NotFoundError" operationId: SendFiscalizedTransactionPDF tags: - Fiscalization /v1/hq/fiscalizations/companies/{company_id}/onboarding: get: security: - BearerTokenAuth: [] summary: Get fiscalization onboarding data description: | Fetches the data fiscalization for the company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/select" responses: "200": content: application/json: schema: $ref: "#/components/schemas/FiscalizationOnboarding" description: FiscalizationOnboarding operationId: GetCompanyFiscalizationData tags: - Fiscalization post: security: - BearerTokenAuth: [] summary: Upsert fiscalization onboarding data description: | Uses the provided data to setup the fiscalization for the company. If the company already has fiscalization data, it will be updated. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/FiscalizationOnboarding" responses: "200": content: application/json: schema: $ref: "#/components/schemas/FiscalizationOnboarding" description: FiscalizationOnboarding operationId: UpsertCompanyFiscalizationData tags: - Fiscalization delete: security: - BearerTokenAuth: [] summary: Delete fiscalization onboarding data description: | Deletes the fiscalization data for the company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/FiscalizationOnboarding" description: FiscalizationOnboarding operationId: DeleteCompanyFiscalizationData tags: - Fiscalization /v1/hq/fiscalizations/companies/{company_id}/report: get: security: - BearerTokenAuth: [] summary: Download fiscalization report description: Downloads fiscalization report for the company over a specified period. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: from in: query required: true schema: type: string format: date-time example: "2020-01-01T00:00:00.000Z" - name: to in: query required: true schema: type: string format: date-time example: "2020-02-01T00:00:00.000Z" responses: "200": content: application/octet-stream: schema: type: string format: binary description: Report ZIP "401": $ref: "#/components/responses/UnauthorizedError" operationId: GetFiscalizationReport tags: - Fiscalization /v1/hq/companies/{company_id}/activities: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - activities:read summary: List all activities at company description: Lists activities for all resources at company. (Last 100) parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/UnifiedActivities" description: All Company Activities operationId: ListAllCompanyActivities tags: - Activities /v1/hq/activities/events/{event_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - activities:read summary: List activities for event description: Lists activities for event. Activities are sorted in descending order by occurrance. parameters: - name: event_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventActivities" description: Event Activities operationId: ListEventActivities tags: - Activities /v1/hq/activities/event_types/{event_type_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - activities:read summary: List activities for event type description: Lists activities for event type. Activities are sorted in descending order by occurrance. parameters: - name: event_type_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventTypeActivities" description: Event Type Activities operationId: ListEventTypeActivities tags: - Activities /v1/hq/activities/customers/{customer_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - activities:read summary: List activities for customer description: Lists activities for customer. Activities are sorted in descending order by occurrance. parameters: - name: customer_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/CustomerActivities" description: Customer Activities operationId: ListCustomerActivities tags: - Activities /v1/hq/activities/payments/{payment_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - activities:read summary: List activities for payment description: Lists activities for payment. Activities are sorted in descending order by occurrance. parameters: - name: payment_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/PaymentActivities" description: Payment Activities operationId: ListPaymentActivities tags: - Activities /v1/hq/companies/{company_id}/metrics/sales: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - metrics:read summary: Retrieve sales metrics description: Retrieves sales metrics for a company for a specific timeframe. parameters: - name: company_id description: Company ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/SalesMetrics" description: Sales Metrics "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: GetSalesMetrics tags: - Metrics /v1/hq/companies/{company_id}/metrics/events: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - metrics:read summary: Retrieve events metrics description: Retrieves event/booking metrics for a company for a specific timeframe. parameters: - name: company_id description: Company ID in: path required: true schema: type: string - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/EventsMetricsFilter" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventsMetrics" description: Events Metrics "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: GetEventsMetrics tags: - Metrics /v1/hq/stream/companies/{company_id}/metrics/sales: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - metrics:read summary: Stream sales metrics description: Streams sales metrics for a company for a specific timeframe parameters: - name: company_id description: Company ID in: path required: true schema: type: string responses: "200": description: Sales Metrics stream "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: StreamSalesMetrics tags: - Metrics /v1/hq/companies/{company_id}/spaces: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - $ref: "#/components/parameters/search" get: deprecated: true security: - BearerTokenAuth: [] summary: List all spaces description: Lists all spaces of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" - name: filter in: query content: application/json: schema: $ref: "#/components/schemas/SpacesFilter" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Spaces" description: Spaces operationId: ListSpaces tags: - Hidden /v1/hq/spaces: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: deprecated: true security: - BearerTokenAuth: [] summary: Create a space description: | Creates a space for a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Space" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Space" description: Created Space operationId: CreateSpace tags: - Hidden /v1/hq/spaces/{space_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: deprecated: true security: - BearerTokenAuth: [] summary: Retrieve a space description: Retrieves information about an existing space. parameters: - name: space_id description: Space ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Space" description: Space "404": $ref: "#/components/responses/NotFoundError" operationId: GetSpace tags: - Hidden post: deprecated: true security: - BearerTokenAuth: [] summary: Update a space description: Updates a space at a company. parameters: - name: space_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Space ID requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Space" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Space" description: Updated Space operationId: UpdateSpace tags: - Hidden delete: deprecated: true security: - BearerTokenAuth: [] summary: Delete space description: Deletes a space at a company. parameters: - name: space_id description: Space ID in: path required: true schema: type: string responses: "200": description: Space deleted operationId: DeleteSpace tags: - Hidden /v1/hq/stream/companies/{company_id}/spaces: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: deprecated: true security: - BearerTokenAuth: [] summary: Stream spaces description: Streams spaces for a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Spaces stream operationId: StreamSpaces tags: - Hidden /v1/hq/companies/{company_id}/resources: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - $ref: "#/components/parameters/search" get: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:read summary: List all resources description: Lists all resources of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" - name: filter in: query content: application/json: schema: $ref: "#/components/schemas/ResourcesFilter" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Resources" description: Resources operationId: ListResources tags: - Resources /v1/hq/resources: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:write summary: Create a resource description: | Creates a resource for a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Resource" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Resource" description: Created Resource operationId: CreateResource tags: - Resources /v1/hq/resources/{resource_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:read summary: Retrieve a resource description: Retrieves information about an existing resource. parameters: - name: resource_id description: Resource ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Resource" description: Resource "404": $ref: "#/components/responses/NotFoundError" operationId: GetResource tags: - Resources post: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:write summary: Update a resource description: Updates a resource at a company. parameters: - name: resource_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Refundesource ID requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Resource" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Resource" description: Updated Resource operationId: UpdateResource tags: - Resources delete: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:write summary: Delete resource description: Deletes a resource at a company. parameters: - name: resource_id description: Resource ID in: path required: true schema: type: string responses: "200": description: Resource deleted operationId: DeleteResource tags: - Resources /v1/hq/stream/companies/{company_id}/resource: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:read summary: Stream resource description: Streams resource for a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Resource stream operationId: StreamResources tags: - Resources /v1/hq/companies/{company_id}/resource_groups: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:read summary: List all resource groups description: Lists all resource groups of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" responses: "200": content: application/json: schema: $ref: "#/components/schemas/ResourceGroupsResponse" description: Resource Groups "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/Error" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: ListResourceGroups tags: - Resource Groups /v1/hq/resource_groups: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:write summary: Create a resource group description: | Creates a resource group for a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ResourceGroupCreate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/ResourceGroupResponse" description: Created Resource Group "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/Error" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: CreateResourceGroup tags: - Resource Groups /v1/hq/resource_groups/{resource_group_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:read summary: Retrieve a resource group description: Retrieves information about a resource group. parameters: - name: resource_group_id description: Resource Group ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/ResourceGroupResponse" description: Resource Group "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/Error" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: GetResourceGroup tags: - Resource Groups post: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:write summary: Update a resource group description: Updates a resource group at a company. parameters: - name: resource_group_id description: Resource Group ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/ResourceGroupUpdate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/ResourceGroupResponse" description: Updated Resource Group "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/Error" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: UpdateResourceGroup tags: - Resource Groups delete: security: - BearerTokenAuth: [] - oAuth 2.0: - resources:write summary: Delete a resource group description: Delete resource group for a company parameters: - name: resource_group_id description: Resource Group ID in: path required: true schema: type: string responses: "200": description: Resource group was deleted "400": description: Bad Request content: application/json: schema: $ref: "#/components/schemas/Error" "401": $ref: "#/components/responses/UnauthorizedError" "403": $ref: "#/components/responses/PermissionDenied" "404": $ref: "#/components/responses/NotFoundError" operationId: DeleteResourceGroup tags: - Resource Groups /v1/hq/companies/{company_id}/employees: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - $ref: "#/components/parameters/search" get: security: - BearerTokenAuth: [] - oAuth 2.0: - employees:read summary: List all employees description: Lists all employees of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Employees" description: Employees operationId: ListEmployees tags: - Employees /v1/hq/employees: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - employees:write summary: Create an employee description: | Creates an employee for a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Employee" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Employee" description: Created Employee operationId: CreateEmployee tags: - Employees /v1/hq/companies/{company_id}/employees/{employee_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - employees:read summary: Retrieve an employee description: Retrieves information about an existing employee. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: employee_id description: Employee ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/Employee" description: Employee "404": $ref: "#/components/responses/NotFoundError" operationId: GetEmployee tags: - Employees post: security: - BearerTokenAuth: [] - oAuth 2.0: - employees:write summary: Update an employee description: | Updates an employee at a company. Partially implemented, only supports updating: - event_type_preferences - pre_payments_enabled - own_settlements_preferred - own_settlements_allowed - commissions parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: employee_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Employee ID - in: query name: unset schema: $ref: "#/components/schemas/EmployeeFields" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Employee" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Employee" description: Updated Employee operationId: UpdateEmployee tags: - Employees delete: security: - BearerTokenAuth: [] - oAuth 2.0: - employees:write summary: Delete employee description: Deletes an employee at a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: employee_id description: Employee ID in: path required: true schema: type: string responses: "200": description: Employee deleted operationId: DeleteEmployee tags: - Employees /v1/hq/stream/companies/{company_id}/employees: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - employees:read summary: Stream employees description: Streams employees for a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: Employees stream operationId: StreamEmployees tags: - Employees /v1/hq/testing/login: get: summary: Get login description: | Returns the test login screen. Test endpoint. responses: "200": content: text/html: schema: type: string description: OAuthLogin operationId: GetOAuthLogin tags: - Hidden post: summary: Post OAuth login description: | Returns token. Test endpoint. requestBody: required: true content: application/json: schema: type: object properties: email: type: string example: "" password: type: string example: "" responses: "200": content: application/json: schema: type: object properties: token: type: string example: "" description: OAuthLogin operationId: PostOAuthLogin tags: - Hidden /v1/hq/testing/consent: get: summary: Get OAuth consent description: | Returns the test consent screen. GetOAuthLogin parameters: - name: client_id in: query required: true schema: type: string example: "" - name: redirect_uri in: query required: true schema: type: string example: "" - name: state in: query required: false schema: type: string example: "" - name: response_type in: query required: true schema: type: string example: "" - name: scope in: query required: true schema: $ref: "#/components/schemas/OAuthScopes" responses: "200": content: text/html: schema: type: string description: OAuthConsent operationId: GetOAuthConsent tags: - Hidden /v1/hq/oauth/publickey: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: summary: Get OAuth public key description: | Returns the Noona OAuth public key. The public can be used to verify the signatures of identity tokens issued by Noona. responses: "200": content: application/json: schema: $ref: "#/components/schemas/OAuthPublicKey" description: OAuth Public Key operationId: GetOAuthPublicKey tags: - OAuth /v1/hq/oauth/token: post: summary: Get OAuth token description: | Returns an OAuth token. This is the final step of the flow. Needs a valid authorization code that was generated from the consent screen. Also needs the client_id and client_secret of the application. parameters: - name: client_id in: query required: true schema: type: string example: "" - name: client_secret in: query required: true schema: type: string example: "" requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: "#/components/schemas/OAuthTokenRequest" application/json: schema: $ref: "#/components/schemas/OAuthTokenRequest" responses: "200": content: application/json: schema: $ref: "#/components/schemas/OAuthToken" description: OAuthToken operationId: GetOAuthToken tags: - OAuth /v1/hq/oauth/auth: post: security: - BearerTokenAuth: [] summary: Create OAuth consent description: | Approves the OAuth consent for the user against a specific application. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/OAuthConsent" responses: "200": content: application/json: schema: $ref: "#/components/schemas/OAuthConsentResponse" description: OAuthConsentResponse operationId: CreateOAuthConsent tags: - OAuth get: summary: Start OAuth flow description: | Redirects the user to the consent screen with the appropriate parameters. parameters: - name: client_id in: query required: true schema: type: string example: "dwawd8awudawd" - name: redirect_uri in: query required: true schema: type: string example: "https://example.com" - name: response_type in: query required: true schema: type: string example: "code" - name: scope in: query required: true schema: $ref: "#/components/schemas/OAuthScopes" - name: state in: query required: false schema: type: string example: "dwawd8awudawd" responses: "302": description: OAuth Redirect operationId: StartOAuthFlow tags: - OAuth /v1/hq/oauth/scopes: get: summary: List OAuth scopes description: | Lists all available OAuth scopes. responses: "200": content: application/json: schema: $ref: "#/components/schemas/OAuthScopes" description: OAuthScopes operationId: ListOAuthScopes tags: - OAuth /v1/hq/oauth/applications: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: List applications description: | Lists all oauth applications that the user has access to. responses: "200": content: application/json: schema: $ref: "#/components/schemas/Applications" description: Applications operationId: ListOAuthApplications tags: - Applications post: security: - BearerTokenAuth: [] summary: Create application description: | Creates a new oauth application. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Application" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Application" description: Application operationId: CreateOAuthApplication tags: - Applications /v1/hq/oauth/applications/{application_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: Get application description: | Returns the oauth application with the specified id. parameters: - name: application_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Application" description: Application operationId: GetOAuthApplication tags: - Applications post: security: - BearerTokenAuth: [] summary: Update application description: | Updates the oauth application with the specified id. parameters: - name: application_id in: path required: true schema: type: string example: "dwawd8awudawd" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/Application" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Application" description: Application operationId: UpdateOAuthApplication tags: - Applications delete: security: - BearerTokenAuth: [] summary: Delete application description: | Deletes the oauth application with the specified id. parameters: - name: application_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Application" description: Application operationId: DeleteOAuthApplication tags: - Applications /v1/hq/companies/{company_id}/apps: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: List apps description: | Lists all apps for the specified company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - in: query name: filter content: application/json: schema: $ref: "#/components/schemas/AppFilter" responses: "200": content: application/json: schema: $ref: "#/components/schemas/Apps" description: Apps operationId: ListApps tags: - Apps /v1/hq/companies/{company_id}/apps/{app_id}: get: security: - BearerTokenAuth: [] summary: Get app description: | Gets an app in the context of the specified company. parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: app_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/App" description: App operationId: GetApp tags: - Apps /v1/hq/companies/{company_id}/apps/{app_id}/disable: post: security: - BearerTokenAuth: [] summary: Disable app description: | Disables the app with the specified id. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: app_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": description: App Disabled operationId: DisableApp tags: - Apps /v1/hq/companies/{company_id}/sms_messages: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - sms_messages:read summary: List SMS messages description: | Lists all SMS messages for the specified company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/pagination" - name: filter in: query content: application/json: schema: $ref: "#/components/schemas/SMSFilter" responses: "200": content: application/json: schema: $ref: "#/components/schemas/SMSMessages" description: SMS Messages operationId: ListSMSMessages tags: - Messaging /v1/hq/companies/{company_id}/vats: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] summary: List VATs description: | Lists all VATs applicable for the specified company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" responses: "200": content: application/json: schema: $ref: "#/components/schemas/VATs" description: VATs operationId: ListVATs tags: - Company /v1/hq/user/google_calendar_connection: get: security: - BearerTokenAuth: [] summary: Get Google Calendar connection description: | Returns the Google Calendar connection for the user. responses: "200": content: application/json: schema: $ref: "#/components/schemas/GoogleCalendarConnection" description: GoogleCalendarConnection operationId: GetGoogleCalendarConnection tags: - Google Calendar post: security: - BearerTokenAuth: [] summary: Create Google Calendar connection description: | Creates a new Google Calendar connection for the user. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/GoogleCalendarConnection" responses: "200": content: application/json: schema: $ref: "#/components/schemas/GoogleCalendarConnection" description: GoogleCalendarConnection operationId: CreateGoogleCalendarConnection tags: - Google Calendar delete: security: - BearerTokenAuth: [] summary: Delete Google Calendar connection description: | Deletes the Google Calendar connection for the user. responses: "200": description: GoogleCalendarConnectionDeleted operationId: DeleteGoogleCalendarConnection tags: - Google Calendar /v1/hq/companies/{company_id}/event_statuses: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - event_statuses:read summary: List all event statuses description: Lists all event statuses of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventStatuses" description: Statuses operationId: ListEventStatuses tags: - Event Statuses /v1/hq/event_statuses: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - event_statuses:write summary: Create an event status description: | Creates an event status for a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/EventStatus" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventStatus" description: Created Event Status operationId: CreateEventStatus tags: - Event Statuses /v1/hq/event_statuses/{event_status_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - event_statuses:read summary: Retrieve an event status description: Retrieves information about an existing event status. parameters: - name: event_status_id description: Event Status ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventStatus" description: Event Status "404": $ref: "#/components/responses/NotFoundError" operationId: GetEventStatus tags: - Event Statuses post: security: - BearerTokenAuth: [] - oAuth 2.0: - event_statuses:write summary: Update an event status description: Updates an event status at a company. parameters: - name: event_status_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Event Status ID requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/EventStatus" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventStatus" description: Updated Event Status operationId: UpdateEventStatus tags: - Event Statuses delete: security: - BearerTokenAuth: [] - oAuth 2.0: - event_statuses:write summary: Delete event status description: Deletes an event status at company. parameters: - name: event_status_id description: Event Status ID in: path required: true schema: type: string responses: "200": description: Event Status deleted operationId: DeleteEventStatus tags: - Event Statuses /v1/hq/companies/{company_id}/waitlist_entries: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - waitlists:read summary: List all waitlist entries description: Lists all waitlist entries of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: filter in: query content: application/json: schema: $ref: "#/components/schemas/WaitlistFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/WaitlistEntriesResponse" description: Waitlist Entries operationId: ListWaitlistEntries tags: - Waitlists /v1/hq/waitlist_entries: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - waitlists:write summary: Create a waitlist entry description: | Creates a waitlist entry for a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/WaitlistEntryCreate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/WaitlistEntryResponse" description: Created Waitlist Entry operationId: CreateWaitlistEntry tags: - Waitlists /v1/hq/waitlist_entries/{waitlist_entry_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - waitlists:read summary: Retrieve a waitlist entry description: Retrieves information about a waitlist entry. parameters: - name: waitlist_entry_id description: Waitlist Entry ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/WaitlistEntryResponse" description: Waitlist Entry "404": $ref: "#/components/responses/NotFoundError" operationId: GetWaitlistEntry tags: - Waitlists post: security: - BearerTokenAuth: [] - oAuth 2.0: - waitlists:write summary: Update a waitlist entry description: Updates a waitlist entry at a company. parameters: - name: waitlist_entry_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Waitlist Entry ID - in: query name: unset schema: $ref: "#/components/schemas/WaitlistEntryFields" requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/WaitlistEntryUpdate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/WaitlistEntryResponse" description: Updated Waitlist Entry operationId: UpdateWaitlistEntry tags: - Waitlists delete: security: - BearerTokenAuth: [] - oAuth 2.0: - waitlists:write summary: Delete a waitlist entry description: Deletes a waitlist entry at company. parameters: - name: waitlist_entry_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Waitlist Entry ID responses: "200": description: Waitlist Entry deleted operationId: DeleteWaitlistEntry tags: - Waitlists /v1/hq/companies/{company_id}/memos: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - memos:read summary: List all memos description: Lists all memos of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: filter in: query content: application/json: schema: $ref: "#/components/schemas/MemoFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/MemosResponse" description: Memos operationId: ListMemos tags: - Memos /v1/hq/memos: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - memos:write summary: Create a memo description: | Creates a memo for a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/MemoCreate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/MemoResponse" description: Created Memo operationId: CreateMemo tags: - Memos /v1/hq/memos/{memo_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - memos:read summary: Retrieve a memo description: Retrieves information about a memo. parameters: - name: memo_id description: Memo ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/MemoResponse" description: Memo "404": $ref: "#/components/responses/NotFoundError" operationId: GetMemo tags: - Memos post: security: - BearerTokenAuth: [] - oAuth 2.0: - memos:write summary: Update a memo description: Updates a memo for a company. parameters: - name: memo_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Memo ID requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/MemoUpdate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/MemoResponse" description: Updated Memo operationId: UpdateMemo tags: - Memos delete: security: - BearerTokenAuth: [] - oAuth 2.0: - memos:write summary: Delete a memo description: Deletes a memo of a company. parameters: - name: memo_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Memo ID responses: "200": description: Memo deleted operationId: DeleteMemo tags: - Memos /v1/hq/companies/{company_id}/event_type_category_groups: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - event_types:read summary: List all event type category groups description: Lists all even type category groups parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventTypeCategoryGroups" description: Event Type Category Groups operationId: ListEventTypeCategoryGroups tags: - Event Type Category Groups /v1/hq/companies/{company_id}/event_type_categories: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - event_types:read summary: List all event type categories description: Lists all even type categories parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/EventTypeCategories" description: Event Type Categories operationId: ListEventTypeCategories tags: - Event Type Categories /v1/hq/companies/{company_id}/rule_sets: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - rule_sets:read summary: List all rule sets description: Lists all rule sets of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: filter in: query content: application/json: schema: $ref: "#/components/schemas/RuleSetFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/RuleSetsResponse" description: Rule Sets operationId: ListRuleSets tags: - Rule Sets /v1/hq/rule_sets: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - rule_sets:write summary: Create a rule set description: | Creates a rule set for a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/RuleSetCreate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/RuleSetResponse" description: Created Rule Set operationId: CreateRuleSet tags: - Rule Sets /v1/hq/rule_sets/{rule_set_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - rule_sets:read summary: Retrieve a rule set description: Retrieves information about a rule set. parameters: - name: rule_set_id description: Rule Set ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/RuleSetResponse" description: Rule Set "404": $ref: "#/components/responses/NotFoundError" operationId: GetRuleSet tags: - Rule Sets post: security: - BearerTokenAuth: [] - oAuth 2.0: - rule_sets:write summary: Update a rule set description: Updates a rule set at a company. parameters: - name: rule_set_id description: Rule Set ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/RuleSetUpdate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/RuleSetResponse" description: Updated Rule Set operationId: UpdateRuleSet tags: - Rule Sets delete: security: - BearerTokenAuth: [] - oAuth 2.0: - rule_sets:write summary: Delete a rule set description: Deletes a rule set at company. parameters: - name: rule_set_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Rule Set ID responses: "200": description: Rule Set deleted operationId: DeleteRuleSet tags: - Rule Sets /v1/hq/companies/{company_id}/rule_set_templates: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - rule_set_templates:read summary: List all rule set templates description: Lists all rule set templates of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/RuleSetTemplatesResponse" description: Rule Set Templates operationId: ListRuleSetTemplates tags: - Rule Set Templates /v1/hq/rule_set_templates: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" post: security: - BearerTokenAuth: [] - oAuth 2.0: - rule_set_templates:write summary: Create a rule set template description: | Creates a rule set template for a company. requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/RuleSetTemplateCreate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/RuleSetTemplateResponse" description: Created Rule Set Template operationId: CreateRuleSetTemplate tags: - Rule Set Templates /v1/hq/rule_set_templates/{rule_set_template_id}: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - rule_set_templates:read summary: Retrieve a rule set template description: Retrieves information about a rule set template. parameters: - name: rule_set_template_id description: Rule Set Template ID in: path required: true schema: type: string responses: "200": content: application/json: schema: $ref: "#/components/schemas/RuleSetTemplateResponse" description: Rule Set Template "404": $ref: "#/components/responses/NotFoundError" operationId: GetRuleSetTemplate tags: - Rule Set Templates post: security: - BearerTokenAuth: [] - oAuth 2.0: - rule_set_templates:write summary: Update a rule set template description: Updates a rule set template at a company. parameters: - name: rule_set_template_id description: Rule Set Template ID in: path required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/RuleSetTemplateUpdate" responses: "200": content: application/json: schema: $ref: "#/components/schemas/RuleSetTemplateResponse" description: Updated Rule Set Template operationId: UpdateRuleSetTemplate tags: - Rule Set Templates delete: security: - BearerTokenAuth: [] - oAuth 2.0: - rule_set_templates:write summary: Delete a rule set template description: Deletes a rule set template at company. parameters: - name: rule_set_template_id in: path required: true schema: type: string example: "dwawd8awudawd" description: Rule Set Template ID responses: "200": description: Rule Set Template deleted operationId: DeleteRuleSetTemplate tags: - Rule Set Templates /v1/hq/companies/{company_id}/opening_hours: parameters: - $ref: "#/components/parameters/select" - $ref: "#/components/parameters/expand" get: security: - BearerTokenAuth: [] - oAuth 2.0: - companies:read summary: List opening hours description: Lists opening hours of a company. parameters: - name: company_id in: path required: true schema: type: string example: "dwawd8awudawd" - name: filter in: query content: application/json: schema: $ref: "#/components/schemas/OpeningHourFilter" - $ref: "#/components/parameters/sort" - $ref: "#/components/parameters/pagination" responses: "200": content: application/json: schema: $ref: "#/components/schemas/OpeningHoursResponse" description: Opening Hours operationId: ListOpeningHours tags: - Companies components: securitySchemes: Email/Password: type: http scheme: basic description: | The basic authentication is only used to generate tokens for further API interaction. Email and password separated with : and base64 encoded, attached to the **Authorization** header with the basic keyword. email:password -> dXNlcm5hbWU6cGFzc3dvcmQ= "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" BearerTokenAuth: type: http scheme: bearer description: | The Noona HQ API uses Bearer token for authentication. Endpoints that return generic information that does not contain sensitive data do not require authentication. Endpoints that require authentication are specifically marked in the documentation. **Authorization: Bearer your-token** oAuth 2.0: type: oauth2 description: | The Noona HQ API also supports OAuth2 authentication for more granular and secure access to resources on behalf of users. OAuth2 is an authorization framework that allows third-party applications to obtain limited access to user accounts without exposing user credentials. It involves a series of interactions between the application, the user, and the Noona HQ API. The process typically involves the following steps: 1. **Authorization Request**: The third-party application redirects the user to the Noona HQ API's authorization endpoint, requesting access to the user's resources with a specified set of permissions (scopes). 2. **User Consent**: The user is prompted to grant or deny the requested permissions to the third-party application. 3. **Authorization Code**: If the user grants consent, the Noona HQ API returns an authorization code to the third-party application. 4. **Access Token**: The third-party application exchanges the authorization code for an access token by making a request to the Noona HQ API's token endpoint. 5. **Authenticated API Calls**: The third-party application can now use the access token to make authenticated API calls on behalf of the user. Endpoints that support OAuth2 authentication are specifically marked in the documentation. To implement OAuth2 in your application, follow the authorization code flow and use the provided OAuth2 endpoints for authorization and token exchange. Make sure to carefully manage your client secret and access tokens to ensure the security of user data. For a more detailed guide on how to implement OAuth2 in your application, see the [OAuth2 documentation](https://api.noona.is/docs/oauth2). flows: authorizationCode: authorizationUrl: https://api.noona.is/v1/oauth/auth tokenUrl: https://api.noona.is/v1/oauth/token scopes: read: Read access to resources write: Write/Delete access to resources responses: UnauthorizedError: description: API key is missing or invalid. See Authentication documentation for more information. UnauthorizedBasicError: description: Basic authentication failed. See Authentication documentation for more information. BadRequestError: description: Provided request body is malformed PermissionDenied: description: Operation not permitted AlreadyExists: description: Item already exists NotFoundError: description: Requested resource not found parameters: select: name: select in: query description: "[Field Selector](https://api.noona.is/docs/working-with-the-apis/select)" required: false schema: type: array items: type: string expand: name: expand in: query description: "[Expandable attributes](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" required: false schema: type: array items: type: string sort: name: sort in: query description: "[Sorting](https://api.noona.is/docs/working-with-the-apis/sorting)" required: false content: application/json: schema: $ref: "#/components/schemas/Sort" pagination: name: pagination in: query description: "[Pagination](https://api.noona.is/docs/working-with-the-apis/pagination)" required: false content: application/json: schema: $ref: "#/components/schemas/Pagination" search: name: search in: query description: "[Search](https://api.noona.is/docs/working-with-the-apis/search)" required: false schema: type: string schemas: AllPricing: type: array items: $ref: "#/components/schemas/Pricing" Pricing: type: object properties: country_code: example: IS type: string currency: example: ISK type: string prices: type: array items: $ref: "#/components/schemas/Price" Price: type: object properties: title: example: Base fee type: string trial_units: example: 14 type: integer format: int32 amount: example: 2990 format: double type: number PricingCalculation: type: object properties: currency: type: string example: ISK amount: type: number format: double example: 2990 description: Price per month sms: type: number format: double example: 0.01 description: Price per sms Tokens: type: array items: $ref: "#/components/schemas/Token" Token: type: object properties: id: type: string example: 7awdXawZoolkjad37a readOnly: true name: type: string example: My token token: type: string example: c33d249421c46ae3f0962d5449cfabd8d43c7aa634789afb4e65fa9d94f94138 readOnly: true created_at: type: string format: date-time readOnly: true CheckinToken: type: object properties: token: type: string example: c33d249421c46ae3f0962d5449cfabd8d43c7aa634789afb4e65fa9d94f94138 readOnly: true Employees: type: array items: $ref: "#/components/schemas/Employee" ID: type: string Employee: type: object properties: id: example: 7awdXawZoolkjad37a type: string readOnly: true company_id: example: 98aDWa8da9wda9dwa8 type: string deprecated: true description: Use `company` instead company: $ref: "#/components/schemas/ExpandableCompany" name: example: Noony Adams type: string description: example: Noony is a great employee type: string image: $ref: "#/components/schemas/Image" email: type: string example: example@example.com email_verified: type: boolean example: true readOnly: true order: type: integer format: int32 example: 1 description: The order of the employee in the list of employees on the marketplace. marketplace: $ref: "#/components/schemas/EmployeeMarketplaceSettings" notifications: $ref: "#/components/schemas/EmployeeNotificationSettings" event_type_preferences: $ref: "#/components/schemas/EventTypePreferences" role: $ref: "#/components/schemas/ExpandableRole" pending_owner_approval: type: boolean example: false description: Whether the employee is pending owner approval readOnly: true available_for_bookings: type: boolean example: true description: Whether the employee is visible on the calendar settlement_account: $ref: "#/components/schemas/ExpandableSettlementAccount" connected_to_teya: type: boolean example: true description: Whether the employee is connected to teya readOnly: true adyen: $ref: "#/components/schemas/AdyenConnection" commissions: $ref: "#/components/schemas/EmployeeCommissions" disabled_at: type: string format: date-time created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true EmployeeCommissions: type: object properties: pos: $ref: "#/components/schemas/EmployeeCommissionsPOS" calendar: $ref: "#/components/schemas/EmployeeCommissionsCalendar" EmployeeCommissionsPOS: type: object properties: products: $ref: "#/components/schemas/CommissionConfig" services: $ref: "#/components/schemas/CommissionConfig" vouchers: $ref: "#/components/schemas/CommissionConfig" EmployeeCommissionsCalendar: type: object properties: bookings: $ref: "#/components/schemas/CommissionConfig" CommissionConfig: anyOf: - $ref: "#/components/schemas/CommissionRates" CommissionRates: type: object required: - type - default_rate properties: type: type: string format: enum enum: [rates] default_rate: description: Default commission rate format: double type: number example: 10 maximum: 100 minimum: 0 EmployeeMarketplaceSettings: type: object properties: enabled: type: boolean example: true description: Whether the employee is enabled on the marketplace booking_interval: $ref: "#/components/schemas/BookingInterval" prioritized: type: boolean example: true description: Whether the employee should be prioritized in random selection on the marketplace allow_booking_without_confirmation: type: boolean example: true description: Whether the employee should be able to receive bookings without confirmation exclude_from_randomization_pool: type: boolean example: true description: Whether the employee should be excluded from randomization pool on the marketplace pre_payments_enabled: type: boolean example: true description: | Whether the employee can receive pre-payments Can only be edited by the owner of the company. own_settlements_allowed: type: boolean example: true description: | Whether the employee is allowed to receive their own settlements. Can only be edited by the owner of the company. own_settlements_preferred: type: boolean example: true description: | Whether the employee prefers to receive their own settlements. Can only be edited by the employee. own_settlements: type: boolean example: true readOnly: true description: | Whether the employee is receiving their own settlements. Calculated from own_settlements_allowed and own_settlements_preferred. EmployeeNotificationSettings: type: object properties: booking_email: type: boolean example: true description: Whether the employee should receive emails when a booking is made EmployeeFields: type: array items: $ref: "#/components/schemas/EmployeeField" EmployeeField: type: string format: enum enum: [disabled_at] ExpandableRole: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Role" Role: type: object properties: id: example: 7awdXawZoolkjad37a type: string readOnly: true title: example: Employee type: string type: example: root type: string format: enum enum: [root, default, other] ExpandableEmployees: type: array items: $ref: "#/components/schemas/ExpandableEmployee" ExpandableEmployee: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Employee" ExpandableSpace: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Space" # Products Products: type: array items: $ref: "#/components/schemas/Product" OrderedProduct: allOf: - $ref: "#/components/schemas/Product" - properties: order: type: integer format: int32 example: 1 description: Used to control how a product group is ordered with respect to siblings. ProductFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: barcode: type: string Product: type: object properties: id: example: 7awdXwZoedakjad37a type: string readOnly: true company: example: 7awdXwZoedakjad37a type: string title: example: Black Shampoo type: string description: example: A shampoo for black hair type: string amount: type: number format: double example: 2990 default: 0 sku: type: string example: ANE123 stock_level: type: integer format: int32 example: 10 barcode: type: string example: 8004608258995 product_groups: type: array description: List of product group ids product belongs to. items: type: string image: $ref: "#/components/schemas/ProductImage" vat_id: type: string example: FzGMKqFnCX79N3zWk description: Id of VAT to use for product tax_exemption_reason: type: string example: M01 description: VAT exemption reason when having a VAT amount of 0% import_reference_id: type: string example: FzGMKqFnCX79N3zWk description: Set during import of products, usually an identifier from an external system. created_at: example: 1631558908 type: integer format: int32 readOnly: true updated_at: example: 1631558908 type: integer format: int32 readOnly: true ExpandableProduct: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Product" ProductImage: type: object properties: thumb: type: string example: description: Link to product image # ProductGroups ProductGroups: type: array items: $ref: "#/components/schemas/ProductGroup" ProductGroup: type: object properties: id: example: 7awdXwZoedakjad37a type: string readOnly: true company: example: 7awdXwZoedakjad37a type: string title: type: string example: Shampoo description: type: string example: All shampoo color: type: string example: "#FCB834" parent_group_id: type: string example: 7awdUaw31aiwdjIDw order: type: integer format: int32 example: 1 description: Used to control how a product group is ordered with respect to siblings. is_default_group: type: boolean example: false description: If true the product group is a special, uneditable, group that contains all products that have not been added to user created product groups. group_products: type: array items: $ref: "#/components/schemas/GroupProduct" created_at: example: 1631558908 type: integer format: int32 readOnly: true updated_at: example: 1631558908 type: integer format: int32 readOnly: true ProductGroupsExpanded: type: array items: $ref: "#/components/schemas/ProductGroupExpanded" ProductGroupExpanded: allOf: - $ref: "#/components/schemas/ProductGroup" - type: object properties: group_products: type: array items: $ref: "#/components/schemas/OrderedProduct" group_product_groups: type: array items: $ref: "#/components/schemas/ProductGroupExpanded" ProductGroupsOrder: type: array example: [ { "id": 7uk31KiAE1wdjw731, "order": 1 }, { "id": "8dj29KiAE1wdjw731", "order": 3 }, { "id": "a1j29KiAE1wdjw731", "order": 2 }, ] items: $ref: "#/components/schemas/ProductGroupOrder" ProductGroupOrder: type: object required: - id - order properties: id: type: string example: 7dj29KiAE1wdjw731 description: ID of product group. order: type: integer format: int32 example: 1 description: Order of product group. GroupProduct: type: object properties: id: type: string example: 7dj29KiAE1wdjw731 order: type: integer format: int32 example: 1 description: Used to control order in list hierarchy. Sales: type: array items: $ref: "#/components/schemas/Sale" Sale: type: object properties: id: type: string example: 8wa9uiah28dawd123 readOnly: true transactions: type: array items: $ref: "#/components/schemas/ExpandableTransaction" events: type: array items: $ref: "#/components/schemas/ExpandableEvent" company: $ref: "#/components/schemas/ExpandableCompany" customer: $ref: "#/components/schemas/ExpandableCustomer" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true ExpandableSale: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Sale" Transactions: type: array items: $ref: "#/components/schemas/Transaction" Transaction: type: object properties: id: type: string example: 8wa9uiah28dawd123 readOnly: true company: $ref: "#/components/schemas/ExpandableCompany" sale: $ref: "#/components/schemas/ExpandableSale" subtransactions: type: array items: $ref: "#/components/schemas/ExpandableSubtransaction" employees: type: array items: $ref: "#/components/schemas/ExpandableEmployee" line_items: $ref: "#/components/schemas/ExpandableLineItems" refunds: type: array items: type: string example: 8wa9uiah28dawd123 description: References refunds for this transaction. refund_origin: type: string example: 8wa9uiah28dawd123 description: References the original transaction that was refunded. invoice_number: type: integer format: int64 example: 9001 readOnly: true note: type: string issuer: $ref: "#/components/schemas/Issuer" fiscalization: type: string currency: type: string example: ISK total_amount: example: 1990 format: double type: number readOnly: true due_amount: example: 990 format: double type: number readOnly: true paid_on_marketplace_amount: example: 1000 format: double type: number readOnly: true description: | Amount paid on marketplace during booking. Only applicable for bookings made on the marketplace. Example: Payment is $10 via voucher and remaining $5 via card. The value of this field would be $15. origin: type: string example: "marketplace" enum: [marketplace, pos] description: | The origin of the transaction. * marketplace: The transaction was created via the marketplace. * pos: The transaction was created via the POS. vat_amount: example: 478 format: double type: number description: The total VAT amount readOnly: true tax_exemption_reason: example: M01 type: string description: The VAT exemption reason when the VAT amount is equal to 0 readOnly: true type: type: string example: "invoice" enum: [invoice, return, refund, refunded] status: type: string example: "draft" enum: [draft, completed] drafted_at: type: string format: date-time readOnly: true completed_at: type: string format: date-time created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true voided_at: type: string format: date-time description: Only supported to unset this field. That is done by providing the value as "zero date" (0001-01-01T00:00:00Z) ExpandableTransaction: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Transaction" TransactionsFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: ids: type: array items: type: string example: 7awdXwZoedakjad37a description: "Filter by specific transaction IDs" sale: type: string example: 7awdXwZoedakjad37a description: "Filter by sale ID" customers: type: array description: "Filter by customer IDs" items: type: string example: 7awdXwZoedakjad37a issuers: type: array items: type: string example: 7awdXwZoedakjad37a description: "Filter by issuers" employees: type: array items: type: string example: 7awdXwZoedakjad37a description: "Filter by employees" created_at: $ref: "#/components/schemas/DateFilter" subtransaction_created_at: $ref: "#/components/schemas/DateFilter" completed_at: $ref: "#/components/schemas/DateFilter" TransactionCreationBehavior: type: object description: "[Behavior](https://api.noona.is/docs/working-with-the-apis/behavior)" properties: refund: type: string enum: [full_refund, partial_refund] default: full_refund description: | Controls the behviour of creating refund transactions. Only applicable when refund_origin is included in the request body. The default value is *full_refund* which means that the entire transaction is copied over and completed. If *partial_refund* is used, only the line items are copied over to the new transaction and the new transaction is left in draft state. IssuersFilter: description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" type: object properties: terminal_attachable: type: boolean example: false default: false description: Only return Issuers that can be attached to a terminal, from the calling user's perspective. Issuers: type: array items: $ref: "#/components/schemas/Issuer" Issuer: type: object properties: id: type: string example: 8wa9uiah28dawd123 description: ID of company or employee type: type: string example: "company" enum: [company, employee] name: type: string example: Noona cuts bin: type: string description: Business Identification Number legal_address: type: string example: My Street 1, 101 Reykjavik extra_invoice_info: type: string example: Some extra info to include on invoices. description: Extra information to include on invoices. vat_id: type: string description: VAT Identification Number other: type: string ExpandableIssuer: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" readOnly: true oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Issuer" LineItems: type: array items: $ref: "#/components/schemas/LineItem" LineItem: type: object properties: id: type: string example: 8wa9uiah28dawd123 readOnly: true transaction: type: string example: 8wa9uiah28dawd123 writeOnly: true company: $ref: "#/components/schemas/ExpandableCompany" title: type: string example: Awesome shampoo quantity: type: integer format: int32 example: 1 unit_price: $ref: "#/components/schemas/UnitPrice" discount: description: Discount percentage format: double type: number example: 20 maximum: 100 minimum: 0 vat_amount: example: 0.24 format: double type: number description: The VAT ratio tax_exemption_reason: example: M01 type: string description: The VAT exemption reason when the VAT amount is equal to 0 is_returning: type: boolean example: false description: True if the item was returned. Quantity and all amounts are positive for returning items. employee: $ref: "#/components/schemas/ExpandableEmployee" product: $ref: "#/components/schemas/ExpandableProduct" event_type: $ref: "#/components/schemas/ExpandableEventType" voucher_template: type: string writeOnly: true x-go-type: VoucherTemplateID voucher: $ref: "#/components/schemas/LineItemVoucher" event: type: string variation_id: type: string booked_by: type: string example: 8wa9uiah28dawd123 description: ID of the employee that booked the service on the appointment linked to the transaction. This is used to calculate commissions for the employee that booked the service. ExpandableLineItems: type: array items: $ref: "#/components/schemas/ExpandableLineItem" ExpandableLineItem: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/LineItem" LineItemVoucher: type: object description: | The voucher object is only returned when the line item is a voucher template. The voucher object is accepted and returned when the line item is an amount voucher. properties: id: example: 7awdXwZoedakjad37a type: string readOnly: true voucher: $ref: "#/components/schemas/ExpandableVoucher" code: type: string example: "A328DB" description: 6 uppercase letters / numbers readOnly: true data: $ref: "#/components/schemas/LineItemVoucherData" LineItemVoucherData: oneOf: - $ref: "#/components/schemas/LineItemVoucherDataService" - $ref: "#/components/schemas/LineItemVoucherDataAmount" LineItemVoucherDataService: type: object required: - type properties: type: type: string format: enum enum: ["service"] template_id: type: string sessions_total: type: integer format: int32 example: 6 readOnly: true amount: type: number format: double example: 2500 value: type: number format: double example: 5000 event_type_id: type: string example: d0a9w8da09w8dindwa readOnly: true LineItemVoucherDataAmount: type: object required: - type properties: type: type: string format: enum enum: ["amount"] amount: type: number format: double example: 2500 UnitPrice: type: object properties: id: type: string example: 8wa9uiah28dawd123 readOnly: true currency: type: string example: ISK amount: example: 1990 format: double type: number original_amount: example: 1990 format: double type: number discount: example: 20 format: double type: number description: Discount percentage ExpandableSubtransaction: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Subtransaction" Subtransactions: type: array items: $ref: "#/components/schemas/Subtransaction" Subtransaction: type: object properties: id: type: string example: 8wa9uiah28dawd123 readOnly: true amount: example: 2990 format: double type: number currency: type: string example: ISK state: type: string format: enum enum: [unprocessed, pending, successful, failed] example: pending readOnly: true failure_state: type: string format: enum enum: [declined, cancelled, busy, unknown] example: declined readOnly: true origin: type: string format: enum enum: [pos, marketplace, checkin] example: "checkin" readOnly: true payment_method_id: type: string example: 31aadiah28usli390 data: $ref: "#/components/schemas/SubtransactionData" transaction_id: type: string example: 8wa9uiah28dawd123 writeOnly: true note: type: string created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true SubtransactionData: oneOf: - $ref: "#/components/schemas/SubtransactionDataTerminal" - $ref: "#/components/schemas/SubtransactionDataVoucher" - $ref: "#/components/schemas/SubtransactionDataPrePayment" - $ref: "#/components/schemas/SubtransactionDataPaylink" SubtransactionDataTerminal: type: object writeOnly: true required: - type - terminal_id properties: type: type: string format: enum enum: ["terminal"] terminal_id: type: string example: 9d8aj2oi2audawo SubtransactionDataVoucher: type: object writeOnly: true required: - type - voucher_id properties: type: type: string format: enum enum: ["voucher"] voucher_id: type: string example: 9d8aj2oi2audawo SubtransactionDataPrePayment: type: object writeOnly: true required: - type - payment_id properties: type: type: string format: enum enum: ["pre_payment"] payment_id: type: string example: 9d8aj2oi2audawo SubtransactionDataPaylink: type: object writeOnly: true required: - type - phone_country_code - phone_number properties: type: type: string format: enum enum: ["paylink"] paylink_payment_id: type: string readOnly: true paylink_payment_group_id: type: string readOnly: true phone_country_code: type: string example: 354 phone_number: type: string example: 5812345 channel: readOnly: true type: string format: enum enum: ["app", "sms"] SubtransactionCreationBehavior: type: object description: "[Behavior](https://api.noona.is/docs/working-with-the-apis/behavior)" properties: type: type: string default: single format: enum enum: [single, split] description: | The type of subtransaction to create. Single will create a single subtransaction for the transaction. Split will create subtransactions on all transactions in the sale with the remaining amount of each transation. PaymentMethods: type: array items: $ref: "#/components/schemas/PaymentMethod" PaymentMethod: type: object properties: id: type: string example: 8wa9uiah28dawd123 title: type: string example: Card order: type: integer format: int32 example: 1 icon_name: type: string example: "credit-card-1" locale_key: type: string example: "dbPaymentMethods:paymentCard" use_terminal: type: boolean example: true hidden: type: boolean example: false description: If true the payment method is hidden from the POS EnterpriseConnections: type: object properties: available_on_marketplace: type: boolean example: true url_name: description: | Used when constructing the marketplace url for the enterprise. Can include lowercase letters, numbers and dashes. type: string example: noonacuts minLength: 3 maxLength: 30 pattern: "^[a-z0-9-_]+$" allows_booking_without_auth: description: Controls whether customers can make appointments without authentication type: boolean example: true marketplace: $ref: "#/components/schemas/EnterpriseConnectionsMarketplace" vouchers: $ref: "#/components/schemas/EnterpriseConnectionsVouchers" EnterpriseConnectionsMarketplace: type: object properties: enable_vouchers: type: boolean example: true EnterpriseConnectionsVouchers: type: object properties: enabled: type: boolean example: true settlement_account_id: type: string example: "wda8wud9a8wuddopk" EnterpriseProfile: type: object properties: name: type: string example: Noonacuts image: $ref: "#/components/schemas/Image" Enterprises: type: array items: $ref: "#/components/schemas/Enterprise" Enterprise: type: object properties: id: type: string example: aqmzX9Cm5tekKecsA readOnly: true companies: type: array readOnly: true description: An array of companies belonging to enterprise. items: type: string connections: $ref: "#/components/schemas/EnterpriseConnections" profile: $ref: "#/components/schemas/EnterpriseProfile" ExpandableEnterprise: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Enterprise" DeletionResult: type: object properties: count: type: integer format: int32 example: 3 description: Number of notifications deleted NotificationCreate: type: object required: [title, message, company, employee] properties: title: type: string example: "Something happened" message: type: string example: "This is more details about what happened" company: type: string example: "daw89dw9a7wd9a8w7d" employee: type: string example: "daw89dw9a7wd9a8w7d" Notifications: type: array items: $ref: "#/components/schemas/Notification" Notification: oneOf: - $ref: "#/components/schemas/NotificationLegacy" - $ref: "#/components/schemas/NotificationSurvey" - $ref: "#/components/schemas/NotificationGeneric" - $ref: "#/components/schemas/NotificationEvent" - $ref: "#/components/schemas/NotificationWaitlistEntry" NotificationLegacy: type: object required: - type properties: id: type: string example: 8wa9uiah28dawd123 readOnly: true type: type: string format: enum enum: [legacy] company: type: string example: "daw89dw9a7wd9a8w7d" event: type: string description: The event which the notification is for. example: "dw89aw8da8wd" payment_amount: type: number format: double example: 10000 readOnly: true description: The amount of the payment if the event has a payment associated with it. payment_currency: type: string example: "ISK" readOnly: true description: The currency of the payment if the event has a payment associated with it. payment_status: $ref: "#/components/schemas/PaymentStatus" employee: type: string example: "daw89dw9a7wd9a8w7d" space: type: string example: "daw89dw9a7wd9a8w7d" priority: type: integer format: int32 example: 0 title: type: string example: "New appointment" message: type: string example: "You have a new appointment at 12:00" side_message: type: string example: "@ 2022-01-01" date: type: string example: "2022-01-01" icon: $ref: "#/components/schemas/NotificationIcon" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true NotificationIcon: type: object properties: icon: type: string example: "calendar" icon_text: type: string example: "me be icon" icon_color: type: string example: "#ffffff" icon_variant: type: string format: enum enum: [info, warning, error, success] example: "success" NotificationSurvey: type: object required: - type properties: id: type: string example: 8wa9uiah28dawd123 readOnly: true type: type: string format: enum enum: [survey] employee: type: string example: "daw89dw9a7wd9a8w7d" priority: type: integer format: int32 example: 10 created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true NotificationGeneric: type: object required: - title - type properties: id: type: string example: 8wa9uiah28dawd123 readOnly: true type: type: string format: enum enum: [generic] employee: type: string example: "daw89dw9a7wd9a8w7d" title: type: string example: "We fixed it!" message: type: string example: "We have fixed the issue you reported. Thank you for your patience." url: type: string example: "/pos/settlements" description: "A valid URL path for HQ which is redirected to when the notification is clicked" icon: $ref: "#/components/schemas/NotificationIcon" priority: type: integer format: int32 example: 10 created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true NotificationEvent: type: object required: - type - status properties: id: type: string example: 8wa9uiah28dawd123 readOnly: true type: type: string format: enum enum: [event] status: type: string format: enum enum: [confirmed, rescheduled, cancelled, request] company: type: string example: "daw89dw9a7wd9a8w7d" customer: type: string example: "daw89dw9a7wd9a8w7d" customer_name: type: string example: "John Doe" employee: type: string example: "daw89dw9a7wd9a8w7d" employee_name: type: string example: "John Doe" space: type: string example: "daw89dw9a7wd9a8w7d" space_name: type: string example: "Room 1" resources: type: array items: type: string example: "daw89dw9a7wd9a8w7d" description: The resources that are booked for the event resource_names: type: array items: type: string example: "Room 1" description: The names of the resources that are booked for the event event: type: string description: The event which the notification is for. example: "dw89aw8da8wd" event_type_names: type: array items: type: string example: "Haircut" description: The names of the event types starts_at: type: string format: date-time example: "2022-09-12T12:00:00Z" description: Start time of event duration: type: integer format: int32 example: 60 description: Duration of event in minutes rescheduled_from: type: string format: date-time example: "2022-01-01T12:00:00Z" description: The original date and time of the event new_customer: type: boolean example: true description: True if the customer is new customer_comment: type: string description: A comment that the customer included during a marketplace booking. cancel_reason: type: string example: "I'm sick and can't make it" description: Provided by customers when they decline through the marketplace. payment_amount: type: number format: double example: 10000 readOnly: true description: The amount of the payment if the event has a payment associated with it. payment_currency: type: string example: "ISK" readOnly: true description: The currency of the payment if the event has a payment associated with it. payment_status: $ref: "#/components/schemas/PaymentStatus" number_of_guests: type: integer format: int32 example: 1 description: Number of guests for the event. created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true NotificationWaitlistEntry: type: object required: - id - type properties: id: type: string example: 8wa9uiah28dawd123 readOnly: true type: type: string format: enum enum: [waitlistEntry] waitlist_entry: type: string example: "daw89dw9a7wd9a8w7d" company: type: string example: "daw89dw9a7wd9a8w7d" customer: type: string example: "daw89dw9a7wd9a8w7d" customer_name: type: string example: "John Longhair" employee: type: string example: "daw89dw9a7wd9a8w7d" employee_name: type: string example: "Jim the Cutter" event_type_names: type: array items: type: string example: "Haircut" description: The names of the event types expires_at: type: string format: date-time example: "2022-09-12T12:00:00Z" description: The time when the waitlist entry expires created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true Terminals: type: array items: $ref: "#/components/schemas/Terminal" Terminal: type: object properties: id: type: string readOnly: true readable_identifier: type: string example: Suzy's terminal brand: type: string readOnly: true model: type: string readOnly: true provider: type: string format: enum enum: [Istari, MPAS] readOnly: true serial: type: string readOnly: true issuer: $ref: "#/components/schemas/ExpandableIssuer" description: type: string default: type: boolean description: Whether this terminal is the default terminal to use for sales. created_at: type: number format: double readOnly: true Companies: type: array items: $ref: "#/components/schemas/Company" Company: type: object properties: id: type: string example: QwYwhN8HH2CaFtwiW readOnly: true vertical: type: string example: "appointment" enum: [appointment, restaurant] enterprise: $ref: "#/components/schemas/ExpandableEnterprise" name: type: string example: Noonacuts phone_country_code: type: string deprecated: true description: Deprecated, use profile.phone_country_code instead phone_number: type: string deprecated: true description: Deprecated, use profile.phone_number instead profile: $ref: "#/components/schemas/CompanyProfile" marketplace: $ref: "#/components/schemas/CompanyMarketplace" messaging: $ref: "#/components/schemas/CompanyMessaging" location: $ref: "#/components/schemas/Location" currency: $ref: "#/components/schemas/CompanyDefaultCurrency" locale: $ref: "#/components/schemas/Locale" checkin: $ref: "#/components/schemas/CompanyCheckin" payments: $ref: "#/components/schemas/PaymentSettings" payment_fees: $ref: "#/components/schemas/PaymentFees" vouchers: $ref: "#/components/schemas/VoucherSettings" pos: $ref: "#/components/schemas/POSSettings" adyen: $ref: "#/components/schemas/AdyenConnection" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true PaymentFees: type: object readOnly: true description: > Dynamic mapping of payment reasons to fees. Valid keys include "event", "paylink", "voucher", etc., representing different reasons for payments. Each key maps to a fee represented as a floating-point number. additionalProperties: type: number format: double example: event: 0.019 paylink: 0.019 voucher: 0.05 AdyenConnection: type: object readOnly: true properties: onboarded_at: type: string format: date-time onboarding_status: $ref: "#/components/schemas/AdyenOnboardingStatus" CompanyCheckin: type: object properties: success_message: type: string example: "Thank you for visiting us!" CompanyMarketplace: type: object properties: onboarded_at: type: string format: date-time description: | The date and time when the company was onboarded to online bookings. This is used to determine if the company has been onboarded online bookings or not, regardless of the value of `enabled` and `visible`. enabled: type: boolean example: true description: Whether the company is enabled on the marketplace. If true, the company will appear in search results, category listings etc. `visible` must be true for this to have any effect. visible: type: boolean example: true description: | Whether the company is visible through the marketplace API. `visible: true - enabled: true` means that the company is visible and enabled on the marketplace. Appears in search results etc. `visible: true - enabled: false` means that the company is visible but not enabled on the marketplace. The company does not appear in search results and category listings but their booking page is accessbile. This supports the case where companies only want to receive bookings through their own website or directly through their noona booking page. (https://noona.app/thebookingpage) `visible: false - enabled: true/false` means that the company is not visible at all. The *enabled* flag is ignored in this case. url_name: description: | Used when constructing the marketplace url for the company. Can include lowercase letters, numbers and dashes. type: string example: noonacuts minLength: 3 maxLength: 30 pattern: "^[a-z0-9-_]+$" email_notification: type: boolean example: true description: | Indicates if the company should receive email notifications upon booking confirmation. Notifications are sent to the company's primary email address. This feature is especially beneficial for businesses without dedicated employees, relying solely on resources. allow_booking_without_confirmation: type: boolean allow_booking_over_cancelled_events: type: boolean allow_booking_multiple_services: type: boolean waitlist_enabled: type: boolean example: true description: | Indicates if the company should be able to receive waitlist entries from the marketplace. This allows customers to add themselves to the waitlist at company. CompanyProfile: type: object properties: store_name: type: string example: John's Hair Salon readOnly: true description: type: string favorites: type: integer format: int32 description: The number of favorites/likes on the company. image: $ref: "#/components/schemas/Image" cover_images: type: array description: The marketplace images displayed on a companies profile items: $ref: "#/components/schemas/Image" phone_country_code: type: string example: "354" phone_number: type: string example: "5885522" contact_email: type: string max_bookable_future_days: type: integer format: int32 min_booking_notice_minutes: type: integer format: int32 min_reschedule_notice_hours: type: integer format: int32 min_cancel_notice_hours: type: integer format: int32 booking_interval: $ref: "#/components/schemas/BookingInterval" service_buffer: type: integer format: int32 min_guests_per_booking: type: integer format: int32 max_guests_per_booking: type: integer format: int32 max_guests_per_interval: type: integer format: int32 max_same_time_arrival: type: integer format: int32 prefer_12_hours: type: boolean description: Whether the company prefers 12 hour time format. required_fields: $ref: "#/components/schemas/RequiredFields" license_plate: type: boolean web_auth_opt_out: type: boolean booking_success_message: type: string booking_redirect_url: type: string company_types: type: array items: type: string opening_hours: $ref: "#/components/schemas/OpeningHours" price_category: type: integer format: int32 description: The price category of the company. example: 3 minimum: 1 maximum: 5 CompanyMessaging: type: object properties: show_booking_ends_at: description: | Whether the company wants to show the booking end time/duration in booking confirmation messages and reminders. type: boolean default: false example: true OpeningHours: type: array description: Opening hours for the company. Array of seven (7) items, 0 being Monday and 6 Sunday. Or 0 being Sunday. Nobody really knows. items: $ref: "#/components/schemas/OpeningHour" OpeningHour: type: object properties: opens_at: type: string example: 08:00 closes_at: type: string example: 18:00 is_closed: type: boolean RequiredFields: type: object properties: kennitala: type: boolean email: type: boolean Locale: type: object properties: ui_language: type: string example: "en" messaging_language: type: string example: "en" ExpandableCompanies: type: array items: $ref: "#/components/schemas/ExpandableCompany" ExpandableCompany: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Company" CompanyDefaultCurrency: type: object properties: code: type: string example: EUR name: type: string example: Euro symbol: type: string example: € CustomerGroups: type: array items: $ref: "#/components/schemas/CustomerGroup" CustomerGroup: type: object properties: id: type: string example: 7dj29KiAE1wdjw731 readOnly: true company: type: string example: QwYwhN8HH2CaFtwiW title: type: string example: "Regulars" description: type: string example: "Customers that come in regularly" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true Customers: type: array items: $ref: "#/components/schemas/Customer" Customer: type: object properties: id: type: string example: 7dj29KiAE1wdjw731 readOnly: true name: type: string example: Joe the cuttee kennitala: type: string example: "1613772649" phone_number: type: string example: 8578844 phone_country_code: type: string example: 354 email: type: string example: example@example.com license_plate: type: string example: DF302 license_plates: type: array description: All different license plates that the customer has used. items: type: string example: DF302 company_id: type: string example: 2fj29KiKX1wdjw985 deprecated: true readOnly: true company: type: string example: 2fj29KiKX1wdjw985 description: ID of the company that the customer belongs to. event_count: type: integer format: int32 example: 69 readOnly: true groups: $ref: "#/components/schemas/ExpandableCustomerGroups" employee_ids: type: array items: type: string example: 1gj29KiKX1wdjw155 previous_event: $ref: "#/components/schemas/ExpandableEvent" next_event: $ref: "#/components/schemas/ExpandableEvent" duplicates: description: | This field can only be appended to. Any customer ids currently not in the duplicates array will be added, causing those customers to be merged into this one. This operation can not be undone. $ref: "#/components/schemas/ExpandableCustomers" duplicateStatus: $ref: "#/components/schemas/DuplicateStatus" notes: type: string example: Loves to be called Joe the cuttee update_origin: type: string example: hq updated_by: type: string example: 2fj29KiKX1wdjw985 readOnly: true last_employee: type: string example: John the hairy readOnly: true last_event: type: string example: date-time readOnly: true custom_properties: $ref: "#/components/schemas/CustomPropertyValues" attachments: $ref: "#/components/schemas/Attachments" notices: $ref: "#/components/schemas/Notices" tags: $ref: "#/components/schemas/CustomerTags" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true DuplicateStatus: description: | The customers duplicate status. If `approved` the customer has been approved as a duplicate. If `possible` the duplication has to be manually resolved. type: string format: enum enum: [possible, approved] CustomerTags: type: object properties: gluten_free: type: boolean lactose_intolerant: type: boolean severe_nut_allergy: type: boolean severe_shellfish_allergy: type: boolean vegan: type: boolean vegetarian: type: boolean vip: type: boolean wheelchair: type: boolean ExpandableCustomers: type: array items: $ref: "#/components/schemas/ExpandableCustomer" ExpandableCustomer: oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Customer" description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" CustomerFilter: description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" allOf: - type: object properties: phone_number: type: string example: "8576251" description: "Filter by phone number of customer" phone_country_code: type: string example: "354" description: "Filter by phone country code of customer" duplicate_status: $ref: "#/components/schemas/DuplicateStatus" Search: type: string example: "" description: The search query. Spaces: type: array items: $ref: "#/components/schemas/Space" Space: type: object properties: id: type: string example: 7dj29KiAE1wdjw731 company_id: type: string example: 2fj29KiKX1wdjw985 deprecated: true description: Use `company` instead. company: $ref: "#/components/schemas/ExpandableCompany" type: $ref: "#/components/schemas/SpaceType" name: type: string example: "My Space" description: type: string example: "This space is awesome" image: $ref: "#/components/schemas/Image" marketplace: type: boolean example: true description: If true, space is visible on the marketplace. available_for_bookings: type: boolean example: true description: Whether the space is visible on the calendar booking_interval: $ref: "#/components/schemas/BookingInterval" order: type: integer format: int32 example: 1 description: The order of the space in the list of spaces on the marketplace. min_capacity: type: integer format: int32 description: The mininum capacity of the space, for example how many people can occupy a table at minimum. example: 1 max_capacity: type: integer format: int32 description: The maximum capacity of the space, for example how many people can occupy a table at maximum. example: 2 sub_resources: type: array items: type: string event_type_preferences: $ref: "#/components/schemas/EventTypePreferences" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true SpaceType: type: string format: enum enum: [space, table, table_combination] ExpandableResources: type: array items: $ref: "#/components/schemas/ExpandableResource" ExpandableResource: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Resource" Resources: type: array items: $ref: "#/components/schemas/Resource" Resource: type: object properties: id: type: string example: 7dj29KiAE1wdjw731 company: $ref: "#/components/schemas/ExpandableCompany" resource_group: $ref: "#/components/schemas/ExpandableResourceGroup" type: $ref: "#/components/schemas/ResourceType" name: type: string example: "Table 1" description: type: string example: "A good window view" priority: $ref: "#/components/schemas/ResourcePriority" image: $ref: "#/components/schemas/Image" marketplace: type: boolean example: true description: If true, resource is visible on the marketplace. available_for_bookings: type: boolean example: true description: Whether the resource is visible on the calendar booking_interval: $ref: "#/components/schemas/BookingInterval" order: type: integer format: int32 example: 1 description: The order of the resource in the list of resources on the marketplace and in the HQ UI. min_capacity: type: integer format: int32 description: The mininum capacity of the resource, for example how many people can occupy a table at minimum. example: 1 max_capacity: type: integer format: int32 description: The maximum capacity of the resource, for example how many people can occupy a table at maximum. example: 2 sub_resources: type: array items: type: string event_type_preferences: $ref: "#/components/schemas/EventTypePreferences" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true ResourceType: type: string format: enum enum: [space, table, table_combination] ResourcePriority: description: Controls the priority of the resource when being randomly selected in the booking process. type: string format: enum enum: [normal, high] SpacesFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: types: type: array items: $ref: "#/components/schemas/SpaceType" description: "Filter by space IDs" ResourcesFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: types: type: array items: $ref: "#/components/schemas/ResourceType" description: "Filter by resource IDs" ResourceGroup: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a company: $ref: "#/components/schemas/ExpandableCompany" resources: $ref: "#/components/schemas/ExpandableResources" title: type: string example: Lunch order: type: integer format: int32 example: 1 created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true ExpandableResourceGroup: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/ResourceGroup" ResourceGroups: type: array items: $ref: "#/components/schemas/ResourceGroup" ResourceGroupResponseOverrides: type: object required: [id, company, resources, title, created_at, updated_at] properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a company: $ref: "#/components/schemas/ExpandableCompany" resources: $ref: "#/components/schemas/ExpandableResources" title: type: string example: Lunch order: type: integer format: int32 example: 1 created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true ResourceGroupResponse: allOf: - $ref: "#/components/schemas/ResourceGroup" - $ref: "#/components/schemas/ResourceGroupResponseOverrides" ResourceGroupsResponse: type: array items: $ref: "#/components/schemas/ResourceGroupResponse" ResourceGroupCreate: allOf: - $ref: "#/components/schemas/ResourceGroup" - $ref: "#/components/schemas/ResourceGroupCreateOverrides" ResourceGroupCreateOverrides: type: object required: [company, title] properties: company: $ref: "#/components/schemas/ExpandableCompany" title: type: string example: Lunch ResourceGroupUpdate: allOf: - $ref: "#/components/schemas/ResourceGroup" - $ref: "#/components/schemas/ResourceGroupUpdateOverrides" ResourceGroupUpdateOverrides: type: object properties: company: readOnly: true resources: $ref: "#/components/schemas/ExpandableResources" title: type: string example: Lunch BookingInterval: type: integer format: int32 enum: [5, 10, 15, 20, 30, 45, 50, 60, 75, 90, 120] example: 15 default: 5 description: | Booking interval in minutes. Dictates how often customers can book events with employee or resource. A booking interval of 15 would render results like: `10:00` `10:15` `10:30`. A booking interval is set on the company level but can be overridden on the resource/employee level. EventTypePreferences: type: array items: $ref: "#/components/schemas/EventTypePreference" EventTypePreference: type: object properties: event_type: $ref: "#/components/schemas/ExpandableEventType" skip: type: boolean example: false description: If true, resource can not service this event type. has_custom_duration: type: boolean example: false description: If true, resource can set custom duration for this event type. custom_duration: $ref: "#/components/schemas/CustomDuration" CustomDuration: type: object properties: duration: type: integer format: int32 example: 60 before_pause: type: integer format: int32 example: 25 pause: type: integer format: int32 example: 10 after_pause: type: integer format: int32 example: 25 MarketplaceUsers: type: array items: $ref: "#/components/schemas/MarketplaceUser" MarketplaceUser: type: object properties: id: example: 7awdXwZoedakjad37a type: string readOnly: true name: type: string email: type: string ExpandableMarketplaceUser: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/MarketplaceUser" SettlementAccounts: type: array items: $ref: "#/components/schemas/SettlementAccount" SettlementAccount: type: object properties: id: example: 7awdXwZoedakjad37a type: string readOnly: true name: type: string example: "Main account" description: type: string example: "I want all the money here!" ssn: example: "0503205160" type: string bank: example: "0542" type: string book: example: "02" type: string account: example: "220865" type: string created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true ExpandableSettlementAccount: readOnly: true description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/SettlementAccount" Vouchers: type: array items: $ref: "#/components/schemas/Voucher" Voucher: type: object properties: id: example: 7awdXwZoedakjad37a type: string readOnly: true currency: type: string example: ISK amount: type: number format: double example: 3990 data: $ref: "#/components/schemas/VoucherData" code: type: string example: "A328DB" description: 6 uppercase letters / numbers readOnly: true color: type: string example: "#0f0f0f" message: type: string example: "You deserve to relax a bit!" status: type: string enum: [never_used, partly_used, fully_used, expired] readOnly: true phone_country_code: type: string example: "354" phone_number: type: string example: "7134124" description: If a phone number is provided, it receives news of the newly created voucher. email: type: string example: test@testy.is description: If an email is provided, it receives news of the newly created voucher. marketplace_user: $ref: "#/components/schemas/ExpandableMarketplaceUser" customer: $ref: "#/components/schemas/ExpandableCustomer" company: $ref: "#/components/schemas/ExpandableCompany" template: $ref: "#/components/schemas/ExpandableVoucherTemplate" expiration: example: "2022-08-24T14:15:22Z" type: string format: date-time description: Vouchers expire after 3 years readOnly: true created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true deleted_at: type: string format: date-time readOnly: true ExpandableVoucher: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Voucher" VoucherData: oneOf: - $ref: "#/components/schemas/VoucherDataService" - $ref: "#/components/schemas/VoucherDataAmount" VoucherDataService: type: object required: - type properties: type: type: string format: enum enum: ["service"] sessions_used: type: integer format: int32 example: 0 sessions_total: type: integer format: int32 example: 0 readOnly: true voucher_template_amount: type: number format: double example: 2990 event_type_name: type: string example: "Quicky Haircut" readOnly: true event_type_id: type: string example: d0a9w8da09w8dindwa readOnly: true voucher_template: type: string example: 7awdXwZoedakjad37a VoucherDataAmount: type: object required: - type properties: type: type: string format: enum enum: ["amount"] amount_used: type: number format: double example: 2000 VoucherFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: marketplace_user: type: string example: 7awdXwZoedakjad37a status: type: string enum: [never_used, partly_used, fully_used, expired] type: type: string enum: [service, amount] customer: type: string example: 7awdXwZoedakjad37a code: type: string example: "A328DB" description: Regex match of code from: type: string format: date-time example: "2020-08-24T14:15:22Z" to: type: string format: date-time example: "2022-08-24T14:15:22Z" event_types: type: array items: type: string example: 7awdXwZoedakjad37a companies: type: array items: type: string example: 7awdXwZoedakjad37a include_deleted: type: boolean default: false description: | Whether to include deleted vouchers in the response. When true, deleted vouchers will be included in the response. When false, deleted vouchers will not be included in the response. VoucherTemplates: type: array items: $ref: "#/components/schemas/VoucherTemplate" VoucherTemplate: type: object properties: id: example: 7awdXwZoedakjad37a type: string readOnly: true title: type: string example: "Voucher for the men's haircut" event_type: $ref: "#/components/schemas/ExpandableEventType" variation_id: type: string description: The ID of the event type variation that the value of the voucher should be calculated from. example: 7awdXwZoedakjad37a company: type: string example: 7awdXwZoedakjad37a currency: type: string example: ISK amount: type: number format: double example: 10000 minimum: 1 value: type: number format: double example: 12500 readOnly: true sessions_total: type: integer format: int32 example: 5 marketplace: type: boolean example: true description: If true, voucher is visible on the marketplace. created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true VoucherTemplatesResponse: type: array items: $ref: "#/components/schemas/VoucherTemplateResponse" VoucherTemplateResponse: allOf: - $ref: "#/components/schemas/VoucherTemplate" - $ref: "#/components/schemas/VoucherTemplateResponseOverrides" VoucherTemplateResponseOverrides: type: object required: - "id" - "company" - "event_type" - "amount" - "currency" - "sessions_total" - "value" - "marketplace" - "created_at" - "updated_at" properties: id: type: string example: 7awdXwZoedakjad37a readOnly: true event_type: $ref: "#/components/schemas/ExpandableEventType" variation_id: type: string description: The ID of the event type variation that the value of the voucher should be calculated from. example: 7awdXwZoedakjad37a company: type: string example: 7awdXwZoedakjad37a currency: type: string example: ISK amount: type: number format: double example: 10000 sessions_total: type: integer format: int32 example: 5 created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true value: type: number format: double example: 12500 readOnly: true VoucherTemplateCreateOverrides: type: object required: - "event_type" - "company" - "currency" - "amount" - "sessions_total" properties: event_type: $ref: "#/components/schemas/ExpandableEventType" company: type: string example: 7awdXwZoedakjad37a currency: type: string example: ISK amount: type: number format: double example: 10000 sessions_total: type: integer format: int32 example: 5 VoucherTemplateCreate: allOf: - $ref: "#/components/schemas/VoucherTemplate" - $ref: "#/components/schemas/VoucherTemplateCreateOverrides" VoucherTemplateUpdateOverrides: type: object properties: event_type: readOnly: true variation_id: readOnly: true company: readOnly: true currency: readOnly: true VoucherTemplateUpdate: allOf: - $ref: "#/components/schemas/VoucherTemplate" - $ref: "#/components/schemas/VoucherTemplateUpdateOverrides" ExpandableVoucherTemplate: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/VoucherTemplate" VoucherTemplateFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: event_types: type: array items: type: string example: 7awdXwZoedakjad37a companies: type: array items: type: string example: 7awdXwZoedakjad37a ExpandableCustomerGroups: type: array description: Customer groups that the customer belongs to. items: $ref: "#/components/schemas/ExpandableCustomerGroup" ExpandableCustomerGroup: description: "[Expandable](#section/Expandable-attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/CustomerGroup" Settlements: type: array items: $ref: "#/components/schemas/Settlement" Settlement: type: object properties: id: example: 7awdXwZoedakjad37a type: string readOnly: true transferred_to_enterprise: type: boolean readOnly: true transferred_to_enterprise_at: type: string format: date-time readOnly: true line_items: $ref: "#/components/schemas/SettlementLineItems" total: type: number format: double example: 40000 fee: type: number format: double example: 2000 net_total: type: number format: double example: 38000 settled_to: type: string description: The name of the settlement recipient. example: John The Cutter settlement_account: $ref: "#/components/schemas/SettlementAccount" payments_from: type: string format: date-time readOnly: true payments_to: type: string format: date-time readOnly: true created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true SettlementLineItems: type: array items: $ref: "#/components/schemas/SettlementLineItem" SettlementLineItem: type: object properties: title: type: string example: "voucher" readOnly: true quantity: type: integer format: int32 example: 8 total: type: number format: double example: 40000 fee: type: number format: double example: 2000 net_total: type: number format: double example: 38000 SettlementFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: from: type: string format: date-time example: "2020-08-24T14:15:22Z" to: type: string format: date-time example: "2022-08-24T14:15:22Z" ExpandablePayment: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Payment" Payments: type: array items: $ref: "#/components/schemas/Payment" Payment: type: object properties: id: example: 7awdXwZoedakjad37a type: string readOnly: true company: $ref: "#/components/schemas/ExpandableCompany" marketplace_user: $ref: "#/components/schemas/ExpandableMarketplaceUser" customer: $ref: "#/components/schemas/ExpandableCustomer" employee: $ref: "#/components/schemas/ExpandableEmployee" event: $ref: "#/components/schemas/ExpandableEvent" status: $ref: "#/components/schemas/PaymentStatus" reason: type: string format: enum enum: [voucher, event, paylink] example: "voucher" readOnly: true currency: type: string example: ISK readOnly: true amount: type: number format: double example: 10000 readOnly: true settles_to_employee: type: boolean example: true readOnly: true description: | Indicates if the payment is settled to the employee or the company. If true, the payment is settled to the employee. If false, the payment is settled to the company. This evaluates this payment and related data as it is exactly on time of fetch. Meaning that this flag has no relevance to already settled payments. settled_to: type: string description: The name of the settlement recipient. example: John The Cutter readOnly: true settlement: type: string example: 7awdXwZoedakjad37a readOnly: true description: The ID of the settlement that this payment belongs to. created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true PaymentStatus: type: string format: enum enum: [unsettled, settled, refunded, pending] example: "refunded" PaymentFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: from: type: string format: date-time example: "2020-08-24T14:15:22Z" to: type: string format: date-time example: "2022-08-24T14:15:22Z" company: deprecated: true type: string example: 7awdXwZoedakjad37a description: "Deprecated: Use ListPayments endpoint to get payments for a company" statuses: type: array items: $ref: "#/components/schemas/PaymentStatus" TimeSlots: type: array items: $ref: "#/components/schemas/TimeSlot" TimeSlot: type: object properties: slot: type: string format: date-time description: "The start time of the time slot" example: "2020-08-24T15:00:00Z" employeeIds: type: array description: "The IDs of the employees that are available for this time slot" items: type: string resourceIds: type: array description: "The IDs of the resources that are available for this time slot" items: type: string unavailable_resources: type: array description: "Details of the resources that are unavailable for this time slot, including the reason" items: $ref: "#/components/schemas/UnavailableResource" UnavailableResource: type: object properties: resource: type: string description: "The ID of the unavailable resource" reason: type: string format: enum enum: - booked - outside_opening_hours - custom_booking_interval - capacity description: | The reason why the resource is unavailable. Possible values: - `booked` - The resource is booked during this time slot - `outside_opening_hours` - The reservation extends outside the opening hours of the company - `custom_booking_interval` - The reservation start time does not match the custom booking interval of the resource - `capacity` - The capacity of the resource does not match number of guests (Too big or too small) The above list of reasons is priority ordered. Meaning that if a table does not support number of guests due to capacity and is also booked, the reason will be `booked`. EventCheckinResult: allOf: - $ref: "#/components/schemas/Event" - type: object properties: check_in_success_message: type: string example: "Thank you for checking in, please wait until your name is called" sale_id: type: string example: "8awud8w9a7d9w8a" transaction_id: type: string example: "8awud8w9a7d9w8a" subtransaction_id: type: string example: "8awud8w9a7d9w8a" description: | The ID of the subtransaction tied to this self-checkin. If the company does not have a terminal associated with their checkin, this ID will be empty. RRuleString: type: string example: "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR" description: | [RRULE](https://icalendar.org/iCalendar-RFC-5545/3-3-10-recurrence-rule.html) string for recurring events and blocked times. The dtstart property is ignored, and the start time of the event/blocked time is used instead. If no until is specified, it will default to 2 years from time of creation. Until has a maximum value of 2 years from time of creation. Count can be any value, but generated events/blocked times past the 2 year mark will be ignored. Events: type: array items: $ref: "#/components/schemas/Event" Event: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a recurring_event: oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Event" company: $ref: "#/components/schemas/ExpandableCompany" employee_name: type: string example: Joe The Cutter deprecated: true writeOnly: true readOnly: true description: Deprecated, expand employee property instead employee: $ref: "#/components/schemas/ExpandableEmployee" customer_name: type: string example: Harry Hairlong readOnly: true description: It is recommended to expand the customer property instead of using this property. However, in the case of deleted or walkin customers, this property can be used as fallback since the customer property will be null. customer: $ref: "#/components/schemas/ExpandableCustomer" number_of_guests: type: integer format: int32 example: 1 description: Number of guests for the event. space_name: type: string example: My Space deprecated: true writeOnly: true readOnly: true description: Deprecated, expand resource property instead space: deprecated: false oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Space" description: "Use resource instead" resources: $ref: "#/components/schemas/ExpandableResources" license_plate: type: string description: License plate for the vehicle associated with this event event_date: type: string example: "2022-09-12" deprecated: true writeOnly: true readOnly: true description: Deprecated, use starts_at instead start_time: type: string example: "15:30" deprecated: true writeOnly: true readOnly: true description: Deprecated, use starts_at instead end_time: type: string example: "16:00" deprecated: true writeOnly: true readOnly: true description: Deprecated, use ends_at instead starts_at: type: string format: date-time example: "2022-09-12T12:00:00Z" description: "Start time of event" ends_at: type: string format: date-time example: "2022-09-12T13:00:00Z" description: "End time of event" readOnly: true duration: type: integer format: int32 example: 30 readOnly: true check_in_at: type: integer format: int32 example: 1600541746 readOnly: true check_in_origin: type: string event_types: $ref: "#/components/schemas/EventTypes" invoice_status: type: string format: enum enum: [paid, draft, canceledDuringDraft, deleted, refund] example: "paid" readOnly: true status: type: string example: "noshow" description: | The status of the event. See [Event Statuses](#section/Event-Statuses) for more information. claim_status: $ref: "#/components/schemas/ClaimStatus" origin: type: string format: enum enum: [calendar, online, app, import, secretary] example: "online" booking_questions: $ref: "#/components/schemas/BookingQuestions" comment: type: string customer_comment: type: string description: A comment that the customer included during a marketplace booking. unconfirmed: type: boolean description: | Event is unconfirmed if the employee has not yet confirmed the booking. This is only relevant for companies that have the "Require employee confirmation" setting enabled. special: type: boolean description: A property that users can use to mark events as special. Has no affect on system behavior. pinned: type: boolean description: A property that users can use to pin events. cancel_reason: readOnly: true type: string example: "I'm sick and can't make it" description: Provided by customers when they decline through the marketplace. sale: $ref: "#/components/schemas/ExpandableSale" payment: $ref: "#/components/schemas/ExpandablePayment" price: $ref: "#/components/schemas/CalculatedPrice" custom_properties: $ref: "#/components/schemas/CustomPropertyValues" notification_preferences: $ref: "#/components/schemas/NotificationPreferences" attachments: $ref: "#/components/schemas/Attachments" waitlist_entry: type: string description: | The ID of the waitlist entry that this event is associated with. Waitlist entries are automatically deleted when the event is created. rrule: $ref: "#/components/schemas/RRuleString" version: type: integer format: int32 readOnly: true example: 1 description: | The version of the event. This is incremented every time the event is updated. This is useful for detecting if an event has been updated since it was last fetched. created_by: $ref: "#/components/schemas/ExpandableActor" updated_by: $ref: "#/components/schemas/ExpandableActor" update_origin: type: string format: enum enum: [calendar, online, app, import, secretary] example: "online" description: What system last updated the event accepted_at: type: string format: date-time declined_at: type: string format: date-time created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true deleted_at: type: string format: date-time readOnly: true ExpandableEvent: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Event" BookingQuestions: type: array items: $ref: "#/components/schemas/BookingQuestion" BookingQuestion: type: object properties: question: type: string example: "What color is your hair?" answer: type: string example: "Blonde" EventFilter: description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" allOf: - $ref: "#/components/schemas/CalendarSlotFilter" - type: object properties: customer: deprecated: true type: string example: 7awdXwZoedakjad37a description: Use `customers` instead. customers: description: "Filter by customer IDs" type: array items: type: string example: 7awdXwZoedakjad37a phone_number: type: string example: "8576251" description: "Filter by phone number of customer" phone_country_code: type: string example: "354" description: "Filter by phone country code of customer" from: type: string format: date-time description: Only return events where starts_at is after this timestamp. to: type: string format: date-time description: Only return events where starts_at is before this timestamp. exclude: type: array items: type: string example: 7awdXwZoedakjad37a description: "Exclude specific event IDs from response" ids: type: array items: type: string example: 7awdXwZoedakjad37a description: "Filter by specific event IDs" updated_from: type: string format: date-time description: Only return events where updated_at is after this timestamp. include_deleted: type: boolean default: false description: | Whether to include deleted events in the response. When true, deleted events will be included in the response. When false, deleted events will not be included in the response. EventCreationBehavior: type: object description: "[Behavior](https://api.noona.is/docs/working-with-the-apis/behavior)" properties: notify: type: boolean default: false description: | Whether to notify customer about the event. When true, the customer will receive an email and push notification about the event. When false, the customer will not receive any notification about the event. EventUpdateBehavior: type: object description: "[Behavior](https://api.noona.is/docs/working-with-the-apis/behavior)" properties: notify: type: boolean default: false description: | Whether to notify customer about the event update. When true, the customer will receive an email and push notification about the event update. When false, the customer will not receive any notification about the event update. type: type: string format: enum enum: [detach, inplace, future] default: detach example: "detach" description: | What events to update when updating an event that is a part of a recurring event. - `detach` - Only update the referenced event and detach it from the series - `inplace` - Only update the referenced event but keep it a part of the series - `future` - Update referenced event and all events in the series after the referenced event EventDeletionBehavior: type: object description: "[Behavior](https://api.noona.is/docs/working-with-the-apis/behavior)" properties: type: type: string format: enum enum: [single, future] default: single example: "single" description: | What events to delete when deleting an event that is a part of a recurring event. - `single` - Only delete the referenced event - `future` - Delete referenced event and all events in the series after the referenced event BlockedTimeFilter: description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" allOf: - $ref: "#/components/schemas/CalendarSlotFilter" - type: object properties: from: type: string format: date-time description: Only return blocked times where starts_at is after this timestamp. to: type: string format: date-time description: Only return blocked times where starts_at is before this timestamp. BlockedTimeTheme: type: string format: enum example: "themeblack" enum: [ "themered", "themepurple", "themeyellow", "themewine", "themeorange", "themegreen", "themeblack", "themegrey", "themeblue", "themecoral", "thememint", ] BlockedTimeUpdateBehavior: type: object description: "[Behavior](https://api.noona.is/docs/working-with-the-apis/behavior)" properties: type: type: string format: enum enum: [detach, future] default: detach example: "detach" description: | What blocked time to update when updating a blocked time that is a part of a recurrance. - `detach` - Only update the referenced blocked time and detach it from the series - `future` - Update referenced blocked time and all blocked times in the series after the referenced blocked time BlockedTimeDeletionBehavior: type: object description: "[Behavior](https://api.noona.is/docs/working-with-the-apis/behavior)" properties: type: type: string format: enum enum: [single, future] default: single example: "single" description: | What blocked times to delete when deleting an blocked time that is a part of a recurring blocked time. - `single` - Only delete the referenced blocked time - `future` - Delete referenced blocked time and all blocked times in the series after the referenced blocked time BlockedTimes: type: array items: $ref: "#/components/schemas/BlockedTime" BlockedTime: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a company: $ref: "#/components/schemas/ExpandableCompany" employee: $ref: "#/components/schemas/ExpandableEmployee" space: deprecated: true $ref: "#/components/schemas/ExpandableSpace" resource: $ref: "#/components/schemas/ExpandableResource" title: type: string example: Lunch starts_at: type: string format: date-time example: "2022-09-12T12:00:00Z" description: "Start time of blocked time" ends_at: type: string format: date-time example: "2022-09-12T13:00:00Z" description: "End time of blocked time" date: type: string example: "2022-09-12" description: "Date of blocked time" readOnly: true rrule: $ref: "#/components/schemas/RRuleString" duration: type: integer format: int32 example: 60 description: "Duration of blocked time from start to end" readOnly: true theme: $ref: "#/components/schemas/BlockedTimeTheme" created_by: $ref: "#/components/schemas/ExpandableActor" updated_by: $ref: "#/components/schemas/ExpandableActor" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true BlockedTimeResponseOverrides: type: object required: [ id, company, starts_at, ends_at, date, duration, theme, created_by, updated_by, created_at, updated_at, ] properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a company: $ref: "#/components/schemas/ExpandableCompany" employee: $ref: "#/components/schemas/ExpandableEmployee" space: deprecated: true $ref: "#/components/schemas/ExpandableSpace" resource: $ref: "#/components/schemas/ExpandableResource" title: type: string example: Lunch starts_at: type: string format: date-time example: "2022-09-12T12:00:00Z" description: "Start time of blocked time" ends_at: type: string format: date-time example: "2022-09-12T13:00:00Z" description: "End time of blocked time" date: type: string example: "2022-09-12" description: "Date of blocked time" readOnly: true rrule: $ref: "#/components/schemas/RRuleString" duration: type: integer format: int32 example: 60 description: "Duration of blocked time from start to end" readOnly: true theme: $ref: "#/components/schemas/BlockedTimeTheme" created_by: $ref: "#/components/schemas/ExpandableActor" updated_by: $ref: "#/components/schemas/ExpandableActor" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true BlockedTimeResponse: allOf: - $ref: "#/components/schemas/BlockedTime" - $ref: "#/components/schemas/BlockedTimeResponseOverrides" BlockedTimesResponse: type: array items: $ref: "#/components/schemas/BlockedTimeResponse" BlockedTimeCreate: allOf: - $ref: "#/components/schemas/BlockedTime" - $ref: "#/components/schemas/BlockedTimeCreateOverrides" BlockedTimeCreateOverrides: type: object required: [company, starts_at, ends_at] properties: company: $ref: "#/components/schemas/ExpandableCompany" starts_at: type: string format: date-time example: "2022-09-12T12:00:00Z" description: "Start time of blocked time" ends_at: type: string format: date-time example: "2022-09-12T13:00:00Z" description: "End time of blocked time" BlockedTimeUpdate: allOf: - $ref: "#/components/schemas/BlockedTime" - $ref: "#/components/schemas/BlockedTimeUpdateOverrides" BlockedTimeUpdateOverrides: type: object properties: company: readOnly: true employee: readOnly: true space: readOnly: true resource: readOnly: true rrule: readOnly: true starts_at: type: string format: date-time example: "2022-09-12T12:00:00Z" description: "Start time of blocked time" ends_at: type: string format: date-time example: "2022-09-12T13:00:00Z" description: "End time of blocked time" CalendarSlotFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: employees: type: array items: type: string example: 7awdXwZoedakjad37a description: "Filter by employee IDs" spaces: type: array items: type: string example: 7awdXwZoedakjad37a description: "Filter by space IDs" resources: type: array items: type: string example: 7awdXwZoedakjad37a description: "Filter by resource IDs" Location: type: object properties: formatted_address: type: string lat_lng: $ref: "#/components/schemas/LocationLatLng" country: $ref: "#/components/schemas/Country" time_zone: type: string example: "Atlantic/Reykjavik" Country: type: object properties: short_name: type: string example: IS long_name: type: string example: Iceland LocationLatLng: type: object required: - lat - lng properties: lat: type: number format: double lng: type: number format: double Order: type: integer format: int32 example: 1 description: Used to control order in list hierarchy. Image: type: object properties: thumb: type: string example: https://placekitten.com/200/200 image: type: string example: https://placekitten.com/200/300 public_id: type: string example: https://placekitten.com/200/300 Sort: type: object properties: field: type: string order: type: string enum: [asc, desc] Pagination: type: object properties: offset: type: integer format: int32 example: 0 default: 0 limit: type: integer format: int32 example: 10 default: 500 maximum: 500 minimum: 1 description: The maximum number of results to return. EventTypeGroups: type: array items: $ref: "#/components/schemas/EventTypeGroup" EventTypeGroup: type: object properties: id: type: string example: 7awdXwZoedakjad37a readOnly: true company: $ref: "#/components/schemas/ExpandableCompany" parent_event_type_group: $ref: "#/components/schemas/ExpandableEventTypeGroup" title: type: string example: Haircuts order: type: integer format: int32 example: 1 description: Used to control order in list hierarchy. is_default_group: type: boolean example: true description: Whether this is the default group for event types that do not have a group. ordered_event_types: $ref: "#/components/schemas/OrderedExpandableEventTypes" ExpandableEventTypeGroup: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/EventTypeGroup" OrderedExpandableEventTypes: type: array items: $ref: "#/components/schemas/OrderedExpandableEventType" OrderedExpandableEventType: type: object properties: order: type: integer format: int32 example: 1 description: Used to control order in list hierarchy. event_type: $ref: "#/components/schemas/ExpandableEventType" EventTypes: type: array items: $ref: "#/components/schemas/EventType" EventType: type: object properties: id: type: string example: 7awdXwZoedakjad37a readOnly: true reference_id: type: string example: external-service-id description: | An ID that can be used to reference the event type in an external system. This ID is not used by Noona and is not guaranteed to be unique. company_id: type: string example: 831dXwZoedakjad40b deprecated: true description: Deprecated, please use company instead company: $ref: "#/components/schemas/ExpandableCompany" event_type_category: $ref: "#/components/schemas/ExpandableEventTypeCategory" event_type_category_group: $ref: "#/components/schemas/ExpandableEventTypeCategoryGroup" title: type: string example: Men's haircut minutes: type: integer format: int32 example: 30 deprecated: true writeOnly: true readOnly: true description: Deprecated, please use duration instead duration: type: integer format: int32 example: 30 description: Duration of the event type delay: type: integer format: int32 description: Delay in minutes from event start time example: 30 beforePause: type: integer format: int32 description: The event duration before the pause example: 30 pause: type: integer format: int32 description: The pause duration example: 30 afterPause: type: integer format: int32 description: The event duration after the pause example: 30 buffer_after_service: type: integer format: int32 description: How many minutes of buffer the service needs after it ends. This does not affect the duration of the event shown to customers but is considered when calculating timeslots. example: 10 description: type: string example: 30 minute men's haircut min_guests_per_booking: type: integer format: int32 max_guests_per_booking: type: integer format: int32 thumb: type: string description: The event type's image URL as thumb (low res) example: https://cdn.noona.is/static/haircut-thumb.png image: type: string description: The event type's image URL in the original size example: https://cdn.noona.is/static/haircut-org.png color: type: string description: Color code for the event example: "#66d8cd" overbookable: type: string format: enum enum: [not_overbookable, partially_overbookable, fully_overbookable] description: How event is overbookable example: partially_overbookable vat: $ref: "#/components/schemas/ExpandableVAT" variations: $ref: "#/components/schemas/EventTypeVariations" price_ranges: $ref: "#/components/schemas/EventTypePriceRanges" connections: $ref: "#/components/schemas/EventTypeConnections" custom_payment_settings: type: boolean deprecated: true description: | By providing a **payments** object this is implicitly `true`. By using the unset query parameter and passing in the **payments** key this is implicitly `false`. payments: $ref: "#/components/schemas/PaymentSettings" price: $ref: "#/components/schemas/CalculatedPrice" tax_exemption_reason: type: string description: | The reason for tax exemption. This is only used if the event type is tax exempt. If the event type is not tax exempt, this field is ignored. created_at: type: string format: date-time example: 2019-01-01T00:00:00.000Z readOnly: true updated_at: type: string format: date-time example: 2019-01-02T00:00:00.000Z readOnly: true CalculatedPrice: type: object description: | The calculated price of an event type or event for a customer. This is calculated from the event type's price ranges, variations and possible discounts related to customer groups. On an event this is the aggregated price of all event types in the event and represents the total price of the event. readOnly: true properties: currency: type: string example: ISK amount: type: number format: double example: 10000 amount_upper_limit: type: number format: double example: 10000 ExpandableEventTypes: type: array items: $ref: "#/components/schemas/ExpandableEventType" ExpandableEventType: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/EventType" EventTypePriceRanges: type: array items: type: object $ref: "#/components/schemas/EventTypePriceRange" EventTypePriceRange: type: object properties: min: #TODO: Extract amount to type? type: number format: double example: 10 max: type: number format: double example: 30 currency: type: string example: EUR EventTypeVariations: type: array items: $ref: "#/components/schemas/EventTypeVariation" EventTypeVariation: type: object properties: id: type: string label: type: string example: Premium prices: type: array items: $ref: "#/components/schemas/EventTypeVariationPrice" customer_group: $ref: "#/components/schemas/ExpandableCustomerGroup" EventTypeVariationPrice: type: object properties: currency: type: string example: EUR amount: type: number format: double example: 40 EventTypeConnections: type: object properties: service_needs: type: string enum: [employee, space, both, neither] description: Does this service need an employee, space, both or neither? customer_selects: type: string enum: [employee, space, both, neither] description: For this event type, does the customer select the employee/space or is it selected automatically at random? booking_question: type: string description: When booking, users are prompted these booking questions and are required to fill in an answer. example: What color do you want to dye your hair? booking_success_message: type: string description: For a successful booking, this message is displayed for each event type booked. example: Remember to bring your smile with you! hidden: type: boolean PaymentSettings: type: object properties: pre_payment_enabled: type: boolean example: true description: | Is pre-payment enabled at all for the company? `true` - Other flags have meaning. `false` - Other flags are ignored. pre_payment_required: type: boolean example: true description: | Is any upfront payment required? `true` - pre_payment_ratio is used to indicate how much. `false` - pre_payment_ratio is ignored. pre_payment_ratio: type: integer format: int32 example: 20 minimum: 0 maximum: 100 description: How much of the total price must be paid in advance in %. optional_full_payment: type: boolean example: true description: | Is full payment optional? `true` - on_location_payment_amount can optionally be fully paid. `false` - no optional payment. settlement_account: $ref: "#/components/schemas/ExpandableSettlementAccount" onboarded_at: type: string format: date-time VoucherSettings: type: object properties: enabled: type: boolean example: true description: Are vouchers enabled? amount_vouchers_enabled: type: boolean example: true description: Are amount vouchers enabled? POSSettings: type: object properties: name_on_invoices: type: string example: Monsters inc. description: The name that will be printed on invoices. legal_address: type: string example: My Street 1, 101 Reykjavik extra_invoice_info: type: string example: Some extra info to include on invoices. description: Extra information to include on invoices. initial_invoice_number: type: integer format: int32 example: 1 description: The initial invoice number for the company. vat_number: type: string example: "123456" description: The VAT number for the company. default_vat: $ref: "#/components/schemas/ExpandableVAT" kennitala: type: string example: "1234567890" description: The kennitala for the company. checkout_first_tab: type: string format: enum enum: ["products", "services"] example: "products" description: The first tab to show in the checkout flow. CustomProperties: type: array items: $ref: "#/components/schemas/CustomProperty" CustomProperty: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a company: type: string example: 7awdXwZoedakjad37a name: type: string example: Age scope: type: string format: enum enum: [events, customer] example: customers type: type: string format: enum enum: [input, textarea, select, options] example: input options: $ref: "#/components/schemas/CustomPropertyOptions" order: type: integer format: int32 example: 1 created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true CustomPropertyOptions: type: array items: $ref: "#/components/schemas/CustomPropertyOption" CustomPropertyOption: type: object properties: id: type: string example: 7awdXwZoedakjad37a name: type: string CustomPropertyValues: type: array items: $ref: "#/components/schemas/CustomPropertyValue" CustomPropertyValue: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a values: type: array items: type: string valueIsId: type: boolean example: true NotificationPreferences: type: object properties: sms: type: boolean example: true email: type: boolean example: true push: type: boolean example: true Attachments: type: array items: $ref: "#/components/schemas/Attachment" Attachment: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a filename: type: string description: Original filename of the uploaded attachment example: my_image.jpg type: type: string example: image/jpeg secure_url: type: string example: https://static.noona.is/attachments/7awdXwZoedakjad37a.jpg relative_url: type: string example: /7awdXwZoedakjad37a.jpg created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true Webhooks: type: array items: $ref: "#/components/schemas/Webhook" Webhook: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a title: type: string example: Event created description: type: string example: This webhook is triggered when an event is created callback_url: type: string example: https://your.server/webhook_handler events: $ref: "#/components/schemas/WebhookEvents" headers: $ref: "#/components/schemas/WebhookHeaders" enabled: type: boolean example: true description: Whether the webhook is enabled or not company: $ref: "#/components/schemas/ExpandableCompany" app: $ref: "#/components/schemas/ExpandableApp" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true WebhookEvents: type: array example: [event.created, event.updated, event.deleted] items: $ref: "#/components/schemas/WebhookEvent" WebhookEvent: type: string format: enum enum: [ customer.created, customer.updated, event.created, event.updated, event.deleted, transaction.created, transaction.updated, ] example: event.created WebhookHeaders: type: array items: $ref: "#/components/schemas/WebhookHeader" WebhookHeader: type: object properties: key: type: string example: Authorization values: type: array items: type: string CallbackData: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a description: The unique ID of each callback. Can be treated as an idempotency key. type: type: string format: enum enum: [event.created, event.updated, event.deleted] example: event.created data: oneOf: - $ref: "#/components/schemas/Event" - $ref: "#/components/schemas/Transaction" created_at: type: string format: date-time readOnly: true FiscalizationRecord: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a company: type: string readOnly: true example: 7awdXwZoedakjad37a data: $ref: "#/components/schemas/FiscalizationRecordData" created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true FiscalizationRecordData: oneOf: - $ref: "#/components/schemas/FiscalizationRecordDataSaltPay" FiscalizationRecordDataSaltPay: type: object required: - provider properties: provider: $ref: "#/components/schemas/FiscalizationProviderSaltPay" external_id: type: string example: "da8wu89dauwd" FiscalizationOnboarding: type: object properties: data: $ref: "#/components/schemas/FiscalizationOnboardingData" FiscalizationOnboardingData: oneOf: - $ref: "#/components/schemas/FiscalizationOnboardingDataSaltPay" FiscalizationOnboardingDataSaltPay: type: object required: - provider properties: provider: $ref: "#/components/schemas/FiscalizationProviderSaltPay" saltpay_company: type: string example: 7awdXwZoedakjad37a description: The Saltpay company that is being onboarded. saltpay_store: type: string example: 7awdXwZoedakjad37a description: The Saltpay store that is being onboarded, the store must be under the specified company. fiscal_code: type: string example: "1234567890" writeOnly: true tax_credentials_username: type: string example: "username" writeOnly: true tax_credentials_password: type: string example: "password" writeOnly: true series: writeOnly: true type: array items: type: string FiscalizationProviderSaltPay: type: string format: enum enum: ["SaltPay"] WebhookInvocations: type: array items: $ref: "#/components/schemas/WebhookInvocation" WebhookInvocation: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a callback_url: type: string example: https://your.server/webhook_handler event: $ref: "#/components/schemas/WebhookEvent" success: type: boolean example: true readOnly: true responses: $ref: "#/components/schemas/WebhookInvocationResponses" webhook: $ref: "#/components/schemas/ExpandableWebhook" company: $ref: "#/components/schemas/ExpandableCompany" failed_tries: type: integer example: 0 created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true WebhookInvocationResponses: type: array items: $ref: "#/components/schemas/WebhookInvocationResponse" WebhookInvocationResponse: type: object properties: code: type: integer example: 200 body: type: string example: OK ExpandableWebhook: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Webhook" SaltpayCompanies: type: array items: $ref: "#/components/schemas/SaltpayCompany" SaltpayCompany: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a name: type: string example: My company bank_account: $ref: "#/components/schemas/SaltpayBankAccount" SaltpayStores: type: array items: $ref: "#/components/schemas/SaltpayStore" SaltpayStore: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a name: type: string example: My store address: $ref: "#/components/schemas/SaltpayStoreAddress" SaltpayStoreAddress: type: object properties: city: type: string example: Reykjavík country: type: string example: Iceland street_address_line_1: type: string example: Laugavegur 1 street_address_line_2: type: string example: 101 zip_code: type: string example: 101 SaltpayTerminals: type: array items: $ref: "#/components/schemas/SaltpayTerminal" SaltpayTerminal: type: object properties: terminal_id: type: string example: 7awdXwZoedakjad37a readOnly: true terminal_name: type: string readOnly: true serial_number: type: string readOnly: true issuer: type: string description: The issuer tied to the terminal. SaltpayBankAccount: type: object properties: id: type: string readOnly: true enterprise_id: type: string example: 7awdXwZoedakjad37a deprecated: true description: "Deprecated: use company_id instead" company_id: type: string example: 7awdXwZoedakjad37a description: The company ID tied to the bank account. user_id: type: string example: 7awdXwZoedakjad37a description: | The user ID tied to the bank account. **Note:** A user can only tie a bank account to his own user ID. kennitala: type: string readOnly: true bank_code: type: string readOnly: true account_type: type: string readOnly: true account_number: type: string readOnly: true PaymentIntent: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a customer_id: type: string example: 7awdXwZoedakjad37a status: type: string format: enum enum: ["inited", "in_progress", "authorized", "consumed", "expired"] currency_code: type: string example: EUR maxLength: 3 description: Currency code (ISO 4217 format) for transaction amount: type: integer format: int32 minimum: 0 description: Amount in cents to be authorized for 3DS flow gateway: type: string example: braintree gateway_account_id: type: string example: "gw_7awdXwZoedakjad37a" expires_at: type: integer format: int64 example: 1257894000 created_at: type: integer format: int64 example: 1257894000 readOnly: true modified_at: type: integer format: int64 example: 1257894000 readOnly: true resource_version: type: integer format: int64 readOnly: true updated_at: type: integer format: int64 example: 1257894000 readOnly: true BillingCustomer: type: object properties: id: readOnly: true type: string example: 7awdXwZoedakjad37a first_name: type: string example: John last_name: type: string example: Smith email: type: string format: email example: john.smith@example.com phone: type: string company: type: string example: Best Company business_registration_id: type: string example: "1234567890" vat_number: type: string example: "1234567890" vat_number_status: type: string format: enum enum: [valid, invalid, not_validated, undetermined] readOnly: true billing_method: readOnly: true type: string format: enum enum: [card, invoice] payment_intent_id: type: string writeOnly: true primary_payment_source_id: type: string readOnly: true card: $ref: "#/components/schemas/Card" readOnly: true billing_address: $ref: "#/components/schemas/BillingAddress" BillingAddress: type: object properties: first_name: type: string example: John last_name: type: string example: Smith email: type: string format: email example: john.smith@example.com phone: type: string company: type: string example: Best Company street: type: string example: 1600 Pennsylvania Avenue NW city: type: string example: Washington D.C. country: type: string example: US postal_code: type: string example: "20500" Card: type: object properties: first_name: type: string last_name: type: string status: type: string format: enum enum: [valid, expiring, expired] last4: type: string card_type: type: string format: enum enum: [ visa, mastercard, american_express, discover, jcb, diners_club, bancontact, other, not_applicable, ] expiry_month: type: integer format: int32 minimum: 1 maximum: 12 expiry_year: type: integer format: int32 PowerupSubscription: type: object properties: id: type: string example: 7awdXwZoedakjad37a customer: type: string example: 7awdXwZoedakjad37a status: type: string format: enum enum: [future, in_trial, active, non_renewing, paused, cancelled] subscription_items: $ref: "#/components/schemas/SubscriptionItems" charged_items: $ref: "#/components/schemas/ChargedBillingItems" coupons: $ref: "#/components/schemas/SubscriptionCoupons" discounts: $ref: "#/components/schemas/SubscriptionDiscounts" currency_code: type: string maxLength: 3 exchange_rate: type: number format: double auto_close_invoices: type: boolean due_invoices_count: type: integer format: int32 total_dues: type: integer format: int32 due_since: type: string format: date-time cancel_reason: type: string format: enum enum: [ not_paid, no_card, fraud_review_failed, non_compliant_eu_customer, tax_calculation_failed, currency_incompatible_with_gateway, non_compliant_customer, ] cancelled_at: type: string format: date-time trial_start: type: string format: date-time description: Start of the trial period for the subscription. Presence of this value for future subscription implies the subscription will go into in_trial state when it starts. current_term_start: type: string format: date-time current_term_end: type: string format: date-time next_billing_at: type: string format: date-time started_at: type: string format: date-time created_at: type: string format: date-time updated_at: type: string format: date-time deleted: type: boolean SubscriptionItems: type: array items: $ref: "#/components/schemas/SubscriptionItem" SubscriptionItem: type: object properties: item_price_id: type: string example: 7awdXwZoedakjad37a item_type: type: string format: enum enum: [plan, addon, charge] quantity: type: integer format: int32 unit_price: type: integer format: int32 amount: type: integer format: int32 trial_end: type: string format: date-time ChargedBillingItems: type: array items: $ref: "#/components/schemas/ChargedBillingItem" ChargedBillingItem: type: object properties: item_price_id: type: string example: 7awdXwZoedakjad37a last_charged_at: type: string format: date-time SubscriptionCoupons: type: array items: $ref: "#/components/schemas/SubscriptionCoupon" SubscriptionCoupon: type: object properties: coupon_id: type: string example: 7awdXwZoedakjad37a coupon_code: type: string example: 50off applied_count: type: integer format: int32 apply_till: type: string format: date-time SubscriptionDiscounts: type: array items: $ref: "#/components/schemas/SubscriptionDiscount" SubscriptionDiscount: type: object properties: id: type: string example: 7awdXwZoedakjad37a coupon: type: string example: 7awdXwZoedakjad37a invoice_name: type: string example: "Good customer discount" apply_on: type: string format: enum enum: [invoice_amount, specific_item_price] item_price_id: type: string example: 7awdXwZoedakjad37a percentage: type: number format: double minimum: 0 maximum: 100 amount: type: integer format: int32 minimum: 0 duration_type: type: string format: enum enum: [one_time, forever, limited_period] period_unit: type: string format: enum enum: [day, week, month, year] period: type: integer format: int32 minimum: 1 currency_code: type: string maxLength: 3 included_in_mrr: type: boolean applied_count: type: integer format: int32 apply_till: type: string format: date-time created_at: type: string format: date-time BillingInvoice: type: object properties: id: type: string example: 7awdXwZoedakjad37a amount: type: integer format: int32 currency: type: string date: type: string format: date-time status: type: string format: enum enum: [paid, posted, payment_due, not_paid, voided, pending] payment_url: type: string BillingInvoices: type: array items: $ref: "#/components/schemas/BillingInvoice" InvoicesFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: status: type: array description: "Filter by invoice payment status" items: type: string format: enum enum: [paid, posted, payment_due, not_paid, voided, pending] PowerupPostBody: type: object properties: product: type: string format: enum enum: [appointments_pro, pos] VAT: type: object properties: id: type: string example: 7awdXwZoedakjad37a ratio: example: 0.24 format: double type: number country_code: type: string example: "IS" default: type: boolean VATs: type: array items: $ref: "#/components/schemas/VAT" ExpandableVAT: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/VAT" DateFilter: type: object properties: from: type: string format: date-time example: "2020-08-24T14:15:22Z" to: type: string format: date-time example: "2022-08-24T14:15:22Z" TimeSlotReservations: type: array items: $ref: "#/components/schemas/TimeSlotReservation" TimeSlotReservation: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a company: $ref: "#/components/schemas/ExpandableCompany" event_types: type: array items: $ref: "#/components/schemas/ExpandableEventType" starts_at: type: string format: date-time ends_at: type: string format: date-time readOnly: true date: type: string example: "2022-09-12" description: "Date of timeslot reservation" duration: type: integer format: int32 example: 30 readOnly: true employee: $ref: "#/components/schemas/ExpandableEmployee" space: $ref: "#/components/schemas/ExpandableSpace" resources: $ref: "#/components/schemas/ExpandableResources" expires_at: type: string format: date-time readOnly: true created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true TimeSlotReservationFilter: description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" allOf: - $ref: "#/components/schemas/CalendarSlotFilter" - type: object properties: from: type: string format: date-time description: Only return reservations where starts_at is after this timestamp. to: type: string format: date-time description: Only return reservations where starts_at is before this timestamp. Holidays: type: array items: $ref: "#/components/schemas/Holiday" Holiday: type: object required: - name - date properties: name: type: string example: "Christmas Day" date: type: string example: "2024-12-25" HolidaysFilter: description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" type: object required: - from - to properties: from: type: string format: date-time description: Only return reservations where starts_at is after this timestamp. to: type: string format: date-time description: Only return reservations where starts_at is before this timestamp. UnifiedActivities: type: array items: $ref: "#/components/schemas/UnifiedActivity" UnifiedActivity: oneOf: - $ref: "#/components/schemas/PaymentActivity" - $ref: "#/components/schemas/CustomerActivity" - $ref: "#/components/schemas/EventTypeActivity" - $ref: "#/components/schemas/EventActivity" Activities: type: array items: $ref: "#/components/schemas/Activity" Activity: type: object required: - field properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a type: type: string format: enum enum: [payment, customer, event_type, event] readOnly: true old_value: $ref: "#/components/schemas/multi_value" new_value: $ref: "#/components/schemas/multi_value" created_at: type: string format: date-time readOnly: true created_by: $ref: "#/components/schemas/ExpandableActor" PaymentActivities: type: array items: $ref: "#/components/schemas/PaymentActivity" PaymentActivity: allOf: - $ref: "#/components/schemas/Activity" - type: object required: - field properties: field: type: string format: enum enum: [status] CustomerActivities: type: array items: $ref: "#/components/schemas/CustomerActivity" CustomerActivity: allOf: - $ref: "#/components/schemas/Activity" - type: object required: - field properties: field: type: string format: enum enum: [ name, kennitala, phone_number, phone_country_code, email, license_plate, notes, ] EventTypeActivities: type: array items: $ref: "#/components/schemas/EventTypeActivity" EventTypeActivity: allOf: - $ref: "#/components/schemas/Activity" - type: object required: - field properties: field: type: string format: enum enum: [ duration, before_pause, pause, after_pause, buffer_after_service, title, ] EventActivities: type: array items: $ref: "#/components/schemas/EventActivity" EventActivity: allOf: - $ref: "#/components/schemas/Activity" - type: object required: - field properties: field: type: string format: enum enum: [ employee, starts_at, duration, status, space, event_types, unconfirmed, sms_booking_reminder, sms_booking_confirmation, sms_extra, email_booking_confirmation, push_booking_confirmation, push_booking_reminder, push_booking_updated, ] ExpandableActor: readOnly: true description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/Actor" Actors: type: array items: $ref: "#/components/schemas/Actor" Actor: type: object description: | The actor that performed the activity. This can be a HQ user or a Marketplace user. required: - type properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a type: type: string format: enum enum: [hq_user, marketplace_user, secretary] name: type: string example: "John Doe" image: $ref: "#/components/schemas/Image" multi_value: oneOf: - $ref: "#/components/schemas/string" - $ref: "#/components/schemas/integer" - $ref: "#/components/schemas/date_time" - $ref: "#/components/schemas/boolean" string: type: string integer: type: integer format: int32 date_time: type: string format: date-time boolean: type: boolean PaymentReceiptRecipient: type: object properties: email: type: string example: example@example.is SalesMetrics: type: object properties: transactions: $ref: "#/components/schemas/AmountMetricsByDay" payments: $ref: "#/components/schemas/AmountMetricsByDay" AmountMetricsByDay: type: object properties: today: $ref: "#/components/schemas/AmountMetric" same_day_last_week: $ref: "#/components/schemas/AmountMetric" percent_change: $ref: "#/components/schemas/AmountChangeMetric" AmountChangeMetric: type: object description: "Change in amount from previous period in percent (75 = 75%)" properties: total: type: number format: double average: type: number format: double count: type: number format: double AmountMetric: type: object properties: currency: type: string total: type: number format: double average: type: number format: double count: type: integer format: int32 EventsMetrics: type: object required: - events - guests - marketplace_events - new_customers - occupancy properties: events: $ref: "#/components/schemas/CountMetricsByTimeFrame" guests: $ref: "#/components/schemas/CountMetricsByTimeFrame" marketplace_events: $ref: "#/components/schemas/CountMetricsByTimeFrame" new_customers: $ref: "#/components/schemas/CountMetricsByTimeFrame" occupancy: $ref: "#/components/schemas/CountMetricsByTimeFrame" CountMetricsByTimeFrame: type: object required: - timeframe - timeframe_week_before - percent_change properties: timeframe: type: integer format: int32 readOnly: true timeframe_week_before: type: integer format: int32 readOnly: true percent_change: type: integer format: int32 description: Change in count from previous period in percent (75 = 75%) readOnly: true Error: type: object required: - message properties: message: type: string example: "Customer onboarding error." FiscalizeTransactionError: allOf: - $ref: "#/components/schemas/Error" - type: object required: - code properties: code: type: string enum: [customer_onboarding_error, tax_exemption_code_missing_error] description: The error code. Only populated for certain errors. CheckoutBehavior: type: object description: "[Behavior](https://api.noona.is/docs/working-with-the-apis/behavior)" properties: type: type: string enum: [checkout, noshow] default: checkout description: | Controls the behviour of event checkout. - `checkout` - A normal checkout after service is performed. - `noshow` - Used when a customer does not show up to an appointment with a prepayment. The line item becomes equal to the payment amount and the payment is created as a subtransaction. Claims: type: array items: $ref: "#/components/schemas/Claim" Claim: type: object properties: id: type: string readOnly: true reference_id: type: string readOnly: true bill_number: type: string readOnly: true due_date: type: string readOnly: true claimant_id: type: string readOnly: true employee_name: type: string readOnly: true customer_name: type: string readOnly: true customer_kennitala: type: string readOnly: true amount: format: int32 type: integer readOnly: true currency: type: string readOnly: true status: $ref: "#/components/schemas/ClaimStatus" created_at: type: string format: date-time readOnly: true ClaimStatus: type: string format: enum example: "Paid" enum: [ Unpaid, Paid, InProgress, CompletedWithErrors, Cancelled, SecondaryCollection, LegalCollection, ] ClaimsFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: created_at: $ref: "#/components/schemas/DateFilter" OAuthConsent: type: object required: - "company_id" - "client_id" - "redirect_uri" - "response_type" - "scopes" properties: company_id: type: string example: 7awdXwZoedakjad37a client_id: type: string example: 7awdXwZoedakjad37a redirect_uri: type: string example: "https://example.com" state: type: string example: "1234567890" response_type: type: string format: enum enum: [code] scopes: $ref: "#/components/schemas/OAuthScopes" OAuthScopes: type: array items: $ref: "#/components/schemas/OAuthScope" OAuthScope: type: string format: enum enum: - activities:read - blocked_times:read - blocked_times:write - claims:read - companies:read - customer_groups:read - customer_groups:write - customers:read - customers:write - employees:read - employees:write - event_statuses:read - event_statuses:write - event_type_groups:read - event_types:read - event_types:write - events:read - events:write - issuers:read - memos:read - memos:write - metrics:read - notifications:read - notifications:write - payment_methods:read - payments:read - payments:write - product_groups:read - product_groups:write - products:read - products:write - properties:read - properties:write - rule_sets:read - rule_sets:write - rule_set_templates:read - rule_set_templates:write - sales:read - sales:write - settlements:read - sms_messages:read - resources:read - resources:write - terminals:read - terminals:write - time_slots:read - user:read - voucher_templates:read - voucher_templates:write - vouchers:read - vouchers:write - waitlists:read - waitlists:write OAuthConsentResponse: type: object properties: redirect_uri: type: string example: "https://example.com/?code=x&state=y" OAuthTokenRequest: type: object required: - "grant_type" properties: grant_type: type: string format: enum enum: [authorization_code, refresh_token] code: type: string example: "7awdXwZoedakjad37a" refresh_token: type: string example: "7awdXwZoedakjad37a" OAuthToken: type: object properties: token_type: type: string example: "Bearer" expires_at: type: string format: date-time example: "2020-08-24T14:15:22Z" access_token: type: string example: "7awdXwZoedakjad37a7awdXwZoedakjad37a7awdXwZoedakjad37a" refresh_token: type: string example: "7awdXwZoedakjad37a7awdXwZoedakjad37a" OAuthPublicKey: type: object description: Public key in the JWK format to validate the JWT signature of ID tokens. required: - kty - use - kid - "n" - e - alg properties: kty: type: string example: "RSA" use: type: string example: "sig" kid: type: string example: "1" "n": type: string description: "base64-encoded-modulus" e: type: string description: "base64-encoded-exponent" alg: type: string example: "RS256" Applications: type: array items: $ref: "#/components/schemas/Application" Application: type: object properties: id: type: string example: 7awdXwZoedakjad37a logo: type: string example: "https://example.com/logo.png" name: type: string example: "King Accounting Connection" description: Shown to the user when they are asked to give consent. developer_name: type: string example: "King Accounting" developer_url: type: string example: "https://example.com/about_king_accounting" description: Home page or documentation for your application. description: type: string example: "King Accounting Connection automatically syncs your Noona POS system with the King Accounting software." redirect_uris: type: array items: type: string example: "https://example.com" scopes: $ref: "#/components/schemas/OAuthScopes" public: type: boolean example: true description: If true, the application will be usable from outside of the company. app_store: type: boolean example: true description: If true, the application will be listed in the Noona App Store. show_in_navigation: type: boolean example: true description: | If `true`, the application will appear in the navigation within Noona HQ. When clicked, the application's main redirect_uri will be displayed in an iFrame. client_id: type: string example: 7awdXwZoedakjad37a readOnly: true client_secret: type: string example: 7awdXwZoedakjad37a7awdXwZoedakjad37a7awdXwZoedakjad37a readOnly: true approved: type: boolean example: true created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true ExpandableApp: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/App" Apps: type: array items: $ref: "#/components/schemas/App" App: type: object properties: id: type: string example: 7awdXwZoedakjad37a client_id: type: string example: 7awdXwZoedakjad37a logo: type: string example: "https://example.com/logo.png" name: type: string example: "King Accounting Connection" description: Shown to the user when they are asked to give consent. developer_name: type: string example: "King Accounting" developer_url: type: string example: "https://example.com/about_king_accounting" description: Home page or documentation for your application. description: type: string example: "King Accounting Connection automatically syncs your Noona POS system with the King Accounting software." redirect_uri: type: string example: "https://example.com" scopes: $ref: "#/components/schemas/OAuthScopes" enabled: type: boolean readOnly: true example: true description: Whether the app is enabled for the company. show_in_navigation: type: boolean example: true description: | If `true`, the application will appear in the navigation within Noona HQ. When clicked, the application's open_uri will be displayed in an iFrame. id_token: type: string readOnly: true description: | The ID token for the app. Only generated for installed apps. The token is sent via a query parameter to the redirect_uri when the user opens an already installed app. example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhdzhkYXd1OWQ4dWF3OThkdSIsImVtYWlsIjoic3ZlcnJpckBub29uYS5pcyIsImV4cCI6MTUxNjIzOTEyMiwiaWF0IjoxNTE2MjM5MDIyLCJhdWQiOiI8Y2xpZW50LWlkPiIsImlzcyI6ImFwaS5ub29uYS5pcyJ9.hgK4lcjTHgVMLPwnVHjsGOOK8cC2b8pkZ2VHxBoFwCk" open_uri: type: string readOnly: true description: | The URL to open the app. example: "https://example.com?id_token=&action=open" uninstall_uri: type: string readOnly: true description: | The URL to uninstall the app. example: "https://example.com?id_token=&action=uninstall" AppFilter: description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" type: object properties: client_id: type: string example: 7awdXwZoedakjad37a description: "Filter by client ID" EventTypeFields: type: array items: $ref: "#/components/schemas/EventTypeField" EventTypeField: type: string format: enum enum: [ payments, buffer_after_service, min_guests_per_booking, max_guests_per_booking, ] SMSMessages: type: array items: $ref: "#/components/schemas/SMSMessage" SMSMessage: type: object properties: id: type: string company: $ref: "#/components/schemas/ExpandableCompany" employee: $ref: "#/components/schemas/ExpandableEmployee" event: $ref: "#/components/schemas/ExpandableEvent" sender_name: type: string body: type: string phone_country_code: type: string phone_number: type: string type: type: string enum: - booking_reminder - booking_confirmation - extra - marketing - voucher - test - phone_verification - login_code - no_show_claim_created status: type: string enum: - created - processing - delivered - undelivered - failed created_at: type: string format: date-time updated_at: type: string format: date-time SMSFilter: description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" type: object properties: phone_number: type: string example: 5812345 description: "Filter by recipient phone number" RefundMarketplaceSaleError: allOf: - $ref: "#/components/schemas/Error" - type: object properties: code: type: string enum: [ payment_has_been_settled, already_refunded, sale_has_been_mutated, ] description: | The error code. Only populated for certain errors. - `payment_has_been_settled`: The payment has already been settled and cannot be refunded. - `already_refunded`: The payment has already been refunded. - `sale_has_been_mutated`: The sale has been mutated and cannot be refunded automatically. VoucherNotification: type: object properties: email: type: string example: test@testy.is description: Email to send voucher to. AdyenOnboardingRequest: type: object required: - redirect_url properties: redirect_url: type: string description: The URL that Adyen should redirect to after the onboarding process is complete. AdyenOnboardingStatus: type: string format: enum enum: [not_started, pending, invalid, valid, rejected] AdyenOnboardingInfo: type: object required: - company_id - status properties: onboarding_link: type: string description: The URL to Adyen's hosted onboarding flow. onboarded_at: type: string format: date-time onboarding_status: $ref: "#/components/schemas/AdyenOnboardingStatus" error_codes: type: array items: type: string transfer_instrument: $ref: "#/components/schemas/AdyenTransferInstrument" AdyenTransferInstrument: oneOf: - $ref: "#/components/schemas/AdyenBankAccount" AdyenBankAccount: type: object required: - type - iban properties: type: type: string format: enum enum: [bank_account] iban: type: string description: The IBAN of the bank account. EventStatuses: type: array items: $ref: "#/components/schemas/EventStatus" EventStatus: type: object properties: id: type: string example: 7awdXwZoedakjad37a company: $ref: "#/components/schemas/ExpandableCompany" name: type: string example: "showup" label: type: string example: "Show-up" description: | The label of the status. This is the label that is shown to the user in the UI. For default Noona statuses the label is translated according to the Accept-Language header. For custom statuses the label is simply the value of the `label` field. order: type: integer format: int32 example: 1 description: | The order of the status. This is the order that the statuses are shown in the UI. For default Noona statuses the order is always 0. Order can be used to sort custom statuses. color: type: string example: "#00FF00" default: type: boolean example: true readOnly: true created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true Users: type: array items: $ref: "#/components/schemas/User" User: type: object properties: id: type: string example: 7awdXwZoedakjad37a readOnly: true email: type: string example: example@example.com companies: $ref: "#/components/schemas/ExpandableCompanies" connections: $ref: "#/components/schemas/UserConnections" employees: $ref: "#/components/schemas/Employees" UserConnections: type: object properties: google: $ref: "#/components/schemas/UserConnectionsGoogle" UserConnectionsGoogle: type: object properties: connected: type: boolean example: true description: Whether the user has connected their Google account. calendar_connection: $ref: "#/components/schemas/ExpandableGoogleCalendarConnection" ExpandableGoogleCalendarConnection: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/GoogleCalendarConnection" GoogleCalendarConnection: type: object properties: id: type: string example: 7awdXwZoedakjad37a readOnly: true name: type: string example: "Noona" default: "Noona" readOnly: true sync_events: type: boolean example: true default: true description: | Whether events should be synced between Noona and Google Calendar. sync_blocked_times_to_google: type: boolean example: true default: true description: | Whether blocked times should be synced from Noona to Google. sync_blocked_times_to_noona: type: boolean example: true default: true description: | Whether blocked times should be synced from Google to Noona. Notices: type: array items: $ref: "#/components/schemas/Notice" Notice: type: object required: - message - variant properties: id: type: string example: 8wa9uiah28dawd123 message: type: string example: Important information! description: The message to be displayed in Noona HQ. variant: type: string format: enum enum: [info, success, warning, error] description: Configures the visual appearance of the notice in Noona HQ. dismissable: type: boolean example: false description: Configures whether the notice can be dismissed by the user. expires_at: type: string format: date-time description: Optionally configure a timestamp for when the notice should expire and stop being visible in Noona HQ. created_at: type: string format: date-time updated_at: type: string format: date-time VoucherFields: type: array items: $ref: "#/components/schemas/VoucherField" VoucherField: type: string format: enum enum: [customer] WaitlistEntries: type: array items: $ref: "#/components/schemas/WaitlistEntry" WaitlistEntry: type: object properties: id: type: string example: 7awdXwZoedakjad37a readOnly: true company: $ref: "#/components/schemas/ExpandableCompany" customer: $ref: "#/components/schemas/ExpandableCustomer" employee: $ref: "#/components/schemas/ExpandableEmployee" event_types: type: array items: $ref: "#/components/schemas/ExpandableEventType" number_of_guests: type: integer format: int32 example: 1 description: Number of guests for the event. notes: type: string expires_at: type: string format: date-time created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true WaitlistEntryResponseOverrides: type: object required: [id, company, customer, event_types, created_at, updated_at] properties: id: type: string example: 7awdXwZoedakjad37a company: $ref: "#/components/schemas/ExpandableCompany" customer: $ref: "#/components/schemas/ExpandableCustomer" employee: $ref: "#/components/schemas/ExpandableEmployee" event_types: type: array items: $ref: "#/components/schemas/ExpandableEventType" number_of_guests: type: integer format: int32 example: 1 description: Number of guests for the event. notes: type: string expires_at: type: string format: date-time created_at: type: string format: date-time updated_at: type: string format: date-time WaitlistEntryResponse: allOf: - $ref: "#/components/schemas/WaitlistEntry" - $ref: "#/components/schemas/WaitlistEntryResponseOverrides" WaitlistEntriesResponse: type: array items: $ref: "#/components/schemas/WaitlistEntryResponse" WaitlistEntryCreate: allOf: - $ref: "#/components/schemas/WaitlistEntry" - $ref: "#/components/schemas/WaitlistEntryCreateOverrides" WaitlistEntryCreateOverrides: type: object required: [company, customer, event_types] properties: company: $ref: "#/components/schemas/ExpandableCompany" customer: $ref: "#/components/schemas/ExpandableCustomer" employee: $ref: "#/components/schemas/ExpandableEmployee" event_types: type: array items: $ref: "#/components/schemas/ExpandableEventType" number_of_guests: type: integer format: int32 example: 1 description: Number of guests for the event. notes: type: string expires_at: type: string format: date-time WaitlistEntryUpdate: allOf: - $ref: "#/components/schemas/WaitlistEntry" - $ref: "#/components/schemas/WaitlistEntryUpdateOverrides" WaitlistEntryUpdateOverrides: type: object properties: company: readOnly: true customer: $ref: "#/components/schemas/ExpandableCustomer" employee: $ref: "#/components/schemas/ExpandableEmployee" event_types: type: array items: $ref: "#/components/schemas/ExpandableEventType" number_of_guests: type: integer format: int32 example: 1 description: Number of guests for the event. notes: type: string expires_at: type: string format: date-time WaitlistFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: employees: type: array items: type: string example: 7awdXwZoedakjad37a description: "Filter by employee IDs" max_duration: type: integer format: int32 example: 60 description: "Filter by maximum duration in minutes" WaitlistEntryFields: type: array items: $ref: "#/components/schemas/WaitlistEntryField" WaitlistEntryField: type: string format: enum enum: [employee] Memos: type: array items: $ref: "#/components/schemas/Memo" Memo: type: object properties: id: type: string example: 7awdXwZoedakjad37a readOnly: true company: $ref: "#/components/schemas/ExpandableCompany" employee: $ref: "#/components/schemas/ExpandableEmployee" title: type: string content: type: string date: type: string created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true MemoResponseOverrides: type: object required: [id, company, title, created_at, updated_at] properties: id: type: string example: 7awdXwZoedakjad37a company: $ref: "#/components/schemas/ExpandableCompany" employee: $ref: "#/components/schemas/ExpandableEmployee" title: type: string content: type: string date: type: string created_at: type: string format: date-time updated_at: type: string format: date-time MemoResponse: allOf: - $ref: "#/components/schemas/Memo" - $ref: "#/components/schemas/MemoResponseOverrides" MemosResponse: type: array items: $ref: "#/components/schemas/MemoResponse" MemoCreate: allOf: - $ref: "#/components/schemas/Memo" - $ref: "#/components/schemas/MemoCreateOverrides" MemoCreateOverrides: type: object required: [company, title] properties: company: $ref: "#/components/schemas/ExpandableCompany" employee: $ref: "#/components/schemas/ExpandableEmployee" title: type: string content: type: string date: type: string MemoUpdate: allOf: - $ref: "#/components/schemas/Memo" - $ref: "#/components/schemas/MemoUpdateOverrides" MemoUpdateOverrides: type: object properties: company: readOnly: true employee: $ref: "#/components/schemas/ExpandableEmployee" title: type: string content: type: string date: type: string MemoFilter: type: object description: "Filtering options for Memos" properties: employees: type: array items: type: string example: 7awdXwZoedakjad37a description: "Filter by employees" EventTypeCategoryGroup: type: object required: - id - name properties: id: type: string example: 7awdXwZoedakjad37a name: type: string example: "Barbering" EventTypeCategoryGroups: type: array items: $ref: "#/components/schemas/EventTypeCategoryGroup" ExpandableEventTypeCategoryGroup: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/EventTypeCategoryGroup" EventTypeCategory: type: object required: - id - group - name properties: id: type: string example: 7awdXwZoedakjad37a group: type: string example: 7awdXwZoedakjad37a name: type: string example: "Men's Haircut" EventTypeCategories: type: array items: $ref: "#/components/schemas/EventTypeCategory" ExpandableEventTypeCategory: description: "[Expandable](https://api.noona.is/docs/working-with-the-apis/expandable_attributes)" oneOf: - $ref: "#/components/schemas/ID" - $ref: "#/components/schemas/EventTypeCategory" TerminalsFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: company_only: type: boolean example: false description: Only get terminals directly connected to the company. RuleSetFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: from: type: string example: "2020-08-24" to: type: string example: "2020-09-24" expand_recurring: type: boolean example: false description: | Expand recurring rule sets into individual rule sets. From/To must also be set for expansions to take place. template_id: type: string example: 7awdXwZoedakjad37a description: Only created from template with this ID. RuleSets: type: array items: $ref: "#/components/schemas/RuleSet" RuleSet: allOf: - type: object properties: date: type: string example: "2020-08-24" description: | The date of the rule set. For recurring rule sets, this is the date where the recurrance rule starts. rrule: type: string description: | [RRULE](https://icalendar.org/iCalendar-RFC-5545/3-3-10-recurrence-rule.html) string. The dtstart property is ignored, and the date attribute of the rule set is used to define the beginnin of the reccurence. rule_set_template_id: type: string example: 7awdXwZoedakjad37a description: The template that was used to create this rule set - $ref: "#/components/schemas/RuleSetTemplate" RuleSetsResponse: type: array items: $ref: "#/components/schemas/RuleSetResponse" RuleSetResponse: allOf: - $ref: "#/components/schemas/RuleSet" - $ref: "#/components/schemas/RuleSetResponseOverrides" RuleSetResponseOverrides: allOf: - type: object required: - "date" properties: date: type: string example: "2020-08-24" description: | The date of the rule set. For recurring rule sets, this is the date where the recurrance rule starts. - $ref: "#/components/schemas/RuleSetTemplateResponse" RuleSetCreateOverrides: type: object required: - "company" - "date" - "starts_at" - "ends_at" properties: company: type: string date: type: string example: "2020-08-24" description: | The date of the rule set. For recurring rule sets, this is the date where the recurrance rule starts. starts_at: description: Start time type: string example: "11:00" ends_at: description: End time type: string example: "13:00" RuleSetCreate: allOf: - $ref: "#/components/schemas/RuleSet" - $ref: "#/components/schemas/RuleSetCreateOverrides" RuleSetUpdateOverrides: type: object required: - "company" properties: company: readOnly: true rule_set_template_id: readOnly: true RuleSetUpdate: allOf: - $ref: "#/components/schemas/RuleSet" - $ref: "#/components/schemas/RuleSetUpdateOverrides" RuleSetTemplates: type: array items: $ref: "#/components/schemas/RuleSetTemplate" RuleSetTemplate: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a company: $ref: "#/components/schemas/ExpandableCompany" title: type: string starts_at: description: Start time type: string example: "11:00" ends_at: description: End time type: string example: "13:00" priority: type: integer format: int32 example: 1 description: | Lower numbers have higher priority. This can be used to explicitly overwrite certain rules on dates where multiple rules apply. rules: $ref: "#/components/schemas/Rules" future_instance_count: readOnly: true type: integer format: int32 example: 1 description: | The number of future instances that exist from this template. **Only set on rule set templates.** next_instance: readOnly: true type: string example: "2020-08-24" description: | The date of the next instance of this template. **Only set on rule set templates.** created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true RuleSetTemplatesResponse: type: array items: $ref: "#/components/schemas/RuleSetTemplateResponse" RuleSetTemplateResponse: allOf: - $ref: "#/components/schemas/RuleSetTemplate" - $ref: "#/components/schemas/RuleSetTemplateResponseOverrides" RuleSetTemplateResponseOverrides: type: object required: - "id" - "company" - "starts_at" - "ends_at" - "rules" - "future_instance_count" - "created_at" - "updated_at" properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a company: $ref: "#/components/schemas/ExpandableCompany" starts_at: description: Start time type: string example: "11:00" ends_at: description: End time type: string example: "13:00" rules: $ref: "#/components/schemas/Rules" future_instance_count: readOnly: true type: integer format: int32 example: 1 description: | The number of future instances that exist from this template. **Only set on rule set templates.** created_at: type: string format: date-time readOnly: true updated_at: type: string format: date-time readOnly: true RuleSetTemplateCreateOverrides: type: object required: - "company" - "starts_at" - "ends_at" properties: company: type: string starts_at: description: Start time type: string example: "11:00" ends_at: description: End time type: string example: "13:00" RuleSetTemplateCreate: allOf: - $ref: "#/components/schemas/RuleSetTemplate" - $ref: "#/components/schemas/RuleSetTemplateCreateOverrides" RuleSetTemplateUpdateOverrides: type: object required: - "company" properties: company: readOnly: true RuleSetTemplateUpdate: allOf: - $ref: "#/components/schemas/RuleSetTemplate" - $ref: "#/components/schemas/RuleSetTemplateUpdateOverrides" Rules: type: array items: $ref: "#/components/schemas/Rule" RuleEntitiesEventTypes: type: object properties: event_types: type: array items: type: string event_types_association: type: string enum: [includes, excludes] default: excludes RuleEntitiesResources: type: object properties: resources: type: array items: type: string resources_association: type: string enum: [includes, excludes] default: excludes RuleEntitiesEmployees: type: object properties: employees: type: array items: type: string employees_association: type: string enum: [includes, excludes] default: excludes RuleType: type: string format: enum enum: [ availability, online_bookings, max_total_pax, event_type_duration, pre_payment, custom_message, ] RuleInterval: type: object properties: starts_at: type: string description: Start time within the day example: "11:00" ends_at: type: string description: End time within the day example: "13:00" AvailabilityRule: allOf: - $ref: "#/components/schemas/RuleInterval" - type: object required: - type - open properties: type: type: string enum: [availability] open: type: boolean example: true default: false OnlineBookingsRule: allOf: - $ref: "#/components/schemas/RuleInterval" - $ref: "#/components/schemas/RuleEntitiesEventTypes" - $ref: "#/components/schemas/RuleEntitiesResources" - $ref: "#/components/schemas/RuleEntitiesEmployees" - type: object required: - type - enabled properties: type: type: string enum: [online_bookings] enabled: type: boolean example: true default: false MaxTotalPaxRule: allOf: - $ref: "#/components/schemas/RuleInterval" - type: object required: - type - max_guests_per_interval - max_same_time_arrival properties: type: type: string enum: [max_total_pax] max_guests_per_interval: type: integer format: int32 example: 25 default: 0 max_same_time_arrival: type: integer format: int32 example: 25 default: 0 EventTypeDurationRule: allOf: - $ref: "#/components/schemas/RuleInterval" - type: object required: - type - duration_overrides properties: type: type: string enum: [event_type_duration] duration_overrides: $ref: "#/components/schemas/EventTypeDurationOverrides" PrePaymentRule: allOf: - $ref: "#/components/schemas/RuleInterval" - type: object required: - type - required - amount properties: type: type: string enum: [pre_payment] required: type: boolean example: true description: | Is any upfront payment required? `true` - pre_payment_ratio is used to indicate how much. `false` - pre_payment_ratio is ignored. amount: type: number format: double example: 5000 description: How much must be paid on booking. CustomMessageRule: allOf: - $ref: "#/components/schemas/RuleInterval" - type: object required: - type - message properties: type: type: string enum: [custom_message] message: type: string example: "Please remember to bring your own towel." EventTypeDurationOverrides: type: array items: $ref: "#/components/schemas/EventTypeDurationOverride" EventTypeDurationOverride: type: object required: - event_type - duration properties: event_type: type: string description: Event type ID duration: type: integer format: int32 description: Duration in minutes Rule: oneOf: - $ref: "#/components/schemas/AvailabilityRule" - $ref: "#/components/schemas/OnlineBookingsRule" - $ref: "#/components/schemas/MaxTotalPaxRule" - $ref: "#/components/schemas/EventTypeDurationRule" - $ref: "#/components/schemas/PrePaymentRule" - $ref: "#/components/schemas/CustomMessageRule" OpeningHoursResponse: type: object example: { "2020-08-24": [ { "starts_at": "11:00", "ends_at": "13:00" }, { "starts_at": "18:00", "ends_at": "21:00" }, ], } additionalProperties: x-additionalPropertiesName: date type: array items: $ref: "#/components/schemas/TimeRange" TimeRange: type: object required: - starts_at - ends_at properties: starts_at: type: string description: Start time within the day example: "11:00" readOnly: true ends_at: type: string description: End time within the day example: "13:00" readOnly: true OpeningHourFilter: type: object description: | [Filtering](https://api.noona.is/docs/working-with-the-apis/filtering) Date range must be less than a year. properties: from: type: string example: "2020-08-24" to: type: string example: "2020-09-24" PaxStatusFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" properties: from: type: string example: "2020-08-24" to: type: string example: "2020-09-24" EventsMetricsFilter: type: object description: "[Filtering](https://api.noona.is/docs/working-with-the-apis/filtering)" required: - from - to properties: from: type: string format: date-time to: type: string format: date-time employee: type: string description: "Filter by employee ID" resource: type: string description: "Filter by resource ID" PaxStatuses: type: object example: { "2024-05-02": { "12:00": { "arrivals": 1, "guests": 1, "max_guests": 50, "max_same_time_arrival": 10, }, "12:15": { "arrivals": 1, "guests": 2, "max_guests": 50, "max_same_time_arrival": 10, }, "12:30": { "arrivals": 0, "guests": 1, "max_guests": 50, "max_same_time_arrival": 10, }, }, } additionalProperties: x-additionalPropertiesName: date type: object additionalProperties: x-additionalPropertiesName: time $ref: "#/components/schemas/PaxStatus" PaxStatus: type: object required: - max_guests - guests - max_same_time_arrival - arrivals properties: max_guests: type: integer format: int32 example: 25 default: 0 guests: type: integer format: int32 example: 25 default: 0 max_same_time_arrival: type: integer format: int32 example: 25 default: 0 arrivals: type: integer format: int32 example: 25 default: 0 MozrestBookingChannels: type: array items: $ref: "#/components/schemas/MozrestBookingChannel" MozrestBookingChannel: type: object properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a name: type: string readOnly: true example: Tripadvisor enabled: type: boolean example: true MozrestBookingChannelResponseOverrides: type: object required: [id, name, enabled] properties: id: type: string readOnly: true example: 7awdXwZoedakjad37a name: type: string readOnly: true example: Tripadvisor enabled: type: boolean example: true MozrestBookingChannelsResponse: type: array items: $ref: "#/components/schemas/MozrestBookingChannelResponse" MozrestBookingChannelResponse: allOf: - $ref: "#/components/schemas/MozrestBookingChannel" - $ref: "#/components/schemas/MozrestBookingChannelResponseOverrides" MozrestBookingChannelUpdateOverrides: type: object required: [enabled] properties: enabled: type: boolean example: true MozrestBookingChannelUpdate: allOf: - $ref: "#/components/schemas/MozrestBookingChannel" - $ref: "#/components/schemas/MozrestBookingChannelUpdateOverrides"