From 126ba7338c1b76dfdfd443e9f7435d6f6db50f78 Mon Sep 17 00:00:00 2001 From: Olaf Joppe Date: Wed, 1 May 2024 01:21:19 +0200 Subject: [PATCH 01/16] Update projects-api.md Public Projects API v2 --- .../apidocs-mxsdk/apidocs/projects-api.md | 159 ++---------------- 1 file changed, 16 insertions(+), 143 deletions(-) diff --git a/content/en/docs/apidocs-mxsdk/apidocs/projects-api.md b/content/en/docs/apidocs-mxsdk/apidocs/projects-api.md index 5931d296930..79d46fd631f 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/projects-api.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/projects-api.md @@ -2,161 +2,34 @@ title: "Projects API" url: /apidocs-mxsdk/apidocs/projects-api/ category: "API Documentation" -description: "This API allows you to programmatically create an app in your company space and move working copies between the Mendix Team Server and the Model Server." +description: "This API allows you to manage your projects and their teams." weight: 100 -deprecated: true +deprecated: false --- -{{% alert color="warning" %}} -The Projects API is deprecated. Mendix aims to remove the Project API on March 31, 2024. -{{% /alert %}} - ## 1 Introduction -The Projects API allows you to programmatically create a project in your company space and move working copies between the Team Server and the Model Server. - -{{% alert color="warning" %}} -As of June 20, 2021, you can no longer create apps using app templates created in Desktop Modeler version [7.23.14](/releasenotes/studio-pro/7.23/#72314) or below. Please update your templates to [7.23.15](/releasenotes/studio-pro/7.23/#72315) or above before creating apps based on those templates. -{{% /alert %}} - -## 2 Error Handling - -The following errors might be returned by the service. As this API is implemented as an app service, it will only give a HTTP status code 500 in case an error occurs. - -| Status code | Description | -| --- | --- | -| 500 (Internal Server Error) / 560 (Internal Server Error) | An error occurred when invoking the app service. The "faultstring" field will elaborate on the error details. Please contact Customer Support through [https://support.mendix.com/](https://support.mendix.com/) or [support@mendix.com](mailto:support@mendix.com) if this problem persists. | -| 502 (Bad Gateway) / 503 (Service Unavailable) | The server is currently offline. Please contact Customer Support through [https://support.mendix.com/](https://support.mendix.com/) or [support@mendix.com](mailto:support@mendix.com) if this problem persists. | -| 504 (Gateway timeout) | Your request is being processed but the server aborted the response because the request took too long. Note that the request might have been applied still. Please contact Customer Support through [https://support.mendix.com/](https://support.mendix.com/) or [support@mendix.com](mailto:support@mendix.com) if this happens. | - -## 3 Operations - -The following operations are available in the Projects API. - -### 3.1 CreateNewApp {#createnewapp} - -The CreateNewApp operation will create a new app and corresponding project. As parameters it requires a project name, a user name that is linked to a Mendix account, an [API Key](/apidocs-mxsdk/apidocs/authentication/) corresponding to that user account, and a project summary. The project summary may contain a brief description of the project. - -{{< figure src="/attachments/apidocs-mxsdk/apidocs/projects-api/CreateNewAppCall.PNG" class="no-border" >}} - -#### 3.1.1 Parameters - -| Name | Type | Description | -| --- | --- | --- | -| ProjectName | String | Name of the project. May not be blank or contain any of the following characters: `<>:/\|?*` | -| ProjectSummary | String | A brief description of the project. May be set to `empty`. | -| User | String | The email address you use to log into your Mendix account. | -| ApiKey | String | An [API Key](/apidocs-mxsdk/apidocs/authentication/) associated to the user account of *User*. | -| TemplateUUID (can be `empty`) | String | The [UUID](/appstore/overview/#usage) that identifies the template with which the project will be created. If left empty, a default blank template will be used. | - -#### 3.1.2 Output - -The CreateNewApp action returns a String which is the ID of the background job that has been scheduled to create your new app. - -#### 3.1.3 Usage from Studio Pro - -After you have imported the Projects API app service, an activity called 'CreateNewApp' is available under the 'ProjectsAPI' node in the Action dialog. - -Reference the microflow below: - -{{< figure src="/attachments/apidocs-mxsdk/apidocs/projects-api/call-create-new-app.png" class="no-border" >}} - -### 3.2 RetrieveJobStatus - -Retrieves the status of a background job that was queued for execution. - -#### 3.2.1 Parameters - -| Name | Type | Description | -| --- | --- | --- | -| JobId | String | The ID of a background job that was provided to you by one of the ProjectsAPI operations. | - -{{< figure src="/attachments/apidocs-mxsdk/apidocs/projects-api/RetrieveJobStatusCall.PNG" class="no-border" >}} - -#### 3.2.2 Output - -The output of the RetrieveJobStatus operation is a `JobStatus` entity with the following attributes: - -{{< figure src="/attachments/apidocs-mxsdk/apidocs/projects-api/RetrieveJobStatusResponse.PNG" class="no-border" >}} - -The `ProjectsAPI.JobState` enumeration can have the values `Running`, `Completed` or `Failed`. - -The `Result` element contains the job result, in case it has completed. For `CreateNewApp` this is the Project ID of the newly created app. For `ExposeTeamServerRevisionAsOnlineWorkingCopy`, this is the working copy ID on the Model Server. For `CommitOnlineWorkingCopyChangesToTeamServer`, it's the new revision number for the corresponding Team Server project. - -#### 3.2.3 Usage From Studio Pro - -The microflow below references how to use the RetrieveJobStatus call from Studio Pro. - -{{< figure src="/attachments/apidocs-mxsdk/apidocs/projects-api/call-retrieve-job-status.png" class="no-border" >}} - -### 3.3 DeleteApp - -The DeleteApp operation will remove an application, including all resources that are associated with it, like the Team Server repository, cloud nodes, and all model server working copies. The operation can only be called by someone who has administrative permissions on the project (usually the user that created the project). - -#### 3.3.1 Parameters - -| Name | Type | Description | -| --- | --- | --- | -| ProjectID | String | ID of the project/app, as can be found under the app settings. | -| User | String | The email address you use to log into your Mendix account.| -| ApiKey | String | An API Key associated to the user account of the User.| - -#### 3.3.2 Output - -The DeleteApp action does not return anything. If a true request completes successfully, the application was removed. - -### 3.4 ExposeTeamServerRevisionAsOnlineWorkingCopy - -Expose a specific Team Server revision as an Online Working Copy. - -#### 3.4.1 Parameters - -The ExposeTeamServerRevisionAsOnlineWorkingCopy operation takes a ProjectsAPI.ExposeTeamServerRevisionRequest object as parameter. This object has the following members: - -| Name | Type | Description | -| --- | --- | --- | -| Username | String | The email address of your Mendix account. | -| ApiKey | String | An API key of your Mendix account. | -| ProjectId | String | The ID of the project/app that you want to expose. | -| Branch (can be `empty`) | String | Name of the branch to expose. If this value is `empty`, the main line is exposed. | -| Revision (can be `empty`) | Integer/Long | Revision number to expose. If the value is `empty` or `-1`, the latest (HEAD) revision is exposed. | - -#### 3.4.2 Output - -The ExposeTeamServerAsWorkingCopy action returns a String which is the Job ID of the background job that was queued for execution. The returned Job ID may be used as input for the RetrieveJobStatus action. - -#### 3.4.3 Usage - -Reference this microflow: - -{{< figure src="/attachments/apidocs-mxsdk/apidocs/projects-api/expose-team-server-revision.png" class="no-border" >}} - -### 3.5 CommitOnlineWorkingCopyChangesToTeamServer - -#### 3.5.1 Parameters +The Mendix Projects API allows you to create, edit or delete your projects. -| Name | Type | Description | -| --- | --- | --- | -| Username | String | The email address of your Mendix account. | -| ApiKey | String | An API key of your Mendix account. | -| ProjectId | String | The ID of the project/app that you want to expose. | -| Branch (can be `empty`) | String | Name of the branch to commit the changes to. If this value is `empty`, the main line is used. | -| Revision | Integer/Long | Revision number to base the changes on. If the value is `-1`, the latest (HEAD) revision is used. | +## 2 Authentication {#authentication} -#### 3.5.2 Output +Authentication for the API uses a personal access token (PAT). -The CommitOnlineWorkingCopyChangesToTeamServer action returns a String which is the Job ID of the background job that was queued for execution. The returned Job ID may be used as input for the RetrieveJobStatus action. +### 2.1 Generating a PAT {#generate} -#### 3.5.3 Usage from Studio Pro +To generate a PAT, see the [Personal Access Tokens](/community-tools/mendix-profile/user-settings/#pat) section in *User Settings*. -Reference this microflow: +Select the appropriate scopes, depending on the endpoints that need to be invoked. Refer to the API Reference for more information on which scopes to use in which endpoints. -{{< figure src="/attachments/apidocs-mxsdk/apidocs/projects-api/commit-working-copy.png" class="no-border" >}} +### 2.2 Using the PAT -## 4 Download +Each request must contain an `Authorization` header with the value `MxToken {GENERATED_PAT}`. For example: -Download the Projects API app service below, so you can import it in your model: +```http {linenos=false} +GET /projects HTTP/1.1 +Authorization: MxToken 7LJE…vk +``` -[ProjectsAPI_11.msd](/attachments/apidocs-mxsdk/apidocs/projects-api/ProjectsAPI_11.msd) +## 3 API Reference -In the consumed Projects API app service settings, you will have to use a constant with the value `https://sprintr.home.mendix.com/ws/ProjectsAPI/11/soap1` as Location. +{{< swaggerui src="/openapi-spec/projects-api.yaml" >}} From 5b2a1ca5aadf7e7109bf7061f6d71c3fcb88ed5e Mon Sep 17 00:00:00 2001 From: Olaf Joppe Date: Wed, 1 May 2024 01:25:53 +0200 Subject: [PATCH 02/16] Create openapi-projects-v2 --- static/openapi-spec/openapi-projects-v2 | 691 ++++++++++++++++++++++++ 1 file changed, 691 insertions(+) create mode 100644 static/openapi-spec/openapi-projects-v2 diff --git a/static/openapi-spec/openapi-projects-v2 b/static/openapi-spec/openapi-projects-v2 new file mode 100644 index 00000000000..29643ca7e5f --- /dev/null +++ b/static/openapi-spec/openapi-projects-v2 @@ -0,0 +1,691 @@ +openapi: 3.0.0 +info: + version: '1.0' + title: projects-api + termsOfService: https://www.mendix.com/terms-of-use/ + description: Projects API + contact: + name: Mendix Support + url: 'https://support.mendix.com' + email: support@mendix.com +servers: + - url: 'https://projects-api.home.mendix.com/v2' +paths: + '/projects': + get: + tags: + - Projects + summary: GET Projects + description: 'Returns a list of projects, according to the user’s authorisation within the Developer Portal.' + operationId: get-projects + parameters: + - name: limit + in: query + description: The maximum number of items to be returned per request. The default and maximum value is 100. + schema: + type: integer + - name: offset + in: query + description: The offset is the zero-based index of the first project to be returned on the page. The default value is 0. + schema: + type: integer + - name: createdSince + in: query + description: 'Retrieve all projects created after this date. Time is in UTC and must be provided in this format: 2020-01-16T05:53:28Z' + schema: + type: string + responses: + '200': + $ref: '#/components/responses/ProjectsResponse' + '400': + $ref: '#/components/responses/Http400' + '401': + $ref: '#/components/responses/Http401' + '403': + $ref: '#/components/responses/Http403' + '500': + $ref: '#/components/responses/Http500' + security: + - PersonalAccessTokenMxAppMetadataRead: [] + post: + tags: + - Projects + summary: POST Project + description: Schedules a job on the server to create a project. The job will be handled asynchronously; the operation returns a jobId that can be used to monitor the status of the process.' + operationId: post-project + requestBody: + $ref: '#/components/requestBodies/Project' + responses: + '202': + $ref: '#/components/responses/ProjectJobIdResponse' + '400': + $ref: '#/components/responses/Http400' + '401': + $ref: '#/components/responses/Http401' + '500': + $ref: '#/components/responses/Http500' + security: + - PersonalAccessTokenMxAppCreate: [] + '/projects/{project-id}': + delete: + tags: + - Projects + summary: DELETE Project + description: 'Deletes a project, its repository, cloud resources, and all collaboration data. A project can not be deleted if it is attached to a licensed node or if it is hosted in a non-public Mendix cloud.' + operationId: delete-project + parameters: + - name: project-id + in: path + description: The unique id of the project + required: true + schema: + type: string + responses: + '202': + description: Accepted + '401': + $ref: '#/components/responses/Http401' + '404': + $ref: '#/components/responses/Http404' + '409': + $ref: '#/components/responses/Http409' + '500': + $ref: '#/components/responses/Http500' + security: + - PersonalAccessTokenMxAppDelete: [] + '/projects/{project-id}/members': + get: + tags: + - Members + - Projects + summary: GET Project Members + description: 'Returns a list of team members of the project.' + operationId: get-project-members + parameters: + - name: offset + in: query + description: 'The offset is the zero-based index of the first project to be returned on the page, and must be a positive value. The default value is 0.' + schema: + type: string + - name: limit + in: query + description: The maximum number of items to be returned per request. The default and maximum value is 100. + schema: + type: string + - name: project-id + in: path + description: The unique id of the project + required: true + schema: + type: string + responses: + '200': + $ref: '#/components/responses/ProjectMembersResponse' + '400': + $ref: '#/components/responses/Http400' + '401': + $ref: '#/components/responses/Http401' + '403': + $ref: '#/components/responses/Http403' + '404': + $ref: '#/components/responses/Http404' + '500': + $ref: '#/components/responses/Http500' + security: + - PersonalAccessTokenMxAppMetadataRead: [] + post: + tags: + - Projects + - Members + summary: POST Project Member + description: 'Adds a team member to the project with a specific role. The user must be an active member of the platform and belong to the same company as the user requesting the change. If the company is not yet using centralised platform roles, only the Scrum master role can be assigned.' + operationId: post-project-member + parameters: + - name: project-id + in: path + description: The unique id of the project + required: true + schema: + type: string + requestBody: + $ref: '#/components/requestBodies/ProjectMember' + responses: + '201': + description: Accepted + '400': + $ref: '#/components/responses/Http400' + '401': + $ref: '#/components/responses/Http401' + '404': + $ref: '#/components/responses/Http404' + '409': + $ref: '#/components/responses/Http409' + '500': + $ref: '#/components/responses/Http500' + security: + - PersonalAccessTokenMxAppTeamWrite: [] + '/projects/{project-id}/members/{user-id}': + delete: + tags: + - Projects + - Members + summary: DELETE Project Member + description: 'Removes a user from a project. The user is not removed when they are the last Scrum master of the project, the last member of the project, or the technical contact of a licensed app.' + operationId: delete-project-member + parameters: + - $ref: '#/components/parameters/project-id' + - $ref: '#/components/parameters/user-id' + responses: + '204': + description: No Content + '401': + $ref: '#/components/responses/Http401' + '404': + $ref: '#/components/responses/Http404' + '409': + $ref: '#/components/responses/Http409' + '500': + $ref: '#/components/responses/Http500' + security: + - PersonalAccessTokenMxAppTeamWrite: [] + '/projects/jobs/{job-id}': + get: + tags: + - Projects + summary: GET ProjectJob + description: 'Returns the status of a job.' + operationId: get-project-job + parameters: + - $ref: '#/components/parameters/job-id' + responses: + '200': + $ref: '#/components/responses/ProjectJobResponse' + '401': + $ref: '#/components/responses/Http401' + '404': + $ref: '#/components/responses/Http404' + '500': + $ref: '#/components/responses/Http500' + security: + - PersonalAccessTokenMxAppCreate: [] +tags: + - name: Members + description: 'Team members of a Project' + - name: Projects + description: 'Project of Mendix platform' +components: + parameters: + project-id: + name: project-id + in: path + description: The unique id of the project + required: true + schema: + type: string + user-id: + name: user-id + in: path + description: The unique id of the user + required: true + schema: + type: string + job-id: + name: job-id + in: path + description: Identifier of a project creation job + required: true + schema: + type: string + requestBodies: + ProjectMember: + description: '' + content: + application/json: + schema: + type: object + properties: + memberId: + type: string + description: Unique identifier of the member + roleId: + type: string + description: Unique identifier of the role that will be assigned to the member + x-examples: + Example 1: + memberId: d207ff9b-3603-4060-aa0a-62d5b264bac7 + roleId: fdea56de-3c79-48d9-93ff-61cbc736426c + examples: + Example 1: + value: + memberId: string + roleId: string + Project: + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: Name of the project + maxLength: 100 + summary: + type: string + description: Description of the project + maxLength: 400 + image: + type: string + description: 'Base-64 encoded string of the project icon image. The file size is limited to 5MB, minimum of 200 x 200 px and amaximum of 400 x 400 px.' + templateId: + type: string + description: 'Identifier of the template that the project will be copied from. If empty, the default template will be used.' + format: uuid + pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' + maxLength: 36 + required: + - name + x-examples: + Example 1: + name: name + summary: summary + image: image + templateId: templateId + examples: + Example 1: + value: + name: string + summary: string + image: string + templateId: bbb9c2b3-18f3-43ab-b149-c0dabf946f4b + securitySchemes: + PersonalAccessTokenMxAppMetadataRead: + type: apiKey + description: "Based on MxToken JSON Web Tokens a `PERSONAL_ACCESS_TOKEN` with the `mx:app:metadata:read` scope." + name: Authorization + in: header + PersonalAccessTokenMxAppCreate: + type: apiKey + description: "Based on MxToken JSON Web Tokens a `PERSONAL_ACCESS_TOKEN` with the `mx:app:create` scope." + name: Authorization + in: header + PersonalAccessTokenMxAppDelete: + type: apiKey + description: "Based on MxToken JSON Web Tokens a `PERSONAL_ACCESS_TOKEN` with the `mx:app:delete` scope." + name: Authorization + in: header + PersonalAccessTokenMxAppTeamWrite: + type: apiKey + description: "Based on MxToken JSON Web Tokens a `PERSONAL_ACCESS_TOKEN` with the `mx:app:team:write` scope." + name: Authorization + in: header + responses: + ProjectsResponse: + description: List of projects + content: + application/json: + schema: + type: object + properties: + page: + type: object + description: 'Contains information about the current page, and total elements to be retrieved' + properties: + totalElements: + type: integer + description: Total projects to be retrieved + offset: + type: integer + description: Offset used by the current request + elements: + type: integer + description: Amount of elements on the current page + items: + type: array + description: Array of object type project. + items: + type: object + properties: + projectId: + type: string + description: Unique identifier for projects on the Mendix platform. + name: + type: string + description: Name of the project. + description: + type: string + description: Description of the project. + logo: + type: string + description: URL of the project image/logo. + createdOn: + type: string + description: Date and time in UTC when the project was created. + active: + type: boolean + description: Indicates whether a project is active or not. Inactive projects will only be returned for company admins. + createdBy: + type: object + description: Contains information about the person that created this project. + properties: + userId: + type: string + description: ' Unique identifier for members on the Mendix platform.' + fullName: + type: string + description: Full name of the member. + x-examples: + Example 1: + page: + totalElements: 101 + offset: 0 + elements: 100 + items: + - projectId: Unique UUID + name: Project Name + description: Project with a lovely description + logo: Image URL + createdOn: 'Jun 29, 2023 4:39 PM' + active: true + createdBy: + userId: Unique UUID + fullName: John Doe + examples: + Example 1: + value: + page: + totalElements: 0 + offset: 0 + elements: 0 + items: + - projectId: string + name: string + description: string + logo: string + createdOn: string + active: true + createdBy: + userId: string + fullName: string + ProjectMembersResponse: + description: List of project members + content: + application/json: + schema: + type: object + properties: + page: + type: object + description: 'Contains information about the current page, and total elements to be retrieved' + properties: + totalElements: + type: integer + description: Total projects to be retrieved + offset: + type: integer + description: Offset used by the current request + elements: + type: integer + description: Amount of elements on the current page + items: + type: array + description: Array of members that match path and query parameters and authorisation access + items: + type: object + properties: + userId: + type: string + description: Unique identifier for the member on the Mendix platform + displayName: + type: string + description: Full name of the member. + avatarUrl: + type: string + description: URL of the avatar image of the member. + isActive: + type: boolean + description: Indicator of whether the member is an active member on the platform + company: + type: object + description: Contains information of the company to which the member belongs. + properties: + companyName: + type: string + description: Name of the company to which the member belongs. + x-examples: + Example 1: + page: + totalElements: 101 + offset: 0 + elements: 100 + items: + - userId: UUID-v4 + displayName: Joe Best + avatarUrl: 'https://etcetera' + isActive: true + company: + companyName: My Awesome Company Ltd. + examples: + Example 1: + value: + page: + totalElements: 0 + offset: 0 + elements: 0 + items: + - userId: string + displayName: string + avatarUrl: string + isActive: true + company: + companyName: string + ProjectJobIdResponse: + description: Accepted + content: + application/json: + schema: + type: object + properties: + jobId: + type: string + description: Unique identifier of the job that creates the project. Use this ID to query the status of the process. + format: uuid + pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' + minLength: 36 + maxLength: 36 + x-examples: + Example 1: + jobId: jobId + examples: + Example 1: + value: + jobId: bbb9c2b3-18f3-43ab-b149-c0dabf946f4b + ProjectJobResponse: + description: OK + content: + application/json: + schema: + type: object + properties: + status: + type: string + description: 'Status of the project creation job. This can be ''Scheduled'', ''Running'', ''Completed'' or ''Failed''.' + maxLength: 200 + errorMessage: + type: string + description: Error message provided in case the job has failed + projectId: + type: string + description: Identifier of the new created project + format: uuid + pattern: '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}' + maxLength: 36 + x-examples: + Example 1: + status: String + error_message: String + project_id: String + examples: + Example 2: + value: + status: string + errorMessage: string + projectId: bbb9c2b3-18f3-43ab-b149-c0dabf946f4b + Http400: + description: '400 Bad Request' + content: + application/json: + schema: + type: object + properties: + error: + type: object + description: 'Detailed information on the error' + properties: + message: + type: string + description: 'A short, human-readable title for the general error type' + default: 'Bad Request' + detail: + type: string + description: 'A human-readable description of the specific error' + code: + type: integer + description: 'HTTP status code' + default: 400 + instance: + type: string + description: 'UUID of the request for troubleshooting purposes' + invalid-params: + type: array + description: 'A list of invalid parameters' + properties: + name: + type: string + description: 'Name of the attribute in error' + maxLength: 200 + reason: + type: string + description: 'A human readable description of the error' + maxLength: 200 + Http401: + description: '401 Unauthorized' + content: + application/json: + schema: + type: object + properties: + error: + type: object + description: 'Detailed information on the error' + properties: + message: + type: string + description: 'A short, human-readable title for the general error type' + default: 'Unauthorized' + detail: + type: string + description: 'A human-readable description of the specific error' + code: + type: integer + description: 'HTTP status code' + default: 401 + instance: + type: string + description: 'UUID of the request for troubleshooting purposes' + Http403: + description: '403 Forbidden' + content: + application/json: + schema: + type: object + properties: + error: + type: object + description: 'Detailed information on the error' + properties: + message: + type: string + description: 'A short, human-readable title for the general error type' + default: 'Forbidden' + detail: + type: string + description: 'A human-readable description of the specific error' + code: + type: integer + description: 'HTTP status code' + default: 403 + instance: + type: string + description: 'UUID of the request for troubleshooting purposes' + Http404: + description: '404 Not Found' + content: + application/json: + schema: + type: object + properties: + error: + type: object + description: 'Detailed information on the error' + properties: + message: + type: string + description: 'A short, human-readable title for the general error type' + default: 'Not Found' + detail: + type: string + description: 'A human-readable description of the specific error' + code: + type: integer + description: 'HTTP status code' + default: 404 + instance: + type: string + description: 'UUID of the request for troubleshooting purposes' + Http409: + description: '409 Conflict' + content: + application/json: + schema: + type: object + properties: + error: + type: object + description: 'Detailed information on the error' + properties: + message: + type: string + description: 'A short, human-readable title for the general error type' + default: 'Conflict' + detail: + type: string + description: 'A human-readable description of the specific error' + code: + type: integer + description: 'HTTP status code' + default: 409 + instance: + type: string + description: 'UUID of the request for troubleshooting purposes' + Http500: + description: '500 Internal Server Error' + content: + application/json: + schema: + type: object + properties: + error: + type: object + description: 'Detailed information on the error' + properties: + message: + type: string + description: 'A short, human-readable title for the general error type' + default: 'Internal Server Error' + code: + type: integer + description: 'HTTP status code' + default: 500 + instance: + type: string + description: 'UUID of the request for troubleshooting purposes' From 364f28ebe086e2f34d2f235bfae41681cb48f235 Mon Sep 17 00:00:00 2001 From: Olaf Joppe Date: Wed, 1 May 2024 01:27:03 +0200 Subject: [PATCH 03/16] Update projects-api.md --- content/en/docs/apidocs-mxsdk/apidocs/projects-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/en/docs/apidocs-mxsdk/apidocs/projects-api.md b/content/en/docs/apidocs-mxsdk/apidocs/projects-api.md index 79d46fd631f..9e187032d2e 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/projects-api.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/projects-api.md @@ -32,4 +32,4 @@ Authorization: MxToken 7LJE…vk ## 3 API Reference -{{< swaggerui src="/openapi-spec/projects-api.yaml" >}} +{{< swaggerui src="/openapi-spec/openapi-projects-v2.yaml" >}} From 3931705d62e2e695e2679dfef8acc668ef59f824 Mon Sep 17 00:00:00 2001 From: Olaf Joppe Date: Wed, 1 May 2024 01:28:19 +0200 Subject: [PATCH 04/16] Rename openapi-projects-v2 to openapi-projects-v2.yaml --- .../{openapi-projects-v2 => openapi-projects-v2.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename static/openapi-spec/{openapi-projects-v2 => openapi-projects-v2.yaml} (100%) diff --git a/static/openapi-spec/openapi-projects-v2 b/static/openapi-spec/openapi-projects-v2.yaml similarity index 100% rename from static/openapi-spec/openapi-projects-v2 rename to static/openapi-spec/openapi-projects-v2.yaml From ae4a6a257df3f3ea51e730f5fe6a96ef63c9877b Mon Sep 17 00:00:00 2001 From: Olaf Joppe Date: Thu, 2 May 2024 10:26:57 +0200 Subject: [PATCH 05/16] Update _index.md Release notes Sprintr. Scheduled release dd Sunday 5 May --- .../en/docs/releasenotes/developer-portal/_index.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/content/en/docs/releasenotes/developer-portal/_index.md b/content/en/docs/releasenotes/developer-portal/_index.md index f5e167d1575..e475f18c1c8 100644 --- a/content/en/docs/releasenotes/developer-portal/_index.md +++ b/content/en/docs/releasenotes/developer-portal/_index.md @@ -17,6 +17,18 @@ To see the current status of the Mendix Developer Portal, see [Mendix Status](ht ## 2024 +### May 5 + +#### New features + +* We have released a public beta version of a brand new Projects API. This API will help you automate managing your projects on the platform. Some of its key features are: creating and deleting projects, and managing your project's team. Full documentation can be found [here](/apidocs-mxsdk/apidocs/projects-api/). More features will be added in the coming months. In the meantime, all feedback is welcome and will help us improve this important self service feature of the Developer Portal + +#### Fixes + +* We fixed an issue where project team members were unable to download [documents](/developerportal/general/documents/) uploaded to the Developer Portal +* We fixed an issue where the project administrator was not able to change the [logo of a project](/developerportal/collaborate/general-settings/#general) +* We fixed an issue where under certain circumstances the [technical contact](/developerportal/general/app-roles/#technical-contact) of a project was not displayed correctly + ### May 1 {#may-1-24} #### New Features From 6a0e847644781d7f695102736ae346aba3f66bea Mon Sep 17 00:00:00 2001 From: Luyao Zhang Date: Thu, 2 May 2024 14:24:39 +0200 Subject: [PATCH 06/16] Update latest-releases.html --- layouts/partials/landingpage/latest-releases.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/partials/landingpage/latest-releases.html b/layouts/partials/landingpage/latest-releases.html index 6bc02bfe2d5..1f618a2cb60 100644 --- a/layouts/partials/landingpage/latest-releases.html +++ b/layouts/partials/landingpage/latest-releases.html @@ -17,7 +17,7 @@

Latest Releases