@sap/cds 9.3.0 → 9.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/CHANGELOG.md +62 -3
  2. package/_i18n/i18n_vi.properties +113 -0
  3. package/_i18n/messages.properties +106 -17
  4. package/_i18n/messages_ar.properties +194 -0
  5. package/_i18n/messages_bg.properties +194 -0
  6. package/_i18n/messages_cs.properties +194 -0
  7. package/_i18n/messages_da.properties +194 -0
  8. package/_i18n/messages_de.properties +194 -0
  9. package/_i18n/messages_el.properties +194 -0
  10. package/_i18n/messages_en.properties +194 -0
  11. package/_i18n/messages_en_US_saptrc.properties +194 -0
  12. package/_i18n/messages_es.properties +194 -0
  13. package/_i18n/messages_es_MX.properties +194 -0
  14. package/_i18n/messages_fi.properties +194 -0
  15. package/_i18n/messages_fr.properties +194 -0
  16. package/_i18n/messages_he.properties +194 -0
  17. package/_i18n/messages_hr.properties +194 -0
  18. package/_i18n/messages_hu.properties +194 -0
  19. package/_i18n/messages_it.properties +194 -0
  20. package/_i18n/messages_ja.properties +194 -0
  21. package/_i18n/messages_kk.properties +194 -0
  22. package/_i18n/messages_ko.properties +194 -0
  23. package/_i18n/messages_ms.properties +194 -0
  24. package/_i18n/messages_nl.properties +194 -0
  25. package/_i18n/messages_no.properties +194 -0
  26. package/_i18n/messages_pl.properties +194 -0
  27. package/_i18n/messages_pt.properties +194 -0
  28. package/_i18n/messages_ro.properties +194 -0
  29. package/_i18n/messages_ru.properties +194 -0
  30. package/_i18n/messages_sh.properties +194 -0
  31. package/_i18n/messages_sk.properties +194 -0
  32. package/_i18n/messages_sl.properties +194 -0
  33. package/_i18n/messages_sv.properties +194 -0
  34. package/_i18n/messages_th.properties +194 -0
  35. package/_i18n/messages_tr.properties +194 -0
  36. package/_i18n/messages_uk.properties +194 -0
  37. package/_i18n/messages_vi.properties +194 -0
  38. package/_i18n/messages_zh_CN.properties +194 -0
  39. package/_i18n/messages_zh_TW.properties +194 -0
  40. package/bin/serve.js +9 -1
  41. package/common.cds +9 -1
  42. package/lib/compile/cds-compile.js +1 -0
  43. package/lib/compile/etc/properties.js +1 -0
  44. package/lib/compile/for/flows.js +70 -4
  45. package/lib/compile/for/nodejs.js +1 -1
  46. package/lib/compile/minify.js +84 -56
  47. package/lib/compile/to/csn.js +2 -0
  48. package/lib/compile/to/yaml.js +1 -1
  49. package/lib/env/cds-requires.js +3 -0
  50. package/lib/i18n/bundles.js +8 -1
  51. package/lib/i18n/files.js +5 -1
  52. package/lib/i18n/index.js +1 -5
  53. package/lib/i18n/localize.js +4 -2
  54. package/lib/index.js +1 -1
  55. package/lib/ql/SELECT.js +16 -19
  56. package/lib/req/validate.js +10 -5
  57. package/lib/srv/bindings.js +1 -1
  58. package/lib/srv/cds-serve.js +1 -1
  59. package/lib/srv/middlewares/auth/ias-auth.js +15 -10
  60. package/lib/srv/middlewares/auth/jwt-auth.js +8 -6
  61. package/lib/srv/protocols/hcql.js +8 -6
  62. package/lib/srv/srv-dispatch.js +4 -8
  63. package/lib/srv/srv-handlers.js +28 -1
  64. package/lib/utils/colors.js +54 -49
  65. package/libx/_runtime/common/generic/flows.js +79 -12
  66. package/libx/_runtime/common/utils/rewriteAsterisks.js +10 -4
  67. package/libx/_runtime/fiori/lean-draft.js +10 -2
  68. package/libx/_runtime/messaging/common-utils/connections.js +31 -18
  69. package/libx/_runtime/messaging/enterprise-messaging-utils/registerEndpoints.js +2 -2
  70. package/libx/_runtime/messaging/redis-messaging.js +1 -1
  71. package/libx/_runtime/messaging/service.js +7 -0
  72. package/libx/_runtime/ucl/Service.js +5 -5
  73. package/libx/http/body-parser.js +10 -1
  74. package/libx/odata/ODataAdapter.js +10 -7
  75. package/libx/odata/middleware/error.js +3 -0
  76. package/libx/odata/parse/afterburner.js +13 -16
  77. package/libx/odata/parse/multipartToJson.js +3 -1
  78. package/libx/rest/middleware/parse.js +1 -1
  79. package/package.json +1 -1
  80. package/server.js +1 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,65 @@
4
4
  - The format is based on [Keep a Changelog](https://keepachangelog.com/).
5
5
  - This project adheres to [Semantic Versioning](https://semver.org/).
6
6
 
7
+ ## Version 9.4.2 - 2025-10-08
8
+
9
+ ### Fixed
10
+
11
+ - `DISCARD` as a synonym for `CANCEL`
12
+ - `cds.load()` called twice
13
+
14
+ ## Version 9.4.1 - 2025-10-06
15
+
16
+ ### Fixed
17
+
18
+ - Default `kind` for unknown required service to `hcql`
19
+ - Consider and allow aliases from nesting during OData query validation
20
+
21
+ ## Version 9.4.0 - 2025-09-30
22
+
23
+ ### Added
24
+
25
+ - Status Transition Flows (`@flow`; alpha):
26
+ + Resolve enum references in `@from`/`@to` values
27
+ + Support for `@to: $flow.previous` (transition to the previous status in a flow)
28
+ + Use `cds.env.features.flows_history_stack=true` to switch from history (default) to stack-based behavior
29
+ + Requires adding aspect `sap.common.FlowHistory` to the respective entity
30
+ - `i18n` translations for `@assert` messages
31
+ - `SELECT ... .stream ()` returns the data from the database as a raw stream
32
+ - `cds.validate` treats `@insertonly` elements as immutable
33
+ - Vietnamese translations for texts from `@sap/cds/common`
34
+ - `ias`/`jwt`/`xsuaa`-auth: Add token payload (as `token_payload`) to warning log in case of an invalid token
35
+ + Note: Some invalid tokens are (for performance reasons) not fully validated and, hence, the payload may not be trusted!
36
+
37
+ ### Changed
38
+
39
+ - `SAVE` handlers for drafts are triggered when a draft is activated
40
+ + Opt-out until cds^10 with `cds.features.compat_save_drafts=true`
41
+ - Improved default error messages for input validation.
42
+ - Renamed error key for validation errors of `@mandatory` from `ASSERT_NOT_NULL` to `ASSERT_MANDATORY`
43
+ + For i18n message lookup, an automatic fallback is implemented.
44
+ + Opt-out until cds^10 with `cds.features.compat_assert_not_null=true`
45
+ - Errors are collected for `_initial` (internal!) and `before` phase
46
+
47
+ ### Fixed
48
+
49
+ - Duplicate reconnects in AMQP
50
+ - `ASSERT_FORMAT` errors return correct regexp in message
51
+ - Crash by draft validation with (custom) error w/o target
52
+ - Fixed issue where `' $'` in payloads of batch requests would be prefixed with `'/'`
53
+ - Broken link `cds.auth`
54
+ - Persist original error message in draft validation messages
55
+ - Escaping of `\t` and `\f` in edmx during localization
56
+ - Escaping of JSON escape sequences other than `\"` during localization
57
+
58
+ ## Version 9.3.1 - 2025-09-03
59
+
60
+ ### Fixed
61
+
62
+ - In messaging services, propagated headers (e.g. `x-correlation-id`) will not be automatically propagated for `format: 'cloudevents'`
63
+ - Avoid deprecation warning for `cds.context.user.tokenInfo`
64
+ - Consider `@Capabilities.ExpandRestrictions.NonExpandableProperties` annotation and ignore fields referenced by the annotation, when rewriting asterisk expand into columns
65
+
7
66
  ## Version 9.3.0 - 2025-08-29
8
67
 
9
68
  ### Added
@@ -31,9 +90,9 @@
31
90
  ```
32
91
  - Property `cds.User.authInfo` as generic container for authentication-related information
33
92
  + For `@sap/xssec`-based authentication strategies, `cds.context.user.authInfo` is an instance of `@sap/xssec`'s `SecurityContext`
34
- - Support for state transition flows (`@flow`):
93
+ - Support for status transition flows (`@flow`; alpha):
35
94
  + Generic handlers for validating entry (`@from`) and exit (`@to`) states
36
- + Automatic addition of necessary annotations for Fiori UIs (`@Common.SideEffects` and `@Core.OperationAvailable`) during compile to EDMX with feature flag `cds.features.compile_for_flows = true`
95
+ + Automatic addition of necessary annotations for Fiori UIs (`@Common.SideEffects` and `@Core.OperationAvailable`) during compile to EDMX with feature flag `cds.features.compile_for_flows=true`
37
96
  - Experimental support for consuming remote HCQL services (`cds.requires.<remote>.kind = 'hcql'`)
38
97
  - Infrastructure for implementing the tenant mapping notification of Unified Customer Landscape's (UCL) Service Provider Integration Interface (SPII) API
39
98
  + Bootstrap the `UCLService` via `cds.requires.ucl = true` and implement the assign and unassign operations like so:
@@ -128,7 +187,7 @@
128
187
  ### Changed
129
188
 
130
189
  - Reduced the amount of SELECT nesting the OData adapter does for `$apply` queries.
131
- - Better error messages for unresolved parent associations in hierarchy requests
190
+ - Better error messages for unresolved parent associations in hierarchy requests.
132
191
  - Enabled updated behavior of `draftActivate` to move updates to fields of draft enabled entities with type `cds.LargeBinary` from draft to active table on the database level, with feature flag `cds.env.fiori.move_media_data_in_db`.
133
192
 
134
193
  ### Fixed
@@ -0,0 +1,113 @@
1
+ #Text Types
2
+ #
3
+ #XACT: Text with explicit importance for accessibility.
4
+ #XBUT: Button
5
+ #XCKL: Checkbox
6
+ #XFLD: Field label
7
+ #XLNK: Hyperlink
8
+ #XMIT: Menu item (Menu item, either top-level like "File" or lower-level like "Save as...")
9
+ #XMSG: Message
10
+ #XRBL: Radio button
11
+ #XSEL: Selection (Values in a drop-down list, or a status. For example: "In Process", "Shipped" or "Open".)
12
+ #XTIT: Title (or heading) of a non-actionable user interface element like a column, wizard, or screen area.
13
+ #XTOL: Explanatory text for an UI element, such as a tooltip, input help.
14
+ #YINS: Instruction for a user, for example, a permanent text on a screen that introduces a group of fields.
15
+ #----------------------------------------------------------------------------------------------------------------------
16
+ #For text elements that are not supposed to be translated, use the text type NOTR
17
+ #----------------------------------------------------------------------------------------------------------------------
18
+ #Recommended pattern
19
+ #
20
+ #<TextType>:<AdditionalContextInformation>
21
+ #If there is a maximum length restriction, please indicate as shown below.
22
+ #<TextType>,<MaximumLength>:<AdditionalContextInformation>
23
+ #----------------------------------------------------------------------------------------------------------------------
24
+ # This is the resource bundle for foundation
25
+ # __ldi.translation.uuid=dd6c5800-b108-11e8-be90-bd1cf6ac87fb
26
+ #----------------------------------------------------------------------------------------------------------------------
27
+
28
+ #XTIT: Created By (Answer to: "Which user has created a certain entity?")
29
+ CreatedBy=T\u1EA1o b\u1EDFi
30
+
31
+ #XTIT: Created On (Answer to: "When has a certain entity been created?")
32
+ CreatedAt=Ta\u0323o va\u0300o
33
+
34
+ #XTIT: Changed By (Answer to: "Which user has changed a certain entity?")
35
+ ChangedBy=Thay \u0111\u00F4\u0309i b\u01A1\u0309i
36
+
37
+ #XTIT: Changed On (Answer to: "When has a certain entity been changed?")
38
+ ChangedAt=Thay \u0111\u00F4\u0309i va\u0300o nga\u0300y
39
+
40
+ #XTIT: Currency
41
+ Currency=Ti\u00EA\u0300n t\u00EA\u0323
42
+
43
+ #XTIT: Currency Code
44
+ CurrencyCode=Ma\u0303 ti\u00EA\u0300n t\u00EA\u0323
45
+
46
+ #XTIT: Currency Code Description
47
+ CurrencyCode.Description=M\u00E3 ti\u1EC1n t\u1EC7 theo ISO 4217
48
+
49
+ #XTIT: Currency Symbol
50
+ CurrencySymbol=K\u00FD hi\u1EC7u ti\u1EC1n t\u1EC7
51
+
52
+ #XTIT: Currency Minor Unit Fractions (Answer to: "How many fractions has a currency's minor unit?", e.g. "0" or "2")
53
+ CurrencyMinorUnit=Ph\u00E2n s\u1ED1 \u0111\u01A1n v\u1ECB t\u1ED1i thi\u1EC3u c\u1EE7a ti\u1EC1n t\u1EC7
54
+
55
+ #XTIT: Country/Region
56
+ Country=Qu\u00F4\u0301c gia/Vu\u0300ng
57
+
58
+ #XTIT: Country/Region Code
59
+ CountryCode=M\u00E3 qu\u1ED1c gia/vu\u0300ng
60
+
61
+ #XTIT: Country/Region Code Description
62
+ CountryCode.Description=M\u00E3 qu\u1ED1c gia/vu\u0300ng theo ISO 3166-1
63
+
64
+ #XTIT: Language
65
+ Language=Ng\u00F4n ng\u01B0\u0303
66
+
67
+ #XTIT: Language Code
68
+ LanguageCode=Ma\u0303 ng\u00F4n ng\u01B0\u0303
69
+
70
+ #XTIT: Language Code Description
71
+ LanguageCode.Description=M\u00E3 ng\u00F4n ng\u1EEF theo ISO 639-1
72
+
73
+ #XTIT Time zone code
74
+ TimeZoneCode=Ma\u0303 mu\u0301i gi\u01A1\u0300
75
+
76
+ #XTIT: User Identifier
77
+ UserID=ID ng\u01B0\u01A1\u0300i du\u0300ng
78
+
79
+ #XTIT: Any kind of name
80
+ Name=T\u00EAn
81
+
82
+ #XTIT: Any kind of description
83
+ Description=M\u00F4 ta\u0309
84
+
85
+ #XTOL: A user's unique Indentifier
86
+ UserID.Description=ID duy nh\u00E2\u0301t cu\u0309a ng\u01B0\u1EDDi d\u00F9ng
87
+
88
+ #XTIT: Admin data for a draft document
89
+ Draft_DraftAdministrativeData=D\u01B0\u0303 li\u00EA\u0323u qua\u0309n tri\u0323 \u1EDF d\u1EA1ng nh\u00E1p
90
+
91
+ #XTIT: Technical ID of a draft document
92
+ Draft_DraftUUID=B\u1EA3n nh\u00E1p (ID k\u1EF9 thu\u1EADt)
93
+
94
+ #XTIT: Creation time of a draft
95
+ Draft_CreationDateTime=Ng\u00E0y t\u1EA1o b\u1EA3n nh\u00E1p
96
+
97
+ #XTIT: User created the draft
98
+ Draft_CreatedByUser=Ng\u01B0\u1EDDi t\u1EA1o b\u1EA3n nh\u00E1p
99
+
100
+ #XTIT: The current user (me) created the draft
101
+ Draft_DraftIsCreatedByMe=B\u1EA3n nh\u00E1p do t\u00F4i t\u1EA1o
102
+
103
+ #XTIT: Time a draft was last changed on
104
+ Draft_LastChangeDateTime=Ng\u00E0y thay \u0111\u1ED5i l\u1EA7n cu\u1ED1i b\u1EA3n nh\u00E1p
105
+
106
+ #XTIT: User that changed the draft last
107
+ Draft_LastChangedByUser=Ng\u01B0\u1EDDi thay \u0111\u1ED5i l\u1EA7n cu\u1ED1i b\u1EA3n nh\u00E1p
108
+
109
+ #XTIT: User that is working on the draft
110
+ Draft_InProcessByUser=Ng\u01B0\u1EDDi \u0111ang x\u1EED l\u00FD b\u1EA3n nh\u00E1p
111
+
112
+ #XTIT: The current user (me) is working on the draft
113
+ Draft_DraftIsProcessedByMe=B\u1EA3n nh\u00E1p \u0111ang do t\u00F4i x\u1EED l\u00FD
@@ -1,104 +1,193 @@
1
+ # Input Validation
2
+
3
+ #XMSG: Enter a value between 0 and 100. // Implementation still provides 3 values
4
+ ASSERT_RANGE = Enter a value between {1} and {2}.
5
+ #XMSG: Enter a valuematching the pattern /^abc/.
6
+ ASSERT_FORMAT = Enter a value matching the pattern {1}.
7
+ #XMSG: Enter one of the allowed values: High,Medium,Low. // Implementation still provides 2 values
8
+ ASSERT_ENUM = Enter one of the allowed values: {1}.
9
+ #XMSG: Provide the missing value. // Error text displayed on a field, in case a mandatory value is not set.
10
+ ASSERT_MANDATORY = Provide the missing value.
11
+ #XMSG: Target with this key doesn't exist.
12
+ ASSERT_TARGET = Target with this key doesn''t exist.
13
+
14
+ # Aggregating Error
15
+
16
+ #XMSG
17
+ MULTIPLE_ERRORS = Multiple errors occurred, see details below.
18
+
19
+ # Input format
20
+
21
+ #NOTR
22
+ ASSERT_VALID_ELEMENT = Element is not valid
23
+ #NOTR
24
+ ASSERT_DATA_TYPE = Value {0} is not a valid {1}
25
+ #NOTR
26
+ ASSERT_ARRAY = Value must be an array
27
+
28
+ # Status Codes
29
+
30
+ #NOTR
1
31
  400 = Bad Request
32
+ #NOTR
2
33
  401 = Unauthorized
34
+ #NOTR
3
35
  403 = Forbidden
36
+ #NOTR
4
37
  404 = Not Found
38
+ #NOTR
5
39
  405 = Method Not Allowed
40
+ #NOTR
6
41
  406 = Not Acceptable
42
+ #NOTR
7
43
  407 = Proxy Authentication Required
44
+ #NOTR
8
45
  408 = Request Timeout
46
+ #NOTR
9
47
  409 = Conflict
48
+ #NOTR
10
49
  410 = Gone
50
+ #NOTR
11
51
  411 = Length Required
52
+ #NOTR
12
53
  412 = Precondition Failed
54
+ #NOTR
13
55
  413 = Payload Too Large
56
+ #NOTR
14
57
  414 = URI Too Long
58
+ #NOTR
15
59
  415 = Unsupported Media Type
60
+ #NOTR
16
61
  416 = Range Not Satisfiable
62
+ #NOTR
17
63
  417 = Expectation Failed
64
+ #NOTR
18
65
  422 = Unprocessable Content
66
+ #NOTR
19
67
  424 = Failed Dependency
68
+ #NOTR
20
69
  428 = Precondition Required
70
+ #NOTR
21
71
  429 = Too Many Requests
72
+ #NOTR
22
73
  431 = Request Header Fields Too Large
74
+ #NOTR
23
75
  451 = Unavailable For Legal Reasons
76
+ #NOTR
24
77
  500 = Internal Server Error
78
+ #NOTR
25
79
  501 = The server does not support the functionality required to fulfill the request
80
+ #NOTR
26
81
  502 = Bad Gateway
82
+ #NOTR
27
83
  503 = Service Unavailable
84
+ #NOTR
28
85
  504 = Gateway Timeout
29
86
 
30
- MULTIPLE_ERRORS = Multiple errors occurred, see details below.
31
-
32
- # -------------------------------------------------------------------------------------------------
33
- # all texts below are subject to change!
34
- # -------------------------------------------------------------------------------------------------
35
-
36
87
  # fragments
88
+
89
+ #NOTR
37
90
  ENTITY = entity
91
+ #NOTR
38
92
  TYPE = type
93
+ #NOTR
39
94
  FUNCTION = function
95
+ #NOTR
40
96
  ACTION = action
41
97
 
42
- # assert
43
- ASSERT_VALID_ELEMENT = Element is not valid
44
- ASSERT_RANGE = Value {0} is not in specified range [{1}, {2}]
45
- ASSERT_FORMAT = Value "{0}" is not in specified format "{1}"
46
- ASSERT_DATA_TYPE = Value {0} is not a valid {1}
47
- ASSERT_ARRAY = Value must be an array
48
- ASSERT_ENUM = Value {0} is invalid according to enum declaration {{1}}
49
- ASSERT_NOT_NULL = Value is required
50
- ASSERT_TARGET = "Value doesn't exist"
51
-
52
98
  # db
99
+
100
+ #NOTR
53
101
  NO_DATABASE_CONNECTION = No database connection
102
+ #NOTR
54
103
  ENTITY_ALREADY_EXISTS = Entity already exists
104
+ #NOTR
55
105
  ENTITY_LOCKED = Entity locked
106
+ #NOTR
56
107
  UNIQUE_CONSTRAINT_VIOLATION = Unique constraint violation
108
+ #NOTR
57
109
  FK_CONSTRAINT_VIOLATION = Foreign key constraint violation
58
110
 
59
111
  # remote
112
+
113
+ #NOTR
60
114
  INVALID_CONTENT_TYPE_ONLY_JSON = Invalid content type. Only "application/json" is supported.
61
115
 
62
116
  # access control
117
+
118
+ #NOTR
63
119
  INSERTABLE = insertable
120
+ #NOTR
64
121
  READABLE = readable
122
+ #NOTR
65
123
  UPDATABLE = updatable
124
+ #NOTR
66
125
  DELETABLE = deletable
126
+ #NOTR
67
127
  ENTITY_IS_INSERT_ONLY = Entity "{0}" is insert-only
128
+ #NOTR
68
129
  ENTITY_IS_READ_ONLY = Entity "{0}" is read-only
130
+ #NOTR
69
131
  ENTITY_IS_NOT_CRUD = Entity "{0}" is not {1}
132
+ #NOTR
70
133
  ENTITY_IS_NOT_CRUD_VIA_NAVIGATION = Entity "{0}" is not {1} via navigation "{2}"
134
+ #NOTR
71
135
  ENTITY_IS_AUTOEXPOSED = Entity "{0}" is not explicitly exposed as part of the service
136
+ #NOTR
72
137
  ENTITY_IS_AUTOEXPOSE_READONLY = Entity "{0}" is explicitly exposed as readonly
138
+ #NOTR
73
139
  EXPAND_IS_RESTRICTED = Navigation property "{0}" is not allowed for expand operation
74
140
 
75
141
  # rest protocol adapter
142
+
143
+ #NOTR
76
144
  INVALID_RESOURCE = "{0}" is not a valid resource
145
+ #NOTR
77
146
  INVALID_PARAMETER = "{0}" is not a valid parameter
147
+ #NOTR
78
148
  INVALID_PARAMETER_VALUE_TYPE = Parameter value for "{0}" must be of type "{1}"
149
+ #NOTR
79
150
  INVALID_OPERATION_FOR_ENTITY = Entity "{0}" has no {1} "{2}"
151
+ #NOTR
80
152
  NO_MATCHING_RESOURCE = The server has not found a resource matching the requested URI
153
+ #NOTR
81
154
  INVALID_POST = POST is only allowed on resource collections and actions
155
+ #NOTR
82
156
  INVALID_PUT = PUT is only allowed on a specific resource
157
+ #NOTR
83
158
  INVALID_PATCH = PATCH is only allowed on a specific resource
159
+ #NOTR
84
160
  INVALID_DELETE = DELETE is only supported on a specific resource
161
+ #NOTR
85
162
  CRUD_VIA_NAVIGATION_NOT_SUPPORTED = CRUD via navigations is not yet supported
86
163
 
87
164
  # OData protocol adapter
165
+
166
+ #NOTR
88
167
  BATCH_TOO_MANY_REQ = Batch request contains too many requests
89
168
 
90
169
  # draft
170
+
171
+ #NOTR
172
+ DRAFT_LOCKED_BY_ANOTHER_USER = The entity is locked by user "{0}"
173
+ #NOTR
91
174
  DRAFT_ALREADY_EXISTS = A draft for this entity already exists
175
+ #NOTR
92
176
  DRAFT_NOT_EXISTING = No draft for this entity exists
93
- DRAFT_LOCKED_BY_ANOTHER_USER = The entity is locked by user "{0}"
177
+ #NOTR
94
178
  DRAFT_MODIFICATION_ONLY_VIA_ROOT = A draft-enabled entity can only be modified via its root entity
179
+ #NOTR
95
180
  ACTIVE_MODIFICATION_VIA_DRAFT = Active entities cannot be modified via draft request
181
+ #NOTR
96
182
  DRAFT_ACTIVE_DELETE_FORBIDDEN_DRAFT_EXISTS = Entity cannot be deleted because a draft exists
97
183
 
98
184
  # singleton
185
+
186
+ #NOTR
99
187
  SINGLETON_NOT_NULLABLE = The singleton entity is not nullable
100
188
 
101
189
  # flows
190
+
102
191
  #XMSG: Action "acceptTravel" requires "travelStatus" to be "Open".
103
192
  INVALID_FLOW_TRANSITION_SINGLE=Action "{0}" requires "{1}" to be "{2}".
104
193
  #XMSG: Action "cancelTravel" requires "travelStatus" to be one of the following values: Open,Accepted.
@@ -0,0 +1,194 @@
1
+ # Input Validation
2
+
3
+ #XMSG: Enter a value between 0 and 100. // Implementation still provides 3 values
4
+ ASSERT_RANGE=\u0623\u062F\u062E\u0644 \u0642\u064A\u0645\u0629 \u0628\u064A\u0646 {1} \u0648{2}.
5
+ #XMSG: Enter a valuematching the pattern /^abc/.
6
+ ASSERT_FORMAT=\u0623\u062F\u062E\u0644 \u0642\u064A\u0645\u0629 \u062A\u062A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 {1}.
7
+ #XMSG: Enter one of the allowed values: High,Medium,Low. // Implementation still provides 2 values
8
+ ASSERT_ENUM=\u0623\u062F\u062E\u0644 \u0642\u064A\u0645\u0629 \u0645\u0646 \u0627\u0644\u0642\u064A\u0645 \u0627\u0644\u0645\u0633\u0645\u0648\u062D \u0628\u0647\u0627: {1}.
9
+ #XMSG: Provide the missing value. // Error text displayed on a field, in case a mandatory value is not set.
10
+ ASSERT_MANDATORY=\u0642\u0645 \u0628\u062A\u0648\u0641\u064A\u0631 \u0627\u0644\u0642\u064A\u0645\u0629 \u0627\u0644\u0645\u0641\u0642\u0648\u062F\u0629.
11
+ #XMSG: Target with this key doesn't exist.
12
+ ASSERT_TARGET=\u0627\u0644\u0647\u062F\u0641 \u0628\u0647\u0630\u0627 \u0627\u0644\u0645\u0641\u062A\u0627\u062D \u063A\u064A\u0631 \u0645\u0648\u062C\u0648\u062F.
13
+
14
+ # Aggregating Error
15
+
16
+ #XMSG
17
+ MULTIPLE_ERRORS=\u062D\u062F\u062B\u062A \u0639\u062F\u0629 \u0623\u062E\u0637\u0627\u0621\u060C \u0627\u0646\u0638\u0631 \u0627\u0644\u062A\u0641\u0627\u0635\u064A\u0644 \u0623\u062F\u0646\u0627\u0647.
18
+
19
+ # Input format
20
+
21
+ #NOTR
22
+ ASSERT_VALID_ELEMENT=Element is not valid
23
+ #NOTR
24
+ ASSERT_DATA_TYPE=Value {0} is not a valid {1}
25
+ #NOTR
26
+ ASSERT_ARRAY=Value must be an array
27
+
28
+ # Status Codes
29
+
30
+ #NOTR
31
+ 400=Bad Request
32
+ #NOTR
33
+ 401=Unauthorized
34
+ #NOTR
35
+ 403=Forbidden
36
+ #NOTR
37
+ 404=Not Found
38
+ #NOTR
39
+ 405=Method Not Allowed
40
+ #NOTR
41
+ 406=Not Acceptable
42
+ #NOTR
43
+ 407=Proxy Authentication Required
44
+ #NOTR
45
+ 408=Request Timeout
46
+ #NOTR
47
+ 409=Conflict
48
+ #NOTR
49
+ 410=Gone
50
+ #NOTR
51
+ 411=Length Required
52
+ #NOTR
53
+ 412=Precondition Failed
54
+ #NOTR
55
+ 413=Payload Too Large
56
+ #NOTR
57
+ 414=URI Too Long
58
+ #NOTR
59
+ 415=Unsupported Media Type
60
+ #NOTR
61
+ 416=Range Not Satisfiable
62
+ #NOTR
63
+ 417=Expectation Failed
64
+ #NOTR
65
+ 422=Unprocessable Content
66
+ #NOTR
67
+ 424=Failed Dependency
68
+ #NOTR
69
+ 428=Precondition Required
70
+ #NOTR
71
+ 429=Too Many Requests
72
+ #NOTR
73
+ 431=Request Header Fields Too Large
74
+ #NOTR
75
+ 451=Unavailable For Legal Reasons
76
+ #NOTR
77
+ 500=Internal Server Error
78
+ #NOTR
79
+ 501=The server does not support the functionality required to fulfill the request
80
+ #NOTR
81
+ 502=Bad Gateway
82
+ #NOTR
83
+ 503=Service Unavailable
84
+ #NOTR
85
+ 504=Gateway Timeout
86
+
87
+ # fragments
88
+
89
+ #NOTR
90
+ ENTITY=entity
91
+ #NOTR
92
+ TYPE=type
93
+ #NOTR
94
+ FUNCTION=function
95
+ #NOTR
96
+ ACTION=action
97
+
98
+ # db
99
+
100
+ #NOTR
101
+ NO_DATABASE_CONNECTION=No database connection
102
+ #NOTR
103
+ ENTITY_ALREADY_EXISTS=Entity already exists
104
+ #NOTR
105
+ ENTITY_LOCKED=Entity locked
106
+ #NOTR
107
+ UNIQUE_CONSTRAINT_VIOLATION=Unique constraint violation
108
+ #NOTR
109
+ FK_CONSTRAINT_VIOLATION=Foreign key constraint violation
110
+
111
+ # remote
112
+
113
+ #NOTR
114
+ INVALID_CONTENT_TYPE_ONLY_JSON=Invalid content type. Only "application/json" is supported.
115
+
116
+ # access control
117
+
118
+ #NOTR
119
+ INSERTABLE=insertable
120
+ #NOTR
121
+ READABLE=readable
122
+ #NOTR
123
+ UPDATABLE=updatable
124
+ #NOTR
125
+ DELETABLE=deletable
126
+ #NOTR
127
+ ENTITY_IS_INSERT_ONLY=Entity "{0}" is insert-only
128
+ #NOTR
129
+ ENTITY_IS_READ_ONLY=Entity "{0}" is read-only
130
+ #NOTR
131
+ ENTITY_IS_NOT_CRUD=Entity "{0}" is not {1}
132
+ #NOTR
133
+ ENTITY_IS_NOT_CRUD_VIA_NAVIGATION=Entity "{0}" is not {1} via navigation "{2}"
134
+ #NOTR
135
+ ENTITY_IS_AUTOEXPOSED=Entity "{0}" is not explicitly exposed as part of the service
136
+ #NOTR
137
+ ENTITY_IS_AUTOEXPOSE_READONLY=Entity "{0}" is explicitly exposed as readonly
138
+ #NOTR
139
+ EXPAND_IS_RESTRICTED=Navigation property "{0}" is not allowed for expand operation
140
+
141
+ # rest protocol adapter
142
+
143
+ #NOTR
144
+ INVALID_RESOURCE="{0}" is not a valid resource
145
+ #NOTR
146
+ INVALID_PARAMETER="{0}" is not a valid parameter
147
+ #NOTR
148
+ INVALID_PARAMETER_VALUE_TYPE=Parameter value for "{0}" must be of type "{1}"
149
+ #NOTR
150
+ INVALID_OPERATION_FOR_ENTITY=Entity "{0}" has no {1} "{2}"
151
+ #NOTR
152
+ NO_MATCHING_RESOURCE=The server has not found a resource matching the requested URI
153
+ #NOTR
154
+ INVALID_POST=POST is only allowed on resource collections and actions
155
+ #NOTR
156
+ INVALID_PUT=PUT is only allowed on a specific resource
157
+ #NOTR
158
+ INVALID_PATCH=PATCH is only allowed on a specific resource
159
+ #NOTR
160
+ INVALID_DELETE=DELETE is only supported on a specific resource
161
+ #NOTR
162
+ CRUD_VIA_NAVIGATION_NOT_SUPPORTED=CRUD via navigations is not yet supported
163
+
164
+ # OData protocol adapter
165
+
166
+ #NOTR
167
+ BATCH_TOO_MANY_REQ=Batch request contains too many requests
168
+
169
+ # draft
170
+
171
+ #NOTR
172
+ DRAFT_LOCKED_BY_ANOTHER_USER=The entity is locked by user "{0}"
173
+ #NOTR
174
+ DRAFT_ALREADY_EXISTS=A draft for this entity already exists
175
+ #NOTR
176
+ DRAFT_NOT_EXISTING=No draft for this entity exists
177
+ #NOTR
178
+ DRAFT_MODIFICATION_ONLY_VIA_ROOT=A draft-enabled entity can only be modified via its root entity
179
+ #NOTR
180
+ ACTIVE_MODIFICATION_VIA_DRAFT=Active entities cannot be modified via draft request
181
+ #NOTR
182
+ DRAFT_ACTIVE_DELETE_FORBIDDEN_DRAFT_EXISTS=Entity cannot be deleted because a draft exists
183
+
184
+ # singleton
185
+
186
+ #NOTR
187
+ SINGLETON_NOT_NULLABLE=The singleton entity is not nullable
188
+
189
+ # flows
190
+
191
+ #XMSG: Action "acceptTravel" requires "travelStatus" to be "Open".
192
+ INVALID_FLOW_TRANSITION_SINGLE=\u0627\u0644\u0625\u062C\u0631\u0627\u0621 "{0}" \u064A\u062A\u0637\u0644\u0628 "{1}" \u0644\u064A\u0643\u0648\u0646 "{2}".
193
+ #XMSG: Action "cancelTravel" requires "travelStatus" to be one of the following values: Open,Accepted.
194
+ INVALID_FLOW_TRANSITION_MULTI=\u0627\u0644\u0625\u062C\u0631\u0627\u0621 "{0}" \u064A\u062A\u0637\u0644\u0628 "{1}" \u0644\u064A\u0643\u0648\u0646 \u0625\u062D\u062F\u0649 \u0627\u0644\u0642\u064A\u0645 \u0627\u0644\u062A\u0627\u0644\u064A\u0629: {2}.