Create a private hook version
Function
CreatePrivateHookVersion
Create a private hook version. After creating a private hook version, you need to call UpdatePrivateHook API to set it as the default version for it to take effect.
-
The hook_version must follow the Semantic Version and is customized by the user.
-
If both hook_name and hook_id are provided, RFS checks whether they match. If hook name does not match the current private hook ID, error code 400 is returned.
-
RFS performs validations on private hooks, such as file size checks and policy document syntax validation. If any errors are found, the creation of the hook will fail.
URI
POST /v1/private-hooks/{hook_name}/versions
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
hook_name |
Yes |
String |
Private hook name. The name is unique within its domain (domain_id) and region. It can contain Chinese characters, uppercase and lowercase letters, digits, underscores (_), and hyphens (-). The first character must be a Chinese or English character. It is case sensitive. We recommend users to use a three-part namespace for naming: {custom-hook-name}-{hook application context}-hook. |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
Client-Request-Id |
Yes |
String |
Unique request ID. It is specified by a user and is used to locate a request. UUID is recommended. |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
hook_id |
No |
String |
Unique ID of a private hook. It is an UUID generated by RFS when a private hook is created. Private hook names are unique only at one specific time, so you can create a private hook named helloWorld and another private hook with the same name after deleting the first one. For parallel development in a team, users may want to ensure that the private hook they operate is the one created by themselves, not the one with the same name created by other teammates after deleting the previous one. Therefore, they can use this ID for strong matching. RFS ensures that the ID of each private hook is different and does not change with updates. If the hook_id value is different from the current private hook ID, error code 400 is returned. |
hook_version |
Yes |
String |
Private hook version. The version number follows the Semantic Version and is customized by the user. |
hook_version_description |
No |
String |
Description of the private hook version. It can be used by users to identify and manage private hook versions. Note: The private hook version is immutable, so the description cannot be updated. If it needs to be updated, please delete private hook version and rebuild it. |
policy_uri |
No |
String |
OBS address of the policy file. The content must be written in the Rego language, which is recognizable by the open-source OPA (Open Policy Agent) engine, as described in the documentation at https://www.openpolicyagent.org/docs/latest/policy-language/. Ensure that the OBS address is located in the same region as the RFS. The policy file can be a single file or a .zip package. A single file must end with .rego. A .zip package must end with .zip. The policy file verification requirements are as follows:
Either policy_uri or policy_body must be specified. |
policy_body |
No |
String |
Policy content. The content must be written in the Rego language, which is recognizable by the open-source OPA (Open Policy Agent) engine, as described in the documentation at https://www.openpolicyagent.org/docs/latest/policy-language/. Either policy_uri or policy_body must be specified. |
Response Parameters
Status code: 400
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code |
error_msg |
String |
Response message |
Status code: 401
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code |
error_msg |
String |
Response message |
Status code: 403
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code |
error_msg |
String |
Response message |
Status code: 404
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code |
error_msg |
String |
Response message |
Status code: 409
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code |
error_msg |
String |
Response message |
Status code: 429
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code |
error_msg |
String |
Response message |
Status code: 500
Parameter |
Type |
Description |
---|---|---|
error_code |
String |
Response code |
error_msg |
String |
Response message |
Example Requests
-
Create a private hook version under the specified private hook via the policy uri
POST https://{endpoint}/v1/private-hooks/my-hello-world-hook-name/versions { "hook_version" : "0.0.1", "policy_uri" : "https://my_hello_world_bucket.{region}.myhuaweicloud.com/policy.rego", "hook_version_description" : "my first private hook version" }
-
Create a private hook version under the specified private hook via the policy body
POST https://{endpoint}/v1/private-hooks/my-hello-world-hook-name/versions { "hook_version" : "0.0.2", "policy_body" : "package policy\n\nimport rego.v1\n\nhook_result := {\n\"is_passed\": input.message == \"world\",\n\"err_msg\": \"The error msg when private hook is not passed the validation\",\n}", "hook_version_description" : "my second private hook version" }
Example Responses
None
Status Codes
Status Code |
Description |
---|---|
201 |
Private hook version created successfully. No content returned. |
400 |
Invalid request. |
401 |
Authentication failed. |
403 |
|
404 |
The private hook does not exist. |
409 |
Creation requests conflict. The specified private hook version already exists. |
429 |
Too frequent requests. |
500 |
Internal server error. |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot