mattermost/api/v4/source/custom_profile_attributes.yaml

258 lines
7.4 KiB
YAML
Raw Normal View History

Custom profile attributes field endpoints (#29662) * Adds the main Property System Architecture components This change adds the necessary migrations for the Property Groups, Fields and Values tables to be created, the store layer and a Property Service that can be used from the app layer. * Adds Custom Profile Attributes endpoints and app layer * implement get and patch cpa values * run i18n-extract * Update property field type to use user instead of person * Update PropertyFields to allow for unique nondeleted fields and remove redundant indexes * Update PropertyValues to allow for unique nondeleted fields and remove redundant indexes * Use StringMap instead of the map[string]any on property fields * Add i18n strings * Revert "Use StringMap instead of the map[string]any on property fields" This reverts commit e2735ab0f8589d2524d636419ca0cb144575c4d6. * Cast JSON binary data to string and add todo note for StringMap use * Add mocks to the retrylayer tests * Cast JSON binary data to string in property value store * Check for binary parameter instead of casting to string for JSON data * Fix bad merge * Check property field type is one of the allowed ones * Avoid reusing err variable to be explicit about the returned value * Merge Property System Migrations into one file * Adds NOT NULL to timestamps at the DB level * Update stores to use tableSelectQuery instead of a slice var * Update PropertyField model translations to be more explicit and avoid repetition * Update PropertyValue model translations to be more explicit and avoid repetition * Use ExecBuilder instead of ToSql&Exec * Update property field errors to add context * Ensure PerPage is greater than zero * Update store errors to give more context * Use ExecBuilder in the property stores where possible * Add an on conflict suffix to the group register to avoid race conditions * Remove user profile API documentation changes * Update patchCPAValues endpoint and docs to return the updated information * Merge two similar error conditions * Use a route function for ListCPAValues * Remove badly used translation string * Remove unused get in register group method * Adds input sanitization and validation to the CPA API endpoints * Takes login outside of one test case to make it clear it affects multiple t.Runs * Fix wrap error and return code when property field has been deleted * Fix receiver name * Adds comment to move the CPA group ID to the db cache * Set the PerPage of CPA fields to the fields limit * Update server/channels/app/custom_profile_attributes_test.go Co-authored-by: Alejandro García Montoro <alejandro.garciamontoro@gmail.com> * Standardize group ID access * Avoid polluting the state between tests * Use specific errors for the retrieval of CPA group --------- Co-authored-by: Scott Bishel <scott.bishel@mattermost.com> Co-authored-by: Mattermost Build <build@mattermost.com> Co-authored-by: Alejandro García Montoro <alejandro.garciamontoro@gmail.com>
2025-01-13 11:12:38 -06:00
"/api/v4/custom_profile_attributes/fields":
get:
tags:
- custom profile attributes
summary: List all the Custom Profile Attributes fields
description: |
List all the Custom Profile Attributes fields.
_This endpoint is experimental._
__Minimum server version__: 10.5
##### Permissions
Must be authenticated.
operationId: ListAllCPAFields
responses:
"200":
description: Custom Profile Attributes fetch successful. Result may be empty.
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PropertyField"
"401":
$ref: "#/components/responses/Unauthorized"
post:
tags:
- custom profile attributes
summary: Create a Custom Profile Attribute field
description: |
Create a new Custom Profile Attribute field on the system.
_This endpoint is experimental._
__Minimum server version__: 10.5
##### Permissions
Must have `manage_system` permission.
operationId: CreateCPAField
requestBody:
content:
application/json:
schema:
type: object
required:
- name
- type
properties:
name:
type: string
type:
type: string
attrs:
type: string
responses:
"201":
description: Custom Profile Attribute field creation successful
content:
application/json:
schema:
$ref: "#/components/schemas/PropertyField"
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"/api/v4/custom_profile_attributes/fields/{field_id}":
patch:
tags:
- custom profile attributes
summary: Patch a Custom Profile Attribute field
description: |
Partially update a Custom Profile Attribute field by providing
only the fields you want to update. Omitted fields will not be
updated. The fields that can be updated are defined in the
request body, all other provided fields will be ignored.
_This endpoint is experimental._
__Minimum server version__: 10.5
##### Permissions
Must have `manage_system` permission.
operationId: PatchCPAField
parameters:
- name: field_id
in: path
description: Custom Profile Attribute field GUID
required: true
schema:
type: string
requestBody:
description: Custom Profile Attribute field that is to be updated
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
type:
type: string
attrs:
type: string
responses:
"200":
description: Custom Profile Attribute field patch successful
content:
application/json:
schema:
$ref: "#/components/schemas/PropertyField"
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
delete:
tags:
- custom profile attributes
summary: Delete a Custom Profile Attribute field
description: |
Marks a Custom Profile Attribute field and all its values as
deleted.
_This endpoint is experimental._
__Minimum server version__: 10.5
##### Permissions
Must have `manage_system` permission.
operationId: DeleteCPAField
parameters:
- name: field_id
in: path
description: Custom Profile Attribute field GUID
required: true
schema:
type: string
responses:
"200":
description: Custom Profile Attribute field deletion successful
content:
application/json:
schema:
$ref: "#/components/schemas/StatusOK"
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"/api/v4/custom_profile_attributes/values":
patch:
tags:
- custom profile attributes
summary: Patch Custom Profile Attribute values
description: |
Partially update a set of values on the requester's Custom
Profile Attribute fields by providing only the information you
want to update. Omitted fields will not be updated. The fields
that can be updated are defined in the request body, all other
provided fields will be ignored.
_This endpoint is experimental._
__Minimum server version__: 10.5
##### Permissions
Must be authenticated.
operationId: PatchCPAValues
requestBody:
description: Custom Profile Attribute values that are to be updated
required: true
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: string
value:
type: string
responses:
"200":
description: Custom Profile Attribute values patch successful
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: string
value:
type: string
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"
"/api/v4/users/{user_id}/custom_profile_attributes":
get:
tags:
- custom profile attributes
summary: List Custom Profile Attribute values
description: |
List all the Custom Profile Attributes values for specified user.
_This endpoint is experimental._
__Minimum server version__: 10.5
##### Permissions
Must have `view members` permission.
operationId: ListCPAValues
parameters:
- name: user_id
in: path
description: User GUID
required: true
schema:
type: string
responses:
"200":
description: Custom Profile Attribute values fetch successful. Result may be empty.
content:
application/json:
schema:
type: array
items:
type: object
properties:
field_id:
type: string
value:
type: string
"400":
$ref: "#/components/responses/BadRequest"
"401":
$ref: "#/components/responses/Unauthorized"
"403":
$ref: "#/components/responses/Forbidden"