Skip to content
This repository was archived by the owner on Dec 29, 2025. It is now read-only.
Merged

develop #1288

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions blog/2025-12-17-Release-0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
---
author: meshcloud
title: Release 2025.55.0
---

Release period: 2025-12-16 to 2025-12-17

This release includes the following issues:
* Building Block Search Bar Remains Visible When no Results Are Found
* Mandatory Building Blocks via API
* Creator Can Now Be Removed During Project Creation
* Building Block API Query Parameters Now Use Exact Match
* Fixed Greyed Out Code Editor in Building Block Input Definition
* Search Filter for Workspace and Project Access Control v2 Tables
<!--truncate-->

## Ticket Details
### Building Block Search Bar Remains Visible When no Results Are Found
**Audience:** User<br>

#### Description
We fixed a bug where the search bar in a lot of tables would disappear when no search results were found.
The search bar now remains visible, allowing you to refine your search without having to reload the page.

### Mandatory Building Blocks via API
**Audience:** User<br>

#### Description
Tenants can now be created via the API with mandatory building blocks that have user inputs with default values.
Previously, mandatory building blocks with "User Input" assignment type would prevent tenant creation,
even when default values were defined. This enhancement allows for more flexible building block configurations
while ensuring tenants can be created automatically via the API.

### Creator Can Now Be Removed During Project Creation
**Audience:** User<br>

#### Description
When creating a project, the creator was automatically added and could not be removed. This restriction has been
lifted. You can now remove the creator during the creation process, allowing you to create projects with a
different set of users or even without any users assigned initially.

### Building Block API Query Parameters Now Use Exact Match
**Audience:** User<br>

#### Description
The meshBuildingBlock API endpoint now performs exact matching for all provided query parameters when filtering
building blocks. Previously, these parameters used partial matching, returning all building blocks whose field values
included the query parameter values as substrings. This could return unintended results when one value was a substring
of another. With the new exact match behavior, only building blocks with exact matches for all provided query
parameters are returned. For example, you can now reliably fetch all building blocks from one particular workspace by
specifying the exact workspaceIdentifier.

### Fixed Greyed Out Code Editor in Building Block Input Definition
**Audience:** User<br>

#### Description
Previously, when creating a new building block definition and adding an input of type 'Code', the code
editor was sometimes greyed out, making it impossible to specify a default value. This issue has been
resolved.

### Search Filter for Workspace and Project Access Control v2 Tables
**Audience:** User<br>

#### Description
A search filter is now available in workspace and project access control tables, allowing you to quickly find specific
users or groups by typing their name. This makes it easier to manage access in workspaces and projects with many users.

Note: This change only affects customers who have access to the new access control v2 feature. If you are using the
standard access control interface, this change does not apply to you.

16 changes: 16 additions & 0 deletions docs/concepts/project.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,22 @@ Below is a visual example of how projects are structured in meshStack:

![Project concept diagram](/assets/new_concept/concept_project.png)

## Project Names and Identifiers

Each project has both a display name and a unique identifier.

**Project Name (Display Name)**
- Maximum length of 30 characters
- Can contain any characters

**Project Identifier**
- Must contain only lowercase alphanumeric characters and hyphens (but not leading, trailing, or consecutive hyphens)
- Maximum length of 30 characters
- Cannot be changed after project creation

These default restrictions can be configured differently upon request to accommodate your organization's needs.
The restrictions exist to ensure the combined `${workspaceIdentifier}.${projectIdentifier}` fits within cloud platform constraints (e.g., AWS account aliases: 64 chars, Kubernetes namespaces: 63 chars).

## Related Resources

### Concepts
Expand Down
12 changes: 12 additions & 0 deletions docs/concepts/workspace.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,18 @@ Below is a visual example of how workspaces are structured in meshStack:

![Workspace concept diagram](/assets/new_concept/concept_workspace.png)

## Workspace Identifiers

Each workspace has a unique identifier that is used to reference the workspace in APIs, integrations, and platform resources.

**Default Restrictions:**
- Must be alphanumeric with hyphens allowed (but not leading, trailing, or consecutive hyphens)
- Maximum length of 16 characters
- Cannot be changed after workspace creation

These default restrictions can be configured differently upon request to accommodate your organization's needs.
The restrictions exist to ensure the combined `${workspaceIdentifier}.${projectIdentifier}` fits within cloud platform constraints (e.g., AWS account aliases: 64 chars, Kubernetes namespaces: 63 chars).

## Related Resources

### Concepts
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/core/how-to-manage-a-project.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ This guide explains how to manage projects in meshStack, including user access,
**Step by Step Guide:**

1. Start the wizard by selecting "Create Project" in the project tab inside the workspace manager.
2. Fill in the required details such as name, ID, and tag information.
2. Fill in the required details such as name, [identifier](../../concepts/project.md#project-names-and-identifiers), and tag information.
3. Review the project details and confirm creation.

### Creating a Project as an Administrator
Expand Down
4 changes: 2 additions & 2 deletions docs/guides/core/how-to-manage-a-workspace.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Here are short guides on how to handle the most common tasks in a workspace.
**Step by Step Guide:**

1. Start the wizard by selecting "Create Workspace" in the workspace drop-down in the top navigation bar.
2. Fill in the required details such as name, ID, and tag information.
2. Fill in the required details such as name, [identifier](../../concepts/workspace.md#workspace-identifiers) and tag information.
3. Onboard the initial team members.
4. Review the workspace details and confirm creation.

Expand All @@ -33,7 +33,7 @@ Here are short guides on how to handle the most common tasks in a workspace.

1. Navigate to the admin area and select "Workspaces."
2. Click on "Create Workspace."
3. Fill in the required details such as name, ID, and tag information.
3. Fill in the required details such as name, [identifier](../../concepts/workspace.md#workspace-identifiers) and tag information.
4. Assign initial users and roles.
5. Review the workspace details and confirm creation.

Expand Down
6 changes: 3 additions & 3 deletions static/billing-api/meshmetering-openapi-docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
},
"examples": {
"meshObjectsRoot": {
"value": "{\n \"_links\" : {\n \"meshchargebacks\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshchargebacks{?workspaceIdentifier,projectIdentifier,period,finalized,finalizedSince,cancelledSince}\",\n \"templated\" : true\n },\n \"meshtenantusagereports\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshtenantusagereports{?ownedByWorkspace,ownedByProject,isManaged,platform,platformType,platformTenantId,period,reportCategory,paymentMethodIdentifier,meshTenantId,finalizedAfter,cancelledAfter,status,showCancelled,sort}\",\n \"templated\" : true\n },\n \"self\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects\"\n }\n }\n}"
"value": "{\n \"_links\" : {\n \"meshtenantusagereports\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshtenantusagereports{?ownedByWorkspace,ownedByProject,isManaged,platform,platformType,platformTenantId,period,reportCategory,paymentMethodIdentifier,meshTenantId,finalizedAfter,cancelledAfter,status,showCancelled,sort}\",\n \"templated\" : true\n },\n \"meshchargebacks\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshchargebacks{?workspaceIdentifier,projectIdentifier,period,finalized,finalizedSince,cancelledSince}\",\n \"templated\" : true\n },\n \"self\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects\"\n }\n }\n}"
}
}
}
Expand Down Expand Up @@ -394,7 +394,7 @@
},
"examples": {
"meshTenantUsageReportsList": {
"value": "{\n \"_embedded\" : {\n \"meshTenantUsageReports\" : [ {\n \"kind\" : \"meshTenantUsageReport\",\n \"apiVersion\" : \"v3\",\n \"metadata\" : {\n \"uuid\" : \"720f8801-d500-4ff3-bdc2-aae5d6c1e2df\",\n \"ownedByWorkspace\" : \"test-workspace-2\",\n \"ownedByProject\" : \"test-project\",\n \"createdAt\" : \"2025-01-07T01:00:00Z\"\n },\n \"spec\" : {\n \"period\" : \"2024-12\",\n \"reportCategory\" : \"BILLING\",\n \"platformType\" : \"Azure\",\n \"platform\" : \"azure.prod\",\n \"platformTenantId\" : \"dc6b2516-7313-456b-837b-158384a6ba9b\",\n \"version\" : 2\n },\n \"status\" : {\n \"generatedAt\" : \"2025-01-07T01:00:00Z\",\n \"finalizedAt\" : \"2025-01-07T01:00:00Z\",\n \"paymentMethod\" : {\n \"identifier\" : \"test-payment-method\",\n \"name\" : \"Test Payment Method\",\n \"amount\" : 100,\n \"expirationDate\" : \"2025-06-01T00:00:00Z\"\n },\n \"timeframe\" : {\n \"from\" : \"2024-12-01T00:00:00Z\",\n \"to\" : \"2025-01-01T00:00:00Z\"\n },\n \"tags\" : {\n \"env\" : [ \"prod\" ],\n \"costCenter\" : [ \"4058\" ]\n },\n \"lineItems\" : [ {\n \"netAmount\" : {\n \"amount\" : 50.0,\n \"currency\" : \"EUR\",\n \"baseAmount\" : 40.0,\n \"baseCurrency\" : \"USD\",\n \"exchangeRate\" : 1.1\n },\n \"sellerId\" : \"Platform Team\",\n \"sellerProductGroup\" : \"Azure\"\n } ]\n },\n \"_links\" : {\n \"self\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshtenantusagereports/720f8801-d500-4ff3-bdc2-aae5d6c1e2df\"\n }\n }\n }, {\n \"kind\" : \"meshTenantUsageReport\",\n \"apiVersion\" : \"v3\",\n \"metadata\" : {\n \"uuid\" : \"ec072338-4703-437b-8f9e-2f3d3b7b27b3\",\n \"ownedByWorkspace\" : \"test-workspace-2\",\n \"ownedByProject\" : \"test-project\",\n \"createdAt\" : \"2025-01-05T01:00:00Z\"\n },\n \"spec\" : {\n \"period\" : \"2024-12\",\n \"reportCategory\" : \"BILLING\",\n \"platformType\" : \"Azure\",\n \"platform\" : \"azure.prod\",\n \"platformTenantId\" : \"da49c857-0ab8-41be-93a7-446489f25ece\",\n \"version\" : 1\n },\n \"status\" : {\n \"generatedAt\" : \"2025-01-05T01:00:00Z\",\n \"finalizedAt\" : \"2025-01-05T01:00:00Z\",\n \"cancelledAt\" : \"2025-01-07T01:00:00Z\",\n \"paymentMethod\" : {\n \"identifier\" : \"test-payment-method\",\n \"name\" : \"Test Payment Method\",\n \"amount\" : 100,\n \"expirationDate\" : \"2025-06-01T00:00:00Z\"\n },\n \"timeframe\" : {\n \"from\" : \"2024-12-01T00:00:00Z\",\n \"to\" : \"2025-01-01T00:00:00Z\"\n },\n \"tags\" : {\n \"env\" : [ \"prod\" ],\n \"costCenter\" : [ \"4058\" ]\n },\n \"lineItems\" : [ {\n \"netAmount\" : {\n \"amount\" : 40.0,\n \"currency\" : \"EUR\",\n \"baseAmount\" : 32.0,\n \"baseCurrency\" : \"USD\",\n \"exchangeRate\" : 1.1\n },\n \"sellerId\" : \"Platform Team\",\n \"sellerProductGroup\" : \"Azure\"\n } ]\n },\n \"_links\" : {\n \"self\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshtenantusagereports/ec072338-4703-437b-8f9e-2f3d3b7b27b3\"\n }\n }\n } ]\n },\n \"_links\" : {\n \"self\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshtenantusagereports?ownedByWorkspace=test-workspace-2&showCancelled=true&page=0&size=10&sort=period,desc\"\n }\n },\n \"page\" : {\n \"size\" : 10,\n \"totalElements\" : 2,\n \"totalPages\" : 1,\n \"number\" : 0\n }\n}"
"value": "{\n \"_embedded\" : {\n \"meshTenantUsageReports\" : [ {\n \"kind\" : \"meshTenantUsageReport\",\n \"apiVersion\" : \"v3\",\n \"metadata\" : {\n \"uuid\" : \"720f8801-d500-4ff3-bdc2-aae5d6c1e2df\",\n \"ownedByWorkspace\" : \"test-workspace-2\",\n \"ownedByProject\" : \"test-project\",\n \"createdAt\" : \"2025-01-07T01:00:00Z\"\n },\n \"spec\" : {\n \"period\" : \"2024-12\",\n \"reportCategory\" : \"BILLING\",\n \"platformType\" : \"Azure\",\n \"platform\" : \"azure.prod\",\n \"platformTenantId\" : \"a1068f0c-24b6-4cc7-9548-efd8dff55ff4\",\n \"version\" : 2\n },\n \"status\" : {\n \"generatedAt\" : \"2025-01-07T01:00:00Z\",\n \"finalizedAt\" : \"2025-01-07T01:00:00Z\",\n \"paymentMethod\" : {\n \"identifier\" : \"test-payment-method\",\n \"name\" : \"Test Payment Method\",\n \"amount\" : 100,\n \"expirationDate\" : \"2025-06-01T00:00:00Z\"\n },\n \"timeframe\" : {\n \"from\" : \"2024-12-01T00:00:00Z\",\n \"to\" : \"2025-01-01T00:00:00Z\"\n },\n \"tags\" : {\n \"env\" : [ \"prod\" ],\n \"costCenter\" : [ \"4058\" ]\n },\n \"lineItems\" : [ {\n \"netAmount\" : {\n \"amount\" : 50.0,\n \"currency\" : \"EUR\",\n \"baseAmount\" : 40.0,\n \"baseCurrency\" : \"USD\",\n \"exchangeRate\" : 1.1\n },\n \"sellerId\" : \"Platform Team\",\n \"sellerProductGroup\" : \"Azure\"\n } ]\n },\n \"_links\" : {\n \"self\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshtenantusagereports/720f8801-d500-4ff3-bdc2-aae5d6c1e2df\"\n }\n }\n }, {\n \"kind\" : \"meshTenantUsageReport\",\n \"apiVersion\" : \"v3\",\n \"metadata\" : {\n \"uuid\" : \"ec072338-4703-437b-8f9e-2f3d3b7b27b3\",\n \"ownedByWorkspace\" : \"test-workspace-2\",\n \"ownedByProject\" : \"test-project\",\n \"createdAt\" : \"2025-01-05T01:00:00Z\"\n },\n \"spec\" : {\n \"period\" : \"2024-12\",\n \"reportCategory\" : \"BILLING\",\n \"platformType\" : \"Azure\",\n \"platform\" : \"azure.prod\",\n \"platformTenantId\" : \"9cb300d5-8d14-4f47-baab-173dd1218971\",\n \"version\" : 1\n },\n \"status\" : {\n \"generatedAt\" : \"2025-01-05T01:00:00Z\",\n \"finalizedAt\" : \"2025-01-05T01:00:00Z\",\n \"cancelledAt\" : \"2025-01-07T01:00:00Z\",\n \"paymentMethod\" : {\n \"identifier\" : \"test-payment-method\",\n \"name\" : \"Test Payment Method\",\n \"amount\" : 100,\n \"expirationDate\" : \"2025-06-01T00:00:00Z\"\n },\n \"timeframe\" : {\n \"from\" : \"2024-12-01T00:00:00Z\",\n \"to\" : \"2025-01-01T00:00:00Z\"\n },\n \"tags\" : {\n \"env\" : [ \"prod\" ],\n \"costCenter\" : [ \"4058\" ]\n },\n \"lineItems\" : [ {\n \"netAmount\" : {\n \"amount\" : 40.0,\n \"currency\" : \"EUR\",\n \"baseAmount\" : 32.0,\n \"baseCurrency\" : \"USD\",\n \"exchangeRate\" : 1.1\n },\n \"sellerId\" : \"Platform Team\",\n \"sellerProductGroup\" : \"Azure\"\n } ]\n },\n \"_links\" : {\n \"self\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshtenantusagereports/ec072338-4703-437b-8f9e-2f3d3b7b27b3\"\n }\n }\n } ]\n },\n \"_links\" : {\n \"self\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshtenantusagereports?ownedByWorkspace=test-workspace-2&showCancelled=true&page=0&size=10&sort=period,desc\"\n }\n },\n \"page\" : {\n \"size\" : 10,\n \"totalElements\" : 2,\n \"totalPages\" : 1,\n \"number\" : 0\n }\n}"
}
}
}
Expand Down Expand Up @@ -449,7 +449,7 @@
},
"examples": {
"meshTenantUsageReport": {
"value": "{\n \"kind\" : \"meshTenantUsageReport\",\n \"apiVersion\" : \"v3\",\n \"metadata\" : {\n \"uuid\" : \"720f8801-d500-4ff3-bdc2-aae5d6c1e2df\",\n \"ownedByWorkspace\" : \"test-workspace-2\",\n \"ownedByProject\" : \"test-project\",\n \"createdAt\" : \"2025-01-07T01:00:00Z\"\n },\n \"spec\" : {\n \"period\" : \"2024-12\",\n \"reportCategory\" : \"BILLING\",\n \"platformType\" : \"Azure\",\n \"platform\" : \"azure.prod\",\n \"platformTenantId\" : \"dc6b2516-7313-456b-837b-158384a6ba9b\",\n \"version\" : 2\n },\n \"status\" : {\n \"generatedAt\" : \"2025-01-07T01:00:00Z\",\n \"finalizedAt\" : \"2025-01-07T01:00:00Z\",\n \"paymentMethod\" : {\n \"identifier\" : \"test-payment-method\",\n \"name\" : \"Test Payment Method\",\n \"amount\" : 100,\n \"expirationDate\" : \"2025-06-01T00:00:00Z\"\n },\n \"timeframe\" : {\n \"from\" : \"2024-12-01T00:00:00Z\",\n \"to\" : \"2025-01-01T00:00:00Z\"\n },\n \"tags\" : {\n \"env\" : [ \"prod\" ],\n \"costCenter\" : [ \"4058\" ]\n },\n \"lineItems\" : [ {\n \"netAmount\" : {\n \"amount\" : 50.0,\n \"currency\" : \"EUR\",\n \"baseAmount\" : 40.0,\n \"baseCurrency\" : \"USD\",\n \"exchangeRate\" : 1.1\n },\n \"sellerId\" : \"Platform Team\",\n \"sellerProductGroup\" : \"Azure\"\n } ]\n },\n \"_links\" : {\n \"self\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshtenantusagereports/720f8801-d500-4ff3-bdc2-aae5d6c1e2df\"\n }\n }\n}"
"value": "{\n \"kind\" : \"meshTenantUsageReport\",\n \"apiVersion\" : \"v3\",\n \"metadata\" : {\n \"uuid\" : \"720f8801-d500-4ff3-bdc2-aae5d6c1e2df\",\n \"ownedByWorkspace\" : \"test-workspace-2\",\n \"ownedByProject\" : \"test-project\",\n \"createdAt\" : \"2025-01-07T01:00:00Z\"\n },\n \"spec\" : {\n \"period\" : \"2024-12\",\n \"reportCategory\" : \"BILLING\",\n \"platformType\" : \"Azure\",\n \"platform\" : \"azure.prod\",\n \"platformTenantId\" : \"a1068f0c-24b6-4cc7-9548-efd8dff55ff4\",\n \"version\" : 2\n },\n \"status\" : {\n \"generatedAt\" : \"2025-01-07T01:00:00Z\",\n \"finalizedAt\" : \"2025-01-07T01:00:00Z\",\n \"paymentMethod\" : {\n \"identifier\" : \"test-payment-method\",\n \"name\" : \"Test Payment Method\",\n \"amount\" : 100,\n \"expirationDate\" : \"2025-06-01T00:00:00Z\"\n },\n \"timeframe\" : {\n \"from\" : \"2024-12-01T00:00:00Z\",\n \"to\" : \"2025-01-01T00:00:00Z\"\n },\n \"tags\" : {\n \"env\" : [ \"prod\" ],\n \"costCenter\" : [ \"4058\" ]\n },\n \"lineItems\" : [ {\n \"netAmount\" : {\n \"amount\" : 50.0,\n \"currency\" : \"EUR\",\n \"baseAmount\" : 40.0,\n \"baseCurrency\" : \"USD\",\n \"exchangeRate\" : 1.1\n },\n \"sellerId\" : \"Platform Team\",\n \"sellerProductGroup\" : \"Azure\"\n } ]\n },\n \"_links\" : {\n \"self\" : {\n \"href\" : \"https://mesh-billing-url/api/meshobjects/meshtenantusagereports/720f8801-d500-4ff3-bdc2-aae5d6c1e2df\"\n }\n }\n}"
}
}
}
Expand Down
Loading