{"swagger":"2.0","info":{"version":"1.1.0","title":"CAPI","termsOfService":"https://www.telavox.com/privacy-policy/","contact":{"name":"Flow","url":"https://telavox.com","email":"support@telavox.se"},"license":{"name":"Apache 2.0","url":"https://www.apache.org/licenses/LICENSE-2.0"}},"host":"admin.joinflow.com","basePath":"/api/capi","tags":[{"name":"Assortment"},{"name":"Addon"},{"name":"Products"},{"name":"Calls"},{"name":"Routing"},{"name":"Contacts"},{"name":"Delivery Places"},{"name":"Extended Transcriptions"},{"name":"Extensions"},{"name":"Pbx"},{"name":"Faxes"},{"name":"Groups"},{"name":"Invoice Places"},{"name":"Ivrs"},{"name":"Numbers"},{"name":"SMS"},{"name":"Users"},{"name":"Mobile Data Usage"},{"name":"Pbx Licenses"},{"name":"Places"},{"name":"Queues"},{"name":"Recorded Calls"},{"name":"Shared Voicemail"},{"name":"Profiles"},{"name":"Templates"},{"name":"Terminals"},{"name":"Credentials"},{"name":"User Licenses"},{"name":"Permissions"},{"name":"Voicemail"}],"schemes":["https"],"consumes":["application/json"],"produces":["application/json"],"paths":{"/v1/assortment/addons/{user}":{"get":{"tags":["Assortment","Addon"],"summary":"Lists all purchasable addons","description":"Returns the addons available to purchase for the user; each result links to its purchase action. Use the assortment-item key with POST /v1/products/addons/{user}/{assortment-item} to buy one.","operationId":"getAvailableAddonProducts","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user to list purchasable addons for","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/AddonAssortmentDto"}}}}}},"/v1/products/addons/{user}":{"get":{"tags":["Products","Addon"],"summary":"Lists all current addons for an extension","description":"Returns the addon products currently active on the user.","operationId":"getAddons","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user whose addons to list","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/AddonProductDto"}}}}}},"/v1/products/addons/{user}/{product}":{"delete":{"tags":["Products","Addon"],"summary":"Removes a currently existing addon for an extension","description":"Does not remove surfpackage, but can cancel a downgrade","operationId":"removeAddon","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user that owns the addon","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"product","in":"path","description":"The addon product to remove","required":true,"type":"string","x-example":"product-123","example":"product-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"204":{"description":"No content"},"400":{"description":"Unable to remove addon"},"403":{"description":"This addon does not belong to this user."}}}},"/v1/products/addons/{user}/{assortment-item}":{"post":{"tags":["Products","Addon"],"summary":"Buy an addon","description":"Purchases the addon identified by its assortment-item key for the user. List the purchasable addons via /v1/assortment/addons/{user}.","operationId":"buyAddon","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user to buy the addon for","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"assortment-item","in":"path","description":"Addon to purchase","required":true,"type":"string","x-example":"assortmentItem-1090484","example":"assortmentItem-1090484"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/AddonProductDto"}},"400":{"description":"Addon not available for this user"},"500":{"description":"Order cannot be completed, check the message for more information"}}}},"/v1/assortment/{country}":{"get":{"tags":["Assortment"],"summary":"Lists all available assortment options for the different currencies in the supplied country","description":"Returns the country/currency combinations available in the given country; each links to its assortment options.","operationId":"getAssortmentCountryCurrencies","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"The country to list assortment options for","required":true,"type":"string","x-example":"country-SE","example":"country-SE"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/AssortmentsInfoDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/assortment":{"get":{"tags":["Assortment"],"summary":"Lists all available assortments options for the different combinations of country and currency available","description":"Returns every country/currency combination the customer can buy products in; each links to its assortment options.","operationId":"getAssortmentCountries","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/AssortmentsInfoDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/assortment/{country}/{currency}":{"get":{"tags":["Assortment"],"summary":"Lists all available assortments for the supplied country and currency available","description":"Returns links to the user-license and (when purchasable) PBX-license assortments for this country/currency combination.","operationId":"getAvailableAssortmentOptions","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"The country of the assortment","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"The currency of the assortment","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/AssortmentsInfoDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/me/hangup":{"post":{"tags":["Calls"],"summary":"Hang up the current user's ongoing call","description":"Ends the call currently in progress for the authenticated user (users/me).","operationId":"hangUpCurrentCall","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/me/dial":{"post":{"tags":["Calls"],"summary":"Place a call from the current user (click-to-dial)","description":"Initiates a call from the authenticated user's phone (users/me) to the number in the request body. phoneNumber is mandatory; autoAnswer controls whether the user's own leg auto-answers (true) or must be picked up first (false, default).","operationId":"dialNumber","produces":["application/json"],"parameters":[{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/DialNumberDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/me/calls/history":{"get":{"tags":["Calls"],"summary":"List the current user's call history","description":"Returns the authenticated user's own call records (users/me). Filterable by call type and date range; the range is capped to the last 4 months.","operationId":"getMyCallHistory","produces":["application/json"],"parameters":[{"name":"callType","in":"query","description":"Call type for filtering, must be \"incoming\", \"outgoing\", \"missed\", or \"all\" (default) ","required":false,"type":"string","default":"all","x-example":"incoming","enum":["OUTGOING","MISSED","INCOMING","ALL"],"example":"incoming"},{"name":"fromDate","in":"query","description":"Earliest call date in yyyy-MM-dd format, default and max value is 4 months back","required":false,"type":"string","x-example":"2023-03-08","example":"2023-03-08"},{"name":"toDate","in":"query","description":"Latest call date in yyyy-MM-dd format, should not be later than today, default is today","required":false,"type":"string","x-example":"2023-05-01","example":"2023-05-01"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/CallRecordDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/{extension}/calls":{"get":{"tags":["Calls"],"summary":"List a user's ongoing calls","description":"Real-time snapshot of the calls currently in progress for the given user extension.","operationId":"getOngoingCallsForUser","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the user","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/OngoingCallDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1":{"get":{"summary":"List the available top-level CAPI resources","description":"Entry point of the CAPI: returns hypermedia links to the top-level resource collections (assortment, invoice places, products, reserved phone numbers, terminals, extensions, phone numbers, webhooks, contacts, groups, templates, delivery places and places).","operationId":"listRootResources","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/LinkDto"}}}}},"/v1/contacts/colleagues/{user}":{"get":{"tags":["Contacts"],"summary":"Get the contact of a specific colleague","description":"","operationId":"getColleague","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user (colleague) whose contact to fetch","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ContactDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Contacts"],"summary":"Update user contact details","description":"Updates a single user's contact information.","operationId":"updateColleagueContact","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user whose contact to update","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateContactDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ContactDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/contacts/colleagues":{"get":{"tags":["Contacts"],"summary":"List contacts for all colleagues","description":"Returns the contact details for every user (colleague) on the customer. Supports pagination.","operationId":"listAllColleagues","produces":["application/json"],"parameters":[{"name":"pageSize","in":"query","description":"Number of items per page (default 20)","required":false,"type":"integer","format":"int32","x-example":20,"example":20},{"name":"pageNumber","in":"query","description":"Zero-based page number (default 0)","required":false,"type":"integer","format":"int32","x-example":0,"example":0}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ContactDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Contacts"],"summary":"Update contacts for all colleagues","description":"Applies the same contact changes to every user; supports all Update Contact fields.","operationId":"updateAllColleagueContacts","produces":["application/json"],"parameters":[{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/MassUpdateContactDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ContactDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/contacts/schema":{"get":{"tags":["Contacts"],"summary":"List all visible contact fields for colleagues","description":"Returns the customer's custom contact fields, which can then be set per user via the extraFields of the contact update endpoints.","operationId":"listContactFields","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ContactSchemaFieldDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Contacts"],"summary":"Create a new contact field, visible on all colleagues","description":"Adds a custom field to the customer's contact schema; it can then be set per user via the extraFields of the contact update endpoints. Prefix the name with '!' to make it admin-only (e.g. !CNAP).","operationId":"createContactField","produces":["application/json"],"parameters":[{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateSchemaFieldDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ContactSchemaFieldDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/contacts/schema/{field}":{"delete":{"tags":["Contacts"],"summary":"Completely remove a contact field, deleting all values for this field for all colleagues","description":"","operationId":"deleteContactField","produces":["application/json"],"parameters":[{"name":"field","in":"path","description":"Name of the contact field","required":true,"type":"string","x-example":"occupation","example":"occupation"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"204":{"description":"No content"},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/contacts":{"get":{"tags":["Contacts"],"summary":"List available contact resources in this api","description":"Returns links to the contact collections (user/colleague contacts and PBX contacts).","operationId":"listContactResources","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/LinkDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Contacts"],"summary":"Update contacts for all users and pbxs","description":"Applies the same contact changes to every user and PBX service; supports all Update Contact fields and can be narrowed with an invoice-place filter in the body.","operationId":"updateAllContacts","produces":["application/json"],"parameters":[{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/MassUpdateContactDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ContactDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/delivery-places":{"get":{"tags":["Delivery Places"],"summary":"List the customer's delivery places","description":"A delivery place pairs an address with recipient details and is used as a shipping destination.","operationId":"getDeliveryPlaces","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/DeliveryPlaceDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Delivery Places"],"summary":"Create a delivery place","description":"The request body must include a place, a description and a recipient first name.","operationId":"createDeliveryPlace","produces":["application/json"],"parameters":[{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateDeliveryPlaceDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/DeliveryPlaceDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/delivery-places/{delivery-place}":{"put":{"tags":["Delivery Places"],"summary":"Update a delivery place","description":"Updates an existing delivery place. Only the fields present in the request body are updated; fields that are omitted (null) keep their current value.","operationId":"updateDeliveryPlace","produces":["application/json"],"parameters":[{"name":"delivery-place","in":"path","description":"The delivery place to update","required":true,"type":"string","x-example":"deliveryPlace-1","example":"deliveryPlace-1"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateDeliveryPlaceDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/DeliveryPlaceDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/delivery-places/{delivery-place}/mass-assign":{"put":{"tags":["Delivery Places"],"summary":"Assign users to a delivery place","description":"Assigns the supplied users to this delivery place using their user keys.\nThe body should contain an array of user keys as strings.\n\nExample body: [\"extension-123\", \"extension-456\"]","operationId":"addExtensionsToDeliveryPlace","produces":["application/json"],"parameters":[{"name":"delivery-place","in":"path","description":"The delivery place to assign users to","required":true,"type":"string","x-example":"deliveryPlace-1","example":"deliveryPlace-1"},{"in":"body","name":"body","required":false,"schema":{"type":"array","items":{"$ref":"#/definitions/ExtensionKey"}}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/extendedTranscriptions/calls/{callRecord}":{"get":{"tags":["Extended Transcriptions"],"summary":"Get a business extended transcription by call record ID","description":"Returns the full transcription content for a business (non-personal) recording identified by call ID.","operationId":"getByCallId","produces":["application/json"],"parameters":[{"name":"callRecord","in":"path","description":"The call ID, as returned by the callId field of a call record","required":true,"type":"string","x-example":"ab12cd34-ef56-7890-ab12-cd34ef567890","example":"ab12cd34-ef56-7890-ab12-cd34ef567890"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtendedTranscriptionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/extendedTranscriptions/{extendedTranscription}":{"get":{"tags":["Extended Transcriptions"],"summary":"Get a business extended transcription by key","description":"Returns the full transcription content for a business (non-personal) recording. The extendedTranscription key is obtained from the list endpoints.","operationId":"getByKey","produces":["application/json"],"parameters":[{"name":"extendedTranscription","in":"path","description":"Transcription key, e.g. extendedTranscription-{UUID}","required":true,"type":"string","x-example":"extendedTranscription-550e8400-e29b-41d4-a716-446655440000","example":"extendedTranscription-550e8400-e29b-41d4-a716-446655440000"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtendedTranscriptionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/{extension}/extendedTranscriptions":{"get":{"tags":["Extended Transcriptions"],"summary":"List business extended transcriptions for an extension","description":"Returns transcription metadata for all business (non-personal) calls on the specified extension within the given date range. Use the transcriptionKey from each item to fetch the full content.","operationId":"listForExtension","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"Extension key","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"fromDate","in":"query","description":"Earliest date in yyyy-MM-dd format","required":false,"type":"string","x-example":"2024-01-01","example":"2024-01-01"},{"name":"toDate","in":"query","description":"Latest date in yyyy-MM-dd format","required":false,"type":"string","x-example":"2024-12-31","example":"2024-12-31"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ExtendedTranscriptionSummaryDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/me/extendedTranscriptions":{"get":{"tags":["Extended Transcriptions"],"summary":"List my business extended transcriptions","description":"Returns transcription metadata for all business (non-personal) calls on the authenticated user's own extension within the given date range.","operationId":"listMyTranscriptions","produces":["application/json"],"parameters":[{"name":"fromDate","in":"query","description":"Earliest date in yyyy-MM-dd format","required":false,"type":"string","x-example":"2024-01-01","example":"2024-01-01"},{"name":"toDate","in":"query","description":"Latest date in yyyy-MM-dd format","required":false,"type":"string","x-example":"2024-12-31","example":"2024-12-31"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ExtendedTranscriptionSummaryDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/sip":{"get":{"tags":["Extensions"],"summary":"Get the SIP registrations for the specified user","description":"Returns the user's SIP registrations (the devices currently registered for the user).","operationId":"getSipRegistrationsForUser","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user whose SIP registrations to fetch","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"active","in":"query","description":"If true, only return registrations that have not expired","required":false,"type":"boolean","x-example":true,"example":true}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/SIPRegistrationDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions":{"get":{"tags":["Extensions"],"summary":"Available extension resources in this api.","description":"Returns links to the extension collections (users and PBX services).","operationId":"listExtensionResources","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/LinkDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/faxes/{fax}":{"get":{"tags":["Pbx","Faxes"],"summary":"Get a fax extension's details","description":"Returns the fax extension, including its fax receiver (email) settings.","operationId":"getFax","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fax","in":"path","description":"Extension key of the fax","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/FaxExtensionDto"}}}},"put":{"tags":["Pbx","Faxes"],"summary":"Update a fax extension's name","description":"Only the name can be changed. When supplied it must be 1-120 characters and not blank; omit it to leave the name unchanged.","operationId":"updateFax","produces":["application/json;charset=utf-8"],"parameters":[{"name":"fax","in":"path","description":"Extension key of the fax","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateFaxDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/FaxExtensionDto"}}}}},"/v1/extensions/pbx/faxes":{"get":{"tags":["Pbx","Faxes"],"summary":"List the customer's fax extensions","description":"Returns every FAX-type extension on the customer, optionally limited to a single invoice place.","operationId":"listFaxes","produces":["application/json;charset=utf-8"],"parameters":[{"name":"invoice-place","in":"query","description":"Limit results to faxes billed to this invoice place","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ExtensionDto"}}}}},"post":{"tags":["Pbx","Faxes"],"summary":"Create a fax extension","description":"Creates a FAX-type extension assigned to the given phone number. A country and phone number are required.","operationId":"createFax","produces":["application/json;charset=utf-8"],"parameters":[{"name":"country","in":"query","description":"Country the fax belongs to","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"invoice-place","in":"query","description":"Invoice place to bill the fax to; the customer's default is used if omitted","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"},{"name":"phone-number","in":"query","description":"Phone number (key) to assign to the fax; must be available to the customer","required":true,"type":"string","x-example":"phoneNumber-123","example":"phoneNumber-123"},{"name":"name","in":"query","description":"Display name for the fax (max 120 characters); a Fax-<id> name is generated if omitted","required":false,"type":"string","x-example":"Support Fax","example":"Support Fax"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtensionDto"}}}}},"/v1/groups/{groupKey}/members":{"get":{"tags":["Groups"],"summary":"List the direct members of a group.","description":"Returns the members that belong directly to the group, in their current order. Each member carries its group-member key, position, type (user, queue, refer, fax, profile, contact or group) and the key of the underlying entity. Returns an empty list when the group has no members.","operationId":"getGroupMembers","produces":["application/json"],"parameters":[{"name":"groupKey","in":"path","description":"Key of the group whose members to list.","required":true,"type":"string","x-example":"group-123","example":"group-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/GroupMemberDto"}}}}},"put":{"tags":["Groups"],"summary":"Add members to a group.","description":"Adds one or more users or PBX services to the group and returns the group's members after the change. Members are supplied as a comma-separated list of entity keys in the memberKeys query parameter; members that are already present are ignored, and group keys are silently skipped (a group cannot be a member of another group). Passing no keys leaves the group unchanged and returns an empty list. The customer's automatically-created default group is protected and its membership cannot be modified; attempting to do so is rejected.","operationId":"addGroupMembers","produces":["application/json"],"parameters":[{"name":"groupKey","in":"path","description":"Key of the group to add members to.","required":true,"type":"string","x-example":"group-123","example":"group-123"},{"name":"memberKeys","in":"query","description":"Comma-separated list of entity keys (users or PBX services such as extensions, profiles or contacts) to add to the group.","required":true,"type":"string","x-example":"extension-123, profilePlus-12, contact-123","example":"extension-123, profilePlus-12, contact-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/GroupMemberDto"}}}}},"delete":{"tags":["Groups"],"summary":"Remove members from a group.","description":"Removes one or more members from the group and returns the group's remaining members. Members are supplied as a comma-separated list of entity keys in the memberKeys query parameter; keys that are not members of the group are ignored. Passing no keys leaves the group unchanged and returns an empty list. The customer's automatically-created default group is protected and its membership cannot be modified; attempting to do so is rejected.","operationId":"deleteGroupMembers","produces":["application/json"],"parameters":[{"name":"groupKey","in":"path","description":"Key of the group to remove members from.","required":true,"type":"string","x-example":"group-123","example":"group-123"},{"name":"memberKeys","in":"query","description":"Comma-separated list of entity keys (users or PBX services such as extensions, profiles or contacts) to remove from the group.","required":true,"type":"string","x-example":"extension-123, profilePlus-12, contact-123","example":"extension-123, profilePlus-12, contact-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/GroupMemberDto"}}}}}},"/v1/groups/{groupKey}":{"put":{"tags":["Groups"],"summary":"Rename an existing group.","description":"Updates the name of an existing group and returns the updated group. The new name is supplied in the request body and may be up to 60 characters; a blank name is rejected, while an omitted name (a missing body or null name) leaves the current name unchanged. The customer's automatically-created default group is protected and cannot be renamed; attempting to do so is rejected.","operationId":"updateGroupName","produces":["application/json"],"parameters":[{"name":"groupKey","in":"path","description":"Key of the group to rename.","required":true,"type":"string","x-example":"group-123","example":"group-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/GroupNameDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/OutgoingGroupDto"}}}},"delete":{"tags":["Groups"],"summary":"Delete a group by its key.","description":"Permanently deletes the group from the customer and returns 204 No Content. Members are detached from the group, but the underlying users, queues and other entities referenced by the group are not removed. The customer's automatically-created default group is protected and cannot be deleted; attempting to do so is rejected.","operationId":"deleteGroup","produces":["application/json"],"parameters":[{"name":"groupKey","in":"path","description":"Key of the group to delete.","required":true,"type":"string","x-example":"group-123","example":"group-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"default":{"description":"successful operation"}}}},"/v1/groups/{groupKey}/members/{memberKey}/move-up":{"put":{"tags":["Groups"],"summary":"Move a group member up in the ordering.","description":"Moves the member up by the given number of steps within the group, changing its position relative to the other members, and returns 204 No Content. Defaults to a single step; if the requested number of steps would move the member past the top it is placed first, and a value of 0 leaves the member in place. Negative values are rejected. Member order affects how the group is presented and how BLF buttons are laid out. Reordering is only supported on independent groups: if the group is itself a member of another group, or contains a sub-group as a member, the request is rejected. The customer's automatically-created default group is protected and its members cannot be reordered.","operationId":"moveUpGroupMember","produces":["application/json"],"parameters":[{"name":"groupKey","in":"path","description":"Key of the group containing the member.","required":true,"type":"string","x-example":"group-123","example":"group-123"},{"name":"memberKey","in":"path","description":"Key of the group member to move.","required":true,"type":"string","x-example":"groupMember-123","example":"groupMember-123"},{"name":"steps","in":"query","description":"Number of positions to move the member up.","required":false,"type":"integer","default":1,"format":"int32","x-example":3,"example":3}],"security":[{"BEARER_TOKEN":[]}],"responses":{"default":{"description":"successful operation"}}}},"/v1/groups/{groupKey}/members/{memberKey}/move-down":{"put":{"tags":["Groups"],"summary":"Move a group member down in the ordering.","description":"Moves the member down by the given number of steps within the group, changing its position relative to the other members, and returns 204 No Content. Defaults to a single step; if the requested number of steps would move the member past the bottom it is placed last, and a value of 0 leaves the member in place. Negative values are rejected. Member order affects how the group is presented and how BLF buttons are laid out. Reordering is only supported on independent groups: if the group is itself a member of another group, or contains a sub-group as a member, the request is rejected. The customer's automatically-created default group is protected and its members cannot be reordered.","operationId":"moveDownGroupMember","produces":["application/json"],"parameters":[{"name":"groupKey","in":"path","description":"Key of the group containing the member.","required":true,"type":"string","x-example":"group-123","example":"group-123"},{"name":"memberKey","in":"path","description":"Key of the group member to move.","required":true,"type":"string","x-example":"groupMember-123","example":"groupMember-123"},{"name":"steps","in":"query","description":"Number of positions to move the member down.","required":false,"type":"integer","default":1,"format":"int32","x-example":3,"example":3}],"security":[{"BEARER_TOKEN":[]}],"responses":{"default":{"description":"successful operation"}}}},"/v1/groups":{"get":{"tags":["Groups"],"summary":"List all groups for the customer.","description":"Returns every group belonging to the authenticated customer, each with its key and name. Returns an empty list when the customer has no groups.","operationId":"getGroups","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/OutgoingGroupDto"}}}}},"post":{"tags":["Groups"],"summary":"Create a new group, optionally with a name.","description":"Creates a new, empty group for the authenticated customer and returns it with its generated key. The name is optional and may be up to 60 characters; if omitted the group is given a default name, and a name consisting only of whitespace is rejected. Groups are used to restrict visibility between sites within a customer and to configure BLF (busy lamp field) buttons on desk phones. Add members afterwards with PUT /v1/groups/{groupKey}/members.","operationId":"createGroup","produces":["application/json"],"parameters":[{"name":"name","in":"query","description":"Optional name for the group (max 60 characters). If omitted, a default name is assigned; a blank name is rejected.","required":false,"type":"string","x-example":"Site X","example":"Site X"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/OutgoingGroupDto"}}}}},"/v1/invoice-places/{country}":{"get":{"tags":["Invoice Places"],"summary":"List the customer's invoice places in a given country","description":"","operationId":"listInvoicePlacesByCountry","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"The country to list invoice places for","required":true,"type":"string","x-example":"country-SE","example":"country-SE"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/InvoicePlaceDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/invoice-places":{"get":{"tags":["Invoice Places"],"summary":"List the customer's invoice places","description":"Invoice places group users by geographical site so invoices can be segmented, and act as a filter key for bulk operations and number pools. Optionally narrow the result by place name or registration number.","operationId":"listInvoicePlaces","produces":["application/json"],"parameters":[{"name":"place-name","in":"query","description":"The name of the place associated with the invoice place","required":false,"type":"string","x-example":"misc","example":"misc"},{"name":"regnr","in":"query","description":"The registration number of the invoice place","required":false,"type":"string","x-example":"12312312-1231","example":"12312312-1231"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/InvoicePlaceDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/invoice-places/{country}/{currency}":{"get":{"tags":["Invoice Places"],"summary":"List the customer's invoice places for a given country and currency","description":"","operationId":"listInvoicePlacesByCountryAndCurrency","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"The country to list invoice places for","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"The currency to filter invoice places by","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/InvoicePlaceDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/invoice-places/{invoice-place}":{"put":{"tags":["Invoice Places"],"summary":"Assign users to an invoice place","description":"Moves the supplied users to this invoice place using their user keys.\nThe body should contain an array of user keys as strings.\n\nExample body: [\"extension-123\", \"extension-456\"]","operationId":"addExtensionsToInvoicePlace","produces":["application/json"],"parameters":[{"name":"invoice-place","in":"path","description":"Invoice place key","required":true,"type":"string","x-example":"invoicePlace-1","example":"invoicePlace-1"},{"in":"body","name":"body","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/ivrs":{"get":{"tags":["Pbx","Ivrs"],"summary":"List all IVRs","description":"Returns every IVR (interactive voice response / auto-attendant) extension on the customer.","operationId":"listIvrs","produces":["application/json"],"parameters":[{"name":"invoice-place","in":"query","description":"Only return IVRs billed to this invoice place","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ExtensionDto"}}}}},"post":{"tags":["Pbx","Ivrs"],"summary":"Create a new IVR","description":"Creates an IVR (auto-attendant) PBX extension in the given country. A technical placeholder number is assigned if no phone number is supplied, and a default name is generated if none is given.","operationId":"createIvr","produces":["application/json"],"parameters":[{"name":"country","in":"query","description":"Country the IVR should belong to","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"invoice-place","in":"query","description":"Invoice place to bill the IVR to; required when creating services outside the default country","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"},{"name":"phone-number","in":"query","description":"Phone number to assign to the IVR; a technical placeholder is used if omitted","required":false,"type":"string","x-example":"phoneNumber-123","example":"phoneNumber-123"},{"name":"name","in":"query","description":"Display name for the IVR; a default is generated if omitted","required":false,"type":"string","x-example":"Support 24/7","example":"Support 24/7"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtensionDto"}},"404":{"description":"Must supply an invoice place when creating pbx services for this country (only when creating services in the non default country)"}}}},"/v1/phone-numbers/main":{"get":{"tags":["Numbers"],"summary":"List all numbers that can be used as a display number by any extension","description":"Main numbers are phone numbers promoted so they can be presented as an outgoing display number. The optional filter accepts national or E.164 form (a leading 00 or 0 is normalised).","operationId":"listMainPhoneNumbers","produces":["application/json"],"parameters":[{"name":"number","in":"query","description":"Phone number that the returned main numbers must match","required":false,"type":"string","x-example":"040123123","example":"040123123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/MainPhoneNumberDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Numbers"],"summary":"Make a number usable as a display number by any extension","description":"Promotes a phone number to a main number. The number must already be owned by the customer.","operationId":"createMainPhoneNumber","produces":["application/json"],"parameters":[{"name":"phone-number","in":"query","description":"The phone number to promote to a main number","required":true,"type":"string","x-example":"phoneNumber-123","example":"phoneNumber-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/MainPhoneNumberDto"}},"400":{"description":"Main number already exists"},"401":{"description":"Authentication failure"},"403":{"description":"Number not owned"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/phone-numbers/main/bulk":{"post":{"tags":["Numbers"],"summary":"Make numbers usable as display number by any extension","description":"Bulk version of POST /phone-numbers/main; repeat the phone-number parameter once per number. Every number must already be owned by the customer.","operationId":"createMainPhoneNumbers","produces":["application/json"],"parameters":[{"name":"phone-number","in":"query","description":"A phone number to promote; repeat the parameter for each number","required":true,"type":"array","items":{"type":"string"},"collectionFormat":"multi","x-example":"phoneNumber-123","example":"phoneNumber-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/MainPhoneNumberDto"}}},"400":{"description":"Main number already exists"},"401":{"description":"Authentication failure"},"403":{"description":"Number not owned"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/phone-numbers/main/{main-phone-number}":{"delete":{"tags":["Numbers"],"summary":"Remove possibility of a number to be used as a display number by any extension","description":"Demotes a main number; the underlying phone number itself is not removed.","operationId":"deleteMainPhoneNumber","produces":["application/json"],"parameters":[{"name":"main-phone-number","in":"path","description":"The main number to remove","required":true,"type":"string","x-example":"mainPhoneNumber-123","example":"mainPhoneNumber-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"204":{"description":"No content"},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Main phone number not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/me/sms":{"post":{"tags":["SMS"],"summary":"Send SMS to a particular number","description":"Sends an SMS from the authenticated user. The body must include the destination phone number and the message text.","operationId":"sendSMS","produces":["application/json"],"parameters":[{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/SendSMSDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/mobile-data-usage/{from}/{to}":{"get":{"tags":["Users","Mobile Data Usage"],"summary":"List mobile data usage for all users","description":"Reports per-user mobile data usage over the given period. The range must not exceed one month and cannot be in the future. Rate-limited to 5 calls per hour.","operationId":"listMobileDataUsage","produces":["application/json"],"parameters":[{"name":"from","in":"path","description":"Start of the period to list usage for","required":true,"type":"string","x-example":"2023-03-01","example":"2023-03-01"},{"name":"to","in":"path","description":"End of the period to list usage for","required":true,"type":"string","x-example":"2023-04-01","example":"2023-04-01"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/MobileUsageReportDto"}},"400":{"description":"Input dates are invalid"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/contacts/pbx/{extension}":{"get":{"tags":["Contacts"],"summary":"Get the contact card of a single PBX service","description":"Returns the contact card of the PBX service identified by its extension key. Responds 404 if the extension is not a PBX service visible to the caller.","operationId":"getPbxContact","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"Extension key of the PBX service to fetch","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ContactDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Contacts"],"summary":"Update the editable contact fields of a PBX service (e.g. CNAP)","description":"Updates the contact-card fields of the PBX service identified by its extension key. A PBX service's contact is bound to its account, so its name, number and category cannot be changed here. Do NOT include firstName, lastName, mobileNumber or contactCategory in the request body. Send only the fields you want to change, for example description, department, keywords, companyname, occupation, regnr, the address fields, the alternative numbers and extraFields. Returns the updated contact.","operationId":"updatePbxContact","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"Extension key of the PBX service whose contact to update","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateContactDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ContactDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/contacts/pbx":{"get":{"tags":["Contacts"],"summary":"List the contact cards of all PBX services","description":"Returns the contact card of every PBX service (queues, IVRs, etc.) visible to the authenticated administrator.","operationId":"listAllPbxs","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ContactDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Contacts"],"summary":"Update the contact cards of multiple PBX services at once","description":"Applies the same contact-field changes to every PBX service matched by the filter in the request body. As with the single-extension update, do NOT include firstName, lastName, mobileNumber or contactCategory in the body. Returns the updated contacts.","operationId":"updateAllPbxs","produces":["application/json"],"parameters":[{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/MassUpdateContactDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ContactDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/assortment/{country}/{currency}/pbx-licenses":{"get":{"tags":["Assortment","Pbx Licenses"],"summary":"Lists all purchasable PBX licenses for the supplied country","description":"Returns the PBX licenses available to buy for the country/currency; each result links to its purchase action. Empty if PBX licenses cannot be purchased for this combination.","operationId":"listAvailablePbxLicenseProducts","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"The country to list purchasable PBX licenses for","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"The currency to list purchasable PBX licenses for","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/PbxLicenseAssortmentDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products/pbx-licenses/{country}/{currency}":{"get":{"tags":["Products","Pbx Licenses"],"summary":"Get the active Pbx license","description":"Returns the customer's currently active PBX license for the given country and currency.","operationId":"getLicense","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"Currency key","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/PbxLicenseProductDto"}}}}},"/v1/products/pbx-licenses/{country}":{"get":{"tags":["Products","Pbx Licenses"],"summary":"List all currencies that have available licenses","description":"","operationId":"getPbxLicensesInfoByCountry","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/AssortmentsInfoDto"}}}}}},"/v1/products/pbx-licenses":{"get":{"tags":["Products","Pbx Licenses"],"summary":"List the country and currency for the Pbx License","description":"Returns the customer's country/currency for PBX licensing, with a link to the owned licenses.","operationId":"getPbxLicensesInfo","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/AssortmentsInfoDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products/pbx-licenses/{country}/{currency}/{assortment-item}":{"post":{"tags":["Products","Pbx Licenses"],"summary":"Purchase a pbx license","description":"Purchases the PBX license identified by the assortment-item key. Supply an invoice place when the customer uses invoice places. Fails if the PBX service limit is reached or a bound license would be downgraded.","operationId":"buyPbxLicense","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"Currency key","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"},{"name":"assortment-item","in":"path","description":"The PBX license to purchase","required":true,"type":"string","x-example":"assortmentItem-123","example":"assortmentItem-123"},{"name":"invoiceplace","in":"query","description":"Invoice place to bill the license to (required when the customer uses invoice places)","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/PbxLicenseProductDto"}},"404":{"description":"one or multiple params are not available"}}}},"/v1/extensions/pbx":{"get":{"tags":["Pbx"],"summary":"List all pbx extensions","description":"PBX services (queues, IVRs, faxes, shared voicemails, …) are represented as extensions. Optionally filter by invoice place or by an exact phone-number match.","operationId":"listPbxs","produces":["application/json"],"parameters":[{"name":"invoice-place","in":"query","description":"Only return PBX services billed to this invoice place","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"},{"name":"number","in":"query","description":"Phone number in international format; matched exactly","required":false,"type":"string","x-example":"00461230123","example":"00461230123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ExtensionDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/{extension}":{"get":{"tags":["Pbx"],"summary":"Get a pbx extension using the extension key","description":"","operationId":"getPbxExtension","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The PBX extension to fetch","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"delete":{"tags":["Pbx"],"summary":"Delete a pbx extension","description":"Deletes the PBX service (queue, IVR, fax, shared voicemail, …) identified by the extension key.","operationId":"deletePbx","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The PBX extension to delete","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"204":{"description":"No content"},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/resources":{"get":{"tags":["Pbx"],"summary":"List the currently available pbx related resources","description":"Returns links to the related PBX resource collections (e.g. queues).","operationId":"listPbxResources","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/LinkDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/phone-numbers":{"get":{"tags":["Numbers"],"summary":"List all owned phone numbers","description":"Returns every phone number owned by the customer, whether allocated to a service or not. Use /v1/reserved-phone-numbers for only the reserved (owned but unallocated) numbers.","operationId":"listPhoneNumbers","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/PhoneNumberDto"}}}}}},"/v1/places":{"get":{"tags":["Places"],"summary":"List the customer's address places","description":"Places hold the address information reused when creating invoice places. List them to obtain a place key that can be supplied instead of a full address when creating an invoice place.","operationId":"getPlaces","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/PlaceDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products":{"get":{"tags":["Products"],"summary":"Available product resources in this api.","description":"Returns links to the purchased-product collections (user licenses and PBX licenses).","operationId":"listProductResources","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/LinkDto"}}}}},"/v1/extensions/pbx/queues/{extension}/calls":{"get":{"tags":["Pbx","Queues","Calls","Extensions"],"summary":"List a queue's ongoing calls (waiting and answered)","description":"Real-time snapshot of the calls currently in the queue. Each entry gives the caller's number, when the call joined the queue and its position, whether it has been answered, and—if answered—the answering agent.","operationId":"getOngoingCallsForQueue","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/QueueCallCAPIDto"}}}}}},"/v1/extensions/pbx/queues/{extension}/members":{"get":{"tags":["Pbx","Queues"],"summary":"List the members of a queue","description":"Returns the queue's members ordered by priority. Use `delayed-group` to list a specific delayed group (wave), and `number` to match a single member by exact phone number.","operationId":"getQueueMembers","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"delayed-group","in":"query","description":"Delayed group (wave) number to list; defaults to 0 (the main queue). The queue must have delayed groups configured to use a non-zero value.","required":false,"type":"integer","default":0,"format":"int32","x-example":1,"example":1},{"name":"number","in":"query","description":"Filter to the member with this exact phone number (exact match only); omit to return all members.","required":false,"type":"string","x-example":"0012300123","example":"0012300123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/QueueMemberDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Pbx","Queues"],"summary":"Add members to a queue","description":"Adds one or more users to the queue. The request body is a JSON array of user extension keys, e.g. [\"extension-456\", \"extension-789\"]. Each user must hold a license that permits queue membership. Not supported for queues with delayed groups.","operationId":"addQueueMembers","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/QueueMemberDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"delete":{"tags":["Pbx","Queues"],"summary":"Remove members from a queue","description":"Removes one or more users from the queue. The request body is a JSON array of user extension keys, e.g. [\"extension-456\", \"extension-789\"]. Not supported for queues with delayed groups.","operationId":"deleteQueueMember","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"204":{"description":"Members removed; no content returned"},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/queues/{extension}/members/{member}":{"get":{"tags":["Pbx","Queues"],"summary":"Get a single queue member by key","description":"","operationId":"getQueueMember","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"member","in":"path","description":"The key of a specific queue member","required":true,"type":"string","x-example":"queueMember-123","example":"queueMember-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/QueueMemberDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/queues/{extension}/members/{member}/call-type/{call-type}":{"put":{"tags":["Pbx","Queues"],"summary":"Update queue member call type","description":"Sets how queue calls are delivered to the member. `landline-only` rings only the member's landline/SIP device; `follow-profile-settings` follows the member's active profile routing. Not supported for queues with delayed groups.","operationId":"updateQueueMemberCallType","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"member","in":"path","description":"The queue member key in the queue to update","required":true,"type":"string","x-example":"queueMember-123","example":"queueMember-123"},{"name":"call-type","in":"path","description":"The new call type — either `landline-only` or `follow-profile-settings`","required":true,"type":"string","x-example":"landline-only / follow-profile-settings","enum":["LANDLINE_ONLY","FOLLOW_PROFILE_SETTINGS"],"example":"landline-only / follow-profile-settings"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/QueueMemberDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/queues/{extension}/members/{member}/move-up":{"put":{"tags":["Pbx","Queues"],"summary":"Move up a member in a queue","description":"Raises the member's position in the queue. Use `step` to move more than one position. Not supported for queues with delayed groups.","operationId":"moveUpQueueMember","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"member","in":"path","description":"The queue member key in the queue","required":true,"type":"string","x-example":"queueMember-123","example":"queueMember-123"},{"name":"step","in":"query","description":"Number of positions to move the member; defaults to 1","required":false,"type":"integer","default":1,"format":"int32","x-example":3,"example":3}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/queues/{extension}/members/swap/{member-1}/{member-2}":{"put":{"tags":["Pbx","Queues"],"summary":"Swap the queue positions of two members","description":"Exchanges the priority (position) of the two given members. Not supported for queues with delayed groups.","operationId":"swapMembers","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"member-1","in":"path","description":"The queue member key in the queue","required":true,"type":"string","x-example":"queueMember-123","example":"queueMember-123"},{"name":"member-2","in":"path","description":"The queue member key in the queue","required":true,"type":"string","x-example":"queueMember-123","example":"queueMember-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/queues/{extension}/members/{member}/move-down":{"put":{"tags":["Pbx","Queues"],"summary":"Move down a member in a queue","description":"Lowers the member's position in the queue. Use `step` to move more than one position. Not supported for queues with delayed groups.","operationId":"moveDownQueueMember","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"member","in":"path","description":"The queue member key in the queue","required":true,"type":"string","x-example":"queueMember-123","example":"queueMember-123"},{"name":"step","in":"query","description":"Number of positions to move the member; defaults to 1","required":false,"type":"integer","default":1,"format":"int32","x-example":3,"example":3}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/queues/{extension}/delayed-groups":{"get":{"tags":["Pbx","Queues"],"summary":"List a queue's delayed groups (waves)","description":"Delayed groups are escalation tiers within a queue: each adds a further agent group that starts ringing after a configured delay. Read-only; each entry returns the group number, its delay in seconds, and the number of call attempts.","operationId":"getWaves","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/QueueDelayedGroupDto"}}}}}},"/v1/extensions/pbx/queues/{queue}":{"get":{"tags":["Pbx","Queues"],"summary":"Get a queue with its call-treatment settings","description":"Returns the queue for the given extension key, including its queueSettings (ring strategy and time-out redirect).","operationId":"getQueue","produces":["application/json"],"parameters":[{"name":"queue","in":"path","description":"Extension key of the queue","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/QueueExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Pbx","Queues"],"summary":"Update a queue's name and call-treatment settings","description":"Updates the queue's name (queueName) and/or call treatment (callTreatment): the ring strategy (CALL_ALL, PRIORITISED, CYCLIC, FEWEST_CALLS, LEAST_RECENT, RANDOMIZED) and the time-out redirect. Only the fields you send are changed.","operationId":"updateQueue","produces":["application/json"],"parameters":[{"name":"queue","in":"path","description":"Extension key of the queue to update","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateQueueDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/QueueExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/queues":{"get":{"tags":["Pbx","Queues"],"summary":"List all queues, optionally filtered","description":"Returns all queues on the customer. Optional filters: 'number' (queues whose fixed or mobile number matches, compared in E.164 form), 'invoice-place', and 'user-member' (queues the given user is a member of).","operationId":"listQueues","produces":["application/json"],"parameters":[{"name":"number","in":"query","description":"Match queues whose fixed or mobile number equals this (compared in E.164 form)","required":false,"type":"string","x-example":"+46812207324","example":"+46812207324"},{"name":"invoice-place","in":"query","description":"Return only queues belonging to this invoice place","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"},{"name":"user-member","in":"query","description":"Return only queues this user is a member of","required":false,"type":"string","x-example":"user-123","example":"user-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ExtensionDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Pbx","Queues"],"summary":"Create a new queue","description":"Creates a queue in the given country (which also sets its currency). If 'phone-number' is omitted a temporary technical number is assigned; if 'name' is blank it defaults to Queue-<id>. New queues use the CALL_ALL ring strategy.","operationId":"createQueue","produces":["application/json"],"parameters":[{"name":"country","in":"query","description":"Country the queue belongs to; also sets its currency","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"invoice-place","in":"query","description":"Invoice place to bill the queue's costs to","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"},{"name":"phone-number","in":"query","description":"Phone number to assign. If omitted, a temporary technical number is assigned","required":false,"type":"string","x-example":"phoneNumber-123","example":"phoneNumber-123"},{"name":"name","in":"query","description":"Queue name. If omitted or blank, defaults to Queue-<id>","required":false,"type":"string","x-example":"Support 24/7","example":"Support 24/7"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/QueueExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/{extension}/recordedCalls":{"get":{"tags":["Recorded Calls"],"summary":"List an extension's recorded calls available for download","description":"Returns the recordings stored for the given extension; pass a result's key to GET /recordedCalls/{recordedCall} to download it. Without a date range the last two years up to today are returned.","operationId":"getRecordedCalls","produces":["application/json"],"parameters":[{"name":"extension","in":"path","description":"The extension whose recordings to list","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"fromDate","in":"query","description":"Earliest call date in yyyy-MM-dd format, default and max value is today minus 2 years ","required":false,"type":"string","x-example":"2023-03-08","example":"2023-03-08"},{"name":"toDate","in":"query","description":"Latest call date in yyyy-MM-dd format, should not be later than today, default is today","required":false,"type":"string","x-example":"2023-05-01","example":"2023-05-01"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/RecordingDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/calls/recordings/{recordedCall}":{"get":{"tags":["Recorded Calls"],"summary":"Download one of the authenticated user's call recordings","description":"Returns the recording as an MP3, scoped to the calling user's own access. Recording keys are obtained from GET /users/me/calls/recordings.","operationId":"downloadRecordedCall","produces":["audio/mpeg"],"parameters":[{"name":"recording","in":"path","description":"The key of the recorded call to be downloaded","required":true,"type":"string","x-example":"recordedCall-123","example":"recordedCall-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"type":"string","format":"byte"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/recordedCalls/{recordedCall}":{"get":{"tags":["Recorded Calls"],"summary":"Download a call recording as an MP3 file","description":"Resolves the recording's owning extension and verifies the token can see it before returning the audio. Recording keys are obtained from GET /{extension}/recordedCalls.","operationId":"downloadRecordedCallForAnyExtension","produces":["audio/mpeg"],"parameters":[{"name":"recording","in":"path","description":"The key of the recorded call","required":true,"type":"string","x-example":"recordedCall-123","example":"recordedCall-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"type":"string","format":"byte"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/me/calls/recordings":{"get":{"tags":["Recorded Calls"],"summary":"List the authenticated user's call recordings","description":"Returns the calling user's own recordings within the optional date range; pass a result's key to GET /users/calls/recordings/{recordedCall} to download it.","operationId":"getMyRecordedCalls","produces":["application/json"],"parameters":[{"name":"fromDate","in":"query","description":"Earliest call date in yyyy-MM-dd format, default and max value is today minus 2 years ","required":false,"type":"string","x-example":"2023-03-08","example":"2023-03-08"},{"name":"toDate","in":"query","description":"Latest call date in yyyy-MM-dd format, should not be later than today, default is today","required":false,"type":"string","x-example":"2023-05-01","example":"2023-05-01"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/RecordingDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/reserved-phone-numbers":{"get":{"tags":["Numbers"],"summary":"List owned unused phone numbers","description":"Returns the customer's reserved (owned but unallocated) numbers, optionally filtered by invoice place. Each result includes a link to cancel it.","operationId":"getReservedNumbers","produces":["application/json"],"parameters":[{"name":"invoiceplace","in":"query","description":"Only return reserved numbers billed to this invoice place","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/PhoneNumberDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Numbers"],"summary":"Reserve numbers","description":"Reserves the supplied numbers to the customer. The request body is an array of objects each containing only a phone number key; optionally set the invoice place for the reserved numbers.","operationId":"reserveNumbers","produces":["application/json"],"parameters":[{"in":"body","name":"body","description":"Array of numbers to reserve; each object needs only the phone number key","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/PhoneNumberDto"}}},{"name":"invoiceplace","in":"query","description":"Invoice place key to set the invoice place for reserved numbers","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/PhoneNumberDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/reserved-phone-numbers/{number}":{"delete":{"tags":["Numbers"],"summary":"Cancel an owned unused phone number","description":"Number must be reserved and not under porting","operationId":"cancelReserved","produces":["application/json"],"parameters":[{"name":"number","in":"path","description":"The reserved number to cancel","required":true,"type":"string","x-example":"phoneNumber-123","example":"phoneNumber-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"204":{"description":"No content"},"400":{"description":"Incorrect reserved number"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/reserved-phone-numbers/bulk":{"delete":{"tags":["Numbers"],"summary":"Cancel owned unused phone numbers","description":"Numbers must be reserved and not under porting. Failures are skipped, and only the keys of the successfully cancelled numbers are returned.","operationId":"massCancelReserved","produces":["application/json"],"parameters":[{"name":"number","in":"query","description":"A reserved number to cancel; repeat the parameter for each","required":true,"type":"array","items":{"type":"string"},"collectionFormat":"multi","x-example":"phoneNumber-123","example":"phoneNumber-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"Returns the keys of all successfully cancelled numbers"},"400":{"description":"No numbers supplied"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/reserved-phone-numbers/available":{"get":{"tags":["Numbers"],"summary":"Get all free available phone numbers","description":"Lists unallocated numbers available to reserve in the given country. Supports pagination.","operationId":"getAvailablePhoneNumbers","produces":["application/json"],"parameters":[{"name":"country","in":"query","description":"The country to list available numbers for","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"pageSize","in":"query","description":"Number of items per page (default 20)","required":false,"type":"integer","format":"int32","x-example":20,"example":20},{"name":"pageNumber","in":"query","description":"Zero-based page number (default 0)","required":false,"type":"integer","format":"int32","x-example":0,"example":0}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/PhoneNumberDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/shared-voicemail/{voicemail}":{"get":{"tags":["Pbx","Shared Voicemail"],"summary":"Get a single shared voicemail by its extension key","description":"","operationId":"getSharedVoicemail","produces":["application/json"],"parameters":[{"name":"voicemail","in":"path","description":"The extension key of the shared voicemail","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/SharedVoicemailExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Pbx","Shared Voicemail"],"summary":"Update shared voicemail settings","description":"Updates the shared voicemail's display name.","operationId":"updateSharedVoicemail","produces":["application/json"],"parameters":[{"name":"voicemail","in":"path","description":"The extension key of the shared voicemail","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateSharedVoicemailDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/SharedVoicemailExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/pbx/shared-voicemail":{"get":{"tags":["Pbx","Shared Voicemail"],"summary":"List all shared voicemail extensions","description":"Returns every shared voicemail extension (a shared mailbox PBX service) on the customer.","operationId":"listSharedVoiceMails","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/SharedVoicemailExtensionDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Pbx","Shared Voicemail"],"summary":"Create a new shared voicemail","description":"Creates a shared voicemail PBX extension in the given country using the supplied phone number. A default name is generated if none is given.","operationId":"createSharedVoicemail","produces":["application/json"],"parameters":[{"name":"country","in":"query","description":"Country the shared voicemail should belong to","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"invoice-place","in":"query","description":"Invoice place to bill the shared voicemail to","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"},{"name":"phone-number","in":"query","description":"Phone number to assign to the shared voicemail","required":true,"type":"string","x-example":"phoneNumber-123","example":"phoneNumber-123"},{"name":"name","in":"query","description":"Display name for the shared voicemail; a default is generated if omitted","required":false,"type":"string","x-example":"Support 24/7","example":"Support 24/7"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/SharedVoicemailExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/contacts/templates/{template}":{"get":{"tags":["Contacts"],"summary":"Get the contact of a template","description":"Returns the contact details configured on the template; these are applied to users created from it.","operationId":"getContact","produces":["application/json"],"parameters":[{"name":"template","in":"path","description":"Template key","required":true,"type":"string","x-example":"template-123","example":"template-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/Contact settings that will be applied when this template is used."}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Contacts"],"summary":"Update template contact details","description":"Any extra fields supplied must already be registered in the customer's contact schema.","operationId":"updateTemplateContact","produces":["application/json"],"parameters":[{"name":"template","in":"path","description":"The key of the template","required":true,"type":"string","x-example":"template-123","example":"template-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/Contact settings that will be applied when this template is used."}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/Contact settings that will be applied when this template is used."}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/templates/{template}/profiles":{"get":{"tags":["Profiles"],"summary":"List all template profiles","description":"Returns the profiles configured on the template; these are applied to users created from it.","operationId":"getAllTemplateProfiles","produces":["application/json"],"parameters":[{"name":"template","in":"path","description":"The key of the template","required":true,"type":"string","x-example":"template-123","example":"template-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ProfileDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Profiles"],"summary":"Update all profiles of a template with the supplied settings.","description":"Applies the settings to every profile of the template; settings omitted from the body are left unchanged.","operationId":"updateTemplateProfiles","produces":["application/json"],"parameters":[{"name":"template","in":"path","description":"Key of the template to update profiles for","required":true,"type":"string","x-example":"template-123","example":"template-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateProfileDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ProfileDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/templates/{template}/profiles/{profile}":{"put":{"tags":["Profiles"],"summary":"Update a profile setting for a template.","description":"Updates a single profile of the template; settings omitted from the body are left unchanged.","operationId":"updateTemplateProfile","produces":["application/json"],"parameters":[{"name":"template","in":"path","description":"Key of the template to update profiles for","required":true,"type":"string","x-example":"template-123","example":"template-123"},{"name":"profile","in":"path","description":"Profile key of profile to update","required":true,"type":"string","x-example":"profile-123","example":"profile-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateProfileDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ProfileDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/templates/{template}":{"put":{"tags":["Templates"],"summary":"Update a template","description":"If an invoice place is supplied it must be in the same country as the template.","operationId":"updateTemplate","produces":["application/json"],"parameters":[{"name":"template","in":"path","description":"Key of the template to update.","required":true,"type":"string","x-example":"template-123","example":"template-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateTemplateDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/TemplateDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"delete":{"tags":["Templates"],"summary":"Delete a template","description":"","operationId":"deleteTemplate","produces":["application/json"],"parameters":[{"name":"template","in":"path","description":"Key of the template to delete.","required":true,"type":"string","x-example":"template-123","example":"template-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/templates":{"get":{"tags":["Templates"],"summary":"List all templates","description":"Templates capture reusable profile settings that can be applied to users when provisioning.","operationId":"getAllUserTemplates","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/TemplateDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Templates"],"summary":"Create a new template","description":"At least a name is required. If an invoice place is supplied it must be in the same country as the template.","operationId":"createTemplate","produces":["application/json"],"parameters":[{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateTemplateDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/TemplateDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/terminals/{terminal}":{"get":{"tags":["Terminals"],"summary":"Get a single registered terminal.","description":"","operationId":"getTerminal","produces":["application/json"],"parameters":[{"name":"terminal","in":"path","description":"The terminal key","required":true,"type":"string","x-example":"terminal-123","example":"terminal-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/TerminalDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Terminals"],"summary":"Update a terminal.","description":"Only owner, description, encryption and password can be changed; MAC address and terminal type are immutable (400 if changed). Set owner to extension-1 to clear the current owner; assigning an owner requires that user to have a license.","operationId":"updateTerminal","produces":["application/json"],"parameters":[{"name":"terminal","in":"path","description":"The terminal key","required":true,"type":"string","x-example":"terminal-123","example":"terminal-123"},{"in":"body","name":"body","description":"The terminal fields to update; omitted fields are left unchanged","required":true,"schema":{"$ref":"#/definitions/TerminalUpdateDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/TerminalDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"delete":{"tags":["Terminals"],"summary":"Unregister a terminal, deleting all settings","description":"The terminal cannot be registered on a user","operationId":"unregisterTerminal","produces":["application/json"],"parameters":[{"name":"terminal","in":"path","description":"The terminal key","required":true,"type":"string","x-example":"terminal-123","example":"terminal-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"204":{"description":"No content"},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"Service temporarily unavailable"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/terminals":{"get":{"tags":["Terminals"],"summary":"List all registered terminals.","description":"Optionally filter by MAC address to look up a single terminal; returns an empty list if none matches.","operationId":"listTerminals","produces":["application/json"],"parameters":[{"name":"mac-address","in":"query","description":"The MAC address","required":false,"type":"string","x-example":"00000ABB28FC","example":"00000ABB28FC"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/TerminalDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Terminals"],"summary":"Register a new terminal.","description":"Both the terminal model (type) and the device MAC address are required.","operationId":"registerTerminal","produces":["application/json"],"parameters":[{"name":"type","in":"query","description":"The terminal model (type) key","required":true,"type":"string","x-example":"terminalType-123","example":"terminalType-123"},{"name":"mac-address","in":"query","description":"The MAC address","required":true,"type":"string","x-example":"00000ABB28FC","example":"00000ABB28FC"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/TerminalDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/terminals/{terminal}/reboot":{"put":{"tags":["Terminals"],"summary":"Reboot a terminal.","description":"","operationId":"rebootTerminal","produces":["application/json"],"parameters":[{"name":"terminal","in":"path","description":"The terminal key","required":true,"type":"string","x-example":"terminal-123","example":"terminal-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"boolean"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/terminals/{terminal}/resync":{"put":{"tags":["Terminals"],"summary":"Resync a terminal.","description":"","operationId":"resyncTerminal","produces":["application/json"],"parameters":[{"name":"terminal","in":"path","description":"The terminal key","required":true,"type":"string","x-example":"terminal-123","example":"terminal-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"boolean"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/terminals/{terminal}/reset":{"put":{"tags":["Terminals"],"summary":"Reset a terminal.","description":"","operationId":"resetTerminal","produces":["application/json"],"parameters":[{"name":"terminal","in":"path","description":"The terminal key","required":true,"type":"string","x-example":"terminal-123","example":"terminal-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"boolean"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/terminals/models":{"get":{"tags":["Terminals"],"summary":"List all registered terminal models","description":"The terminal models (types) already available to this customer.","operationId":"listModels","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/TerminalTypeDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/terminals/bulk":{"delete":{"tags":["Terminals"],"summary":"Unregister terminals, deleting all settings","description":"The terminals cannot be registered on a user. Partial success: returns the keys that were actually unregistered; keys that fail are skipped.","operationId":"unregisterTerminals","produces":["application/json"],"parameters":[{"name":"terminal","in":"query","description":"The terminal key","required":true,"type":"array","items":{"type":"string"},"collectionFormat":"multi","x-example":"terminal-123","example":"terminal-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"Returns a list of terminal keys that were successfully unregistered"},"400":{"description":"At least one terminal key must be provided"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/terminals/models/supported":{"get":{"tags":["Terminals"],"summary":"List all supported terminal models","description":"Every terminal model the platform supports, regardless of what the customer currently has registered.","operationId":"listSupportedModels","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/TerminalTypeDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/terminals/{terminal}/authorize":{"put":{"tags":["Terminals"],"summary":"Authorize the terminal for a \"first\" provisioning, e.g. without a second-factor authentication.","description":"","operationId":"authorizeTerminal","produces":["application/json"],"parameters":[{"name":"terminal","in":"path","description":"The terminal key","required":true,"type":"string","x-example":"terminal-123","example":"terminal-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"boolean"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/terminals/{terminal}/status":{"get":{"tags":["Terminals"],"summary":"Get terminal status.","description":"Returns an object describing the terminal's current status (e.g. registration state).","operationId":"getTerminalStatus","produces":["application/json"],"parameters":[{"name":"terminal","in":"path","description":"The key of the terminal to get the status for","required":true,"type":"string","x-example":"terminal-123","example":"terminal-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/TerminalStatusDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/user-access/{user}/passwordreset":{"get":{"tags":["Extensions","Users"],"summary":"Receive a password reset URL for a user","description":"Returns a password reset URL the user can open to set a new application password. Not needed when SSO is used.","operationId":"getPasswordResetURL","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user to get a password reset URL for","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"string"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Extensions","Users"],"summary":"Send a password reset email to the user","description":"Sends a branded password reset email to the user; fails with 404 if the user has no email address.","operationId":"sendPasswordReset","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user to send the password reset email to","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"No email found for the given user to send the password reset to."},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/user-access/{user}/onboarding-mail":{"post":{"tags":["Extensions","Users"],"summary":"Send an onboarding email to the user","description":"Sends the welcome/onboarding email that guides the user through setting up their account.","operationId":"sendEmailInvite","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user to send the onboarding email to","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/credentials/{credential}/delete":{"delete":{"tags":["Credentials","Users"],"summary":"Deletes a credential of a user if it is deletable","description":"The credential is identified by its email address.","operationId":"deleteUserCredential","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user that owns the credential","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"credential","in":"path","description":"Credential that needs to be deleted","required":true,"type":"string","x-example":"test-example@telavox.com","example":"test-example@telavox.com"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/credentials":{"get":{"tags":["Credentials","Users"],"summary":"Gets all credentials for a user or filters credentials based on the query param credentialType","description":"Credentials are a user's login identifiers. Filter by type with the credentialType parameter.","operationId":"listUserCredentials","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user whose credentials to list","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"credentialType","in":"query","description":"Type of Credential","required":false,"type":"string","x-example":"email","enum":["email","number"],"example":"email"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/CredentialDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Credentials","Users"],"summary":"Creates a new email credential with verifying state for a user. An email will be sent to given email for verification.Any existing email under verification will be removed.Once new email is verified it will replace existing email having validated state if any","description":"","operationId":"createEmailUserCredential","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user to create the credential for","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"credential","in":"query","description":"The email address to register as a login credential","required":false,"type":"string","x-example":"user@example.com","example":"user@example.com"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/CredentialDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/credentials/delete-all":{"delete":{"tags":["Credentials","Users"],"summary":"Deletes all credential of a user that are deletable","description":"Affects the user's email credentials.","operationId":"deleteAllUserCredential","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user whose credentials to delete","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/assortment/{country}/{currency}/user-licenses":{"get":{"tags":["Assortment","User Licenses"],"summary":"Lists all purchasable licenses for the supplied country","description":"Returns the user licenses available to buy for the country/currency; each result links to its purchase action, and its assortment-item key feeds POST /v1/products/user-licenses/{country}/{currency}/{assortment-item}.","operationId":"listAvailableUserLicenseProducts","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"The country to list purchasable licenses for","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"The currency to list purchasable licenses for","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/UserLicenseAssortmentDto"}}}}}},"/v1/products/user-licenses/{country}/{currency}/metadata":{"get":{"tags":["Products","User Licenses"],"summary":"Returns the number of licenses that are currently not assigned to any user","description":"","operationId":"getNumberOfUnassignedLicenses","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"Currency key","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/UserLicensesMetaDataDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products/user-licenses/{country}/{currency}":{"get":{"tags":["Products","User Licenses"],"summary":"List all licenses belonging to the customer","description":"Returns the customer's owned user licenses for the country/currency; optionally filter by license name with the description parameter.","operationId":"listUserLicenses","produces":["application/json;charset=utf-8"],"parameters":[{"name":"country","in":"path","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"Currency key","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"},{"name":"description","in":"query","description":"License name to filter on","required":false,"type":"string","x-example":"Mobile","example":"Mobile"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/UserLicenseProductDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products/user-licenses/{country}/{licenseType}":{"delete":{"tags":["Products","User Licenses"],"summary":"Cancel an unused license of the customer","description":"Cancels the given number of unused licenses of the specified type; in-use or bound licenses cannot be removed.","operationId":"cancelUserLicenseByCountry","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"licenseType","in":"path","description":"The type of license(s) to be canceled.","required":true,"type":"string","x-example":"USER_FIXED","enum":["USER_BUNDLE","USER_FREE","USER_FIXED","USER_FIXED_FLEX","USER_FIXED_CUSTOM_1","USER_FIXED_CUSTOM_2","USER_FIXED_CUSTOM_3","USER_FIXED_CUSTOM_4","USER_FIXED_CUSTOM_5","USER_FIXED_CUSTOM_6","USER_FIXED_AND_MOBILE","USER_FIXED_AND_MOBILE_FLEX","USER_FIXED_AND_MOBILE_PLUS","USER_FIXED_AND_MOBILE_PLUS_FLEX","USER_MOBILE_CUSTOM_1","USER_MOBILE_CUSTOM_2","USER_MOBILE_CUSTOM_3","USER_MOBILE_CUSTOM_4","USER_MOBILE_CUSTOM_5","USER_MOBILE_CUSTOM_6","USER_MOBILE_CUSTOM_7","USER_MOBILE_CUSTOM_8","USER_MOBILE_CUSTOM_9","USER_MOBILE_CUSTOM_10","USER_MOBILE_CUSTOM_11","USER_MOBILE_CUSTOM_12","USER_MOBILE_CUSTOM_13","PBX"],"example":"USER_FIXED"},{"name":"quantity","in":"query","description":"The number of licenses to be canceled.","required":false,"type":"integer","default":1,"format":"int32","x-example":3,"example":3}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products/user-licenses/{product}":{"delete":{"tags":["Products","User Licenses"],"summary":"Cancel a specified unused license of the customer","description":"Cancels a single unused license by its product key; fails if the license is in use, bound, or already cancelled.","operationId":"cancelUserLicenseByProduct","produces":["application/json"],"parameters":[{"name":"product","in":"path","description":"Product Key of the product to be canceled","required":true,"type":"string","x-example":"product-123","example":"product-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products/user-licenses/{country}":{"get":{"tags":["Products","User Licenses"],"summary":"List all currencies that have available licenses","description":"","operationId":"getUserLicensesInfoByCountry","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/AssortmentsInfoDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products/user-licenses":{"get":{"tags":["Products","User Licenses"],"summary":"List all countries and currencies that have available licenses","description":"Returns each country/currency the customer owns user licenses in, with links to the owned and unassigned-license listings.","operationId":"getUserLicensesInfo","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/AssortmentsInfoDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products/user-licenses/{country}/{currency}/unassigned":{"get":{"tags":["Products","User Licenses"],"summary":"List all owned licenses that are currently not assigned to a user","description":"","operationId":"getUnassignedLicenses","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"Currency key","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"},{"name":"description","in":"query","description":"License name to filter on","required":false,"type":"string","x-example":"Mobile","example":"Mobile"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/UserLicenseProductDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"You do not have access to get the licenses info"},"404":{"description":"Country or currency is not available"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products/user-licenses/{country}/{currency}/assigned":{"get":{"tags":["Products","User Licenses"],"summary":"List all owned licenses that are currently assigned to a user","description":"","operationId":"getAssignedLicenses","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"Currency key","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"},{"name":"description","in":"query","description":"License name to filter on","required":false,"type":"string","x-example":"Mobile","example":"Mobile"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/UserLicenseProductDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"You do not have access to get the licenses info"},"404":{"description":"Country or currency is not available"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/products/user-licenses/{country}/{currency}/{assortment-item}":{"post":{"tags":["Products","User Licenses"],"summary":"Purchase a user license","description":"Purchases the license identified by the assortment-item key and adds it to the pool of available user licenses. Supply an invoice place when the customer uses invoice places. Up to 399 licenses can be bought at once via the quantity parameter.","operationId":"buyUserLicense","produces":["application/json"],"parameters":[{"name":"country","in":"path","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"currency","in":"path","description":"Currency key","required":true,"type":"string","x-example":"currency-SEK","example":"currency-SEK"},{"name":"assortment-item","in":"path","description":"Assortment Item Key of the assortment that should be purchased","required":true,"type":"string","x-example":"assortmentItem-123","example":"assortmentItem-123"},{"name":"invoiceplace","in":"query","description":"The invoice place that should be used for the purchase","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"},{"name":"quantity","in":"query","description":"Quantity. The number of licenses to be purchased.","required":false,"type":"integer","default":1,"format":"int32","x-example":3,"example":3}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/UserLicenseProductDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/permissions":{"get":{"tags":["Users","Permissions"],"summary":"List granted permissions for all visible users","description":"Returns every user the token can see together with the permission keys currently granted to them. Call /users/permissions/available to see which permissions exist and can be granted.","operationId":"listAllUserPermissions","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/UserPermissionsDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/permissions":{"get":{"tags":["Users","Permissions"],"summary":"List the granted permissions for a single user","description":"Returns the permission keys currently granted to the given user.","operationId":"getUserPermissions","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user to list permissions for","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/UserPermissionsDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/permissions/available":{"get":{"tags":["Users","Permissions"],"summary":"List the permissions that can be granted to users","description":"Each entry's key is the value to use as the `{permission}` path parameter when granting or revoking a permission.","operationId":"listAvailablePermissions","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/PermissionDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/permissions/{permission}":{"post":{"tags":["Users","Permissions"],"summary":"Grant a permission to one or more users","description":"Adds the permission to every extension listed in the `extensions` query parameter in a single mass update, then returns the updated permissions for those users. The request fails if any extension key does not exist.","operationId":"addPermission","produces":["application/json"],"parameters":[{"name":"permission","in":"path","description":"The permission to grant","required":true,"type":"string","x-example":"permission-123","example":"permission-123"},{"name":"extensions","in":"query","description":"Comma-separated extensions that should be granted the permission","required":true,"type":"string","x-example":"extension-123,extension-124","example":"extension-123,extension-124"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/UserPermissionsDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"delete":{"tags":["Users","Permissions"],"summary":"Revoke a permission from one or more users","description":"Removes the permission from every extension listed in the `extensions` query parameter, then returns the remaining permissions for those users. The request fails if any extension key does not exist.","operationId":"deletePermission","produces":["application/json"],"parameters":[{"name":"permission","in":"path","description":"The permission to revoke","required":true,"type":"string","x-example":"permission-123","example":"permission-123"},{"name":"extensions","in":"query","description":"Comma-separated extensions that should have the permission removed","required":true,"type":"string","x-example":"extension-123,extension-124","example":"extension-123,extension-124"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/UserPermissionsDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/profiles/active":{"get":{"tags":["Profiles"],"summary":"Get a user's currently active profile and its scheduled end time","description":"Returns the single profile that is currently active for the specified user. In addition to the usual profile fields, the response carries `activeUntil`: the timestamp at which the profile is scheduled to be deactivated (set when the profile was activated with a duration). When `activeUntil` is absent the profile stays active until it is changed; on automatic deactivation the user reverts to the 'Available' profile.","operationId":"getActiveProfile","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"Extension key of the user whose active profile to fetch","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ActiveProfileDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/profiles/reset":{"post":{"tags":["Profiles"],"summary":"Reset a user's profiles from a template","description":"Replaces the user's profiles with those of the supplied template, and returns the resulting profile list. This is destructive: all of the user's existing profiles and their settings are deleted first, then recreated to match the template, so any per-user customisation is lost. The template to copy from is given by its key in the request body. Use this to bring a user back to a known, standard profile configuration.","operationId":"resetProfiles","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"Extension key of the user whose profiles to reset","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/ResetProfileDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ProfileDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/profiles":{"get":{"tags":["Profiles"],"summary":"List all profiles configured for a user","description":"Returns every availability profile belonging to the specified user, each with its display and call-forwarding settings, and the `active` flag marking the one that is current. A user starts with a default set of profiles, the first of which is active when the user is created. This is the admin-token counterpart of the '/users/me/profiles' endpoint, used to inspect another user's profiles before updating or activating one of them.","operationId":"getAllUserProfiles","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"Extension key of the user whose profiles to list","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ProfileDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Profiles"],"summary":"Update the settings of all of a user's profiles at once","description":"Applies the supplied settings to every profile belonging to the user and returns the full, updated profile list. The update is partial: only the settings present in the body are changed, and any setting that is omitted is left untouched. This is the recommended way to change a setting consistently across a user, for example to set the same outgoing display (main) number on all profiles. To change a single profile only, use the '/users/{user}/profiles/{profile}' endpoint instead.","operationId":"updateUserProfiles","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"Extension key of the user whose profiles to update","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateProfileDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ProfileDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/profiles/{profile}":{"put":{"tags":["Profiles"],"summary":"Update the settings of a single profile","description":"Applies the supplied settings to one specific profile of the user and returns the updated profile. The update is partial: only the settings present in the body are changed, and any setting that is omitted is left untouched. Use this when one profile must differ from the others; to change a setting across all of a user's profiles at once, prefer the '/users/{user}/profiles' endpoint.","operationId":"updateUserProfile","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"Extension key of the user whose profile to update","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"profile","in":"path","description":"Profile key of the profile to update","required":true,"type":"string","x-example":"profile-123","example":"profile-123"},{"in":"body","name":"body","required":false,"schema":{"$ref":"#/definitions/UpdateProfileDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ProfileDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/profiles/active/{profile}":{"put":{"tags":["Profiles"],"summary":"Activate one of a user's profiles","description":"Makes the given profile the active one for the specified user, and returns it. Optionally pass a `duration` to keep the profile active only for a limited time; when it expires the user automatically reverts to the 'Available' profile. With no duration the profile stays active until it is changed. The activation is recorded in the user's profile log. This is the admin-token counterpart of the '/users/me/profiles/active/{profile}' endpoint; the profile must belong to the specified user.","operationId":"setActiveProfile","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"Extension key of the user whose profile to activate","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"profile","in":"path","description":"Profile key of the profile to activate","required":true,"type":"string","x-example":"profile-123","example":"profile-123"},{"name":"duration","in":"query","description":"The profile duration can be typed in the following ways:\n - **1 digit**: x amount of days to come (0 means the profile stays the same until you change it).\n - **2 digits**: x amount of hours to come (if you want the profile active for less than 10 hours, start the digit with a 0).\n - **3 digits**: x amount of minutes to come (if you want the profile active for less than 100 minutes, start the digit with a 0).\n - **4 digits**: Read as a timestamp for the ongoing day (the first two digits are hours, and the last two are minutes). If the time has already passed, it refers to the following day.\n - **6 digits**: Read as a date (the first two digits are the year, the middle two are months, and the last two are days).\n\nIf the parameter is omitted, the profile stays active until further notice. Inactivation means the profile 'Available' is activated.","required":false,"type":"string","x-example":"010","example":"010"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ProfileDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/me/profiles/active/{profile}":{"put":{"tags":["Profiles"],"summary":"Activate one of the authenticated user's profiles","description":"Makes the given profile the active one for the user making the request, and returns it. Optionally pass a `duration` to keep the profile active only for a limited time; when it expires the user automatically reverts to the 'Available' profile. With no duration the profile stays active until it is changed. The activation is recorded in the user's profile log. Operates on the caller's own extension, so any valid token may call it; the profile must belong to that user.","operationId":"setActiveProfileForLoggedInUser","produces":["application/json"],"parameters":[{"name":"profile","in":"path","description":"Profile key to set as active","required":true,"type":"string","x-example":"profile-123","example":"profile-123"},{"name":"duration","in":"query","description":"The profile duration can be typed in the following ways:\n - **1 digit**: x amount of days to come (0 means the profile stays the same until you change it).\n - **2 digits**: x amount of hours to come (if you want the profile active for less than 10 hours, start the digit with a 0).\n - **3 digits**: x amount of minutes to come (if you want the profile active for less than 100 minutes, start the digit with a 0).\n - **4 digits**: Read as a timestamp for the ongoing day (the first two digits are hours, and the last two are minutes). If the time has already passed, it refers to the following day.\n - **6 digits**: Read as a date (the first two digits are the year, the middle two are months, and the last two are days).\n\nIf the parameter is omitted, the profile stays active until further notice. Inactivation means the profile 'Available' is activated.","required":false,"type":"string","x-example":"010","example":"010"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ProfileDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/me/profiles":{"get":{"tags":["Profiles"],"summary":"List the authenticated user's availability profiles","description":"Returns every availability (presence) profile configured for the user making the request, each with its display and call-forwarding settings. Profiles model states such as 'Available', 'In a meeting' or 'Lunch'; exactly one is current at any time, indicated by the profile's `active` flag. A user starts with a default set of profiles, the first of which is active. This endpoint always operates on the caller's own extension, so any valid token may call it and no admin role is required.","operationId":"getAllLoggedInUsersUserProfiles","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ProfileDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/voicemail":{"put":{"tags":["Voicemail","Users"],"summary":"Update a user's voicemail PIN","description":"Sets the PIN code used to access the user's voicemail.","operationId":"updateVoicemail","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user whose voicemail to update","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","description":"Voicemail settings to update (the PIN code)","required":false,"schema":{"$ref":"#/definitions/UserVoicemailDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/UserVoicemailDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users":{"get":{"tags":["Extensions","Users"],"summary":"List all users","description":"Optionally filter by phone number or invoice place.","operationId":"listUsers","produces":["application/json"],"parameters":[{"name":"number","in":"query","description":"The phone number in international format","required":false,"type":"string","x-example":"0012300123","example":"0012300123"},{"name":"invoice-place","in":"query","description":"Filter users on specified invoice place","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/ExtensionDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"post":{"tags":["Extensions","Users"],"summary":"Create a new user","description":"Invoice place is only required if the country differs from the customers default country","operationId":"createUser","produces":["application/json"],"parameters":[{"name":"country","in":"query","description":"Country key","required":true,"type":"string","x-example":"country-SE","example":"country-SE"},{"name":"invoice-place","in":"query","description":"The invoice place that should be used for the user","required":false,"type":"string","x-example":"invoicePlace-123","example":"invoicePlace-123"},{"name":"email","in":"query","description":"The, URL encoded, email address of the user","required":false,"type":"string","x-example":"jane.doe%40janesdoughs.com","example":"jane.doe%40janesdoughs.com"},{"name":"template","in":"query","description":"Template to apply on user creation.","required":false,"type":"string","x-example":"template-123","example":"template-123"},{"name":"confirmation-email","in":"query","description":"Send an onboarding email to the user","required":false,"type":"boolean","default":false,"x-example":true,"example":true}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/licenses":{"get":{"tags":["Extensions","Users"],"summary":"List a user's licenses","description":"","operationId":"getLicensesForUser","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The extension key of the user","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/UserLicenseProductDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/licenses/{license}":{"delete":{"tags":["Extensions","Users"],"summary":"Downgrade the user to the basic license. \nThis will not cancel the license. The license \nwill be added back into the customer license pool.\nIt is not possible to delete a bundle license which\nhas a capability required by other bundles.","description":"","operationId":"downgrade","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The extension key of the user","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"name":"license","in":"path","description":"The user license to be downgraded","required":true,"type":"string","x-example":"product-123","example":"product-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not authorized"},"404":{"description":"License not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}":{"get":{"tags":["Extensions","Users"],"summary":"Get a user's details","description":"","operationId":"getUser","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The extension key of the user","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Extensions","Users"],"summary":"Update a user","description":"Allocates a license and numbers to a user.\nIf the license supports having a fixed number, include the fixed number key.\nSimilarly, if the license supports having a mobile number, include the mobile number key.\nOnly use one of 'licenseType' or 'productKey', not both.\nIt is not possible to update a bundle license which has a capability required by other bundles.","operationId":"updateUser","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The extension key of the user","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","description":"The fields to update; omitted fields are left unchanged","required":true,"schema":{"$ref":"#/definitions/ExtensionUpdateDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"409":{"description":"The specified phone number is already in use"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"delete":{"tags":["Extensions","Users"],"summary":"Completely remove a user","description":"Permanently deletes the user and its extension. This cannot be undone.","operationId":"deleteUser","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The extension key of the user","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"204":{"description":"No content"},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/replace":{"post":{"tags":["Extensions","Users"],"summary":"Replace a user by creating a new user and copying all important settings from the old user.","description":"The old user is deleted and a replacement is created that inherits its configuration; sensitive data such as call history and voice recordings is cleared. Copied settings include profiles, terminals, queue and group memberships, contacts, licenses, faxes, call routing, add-on products and permissions.","operationId":"replaceUser","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The extension key of the user to replace","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","description":"The replacing user's settings; omitted fields keep the old user's values","required":true,"schema":{"$ref":"#/definitions/ReplaceUserDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Extensions","Users"],"summary":"Replace a user by updating some of the most important settings.","description":"Unlike the POST on the same path, the user is not deleted, so chat messages, phone lists, etc. are kept intact. Only supplied values are updated.","operationId":"resetUser","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The extension key of the user to update","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","description":"The settings to update; omitted fields are left unchanged","required":true,"schema":{"$ref":"#/definitions/ReplaceUserDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/ExtensionDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/language/app":{"get":{"tags":["Extensions"],"summary":"Get current user app language","description":"","operationId":"getUserAppLanguage","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user whose app language to fetch","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/LanguageDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Extensions"],"summary":"Update user app language","description":"Provide the language code (e.g. \"sv\") in the body; the code property is required.","operationId":"updateUserAppLanguage","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user whose app language to set","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","description":"Language to set; the code property (e.g. sv) is required","required":true,"schema":{"$ref":"#/definitions/LanguageDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"204":{"description":"Successful"},"400":{"description":"Bad Request"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/language/app":{"get":{"tags":["Extensions"],"summary":"List all available languages for the app","description":"Returns the language codes that can be set as a user's app language.","operationId":"listAppLanguages","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/LanguageDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/users/{user}/language/voice":{"get":{"tags":["Extensions"],"summary":"Get current user voice language","description":"Returns 404 if no voice language has been set for the user.","operationId":"getUserVoiceLanguage","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user whose voice language to fetch","required":true,"type":"string","x-example":"extension-123","example":"extension-123"}],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"$ref":"#/definitions/LanguageDto"}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}},"put":{"tags":["Extensions"],"summary":"Update user voice language","description":"Provide the language code (e.g. \"sv\") in the body; the code property is required.","operationId":"updateUserVoiceLanguage","produces":["application/json"],"parameters":[{"name":"user","in":"path","description":"The user whose voice language to set","required":true,"type":"string","x-example":"extension-123","example":"extension-123"},{"in":"body","name":"body","description":"Language to set; the code property (e.g. sv) is required","required":true,"schema":{"$ref":"#/definitions/LanguageDto"}}],"security":[{"BEARER_TOKEN":[]}],"responses":{"204":{"description":"Successful"},"400":{"description":"Bad Request"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}},"/v1/extensions/language/voice":{"get":{"tags":["Extensions"],"summary":"List all available languages for voices","description":"Returns the language codes that can be set as a user's voice language.","operationId":"listVoiceLanguages","produces":["application/json"],"parameters":[],"security":[{"BEARER_TOKEN":[]}],"responses":{"200":{"description":"successful operation","schema":{"type":"array","items":{"$ref":"#/definitions/LanguageDto"}}},"400":{"description":"The request cannot be processed. See the error message for more information"},"401":{"description":"Authentication failure"},"403":{"description":"Not permitted to access"},"404":{"description":"Resource not found"},"500":{"description":"General server error"},"503":{"description":"Server is temporarily unavailable or busy"}}}}},"securityDefinitions":{"BEARER_TOKEN":{"description":"User with valid bearer token","type":"apiKey","name":"Authorization","in":"header"}},"definitions":{"ActiveProfileDto":{"type":"object","properties":{"accountId":{"type":"string","example":"extension-123","description":"The key for the user"},"description":{"type":"string","example":"Available","description":"The description of a profile"},"available":{"type":"boolean"},"active":{"type":"boolean"},"settings":{"$ref":"#/definitions/ProfileSettings"},"profilePlusKey":{"type":"string","example":"profilePlus-123","description":"The key for the profile type"},"activeUntil":{"type":"string","format":"date-time"},"pauseProfile":{"type":"boolean"},"key":{"type":"string","example":"profile-123","description":"The key that specifies a profile"}}},"AddonAssortmentDto":{"type":"object","properties":{"key":{"type":"string","example":"assortmentItem-123","description":"The key for the assortment item"},"description":{"type":"string"},"price":{"$ref":"#/definitions/CostDto"}}},"AddonProductDto":{"type":"object","properties":{"key":{"type":"string","example":"product-123","description":"The key for the product"},"name":{"type":"string","description":"The technical name for the addon"},"price":{"$ref":"#/definitions/CostDto"},"description":{"type":"string","description":"The description of the addon"},"scheduled":{"$ref":"#/definitions/ScheduledDto"}}},"ApiLink":{"type":"object","properties":{"link":{"type":"string","example":"https://api.telavox.se/papi/v1/customers/customer-1","description":"Absolute URL of the related API resource"},"relation":{"type":"string","example":"List customers","description":"Human-readable label describing what resource the link points to"},"type":{"type":"string","example":"GET","description":"HTTP method to use against the link URL","enum":["GET","POST","PUT","PATCH","DELETE"]}},"description":"HATEOAS navigation link to a related API resource. Pairs a URL with the relation it represents and the HTTP method to use against it."},"AssortmentsInfoDto":{"type":"object","properties":{"countryKey":{"type":"string","example":"country-SE","description":"The key of the country. Based on the iso-3166-1 Alpha-2 code"},"currencyKey":{"type":"string","example":"currency-EUR","description":"The key of the currency. Based on the iso-4217 code"}}},"CallRecordDto":{"type":"object","properties":{"dateTime":{"type":"string","example":"2013-10-04 08:46:44","description":"The date and time of when the call was started in yyyy-mm-dd hh:mm:ss"},"isoDateTime":{"type":"string","example":"2013-10-04T08:46:44.123+0100","description":"The date and time of when the call was started in ISO format"},"duration":{"type":"integer","format":"int32","example":13,"description":"Duration of the call in seconds"},"phoneNumber":{"type":"string","example":"081234567","description":"Phone number of the requested caller"},"recordedCallKey":{"type":"string","example":"recordedCall-xyz","description":"The key of the call recording"},"callType":{"type":"string","example":"missing","description":"Type of call"},"callId":{"type":"string","example":"ab12cd34-ef56-7890-ab12-cd34ef567890","description":"The unique ID of the call"}}},"Contact settings that will be applied when this template is used.":{"type":"object","properties":{"description":{"type":"string"},"adress":{"type":"string"},"postalcode":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"companyname":{"type":"string"},"occupation":{"type":"string"},"department":{"type":"string"},"regnr":{"type":"string"},"keywords":{"type":"string"},"extraFields":{"type":"object","additionalProperties":{"type":"string"}}}},"ContactDto":{"type":"object","properties":{"key":{"type":"string","example":"contact-123","description":"The key of the contact."},"owner":{"type":"string","example":"extension-123","description":"The key of the user that the contact belongs to."},"firstName":{"type":"string"},"lastName":{"type":"string"},"fixedNumber":{"$ref":"#/definitions/PhoneNumberDto"},"mobileNumber":{"$ref":"#/definitions/PhoneNumberDto"},"description":{"type":"string"},"adress":{"type":"string"},"postalcode":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"email":{"type":"string"},"companyname":{"type":"string"},"occupation":{"type":"string"},"department":{"type":"string"},"regnr":{"type":"string"},"alttelephone1":{"$ref":"#/definitions/PhoneNumberDto"},"alttelephone2":{"$ref":"#/definitions/PhoneNumberDto"},"keywords":{"type":"string"},"extraFields":{"type":"object","additionalProperties":{"type":"string"}}}},"ContactSchemaFieldDto":{"type":"object","properties":{"name":{"type":"string","description":"The display name of the field"},"deletable":{"type":"string","description":"True if if this field can be removed"}}},"CostDto":{"type":"object","properties":{"cost":{"type":"number","example":123,"description":"The cost"},"periodicity":{"type":"string","enum":["one-time","monthly","yearly"]},"currency":{"type":"string","example":"currency-EUR","description":"The currency code"}}},"CredentialDto":{"type":"object","properties":{"credential":{"type":"string","example":"test.login@telavox.com","description":"The username for login"},"state":{"type":"string","example":"verifying","description":"State of the credential"},"deletable":{"type":"boolean"},"credentialType":{"type":"string","example":"email","description":"Type of a credential"}}},"DeliveryPlaceDto":{"type":"object","properties":{"key":{"type":"string","example":"deliveryPlace-123","description":"The key that specifies a delivery place"},"description":{"type":"string","example":"HQ Office","description":"The name of the delivery place"},"companyName":{"type":"string","example":"Acme Norway AB","description":"The company name associated with this delivery place"},"recipientFirstName":{"type":"string","example":"Jane","description":"The first name of the recipient at this delivery place"},"recipientLastName":{"type":"string","example":"Doe","description":"The last name of the recipient at this delivery place"},"recipientEmail":{"type":"string","example":"jane.doe@acme.no","description":"The email of the recipient at this delivery place"},"place":{"type":"string","example":"place-123","description":"The place associated with this delivery place"}}},"DialNumberDto":{"type":"object","properties":{"phoneNumber":{"type":"string","example":"0401234567 or 00467081234567","description":"The phone number to be called, formatted as: 040xxxxxxx or 00467xxxxxxxxx. This field is mandatory."},"autoAnswer":{"type":"boolean","example":true,"description":"Specifies if call initiator should (false) or shouldn't (true) need to accept the call first. This field is optional and will default to \"false\" if missing."}}},"DiscountDto":{"type":"object","properties":{"discountDuration":{"type":"integer","format":"int32","example":6,"description":"Duration for which the discount applies, measured in the same unit as discountedPrice.periodicity"},"bindingPeriod":{"type":"integer","format":"int32","example":24,"description":"Contract period, measured in the same unit as discountedPrice.periodicity"},"discountedPrice":{"description":"Discounted price details including cost, periodicity, and currency.","$ref":"#/definitions/CostDto"}},"description":"Time-limited discount with binding period. Discounted price is valid only for the specified duration, after which regular pricing applies."},"DisplayNumber":{"type":"object","properties":{"displayNumberKey":{"type":"string","example":"mainPhoneNumber-123","description":"Number to display when the display type is main number"},"type":{"type":"string","example":"FIXED_NUMBER","description":"Which of the users different numbers, e.g the fixed or the mobile, that will be displayed"}},"description":"Number to display when a user makes a phone call."},"DisplaySetting":{"type":"object","properties":{"fixedDisplaySetting":{"$ref":"#/definitions/DisplayNumber"}},"description":"Settings regarding numbers that are displayed when a phone call is made."},"ExtendedTranscriptionDto":{"type":"object","properties":{"language":{"type":"string","example":"en","description":"Language code of the transcription"},"duration":{"type":"integer","format":"int32","example":180,"description":"Call duration in seconds"},"speakers":{"type":"integer","format":"int32","example":2,"description":"Number of distinct speakers detected"},"rawTranscript":{"type":"string","description":"Full raw transcript text"},"segmentations":{"type":"array","description":"Ordered list of transcription segments","items":{"$ref":"#/definitions/TranscriptionSegmentDto"}},"summary":{"type":"string","description":"AI-generated summary of the call"},"subject":{"type":"string","description":"AI-generated subject line for the call"},"tags":{"type":"array","description":"AI-generated tags for the call","items":{"type":"string"}},"actions":{"type":"array","description":"Action items extracted from the call","items":{"$ref":"#/definitions/TranscriptionActionDto"}},"resultCode":{"type":"string","example":"SUCCESS","description":"Transcription result code","enum":["SUCCESS","NO_CONTENT","AUDIO_FILE_TOO_SMALL","QUOTA_EXCEEDED","ERROR","UNKNOWN"]}},"description":"Full content of a business extended transcription"},"ExtendedTranscriptionSummaryDto":{"type":"object","properties":{"transcriptionKey":{"type":"string","example":"extendedTranscription-xyz","description":"Transcription key — pass to the single-fetch endpoint to get full content"},"startedAt":{"type":"string","example":"2024-01-15T10:30:00Z","description":"UTC ISO-8601 timestamp when the call started"},"duration":{"type":"integer","format":"int32","example":180,"description":"Call duration in seconds"}},"description":"Summary metadata for a business extended transcription"},"ExtensionDto":{"type":"object","properties":{"key":{"type":"string","example":"extension-123","description":"The key of the extension"},"name":{"type":"string","example":"Jane Doe","description":"The name/description of the extension. "},"fixedNumber":{"$ref":"#/definitions/PhoneNumberDto"},"mobileNumber":{"$ref":"#/definitions/PhoneNumberDto"},"invoicePlace":{"type":"string","example":"invoicePlace-123","description":"The key that specifies an invoice place"},"licenseType":{"type":"string","example":"USER_FIXED","description":"The name of the Voice license"},"extensionType":{"type":"string","enum":["USER","QUEUE","IVR","SHARED_EXTENSION","SHARED_VOICEMAIL","FAX","UNKNOWN"]},"licenses":{"type":"array","items":{"$ref":"#/definitions/ExtensionLicenseDto"}}}},"ExtensionKey":{"type":"object","properties":{"key":{"type":"string","example":"extension-123","description":"The key of the extension"}}},"ExtensionLicenseDto":{"type":"object","properties":{"name":{"type":"string","example":"Voice Free","description":"The name of the license."},"type":{"type":"string","example":"Voice","description":"The type of functionality the license handles."}}},"ExtensionUpdateDto":{"type":"object","properties":{"name":{"type":"string","example":"Jane Doe","description":"The name/description of the extension. "},"fixedNumber":{"description":"The fixed number to allocate to the user. Should only be sent in when allocating a license requiring a fixed number","$ref":"#/definitions/PhoneNumberUpdateDto"},"mobileNumber":{"description":"The mobile number to allocate to the user. Should only be sent in when allocating a license requiring a mobile number","$ref":"#/definitions/PhoneNumberUpdateDto"},"invoicePlace":{"type":"string","example":"invoicePlace-123","description":"The key that specifies an invoice place"},"licenseType":{"type":"string","example":"USER_FREE or USER_FIXED","description":"Specifies the type of license to use","enum":["USER_BUNDLE","USER_FREE","USER_FIXED","USER_FIXED_FLEX","USER_FIXED_AND_MOBILE","USER_FIXED_AND_MOBILE_FLEX","USER_FIXED_AND_MOBILE_PLUS","USER_FIXED_AND_MOBILE_PLUS_FLEX","USER_MOBILE_CUSTOM_1","USER_MOBILE_CUSTOM_2","USER_MOBILE_CUSTOM_3","USER_MOBILE_CUSTOM_4","USER_MOBILE_CUSTOM_5","USER_MOBILE_CUSTOM_6","USER_MOBILE_CUSTOM_7","USER_MOBILE_CUSTOM_8","USER_MOBILE_CUSTOM_9","USER_MOBILE_CUSTOM_10","USER_MOBILE_CUSTOM_11","USER_MOBILE_CUSTOM_12","USER_MOBILE_CUSTOM_13","USER_FIXED_CUSTOM_1","USER_FIXED_CUSTOM_2","USER_FIXED_CUSTOM_3","USER_FIXED_CUSTOM_4","USER_FIXED_CUSTOM_5","USER_FIXED_CUSTOM_6","PBX","UNKNOWN"]},"productKey":{"type":"string","example":"product-123","description":"The product key of the license."}}},"FaxExtensionDto":{"type":"object","properties":{"key":{"type":"string","example":"extension-123","description":"The key of the extension"},"name":{"type":"string","example":"Jane Doe","description":"The name/description of the extension. "},"fixedNumber":{"$ref":"#/definitions/PhoneNumberDto"},"mobileNumber":{"$ref":"#/definitions/PhoneNumberDto"},"invoicePlace":{"type":"string","example":"invoicePlace-123","description":"The key that specifies an invoice place"},"licenseType":{"type":"string","example":"USER_FIXED","description":"The name of the Voice license"},"extensionType":{"type":"string","enum":["USER","QUEUE","IVR","SHARED_EXTENSION","SHARED_VOICEMAIL","FAX","UNKNOWN"]},"licenses":{"type":"array","items":{"$ref":"#/definitions/ExtensionLicenseDto"}},"faxSettingsDto":{"$ref":"#/definitions/FaxSettingsDto"}},"description":"Represents a fax extension with specific fax settings."},"FaxSettingsDto":{"type":"object","properties":{"name":{"type":"string","example":"Fax X","description":"The name/description of the fax. "},"recipients":{"type":"array","example":"[ \"Jane Doe\", \"John Doe\"] ","description":"A list of recipients who gets the incoming faxes in PDF-format","items":{"type":"string"}}}},"GroupMemberDto":{"type":"object","properties":{"groupMemberKey":{"type":"string","example":"groupMember-123","description":"key for the group member"},"position":{"type":"integer","format":"int32"},"groupMemberType":{"type":"string","enum":["user","queue","refer","fax","profile","contact","group"]},"groupMemberIdentityKey":{"type":"string","example":"groupMemberIdentity-123","description":"group member identity key"}}},"GroupNameDto":{"type":"object","properties":{"name":{"type":"string","example":"Some or some other name","description":"group name"}}},"ImmediateRedirectUpdate":{"type":"object","properties":{"number":{"$ref":"#/definitions/PhoneNumberReference"}},"description":"If set, the caller will be redirected to the specified phone number immediately when the profile is active."},"InvoicePlaceDto":{"type":"object","properties":{"name":{"type":"string","example":"Main office","description":"The name of the invoice place"},"countryKey":{"type":"string","example":"country-SE","description":"The key of the country. Based on the iso-3166-1 Alpha-2 code"},"currencyKey":{"type":"string","example":"currency-EUR","description":"The key of the currency. Based on the iso-4217 code"},"regnr":{"type":"string","example":"123123-1231","description":"The Registration number associated with this invoice place"},"key":{"type":"string","example":"invoicePlace-123","description":"The key that specifies an invoice place"}}},"Language settings to update with.":{"type":"object","properties":{"code":{"type":"string","example":"en","description":"Language code for specifying the language"}}},"LanguageDto":{"type":"object","properties":{"name":{"type":"string","example":"English","description":"Native language name"},"code":{"type":"string","example":"en","description":"Language code for specifying the language"}}},"LinkDto":{"type":"object","properties":{"links":{"type":"array","items":{"$ref":"#/definitions/ApiLink"}}}},"MainPhoneNumberDto":{"type":"object","properties":{"key":{"type":"string","example":"mainPhoneNumber-123","description":"The key that specifies a phone number that can be used as a display number by any extension"},"phoneNumber":{"$ref":"#/definitions/PhoneNumberDto"}},"description":"A main phone number is a phone number that can be used as a display number by any extension."},"MassUpdateContactDto":{"type":"object","required":["country","mobileNumber"],"properties":{"description":{"type":"string","description":"The description of the user"},"adress":{"type":"string","description":"The address of the user"},"postalcode":{"type":"string","description":"The postal code of user's address"},"city":{"type":"string","description":"The city of the user's address"},"country":{"type":"string","description":"The country of the user's address"},"companyname":{"type":"string","description":"The company name of the user"},"occupation":{"type":"string","description":"The occupation of the user"},"department":{"type":"string","description":"The department of the user"},"regnr":{"type":"string","description":"The registration number of the user"},"alttelephone1":{"description":"The first alternative number of the user","$ref":"#/definitions/RoutablePhoneNumber"},"alttelephone2":{"description":"The second alternative number of the user","$ref":"#/definitions/RoutablePhoneNumber"},"keywords":{"type":"string","description":"The keywords to find the user in the application"},"extraFields":{"type":"object","description":"Extra fields of the user","additionalProperties":{"type":"string"}},"mobileNumber":{"type":"string","description":"The mobile number of the user"},"extensionFilter":{"type":"string","description":"Extension keys to update. If set, only the selected extensions will be updated. If set together with an invoice place filter, only extensions that fulfill BOTH requirements will be updated"},"invoicePlaceFilter":{"type":"string","description":"Invoice place keys of the extensions to update. Only extension that belong to one of the invoice places listed will be updated If set together with an extension filter, only extensions that fulfill BOTH requirements will be updated"},"key":{"type":"string","example":"contact-123","description":"The key of the user"}}},"MobileDataUsageDto":{"type":"object","properties":{"consumptionMB":{"type":"integer","format":"int64","example":1262,"description":"Data used during the period, not including roaming, in MB"},"roamingPerZoneMB":{"type":"object","example":"{JPN: 1258, USA: 412}","description":"Data roaming used per zone, in MB","additionalProperties":{"type":"integer","format":"int64"}},"key":{"type":"string","example":"extension-123","description":"The key of the user that used the data"}}},"MobileUsageReportDto":{"type":"object","properties":{"from":{"type":"string","example":"2023-04-01T00:00:00","description":"Report end date"},"to":{"type":"string","example":"2023-05-01T00:00:00","description":"Report start date"},"totalConsumptionMb":{"type":"integer","format":"int64","example":3197564978,"description":"Total consumption in MB, not including roaming, for report interval"},"totalRoamingPerZoneMB":{"type":"object","example":"{JPN: 1258, USA: 412}","description":"Total data roaming used per zone in MB","additionalProperties":{"type":"integer","format":"int64"}},"consumptionPerUser":{"type":"array","items":{"$ref":"#/definitions/MobileDataUsageDto"}}}},"OngoingCallDto":{"type":"object","properties":{"callerId":{"type":"string","example":"0401234567 or 00467081234567","description":"The number of the caller, formatted as: 040xxxxxxx or 00467xxxxxxxxx."},"callDirection":{"type":"string","example":"incoming","description":"Describes the type of call event, can be: \"incoming\", \"outgoing\" or \"unknown\""},"lineStatus":{"type":"string","example":"up","description":"Describes the status of the call line, can be: \"up\", \"down\", \"unknown\", \"reserved\", \"offhook\", \"dialing\", \"ring\", \"ringing\", \"busy\", \"parked\""}}},"OutgoingGroupDto":{"type":"object","properties":{"groupKey":{"type":"string","example":"group-123","description":"group key"},"name":{"type":"string","example":"My group","description":"The name of the group."}}},"PbxLicenseAssortmentDto":{"type":"object","properties":{"links":{"type":"array","items":{"$ref":"#/definitions/ApiLink"}},"key":{"type":"string","example":"assortmentItem-123","description":"Key of a purchasable item"},"country":{"type":"string","example":"country-SE","description":"The key of the country. Based on the iso-3166-1 Alpha-2 code"},"name":{"type":"string","example":"Best license","description":"The name of the product"},"pbxServiceLimit":{"type":"integer","format":"int32","example":3,"description":"The limit of how many Pbx Services that are allowed with the Pbx license"},"bindTime":{"type":"integer","format":"int32","example":36,"description":"The bind time of the product in months"},"cost":{"$ref":"#/definitions/CostDto"}}},"PbxLicenseProductDto":{"type":"object","properties":{"invoicePlaceKey":{"type":"string","example":"invoicePlace-123","description":"The key that specifies the invoice place"},"countryKey":{"type":"string","example":"country-SE","description":"The key of the country. Based on the iso-3166-1 Alpha-2 code"},"name":{"type":"string","example":"Fixed 36 Months","description":"The name of the license"},"deliveryDate":{"type":"string","format":"date","example":"2025-05-23","description":"The date the license will be, or was, delivered."},"boundUntil":{"type":"string","format":"date","example":"2025-05-23","description":"The date the license will become unbound."},"cost":{"$ref":"#/definitions/CostDto"},"pbxServiceLimit":{"type":"integer","format":"int32","example":3,"description":"The limit of how many Pbx Services that are allowed with the Pbx license"},"delivered":{"type":"boolean","example":true,"description":"If the license has been delivered, thus being charged for."},"bound":{"type":"boolean","example":true,"description":"If the license has bind time left."},"key":{"type":"string","example":"product-123","description":"The key that identifies the product"}}},"PermissionDto":{"type":"object","properties":{"key":{"type":"string","example":"permission-123","description":"The key of the permission"},"name":{"type":"string","example":"ADMIN","description":"The name/description permission. "}}},"PermissionKey":{"type":"object","properties":{"key":{"type":"string","example":"permission-123","description":"The key of the permission"}}},"PhoneNumberDto":{"type":"object","properties":{"e164Number":{"type":"string","example":"+4620100000","description":"The phone number in E164 format"},"country":{"type":"string","example":"country-SE","description":"The key of the country. Based on the iso-3166-1 Alpha-2 code"},"usages":{"type":"array","example":"FIXED","description":"The allowed ways to use the phone number","items":{"type":"string","enum":["FIXED","MOBILE"]}},"key":{"type":"string","example":"phoneNumber-123","description":"The key that specifies an owned phone number"}}},"PhoneNumberKey":{"type":"object","properties":{"key":{"type":"string","example":"phoneNumber-123","description":"The key that specifies an owned phone number"}}},"PhoneNumberReference":{"type":"object","properties":{"type":{"type":"string","example":"KEY","description":"Decides what type of phone number is references. If the type is set to E164_NUMBER or KEY those values must be supplied respectively. For VOICE_MAIL and EMPTY, no extra info needs to be supplied. EMPTY is used for clearing a no longer wanted reference ","enum":["E164_NUMBER","VOICE_MAIL","KEY","EMPTY"]},"key":{"type":"string","example":"phoneNumber-123","description":"The key that specifies an owned phone number. Should be set if the type is set to KEY"},"e164Number":{"type":"string","example":"+4620100000","description":"The phone number in E164 format. Should be set if the type is set to E164_NUMBER."}},"description":"A reference to a phone number. Supports different types of references depending on the type chosen. If no type is set, it will default to E164_NUMBER firstly, and if not present, it will look at the KEY. For voice mail and empty, the type must be set explicitly."},"PhoneNumberUpdateDto":{"type":"object","properties":{"e164Number":{"type":"string","example":"+46701234567","description":"The e164 number of the phone number"},"key":{"type":"string","example":"phoneNumber-123","description":"The key that specifies an owned phone number"}}},"PlaceDto":{"type":"object","properties":{"links":{"type":"array","items":{"$ref":"#/definitions/ApiLink"}},"key":{"type":"string","example":"place-123","description":"The key that specifies a place"},"name":{"type":"string","example":"The Brownstone","description":"The name of the place"},"street":{"type":"string","example":"Baker Street 221b","description":"The street of the place"},"postalCode":{"type":"string","example":"NW1 6XE","description":"The postal code of the place"},"city":{"type":"string","example":"Westminister","description":"The city of the place"}}},"ProfileDto":{"type":"object","properties":{"accountId":{"type":"string","example":"extension-123","description":"The key for the user"},"description":{"type":"string","example":"Available","description":"The description of a profile"},"available":{"type":"boolean"},"active":{"type":"boolean"},"settings":{"$ref":"#/definitions/ProfileSettings"},"profilePlusKey":{"type":"string","example":"profilePlus-123","description":"The key for the profile type"},"pauseProfile":{"type":"boolean"},"key":{"type":"string","example":"profile-123","description":"The key that specifies a profile"}}},"ProfileSettings":{"type":"object","properties":{"displaySettings":{"$ref":"#/definitions/DisplaySetting"}},"description":"The settings that will get applied when the profile is activated."},"QueueCallCAPIDto":{"type":"object","required":["answered","joinTime","phoneNumber"],"properties":{"phoneNumber":{"type":"string","example":"5551234567","description":"Phone number of the caller"},"joinTime":{"type":"string","format":"date","example":"2025-02-26T10:15:30Z","description":"Date/time the call joined the queue"},"queuePosition":{"type":"integer","format":"int32","example":1,"description":"Position of the call in the queue"},"answered":{"type":"boolean","example":false,"description":"Indicates if the call has been answered"},"answeredTime":{"type":"string","format":"date","example":"2025-02-26T10:16:40Z","description":"Date/time the call was answered (if any)"},"agentFirstName":{"type":"string","example":"Jane","description":"First name of the agent who answered the call"},"agentLastName":{"type":"string","example":"Doe","description":"Last name of the agent who answered the call"},"agentExtensionKey":{"type":"string","example":"extension-123","description":"Extension key of the agent who answered the call"}}},"QueueDelayedGroupDto":{"type":"object","properties":{"delayedGroup":{"type":"integer","format":"int32","example":1,"description":"The number of the delayed group"},"delay":{"type":"integer","format":"int32","example":100,"description":"The amount of delay for the group in seconds"},"callAttempts":{"type":"integer","format":"int32","example":5,"description":"The number of call attempts"},"key":{"type":"string","example":"queueDelayedGroup-123","description":"The key that specifies a queue wave"}}},"QueueExtensionDto":{"type":"object","properties":{"key":{"type":"string","example":"extension-123","description":"The key of the extension"},"name":{"type":"string","example":"Jane Doe","description":"The name/description of the extension. "},"fixedNumber":{"$ref":"#/definitions/PhoneNumberDto"},"mobileNumber":{"$ref":"#/definitions/PhoneNumberDto"},"invoicePlace":{"type":"string","example":"invoicePlace-123","description":"The key that specifies an invoice place"},"licenseType":{"type":"string","example":"USER_FIXED","description":"The name of the Voice license"},"extensionType":{"type":"string","enum":["USER","QUEUE","IVR","SHARED_EXTENSION","SHARED_VOICEMAIL","FAX","UNKNOWN"]},"licenses":{"type":"array","items":{"$ref":"#/definitions/ExtensionLicenseDto"}},"queueSettings":{"$ref":"#/definitions/QueueSettingsDto"}},"description":"Represents a queue extension with specific queue settings"},"QueueMemberDto":{"type":"object","properties":{"priority":{"type":"integer","format":"int32","example":1,"description":"The order of the member in the queue"},"state":{"type":"string","example":"active","description":"The state of the member in the queue"},"userExtension":{"type":"string","example":"extension-123","description":"The key for the user"},"callType":{"type":"string","example":"landline-only","description":"The call type of the queue member"},"activeProfileOnHangUp":{"type":"string","example":"profile-123","description":"The pause profile key of profile that activates when member hang up"},"activeProfileOnCallAttemptFailure":{"type":"string","example":"profile-123","description":"The non-pause profile key of profile that activates when member does not answer a call"},"key":{"type":"string","example":"queueMember-123","description":"The key that specifies a queue member"}}},"QueueSettingsDto":{"type":"object","properties":{"callTreatment":{"$ref":"#/definitions/Settings regarding handling of incoming calls to a queue"}}},"RecordingDto":{"type":"object","properties":{"recordedCallKey":{"type":"string","example":"recordedCall-xyz","description":"The key that specifies a recording"},"extensionKey":{"type":"string","example":"extension-123","description":"The key that specifies the user"},"started":{"type":"string","example":"2023-01-23T12:34:56","description":"Timestamp for when the call recording was started"},"direction":{"type":"string","example":"INCOMING","description":"Direction for of call"},"duration":{"type":"string","example":"12:34:56","description":"Duration of call recording"},"from":{"type":"string","example":"0731234567","description":"Phone number for call initiator"},"to":{"type":"string","example":"0731234567","description":"Phone number for call receiver"},"callId":{"type":"string","example":"ab12cd34-ef56-7890-ab12-cd34ef567890","description":"The unique ID of the call"}}},"ReplaceUserDto":{"type":"object","properties":{"email":{"type":"string","example":"newuser@email.com","description":"The email of the replacing user. If empty or null, no email will be set"},"contact":{"description":"The contact settings of the replacing user. No value means that the old user value should be used. Empty string erases a value","$ref":"#/definitions/UpdateContactDto"},"userSettings":{"description":"The extension settings of the replacing user. No value means that the old user settings should be used.","$ref":"#/definitions/ExtensionUpdateDto"},"ignoreRecoverableErrors":{"type":"boolean","description":"If any of the steps that are not essential for the creation of the new user fail, for example copying \nthe permission settings, the request will fail and a list of errors will be returned if this property is set to false. \n If instead set to true, the request will, if possible, go on with the creation of the new user."}}},"ResetProfileDto":{"type":"object","properties":{"template":{"type":"string","example":"template-123","description":"The template to copy from. All profiles will be deleted, and recreated to match the profiles of the template."}}},"RoutablePhoneNumber":{"type":"object","properties":{"valid":{"type":"boolean"},"number":{"type":"string"}}},"ScheduledDto":{"type":"object","properties":{"scheduledAction":{"type":"string","example":"ACTIVATION / REMOVAL","description":"The current activation status"},"date":{"type":"string","description":"The date of the scheduled action"}}},"SendSMSDto":{"type":"object","properties":{"phoneNumber":{"type":"string","example":"0401234567 or 00467081234567","description":"The number to send the SMS to, formatted as: 040xxxxxxx or 00467xxxxxxxxx"},"message":{"type":"string","example":"My favorite soda flavor is blood-orange","description":"Message"}}},"Settings regarding handling of incoming calls to a queue":{"type":"object","properties":{"timeout":{"$ref":"#/definitions/Settings regarding the max time a call can be in a queue."},"callStrategy":{"type":"string","example":"CALL_ALL","description":"The strategy to use when handling incoming calls","enum":["CALL_ALL","PRIORITISED","CYCLIC","FEWEST_CALLS","LEAST_RECENT","RANDOMIZED"]}}},"Settings regarding the max time a call can be in a queue.":{"type":"object","properties":{"timeoutEnabled":{"type":"boolean","example":true,"description":"True if this queue should have a maximum queue time"},"timeoutSeconds":{"type":"integer","format":"int32","example":120,"description":"Sets the maximum queue time, before the redirect is triggered. Timeout needs to be enabled, and a redirect supplied, for this value to be set."},"timeoutRedirect":{"description":"Sets number to redirect to when the timeout is reached. Timeout needs to be enabled, and timeout seconds supplied, for this value to be set.","$ref":"#/definitions/Settings regarding the redirect number after a queue call has timed out."}}},"Settings regarding the redirect number after a queue call has timed out.":{"type":"object","properties":{"nationalNumber":{"type":"string","example":"0812312312","description":"The phone number on national format. Must be in same country as the queue that is being"},"countryCallingCode":{"type":"string","example":"+46","description":"The country prefix calling code for the redirect number."}}},"SharedVoicemailExtensionDto":{"type":"object","properties":{"key":{"type":"string","example":"extension-123","description":"The key of the extension"},"name":{"type":"string","example":"Jane Doe","description":"The name/description of the extension. "},"fixedNumber":{"$ref":"#/definitions/PhoneNumberDto"},"mobileNumber":{"$ref":"#/definitions/PhoneNumberDto"},"invoicePlace":{"type":"string","example":"invoicePlace-123","description":"The key that specifies an invoice place"},"licenseType":{"type":"string","example":"USER_FIXED","description":"The name of the Voice license"},"extensionType":{"type":"string","enum":["USER","QUEUE","IVR","SHARED_EXTENSION","SHARED_VOICEMAIL","FAX","UNKNOWN"]},"licenses":{"type":"array","items":{"$ref":"#/definitions/ExtensionLicenseDto"}}},"description":"Represents a Shared Voicemail extension"},"SIPRegistrationDto":{"type":"object","properties":{"key":{"type":"string","example":"extension-123","description":"The key of the SIP User"},"userAgent":{"type":"string","description":"The user agent"},"deadline":{"type":"string","description":"The date when the registration expires (yyyy-MM-dd HH-mm-ss)"},"sourceIP":{"type":"string","description":"The source IP for the registered SIP user"},"sourcePort":{"type":"integer","format":"int32","description":"The source port for the registered SIP user"},"registrarIP":{"type":"string","description":"The registrar IP"},"registrarPort":{"type":"integer","format":"int32","description":"The registrar port"},"duration":{"type":"integer","format":"int32","description":"Duration of the registration"}}},"TemplateDto":{"type":"object","properties":{"name":{"type":"string"},"appLanguage":{"$ref":"#/definitions/LanguageDto"},"voiceLanguage":{"$ref":"#/definitions/LanguageDto"},"invoicePlace":{"type":"string","example":"invoicePlace-123","description":"The key that identifies an invoice place"},"key":{"type":"string","example":"template-123","description":"The key that specifies a template"}}},"TerminalDto":{"type":"object","properties":{"key":{"type":"string","example":"terminal-123","description":"The key of the terminal"},"owner":{"type":"string","example":"extension-123","description":"The key of the extension that owns the terminal"},"macAddress":{"type":"string","example":"xx-xx-xx-xx-xx-xx","description":"The mac address of the terminal"},"description":{"type":"string"},"terminalType":{"type":"string","example":"terminalType-123","description":"The key that specifies the model of a terminal"}}},"TerminalKey":{"type":"object","properties":{"key":{"type":"string"}}},"TerminalStatusDto":{"type":"object","properties":{"key":{"type":"string","example":"terminal-123","description":"The key of the terminal"},"firmware":{"type":"string","description":"Firmware version of the terminal"},"latestSync":{"type":"string","description":"Latest sync date of the terminal (yyyy-MM-dd HH:mm:ss)"},"sipRegistrations":{"type":"array","description":"SIP registrations for the terminal","items":{"$ref":"#/definitions/SIPRegistrationDto"}}}},"TerminalTypeDto":{"type":"object","properties":{"key":{"type":"string","example":"terminalType-123","description":"The key identifying the terminal type"},"model":{"type":"string","example":"Cisco 7912","description":"The name of the model"}}},"TerminalUpdateDto":{"type":"object","properties":{"key":{"type":"string","example":"terminal-123","description":"The key of the terminal"},"owner":{"type":"string","example":"extension-123","description":"The key of the extension that owns the terminal"},"macAddress":{"type":"string","example":"xx-xx-xx-xx-xx-xx","description":"The mac address of the terminal"},"description":{"type":"string"},"terminalType":{"type":"string","example":"terminalType-123","description":"The key that specifies the model of a terminal"},"password":{"type":"string","example":"pass123","description":"The password for the terminal"}}},"TranscriptionActionDto":{"type":"object","properties":{"owner":{"type":"string","example":"John Doe","description":"Person responsible for the action"},"task":{"type":"string","example":"Send follow-up email","description":"Description of the action item"}},"description":"An action item extracted from an extended transcription"},"TranscriptionSegmentDto":{"type":"object","properties":{"index":{"type":"integer","format":"int32","example":0,"description":"Segment index (0-based)"},"speaker":{"type":"string","example":"Speaker 1","description":"Speaker label"},"startTime":{"type":"string","example":"00:00:05.120","description":"Start time within the recording"},"text":{"type":"string","description":"Transcribed text for this segment"}},"description":"A single speaker segment within an extended transcription"},"UpdateCallForwarding":{"type":"object","properties":{"immediateRedirect":{"$ref":"#/definitions/ImmediateRedirectUpdate"}},"description":"Call forwarding refers to when a call is redirected to different destination."},"UpdateContactDto":{"type":"object","required":["contactCategory","country","firstName","lastName","mobileNumber"],"properties":{"description":{"type":"string","description":"The description of the user"},"adress":{"type":"string","description":"The address of the user"},"postalcode":{"type":"string","description":"The postal code of user's address"},"city":{"type":"string","description":"The city of the user's address"},"country":{"type":"string","description":"The country of the user's address"},"companyname":{"type":"string","description":"The company name of the user"},"occupation":{"type":"string","description":"The occupation of the user"},"department":{"type":"string","description":"The department of the user"},"regnr":{"type":"string","description":"The registration number of the user"},"alttelephone1":{"description":"The first alternative number of the user","$ref":"#/definitions/RoutablePhoneNumber"},"alttelephone2":{"description":"The second alternative number of the user","$ref":"#/definitions/RoutablePhoneNumber"},"keywords":{"type":"string","description":"The keywords to find the user in the application"},"extraFields":{"type":"object","description":"Extra fields of the user","additionalProperties":{"type":"string"}},"firstName":{"type":"string","description":"The first name of the user"},"lastName":{"type":"string","description":"The last name of the user"},"mobileNumber":{"type":"string","description":"The mobile number of the user"},"owner":{"type":"string","example":"extension-123","description":"The account key of the user"},"contactCategory":{"type":"string","description":"The contact category of the user","enum":["colleague","personal","shared"]},"key":{"type":"string","example":"contact-123","description":"The key of the user"}}},"UpdateDeliveryPlaceDto":{"type":"object","properties":{"place":{"type":"string","example":"place-123","description":"The place associated with this delivery place"},"description":{"type":"string","example":"HQ Office","description":"The name of the delivery place"},"companyName":{"type":"string","example":"Acme Norway AB","description":"The company name associated with this delivery place"},"recipientFirstName":{"type":"string","example":"Jane","description":"The first name of the recipient at this delivery place"},"recipientLastName":{"type":"string","example":"Doe","description":"The last name of the recipient at this delivery place"},"recipientEmail":{"type":"string","example":"jane.doe@acme.no","description":"The email of the recipient at this delivery place"}}},"UpdateDisplayNumberDto":{"type":"object","properties":{"displayNumberKey":{"type":"string","example":"mainPhoneNumber-123","description":"Number to display when the display type is main number"},"type":{"type":"string","enum":["fixed_number","mobile_number","main_number","hidden"]}}},"UpdateDisplaySettingsDto":{"type":"object","properties":{"fixedDisplaySetting":{"$ref":"#/definitions/UpdateDisplayNumberDto"}}},"UpdateFaxDto":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120}},"description":"Object for updating a fax extension."},"UpdateProfileDto":{"type":"object","properties":{"callForwarding":{"$ref":"#/definitions/UpdateCallForwarding"},"displaySettings":{"$ref":"#/definitions/UpdateDisplaySettingsDto"}}},"UpdateQueueDto":{"type":"object","properties":{"queueName":{"type":"string","example":"Support","description":"The display name of the queue"},"callTreatment":{"$ref":"#/definitions/Settings regarding handling of incoming calls to a queue"}}},"UpdateSchemaFieldDto":{"type":"object","properties":{"name":{"type":"string","description":"The display name of the field"}}},"UpdateSharedVoicemailDto":{"type":"object","properties":{"name":{"type":"string","example":"Support","description":"The name of the shared voicemail"}},"description":"Object for updating a shared voicemail extension."},"UpdateTemplateDto":{"type":"object","properties":{"name":{"type":"string","example":"Tech support","description":"The name of the template"},"appLanguage":{"description":"The written language in apps that will be set when applying the template","$ref":"#/definitions/Language settings to update with."},"voiceLanguage":{"$ref":"#/definitions/Language settings to update with."},"invoicePlace":{"type":"string","example":"invoicePlace-123","description":"Invoice place that will applied when using this template"}}},"UserLicenseAssortmentDto":{"type":"object","properties":{"key":{"type":"string","example":"assortmentItem-123","description":"Key of a purchasable item"},"country":{"type":"string","example":"country-SE","description":"The key of the country. Based on the iso-3166-1 Alpha-2 code"},"name":{"type":"string","example":"Best license","description":"The name of the product"},"bindTime":{"type":"integer","format":"int32","example":36,"description":"The bind time of the product in months"},"discount":{"$ref":"#/definitions/DiscountDto"},"cost":{"$ref":"#/definitions/CostDto"}}},"UserLicenseProductDto":{"type":"object","properties":{"invoicePlaceKey":{"type":"string","example":"invoicePlace-123","description":"The key that identifies the invoice place"},"countryKey":{"type":"string","example":"country-se","description":"The key identifying the country"},"name":{"type":"string","example":"Fixed 36 Months","description":"The name of the license"},"deliveryDate":{"type":"string","format":"date","example":"2025-05-23","description":"The date the license will be, or was, delivered."},"boundUntil":{"type":"string","format":"date","example":"2025-05-23","description":"The date the license will become unbound."},"cost":{"$ref":"#/definitions/CostDto"},"telephonyType":{"type":"string","enum":["FREE","FIXED","FIXED_FLEX","FIXED_AND_MOBILE","FIXED_AND_MOBILE_FLEX","FIXED_AND_MOBILE_PLUS","FIXED_AND_MOBILE_PLUS_FLEX","CUSTOM_1","CUSTOM_2","CUSTOM_3","CUSTOM_4","CUSTOM_5","CUSTOM_6","CUSTOM_7","CUSTOM_8","CUSTOM_9","CUSTOM_10","CUSTOM_11","CUSTOM_12","CUSTOM_13","FIXED_CUSTOM_1","FIXED_CUSTOM_2","FIXED_CUSTOM_3","FIXED_CUSTOM_4","FIXED_CUSTOM_5","FIXED_CUSTOM_6","NONE"]},"user":{"type":"string","example":"extension-123","description":"The key of the user this license is assigned to."},"delivered":{"type":"boolean","example":true,"description":"If the license has been delivered, thus being charged for."},"bound":{"type":"boolean","example":true,"description":"If the license has bind time left."},"key":{"type":"string","example":"product-123","description":"The key that identifies the product"}}},"UserLicensesMetaDataDto":{"type":"object","properties":{"type":{"type":"string","enum":["FREE","FIXED","FIXED_FLEX","FIXED_AND_MOBILE","FIXED_AND_MOBILE_FLEX","FIXED_AND_MOBILE_PLUS","FIXED_AND_MOBILE_PLUS_FLEX","CUSTOM_1","CUSTOM_2","CUSTOM_3","CUSTOM_4","CUSTOM_5","CUSTOM_6","CUSTOM_7","CUSTOM_8","CUSTOM_9","CUSTOM_10","CUSTOM_11","CUSTOM_12","CUSTOM_13","FIXED_CUSTOM_1","FIXED_CUSTOM_2","FIXED_CUSTOM_3","FIXED_CUSTOM_4","FIXED_CUSTOM_5","FIXED_CUSTOM_6","NONE"]},"owned":{"type":"integer","format":"int32","example":7,"description":"The number of purchased licenses of the specified type."},"assigned":{"type":"integer","format":"int32","example":5,"description":"The number of licenses,of the specified type, that are currently in use."},"unassigned":{"type":"integer","format":"int32","example":2,"description":"The number of licenses, of the specified type, that are not in use."}}},"UserPermissionsDto":{"type":"object","properties":{"permissions":{"type":"array","description":"The currently active permissions.","items":{"$ref":"#/definitions/PermissionKey"}},"key":{"type":"string","example":"extension-123","description":"The extension the permissions belong to"}}},"UserVoicemailDto":{"type":"object","properties":{"pin":{"type":"string","example":"1234","description":"The pin of the voicemail"}}}}}